{"report_id":"6a372759-99ac-43a7-80cf-ca85ea8f4abc","version":0,"status":"done","tags":[],"date":"2026-07-27T00:58:26Z","url":{"schema":"http","addr":"sahnesirince.com","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":0,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"final":{"url":{"schema":"http","addr":"sahnesirince.com/","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"title":"Global Sumud Flotilla - Humanitarian Aid for Gaza","dom":{"size":0,"mime_type":"text/plain; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","dom_hash":"domhash1f07f384c75181c66badb60ab1ec770b","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"http","addr":"sahnesirince.com","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":0,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T00:58:26Z","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":2}},"detection":{"ids":null,"analyzer":[{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null},"summary":[{"fqdn":"pulse.walletconnect.org","ip":{"addr":"104.20.34.30","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2018-03-26","domain_rank":247907,"first_seen":"2023-10-09T08:23:11Z","last_seen":"2026-07-26T02:35:00.635862Z","alert_count":0,"request_count":1,"received_data":243,"sent_data":604,"comment":"","tags":null,"fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}]},{"fqdn":"upload.wikimedia.org","ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"domain_registered":"2003-03-16","domain_rank":4329,"first_seen":"2012-05-21T09:39:45Z","last_seen":"2026-07-20T16:11:10.81027Z","alert_count":0,"request_count":12,"received_data":41878,"sent_data":7685,"comment":"","tags":null,"fingerprints":[{"name":"Apache Traffic Server:9.2.13","description":"Apache Traffic Server is an open-source caching and proxying server that serves as an HTTP/1.1 and HTTP/2 reverse proxy with caching capabilities, load balancing, request routing, SSL termination, and support for advanced HTTP features.","website":"https://trafficserver.apache.org/","common_platform_enumeration":"cpe:2.3:a:apache:traffic_server:*:*:*:*:*:*:*:*","icon":"Apache Traffic Server.svg","categories":["Web servers"]},{"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":"Envoy","description":"Envoy is an open-source edge and service proxy, designed for cloud-native applications.","website":"https://www.envoyproxy.io/","common_platform_enumeration":"cpe:2.3:a:envoyproxy:envoy:*:*:*:*:*:*:*:*","icon":"Envoy.png","categories":["Reverse proxies"]}]},{"fqdn":"1.1.1.1","ip":{"addr":"1.1.1.1","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"unknown","domain_rank":0,"first_seen":"2012-05-30T07:40:31Z","last_seen":"2019-03-28T08:40:04Z","alert_count":0,"request_count":1,"received_data":536,"sent_data":463,"comment":"","tags":null,"fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}]},{"fqdn":"globalsumudflotilla.org","ip":{"addr":"104.26.14.212","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2025-07-08","domain_rank":5318948,"first_seen":"2025-09-27T15:24:41.040627Z","last_seen":"2025-09-27T15:24:41.040627Z","alert_count":0,"request_count":1,"received_data":16376,"sent_data":558,"comment":"","tags":null,"fingerprints":[{"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":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"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"]}]},{"fqdn":"cdnjs.cloudflare.com","ip":{"addr":"104.17.24.14","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2009-02-17","domain_rank":1222,"first_seen":"2012-05-23T12:49:49Z","last_seen":"2026-07-26T22:43:30.214545Z","alert_count":0,"request_count":2,"received_data":254105,"sent_data":1139,"comment":"","tags":null,"fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.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"]}]},{"fqdn":"cdn.jsdelivr.net","ip":{"addr":"151.101.129.229","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"domain_registered":"2012-05-16","domain_rank":1678,"first_seen":"2012-09-30T00:15:09Z","last_seen":"2026-07-26T23:00:42.445991Z","alert_count":0,"request_count":2,"received_data":785452,"sent_data":969,"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"]}]},{"fqdn":"api.web3modal.org","ip":{"addr":"104.18.18.237","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2022-11-18","domain_rank":433029,"first_seen":"2023-09-19T09:52:23Z","last_seen":"2026-07-26T02:35:00.129506Z","alert_count":0,"request_count":2,"received_data":1351,"sent_data":1102,"comment":"","tags":null,"fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}]},{"fqdn":"cdn.matomo.cloud","ip":{"addr":"3.167.2.121","port":443,"asn":0,"as":"","country":"United States","country_code":"US"},"domain_registered":"2017-09-08","domain_rank":124973,"first_seen":"2019-09-27T14:00:38Z","last_seen":"2026-07-23T17:16:15.343393Z","alert_count":0,"request_count":1,"received_data":677,"sent_data":474,"comment":"","tags":null,"fingerprints":[{"name":"Amazon CloudFront","description":"Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency, high transfer speeds.","website":"https://aws.amazon.com/cloudfront/","common_platform_enumeration":"","icon":"Amazon Cloudfront.svg","categories":["CDN"]},{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"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"]}]},{"fqdn":"sahnesirince.com","ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"domain_registered":"2021-05-06","domain_rank":0,"first_seen":"2025-08-18T02:18:07.023034Z","last_seen":"2026-07-27T00:56:18.992878Z","alert_count":18,"request_count":9,"received_data":2905586,"sent_data":3266,"comment":"","tags":null,"fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"PHP:8.0.30","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"jsDelivr","description":"JSDelivr is a free public CDN for open-source projects. It can serve web files directly from the npm registry and GitHub repositories without any configuration.","website":"https://www.jsdelivr.com/","common_platform_enumeration":"","icon":"jsdelivr-icon.svg","categories":["CDN"]}]},{"fqdn":"fonts.googleapis.com","ip":{"addr":"142.250.178.106","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-26T22:23:14.439231Z","alert_count":0,"request_count":1,"received_data":10792,"sent_data":531,"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"]}]},{"fqdn":"media-cldnry.s-nbcnews.com","ip":{"addr":"184.26.62.165","port":443,"asn":16625,"as":"AKAMAI-AS","country":"Norway","country_code":"NO"},"domain_registered":"2012-07-06","domain_rank":78475,"first_seen":"2021-03-16T09:28:42Z","last_seen":"2026-07-20T20:59:44.517775Z","alert_count":0,"request_count":1,"received_data":131969,"sent_data":645,"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":"http","addr":"sahnesirince.com/","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"introduction_type":"scriptElement","is_inline":true,"md5":"6c938ddc31b8b31119ed3256bbed3ede","sha1":"6814e84d80d3496637d64f48bfc2dce5e03d21c2","sha256":"fb53b3207027aeb061990d44e56b16c682772fce8aedb9894823bdb8b090eeb2","sha512":"eeabb57706a35774a76e94eb8fbcc52cff1e4464f182cdbb128341c89eb5eafb4ae86d8e678ee9494605121f1c94a739660c6bd90613353ea8876cf3b9ede36d","ssdeep":"","tlshash":"76f0815605af1ffa713b617e7d7e491db3ab381da460c4417f42942d6d61d8547403c8","size":551,"data":"","first_seen":"2026-07-27T00:58:32.353251Z","last_seen":"2026-07-27T00:59:02.776646Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"introduction_type":"scriptElement","is_inline":true,"md5":"bfaa07d6fbc3466f97a0e2540e3826f8","sha1":"f075d84ded7861afc369d3b8597422a7009e6ff3","sha256":"ff354c4d87b42c23de02f6e3ffb7889c1c5c83ae542de43f17a59b0a19e568e4","sha512":"46eec6047387ed196a44a758764937fa5e90d1376be7f1a2f4830dae4a63aa5c3328adfc5a6a3a629a4844109434dccb87472a6371cb5f3a500ca8f2cdb7d6fa","ssdeep":"","tlshash":"8461ed2e32bb203486b764b71b4bd7547520108b6846dc2e7d9c87c52fd0f6498f5ee5","size":3410,"data":"","first_seen":"2026-07-27T00:58:32.354268Z","last_seen":"2026-07-27T00:59:02.777761Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdn.jsdelivr.net/npm/ethers@5.7.2/dist/ethers.umd.min.js","fqdn":"cdn.jsdelivr.net","domain":"jsdelivr.net","tld":"net"},"ip":{"addr":"151.101.129.229","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"71f8c498e792c6179d4e2840228f777a","sha1":"b651545587f6257345dc3de9ddaa444b10dedf3e","sha256":"a66293a6a2bb4dee061a68612be0be3c5c0ab7e4068ab8d98a4a357baf664c73","sha512":"14371563e83bbdce425c035bad34a0d4ae6a2f2ae20ac183602134d8b8b5b5711874d40fbcb3c7344fab4f63237a2f0dedf65b7b458b870dbb8f64ab191a5d32","ssdeep":"12288:TfamYTKkkAJs8P+H8Xb2F/nNuwEYtnob6qQr:TfjkhPaNnN9EYtwo","tlshash":"35f43b80b3b1b0b583c729a4143f6046f63af46a505840a8f659faf279f9d4c957bb3c","size":760171,"data":"","first_seen":"2023-03-13T00:48:53Z","last_seen":"2026-07-27T00:59:02.764737Z","times_seen":3713,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/bundle.js","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"introduction_type":"scriptElement","is_inline":false,"md5":"29681f25e1e25a870bd6656b8d48646f","sha1":"7b8c8d1c3af639b6ec50c84660a9e9f0a3a2d3a3","sha256":"969be4f64afdeaca0568779c3b0f7291bc9a7185cc983a5104fbd90e4f901039","sha512":"69c94d52b83c5cfc9b4d86e042cf6b99ab9d00c1b9f417ed35f789a41b2d21a92606bef9e1a7a02e64622e31feecb9cdb451ed23f8fa7a69392a0575944867e9","ssdeep":"49152:LRIMXDbdUW4HlHZg+dY3yBgS6cUKZJNrl4G1SE0BuuJpxHiRo6r3XOWxYrowVpaz:Qg+wyBgSxUKZTRbUajO9U7","tlshash":"abc56d907395a46c03b352d458771101f339684aa40d80ecf7ecd9e7afb998a897bf39","size":2510372,"data":"","first_seen":"2025-07-20T10:23:41.470184Z","last_seen":"2026-07-27T00:59:02.779275Z","times_seen":711,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/modals.js","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"introduction_type":"scriptElement","is_inline":false,"md5":"ecbc5043a1e25f2bd5bbd6e3c3be49f0","sha1":"d66eb695679871221c52958d94029c6358b7613d","sha256":"6d0c2c8d032982e9a86a1bed14f709911058b6b693abb5d46335a0106c12c411","sha512":"38b9aedf74859ade1e5445634b338f560c4d0520ab126de202ad98942bc0f34e740b93c7123a3bc53dcdded31944c174ad06bf1ca006e137cb4e06a949e86088","ssdeep":"768:ywjvL/eQ0ae2vBKRDpoKvTQv4n59+Y44U7kFlaoGHv5:ywz2n59J4inM5","tlshash":"943311071cbe31361daf0fa3b7cc1a1b4e2eb351e612aaee71bd1446438bd74c5a5618","size":52833,"data":"","first_seen":"2025-07-20T10:23:41.460008Z","last_seen":"2026-07-27T00:59:02.776062Z","times_seen":745,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/fpbundle.js","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"introduction_type":"scriptElement","is_inline":false,"md5":"1c59909ad8d56060bf239a34a275da3d","sha1":"1164057a0631f6b5dd80387a1c3a9e332fb00bb4","sha256":"126a8b465ef8734b4d7a289781e0535cd283ccf24394e08c44f23ae300be3a5a","sha512":"39d33737c908bf2a1430f157990f931a0644471a0cf20de61721596e1330fe5867108db7e47d1869576710a72f886ef42e7492a2c0ed05fde2644f6d338e3eac","ssdeep":"768:v8UXI0Nc5VArhXDh1bnUsAq1++umYUT15+2gT/RcKrNcFV3BT/Vo:vN/NcnArV7f5+9cxT6","tlshash":"a413c7a873c67139a217b0719dcf4845b67d6d182289884dca2ec4a4b879d3dc77ecec","size":45503,"data":"","first_seen":"2025-07-11T11:18:53.943693Z","last_seen":"2026-07-27T00:59:02.766896Z","times_seen":743,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/main.js","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"introduction_type":"scriptElement","is_inline":false,"md5":"3b9dbd3c83fc9b835982730923ca46cf","sha1":"84314a3d7c65ae7c5e4e14e2a98a855c4d76f66c","sha256":"ee1b96a4401864bed39e38d02e147e7bc46adc83b547b8a463f1ce07c697317a","sha512":"293a9c1f986cf70855fa22fe4b19df0164da5aae7741f97c1e69aee1d74310749b216f7879474fd819756792e38b808ed5fd3869491aecda16eba8a6c0e87a31","ssdeep":"3072:8bh4BaT7rJmS1pdELgGCbGvy3dg0UME+YcpjztCXeXVtzy:8bhx3rQEGCbGvyNg0nE+YcpjhIeXV5y","tlshash":"38445fdbd54d90048a21cad24da98fdeee04b83f87c33f48a10499aa7c77bdd06d5a17","size":271049,"data":"","first_seen":"2026-07-27T00:58:32.34934Z","last_seen":"2026-07-27T00:59:02.761996Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"introduction_type":"Function","is_inline":false,"md5":"82bb9e43f0f3555c62637a12e44252c3","sha1":"9c94ea3504f0fe7c66f58677fdaabbc7bf035178","sha256":"a77c896eb025b6c9329efe530b8678b3324e86a655969a9742acaa5192efbeab","sha512":"7f3d90d294c73e1a1542d5c3a1285b1152e183fbb89c75c61147b9dc093c4f5f6093274f3aea9b7e1b93941a24b8fee590f469fbde0080117402d1de7c357eac","ssdeep":"3072:JTB5kcXtS0HJmDLIACbGvyTj00rW+E+Ycpjx3mXeX15zh:JTBdXoSACbGvyP00r1E+YcpjR8eX19h","tlshash":"4b443ddbc54d10448a25c6e24d898feeee04b83f87c73f88a10459aa7c77bcd16d9a17","size":266969,"data":"","first_seen":"2026-07-27T00:58:32.356449Z","last_seen":"2026-07-27T00:59:02.780042Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdn.jsdelivr.net/npm/qrcode@1.5.0/build/qrcode.min.js","fqdn":"cdn.jsdelivr.net","domain":"jsdelivr.net","tld":"net"},"ip":{"addr":"151.101.129.229","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"2c6be7c225318bc4145cb3d08b7d9de8","sha1":"2914f15b1f54d7d3e57cd8a96f59118b95c463c7","sha256":"9bbd206c49afacbc48d0544bc41527989cc870068e32dcb6991374c617bf333f","sha512":"d3680ba33f748af03ac16fcbcd022495b3b6d11d7965c522355de0c5d2ec4ed8c823285d7c9602d9f3bef8117ad43773935f834fdd859c7c6395790459c1cdeb","ssdeep":"384:Re3LeEsPd+Iv27CKsC7Gepp+WTYBO79NpSmlj62jZVRYmDEh52xsc8r3OmfPqIME:MkWTYBCnRX42q6ye7wF","tlshash":"6ab2ea98f3a5a16843e76495042f1006e1beb924792e8965db51d4c3fcf8ee9903bf38","size":23712,"data":"","first_seen":"2025-03-21T08:06:36.394484Z","last_seen":"2026-07-27T00:59:02.772387Z","times_seen":28,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":[{"level":"log","text":"map[actor:server1.conn0.watcher16.process8//obj52 class:Proxy preview:map[kind:Object ownProperties:map[\u003chandler\u003e:map[value:map[actor:server1.conn0.watcher16.process8//obj54 class:Object extensible:true frozen:false isError:false ownPropertyLength:2 sealed:false type:object]] \u003ctarget\u003e:map[value:map[actor:server1.conn0.watcher16.process8//obj53 class:Object extensible:true frozen:false isError:false ownPropertyLength:3 sealed:false type:object]]] ownPropertiesLength:2] type:object]","filename":"http://sahnesirince.com/main.js line 1 \u003e Function","line_number":3,"column_number":105835}]},"http":[{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/en/b/b9/Solana_logo.png","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.066Z","timestamp":1785113873066,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.wikimedia.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Fri, 12 Jun 2026 05:24:58 GMT","end":"Thu, 10 Sep 2026 05:24:57 GMT"},"fingerprint":{"sha1":"5B:35:4A:25:C6:4D:17:23:8B:63:A3:F7:CE:52:1B:B7:22:06:BF:1B","sha256":"FE:D1:85:EF:B6:D0:7E:42:4F:F4:62:C9:8C:A3:BA:2C:88:5E:47:EB:9A:03:3D:30:4B:E3:63:FF:11:AD:F6:0D"}}},"request":{"raw":"GET /wikipedia/en/b/b9/Solana_logo.png HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, 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\ndate: Sun, 26 Jul 2026 08:49:10 GMT\r\netag: 8ed9ca4df50f996340c1b57b97b598ac\r\nserver: ATS/9.2.13\r\ncontent-type: image/png\r\nx-object-meta-sha1base36: 9mlac3nkgkgtgk8iunz5fo779lw62m0\r\nlast-modified: Sat, 06 Nov 2021 00:05:14 GMT\r\ncontent-length: 28416\r\nx-ratelimit-limit: 10000, 10000;w=1\r\nx-ratelimit-remaining: 9999\r\nx-ratelimit-reset: 1\r\nage: 58125\r\naccept-ranges: bytes\r\nx-cache: cp3077 miss, cp3077 hit/218\r\nx-cache-status: hit-front\r\nserver-timing: cache;desc=\"hit-front\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\nx-content-type-options: nosniff\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\nreporting-endpoints: csp_endpoint=\"https://commons.wikimedia.org/w/api.php?reportonly=1\u0026source=image\u0026action=cspreport\u0026format=json\"\r\ncontent-security-policy-report-only: default-src 'none'; script-src 'none'; style-src 'unsafe-inline' data:; font-src data:; img-src data: https://upload.wikimedia.org/favicon.ico; connect-src https://upload.wikimedia.org/favicon.ico; media-src data: 'self'; object-src 'none'; worker-src 'none'; manifest-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; report-uri https://commons.wikimedia.org/w/api.php?reportonly=1\u0026source=image\u0026action=cspreport\u0026format=json; report-to csp_endpoint\r\nset-cookie: WMF-Uniq=jt-5d2rn-GVUJG4fMarIYgOqAAAAAFvd7zyH6QRfLZWi1hGLklcodQUaWQ9c-FZW;Domain=upload.wikimedia.org;Path=/;HttpOnly;secure;SameSite=None;Expires=Tue, 27 Jul 2027 00:00:00 GMT\r\nx-request-id: 166aee76-4459-43aa-b105-83547b9f90f6\r\nx-analytics: \r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Apache Traffic Server:9.2.13","description":"Apache Traffic Server is an open-source caching and proxying server that serves as an HTTP/1.1 and HTTP/2 reverse proxy with caching capabilities, load balancing, request routing, SSL termination, and support for advanced HTTP features.","website":"https://trafficserver.apache.org/","common_platform_enumeration":"cpe:2.3:a:apache:traffic_server:*:*:*:*:*:*:*:*","icon":"Apache Traffic Server.svg","categories":["Web servers"]},{"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":28416,"size_decoded":30457,"mime_type":"image/png","magic":"PNG image data, 316 x 316, 8-bit/color RGBA, non-interlaced","md5":"8ed9ca4df50f996340c1b57b97b598ac","sha1":"526b6f3835cb20ae323bb774a68afa73cb0a36b8","sha256":"bcf4d8e35357bbe1ec3522efa7f309824a9656910ca5d8e3b07d4753f9c1be2a","sha512":"2d05602f73d6b14e8decde95037330be623292ab8a364b5ffb8b63180ebd7c76d66f248714c022e209f0b1ff5b16a74125838502c26c2ab1e4a6d14bbed1b4f0","ssdeep":"768:EfoaStUMo1uzrkcTNfL79qNwcVDzAOiQabLT:Ef39uH505hzAOitbX","tlshash":"47d2e1c7d25c5da38c0875a9fa938be9b76441c71f4d258bb1dbe540702753f06be224","first_seen":"2023-06-01T21:15:40Z","last_seen":"2026-07-27T00:59:02.765554Z","times_seen":224,"resource_available":false,"data":"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"}},"time_used":3498,"timings":{"blocked":3148,"dns":0,"connect":18,"send":0,"wait":22,"receive":4,"ssl":303},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdn.jsdelivr.net/npm/ethers@5.7.2/dist/ethers.umd.min.js","fqdn":"cdn.jsdelivr.net","domain":"jsdelivr.net","tld":"net"},"ip":{"addr":"151.101.129.229","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:56.599Z","timestamp":1785113876599,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"mlkem768x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"jsdelivr.net","organization":""},"issuer":{"commonName":"GlobalSign Atlas R3 DV TLS CA 2026 Q2","organization":"GlobalSign nv-sa"},"validity":{"start":"Wed, 20 May 2026 15:48:47 GMT","end":"Sat, 05 Dec 2026 14:48:47 GMT"},"fingerprint":{"sha1":"D4:05:C2:EC:C7:EE:2B:D0:08:68:0D:3D:33:77:48:78:43:E7:D1:E1","sha256":"ED:84:90:EE:71:BC:6B:5E:B3:D2:50:B0:23:3A:06:0D:E0:50:C6:B6:A9:09:36:E6:CE:FE:E8:66:89:EB:4E:C5"}}},"request":{"raw":"GET /npm/ethers@5.7.2/dist/ethers.umd.min.js HTTP/1.1\r\nHost: cdn.jsdelivr.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-length: 168432\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: *\r\ntiming-allow-origin: *\r\ncache-control: public, max-age=31536000, s-maxage=31536000, immutable\r\ncross-origin-resource-policy: cross-origin\r\nx-content-type-options: nosniff\r\nstrict-transport-security: max-age=31536000; includeSubDomains; preload\r\ncontent-type: application/javascript; charset=utf-8\r\nx-jsd-version: 5.7.2\r\nx-jsd-version-type: version\r\netag: W/\"b996b-tlFUVYf2JXNF3D3p3apESxDe3z4\"\r\ncontent-encoding: br\r\naccept-ranges: bytes\r\nage: 2204883\r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nx-served-by: cache-fra-eddf8230076-FRA, cache-bma-essb1270066-BMA\r\nx-cache: HIT, HIT\r\nvary: Accept-Encoding\r\nalt-svc: h3=\":443\";ma=86400,h3-29=\":443\";ma=86400,h3-27=\":443\";ma=86400\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":760171,"size_decoded":169208,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (65536), with no line terminators","md5":"71f8c498e792c6179d4e2840228f777a","sha1":"b651545587f6257345dc3de9ddaa444b10dedf3e","sha256":"a66293a6a2bb4dee061a68612be0be3c5c0ab7e4068ab8d98a4a357baf664c73","sha512":"14371563e83bbdce425c035bad34a0d4ae6a2f2ae20ac183602134d8b8b5b5711874d40fbcb3c7344fab4f63237a2f0dedf65b7b458b870dbb8f64ab191a5d32","ssdeep":"12288:TfamYTKkkAJs8P+H8Xb2F/nNuwEYtnob6qQr:TfjkhPaNnN9EYtwo","tlshash":"35f43b80b3b1b0b583c729a4143f6046f63af46a505840a8f659faf279f9d4c957bb3c","first_seen":"2023-03-13T00:48:53Z","last_seen":"2026-07-27T00:59:02.764737Z","times_seen":3713,"resource_available":true,"data":"KGZ1bmN0aW9uKGdsb2JhbCxmYWN0b3J5KXt0eXBlb2YgZXhwb3J0cz09PSJvYmplY3QiJiZ0eXBlb2YgbW9kdWxlIT09InVuZGVmaW5lZCI/bW9kdWxlLmV4cG9ydHM9ZmFjdG9yeSgpOnR5cGVvZiBkZWZpbmU9PT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShmYWN0b3J5KTooZ2xvYmFsPXR5cGVvZiBnbG9iYWxUaGlzIT09InVuZGVmaW5lZCI/Z2xvYmFsVGhpczpnbG9iYWx8fHNlbGYsZ2xvYmFsLmV0aGVycz1mYWN0b3J5KCkpfSkodGhpcyxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgY29tbW9uanNHbG9iYWw9dHlwZW9mIGdsb2JhbFRoaXMhPT0idW5kZWZpbmVkIj9nbG9iYWxUaGlzOnR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIj93aW5kb3c6dHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiP2dsb2JhbDp0eXBlb2Ygc2VsZiE9PSJ1bmRlZmluZWQiP3NlbGY6e307ZnVuY3Rpb24gZ2V0RGVmYXVsdEV4cG9ydEZyb21DanMoeCl7cmV0dXJuIHgmJnguX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHgsImRlZmF1bHQiKT94WyJkZWZhdWx0Il06eH1mdW5jdGlvbiBjcmVhdGVDb21tb25qc01vZHVsZShmbixiYXNlZGlyLG1vZHVsZSl7cmV0dXJuIG1vZHVsZT17cGF0aDpiYXNlZGlyLGV4cG9ydHM6e30scmVxdWlyZTpmdW5jdGlvbihwYXRoLGJhc2Upe3JldHVybiBjb21tb25qc1JlcXVpcmUocGF0aCxiYXNlPT09dW5kZWZpbmVkfHxiYXNlPT09bnVsbD9tb2R1bGUucGF0aDpiYXNlKX19LGZuKG1vZHVsZSxtb2R1bGUuZXhwb3J0cyksbW9kdWxlLmV4cG9ydHN9ZnVuY3Rpb24gZ2V0RGVmYXVsdEV4cG9ydEZyb21OYW1lc3BhY2VJZlByZXNlbnQobil7cmV0dXJuIG4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCJkZWZhdWx0Iik/blsiZGVmYXVsdCJdOm59ZnVuY3Rpb24gZ2V0RGVmYXVsdEV4cG9ydEZyb21OYW1lc3BhY2VJZk5vdE5hbWVkKG4pe3JldHVybiBuJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobiwiZGVmYXVsdCIpJiZPYmplY3Qua2V5cyhuKS5sZW5ndGg9PT0xP25bImRlZmF1bHQiXTpufWZ1bmN0aW9uIGdldEF1Z21lbnRlZE5hbWVzcGFjZShuKXtpZihuLl9fZXNNb2R1bGUpcmV0dXJuIG47dmFyIGE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO09iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24oayl7dmFyIGQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGspO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGssZC5nZXQ/ZDp7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBuW2tdfX0pfSk7cmV0dXJuIGF9ZnVuY3Rpb24gY29tbW9uanNSZXF1aXJlKCl7dGhyb3cgbmV3IEVycm9yKCJEeW5hbWljIHJlcXVpcmVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSBAcm9sbHVwL3BsdWdpbi1jb21tb25qcyIpfXZhciBibj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUpeyhmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGFzc2VydCh2YWwsbXNnKXtpZighdmFsKXRocm93IG5ldyBFcnJvcihtc2d8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gaW5oZXJpdHMoY3RvcixzdXBlckN0b3Ipe2N0b3Iuc3VwZXJfPXN1cGVyQ3Rvcjt2YXIgVGVtcEN0b3I9ZnVuY3Rpb24oKXt9O1RlbXBDdG9yLnByb3RvdHlwZT1zdXBlckN0b3IucHJvdG90eXBlO2N0b3IucHJvdG90eXBlPW5ldyBUZW1wQ3RvcjtjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1jdG9yfWZ1bmN0aW9uIEJOKG51bWJlcixiYXNlLGVuZGlhbil7aWYoQk4uaXNCTihudW1iZXIpKXtyZXR1cm4gbnVtYmVyfXRoaXMubmVnYXRpdmU9MDt0aGlzLndvcmRzPW51bGw7dGhpcy5sZW5ndGg9MDt0aGlzLnJlZD1udWxsO2lmKG51bWJlciE9PW51bGwpe2lmKGJhc2U9PT0ibGUifHxiYXNlPT09ImJlIil7ZW5kaWFuPWJhc2U7YmFzZT0xMH10aGlzLl9pbml0KG51bWJlcnx8MCxiYXNlfHwxMCxlbmRpYW58fCJiZSIpfX1pZih0eXBlb2YgbW9kdWxlPT09Im9iamVjdCIpe21vZHVsZS5leHBvcnRzPUJOfWVsc2V7ZXhwb3J0cy5CTj1CTn1CTi5CTj1CTjtCTi53b3JkU2l6ZT0yNjt2YXIgQnVmZmVyO3RyeXtpZih0eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCImJnR5cGVvZiB3aW5kb3cuQnVmZmVyIT09InVuZGVmaW5lZCIpe0J1ZmZlcj13aW5kb3cuQnVmZmVyfWVsc2V7QnVmZmVyPW51bGwuQnVmZmVyfX1jYXRjaChlKXt9Qk4uaXNCTj1mdW5jdGlvbiBpc0JOKG51bSl7aWYobnVtIGluc3RhbmNlb2YgQk4pe3JldHVybiB0cnVlfXJldHVybiBudW0hPT1udWxsJiZ0eXBlb2YgbnVtPT09Im9iamVjdCImJm51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PUJOLndvcmRTaXplJiZBcnJheS5pc0FycmF5KG51bS53b3Jkcyl9O0JOLm1heD1mdW5jdGlvbiBtYXgobGVmdCxyaWdodCl7aWYobGVmdC5jbXAocmlnaHQpPjApcmV0dXJuIGxlZnQ7cmV0dXJuIHJpZ2h0fTtCTi5taW49ZnVuY3Rpb24gbWluKGxlZnQscmlnaHQpe2lmKGxlZnQuY21wKHJpZ2h0KTwwKXJldHVybiBsZWZ0O3JldHVybiByaWdodH07Qk4ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uIGluaXQobnVtYmVyLGJhc2UsZW5kaWFuKXtpZih0eXBlb2YgbnVtYmVyPT09Im51bWJlciIpe3JldHVybiB0aGlzLl9pbml0TnVtYmVyKG51bWJlcixiYXNlLGVuZGlhbil9aWYodHlwZW9mIG51bWJlcj09PSJvYmplY3QiKXtyZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlcixiYXNlLGVuZGlhbil9aWYoYmFzZT09PSJoZXgiKXtiYXNlPTE2fWFzc2VydChiYXNlPT09KGJhc2V8MCkmJmJhc2U+PTImJmJhc2U8PTM2KTtudW1iZXI9bnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXHMrL2csIiIpO3ZhciBzdGFydD0wO2lmKG51bWJlclswXT09PSItIil7c3RhcnQrKzt0aGlzLm5lZ2F0aXZlPTF9aWYoc3RhcnQ8bnVtYmVyLmxlbmd0aCl7aWYoYmFzZT09PTE2KXt0aGlzLl9wYXJzZUhleChudW1iZXIsc3RhcnQsZW5kaWFuKX1lbHNle3RoaXMuX3BhcnNlQmFzZShudW1iZXIsYmFzZSxzdGFydCk7aWYoZW5kaWFuPT09ImxlIil7dGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGJhc2UsZW5kaWFuKX19fX07Qk4ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uIF9pbml0TnVtYmVyKG51bWJlcixiYXNlLGVuZGlhbil7aWYobnVtYmVyPDApe3RoaXMubmVnYXRpdmU9MTtudW1iZXI9LW51bWJlcn1pZihudW1iZXI8NjcxMDg4NjQpe3RoaXMud29yZHM9W251bWJlciY2NzEwODg2M107dGhpcy5sZW5ndGg9MX1lbHNlIGlmKG51bWJlcjw0NTAzNTk5NjI3MzcwNDk2KXt0aGlzLndvcmRzPVtudW1iZXImNjcxMDg4NjMsbnVtYmVyLzY3MTA4ODY0JjY3MTA4ODYzXTt0aGlzLmxlbmd0aD0yfWVsc2V7YXNzZXJ0KG51bWJlcjw5MDA3MTk5MjU0NzQwOTkyKTt0aGlzLndvcmRzPVtudW1iZXImNjcxMDg4NjMsbnVtYmVyLzY3MTA4ODY0JjY3MTA4ODYzLDFdO3RoaXMubGVuZ3RoPTN9aWYoZW5kaWFuIT09ImxlIilyZXR1cm47dGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGJhc2UsZW5kaWFuKX07Qk4ucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24gX2luaXRBcnJheShudW1iZXIsYmFzZSxlbmRpYW4pe2Fzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aD09PSJudW1iZXIiKTtpZihudW1iZXIubGVuZ3RoPD0wKXt0aGlzLndvcmRzPVswXTt0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfXRoaXMubGVuZ3RoPU1hdGguY2VpbChudW1iZXIubGVuZ3RoLzMpO3RoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dGhpcy53b3Jkc1tpXT0wfXZhciBqLHc7dmFyIG9mZj0wO2lmKGVuZGlhbj09PSJiZSIpe2ZvcihpPW51bWJlci5sZW5ndGgtMSxqPTA7aT49MDtpLT0zKXt3PW51bWJlcltpXXxudW1iZXJbaS0xXTw8OHxudW1iZXJbaS0yXTw8MTY7dGhpcy53b3Jkc1tqXXw9dzw8b2ZmJjY3MTA4ODYzO3RoaXMud29yZHNbaisxXT13Pj4+MjYtb2ZmJjY3MTA4ODYzO29mZis9MjQ7aWYob2ZmPj0yNil7b2ZmLT0yNjtqKyt9fX1lbHNlIGlmKGVuZGlhbj09PSJsZSIpe2ZvcihpPTAsaj0wO2k8bnVtYmVyLmxlbmd0aDtpKz0zKXt3PW51bWJlcltpXXxudW1iZXJbaSsxXTw8OHxudW1iZXJbaSsyXTw8MTY7dGhpcy53b3Jkc1tqXXw9dzw8b2ZmJjY3MTA4ODYzO3RoaXMud29yZHNbaisxXT13Pj4+MjYtb2ZmJjY3MTA4ODYzO29mZis9MjQ7aWYob2ZmPj0yNil7b2ZmLT0yNjtqKyt9fX1yZXR1cm4gdGhpcy5fc3RyaXAoKX07ZnVuY3Rpb24gcGFyc2VIZXg0Qml0cyhzdHJpbmcsaW5kZXgpe3ZhciBjPXN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtpZihjPj00OCYmYzw9NTcpe3JldHVybiBjLTQ4fWVsc2UgaWYoYz49NjUmJmM8PTcwKXtyZXR1cm4gYy01NX1lbHNlIGlmKGM+PTk3JiZjPD0xMDIpe3JldHVybiBjLTg3fWVsc2V7YXNzZXJ0KGZhbHNlLCJJbnZhbGlkIGNoYXJhY3RlciBpbiAiK3N0cmluZyl9fWZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZShzdHJpbmcsbG93ZXJCb3VuZCxpbmRleCl7dmFyIHI9cGFyc2VIZXg0Qml0cyhzdHJpbmcsaW5kZXgpO2lmKGluZGV4LTE+PWxvd2VyQm91bmQpe3J8PXBhcnNlSGV4NEJpdHMoc3RyaW5nLGluZGV4LTEpPDw0fXJldHVybiByfUJOLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24gX3BhcnNlSGV4KG51bWJlcixzdGFydCxlbmRpYW4pe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgobnVtYmVyLmxlbmd0aC1zdGFydCkvNik7dGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPTB9dmFyIG9mZj0wO3ZhciBqPTA7dmFyIHc7aWYoZW5kaWFuPT09ImJlIil7Zm9yKGk9bnVtYmVyLmxlbmd0aC0xO2k+PXN0YXJ0O2ktPTIpe3c9cGFyc2VIZXhCeXRlKG51bWJlcixzdGFydCxpKTw8b2ZmO3RoaXMud29yZHNbal18PXcmNjcxMDg4NjM7aWYob2ZmPj0xOCl7b2ZmLT0xODtqKz0xO3RoaXMud29yZHNbal18PXc+Pj4yNn1lbHNle29mZis9OH19fWVsc2V7dmFyIHBhcnNlTGVuZ3RoPW51bWJlci5sZW5ndGgtc3RhcnQ7Zm9yKGk9cGFyc2VMZW5ndGglMj09PTA/c3RhcnQrMTpzdGFydDtpPG51bWJlci5sZW5ndGg7aSs9Mil7dz1wYXJzZUhleEJ5dGUobnVtYmVyLHN0YXJ0LGkpPDxvZmY7dGhpcy53b3Jkc1tqXXw9dyY2NzEwODg2MztpZihvZmY+PTE4KXtvZmYtPTE4O2orPTE7dGhpcy53b3Jkc1tqXXw9dz4+PjI2fWVsc2V7b2ZmKz04fX19dGhpcy5fc3RyaXAoKX07ZnVuY3Rpb24gcGFyc2VCYXNlKHN0cixzdGFydCxlbmQsbXVsKXt2YXIgcj0wO3ZhciBiPTA7dmFyIGxlbj1NYXRoLm1pbihzdHIubGVuZ3RoLGVuZCk7Zm9yKHZhciBpPXN0YXJ0O2k8bGVuO2krKyl7dmFyIGM9c3RyLmNoYXJDb2RlQXQoaSktNDg7cio9bXVsO2lmKGM+PTQ5KXtiPWMtNDkrMTB9ZWxzZSBpZihjPj0xNyl7Yj1jLTE3KzEwfWVsc2V7Yj1jfWFzc2VydChjPj0wJiZiPG11bCwiSW52YWxpZCBjaGFyYWN0ZXIiKTtyKz1ifXJldHVybiByfUJOLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uIF9wYXJzZUJhc2UobnVtYmVyLGJhc2Usc3RhcnQpe3RoaXMud29yZHM9WzBdO3RoaXMubGVuZ3RoPTE7Zm9yKHZhciBsaW1iTGVuPTAsbGltYlBvdz0xO2xpbWJQb3c8PTY3MTA4ODYzO2xpbWJQb3cqPWJhc2Upe2xpbWJMZW4rK31saW1iTGVuLS07bGltYlBvdz1saW1iUG93L2Jhc2V8MDt2YXIgdG90YWw9bnVtYmVyLmxlbmd0aC1zdGFydDt2YXIgbW9kPXRvdGFsJWxpbWJMZW47dmFyIGVuZD1NYXRoLm1pbih0b3RhbCx0b3RhbC1tb2QpK3N0YXJ0O3ZhciB3b3JkPTA7Zm9yKHZhciBpPXN0YXJ0O2k8ZW5kO2krPWxpbWJMZW4pe3dvcmQ9cGFyc2VCYXNlKG51bWJlcixpLGkrbGltYkxlbixiYXNlKTt0aGlzLmltdWxuKGxpbWJQb3cpO2lmKHRoaXMud29yZHNbMF0rd29yZDw2NzEwODg2NCl7dGhpcy53b3Jkc1swXSs9d29yZH1lbHNle3RoaXMuX2lhZGRuKHdvcmQpfX1pZihtb2QhPT0wKXt2YXIgcG93PTE7d29yZD1wYXJzZUJhc2UobnVtYmVyLGksbnVtYmVyLmxlbmd0aCxiYXNlKTtmb3IoaT0wO2k8bW9kO2krKyl7cG93Kj1iYXNlfXRoaXMuaW11bG4ocG93KTtpZih0aGlzLndvcmRzWzBdK3dvcmQ8NjcxMDg4NjQpe3RoaXMud29yZHNbMF0rPXdvcmR9ZWxzZXt0aGlzLl9pYWRkbih3b3JkKX19dGhpcy5fc3RyaXAoKX07Qk4ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24gY29weShkZXN0KXtkZXN0LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aDtpKyspe2Rlc3Qud29yZHNbaV09dGhpcy53b3Jkc1tpXX1kZXN0Lmxlbmd0aD10aGlzLmxlbmd0aDtkZXN0Lm5lZ2F0aXZlPXRoaXMubmVnYXRpdmU7ZGVzdC5yZWQ9dGhpcy5yZWR9O2Z1bmN0aW9uIG1vdmUoZGVzdCxzcmMpe2Rlc3Qud29yZHM9c3JjLndvcmRzO2Rlc3QubGVuZ3RoPXNyYy5sZW5ndGg7ZGVzdC5uZWdhdGl2ZT1zcmMubmVnYXRpdmU7ZGVzdC5yZWQ9c3JjLnJlZH1CTi5wcm90b3R5cGUuX21vdmU9ZnVuY3Rpb24gX21vdmUoZGVzdCl7bW92ZShkZXN0LHRoaXMpfTtCTi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24gY2xvbmUoKXt2YXIgcj1uZXcgQk4obnVsbCk7dGhpcy5jb3B5KHIpO3JldHVybiByfTtCTi5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbiBfZXhwYW5kKHNpemUpe3doaWxlKHRoaXMubGVuZ3RoPHNpemUpe3RoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MH1yZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLl9zdHJpcD1mdW5jdGlvbiBzdHJpcCgpe3doaWxlKHRoaXMubGVuZ3RoPjEmJnRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV09PT0wKXt0aGlzLmxlbmd0aC0tfXJldHVybiB0aGlzLl9ub3JtU2lnbigpfTtCTi5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uIF9ub3JtU2lnbigpe2lmKHRoaXMubGVuZ3RoPT09MSYmdGhpcy53b3Jkc1swXT09PTApe3RoaXMubmVnYXRpdmU9MH1yZXR1cm4gdGhpc307aWYodHlwZW9mIFN5bWJvbCE9PSJ1bmRlZmluZWQiJiZ0eXBlb2YgU3ltYm9sLmZvcj09PSJmdW5jdGlvbiIpe3RyeXtCTi5wcm90b3R5cGVbU3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKV09aW5zcGVjdH1jYXRjaChlKXtCTi5wcm90b3R5cGUuaW5zcGVjdD1pbnNwZWN0fX1lbHNle0JOLnByb3RvdHlwZS5pbnNwZWN0PWluc3BlY3R9ZnVuY3Rpb24gaW5zcGVjdCgpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifXZhciB6ZXJvcz1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXTt2YXIgZ3JvdXBTaXplcz1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XTt2YXIgZ3JvdXBCYXNlcz1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtCTi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24gdG9TdHJpbmcoYmFzZSxwYWRkaW5nKXtiYXNlPWJhc2V8fDEwO3BhZGRpbmc9cGFkZGluZ3wwfHwxO3ZhciBvdXQ7aWYoYmFzZT09PTE2fHxiYXNlPT09ImhleCIpe291dD0iIjt2YXIgb2ZmPTA7dmFyIGNhcnJ5PTA7Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciB3PXRoaXMud29yZHNbaV07dmFyIHdvcmQ9KCh3PDxvZmZ8Y2FycnkpJjE2Nzc3MjE1KS50b1N0cmluZygxNik7Y2Fycnk9dz4+PjI0LW9mZiYxNjc3NzIxNTtvZmYrPTI7aWYob2ZmPj0yNil7b2ZmLT0yNjtpLS19aWYoY2FycnkhPT0wfHxpIT09dGhpcy5sZW5ndGgtMSl7b3V0PXplcm9zWzYtd29yZC5sZW5ndGhdK3dvcmQrb3V0fWVsc2V7b3V0PXdvcmQrb3V0fX1pZihjYXJyeSE9PTApe291dD1jYXJyeS50b1N0cmluZygxNikrb3V0fXdoaWxlKG91dC5sZW5ndGglcGFkZGluZyE9PTApe291dD0iMCIrb3V0fWlmKHRoaXMubmVnYXRpdmUhPT0wKXtvdXQ9Ii0iK291dH1yZXR1cm4gb3V0fWlmKGJhc2U9PT0oYmFzZXwwKSYmYmFzZT49MiYmYmFzZTw9MzYpe3ZhciBncm91cFNpemU9Z3JvdXBTaXplc1tiYXNlXTt2YXIgZ3JvdXBCYXNlPWdyb3VwQmFzZXNbYmFzZV07b3V0PSIiO3ZhciBjPXRoaXMuY2xvbmUoKTtjLm5lZ2F0aXZlPTA7d2hpbGUoIWMuaXNaZXJvKCkpe3ZhciByPWMubW9kcm4oZ3JvdXBCYXNlKS50b1N0cmluZyhiYXNlKTtjPWMuaWRpdm4oZ3JvdXBCYXNlKTtpZighYy5pc1plcm8oKSl7b3V0PXplcm9zW2dyb3VwU2l6ZS1yLmxlbmd0aF0rcitvdXR9ZWxzZXtvdXQ9citvdXR9fWlmKHRoaXMuaXNaZXJvKCkpe291dD0iMCIrb3V0fXdoaWxlKG91dC5sZW5ndGglcGFkZGluZyE9PTApe291dD0iMCIrb3V0fWlmKHRoaXMubmVnYXRpdmUhPT0wKXtvdXQ9Ii0iK291dH1yZXR1cm4gb3V0fWFzc2VydChmYWxzZSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfTtCTi5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24gdG9OdW1iZXIoKXt2YXIgcmV0PXRoaXMud29yZHNbMF07aWYodGhpcy5sZW5ndGg9PT0yKXtyZXQrPXRoaXMud29yZHNbMV0qNjcxMDg4NjR9ZWxzZSBpZih0aGlzLmxlbmd0aD09PTMmJnRoaXMud29yZHNbMl09PT0xKXtyZXQrPTQ1MDM1OTk2MjczNzA0OTYrdGhpcy53b3Jkc1sxXSo2NzEwODg2NH1lbHNlIGlmKHRoaXMubGVuZ3RoPjIpe2Fzc2VydChmYWxzZSwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzIil9cmV0dXJuIHRoaXMubmVnYXRpdmUhPT0wPy1yZXQ6cmV0fTtCTi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uIHRvSlNPTigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2LDIpfTtpZihCdWZmZXIpe0JOLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbiB0b0J1ZmZlcihlbmRpYW4sbGVuZ3RoKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsZW5kaWFuLGxlbmd0aCl9fUJOLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uIHRvQXJyYXkoZW5kaWFuLGxlbmd0aCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksZW5kaWFuLGxlbmd0aCl9O3ZhciBhbGxvY2F0ZT1mdW5jdGlvbiBhbGxvY2F0ZShBcnJheVR5cGUsc2l6ZSl7aWYoQXJyYXlUeXBlLmFsbG9jVW5zYWZlKXtyZXR1cm4gQXJyYXlUeXBlLmFsbG9jVW5zYWZlKHNpemUpfXJldHVybiBuZXcgQXJyYXlUeXBlKHNpemUpfTtCTi5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24gdG9BcnJheUxpa2UoQXJyYXlUeXBlLGVuZGlhbixsZW5ndGgpe3RoaXMuX3N0cmlwKCk7dmFyIGJ5dGVMZW5ndGg9dGhpcy5ieXRlTGVuZ3RoKCk7dmFyIHJlcUxlbmd0aD1sZW5ndGh8fE1hdGgubWF4KDEsYnl0ZUxlbmd0aCk7YXNzZXJ0KGJ5dGVMZW5ndGg8PXJlcUxlbmd0aCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpO2Fzc2VydChyZXFMZW5ndGg+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIik7dmFyIHJlcz1hbGxvY2F0ZShBcnJheVR5cGUscmVxTGVuZ3RoKTt2YXIgcG9zdGZpeD1lbmRpYW49PT0ibGUiPyJMRSI6IkJFIjt0aGlzWyJfdG9BcnJheUxpa2UiK3Bvc3RmaXhdKHJlcyxieXRlTGVuZ3RoKTtyZXR1cm4gcmVzfTtCTi5wcm90b3R5cGUuX3RvQXJyYXlMaWtlTEU9ZnVuY3Rpb24gX3RvQXJyYXlMaWtlTEUocmVzLGJ5dGVMZW5ndGgpe3ZhciBwb3NpdGlvbj0wO3ZhciBjYXJyeT0wO2Zvcih2YXIgaT0wLHNoaWZ0PTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciB3b3JkPXRoaXMud29yZHNbaV08PHNoaWZ0fGNhcnJ5O3Jlc1twb3NpdGlvbisrXT13b3JkJjI1NTtpZihwb3NpdGlvbjxyZXMubGVuZ3RoKXtyZXNbcG9zaXRpb24rK109d29yZD4+OCYyNTV9aWYocG9zaXRpb248cmVzLmxlbmd0aCl7cmVzW3Bvc2l0aW9uKytdPXdvcmQ+PjE2JjI1NX1pZihzaGlmdD09PTYpe2lmKHBvc2l0aW9uPHJlcy5sZW5ndGgpe3Jlc1twb3NpdGlvbisrXT13b3JkPj4yNCYyNTV9Y2Fycnk9MDtzaGlmdD0wfWVsc2V7Y2Fycnk9d29yZD4+PjI0O3NoaWZ0Kz0yfX1pZihwb3NpdGlvbjxyZXMubGVuZ3RoKXtyZXNbcG9zaXRpb24rK109Y2Fycnk7d2hpbGUocG9zaXRpb248cmVzLmxlbmd0aCl7cmVzW3Bvc2l0aW9uKytdPTB9fX07Qk4ucHJvdG90eXBlLl90b0FycmF5TGlrZUJFPWZ1bmN0aW9uIF90b0FycmF5TGlrZUJFKHJlcyxieXRlTGVuZ3RoKXt2YXIgcG9zaXRpb249cmVzLmxlbmd0aC0xO3ZhciBjYXJyeT0wO2Zvcih2YXIgaT0wLHNoaWZ0PTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciB3b3JkPXRoaXMud29yZHNbaV08PHNoaWZ0fGNhcnJ5O3Jlc1twb3NpdGlvbi0tXT13b3JkJjI1NTtpZihwb3NpdGlvbj49MCl7cmVzW3Bvc2l0aW9uLS1dPXdvcmQ+PjgmMjU1fWlmKHBvc2l0aW9uPj0wKXtyZXNbcG9zaXRpb24tLV09d29yZD4+MTYmMjU1fWlmKHNoaWZ0PT09Nil7aWYocG9zaXRpb24+PTApe3Jlc1twb3NpdGlvbi0tXT13b3JkPj4yNCYyNTV9Y2Fycnk9MDtzaGlmdD0wfWVsc2V7Y2Fycnk9d29yZD4+PjI0O3NoaWZ0Kz0yfX1pZihwb3NpdGlvbj49MCl7cmVzW3Bvc2l0aW9uLS1dPWNhcnJ5O3doaWxlKHBvc2l0aW9uPj0wKXtyZXNbcG9zaXRpb24tLV09MH19fTtpZihNYXRoLmNsejMyKXtCTi5wcm90b3R5cGUuX2NvdW50Qml0cz1mdW5jdGlvbiBfY291bnRCaXRzKHcpe3JldHVybiAzMi1NYXRoLmNsejMyKHcpfX1lbHNle0JOLnByb3RvdHlwZS5fY291bnRCaXRzPWZ1bmN0aW9uIF9jb3VudEJpdHModyl7dmFyIHQ9dzt2YXIgcj0wO2lmKHQ+PTQwOTYpe3IrPTEzO3Q+Pj49MTN9aWYodD49NjQpe3IrPTc7dD4+Pj03fWlmKHQ+PTgpe3IrPTQ7dD4+Pj00fWlmKHQ+PTIpe3IrPTI7dD4+Pj0yfXJldHVybiByK3R9fUJOLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24gX3plcm9CaXRzKHcpe2lmKHc9PT0wKXJldHVybiAyNjt2YXIgdD13O3ZhciByPTA7aWYoKHQmODE5MSk9PT0wKXtyKz0xMzt0Pj4+PTEzfWlmKCh0JjEyNyk9PT0wKXtyKz03O3Q+Pj49N31pZigodCYxNSk9PT0wKXtyKz00O3Q+Pj49NH1pZigodCYzKT09PTApe3IrPTI7dD4+Pj0yfWlmKCh0JjEpPT09MCl7cisrfXJldHVybiByfTtCTi5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uIGJpdExlbmd0aCgpe3ZhciB3PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07dmFyIGhpPXRoaXMuX2NvdW50Qml0cyh3KTtyZXR1cm4odGhpcy5sZW5ndGgtMSkqMjYraGl9O2Z1bmN0aW9uIHRvQml0QXJyYXkobnVtKXt2YXIgdz1uZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtmb3IodmFyIGJpdD0wO2JpdDx3Lmxlbmd0aDtiaXQrKyl7dmFyIG9mZj1iaXQvMjZ8MDt2YXIgd2JpdD1iaXQlMjY7d1tiaXRdPW51bS53b3Jkc1tvZmZdPj4+d2JpdCYxfXJldHVybiB3fUJOLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbiB6ZXJvQml0cygpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7dmFyIHI9MDtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dmFyIGI9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7cis9YjtpZihiIT09MjYpYnJlYWt9cmV0dXJuIHJ9O0JOLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uIGJ5dGVMZW5ndGgoKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9O0JOLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24gdG9Ud29zKHdpZHRoKXtpZih0aGlzLm5lZ2F0aXZlIT09MCl7cmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpfXJldHVybiB0aGlzLmNsb25lKCl9O0JOLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbiBmcm9tVHdvcyh3aWR0aCl7aWYodGhpcy50ZXN0bih3aWR0aC0xKSl7cmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpfXJldHVybiB0aGlzLmNsb25lKCl9O0JOLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbiBpc05lZygpe3JldHVybiB0aGlzLm5lZ2F0aXZlIT09MH07Qk4ucHJvdG90eXBlLm5lZz1mdW5jdGlvbiBuZWcoKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX07Qk4ucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24gaW5lZygpe2lmKCF0aGlzLmlzWmVybygpKXt0aGlzLm5lZ2F0aXZlXj0xfXJldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbiBpdW9yKG51bSl7d2hpbGUodGhpcy5sZW5ndGg8bnVtLmxlbmd0aCl7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wfWZvcih2YXIgaT0wO2k8bnVtLmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09dGhpcy53b3Jkc1tpXXxudW0ud29yZHNbaV19cmV0dXJuIHRoaXMuX3N0cmlwKCl9O0JOLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24gaW9yKG51bSl7YXNzZXJ0KCh0aGlzLm5lZ2F0aXZlfG51bS5uZWdhdGl2ZSk9PT0wKTtyZXR1cm4gdGhpcy5pdW9yKG51bSl9O0JOLnByb3RvdHlwZS5vcj1mdW5jdGlvbiBvcihudW0pe2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtyZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpfTtCTi5wcm90b3R5cGUudW9yPWZ1bmN0aW9uIHVvcihudW0pe2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7cmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyl9O0JOLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbiBpdWFuZChudW0pe3ZhciBiO2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpe2I9bnVtfWVsc2V7Yj10aGlzfWZvcih2YXIgaT0wO2k8Yi5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPXRoaXMud29yZHNbaV0mbnVtLndvcmRzW2ldfXRoaXMubGVuZ3RoPWIubGVuZ3RoO3JldHVybiB0aGlzLl9zdHJpcCgpfTtCTi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbiBpYW5kKG51bSl7YXNzZXJ0KCh0aGlzLm5lZ2F0aXZlfG51bS5uZWdhdGl2ZSk9PT0wKTtyZXR1cm4gdGhpcy5pdWFuZChudW0pfTtCTi5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uIGFuZChudW0pe2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKG51bSk7cmV0dXJuIG51bS5jbG9uZSgpLmlhbmQodGhpcyl9O0JOLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uIHVhbmQobnVtKXtpZih0aGlzLmxlbmd0aD5udW0ubGVuZ3RoKXJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtyZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyl9O0JOLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbiBpdXhvcihudW0pe3ZhciBhO3ZhciBiO2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpe2E9dGhpcztiPW51bX1lbHNle2E9bnVtO2I9dGhpc31mb3IodmFyIGk9MDtpPGIubGVuZ3RoO2krKyl7dGhpcy53b3Jkc1tpXT1hLndvcmRzW2ldXmIud29yZHNbaV19aWYodGhpcyE9PWEpe2Zvcig7aTxhLmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09YS53b3Jkc1tpXX19dGhpcy5sZW5ndGg9YS5sZW5ndGg7cmV0dXJuIHRoaXMuX3N0cmlwKCl9O0JOLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uIGl4b3IobnVtKXthc3NlcnQoKHRoaXMubmVnYXRpdmV8bnVtLm5lZ2F0aXZlKT09PTApO3JldHVybiB0aGlzLml1eG9yKG51bSl9O0JOLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24geG9yKG51bSl7aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aClyZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtyZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKX07Qk4ucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24gdXhvcihudW0pe2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO3JldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKX07Qk4ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uIGlub3RuKHdpZHRoKXthc3NlcnQodHlwZW9mIHdpZHRoPT09Im51bWJlciImJndpZHRoPj0wKTt2YXIgYnl0ZXNOZWVkZWQ9TWF0aC5jZWlsKHdpZHRoLzI2KXwwO3ZhciBiaXRzTGVmdD13aWR0aCUyNjt0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO2lmKGJpdHNMZWZ0PjApe2J5dGVzTmVlZGVkLS19Zm9yKHZhciBpPTA7aTxieXRlc05lZWRlZDtpKyspe3RoaXMud29yZHNbaV09fnRoaXMud29yZHNbaV0mNjcxMDg4NjN9aWYoYml0c0xlZnQ+MCl7dGhpcy53b3Jkc1tpXT1+dGhpcy53b3Jkc1tpXSY2NzEwODg2Mz4+MjYtYml0c0xlZnR9cmV0dXJuIHRoaXMuX3N0cmlwKCl9O0JOLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uIG5vdG4od2lkdGgpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpfTtCTi5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbiBzZXRuKGJpdCx2YWwpe2Fzc2VydCh0eXBlb2YgYml0PT09Im51bWJlciImJmJpdD49MCk7dmFyIG9mZj1iaXQvMjZ8MDt2YXIgd2JpdD1iaXQlMjY7dGhpcy5fZXhwYW5kKG9mZisxKTtpZih2YWwpe3RoaXMud29yZHNbb2ZmXT10aGlzLndvcmRzW29mZl18MTw8d2JpdH1lbHNle3RoaXMud29yZHNbb2ZmXT10aGlzLndvcmRzW29mZl0mfigxPDx3Yml0KX1yZXR1cm4gdGhpcy5fc3RyaXAoKX07Qk4ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24gaWFkZChudW0pe3ZhciByO2lmKHRoaXMubmVnYXRpdmUhPT0wJiZudW0ubmVnYXRpdmU9PT0wKXt0aGlzLm5lZ2F0aXZlPTA7cj10aGlzLmlzdWIobnVtKTt0aGlzLm5lZ2F0aXZlXj0xO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfWVsc2UgaWYodGhpcy5uZWdhdGl2ZT09PTAmJm51bS5uZWdhdGl2ZSE9PTApe251bS5uZWdhdGl2ZT0wO3I9dGhpcy5pc3ViKG51bSk7bnVtLm5lZ2F0aXZlPTE7cmV0dXJuIHIuX25vcm1TaWduKCl9dmFyIGEsYjtpZih0aGlzLmxlbmd0aD5udW0ubGVuZ3RoKXthPXRoaXM7Yj1udW19ZWxzZXthPW51bTtiPXRoaXN9dmFyIGNhcnJ5PTA7Zm9yKHZhciBpPTA7aTxiLmxlbmd0aDtpKyspe3I9KGEud29yZHNbaV18MCkrKGIud29yZHNbaV18MCkrY2Fycnk7dGhpcy53b3Jkc1tpXT1yJjY3MTA4ODYzO2NhcnJ5PXI+Pj4yNn1mb3IoO2NhcnJ5IT09MCYmaTxhLmxlbmd0aDtpKyspe3I9KGEud29yZHNbaV18MCkrY2Fycnk7dGhpcy53b3Jkc1tpXT1yJjY3MTA4ODYzO2NhcnJ5PXI+Pj4yNn10aGlzLmxlbmd0aD1hLmxlbmd0aDtpZihjYXJyeSE9PTApe3RoaXMud29yZHNbdGhpcy5sZW5ndGhdPWNhcnJ5O3RoaXMubGVuZ3RoKyt9ZWxzZSBpZihhIT09dGhpcyl7Zm9yKDtpPGEubGVuZ3RoO2krKyl7dGhpcy53b3Jkc1tpXT1hLndvcmRzW2ldfX1yZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbiBhZGQobnVtKXt2YXIgcmVzO2lmKG51bS5uZWdhdGl2ZSE9PTAmJnRoaXMubmVnYXRpdmU9PT0wKXtudW0ubmVnYXRpdmU9MDtyZXM9dGhpcy5zdWIobnVtKTtudW0ubmVnYXRpdmVePTE7cmV0dXJuIHJlc31lbHNlIGlmKG51bS5uZWdhdGl2ZT09PTAmJnRoaXMubmVnYXRpdmUhPT0wKXt0aGlzLm5lZ2F0aXZlPTA7cmVzPW51bS5zdWIodGhpcyk7dGhpcy5uZWdhdGl2ZT0xO3JldHVybiByZXN9aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aClyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtyZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKX07Qk4ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24gaXN1YihudW0pe2lmKG51bS5uZWdhdGl2ZSE9PTApe251bS5uZWdhdGl2ZT0wO3ZhciByPXRoaXMuaWFkZChudW0pO251bS5uZWdhdGl2ZT0xO3JldHVybiByLl9ub3JtU2lnbigpfWVsc2UgaWYodGhpcy5uZWdhdGl2ZSE9PTApe3RoaXMubmVnYXRpdmU9MDt0aGlzLmlhZGQobnVtKTt0aGlzLm5lZ2F0aXZlPTE7cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9dmFyIGNtcD10aGlzLmNtcChudW0pO2lmKGNtcD09PTApe3RoaXMubmVnYXRpdmU9MDt0aGlzLmxlbmd0aD0xO3RoaXMud29yZHNbMF09MDtyZXR1cm4gdGhpc312YXIgYSxiO2lmKGNtcD4wKXthPXRoaXM7Yj1udW19ZWxzZXthPW51bTtiPXRoaXN9dmFyIGNhcnJ5PTA7Zm9yKHZhciBpPTA7aTxiLmxlbmd0aDtpKyspe3I9KGEud29yZHNbaV18MCktKGIud29yZHNbaV18MCkrY2Fycnk7Y2Fycnk9cj4+MjY7dGhpcy53b3Jkc1tpXT1yJjY3MTA4ODYzfWZvcig7Y2FycnkhPT0wJiZpPGEubGVuZ3RoO2krKyl7cj0oYS53b3Jkc1tpXXwwKStjYXJyeTtjYXJyeT1yPj4yNjt0aGlzLndvcmRzW2ldPXImNjcxMDg4NjN9aWYoY2Fycnk9PT0wJiZpPGEubGVuZ3RoJiZhIT09dGhpcyl7Zm9yKDtpPGEubGVuZ3RoO2krKyl7dGhpcy53b3Jkc1tpXT1hLndvcmRzW2ldfX10aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxpKTtpZihhIT09dGhpcyl7dGhpcy5uZWdhdGl2ZT0xfXJldHVybiB0aGlzLl9zdHJpcCgpfTtCTi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uIHN1YihudW0pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pfTtmdW5jdGlvbiBzbWFsbE11bFRvKHNlbGYsbnVtLG91dCl7b3V0Lm5lZ2F0aXZlPW51bS5uZWdhdGl2ZV5zZWxmLm5lZ2F0aXZlO3ZhciBsZW49c2VsZi5sZW5ndGgrbnVtLmxlbmd0aHwwO291dC5sZW5ndGg9bGVuO2xlbj1sZW4tMXwwO3ZhciBhPXNlbGYud29yZHNbMF18MDt2YXIgYj1udW0ud29yZHNbMF18MDt2YXIgcj1hKmI7dmFyIGxvPXImNjcxMDg4NjM7dmFyIGNhcnJ5PXIvNjcxMDg4NjR8MDtvdXQud29yZHNbMF09bG87Zm9yKHZhciBrPTE7azxsZW47aysrKXt2YXIgbmNhcnJ5PWNhcnJ5Pj4+MjY7dmFyIHJ3b3JkPWNhcnJ5JjY3MTA4ODYzO3ZhciBtYXhKPU1hdGgubWluKGssbnVtLmxlbmd0aC0xKTtmb3IodmFyIGo9TWF0aC5tYXgoMCxrLXNlbGYubGVuZ3RoKzEpO2o8PW1heEo7aisrKXt2YXIgaT1rLWp8MDthPXNlbGYud29yZHNbaV18MDtiPW51bS53b3Jkc1tqXXwwO3I9YSpiK3J3b3JkO25jYXJyeSs9ci82NzEwODg2NHwwO3J3b3JkPXImNjcxMDg4NjN9b3V0LndvcmRzW2tdPXJ3b3JkfDA7Y2Fycnk9bmNhcnJ5fDB9aWYoY2FycnkhPT0wKXtvdXQud29yZHNba109Y2Fycnl8MH1lbHNle291dC5sZW5ndGgtLX1yZXR1cm4gb3V0Ll9zdHJpcCgpfXZhciBjb21iMTBNdWxUbz1mdW5jdGlvbiBjb21iMTBNdWxUbyhzZWxmLG51bSxvdXQpe3ZhciBhPXNlbGYud29yZHM7dmFyIGI9bnVtLndvcmRzO3ZhciBvPW91dC53b3Jkczt2YXIgYz0wO3ZhciBsbzt2YXIgbWlkO3ZhciBoaTt2YXIgYTA9YVswXXwwO3ZhciBhbDA9YTAmODE5MTt2YXIgYWgwPWEwPj4+MTM7dmFyIGExPWFbMV18MDt2YXIgYWwxPWExJjgxOTE7dmFyIGFoMT1hMT4+PjEzO3ZhciBhMj1hWzJdfDA7dmFyIGFsMj1hMiY4MTkxO3ZhciBhaDI9YTI+Pj4xMzt2YXIgYTM9YVszXXwwO3ZhciBhbDM9YTMmODE5MTt2YXIgYWgzPWEzPj4+MTM7dmFyIGE0PWFbNF18MDt2YXIgYWw0PWE0JjgxOTE7dmFyIGFoND1hND4+PjEzO3ZhciBhNT1hWzVdfDA7dmFyIGFsNT1hNSY4MTkxO3ZhciBhaDU9YTU+Pj4xMzt2YXIgYTY9YVs2XXwwO3ZhciBhbDY9YTYmODE5MTt2YXIgYWg2PWE2Pj4+MTM7dmFyIGE3PWFbN118MDt2YXIgYWw3PWE3JjgxOTE7dmFyIGFoNz1hNz4+PjEzO3ZhciBhOD1hWzhdfDA7dmFyIGFsOD1hOCY4MTkxO3ZhciBhaDg9YTg+Pj4xMzt2YXIgYTk9YVs5XXwwO3ZhciBhbDk9YTkmODE5MTt2YXIgYWg5PWE5Pj4+MTM7dmFyIGIwPWJbMF18MDt2YXIgYmwwPWIwJjgxOTE7dmFyIGJoMD1iMD4+PjEzO3ZhciBiMT1iWzFdfDA7dmFyIGJsMT1iMSY4MTkxO3ZhciBiaDE9YjE+Pj4xMzt2YXIgYjI9YlsyXXwwO3ZhciBibDI9YjImODE5MTt2YXIgYmgyPWIyPj4+MTM7dmFyIGIzPWJbM118MDt2YXIgYmwzPWIzJjgxOTE7dmFyIGJoMz1iMz4+PjEzO3ZhciBiND1iWzRdfDA7dmFyIGJsND1iNCY4MTkxO3ZhciBiaDQ9YjQ+Pj4xMzt2YXIgYjU9Yls1XXwwO3ZhciBibDU9YjUmODE5MTt2YXIgYmg1PWI1Pj4+MTM7dmFyIGI2PWJbNl18MDt2YXIgYmw2PWI2JjgxOTE7dmFyIGJoNj1iNj4+PjEzO3ZhciBiNz1iWzddfDA7dmFyIGJsNz1iNyY4MTkxO3ZhciBiaDc9Yjc+Pj4xMzt2YXIgYjg9Yls4XXwwO3ZhciBibDg9YjgmODE5MTt2YXIgYmg4PWI4Pj4+MTM7dmFyIGI5PWJbOV18MDt2YXIgYmw5PWI5JjgxOTE7dmFyIGJoOT1iOT4+PjEzO291dC5uZWdhdGl2ZT1zZWxmLm5lZ2F0aXZlXm51bS5uZWdhdGl2ZTtvdXQubGVuZ3RoPTE5O2xvPU1hdGguaW11bChhbDAsYmwwKTttaWQ9TWF0aC5pbXVsKGFsMCxiaDApO21pZD1taWQrTWF0aC5pbXVsKGFoMCxibDApfDA7aGk9TWF0aC5pbXVsKGFoMCxiaDApO3ZhciB3MD0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzA+Pj4yNil8MDt3MCY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsMSxibDApO21pZD1NYXRoLmltdWwoYWwxLGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWgxLGJsMCl8MDtoaT1NYXRoLmltdWwoYWgxLGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsMCxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDAsYmgxKXwwO3ZhciB3MT0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzE+Pj4yNil8MDt3MSY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsMixibDApO21pZD1NYXRoLmltdWwoYWwyLGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsMCl8MDtoaT1NYXRoLmltdWwoYWgyLGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsMSxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwxLGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDEsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDEsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDAsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMCxiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgwLGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWgwLGJoMil8MDt2YXIgdzI9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcyPj4+MjYpfDA7dzImPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDMsYmwwKTttaWQ9TWF0aC5pbXVsKGFsMyxiaDApO21pZD1taWQrTWF0aC5pbXVsKGFoMyxibDApfDA7aGk9TWF0aC5pbXVsKGFoMyxiaDApO2xvPWxvK01hdGguaW11bChhbDIsYmwxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsMSl8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoMSl8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsMil8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmgyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDIpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDIpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoMyl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmwzKXwwO2hpPWhpK01hdGguaW11bChhaDAsYmgzKXwwO3ZhciB3Mz0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzM+Pj4yNil8MDt3MyY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsNCxibDApO21pZD1NYXRoLmltdWwoYWw0LGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWg0LGJsMCl8MDtoaT1NYXRoLmltdWwoYWg0LGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsMyxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDMsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDIsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoMil8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsMyl8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmgzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDMpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDMpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoNCl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmw0KXwwO2hpPWhpK01hdGguaW11bChhaDAsYmg0KXwwO3ZhciB3ND0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzQ+Pj4yNil8MDt3NCY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsNSxibDApO21pZD1NYXRoLmltdWwoYWw1LGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsMCl8MDtoaT1NYXRoLmltdWwoYWg1LGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsNCxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw0LGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDQsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDQsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDMsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMyxiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgzLGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWgzLGJoMil8MDtsbz1sbytNYXRoLmltdWwoYWwyLGJsMyl8MDttaWQ9bWlkK01hdGguaW11bChhbDIsYmgzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMixibDMpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMixiaDMpfDA7bG89bG8rTWF0aC5pbXVsKGFsMSxibDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwxLGJoNCl8MDttaWQ9bWlkK01hdGguaW11bChhaDEsYmw0KXwwO2hpPWhpK01hdGguaW11bChhaDEsYmg0KXwwO2xvPWxvK01hdGguaW11bChhbDAsYmw1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMCxiaDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgwLGJsNSl8MDtoaT1oaStNYXRoLmltdWwoYWgwLGJoNSl8MDt2YXIgdzU9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHc1Pj4+MjYpfDA7dzUmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDYsYmwwKTttaWQ9TWF0aC5pbXVsKGFsNixiaDApO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDApfDA7aGk9TWF0aC5pbXVsKGFoNixiaDApO2xvPWxvK01hdGguaW11bChhbDUsYmwxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsMSl8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoMSl8MDtsbz1sbytNYXRoLmltdWwoYWw0LGJsMil8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmgyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDIpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDIpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoMyl8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmwzKXwwO2hpPWhpK01hdGguaW11bChhaDMsYmgzKXwwO2xvPWxvK01hdGguaW11bChhbDIsYmw0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsNCl8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoNCl8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsNSl8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmg1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDUpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDUpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoNil8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmw2KXwwO2hpPWhpK01hdGguaW11bChhaDAsYmg2KXwwO3ZhciB3Nj0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzY+Pj4yNil8MDt3NiY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsNyxibDApO21pZD1NYXRoLmltdWwoYWw3LGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsMCl8MDtoaT1NYXRoLmltdWwoYWg3LGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsNixibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDYsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDUsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoMil8MDtsbz1sbytNYXRoLmltdWwoYWw0LGJsMyl8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmgzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDMpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDMpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoNCl8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmw0KXwwO2hpPWhpK01hdGguaW11bChhaDMsYmg0KXwwO2xvPWxvK01hdGguaW11bChhbDIsYmw1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsNSl8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoNSl8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsNil8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmg2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDYpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDYpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoNyl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmw3KXwwO2hpPWhpK01hdGguaW11bChhaDAsYmg3KXwwO3ZhciB3Nz0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzc+Pj4yNil8MDt3NyY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOCxibDApO21pZD1NYXRoLmltdWwoYWw4LGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsMCl8MDtoaT1NYXRoLmltdWwoYWg4LGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsNyxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw3LGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDcsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDcsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDYsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNixiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg2LGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWg2LGJoMil8MDtsbz1sbytNYXRoLmltdWwoYWw1LGJsMyl8MDttaWQ9bWlkK01hdGguaW11bChhbDUsYmgzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNSxibDMpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNSxiaDMpfDA7bG89bG8rTWF0aC5pbXVsKGFsNCxibDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw0LGJoNCl8MDttaWQ9bWlkK01hdGguaW11bChhaDQsYmw0KXwwO2hpPWhpK01hdGguaW11bChhaDQsYmg0KXwwO2xvPWxvK01hdGguaW11bChhbDMsYmw1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMyxiaDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgzLGJsNSl8MDtoaT1oaStNYXRoLmltdWwoYWgzLGJoNSl8MDtsbz1sbytNYXRoLmltdWwoYWwyLGJsNil8MDttaWQ9bWlkK01hdGguaW11bChhbDIsYmg2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMixibDYpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMixiaDYpfDA7bG89bG8rTWF0aC5pbXVsKGFsMSxibDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwxLGJoNyl8MDttaWQ9bWlkK01hdGguaW11bChhaDEsYmw3KXwwO2hpPWhpK01hdGguaW11bChhaDEsYmg3KXwwO2xvPWxvK01hdGguaW11bChhbDAsYmw4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMCxiaDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgwLGJsOCl8MDtoaT1oaStNYXRoLmltdWwoYWgwLGJoOCl8MDt2YXIgdzg9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHc4Pj4+MjYpfDA7dzgmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmwwKTttaWQ9TWF0aC5pbXVsKGFsOSxiaDApO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDApfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDApO2xvPWxvK01hdGguaW11bChhbDgsYmwxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsMSl8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoMSl8MDtsbz1sbytNYXRoLmltdWwoYWw3LGJsMil8MDttaWQ9bWlkK01hdGguaW11bChhbDcsYmgyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNyxibDIpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNyxiaDIpfDA7bG89bG8rTWF0aC5pbXVsKGFsNixibDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoMyl8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmwzKXwwO2hpPWhpK01hdGguaW11bChhaDYsYmgzKXwwO2xvPWxvK01hdGguaW11bChhbDUsYmw0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsNCl8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoNCl8MDtsbz1sbytNYXRoLmltdWwoYWw0LGJsNSl8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmg1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDUpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDUpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoNil8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmw2KXwwO2hpPWhpK01hdGguaW11bChhaDMsYmg2KXwwO2xvPWxvK01hdGguaW11bChhbDIsYmw3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsNyl8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoNyl8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsOCl8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmg4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDgpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDgpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDAsYmg5KXwwO3ZhciB3OT0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzk+Pj4yNil8MDt3OSY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDEpO21pZD1NYXRoLmltdWwoYWw5LGJoMSk7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsMSl8MDtoaT1NYXRoLmltdWwoYWg5LGJoMSk7bG89bG8rTWF0aC5pbXVsKGFsOCxibDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoMil8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmwyKXwwO2hpPWhpK01hdGguaW11bChhaDgsYmgyKXwwO2xvPWxvK01hdGguaW11bChhbDcsYmwzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNyxiaDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsMyl8MDtoaT1oaStNYXRoLmltdWwoYWg3LGJoMyl8MDtsbz1sbytNYXRoLmltdWwoYWw2LGJsNCl8MDttaWQ9bWlkK01hdGguaW11bChhbDYsYmg0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDQpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNixiaDQpfDA7bG89bG8rTWF0aC5pbXVsKGFsNSxibDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw1LGJoNSl8MDttaWQ9bWlkK01hdGguaW11bChhaDUsYmw1KXwwO2hpPWhpK01hdGguaW11bChhaDUsYmg1KXwwO2xvPWxvK01hdGguaW11bChhbDQsYmw2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNCxiaDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg0LGJsNil8MDtoaT1oaStNYXRoLmltdWwoYWg0LGJoNil8MDtsbz1sbytNYXRoLmltdWwoYWwzLGJsNyl8MDttaWQ9bWlkK01hdGguaW11bChhbDMsYmg3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMyxibDcpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMyxiaDcpfDA7bG89bG8rTWF0aC5pbXVsKGFsMixibDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwyLGJoOCl8MDttaWQ9bWlkK01hdGguaW11bChhaDIsYmw4KXwwO2hpPWhpK01hdGguaW11bChhaDIsYmg4KXwwO2xvPWxvK01hdGguaW11bChhbDEsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMSxiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgxLGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWgxLGJoOSl8MDt2YXIgdzEwPShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTA+Pj4yNil8MDt3MTAmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmwyKTttaWQ9TWF0aC5pbXVsKGFsOSxiaDIpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDIpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDIpO2xvPWxvK01hdGguaW11bChhbDgsYmwzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsMyl8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoMyl8MDtsbz1sbytNYXRoLmltdWwoYWw3LGJsNCl8MDttaWQ9bWlkK01hdGguaW11bChhbDcsYmg0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNyxibDQpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNyxiaDQpfDA7bG89bG8rTWF0aC5pbXVsKGFsNixibDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoNSl8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmw1KXwwO2hpPWhpK01hdGguaW11bChhaDYsYmg1KXwwO2xvPWxvK01hdGguaW11bChhbDUsYmw2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsNil8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoNil8MDtsbz1sbytNYXRoLmltdWwoYWw0LGJsNyl8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmg3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDcpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDcpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoOCl8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmw4KXwwO2hpPWhpK01hdGguaW11bChhaDMsYmg4KXwwO2xvPWxvK01hdGguaW11bChhbDIsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoOSl8MDt2YXIgdzExPShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTE+Pj4yNil8MDt3MTEmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmwzKTttaWQ9TWF0aC5pbXVsKGFsOSxiaDMpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDMpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDMpO2xvPWxvK01hdGguaW11bChhbDgsYmw0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsNCl8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoNCl8MDtsbz1sbytNYXRoLmltdWwoYWw3LGJsNSl8MDttaWQ9bWlkK01hdGguaW11bChhbDcsYmg1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNyxibDUpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNyxiaDUpfDA7bG89bG8rTWF0aC5pbXVsKGFsNixibDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoNil8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmw2KXwwO2hpPWhpK01hdGguaW11bChhaDYsYmg2KXwwO2xvPWxvK01hdGguaW11bChhbDUsYmw3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsNyl8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoNyl8MDtsbz1sbytNYXRoLmltdWwoYWw0LGJsOCl8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmg4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDgpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDgpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDMsYmg5KXwwO3ZhciB3MTI9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxMj4+PjI2KXwwO3cxMiY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDQpO21pZD1NYXRoLmltdWwoYWw5LGJoNCk7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsNCl8MDtoaT1NYXRoLmltdWwoYWg5LGJoNCk7bG89bG8rTWF0aC5pbXVsKGFsOCxibDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoNSl8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmw1KXwwO2hpPWhpK01hdGguaW11bChhaDgsYmg1KXwwO2xvPWxvK01hdGguaW11bChhbDcsYmw2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNyxiaDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsNil8MDtoaT1oaStNYXRoLmltdWwoYWg3LGJoNil8MDtsbz1sbytNYXRoLmltdWwoYWw2LGJsNyl8MDttaWQ9bWlkK01hdGguaW11bChhbDYsYmg3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDcpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNixiaDcpfDA7bG89bG8rTWF0aC5pbXVsKGFsNSxibDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw1LGJoOCl8MDttaWQ9bWlkK01hdGguaW11bChhaDUsYmw4KXwwO2hpPWhpK01hdGguaW11bChhaDUsYmg4KXwwO2xvPWxvK01hdGguaW11bChhbDQsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNCxiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg0LGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWg0LGJoOSl8MDt2YXIgdzEzPShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTM+Pj4yNil8MDt3MTMmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmw1KTttaWQ9TWF0aC5pbXVsKGFsOSxiaDUpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDUpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDUpO2xvPWxvK01hdGguaW11bChhbDgsYmw2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsNil8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoNil8MDtsbz1sbytNYXRoLmltdWwoYWw3LGJsNyl8MDttaWQ9bWlkK01hdGguaW11bChhbDcsYmg3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNyxibDcpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNyxiaDcpfDA7bG89bG8rTWF0aC5pbXVsKGFsNixibDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoOCl8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmw4KXwwO2hpPWhpK01hdGguaW11bChhaDYsYmg4KXwwO2xvPWxvK01hdGguaW11bChhbDUsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoOSl8MDt2YXIgdzE0PShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTQ+Pj4yNil8MDt3MTQmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmw2KTttaWQ9TWF0aC5pbXVsKGFsOSxiaDYpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDYpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDYpO2xvPWxvK01hdGguaW11bChhbDgsYmw3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsNyl8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoNyl8MDtsbz1sbytNYXRoLmltdWwoYWw3LGJsOCl8MDttaWQ9bWlkK01hdGguaW11bChhbDcsYmg4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNyxibDgpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNyxiaDgpfDA7bG89bG8rTWF0aC5pbXVsKGFsNixibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDYsYmg5KXwwO3ZhciB3MTU9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxNT4+PjI2KXwwO3cxNSY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDcpO21pZD1NYXRoLmltdWwoYWw5LGJoNyk7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsNyl8MDtoaT1NYXRoLmltdWwoYWg5LGJoNyk7bG89bG8rTWF0aC5pbXVsKGFsOCxibDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoOCl8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmw4KXwwO2hpPWhpK01hdGguaW11bChhaDgsYmg4KXwwO2xvPWxvK01hdGguaW11bChhbDcsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNyxiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWg3LGJoOSl8MDt2YXIgdzE2PShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTY+Pj4yNil8MDt3MTYmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmw4KTttaWQ9TWF0aC5pbXVsKGFsOSxiaDgpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDgpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDgpO2xvPWxvK01hdGguaW11bChhbDgsYmw5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsOCxiaDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg4LGJsOSl8MDtoaT1oaStNYXRoLmltdWwoYWg4LGJoOSl8MDt2YXIgdzE3PShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MTc+Pj4yNil8MDt3MTcmPTY3MTA4ODYzO2xvPU1hdGguaW11bChhbDksYmw5KTttaWQ9TWF0aC5pbXVsKGFsOSxiaDkpO21pZD1taWQrTWF0aC5pbXVsKGFoOSxibDkpfDA7aGk9TWF0aC5pbXVsKGFoOSxiaDkpO3ZhciB3MTg9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxOD4+PjI2KXwwO3cxOCY9NjcxMDg4NjM7b1swXT13MDtvWzFdPXcxO29bMl09dzI7b1szXT13MztvWzRdPXc0O29bNV09dzU7b1s2XT13NjtvWzddPXc3O29bOF09dzg7b1s5XT13OTtvWzEwXT13MTA7b1sxMV09dzExO29bMTJdPXcxMjtvWzEzXT13MTM7b1sxNF09dzE0O29bMTVdPXcxNTtvWzE2XT13MTY7b1sxN109dzE3O29bMThdPXcxODtpZihjIT09MCl7b1sxOV09YztvdXQubGVuZ3RoKyt9cmV0dXJuIG91dH07aWYoIU1hdGguaW11bCl7Y29tYjEwTXVsVG89c21hbGxNdWxUb31mdW5jdGlvbiBiaWdNdWxUbyhzZWxmLG51bSxvdXQpe291dC5uZWdhdGl2ZT1udW0ubmVnYXRpdmVec2VsZi5uZWdhdGl2ZTtvdXQubGVuZ3RoPXNlbGYubGVuZ3RoK251bS5sZW5ndGg7dmFyIGNhcnJ5PTA7dmFyIGhuY2Fycnk9MDtmb3IodmFyIGs9MDtrPG91dC5sZW5ndGgtMTtrKyspe3ZhciBuY2Fycnk9aG5jYXJyeTtobmNhcnJ5PTA7dmFyIHJ3b3JkPWNhcnJ5JjY3MTA4ODYzO3ZhciBtYXhKPU1hdGgubWluKGssbnVtLmxlbmd0aC0xKTtmb3IodmFyIGo9TWF0aC5tYXgoMCxrLXNlbGYubGVuZ3RoKzEpO2o8PW1heEo7aisrKXt2YXIgaT1rLWo7dmFyIGE9c2VsZi53b3Jkc1tpXXwwO3ZhciBiPW51bS53b3Jkc1tqXXwwO3ZhciByPWEqYjt2YXIgbG89ciY2NzEwODg2MztuY2Fycnk9bmNhcnJ5KyhyLzY3MTA4ODY0fDApfDA7bG89bG8rcndvcmR8MDtyd29yZD1sbyY2NzEwODg2MztuY2Fycnk9bmNhcnJ5Kyhsbz4+PjI2KXwwO2huY2FycnkrPW5jYXJyeT4+PjI2O25jYXJyeSY9NjcxMDg4NjN9b3V0LndvcmRzW2tdPXJ3b3JkO2NhcnJ5PW5jYXJyeTtuY2Fycnk9aG5jYXJyeX1pZihjYXJyeSE9PTApe291dC53b3Jkc1trXT1jYXJyeX1lbHNle291dC5sZW5ndGgtLX1yZXR1cm4gb3V0Ll9zdHJpcCgpfWZ1bmN0aW9uIGp1bWJvTXVsVG8oc2VsZixudW0sb3V0KXtyZXR1cm4gYmlnTXVsVG8oc2VsZixudW0sb3V0KX1CTi5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24gbXVsVG8obnVtLG91dCl7dmFyIHJlczt2YXIgbGVuPXRoaXMubGVuZ3RoK251bS5sZW5ndGg7aWYodGhpcy5sZW5ndGg9PT0xMCYmbnVtLmxlbmd0aD09PTEwKXtyZXM9Y29tYjEwTXVsVG8odGhpcyxudW0sb3V0KX1lbHNlIGlmKGxlbjw2Myl7cmVzPXNtYWxsTXVsVG8odGhpcyxudW0sb3V0KX1lbHNlIGlmKGxlbjwxMDI0KXtyZXM9YmlnTXVsVG8odGhpcyxudW0sb3V0KX1lbHNle3Jlcz1qdW1ib011bFRvKHRoaXMsbnVtLG91dCl9cmV0dXJuIHJlc307ZnVuY3Rpb24gRkZUTSh4LHkpe3RoaXMueD14O3RoaXMueT15fUZGVE0ucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24gbWFrZVJCVChOKXt2YXIgdD1uZXcgQXJyYXkoTik7dmFyIGw9Qk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTiktMTtmb3IodmFyIGk9MDtpPE47aSsrKXt0W2ldPXRoaXMucmV2QmluKGksbCxOKX1yZXR1cm4gdH07RkZUTS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uIHJldkJpbih4LGwsTil7aWYoeD09PTB8fHg9PT1OLTEpcmV0dXJuIHg7dmFyIHJiPTA7Zm9yKHZhciBpPTA7aTxsO2krKyl7cmJ8PSh4JjEpPDxsLWktMTt4Pj49MX1yZXR1cm4gcmJ9O0ZGVE0ucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24gcGVybXV0ZShyYnQscndzLGl3cyxydHdzLGl0d3MsTil7Zm9yKHZhciBpPTA7aTxOO2krKyl7cnR3c1tpXT1yd3NbcmJ0W2ldXTtpdHdzW2ldPWl3c1tyYnRbaV1dfX07RkZUTS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uIHRyYW5zZm9ybShyd3MsaXdzLHJ0d3MsaXR3cyxOLHJidCl7dGhpcy5wZXJtdXRlKHJidCxyd3MsaXdzLHJ0d3MsaXR3cyxOKTtmb3IodmFyIHM9MTtzPE47czw8PTEpe3ZhciBsPXM8PDE7dmFyIHJ0d2RmPU1hdGguY29zKDIqTWF0aC5QSS9sKTt2YXIgaXR3ZGY9TWF0aC5zaW4oMipNYXRoLlBJL2wpO2Zvcih2YXIgcD0wO3A8TjtwKz1sKXt2YXIgcnR3ZGZfPXJ0d2RmO3ZhciBpdHdkZl89aXR3ZGY7Zm9yKHZhciBqPTA7ajxzO2orKyl7dmFyIHJlPXJ0d3NbcCtqXTt2YXIgaWU9aXR3c1twK2pdO3ZhciBybz1ydHdzW3AraitzXTt2YXIgaW89aXR3c1twK2orc107dmFyIHJ4PXJ0d2RmXypyby1pdHdkZl8qaW87aW89cnR3ZGZfKmlvK2l0d2RmXypybztybz1yeDtydHdzW3Aral09cmUrcm87aXR3c1twK2pdPWllK2lvO3J0d3NbcCtqK3NdPXJlLXJvO2l0d3NbcCtqK3NdPWllLWlvO2lmKGohPT1sKXtyeD1ydHdkZipydHdkZl8taXR3ZGYqaXR3ZGZfO2l0d2RmXz1ydHdkZippdHdkZl8raXR3ZGYqcnR3ZGZfO3J0d2RmXz1yeH19fX19O0ZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uIGd1ZXNzTGVuMTNiKG4sbSl7dmFyIE49TWF0aC5tYXgobSxuKXwxO3ZhciBvZGQ9TiYxO3ZhciBpPTA7Zm9yKE49Ti8yfDA7TjtOPU4+Pj4xKXtpKyt9cmV0dXJuIDE8PGkrMStvZGR9O0ZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbiBjb25qdWdhdGUocndzLGl3cyxOKXtpZihOPD0xKXJldHVybjtmb3IodmFyIGk9MDtpPE4vMjtpKyspe3ZhciB0PXJ3c1tpXTtyd3NbaV09cndzW04taS0xXTtyd3NbTi1pLTFdPXQ7dD1pd3NbaV07aXdzW2ldPS1pd3NbTi1pLTFdO2l3c1tOLWktMV09LXR9fTtGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24gbm9ybWFsaXplMTNiKHdzLE4pe3ZhciBjYXJyeT0wO2Zvcih2YXIgaT0wO2k8Ti8yO2krKyl7dmFyIHc9TWF0aC5yb3VuZCh3c1syKmkrMV0vTikqODE5MitNYXRoLnJvdW5kKHdzWzIqaV0vTikrY2Fycnk7d3NbaV09dyY2NzEwODg2MztpZih3PDY3MTA4ODY0KXtjYXJyeT0wfWVsc2V7Y2Fycnk9dy82NzEwODg2NHwwfX1yZXR1cm4gd3N9O0ZGVE0ucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24gY29udmVydDEzYih3cyxsZW4scndzLE4pe3ZhciBjYXJyeT0wO2Zvcih2YXIgaT0wO2k8bGVuO2krKyl7Y2Fycnk9Y2FycnkrKHdzW2ldfDApO3J3c1syKmldPWNhcnJ5JjgxOTE7Y2Fycnk9Y2Fycnk+Pj4xMztyd3NbMippKzFdPWNhcnJ5JjgxOTE7Y2Fycnk9Y2Fycnk+Pj4xM31mb3IoaT0yKmxlbjtpPE47KytpKXtyd3NbaV09MH1hc3NlcnQoY2Fycnk9PT0wKTthc3NlcnQoKGNhcnJ5Jn44MTkxKT09PTApfTtGRlRNLnByb3RvdHlwZS5zdHViPWZ1bmN0aW9uIHN0dWIoTil7dmFyIHBoPW5ldyBBcnJheShOKTtmb3IodmFyIGk9MDtpPE47aSsrKXtwaFtpXT0wfXJldHVybiBwaH07RkZUTS5wcm90b3R5cGUubXVscD1mdW5jdGlvbiBtdWxwKHgseSxvdXQpe3ZhciBOPTIqdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCx5Lmxlbmd0aCk7dmFyIHJidD10aGlzLm1ha2VSQlQoTik7dmFyIF89dGhpcy5zdHViKE4pO3ZhciByd3M9bmV3IEFycmF5KE4pO3ZhciByd3N0PW5ldyBBcnJheShOKTt2YXIgaXdzdD1uZXcgQXJyYXkoTik7dmFyIG5yd3M9bmV3IEFycmF5KE4pO3ZhciBucndzdD1uZXcgQXJyYXkoTik7dmFyIG5pd3N0PW5ldyBBcnJheShOKTt2YXIgcm13cz1vdXQud29yZHM7cm13cy5sZW5ndGg9Tjt0aGlzLmNvbnZlcnQxM2IoeC53b3Jkcyx4Lmxlbmd0aCxyd3MsTik7dGhpcy5jb252ZXJ0MTNiKHkud29yZHMseS5sZW5ndGgsbnJ3cyxOKTt0aGlzLnRyYW5zZm9ybShyd3MsXyxyd3N0LGl3c3QsTixyYnQpO3RoaXMudHJhbnNmb3JtKG5yd3MsXyxucndzdCxuaXdzdCxOLHJidCk7Zm9yKHZhciBpPTA7aTxOO2krKyl7dmFyIHJ4PXJ3c3RbaV0qbnJ3c3RbaV0taXdzdFtpXSpuaXdzdFtpXTtpd3N0W2ldPXJ3c3RbaV0qbml3c3RbaV0raXdzdFtpXSpucndzdFtpXTtyd3N0W2ldPXJ4fXRoaXMuY29uanVnYXRlKHJ3c3QsaXdzdCxOKTt0aGlzLnRyYW5zZm9ybShyd3N0LGl3c3Qscm13cyxfLE4scmJ0KTt0aGlzLmNvbmp1Z2F0ZShybXdzLF8sTik7dGhpcy5ub3JtYWxpemUxM2Iocm13cyxOKTtvdXQubmVnYXRpdmU9eC5uZWdhdGl2ZV55Lm5lZ2F0aXZlO291dC5sZW5ndGg9eC5sZW5ndGgreS5sZW5ndGg7cmV0dXJuIG91dC5fc3RyaXAoKX07Qk4ucHJvdG90eXBlLm11bD1mdW5jdGlvbiBtdWwobnVtKXt2YXIgb3V0PW5ldyBCTihudWxsKTtvdXQud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK251bS5sZW5ndGgpO3JldHVybiB0aGlzLm11bFRvKG51bSxvdXQpfTtCTi5wcm90b3R5cGUubXVsZj1mdW5jdGlvbiBtdWxmKG51bSl7dmFyIG91dD1uZXcgQk4obnVsbCk7b3V0LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtudW0ubGVuZ3RoKTtyZXR1cm4ganVtYm9NdWxUbyh0aGlzLG51bSxvdXQpfTtCTi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbiBpbXVsKG51bSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sdGhpcyl9O0JOLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbiBpbXVsbihudW0pe3ZhciBpc05lZ051bT1udW08MDtpZihpc05lZ051bSludW09LW51bTthc3NlcnQodHlwZW9mIG51bT09PSJudW1iZXIiKTthc3NlcnQobnVtPDY3MTA4ODY0KTt2YXIgY2Fycnk9MDtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dmFyIHc9KHRoaXMud29yZHNbaV18MCkqbnVtO3ZhciBsbz0odyY2NzEwODg2MykrKGNhcnJ5JjY3MTA4ODYzKTtjYXJyeT4+PTI2O2NhcnJ5Kz13LzY3MTA4ODY0fDA7Y2FycnkrPWxvPj4+MjY7dGhpcy53b3Jkc1tpXT1sbyY2NzEwODg2M31pZihjYXJyeSE9PTApe3RoaXMud29yZHNbaV09Y2Fycnk7dGhpcy5sZW5ndGgrK31yZXR1cm4gaXNOZWdOdW0/dGhpcy5pbmVnKCk6dGhpc307Qk4ucHJvdG90eXBlLm11bG49ZnVuY3Rpb24gbXVsbihudW0pe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKX07Qk4ucHJvdG90eXBlLnNxcj1mdW5jdGlvbiBzcXIoKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9O0JOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uIGlzcXIoKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9O0JOLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24gcG93KG51bSl7dmFyIHc9dG9CaXRBcnJheShudW0pO2lmKHcubGVuZ3RoPT09MClyZXR1cm4gbmV3IEJOKDEpO3ZhciByZXM9dGhpcztmb3IodmFyIGk9MDtpPHcubGVuZ3RoO2krKyxyZXM9cmVzLnNxcigpKXtpZih3W2ldIT09MClicmVha31pZigrK2k8dy5sZW5ndGgpe2Zvcih2YXIgcT1yZXMuc3FyKCk7aTx3Lmxlbmd0aDtpKysscT1xLnNxcigpKXtpZih3W2ldPT09MCljb250aW51ZTtyZXM9cmVzLm11bChxKX19cmV0dXJuIHJlc307Qk4ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbiBpdXNobG4oYml0cyl7YXNzZXJ0KHR5cGVvZiBiaXRzPT09Im51bWJlciImJmJpdHM+PTApO3ZhciByPWJpdHMlMjY7dmFyIHM9KGJpdHMtcikvMjY7dmFyIGNhcnJ5TWFzaz02NzEwODg2Mz4+PjI2LXI8PDI2LXI7dmFyIGk7aWYociE9PTApe3ZhciBjYXJyeT0wO2ZvcihpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciBuZXdDYXJyeT10aGlzLndvcmRzW2ldJmNhcnJ5TWFzazt2YXIgYz0odGhpcy53b3Jkc1tpXXwwKS1uZXdDYXJyeTw8cjt0aGlzLndvcmRzW2ldPWN8Y2Fycnk7Y2Fycnk9bmV3Q2Fycnk+Pj4yNi1yfWlmKGNhcnJ5KXt0aGlzLndvcmRzW2ldPWNhcnJ5O3RoaXMubGVuZ3RoKyt9fWlmKHMhPT0wKXtmb3IoaT10aGlzLmxlbmd0aC0xO2k+PTA7aS0tKXt0aGlzLndvcmRzW2krc109dGhpcy53b3Jkc1tpXX1mb3IoaT0wO2k8cztpKyspe3RoaXMud29yZHNbaV09MH10aGlzLmxlbmd0aCs9c31yZXR1cm4gdGhpcy5fc3RyaXAoKX07Qk4ucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uIGlzaGxuKGJpdHMpe2Fzc2VydCh0aGlzLm5lZ2F0aXZlPT09MCk7cmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpfTtCTi5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uIGl1c2hybihiaXRzLGhpbnQsZXh0ZW5kZWQpe2Fzc2VydCh0eXBlb2YgYml0cz09PSJudW1iZXIiJiZiaXRzPj0wKTt2YXIgaDtpZihoaW50KXtoPShoaW50LWhpbnQlMjYpLzI2fWVsc2V7aD0wfXZhciByPWJpdHMlMjY7dmFyIHM9TWF0aC5taW4oKGJpdHMtcikvMjYsdGhpcy5sZW5ndGgpO3ZhciBtYXNrPTY3MTA4ODYzXjY3MTA4ODYzPj4+cjw8cjt2YXIgbWFza2VkV29yZHM9ZXh0ZW5kZWQ7aC09cztoPU1hdGgubWF4KDAsaCk7aWYobWFza2VkV29yZHMpe2Zvcih2YXIgaT0wO2k8cztpKyspe21hc2tlZFdvcmRzLndvcmRzW2ldPXRoaXMud29yZHNbaV19bWFza2VkV29yZHMubGVuZ3RoPXN9aWYocz09PTApe31lbHNlIGlmKHRoaXMubGVuZ3RoPnMpe3RoaXMubGVuZ3RoLT1zO2ZvcihpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09dGhpcy53b3Jkc1tpK3NdfX1lbHNle3RoaXMud29yZHNbMF09MDt0aGlzLmxlbmd0aD0xfXZhciBjYXJyeT0wO2ZvcihpPXRoaXMubGVuZ3RoLTE7aT49MCYmKGNhcnJ5IT09MHx8aT49aCk7aS0tKXt2YXIgd29yZD10aGlzLndvcmRzW2ldfDA7dGhpcy53b3Jkc1tpXT1jYXJyeTw8MjYtcnx3b3JkPj4+cjtjYXJyeT13b3JkJm1hc2t9aWYobWFza2VkV29yZHMmJmNhcnJ5IT09MCl7bWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdPWNhcnJ5fWlmKHRoaXMubGVuZ3RoPT09MCl7dGhpcy53b3Jkc1swXT0wO3RoaXMubGVuZ3RoPTF9cmV0dXJuIHRoaXMuX3N0cmlwKCl9O0JOLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbiBpc2hybihiaXRzLGhpbnQsZXh0ZW5kZWQpe2Fzc2VydCh0aGlzLm5lZ2F0aXZlPT09MCk7cmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsaGludCxleHRlbmRlZCl9O0JOLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uIHNobG4oYml0cyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKX07Qk4ucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uIHVzaGxuKGJpdHMpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpfTtCTi5wcm90b3R5cGUuc2hybj1mdW5jdGlvbiBzaHJuKGJpdHMpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyl9O0JOLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbiB1c2hybihiaXRzKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKX07Qk4ucHJvdG90eXBlLnRlc3RuPWZ1bmN0aW9uIHRlc3RuKGJpdCl7YXNzZXJ0KHR5cGVvZiBiaXQ9PT0ibnVtYmVyIiYmYml0Pj0wKTt2YXIgcj1iaXQlMjY7dmFyIHM9KGJpdC1yKS8yNjt2YXIgcT0xPDxyO2lmKHRoaXMubGVuZ3RoPD1zKXJldHVybiBmYWxzZTt2YXIgdz10aGlzLndvcmRzW3NdO3JldHVybiEhKHcmcSl9O0JOLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24gaW1hc2tuKGJpdHMpe2Fzc2VydCh0eXBlb2YgYml0cz09PSJudW1iZXIiJiZiaXRzPj0wKTt2YXIgcj1iaXRzJTI2O3ZhciBzPShiaXRzLXIpLzI2O2Fzc2VydCh0aGlzLm5lZ2F0aXZlPT09MCwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzIik7aWYodGhpcy5sZW5ndGg8PXMpe3JldHVybiB0aGlzfWlmKHIhPT0wKXtzKyt9dGhpcy5sZW5ndGg9TWF0aC5taW4ocyx0aGlzLmxlbmd0aCk7aWYociE9PTApe3ZhciBtYXNrPTY3MTA4ODYzXjY3MTA4ODYzPj4+cjw8cjt0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj1tYXNrfXJldHVybiB0aGlzLl9zdHJpcCgpfTtCTi5wcm90b3R5cGUubWFza249ZnVuY3Rpb24gbWFza24oYml0cyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYml0cyl9O0JOLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbiBpYWRkbihudW0pe2Fzc2VydCh0eXBlb2YgbnVtPT09Im51bWJlciIpO2Fzc2VydChudW08NjcxMDg4NjQpO2lmKG51bTwwKXJldHVybiB0aGlzLmlzdWJuKC1udW0pO2lmKHRoaXMubmVnYXRpdmUhPT0wKXtpZih0aGlzLmxlbmd0aD09PTEmJih0aGlzLndvcmRzWzBdfDApPD1udW0pe3RoaXMud29yZHNbMF09bnVtLSh0aGlzLndvcmRzWzBdfDApO3RoaXMubmVnYXRpdmU9MDtyZXR1cm4gdGhpc310aGlzLm5lZ2F0aXZlPTA7dGhpcy5pc3VibihudW0pO3RoaXMubmVnYXRpdmU9MTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5faWFkZG4obnVtKX07Qk4ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbiBfaWFkZG4obnVtKXt0aGlzLndvcmRzWzBdKz1udW07Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tpXT49NjcxMDg4NjQ7aSsrKXt0aGlzLndvcmRzW2ldLT02NzEwODg2NDtpZihpPT09dGhpcy5sZW5ndGgtMSl7dGhpcy53b3Jkc1tpKzFdPTF9ZWxzZXt0aGlzLndvcmRzW2krMV0rK319dGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsaSsxKTtyZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uIGlzdWJuKG51bSl7YXNzZXJ0KHR5cGVvZiBudW09PT0ibnVtYmVyIik7YXNzZXJ0KG51bTw2NzEwODg2NCk7aWYobnVtPDApcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7aWYodGhpcy5uZWdhdGl2ZSE9PTApe3RoaXMubmVnYXRpdmU9MDt0aGlzLmlhZGRuKG51bSk7dGhpcy5uZWdhdGl2ZT0xO3JldHVybiB0aGlzfXRoaXMud29yZHNbMF0tPW51bTtpZih0aGlzLmxlbmd0aD09PTEmJnRoaXMud29yZHNbMF08MCl7dGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXTt0aGlzLm5lZ2F0aXZlPTF9ZWxzZXtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2ldPDA7aSsrKXt0aGlzLndvcmRzW2ldKz02NzEwODg2NDt0aGlzLndvcmRzW2krMV0tPTF9fXJldHVybiB0aGlzLl9zdHJpcCgpfTtCTi5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbiBhZGRuKG51bSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pfTtCTi5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbiBzdWJuKG51bSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pfTtCTi5wcm90b3R5cGUuaWFicz1mdW5jdGlvbiBpYWJzKCl7dGhpcy5uZWdhdGl2ZT0wO3JldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uIGFicygpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfTtCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uIF9pc2hsbnN1Ym11bChudW0sbXVsLHNoaWZ0KXt2YXIgbGVuPW51bS5sZW5ndGgrc2hpZnQ7dmFyIGk7dGhpcy5fZXhwYW5kKGxlbik7dmFyIHc7dmFyIGNhcnJ5PTA7Zm9yKGk9MDtpPG51bS5sZW5ndGg7aSsrKXt3PSh0aGlzLndvcmRzW2krc2hpZnRdfDApK2NhcnJ5O3ZhciByaWdodD0obnVtLndvcmRzW2ldfDApKm11bDt3LT1yaWdodCY2NzEwODg2MztjYXJyeT0odz4+MjYpLShyaWdodC82NzEwODg2NHwwKTt0aGlzLndvcmRzW2krc2hpZnRdPXcmNjcxMDg4NjN9Zm9yKDtpPHRoaXMubGVuZ3RoLXNoaWZ0O2krKyl7dz0odGhpcy53b3Jkc1tpK3NoaWZ0XXwwKStjYXJyeTtjYXJyeT13Pj4yNjt0aGlzLndvcmRzW2krc2hpZnRdPXcmNjcxMDg4NjN9aWYoY2Fycnk9PT0wKXJldHVybiB0aGlzLl9zdHJpcCgpO2Fzc2VydChjYXJyeT09PS0xKTtjYXJyeT0wO2ZvcihpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3c9LSh0aGlzLndvcmRzW2ldfDApK2NhcnJ5O2NhcnJ5PXc+PjI2O3RoaXMud29yZHNbaV09dyY2NzEwODg2M310aGlzLm5lZ2F0aXZlPTE7cmV0dXJuIHRoaXMuX3N0cmlwKCl9O0JOLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbiBfd29yZERpdihudW0sbW9kZSl7dmFyIHNoaWZ0PXRoaXMubGVuZ3RoLW51bS5sZW5ndGg7dmFyIGE9dGhpcy5jbG9uZSgpO3ZhciBiPW51bTt2YXIgYmhpPWIud29yZHNbYi5sZW5ndGgtMV18MDt2YXIgYmhpQml0cz10aGlzLl9jb3VudEJpdHMoYmhpKTtzaGlmdD0yNi1iaGlCaXRzO2lmKHNoaWZ0IT09MCl7Yj1iLnVzaGxuKHNoaWZ0KTthLml1c2hsbihzaGlmdCk7YmhpPWIud29yZHNbYi5sZW5ndGgtMV18MH12YXIgbT1hLmxlbmd0aC1iLmxlbmd0aDt2YXIgcTtpZihtb2RlIT09Im1vZCIpe3E9bmV3IEJOKG51bGwpO3EubGVuZ3RoPW0rMTtxLndvcmRzPW5ldyBBcnJheShxLmxlbmd0aCk7Zm9yKHZhciBpPTA7aTxxLmxlbmd0aDtpKyspe3Eud29yZHNbaV09MH19dmFyIGRpZmY9YS5jbG9uZSgpLl9pc2hsbnN1Ym11bChiLDEsbSk7aWYoZGlmZi5uZWdhdGl2ZT09PTApe2E9ZGlmZjtpZihxKXtxLndvcmRzW21dPTF9fWZvcih2YXIgaj1tLTE7aj49MDtqLS0pe3ZhciBxaj0oYS53b3Jkc1tiLmxlbmd0aCtqXXwwKSo2NzEwODg2NCsoYS53b3Jkc1tiLmxlbmd0aCtqLTFdfDApO3FqPU1hdGgubWluKHFqL2JoaXwwLDY3MTA4ODYzKTthLl9pc2hsbnN1Ym11bChiLHFqLGopO3doaWxlKGEubmVnYXRpdmUhPT0wKXtxai0tO2EubmVnYXRpdmU9MDthLl9pc2hsbnN1Ym11bChiLDEsaik7aWYoIWEuaXNaZXJvKCkpe2EubmVnYXRpdmVePTF9fWlmKHEpe3Eud29yZHNbal09cWp9fWlmKHEpe3EuX3N0cmlwKCl9YS5fc3RyaXAoKTtpZihtb2RlIT09ImRpdiImJnNoaWZ0IT09MCl7YS5pdXNocm4oc2hpZnQpfXJldHVybntkaXY6cXx8bnVsbCxtb2Q6YX19O0JOLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24gZGl2bW9kKG51bSxtb2RlLHBvc2l0aXZlKXthc3NlcnQoIW51bS5pc1plcm8oKSk7aWYodGhpcy5pc1plcm8oKSl7cmV0dXJue2RpdjpuZXcgQk4oMCksbW9kOm5ldyBCTigwKX19dmFyIGRpdixtb2QscmVzO2lmKHRoaXMubmVnYXRpdmUhPT0wJiZudW0ubmVnYXRpdmU9PT0wKXtyZXM9dGhpcy5uZWcoKS5kaXZtb2QobnVtLG1vZGUpO2lmKG1vZGUhPT0ibW9kIil7ZGl2PXJlcy5kaXYubmVnKCl9aWYobW9kZSE9PSJkaXYiKXttb2Q9cmVzLm1vZC5uZWcoKTtpZihwb3NpdGl2ZSYmbW9kLm5lZ2F0aXZlIT09MCl7bW9kLmlhZGQobnVtKX19cmV0dXJue2RpdjpkaXYsbW9kOm1vZH19aWYodGhpcy5uZWdhdGl2ZT09PTAmJm51bS5uZWdhdGl2ZSE9PTApe3Jlcz10aGlzLmRpdm1vZChudW0ubmVnKCksbW9kZSk7aWYobW9kZSE9PSJtb2QiKXtkaXY9cmVzLmRpdi5uZWcoKX1yZXR1cm57ZGl2OmRpdixtb2Q6cmVzLm1vZH19aWYoKHRoaXMubmVnYXRpdmUmbnVtLm5lZ2F0aXZlKSE9PTApe3Jlcz10aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksbW9kZSk7aWYobW9kZSE9PSJkaXYiKXttb2Q9cmVzLm1vZC5uZWcoKTtpZihwb3NpdGl2ZSYmbW9kLm5lZ2F0aXZlIT09MCl7bW9kLmlzdWIobnVtKX19cmV0dXJue2RpdjpyZXMuZGl2LG1vZDptb2R9fWlmKG51bS5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKG51bSk8MCl7cmV0dXJue2RpdjpuZXcgQk4oMCksbW9kOnRoaXN9fWlmKG51bS5sZW5ndGg9PT0xKXtpZihtb2RlPT09ImRpdiIpe3JldHVybntkaXY6dGhpcy5kaXZuKG51bS53b3Jkc1swXSksbW9kOm51bGx9fWlmKG1vZGU9PT0ibW9kIil7cmV0dXJue2RpdjpudWxsLG1vZDpuZXcgQk4odGhpcy5tb2RybihudW0ud29yZHNbMF0pKX19cmV0dXJue2Rpdjp0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxtb2Q6bmV3IEJOKHRoaXMubW9kcm4obnVtLndvcmRzWzBdKSl9fXJldHVybiB0aGlzLl93b3JkRGl2KG51bSxtb2RlKX07Qk4ucHJvdG90eXBlLmRpdj1mdW5jdGlvbiBkaXYobnVtKXtyZXR1cm4gdGhpcy5kaXZtb2QobnVtLCJkaXYiLGZhbHNlKS5kaXZ9O0JOLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24gbW9kKG51bSl7cmV0dXJuIHRoaXMuZGl2bW9kKG51bSwibW9kIixmYWxzZSkubW9kfTtCTi5wcm90b3R5cGUudW1vZD1mdW5jdGlvbiB1bW9kKG51bSl7cmV0dXJuIHRoaXMuZGl2bW9kKG51bSwibW9kIix0cnVlKS5tb2R9O0JOLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbiBkaXZSb3VuZChudW0pe3ZhciBkbT10aGlzLmRpdm1vZChudW0pO2lmKGRtLm1vZC5pc1plcm8oKSlyZXR1cm4gZG0uZGl2O3ZhciBtb2Q9ZG0uZGl2Lm5lZ2F0aXZlIT09MD9kbS5tb2QuaXN1YihudW0pOmRtLm1vZDt2YXIgaGFsZj1udW0udXNocm4oMSk7dmFyIHIyPW51bS5hbmRsbigxKTt2YXIgY21wPW1vZC5jbXAoaGFsZik7aWYoY21wPDB8fHIyPT09MSYmY21wPT09MClyZXR1cm4gZG0uZGl2O3JldHVybiBkbS5kaXYubmVnYXRpdmUhPT0wP2RtLmRpdi5pc3VibigxKTpkbS5kaXYuaWFkZG4oMSl9O0JOLnByb3RvdHlwZS5tb2Rybj1mdW5jdGlvbiBtb2RybihudW0pe3ZhciBpc05lZ051bT1udW08MDtpZihpc05lZ051bSludW09LW51bTthc3NlcnQobnVtPD02NzEwODg2Myk7dmFyIHA9KDE8PDI2KSVudW07dmFyIGFjYz0wO2Zvcih2YXIgaT10aGlzLmxlbmd0aC0xO2k+PTA7aS0tKXthY2M9KHAqYWNjKyh0aGlzLndvcmRzW2ldfDApKSVudW19cmV0dXJuIGlzTmVnTnVtPy1hY2M6YWNjfTtCTi5wcm90b3R5cGUubW9kbj1mdW5jdGlvbiBtb2RuKG51bSl7cmV0dXJuIHRoaXMubW9kcm4obnVtKX07Qk4ucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uIGlkaXZuKG51bSl7dmFyIGlzTmVnTnVtPW51bTwwO2lmKGlzTmVnTnVtKW51bT0tbnVtO2Fzc2VydChudW08PTY3MTA4ODYzKTt2YXIgY2Fycnk9MDtmb3IodmFyIGk9dGhpcy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIHc9KHRoaXMud29yZHNbaV18MCkrY2FycnkqNjcxMDg4NjQ7dGhpcy53b3Jkc1tpXT13L251bXwwO2NhcnJ5PXclbnVtfXRoaXMuX3N0cmlwKCk7cmV0dXJuIGlzTmVnTnVtP3RoaXMuaW5lZygpOnRoaXN9O0JOLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uIGRpdm4obnVtKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKG51bSl9O0JOLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uIGVnY2QocCl7YXNzZXJ0KHAubmVnYXRpdmU9PT0wKTthc3NlcnQoIXAuaXNaZXJvKCkpO3ZhciB4PXRoaXM7dmFyIHk9cC5jbG9uZSgpO2lmKHgubmVnYXRpdmUhPT0wKXt4PXgudW1vZChwKX1lbHNle3g9eC5jbG9uZSgpfXZhciBBPW5ldyBCTigxKTt2YXIgQj1uZXcgQk4oMCk7dmFyIEM9bmV3IEJOKDApO3ZhciBEPW5ldyBCTigxKTt2YXIgZz0wO3doaWxlKHguaXNFdmVuKCkmJnkuaXNFdmVuKCkpe3guaXVzaHJuKDEpO3kuaXVzaHJuKDEpOysrZ312YXIgeXA9eS5jbG9uZSgpO3ZhciB4cD14LmNsb25lKCk7d2hpbGUoIXguaXNaZXJvKCkpe2Zvcih2YXIgaT0wLGltPTE7KHgud29yZHNbMF0maW0pPT09MCYmaTwyNjsrK2ksaW08PD0xKTtpZihpPjApe3guaXVzaHJuKGkpO3doaWxlKGktLSA+MCl7aWYoQS5pc09kZCgpfHxCLmlzT2RkKCkpe0EuaWFkZCh5cCk7Qi5pc3ViKHhwKX1BLml1c2hybigxKTtCLml1c2hybigxKX19Zm9yKHZhciBqPTAsam09MTsoeS53b3Jkc1swXSZqbSk9PT0wJiZqPDI2OysraixqbTw8PTEpO2lmKGo+MCl7eS5pdXNocm4oaik7d2hpbGUoai0tID4wKXtpZihDLmlzT2RkKCl8fEQuaXNPZGQoKSl7Qy5pYWRkKHlwKTtELmlzdWIoeHApfUMuaXVzaHJuKDEpO0QuaXVzaHJuKDEpfX1pZih4LmNtcCh5KT49MCl7eC5pc3ViKHkpO0EuaXN1YihDKTtCLmlzdWIoRCl9ZWxzZXt5LmlzdWIoeCk7Qy5pc3ViKEEpO0QuaXN1YihCKX19cmV0dXJue2E6QyxiOkQsZ2NkOnkuaXVzaGxuKGcpfX07Qk4ucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbiBfaW52bXAocCl7YXNzZXJ0KHAubmVnYXRpdmU9PT0wKTthc3NlcnQoIXAuaXNaZXJvKCkpO3ZhciBhPXRoaXM7dmFyIGI9cC5jbG9uZSgpO2lmKGEubmVnYXRpdmUhPT0wKXthPWEudW1vZChwKX1lbHNle2E9YS5jbG9uZSgpfXZhciB4MT1uZXcgQk4oMSk7dmFyIHgyPW5ldyBCTigwKTt2YXIgZGVsdGE9Yi5jbG9uZSgpO3doaWxlKGEuY21wbigxKT4wJiZiLmNtcG4oMSk+MCl7Zm9yKHZhciBpPTAsaW09MTsoYS53b3Jkc1swXSZpbSk9PT0wJiZpPDI2OysraSxpbTw8PTEpO2lmKGk+MCl7YS5pdXNocm4oaSk7d2hpbGUoaS0tID4wKXtpZih4MS5pc09kZCgpKXt4MS5pYWRkKGRlbHRhKX14MS5pdXNocm4oMSl9fWZvcih2YXIgaj0wLGptPTE7KGIud29yZHNbMF0mam0pPT09MCYmajwyNjsrK2osam08PD0xKTtpZihqPjApe2IuaXVzaHJuKGopO3doaWxlKGotLSA+MCl7aWYoeDIuaXNPZGQoKSl7eDIuaWFkZChkZWx0YSl9eDIuaXVzaHJuKDEpfX1pZihhLmNtcChiKT49MCl7YS5pc3ViKGIpO3gxLmlzdWIoeDIpfWVsc2V7Yi5pc3ViKGEpO3gyLmlzdWIoeDEpfX12YXIgcmVzO2lmKGEuY21wbigxKT09PTApe3Jlcz14MX1lbHNle3Jlcz14Mn1pZihyZXMuY21wbigwKTwwKXtyZXMuaWFkZChwKX1yZXR1cm4gcmVzfTtCTi5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uIGdjZChudW0pe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIG51bS5hYnMoKTtpZihudW0uaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIGE9dGhpcy5jbG9uZSgpO3ZhciBiPW51bS5jbG9uZSgpO2EubmVnYXRpdmU9MDtiLm5lZ2F0aXZlPTA7Zm9yKHZhciBzaGlmdD0wO2EuaXNFdmVuKCkmJmIuaXNFdmVuKCk7c2hpZnQrKyl7YS5pdXNocm4oMSk7Yi5pdXNocm4oMSl9ZG97d2hpbGUoYS5pc0V2ZW4oKSl7YS5pdXNocm4oMSl9d2hpbGUoYi5pc0V2ZW4oKSl7Yi5pdXNocm4oMSl9dmFyIHI9YS5jbXAoYik7aWYocjwwKXt2YXIgdD1hO2E9YjtiPXR9ZWxzZSBpZihyPT09MHx8Yi5jbXBuKDEpPT09MCl7YnJlYWt9YS5pc3ViKGIpfXdoaWxlKHRydWUpO3JldHVybiBiLml1c2hsbihzaGlmdCl9O0JOLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uIGludm0obnVtKXtyZXR1cm4gdGhpcy5lZ2NkKG51bSkuYS51bW9kKG51bSl9O0JOLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24gaXNFdmVuKCl7cmV0dXJuKHRoaXMud29yZHNbMF0mMSk9PT0wfTtCTi5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24gaXNPZGQoKXtyZXR1cm4odGhpcy53b3Jkc1swXSYxKT09PTF9O0JOLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbiBhbmRsbihudW0pe3JldHVybiB0aGlzLndvcmRzWzBdJm51bX07Qk4ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uIGJpbmNuKGJpdCl7YXNzZXJ0KHR5cGVvZiBiaXQ9PT0ibnVtYmVyIik7dmFyIHI9Yml0JTI2O3ZhciBzPShiaXQtcikvMjY7dmFyIHE9MTw8cjtpZih0aGlzLmxlbmd0aDw9cyl7dGhpcy5fZXhwYW5kKHMrMSk7dGhpcy53b3Jkc1tzXXw9cTtyZXR1cm4gdGhpc312YXIgY2Fycnk9cTtmb3IodmFyIGk9cztjYXJyeSE9PTAmJmk8dGhpcy5sZW5ndGg7aSsrKXt2YXIgdz10aGlzLndvcmRzW2ldfDA7dys9Y2Fycnk7Y2Fycnk9dz4+PjI2O3cmPTY3MTA4ODYzO3RoaXMud29yZHNbaV09d31pZihjYXJyeSE9PTApe3RoaXMud29yZHNbaV09Y2Fycnk7dGhpcy5sZW5ndGgrK31yZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbiBpc1plcm8oKXtyZXR1cm4gdGhpcy5sZW5ndGg9PT0xJiZ0aGlzLndvcmRzWzBdPT09MH07Qk4ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24gY21wbihudW0pe3ZhciBuZWdhdGl2ZT1udW08MDtpZih0aGlzLm5lZ2F0aXZlIT09MCYmIW5lZ2F0aXZlKXJldHVybi0xO2lmKHRoaXMubmVnYXRpdmU9PT0wJiZuZWdhdGl2ZSlyZXR1cm4gMTt0aGlzLl9zdHJpcCgpO3ZhciByZXM7aWYodGhpcy5sZW5ndGg+MSl7cmVzPTF9ZWxzZXtpZihuZWdhdGl2ZSl7bnVtPS1udW19YXNzZXJ0KG51bTw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIHc9dGhpcy53b3Jkc1swXXwwO3Jlcz13PT09bnVtPzA6dzxudW0/LTE6MX1pZih0aGlzLm5lZ2F0aXZlIT09MClyZXR1cm4tcmVzfDA7cmV0dXJuIHJlc307Qk4ucHJvdG90eXBlLmNtcD1mdW5jdGlvbiBjbXAobnVtKXtpZih0aGlzLm5lZ2F0aXZlIT09MCYmbnVtLm5lZ2F0aXZlPT09MClyZXR1cm4tMTtpZih0aGlzLm5lZ2F0aXZlPT09MCYmbnVtLm5lZ2F0aXZlIT09MClyZXR1cm4gMTt2YXIgcmVzPXRoaXMudWNtcChudW0pO2lmKHRoaXMubmVnYXRpdmUhPT0wKXJldHVybi1yZXN8MDtyZXR1cm4gcmVzfTtCTi5wcm90b3R5cGUudWNtcD1mdW5jdGlvbiB1Y21wKG51bSl7aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxudW0ubGVuZ3RoKXJldHVybi0xO3ZhciByZXM9MDtmb3IodmFyIGk9dGhpcy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIGE9dGhpcy53b3Jkc1tpXXwwO3ZhciBiPW51bS53b3Jkc1tpXXwwO2lmKGE9PT1iKWNvbnRpbnVlO2lmKGE8Yil7cmVzPS0xfWVsc2UgaWYoYT5iKXtyZXM9MX1icmVha31yZXR1cm4gcmVzfTtCTi5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uIGd0bihudW0pe3JldHVybiB0aGlzLmNtcG4obnVtKT09PTF9O0JOLnByb3RvdHlwZS5ndD1mdW5jdGlvbiBndChudW0pe3JldHVybiB0aGlzLmNtcChudW0pPT09MX07Qk4ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24gZ3RlbihudW0pe3JldHVybiB0aGlzLmNtcG4obnVtKT49MH07Qk4ucHJvdG90eXBlLmd0ZT1mdW5jdGlvbiBndGUobnVtKXtyZXR1cm4gdGhpcy5jbXAobnVtKT49MH07Qk4ucHJvdG90eXBlLmx0bj1mdW5jdGlvbiBsdG4obnVtKXtyZXR1cm4gdGhpcy5jbXBuKG51bSk9PT0tMX07Qk4ucHJvdG90eXBlLmx0PWZ1bmN0aW9uIGx0KG51bSl7cmV0dXJuIHRoaXMuY21wKG51bSk9PT0tMX07Qk4ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24gbHRlbihudW0pe3JldHVybiB0aGlzLmNtcG4obnVtKTw9MH07Qk4ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbiBsdGUobnVtKXtyZXR1cm4gdGhpcy5jbXAobnVtKTw9MH07Qk4ucHJvdG90eXBlLmVxbj1mdW5jdGlvbiBlcW4obnVtKXtyZXR1cm4gdGhpcy5jbXBuKG51bSk9PT0wfTtCTi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24gZXEobnVtKXtyZXR1cm4gdGhpcy5jbXAobnVtKT09PTB9O0JOLnJlZD1mdW5jdGlvbiByZWQobnVtKXtyZXR1cm4gbmV3IFJlZChudW0pfTtCTi5wcm90b3R5cGUudG9SZWQ9ZnVuY3Rpb24gdG9SZWQoY3R4KXthc3NlcnQoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Iik7YXNzZXJ0KHRoaXMubmVnYXRpdmU9PT0wLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpO3JldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpfTtCTi5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbiBmcm9tUmVkKCl7YXNzZXJ0KHRoaXMucmVkLCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0Iik7cmV0dXJuIHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpfTtCTi5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uIF9mb3JjZVJlZChjdHgpe3RoaXMucmVkPWN0eDtyZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uIGZvcmNlUmVkKGN0eCl7YXNzZXJ0KCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpO3JldHVybiB0aGlzLl9mb3JjZVJlZChjdHgpfTtCTi5wcm90b3R5cGUucmVkQWRkPWZ1bmN0aW9uIHJlZEFkZChudW0pe2Fzc2VydCh0aGlzLnJlZCwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3JldHVybiB0aGlzLnJlZC5hZGQodGhpcyxudW0pfTtCTi5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbiByZWRJQWRkKG51bSl7YXNzZXJ0KHRoaXMucmVkLCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3JldHVybiB0aGlzLnJlZC5pYWRkKHRoaXMsbnVtKX07Qk4ucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbiByZWRTdWIobnVtKXthc3NlcnQodGhpcy5yZWQsInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKTtyZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsbnVtKX07Qk4ucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24gcmVkSVN1YihudW0pe2Fzc2VydCh0aGlzLnJlZCwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKTtyZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLG51bSl9O0JOLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24gcmVkU2hsKG51bSl7YXNzZXJ0KHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7cmV0dXJuIHRoaXMucmVkLnNobCh0aGlzLG51bSl9O0JOLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24gcmVkTXVsKG51bSl7YXNzZXJ0KHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7dGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxudW0pO3JldHVybiB0aGlzLnJlZC5tdWwodGhpcyxudW0pfTtCTi5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbiByZWRJTXVsKG51bSl7YXNzZXJ0KHRoaXMucmVkLCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7dGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxudW0pO3JldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsbnVtKX07Qk4ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbiByZWRTcXIoKXthc3NlcnQodGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKTt0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtyZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpfTtCTi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbiByZWRJU3FyKCl7YXNzZXJ0KHRoaXMucmVkLCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5pc3FyKHRoaXMpfTtCTi5wcm90b3R5cGUucmVkU3FydD1mdW5jdGlvbiByZWRTcXJ0KCl7YXNzZXJ0KHRoaXMucmVkLCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpfTtCTi5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbiByZWRJbnZtKCl7YXNzZXJ0KHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpfTtCTi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uIHJlZE5lZygpe2Fzc2VydCh0aGlzLnJlZCwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5uZWcodGhpcyl9O0JOLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24gcmVkUG93KG51bSl7YXNzZXJ0KHRoaXMucmVkJiYhbnVtLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKTt0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtyZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsbnVtKX07dmFyIHByaW1lcz17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2Z1bmN0aW9uIE1QcmltZShuYW1lLHApe3RoaXMubmFtZT1uYW1lO3RoaXMucD1uZXcgQk4ocCwxNik7dGhpcy5uPXRoaXMucC5iaXRMZW5ndGgoKTt0aGlzLms9bmV3IEJOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKTt0aGlzLnRtcD10aGlzLl90bXAoKX1NUHJpbWUucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24gX3RtcCgpe3ZhciB0bXA9bmV3IEJOKG51bGwpO3RtcC53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpO3JldHVybiB0bXB9O01QcmltZS5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbiBpcmVkdWNlKG51bSl7dmFyIHI9bnVtO3ZhciBybGVuO2Rve3RoaXMuc3BsaXQocix0aGlzLnRtcCk7cj10aGlzLmltdWxLKHIpO3I9ci5pYWRkKHRoaXMudG1wKTtybGVuPXIuYml0TGVuZ3RoKCl9d2hpbGUocmxlbj50aGlzLm4pO3ZhciBjbXA9cmxlbjx0aGlzLm4/LTE6ci51Y21wKHRoaXMucCk7aWYoY21wPT09MCl7ci53b3Jkc1swXT0wO3IubGVuZ3RoPTF9ZWxzZSBpZihjbXA+MCl7ci5pc3ViKHRoaXMucCl9ZWxzZXtpZihyLnN0cmlwIT09dW5kZWZpbmVkKXtyLnN0cmlwKCl9ZWxzZXtyLl9zdHJpcCgpfX1yZXR1cm4gcn07TVByaW1lLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbiBzcGxpdChpbnB1dCxvdXQpe2lucHV0Lml1c2hybih0aGlzLm4sMCxvdXQpfTtNUHJpbWUucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uIGltdWxLKG51bSl7cmV0dXJuIG51bS5pbXVsKHRoaXMuayl9O2Z1bmN0aW9uIEsyNTYoKXtNUHJpbWUuY2FsbCh0aGlzLCJrMjU2IiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYiKX1pbmhlcml0cyhLMjU2LE1QcmltZSk7SzI1Ni5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24gc3BsaXQoaW5wdXQsb3V0cHV0KXt2YXIgbWFzaz00MTk0MzAzO3ZhciBvdXRMZW49TWF0aC5taW4oaW5wdXQubGVuZ3RoLDkpO2Zvcih2YXIgaT0wO2k8b3V0TGVuO2krKyl7b3V0cHV0LndvcmRzW2ldPWlucHV0LndvcmRzW2ldfW91dHB1dC5sZW5ndGg9b3V0TGVuO2lmKGlucHV0Lmxlbmd0aDw9OSl7aW5wdXQud29yZHNbMF09MDtpbnB1dC5sZW5ndGg9MTtyZXR1cm59dmFyIHByZXY9aW5wdXQud29yZHNbOV07b3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK109cHJldiZtYXNrO2ZvcihpPTEwO2k8aW5wdXQubGVuZ3RoO2krKyl7dmFyIG5leHQ9aW5wdXQud29yZHNbaV18MDtpbnB1dC53b3Jkc1tpLTEwXT0obmV4dCZtYXNrKTw8NHxwcmV2Pj4+MjI7cHJldj1uZXh0fXByZXY+Pj49MjI7aW5wdXQud29yZHNbaS0xMF09cHJldjtpZihwcmV2PT09MCYmaW5wdXQubGVuZ3RoPjEwKXtpbnB1dC5sZW5ndGgtPTEwfWVsc2V7aW5wdXQubGVuZ3RoLT05fX07SzI1Ni5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24gaW11bEsobnVtKXtudW0ud29yZHNbbnVtLmxlbmd0aF09MDtudW0ud29yZHNbbnVtLmxlbmd0aCsxXT0wO251bS5sZW5ndGgrPTI7dmFyIGxvPTA7Zm9yKHZhciBpPTA7aTxudW0ubGVuZ3RoO2krKyl7dmFyIHc9bnVtLndvcmRzW2ldfDA7bG8rPXcqOTc3O251bS53b3Jkc1tpXT1sbyY2NzEwODg2Mztsbz13KjY0Kyhsby82NzEwODg2NHwwKX1pZihudW0ud29yZHNbbnVtLmxlbmd0aC0xXT09PTApe251bS5sZW5ndGgtLTtpZihudW0ud29yZHNbbnVtLmxlbmd0aC0xXT09PTApe251bS5sZW5ndGgtLX19cmV0dXJuIG51bX07ZnVuY3Rpb24gUDIyNCgpe01QcmltZS5jYWxsKHRoaXMsInAyMjQiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIpfWluaGVyaXRzKFAyMjQsTVByaW1lKTtmdW5jdGlvbiBQMTkyKCl7TVByaW1lLmNhbGwodGhpcywicDE5MiIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIil9aW5oZXJpdHMoUDE5MixNUHJpbWUpO2Z1bmN0aW9uIFAyNTUxOSgpe01QcmltZS5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWluaGVyaXRzKFAyNTUxOSxNUHJpbWUpO1AyNTUxOS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24gaW11bEsobnVtKXt2YXIgY2Fycnk9MDtmb3IodmFyIGk9MDtpPG51bS5sZW5ndGg7aSsrKXt2YXIgaGk9KG51bS53b3Jkc1tpXXwwKSoxOStjYXJyeTt2YXIgbG89aGkmNjcxMDg4NjM7aGk+Pj49MjY7bnVtLndvcmRzW2ldPWxvO2NhcnJ5PWhpfWlmKGNhcnJ5IT09MCl7bnVtLndvcmRzW251bS5sZW5ndGgrK109Y2Fycnl9cmV0dXJuIG51bX07Qk4uX3ByaW1lPWZ1bmN0aW9uIHByaW1lKG5hbWUpe2lmKHByaW1lc1tuYW1lXSlyZXR1cm4gcHJpbWVzW25hbWVdO3ZhciBwcmltZTtpZihuYW1lPT09ImsyNTYiKXtwcmltZT1uZXcgSzI1Nn1lbHNlIGlmKG5hbWU9PT0icDIyNCIpe3ByaW1lPW5ldyBQMjI0fWVsc2UgaWYobmFtZT09PSJwMTkyIil7cHJpbWU9bmV3IFAxOTJ9ZWxzZSBpZihuYW1lPT09InAyNTUxOSIpe3ByaW1lPW5ldyBQMjU1MTl9ZWxzZXt0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcHJpbWUgIituYW1lKX1wcmltZXNbbmFtZV09cHJpbWU7cmV0dXJuIHByaW1lfTtmdW5jdGlvbiBSZWQobSl7aWYodHlwZW9mIG09PT0ic3RyaW5nIil7dmFyIHByaW1lPUJOLl9wcmltZShtKTt0aGlzLm09cHJpbWUucDt0aGlzLnByaW1lPXByaW1lfWVsc2V7YXNzZXJ0KG0uZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKTt0aGlzLm09bTt0aGlzLnByaW1lPW51bGx9fVJlZC5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24gX3ZlcmlmeTEoYSl7YXNzZXJ0KGEubmVnYXRpdmU9PT0wLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpO2Fzc2VydChhLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfTtSZWQucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uIF92ZXJpZnkyKGEsYil7YXNzZXJ0KChhLm5lZ2F0aXZlfGIubmVnYXRpdmUpPT09MCwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKTthc3NlcnQoYS5yZWQmJmEucmVkPT09Yi5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX07UmVkLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uIGltb2QoYSl7aWYodGhpcy5wcmltZSlyZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTttb3ZlKGEsYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpKTtyZXR1cm4gYX07UmVkLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24gbmVnKGEpe2lmKGEuaXNaZXJvKCkpe3JldHVybiBhLmNsb25lKCl9cmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpfTtSZWQucHJvdG90eXBlLmFkZD1mdW5jdGlvbiBhZGQoYSxiKXt0aGlzLl92ZXJpZnkyKGEsYik7dmFyIHJlcz1hLmFkZChiKTtpZihyZXMuY21wKHRoaXMubSk+PTApe3Jlcy5pc3ViKHRoaXMubSl9cmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyl9O1JlZC5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbiBpYWRkKGEsYil7dGhpcy5fdmVyaWZ5MihhLGIpO3ZhciByZXM9YS5pYWRkKGIpO2lmKHJlcy5jbXAodGhpcy5tKT49MCl7cmVzLmlzdWIodGhpcy5tKX1yZXR1cm4gcmVzfTtSZWQucHJvdG90eXBlLnN1Yj1mdW5jdGlvbiBzdWIoYSxiKXt0aGlzLl92ZXJpZnkyKGEsYik7dmFyIHJlcz1hLnN1YihiKTtpZihyZXMuY21wbigwKTwwKXtyZXMuaWFkZCh0aGlzLm0pfXJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpfTtSZWQucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24gaXN1YihhLGIpe3RoaXMuX3ZlcmlmeTIoYSxiKTt2YXIgcmVzPWEuaXN1YihiKTtpZihyZXMuY21wbigwKTwwKXtyZXMuaWFkZCh0aGlzLm0pfXJldHVybiByZXN9O1JlZC5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uIHNobChhLG51bSl7dGhpcy5fdmVyaWZ5MShhKTtyZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSl9O1JlZC5wcm90b3R5cGUuaW11bD1mdW5jdGlvbiBpbXVsKGEsYil7dGhpcy5fdmVyaWZ5MihhLGIpO3JldHVybiB0aGlzLmltb2QoYS5pbXVsKGIpKX07UmVkLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24gbXVsKGEsYil7dGhpcy5fdmVyaWZ5MihhLGIpO3JldHVybiB0aGlzLmltb2QoYS5tdWwoYikpfTtSZWQucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24gaXNxcihhKXtyZXR1cm4gdGhpcy5pbXVsKGEsYS5jbG9uZSgpKX07UmVkLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24gc3FyKGEpe3JldHVybiB0aGlzLm11bChhLGEpfTtSZWQucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24gc3FydChhKXtpZihhLmlzWmVybygpKXJldHVybiBhLmNsb25lKCk7dmFyIG1vZDM9dGhpcy5tLmFuZGxuKDMpO2Fzc2VydChtb2QzJTI9PT0xKTtpZihtb2QzPT09Myl7dmFyIHBvdz10aGlzLm0uYWRkKG5ldyBCTigxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhhLHBvdyl9dmFyIHE9dGhpcy5tLnN1Ym4oMSk7dmFyIHM9MDt3aGlsZSghcS5pc1plcm8oKSYmcS5hbmRsbigxKT09PTApe3MrKztxLml1c2hybigxKX1hc3NlcnQoIXEuaXNaZXJvKCkpO3ZhciBvbmU9bmV3IEJOKDEpLnRvUmVkKHRoaXMpO3ZhciBuT25lPW9uZS5yZWROZWcoKTt2YXIgbHBvdz10aGlzLm0uc3VibigxKS5pdXNocm4oMSk7dmFyIHo9dGhpcy5tLmJpdExlbmd0aCgpO3o9bmV3IEJOKDIqeip6KS50b1JlZCh0aGlzKTt3aGlsZSh0aGlzLnBvdyh6LGxwb3cpLmNtcChuT25lKSE9PTApe3oucmVkSUFkZChuT25lKX12YXIgYz10aGlzLnBvdyh6LHEpO3ZhciByPXRoaXMucG93KGEscS5hZGRuKDEpLml1c2hybigxKSk7dmFyIHQ9dGhpcy5wb3coYSxxKTt2YXIgbT1zO3doaWxlKHQuY21wKG9uZSkhPT0wKXt2YXIgdG1wPXQ7Zm9yKHZhciBpPTA7dG1wLmNtcChvbmUpIT09MDtpKyspe3RtcD10bXAucmVkU3FyKCl9YXNzZXJ0KGk8bSk7dmFyIGI9dGhpcy5wb3coYyxuZXcgQk4oMSkuaXVzaGxuKG0taS0xKSk7cj1yLnJlZE11bChiKTtjPWIucmVkU3FyKCk7dD10LnJlZE11bChjKTttPWl9cmV0dXJuIHJ9O1JlZC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbiBpbnZtKGEpe3ZhciBpbnY9YS5faW52bXAodGhpcy5tKTtpZihpbnYubmVnYXRpdmUhPT0wKXtpbnYubmVnYXRpdmU9MDtyZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCl9ZWxzZXtyZXR1cm4gdGhpcy5pbW9kKGludil9fTtSZWQucHJvdG90eXBlLnBvdz1mdW5jdGlvbiBwb3coYSxudW0pe2lmKG51bS5pc1plcm8oKSlyZXR1cm4gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO2lmKG51bS5jbXBuKDEpPT09MClyZXR1cm4gYS5jbG9uZSgpO3ZhciB3aW5kb3dTaXplPTQ7dmFyIHduZD1uZXcgQXJyYXkoMTw8d2luZG93U2l6ZSk7d25kWzBdPW5ldyBCTigxKS50b1JlZCh0aGlzKTt3bmRbMV09YTtmb3IodmFyIGk9MjtpPHduZC5sZW5ndGg7aSsrKXt3bmRbaV09dGhpcy5tdWwod25kW2ktMV0sYSl9dmFyIHJlcz13bmRbMF07dmFyIGN1cnJlbnQ9MDt2YXIgY3VycmVudExlbj0wO3ZhciBzdGFydD1udW0uYml0TGVuZ3RoKCklMjY7aWYoc3RhcnQ9PT0wKXtzdGFydD0yNn1mb3IoaT1udW0ubGVuZ3RoLTE7aT49MDtpLS0pe3ZhciB3b3JkPW51bS53b3Jkc1tpXTtmb3IodmFyIGo9c3RhcnQtMTtqPj0wO2otLSl7dmFyIGJpdD13b3JkPj5qJjE7aWYocmVzIT09d25kWzBdKXtyZXM9dGhpcy5zcXIocmVzKX1pZihiaXQ9PT0wJiZjdXJyZW50PT09MCl7Y3VycmVudExlbj0wO2NvbnRpbnVlfWN1cnJlbnQ8PD0xO2N1cnJlbnR8PWJpdDtjdXJyZW50TGVuKys7aWYoY3VycmVudExlbiE9PXdpbmRvd1NpemUmJihpIT09MHx8aiE9PTApKWNvbnRpbnVlO3Jlcz10aGlzLm11bChyZXMsd25kW2N1cnJlbnRdKTtjdXJyZW50TGVuPTA7Y3VycmVudD0wfXN0YXJ0PTI2fXJldHVybiByZXN9O1JlZC5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uIGNvbnZlcnRUbyhudW0pe3ZhciByPW51bS51bW9kKHRoaXMubSk7cmV0dXJuIHI9PT1udW0/ci5jbG9uZSgpOnJ9O1JlZC5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24gY29udmVydEZyb20obnVtKXt2YXIgcmVzPW51bS5jbG9uZSgpO3Jlcy5yZWQ9bnVsbDtyZXR1cm4gcmVzfTtCTi5tb250PWZ1bmN0aW9uIG1vbnQobnVtKXtyZXR1cm4gbmV3IE1vbnQobnVtKX07ZnVuY3Rpb24gTW9udChtKXtSZWQuY2FsbCh0aGlzLG0pO3RoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpO2lmKHRoaXMuc2hpZnQlMjYhPT0wKXt0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2fXRoaXMucj1uZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO3RoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSk7dGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKTt0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pO3RoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpO3RoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9aW5oZXJpdHMoTW9udCxSZWQpO01vbnQucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbiBjb252ZXJ0VG8obnVtKXtyZXR1cm4gdGhpcy5pbW9kKG51bS51c2hsbih0aGlzLnNoaWZ0KSl9O01vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uIGNvbnZlcnRGcm9tKG51bSl7dmFyIHI9dGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7ci5yZWQ9bnVsbDtyZXR1cm4gcn07TW9udC5wcm90b3R5cGUuaW11bD1mdW5jdGlvbiBpbXVsKGEsYil7aWYoYS5pc1plcm8oKXx8Yi5pc1plcm8oKSl7YS53b3Jkc1swXT0wO2EubGVuZ3RoPTE7cmV0dXJuIGF9dmFyIHQ9YS5pbXVsKGIpO3ZhciBjPXQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO3ZhciB1PXQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7dmFyIHJlcz11O2lmKHUuY21wKHRoaXMubSk+PTApe3Jlcz11LmlzdWIodGhpcy5tKX1lbHNlIGlmKHUuY21wbigwKTwwKXtyZXM9dS5pYWRkKHRoaXMubSl9cmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyl9O01vbnQucHJvdG90eXBlLm11bD1mdW5jdGlvbiBtdWwoYSxiKXtpZihhLmlzWmVybygpfHxiLmlzWmVybygpKXJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciB0PWEubXVsKGIpO3ZhciBjPXQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO3ZhciB1PXQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7dmFyIHJlcz11O2lmKHUuY21wKHRoaXMubSk+PTApe3Jlcz11LmlzdWIodGhpcy5tKX1lbHNlIGlmKHUuY21wbigwKTwwKXtyZXM9dS5pYWRkKHRoaXMubSl9cmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyl9O01vbnQucHJvdG90eXBlLmludm09ZnVuY3Rpb24gaW52bShhKXt2YXIgcmVzPXRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7cmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyl9fSkoIm9iamVjdCI9PT0idW5kZWZpbmVkInx8bW9kdWxlLGNvbW1vbmpzR2xvYmFsKX0pO3ZhciBfdmVyc2lvbj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJsb2dnZXIvNS43LjAifSk7dmFyIF92ZXJzaW9uJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24pO3ZhciBsaWI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkxvZ2dlcj1leHBvcnRzLkVycm9yQ29kZT1leHBvcnRzLkxvZ0xldmVsPXZvaWQgMDt2YXIgX3Blcm1hbmVudENlbnNvckVycm9ycz1mYWxzZTt2YXIgX2NlbnNvckVycm9ycz1mYWxzZTt2YXIgTG9nTGV2ZWxzPXtkZWJ1ZzoxLGRlZmF1bHQ6MixpbmZvOjIsd2FybmluZzozLGVycm9yOjQsb2ZmOjV9O3ZhciBfbG9nTGV2ZWw9TG9nTGV2ZWxzWyJkZWZhdWx0Il07dmFyIF9nbG9iYWxMb2dnZXI9bnVsbDtmdW5jdGlvbiBfY2hlY2tOb3JtYWxpemUoKXt0cnl7dmFyIG1pc3NpbmdfMT1bXTtbIk5GRCIsIk5GQyIsIk5GS0QiLCJORktDIl0uZm9yRWFjaChmdW5jdGlvbihmb3JtKXt0cnl7aWYoInRlc3QiLm5vcm1hbGl6ZShmb3JtKSE9PSJ0ZXN0Iil7dGhyb3cgbmV3IEVycm9yKCJiYWQgbm9ybWFsaXplIil9fWNhdGNoKGVycm9yKXttaXNzaW5nXzEucHVzaChmb3JtKX19KTtpZihtaXNzaW5nXzEubGVuZ3RoKXt0aHJvdyBuZXcgRXJyb3IoIm1pc3NpbmcgIittaXNzaW5nXzEuam9pbigiLCAiKSl9aWYoU3RyaW5nLmZyb21DaGFyQ29kZSgyMzMpLm5vcm1hbGl6ZSgiTkZEIikhPT1TdHJpbmcuZnJvbUNoYXJDb2RlKDEwMSw3NjkpKXt0aHJvdyBuZXcgRXJyb3IoImJyb2tlbiBpbXBsZW1lbnRhdGlvbiIpfX1jYXRjaChlcnJvcil7cmV0dXJuIGVycm9yLm1lc3NhZ2V9cmV0dXJuIG51bGx9dmFyIF9ub3JtYWxpemVFcnJvcj1fY2hlY2tOb3JtYWxpemUoKTt2YXIgTG9nTGV2ZWw7KGZ1bmN0aW9uKExvZ0xldmVsKXtMb2dMZXZlbFsiREVCVUciXT0iREVCVUciO0xvZ0xldmVsWyJJTkZPIl09IklORk8iO0xvZ0xldmVsWyJXQVJOSU5HIl09IldBUk5JTkciO0xvZ0xldmVsWyJFUlJPUiJdPSJFUlJPUiI7TG9nTGV2ZWxbIk9GRiJdPSJPRkYifSkoTG9nTGV2ZWw9ZXhwb3J0cy5Mb2dMZXZlbHx8KGV4cG9ydHMuTG9nTGV2ZWw9e30pKTt2YXIgRXJyb3JDb2RlOyhmdW5jdGlvbihFcnJvckNvZGUpe0Vycm9yQ29kZVsiVU5LTk9XTl9FUlJPUiJdPSJVTktOT1dOX0VSUk9SIjtFcnJvckNvZGVbIk5PVF9JTVBMRU1FTlRFRCJdPSJOT1RfSU1QTEVNRU5URUQiO0Vycm9yQ29kZVsiVU5TVVBQT1JURURfT1BFUkFUSU9OIl09IlVOU1VQUE9SVEVEX09QRVJBVElPTiI7RXJyb3JDb2RlWyJORVRXT1JLX0VSUk9SIl09Ik5FVFdPUktfRVJST1IiO0Vycm9yQ29kZVsiU0VSVkVSX0VSUk9SIl09IlNFUlZFUl9FUlJPUiI7RXJyb3JDb2RlWyJUSU1FT1VUIl09IlRJTUVPVVQiO0Vycm9yQ29kZVsiQlVGRkVSX09WRVJSVU4iXT0iQlVGRkVSX09WRVJSVU4iO0Vycm9yQ29kZVsiTlVNRVJJQ19GQVVMVCJdPSJOVU1FUklDX0ZBVUxUIjtFcnJvckNvZGVbIk1JU1NJTkdfTkVXIl09Ik1JU1NJTkdfTkVXIjtFcnJvckNvZGVbIklOVkFMSURfQVJHVU1FTlQiXT0iSU5WQUxJRF9BUkdVTUVOVCI7RXJyb3JDb2RlWyJNSVNTSU5HX0FSR1VNRU5UIl09Ik1JU1NJTkdfQVJHVU1FTlQiO0Vycm9yQ29kZVsiVU5FWFBFQ1RFRF9BUkdVTUVOVCJdPSJVTkVYUEVDVEVEX0FSR1VNRU5UIjtFcnJvckNvZGVbIkNBTExfRVhDRVBUSU9OIl09IkNBTExfRVhDRVBUSU9OIjtFcnJvckNvZGVbIklOU1VGRklDSUVOVF9GVU5EUyJdPSJJTlNVRkZJQ0lFTlRfRlVORFMiO0Vycm9yQ29kZVsiTk9OQ0VfRVhQSVJFRCJdPSJOT05DRV9FWFBJUkVEIjtFcnJvckNvZGVbIlJFUExBQ0VNRU5UX1VOREVSUFJJQ0VEIl09IlJFUExBQ0VNRU5UX1VOREVSUFJJQ0VEIjtFcnJvckNvZGVbIlVOUFJFRElDVEFCTEVfR0FTX0xJTUlUIl09IlVOUFJFRElDVEFCTEVfR0FTX0xJTUlUIjtFcnJvckNvZGVbIlRSQU5TQUNUSU9OX1JFUExBQ0VEIl09IlRSQU5TQUNUSU9OX1JFUExBQ0VEIjtFcnJvckNvZGVbIkFDVElPTl9SRUpFQ1RFRCJdPSJBQ1RJT05fUkVKRUNURUQifSkoRXJyb3JDb2RlPWV4cG9ydHMuRXJyb3JDb2RlfHwoZXhwb3J0cy5FcnJvckNvZGU9e30pKTt2YXIgSEVYPSIwMTIzNDU2Nzg5YWJjZGVmIjt2YXIgTG9nZ2VyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gTG9nZ2VyKHZlcnNpb24pe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ2ZXJzaW9uIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnZlcnNpb24sd3JpdGFibGU6ZmFsc2V9KX1Mb2dnZXIucHJvdG90eXBlLl9sb2c9ZnVuY3Rpb24obG9nTGV2ZWwsYXJncyl7dmFyIGxldmVsPWxvZ0xldmVsLnRvTG93ZXJDYXNlKCk7aWYoTG9nTGV2ZWxzW2xldmVsXT09bnVsbCl7dGhpcy50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgbG9nIGxldmVsIG5hbWUiLCJsb2dMZXZlbCIsbG9nTGV2ZWwpfWlmKF9sb2dMZXZlbD5Mb2dMZXZlbHNbbGV2ZWxdKXtyZXR1cm59Y29uc29sZS5sb2cuYXBwbHkoY29uc29sZSxhcmdzKX07TG9nZ2VyLnByb3RvdHlwZS5kZWJ1Zz1mdW5jdGlvbigpe3ZhciBhcmdzPVtdO2Zvcih2YXIgX2k9MDtfaTxhcmd1bWVudHMubGVuZ3RoO19pKyspe2FyZ3NbX2ldPWFyZ3VtZW50c1tfaV19dGhpcy5fbG9nKExvZ2dlci5sZXZlbHMuREVCVUcsYXJncyl9O0xvZ2dlci5wcm90b3R5cGUuaW5mbz1mdW5jdGlvbigpe3ZhciBhcmdzPVtdO2Zvcih2YXIgX2k9MDtfaTxhcmd1bWVudHMubGVuZ3RoO19pKyspe2FyZ3NbX2ldPWFyZ3VtZW50c1tfaV19dGhpcy5fbG9nKExvZ2dlci5sZXZlbHMuSU5GTyxhcmdzKX07TG9nZ2VyLnByb3RvdHlwZS53YXJuPWZ1bmN0aW9uKCl7dmFyIGFyZ3M9W107Zm9yKHZhciBfaT0wO19pPGFyZ3VtZW50cy5sZW5ndGg7X2krKyl7YXJnc1tfaV09YXJndW1lbnRzW19pXX10aGlzLl9sb2coTG9nZ2VyLmxldmVscy5XQVJOSU5HLGFyZ3MpfTtMb2dnZXIucHJvdG90eXBlLm1ha2VFcnJvcj1mdW5jdGlvbihtZXNzYWdlLGNvZGUscGFyYW1zKXtpZihfY2Vuc29yRXJyb3JzKXtyZXR1cm4gdGhpcy5tYWtlRXJyb3IoImNlbnNvcmVkIGVycm9yIixjb2RlLHt9KX1pZighY29kZSl7Y29kZT1Mb2dnZXIuZXJyb3JzLlVOS05PV05fRVJST1J9aWYoIXBhcmFtcyl7cGFyYW1zPXt9fXZhciBtZXNzYWdlRGV0YWlscz1bXTtPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goZnVuY3Rpb24oa2V5KXt2YXIgdmFsdWU9cGFyYW1zW2tleV07dHJ5e2lmKHZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSl7dmFyIGhleD0iIjtmb3IodmFyIGk9MDtpPHZhbHVlLmxlbmd0aDtpKyspe2hleCs9SEVYW3ZhbHVlW2ldPj40XTtoZXgrPUhFWFt2YWx1ZVtpXSYxNV19bWVzc2FnZURldGFpbHMucHVzaChrZXkrIj1VaW50OEFycmF5KDB4IitoZXgrIikiKX1lbHNle21lc3NhZ2VEZXRhaWxzLnB1c2goa2V5KyI9IitKU09OLnN0cmluZ2lmeSh2YWx1ZSkpfX1jYXRjaChlcnJvcil7bWVzc2FnZURldGFpbHMucHVzaChrZXkrIj0iK0pTT04uc3RyaW5naWZ5KHBhcmFtc1trZXldLnRvU3RyaW5nKCkpKX19KTttZXNzYWdlRGV0YWlscy5wdXNoKCJjb2RlPSIrY29kZSk7bWVzc2FnZURldGFpbHMucHVzaCgidmVyc2lvbj0iK3RoaXMudmVyc2lvbik7dmFyIHJlYXNvbj1tZXNzYWdlO3ZhciB1cmw9IiI7c3dpdGNoKGNvZGUpe2Nhc2UgRXJyb3JDb2RlLk5VTUVSSUNfRkFVTFQ6e3VybD0iTlVNRVJJQ19GQVVMVCI7dmFyIGZhdWx0PW1lc3NhZ2U7c3dpdGNoKGZhdWx0KXtjYXNlIm92ZXJmbG93IjpjYXNlInVuZGVyZmxvdyI6Y2FzZSJkaXZpc2lvbi1ieS16ZXJvIjp1cmwrPSItIitmYXVsdDticmVhaztjYXNlIm5lZ2F0aXZlLXBvd2VyIjpjYXNlIm5lZ2F0aXZlLXdpZHRoIjp1cmwrPSItdW5zdXBwb3J0ZWQiO2JyZWFrO2Nhc2UidW5ib3VuZC1iaXR3aXNlLXJlc3VsdCI6dXJsKz0iLXVuYm91bmQtcmVzdWx0IjticmVha31icmVha31jYXNlIEVycm9yQ29kZS5DQUxMX0VYQ0VQVElPTjpjYXNlIEVycm9yQ29kZS5JTlNVRkZJQ0lFTlRfRlVORFM6Y2FzZSBFcnJvckNvZGUuTUlTU0lOR19ORVc6Y2FzZSBFcnJvckNvZGUuTk9OQ0VfRVhQSVJFRDpjYXNlIEVycm9yQ29kZS5SRVBMQUNFTUVOVF9VTkRFUlBSSUNFRDpjYXNlIEVycm9yQ29kZS5UUkFOU0FDVElPTl9SRVBMQUNFRDpjYXNlIEVycm9yQ29kZS5VTlBSRURJQ1RBQkxFX0dBU19MSU1JVDp1cmw9Y29kZTticmVha31pZih1cmwpe21lc3NhZ2UrPSIgWyBTZWU6IGh0dHBzOi8vbGlua3MuZXRoZXJzLm9yZy92NS1lcnJvcnMtIit1cmwrIiBdIn1pZihtZXNzYWdlRGV0YWlscy5sZW5ndGgpe21lc3NhZ2UrPSIgKCIrbWVzc2FnZURldGFpbHMuam9pbigiLCAiKSsiKSJ9dmFyIGVycm9yPW5ldyBFcnJvcihtZXNzYWdlKTtlcnJvci5yZWFzb249cmVhc29uO2Vycm9yLmNvZGU9Y29kZTtPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goZnVuY3Rpb24oa2V5KXtlcnJvcltrZXldPXBhcmFtc1trZXldfSk7cmV0dXJuIGVycm9yfTtMb2dnZXIucHJvdG90eXBlLnRocm93RXJyb3I9ZnVuY3Rpb24obWVzc2FnZSxjb2RlLHBhcmFtcyl7dGhyb3cgdGhpcy5tYWtlRXJyb3IobWVzc2FnZSxjb2RlLHBhcmFtcyl9O0xvZ2dlci5wcm90b3R5cGUudGhyb3dBcmd1bWVudEVycm9yPWZ1bmN0aW9uKG1lc3NhZ2UsbmFtZSx2YWx1ZSl7cmV0dXJuIHRoaXMudGhyb3dFcnJvcihtZXNzYWdlLExvZ2dlci5lcnJvcnMuSU5WQUxJRF9BUkdVTUVOVCx7YXJndW1lbnQ6bmFtZSx2YWx1ZTp2YWx1ZX0pfTtMb2dnZXIucHJvdG90eXBlLmFzc2VydD1mdW5jdGlvbihjb25kaXRpb24sbWVzc2FnZSxjb2RlLHBhcmFtcyl7aWYoISFjb25kaXRpb24pe3JldHVybn10aGlzLnRocm93RXJyb3IobWVzc2FnZSxjb2RlLHBhcmFtcyl9O0xvZ2dlci5wcm90b3R5cGUuYXNzZXJ0QXJndW1lbnQ9ZnVuY3Rpb24oY29uZGl0aW9uLG1lc3NhZ2UsbmFtZSx2YWx1ZSl7aWYoISFjb25kaXRpb24pe3JldHVybn10aGlzLnRocm93QXJndW1lbnRFcnJvcihtZXNzYWdlLG5hbWUsdmFsdWUpfTtMb2dnZXIucHJvdG90eXBlLmNoZWNrTm9ybWFsaXplPWZ1bmN0aW9uKG1lc3NhZ2Upe2lmKG1lc3NhZ2U9PW51bGwpe21lc3NhZ2U9InBsYXRmb3JtIG1pc3NpbmcgU3RyaW5nLnByb3RvdHlwZS5ub3JtYWxpemUifWlmKF9ub3JtYWxpemVFcnJvcil7dGhpcy50aHJvd0Vycm9yKCJwbGF0Zm9ybSBtaXNzaW5nIFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplIixMb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJTdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZSIsZm9ybTpfbm9ybWFsaXplRXJyb3J9KX19O0xvZ2dlci5wcm90b3R5cGUuY2hlY2tTYWZlVWludDUzPWZ1bmN0aW9uKHZhbHVlLG1lc3NhZ2Upe2lmKHR5cGVvZiB2YWx1ZSE9PSJudW1iZXIiKXtyZXR1cm59aWYobWVzc2FnZT09bnVsbCl7bWVzc2FnZT0idmFsdWUgbm90IHNhZmUifWlmKHZhbHVlPDB8fHZhbHVlPj05MDA3MTk5MjU0NzQwOTkxKXt0aGlzLnRocm93RXJyb3IobWVzc2FnZSxMb2dnZXIuZXJyb3JzLk5VTUVSSUNfRkFVTFQse29wZXJhdGlvbjoiY2hlY2tTYWZlSW50ZWdlciIsZmF1bHQ6Im91dC1vZi1zYWZlLXJhbmdlIix2YWx1ZTp2YWx1ZX0pfWlmKHZhbHVlJTEpe3RoaXMudGhyb3dFcnJvcihtZXNzYWdlLExvZ2dlci5lcnJvcnMuTlVNRVJJQ19GQVVMVCx7b3BlcmF0aW9uOiJjaGVja1NhZmVJbnRlZ2VyIixmYXVsdDoibm9uLWludGVnZXIiLHZhbHVlOnZhbHVlfSl9fTtMb2dnZXIucHJvdG90eXBlLmNoZWNrQXJndW1lbnRDb3VudD1mdW5jdGlvbihjb3VudCxleHBlY3RlZENvdW50LG1lc3NhZ2Upe2lmKG1lc3NhZ2Upe21lc3NhZ2U9IjogIittZXNzYWdlfWVsc2V7bWVzc2FnZT0iIn1pZihjb3VudDxleHBlY3RlZENvdW50KXt0aGlzLnRocm93RXJyb3IoIm1pc3NpbmcgYXJndW1lbnQiK21lc3NhZ2UsTG9nZ2VyLmVycm9ycy5NSVNTSU5HX0FSR1VNRU5ULHtjb3VudDpjb3VudCxleHBlY3RlZENvdW50OmV4cGVjdGVkQ291bnR9KX1pZihjb3VudD5leHBlY3RlZENvdW50KXt0aGlzLnRocm93RXJyb3IoInRvbyBtYW55IGFyZ3VtZW50cyIrbWVzc2FnZSxMb2dnZXIuZXJyb3JzLlVORVhQRUNURURfQVJHVU1FTlQse2NvdW50OmNvdW50LGV4cGVjdGVkQ291bnQ6ZXhwZWN0ZWRDb3VudH0pfX07TG9nZ2VyLnByb3RvdHlwZS5jaGVja05ldz1mdW5jdGlvbih0YXJnZXQsa2luZCl7aWYodGFyZ2V0PT09T2JqZWN0fHx0YXJnZXQ9PW51bGwpe3RoaXMudGhyb3dFcnJvcigibWlzc2luZyBuZXciLExvZ2dlci5lcnJvcnMuTUlTU0lOR19ORVcse25hbWU6a2luZC5uYW1lfSl9fTtMb2dnZXIucHJvdG90eXBlLmNoZWNrQWJzdHJhY3Q9ZnVuY3Rpb24odGFyZ2V0LGtpbmQpe2lmKHRhcmdldD09PWtpbmQpe3RoaXMudGhyb3dFcnJvcigiY2Fubm90IGluc3RhbnRpYXRlIGFic3RyYWN0IGNsYXNzICIrSlNPTi5zdHJpbmdpZnkoa2luZC5uYW1lKSsiIGRpcmVjdGx5OyB1c2UgYSBzdWItY2xhc3MiLExvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtuYW1lOnRhcmdldC5uYW1lLG9wZXJhdGlvbjoibmV3In0pfWVsc2UgaWYodGFyZ2V0PT09T2JqZWN0fHx0YXJnZXQ9PW51bGwpe3RoaXMudGhyb3dFcnJvcigibWlzc2luZyBuZXciLExvZ2dlci5lcnJvcnMuTUlTU0lOR19ORVcse25hbWU6a2luZC5uYW1lfSl9fTtMb2dnZXIuZ2xvYmFsTG9nZ2VyPWZ1bmN0aW9uKCl7aWYoIV9nbG9iYWxMb2dnZXIpe19nbG9iYWxMb2dnZXI9bmV3IExvZ2dlcihfdmVyc2lvbi52ZXJzaW9uKX1yZXR1cm4gX2dsb2JhbExvZ2dlcn07TG9nZ2VyLnNldENlbnNvcnNoaXA9ZnVuY3Rpb24oY2Vuc29yc2hpcCxwZXJtYW5lbnQpe2lmKCFjZW5zb3JzaGlwJiZwZXJtYW5lbnQpe3RoaXMuZ2xvYmFsTG9nZ2VyKCkudGhyb3dFcnJvcigiY2Fubm90IHBlcm1hbmVudGx5IGRpc2FibGUgY2Vuc29yc2hpcCIsTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoic2V0Q2Vuc29yc2hpcCJ9KX1pZihfcGVybWFuZW50Q2Vuc29yRXJyb3JzKXtpZighY2Vuc29yc2hpcCl7cmV0dXJufXRoaXMuZ2xvYmFsTG9nZ2VyKCkudGhyb3dFcnJvcigiZXJyb3IgY2Vuc29yc2hpcCBwZXJtYW5lbnQiLExvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246InNldENlbnNvcnNoaXAifSl9X2NlbnNvckVycm9ycz0hIWNlbnNvcnNoaXA7X3Blcm1hbmVudENlbnNvckVycm9ycz0hIXBlcm1hbmVudH07TG9nZ2VyLnNldExvZ0xldmVsPWZ1bmN0aW9uKGxvZ0xldmVsKXt2YXIgbGV2ZWw9TG9nTGV2ZWxzW2xvZ0xldmVsLnRvTG93ZXJDYXNlKCldO2lmKGxldmVsPT1udWxsKXtMb2dnZXIuZ2xvYmFsTG9nZ2VyKCkud2FybigiaW52YWxpZCBsb2cgbGV2ZWwgLSAiK2xvZ0xldmVsKTtyZXR1cm59X2xvZ0xldmVsPWxldmVsfTtMb2dnZXIuZnJvbT1mdW5jdGlvbih2ZXJzaW9uKXtyZXR1cm4gbmV3IExvZ2dlcih2ZXJzaW9uKX07TG9nZ2VyLmVycm9ycz1FcnJvckNvZGU7TG9nZ2VyLmxldmVscz1Mb2dMZXZlbDtyZXR1cm4gTG9nZ2VyfSgpO2V4cG9ydHMuTG9nZ2VyPUxvZ2dlcn0pO3ZhciBpbmRleD1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIpO3ZhciBfdmVyc2lvbiQyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249ImJ5dGVzLzUuNy4wIn0pO3ZhciBfdmVyc2lvbiQzPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJDIpO3ZhciBsaWIkMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuam9pblNpZ25hdHVyZT1leHBvcnRzLnNwbGl0U2lnbmF0dXJlPWV4cG9ydHMuaGV4WmVyb1BhZD1leHBvcnRzLmhleFN0cmlwWmVyb3M9ZXhwb3J0cy5oZXhWYWx1ZT1leHBvcnRzLmhleENvbmNhdD1leHBvcnRzLmhleERhdGFTbGljZT1leHBvcnRzLmhleERhdGFMZW5ndGg9ZXhwb3J0cy5oZXhsaWZ5PWV4cG9ydHMuaXNIZXhTdHJpbmc9ZXhwb3J0cy56ZXJvUGFkPWV4cG9ydHMuc3RyaXBaZXJvcz1leHBvcnRzLmNvbmNhdD1leHBvcnRzLmFycmF5aWZ5PWV4cG9ydHMuaXNCeXRlcz1leHBvcnRzLmlzQnl0ZXNMaWtlPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJDIudmVyc2lvbik7ZnVuY3Rpb24gaXNIZXhhYmxlKHZhbHVlKXtyZXR1cm4hIXZhbHVlLnRvSGV4U3RyaW5nfWZ1bmN0aW9uIGFkZFNsaWNlKGFycmF5KXtpZihhcnJheS5zbGljZSl7cmV0dXJuIGFycmF5fWFycmF5LnNsaWNlPWZ1bmN0aW9uKCl7dmFyIGFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gYWRkU2xpY2UobmV3IFVpbnQ4QXJyYXkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGFycmF5LGFyZ3MpKSl9O3JldHVybiBhcnJheX1mdW5jdGlvbiBpc0J5dGVzTGlrZSh2YWx1ZSl7cmV0dXJuIGlzSGV4U3RyaW5nKHZhbHVlKSYmISh2YWx1ZS5sZW5ndGglMil8fGlzQnl0ZXModmFsdWUpfWV4cG9ydHMuaXNCeXRlc0xpa2U9aXNCeXRlc0xpa2U7ZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKXtyZXR1cm4gdHlwZW9mIHZhbHVlPT09Im51bWJlciImJnZhbHVlPT12YWx1ZSYmdmFsdWUlMT09PTB9ZnVuY3Rpb24gaXNCeXRlcyh2YWx1ZSl7aWYodmFsdWU9PW51bGwpe3JldHVybiBmYWxzZX1pZih2YWx1ZS5jb25zdHJ1Y3Rvcj09PVVpbnQ4QXJyYXkpe3JldHVybiB0cnVlfWlmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtyZXR1cm4gZmFsc2V9aWYoIWlzSW50ZWdlcih2YWx1ZS5sZW5ndGgpfHx2YWx1ZS5sZW5ndGg8MCl7cmV0dXJuIGZhbHNlfWZvcih2YXIgaT0wO2k8dmFsdWUubGVuZ3RoO2krKyl7dmFyIHY9dmFsdWVbaV07aWYoIWlzSW50ZWdlcih2KXx8djwwfHx2Pj0yNTYpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9ZXhwb3J0cy5pc0J5dGVzPWlzQnl0ZXM7ZnVuY3Rpb24gYXJyYXlpZnkodmFsdWUsb3B0aW9ucyl7aWYoIW9wdGlvbnMpe29wdGlvbnM9e319aWYodHlwZW9mIHZhbHVlPT09Im51bWJlciIpe2xvZ2dlci5jaGVja1NhZmVVaW50NTModmFsdWUsImludmFsaWQgYXJyYXlpZnkgdmFsdWUiKTt2YXIgcmVzdWx0PVtdO3doaWxlKHZhbHVlKXtyZXN1bHQudW5zaGlmdCh2YWx1ZSYyNTUpO3ZhbHVlPXBhcnNlSW50KFN0cmluZyh2YWx1ZS8yNTYpKX1pZihyZXN1bHQubGVuZ3RoPT09MCl7cmVzdWx0LnB1c2goMCl9cmV0dXJuIGFkZFNsaWNlKG5ldyBVaW50OEFycmF5KHJlc3VsdCkpfWlmKG9wdGlvbnMuYWxsb3dNaXNzaW5nUHJlZml4JiZ0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIiYmdmFsdWUuc3Vic3RyaW5nKDAsMikhPT0iMHgiKXt2YWx1ZT0iMHgiK3ZhbHVlfWlmKGlzSGV4YWJsZSh2YWx1ZSkpe3ZhbHVlPXZhbHVlLnRvSGV4U3RyaW5nKCl9aWYoaXNIZXhTdHJpbmcodmFsdWUpKXt2YXIgaGV4PXZhbHVlLnN1YnN0cmluZygyKTtpZihoZXgubGVuZ3RoJTIpe2lmKG9wdGlvbnMuaGV4UGFkPT09ImxlZnQiKXtoZXg9IjAiK2hleH1lbHNlIGlmKG9wdGlvbnMuaGV4UGFkPT09InJpZ2h0Iil7aGV4Kz0iMCJ9ZWxzZXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJoZXggZGF0YSBpcyBvZGQtbGVuZ3RoIiwidmFsdWUiLHZhbHVlKX19dmFyIHJlc3VsdD1bXTtmb3IodmFyIGk9MDtpPGhleC5sZW5ndGg7aSs9Mil7cmVzdWx0LnB1c2gocGFyc2VJbnQoaGV4LnN1YnN0cmluZyhpLGkrMiksMTYpKX1yZXR1cm4gYWRkU2xpY2UobmV3IFVpbnQ4QXJyYXkocmVzdWx0KSl9aWYoaXNCeXRlcyh2YWx1ZSkpe3JldHVybiBhZGRTbGljZShuZXcgVWludDhBcnJheSh2YWx1ZSkpfXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGFycmF5aWZ5IHZhbHVlIiwidmFsdWUiLHZhbHVlKX1leHBvcnRzLmFycmF5aWZ5PWFycmF5aWZ5O2Z1bmN0aW9uIGNvbmNhdChpdGVtcyl7dmFyIG9iamVjdHM9aXRlbXMubWFwKGZ1bmN0aW9uKGl0ZW0pe3JldHVybiBhcnJheWlmeShpdGVtKX0pO3ZhciBsZW5ndGg9b2JqZWN0cy5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0saXRlbSl7cmV0dXJuIGFjY3VtK2l0ZW0ubGVuZ3RofSwwKTt2YXIgcmVzdWx0PW5ldyBVaW50OEFycmF5KGxlbmd0aCk7b2JqZWN0cy5yZWR1Y2UoZnVuY3Rpb24ob2Zmc2V0LG9iamVjdCl7cmVzdWx0LnNldChvYmplY3Qsb2Zmc2V0KTtyZXR1cm4gb2Zmc2V0K29iamVjdC5sZW5ndGh9LDApO3JldHVybiBhZGRTbGljZShyZXN1bHQpfWV4cG9ydHMuY29uY2F0PWNvbmNhdDtmdW5jdGlvbiBzdHJpcFplcm9zKHZhbHVlKXt2YXIgcmVzdWx0PWFycmF5aWZ5KHZhbHVlKTtpZihyZXN1bHQubGVuZ3RoPT09MCl7cmV0dXJuIHJlc3VsdH12YXIgc3RhcnQ9MDt3aGlsZShzdGFydDxyZXN1bHQubGVuZ3RoJiZyZXN1bHRbc3RhcnRdPT09MCl7c3RhcnQrK31pZihzdGFydCl7cmVzdWx0PXJlc3VsdC5zbGljZShzdGFydCl9cmV0dXJuIHJlc3VsdH1leHBvcnRzLnN0cmlwWmVyb3M9c3RyaXBaZXJvcztmdW5jdGlvbiB6ZXJvUGFkKHZhbHVlLGxlbmd0aCl7dmFsdWU9YXJyYXlpZnkodmFsdWUpO2lmKHZhbHVlLmxlbmd0aD5sZW5ndGgpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInZhbHVlIG91dCBvZiByYW5nZSIsInZhbHVlIixhcmd1bWVudHNbMF0pfXZhciByZXN1bHQ9bmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTtyZXN1bHQuc2V0KHZhbHVlLGxlbmd0aC12YWx1ZS5sZW5ndGgpO3JldHVybiBhZGRTbGljZShyZXN1bHQpfWV4cG9ydHMuemVyb1BhZD16ZXJvUGFkO2Z1bmN0aW9uIGlzSGV4U3RyaW5nKHZhbHVlLGxlbmd0aCl7aWYodHlwZW9mIHZhbHVlIT09InN0cmluZyJ8fCF2YWx1ZS5tYXRjaCgvXjB4WzAtOUEtRmEtZl0qJC8pKXtyZXR1cm4gZmFsc2V9aWYobGVuZ3RoJiZ2YWx1ZS5sZW5ndGghPT0yKzIqbGVuZ3RoKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9ZXhwb3J0cy5pc0hleFN0cmluZz1pc0hleFN0cmluZzt2YXIgSGV4Q2hhcmFjdGVycz0iMDEyMzQ1Njc4OWFiY2RlZiI7ZnVuY3Rpb24gaGV4bGlmeSh2YWx1ZSxvcHRpb25zKXtpZighb3B0aW9ucyl7b3B0aW9ucz17fX1pZih0eXBlb2YgdmFsdWU9PT0ibnVtYmVyIil7bG9nZ2VyLmNoZWNrU2FmZVVpbnQ1Myh2YWx1ZSwiaW52YWxpZCBoZXhsaWZ5IHZhbHVlIik7dmFyIGhleD0iIjt3aGlsZSh2YWx1ZSl7aGV4PUhleENoYXJhY3RlcnNbdmFsdWUmMTVdK2hleDt2YWx1ZT1NYXRoLmZsb29yKHZhbHVlLzE2KX1pZihoZXgubGVuZ3RoKXtpZihoZXgubGVuZ3RoJTIpe2hleD0iMCIraGV4fXJldHVybiIweCIraGV4fXJldHVybiIweDAwIn1pZih0eXBlb2YgdmFsdWU9PT0iYmlnaW50Iil7dmFsdWU9dmFsdWUudG9TdHJpbmcoMTYpO2lmKHZhbHVlLmxlbmd0aCUyKXtyZXR1cm4iMHgwIit2YWx1ZX1yZXR1cm4iMHgiK3ZhbHVlfWlmKG9wdGlvbnMuYWxsb3dNaXNzaW5nUHJlZml4JiZ0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIiYmdmFsdWUuc3Vic3RyaW5nKDAsMikhPT0iMHgiKXt2YWx1ZT0iMHgiK3ZhbHVlfWlmKGlzSGV4YWJsZSh2YWx1ZSkpe3JldHVybiB2YWx1ZS50b0hleFN0cmluZygpfWlmKGlzSGV4U3RyaW5nKHZhbHVlKSl7aWYodmFsdWUubGVuZ3RoJTIpe2lmKG9wdGlvbnMuaGV4UGFkPT09ImxlZnQiKXt2YWx1ZT0iMHgwIit2YWx1ZS5zdWJzdHJpbmcoMil9ZWxzZSBpZihvcHRpb25zLmhleFBhZD09PSJyaWdodCIpe3ZhbHVlKz0iMCJ9ZWxzZXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJoZXggZGF0YSBpcyBvZGQtbGVuZ3RoIiwidmFsdWUiLHZhbHVlKX19cmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCl9aWYoaXNCeXRlcyh2YWx1ZSkpe3ZhciByZXN1bHQ9IjB4Ijtmb3IodmFyIGk9MDtpPHZhbHVlLmxlbmd0aDtpKyspe3ZhciB2PXZhbHVlW2ldO3Jlc3VsdCs9SGV4Q2hhcmFjdGVyc1sodiYyNDApPj40XStIZXhDaGFyYWN0ZXJzW3YmMTVdfXJldHVybiByZXN1bHR9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgaGV4bGlmeSB2YWx1ZSIsInZhbHVlIix2YWx1ZSl9ZXhwb3J0cy5oZXhsaWZ5PWhleGxpZnk7ZnVuY3Rpb24gaGV4RGF0YUxlbmd0aChkYXRhKXtpZih0eXBlb2YgZGF0YSE9PSJzdHJpbmciKXtkYXRhPWhleGxpZnkoZGF0YSl9ZWxzZSBpZighaXNIZXhTdHJpbmcoZGF0YSl8fGRhdGEubGVuZ3RoJTIpe3JldHVybiBudWxsfXJldHVybihkYXRhLmxlbmd0aC0yKS8yfWV4cG9ydHMuaGV4RGF0YUxlbmd0aD1oZXhEYXRhTGVuZ3RoO2Z1bmN0aW9uIGhleERhdGFTbGljZShkYXRhLG9mZnNldCxlbmRPZmZzZXQpe2lmKHR5cGVvZiBkYXRhIT09InN0cmluZyIpe2RhdGE9aGV4bGlmeShkYXRhKX1lbHNlIGlmKCFpc0hleFN0cmluZyhkYXRhKXx8ZGF0YS5sZW5ndGglMil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBoZXhEYXRhIiwidmFsdWUiLGRhdGEpfW9mZnNldD0yKzIqb2Zmc2V0O2lmKGVuZE9mZnNldCE9bnVsbCl7cmV0dXJuIjB4IitkYXRhLnN1YnN0cmluZyhvZmZzZXQsMisyKmVuZE9mZnNldCl9cmV0dXJuIjB4IitkYXRhLnN1YnN0cmluZyhvZmZzZXQpfWV4cG9ydHMuaGV4RGF0YVNsaWNlPWhleERhdGFTbGljZTtmdW5jdGlvbiBoZXhDb25jYXQoaXRlbXMpe3ZhciByZXN1bHQ9IjB4IjtpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pe3Jlc3VsdCs9aGV4bGlmeShpdGVtKS5zdWJzdHJpbmcoMil9KTtyZXR1cm4gcmVzdWx0fWV4cG9ydHMuaGV4Q29uY2F0PWhleENvbmNhdDtmdW5jdGlvbiBoZXhWYWx1ZSh2YWx1ZSl7dmFyIHRyaW1tZWQ9aGV4U3RyaXBaZXJvcyhoZXhsaWZ5KHZhbHVlLHtoZXhQYWQ6ImxlZnQifSkpO2lmKHRyaW1tZWQ9PT0iMHgiKXtyZXR1cm4iMHgwIn1yZXR1cm4gdHJpbW1lZH1leHBvcnRzLmhleFZhbHVlPWhleFZhbHVlO2Z1bmN0aW9uIGhleFN0cmlwWmVyb3ModmFsdWUpe2lmKHR5cGVvZiB2YWx1ZSE9PSJzdHJpbmciKXt2YWx1ZT1oZXhsaWZ5KHZhbHVlKX1pZighaXNIZXhTdHJpbmcodmFsdWUpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGhleCBzdHJpbmciLCJ2YWx1ZSIsdmFsdWUpfXZhbHVlPXZhbHVlLnN1YnN0cmluZygyKTt2YXIgb2Zmc2V0PTA7d2hpbGUob2Zmc2V0PHZhbHVlLmxlbmd0aCYmdmFsdWVbb2Zmc2V0XT09PSIwIil7b2Zmc2V0Kyt9cmV0dXJuIjB4Iit2YWx1ZS5zdWJzdHJpbmcob2Zmc2V0KX1leHBvcnRzLmhleFN0cmlwWmVyb3M9aGV4U3RyaXBaZXJvcztmdW5jdGlvbiBoZXhaZXJvUGFkKHZhbHVlLGxlbmd0aCl7aWYodHlwZW9mIHZhbHVlIT09InN0cmluZyIpe3ZhbHVlPWhleGxpZnkodmFsdWUpfWVsc2UgaWYoIWlzSGV4U3RyaW5nKHZhbHVlKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBoZXggc3RyaW5nIiwidmFsdWUiLHZhbHVlKX1pZih2YWx1ZS5sZW5ndGg+MipsZW5ndGgrMil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidmFsdWUgb3V0IG9mIHJhbmdlIiwidmFsdWUiLGFyZ3VtZW50c1sxXSl9d2hpbGUodmFsdWUubGVuZ3RoPDIqbGVuZ3RoKzIpe3ZhbHVlPSIweDAiK3ZhbHVlLnN1YnN0cmluZygyKX1yZXR1cm4gdmFsdWV9ZXhwb3J0cy5oZXhaZXJvUGFkPWhleFplcm9QYWQ7ZnVuY3Rpb24gc3BsaXRTaWduYXR1cmUoc2lnbmF0dXJlKXt2YXIgcmVzdWx0PXtyOiIweCIsczoiMHgiLF92czoiMHgiLHJlY292ZXJ5UGFyYW06MCx2OjAseVBhcml0eUFuZFM6IjB4Iixjb21wYWN0OiIweCJ9O2lmKGlzQnl0ZXNMaWtlKHNpZ25hdHVyZSkpe3ZhciBieXRlcz1hcnJheWlmeShzaWduYXR1cmUpO2lmKGJ5dGVzLmxlbmd0aD09PTY0KXtyZXN1bHQudj0yNysoYnl0ZXNbMzJdPj43KTtieXRlc1szMl0mPTEyNztyZXN1bHQucj1oZXhsaWZ5KGJ5dGVzLnNsaWNlKDAsMzIpKTtyZXN1bHQucz1oZXhsaWZ5KGJ5dGVzLnNsaWNlKDMyLDY0KSl9ZWxzZSBpZihieXRlcy5sZW5ndGg9PT02NSl7cmVzdWx0LnI9aGV4bGlmeShieXRlcy5zbGljZSgwLDMyKSk7cmVzdWx0LnM9aGV4bGlmeShieXRlcy5zbGljZSgzMiw2NCkpO3Jlc3VsdC52PWJ5dGVzWzY0XX1lbHNle2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgc2lnbmF0dXJlIHN0cmluZyIsInNpZ25hdHVyZSIsc2lnbmF0dXJlKX1pZihyZXN1bHQudjwyNyl7aWYocmVzdWx0LnY9PT0wfHxyZXN1bHQudj09PTEpe3Jlc3VsdC52Kz0yN31lbHNle2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInNpZ25hdHVyZSBpbnZhbGlkIHYgYnl0ZSIsInNpZ25hdHVyZSIsc2lnbmF0dXJlKX19cmVzdWx0LnJlY292ZXJ5UGFyYW09MS1yZXN1bHQudiUyO2lmKHJlc3VsdC5yZWNvdmVyeVBhcmFtKXtieXRlc1szMl18PTEyOH1yZXN1bHQuX3ZzPWhleGxpZnkoYnl0ZXMuc2xpY2UoMzIsNjQpKX1lbHNle3Jlc3VsdC5yPXNpZ25hdHVyZS5yO3Jlc3VsdC5zPXNpZ25hdHVyZS5zO3Jlc3VsdC52PXNpZ25hdHVyZS52O3Jlc3VsdC5yZWNvdmVyeVBhcmFtPXNpZ25hdHVyZS5yZWNvdmVyeVBhcmFtO3Jlc3VsdC5fdnM9c2lnbmF0dXJlLl92cztpZihyZXN1bHQuX3ZzIT1udWxsKXt2YXIgdnNfMT16ZXJvUGFkKGFycmF5aWZ5KHJlc3VsdC5fdnMpLDMyKTtyZXN1bHQuX3ZzPWhleGxpZnkodnNfMSk7dmFyIHJlY292ZXJ5UGFyYW09dnNfMVswXT49MTI4PzE6MDtpZihyZXN1bHQucmVjb3ZlcnlQYXJhbT09bnVsbCl7cmVzdWx0LnJlY292ZXJ5UGFyYW09cmVjb3ZlcnlQYXJhbX1lbHNlIGlmKHJlc3VsdC5yZWNvdmVyeVBhcmFtIT09cmVjb3ZlcnlQYXJhbSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigic2lnbmF0dXJlIHJlY292ZXJ5UGFyYW0gbWlzbWF0Y2ggX3ZzIiwic2lnbmF0dXJlIixzaWduYXR1cmUpfXZzXzFbMF0mPTEyNzt2YXIgcz1oZXhsaWZ5KHZzXzEpO2lmKHJlc3VsdC5zPT1udWxsKXtyZXN1bHQucz1zfWVsc2UgaWYocmVzdWx0LnMhPT1zKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJzaWduYXR1cmUgdiBtaXNtYXRjaCBfdnMiLCJzaWduYXR1cmUiLHNpZ25hdHVyZSl9fWlmKHJlc3VsdC5yZWNvdmVyeVBhcmFtPT1udWxsKXtpZihyZXN1bHQudj09bnVsbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigic2lnbmF0dXJlIG1pc3NpbmcgdiBhbmQgcmVjb3ZlcnlQYXJhbSIsInNpZ25hdHVyZSIsc2lnbmF0dXJlKX1lbHNlIGlmKHJlc3VsdC52PT09MHx8cmVzdWx0LnY9PT0xKXtyZXN1bHQucmVjb3ZlcnlQYXJhbT1yZXN1bHQudn1lbHNle3Jlc3VsdC5yZWNvdmVyeVBhcmFtPTEtcmVzdWx0LnYlMn19ZWxzZXtpZihyZXN1bHQudj09bnVsbCl7cmVzdWx0LnY9MjcrcmVzdWx0LnJlY292ZXJ5UGFyYW19ZWxzZXt2YXIgcmVjSWQ9cmVzdWx0LnY9PT0wfHxyZXN1bHQudj09PTE/cmVzdWx0LnY6MS1yZXN1bHQudiUyO2lmKHJlc3VsdC5yZWNvdmVyeVBhcmFtIT09cmVjSWQpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInNpZ25hdHVyZSByZWNvdmVyeVBhcmFtIG1pc21hdGNoIHYiLCJzaWduYXR1cmUiLHNpZ25hdHVyZSl9fX1pZihyZXN1bHQucj09bnVsbHx8IWlzSGV4U3RyaW5nKHJlc3VsdC5yKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigic2lnbmF0dXJlIG1pc3Npbmcgb3IgaW52YWxpZCByIiwic2lnbmF0dXJlIixzaWduYXR1cmUpfWVsc2V7cmVzdWx0LnI9aGV4WmVyb1BhZChyZXN1bHQuciwzMil9aWYocmVzdWx0LnM9PW51bGx8fCFpc0hleFN0cmluZyhyZXN1bHQucykpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInNpZ25hdHVyZSBtaXNzaW5nIG9yIGludmFsaWQgcyIsInNpZ25hdHVyZSIsc2lnbmF0dXJlKX1lbHNle3Jlc3VsdC5zPWhleFplcm9QYWQocmVzdWx0LnMsMzIpfXZhciB2cz1hcnJheWlmeShyZXN1bHQucyk7aWYodnNbMF0+PTEyOCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigic2lnbmF0dXJlIHMgb3V0IG9mIHJhbmdlIiwic2lnbmF0dXJlIixzaWduYXR1cmUpfWlmKHJlc3VsdC5yZWNvdmVyeVBhcmFtKXt2c1swXXw9MTI4fXZhciBfdnM9aGV4bGlmeSh2cyk7aWYocmVzdWx0Ll92cyl7aWYoIWlzSGV4U3RyaW5nKHJlc3VsdC5fdnMpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJzaWduYXR1cmUgaW52YWxpZCBfdnMiLCJzaWduYXR1cmUiLHNpZ25hdHVyZSl9cmVzdWx0Ll92cz1oZXhaZXJvUGFkKHJlc3VsdC5fdnMsMzIpfWlmKHJlc3VsdC5fdnM9PW51bGwpe3Jlc3VsdC5fdnM9X3ZzfWVsc2UgaWYocmVzdWx0Ll92cyE9PV92cyl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigic2lnbmF0dXJlIF92cyBtaXNtYXRjaCB2IGFuZCBzIiwic2lnbmF0dXJlIixzaWduYXR1cmUpfX1yZXN1bHQueVBhcml0eUFuZFM9cmVzdWx0Ll92cztyZXN1bHQuY29tcGFjdD1yZXN1bHQucityZXN1bHQueVBhcml0eUFuZFMuc3Vic3RyaW5nKDIpO3JldHVybiByZXN1bHR9ZXhwb3J0cy5zcGxpdFNpZ25hdHVyZT1zcGxpdFNpZ25hdHVyZTtmdW5jdGlvbiBqb2luU2lnbmF0dXJlKHNpZ25hdHVyZSl7c2lnbmF0dXJlPXNwbGl0U2lnbmF0dXJlKHNpZ25hdHVyZSk7cmV0dXJuIGhleGxpZnkoY29uY2F0KFtzaWduYXR1cmUucixzaWduYXR1cmUucyxzaWduYXR1cmUucmVjb3ZlcnlQYXJhbT8iMHgxYyI6IjB4MWIiXSkpfWV4cG9ydHMuam9pblNpZ25hdHVyZT1qb2luU2lnbmF0dXJlfSk7dmFyIGluZGV4JDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJDEpO3ZhciBfdmVyc2lvbiQ0PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249ImJpZ251bWJlci81LjcuMCJ9KTt2YXIgX3ZlcnNpb24kNT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiQ0KTt2YXIgYmlnbnVtYmVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9faW1wb3J0RGVmYXVsdD1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihtb2Qpe3JldHVybiBtb2QmJm1vZC5fX2VzTW9kdWxlP21vZDp7ZGVmYXVsdDptb2R9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLl9iYXNlMTZUbzM2PWV4cG9ydHMuX2Jhc2UzNlRvMTY9ZXhwb3J0cy5CaWdOdW1iZXI9ZXhwb3J0cy5pc0JpZ051bWJlcmlzaD12b2lkIDA7dmFyIGJuX2pzXzE9X19pbXBvcnREZWZhdWx0KGJuKTt2YXIgQk49Ym5fanNfMS5kZWZhdWx0LkJOO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kNC52ZXJzaW9uKTt2YXIgX2NvbnN0cnVjdG9yR3VhcmQ9e307dmFyIE1BWF9TQUZFPTkwMDcxOTkyNTQ3NDA5OTE7ZnVuY3Rpb24gaXNCaWdOdW1iZXJpc2godmFsdWUpe3JldHVybiB2YWx1ZSE9bnVsbCYmKEJpZ051bWJlci5pc0JpZ051bWJlcih2YWx1ZSl8fHR5cGVvZiB2YWx1ZT09PSJudW1iZXIiJiZ2YWx1ZSUxPT09MHx8dHlwZW9mIHZhbHVlPT09InN0cmluZyImJiEhdmFsdWUubWF0Y2goL14tP1swLTldKyQvKXx8KDAsbGliJDEuaXNIZXhTdHJpbmcpKHZhbHVlKXx8dHlwZW9mIHZhbHVlPT09ImJpZ2ludCJ8fCgwLGxpYiQxLmlzQnl0ZXMpKHZhbHVlKSl9ZXhwb3J0cy5pc0JpZ051bWJlcmlzaD1pc0JpZ051bWJlcmlzaDt2YXIgX3dhcm5lZFRvU3RyaW5nUmFkaXg9ZmFsc2U7dmFyIEJpZ051bWJlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIEJpZ051bWJlcihjb25zdHJ1Y3Rvckd1YXJkLGhleCl7aWYoY29uc3RydWN0b3JHdWFyZCE9PV9jb25zdHJ1Y3Rvckd1YXJkKXtsb2dnZXIudGhyb3dFcnJvcigiY2Fubm90IGNhbGwgY29uc3RydWN0b3IgZGlyZWN0bHk7IHVzZSBCaWdOdW1iZXIuZnJvbSIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246Im5ldyAoQmlnTnVtYmVyKSJ9KX10aGlzLl9oZXg9aGV4O3RoaXMuX2lzQmlnTnVtYmVyPXRydWU7T2JqZWN0LmZyZWV6ZSh0aGlzKX1CaWdOdW1iZXIucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gdG9CaWdOdW1iZXIodG9CTih0aGlzKS5mcm9tVHdvcyh2YWx1ZSkpfTtCaWdOdW1iZXIucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHRvQmlnTnVtYmVyKHRvQk4odGhpcykudG9Ud29zKHZhbHVlKSl9O0JpZ051bWJlci5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7aWYodGhpcy5faGV4WzBdPT09Ii0iKXtyZXR1cm4gQmlnTnVtYmVyLmZyb20odGhpcy5faGV4LnN1YnN0cmluZygxKSl9cmV0dXJuIHRoaXN9O0JpZ051bWJlci5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdG9CaWdOdW1iZXIodG9CTih0aGlzKS5hZGQodG9CTihvdGhlcikpKX07QmlnTnVtYmVyLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0b0JpZ051bWJlcih0b0JOKHRoaXMpLnN1Yih0b0JOKG90aGVyKSkpfTtCaWdOdW1iZXIucHJvdG90eXBlLmRpdj1mdW5jdGlvbihvdGhlcil7dmFyIG89QmlnTnVtYmVyLmZyb20ob3RoZXIpO2lmKG8uaXNaZXJvKCkpe3Rocm93RmF1bHQoImRpdmlzaW9uLWJ5LXplcm8iLCJkaXYiKX1yZXR1cm4gdG9CaWdOdW1iZXIodG9CTih0aGlzKS5kaXYodG9CTihvdGhlcikpKX07QmlnTnVtYmVyLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24ob3RoZXIpe3JldHVybiB0b0JpZ051bWJlcih0b0JOKHRoaXMpLm11bCh0b0JOKG90aGVyKSkpfTtCaWdOdW1iZXIucHJvdG90eXBlLm1vZD1mdW5jdGlvbihvdGhlcil7dmFyIHZhbHVlPXRvQk4ob3RoZXIpO2lmKHZhbHVlLmlzTmVnKCkpe3Rocm93RmF1bHQoImRpdmlzaW9uLWJ5LXplcm8iLCJtb2QiKX1yZXR1cm4gdG9CaWdOdW1iZXIodG9CTih0aGlzKS51bW9kKHZhbHVlKSl9O0JpZ051bWJlci5wcm90b3R5cGUucG93PWZ1bmN0aW9uKG90aGVyKXt2YXIgdmFsdWU9dG9CTihvdGhlcik7aWYodmFsdWUuaXNOZWcoKSl7dGhyb3dGYXVsdCgibmVnYXRpdmUtcG93ZXIiLCJwb3ciKX1yZXR1cm4gdG9CaWdOdW1iZXIodG9CTih0aGlzKS5wb3codmFsdWUpKX07QmlnTnVtYmVyLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24ob3RoZXIpe3ZhciB2YWx1ZT10b0JOKG90aGVyKTtpZih0aGlzLmlzTmVnYXRpdmUoKXx8dmFsdWUuaXNOZWcoKSl7dGhyb3dGYXVsdCgidW5ib3VuZC1iaXR3aXNlLXJlc3VsdCIsImFuZCIpfXJldHVybiB0b0JpZ051bWJlcih0b0JOKHRoaXMpLmFuZCh2YWx1ZSkpfTtCaWdOdW1iZXIucHJvdG90eXBlLm9yPWZ1bmN0aW9uKG90aGVyKXt2YXIgdmFsdWU9dG9CTihvdGhlcik7aWYodGhpcy5pc05lZ2F0aXZlKCl8fHZhbHVlLmlzTmVnKCkpe3Rocm93RmF1bHQoInVuYm91bmQtYml0d2lzZS1yZXN1bHQiLCJvciIpfXJldHVybiB0b0JpZ051bWJlcih0b0JOKHRoaXMpLm9yKHZhbHVlKSl9O0JpZ051bWJlci5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKG90aGVyKXt2YXIgdmFsdWU9dG9CTihvdGhlcik7aWYodGhpcy5pc05lZ2F0aXZlKCl8fHZhbHVlLmlzTmVnKCkpe3Rocm93RmF1bHQoInVuYm91bmQtYml0d2lzZS1yZXN1bHQiLCJ4b3IiKX1yZXR1cm4gdG9CaWdOdW1iZXIodG9CTih0aGlzKS54b3IodmFsdWUpKX07QmlnTnVtYmVyLnByb3RvdHlwZS5tYXNrPWZ1bmN0aW9uKHZhbHVlKXtpZih0aGlzLmlzTmVnYXRpdmUoKXx8dmFsdWU8MCl7dGhyb3dGYXVsdCgibmVnYXRpdmUtd2lkdGgiLCJtYXNrIil9cmV0dXJuIHRvQmlnTnVtYmVyKHRvQk4odGhpcykubWFza24odmFsdWUpKX07QmlnTnVtYmVyLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24odmFsdWUpe2lmKHRoaXMuaXNOZWdhdGl2ZSgpfHx2YWx1ZTwwKXt0aHJvd0ZhdWx0KCJuZWdhdGl2ZS13aWR0aCIsInNobCIpfXJldHVybiB0b0JpZ051bWJlcih0b0JOKHRoaXMpLnNobG4odmFsdWUpKX07QmlnTnVtYmVyLnByb3RvdHlwZS5zaHI9ZnVuY3Rpb24odmFsdWUpe2lmKHRoaXMuaXNOZWdhdGl2ZSgpfHx2YWx1ZTwwKXt0aHJvd0ZhdWx0KCJuZWdhdGl2ZS13aWR0aCIsInNociIpfXJldHVybiB0b0JpZ051bWJlcih0b0JOKHRoaXMpLnNocm4odmFsdWUpKX07QmlnTnVtYmVyLnByb3RvdHlwZS5lcT1mdW5jdGlvbihvdGhlcil7cmV0dXJuIHRvQk4odGhpcykuZXEodG9CTihvdGhlcikpfTtCaWdOdW1iZXIucHJvdG90eXBlLmx0PWZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdG9CTih0aGlzKS5sdCh0b0JOKG90aGVyKSl9O0JpZ051bWJlci5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdG9CTih0aGlzKS5sdGUodG9CTihvdGhlcikpfTtCaWdOdW1iZXIucHJvdG90eXBlLmd0PWZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdG9CTih0aGlzKS5ndCh0b0JOKG90aGVyKSl9O0JpZ051bWJlci5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKG90aGVyKXtyZXR1cm4gdG9CTih0aGlzKS5ndGUodG9CTihvdGhlcikpfTtCaWdOdW1iZXIucHJvdG90eXBlLmlzTmVnYXRpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGV4WzBdPT09Ii0ifTtCaWdOdW1iZXIucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiB0b0JOKHRoaXMpLmlzWmVybygpfTtCaWdOdW1iZXIucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0b0JOKHRoaXMpLnRvTnVtYmVyKCl9Y2F0Y2goZXJyb3Ipe3Rocm93RmF1bHQoIm92ZXJmbG93IiwidG9OdW1iZXIiLHRoaXMudG9TdHJpbmcoKSl9cmV0dXJuIG51bGx9O0JpZ051bWJlci5wcm90b3R5cGUudG9CaWdJbnQ9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEJpZ0ludCh0aGlzLnRvU3RyaW5nKCkpfWNhdGNoKGUpe31yZXR1cm4gbG9nZ2VyLnRocm93RXJyb3IoInRoaXMgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCBCaWdJbnQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7dmFsdWU6dGhpcy50b1N0cmluZygpfSl9O0JpZ051bWJlci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtpZihhcmd1bWVudHMubGVuZ3RoPjApe2lmKGFyZ3VtZW50c1swXT09PTEwKXtpZighX3dhcm5lZFRvU3RyaW5nUmFkaXgpe193YXJuZWRUb1N0cmluZ1JhZGl4PXRydWU7bG9nZ2VyLndhcm4oIkJpZ051bWJlci50b1N0cmluZyBkb2VzIG5vdCBhY2NlcHQgYW55IHBhcmFtZXRlcnM7IGJhc2UtMTAgaXMgYXNzdW1lZCIpfX1lbHNlIGlmKGFyZ3VtZW50c1swXT09PTE2KXtsb2dnZXIudGhyb3dFcnJvcigiQmlnTnVtYmVyLnRvU3RyaW5nIGRvZXMgbm90IGFjY2VwdCBhbnkgcGFyYW1ldGVyczsgdXNlIGJpZ051bWJlci50b0hleFN0cmluZygpIixsaWIuTG9nZ2VyLmVycm9ycy5VTkVYUEVDVEVEX0FSR1VNRU5ULHt9KX1lbHNle2xvZ2dlci50aHJvd0Vycm9yKCJCaWdOdW1iZXIudG9TdHJpbmcgZG9lcyBub3QgYWNjZXB0IHBhcmFtZXRlcnMiLGxpYi5Mb2dnZXIuZXJyb3JzLlVORVhQRUNURURfQVJHVU1FTlQse30pfX1yZXR1cm4gdG9CTih0aGlzKS50b1N0cmluZygxMCl9O0JpZ051bWJlci5wcm90b3R5cGUudG9IZXhTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGV4fTtCaWdOdW1iZXIucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihrZXkpe3JldHVybnt0eXBlOiJCaWdOdW1iZXIiLGhleDp0aGlzLnRvSGV4U3RyaW5nKCl9fTtCaWdOdW1iZXIuZnJvbT1mdW5jdGlvbih2YWx1ZSl7aWYodmFsdWUgaW5zdGFuY2VvZiBCaWdOdW1iZXIpe3JldHVybiB2YWx1ZX1pZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7aWYodmFsdWUubWF0Y2goL14tPzB4WzAtOWEtZl0rJC9pKSl7cmV0dXJuIG5ldyBCaWdOdW1iZXIoX2NvbnN0cnVjdG9yR3VhcmQsdG9IZXgodmFsdWUpKX1pZih2YWx1ZS5tYXRjaCgvXi0/WzAtOV0rJC8pKXtyZXR1cm4gbmV3IEJpZ051bWJlcihfY29uc3RydWN0b3JHdWFyZCx0b0hleChuZXcgQk4odmFsdWUpKSl9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgQmlnTnVtYmVyIHN0cmluZyIsInZhbHVlIix2YWx1ZSl9aWYodHlwZW9mIHZhbHVlPT09Im51bWJlciIpe2lmKHZhbHVlJTEpe3Rocm93RmF1bHQoInVuZGVyZmxvdyIsIkJpZ051bWJlci5mcm9tIix2YWx1ZSl9aWYodmFsdWU+PU1BWF9TQUZFfHx2YWx1ZTw9LU1BWF9TQUZFKXt0aHJvd0ZhdWx0KCJvdmVyZmxvdyIsIkJpZ051bWJlci5mcm9tIix2YWx1ZSl9cmV0dXJuIEJpZ051bWJlci5mcm9tKFN0cmluZyh2YWx1ZSkpfXZhciBhbnlWYWx1ZT12YWx1ZTtpZih0eXBlb2YgYW55VmFsdWU9PT0iYmlnaW50Iil7cmV0dXJuIEJpZ051bWJlci5mcm9tKGFueVZhbHVlLnRvU3RyaW5nKCkpfWlmKCgwLGxpYiQxLmlzQnl0ZXMpKGFueVZhbHVlKSl7cmV0dXJuIEJpZ051bWJlci5mcm9tKCgwLGxpYiQxLmhleGxpZnkpKGFueVZhbHVlKSl9aWYoYW55VmFsdWUpe2lmKGFueVZhbHVlLnRvSGV4U3RyaW5nKXt2YXIgaGV4PWFueVZhbHVlLnRvSGV4U3RyaW5nKCk7aWYodHlwZW9mIGhleD09PSJzdHJpbmciKXtyZXR1cm4gQmlnTnVtYmVyLmZyb20oaGV4KX19ZWxzZXt2YXIgaGV4PWFueVZhbHVlLl9oZXg7aWYoaGV4PT1udWxsJiZhbnlWYWx1ZS50eXBlPT09IkJpZ051bWJlciIpe2hleD1hbnlWYWx1ZS5oZXh9aWYodHlwZW9mIGhleD09PSJzdHJpbmciKXtpZigoMCxsaWIkMS5pc0hleFN0cmluZykoaGV4KXx8aGV4WzBdPT09Ii0iJiYoMCxsaWIkMS5pc0hleFN0cmluZykoaGV4LnN1YnN0cmluZygxKSkpe3JldHVybiBCaWdOdW1iZXIuZnJvbShoZXgpfX19fXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIEJpZ051bWJlciB2YWx1ZSIsInZhbHVlIix2YWx1ZSl9O0JpZ051bWJlci5pc0JpZ051bWJlcj1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUmJnZhbHVlLl9pc0JpZ051bWJlcil9O3JldHVybiBCaWdOdW1iZXJ9KCk7ZXhwb3J0cy5CaWdOdW1iZXI9QmlnTnVtYmVyO2Z1bmN0aW9uIHRvSGV4KHZhbHVlKXtpZih0eXBlb2YgdmFsdWUhPT0ic3RyaW5nIil7cmV0dXJuIHRvSGV4KHZhbHVlLnRvU3RyaW5nKDE2KSl9aWYodmFsdWVbMF09PT0iLSIpe3ZhbHVlPXZhbHVlLnN1YnN0cmluZygxKTtpZih2YWx1ZVswXT09PSItIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBoZXgiLCJ2YWx1ZSIsdmFsdWUpfXZhbHVlPXRvSGV4KHZhbHVlKTtpZih2YWx1ZT09PSIweDAwIil7cmV0dXJuIHZhbHVlfXJldHVybiItIit2YWx1ZX1pZih2YWx1ZS5zdWJzdHJpbmcoMCwyKSE9PSIweCIpe3ZhbHVlPSIweCIrdmFsdWV9aWYodmFsdWU9PT0iMHgiKXtyZXR1cm4iMHgwMCJ9aWYodmFsdWUubGVuZ3RoJTIpe3ZhbHVlPSIweDAiK3ZhbHVlLnN1YnN0cmluZygyKX13aGlsZSh2YWx1ZS5sZW5ndGg+NCYmdmFsdWUuc3Vic3RyaW5nKDAsNCk9PT0iMHgwMCIpe3ZhbHVlPSIweCIrdmFsdWUuc3Vic3RyaW5nKDQpfXJldHVybiB2YWx1ZX1mdW5jdGlvbiB0b0JpZ051bWJlcih2YWx1ZSl7cmV0dXJuIEJpZ051bWJlci5mcm9tKHRvSGV4KHZhbHVlKSl9ZnVuY3Rpb24gdG9CTih2YWx1ZSl7dmFyIGhleD1CaWdOdW1iZXIuZnJvbSh2YWx1ZSkudG9IZXhTdHJpbmcoKTtpZihoZXhbMF09PT0iLSIpe3JldHVybiBuZXcgQk4oIi0iK2hleC5zdWJzdHJpbmcoMyksMTYpfXJldHVybiBuZXcgQk4oaGV4LnN1YnN0cmluZygyKSwxNil9ZnVuY3Rpb24gdGhyb3dGYXVsdChmYXVsdCxvcGVyYXRpb24sdmFsdWUpe3ZhciBwYXJhbXM9e2ZhdWx0OmZhdWx0LG9wZXJhdGlvbjpvcGVyYXRpb259O2lmKHZhbHVlIT1udWxsKXtwYXJhbXMudmFsdWU9dmFsdWV9cmV0dXJuIGxvZ2dlci50aHJvd0Vycm9yKGZhdWx0LGxpYi5Mb2dnZXIuZXJyb3JzLk5VTUVSSUNfRkFVTFQscGFyYW1zKX1mdW5jdGlvbiBfYmFzZTM2VG8xNih2YWx1ZSl7cmV0dXJuIG5ldyBCTih2YWx1ZSwzNikudG9TdHJpbmcoMTYpfWV4cG9ydHMuX2Jhc2UzNlRvMTY9X2Jhc2UzNlRvMTY7ZnVuY3Rpb24gX2Jhc2UxNlRvMzYodmFsdWUpe3JldHVybiBuZXcgQk4odmFsdWUsMTYpLnRvU3RyaW5nKDM2KX1leHBvcnRzLl9iYXNlMTZUbzM2PV9iYXNlMTZUbzM2fSk7dmFyIGJpZ251bWJlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGJpZ251bWJlcik7dmFyIGZpeGVkbnVtYmVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5GaXhlZE51bWJlcj1leHBvcnRzLkZpeGVkRm9ybWF0PWV4cG9ydHMucGFyc2VGaXhlZD1leHBvcnRzLmZvcm1hdEZpeGVkPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJDQudmVyc2lvbik7dmFyIF9jb25zdHJ1Y3Rvckd1YXJkPXt9O3ZhciBaZXJvPWJpZ251bWJlci5CaWdOdW1iZXIuZnJvbSgwKTt2YXIgTmVnYXRpdmVPbmU9YmlnbnVtYmVyLkJpZ051bWJlci5mcm9tKC0xKTtmdW5jdGlvbiB0aHJvd0ZhdWx0KG1lc3NhZ2UsZmF1bHQsb3BlcmF0aW9uLHZhbHVlKXt2YXIgcGFyYW1zPXtmYXVsdDpmYXVsdCxvcGVyYXRpb246b3BlcmF0aW9ufTtpZih2YWx1ZSE9PXVuZGVmaW5lZCl7cGFyYW1zLnZhbHVlPXZhbHVlfXJldHVybiBsb2dnZXIudGhyb3dFcnJvcihtZXNzYWdlLGxpYi5Mb2dnZXIuZXJyb3JzLk5VTUVSSUNfRkFVTFQscGFyYW1zKX12YXIgemVyb3M9IjAiO3doaWxlKHplcm9zLmxlbmd0aDwyNTYpe3plcm9zKz16ZXJvc31mdW5jdGlvbiBnZXRNdWx0aXBsaWVyKGRlY2ltYWxzKXtpZih0eXBlb2YgZGVjaW1hbHMhPT0ibnVtYmVyIil7dHJ5e2RlY2ltYWxzPWJpZ251bWJlci5CaWdOdW1iZXIuZnJvbShkZWNpbWFscykudG9OdW1iZXIoKX1jYXRjaChlKXt9fWlmKHR5cGVvZiBkZWNpbWFscz09PSJudW1iZXIiJiZkZWNpbWFscz49MCYmZGVjaW1hbHM8PTI1NiYmIShkZWNpbWFscyUxKSl7cmV0dXJuIjEiK3plcm9zLnN1YnN0cmluZygwLGRlY2ltYWxzKX1yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBkZWNpbWFsIHNpemUiLCJkZWNpbWFscyIsZGVjaW1hbHMpfWZ1bmN0aW9uIGZvcm1hdEZpeGVkKHZhbHVlLGRlY2ltYWxzKXtpZihkZWNpbWFscz09bnVsbCl7ZGVjaW1hbHM9MH12YXIgbXVsdGlwbGllcj1nZXRNdWx0aXBsaWVyKGRlY2ltYWxzKTt2YWx1ZT1iaWdudW1iZXIuQmlnTnVtYmVyLmZyb20odmFsdWUpO3ZhciBuZWdhdGl2ZT12YWx1ZS5sdChaZXJvKTtpZihuZWdhdGl2ZSl7dmFsdWU9dmFsdWUubXVsKE5lZ2F0aXZlT25lKX12YXIgZnJhY3Rpb249dmFsdWUubW9kKG11bHRpcGxpZXIpLnRvU3RyaW5nKCk7d2hpbGUoZnJhY3Rpb24ubGVuZ3RoPG11bHRpcGxpZXIubGVuZ3RoLTEpe2ZyYWN0aW9uPSIwIitmcmFjdGlvbn1mcmFjdGlvbj1mcmFjdGlvbi5tYXRjaCgvXihbMC05XSpbMS05XXwwKSgwKikvKVsxXTt2YXIgd2hvbGU9dmFsdWUuZGl2KG11bHRpcGxpZXIpLnRvU3RyaW5nKCk7aWYobXVsdGlwbGllci5sZW5ndGg9PT0xKXt2YWx1ZT13aG9sZX1lbHNle3ZhbHVlPXdob2xlKyIuIitmcmFjdGlvbn1pZihuZWdhdGl2ZSl7dmFsdWU9Ii0iK3ZhbHVlfXJldHVybiB2YWx1ZX1leHBvcnRzLmZvcm1hdEZpeGVkPWZvcm1hdEZpeGVkO2Z1bmN0aW9uIHBhcnNlRml4ZWQodmFsdWUsZGVjaW1hbHMpe2lmKGRlY2ltYWxzPT1udWxsKXtkZWNpbWFscz0wfXZhciBtdWx0aXBsaWVyPWdldE11bHRpcGxpZXIoZGVjaW1hbHMpO2lmKHR5cGVvZiB2YWx1ZSE9PSJzdHJpbmcifHwhdmFsdWUubWF0Y2goL14tP1swLTkuXSskLykpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZGVjaW1hbCB2YWx1ZSIsInZhbHVlIix2YWx1ZSl9dmFyIG5lZ2F0aXZlPXZhbHVlLnN1YnN0cmluZygwLDEpPT09Ii0iO2lmKG5lZ2F0aXZlKXt2YWx1ZT12YWx1ZS5zdWJzdHJpbmcoMSl9aWYodmFsdWU9PT0iLiIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm1pc3NpbmcgdmFsdWUiLCJ2YWx1ZSIsdmFsdWUpfXZhciBjb21wcz12YWx1ZS5zcGxpdCgiLiIpO2lmKGNvbXBzLmxlbmd0aD4yKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ0b28gbWFueSBkZWNpbWFsIHBvaW50cyIsInZhbHVlIix2YWx1ZSl9dmFyIHdob2xlPWNvbXBzWzBdLGZyYWN0aW9uPWNvbXBzWzFdO2lmKCF3aG9sZSl7d2hvbGU9IjAifWlmKCFmcmFjdGlvbil7ZnJhY3Rpb249IjAifXdoaWxlKGZyYWN0aW9uW2ZyYWN0aW9uLmxlbmd0aC0xXT09PSIwIil7ZnJhY3Rpb249ZnJhY3Rpb24uc3Vic3RyaW5nKDAsZnJhY3Rpb24ubGVuZ3RoLTEpfWlmKGZyYWN0aW9uLmxlbmd0aD5tdWx0aXBsaWVyLmxlbmd0aC0xKXt0aHJvd0ZhdWx0KCJmcmFjdGlvbmFsIGNvbXBvbmVudCBleGNlZWRzIGRlY2ltYWxzIiwidW5kZXJmbG93IiwicGFyc2VGaXhlZCIpfWlmKGZyYWN0aW9uPT09IiIpe2ZyYWN0aW9uPSIwIn13aGlsZShmcmFjdGlvbi5sZW5ndGg8bXVsdGlwbGllci5sZW5ndGgtMSl7ZnJhY3Rpb24rPSIwIn12YXIgd2hvbGVWYWx1ZT1iaWdudW1iZXIuQmlnTnVtYmVyLmZyb20od2hvbGUpO3ZhciBmcmFjdGlvblZhbHVlPWJpZ251bWJlci5CaWdOdW1iZXIuZnJvbShmcmFjdGlvbik7dmFyIHdlaT13aG9sZVZhbHVlLm11bChtdWx0aXBsaWVyKS5hZGQoZnJhY3Rpb25WYWx1ZSk7aWYobmVnYXRpdmUpe3dlaT13ZWkubXVsKE5lZ2F0aXZlT25lKX1yZXR1cm4gd2VpfWV4cG9ydHMucGFyc2VGaXhlZD1wYXJzZUZpeGVkO3ZhciBGaXhlZEZvcm1hdD1mdW5jdGlvbigpe2Z1bmN0aW9uIEZpeGVkRm9ybWF0KGNvbnN0cnVjdG9yR3VhcmQsc2lnbmVkLHdpZHRoLGRlY2ltYWxzKXtpZihjb25zdHJ1Y3Rvckd1YXJkIT09X2NvbnN0cnVjdG9yR3VhcmQpe2xvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3QgdXNlIEZpeGVkRm9ybWF0IGNvbnN0cnVjdG9yOyB1c2UgRml4ZWRGb3JtYXQuZnJvbSIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246Im5ldyBGaXhlZEZvcm1hdCJ9KX10aGlzLnNpZ25lZD1zaWduZWQ7dGhpcy53aWR0aD13aWR0aDt0aGlzLmRlY2ltYWxzPWRlY2ltYWxzO3RoaXMubmFtZT0oc2lnbmVkPyIiOiJ1IikrImZpeGVkIitTdHJpbmcod2lkdGgpKyJ4IitTdHJpbmcoZGVjaW1hbHMpO3RoaXMuX211bHRpcGxpZXI9Z2V0TXVsdGlwbGllcihkZWNpbWFscyk7T2JqZWN0LmZyZWV6ZSh0aGlzKX1GaXhlZEZvcm1hdC5mcm9tPWZ1bmN0aW9uKHZhbHVlKXtpZih2YWx1ZSBpbnN0YW5jZW9mIEZpeGVkRm9ybWF0KXtyZXR1cm4gdmFsdWV9aWYodHlwZW9mIHZhbHVlPT09Im51bWJlciIpe3ZhbHVlPSJmaXhlZDEyOHgiK3ZhbHVlfXZhciBzaWduZWQ9dHJ1ZTt2YXIgd2lkdGg9MTI4O3ZhciBkZWNpbWFscz0xODtpZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7aWYodmFsdWU9PT0iZml4ZWQiKXt9ZWxzZSBpZih2YWx1ZT09PSJ1Zml4ZWQiKXtzaWduZWQ9ZmFsc2V9ZWxzZXt2YXIgbWF0Y2g9dmFsdWUubWF0Y2goL14odT8pZml4ZWQoWzAtOV0rKXgoWzAtOV0rKSQvKTtpZighbWF0Y2gpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZml4ZWQgZm9ybWF0IiwiZm9ybWF0Iix2YWx1ZSl9c2lnbmVkPW1hdGNoWzFdIT09InUiO3dpZHRoPXBhcnNlSW50KG1hdGNoWzJdKTtkZWNpbWFscz1wYXJzZUludChtYXRjaFszXSl9fWVsc2UgaWYodmFsdWUpe3ZhciBjaGVjaz1mdW5jdGlvbihrZXksdHlwZSxkZWZhdWx0VmFsdWUpe2lmKHZhbHVlW2tleV09PW51bGwpe3JldHVybiBkZWZhdWx0VmFsdWV9aWYodHlwZW9mIHZhbHVlW2tleV0hPT10eXBlKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGZpeGVkIGZvcm1hdCAoIitrZXkrIiBub3QgIit0eXBlKyIpIiwiZm9ybWF0LiIra2V5LHZhbHVlW2tleV0pfXJldHVybiB2YWx1ZVtrZXldfTtzaWduZWQ9Y2hlY2soInNpZ25lZCIsImJvb2xlYW4iLHNpZ25lZCk7d2lkdGg9Y2hlY2soIndpZHRoIiwibnVtYmVyIix3aWR0aCk7ZGVjaW1hbHM9Y2hlY2soImRlY2ltYWxzIiwibnVtYmVyIixkZWNpbWFscyl9aWYod2lkdGglOCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBmaXhlZCBmb3JtYXQgd2lkdGggKG5vdCBieXRlIGFsaWduZWQpIiwiZm9ybWF0LndpZHRoIix3aWR0aCl9aWYoZGVjaW1hbHM+ODApe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZml4ZWQgZm9ybWF0IChkZWNpbWFscyB0b28gbGFyZ2UpIiwiZm9ybWF0LmRlY2ltYWxzIixkZWNpbWFscyl9cmV0dXJuIG5ldyBGaXhlZEZvcm1hdChfY29uc3RydWN0b3JHdWFyZCxzaWduZWQsd2lkdGgsZGVjaW1hbHMpfTtyZXR1cm4gRml4ZWRGb3JtYXR9KCk7ZXhwb3J0cy5GaXhlZEZvcm1hdD1GaXhlZEZvcm1hdDt2YXIgRml4ZWROdW1iZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBGaXhlZE51bWJlcihjb25zdHJ1Y3Rvckd1YXJkLGhleCx2YWx1ZSxmb3JtYXQpe2lmKGNvbnN0cnVjdG9yR3VhcmQhPT1fY29uc3RydWN0b3JHdWFyZCl7bG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCB1c2UgRml4ZWROdW1iZXIgY29uc3RydWN0b3I7IHVzZSBGaXhlZE51bWJlci5mcm9tIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoibmV3IEZpeGVkRm9ybWF0In0pfXRoaXMuZm9ybWF0PWZvcm1hdDt0aGlzLl9oZXg9aGV4O3RoaXMuX3ZhbHVlPXZhbHVlO3RoaXMuX2lzRml4ZWROdW1iZXI9dHJ1ZTtPYmplY3QuZnJlZXplKHRoaXMpfUZpeGVkTnVtYmVyLnByb3RvdHlwZS5fY2hlY2tGb3JtYXQ9ZnVuY3Rpb24ob3RoZXIpe2lmKHRoaXMuZm9ybWF0Lm5hbWUhPT1vdGhlci5mb3JtYXQubmFtZSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW5jb21wYXRpYmxlIGZvcm1hdDsgdXNlIGZpeGVkTnVtYmVyLnRvRm9ybWF0Iiwib3RoZXIiLG90aGVyKX19O0ZpeGVkTnVtYmVyLnByb3RvdHlwZS5hZGRVbnNhZmU9ZnVuY3Rpb24ob3RoZXIpe3RoaXMuX2NoZWNrRm9ybWF0KG90aGVyKTt2YXIgYT1wYXJzZUZpeGVkKHRoaXMuX3ZhbHVlLHRoaXMuZm9ybWF0LmRlY2ltYWxzKTt2YXIgYj1wYXJzZUZpeGVkKG90aGVyLl92YWx1ZSxvdGhlci5mb3JtYXQuZGVjaW1hbHMpO3JldHVybiBGaXhlZE51bWJlci5mcm9tVmFsdWUoYS5hZGQoYiksdGhpcy5mb3JtYXQuZGVjaW1hbHMsdGhpcy5mb3JtYXQpfTtGaXhlZE51bWJlci5wcm90b3R5cGUuc3ViVW5zYWZlPWZ1bmN0aW9uKG90aGVyKXt0aGlzLl9jaGVja0Zvcm1hdChvdGhlcik7dmFyIGE9cGFyc2VGaXhlZCh0aGlzLl92YWx1ZSx0aGlzLmZvcm1hdC5kZWNpbWFscyk7dmFyIGI9cGFyc2VGaXhlZChvdGhlci5fdmFsdWUsb3RoZXIuZm9ybWF0LmRlY2ltYWxzKTtyZXR1cm4gRml4ZWROdW1iZXIuZnJvbVZhbHVlKGEuc3ViKGIpLHRoaXMuZm9ybWF0LmRlY2ltYWxzLHRoaXMuZm9ybWF0KX07Rml4ZWROdW1iZXIucHJvdG90eXBlLm11bFVuc2FmZT1mdW5jdGlvbihvdGhlcil7dGhpcy5fY2hlY2tGb3JtYXQob3RoZXIpO3ZhciBhPXBhcnNlRml4ZWQodGhpcy5fdmFsdWUsdGhpcy5mb3JtYXQuZGVjaW1hbHMpO3ZhciBiPXBhcnNlRml4ZWQob3RoZXIuX3ZhbHVlLG90aGVyLmZvcm1hdC5kZWNpbWFscyk7cmV0dXJuIEZpeGVkTnVtYmVyLmZyb21WYWx1ZShhLm11bChiKS5kaXYodGhpcy5mb3JtYXQuX211bHRpcGxpZXIpLHRoaXMuZm9ybWF0LmRlY2ltYWxzLHRoaXMuZm9ybWF0KX07Rml4ZWROdW1iZXIucHJvdG90eXBlLmRpdlVuc2FmZT1mdW5jdGlvbihvdGhlcil7dGhpcy5fY2hlY2tGb3JtYXQob3RoZXIpO3ZhciBhPXBhcnNlRml4ZWQodGhpcy5fdmFsdWUsdGhpcy5mb3JtYXQuZGVjaW1hbHMpO3ZhciBiPXBhcnNlRml4ZWQob3RoZXIuX3ZhbHVlLG90aGVyLmZvcm1hdC5kZWNpbWFscyk7cmV0dXJuIEZpeGVkTnVtYmVyLmZyb21WYWx1ZShhLm11bCh0aGlzLmZvcm1hdC5fbXVsdGlwbGllcikuZGl2KGIpLHRoaXMuZm9ybWF0LmRlY2ltYWxzLHRoaXMuZm9ybWF0KX07Rml4ZWROdW1iZXIucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7dmFyIGNvbXBzPXRoaXMudG9TdHJpbmcoKS5zcGxpdCgiLiIpO2lmKGNvbXBzLmxlbmd0aD09PTEpe2NvbXBzLnB1c2goIjAiKX12YXIgcmVzdWx0PUZpeGVkTnVtYmVyLmZyb20oY29tcHNbMF0sdGhpcy5mb3JtYXQpO3ZhciBoYXNGcmFjdGlvbj0hY29tcHNbMV0ubWF0Y2goL14oMCopJC8pO2lmKHRoaXMuaXNOZWdhdGl2ZSgpJiZoYXNGcmFjdGlvbil7cmVzdWx0PXJlc3VsdC5zdWJVbnNhZmUoT05FLnRvRm9ybWF0KHJlc3VsdC5mb3JtYXQpKX1yZXR1cm4gcmVzdWx0fTtGaXhlZE51bWJlci5wcm90b3R5cGUuY2VpbGluZz1mdW5jdGlvbigpe3ZhciBjb21wcz10aGlzLnRvU3RyaW5nKCkuc3BsaXQoIi4iKTtpZihjb21wcy5sZW5ndGg9PT0xKXtjb21wcy5wdXNoKCIwIil9dmFyIHJlc3VsdD1GaXhlZE51bWJlci5mcm9tKGNvbXBzWzBdLHRoaXMuZm9ybWF0KTt2YXIgaGFzRnJhY3Rpb249IWNvbXBzWzFdLm1hdGNoKC9eKDAqKSQvKTtpZighdGhpcy5pc05lZ2F0aXZlKCkmJmhhc0ZyYWN0aW9uKXtyZXN1bHQ9cmVzdWx0LmFkZFVuc2FmZShPTkUudG9Gb3JtYXQocmVzdWx0LmZvcm1hdCkpfXJldHVybiByZXN1bHR9O0ZpeGVkTnVtYmVyLnByb3RvdHlwZS5yb3VuZD1mdW5jdGlvbihkZWNpbWFscyl7aWYoZGVjaW1hbHM9PW51bGwpe2RlY2ltYWxzPTB9dmFyIGNvbXBzPXRoaXMudG9TdHJpbmcoKS5zcGxpdCgiLiIpO2lmKGNvbXBzLmxlbmd0aD09PTEpe2NvbXBzLnB1c2goIjAiKX1pZihkZWNpbWFsczwwfHxkZWNpbWFscz44MHx8ZGVjaW1hbHMlMSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBkZWNpbWFsIGNvdW50IiwiZGVjaW1hbHMiLGRlY2ltYWxzKX1pZihjb21wc1sxXS5sZW5ndGg8PWRlY2ltYWxzKXtyZXR1cm4gdGhpc312YXIgZmFjdG9yPUZpeGVkTnVtYmVyLmZyb20oIjEiK3plcm9zLnN1YnN0cmluZygwLGRlY2ltYWxzKSx0aGlzLmZvcm1hdCk7dmFyIGJ1bXA9QlVNUC50b0Zvcm1hdCh0aGlzLmZvcm1hdCk7cmV0dXJuIHRoaXMubXVsVW5zYWZlKGZhY3RvcikuYWRkVW5zYWZlKGJ1bXApLmZsb29yKCkuZGl2VW5zYWZlKGZhY3Rvcil9O0ZpeGVkTnVtYmVyLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWU9PT0iMC4wInx8dGhpcy5fdmFsdWU9PT0iMCJ9O0ZpeGVkTnVtYmVyLnByb3RvdHlwZS5pc05lZ2F0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlWzBdPT09Ii0ifTtGaXhlZE51bWJlci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWV9O0ZpeGVkTnVtYmVyLnByb3RvdHlwZS50b0hleFN0cmluZz1mdW5jdGlvbih3aWR0aCl7aWYod2lkdGg9PW51bGwpe3JldHVybiB0aGlzLl9oZXh9aWYod2lkdGglOCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBieXRlIHdpZHRoIiwid2lkdGgiLHdpZHRoKX12YXIgaGV4PWJpZ251bWJlci5CaWdOdW1iZXIuZnJvbSh0aGlzLl9oZXgpLmZyb21Ud29zKHRoaXMuZm9ybWF0LndpZHRoKS50b1R3b3Mod2lkdGgpLnRvSGV4U3RyaW5nKCk7cmV0dXJuKDAsbGliJDEuaGV4WmVyb1BhZCkoaGV4LHdpZHRoLzgpfTtGaXhlZE51bWJlci5wcm90b3R5cGUudG9VbnNhZmVGbG9hdD1mdW5jdGlvbigpe3JldHVybiBwYXJzZUZsb2F0KHRoaXMudG9TdHJpbmcoKSl9O0ZpeGVkTnVtYmVyLnByb3RvdHlwZS50b0Zvcm1hdD1mdW5jdGlvbihmb3JtYXQpe3JldHVybiBGaXhlZE51bWJlci5mcm9tU3RyaW5nKHRoaXMuX3ZhbHVlLGZvcm1hdCl9O0ZpeGVkTnVtYmVyLmZyb21WYWx1ZT1mdW5jdGlvbih2YWx1ZSxkZWNpbWFscyxmb3JtYXQpe2lmKGZvcm1hdD09bnVsbCYmZGVjaW1hbHMhPW51bGwmJiEoMCxiaWdudW1iZXIuaXNCaWdOdW1iZXJpc2gpKGRlY2ltYWxzKSl7Zm9ybWF0PWRlY2ltYWxzO2RlY2ltYWxzPW51bGx9aWYoZGVjaW1hbHM9PW51bGwpe2RlY2ltYWxzPTB9aWYoZm9ybWF0PT1udWxsKXtmb3JtYXQ9ImZpeGVkIn1yZXR1cm4gRml4ZWROdW1iZXIuZnJvbVN0cmluZyhmb3JtYXRGaXhlZCh2YWx1ZSxkZWNpbWFscyksRml4ZWRGb3JtYXQuZnJvbShmb3JtYXQpKX07Rml4ZWROdW1iZXIuZnJvbVN0cmluZz1mdW5jdGlvbih2YWx1ZSxmb3JtYXQpe2lmKGZvcm1hdD09bnVsbCl7Zm9ybWF0PSJmaXhlZCJ9dmFyIGZpeGVkRm9ybWF0PUZpeGVkRm9ybWF0LmZyb20oZm9ybWF0KTt2YXIgbnVtZXJpYz1wYXJzZUZpeGVkKHZhbHVlLGZpeGVkRm9ybWF0LmRlY2ltYWxzKTtpZighZml4ZWRGb3JtYXQuc2lnbmVkJiZudW1lcmljLmx0KFplcm8pKXt0aHJvd0ZhdWx0KCJ1bnNpZ25lZCB2YWx1ZSBjYW5ub3QgYmUgbmVnYXRpdmUiLCJvdmVyZmxvdyIsInZhbHVlIix2YWx1ZSl9dmFyIGhleD1udWxsO2lmKGZpeGVkRm9ybWF0LnNpZ25lZCl7aGV4PW51bWVyaWMudG9Ud29zKGZpeGVkRm9ybWF0LndpZHRoKS50b0hleFN0cmluZygpfWVsc2V7aGV4PW51bWVyaWMudG9IZXhTdHJpbmcoKTtoZXg9KDAsbGliJDEuaGV4WmVyb1BhZCkoaGV4LGZpeGVkRm9ybWF0LndpZHRoLzgpfXZhciBkZWNpbWFsPWZvcm1hdEZpeGVkKG51bWVyaWMsZml4ZWRGb3JtYXQuZGVjaW1hbHMpO3JldHVybiBuZXcgRml4ZWROdW1iZXIoX2NvbnN0cnVjdG9yR3VhcmQsaGV4LGRlY2ltYWwsZml4ZWRGb3JtYXQpfTtGaXhlZE51bWJlci5mcm9tQnl0ZXM9ZnVuY3Rpb24odmFsdWUsZm9ybWF0KXtpZihmb3JtYXQ9PW51bGwpe2Zvcm1hdD0iZml4ZWQifXZhciBmaXhlZEZvcm1hdD1GaXhlZEZvcm1hdC5mcm9tKGZvcm1hdCk7aWYoKDAsbGliJDEuYXJyYXlpZnkpKHZhbHVlKS5sZW5ndGg+Zml4ZWRGb3JtYXQud2lkdGgvOCl7dGhyb3cgbmV3IEVycm9yKCJvdmVyZmxvdyIpfXZhciBudW1lcmljPWJpZ251bWJlci5CaWdOdW1iZXIuZnJvbSh2YWx1ZSk7aWYoZml4ZWRGb3JtYXQuc2lnbmVkKXtudW1lcmljPW51bWVyaWMuZnJvbVR3b3MoZml4ZWRGb3JtYXQud2lkdGgpfXZhciBoZXg9bnVtZXJpYy50b1R3b3MoKGZpeGVkRm9ybWF0LnNpZ25lZD8wOjEpK2ZpeGVkRm9ybWF0LndpZHRoKS50b0hleFN0cmluZygpO3ZhciBkZWNpbWFsPWZvcm1hdEZpeGVkKG51bWVyaWMsZml4ZWRGb3JtYXQuZGVjaW1hbHMpO3JldHVybiBuZXcgRml4ZWROdW1iZXIoX2NvbnN0cnVjdG9yR3VhcmQsaGV4LGRlY2ltYWwsZml4ZWRGb3JtYXQpfTtGaXhlZE51bWJlci5mcm9tPWZ1bmN0aW9uKHZhbHVlLGZvcm1hdCl7aWYodHlwZW9mIHZhbHVlPT09InN0cmluZyIpe3JldHVybiBGaXhlZE51bWJlci5mcm9tU3RyaW5nKHZhbHVlLGZvcm1hdCl9aWYoKDAsbGliJDEuaXNCeXRlcykodmFsdWUpKXtyZXR1cm4gRml4ZWROdW1iZXIuZnJvbUJ5dGVzKHZhbHVlLGZvcm1hdCl9dHJ5e3JldHVybiBGaXhlZE51bWJlci5mcm9tVmFsdWUodmFsdWUsMCxmb3JtYXQpfWNhdGNoKGVycm9yKXtpZihlcnJvci5jb2RlIT09bGliLkxvZ2dlci5lcnJvcnMuSU5WQUxJRF9BUkdVTUVOVCl7dGhyb3cgZXJyb3J9fXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIEZpeGVkTnVtYmVyIHZhbHVlIiwidmFsdWUiLHZhbHVlKX07Rml4ZWROdW1iZXIuaXNGaXhlZE51bWJlcj1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUmJnZhbHVlLl9pc0ZpeGVkTnVtYmVyKX07cmV0dXJuIEZpeGVkTnVtYmVyfSgpO2V4cG9ydHMuRml4ZWROdW1iZXI9Rml4ZWROdW1iZXI7dmFyIE9ORT1GaXhlZE51bWJlci5mcm9tKDEpO3ZhciBCVU1QPUZpeGVkTnVtYmVyLmZyb20oIjAuNSIpfSk7dmFyIGZpeGVkbnVtYmVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoZml4ZWRudW1iZXIpO3ZhciBsaWIkMj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuX2Jhc2UzNlRvMTY9ZXhwb3J0cy5fYmFzZTE2VG8zNj1leHBvcnRzLnBhcnNlRml4ZWQ9ZXhwb3J0cy5GaXhlZE51bWJlcj1leHBvcnRzLkZpeGVkRm9ybWF0PWV4cG9ydHMuZm9ybWF0Rml4ZWQ9ZXhwb3J0cy5CaWdOdW1iZXI9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJCaWdOdW1iZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJpZ251bWJlci5CaWdOdW1iZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImZvcm1hdEZpeGVkIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBmaXhlZG51bWJlci5mb3JtYXRGaXhlZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRml4ZWRGb3JtYXQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZpeGVkbnVtYmVyLkZpeGVkRm9ybWF0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJGaXhlZE51bWJlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZml4ZWRudW1iZXIuRml4ZWROdW1iZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInBhcnNlRml4ZWQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZpeGVkbnVtYmVyLnBhcnNlRml4ZWR9fSk7dmFyIGJpZ251bWJlcl8yPWJpZ251bWJlcjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX2Jhc2UxNlRvMzYiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJpZ251bWJlcl8yLl9iYXNlMTZUbzM2fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfYmFzZTM2VG8xNiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYmlnbnVtYmVyXzIuX2Jhc2UzNlRvMTZ9fSl9KTt2YXIgaW5kZXgkMj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkMik7dmFyIF92ZXJzaW9uJDY9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0icHJvcGVydGllcy81LjcuMCJ9KTt2YXIgX3ZlcnNpb24kNz1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiQ2KTt2YXIgbGliJDM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuRGVzY3JpcHRpb249ZXhwb3J0cy5kZWVwQ29weT1leHBvcnRzLnNoYWxsb3dDb3B5PWV4cG9ydHMuY2hlY2tQcm9wZXJ0aWVzPWV4cG9ydHMucmVzb2x2ZVByb3BlcnRpZXM9ZXhwb3J0cy5nZXRTdGF0aWM9ZXhwb3J0cy5kZWZpbmVSZWFkT25seT12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiQ2LnZlcnNpb24pO2Z1bmN0aW9uIGRlZmluZVJlYWRPbmx5KG9iamVjdCxuYW1lLHZhbHVlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LG5hbWUse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp2YWx1ZSx3cml0YWJsZTpmYWxzZX0pfWV4cG9ydHMuZGVmaW5lUmVhZE9ubHk9ZGVmaW5lUmVhZE9ubHk7ZnVuY3Rpb24gZ2V0U3RhdGljKGN0b3Isa2V5KXtmb3IodmFyIGk9MDtpPDMyO2krKyl7aWYoY3RvcltrZXldKXtyZXR1cm4gY3RvcltrZXldfWlmKCFjdG9yLnByb3RvdHlwZXx8dHlwZW9mIGN0b3IucHJvdG90eXBlIT09Im9iamVjdCIpe2JyZWFrfWN0b3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKGN0b3IucHJvdG90eXBlKS5jb25zdHJ1Y3Rvcn1yZXR1cm4gbnVsbH1leHBvcnRzLmdldFN0YXRpYz1nZXRTdGF0aWM7ZnVuY3Rpb24gcmVzb2x2ZVByb3BlcnRpZXMob2JqZWN0KXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwcm9taXNlcyxyZXN1bHRzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpwcm9taXNlcz1PYmplY3Qua2V5cyhvYmplY3QpLm1hcChmdW5jdGlvbihrZXkpe3ZhciB2YWx1ZT1vYmplY3Rba2V5XTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHYpe3JldHVybntrZXk6a2V5LHZhbHVlOnZ9fSl9KTtyZXR1cm5bNCxQcm9taXNlLmFsbChwcm9taXNlcyldO2Nhc2UgMTpyZXN1bHRzPV9hLnNlbnQoKTtyZXR1cm5bMixyZXN1bHRzLnJlZHVjZShmdW5jdGlvbihhY2N1bSxyZXN1bHQpe2FjY3VtW3Jlc3VsdC5rZXldPXJlc3VsdC52YWx1ZTtyZXR1cm4gYWNjdW19LHt9KV19fSl9KX1leHBvcnRzLnJlc29sdmVQcm9wZXJ0aWVzPXJlc29sdmVQcm9wZXJ0aWVzO2Z1bmN0aW9uIGNoZWNrUHJvcGVydGllcyhvYmplY3QscHJvcGVydGllcyl7aWYoIW9iamVjdHx8dHlwZW9mIG9iamVjdCE9PSJvYmplY3QiKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIG9iamVjdCIsIm9iamVjdCIsb2JqZWN0KX1PYmplY3Qua2V5cyhvYmplY3QpLmZvckVhY2goZnVuY3Rpb24oa2V5KXtpZighcHJvcGVydGllc1trZXldKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIG9iamVjdCBrZXkgLSAiK2tleSwidHJhbnNhY3Rpb246IitrZXksb2JqZWN0KX19KX1leHBvcnRzLmNoZWNrUHJvcGVydGllcz1jaGVja1Byb3BlcnRpZXM7ZnVuY3Rpb24gc2hhbGxvd0NvcHkob2JqZWN0KXt2YXIgcmVzdWx0PXt9O2Zvcih2YXIga2V5IGluIG9iamVjdCl7cmVzdWx0W2tleV09b2JqZWN0W2tleV19cmV0dXJuIHJlc3VsdH1leHBvcnRzLnNoYWxsb3dDb3B5PXNoYWxsb3dDb3B5O3ZhciBvcGFxdWU9e2JpZ2ludDp0cnVlLGJvb2xlYW46dHJ1ZSxmdW5jdGlvbjp0cnVlLG51bWJlcjp0cnVlLHN0cmluZzp0cnVlfTtmdW5jdGlvbiBfaXNGcm96ZW4ob2JqZWN0KXtpZihvYmplY3Q9PT11bmRlZmluZWR8fG9iamVjdD09PW51bGx8fG9wYXF1ZVt0eXBlb2Ygb2JqZWN0XSl7cmV0dXJuIHRydWV9aWYoQXJyYXkuaXNBcnJheShvYmplY3QpfHx0eXBlb2Ygb2JqZWN0PT09Im9iamVjdCIpe2lmKCFPYmplY3QuaXNGcm96ZW4ob2JqZWN0KSl7cmV0dXJuIGZhbHNlfXZhciBrZXlzPU9iamVjdC5rZXlzKG9iamVjdCk7Zm9yKHZhciBpPTA7aTxrZXlzLmxlbmd0aDtpKyspe3ZhciB2YWx1ZT1udWxsO3RyeXt2YWx1ZT1vYmplY3Rba2V5c1tpXV19Y2F0Y2goZXJyb3Ipe2NvbnRpbnVlfWlmKCFfaXNGcm96ZW4odmFsdWUpKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJDYW5ub3QgZGVlcENvcHkgIit0eXBlb2Ygb2JqZWN0LCJvYmplY3QiLG9iamVjdCl9ZnVuY3Rpb24gX2RlZXBDb3B5KG9iamVjdCl7aWYoX2lzRnJvemVuKG9iamVjdCkpe3JldHVybiBvYmplY3R9aWYoQXJyYXkuaXNBcnJheShvYmplY3QpKXtyZXR1cm4gT2JqZWN0LmZyZWV6ZShvYmplY3QubWFwKGZ1bmN0aW9uKGl0ZW0pe3JldHVybiBkZWVwQ29weShpdGVtKX0pKX1pZih0eXBlb2Ygb2JqZWN0PT09Im9iamVjdCIpe3ZhciByZXN1bHQ9e307Zm9yKHZhciBrZXkgaW4gb2JqZWN0KXt2YXIgdmFsdWU9b2JqZWN0W2tleV07aWYodmFsdWU9PT11bmRlZmluZWQpe2NvbnRpbnVlfWRlZmluZVJlYWRPbmx5KHJlc3VsdCxrZXksZGVlcENvcHkodmFsdWUpKX1yZXR1cm4gcmVzdWx0fXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJDYW5ub3QgZGVlcENvcHkgIit0eXBlb2Ygb2JqZWN0LCJvYmplY3QiLG9iamVjdCl9ZnVuY3Rpb24gZGVlcENvcHkob2JqZWN0KXtyZXR1cm4gX2RlZXBDb3B5KG9iamVjdCl9ZXhwb3J0cy5kZWVwQ29weT1kZWVwQ29weTt2YXIgRGVzY3JpcHRpb249ZnVuY3Rpb24oKXtmdW5jdGlvbiBEZXNjcmlwdGlvbihpbmZvKXtmb3IodmFyIGtleSBpbiBpbmZvKXt0aGlzW2tleV09ZGVlcENvcHkoaW5mb1trZXldKX19cmV0dXJuIERlc2NyaXB0aW9ufSgpO2V4cG9ydHMuRGVzY3JpcHRpb249RGVzY3JpcHRpb259KTt2YXIgaW5kZXgkMz1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkMyk7dmFyIF92ZXJzaW9uJDg9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0iYWJpLzUuNy4wIn0pO3ZhciBfdmVyc2lvbiQ5PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJDgpO3ZhciBmcmFnbWVudHM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5FcnJvckZyYWdtZW50PWV4cG9ydHMuRnVuY3Rpb25GcmFnbWVudD1leHBvcnRzLkNvbnN0cnVjdG9yRnJhZ21lbnQ9ZXhwb3J0cy5FdmVudEZyYWdtZW50PWV4cG9ydHMuRnJhZ21lbnQ9ZXhwb3J0cy5QYXJhbVR5cGU9ZXhwb3J0cy5Gb3JtYXRUeXBlcz12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiQ4LnZlcnNpb24pO3ZhciBfY29uc3RydWN0b3JHdWFyZD17fTt2YXIgTW9kaWZpZXJzQnl0ZXM9e2NhbGxkYXRhOnRydWUsbWVtb3J5OnRydWUsc3RvcmFnZTp0cnVlfTt2YXIgTW9kaWZpZXJzTmVzdD17Y2FsbGRhdGE6dHJ1ZSxtZW1vcnk6dHJ1ZX07ZnVuY3Rpb24gY2hlY2tNb2RpZmllcih0eXBlLG5hbWUpe2lmKHR5cGU9PT0iYnl0ZXMifHx0eXBlPT09InN0cmluZyIpe2lmKE1vZGlmaWVyc0J5dGVzW25hbWVdKXtyZXR1cm4gdHJ1ZX19ZWxzZSBpZih0eXBlPT09ImFkZHJlc3MiKXtpZihuYW1lPT09InBheWFibGUiKXtyZXR1cm4gdHJ1ZX19ZWxzZSBpZih0eXBlLmluZGV4T2YoIlsiKT49MHx8dHlwZT09PSJ0dXBsZSIpe2lmKE1vZGlmaWVyc05lc3RbbmFtZV0pe3JldHVybiB0cnVlfX1pZihNb2RpZmllcnNCeXRlc1tuYW1lXXx8bmFtZT09PSJwYXlhYmxlIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBtb2RpZmllciIsIm5hbWUiLG5hbWUpfXJldHVybiBmYWxzZX1mdW5jdGlvbiBwYXJzZVBhcmFtVHlwZShwYXJhbSxhbGxvd0luZGV4ZWQpe3ZhciBvcmlnaW5hbFBhcmFtPXBhcmFtO2Z1bmN0aW9uIHRocm93RXJyb3IoaSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5leHBlY3RlZCBjaGFyYWN0ZXIgYXQgcG9zaXRpb24gIitpLCJwYXJhbSIscGFyYW0pfXBhcmFtPXBhcmFtLnJlcGxhY2UoL1xzL2csIiAiKTtmdW5jdGlvbiBuZXdOb2RlKHBhcmVudCl7dmFyIG5vZGU9e3R5cGU6IiIsbmFtZToiIixwYXJlbnQ6cGFyZW50LHN0YXRlOnthbGxvd1R5cGU6dHJ1ZX19O2lmKGFsbG93SW5kZXhlZCl7bm9kZS5pbmRleGVkPWZhbHNlfXJldHVybiBub2RlfXZhciBwYXJlbnQ9e3R5cGU6IiIsbmFtZToiIixzdGF0ZTp7YWxsb3dUeXBlOnRydWV9fTt2YXIgbm9kZT1wYXJlbnQ7Zm9yKHZhciBpPTA7aTxwYXJhbS5sZW5ndGg7aSsrKXt2YXIgYz1wYXJhbVtpXTtzd2l0Y2goYyl7Y2FzZSIoIjppZihub2RlLnN0YXRlLmFsbG93VHlwZSYmbm9kZS50eXBlPT09IiIpe25vZGUudHlwZT0idHVwbGUifWVsc2UgaWYoIW5vZGUuc3RhdGUuYWxsb3dQYXJhbXMpe3Rocm93RXJyb3IoaSl9bm9kZS5zdGF0ZS5hbGxvd1R5cGU9ZmFsc2U7bm9kZS50eXBlPXZlcmlmeVR5cGUobm9kZS50eXBlKTtub2RlLmNvbXBvbmVudHM9W25ld05vZGUobm9kZSldO25vZGU9bm9kZS5jb21wb25lbnRzWzBdO2JyZWFrO2Nhc2UiKSI6ZGVsZXRlIG5vZGUuc3RhdGU7aWYobm9kZS5uYW1lPT09ImluZGV4ZWQiKXtpZighYWxsb3dJbmRleGVkKXt0aHJvd0Vycm9yKGkpfW5vZGUuaW5kZXhlZD10cnVlO25vZGUubmFtZT0iIn1pZihjaGVja01vZGlmaWVyKG5vZGUudHlwZSxub2RlLm5hbWUpKXtub2RlLm5hbWU9IiJ9bm9kZS50eXBlPXZlcmlmeVR5cGUobm9kZS50eXBlKTt2YXIgY2hpbGQ9bm9kZTtub2RlPW5vZGUucGFyZW50O2lmKCFub2RlKXt0aHJvd0Vycm9yKGkpfWRlbGV0ZSBjaGlsZC5wYXJlbnQ7bm9kZS5zdGF0ZS5hbGxvd1BhcmFtcz1mYWxzZTtub2RlLnN0YXRlLmFsbG93TmFtZT10cnVlO25vZGUuc3RhdGUuYWxsb3dBcnJheT10cnVlO2JyZWFrO2Nhc2UiLCI6ZGVsZXRlIG5vZGUuc3RhdGU7aWYobm9kZS5uYW1lPT09ImluZGV4ZWQiKXtpZighYWxsb3dJbmRleGVkKXt0aHJvd0Vycm9yKGkpfW5vZGUuaW5kZXhlZD10cnVlO25vZGUubmFtZT0iIn1pZihjaGVja01vZGlmaWVyKG5vZGUudHlwZSxub2RlLm5hbWUpKXtub2RlLm5hbWU9IiJ9bm9kZS50eXBlPXZlcmlmeVR5cGUobm9kZS50eXBlKTt2YXIgc2libGluZz1uZXdOb2RlKG5vZGUucGFyZW50KTtub2RlLnBhcmVudC5jb21wb25lbnRzLnB1c2goc2libGluZyk7ZGVsZXRlIG5vZGUucGFyZW50O25vZGU9c2libGluZzticmVhaztjYXNlIiAiOmlmKG5vZGUuc3RhdGUuYWxsb3dUeXBlKXtpZihub2RlLnR5cGUhPT0iIil7bm9kZS50eXBlPXZlcmlmeVR5cGUobm9kZS50eXBlKTtkZWxldGUgbm9kZS5zdGF0ZS5hbGxvd1R5cGU7bm9kZS5zdGF0ZS5hbGxvd05hbWU9dHJ1ZTtub2RlLnN0YXRlLmFsbG93UGFyYW1zPXRydWV9fWlmKG5vZGUuc3RhdGUuYWxsb3dOYW1lKXtpZihub2RlLm5hbWUhPT0iIil7aWYobm9kZS5uYW1lPT09ImluZGV4ZWQiKXtpZighYWxsb3dJbmRleGVkKXt0aHJvd0Vycm9yKGkpfWlmKG5vZGUuaW5kZXhlZCl7dGhyb3dFcnJvcihpKX1ub2RlLmluZGV4ZWQ9dHJ1ZTtub2RlLm5hbWU9IiJ9ZWxzZSBpZihjaGVja01vZGlmaWVyKG5vZGUudHlwZSxub2RlLm5hbWUpKXtub2RlLm5hbWU9IiJ9ZWxzZXtub2RlLnN0YXRlLmFsbG93TmFtZT1mYWxzZX19fWJyZWFrO2Nhc2UiWyI6aWYoIW5vZGUuc3RhdGUuYWxsb3dBcnJheSl7dGhyb3dFcnJvcihpKX1ub2RlLnR5cGUrPWM7bm9kZS5zdGF0ZS5hbGxvd0FycmF5PWZhbHNlO25vZGUuc3RhdGUuYWxsb3dOYW1lPWZhbHNlO25vZGUuc3RhdGUucmVhZEFycmF5PXRydWU7YnJlYWs7Y2FzZSJdIjppZighbm9kZS5zdGF0ZS5yZWFkQXJyYXkpe3Rocm93RXJyb3IoaSl9bm9kZS50eXBlKz1jO25vZGUuc3RhdGUucmVhZEFycmF5PWZhbHNlO25vZGUuc3RhdGUuYWxsb3dBcnJheT10cnVlO25vZGUuc3RhdGUuYWxsb3dOYW1lPXRydWU7YnJlYWs7ZGVmYXVsdDppZihub2RlLnN0YXRlLmFsbG93VHlwZSl7bm9kZS50eXBlKz1jO25vZGUuc3RhdGUuYWxsb3dQYXJhbXM9dHJ1ZTtub2RlLnN0YXRlLmFsbG93QXJyYXk9dHJ1ZX1lbHNlIGlmKG5vZGUuc3RhdGUuYWxsb3dOYW1lKXtub2RlLm5hbWUrPWM7ZGVsZXRlIG5vZGUuc3RhdGUuYWxsb3dBcnJheX1lbHNlIGlmKG5vZGUuc3RhdGUucmVhZEFycmF5KXtub2RlLnR5cGUrPWN9ZWxzZXt0aHJvd0Vycm9yKGkpfX19aWYobm9kZS5wYXJlbnQpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVuZXhwZWN0ZWQgZW9mIiwicGFyYW0iLHBhcmFtKX1kZWxldGUgcGFyZW50LnN0YXRlO2lmKG5vZGUubmFtZT09PSJpbmRleGVkIil7aWYoIWFsbG93SW5kZXhlZCl7dGhyb3dFcnJvcihvcmlnaW5hbFBhcmFtLmxlbmd0aC03KX1pZihub2RlLmluZGV4ZWQpe3Rocm93RXJyb3Iob3JpZ2luYWxQYXJhbS5sZW5ndGgtNyl9bm9kZS5pbmRleGVkPXRydWU7bm9kZS5uYW1lPSIifWVsc2UgaWYoY2hlY2tNb2RpZmllcihub2RlLnR5cGUsbm9kZS5uYW1lKSl7bm9kZS5uYW1lPSIifXBhcmVudC50eXBlPXZlcmlmeVR5cGUocGFyZW50LnR5cGUpO3JldHVybiBwYXJlbnR9ZnVuY3Rpb24gcG9wdWxhdGUob2JqZWN0LHBhcmFtcyl7Zm9yKHZhciBrZXkgaW4gcGFyYW1zKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkob2JqZWN0LGtleSxwYXJhbXNba2V5XSl9fWV4cG9ydHMuRm9ybWF0VHlwZXM9T2JqZWN0LmZyZWV6ZSh7c2lnaGFzaDoic2lnaGFzaCIsbWluaW1hbDoibWluaW1hbCIsZnVsbDoiZnVsbCIsanNvbjoianNvbiJ9KTt2YXIgcGFyYW1UeXBlQXJyYXk9bmV3IFJlZ0V4cCgvXiguKilcWyhbMC05XSopXF0kLyk7dmFyIFBhcmFtVHlwZT1mdW5jdGlvbigpe2Z1bmN0aW9uIFBhcmFtVHlwZShjb25zdHJ1Y3Rvckd1YXJkLHBhcmFtcyl7aWYoY29uc3RydWN0b3JHdWFyZCE9PV9jb25zdHJ1Y3Rvckd1YXJkKXtsb2dnZXIudGhyb3dFcnJvcigidXNlIGZyb21TdHJpbmciLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJuZXcgUGFyYW1UeXBlKCkifSl9cG9wdWxhdGUodGhpcyxwYXJhbXMpO3ZhciBtYXRjaD10aGlzLnR5cGUubWF0Y2gocGFyYW1UeXBlQXJyYXkpO2lmKG1hdGNoKXtwb3B1bGF0ZSh0aGlzLHthcnJheUxlbmd0aDpwYXJzZUludChtYXRjaFsyXXx8Ii0xIiksYXJyYXlDaGlsZHJlbjpQYXJhbVR5cGUuZnJvbU9iamVjdCh7dHlwZTptYXRjaFsxXSxjb21wb25lbnRzOnRoaXMuY29tcG9uZW50c30pLGJhc2VUeXBlOiJhcnJheSJ9KX1lbHNle3BvcHVsYXRlKHRoaXMse2FycmF5TGVuZ3RoOm51bGwsYXJyYXlDaGlsZHJlbjpudWxsLGJhc2VUeXBlOnRoaXMuY29tcG9uZW50cyE9bnVsbD8idHVwbGUiOnRoaXMudHlwZX0pfXRoaXMuX2lzUGFyYW1UeXBlPXRydWU7T2JqZWN0LmZyZWV6ZSh0aGlzKX1QYXJhbVR5cGUucHJvdG90eXBlLmZvcm1hdD1mdW5jdGlvbihmb3JtYXQpe2lmKCFmb3JtYXQpe2Zvcm1hdD1leHBvcnRzLkZvcm1hdFR5cGVzLnNpZ2hhc2h9aWYoIWV4cG9ydHMuRm9ybWF0VHlwZXNbZm9ybWF0XSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBmb3JtYXQgdHlwZSIsImZvcm1hdCIsZm9ybWF0KX1pZihmb3JtYXQ9PT1leHBvcnRzLkZvcm1hdFR5cGVzLmpzb24pe3ZhciByZXN1bHRfMT17dHlwZTp0aGlzLmJhc2VUeXBlPT09InR1cGxlIj8idHVwbGUiOnRoaXMudHlwZSxuYW1lOnRoaXMubmFtZXx8dW5kZWZpbmVkfTtpZih0eXBlb2YgdGhpcy5pbmRleGVkPT09ImJvb2xlYW4iKXtyZXN1bHRfMS5pbmRleGVkPXRoaXMuaW5kZXhlZH1pZih0aGlzLmNvbXBvbmVudHMpe3Jlc3VsdF8xLmNvbXBvbmVudHM9dGhpcy5jb21wb25lbnRzLm1hcChmdW5jdGlvbihjb21wKXtyZXR1cm4gSlNPTi5wYXJzZShjb21wLmZvcm1hdChmb3JtYXQpKX0pfXJldHVybiBKU09OLnN0cmluZ2lmeShyZXN1bHRfMSl9dmFyIHJlc3VsdD0iIjtpZih0aGlzLmJhc2VUeXBlPT09ImFycmF5Iil7cmVzdWx0Kz10aGlzLmFycmF5Q2hpbGRyZW4uZm9ybWF0KGZvcm1hdCk7cmVzdWx0Kz0iWyIrKHRoaXMuYXJyYXlMZW5ndGg8MD8iIjpTdHJpbmcodGhpcy5hcnJheUxlbmd0aCkpKyJdIn1lbHNle2lmKHRoaXMuYmFzZVR5cGU9PT0idHVwbGUiKXtpZihmb3JtYXQhPT1leHBvcnRzLkZvcm1hdFR5cGVzLnNpZ2hhc2gpe3Jlc3VsdCs9dGhpcy50eXBlfXJlc3VsdCs9IigiK3RoaXMuY29tcG9uZW50cy5tYXAoZnVuY3Rpb24oY29tcCl7cmV0dXJuIGNvbXAuZm9ybWF0KGZvcm1hdCl9KS5qb2luKGZvcm1hdD09PWV4cG9ydHMuRm9ybWF0VHlwZXMuZnVsbD8iLCAiOiIsIikrIikifWVsc2V7cmVzdWx0Kz10aGlzLnR5cGV9fWlmKGZvcm1hdCE9PWV4cG9ydHMuRm9ybWF0VHlwZXMuc2lnaGFzaCl7aWYodGhpcy5pbmRleGVkPT09dHJ1ZSl7cmVzdWx0Kz0iIGluZGV4ZWQifWlmKGZvcm1hdD09PWV4cG9ydHMuRm9ybWF0VHlwZXMuZnVsbCYmdGhpcy5uYW1lKXtyZXN1bHQrPSIgIit0aGlzLm5hbWV9fXJldHVybiByZXN1bHR9O1BhcmFtVHlwZS5mcm9tPWZ1bmN0aW9uKHZhbHVlLGFsbG93SW5kZXhlZCl7aWYodHlwZW9mIHZhbHVlPT09InN0cmluZyIpe3JldHVybiBQYXJhbVR5cGUuZnJvbVN0cmluZyh2YWx1ZSxhbGxvd0luZGV4ZWQpfXJldHVybiBQYXJhbVR5cGUuZnJvbU9iamVjdCh2YWx1ZSl9O1BhcmFtVHlwZS5mcm9tT2JqZWN0PWZ1bmN0aW9uKHZhbHVlKXtpZihQYXJhbVR5cGUuaXNQYXJhbVR5cGUodmFsdWUpKXtyZXR1cm4gdmFsdWV9cmV0dXJuIG5ldyBQYXJhbVR5cGUoX2NvbnN0cnVjdG9yR3VhcmQse25hbWU6dmFsdWUubmFtZXx8bnVsbCx0eXBlOnZlcmlmeVR5cGUodmFsdWUudHlwZSksaW5kZXhlZDp2YWx1ZS5pbmRleGVkPT1udWxsP251bGw6ISF2YWx1ZS5pbmRleGVkLGNvbXBvbmVudHM6dmFsdWUuY29tcG9uZW50cz92YWx1ZS5jb21wb25lbnRzLm1hcChQYXJhbVR5cGUuZnJvbU9iamVjdCk6bnVsbH0pfTtQYXJhbVR5cGUuZnJvbVN0cmluZz1mdW5jdGlvbih2YWx1ZSxhbGxvd0luZGV4ZWQpe2Z1bmN0aW9uIFBhcmFtVHlwaWZ5KG5vZGUpe3JldHVybiBQYXJhbVR5cGUuZnJvbU9iamVjdCh7bmFtZTpub2RlLm5hbWUsdHlwZTpub2RlLnR5cGUsaW5kZXhlZDpub2RlLmluZGV4ZWQsY29tcG9uZW50czpub2RlLmNvbXBvbmVudHN9KX1yZXR1cm4gUGFyYW1UeXBpZnkocGFyc2VQYXJhbVR5cGUodmFsdWUsISFhbGxvd0luZGV4ZWQpKX07UGFyYW1UeXBlLmlzUGFyYW1UeXBlPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4hISh2YWx1ZSE9bnVsbCYmdmFsdWUuX2lzUGFyYW1UeXBlKX07cmV0dXJuIFBhcmFtVHlwZX0oKTtleHBvcnRzLlBhcmFtVHlwZT1QYXJhbVR5cGU7ZnVuY3Rpb24gcGFyc2VQYXJhbXModmFsdWUsYWxsb3dJbmRleCl7cmV0dXJuIHNwbGl0TmVzdGluZyh2YWx1ZSkubWFwKGZ1bmN0aW9uKHBhcmFtKXtyZXR1cm4gUGFyYW1UeXBlLmZyb21TdHJpbmcocGFyYW0sYWxsb3dJbmRleCl9KX12YXIgRnJhZ21lbnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBGcmFnbWVudChjb25zdHJ1Y3Rvckd1YXJkLHBhcmFtcyl7aWYoY29uc3RydWN0b3JHdWFyZCE9PV9jb25zdHJ1Y3Rvckd1YXJkKXtsb2dnZXIudGhyb3dFcnJvcigidXNlIGEgc3RhdGljIGZyb20gbWV0aG9kIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoibmV3IEZyYWdtZW50KCkifSl9cG9wdWxhdGUodGhpcyxwYXJhbXMpO3RoaXMuX2lzRnJhZ21lbnQ9dHJ1ZTtPYmplY3QuZnJlZXplKHRoaXMpfUZyYWdtZW50LmZyb209ZnVuY3Rpb24odmFsdWUpe2lmKEZyYWdtZW50LmlzRnJhZ21lbnQodmFsdWUpKXtyZXR1cm4gdmFsdWV9aWYodHlwZW9mIHZhbHVlPT09InN0cmluZyIpe3JldHVybiBGcmFnbWVudC5mcm9tU3RyaW5nKHZhbHVlKX1yZXR1cm4gRnJhZ21lbnQuZnJvbU9iamVjdCh2YWx1ZSl9O0ZyYWdtZW50LmZyb21PYmplY3Q9ZnVuY3Rpb24odmFsdWUpe2lmKEZyYWdtZW50LmlzRnJhZ21lbnQodmFsdWUpKXtyZXR1cm4gdmFsdWV9c3dpdGNoKHZhbHVlLnR5cGUpe2Nhc2UiZnVuY3Rpb24iOnJldHVybiBGdW5jdGlvbkZyYWdtZW50LmZyb21PYmplY3QodmFsdWUpO2Nhc2UiZXZlbnQiOnJldHVybiBFdmVudEZyYWdtZW50LmZyb21PYmplY3QodmFsdWUpO2Nhc2UiY29uc3RydWN0b3IiOnJldHVybiBDb25zdHJ1Y3RvckZyYWdtZW50LmZyb21PYmplY3QodmFsdWUpO2Nhc2UiZXJyb3IiOnJldHVybiBFcnJvckZyYWdtZW50LmZyb21PYmplY3QodmFsdWUpO2Nhc2UiZmFsbGJhY2siOmNhc2UicmVjZWl2ZSI6cmV0dXJuIG51bGx9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZnJhZ21lbnQgb2JqZWN0IiwidmFsdWUiLHZhbHVlKX07RnJhZ21lbnQuZnJvbVN0cmluZz1mdW5jdGlvbih2YWx1ZSl7dmFsdWU9dmFsdWUucmVwbGFjZSgvXHMvZywiICIpO3ZhbHVlPXZhbHVlLnJlcGxhY2UoL1woL2csIiAoIikucmVwbGFjZSgvXCkvZywiKSAiKS5yZXBsYWNlKC9ccysvZywiICIpO3ZhbHVlPXZhbHVlLnRyaW0oKTtpZih2YWx1ZS5zcGxpdCgiICIpWzBdPT09ImV2ZW50Iil7cmV0dXJuIEV2ZW50RnJhZ21lbnQuZnJvbVN0cmluZyh2YWx1ZS5zdWJzdHJpbmcoNSkudHJpbSgpKX1lbHNlIGlmKHZhbHVlLnNwbGl0KCIgIilbMF09PT0iZnVuY3Rpb24iKXtyZXR1cm4gRnVuY3Rpb25GcmFnbWVudC5mcm9tU3RyaW5nKHZhbHVlLnN1YnN0cmluZyg4KS50cmltKCkpfWVsc2UgaWYodmFsdWUuc3BsaXQoIigiKVswXS50cmltKCk9PT0iY29uc3RydWN0b3IiKXtyZXR1cm4gQ29uc3RydWN0b3JGcmFnbWVudC5mcm9tU3RyaW5nKHZhbHVlLnRyaW0oKSl9ZWxzZSBpZih2YWx1ZS5zcGxpdCgiICIpWzBdPT09ImVycm9yIil7cmV0dXJuIEVycm9yRnJhZ21lbnQuZnJvbVN0cmluZyh2YWx1ZS5zdWJzdHJpbmcoNSkudHJpbSgpKX1yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5zdXBwb3J0ZWQgZnJhZ21lbnQiLCJ2YWx1ZSIsdmFsdWUpfTtGcmFnbWVudC5pc0ZyYWdtZW50PWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4hISh2YWx1ZSYmdmFsdWUuX2lzRnJhZ21lbnQpfTtyZXR1cm4gRnJhZ21lbnR9KCk7ZXhwb3J0cy5GcmFnbWVudD1GcmFnbWVudDt2YXIgRXZlbnRGcmFnbWVudD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhFdmVudEZyYWdtZW50LF9zdXBlcik7ZnVuY3Rpb24gRXZlbnRGcmFnbWVudCgpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUV2ZW50RnJhZ21lbnQucHJvdG90eXBlLmZvcm1hdD1mdW5jdGlvbihmb3JtYXQpe2lmKCFmb3JtYXQpe2Zvcm1hdD1leHBvcnRzLkZvcm1hdFR5cGVzLnNpZ2hhc2h9aWYoIWV4cG9ydHMuRm9ybWF0VHlwZXNbZm9ybWF0XSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBmb3JtYXQgdHlwZSIsImZvcm1hdCIsZm9ybWF0KX1pZihmb3JtYXQ9PT1leHBvcnRzLkZvcm1hdFR5cGVzLmpzb24pe3JldHVybiBKU09OLnN0cmluZ2lmeSh7dHlwZToiZXZlbnQiLGFub255bW91czp0aGlzLmFub255bW91cyxuYW1lOnRoaXMubmFtZSxpbnB1dHM6dGhpcy5pbnB1dHMubWFwKGZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gSlNPTi5wYXJzZShpbnB1dC5mb3JtYXQoZm9ybWF0KSl9KX0pfXZhciByZXN1bHQ9IiI7aWYoZm9ybWF0IT09ZXhwb3J0cy5Gb3JtYXRUeXBlcy5zaWdoYXNoKXtyZXN1bHQrPSJldmVudCAifXJlc3VsdCs9dGhpcy5uYW1lKyIoIit0aGlzLmlucHV0cy5tYXAoZnVuY3Rpb24oaW5wdXQpe3JldHVybiBpbnB1dC5mb3JtYXQoZm9ybWF0KX0pLmpvaW4oZm9ybWF0PT09ZXhwb3J0cy5Gb3JtYXRUeXBlcy5mdWxsPyIsICI6IiwiKSsiKSAiO2lmKGZvcm1hdCE9PWV4cG9ydHMuRm9ybWF0VHlwZXMuc2lnaGFzaCl7aWYodGhpcy5hbm9ueW1vdXMpe3Jlc3VsdCs9ImFub255bW91cyAifX1yZXR1cm4gcmVzdWx0LnRyaW0oKX07RXZlbnRGcmFnbWVudC5mcm9tPWZ1bmN0aW9uKHZhbHVlKXtpZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7cmV0dXJuIEV2ZW50RnJhZ21lbnQuZnJvbVN0cmluZyh2YWx1ZSl9cmV0dXJuIEV2ZW50RnJhZ21lbnQuZnJvbU9iamVjdCh2YWx1ZSl9O0V2ZW50RnJhZ21lbnQuZnJvbU9iamVjdD1mdW5jdGlvbih2YWx1ZSl7aWYoRXZlbnRGcmFnbWVudC5pc0V2ZW50RnJhZ21lbnQodmFsdWUpKXtyZXR1cm4gdmFsdWV9aWYodmFsdWUudHlwZSE9PSJldmVudCIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZXZlbnQgb2JqZWN0IiwidmFsdWUiLHZhbHVlKX12YXIgcGFyYW1zPXtuYW1lOnZlcmlmeUlkZW50aWZpZXIodmFsdWUubmFtZSksYW5vbnltb3VzOnZhbHVlLmFub255bW91cyxpbnB1dHM6dmFsdWUuaW5wdXRzP3ZhbHVlLmlucHV0cy5tYXAoUGFyYW1UeXBlLmZyb21PYmplY3QpOltdLHR5cGU6ImV2ZW50In07cmV0dXJuIG5ldyBFdmVudEZyYWdtZW50KF9jb25zdHJ1Y3Rvckd1YXJkLHBhcmFtcyl9O0V2ZW50RnJhZ21lbnQuZnJvbVN0cmluZz1mdW5jdGlvbih2YWx1ZSl7dmFyIG1hdGNoPXZhbHVlLm1hdGNoKHJlZ2V4UGFyZW4pO2lmKCFtYXRjaCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBldmVudCBzdHJpbmciLCJ2YWx1ZSIsdmFsdWUpfXZhciBhbm9ueW1vdXM9ZmFsc2U7bWF0Y2hbM10uc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKG1vZGlmaWVyKXtzd2l0Y2gobW9kaWZpZXIudHJpbSgpKXtjYXNlImFub255bW91cyI6YW5vbnltb3VzPXRydWU7YnJlYWs7Y2FzZSIiOmJyZWFrO2RlZmF1bHQ6bG9nZ2VyLndhcm4oInVua25vd24gbW9kaWZpZXI6ICIrbW9kaWZpZXIpfX0pO3JldHVybiBFdmVudEZyYWdtZW50LmZyb21PYmplY3Qoe25hbWU6bWF0Y2hbMV0udHJpbSgpLGFub255bW91czphbm9ueW1vdXMsaW5wdXRzOnBhcnNlUGFyYW1zKG1hdGNoWzJdLHRydWUpLHR5cGU6ImV2ZW50In0pfTtFdmVudEZyYWdtZW50LmlzRXZlbnRGcmFnbWVudD1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHZhbHVlJiZ2YWx1ZS5faXNGcmFnbWVudCYmdmFsdWUudHlwZT09PSJldmVudCJ9O3JldHVybiBFdmVudEZyYWdtZW50fShGcmFnbWVudCk7ZXhwb3J0cy5FdmVudEZyYWdtZW50PUV2ZW50RnJhZ21lbnQ7ZnVuY3Rpb24gcGFyc2VHYXModmFsdWUscGFyYW1zKXtwYXJhbXMuZ2FzPW51bGw7dmFyIGNvbXBzPXZhbHVlLnNwbGl0KCJAIik7aWYoY29tcHMubGVuZ3RoIT09MSl7aWYoY29tcHMubGVuZ3RoPjIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgaHVtYW4tcmVhZGFibGUgQUJJIHNpZ25hdHVyZSIsInZhbHVlIix2YWx1ZSl9aWYoIWNvbXBzWzFdLm1hdGNoKC9eWzAtOV0rJC8pKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGh1bWFuLXJlYWRhYmxlIEFCSSBzaWduYXR1cmUgZ2FzIiwidmFsdWUiLHZhbHVlKX1wYXJhbXMuZ2FzPWxpYiQyLkJpZ051bWJlci5mcm9tKGNvbXBzWzFdKTtyZXR1cm4gY29tcHNbMF19cmV0dXJuIHZhbHVlfWZ1bmN0aW9uIHBhcnNlTW9kaWZpZXJzKHZhbHVlLHBhcmFtcyl7cGFyYW1zLmNvbnN0YW50PWZhbHNlO3BhcmFtcy5wYXlhYmxlPWZhbHNlO3BhcmFtcy5zdGF0ZU11dGFiaWxpdHk9Im5vbnBheWFibGUiO3ZhbHVlLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihtb2RpZmllcil7c3dpdGNoKG1vZGlmaWVyLnRyaW0oKSl7Y2FzZSJjb25zdGFudCI6cGFyYW1zLmNvbnN0YW50PXRydWU7YnJlYWs7Y2FzZSJwYXlhYmxlIjpwYXJhbXMucGF5YWJsZT10cnVlO3BhcmFtcy5zdGF0ZU11dGFiaWxpdHk9InBheWFibGUiO2JyZWFrO2Nhc2Uibm9ucGF5YWJsZSI6cGFyYW1zLnBheWFibGU9ZmFsc2U7cGFyYW1zLnN0YXRlTXV0YWJpbGl0eT0ibm9ucGF5YWJsZSI7YnJlYWs7Y2FzZSJwdXJlIjpwYXJhbXMuY29uc3RhbnQ9dHJ1ZTtwYXJhbXMuc3RhdGVNdXRhYmlsaXR5PSJwdXJlIjticmVhaztjYXNlInZpZXciOnBhcmFtcy5jb25zdGFudD10cnVlO3BhcmFtcy5zdGF0ZU11dGFiaWxpdHk9InZpZXciO2JyZWFrO2Nhc2UiZXh0ZXJuYWwiOmNhc2UicHVibGljIjpjYXNlIiI6YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmxvZygidW5rbm93biBtb2RpZmllcjogIittb2RpZmllcil9fSl9ZnVuY3Rpb24gdmVyaWZ5U3RhdGUodmFsdWUpe3ZhciByZXN1bHQ9e2NvbnN0YW50OmZhbHNlLHBheWFibGU6dHJ1ZSxzdGF0ZU11dGFiaWxpdHk6InBheWFibGUifTtpZih2YWx1ZS5zdGF0ZU11dGFiaWxpdHkhPW51bGwpe3Jlc3VsdC5zdGF0ZU11dGFiaWxpdHk9dmFsdWUuc3RhdGVNdXRhYmlsaXR5O3Jlc3VsdC5jb25zdGFudD1yZXN1bHQuc3RhdGVNdXRhYmlsaXR5PT09InZpZXcifHxyZXN1bHQuc3RhdGVNdXRhYmlsaXR5PT09InB1cmUiO2lmKHZhbHVlLmNvbnN0YW50IT1udWxsKXtpZighIXZhbHVlLmNvbnN0YW50IT09cmVzdWx0LmNvbnN0YW50KXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJjYW5ub3QgaGF2ZSBjb25zdGFudCBmdW5jdGlvbiB3aXRoIG11dGFiaWxpdHkgIityZXN1bHQuc3RhdGVNdXRhYmlsaXR5LCJ2YWx1ZSIsdmFsdWUpfX1yZXN1bHQucGF5YWJsZT1yZXN1bHQuc3RhdGVNdXRhYmlsaXR5PT09InBheWFibGUiO2lmKHZhbHVlLnBheWFibGUhPW51bGwpe2lmKCEhdmFsdWUucGF5YWJsZSE9PXJlc3VsdC5wYXlhYmxlKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJjYW5ub3QgaGF2ZSBwYXlhYmxlIGZ1bmN0aW9uIHdpdGggbXV0YWJpbGl0eSAiK3Jlc3VsdC5zdGF0ZU11dGFiaWxpdHksInZhbHVlIix2YWx1ZSl9fX1lbHNlIGlmKHZhbHVlLnBheWFibGUhPW51bGwpe3Jlc3VsdC5wYXlhYmxlPSEhdmFsdWUucGF5YWJsZTtpZih2YWx1ZS5jb25zdGFudD09bnVsbCYmIXJlc3VsdC5wYXlhYmxlJiZ2YWx1ZS50eXBlIT09ImNvbnN0cnVjdG9yIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5hYmxlIHRvIGRldGVybWluZSBzdGF0ZU11dGFiaWxpdHkiLCJ2YWx1ZSIsdmFsdWUpfXJlc3VsdC5jb25zdGFudD0hIXZhbHVlLmNvbnN0YW50O2lmKHJlc3VsdC5jb25zdGFudCl7cmVzdWx0LnN0YXRlTXV0YWJpbGl0eT0idmlldyJ9ZWxzZXtyZXN1bHQuc3RhdGVNdXRhYmlsaXR5PXJlc3VsdC5wYXlhYmxlPyJwYXlhYmxlIjoibm9ucGF5YWJsZSJ9aWYocmVzdWx0LnBheWFibGUmJnJlc3VsdC5jb25zdGFudCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiY2Fubm90IGhhdmUgY29uc3RhbnQgcGF5YWJsZSBmdW5jdGlvbiIsInZhbHVlIix2YWx1ZSl9fWVsc2UgaWYodmFsdWUuY29uc3RhbnQhPW51bGwpe3Jlc3VsdC5jb25zdGFudD0hIXZhbHVlLmNvbnN0YW50O3Jlc3VsdC5wYXlhYmxlPSFyZXN1bHQuY29uc3RhbnQ7cmVzdWx0LnN0YXRlTXV0YWJpbGl0eT1yZXN1bHQuY29uc3RhbnQ/InZpZXciOiJwYXlhYmxlIn1lbHNlIGlmKHZhbHVlLnR5cGUhPT0iY29uc3RydWN0b3IiKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bmFibGUgdG8gZGV0ZXJtaW5lIHN0YXRlTXV0YWJpbGl0eSIsInZhbHVlIix2YWx1ZSl9cmV0dXJuIHJlc3VsdH12YXIgQ29uc3RydWN0b3JGcmFnbWVudD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhDb25zdHJ1Y3RvckZyYWdtZW50LF9zdXBlcik7ZnVuY3Rpb24gQ29uc3RydWN0b3JGcmFnbWVudCgpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUNvbnN0cnVjdG9yRnJhZ21lbnQucHJvdG90eXBlLmZvcm1hdD1mdW5jdGlvbihmb3JtYXQpe2lmKCFmb3JtYXQpe2Zvcm1hdD1leHBvcnRzLkZvcm1hdFR5cGVzLnNpZ2hhc2h9aWYoIWV4cG9ydHMuRm9ybWF0VHlwZXNbZm9ybWF0XSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBmb3JtYXQgdHlwZSIsImZvcm1hdCIsZm9ybWF0KX1pZihmb3JtYXQ9PT1leHBvcnRzLkZvcm1hdFR5cGVzLmpzb24pe3JldHVybiBKU09OLnN0cmluZ2lmeSh7dHlwZToiY29uc3RydWN0b3IiLHN0YXRlTXV0YWJpbGl0eTp0aGlzLnN0YXRlTXV0YWJpbGl0eSE9PSJub25wYXlhYmxlIj90aGlzLnN0YXRlTXV0YWJpbGl0eTp1bmRlZmluZWQscGF5YWJsZTp0aGlzLnBheWFibGUsZ2FzOnRoaXMuZ2FzP3RoaXMuZ2FzLnRvTnVtYmVyKCk6dW5kZWZpbmVkLGlucHV0czp0aGlzLmlucHV0cy5tYXAoZnVuY3Rpb24oaW5wdXQpe3JldHVybiBKU09OLnBhcnNlKGlucHV0LmZvcm1hdChmb3JtYXQpKX0pfSl9aWYoZm9ybWF0PT09ZXhwb3J0cy5Gb3JtYXRUeXBlcy5zaWdoYXNoKXtsb2dnZXIudGhyb3dFcnJvcigiY2Fubm90IGZvcm1hdCBhIGNvbnN0cnVjdG9yIGZvciBzaWdoYXNoIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiZm9ybWF0KHNpZ2hhc2gpIn0pfXZhciByZXN1bHQ9ImNvbnN0cnVjdG9yKCIrdGhpcy5pbnB1dHMubWFwKGZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gaW5wdXQuZm9ybWF0KGZvcm1hdCl9KS5qb2luKGZvcm1hdD09PWV4cG9ydHMuRm9ybWF0VHlwZXMuZnVsbD8iLCAiOiIsIikrIikgIjtpZih0aGlzLnN0YXRlTXV0YWJpbGl0eSYmdGhpcy5zdGF0ZU11dGFiaWxpdHkhPT0ibm9ucGF5YWJsZSIpe3Jlc3VsdCs9dGhpcy5zdGF0ZU11dGFiaWxpdHkrIiAifXJldHVybiByZXN1bHQudHJpbSgpfTtDb25zdHJ1Y3RvckZyYWdtZW50LmZyb209ZnVuY3Rpb24odmFsdWUpe2lmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtyZXR1cm4gQ29uc3RydWN0b3JGcmFnbWVudC5mcm9tU3RyaW5nKHZhbHVlKX1yZXR1cm4gQ29uc3RydWN0b3JGcmFnbWVudC5mcm9tT2JqZWN0KHZhbHVlKX07Q29uc3RydWN0b3JGcmFnbWVudC5mcm9tT2JqZWN0PWZ1bmN0aW9uKHZhbHVlKXtpZihDb25zdHJ1Y3RvckZyYWdtZW50LmlzQ29uc3RydWN0b3JGcmFnbWVudCh2YWx1ZSkpe3JldHVybiB2YWx1ZX1pZih2YWx1ZS50eXBlIT09ImNvbnN0cnVjdG9yIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBjb25zdHJ1Y3RvciBvYmplY3QiLCJ2YWx1ZSIsdmFsdWUpfXZhciBzdGF0ZT12ZXJpZnlTdGF0ZSh2YWx1ZSk7aWYoc3RhdGUuY29uc3RhbnQpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjb25zdGFudCIsInZhbHVlIix2YWx1ZSl9dmFyIHBhcmFtcz17bmFtZTpudWxsLHR5cGU6dmFsdWUudHlwZSxpbnB1dHM6dmFsdWUuaW5wdXRzP3ZhbHVlLmlucHV0cy5tYXAoUGFyYW1UeXBlLmZyb21PYmplY3QpOltdLHBheWFibGU6c3RhdGUucGF5YWJsZSxzdGF0ZU11dGFiaWxpdHk6c3RhdGUuc3RhdGVNdXRhYmlsaXR5LGdhczp2YWx1ZS5nYXM/bGliJDIuQmlnTnVtYmVyLmZyb20odmFsdWUuZ2FzKTpudWxsfTtyZXR1cm4gbmV3IENvbnN0cnVjdG9yRnJhZ21lbnQoX2NvbnN0cnVjdG9yR3VhcmQscGFyYW1zKX07Q29uc3RydWN0b3JGcmFnbWVudC5mcm9tU3RyaW5nPWZ1bmN0aW9uKHZhbHVlKXt2YXIgcGFyYW1zPXt0eXBlOiJjb25zdHJ1Y3RvciJ9O3ZhbHVlPXBhcnNlR2FzKHZhbHVlLHBhcmFtcyk7dmFyIHBhcmVucz12YWx1ZS5tYXRjaChyZWdleFBhcmVuKTtpZighcGFyZW5zfHxwYXJlbnNbMV0udHJpbSgpIT09ImNvbnN0cnVjdG9yIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBjb25zdHJ1Y3RvciBzdHJpbmciLCJ2YWx1ZSIsdmFsdWUpfXBhcmFtcy5pbnB1dHM9cGFyc2VQYXJhbXMocGFyZW5zWzJdLnRyaW0oKSxmYWxzZSk7cGFyc2VNb2RpZmllcnMocGFyZW5zWzNdLnRyaW0oKSxwYXJhbXMpO3JldHVybiBDb25zdHJ1Y3RvckZyYWdtZW50LmZyb21PYmplY3QocGFyYW1zKX07Q29uc3RydWN0b3JGcmFnbWVudC5pc0NvbnN0cnVjdG9yRnJhZ21lbnQ9ZnVuY3Rpb24odmFsdWUpe3JldHVybiB2YWx1ZSYmdmFsdWUuX2lzRnJhZ21lbnQmJnZhbHVlLnR5cGU9PT0iY29uc3RydWN0b3IifTtyZXR1cm4gQ29uc3RydWN0b3JGcmFnbWVudH0oRnJhZ21lbnQpO2V4cG9ydHMuQ29uc3RydWN0b3JGcmFnbWVudD1Db25zdHJ1Y3RvckZyYWdtZW50O3ZhciBGdW5jdGlvbkZyYWdtZW50PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEZ1bmN0aW9uRnJhZ21lbnQsX3N1cGVyKTtmdW5jdGlvbiBGdW5jdGlvbkZyYWdtZW50KCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9RnVuY3Rpb25GcmFnbWVudC5wcm90b3R5cGUuZm9ybWF0PWZ1bmN0aW9uKGZvcm1hdCl7aWYoIWZvcm1hdCl7Zm9ybWF0PWV4cG9ydHMuRm9ybWF0VHlwZXMuc2lnaGFzaH1pZighZXhwb3J0cy5Gb3JtYXRUeXBlc1tmb3JtYXRdKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGZvcm1hdCB0eXBlIiwiZm9ybWF0Iixmb3JtYXQpfWlmKGZvcm1hdD09PWV4cG9ydHMuRm9ybWF0VHlwZXMuanNvbil7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHt0eXBlOiJmdW5jdGlvbiIsbmFtZTp0aGlzLm5hbWUsY29uc3RhbnQ6dGhpcy5jb25zdGFudCxzdGF0ZU11dGFiaWxpdHk6dGhpcy5zdGF0ZU11dGFiaWxpdHkhPT0ibm9ucGF5YWJsZSI/dGhpcy5zdGF0ZU11dGFiaWxpdHk6dW5kZWZpbmVkLHBheWFibGU6dGhpcy5wYXlhYmxlLGdhczp0aGlzLmdhcz90aGlzLmdhcy50b051bWJlcigpOnVuZGVmaW5lZCxpbnB1dHM6dGhpcy5pbnB1dHMubWFwKGZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gSlNPTi5wYXJzZShpbnB1dC5mb3JtYXQoZm9ybWF0KSl9KSxvdXRwdXRzOnRoaXMub3V0cHV0cy5tYXAoZnVuY3Rpb24ob3V0cHV0KXtyZXR1cm4gSlNPTi5wYXJzZShvdXRwdXQuZm9ybWF0KGZvcm1hdCkpfSl9KX12YXIgcmVzdWx0PSIiO2lmKGZvcm1hdCE9PWV4cG9ydHMuRm9ybWF0VHlwZXMuc2lnaGFzaCl7cmVzdWx0Kz0iZnVuY3Rpb24gIn1yZXN1bHQrPXRoaXMubmFtZSsiKCIrdGhpcy5pbnB1dHMubWFwKGZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gaW5wdXQuZm9ybWF0KGZvcm1hdCl9KS5qb2luKGZvcm1hdD09PWV4cG9ydHMuRm9ybWF0VHlwZXMuZnVsbD8iLCAiOiIsIikrIikgIjtpZihmb3JtYXQhPT1leHBvcnRzLkZvcm1hdFR5cGVzLnNpZ2hhc2gpe2lmKHRoaXMuc3RhdGVNdXRhYmlsaXR5KXtpZih0aGlzLnN0YXRlTXV0YWJpbGl0eSE9PSJub25wYXlhYmxlIil7cmVzdWx0Kz10aGlzLnN0YXRlTXV0YWJpbGl0eSsiICJ9fWVsc2UgaWYodGhpcy5jb25zdGFudCl7cmVzdWx0Kz0idmlldyAifWlmKHRoaXMub3V0cHV0cyYmdGhpcy5vdXRwdXRzLmxlbmd0aCl7cmVzdWx0Kz0icmV0dXJucyAoIit0aGlzLm91dHB1dHMubWFwKGZ1bmN0aW9uKG91dHB1dCl7cmV0dXJuIG91dHB1dC5mb3JtYXQoZm9ybWF0KX0pLmpvaW4oIiwgIikrIikgIn1pZih0aGlzLmdhcyE9bnVsbCl7cmVzdWx0Kz0iQCIrdGhpcy5nYXMudG9TdHJpbmcoKSsiICJ9fXJldHVybiByZXN1bHQudHJpbSgpfTtGdW5jdGlvbkZyYWdtZW50LmZyb209ZnVuY3Rpb24odmFsdWUpe2lmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtyZXR1cm4gRnVuY3Rpb25GcmFnbWVudC5mcm9tU3RyaW5nKHZhbHVlKX1yZXR1cm4gRnVuY3Rpb25GcmFnbWVudC5mcm9tT2JqZWN0KHZhbHVlKX07RnVuY3Rpb25GcmFnbWVudC5mcm9tT2JqZWN0PWZ1bmN0aW9uKHZhbHVlKXtpZihGdW5jdGlvbkZyYWdtZW50LmlzRnVuY3Rpb25GcmFnbWVudCh2YWx1ZSkpe3JldHVybiB2YWx1ZX1pZih2YWx1ZS50eXBlIT09ImZ1bmN0aW9uIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBmdW5jdGlvbiBvYmplY3QiLCJ2YWx1ZSIsdmFsdWUpfXZhciBzdGF0ZT12ZXJpZnlTdGF0ZSh2YWx1ZSk7dmFyIHBhcmFtcz17dHlwZTp2YWx1ZS50eXBlLG5hbWU6dmVyaWZ5SWRlbnRpZmllcih2YWx1ZS5uYW1lKSxjb25zdGFudDpzdGF0ZS5jb25zdGFudCxpbnB1dHM6dmFsdWUuaW5wdXRzP3ZhbHVlLmlucHV0cy5tYXAoUGFyYW1UeXBlLmZyb21PYmplY3QpOltdLG91dHB1dHM6dmFsdWUub3V0cHV0cz92YWx1ZS5vdXRwdXRzLm1hcChQYXJhbVR5cGUuZnJvbU9iamVjdCk6W10scGF5YWJsZTpzdGF0ZS5wYXlhYmxlLHN0YXRlTXV0YWJpbGl0eTpzdGF0ZS5zdGF0ZU11dGFiaWxpdHksZ2FzOnZhbHVlLmdhcz9saWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZS5nYXMpOm51bGx9O3JldHVybiBuZXcgRnVuY3Rpb25GcmFnbWVudChfY29uc3RydWN0b3JHdWFyZCxwYXJhbXMpfTtGdW5jdGlvbkZyYWdtZW50LmZyb21TdHJpbmc9ZnVuY3Rpb24odmFsdWUpe3ZhciBwYXJhbXM9e3R5cGU6ImZ1bmN0aW9uIn07dmFsdWU9cGFyc2VHYXModmFsdWUscGFyYW1zKTt2YXIgY29tcHM9dmFsdWUuc3BsaXQoIiByZXR1cm5zICIpO2lmKGNvbXBzLmxlbmd0aD4yKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGZ1bmN0aW9uIHN0cmluZyIsInZhbHVlIix2YWx1ZSl9dmFyIHBhcmVucz1jb21wc1swXS5tYXRjaChyZWdleFBhcmVuKTtpZighcGFyZW5zKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGZ1bmN0aW9uIHNpZ25hdHVyZSIsInZhbHVlIix2YWx1ZSl9cGFyYW1zLm5hbWU9cGFyZW5zWzFdLnRyaW0oKTtpZihwYXJhbXMubmFtZSl7dmVyaWZ5SWRlbnRpZmllcihwYXJhbXMubmFtZSl9cGFyYW1zLmlucHV0cz1wYXJzZVBhcmFtcyhwYXJlbnNbMl0sZmFsc2UpO3BhcnNlTW9kaWZpZXJzKHBhcmVuc1szXS50cmltKCkscGFyYW1zKTtpZihjb21wcy5sZW5ndGg+MSl7dmFyIHJldHVybnM9Y29tcHNbMV0ubWF0Y2gocmVnZXhQYXJlbik7aWYocmV0dXJuc1sxXS50cmltKCkhPSIifHxyZXR1cm5zWzNdLnRyaW0oKSE9IiIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVuZXhwZWN0ZWQgdG9rZW5zIiwidmFsdWUiLHZhbHVlKX1wYXJhbXMub3V0cHV0cz1wYXJzZVBhcmFtcyhyZXR1cm5zWzJdLGZhbHNlKX1lbHNle3BhcmFtcy5vdXRwdXRzPVtdfXJldHVybiBGdW5jdGlvbkZyYWdtZW50LmZyb21PYmplY3QocGFyYW1zKX07RnVuY3Rpb25GcmFnbWVudC5pc0Z1bmN0aW9uRnJhZ21lbnQ9ZnVuY3Rpb24odmFsdWUpe3JldHVybiB2YWx1ZSYmdmFsdWUuX2lzRnJhZ21lbnQmJnZhbHVlLnR5cGU9PT0iZnVuY3Rpb24ifTtyZXR1cm4gRnVuY3Rpb25GcmFnbWVudH0oQ29uc3RydWN0b3JGcmFnbWVudCk7ZXhwb3J0cy5GdW5jdGlvbkZyYWdtZW50PUZ1bmN0aW9uRnJhZ21lbnQ7ZnVuY3Rpb24gY2hlY2tGb3JiaWRkZW4oZnJhZ21lbnQpe3ZhciBzaWc9ZnJhZ21lbnQuZm9ybWF0KCk7aWYoc2lnPT09IkVycm9yKHN0cmluZykifHxzaWc9PT0iUGFuaWModWludDI1NikiKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJjYW5ub3Qgc3BlY2lmeSB1c2VyIGRlZmluZWQgIitzaWcrIiBlcnJvciIsImZyYWdtZW50IixmcmFnbWVudCl9cmV0dXJuIGZyYWdtZW50fXZhciBFcnJvckZyYWdtZW50PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEVycm9yRnJhZ21lbnQsX3N1cGVyKTtmdW5jdGlvbiBFcnJvckZyYWdtZW50KCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9RXJyb3JGcmFnbWVudC5wcm90b3R5cGUuZm9ybWF0PWZ1bmN0aW9uKGZvcm1hdCl7aWYoIWZvcm1hdCl7Zm9ybWF0PWV4cG9ydHMuRm9ybWF0VHlwZXMuc2lnaGFzaH1pZighZXhwb3J0cy5Gb3JtYXRUeXBlc1tmb3JtYXRdKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGZvcm1hdCB0eXBlIiwiZm9ybWF0Iixmb3JtYXQpfWlmKGZvcm1hdD09PWV4cG9ydHMuRm9ybWF0VHlwZXMuanNvbil7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHt0eXBlOiJlcnJvciIsbmFtZTp0aGlzLm5hbWUsaW5wdXRzOnRoaXMuaW5wdXRzLm1hcChmdW5jdGlvbihpbnB1dCl7cmV0dXJuIEpTT04ucGFyc2UoaW5wdXQuZm9ybWF0KGZvcm1hdCkpfSl9KX12YXIgcmVzdWx0PSIiO2lmKGZvcm1hdCE9PWV4cG9ydHMuRm9ybWF0VHlwZXMuc2lnaGFzaCl7cmVzdWx0Kz0iZXJyb3IgIn1yZXN1bHQrPXRoaXMubmFtZSsiKCIrdGhpcy5pbnB1dHMubWFwKGZ1bmN0aW9uKGlucHV0KXtyZXR1cm4gaW5wdXQuZm9ybWF0KGZvcm1hdCl9KS5qb2luKGZvcm1hdD09PWV4cG9ydHMuRm9ybWF0VHlwZXMuZnVsbD8iLCAiOiIsIikrIikgIjtyZXR1cm4gcmVzdWx0LnRyaW0oKX07RXJyb3JGcmFnbWVudC5mcm9tPWZ1bmN0aW9uKHZhbHVlKXtpZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7cmV0dXJuIEVycm9yRnJhZ21lbnQuZnJvbVN0cmluZyh2YWx1ZSl9cmV0dXJuIEVycm9yRnJhZ21lbnQuZnJvbU9iamVjdCh2YWx1ZSl9O0Vycm9yRnJhZ21lbnQuZnJvbU9iamVjdD1mdW5jdGlvbih2YWx1ZSl7aWYoRXJyb3JGcmFnbWVudC5pc0Vycm9yRnJhZ21lbnQodmFsdWUpKXtyZXR1cm4gdmFsdWV9aWYodmFsdWUudHlwZSE9PSJlcnJvciIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZXJyb3Igb2JqZWN0IiwidmFsdWUiLHZhbHVlKX12YXIgcGFyYW1zPXt0eXBlOnZhbHVlLnR5cGUsbmFtZTp2ZXJpZnlJZGVudGlmaWVyKHZhbHVlLm5hbWUpLGlucHV0czp2YWx1ZS5pbnB1dHM/dmFsdWUuaW5wdXRzLm1hcChQYXJhbVR5cGUuZnJvbU9iamVjdCk6W119O3JldHVybiBjaGVja0ZvcmJpZGRlbihuZXcgRXJyb3JGcmFnbWVudChfY29uc3RydWN0b3JHdWFyZCxwYXJhbXMpKX07RXJyb3JGcmFnbWVudC5mcm9tU3RyaW5nPWZ1bmN0aW9uKHZhbHVlKXt2YXIgcGFyYW1zPXt0eXBlOiJlcnJvciJ9O3ZhciBwYXJlbnM9dmFsdWUubWF0Y2gocmVnZXhQYXJlbik7aWYoIXBhcmVucyl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBlcnJvciBzaWduYXR1cmUiLCJ2YWx1ZSIsdmFsdWUpfXBhcmFtcy5uYW1lPXBhcmVuc1sxXS50cmltKCk7aWYocGFyYW1zLm5hbWUpe3ZlcmlmeUlkZW50aWZpZXIocGFyYW1zLm5hbWUpfXBhcmFtcy5pbnB1dHM9cGFyc2VQYXJhbXMocGFyZW5zWzJdLGZhbHNlKTtyZXR1cm4gY2hlY2tGb3JiaWRkZW4oRXJyb3JGcmFnbWVudC5mcm9tT2JqZWN0KHBhcmFtcykpfTtFcnJvckZyYWdtZW50LmlzRXJyb3JGcmFnbWVudD1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHZhbHVlJiZ2YWx1ZS5faXNGcmFnbWVudCYmdmFsdWUudHlwZT09PSJlcnJvciJ9O3JldHVybiBFcnJvckZyYWdtZW50fShGcmFnbWVudCk7ZXhwb3J0cy5FcnJvckZyYWdtZW50PUVycm9yRnJhZ21lbnQ7ZnVuY3Rpb24gdmVyaWZ5VHlwZSh0eXBlKXtpZih0eXBlLm1hdGNoKC9edWludCgkfFteMS05XSkvKSl7dHlwZT0idWludDI1NiIrdHlwZS5zdWJzdHJpbmcoNCl9ZWxzZSBpZih0eXBlLm1hdGNoKC9eaW50KCR8W14xLTldKS8pKXt0eXBlPSJpbnQyNTYiK3R5cGUuc3Vic3RyaW5nKDMpfXJldHVybiB0eXBlfXZhciByZWdleElkZW50aWZpZXI9bmV3IFJlZ0V4cCgiXlthLXpBLVokX11bYS16QS1aMC05JF9dKiQiKTtmdW5jdGlvbiB2ZXJpZnlJZGVudGlmaWVyKHZhbHVlKXtpZighdmFsdWV8fCF2YWx1ZS5tYXRjaChyZWdleElkZW50aWZpZXIpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCdpbnZhbGlkIGlkZW50aWZpZXIgIicrdmFsdWUrJyInLCJ2YWx1ZSIsdmFsdWUpfXJldHVybiB2YWx1ZX12YXIgcmVnZXhQYXJlbj1uZXcgUmVnRXhwKCJeKFteKShdKilcXCgoLiopXFwpKFteKShdKikkIik7ZnVuY3Rpb24gc3BsaXROZXN0aW5nKHZhbHVlKXt2YWx1ZT12YWx1ZS50cmltKCk7dmFyIHJlc3VsdD1bXTt2YXIgYWNjdW09IiI7dmFyIGRlcHRoPTA7Zm9yKHZhciBvZmZzZXQ9MDtvZmZzZXQ8dmFsdWUubGVuZ3RoO29mZnNldCsrKXt2YXIgYz12YWx1ZVtvZmZzZXRdO2lmKGM9PT0iLCImJmRlcHRoPT09MCl7cmVzdWx0LnB1c2goYWNjdW0pO2FjY3VtPSIifWVsc2V7YWNjdW0rPWM7aWYoYz09PSIoIil7ZGVwdGgrK31lbHNlIGlmKGM9PT0iKSIpe2RlcHRoLS07aWYoZGVwdGg9PT0tMSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIsInZhbHVlIix2YWx1ZSl9fX19aWYoYWNjdW0pe3Jlc3VsdC5wdXNoKGFjY3VtKX1yZXR1cm4gcmVzdWx0fX0pO3ZhciBmcmFnbWVudHMkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhmcmFnbWVudHMpO3ZhciBhYnN0cmFjdENvZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5SZWFkZXI9ZXhwb3J0cy5Xcml0ZXI9ZXhwb3J0cy5Db2Rlcj1leHBvcnRzLmNoZWNrUmVzdWx0RXJyb3JzPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJDgudmVyc2lvbik7ZnVuY3Rpb24gY2hlY2tSZXN1bHRFcnJvcnMocmVzdWx0KXt2YXIgZXJyb3JzPVtdO3ZhciBjaGVja0Vycm9ycz1mdW5jdGlvbihwYXRoLG9iamVjdCl7aWYoIUFycmF5LmlzQXJyYXkob2JqZWN0KSl7cmV0dXJufWZvcih2YXIga2V5IGluIG9iamVjdCl7dmFyIGNoaWxkUGF0aD1wYXRoLnNsaWNlKCk7Y2hpbGRQYXRoLnB1c2goa2V5KTt0cnl7Y2hlY2tFcnJvcnMoY2hpbGRQYXRoLG9iamVjdFtrZXldKX1jYXRjaChlcnJvcil7ZXJyb3JzLnB1c2goe3BhdGg6Y2hpbGRQYXRoLGVycm9yOmVycm9yfSl9fX07Y2hlY2tFcnJvcnMoW10scmVzdWx0KTtyZXR1cm4gZXJyb3JzfWV4cG9ydHMuY2hlY2tSZXN1bHRFcnJvcnM9Y2hlY2tSZXN1bHRFcnJvcnM7dmFyIENvZGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQ29kZXIobmFtZSx0eXBlLGxvY2FsTmFtZSxkeW5hbWljKXt0aGlzLm5hbWU9bmFtZTt0aGlzLnR5cGU9dHlwZTt0aGlzLmxvY2FsTmFtZT1sb2NhbE5hbWU7dGhpcy5keW5hbWljPWR5bmFtaWN9Q29kZXIucHJvdG90eXBlLl90aHJvd0Vycm9yPWZ1bmN0aW9uKG1lc3NhZ2UsdmFsdWUpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IobWVzc2FnZSx0aGlzLmxvY2FsTmFtZSx2YWx1ZSl9O3JldHVybiBDb2Rlcn0oKTtleHBvcnRzLkNvZGVyPUNvZGVyO3ZhciBXcml0ZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBXcml0ZXIod29yZFNpemUpeygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJ3b3JkU2l6ZSIsd29yZFNpemV8fDMyKTt0aGlzLl9kYXRhPVtdO3RoaXMuX2RhdGFMZW5ndGg9MDt0aGlzLl9wYWRkaW5nPW5ldyBVaW50OEFycmF5KHdvcmRTaXplKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGVyLnByb3RvdHlwZSwiZGF0YSIse2dldDpmdW5jdGlvbigpe3JldHVybigwLGxpYiQxLmhleENvbmNhdCkodGhpcy5fZGF0YSl9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGVyLnByb3RvdHlwZSwibGVuZ3RoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGFMZW5ndGh9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtXcml0ZXIucHJvdG90eXBlLl93cml0ZURhdGE9ZnVuY3Rpb24oZGF0YSl7dGhpcy5fZGF0YS5wdXNoKGRhdGEpO3RoaXMuX2RhdGFMZW5ndGgrPWRhdGEubGVuZ3RoO3JldHVybiBkYXRhLmxlbmd0aH07V3JpdGVyLnByb3RvdHlwZS5hcHBlbmRXcml0ZXI9ZnVuY3Rpb24od3JpdGVyKXtyZXR1cm4gdGhpcy5fd3JpdGVEYXRhKCgwLGxpYiQxLmNvbmNhdCkod3JpdGVyLl9kYXRhKSl9O1dyaXRlci5wcm90b3R5cGUud3JpdGVCeXRlcz1mdW5jdGlvbih2YWx1ZSl7dmFyIGJ5dGVzPSgwLGxpYiQxLmFycmF5aWZ5KSh2YWx1ZSk7dmFyIHBhZGRpbmdPZmZzZXQ9Ynl0ZXMubGVuZ3RoJXRoaXMud29yZFNpemU7aWYocGFkZGluZ09mZnNldCl7Ynl0ZXM9KDAsbGliJDEuY29uY2F0KShbYnl0ZXMsdGhpcy5fcGFkZGluZy5zbGljZShwYWRkaW5nT2Zmc2V0KV0pfXJldHVybiB0aGlzLl93cml0ZURhdGEoYnl0ZXMpfTtXcml0ZXIucHJvdG90eXBlLl9nZXRWYWx1ZT1mdW5jdGlvbih2YWx1ZSl7dmFyIGJ5dGVzPSgwLGxpYiQxLmFycmF5aWZ5KShsaWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZSkpO2lmKGJ5dGVzLmxlbmd0aD50aGlzLndvcmRTaXplKXtsb2dnZXIudGhyb3dFcnJvcigidmFsdWUgb3V0LW9mLWJvdW5kcyIsbGliLkxvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4se2xlbmd0aDp0aGlzLndvcmRTaXplLG9mZnNldDpieXRlcy5sZW5ndGh9KX1pZihieXRlcy5sZW5ndGgldGhpcy53b3JkU2l6ZSl7Ynl0ZXM9KDAsbGliJDEuY29uY2F0KShbdGhpcy5fcGFkZGluZy5zbGljZShieXRlcy5sZW5ndGgldGhpcy53b3JkU2l6ZSksYnl0ZXNdKX1yZXR1cm4gYnl0ZXN9O1dyaXRlci5wcm90b3R5cGUud3JpdGVWYWx1ZT1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHRoaXMuX3dyaXRlRGF0YSh0aGlzLl9nZXRWYWx1ZSh2YWx1ZSkpfTtXcml0ZXIucHJvdG90eXBlLndyaXRlVXBkYXRhYmxlVmFsdWU9ZnVuY3Rpb24oKXt2YXIgX3RoaXM9dGhpczt2YXIgb2Zmc2V0PXRoaXMuX2RhdGEubGVuZ3RoO3RoaXMuX2RhdGEucHVzaCh0aGlzLl9wYWRkaW5nKTt0aGlzLl9kYXRhTGVuZ3RoKz10aGlzLndvcmRTaXplO3JldHVybiBmdW5jdGlvbih2YWx1ZSl7X3RoaXMuX2RhdGFbb2Zmc2V0XT1fdGhpcy5fZ2V0VmFsdWUodmFsdWUpfX07cmV0dXJuIFdyaXRlcn0oKTtleHBvcnRzLldyaXRlcj1Xcml0ZXI7dmFyIFJlYWRlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIFJlYWRlcihkYXRhLHdvcmRTaXplLGNvZXJjZUZ1bmMsYWxsb3dMb29zZSl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsIl9kYXRhIiwoMCxsaWIkMS5hcnJheWlmeSkoZGF0YSkpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJ3b3JkU2l6ZSIsd29yZFNpemV8fDMyKTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiX2NvZXJjZUZ1bmMiLGNvZXJjZUZ1bmMpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJhbGxvd0xvb3NlIixhbGxvd0xvb3NlKTt0aGlzLl9vZmZzZXQ9MH1PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGVyLnByb3RvdHlwZSwiZGF0YSIse2dldDpmdW5jdGlvbigpe3JldHVybigwLGxpYiQxLmhleGxpZnkpKHRoaXMuX2RhdGEpfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRlci5wcm90b3R5cGUsImNvbnN1bWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29mZnNldH0sZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6dHJ1ZX0pO1JlYWRlci5jb2VyY2U9ZnVuY3Rpb24obmFtZSx2YWx1ZSl7dmFyIG1hdGNoPW5hbWUubWF0Y2goIl51P2ludChbMC05XSspJCIpO2lmKG1hdGNoJiZwYXJzZUludChtYXRjaFsxXSk8PTQ4KXt2YWx1ZT12YWx1ZS50b051bWJlcigpfXJldHVybiB2YWx1ZX07UmVhZGVyLnByb3RvdHlwZS5jb2VyY2U9ZnVuY3Rpb24obmFtZSx2YWx1ZSl7aWYodGhpcy5fY29lcmNlRnVuYyl7cmV0dXJuIHRoaXMuX2NvZXJjZUZ1bmMobmFtZSx2YWx1ZSl9cmV0dXJuIFJlYWRlci5jb2VyY2UobmFtZSx2YWx1ZSl9O1JlYWRlci5wcm90b3R5cGUuX3BlZWtCeXRlcz1mdW5jdGlvbihvZmZzZXQsbGVuZ3RoLGxvb3NlKXt2YXIgYWxpZ25lZExlbmd0aD1NYXRoLmNlaWwobGVuZ3RoL3RoaXMud29yZFNpemUpKnRoaXMud29yZFNpemU7aWYodGhpcy5fb2Zmc2V0K2FsaWduZWRMZW5ndGg+dGhpcy5fZGF0YS5sZW5ndGgpe2lmKHRoaXMuYWxsb3dMb29zZSYmbG9vc2UmJnRoaXMuX29mZnNldCtsZW5ndGg8PXRoaXMuX2RhdGEubGVuZ3RoKXthbGlnbmVkTGVuZ3RoPWxlbmd0aH1lbHNle2xvZ2dlci50aHJvd0Vycm9yKCJkYXRhIG91dC1vZi1ib3VuZHMiLGxpYi5Mb2dnZXIuZXJyb3JzLkJVRkZFUl9PVkVSUlVOLHtsZW5ndGg6dGhpcy5fZGF0YS5sZW5ndGgsb2Zmc2V0OnRoaXMuX29mZnNldCthbGlnbmVkTGVuZ3RofSl9fXJldHVybiB0aGlzLl9kYXRhLnNsaWNlKHRoaXMuX29mZnNldCx0aGlzLl9vZmZzZXQrYWxpZ25lZExlbmd0aCl9O1JlYWRlci5wcm90b3R5cGUuc3ViUmVhZGVyPWZ1bmN0aW9uKG9mZnNldCl7cmV0dXJuIG5ldyBSZWFkZXIodGhpcy5fZGF0YS5zbGljZSh0aGlzLl9vZmZzZXQrb2Zmc2V0KSx0aGlzLndvcmRTaXplLHRoaXMuX2NvZXJjZUZ1bmMsdGhpcy5hbGxvd0xvb3NlKX07UmVhZGVyLnByb3RvdHlwZS5yZWFkQnl0ZXM9ZnVuY3Rpb24obGVuZ3RoLGxvb3NlKXt2YXIgYnl0ZXM9dGhpcy5fcGVla0J5dGVzKDAsbGVuZ3RoLCEhbG9vc2UpO3RoaXMuX29mZnNldCs9Ynl0ZXMubGVuZ3RoO3JldHVybiBieXRlcy5zbGljZSgwLGxlbmd0aCl9O1JlYWRlci5wcm90b3R5cGUucmVhZFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQyLkJpZ051bWJlci5mcm9tKHRoaXMucmVhZEJ5dGVzKHRoaXMud29yZFNpemUpKX07cmV0dXJuIFJlYWRlcn0oKTtleHBvcnRzLlJlYWRlcj1SZWFkZXJ9KTt2YXIgYWJzdHJhY3RDb2RlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGFic3RyYWN0Q29kZXIpO3ZhciBzaGEzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSl7KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBJTlBVVF9FUlJPUj0iaW5wdXQgaXMgaW52YWxpZCB0eXBlIjt2YXIgRklOQUxJWkVfRVJST1I9ImZpbmFsaXplIGFscmVhZHkgY2FsbGVkIjt2YXIgV0lORE9XPXR5cGVvZiB3aW5kb3c9PT0ib2JqZWN0Ijt2YXIgcm9vdD1XSU5ET1c/d2luZG93Ont9O2lmKHJvb3QuSlNfU0hBM19OT19XSU5ET1cpe1dJTkRPVz1mYWxzZX12YXIgV0VCX1dPUktFUj0hV0lORE9XJiZ0eXBlb2Ygc2VsZj09PSJvYmplY3QiO3ZhciBOT0RFX0pTPSFyb290LkpTX1NIQTNfTk9fTk9ERV9KUyYmdHlwZW9mIHByb2Nlc3M9PT0ib2JqZWN0IiYmcHJvY2Vzcy52ZXJzaW9ucyYmcHJvY2Vzcy52ZXJzaW9ucy5ub2RlO2lmKE5PREVfSlMpe3Jvb3Q9Y29tbW9uanNHbG9iYWx9ZWxzZSBpZihXRUJfV09SS0VSKXtyb290PXNlbGZ9dmFyIENPTU1PTl9KUz0hcm9vdC5KU19TSEEzX05PX0NPTU1PTl9KUyYmIm9iamVjdCI9PT0ib2JqZWN0IiYmbW9kdWxlLmV4cG9ydHM7dmFyIEFNRD10eXBlb2YgdW5kZWZpbmVkPT09ImZ1bmN0aW9uIiYmdW5kZWZpbmVkLmFtZDt2YXIgQVJSQVlfQlVGRkVSPSFyb290LkpTX1NIQTNfTk9fQVJSQVlfQlVGRkVSJiZ0eXBlb2YgQXJyYXlCdWZmZXIhPT0idW5kZWZpbmVkIjt2YXIgSEVYX0NIQVJTPSIwMTIzNDU2Nzg5YWJjZGVmIi5zcGxpdCgiIik7dmFyIFNIQUtFX1BBRERJTkc9WzMxLDc5MzYsMjAzMTYxNiw1MjAwOTM2OTZdO3ZhciBDU0hBS0VfUEFERElORz1bNCwxMDI0LDI2MjE0NCw2NzEwODg2NF07dmFyIEtFQ0NBS19QQURESU5HPVsxLDI1Niw2NTUzNiwxNjc3NzIxNl07dmFyIFBBRERJTkc9WzYsMTUzNiwzOTMyMTYsMTAwNjYzMjk2XTt2YXIgU0hJRlQ9WzAsOCwxNiwyNF07dmFyIFJDPVsxLDAsMzI4OTgsMCwzMjkwNiwyMTQ3NDgzNjQ4LDIxNDc1MTY0MTYsMjE0NzQ4MzY0OCwzMjkwNywwLDIxNDc0ODM2NDksMCwyMTQ3NTE2NTQ1LDIxNDc0ODM2NDgsMzI3NzcsMjE0NzQ4MzY0OCwxMzgsMCwxMzYsMCwyMTQ3NTE2NDI1LDAsMjE0NzQ4MzY1OCwwLDIxNDc1MTY1NTUsMCwxMzksMjE0NzQ4MzY0OCwzMjkwNSwyMTQ3NDgzNjQ4LDMyNzcxLDIxNDc0ODM2NDgsMzI3NzAsMjE0NzQ4MzY0OCwxMjgsMjE0NzQ4MzY0OCwzMjc3OCwwLDIxNDc0ODM2NTgsMjE0NzQ4MzY0OCwyMTQ3NTE2NTQ1LDIxNDc0ODM2NDgsMzI4OTYsMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ5LDAsMjE0NzUxNjQyNCwyMTQ3NDgzNjQ4XTt2YXIgQklUUz1bMjI0LDI1NiwzODQsNTEyXTt2YXIgU0hBS0VfQklUUz1bMTI4LDI1Nl07dmFyIE9VVFBVVF9UWVBFUz1bImhleCIsImJ1ZmZlciIsImFycmF5QnVmZmVyIiwiYXJyYXkiLCJkaWdlc3QiXTt2YXIgQ1NIQUtFX0JZVEVQQUQ9ezEyODoxNjgsMjU2OjEzNn07aWYocm9vdC5KU19TSEEzX05PX05PREVfSlN8fCFBcnJheS5pc0FycmF5KXtBcnJheS5pc0FycmF5PWZ1bmN0aW9uKG9iail7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopPT09IltvYmplY3QgQXJyYXldIn19aWYoQVJSQVlfQlVGRkVSJiYocm9vdC5KU19TSEEzX05PX0FSUkFZX0JVRkZFUl9JU19WSUVXfHwhQXJyYXlCdWZmZXIuaXNWaWV3KSl7QXJyYXlCdWZmZXIuaXNWaWV3PWZ1bmN0aW9uKG9iail7cmV0dXJuIHR5cGVvZiBvYmo9PT0ib2JqZWN0IiYmb2JqLmJ1ZmZlciYmb2JqLmJ1ZmZlci5jb25zdHJ1Y3Rvcj09PUFycmF5QnVmZmVyfX12YXIgY3JlYXRlT3V0cHV0TWV0aG9kPWZ1bmN0aW9uKGJpdHMscGFkZGluZyxvdXRwdXRUeXBlKXtyZXR1cm4gZnVuY3Rpb24obWVzc2FnZSl7cmV0dXJuIG5ldyBLZWNjYWsoYml0cyxwYWRkaW5nLGJpdHMpLnVwZGF0ZShtZXNzYWdlKVtvdXRwdXRUeXBlXSgpfX07dmFyIGNyZWF0ZVNoYWtlT3V0cHV0TWV0aG9kPWZ1bmN0aW9uKGJpdHMscGFkZGluZyxvdXRwdXRUeXBlKXtyZXR1cm4gZnVuY3Rpb24obWVzc2FnZSxvdXRwdXRCaXRzKXtyZXR1cm4gbmV3IEtlY2NhayhiaXRzLHBhZGRpbmcsb3V0cHV0Qml0cykudXBkYXRlKG1lc3NhZ2UpW291dHB1dFR5cGVdKCl9fTt2YXIgY3JlYXRlQ3NoYWtlT3V0cHV0TWV0aG9kPWZ1bmN0aW9uKGJpdHMscGFkZGluZyxvdXRwdXRUeXBlKXtyZXR1cm4gZnVuY3Rpb24obWVzc2FnZSxvdXRwdXRCaXRzLG4scyl7cmV0dXJuIG1ldGhvZHNbImNzaGFrZSIrYml0c10udXBkYXRlKG1lc3NhZ2Usb3V0cHV0Qml0cyxuLHMpW291dHB1dFR5cGVdKCl9fTt2YXIgY3JlYXRlS21hY091dHB1dE1ldGhvZD1mdW5jdGlvbihiaXRzLHBhZGRpbmcsb3V0cHV0VHlwZSl7cmV0dXJuIGZ1bmN0aW9uKGtleSxtZXNzYWdlLG91dHB1dEJpdHMscyl7cmV0dXJuIG1ldGhvZHNbImttYWMiK2JpdHNdLnVwZGF0ZShrZXksbWVzc2FnZSxvdXRwdXRCaXRzLHMpW291dHB1dFR5cGVdKCl9fTt2YXIgY3JlYXRlT3V0cHV0TWV0aG9kcz1mdW5jdGlvbihtZXRob2QsY3JlYXRlTWV0aG9kLGJpdHMscGFkZGluZyl7Zm9yKHZhciBpPTA7aTxPVVRQVVRfVFlQRVMubGVuZ3RoOysraSl7dmFyIHR5cGU9T1VUUFVUX1RZUEVTW2ldO21ldGhvZFt0eXBlXT1jcmVhdGVNZXRob2QoYml0cyxwYWRkaW5nLHR5cGUpfXJldHVybiBtZXRob2R9O3ZhciBjcmVhdGVNZXRob2Q9ZnVuY3Rpb24oYml0cyxwYWRkaW5nKXt2YXIgbWV0aG9kPWNyZWF0ZU91dHB1dE1ldGhvZChiaXRzLHBhZGRpbmcsImhleCIpO21ldGhvZC5jcmVhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEtlY2NhayhiaXRzLHBhZGRpbmcsYml0cyl9O21ldGhvZC51cGRhdGU9ZnVuY3Rpb24obWVzc2FnZSl7cmV0dXJuIG1ldGhvZC5jcmVhdGUoKS51cGRhdGUobWVzc2FnZSl9O3JldHVybiBjcmVhdGVPdXRwdXRNZXRob2RzKG1ldGhvZCxjcmVhdGVPdXRwdXRNZXRob2QsYml0cyxwYWRkaW5nKX07dmFyIGNyZWF0ZVNoYWtlTWV0aG9kPWZ1bmN0aW9uKGJpdHMscGFkZGluZyl7dmFyIG1ldGhvZD1jcmVhdGVTaGFrZU91dHB1dE1ldGhvZChiaXRzLHBhZGRpbmcsImhleCIpO21ldGhvZC5jcmVhdGU9ZnVuY3Rpb24ob3V0cHV0Qml0cyl7cmV0dXJuIG5ldyBLZWNjYWsoYml0cyxwYWRkaW5nLG91dHB1dEJpdHMpfTttZXRob2QudXBkYXRlPWZ1bmN0aW9uKG1lc3NhZ2Usb3V0cHV0Qml0cyl7cmV0dXJuIG1ldGhvZC5jcmVhdGUob3V0cHV0Qml0cykudXBkYXRlKG1lc3NhZ2UpfTtyZXR1cm4gY3JlYXRlT3V0cHV0TWV0aG9kcyhtZXRob2QsY3JlYXRlU2hha2VPdXRwdXRNZXRob2QsYml0cyxwYWRkaW5nKX07dmFyIGNyZWF0ZUNzaGFrZU1ldGhvZD1mdW5jdGlvbihiaXRzLHBhZGRpbmcpe3ZhciB3PUNTSEFLRV9CWVRFUEFEW2JpdHNdO3ZhciBtZXRob2Q9Y3JlYXRlQ3NoYWtlT3V0cHV0TWV0aG9kKGJpdHMscGFkZGluZywiaGV4Iik7bWV0aG9kLmNyZWF0ZT1mdW5jdGlvbihvdXRwdXRCaXRzLG4scyl7aWYoIW4mJiFzKXtyZXR1cm4gbWV0aG9kc1sic2hha2UiK2JpdHNdLmNyZWF0ZShvdXRwdXRCaXRzKX1lbHNle3JldHVybiBuZXcgS2VjY2FrKGJpdHMscGFkZGluZyxvdXRwdXRCaXRzKS5ieXRlcGFkKFtuLHNdLHcpfX07bWV0aG9kLnVwZGF0ZT1mdW5jdGlvbihtZXNzYWdlLG91dHB1dEJpdHMsbixzKXtyZXR1cm4gbWV0aG9kLmNyZWF0ZShvdXRwdXRCaXRzLG4scykudXBkYXRlKG1lc3NhZ2UpfTtyZXR1cm4gY3JlYXRlT3V0cHV0TWV0aG9kcyhtZXRob2QsY3JlYXRlQ3NoYWtlT3V0cHV0TWV0aG9kLGJpdHMscGFkZGluZyl9O3ZhciBjcmVhdGVLbWFjTWV0aG9kPWZ1bmN0aW9uKGJpdHMscGFkZGluZyl7dmFyIHc9Q1NIQUtFX0JZVEVQQURbYml0c107dmFyIG1ldGhvZD1jcmVhdGVLbWFjT3V0cHV0TWV0aG9kKGJpdHMscGFkZGluZywiaGV4Iik7bWV0aG9kLmNyZWF0ZT1mdW5jdGlvbihrZXksb3V0cHV0Qml0cyxzKXtyZXR1cm4gbmV3IEttYWMoYml0cyxwYWRkaW5nLG91dHB1dEJpdHMpLmJ5dGVwYWQoWyJLTUFDIixzXSx3KS5ieXRlcGFkKFtrZXldLHcpfTttZXRob2QudXBkYXRlPWZ1bmN0aW9uKGtleSxtZXNzYWdlLG91dHB1dEJpdHMscyl7cmV0dXJuIG1ldGhvZC5jcmVhdGUoa2V5LG91dHB1dEJpdHMscykudXBkYXRlKG1lc3NhZ2UpfTtyZXR1cm4gY3JlYXRlT3V0cHV0TWV0aG9kcyhtZXRob2QsY3JlYXRlS21hY091dHB1dE1ldGhvZCxiaXRzLHBhZGRpbmcpfTt2YXIgYWxnb3JpdGhtcz1be25hbWU6ImtlY2NhayIscGFkZGluZzpLRUNDQUtfUEFERElORyxiaXRzOkJJVFMsY3JlYXRlTWV0aG9kOmNyZWF0ZU1ldGhvZH0se25hbWU6InNoYTMiLHBhZGRpbmc6UEFERElORyxiaXRzOkJJVFMsY3JlYXRlTWV0aG9kOmNyZWF0ZU1ldGhvZH0se25hbWU6InNoYWtlIixwYWRkaW5nOlNIQUtFX1BBRERJTkcsYml0czpTSEFLRV9CSVRTLGNyZWF0ZU1ldGhvZDpjcmVhdGVTaGFrZU1ldGhvZH0se25hbWU6ImNzaGFrZSIscGFkZGluZzpDU0hBS0VfUEFERElORyxiaXRzOlNIQUtFX0JJVFMsY3JlYXRlTWV0aG9kOmNyZWF0ZUNzaGFrZU1ldGhvZH0se25hbWU6ImttYWMiLHBhZGRpbmc6Q1NIQUtFX1BBRERJTkcsYml0czpTSEFLRV9CSVRTLGNyZWF0ZU1ldGhvZDpjcmVhdGVLbWFjTWV0aG9kfV07dmFyIG1ldGhvZHM9e30sbWV0aG9kTmFtZXM9W107Zm9yKHZhciBpPTA7aTxhbGdvcml0aG1zLmxlbmd0aDsrK2kpe3ZhciBhbGdvcml0aG09YWxnb3JpdGhtc1tpXTt2YXIgYml0cz1hbGdvcml0aG0uYml0cztmb3IodmFyIGo9MDtqPGJpdHMubGVuZ3RoOysrail7dmFyIG1ldGhvZE5hbWU9YWxnb3JpdGhtLm5hbWUrIl8iK2JpdHNbal07bWV0aG9kTmFtZXMucHVzaChtZXRob2ROYW1lKTttZXRob2RzW21ldGhvZE5hbWVdPWFsZ29yaXRobS5jcmVhdGVNZXRob2QoYml0c1tqXSxhbGdvcml0aG0ucGFkZGluZyk7aWYoYWxnb3JpdGhtLm5hbWUhPT0ic2hhMyIpe3ZhciBuZXdNZXRob2ROYW1lPWFsZ29yaXRobS5uYW1lK2JpdHNbal07bWV0aG9kTmFtZXMucHVzaChuZXdNZXRob2ROYW1lKTttZXRob2RzW25ld01ldGhvZE5hbWVdPW1ldGhvZHNbbWV0aG9kTmFtZV19fX1mdW5jdGlvbiBLZWNjYWsoYml0cyxwYWRkaW5nLG91dHB1dEJpdHMpe3RoaXMuYmxvY2tzPVtdO3RoaXMucz1bXTt0aGlzLnBhZGRpbmc9cGFkZGluZzt0aGlzLm91dHB1dEJpdHM9b3V0cHV0Qml0czt0aGlzLnJlc2V0PXRydWU7dGhpcy5maW5hbGl6ZWQ9ZmFsc2U7dGhpcy5ibG9jaz0wO3RoaXMuc3RhcnQ9MDt0aGlzLmJsb2NrQ291bnQ9MTYwMC0oYml0czw8MSk+PjU7dGhpcy5ieXRlQ291bnQ9dGhpcy5ibG9ja0NvdW50PDwyO3RoaXMub3V0cHV0QmxvY2tzPW91dHB1dEJpdHM+PjU7dGhpcy5leHRyYUJ5dGVzPShvdXRwdXRCaXRzJjMxKT4+Mztmb3IodmFyIGk9MDtpPDUwOysraSl7dGhpcy5zW2ldPTB9fUtlY2Nhay5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKG1lc3NhZ2Upe2lmKHRoaXMuZmluYWxpemVkKXt0aHJvdyBuZXcgRXJyb3IoRklOQUxJWkVfRVJST1IpfXZhciBub3RTdHJpbmcsdHlwZT10eXBlb2YgbWVzc2FnZTtpZih0eXBlIT09InN0cmluZyIpe2lmKHR5cGU9PT0ib2JqZWN0Iil7aWYobWVzc2FnZT09PW51bGwpe3Rocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUil9ZWxzZSBpZihBUlJBWV9CVUZGRVImJm1lc3NhZ2UuY29uc3RydWN0b3I9PT1BcnJheUJ1ZmZlcil7bWVzc2FnZT1uZXcgVWludDhBcnJheShtZXNzYWdlKX1lbHNlIGlmKCFBcnJheS5pc0FycmF5KG1lc3NhZ2UpKXtpZighQVJSQVlfQlVGRkVSfHwhQXJyYXlCdWZmZXIuaXNWaWV3KG1lc3NhZ2UpKXt0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpfX19ZWxzZXt0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpfW5vdFN0cmluZz10cnVlfXZhciBibG9ja3M9dGhpcy5ibG9ja3MsYnl0ZUNvdW50PXRoaXMuYnl0ZUNvdW50LGxlbmd0aD1tZXNzYWdlLmxlbmd0aCxibG9ja0NvdW50PXRoaXMuYmxvY2tDb3VudCxpbmRleD0wLHM9dGhpcy5zLGksY29kZTt3aGlsZShpbmRleDxsZW5ndGgpe2lmKHRoaXMucmVzZXQpe3RoaXMucmVzZXQ9ZmFsc2U7YmxvY2tzWzBdPXRoaXMuYmxvY2s7Zm9yKGk9MTtpPGJsb2NrQ291bnQrMTsrK2kpe2Jsb2Nrc1tpXT0wfX1pZihub3RTdHJpbmcpe2ZvcihpPXRoaXMuc3RhcnQ7aW5kZXg8bGVuZ3RoJiZpPGJ5dGVDb3VudDsrK2luZGV4KXtibG9ja3NbaT4+Ml18PW1lc3NhZ2VbaW5kZXhdPDxTSElGVFtpKysmM119fWVsc2V7Zm9yKGk9dGhpcy5zdGFydDtpbmRleDxsZW5ndGgmJmk8Ynl0ZUNvdW50OysraW5kZXgpe2NvZGU9bWVzc2FnZS5jaGFyQ29kZUF0KGluZGV4KTtpZihjb2RlPDEyOCl7YmxvY2tzW2k+PjJdfD1jb2RlPDxTSElGVFtpKysmM119ZWxzZSBpZihjb2RlPDIwNDgpe2Jsb2Nrc1tpPj4yXXw9KDE5Mnxjb2RlPj42KTw8U0hJRlRbaSsrJjNdO2Jsb2Nrc1tpPj4yXXw9KDEyOHxjb2RlJjYzKTw8U0hJRlRbaSsrJjNdfWVsc2UgaWYoY29kZTw1NTI5Nnx8Y29kZT49NTczNDQpe2Jsb2Nrc1tpPj4yXXw9KDIyNHxjb2RlPj4xMik8PFNISUZUW2krKyYzXTtibG9ja3NbaT4+Ml18PSgxMjh8Y29kZT4+NiY2Myk8PFNISUZUW2krKyYzXTtibG9ja3NbaT4+Ml18PSgxMjh8Y29kZSY2Myk8PFNISUZUW2krKyYzXX1lbHNle2NvZGU9NjU1MzYrKChjb2RlJjEwMjMpPDwxMHxtZXNzYWdlLmNoYXJDb2RlQXQoKytpbmRleCkmMTAyMyk7YmxvY2tzW2k+PjJdfD0oMjQwfGNvZGU+PjE4KTw8U0hJRlRbaSsrJjNdO2Jsb2Nrc1tpPj4yXXw9KDEyOHxjb2RlPj4xMiY2Myk8PFNISUZUW2krKyYzXTtibG9ja3NbaT4+Ml18PSgxMjh8Y29kZT4+NiY2Myk8PFNISUZUW2krKyYzXTtibG9ja3NbaT4+Ml18PSgxMjh8Y29kZSY2Myk8PFNISUZUW2krKyYzXX19fXRoaXMubGFzdEJ5dGVJbmRleD1pO2lmKGk+PWJ5dGVDb3VudCl7dGhpcy5zdGFydD1pLWJ5dGVDb3VudDt0aGlzLmJsb2NrPWJsb2Nrc1tibG9ja0NvdW50XTtmb3IoaT0wO2k8YmxvY2tDb3VudDsrK2kpe3NbaV1ePWJsb2Nrc1tpXX1mKHMpO3RoaXMucmVzZXQ9dHJ1ZX1lbHNle3RoaXMuc3RhcnQ9aX19cmV0dXJuIHRoaXN9O0tlY2Nhay5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHgscmlnaHQpe3ZhciBvPXgmMjU1LG49MTt2YXIgYnl0ZXM9W29dO3g9eD4+ODtvPXgmMjU1O3doaWxlKG8+MCl7Ynl0ZXMudW5zaGlmdChvKTt4PXg+Pjg7bz14JjI1NTsrK259aWYocmlnaHQpe2J5dGVzLnB1c2gobil9ZWxzZXtieXRlcy51bnNoaWZ0KG4pfXRoaXMudXBkYXRlKGJ5dGVzKTtyZXR1cm4gYnl0ZXMubGVuZ3RofTtLZWNjYWsucHJvdG90eXBlLmVuY29kZVN0cmluZz1mdW5jdGlvbihzdHIpe3ZhciBub3RTdHJpbmcsdHlwZT10eXBlb2Ygc3RyO2lmKHR5cGUhPT0ic3RyaW5nIil7aWYodHlwZT09PSJvYmplY3QiKXtpZihzdHI9PT1udWxsKXt0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpfWVsc2UgaWYoQVJSQVlfQlVGRkVSJiZzdHIuY29uc3RydWN0b3I9PT1BcnJheUJ1ZmZlcil7c3RyPW5ldyBVaW50OEFycmF5KHN0cil9ZWxzZSBpZighQXJyYXkuaXNBcnJheShzdHIpKXtpZighQVJSQVlfQlVGRkVSfHwhQXJyYXlCdWZmZXIuaXNWaWV3KHN0cikpe3Rocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUil9fX1lbHNle3Rocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUil9bm90U3RyaW5nPXRydWV9dmFyIGJ5dGVzPTAsbGVuZ3RoPXN0ci5sZW5ndGg7aWYobm90U3RyaW5nKXtieXRlcz1sZW5ndGh9ZWxzZXtmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGg7KytpKXt2YXIgY29kZT1zdHIuY2hhckNvZGVBdChpKTtpZihjb2RlPDEyOCl7Ynl0ZXMrPTF9ZWxzZSBpZihjb2RlPDIwNDgpe2J5dGVzKz0yfWVsc2UgaWYoY29kZTw1NTI5Nnx8Y29kZT49NTczNDQpe2J5dGVzKz0zfWVsc2V7Y29kZT02NTUzNisoKGNvZGUmMTAyMyk8PDEwfHN0ci5jaGFyQ29kZUF0KCsraSkmMTAyMyk7Ynl0ZXMrPTR9fX1ieXRlcys9dGhpcy5lbmNvZGUoYnl0ZXMqOCk7dGhpcy51cGRhdGUoc3RyKTtyZXR1cm4gYnl0ZXN9O0tlY2Nhay5wcm90b3R5cGUuYnl0ZXBhZD1mdW5jdGlvbihzdHJzLHcpe3ZhciBieXRlcz10aGlzLmVuY29kZSh3KTtmb3IodmFyIGk9MDtpPHN0cnMubGVuZ3RoOysraSl7Ynl0ZXMrPXRoaXMuZW5jb2RlU3RyaW5nKHN0cnNbaV0pfXZhciBwYWRkaW5nQnl0ZXM9dy1ieXRlcyV3O3ZhciB6ZXJvcz1bXTt6ZXJvcy5sZW5ndGg9cGFkZGluZ0J5dGVzO3RoaXMudXBkYXRlKHplcm9zKTtyZXR1cm4gdGhpc307S2VjY2FrLnByb3RvdHlwZS5maW5hbGl6ZT1mdW5jdGlvbigpe2lmKHRoaXMuZmluYWxpemVkKXtyZXR1cm59dGhpcy5maW5hbGl6ZWQ9dHJ1ZTt2YXIgYmxvY2tzPXRoaXMuYmxvY2tzLGk9dGhpcy5sYXN0Qnl0ZUluZGV4LGJsb2NrQ291bnQ9dGhpcy5ibG9ja0NvdW50LHM9dGhpcy5zO2Jsb2Nrc1tpPj4yXXw9dGhpcy5wYWRkaW5nW2kmM107aWYodGhpcy5sYXN0Qnl0ZUluZGV4PT09dGhpcy5ieXRlQ291bnQpe2Jsb2Nrc1swXT1ibG9ja3NbYmxvY2tDb3VudF07Zm9yKGk9MTtpPGJsb2NrQ291bnQrMTsrK2kpe2Jsb2Nrc1tpXT0wfX1ibG9ja3NbYmxvY2tDb3VudC0xXXw9MjE0NzQ4MzY0ODtmb3IoaT0wO2k8YmxvY2tDb3VudDsrK2kpe3NbaV1ePWJsb2Nrc1tpXX1mKHMpfTtLZWNjYWsucHJvdG90eXBlLnRvU3RyaW5nPUtlY2Nhay5wcm90b3R5cGUuaGV4PWZ1bmN0aW9uKCl7dGhpcy5maW5hbGl6ZSgpO3ZhciBibG9ja0NvdW50PXRoaXMuYmxvY2tDb3VudCxzPXRoaXMucyxvdXRwdXRCbG9ja3M9dGhpcy5vdXRwdXRCbG9ja3MsZXh0cmFCeXRlcz10aGlzLmV4dHJhQnl0ZXMsaT0wLGo9MDt2YXIgaGV4PSIiLGJsb2NrO3doaWxlKGo8b3V0cHV0QmxvY2tzKXtmb3IoaT0wO2k8YmxvY2tDb3VudCYmajxvdXRwdXRCbG9ja3M7KytpLCsrail7YmxvY2s9c1tpXTtoZXgrPUhFWF9DSEFSU1tibG9jaz4+NCYxNV0rSEVYX0NIQVJTW2Jsb2NrJjE1XStIRVhfQ0hBUlNbYmxvY2s+PjEyJjE1XStIRVhfQ0hBUlNbYmxvY2s+PjgmMTVdK0hFWF9DSEFSU1tibG9jaz4+MjAmMTVdK0hFWF9DSEFSU1tibG9jaz4+MTYmMTVdK0hFWF9DSEFSU1tibG9jaz4+MjgmMTVdK0hFWF9DSEFSU1tibG9jaz4+MjQmMTVdfWlmKGolYmxvY2tDb3VudD09PTApe2Yocyk7aT0wfX1pZihleHRyYUJ5dGVzKXtibG9jaz1zW2ldO2hleCs9SEVYX0NIQVJTW2Jsb2NrPj40JjE1XStIRVhfQ0hBUlNbYmxvY2smMTVdO2lmKGV4dHJhQnl0ZXM+MSl7aGV4Kz1IRVhfQ0hBUlNbYmxvY2s+PjEyJjE1XStIRVhfQ0hBUlNbYmxvY2s+PjgmMTVdfWlmKGV4dHJhQnl0ZXM+Mil7aGV4Kz1IRVhfQ0hBUlNbYmxvY2s+PjIwJjE1XStIRVhfQ0hBUlNbYmxvY2s+PjE2JjE1XX19cmV0dXJuIGhleH07S2VjY2FrLnByb3RvdHlwZS5hcnJheUJ1ZmZlcj1mdW5jdGlvbigpe3RoaXMuZmluYWxpemUoKTt2YXIgYmxvY2tDb3VudD10aGlzLmJsb2NrQ291bnQscz10aGlzLnMsb3V0cHV0QmxvY2tzPXRoaXMub3V0cHV0QmxvY2tzLGV4dHJhQnl0ZXM9dGhpcy5leHRyYUJ5dGVzLGk9MCxqPTA7dmFyIGJ5dGVzPXRoaXMub3V0cHV0Qml0cz4+Mzt2YXIgYnVmZmVyO2lmKGV4dHJhQnl0ZXMpe2J1ZmZlcj1uZXcgQXJyYXlCdWZmZXIob3V0cHV0QmxvY2tzKzE8PDIpfWVsc2V7YnVmZmVyPW5ldyBBcnJheUJ1ZmZlcihieXRlcyl9dmFyIGFycmF5PW5ldyBVaW50MzJBcnJheShidWZmZXIpO3doaWxlKGo8b3V0cHV0QmxvY2tzKXtmb3IoaT0wO2k8YmxvY2tDb3VudCYmajxvdXRwdXRCbG9ja3M7KytpLCsrail7YXJyYXlbal09c1tpXX1pZihqJWJsb2NrQ291bnQ9PT0wKXtmKHMpfX1pZihleHRyYUJ5dGVzKXthcnJheVtpXT1zW2ldO2J1ZmZlcj1idWZmZXIuc2xpY2UoMCxieXRlcyl9cmV0dXJuIGJ1ZmZlcn07S2VjY2FrLnByb3RvdHlwZS5idWZmZXI9S2VjY2FrLnByb3RvdHlwZS5hcnJheUJ1ZmZlcjtLZWNjYWsucHJvdG90eXBlLmRpZ2VzdD1LZWNjYWsucHJvdG90eXBlLmFycmF5PWZ1bmN0aW9uKCl7dGhpcy5maW5hbGl6ZSgpO3ZhciBibG9ja0NvdW50PXRoaXMuYmxvY2tDb3VudCxzPXRoaXMucyxvdXRwdXRCbG9ja3M9dGhpcy5vdXRwdXRCbG9ja3MsZXh0cmFCeXRlcz10aGlzLmV4dHJhQnl0ZXMsaT0wLGo9MDt2YXIgYXJyYXk9W10sb2Zmc2V0LGJsb2NrO3doaWxlKGo8b3V0cHV0QmxvY2tzKXtmb3IoaT0wO2k8YmxvY2tDb3VudCYmajxvdXRwdXRCbG9ja3M7KytpLCsrail7b2Zmc2V0PWo8PDI7YmxvY2s9c1tpXTthcnJheVtvZmZzZXRdPWJsb2NrJjI1NTthcnJheVtvZmZzZXQrMV09YmxvY2s+PjgmMjU1O2FycmF5W29mZnNldCsyXT1ibG9jaz4+MTYmMjU1O2FycmF5W29mZnNldCszXT1ibG9jaz4+MjQmMjU1fWlmKGolYmxvY2tDb3VudD09PTApe2Yocyl9fWlmKGV4dHJhQnl0ZXMpe29mZnNldD1qPDwyO2Jsb2NrPXNbaV07YXJyYXlbb2Zmc2V0XT1ibG9jayYyNTU7aWYoZXh0cmFCeXRlcz4xKXthcnJheVtvZmZzZXQrMV09YmxvY2s+PjgmMjU1fWlmKGV4dHJhQnl0ZXM+Mil7YXJyYXlbb2Zmc2V0KzJdPWJsb2NrPj4xNiYyNTV9fXJldHVybiBhcnJheX07ZnVuY3Rpb24gS21hYyhiaXRzLHBhZGRpbmcsb3V0cHV0Qml0cyl7S2VjY2FrLmNhbGwodGhpcyxiaXRzLHBhZGRpbmcsb3V0cHV0Qml0cyl9S21hYy5wcm90b3R5cGU9bmV3IEtlY2NhaztLbWFjLnByb3RvdHlwZS5maW5hbGl6ZT1mdW5jdGlvbigpe3RoaXMuZW5jb2RlKHRoaXMub3V0cHV0Qml0cyx0cnVlKTtyZXR1cm4gS2VjY2FrLnByb3RvdHlwZS5maW5hbGl6ZS5jYWxsKHRoaXMpfTt2YXIgZj1mdW5jdGlvbihzKXt2YXIgaCxsLG4sYzAsYzEsYzIsYzMsYzQsYzUsYzYsYzcsYzgsYzksYjAsYjEsYjIsYjMsYjQsYjUsYjYsYjcsYjgsYjksYjEwLGIxMSxiMTIsYjEzLGIxNCxiMTUsYjE2LGIxNyxiMTgsYjE5LGIyMCxiMjEsYjIyLGIyMyxiMjQsYjI1LGIyNixiMjcsYjI4LGIyOSxiMzAsYjMxLGIzMixiMzMsYjM0LGIzNSxiMzYsYjM3LGIzOCxiMzksYjQwLGI0MSxiNDIsYjQzLGI0NCxiNDUsYjQ2LGI0NyxiNDgsYjQ5O2ZvcihuPTA7bjw0ODtuKz0yKXtjMD1zWzBdXnNbMTBdXnNbMjBdXnNbMzBdXnNbNDBdO2MxPXNbMV1ec1sxMV1ec1syMV1ec1szMV1ec1s0MV07YzI9c1syXV5zWzEyXV5zWzIyXV5zWzMyXV5zWzQyXTtjMz1zWzNdXnNbMTNdXnNbMjNdXnNbMzNdXnNbNDNdO2M0PXNbNF1ec1sxNF1ec1syNF1ec1szNF1ec1s0NF07YzU9c1s1XV5zWzE1XV5zWzI1XV5zWzM1XV5zWzQ1XTtjNj1zWzZdXnNbMTZdXnNbMjZdXnNbMzZdXnNbNDZdO2M3PXNbN11ec1sxN11ec1syN11ec1szN11ec1s0N107Yzg9c1s4XV5zWzE4XV5zWzI4XV5zWzM4XV5zWzQ4XTtjOT1zWzldXnNbMTldXnNbMjldXnNbMzldXnNbNDldO2g9YzheKGMyPDwxfGMzPj4+MzEpO2w9YzleKGMzPDwxfGMyPj4+MzEpO3NbMF1ePWg7c1sxXV49bDtzWzEwXV49aDtzWzExXV49bDtzWzIwXV49aDtzWzIxXV49bDtzWzMwXV49aDtzWzMxXV49bDtzWzQwXV49aDtzWzQxXV49bDtoPWMwXihjNDw8MXxjNT4+PjMxKTtsPWMxXihjNTw8MXxjND4+PjMxKTtzWzJdXj1oO3NbM11ePWw7c1sxMl1ePWg7c1sxM11ePWw7c1syMl1ePWg7c1syM11ePWw7c1szMl1ePWg7c1szM11ePWw7c1s0Ml1ePWg7c1s0M11ePWw7aD1jMl4oYzY8PDF8Yzc+Pj4zMSk7bD1jM14oYzc8PDF8YzY+Pj4zMSk7c1s0XV49aDtzWzVdXj1sO3NbMTRdXj1oO3NbMTVdXj1sO3NbMjRdXj1oO3NbMjVdXj1sO3NbMzRdXj1oO3NbMzVdXj1sO3NbNDRdXj1oO3NbNDVdXj1sO2g9YzReKGM4PDwxfGM5Pj4+MzEpO2w9YzVeKGM5PDwxfGM4Pj4+MzEpO3NbNl1ePWg7c1s3XV49bDtzWzE2XV49aDtzWzE3XV49bDtzWzI2XV49aDtzWzI3XV49bDtzWzM2XV49aDtzWzM3XV49bDtzWzQ2XV49aDtzWzQ3XV49bDtoPWM2XihjMDw8MXxjMT4+PjMxKTtsPWM3XihjMTw8MXxjMD4+PjMxKTtzWzhdXj1oO3NbOV1ePWw7c1sxOF1ePWg7c1sxOV1ePWw7c1syOF1ePWg7c1syOV1ePWw7c1szOF1ePWg7c1szOV1ePWw7c1s0OF1ePWg7c1s0OV1ePWw7YjA9c1swXTtiMT1zWzFdO2IzMj1zWzExXTw8NHxzWzEwXT4+PjI4O2IzMz1zWzEwXTw8NHxzWzExXT4+PjI4O2IxND1zWzIwXTw8M3xzWzIxXT4+PjI5O2IxNT1zWzIxXTw8M3xzWzIwXT4+PjI5O2I0Nj1zWzMxXTw8OXxzWzMwXT4+PjIzO2I0Nz1zWzMwXTw8OXxzWzMxXT4+PjIzO2IyOD1zWzQwXTw8MTh8c1s0MV0+Pj4xNDtiMjk9c1s0MV08PDE4fHNbNDBdPj4+MTQ7YjIwPXNbMl08PDF8c1szXT4+PjMxO2IyMT1zWzNdPDwxfHNbMl0+Pj4zMTtiMj1zWzEzXTw8MTJ8c1sxMl0+Pj4yMDtiMz1zWzEyXTw8MTJ8c1sxM10+Pj4yMDtiMzQ9c1syMl08PDEwfHNbMjNdPj4+MjI7YjM1PXNbMjNdPDwxMHxzWzIyXT4+PjIyO2IxNj1zWzMzXTw8MTN8c1szMl0+Pj4xOTtiMTc9c1szMl08PDEzfHNbMzNdPj4+MTk7YjQ4PXNbNDJdPDwyfHNbNDNdPj4+MzA7YjQ5PXNbNDNdPDwyfHNbNDJdPj4+MzA7YjQwPXNbNV08PDMwfHNbNF0+Pj4yO2I0MT1zWzRdPDwzMHxzWzVdPj4+MjtiMjI9c1sxNF08PDZ8c1sxNV0+Pj4yNjtiMjM9c1sxNV08PDZ8c1sxNF0+Pj4yNjtiND1zWzI1XTw8MTF8c1syNF0+Pj4yMTtiNT1zWzI0XTw8MTF8c1syNV0+Pj4yMTtiMzY9c1szNF08PDE1fHNbMzVdPj4+MTc7YjM3PXNbMzVdPDwxNXxzWzM0XT4+PjE3O2IxOD1zWzQ1XTw8Mjl8c1s0NF0+Pj4zO2IxOT1zWzQ0XTw8Mjl8c1s0NV0+Pj4zO2IxMD1zWzZdPDwyOHxzWzddPj4+NDtiMTE9c1s3XTw8Mjh8c1s2XT4+PjQ7YjQyPXNbMTddPDwyM3xzWzE2XT4+Pjk7YjQzPXNbMTZdPDwyM3xzWzE3XT4+Pjk7YjI0PXNbMjZdPDwyNXxzWzI3XT4+Pjc7YjI1PXNbMjddPDwyNXxzWzI2XT4+Pjc7YjY9c1szNl08PDIxfHNbMzddPj4+MTE7Yjc9c1szN108PDIxfHNbMzZdPj4+MTE7YjM4PXNbNDddPDwyNHxzWzQ2XT4+Pjg7YjM5PXNbNDZdPDwyNHxzWzQ3XT4+Pjg7YjMwPXNbOF08PDI3fHNbOV0+Pj41O2IzMT1zWzldPDwyN3xzWzhdPj4+NTtiMTI9c1sxOF08PDIwfHNbMTldPj4+MTI7YjEzPXNbMTldPDwyMHxzWzE4XT4+PjEyO2I0ND1zWzI5XTw8N3xzWzI4XT4+PjI1O2I0NT1zWzI4XTw8N3xzWzI5XT4+PjI1O2IyNj1zWzM4XTw8OHxzWzM5XT4+PjI0O2IyNz1zWzM5XTw8OHxzWzM4XT4+PjI0O2I4PXNbNDhdPDwxNHxzWzQ5XT4+PjE4O2I5PXNbNDldPDwxNHxzWzQ4XT4+PjE4O3NbMF09YjBefmIyJmI0O3NbMV09YjFefmIzJmI1O3NbMTBdPWIxMF5+YjEyJmIxNDtzWzExXT1iMTFefmIxMyZiMTU7c1syMF09YjIwXn5iMjImYjI0O3NbMjFdPWIyMV5+YjIzJmIyNTtzWzMwXT1iMzBefmIzMiZiMzQ7c1szMV09YjMxXn5iMzMmYjM1O3NbNDBdPWI0MF5+YjQyJmI0NDtzWzQxXT1iNDFefmI0MyZiNDU7c1syXT1iMl5+YjQmYjY7c1szXT1iM15+YjUmYjc7c1sxMl09YjEyXn5iMTQmYjE2O3NbMTNdPWIxM15+YjE1JmIxNztzWzIyXT1iMjJefmIyNCZiMjY7c1syM109YjIzXn5iMjUmYjI3O3NbMzJdPWIzMl5+YjM0JmIzNjtzWzMzXT1iMzNefmIzNSZiMzc7c1s0Ml09YjQyXn5iNDQmYjQ2O3NbNDNdPWI0M15+YjQ1JmI0NztzWzRdPWI0Xn5iNiZiODtzWzVdPWI1Xn5iNyZiOTtzWzE0XT1iMTRefmIxNiZiMTg7c1sxNV09YjE1Xn5iMTcmYjE5O3NbMjRdPWIyNF5+YjI2JmIyODtzWzI1XT1iMjVefmIyNyZiMjk7c1szNF09YjM0Xn5iMzYmYjM4O3NbMzVdPWIzNV5+YjM3JmIzOTtzWzQ0XT1iNDRefmI0NiZiNDg7c1s0NV09YjQ1Xn5iNDcmYjQ5O3NbNl09YjZefmI4JmIwO3NbN109YjdefmI5JmIxO3NbMTZdPWIxNl5+YjE4JmIxMDtzWzE3XT1iMTdefmIxOSZiMTE7c1syNl09YjI2Xn5iMjgmYjIwO3NbMjddPWIyN15+YjI5JmIyMTtzWzM2XT1iMzZefmIzOCZiMzA7c1szN109YjM3Xn5iMzkmYjMxO3NbNDZdPWI0Nl5+YjQ4JmI0MDtzWzQ3XT1iNDdefmI0OSZiNDE7c1s4XT1iOF5+YjAmYjI7c1s5XT1iOV5+YjEmYjM7c1sxOF09YjE4Xn5iMTAmYjEyO3NbMTldPWIxOV5+YjExJmIxMztzWzI4XT1iMjhefmIyMCZiMjI7c1syOV09YjI5Xn5iMjEmYjIzO3NbMzhdPWIzOF5+YjMwJmIzMjtzWzM5XT1iMzlefmIzMSZiMzM7c1s0OF09YjQ4Xn5iNDAmYjQyO3NbNDldPWI0OV5+YjQxJmI0MztzWzBdXj1SQ1tuXTtzWzFdXj1SQ1tuKzFdfX07aWYoQ09NTU9OX0pTKXttb2R1bGUuZXhwb3J0cz1tZXRob2RzfWVsc2V7Zm9yKGk9MDtpPG1ldGhvZE5hbWVzLmxlbmd0aDsrK2kpe3Jvb3RbbWV0aG9kTmFtZXNbaV1dPW1ldGhvZHNbbWV0aG9kTmFtZXNbaV1dfWlmKEFNRCl7dW5kZWZpbmVkKGZ1bmN0aW9uKCl7cmV0dXJuIG1ldGhvZHN9KX19fSkoKX0pO3ZhciBsaWIkND1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2ltcG9ydERlZmF1bHQ9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24obW9kKXtyZXR1cm4gbW9kJiZtb2QuX19lc01vZHVsZT9tb2Q6e2RlZmF1bHQ6bW9kfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5rZWNjYWsyNTY9dm9pZCAwO3ZhciBqc19zaGEzXzE9X19pbXBvcnREZWZhdWx0KHNoYTMpO2Z1bmN0aW9uIGtlY2NhazI1NihkYXRhKXtyZXR1cm4iMHgiK2pzX3NoYTNfMS5kZWZhdWx0LmtlY2Nha18yNTYoKDAsbGliJDEuYXJyYXlpZnkpKGRhdGEpKX1leHBvcnRzLmtlY2NhazI1Nj1rZWNjYWsyNTZ9KTt2YXIgaW5kZXgkND1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkNCk7dmFyIF92ZXJzaW9uJGE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0icmxwLzUuNy4wIn0pO3ZhciBfdmVyc2lvbiRiPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJGEpO3ZhciBsaWIkNT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuZGVjb2RlPWV4cG9ydHMuZW5jb2RlPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJGEudmVyc2lvbik7ZnVuY3Rpb24gYXJyYXlpZnlJbnRlZ2VyKHZhbHVlKXt2YXIgcmVzdWx0PVtdO3doaWxlKHZhbHVlKXtyZXN1bHQudW5zaGlmdCh2YWx1ZSYyNTUpO3ZhbHVlPj49OH1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIHVuYXJyYXlpZnlJbnRlZ2VyKGRhdGEsb2Zmc2V0LGxlbmd0aCl7dmFyIHJlc3VsdD0wO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7cmVzdWx0PXJlc3VsdCoyNTYrZGF0YVtvZmZzZXQraV19cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBfZW5jb2RlKG9iamVjdCl7aWYoQXJyYXkuaXNBcnJheShvYmplY3QpKXt2YXIgcGF5bG9hZF8xPVtdO29iamVjdC5mb3JFYWNoKGZ1bmN0aW9uKGNoaWxkKXtwYXlsb2FkXzE9cGF5bG9hZF8xLmNvbmNhdChfZW5jb2RlKGNoaWxkKSl9KTtpZihwYXlsb2FkXzEubGVuZ3RoPD01NSl7cGF5bG9hZF8xLnVuc2hpZnQoMTkyK3BheWxvYWRfMS5sZW5ndGgpO3JldHVybiBwYXlsb2FkXzF9dmFyIGxlbmd0aF8xPWFycmF5aWZ5SW50ZWdlcihwYXlsb2FkXzEubGVuZ3RoKTtsZW5ndGhfMS51bnNoaWZ0KDI0NytsZW5ndGhfMS5sZW5ndGgpO3JldHVybiBsZW5ndGhfMS5jb25jYXQocGF5bG9hZF8xKX1pZighKDAsbGliJDEuaXNCeXRlc0xpa2UpKG9iamVjdCkpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIlJMUCBvYmplY3QgbXVzdCBiZSBCeXRlc0xpa2UiLCJvYmplY3QiLG9iamVjdCl9dmFyIGRhdGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoKDAsbGliJDEuYXJyYXlpZnkpKG9iamVjdCkpO2lmKGRhdGEubGVuZ3RoPT09MSYmZGF0YVswXTw9MTI3KXtyZXR1cm4gZGF0YX1lbHNlIGlmKGRhdGEubGVuZ3RoPD01NSl7ZGF0YS51bnNoaWZ0KDEyOCtkYXRhLmxlbmd0aCk7cmV0dXJuIGRhdGF9dmFyIGxlbmd0aD1hcnJheWlmeUludGVnZXIoZGF0YS5sZW5ndGgpO2xlbmd0aC51bnNoaWZ0KDE4MytsZW5ndGgubGVuZ3RoKTtyZXR1cm4gbGVuZ3RoLmNvbmNhdChkYXRhKX1mdW5jdGlvbiBlbmNvZGUob2JqZWN0KXtyZXR1cm4oMCxsaWIkMS5oZXhsaWZ5KShfZW5jb2RlKG9iamVjdCkpfWV4cG9ydHMuZW5jb2RlPWVuY29kZTtmdW5jdGlvbiBfZGVjb2RlQ2hpbGRyZW4oZGF0YSxvZmZzZXQsY2hpbGRPZmZzZXQsbGVuZ3RoKXt2YXIgcmVzdWx0PVtdO3doaWxlKGNoaWxkT2Zmc2V0PG9mZnNldCsxK2xlbmd0aCl7dmFyIGRlY29kZWQ9X2RlY29kZShkYXRhLGNoaWxkT2Zmc2V0KTtyZXN1bHQucHVzaChkZWNvZGVkLnJlc3VsdCk7Y2hpbGRPZmZzZXQrPWRlY29kZWQuY29uc3VtZWQ7aWYoY2hpbGRPZmZzZXQ+b2Zmc2V0KzErbGVuZ3RoKXtsb2dnZXIudGhyb3dFcnJvcigiY2hpbGQgZGF0YSB0b28gc2hvcnQiLGxpYi5Mb2dnZXIuZXJyb3JzLkJVRkZFUl9PVkVSUlVOLHt9KX19cmV0dXJue2NvbnN1bWVkOjErbGVuZ3RoLHJlc3VsdDpyZXN1bHR9fWZ1bmN0aW9uIF9kZWNvZGUoZGF0YSxvZmZzZXQpe2lmKGRhdGEubGVuZ3RoPT09MCl7bG9nZ2VyLnRocm93RXJyb3IoImRhdGEgdG9vIHNob3J0IixsaWIuTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTix7fSl9aWYoZGF0YVtvZmZzZXRdPj0yNDgpe3ZhciBsZW5ndGhMZW5ndGg9ZGF0YVtvZmZzZXRdLTI0NztpZihvZmZzZXQrMStsZW5ndGhMZW5ndGg+ZGF0YS5sZW5ndGgpe2xvZ2dlci50aHJvd0Vycm9yKCJkYXRhIHNob3J0IHNlZ21lbnQgdG9vIHNob3J0IixsaWIuTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTix7fSl9dmFyIGxlbmd0aF8yPXVuYXJyYXlpZnlJbnRlZ2VyKGRhdGEsb2Zmc2V0KzEsbGVuZ3RoTGVuZ3RoKTtpZihvZmZzZXQrMStsZW5ndGhMZW5ndGgrbGVuZ3RoXzI+ZGF0YS5sZW5ndGgpe2xvZ2dlci50aHJvd0Vycm9yKCJkYXRhIGxvbmcgc2VnbWVudCB0b28gc2hvcnQiLGxpYi5Mb2dnZXIuZXJyb3JzLkJVRkZFUl9PVkVSUlVOLHt9KX1yZXR1cm4gX2RlY29kZUNoaWxkcmVuKGRhdGEsb2Zmc2V0LG9mZnNldCsxK2xlbmd0aExlbmd0aCxsZW5ndGhMZW5ndGgrbGVuZ3RoXzIpfWVsc2UgaWYoZGF0YVtvZmZzZXRdPj0xOTIpe3ZhciBsZW5ndGhfMz1kYXRhW29mZnNldF0tMTkyO2lmKG9mZnNldCsxK2xlbmd0aF8zPmRhdGEubGVuZ3RoKXtsb2dnZXIudGhyb3dFcnJvcigiZGF0YSBhcnJheSB0b28gc2hvcnQiLGxpYi5Mb2dnZXIuZXJyb3JzLkJVRkZFUl9PVkVSUlVOLHt9KX1yZXR1cm4gX2RlY29kZUNoaWxkcmVuKGRhdGEsb2Zmc2V0LG9mZnNldCsxLGxlbmd0aF8zKX1lbHNlIGlmKGRhdGFbb2Zmc2V0XT49MTg0KXt2YXIgbGVuZ3RoTGVuZ3RoPWRhdGFbb2Zmc2V0XS0xODM7aWYob2Zmc2V0KzErbGVuZ3RoTGVuZ3RoPmRhdGEubGVuZ3RoKXtsb2dnZXIudGhyb3dFcnJvcigiZGF0YSBhcnJheSB0b28gc2hvcnQiLGxpYi5Mb2dnZXIuZXJyb3JzLkJVRkZFUl9PVkVSUlVOLHt9KX12YXIgbGVuZ3RoXzQ9dW5hcnJheWlmeUludGVnZXIoZGF0YSxvZmZzZXQrMSxsZW5ndGhMZW5ndGgpO2lmKG9mZnNldCsxK2xlbmd0aExlbmd0aCtsZW5ndGhfND5kYXRhLmxlbmd0aCl7bG9nZ2VyLnRocm93RXJyb3IoImRhdGEgYXJyYXkgdG9vIHNob3J0IixsaWIuTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTix7fSl9dmFyIHJlc3VsdD0oMCxsaWIkMS5oZXhsaWZ5KShkYXRhLnNsaWNlKG9mZnNldCsxK2xlbmd0aExlbmd0aCxvZmZzZXQrMStsZW5ndGhMZW5ndGgrbGVuZ3RoXzQpKTtyZXR1cm57Y29uc3VtZWQ6MStsZW5ndGhMZW5ndGgrbGVuZ3RoXzQscmVzdWx0OnJlc3VsdH19ZWxzZSBpZihkYXRhW29mZnNldF0+PTEyOCl7dmFyIGxlbmd0aF81PWRhdGFbb2Zmc2V0XS0xMjg7aWYob2Zmc2V0KzErbGVuZ3RoXzU+ZGF0YS5sZW5ndGgpe2xvZ2dlci50aHJvd0Vycm9yKCJkYXRhIHRvbyBzaG9ydCIsbGliLkxvZ2dlci5lcnJvcnMuQlVGRkVSX09WRVJSVU4se30pfXZhciByZXN1bHQ9KDAsbGliJDEuaGV4bGlmeSkoZGF0YS5zbGljZShvZmZzZXQrMSxvZmZzZXQrMStsZW5ndGhfNSkpO3JldHVybntjb25zdW1lZDoxK2xlbmd0aF81LHJlc3VsdDpyZXN1bHR9fXJldHVybntjb25zdW1lZDoxLHJlc3VsdDooMCxsaWIkMS5oZXhsaWZ5KShkYXRhW29mZnNldF0pfX1mdW5jdGlvbiBkZWNvZGUoZGF0YSl7dmFyIGJ5dGVzPSgwLGxpYiQxLmFycmF5aWZ5KShkYXRhKTt2YXIgZGVjb2RlZD1fZGVjb2RlKGJ5dGVzLDApO2lmKGRlY29kZWQuY29uc3VtZWQhPT1ieXRlcy5sZW5ndGgpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgcmxwIGRhdGEiLCJkYXRhIixkYXRhKX1yZXR1cm4gZGVjb2RlZC5yZXN1bHR9ZXhwb3J0cy5kZWNvZGU9ZGVjb2RlfSk7dmFyIGluZGV4JDU9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJDUpO3ZhciBfdmVyc2lvbiRjPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249ImFkZHJlc3MvNS43LjAifSk7dmFyIF92ZXJzaW9uJGQ9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kYyk7dmFyIGxpYiQ2PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5nZXRDcmVhdGUyQWRkcmVzcz1leHBvcnRzLmdldENvbnRyYWN0QWRkcmVzcz1leHBvcnRzLmdldEljYXBBZGRyZXNzPWV4cG9ydHMuaXNBZGRyZXNzPWV4cG9ydHMuZ2V0QWRkcmVzcz12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRjLnZlcnNpb24pO2Z1bmN0aW9uIGdldENoZWNrc3VtQWRkcmVzcyhhZGRyZXNzKXtpZighKDAsbGliJDEuaXNIZXhTdHJpbmcpKGFkZHJlc3MsMjApKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGFkZHJlc3MiLCJhZGRyZXNzIixhZGRyZXNzKX1hZGRyZXNzPWFkZHJlc3MudG9Mb3dlckNhc2UoKTt2YXIgY2hhcnM9YWRkcmVzcy5zdWJzdHJpbmcoMikuc3BsaXQoIiIpO3ZhciBleHBhbmRlZD1uZXcgVWludDhBcnJheSg0MCk7Zm9yKHZhciBpPTA7aTw0MDtpKyspe2V4cGFuZGVkW2ldPWNoYXJzW2ldLmNoYXJDb2RlQXQoMCl9dmFyIGhhc2hlZD0oMCxsaWIkMS5hcnJheWlmeSkoKDAsbGliJDQua2VjY2FrMjU2KShleHBhbmRlZCkpO2Zvcih2YXIgaT0wO2k8NDA7aSs9Mil7aWYoaGFzaGVkW2k+PjFdPj40Pj04KXtjaGFyc1tpXT1jaGFyc1tpXS50b1VwcGVyQ2FzZSgpfWlmKChoYXNoZWRbaT4+MV0mMTUpPj04KXtjaGFyc1tpKzFdPWNoYXJzW2krMV0udG9VcHBlckNhc2UoKX19cmV0dXJuIjB4IitjaGFycy5qb2luKCIiKX12YXIgTUFYX1NBRkVfSU5URUdFUj05MDA3MTk5MjU0NzQwOTkxO2Z1bmN0aW9uIGxvZzEwKHgpe2lmKE1hdGgubG9nMTApe3JldHVybiBNYXRoLmxvZzEwKHgpfXJldHVybiBNYXRoLmxvZyh4KS9NYXRoLkxOMTB9dmFyIGliYW5Mb29rdXA9e307Zm9yKHZhciBpPTA7aTwxMDtpKyspe2liYW5Mb29rdXBbU3RyaW5nKGkpXT1TdHJpbmcoaSl9Zm9yKHZhciBpPTA7aTwyNjtpKyspe2liYW5Mb29rdXBbU3RyaW5nLmZyb21DaGFyQ29kZSg2NStpKV09U3RyaW5nKDEwK2kpfXZhciBzYWZlRGlnaXRzPU1hdGguZmxvb3IobG9nMTAoTUFYX1NBRkVfSU5URUdFUikpO2Z1bmN0aW9uIGliYW5DaGVja3N1bShhZGRyZXNzKXthZGRyZXNzPWFkZHJlc3MudG9VcHBlckNhc2UoKTthZGRyZXNzPWFkZHJlc3Muc3Vic3RyaW5nKDQpK2FkZHJlc3Muc3Vic3RyaW5nKDAsMikrIjAwIjt2YXIgZXhwYW5kZWQ9YWRkcmVzcy5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBpYmFuTG9va3VwW2NdfSkuam9pbigiIik7d2hpbGUoZXhwYW5kZWQubGVuZ3RoPj1zYWZlRGlnaXRzKXt2YXIgYmxvY2s9ZXhwYW5kZWQuc3Vic3RyaW5nKDAsc2FmZURpZ2l0cyk7ZXhwYW5kZWQ9cGFyc2VJbnQoYmxvY2ssMTApJTk3K2V4cGFuZGVkLnN1YnN0cmluZyhibG9jay5sZW5ndGgpfXZhciBjaGVja3N1bT1TdHJpbmcoOTgtcGFyc2VJbnQoZXhwYW5kZWQsMTApJTk3KTt3aGlsZShjaGVja3N1bS5sZW5ndGg8Mil7Y2hlY2tzdW09IjAiK2NoZWNrc3VtfXJldHVybiBjaGVja3N1bX1mdW5jdGlvbiBnZXRBZGRyZXNzKGFkZHJlc3Mpe3ZhciByZXN1bHQ9bnVsbDtpZih0eXBlb2YgYWRkcmVzcyE9PSJzdHJpbmciKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGFkZHJlc3MiLCJhZGRyZXNzIixhZGRyZXNzKX1pZihhZGRyZXNzLm1hdGNoKC9eKDB4KT9bMC05YS1mQS1GXXs0MH0kLykpe2lmKGFkZHJlc3Muc3Vic3RyaW5nKDAsMikhPT0iMHgiKXthZGRyZXNzPSIweCIrYWRkcmVzc31yZXN1bHQ9Z2V0Q2hlY2tzdW1BZGRyZXNzKGFkZHJlc3MpO2lmKGFkZHJlc3MubWF0Y2goLyhbQS1GXS4qW2EtZl0pfChbYS1mXS4qW0EtRl0pLykmJnJlc3VsdCE9PWFkZHJlc3Mpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImJhZCBhZGRyZXNzIGNoZWNrc3VtIiwiYWRkcmVzcyIsYWRkcmVzcyl9fWVsc2UgaWYoYWRkcmVzcy5tYXRjaCgvXlhFWzAtOV17Mn1bMC05QS1aYS16XXszMCwzMX0kLykpe2lmKGFkZHJlc3Muc3Vic3RyaW5nKDIsNCkhPT1pYmFuQ2hlY2tzdW0oYWRkcmVzcykpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImJhZCBpY2FwIGNoZWNrc3VtIiwiYWRkcmVzcyIsYWRkcmVzcyl9cmVzdWx0PSgwLGxpYiQyLl9iYXNlMzZUbzE2KShhZGRyZXNzLnN1YnN0cmluZyg0KSk7d2hpbGUocmVzdWx0Lmxlbmd0aDw0MCl7cmVzdWx0PSIwIityZXN1bHR9cmVzdWx0PWdldENoZWNrc3VtQWRkcmVzcygiMHgiK3Jlc3VsdCl9ZWxzZXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGFkZHJlc3MiLCJhZGRyZXNzIixhZGRyZXNzKX1yZXR1cm4gcmVzdWx0fWV4cG9ydHMuZ2V0QWRkcmVzcz1nZXRBZGRyZXNzO2Z1bmN0aW9uIGlzQWRkcmVzcyhhZGRyZXNzKXt0cnl7Z2V0QWRkcmVzcyhhZGRyZXNzKTtyZXR1cm4gdHJ1ZX1jYXRjaChlcnJvcil7fXJldHVybiBmYWxzZX1leHBvcnRzLmlzQWRkcmVzcz1pc0FkZHJlc3M7ZnVuY3Rpb24gZ2V0SWNhcEFkZHJlc3MoYWRkcmVzcyl7dmFyIGJhc2UzNj0oMCxsaWIkMi5fYmFzZTE2VG8zNikoZ2V0QWRkcmVzcyhhZGRyZXNzKS5zdWJzdHJpbmcoMikpLnRvVXBwZXJDYXNlKCk7d2hpbGUoYmFzZTM2Lmxlbmd0aDwzMCl7YmFzZTM2PSIwIitiYXNlMzZ9cmV0dXJuIlhFIitpYmFuQ2hlY2tzdW0oIlhFMDAiK2Jhc2UzNikrYmFzZTM2fWV4cG9ydHMuZ2V0SWNhcEFkZHJlc3M9Z2V0SWNhcEFkZHJlc3M7ZnVuY3Rpb24gZ2V0Q29udHJhY3RBZGRyZXNzKHRyYW5zYWN0aW9uKXt2YXIgZnJvbT1udWxsO3RyeXtmcm9tPWdldEFkZHJlc3ModHJhbnNhY3Rpb24uZnJvbSl9Y2F0Y2goZXJyb3Ipe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm1pc3NpbmcgZnJvbSBhZGRyZXNzIiwidHJhbnNhY3Rpb24iLHRyYW5zYWN0aW9uKX12YXIgbm9uY2U9KDAsbGliJDEuc3RyaXBaZXJvcykoKDAsbGliJDEuYXJyYXlpZnkpKGxpYiQyLkJpZ051bWJlci5mcm9tKHRyYW5zYWN0aW9uLm5vbmNlKS50b0hleFN0cmluZygpKSk7cmV0dXJuIGdldEFkZHJlc3MoKDAsbGliJDEuaGV4RGF0YVNsaWNlKSgoMCxsaWIkNC5rZWNjYWsyNTYpKCgwLGxpYiQ1LmVuY29kZSkoW2Zyb20sbm9uY2VdKSksMTIpKX1leHBvcnRzLmdldENvbnRyYWN0QWRkcmVzcz1nZXRDb250cmFjdEFkZHJlc3M7ZnVuY3Rpb24gZ2V0Q3JlYXRlMkFkZHJlc3MoZnJvbSxzYWx0LGluaXRDb2RlSGFzaCl7aWYoKDAsbGliJDEuaGV4RGF0YUxlbmd0aCkoc2FsdCkhPT0zMil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigic2FsdCBtdXN0IGJlIDMyIGJ5dGVzIiwic2FsdCIsc2FsdCl9aWYoKDAsbGliJDEuaGV4RGF0YUxlbmd0aCkoaW5pdENvZGVIYXNoKSE9PTMyKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbml0Q29kZUhhc2ggbXVzdCBiZSAzMiBieXRlcyIsImluaXRDb2RlSGFzaCIsaW5pdENvZGVIYXNoKX1yZXR1cm4gZ2V0QWRkcmVzcygoMCxsaWIkMS5oZXhEYXRhU2xpY2UpKCgwLGxpYiQ0LmtlY2NhazI1NikoKDAsbGliJDEuY29uY2F0KShbIjB4ZmYiLGdldEFkZHJlc3MoZnJvbSksc2FsdCxpbml0Q29kZUhhc2hdKSksMTIpKX1leHBvcnRzLmdldENyZWF0ZTJBZGRyZXNzPWdldENyZWF0ZTJBZGRyZXNzfSk7dmFyIGluZGV4JDY9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJDYpO3ZhciBhZGRyZXNzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQWRkcmVzc0NvZGVyPXZvaWQgMDt2YXIgQWRkcmVzc0NvZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEFkZHJlc3NDb2Rlcixfc3VwZXIpO2Z1bmN0aW9uIEFkZHJlc3NDb2Rlcihsb2NhbE5hbWUpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJhZGRyZXNzIiwiYWRkcmVzcyIsbG9jYWxOYW1lLGZhbHNlKXx8dGhpc31BZGRyZXNzQ29kZXIucHJvdG90eXBlLmRlZmF1bHRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAifTtBZGRyZXNzQ29kZXIucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih3cml0ZXIsdmFsdWUpe3RyeXt2YWx1ZT0oMCxsaWIkNi5nZXRBZGRyZXNzKSh2YWx1ZSl9Y2F0Y2goZXJyb3Ipe3RoaXMuX3Rocm93RXJyb3IoZXJyb3IubWVzc2FnZSx2YWx1ZSl9cmV0dXJuIHdyaXRlci53cml0ZVZhbHVlKHZhbHVlKX07QWRkcmVzc0NvZGVyLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24ocmVhZGVyKXtyZXR1cm4oMCxsaWIkNi5nZXRBZGRyZXNzKSgoMCxsaWIkMS5oZXhaZXJvUGFkKShyZWFkZXIucmVhZFZhbHVlKCkudG9IZXhTdHJpbmcoKSwyMCkpfTtyZXR1cm4gQWRkcmVzc0NvZGVyfShhYnN0cmFjdENvZGVyLkNvZGVyKTtleHBvcnRzLkFkZHJlc3NDb2Rlcj1BZGRyZXNzQ29kZXJ9KTt2YXIgYWRkcmVzcyQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGFkZHJlc3MpO3ZhciBhbm9ueW1vdXM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5Bbm9ueW1vdXNDb2Rlcj12b2lkIDA7dmFyIEFub255bW91c0NvZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEFub255bW91c0NvZGVyLF9zdXBlcik7ZnVuY3Rpb24gQW5vbnltb3VzQ29kZXIoY29kZXIpe3ZhciBfdGhpcz1fc3VwZXIuY2FsbCh0aGlzLGNvZGVyLm5hbWUsY29kZXIudHlwZSx1bmRlZmluZWQsY29kZXIuZHluYW1pYyl8fHRoaXM7X3RoaXMuY29kZXI9Y29kZXI7cmV0dXJuIF90aGlzfUFub255bW91c0NvZGVyLnByb3RvdHlwZS5kZWZhdWx0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb2Rlci5kZWZhdWx0VmFsdWUoKX07QW5vbnltb3VzQ29kZXIucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih3cml0ZXIsdmFsdWUpe3JldHVybiB0aGlzLmNvZGVyLmVuY29kZSh3cml0ZXIsdmFsdWUpfTtBbm9ueW1vdXNDb2Rlci5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKHJlYWRlcil7cmV0dXJuIHRoaXMuY29kZXIuZGVjb2RlKHJlYWRlcil9O3JldHVybiBBbm9ueW1vdXNDb2Rlcn0oYWJzdHJhY3RDb2Rlci5Db2Rlcik7ZXhwb3J0cy5Bbm9ueW1vdXNDb2Rlcj1Bbm9ueW1vdXNDb2Rlcn0pO3ZhciBhbm9ueW1vdXMkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhhbm9ueW1vdXMpO3ZhciBhcnJheT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkFycmF5Q29kZXI9ZXhwb3J0cy51bnBhY2s9ZXhwb3J0cy5wYWNrPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJDgudmVyc2lvbik7ZnVuY3Rpb24gcGFjayh3cml0ZXIsY29kZXJzLHZhbHVlcyl7dmFyIGFycmF5VmFsdWVzPW51bGw7aWYoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKXthcnJheVZhbHVlcz12YWx1ZXN9ZWxzZSBpZih2YWx1ZXMmJnR5cGVvZiB2YWx1ZXM9PT0ib2JqZWN0Iil7dmFyIHVuaXF1ZV8xPXt9O2FycmF5VmFsdWVzPWNvZGVycy5tYXAoZnVuY3Rpb24oY29kZXIpe3ZhciBuYW1lPWNvZGVyLmxvY2FsTmFtZTtpZighbmFtZSl7bG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCBlbmNvZGUgb2JqZWN0IGZvciBzaWduYXR1cmUgd2l0aCBtaXNzaW5nIG5hbWVzIixsaWIuTG9nZ2VyLmVycm9ycy5JTlZBTElEX0FSR1VNRU5ULHthcmd1bWVudDoidmFsdWVzIixjb2Rlcjpjb2Rlcix2YWx1ZTp2YWx1ZXN9KX1pZih1bmlxdWVfMVtuYW1lXSl7bG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCBlbmNvZGUgb2JqZWN0IGZvciBzaWduYXR1cmUgd2l0aCBkdXBsaWNhdGUgbmFtZXMiLGxpYi5Mb2dnZXIuZXJyb3JzLklOVkFMSURfQVJHVU1FTlQse2FyZ3VtZW50OiJ2YWx1ZXMiLGNvZGVyOmNvZGVyLHZhbHVlOnZhbHVlc30pfXVuaXF1ZV8xW25hbWVdPXRydWU7cmV0dXJuIHZhbHVlc1tuYW1lXX0pfWVsc2V7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCB0dXBsZSB2YWx1ZSIsInR1cGxlIix2YWx1ZXMpfWlmKGNvZGVycy5sZW5ndGghPT1hcnJheVZhbHVlcy5sZW5ndGgpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInR5cGVzL3ZhbHVlIGxlbmd0aCBtaXNtYXRjaCIsInR1cGxlIix2YWx1ZXMpfXZhciBzdGF0aWNXcml0ZXI9bmV3IGFic3RyYWN0Q29kZXIuV3JpdGVyKHdyaXRlci53b3JkU2l6ZSk7dmFyIGR5bmFtaWNXcml0ZXI9bmV3IGFic3RyYWN0Q29kZXIuV3JpdGVyKHdyaXRlci53b3JkU2l6ZSk7dmFyIHVwZGF0ZUZ1bmNzPVtdO2NvZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGNvZGVyLGluZGV4KXt2YXIgdmFsdWU9YXJyYXlWYWx1ZXNbaW5kZXhdO2lmKGNvZGVyLmR5bmFtaWMpe3ZhciBkeW5hbWljT2Zmc2V0XzE9ZHluYW1pY1dyaXRlci5sZW5ndGg7Y29kZXIuZW5jb2RlKGR5bmFtaWNXcml0ZXIsdmFsdWUpO3ZhciB1cGRhdGVGdW5jXzE9c3RhdGljV3JpdGVyLndyaXRlVXBkYXRhYmxlVmFsdWUoKTt1cGRhdGVGdW5jcy5wdXNoKGZ1bmN0aW9uKGJhc2VPZmZzZXQpe3VwZGF0ZUZ1bmNfMShiYXNlT2Zmc2V0K2R5bmFtaWNPZmZzZXRfMSl9KX1lbHNle2NvZGVyLmVuY29kZShzdGF0aWNXcml0ZXIsdmFsdWUpfX0pO3VwZGF0ZUZ1bmNzLmZvckVhY2goZnVuY3Rpb24oZnVuYyl7ZnVuYyhzdGF0aWNXcml0ZXIubGVuZ3RoKX0pO3ZhciBsZW5ndGg9d3JpdGVyLmFwcGVuZFdyaXRlcihzdGF0aWNXcml0ZXIpO2xlbmd0aCs9d3JpdGVyLmFwcGVuZFdyaXRlcihkeW5hbWljV3JpdGVyKTtyZXR1cm4gbGVuZ3RofWV4cG9ydHMucGFjaz1wYWNrO2Z1bmN0aW9uIHVucGFjayhyZWFkZXIsY29kZXJzKXt2YXIgdmFsdWVzPVtdO3ZhciBiYXNlUmVhZGVyPXJlYWRlci5zdWJSZWFkZXIoMCk7Y29kZXJzLmZvckVhY2goZnVuY3Rpb24oY29kZXIpe3ZhciB2YWx1ZT1udWxsO2lmKGNvZGVyLmR5bmFtaWMpe3ZhciBvZmZzZXQ9cmVhZGVyLnJlYWRWYWx1ZSgpO3ZhciBvZmZzZXRSZWFkZXI9YmFzZVJlYWRlci5zdWJSZWFkZXIob2Zmc2V0LnRvTnVtYmVyKCkpO3RyeXt2YWx1ZT1jb2Rlci5kZWNvZGUob2Zmc2V0UmVhZGVyKX1jYXRjaChlcnJvcil7aWYoZXJyb3IuY29kZT09PWxpYi5Mb2dnZXIuZXJyb3JzLkJVRkZFUl9PVkVSUlVOKXt0aHJvdyBlcnJvcn12YWx1ZT1lcnJvcjt2YWx1ZS5iYXNlVHlwZT1jb2Rlci5uYW1lO3ZhbHVlLm5hbWU9Y29kZXIubG9jYWxOYW1lO3ZhbHVlLnR5cGU9Y29kZXIudHlwZX19ZWxzZXt0cnl7dmFsdWU9Y29kZXIuZGVjb2RlKHJlYWRlcil9Y2F0Y2goZXJyb3Ipe2lmKGVycm9yLmNvZGU9PT1saWIuTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTil7dGhyb3cgZXJyb3J9dmFsdWU9ZXJyb3I7dmFsdWUuYmFzZVR5cGU9Y29kZXIubmFtZTt2YWx1ZS5uYW1lPWNvZGVyLmxvY2FsTmFtZTt2YWx1ZS50eXBlPWNvZGVyLnR5cGV9fWlmKHZhbHVlIT11bmRlZmluZWQpe3ZhbHVlcy5wdXNoKHZhbHVlKX19KTt2YXIgdW5pcXVlTmFtZXM9Y29kZXJzLnJlZHVjZShmdW5jdGlvbihhY2N1bSxjb2Rlcil7dmFyIG5hbWU9Y29kZXIubG9jYWxOYW1lO2lmKG5hbWUpe2lmKCFhY2N1bVtuYW1lXSl7YWNjdW1bbmFtZV09MH1hY2N1bVtuYW1lXSsrfXJldHVybiBhY2N1bX0se30pO2NvZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGNvZGVyLGluZGV4KXt2YXIgbmFtZT1jb2Rlci5sb2NhbE5hbWU7aWYoIW5hbWV8fHVuaXF1ZU5hbWVzW25hbWVdIT09MSl7cmV0dXJufWlmKG5hbWU9PT0ibGVuZ3RoIil7bmFtZT0iX2xlbmd0aCJ9aWYodmFsdWVzW25hbWVdIT1udWxsKXtyZXR1cm59dmFyIHZhbHVlPXZhbHVlc1tpbmRleF07aWYodmFsdWUgaW5zdGFuY2VvZiBFcnJvcil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbHVlcyxuYW1lLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7dGhyb3cgdmFsdWV9fSl9ZWxzZXt2YWx1ZXNbbmFtZV09dmFsdWV9fSk7dmFyIF9sb29wXzE9ZnVuY3Rpb24oaSl7dmFyIHZhbHVlPXZhbHVlc1tpXTtpZih2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsdWVzLGkse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXt0aHJvdyB2YWx1ZX19KX19O2Zvcih2YXIgaT0wO2k8dmFsdWVzLmxlbmd0aDtpKyspe19sb29wXzEoaSl9cmV0dXJuIE9iamVjdC5mcmVlemUodmFsdWVzKX1leHBvcnRzLnVucGFjaz11bnBhY2s7dmFyIEFycmF5Q29kZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoQXJyYXlDb2Rlcixfc3VwZXIpO2Z1bmN0aW9uIEFycmF5Q29kZXIoY29kZXIsbGVuZ3RoLGxvY2FsTmFtZSl7dmFyIF90aGlzPXRoaXM7dmFyIHR5cGU9Y29kZXIudHlwZSsiWyIrKGxlbmd0aD49MD9sZW5ndGg6IiIpKyJdIjt2YXIgZHluYW1pYz1sZW5ndGg9PT0tMXx8Y29kZXIuZHluYW1pYztfdGhpcz1fc3VwZXIuY2FsbCh0aGlzLCJhcnJheSIsdHlwZSxsb2NhbE5hbWUsZHluYW1pYyl8fHRoaXM7X3RoaXMuY29kZXI9Y29kZXI7X3RoaXMubGVuZ3RoPWxlbmd0aDtyZXR1cm4gX3RoaXN9QXJyYXlDb2Rlci5wcm90b3R5cGUuZGVmYXVsdFZhbHVlPWZ1bmN0aW9uKCl7dmFyIGRlZmF1bHRDaGlsZD10aGlzLmNvZGVyLmRlZmF1bHRWYWx1ZSgpO3ZhciByZXN1bHQ9W107Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3Jlc3VsdC5wdXNoKGRlZmF1bHRDaGlsZCl9cmV0dXJuIHJlc3VsdH07QXJyYXlDb2Rlci5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHdyaXRlcix2YWx1ZSl7aWYoIUFycmF5LmlzQXJyYXkodmFsdWUpKXt0aGlzLl90aHJvd0Vycm9yKCJleHBlY3RlZCBhcnJheSB2YWx1ZSIsdmFsdWUpfXZhciBjb3VudD10aGlzLmxlbmd0aDtpZihjb3VudD09PS0xKXtjb3VudD12YWx1ZS5sZW5ndGg7d3JpdGVyLndyaXRlVmFsdWUodmFsdWUubGVuZ3RoKX1sb2dnZXIuY2hlY2tBcmd1bWVudENvdW50KHZhbHVlLmxlbmd0aCxjb3VudCwiY29kZXIgYXJyYXkiKyh0aGlzLmxvY2FsTmFtZT8iICIrdGhpcy5sb2NhbE5hbWU6IiIpKTt2YXIgY29kZXJzPVtdO2Zvcih2YXIgaT0wO2k8dmFsdWUubGVuZ3RoO2krKyl7Y29kZXJzLnB1c2godGhpcy5jb2Rlcil9cmV0dXJuIHBhY2sod3JpdGVyLGNvZGVycyx2YWx1ZSl9O0FycmF5Q29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyZWFkZXIpe3ZhciBjb3VudD10aGlzLmxlbmd0aDtpZihjb3VudD09PS0xKXtjb3VudD1yZWFkZXIucmVhZFZhbHVlKCkudG9OdW1iZXIoKTtpZihjb3VudCozMj5yZWFkZXIuX2RhdGEubGVuZ3RoKXtsb2dnZXIudGhyb3dFcnJvcigiaW5zdWZmaWNpZW50IGRhdGEgbGVuZ3RoIixsaWIuTG9nZ2VyLmVycm9ycy5CVUZGRVJfT1ZFUlJVTix7bGVuZ3RoOnJlYWRlci5fZGF0YS5sZW5ndGgsY291bnQ6Y291bnR9KX19dmFyIGNvZGVycz1bXTtmb3IodmFyIGk9MDtpPGNvdW50O2krKyl7Y29kZXJzLnB1c2gobmV3IGFub255bW91cy5Bbm9ueW1vdXNDb2Rlcih0aGlzLmNvZGVyKSl9cmV0dXJuIHJlYWRlci5jb2VyY2UodGhpcy5uYW1lLHVucGFjayhyZWFkZXIsY29kZXJzKSl9O3JldHVybiBBcnJheUNvZGVyfShhYnN0cmFjdENvZGVyLkNvZGVyKTtleHBvcnRzLkFycmF5Q29kZXI9QXJyYXlDb2Rlcn0pO3ZhciBhcnJheSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGFycmF5KTt2YXIgYm9vbGVhbl8xPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQm9vbGVhbkNvZGVyPXZvaWQgMDt2YXIgQm9vbGVhbkNvZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEJvb2xlYW5Db2Rlcixfc3VwZXIpO2Z1bmN0aW9uIEJvb2xlYW5Db2Rlcihsb2NhbE5hbWUpe3JldHVybiBfc3VwZXIuY2FsbCh0aGlzLCJib29sIiwiYm9vbCIsbG9jYWxOYW1lLGZhbHNlKXx8dGhpc31Cb29sZWFuQ29kZXIucHJvdG90eXBlLmRlZmF1bHRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiBmYWxzZX07Qm9vbGVhbkNvZGVyLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24od3JpdGVyLHZhbHVlKXtyZXR1cm4gd3JpdGVyLndyaXRlVmFsdWUodmFsdWU/MTowKX07Qm9vbGVhbkNvZGVyLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24ocmVhZGVyKXtyZXR1cm4gcmVhZGVyLmNvZXJjZSh0aGlzLnR5cGUsIXJlYWRlci5yZWFkVmFsdWUoKS5pc1plcm8oKSl9O3JldHVybiBCb29sZWFuQ29kZXJ9KGFic3RyYWN0Q29kZXIuQ29kZXIpO2V4cG9ydHMuQm9vbGVhbkNvZGVyPUJvb2xlYW5Db2Rlcn0pO3ZhciBib29sZWFuPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGJvb2xlYW5fMSk7dmFyIGJ5dGVzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQnl0ZXNDb2Rlcj1leHBvcnRzLkR5bmFtaWNCeXRlc0NvZGVyPXZvaWQgMDt2YXIgRHluYW1pY0J5dGVzQ29kZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoRHluYW1pY0J5dGVzQ29kZXIsX3N1cGVyKTtmdW5jdGlvbiBEeW5hbWljQnl0ZXNDb2Rlcih0eXBlLGxvY2FsTmFtZSl7cmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsdHlwZSx0eXBlLGxvY2FsTmFtZSx0cnVlKXx8dGhpc31EeW5hbWljQnl0ZXNDb2Rlci5wcm90b3R5cGUuZGVmYXVsdFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIjB4In07RHluYW1pY0J5dGVzQ29kZXIucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih3cml0ZXIsdmFsdWUpe3ZhbHVlPSgwLGxpYiQxLmFycmF5aWZ5KSh2YWx1ZSk7dmFyIGxlbmd0aD13cml0ZXIud3JpdGVWYWx1ZSh2YWx1ZS5sZW5ndGgpO2xlbmd0aCs9d3JpdGVyLndyaXRlQnl0ZXModmFsdWUpO3JldHVybiBsZW5ndGh9O0R5bmFtaWNCeXRlc0NvZGVyLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24ocmVhZGVyKXtyZXR1cm4gcmVhZGVyLnJlYWRCeXRlcyhyZWFkZXIucmVhZFZhbHVlKCkudG9OdW1iZXIoKSx0cnVlKX07cmV0dXJuIER5bmFtaWNCeXRlc0NvZGVyfShhYnN0cmFjdENvZGVyLkNvZGVyKTtleHBvcnRzLkR5bmFtaWNCeXRlc0NvZGVyPUR5bmFtaWNCeXRlc0NvZGVyO3ZhciBCeXRlc0NvZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEJ5dGVzQ29kZXIsX3N1cGVyKTtmdW5jdGlvbiBCeXRlc0NvZGVyKGxvY2FsTmFtZSl7cmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsImJ5dGVzIixsb2NhbE5hbWUpfHx0aGlzfUJ5dGVzQ29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyZWFkZXIpe3JldHVybiByZWFkZXIuY29lcmNlKHRoaXMubmFtZSwoMCxsaWIkMS5oZXhsaWZ5KShfc3VwZXIucHJvdG90eXBlLmRlY29kZS5jYWxsKHRoaXMscmVhZGVyKSkpfTtyZXR1cm4gQnl0ZXNDb2Rlcn0oRHluYW1pY0J5dGVzQ29kZXIpO2V4cG9ydHMuQnl0ZXNDb2Rlcj1CeXRlc0NvZGVyfSk7dmFyIGJ5dGVzJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYnl0ZXMpO3ZhciBmaXhlZEJ5dGVzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuRml4ZWRCeXRlc0NvZGVyPXZvaWQgMDt2YXIgRml4ZWRCeXRlc0NvZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEZpeGVkQnl0ZXNDb2Rlcixfc3VwZXIpO2Z1bmN0aW9uIEZpeGVkQnl0ZXNDb2RlcihzaXplLGxvY2FsTmFtZSl7dmFyIF90aGlzPXRoaXM7dmFyIG5hbWU9ImJ5dGVzIitTdHJpbmcoc2l6ZSk7X3RoaXM9X3N1cGVyLmNhbGwodGhpcyxuYW1lLG5hbWUsbG9jYWxOYW1lLGZhbHNlKXx8dGhpcztfdGhpcy5zaXplPXNpemU7cmV0dXJuIF90aGlzfUZpeGVkQnl0ZXNDb2Rlci5wcm90b3R5cGUuZGVmYXVsdFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIuc3Vic3RyaW5nKDAsMit0aGlzLnNpemUqMil9O0ZpeGVkQnl0ZXNDb2Rlci5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHdyaXRlcix2YWx1ZSl7dmFyIGRhdGE9KDAsbGliJDEuYXJyYXlpZnkpKHZhbHVlKTtpZihkYXRhLmxlbmd0aCE9PXRoaXMuc2l6ZSl7dGhpcy5fdGhyb3dFcnJvcigiaW5jb3JyZWN0IGRhdGEgbGVuZ3RoIix2YWx1ZSl9cmV0dXJuIHdyaXRlci53cml0ZUJ5dGVzKGRhdGEpfTtGaXhlZEJ5dGVzQ29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyZWFkZXIpe3JldHVybiByZWFkZXIuY29lcmNlKHRoaXMubmFtZSwoMCxsaWIkMS5oZXhsaWZ5KShyZWFkZXIucmVhZEJ5dGVzKHRoaXMuc2l6ZSkpKX07cmV0dXJuIEZpeGVkQnl0ZXNDb2Rlcn0oYWJzdHJhY3RDb2Rlci5Db2Rlcik7ZXhwb3J0cy5GaXhlZEJ5dGVzQ29kZXI9Rml4ZWRCeXRlc0NvZGVyfSk7dmFyIGZpeGVkQnl0ZXMkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhmaXhlZEJ5dGVzKTt2YXIgX251bGw9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5OdWxsQ29kZXI9dm9pZCAwO3ZhciBOdWxsQ29kZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoTnVsbENvZGVyLF9zdXBlcik7ZnVuY3Rpb24gTnVsbENvZGVyKGxvY2FsTmFtZSl7cmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIm51bGwiLCIiLGxvY2FsTmFtZSxmYWxzZSl8fHRoaXN9TnVsbENvZGVyLnByb3RvdHlwZS5kZWZhdWx0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH07TnVsbENvZGVyLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24od3JpdGVyLHZhbHVlKXtpZih2YWx1ZSE9bnVsbCl7dGhpcy5fdGhyb3dFcnJvcigibm90IG51bGwiLHZhbHVlKX1yZXR1cm4gd3JpdGVyLndyaXRlQnl0ZXMoW10pfTtOdWxsQ29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyZWFkZXIpe3JlYWRlci5yZWFkQnl0ZXMoMCk7cmV0dXJuIHJlYWRlci5jb2VyY2UodGhpcy5uYW1lLG51bGwpfTtyZXR1cm4gTnVsbENvZGVyfShhYnN0cmFjdENvZGVyLkNvZGVyKTtleHBvcnRzLk51bGxDb2Rlcj1OdWxsQ29kZXJ9KTt2YXIgX251bGwkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfbnVsbCk7dmFyIGFkZHJlc3Nlcz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQWRkcmVzc1plcm89dm9pZCAwO2V4cG9ydHMuQWRkcmVzc1plcm89IjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJ9KTt2YXIgYWRkcmVzc2VzJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYWRkcmVzc2VzKTt2YXIgYmlnbnVtYmVycz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuTWF4SW50MjU2PWV4cG9ydHMuTWluSW50MjU2PWV4cG9ydHMuTWF4VWludDI1Nj1leHBvcnRzLldlaVBlckV0aGVyPWV4cG9ydHMuVHdvPWV4cG9ydHMuT25lPWV4cG9ydHMuWmVybz1leHBvcnRzLk5lZ2F0aXZlT25lPXZvaWQgMDt2YXIgTmVnYXRpdmVPbmU9bGliJDIuQmlnTnVtYmVyLmZyb20oLTEpO2V4cG9ydHMuTmVnYXRpdmVPbmU9TmVnYXRpdmVPbmU7dmFyIFplcm89bGliJDIuQmlnTnVtYmVyLmZyb20oMCk7ZXhwb3J0cy5aZXJvPVplcm87dmFyIE9uZT1saWIkMi5CaWdOdW1iZXIuZnJvbSgxKTtleHBvcnRzLk9uZT1PbmU7dmFyIFR3bz1saWIkMi5CaWdOdW1iZXIuZnJvbSgyKTtleHBvcnRzLlR3bz1Ud287dmFyIFdlaVBlckV0aGVyPWxpYiQyLkJpZ051bWJlci5mcm9tKCIxMDAwMDAwMDAwMDAwMDAwMDAwIik7ZXhwb3J0cy5XZWlQZXJFdGhlcj1XZWlQZXJFdGhlcjt2YXIgTWF4VWludDI1Nj1saWIkMi5CaWdOdW1iZXIuZnJvbSgiMHhmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmIik7ZXhwb3J0cy5NYXhVaW50MjU2PU1heFVpbnQyNTY7dmFyIE1pbkludDI1Nj1saWIkMi5CaWdOdW1iZXIuZnJvbSgiLTB4ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpO2V4cG9ydHMuTWluSW50MjU2PU1pbkludDI1Njt2YXIgTWF4SW50MjU2PWxpYiQyLkJpZ051bWJlci5mcm9tKCIweDdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYiKTtleHBvcnRzLk1heEludDI1Nj1NYXhJbnQyNTZ9KTt2YXIgYmlnbnVtYmVycyQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGJpZ251bWJlcnMpO3ZhciBoYXNoZXM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkhhc2haZXJvPXZvaWQgMDtleHBvcnRzLkhhc2haZXJvPSIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAifSk7dmFyIGhhc2hlcyQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGhhc2hlcyk7dmFyIHN0cmluZ3M9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkV0aGVyU3ltYm9sPXZvaWQgMDtleHBvcnRzLkV0aGVyU3ltYm9sPSLOniJ9KTt2YXIgc3RyaW5ncyQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHN0cmluZ3MpO3ZhciBsaWIkNz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuRXRoZXJTeW1ib2w9ZXhwb3J0cy5IYXNoWmVybz1leHBvcnRzLk1heEludDI1Nj1leHBvcnRzLk1pbkludDI1Nj1leHBvcnRzLk1heFVpbnQyNTY9ZXhwb3J0cy5XZWlQZXJFdGhlcj1leHBvcnRzLlR3bz1leHBvcnRzLk9uZT1leHBvcnRzLlplcm89ZXhwb3J0cy5OZWdhdGl2ZU9uZT1leHBvcnRzLkFkZHJlc3NaZXJvPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQWRkcmVzc1plcm8iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFkZHJlc3Nlcy5BZGRyZXNzWmVyb319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiTmVnYXRpdmVPbmUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJpZ251bWJlcnMuTmVnYXRpdmVPbmV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlplcm8iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJpZ251bWJlcnMuWmVyb319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiT25lIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiaWdudW1iZXJzLk9uZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiVHdvIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiaWdudW1iZXJzLlR3b319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiV2VpUGVyRXRoZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJpZ251bWJlcnMuV2VpUGVyRXRoZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIk1heFVpbnQyNTYiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJpZ251bWJlcnMuTWF4VWludDI1Nn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiTWluSW50MjU2Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiaWdudW1iZXJzLk1pbkludDI1Nn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiTWF4SW50MjU2Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBiaWdudW1iZXJzLk1heEludDI1Nn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiSGFzaFplcm8iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGhhc2hlcy5IYXNoWmVyb319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRXRoZXJTeW1ib2wiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHN0cmluZ3MuRXRoZXJTeW1ib2x9fSl9KTt2YXIgaW5kZXgkNz1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkNyk7dmFyIG51bWJlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLk51bWJlckNvZGVyPXZvaWQgMDt2YXIgTnVtYmVyQ29kZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoTnVtYmVyQ29kZXIsX3N1cGVyKTtmdW5jdGlvbiBOdW1iZXJDb2RlcihzaXplLHNpZ25lZCxsb2NhbE5hbWUpe3ZhciBfdGhpcz10aGlzO3ZhciBuYW1lPShzaWduZWQ/ImludCI6InVpbnQiKStzaXplKjg7X3RoaXM9X3N1cGVyLmNhbGwodGhpcyxuYW1lLG5hbWUsbG9jYWxOYW1lLGZhbHNlKXx8dGhpcztfdGhpcy5zaXplPXNpemU7X3RoaXMuc2lnbmVkPXNpZ25lZDtyZXR1cm4gX3RoaXN9TnVtYmVyQ29kZXIucHJvdG90eXBlLmRlZmF1bHRWYWx1ZT1mdW5jdGlvbigpe3JldHVybiAwfTtOdW1iZXJDb2Rlci5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHdyaXRlcix2YWx1ZSl7dmFyIHY9bGliJDIuQmlnTnVtYmVyLmZyb20odmFsdWUpO3ZhciBtYXhVaW50VmFsdWU9bGliJDcuTWF4VWludDI1Ni5tYXNrKHdyaXRlci53b3JkU2l6ZSo4KTtpZih0aGlzLnNpZ25lZCl7dmFyIGJvdW5kcz1tYXhVaW50VmFsdWUubWFzayh0aGlzLnNpemUqOC0xKTtpZih2Lmd0KGJvdW5kcyl8fHYubHQoYm91bmRzLmFkZChsaWIkNy5PbmUpLm11bChsaWIkNy5OZWdhdGl2ZU9uZSkpKXt0aGlzLl90aHJvd0Vycm9yKCJ2YWx1ZSBvdXQtb2YtYm91bmRzIix2YWx1ZSl9fWVsc2UgaWYodi5sdChsaWIkNy5aZXJvKXx8di5ndChtYXhVaW50VmFsdWUubWFzayh0aGlzLnNpemUqOCkpKXt0aGlzLl90aHJvd0Vycm9yKCJ2YWx1ZSBvdXQtb2YtYm91bmRzIix2YWx1ZSl9dj12LnRvVHdvcyh0aGlzLnNpemUqOCkubWFzayh0aGlzLnNpemUqOCk7aWYodGhpcy5zaWduZWQpe3Y9di5mcm9tVHdvcyh0aGlzLnNpemUqOCkudG9Ud29zKDgqd3JpdGVyLndvcmRTaXplKX1yZXR1cm4gd3JpdGVyLndyaXRlVmFsdWUodil9O051bWJlckNvZGVyLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24ocmVhZGVyKXt2YXIgdmFsdWU9cmVhZGVyLnJlYWRWYWx1ZSgpLm1hc2sodGhpcy5zaXplKjgpO2lmKHRoaXMuc2lnbmVkKXt2YWx1ZT12YWx1ZS5mcm9tVHdvcyh0aGlzLnNpemUqOCl9cmV0dXJuIHJlYWRlci5jb2VyY2UodGhpcy5uYW1lLHZhbHVlKX07cmV0dXJuIE51bWJlckNvZGVyfShhYnN0cmFjdENvZGVyLkNvZGVyKTtleHBvcnRzLk51bWJlckNvZGVyPU51bWJlckNvZGVyfSk7dmFyIG51bWJlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKG51bWJlcik7dmFyIF92ZXJzaW9uJGU9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0ic3RyaW5ncy81LjcuMCJ9KTt2YXIgX3ZlcnNpb24kZj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiRlKTt2YXIgdXRmOD1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudG9VdGY4Q29kZVBvaW50cz1leHBvcnRzLnRvVXRmOFN0cmluZz1leHBvcnRzLl90b1V0ZjhTdHJpbmc9ZXhwb3J0cy5fdG9Fc2NhcGVkVXRmOFN0cmluZz1leHBvcnRzLnRvVXRmOEJ5dGVzPWV4cG9ydHMuVXRmOEVycm9yRnVuY3M9ZXhwb3J0cy5VdGY4RXJyb3JSZWFzb249ZXhwb3J0cy5Vbmljb2RlTm9ybWFsaXphdGlvbkZvcm09dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kZS52ZXJzaW9uKTt2YXIgVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtOyhmdW5jdGlvbihVbmljb2RlTm9ybWFsaXphdGlvbkZvcm0pe1VuaWNvZGVOb3JtYWxpemF0aW9uRm9ybVsiY3VycmVudCJdPSIiO1VuaWNvZGVOb3JtYWxpemF0aW9uRm9ybVsiTkZDIl09Ik5GQyI7VW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtWyJORkQiXT0iTkZEIjtVbmljb2RlTm9ybWFsaXphdGlvbkZvcm1bIk5GS0MiXT0iTkZLQyI7VW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtWyJORktEIl09Ik5GS0QifSkoVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtPWV4cG9ydHMuVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtfHwoZXhwb3J0cy5Vbmljb2RlTm9ybWFsaXphdGlvbkZvcm09e30pKTt2YXIgVXRmOEVycm9yUmVhc29uOyhmdW5jdGlvbihVdGY4RXJyb3JSZWFzb24pe1V0ZjhFcnJvclJlYXNvblsiVU5FWFBFQ1RFRF9DT05USU5VRSJdPSJ1bmV4cGVjdGVkIGNvbnRpbnVhdGlvbiBieXRlIjtVdGY4RXJyb3JSZWFzb25bIkJBRF9QUkVGSVgiXT0iYmFkIGNvZGVwb2ludCBwcmVmaXgiO1V0ZjhFcnJvclJlYXNvblsiT1ZFUlJVTiJdPSJzdHJpbmcgb3ZlcnJ1biI7VXRmOEVycm9yUmVhc29uWyJNSVNTSU5HX0NPTlRJTlVFIl09Im1pc3NpbmcgY29udGludWF0aW9uIGJ5dGUiO1V0ZjhFcnJvclJlYXNvblsiT1VUX09GX1JBTkdFIl09Im91dCBvZiBVVEYtOCByYW5nZSI7VXRmOEVycm9yUmVhc29uWyJVVEYxNl9TVVJST0dBVEUiXT0iVVRGLTE2IHN1cnJvZ2F0ZSI7VXRmOEVycm9yUmVhc29uWyJPVkVSTE9ORyJdPSJvdmVybG9uZyByZXByZXNlbnRhdGlvbiJ9KShVdGY4RXJyb3JSZWFzb249ZXhwb3J0cy5VdGY4RXJyb3JSZWFzb258fChleHBvcnRzLlV0ZjhFcnJvclJlYXNvbj17fSkpO2Z1bmN0aW9uIGVycm9yRnVuYyhyZWFzb24sb2Zmc2V0LGJ5dGVzLG91dHB1dCxiYWRDb2RlcG9pbnQpe3JldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGNvZGVwb2ludCBhdCBvZmZzZXQgIitvZmZzZXQrIjsgIityZWFzb24sImJ5dGVzIixieXRlcyl9ZnVuY3Rpb24gaWdub3JlRnVuYyhyZWFzb24sb2Zmc2V0LGJ5dGVzLG91dHB1dCxiYWRDb2RlcG9pbnQpe2lmKHJlYXNvbj09PVV0ZjhFcnJvclJlYXNvbi5CQURfUFJFRklYfHxyZWFzb249PT1VdGY4RXJyb3JSZWFzb24uVU5FWFBFQ1RFRF9DT05USU5VRSl7dmFyIGk9MDtmb3IodmFyIG89b2Zmc2V0KzE7bzxieXRlcy5sZW5ndGg7bysrKXtpZihieXRlc1tvXT4+NiE9PTIpe2JyZWFrfWkrK31yZXR1cm4gaX1pZihyZWFzb249PT1VdGY4RXJyb3JSZWFzb24uT1ZFUlJVTil7cmV0dXJuIGJ5dGVzLmxlbmd0aC1vZmZzZXQtMX1yZXR1cm4gMH1mdW5jdGlvbiByZXBsYWNlRnVuYyhyZWFzb24sb2Zmc2V0LGJ5dGVzLG91dHB1dCxiYWRDb2RlcG9pbnQpe2lmKHJlYXNvbj09PVV0ZjhFcnJvclJlYXNvbi5PVkVSTE9ORyl7b3V0cHV0LnB1c2goYmFkQ29kZXBvaW50KTtyZXR1cm4gMH1vdXRwdXQucHVzaCg2NTUzMyk7cmV0dXJuIGlnbm9yZUZ1bmMocmVhc29uLG9mZnNldCxieXRlcyxvdXRwdXQsYmFkQ29kZXBvaW50KX1leHBvcnRzLlV0ZjhFcnJvckZ1bmNzPU9iamVjdC5mcmVlemUoe2Vycm9yOmVycm9yRnVuYyxpZ25vcmU6aWdub3JlRnVuYyxyZXBsYWNlOnJlcGxhY2VGdW5jfSk7ZnVuY3Rpb24gZ2V0VXRmOENvZGVQb2ludHMoYnl0ZXMsb25FcnJvcil7aWYob25FcnJvcj09bnVsbCl7b25FcnJvcj1leHBvcnRzLlV0ZjhFcnJvckZ1bmNzLmVycm9yfWJ5dGVzPSgwLGxpYiQxLmFycmF5aWZ5KShieXRlcyk7dmFyIHJlc3VsdD1bXTt2YXIgaT0wO3doaWxlKGk8Ynl0ZXMubGVuZ3RoKXt2YXIgYz1ieXRlc1tpKytdO2lmKGM+Pjc9PT0wKXtyZXN1bHQucHVzaChjKTtjb250aW51ZX12YXIgZXh0cmFMZW5ndGg9bnVsbDt2YXIgb3ZlcmxvbmdNYXNrPW51bGw7aWYoKGMmMjI0KT09PTE5Mil7ZXh0cmFMZW5ndGg9MTtvdmVybG9uZ01hc2s9MTI3fWVsc2UgaWYoKGMmMjQwKT09PTIyNCl7ZXh0cmFMZW5ndGg9MjtvdmVybG9uZ01hc2s9MjA0N31lbHNlIGlmKChjJjI0OCk9PT0yNDApe2V4dHJhTGVuZ3RoPTM7b3ZlcmxvbmdNYXNrPTY1NTM1fWVsc2V7aWYoKGMmMTkyKT09PTEyOCl7aSs9b25FcnJvcihVdGY4RXJyb3JSZWFzb24uVU5FWFBFQ1RFRF9DT05USU5VRSxpLTEsYnl0ZXMscmVzdWx0KX1lbHNle2krPW9uRXJyb3IoVXRmOEVycm9yUmVhc29uLkJBRF9QUkVGSVgsaS0xLGJ5dGVzLHJlc3VsdCl9Y29udGludWV9aWYoaS0xK2V4dHJhTGVuZ3RoPj1ieXRlcy5sZW5ndGgpe2krPW9uRXJyb3IoVXRmOEVycm9yUmVhc29uLk9WRVJSVU4saS0xLGJ5dGVzLHJlc3VsdCk7Y29udGludWV9dmFyIHJlcz1jJigxPDw4LWV4dHJhTGVuZ3RoLTEpLTE7Zm9yKHZhciBqPTA7ajxleHRyYUxlbmd0aDtqKyspe3ZhciBuZXh0Q2hhcj1ieXRlc1tpXTtpZigobmV4dENoYXImMTkyKSE9MTI4KXtpKz1vbkVycm9yKFV0ZjhFcnJvclJlYXNvbi5NSVNTSU5HX0NPTlRJTlVFLGksYnl0ZXMscmVzdWx0KTtyZXM9bnVsbDticmVha31yZXM9cmVzPDw2fG5leHRDaGFyJjYzO2krK31pZihyZXM9PT1udWxsKXtjb250aW51ZX1pZihyZXM+MTExNDExMSl7aSs9b25FcnJvcihVdGY4RXJyb3JSZWFzb24uT1VUX09GX1JBTkdFLGktMS1leHRyYUxlbmd0aCxieXRlcyxyZXN1bHQscmVzKTtjb250aW51ZX1pZihyZXM+PTU1Mjk2JiZyZXM8PTU3MzQzKXtpKz1vbkVycm9yKFV0ZjhFcnJvclJlYXNvbi5VVEYxNl9TVVJST0dBVEUsaS0xLWV4dHJhTGVuZ3RoLGJ5dGVzLHJlc3VsdCxyZXMpO2NvbnRpbnVlfWlmKHJlczw9b3ZlcmxvbmdNYXNrKXtpKz1vbkVycm9yKFV0ZjhFcnJvclJlYXNvbi5PVkVSTE9ORyxpLTEtZXh0cmFMZW5ndGgsYnl0ZXMscmVzdWx0LHJlcyk7Y29udGludWV9cmVzdWx0LnB1c2gocmVzKX1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIHRvVXRmOEJ5dGVzKHN0cixmb3JtKXtpZihmb3JtPT09dm9pZCAwKXtmb3JtPVVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybS5jdXJyZW50fWlmKGZvcm0hPVVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybS5jdXJyZW50KXtsb2dnZXIuY2hlY2tOb3JtYWxpemUoKTtzdHI9c3RyLm5vcm1hbGl6ZShmb3JtKX12YXIgcmVzdWx0PVtdO2Zvcih2YXIgaT0wO2k8c3RyLmxlbmd0aDtpKyspe3ZhciBjPXN0ci5jaGFyQ29kZUF0KGkpO2lmKGM8MTI4KXtyZXN1bHQucHVzaChjKX1lbHNlIGlmKGM8MjA0OCl7cmVzdWx0LnB1c2goYz4+NnwxOTIpO3Jlc3VsdC5wdXNoKGMmNjN8MTI4KX1lbHNlIGlmKChjJjY0NTEyKT09NTUyOTYpe2krKzt2YXIgYzI9c3RyLmNoYXJDb2RlQXQoaSk7aWYoaT49c3RyLmxlbmd0aHx8KGMyJjY0NTEyKSE9PTU2MzIwKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgdXRmLTggc3RyaW5nIil9dmFyIHBhaXI9NjU1MzYrKChjJjEwMjMpPDwxMCkrKGMyJjEwMjMpO3Jlc3VsdC5wdXNoKHBhaXI+PjE4fDI0MCk7cmVzdWx0LnB1c2gocGFpcj4+MTImNjN8MTI4KTtyZXN1bHQucHVzaChwYWlyPj42JjYzfDEyOCk7cmVzdWx0LnB1c2gocGFpciY2M3wxMjgpfWVsc2V7cmVzdWx0LnB1c2goYz4+MTJ8MjI0KTtyZXN1bHQucHVzaChjPj42JjYzfDEyOCk7cmVzdWx0LnB1c2goYyY2M3wxMjgpfX1yZXR1cm4oMCxsaWIkMS5hcnJheWlmeSkocmVzdWx0KX1leHBvcnRzLnRvVXRmOEJ5dGVzPXRvVXRmOEJ5dGVzO2Z1bmN0aW9uIGVzY2FwZUNoYXIodmFsdWUpe3ZhciBoZXg9IjAwMDAiK3ZhbHVlLnRvU3RyaW5nKDE2KTtyZXR1cm4iXFx1IitoZXguc3Vic3RyaW5nKGhleC5sZW5ndGgtNCl9ZnVuY3Rpb24gX3RvRXNjYXBlZFV0ZjhTdHJpbmcoYnl0ZXMsb25FcnJvcil7cmV0dXJuJyInK2dldFV0ZjhDb2RlUG9pbnRzKGJ5dGVzLG9uRXJyb3IpLm1hcChmdW5jdGlvbihjb2RlUG9pbnQpe2lmKGNvZGVQb2ludDwyNTYpe3N3aXRjaChjb2RlUG9pbnQpe2Nhc2UgODpyZXR1cm4iXFxiIjtjYXNlIDk6cmV0dXJuIlxcdCI7Y2FzZSAxMDpyZXR1cm4iXFxuIjtjYXNlIDEzOnJldHVybiJcXHIiO2Nhc2UgMzQ6cmV0dXJuJ1xcIic7Y2FzZSA5MjpyZXR1cm4iXFxcXCJ9aWYoY29kZVBvaW50Pj0zMiYmY29kZVBvaW50PDEyNyl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZVBvaW50KX19aWYoY29kZVBvaW50PD02NTUzNSl7cmV0dXJuIGVzY2FwZUNoYXIoY29kZVBvaW50KX1jb2RlUG9pbnQtPTY1NTM2O3JldHVybiBlc2NhcGVDaGFyKChjb2RlUG9pbnQ+PjEwJjEwMjMpKzU1Mjk2KStlc2NhcGVDaGFyKChjb2RlUG9pbnQmMTAyMykrNTYzMjApfSkuam9pbigiIikrJyInfWV4cG9ydHMuX3RvRXNjYXBlZFV0ZjhTdHJpbmc9X3RvRXNjYXBlZFV0ZjhTdHJpbmc7ZnVuY3Rpb24gX3RvVXRmOFN0cmluZyhjb2RlUG9pbnRzKXtyZXR1cm4gY29kZVBvaW50cy5tYXAoZnVuY3Rpb24oY29kZVBvaW50KXtpZihjb2RlUG9pbnQ8PTY1NTM1KXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlUG9pbnQpfWNvZGVQb2ludC09NjU1MzY7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoKGNvZGVQb2ludD4+MTAmMTAyMykrNTUyOTYsKGNvZGVQb2ludCYxMDIzKSs1NjMyMCl9KS5qb2luKCIiKX1leHBvcnRzLl90b1V0ZjhTdHJpbmc9X3RvVXRmOFN0cmluZztmdW5jdGlvbiB0b1V0ZjhTdHJpbmcoYnl0ZXMsb25FcnJvcil7cmV0dXJuIF90b1V0ZjhTdHJpbmcoZ2V0VXRmOENvZGVQb2ludHMoYnl0ZXMsb25FcnJvcikpfWV4cG9ydHMudG9VdGY4U3RyaW5nPXRvVXRmOFN0cmluZztmdW5jdGlvbiB0b1V0ZjhDb2RlUG9pbnRzKHN0cixmb3JtKXtpZihmb3JtPT09dm9pZCAwKXtmb3JtPVVuaWNvZGVOb3JtYWxpemF0aW9uRm9ybS5jdXJyZW50fXJldHVybiBnZXRVdGY4Q29kZVBvaW50cyh0b1V0ZjhCeXRlcyhzdHIsZm9ybSkpfWV4cG9ydHMudG9VdGY4Q29kZVBvaW50cz10b1V0ZjhDb2RlUG9pbnRzfSk7dmFyIHV0ZjgkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyh1dGY4KTt2YXIgYnl0ZXMzMj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMucGFyc2VCeXRlczMyU3RyaW5nPWV4cG9ydHMuZm9ybWF0Qnl0ZXMzMlN0cmluZz12b2lkIDA7ZnVuY3Rpb24gZm9ybWF0Qnl0ZXMzMlN0cmluZyh0ZXh0KXt2YXIgYnl0ZXM9KDAsdXRmOC50b1V0ZjhCeXRlcykodGV4dCk7aWYoYnl0ZXMubGVuZ3RoPjMxKXt0aHJvdyBuZXcgRXJyb3IoImJ5dGVzMzIgc3RyaW5nIG11c3QgYmUgbGVzcyB0aGFuIDMyIGJ5dGVzIil9cmV0dXJuKDAsbGliJDEuaGV4bGlmeSkoKDAsbGliJDEuY29uY2F0KShbYnl0ZXMsbGliJDcuSGFzaFplcm9dKS5zbGljZSgwLDMyKSl9ZXhwb3J0cy5mb3JtYXRCeXRlczMyU3RyaW5nPWZvcm1hdEJ5dGVzMzJTdHJpbmc7ZnVuY3Rpb24gcGFyc2VCeXRlczMyU3RyaW5nKGJ5dGVzKXt2YXIgZGF0YT0oMCxsaWIkMS5hcnJheWlmeSkoYnl0ZXMpO2lmKGRhdGEubGVuZ3RoIT09MzIpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBieXRlczMyIC0gbm90IDMyIGJ5dGVzIGxvbmciKX1pZihkYXRhWzMxXSE9PTApe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBieXRlczMyIHN0cmluZyAtIG5vIG51bGwgdGVybWluYXRvciIpfXZhciBsZW5ndGg9MzE7d2hpbGUoZGF0YVtsZW5ndGgtMV09PT0wKXtsZW5ndGgtLX1yZXR1cm4oMCx1dGY4LnRvVXRmOFN0cmluZykoZGF0YS5zbGljZSgwLGxlbmd0aCkpfWV4cG9ydHMucGFyc2VCeXRlczMyU3RyaW5nPXBhcnNlQnl0ZXMzMlN0cmluZ30pO3ZhciBieXRlczMyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYnl0ZXMzMik7dmFyIGlkbmE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLm5hbWVwcmVwPWV4cG9ydHMuX25hbWVwcmVwVGFibGVDPWV4cG9ydHMuX25hbWVwcmVwVGFibGVCMj1leHBvcnRzLl9uYW1lcHJlcFRhYmxlQTE9dm9pZCAwO2Z1bmN0aW9uIGJ5dGVzMihkYXRhKXtpZihkYXRhLmxlbmd0aCU0IT09MCl7dGhyb3cgbmV3IEVycm9yKCJiYWQgZGF0YSIpfXZhciByZXN1bHQ9W107Zm9yKHZhciBpPTA7aTxkYXRhLmxlbmd0aDtpKz00KXtyZXN1bHQucHVzaChwYXJzZUludChkYXRhLnN1YnN0cmluZyhpLGkrNCksMTYpKX1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGNyZWF0ZVRhYmxlKGRhdGEsZnVuYyl7aWYoIWZ1bmMpe2Z1bmM9ZnVuY3Rpb24odmFsdWUpe3JldHVybltwYXJzZUludCh2YWx1ZSwxNildfX12YXIgbG89MDt2YXIgcmVzdWx0PXt9O2RhdGEuc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKHBhaXIpe3ZhciBjb21wcz1wYWlyLnNwbGl0KCI6Iik7bG8rPXBhcnNlSW50KGNvbXBzWzBdLDE2KTtyZXN1bHRbbG9dPWZ1bmMoY29tcHNbMV0pfSk7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBjcmVhdGVSYW5nZVRhYmxlKGRhdGEpe3ZhciBoaT0wO3JldHVybiBkYXRhLnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKHYpe3ZhciBjb21wcz12LnNwbGl0KCItIik7aWYoY29tcHMubGVuZ3RoPT09MSl7Y29tcHNbMV09IjAifWVsc2UgaWYoY29tcHNbMV09PT0iIil7Y29tcHNbMV09IjEifXZhciBsbz1oaStwYXJzZUludChjb21wc1swXSwxNik7aGk9cGFyc2VJbnQoY29tcHNbMV0sMTYpO3JldHVybntsOmxvLGg6aGl9fSl9ZnVuY3Rpb24gbWF0Y2hNYXAodmFsdWUscmFuZ2VzKXt2YXIgbG89MDtmb3IodmFyIGk9MDtpPHJhbmdlcy5sZW5ndGg7aSsrKXt2YXIgcmFuZ2U9cmFuZ2VzW2ldO2xvKz1yYW5nZS5sO2lmKHZhbHVlPj1sbyYmdmFsdWU8PWxvK3JhbmdlLmgmJih2YWx1ZS1sbyklKHJhbmdlLmR8fDEpPT09MCl7aWYocmFuZ2UuZSYmcmFuZ2UuZS5pbmRleE9mKHZhbHVlLWxvKSE9PS0xKXtjb250aW51ZX1yZXR1cm4gcmFuZ2V9fXJldHVybiBudWxsfXZhciBUYWJsZV9BXzFfcmFuZ2VzPWNyZWF0ZVJhbmdlVGFibGUoIjIyMSwxMy0xYiw1Zi0sNDAtMTAsNTEtZiwxMS0zLDMtMywyLTIsMi00LDgsMiwxNSwyZCwyOC04LDg4LDQ4LDI3LSwzLTUsMTEtMjAsMjctLDgsMjgsMy01LDEyLDE4LGItYSwxYy00LDYtMTYsMi1kLDItMiwyLDFiLTQsMTctOSw4Zi0sMTAsZiwxZi0yLDFjLTM0LDMzLTE0ZSw0LDM2LSwxMy0sNi0yLDFhLWYsNCw5LSwzLSwxNyw4LDItMiw1LSwyLDgtLDMtLDQtOCwyLTMsMyw2LSwxNi02LDItLDctMywzLSwxNyw4LDMsMywzLSwyLDYtMywzLSw0LWEsNSwyLTYsMTAtYiw0LDgsMiw0LDE3LDgsMyw2LSxiLDQsNC0sMi1lLDItNCxiLTEwLDQsOS0sMy0sMTcsOCwzLSw1LSw5LTIsMy0sNC03LDMtMywzLDQtMyxjLTEwLDMsNy0yLDQsNS0yLDMsMiwzLTIsMy0yLDQtMiw5LDQtMyw2LTIsNCw1LTgsMi1lLGQtZCw0LDksNCwxOCxiLDYtMyw4LDQsNS02LDMtOCwzLTMsYi0xMSwzLDksNCwxOCxiLDYtMyw4LDQsNS02LDMtNiwyLDMtMyxiLTExLDMsOSw0LDE4LDExLTMsNy0sNCw1LTgsMi03LDMtMyxiLTExLDMsMTMtMiwxOSxhLDItLDgtMiwyLTMsNywyLDktMTEsNC1iLDNiLTMsMWUtMjQsMywyLSwzLDItLDItNSw1LDgsNCwyLDItLDMsZSw0LSw2LDIsNy0sYi0sMy0yMSw0OSwyMy01LDFjLTMsOSwyNSwxMC0sMi0yZiwyMyw2LDMsOC0yLDUtNSwxYi00NSwyNy05LDJhLSwyLTMsNWItNCw0NS00LDUzLTUsOCw0MCwyLDUtLDgsMiw1LSwyOCwyLDUtLDIwLDIsNS0sOCwyLDUtLDgsOCwxOCwyMCwyLDUtLDgsMjgsMTQtNSwxZC0yMiw1Ni1iLDI3Ny04LDFlLTIsNTItZSxlLDgtYSwxOC04LDE1LWIsZSw0LDMtYiw1ZS0yLGItMTUsMTAsYi01LDU5LTcsMmItNTU1LDlkLTMsNWItNSwxNy0sNy0sMjctLDctLDksMiwyLDIsMjAtLDM2LDEwLGYtLDcsMTQtLDQsYSw1NC0zLDItNiw2LTUsOS0sMWMtMTAsMTMtMWQsMWMtMTQsM2MtLDEwLTYsMzItYiwyNDAtMzAsMjgtMTgsYy0xNCxhMCwxMTUtLDMsNjYtLGItNzYsNSw1LSwxZCwyNCwyLDUtMiwyLDgtLDM1LTIsMTksZi0xMCwxZC0zLDMxMS0zN2YsMWIsNWEtYixkNy0xOSxkLTMsNDEsNTctLDY4LTQsMjktMyw1ZiwyOS0zNywyZS0yLDI1LWMsMmMtMiw0ZS0zLDMwLDc4LTMsNjQtLDIwLDE5YjctNDksNTFhNy01OSw0OGUtMiwzOC03MzgsMmJhNS01YiwyMjJmLSwzYy05NCw4LWIsNi00LDFiLDYsMiwzLDMsNmQtMjAsMTZlLWYsNDEtLDM3LTcsMmUtMiwxMS1mLDUtYiwxOC0sYiwxNCw1LTMsNiw4OC0sMixiZi0yLDctLDctLDctLDQtMiw4LDgtOSw4LTJmZiwyMCw1LWIsMWMtYjQsMjctLDI3LWNiYjEsZjctOSwyOC0yLGI1LTIyMSw1Niw0OCwzLSwyLSwzLSw1LGQsMiw1LDMsNDIsNS0sOSw4LDFkLDUsNiwyLTIsOCwxNTMtMywxMjMtMywzMy0yN2ZkLGE2ZGEtNTEyOCwyMWYtNWRmLDMtZmZmZCwzLWZmZmQsMy1mZmZkLDMtZmZmZCwzLWZmZmQsMy1mZmZkLDMtZmZmZCwzLWZmZmQsMy1mZmZkLDMtZmZmZCwzLWZmZmQsMywyLTFkLDYxLWZmN2QiKTt2YXIgVGFibGVfQl8xX2ZsYWdzPSJhZCwzNGYsMTgwNiwxODBiLDE4MGMsMTgwZCwyMDBiLDIwMGMsMjAwZCwyMDYwLGZlZmYiLnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKHYpe3JldHVybiBwYXJzZUludCh2LDE2KX0pO3ZhciBUYWJsZV9CXzJfcmFuZ2VzPVt7aDoyNSxzOjMyLGw6NjV9LHtoOjMwLHM6MzIsZTpbMjNdLGw6MTI3fSx7aDo1NCxzOjEsZTpbNDhdLGw6NjQsZDoyfSx7aDoxNCxzOjEsbDo1NyxkOjJ9LHtoOjQ0LHM6MSxsOjE3LGQ6Mn0se2g6MTAsczoxLGU6WzIsNiw4XSxsOjYxLGQ6Mn0se2g6MTYsczoxLGw6NjgsZDoyfSx7aDo4NCxzOjEsZTpbMTgsMjQsNjZdLGw6MTksZDoyfSx7aDoyNixzOjMyLGU6WzE3XSxsOjQzNX0se2g6MjIsczoxLGw6NzEsZDoyfSx7aDoxNSxzOjgwLGw6NDB9LHtoOjMxLHM6MzIsbDoxNn0se2g6MzIsczoxLGw6ODAsZDoyfSx7aDo1MixzOjEsbDo0MixkOjJ9LHtoOjEyLHM6MSxsOjU1LGQ6Mn0se2g6NDAsczoxLGU6WzM4XSxsOjE1LGQ6Mn0se2g6MTQsczoxLGw6NDgsZDoyfSx7aDozNyxzOjQ4LGw6NDl9LHtoOjE0OCxzOjEsbDo2MzUxLGQ6Mn0se2g6ODgsczoxLGw6MTYwLGQ6Mn0se2g6MTUsczoxNixsOjcwNH0se2g6MjUsczoyNixsOjg1NH0se2g6MjUsczozMixsOjU1OTE1fSx7aDozNyxzOjQwLGw6MTI0N30se2g6MjUsczotMTE5NzExLGw6NTMyNDh9LHtoOjI1LHM6LTExOTc2MyxsOjUyfSx7aDoyNSxzOi0xMTk4MTUsbDo1Mn0se2g6MjUsczotMTE5ODY3LGU6WzEsNCw1LDcsOCwxMSwxMiwxN10sbDo1Mn0se2g6MjUsczotMTE5OTE5LGw6NTJ9LHtoOjI0LHM6LTExOTk3MSxlOlsyLDcsOCwxN10sbDo1Mn0se2g6MjQsczotMTIwMDIzLGU6WzIsNywxMywxNSwxNiwxN10sbDo1Mn0se2g6MjUsczotMTIwMDc1LGw6NTJ9LHtoOjI1LHM6LTEyMDEyNyxsOjUyfSx7aDoyNSxzOi0xMjAxNzksbDo1Mn0se2g6MjUsczotMTIwMjMxLGw6NTJ9LHtoOjI1LHM6LTEyMDI4MyxsOjUyfSx7aDoyNSxzOi0xMjAzMzUsbDo1Mn0se2g6MjQsczotMTE5NTQzLGU6WzE3XSxsOjU2fSx7aDoyNCxzOi0xMTk2MDEsZTpbMTddLGw6NTh9LHtoOjI0LHM6LTExOTY1OSxlOlsxN10sbDo1OH0se2g6MjQsczotMTE5NzE3LGU6WzE3XSxsOjU4fSx7aDoyNCxzOi0xMTk3NzUsZTpbMTddLGw6NTh9XTt2YXIgVGFibGVfQl8yX2x1dF9hYnM9Y3JlYXRlVGFibGUoImI1OjNiYyxjMzpmZiw3OjczLDI6MjUzLDU6MjU0LDM6MjU2LDE6MjU3LDU6MjU5LDE6MjViLDM6MjYwLDE6MjYzLDI6MjY5LDE6MjY4LDU6MjZmLDE6MjcyLDI6Mjc1LDc6MjgwLDM6MjgzLDU6Mjg4LDM6MjhhLDE6MjhiLDU6MjkyLDNmOjE5NSwxOjFiZiwyOToxOWUsMTI1OjNiOSw4YjozYjIsMTozYjgsMTozYzUsMzozYzYsMTozYzAsMWE6M2JhLDE6M2MxLDE6M2MzLDI6M2I4LDE6M2I1LDFiYzk6M2I5LDFjOjFmNzYsMToxZjc3LGY6MWY3YSwxOjFmN2IsZDoxZjc4LDE6MWY3OSwxOjFmN2MsMToxZjdkLDEwNzo2Myw1OjI1Yiw0OjY4LDE6NjgsMTo2OCwzOjY5LDE6NjksMTo2YywzOjZlLDQ6NzAsMTo3MSwxOjcyLDE6NzIsMTo3Miw3OjdhLDI6M2M5LDI6N2EsMjo2YiwxOmU1LDE6NjIsMTo2MywzOjY1LDE6NjYsMjo2ZCxiOjNiMywxOjNjMCw2OjY0LDFiNTc0OjNiOCwxYTozYzMsMjA6M2I4LDFhOjNjMywyMDozYjgsMWE6M2MzLDIwOjNiOCwxYTozYzMsMjA6M2I4LDFhOjNjMyIpO3ZhciBUYWJsZV9CXzJfbHV0X3JlbD1jcmVhdGVUYWJsZSgiMTc5OjEsMjoxLDI6MSw1OjEsMjoxLGE6NGYsYToxLDg6MSwyOjEsMjoxLDM6MSw1OjEsMzoxLDQ6MSwyOjEsMzoxLDQ6MSw4OjIsMToxLDI6MiwxOjEsMjoyLDI3OjIsMTk1OjI2LDI6MjUsMToyNSwxOjI1LDI6NDAsMjozZiwxOjNmLDMzOjEsMTE6LTYsMTotOSwxYWM3Oi0zYSw2ZDotOCwxOi04LDE6LTgsMTotOCwxOi04LDE6LTgsMTotOCwxOi04LDk6LTgsMTotOCwxOi04LDE6LTgsMTotOCwxOi04LGI6LTgsMTotOCwxOi04LDE6LTgsMTotOCwxOi04LDE6LTgsMTotOCw5Oi04LDE6LTgsMTotOCwxOi04LDE6LTgsMTotOCwxOi04LDE6LTgsOTotOCwxOi04LDE6LTgsMTotOCwxOi04LDE6LTgsYzotOCwyOi04LDI6LTgsMjotOCw5Oi04LDE6LTgsMTotOCwxOi04LDE6LTgsMTotOCwxOi04LDE6LTgsNDk6LTgsMTotOCwxOi00YSwxOi00YSxkOi01NiwxOi01NiwxOi01NiwxOi01NixkOi04LDE6LTgsZjotOCwxOi04LDM6LTciKTt2YXIgVGFibGVfQl8yX2NvbXBsZXg9Y3JlYXRlVGFibGUoImRmOjAwNzMwMDczLDUxOjAwNjkwMzA3LDE5OjAyQkMwMDZFLGE3OjAwNkEwMzBDLDE4YTowMDIwMDNCOSwxNjowM0I5MDMwODAzMDEsMjA6MDNDNTAzMDgwMzAxLDFkNzowNTY1MDU4MiwxOTBmOjAwNjgwMzMxLDE6MDA3NDAzMDgsMTowMDc3MDMwQSwxOjAwNzkwMzBBLDE6MDA2MTAyQkUsYjY6MDNDNTAzMTMsMjowM0M1MDMxMzAzMDAsMjowM0M1MDMxMzAzMDEsMjowM0M1MDMxMzAzNDIsMmE6MUYwMDAzQjksMToxRjAxMDNCOSwxOjFGMDIwM0I5LDE6MUYwMzAzQjksMToxRjA0MDNCOSwxOjFGMDUwM0I5LDE6MUYwNjAzQjksMToxRjA3MDNCOSwxOjFGMDAwM0I5LDE6MUYwMTAzQjksMToxRjAyMDNCOSwxOjFGMDMwM0I5LDE6MUYwNDAzQjksMToxRjA1MDNCOSwxOjFGMDYwM0I5LDE6MUYwNzAzQjksMToxRjIwMDNCOSwxOjFGMjEwM0I5LDE6MUYyMjAzQjksMToxRjIzMDNCOSwxOjFGMjQwM0I5LDE6MUYyNTAzQjksMToxRjI2MDNCOSwxOjFGMjcwM0I5LDE6MUYyMDAzQjksMToxRjIxMDNCOSwxOjFGMjIwM0I5LDE6MUYyMzAzQjksMToxRjI0MDNCOSwxOjFGMjUwM0I5LDE6MUYyNjAzQjksMToxRjI3MDNCOSwxOjFGNjAwM0I5LDE6MUY2MTAzQjksMToxRjYyMDNCOSwxOjFGNjMwM0I5LDE6MUY2NDAzQjksMToxRjY1MDNCOSwxOjFGNjYwM0I5LDE6MUY2NzAzQjksMToxRjYwMDNCOSwxOjFGNjEwM0I5LDE6MUY2MjAzQjksMToxRjYzMDNCOSwxOjFGNjQwM0I5LDE6MUY2NTAzQjksMToxRjY2MDNCOSwxOjFGNjcwM0I5LDM6MUY3MDAzQjksMTowM0IxMDNCOSwxOjAzQUMwM0I5LDI6MDNCMTAzNDIsMTowM0IxMDM0MjAzQjksNTowM0IxMDNCOSw2OjFGNzQwM0I5LDE6MDNCNzAzQjksMTowM0FFMDNCOSwyOjAzQjcwMzQyLDE6MDNCNzAzNDIwM0I5LDU6MDNCNzAzQjksNjowM0I5MDMwODAzMDAsMTowM0I5MDMwODAzMDEsMzowM0I5MDM0MiwxOjAzQjkwMzA4MDM0MixiOjAzQzUwMzA4MDMwMCwxOjAzQzUwMzA4MDMwMSwxOjAzQzEwMzEzLDI6MDNDNTAzNDIsMTowM0M1MDMwODAzNDIsYjoxRjdDMDNCOSwxOjAzQzkwM0I5LDE6MDNDRTAzQjksMjowM0M5MDM0MiwxOjAzQzkwMzQyMDNCOSw1OjAzQzkwM0I5LGFjOjAwNzIwMDczLDViOjAwQjAwMDYzLDY6MDBCMDAwNjYsZDowMDZFMDA2RixhOjAwNzMwMDZELDE6MDA3NDAwNjUwMDZDLDE6MDA3NDAwNkQsMTI0ZjowMDY4MDA3MDAwNjEsMjowMDYxMDA3NSwyOjAwNkYwMDc2LGI6MDA3MDAwNjEsMTowMDZFMDA2MSwxOjAzQkMwMDYxLDE6MDA2RDAwNjEsMTowMDZCMDA2MSwxOjAwNkIwMDYyLDE6MDA2RDAwNjIsMTowMDY3MDA2MiwzOjAwNzAwMDY2LDE6MDA2RTAwNjYsMTowM0JDMDA2Niw0OjAwNjgwMDdBLDE6MDA2QjAwNjgwMDdBLDE6MDA2RDAwNjgwMDdBLDE6MDA2NzAwNjgwMDdBLDE6MDA3NDAwNjgwMDdBLDE1OjAwNzAwMDYxLDE6MDA2QjAwNzAwMDYxLDE6MDA2RDAwNzAwMDYxLDE6MDA2NzAwNzAwMDYxLDg6MDA3MDAwNzYsMTowMDZFMDA3NiwxOjAzQkMwMDc2LDE6MDA2RDAwNzYsMTowMDZCMDA3NiwxOjAwNkQwMDc2LDE6MDA3MDAwNzcsMTowMDZFMDA3NywxOjAzQkMwMDc3LDE6MDA2RDAwNzcsMTowMDZCMDA3NywxOjAwNkQwMDc3LDE6MDA2QjAzQzksMTowMDZEMDNDOSwyOjAwNjIwMDcxLDM6MDA2MzIyMTUwMDZCMDA2NywxOjAwNjMwMDZGMDAyRSwxOjAwNjQwMDYyLDE6MDA2NzAwNzksMjowMDY4MDA3MCwyOjAwNkIwMDZCLDE6MDA2QjAwNkQsOTowMDcwMDA2OCwyOjAwNzAwMDcwMDA2RCwxOjAwNzAwMDcyLDI6MDA3MzAwNzYsMTowMDc3MDA2MixjNzIzOjAwNjYwMDY2LDE6MDA2NjAwNjksMTowMDY2MDA2QywxOjAwNjYwMDY2MDA2OSwxOjAwNjYwMDY2MDA2QywxOjAwNzMwMDc0LDE6MDA3MzAwNzQsZDowNTc0MDU3NiwxOjA1NzQwNTY1LDE6MDU3NDA1NkIsMTowNTdFMDU3NiwxOjA1NzQwNTZEIixieXRlczIpO3ZhciBUYWJsZV9DX3Jhbmdlcz1jcmVhdGVSYW5nZVRhYmxlKCI4MC0yMCwyYTAtLDM5YywzMixmNzEsMThlLDdmMi1mLDE5LTcsMzAtNCw3LTUsZjgxLWIsNSxhODAwLTIwZmYsNGQxLTFmLDExMCxmYS02LGQxNzQtNywyZTg0LSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSxmZmZmLSwyLDFmLTVmLGZmN2YtMjAwMDEiKTtmdW5jdGlvbiBmbGF0dGVuKHZhbHVlcyl7cmV0dXJuIHZhbHVlcy5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sdmFsdWUpe3ZhbHVlLmZvckVhY2goZnVuY3Rpb24odmFsdWUpe2FjY3VtLnB1c2godmFsdWUpfSk7cmV0dXJuIGFjY3VtfSxbXSl9ZnVuY3Rpb24gX25hbWVwcmVwVGFibGVBMShjb2RlcG9pbnQpe3JldHVybiEhbWF0Y2hNYXAoY29kZXBvaW50LFRhYmxlX0FfMV9yYW5nZXMpfWV4cG9ydHMuX25hbWVwcmVwVGFibGVBMT1fbmFtZXByZXBUYWJsZUExO2Z1bmN0aW9uIF9uYW1lcHJlcFRhYmxlQjIoY29kZXBvaW50KXt2YXIgcmFuZ2U9bWF0Y2hNYXAoY29kZXBvaW50LFRhYmxlX0JfMl9yYW5nZXMpO2lmKHJhbmdlKXtyZXR1cm5bY29kZXBvaW50K3JhbmdlLnNdfXZhciBjb2Rlcz1UYWJsZV9CXzJfbHV0X2Fic1tjb2RlcG9pbnRdO2lmKGNvZGVzKXtyZXR1cm4gY29kZXN9dmFyIHNoaWZ0PVRhYmxlX0JfMl9sdXRfcmVsW2NvZGVwb2ludF07aWYoc2hpZnQpe3JldHVybltjb2RlcG9pbnQrc2hpZnRbMF1dfXZhciBjb21wbGV4PVRhYmxlX0JfMl9jb21wbGV4W2NvZGVwb2ludF07aWYoY29tcGxleCl7cmV0dXJuIGNvbXBsZXh9cmV0dXJuIG51bGx9ZXhwb3J0cy5fbmFtZXByZXBUYWJsZUIyPV9uYW1lcHJlcFRhYmxlQjI7ZnVuY3Rpb24gX25hbWVwcmVwVGFibGVDKGNvZGVwb2ludCl7cmV0dXJuISFtYXRjaE1hcChjb2RlcG9pbnQsVGFibGVfQ19yYW5nZXMpfWV4cG9ydHMuX25hbWVwcmVwVGFibGVDPV9uYW1lcHJlcFRhYmxlQztmdW5jdGlvbiBuYW1lcHJlcCh2YWx1ZSl7aWYodmFsdWUubWF0Y2goL15bYS16MC05LV0qJC9pKSYmdmFsdWUubGVuZ3RoPD01OSl7cmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCl9dmFyIGNvZGVzPSgwLHV0ZjgudG9VdGY4Q29kZVBvaW50cykodmFsdWUpO2NvZGVzPWZsYXR0ZW4oY29kZXMubWFwKGZ1bmN0aW9uKGNvZGUpe2lmKFRhYmxlX0JfMV9mbGFncy5pbmRleE9mKGNvZGUpPj0wKXtyZXR1cm5bXX1pZihjb2RlPj02NTAyNCYmY29kZTw9NjUwMzkpe3JldHVybltdfXZhciBjb2Rlc1RhYmxlQjI9X25hbWVwcmVwVGFibGVCMihjb2RlKTtpZihjb2Rlc1RhYmxlQjIpe3JldHVybiBjb2Rlc1RhYmxlQjJ9cmV0dXJuW2NvZGVdfSkpO2NvZGVzPSgwLHV0ZjgudG9VdGY4Q29kZVBvaW50cykoKDAsdXRmOC5fdG9VdGY4U3RyaW5nKShjb2RlcyksdXRmOC5Vbmljb2RlTm9ybWFsaXphdGlvbkZvcm0uTkZLQyk7Y29kZXMuZm9yRWFjaChmdW5jdGlvbihjb2RlKXtpZihfbmFtZXByZXBUYWJsZUMoY29kZSkpe3Rocm93IG5ldyBFcnJvcigiU1RSSU5HUFJFUF9DT05UQUlOU19QUk9ISUJJVEVEIil9fSk7Y29kZXMuZm9yRWFjaChmdW5jdGlvbihjb2RlKXtpZihfbmFtZXByZXBUYWJsZUExKGNvZGUpKXt0aHJvdyBuZXcgRXJyb3IoIlNUUklOR1BSRVBfQ09OVEFJTlNfVU5BU1NJR05FRCIpfX0pO3ZhciBuYW1lPSgwLHV0ZjguX3RvVXRmOFN0cmluZykoY29kZXMpO2lmKG5hbWUuc3Vic3RyaW5nKDAsMSk9PT0iLSJ8fG5hbWUuc3Vic3RyaW5nKDIsNCk9PT0iLS0ifHxuYW1lLnN1YnN0cmluZyhuYW1lLmxlbmd0aC0xKT09PSItIil7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGh5cGhlbiIpfXJldHVybiBuYW1lfWV4cG9ydHMubmFtZXByZXA9bmFtZXByZXB9KTt2YXIgaWRuYSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGlkbmEpO3ZhciBsaWIkOD1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMubmFtZXByZXA9ZXhwb3J0cy5wYXJzZUJ5dGVzMzJTdHJpbmc9ZXhwb3J0cy5mb3JtYXRCeXRlczMyU3RyaW5nPWV4cG9ydHMuVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtPWV4cG9ydHMuVXRmOEVycm9yUmVhc29uPWV4cG9ydHMuVXRmOEVycm9yRnVuY3M9ZXhwb3J0cy50b1V0ZjhTdHJpbmc9ZXhwb3J0cy50b1V0ZjhDb2RlUG9pbnRzPWV4cG9ydHMudG9VdGY4Qnl0ZXM9ZXhwb3J0cy5fdG9Fc2NhcGVkVXRmOFN0cmluZz12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImZvcm1hdEJ5dGVzMzJTdHJpbmciLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJ5dGVzMzIuZm9ybWF0Qnl0ZXMzMlN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywicGFyc2VCeXRlczMyU3RyaW5nIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBieXRlczMyLnBhcnNlQnl0ZXMzMlN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywibmFtZXByZXAiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGlkbmEubmFtZXByZXB9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl90b0VzY2FwZWRVdGY4U3RyaW5nIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB1dGY4Ll90b0VzY2FwZWRVdGY4U3RyaW5nfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJ0b1V0ZjhCeXRlcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdXRmOC50b1V0ZjhCeXRlc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywidG9VdGY4Q29kZVBvaW50cyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdXRmOC50b1V0ZjhDb2RlUG9pbnRzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJ0b1V0ZjhTdHJpbmciLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV0ZjgudG9VdGY4U3RyaW5nfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJVbmljb2RlTm9ybWFsaXphdGlvbkZvcm0iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV0ZjguVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJVdGY4RXJyb3JGdW5jcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdXRmOC5VdGY4RXJyb3JGdW5jc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiVXRmOEVycm9yUmVhc29uIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB1dGY4LlV0ZjhFcnJvclJlYXNvbn19KX0pO3ZhciBpbmRleCQ4PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiQ4KTt2YXIgc3RyaW5nPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuU3RyaW5nQ29kZXI9dm9pZCAwO3ZhciBTdHJpbmdDb2Rlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhTdHJpbmdDb2Rlcixfc3VwZXIpO2Z1bmN0aW9uIFN0cmluZ0NvZGVyKGxvY2FsTmFtZSl7cmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsInN0cmluZyIsbG9jYWxOYW1lKXx8dGhpc31TdHJpbmdDb2Rlci5wcm90b3R5cGUuZGVmYXVsdFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIiJ9O1N0cmluZ0NvZGVyLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24od3JpdGVyLHZhbHVlKXtyZXR1cm4gX3N1cGVyLnByb3RvdHlwZS5lbmNvZGUuY2FsbCh0aGlzLHdyaXRlciwoMCxsaWIkOC50b1V0ZjhCeXRlcykodmFsdWUpKX07U3RyaW5nQ29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyZWFkZXIpe3JldHVybigwLGxpYiQ4LnRvVXRmOFN0cmluZykoX3N1cGVyLnByb3RvdHlwZS5kZWNvZGUuY2FsbCh0aGlzLHJlYWRlcikpfTtyZXR1cm4gU3RyaW5nQ29kZXJ9KGJ5dGVzLkR5bmFtaWNCeXRlc0NvZGVyKTtleHBvcnRzLlN0cmluZ0NvZGVyPVN0cmluZ0NvZGVyfSk7dmFyIHN0cmluZyQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHN0cmluZyk7dmFyIHR1cGxlPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuVHVwbGVDb2Rlcj12b2lkIDA7dmFyIFR1cGxlQ29kZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoVHVwbGVDb2Rlcixfc3VwZXIpO2Z1bmN0aW9uIFR1cGxlQ29kZXIoY29kZXJzLGxvY2FsTmFtZSl7dmFyIF90aGlzPXRoaXM7dmFyIGR5bmFtaWM9ZmFsc2U7dmFyIHR5cGVzPVtdO2NvZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGNvZGVyKXtpZihjb2Rlci5keW5hbWljKXtkeW5hbWljPXRydWV9dHlwZXMucHVzaChjb2Rlci50eXBlKX0pO3ZhciB0eXBlPSJ0dXBsZSgiK3R5cGVzLmpvaW4oIiwiKSsiKSI7X3RoaXM9X3N1cGVyLmNhbGwodGhpcywidHVwbGUiLHR5cGUsbG9jYWxOYW1lLGR5bmFtaWMpfHx0aGlzO190aGlzLmNvZGVycz1jb2RlcnM7cmV0dXJuIF90aGlzfVR1cGxlQ29kZXIucHJvdG90eXBlLmRlZmF1bHRWYWx1ZT1mdW5jdGlvbigpe3ZhciB2YWx1ZXM9W107dGhpcy5jb2RlcnMuZm9yRWFjaChmdW5jdGlvbihjb2Rlcil7dmFsdWVzLnB1c2goY29kZXIuZGVmYXVsdFZhbHVlKCkpfSk7dmFyIHVuaXF1ZU5hbWVzPXRoaXMuY29kZXJzLnJlZHVjZShmdW5jdGlvbihhY2N1bSxjb2Rlcil7dmFyIG5hbWU9Y29kZXIubG9jYWxOYW1lO2lmKG5hbWUpe2lmKCFhY2N1bVtuYW1lXSl7YWNjdW1bbmFtZV09MH1hY2N1bVtuYW1lXSsrfXJldHVybiBhY2N1bX0se30pO3RoaXMuY29kZXJzLmZvckVhY2goZnVuY3Rpb24oY29kZXIsaW5kZXgpe3ZhciBuYW1lPWNvZGVyLmxvY2FsTmFtZTtpZighbmFtZXx8dW5pcXVlTmFtZXNbbmFtZV0hPT0xKXtyZXR1cm59aWYobmFtZT09PSJsZW5ndGgiKXtuYW1lPSJfbGVuZ3RoIn1pZih2YWx1ZXNbbmFtZV0hPW51bGwpe3JldHVybn12YWx1ZXNbbmFtZV09dmFsdWVzW2luZGV4XX0pO3JldHVybiBPYmplY3QuZnJlZXplKHZhbHVlcyl9O1R1cGxlQ29kZXIucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih3cml0ZXIsdmFsdWUpe3JldHVybigwLGFycmF5LnBhY2spKHdyaXRlcix0aGlzLmNvZGVycyx2YWx1ZSl9O1R1cGxlQ29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbihyZWFkZXIpe3JldHVybiByZWFkZXIuY29lcmNlKHRoaXMubmFtZSwoMCxhcnJheS51bnBhY2spKHJlYWRlcix0aGlzLmNvZGVycykpfTtyZXR1cm4gVHVwbGVDb2Rlcn0oYWJzdHJhY3RDb2Rlci5Db2Rlcik7ZXhwb3J0cy5UdXBsZUNvZGVyPVR1cGxlQ29kZXJ9KTt2YXIgdHVwbGUkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyh0dXBsZSk7dmFyIGFiaUNvZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5kZWZhdWx0QWJpQ29kZXI9ZXhwb3J0cy5BYmlDb2Rlcj12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiQ4LnZlcnNpb24pO3ZhciBwYXJhbVR5cGVCeXRlcz1uZXcgUmVnRXhwKC9eYnl0ZXMoWzAtOV0qKSQvKTt2YXIgcGFyYW1UeXBlTnVtYmVyPW5ldyBSZWdFeHAoL14odT9pbnQpKFswLTldKikkLyk7dmFyIEFiaUNvZGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQWJpQ29kZXIoY29lcmNlRnVuYyl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsImNvZXJjZUZ1bmMiLGNvZXJjZUZ1bmN8fG51bGwpfUFiaUNvZGVyLnByb3RvdHlwZS5fZ2V0Q29kZXI9ZnVuY3Rpb24ocGFyYW0pe3ZhciBfdGhpcz10aGlzO3N3aXRjaChwYXJhbS5iYXNlVHlwZSl7Y2FzZSJhZGRyZXNzIjpyZXR1cm4gbmV3IGFkZHJlc3MuQWRkcmVzc0NvZGVyKHBhcmFtLm5hbWUpO2Nhc2UiYm9vbCI6cmV0dXJuIG5ldyBib29sZWFuXzEuQm9vbGVhbkNvZGVyKHBhcmFtLm5hbWUpO2Nhc2Uic3RyaW5nIjpyZXR1cm4gbmV3IHN0cmluZy5TdHJpbmdDb2RlcihwYXJhbS5uYW1lKTtjYXNlImJ5dGVzIjpyZXR1cm4gbmV3IGJ5dGVzLkJ5dGVzQ29kZXIocGFyYW0ubmFtZSk7Y2FzZSJhcnJheSI6cmV0dXJuIG5ldyBhcnJheS5BcnJheUNvZGVyKHRoaXMuX2dldENvZGVyKHBhcmFtLmFycmF5Q2hpbGRyZW4pLHBhcmFtLmFycmF5TGVuZ3RoLHBhcmFtLm5hbWUpO2Nhc2UidHVwbGUiOnJldHVybiBuZXcgdHVwbGUuVHVwbGVDb2RlcigocGFyYW0uY29tcG9uZW50c3x8W10pLm1hcChmdW5jdGlvbihjb21wb25lbnQpe3JldHVybiBfdGhpcy5fZ2V0Q29kZXIoY29tcG9uZW50KX0pLHBhcmFtLm5hbWUpO2Nhc2UiIjpyZXR1cm4gbmV3IF9udWxsLk51bGxDb2RlcihwYXJhbS5uYW1lKX12YXIgbWF0Y2g9cGFyYW0udHlwZS5tYXRjaChwYXJhbVR5cGVOdW1iZXIpO2lmKG1hdGNoKXt2YXIgc2l6ZT1wYXJzZUludChtYXRjaFsyXXx8IjI1NiIpO2lmKHNpemU9PT0wfHxzaXplPjI1Nnx8c2l6ZSU4IT09MCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCAiK21hdGNoWzFdKyIgYml0IGxlbmd0aCIsInBhcmFtIixwYXJhbSl9cmV0dXJuIG5ldyBudW1iZXIuTnVtYmVyQ29kZXIoc2l6ZS84LG1hdGNoWzFdPT09ImludCIscGFyYW0ubmFtZSl9bWF0Y2g9cGFyYW0udHlwZS5tYXRjaChwYXJhbVR5cGVCeXRlcyk7aWYobWF0Y2gpe3ZhciBzaXplPXBhcnNlSW50KG1hdGNoWzFdKTtpZihzaXplPT09MHx8c2l6ZT4zMil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBieXRlcyBsZW5ndGgiLCJwYXJhbSIscGFyYW0pfXJldHVybiBuZXcgZml4ZWRCeXRlcy5GaXhlZEJ5dGVzQ29kZXIoc2l6ZSxwYXJhbS5uYW1lKX1yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCB0eXBlIiwidHlwZSIscGFyYW0udHlwZSl9O0FiaUNvZGVyLnByb3RvdHlwZS5fZ2V0V29yZFNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gMzJ9O0FiaUNvZGVyLnByb3RvdHlwZS5fZ2V0UmVhZGVyPWZ1bmN0aW9uKGRhdGEsYWxsb3dMb29zZSl7cmV0dXJuIG5ldyBhYnN0cmFjdENvZGVyLlJlYWRlcihkYXRhLHRoaXMuX2dldFdvcmRTaXplKCksdGhpcy5jb2VyY2VGdW5jLGFsbG93TG9vc2UpfTtBYmlDb2Rlci5wcm90b3R5cGUuX2dldFdyaXRlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgYWJzdHJhY3RDb2Rlci5Xcml0ZXIodGhpcy5fZ2V0V29yZFNpemUoKSl9O0FiaUNvZGVyLnByb3RvdHlwZS5nZXREZWZhdWx0VmFsdWU9ZnVuY3Rpb24odHlwZXMpe3ZhciBfdGhpcz10aGlzO3ZhciBjb2RlcnM9dHlwZXMubWFwKGZ1bmN0aW9uKHR5cGUpe3JldHVybiBfdGhpcy5fZ2V0Q29kZXIoZnJhZ21lbnRzLlBhcmFtVHlwZS5mcm9tKHR5cGUpKX0pO3ZhciBjb2Rlcj1uZXcgdHVwbGUuVHVwbGVDb2Rlcihjb2RlcnMsIl8iKTtyZXR1cm4gY29kZXIuZGVmYXVsdFZhbHVlKCl9O0FiaUNvZGVyLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24odHlwZXMsdmFsdWVzKXt2YXIgX3RoaXM9dGhpcztpZih0eXBlcy5sZW5ndGghPT12YWx1ZXMubGVuZ3RoKXtsb2dnZXIudGhyb3dFcnJvcigidHlwZXMvdmFsdWVzIGxlbmd0aCBtaXNtYXRjaCIsbGliLkxvZ2dlci5lcnJvcnMuSU5WQUxJRF9BUkdVTUVOVCx7Y291bnQ6e3R5cGVzOnR5cGVzLmxlbmd0aCx2YWx1ZXM6dmFsdWVzLmxlbmd0aH0sdmFsdWU6e3R5cGVzOnR5cGVzLHZhbHVlczp2YWx1ZXN9fSl9dmFyIGNvZGVycz10eXBlcy5tYXAoZnVuY3Rpb24odHlwZSl7cmV0dXJuIF90aGlzLl9nZXRDb2RlcihmcmFnbWVudHMuUGFyYW1UeXBlLmZyb20odHlwZSkpfSk7dmFyIGNvZGVyPW5ldyB0dXBsZS5UdXBsZUNvZGVyKGNvZGVycywiXyIpO3ZhciB3cml0ZXI9dGhpcy5fZ2V0V3JpdGVyKCk7Y29kZXIuZW5jb2RlKHdyaXRlcix2YWx1ZXMpO3JldHVybiB3cml0ZXIuZGF0YX07QWJpQ29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbih0eXBlcyxkYXRhLGxvb3NlKXt2YXIgX3RoaXM9dGhpczt2YXIgY29kZXJzPXR5cGVzLm1hcChmdW5jdGlvbih0eXBlKXtyZXR1cm4gX3RoaXMuX2dldENvZGVyKGZyYWdtZW50cy5QYXJhbVR5cGUuZnJvbSh0eXBlKSl9KTt2YXIgY29kZXI9bmV3IHR1cGxlLlR1cGxlQ29kZXIoY29kZXJzLCJfIik7cmV0dXJuIGNvZGVyLmRlY29kZSh0aGlzLl9nZXRSZWFkZXIoKDAsbGliJDEuYXJyYXlpZnkpKGRhdGEpLGxvb3NlKSl9O3JldHVybiBBYmlDb2Rlcn0oKTtleHBvcnRzLkFiaUNvZGVyPUFiaUNvZGVyO2V4cG9ydHMuZGVmYXVsdEFiaUNvZGVyPW5ldyBBYmlDb2Rlcn0pO3ZhciBhYmlDb2RlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGFiaUNvZGVyKTt2YXIgaWRfMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuaWQ9dm9pZCAwO2Z1bmN0aW9uIGlkKHRleHQpe3JldHVybigwLGxpYiQ0LmtlY2NhazI1NikoKDAsbGliJDgudG9VdGY4Qnl0ZXMpKHRleHQpKX1leHBvcnRzLmlkPWlkfSk7dmFyIGlkPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGlkXzEpO3ZhciBfdmVyc2lvbiRnPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249Imhhc2gvNS43LjAifSk7dmFyIF92ZXJzaW9uJGg9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kZyk7dmFyIGJyb3dzZXJCYXNlNjQ9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmVuY29kZT1leHBvcnRzLmRlY29kZT12b2lkIDA7ZnVuY3Rpb24gZGVjb2RlKHRleHREYXRhKXt0ZXh0RGF0YT1hdG9iKHRleHREYXRhKTt2YXIgZGF0YT1bXTtmb3IodmFyIGk9MDtpPHRleHREYXRhLmxlbmd0aDtpKyspe2RhdGEucHVzaCh0ZXh0RGF0YS5jaGFyQ29kZUF0KGkpKX1yZXR1cm4oMCxsaWIkMS5hcnJheWlmeSkoZGF0YSl9ZXhwb3J0cy5kZWNvZGU9ZGVjb2RlO2Z1bmN0aW9uIGVuY29kZShkYXRhKXtkYXRhPSgwLGxpYiQxLmFycmF5aWZ5KShkYXRhKTt2YXIgdGV4dERhdGE9IiI7Zm9yKHZhciBpPTA7aTxkYXRhLmxlbmd0aDtpKyspe3RleHREYXRhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGRhdGFbaV0pfXJldHVybiBidG9hKHRleHREYXRhKX1leHBvcnRzLmVuY29kZT1lbmNvZGV9KTt2YXIgYnJvd3NlckJhc2U2NCQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGJyb3dzZXJCYXNlNjQpO3ZhciBsaWIkOT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuZW5jb2RlPWV4cG9ydHMuZGVjb2RlPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZGVjb2RlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBicm93c2VyQmFzZTY0LmRlY29kZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZW5jb2RlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBicm93c2VyQmFzZTY0LmVuY29kZX19KX0pO3ZhciBpbmRleCQ5PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiQ5KTt2YXIgZGVjb2Rlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMucmVhZF9lbW9qaV90cmllPWV4cG9ydHMucmVhZF96ZXJvX3Rlcm1pbmF0ZWRfYXJyYXk9ZXhwb3J0cy5yZWFkX21hcHBlZF9tYXA9ZXhwb3J0cy5yZWFkX21lbWJlcl9hcnJheT1leHBvcnRzLnNpZ25lZD1leHBvcnRzLnJlYWRfY29tcHJlc3NlZF9wYXlsb2FkPWV4cG9ydHMucmVhZF9wYXlsb2FkPWV4cG9ydHMuZGVjb2RlX2FyaXRobWV0aWM9dm9pZCAwO2Z1bmN0aW9uIGZsYXQoYXJyYXksZGVwdGgpe2lmKGRlcHRoPT1udWxsKXtkZXB0aD0xfXZhciByZXN1bHQ9W107dmFyIGZvckVhY2g9cmVzdWx0LmZvckVhY2g7dmFyIGZsYXREZWVwPWZ1bmN0aW9uKGFycixkZXB0aCl7Zm9yRWFjaC5jYWxsKGFycixmdW5jdGlvbih2YWwpe2lmKGRlcHRoPjAmJkFycmF5LmlzQXJyYXkodmFsKSl7ZmxhdERlZXAodmFsLGRlcHRoLTEpfWVsc2V7cmVzdWx0LnB1c2godmFsKX19KX07ZmxhdERlZXAoYXJyYXksZGVwdGgpO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gZnJvbUVudHJpZXMoYXJyYXkpe3ZhciByZXN1bHQ9e307Zm9yKHZhciBpPTA7aTxhcnJheS5sZW5ndGg7aSsrKXt2YXIgdmFsdWU9YXJyYXlbaV07cmVzdWx0W3ZhbHVlWzBdXT12YWx1ZVsxXX1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGRlY29kZV9hcml0aG1ldGljKGJ5dGVzKXt2YXIgcG9zPTA7ZnVuY3Rpb24gdTE2KCl7cmV0dXJuIGJ5dGVzW3BvcysrXTw8OHxieXRlc1twb3MrK119dmFyIHN5bWJvbF9jb3VudD11MTYoKTt2YXIgdG90YWw9MTt2YXIgYWNjPVswLDFdO2Zvcih2YXIgaT0xO2k8c3ltYm9sX2NvdW50O2krKyl7YWNjLnB1c2godG90YWwrPXUxNigpKX12YXIgc2tpcD11MTYoKTt2YXIgcG9zX3BheWxvYWQ9cG9zO3Bvcys9c2tpcDt2YXIgcmVhZF93aWR0aD0wO3ZhciByZWFkX2J1ZmZlcj0wO2Z1bmN0aW9uIHJlYWRfYml0KCl7aWYocmVhZF93aWR0aD09MCl7cmVhZF9idWZmZXI9cmVhZF9idWZmZXI8PDh8Ynl0ZXNbcG9zKytdO3JlYWRfd2lkdGg9OH1yZXR1cm4gcmVhZF9idWZmZXI+Pi0tcmVhZF93aWR0aCYxfXZhciBOPTMxO3ZhciBGVUxMPU1hdGgucG93KDIsTik7dmFyIEhBTEY9RlVMTD4+PjE7dmFyIFFSVFI9SEFMRj4+MTt2YXIgTUFTSz1GVUxMLTE7dmFyIHJlZ2lzdGVyPTA7Zm9yKHZhciBpPTA7aTxOO2krKylyZWdpc3Rlcj1yZWdpc3Rlcjw8MXxyZWFkX2JpdCgpO3ZhciBzeW1ib2xzPVtdO3ZhciBsb3c9MDt2YXIgcmFuZ2U9RlVMTDt3aGlsZSh0cnVlKXt2YXIgdmFsdWU9TWF0aC5mbG9vcigoKHJlZ2lzdGVyLWxvdysxKSp0b3RhbC0xKS9yYW5nZSk7dmFyIHN0YXJ0PTA7dmFyIGVuZD1zeW1ib2xfY291bnQ7d2hpbGUoZW5kLXN0YXJ0PjEpe3ZhciBtaWQ9c3RhcnQrZW5kPj4+MTtpZih2YWx1ZTxhY2NbbWlkXSl7ZW5kPW1pZH1lbHNle3N0YXJ0PW1pZH19aWYoc3RhcnQ9PTApYnJlYWs7c3ltYm9scy5wdXNoKHN0YXJ0KTt2YXIgYT1sb3crTWF0aC5mbG9vcihyYW5nZSphY2Nbc3RhcnRdL3RvdGFsKTt2YXIgYj1sb3crTWF0aC5mbG9vcihyYW5nZSphY2Nbc3RhcnQrMV0vdG90YWwpLTE7d2hpbGUoKChhXmIpJkhBTEYpPT0wKXtyZWdpc3Rlcj1yZWdpc3Rlcjw8MSZNQVNLfHJlYWRfYml0KCk7YT1hPDwxJk1BU0s7Yj1iPDwxJk1BU0t8MX13aGlsZShhJn5iJlFSVFIpe3JlZ2lzdGVyPXJlZ2lzdGVyJkhBTEZ8cmVnaXN0ZXI8PDEmTUFTSz4+PjF8cmVhZF9iaXQoKTthPWE8PDFeSEFMRjtiPShiXkhBTEYpPDwxfEhBTEZ8MX1sb3c9YTtyYW5nZT0xK2ItYX12YXIgb2Zmc2V0PXN5bWJvbF9jb3VudC00O3JldHVybiBzeW1ib2xzLm1hcChmdW5jdGlvbih4KXtzd2l0Y2goeC1vZmZzZXQpe2Nhc2UgMzpyZXR1cm4gb2Zmc2V0KzY1NzkyKyhieXRlc1twb3NfcGF5bG9hZCsrXTw8MTZ8Ynl0ZXNbcG9zX3BheWxvYWQrK108PDh8Ynl0ZXNbcG9zX3BheWxvYWQrK10pO2Nhc2UgMjpyZXR1cm4gb2Zmc2V0KzI1NisoYnl0ZXNbcG9zX3BheWxvYWQrK108PDh8Ynl0ZXNbcG9zX3BheWxvYWQrK10pO2Nhc2UgMTpyZXR1cm4gb2Zmc2V0K2J5dGVzW3Bvc19wYXlsb2FkKytdO2RlZmF1bHQ6cmV0dXJuIHgtMX19KX1leHBvcnRzLmRlY29kZV9hcml0aG1ldGljPWRlY29kZV9hcml0aG1ldGljO2Z1bmN0aW9uIHJlYWRfcGF5bG9hZCh2KXt2YXIgcG9zPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHZbcG9zKytdfX1leHBvcnRzLnJlYWRfcGF5bG9hZD1yZWFkX3BheWxvYWQ7ZnVuY3Rpb24gcmVhZF9jb21wcmVzc2VkX3BheWxvYWQoYnl0ZXMpe3JldHVybiByZWFkX3BheWxvYWQoZGVjb2RlX2FyaXRobWV0aWMoYnl0ZXMpKX1leHBvcnRzLnJlYWRfY29tcHJlc3NlZF9wYXlsb2FkPXJlYWRfY29tcHJlc3NlZF9wYXlsb2FkO2Z1bmN0aW9uIHNpZ25lZChpKXtyZXR1cm4gaSYxP35pPj4xOmk+PjF9ZXhwb3J0cy5zaWduZWQ9c2lnbmVkO2Z1bmN0aW9uIHJlYWRfY291bnRzKG4sbmV4dCl7dmFyIHY9QXJyYXkobik7Zm9yKHZhciBpPTA7aTxuO2krKyl2W2ldPTErbmV4dCgpO3JldHVybiB2fWZ1bmN0aW9uIHJlYWRfYXNjZW5kaW5nKG4sbmV4dCl7dmFyIHY9QXJyYXkobik7Zm9yKHZhciBpPTAseD0tMTtpPG47aSsrKXZbaV09eCs9MStuZXh0KCk7cmV0dXJuIHZ9ZnVuY3Rpb24gcmVhZF9kZWx0YXMobixuZXh0KXt2YXIgdj1BcnJheShuKTtmb3IodmFyIGk9MCx4PTA7aTxuO2krKyl2W2ldPXgrPXNpZ25lZChuZXh0KCkpO3JldHVybiB2fWZ1bmN0aW9uIHJlYWRfbWVtYmVyX2FycmF5KG5leHQsbG9va3VwKXt2YXIgdj1yZWFkX2FzY2VuZGluZyhuZXh0KCksbmV4dCk7dmFyIG49bmV4dCgpO3ZhciB2WD1yZWFkX2FzY2VuZGluZyhuLG5leHQpO3ZhciB2Tj1yZWFkX2NvdW50cyhuLG5leHQpO2Zvcih2YXIgaT0wO2k8bjtpKyspe2Zvcih2YXIgaj0wO2o8dk5baV07aisrKXt2LnB1c2godlhbaV0rail9fXJldHVybiBsb29rdXA/di5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIGxvb2t1cFt4XX0pOnZ9ZXhwb3J0cy5yZWFkX21lbWJlcl9hcnJheT1yZWFkX21lbWJlcl9hcnJheTtmdW5jdGlvbiByZWFkX21hcHBlZF9tYXAobmV4dCl7dmFyIHJldD1bXTt3aGlsZSh0cnVlKXt2YXIgdz1uZXh0KCk7aWYodz09MClicmVhaztyZXQucHVzaChyZWFkX2xpbmVhcl90YWJsZSh3LG5leHQpKX13aGlsZSh0cnVlKXt2YXIgdz1uZXh0KCktMTtpZih3PDApYnJlYWs7cmV0LnB1c2gocmVhZF9yZXBsYWNlbWVudF90YWJsZSh3LG5leHQpKX1yZXR1cm4gZnJvbUVudHJpZXMoZmxhdChyZXQpKX1leHBvcnRzLnJlYWRfbWFwcGVkX21hcD1yZWFkX21hcHBlZF9tYXA7ZnVuY3Rpb24gcmVhZF96ZXJvX3Rlcm1pbmF0ZWRfYXJyYXkobmV4dCl7dmFyIHY9W107d2hpbGUodHJ1ZSl7dmFyIGk9bmV4dCgpO2lmKGk9PTApYnJlYWs7di5wdXNoKGkpfXJldHVybiB2fWV4cG9ydHMucmVhZF96ZXJvX3Rlcm1pbmF0ZWRfYXJyYXk9cmVhZF96ZXJvX3Rlcm1pbmF0ZWRfYXJyYXk7ZnVuY3Rpb24gcmVhZF90cmFuc3Bvc2VkKG4sdyxuZXh0KXt2YXIgbT1BcnJheShuKS5maWxsKHVuZGVmaW5lZCkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuW119KTtmb3IodmFyIGk9MDtpPHc7aSsrKXtyZWFkX2RlbHRhcyhuLG5leHQpLmZvckVhY2goZnVuY3Rpb24oeCxqKXtyZXR1cm4gbVtqXS5wdXNoKHgpfSl9cmV0dXJuIG19ZnVuY3Rpb24gcmVhZF9saW5lYXJfdGFibGUodyxuZXh0KXt2YXIgZHg9MStuZXh0KCk7dmFyIGR5PW5leHQoKTt2YXIgdk49cmVhZF96ZXJvX3Rlcm1pbmF0ZWRfYXJyYXkobmV4dCk7dmFyIG09cmVhZF90cmFuc3Bvc2VkKHZOLmxlbmd0aCwxK3csbmV4dCk7cmV0dXJuIGZsYXQobS5tYXAoZnVuY3Rpb24odixpKXt2YXIgeD12WzBdLHlzPXYuc2xpY2UoMSk7cmV0dXJuIEFycmF5KHZOW2ldKS5maWxsKHVuZGVmaW5lZCkubWFwKGZ1bmN0aW9uKF8sail7dmFyIGpfZHk9aipkeTtyZXR1cm5beCtqKmR4LHlzLm1hcChmdW5jdGlvbih5KXtyZXR1cm4geStqX2R5fSldfSl9KSl9ZnVuY3Rpb24gcmVhZF9yZXBsYWNlbWVudF90YWJsZSh3LG5leHQpe3ZhciBuPTErbmV4dCgpO3ZhciBtPXJlYWRfdHJhbnNwb3NlZChuLDErdyxuZXh0KTtyZXR1cm4gbS5tYXAoZnVuY3Rpb24odil7cmV0dXJuW3ZbMF0sdi5zbGljZSgxKV19KX1mdW5jdGlvbiByZWFkX2Vtb2ppX3RyaWUobmV4dCl7dmFyIHNvcnRlZD1yZWFkX21lbWJlcl9hcnJheShuZXh0KS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEtYn0pO3JldHVybiByZWFkKCk7ZnVuY3Rpb24gcmVhZCgpe3ZhciBicmFuY2hlcz1bXTt3aGlsZSh0cnVlKXt2YXIga2V5cz1yZWFkX21lbWJlcl9hcnJheShuZXh0LHNvcnRlZCk7aWYoa2V5cy5sZW5ndGg9PTApYnJlYWs7YnJhbmNoZXMucHVzaCh7c2V0Om5ldyBTZXQoa2V5cyksbm9kZTpyZWFkKCl9KX1icmFuY2hlcy5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIuc2V0LnNpemUtYS5zZXQuc2l6ZX0pO3ZhciB0ZW1wPW5leHQoKTt2YXIgdmFsaWQ9dGVtcCUzO3RlbXA9dGVtcC8zfDA7dmFyIGZlMGY9ISEodGVtcCYxKTt0ZW1wPj49MTt2YXIgc2F2ZT10ZW1wPT0xO3ZhciBjaGVjaz10ZW1wPT0yO3JldHVybnticmFuY2hlczpicmFuY2hlcyx2YWxpZDp2YWxpZCxmZTBmOmZlMGYsc2F2ZTpzYXZlLGNoZWNrOmNoZWNrfX19ZXhwb3J0cy5yZWFkX2Vtb2ppX3RyaWU9cmVhZF9lbW9qaV90cmllfSk7dmFyIGRlY29kZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhkZWNvZGVyKTt2YXIgaW5jbHVkZT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuZ2V0RGF0YT12b2lkIDA7ZnVuY3Rpb24gZ2V0RGF0YSgpe3JldHVybigwLGRlY29kZXIucmVhZF9jb21wcmVzc2VkX3BheWxvYWQpKCgwLGxpYiQ5LmRlY29kZSkoIkFFUUYyQU8yREVzQTJ3SXJBR3NCUkFCeEFOOEFad0NjQUV3QXFnQTBBR3dBVWdCeUFEY0FUQUFWQUZZQUlRQXlBQ0VBS0FBWUFGZ0FHd0FqQUJRQU1BQW1BRElBRkFBZkFCUUFLd0FUQUNvQURnQWJBQThBSFFBWUFCb0FHUUF4QURnQUxBQW9BRHdBRXdBOUFCTUFHZ0FSQUE0QUR3QVdBQk1BRmdBSUFBOEFIZ1FYQllNQTVCSEpBUzhKdEFZb0FlNEFFeG96aTBVQUgyMXRBYU1uQlQ4Q3JuSXlock1EaFJnRHlnSUJVQUVIY29GSFVQZThBWEJqQWV3Q2pnRFFSOElJQ0ljRWNRTHdBVFhDRGd6dkh3Qm1Cb0hOQXFzQmRCY1VBeWtnRGhBTVNoc2tNZ284QVk4anFBUWZBVUFmSHc4QkR3ODdNaW9HbENJUEJ3WkNhNEVMYXRNQUFNc3BKVmdzRGw4QUloY2tTZzhYQUhkdlR3QmNJUUVpRFQ0T1BoVXFieUVDQUVvQVMzNEFlajhZYng4M0pnVC9YdzhnSHhaLzd3OFJJQ3hQSEE5dkJ3K1BmdzhQSHdBUEZ2K2ZBc0F2Q2M4dkVyOGl2d0QvRVE4Qm9sOE9FQmEvQTc4aHJ3QVBDVTh2RVNOdnZ3V2ZId05mQVZvREhyK1pBQUVEMzRZYUFkSlBBSzdQTHdTRWdETEhBR28xUHo4UHZ4OWZVd01ycGI4Ty81OFZUekFQSUJvWEl5UUpORjhocHdJVkFUOFlHQVVBREROQmFYM1JBTW9tSkNnOUVoVWVBMjlNQUJzWkJUTU5KaXBqT2hjMTlnY0lEUjhiQndRSEVnZ0NXaTZESWdMdUFRWUErQkFGQ2hhM0E1WGlBRXNxTTdVRkZnRkxoQU1qRlRNWUUxS2xudzc0blJWQkcvQVNDbTBCWVJOL0Jyc1UzVm9XeStTMHZWOExReCt2TjhnRjJBQzJBSzVFQVd3QXBnWURLbUFBcm9RME5EUTBBVCtPQ2c3d0FBSUhSQWJwTmdWY0JWMEFQVEE1QmZiUEZnTUx6Y1lML1FxcUE4MmVCQUxLQ2pRQ2pxWUNodDAvazIrT0FzWFFBb1AzQVNUS0RnRHc2QUNLQVVZQ01wSUtKcFJhQUU0QTV3b21BQnpadnMwUkVFS2lBQ0lRQWQ1UWRBRUNBajRZd2cvd0dxWTJBVmdBWUFEWXZBb0NHQUV1YkEwZ3ZBWTJBTEFBYnBidnFweUVBR0FFcGdRQUpnQUc3Z0FnQUVBQ21naFVGd0NxQU1wQUlOUUl3QzREdGhSQUFQY3ljS2dBcG9JZEFCd0JmQ2lzQUJvQVR3QnFBU0lBdmhuU0JQOGFIL0VDZUFLWEFxNDBOamdEQlR3RllRVTZBWHMzb0FCZ0FENFhOZ21jQ1kxZUNsNXRJRlplVXFHZ3lvTkhBQmdBRVFBYUFCTndXUUFtQUJNQVRQTWEzVDM0QURsZHlwcm1NMU0yWG9jaVVRZ0x6dndBWFQzeEFCZ0FFUUFhQUJOd0lHRkFuQUREOEFBZ0FENEJCSld6YUNjSUFJRUJGTUFXd0tvQUFkcTlCV0FGNXdMUXBBTEV0UUFLVVNHa2FoUjRHbkpNK2dzQXdDZ2VGQWlVQUVDUTBCUXVMOEFBSUFBQUFES2VJaGVjbHZGcVFBQUVUcjRpQU14SUFSTWdBTUlvSGhRSUFuMEUwcERRRkM0SGh6bm9BQUFBSUFJMkMwLzRsdkZxUUFBRVRnQkpKd1lDQXk0QUJnWUFGQUE4TUJLWUVINGVSaFRrQWpZZUZjZ0FDQVlBZUFCc09xeVE1Z1J3RGF5cXVnRWdhSUlBdGdvQUNnRG1FQUJtQkFXR21lNU9CSkpBMm00Y0Rlb0FtSVRXQVh3ck1nT2dBR3dCQ2g2Q0JYWUYxVHpnMXdLQUFGZGl1QUJSQUZ3QVhRQnNBRzhBZGdCckFIWUFid0NFQUhFd2Z4UUJWRTVURVFBRFZGaFRCd0JEQU5JTEFxY0N6Z0xUQXBRQ3JRTDZ2QUFNQUw4QVBMaE5CS2tFNmdsR0tUQVU0RHI0TjJFWUV3QkNrQUJLazhySEFiWUJtd0lvQWlVNEFqZi9BcTRDb3dDQUFOSUNoemdhTkJzQ3NUZ2VPRGNGWHJnQ2xRS2RBcVFCaVFHWUFxc0NzalRzTkhzZk5QQTBpeHNBV1RXaU9BTUZQRFFTTkNrMkJEWkhOb3cyVFRaVU5oazI4Sms5VnpJM1FrRW9Bb0lDb1FLd0FxY0FRQUF4QlY0RlhiUzlCVzQ3WWtJWFAxY2lVcXMwNURTL0Z3QUJVd0pXMTFlNm5IdVlabVNoL1JBWUE4b01Ldlo4S0FTb1VBSllXQUo2SUxBc0FaU29xanBnQTBvY0JJaG1EZ0RXQUFhd1JEUW9BQWN1QWo1aUFIQUJaaVIyQUlnaUhnQ2FBVTY4QUN4dUhBRzB5Z004TWlaSUFsZ0JkRjRHYWdKcUFQWk9IQU11QmdvQVRrWUFzQUJpQUhnQU1Mb0dEUGowSHBLRUJBQU9KZ0F1QUxnZ1RBSFdBZUFNRURiZDIwVWVnZTBBRHdBV0FEa0FRZ0E5T0hkKzJNVVFaQkJoQmdOTkRreHhQeFVRQXJFUHF3dnFFUm9NMWlyUTA5MEFOSzRIOEFOWUIvQURXQU5ZQi9BSDhBTllCL0FEV0FOWUExZ0RXQndQOEIvWXhSQmtEMDBFY2dXVEJaQUUyd2lJSms0UmhnY3RDTmRVRW5RakhFd0RTZ0VCSXlwSklUdVlNeEFsUjB3UlRRZ0lBVFpIYkt4OVBRTk1NYkJVK3BDbkE5QXlWRGx4QmdNZWRoS2xBQzhQZUNFMXVrNkRla3h4cFFwUVQ3Tlg5d0JGQmdBU3F3QVM1Z0JKRFNnQVVDd0dQUUJJNHpUWUFCTkdBRTJiQUUzS0FFeGRHQUJLYUFiZ0FGQlhBRkNPQUZCSkFCSTJTV2RPYkFMRE9xMC8vUW9tQ1podndIZFRCa0lRSENlbUVQZ01OQUcyQVR3TjdrdlpCUElHUEFUS0gzNFpHZy9PbFowSXBpM2VETzRtNUM2aWdGc2o5aXFFQmU1TDlUemVDMDVSYVE5YUMyWUo1RHBrZ1U4RElnRU9Jb3dLM2cwNkNHNFE5QXJLYkEzbUVVWUhPZ1BXU1pzQXBnY0NDeElkTmhXMkpoRmlyUXNLT1hnRy9CcjNDNUFtc0JNcWV2MEYxQm9pQms0Qktoc0FBTkF1NklXeFdqSmNIVTlnQmdRTEppUElGS2xRSVEwbVFMaDRTUm9jQnhZbHFnS1NRM0ZLaUZFM0hwUWg5encrRFdjdUZGRjlCL1k4QmhsUUM0SThuMGFzUlE4UjB6Nk9QVWtpU2t3dEJEYUFMREFuakFuUUQ0WU11bnh6QVZvSklnbXlESElUTWhFWU44WUlPZ2NhTHBjbEp4WUlJa2FXWUpzRStLQUQ5QlBTQXd3RlFBbENCeFFEdGh3dUV5OFZLZ1VPZ1NYWUF2UTIxaTYwQXBCV2dRRVlCY3dQSmgvZ0VGRkg0UTdxQ0p3Q1pnT0VKZXdBTGhVaUFCZ2luQWhFWkFCZ2o5bFRCaTdNQ01ocWJTTjFBMmdVNkdJUmRBZVNEbGdIcUJ3MEZjQWM0bkRKWGd5R0NTaWtzQWxjQVhZSm1nRmdCT1FJQ2pWY2pLRWdRbWRVaTFrWW5DQmlRVUJkL1FJeURHWVZvRVMraDNrQ2pBOXNFaHdCTmdGMEJ6b05BZ0o0RWU0UmJCQ1dDT3lHQlRXMk0vazZKZ1JRSVlRZ0Vnb29BMUJzendzb0p2b00rV29CcEJKakF3MDBQbmZ2WjZ4Z3R5VVgvZ2NhTXNaQllTSHlDNU5Qemd5ZEdzSVlRMVF2R2VVSHdBUDBHdlFuNjBGWUJnQURwQVFVT2s0ejd3UytDMm9JakFsQUFFb09wQmdIMkJockNuS00wUUV5akFHNG1nTllrb1FDY0pBR09BY01BR2dNaUFWNjVnQWVBcWdJcEFBR0FOQURXQUE2QXE0SG5nQWFBSVpDQVQ0REtEQUJJdVlDa0FPVUNETE1BWll3QWZRcUJCekVEQllBK0RodVN3TERzZ0tBYTJhakJkNVpBbzhDU2pZQlRpWUVCazlJVWdPd2N1SUEzQUJNQmhUZ1NBRVdyRXZNRytSRUFlQndMQURJQVB3QUJqWUhCa0lCemdIMGJnQzRBV0FMTWdtanRMWUJUdW9xQUlRQUZtd0IyQUtLQU40QU5nQ0E4Z0ZVQUU0Rld2b0YxQUpRU2dFU01oa3NXR0lCdkFNZ0FUUUJEZ0I2QnN5T3Bzb0lJQVJ1QjlRQ0VCd1Y0Z0x2THdlMkFnTWk0QlBPUXNZQ3ZkOVdBRElYVXU1ZVp3cW9DcWRlYUFDMFlUUUhNbk05VVFBUEg2ayt5QWR5L0JaSWlRSW1Td0JRNWdCUVF6U2FOVEZXU1RZQnB3R3FLUUszOEFGdHF3Qkkvd0szN2dLM3JRSzNzQUs2MjgwQzBnSzMzQUszenhBQVVFSUFVRDlTa2xLREFyZWtBcnc1QUVRQXpBSENPMTQ3V1R0ZU8xazdYanRaTzE0N1dUdGVPMWtEbUNoWUkwM0FWVTBvSnFrS2JWOUdZZXdNcHczVlJNazZTaFBjWUZKZ014UEpMYmdVd2hYUEpWY1pQaHE5SndZbDVWVUtEd1V0MUdZeENDMDBkaGU5QUVBcGFZTkNZNGNlTVFwTUhPaFRrbFQ1TFJ3QXNrdWpNN0FOclJzV1JFRUZTSFh1WWlzV0R3b2pBbVNDQW1KRFhFNndYRGNoQXFINEFtaVpBbVlLQXArRk9Cd01BbVk4QW1ZbkJHOEVnQU4vRkFOK2t6a0hPWGdZT1lNNkpDUUNiQjRDTWpjNEN3SnR5QUp0ci9DTEFEUm9SaXdCYUFEZkFPSUFTd1lIbVF5T0FQOE13d0FPdGdKM01BSjJvMEFDZVV4RUFuaTdIbDNjUmE5RzlBSjhRQUo2eVFKOUNnSjg4VWdCU0g1a0pRQXNGa2xaU2x3V0dFck5BdEVDQXRETlN5Z0RpRkFEaCtkRXhwRXpBdktpWFFRREE2OUx6MHd1SmdUUVRVMU5zQUtMUUFLSzJjSWNDQjVFYUFhNEFvNDRBbzVkUVppQ0FvN2FBbzVkZVZHMVV6WUxVdFZVaGdLVC9BS1REUURxQUIxVkgxV3dWZEVITEJ3cGxvY3k0bmhuUlR3NkFwZWdBdSt6V0NLcEFGb21BcGFRQXBaOW5RQ3FXYTFhQ29KT0FEd0NscllDbGs5Y1JWelNBcG5NQXBsbFhNdGRDQm9Dbkp3NXd6cWVBcHdYQXArY0FwNjVpd0FlRURJckVBS2Q4Z0tla3dDMlBtRTFZZkFDbnRRQ29HOEJxZ0tlb0NBQ25rK21ZOGxrS0NZc0FpZXdBaVovQXFEOEFxQk4yQUttTUFLbHp3S29BQUIrQXFmemFIMW9zZ0FFU21vZGF0SUNyT1FDcks4Q3JXZ0NyUU1DVng0Q1ZkMENzZUxZQXg5UGJKZ0NzcjRPQXJMcEdHemhiV1J0U1dBREpjNEN0bDA4UUc2UkF5bEdBcmhmQXJsSUZnSzVLM2h3TjNEaUFyMGFBeTJ6QXpJU0FyNkpjZ01ETTNJQ3ZodHpJM05RQXNQTUFzTUZjNE4wVERaR2RPRURQS2dEUEpzRFBjQUN4WDBDeGtnQ3hoR0tBc2hxVWdMSVJRTEpVQUxKTHdKa25nTGQwM2g2WW5pdmVTWkwwUU1ZcEdjREFtSDFHZlNWSlhzTVhwTmV2QklDejJ3Q3oyMHdURlRUOUJTZ0FNZXVBczkwQVNyckEwNFRma3dHQXR3b0F0dUxBdEpRQTFKZEExTmdBUUlEVlkyQWlrQUJ6QmZ1WVVaMkFJTFBnNDRDMnNnQzJkK0VFWVJLcHowRGhxWUFNQU5rRDRaeVd2b0FWZ0xmWmdMZXVYUjRBdUl3N1JVQjh6RW9BZlNjQWZMVGlBTHI5QUxwY1hvQUF1cjZBdXJsQVBwSUFib0M3b29DNjUyV3E1Y0VBdTVBQTRYaG1IcHc0WEdpQXZNRUFHb0RqaGVabEFMM0ZBT1Jid09TaUFMM21RTDUyZ0w0WjVvZG1xeThPSnNmQTUyRUF2NzdBUndBT3A4ZG43UURCWTREcG1zRHB0b0Ewc1lEQm11aGlhSUdDZ01NU2dGZ0FTQUN0Z05HQUp3RWdMcG9CZ0M4Qkd6QUVvd2NnZ0NFREM2a2Rqb0FKQU0wQzVJS1JvQUJaQ2dpQUl6dzNBWUJMQUNrZm5nOW9naWdrZ05tV0FONkFFUUN2cmtFVnFUR0F3Q3NCUmJBQSs0aVFrTUNIUjA3MmpJMlBUYlVOc2syUmpZNU52QTIzVFpLTmlVM0VEY1pONUkrUlR4RFJUQkNKa0s1VkJZS0ZoWmZ3UUNXeWdVM0FKQlJIcHUrT3l0Z054YTYxQTQwR01zWWpzbjdCVndGWFFWY0JWMEZhQVZkQlZ3RlhRVmNCVjBGWEFWZEJWd0ZYVXNhQ055S0FLNEFBUVVIQndLVTdvSUNvVzFlN2pBRXpnUHhBK1lEd2dDa0JGREF3QURBQkt6QUFPeEZMaGl0QTFVRlREZXlQa00rYmo1MVFrUkN1d1RRV1dROFgrMEFXQll6c0FDTkE4eHd6QUdtN0VaL1Fpc29DVEFiTERzNmZuTGZiOEgyR2Njc2JnRncxM00xSEFWa0JXL0p4c205Q05STzhFOEZERDBGQlF3OUZrY0NsT1lDb01GZWdwRGZBRGdjTWlBMkFKUUFDQjhBc2lnS0FJeklFQUpLZUJJQXBZNXlQWlFJQUtRaUhiNGZ2ajVCS1NSUFFyWkNPejBvWHl4Z095d2ZLQW5HYmdNQ2xRYUNBa0lMWGdkZUNEOUlJR1VnUWo1ZlBvWStkVDUyQW81Q00wZEFYOUJUVkc5U0R6RndXVFFBYnhCekpGL2xPRUlRUWdsQ0NrS0pJQWxzNUFjQ2xRSUNvS1BNT0RFRnhoaTZLU0FiaXlmSVJyTWp0Q2dkV0NBa1BsRkJJaXRDc0VKUnpBYk1BVi9PRXlRekRnME9BUVFFSjM2aTMyOC9NazlBeWJESnNRbHEzdERSQXBVS0FrRnpYZjFkL2o5dUFMWVA2aENvRmdDVEdEOGtQc0ZLUWlvYnJtMCt6ajBLU0Q4a1BuVkNSQndNRHlKUlRIRmdNVEphNXJ3WFFpUTJZZkkvSkQ3Qk1FSkVIR0lOVHc0VE9GbElSendKTzBpY01RcHlQeVErd3pKQ1JCdjZEVmduS0IwMU5nVUtqMmJ3WXpNcUNvQmt6bkJnRUYrellESW9jd1JJWCtOZ0hqNEhJQ05maDJDNEN3ZHdGV3BURy9sZ1VoWUdBd1JmdjJUczhtQWFYelZnbWwvWFlJSmZ1V0M0SEkxZ1VGOXBZSlpnTVI2aWxRSE1BT3dMQWxEUmVmQzBpbjRBWEFFSkE2UGpDd2MwSWFtT0FOTU1DQUVDUlFERk5SVFpCZ2QrQ3dRbFJBK3I2K2dMQkRFRkJud1VCWGdLQVRJQXJ3QUdSQUFIQTNjRGRBTjJBM2tEZHdOOUEzb0RkUU43QTMwRGZBTjRBM29EZlFBWUVBQWxBdFlBU3dNQVVBRnNBSGNLQUhjQW1nQjNBSFVBZFFCMkFIVnU4VWdBeWdEQUFIY0FkUUIxQUhZQWRRQUxDZ0IzQUFzQW1nQjNBQXNDT3dCM0FBdHU4VWdBeWdEQUFIZ0tBSm9BZHdCM0FIVUFkUUIyQUhVQWVBQjFBSFVBZGdCMWJ2RklBTW9Bd0FBTENnQ2FBSGNBQ3dCM0FBc0NPd0IzQUF0dThVZ0F5Z0RBQUg0QUN3R2dBTGNCcHdDNkFhaGRBdTBDT3dMdGJ2RklBTW9Bd0FBTENnQ2FBdTBBQ3dMdEFBc0NPd0x0QUF0dThVZ0F5Z0RBQTI0QUN3TnZBQXUwVnNRQUF6c0FBQkNralVJcEFBc0FVSXVzT2dnV2NnTWVCeFZzR3dMNjdVLzJIbHptV09FZU9nQUxBU3Z1QUFzZUFmcEtVcG5wR2dZSkRDSVpNNll5QVJVRTlUaHFBRDVpWFFnbkFKWUpQbk96dzBaQUVaeEVLc0lBa0E0RGhBSG5UQUlEeHhVREswbHhDUWxQWWdJdklRVllKUUJWcUUxR2FrVUFLR1lpRFRvU0JBMUV0QVlBWFFKWUFJRjhHZ01IUnlBQUlBak9lOVluY2VrUkFBMEtBQ1VyandFN0F5YzZBQVlXQXFhaUtHNE1jRWNxQU5vTjMrTWc5VHdDQmhJa3VDbnkrSndVUTI5TDAwOEpsdVJ4dTNLK29BZHFpSE9xRkgwQUc1U1VJZlVKNVN4Q0dmeGRpcFJ6cVRtVDRWNVpiK3IxVW80Vm0rTnFTU0VsMm1OdlIySmhJYThTcFlPNm50ZHdGWEhDV1RDSzhmMitIeG83dWlHM2RyRHljQXVLSU1QNWJoaTA2QUNucUFySDFyejRScWcvL2xtNlNnSkdFVmJGOXhKSElTYVI2SHhxeFNua3c2c2hEbmVsSEtORWZHVVhTSlJKMUdjc210SncyNXhyWk1ESzlnWFNtMS9ZTWtkWDQvNk5LWU9kdGsvTlEzL05uREFTalRjM2ZQaklqVy81c1ZmVk9iWDJvVERXa3IxZEY5ZjNreEJzRDMvM2FRTzhoUGZSeitlMHVFaUpxdDExNjFncml1N2d6OGhERHd0cHkrRitCV3RlZm5LSFpQQXhjWm9XYm56bmhKcHkwZTg0MmozNmJjTnpHbklFdXNnR1gwYThaeHNuamNTc1BEWjA5eVozNmZDUWJyaUhlUTcySlJNSUxObDZlUFBmMkhXb1Z3Z1dBbTFmYjNWMnNBWTArQjZyQVhxU3dQQmdzZVZtb3FzQlRTcm05MStYYXNNWVl5U0k4ZWVSeEgzWnZIa016M0JRNWFKM2lVVmJZUE5NMy83ZW1SdGpsc01ndi85VnlUc3l0L21LKzhmZ1dlVDZTb0ZhY2xYcW40MmRBSXN2QWFyRjV2Tk5XSHpLU2tLUS84SGZrNVpXSzdyOXlsaU9zb295QmpSaGZrSFA0UTJEa1dYUWk2RkcvOXIvSXdibWtWNVQ3SlNvcEhLbjFwSndtOXRiNU90MG95TjFaMm1QcEtYSFR4eDJubEswOGZLazFoRVlBOFdnVlZXTDVsZ3gwaVR2K0tkb2pKZVUyM1pEam1pdWJYT3hWWEpLS2kyV2p1aDJITFpPRkxpU0M3VGxzNVNNaDRmK1BqNnhVU3JOakZxTEdlaFJOQjhsQzBRU0xObWtKSngvd1NHM01uakU5VDFDa1B3Skkwd0gybGZ6d0VUSWlWcVV4ZzBkZnU1cTM5R3QraHdkY3hraGhOdlE0VHlyQmNlb2YzTWhzL0l4RmNpMUhtSHI0Rk1aZ1hFRWN6UGlHQ3gwSFJ3ekFxRHEyajlBVm0xa3dOMG1SVkxXTHlsZ3RvUE5hcEY1Y1k0WTF3SmgvZTBCQndaajQ0WWdackROcXZELzlIdjdHRllkVVFlREp1UTNFV0k0SGFLcWF2VTFYakMvbjQxa1Q0TDc5a3FHcTBrTGhkVFp2Z1AzVEEzZlMwb3pWeis1cGlac29PdEl2QlVGb01LYk5jbUJMNll4eGFVQXVzSEIzOFhyUzhkUU1uUXdKZlVVa3BSb0dyNUFVZVdpY3ZCVHp5SzlnNzcreUNrZjVQQXlzTDdyL0pqY1pncmJ2UnBNVzlpeWF4WnZLTzZjZVpOMkV3SXhLd1ZGUHV2RnVpRVBHQ29hZ2JNbytTcHlkTHJYcUJ6TkNER0ZDck8vcmtjd2EyeGhva1FaNUNkWjBBc1UzSmZTcUo2bjVJMTRZQStQL3VBZ2ZoUFU4NFRsdzdjRUZmcDdBRUU4ZXk0c1AxMlBUdDRDb2RzMUdSZ0RPQjV4dnlpUjVtK0J4OE81bkJDTmN0VThCZXZmVjVBMDh4NlJIZDVqY3dQVE1EU1pKT2VkSVoxY0dRNzA0bHhiQXpxWk9QMDVaeGFPZ2h6U2R2RkJIWXFvbUFUQVJ5QUFESzRlbFA4THkzSXJVWktmV2gyM1h5MjB1QlVtTFM0UGZhZ3U5K295VmEyaVBncVJQM0YyQ1RVc3ZKNytSWW5OOGZGWmJVL0hWdnh2Y0ZGREtraVRxVjVVQlozR3o1NEpBS0J5aTloa0tNWkp2dUdnY1NZWEZtdzA4VXlvUXlWZGZURDEvZE1rQ0hYY1RHQUtlUk9nQXJzdm1SclFUTFVPWGlvT0hHSzJRa2pIdW9ZRmdYY2lab1RKZDZGczVxMVFYMUcrcC9lMjZoWXNFZjdRWkQxbm5JeWwvU0ZrTnRZWW1tQmhwQnJ4bDlXYlkwWXBIV1J1dzJMbC90ajltRDhQNHNuVnpKbDRGOUorMWFyVmVUYjlFNXIySUxIMDRxU3RqeFFOd24zbTRZTnF4bWFOYkxBcVcyVE42TGlkd3VKUnFTK05YYnRxeG9lRFhweGVHV214elNrV3hqa3lDa1g0TlFSbWU2cTVTQWNDK003KzlFVGZBL0V3cnpRYWpLYWtDd1l5ZXVuUDZaRmx4VTJvTUVuMVB6MzF6ZVN0Vzc0RzQwNlpKRkNsMXdBWElvVUtrV290WUVwT3VYQjF1Vk54SjYzZHBKRXFmeEJlcHR3SUhOclB6OEJsbFpvSWNCb1h3Z2ZKKzhWQVVuVlB2UnZleG53ME1hL1dpR1l1Sk81eThRVHZFWUJpZ0ZtaFV4WTVScXpFOE9jeXdOLzhtNFVZcmxhbmlKTzc1WFE2S1NvOSt0V0hsdStoTWkwVVZkaUtRcDdOZWxub1pVek5hSXlCUFZlT3dLNkdOcCtGZkh1UE9veWhhV3VOdlRZRmt2eHNjTVFXRGgremVGQ0ZrZ3diWGZ0aVYyM3l3SjQrdXdScW1nOWszS3p3SVFwenBwdDhEQkJPTWJycXdRTTVHYjA1c0V3ZEt6TWlBcU9sb2FBL2xyMEtBKzFwcjAvK0hpV29pSWpIQS93aXIybkl1UzNQZVUvamkzTzZad294Y1IxU1o5Rmh0TEM1UzBGSXpGaGJCV2NHVlAvS3B4T1BTaVVvQWRXVXBxS0grKzZTY3o1MDdpQ2N4WUk2cmRNQklDUEpaZWE3T2NtZUZ3NW1PYkpTaXFwamcyVW9XTklzK2NGaHlEU3Q2Z2VWNXFnaTNGdW5td3dEb0dTTWdlckZPWkdYMW0wZE1DWW81WE9ydXhPMDYzZHdFTks5RGJuVk05d1lGUkV6aDR2eVUxV1lZSi9MUlJwNm94Z2pxUC9YNWE4LzRBZjZwNk5Xa1FmZXJ6Qm1YbWUwelkvNG53TUptL3dkMXRJcVN3R3orRTN4UEVBT29abEppdDNYZGRENy9CVDFwbGx6T3grOGJtUXRBTlEvUzZmWmV4YzZxaTNXK1EyeGNtWFRVaHVTNW1wSFFSdmN4WlVOMFM1K1BMOWxYV1VBYVJaaEVIOGhUZEFjdU5NTUN1Vk5LVEVHdFNVS05pM082S2hTYVR6Y2s4Y3NaMnZXUlorZDdtVzhjNElLd1hJWWQyNVMveklmdFBrd1B6dWZqRXZPSFdWRDFtK0ZqcERWVVRWMERHRHVIajZRbmFFd0x1L2RFZ2RMUU9nOUUxU3JvOVhISjh5a0xBd3RQdStweHFLRHVGZXhxT04xc0tRbTdyd2JFMUU2OFVDZkEvZXJvdnJUQ0crREJTTmcwbDRnb0RRdlpONnVObGJ5THBjWkF3ajJVY2x5Y3ZMcElaTWd2NHlSbHBiM1l1TWZ0b3pvcmJjR1ZIdC9WZURWMytGZGYxVFAwaXVhQ3NQaTJHNFhlR2hzeUYxdWJWRHhrb0pobW5pUTAvalNnL2VZTUw5S0xmbkNGZ0lTV2twOTFlYXVSM0lRdkVEMG5BUFhLKzZoUENZcytuMytoQ1piaXNrbVZNRzJkYSswRXNaUG9uVWVJWThFYmZ1c1FYanNLL2VGRGFvc2JQakVmUVMwUktHN3lqNUdHNjlNN01lTzFIbWlVWW9jZ3lnSkhMNk0xcXpVRER3VVNtcjk5VjdTZHIyRjNKalFBSlkrRjB5SDMzSXYzK0M5TTM4ZU1MN2dUZ21OdS9yMmJVTWlQdnBZYlo2djEvSWFFU2lyQkhOYTdtUEtuNGRFbVlnN3YvK0hRZ1BOMUc3OWpCUTErc295ZGZEQzJyK2gyQmwvS0ljNUtqTUs3T0g2bmIxakxzTmYwRUhWZTJLQmlFNTFveDYzNnV5RzZMaG8wdDNKMzRMNVFZL2lsRTNtaWthRjRIS1hHMW1HMXJDZXZUMVZ2Nkdhdmx0eG9RZS9iTXJwWnZSZ2duQnhTRVBFZUV6a0VkT3hUblBYSFZqVVlkdzhKWXZqQi9vN0VlZ2MzTWErTlV4TExuc0swa0psaW5QbVVIekhHdHJrNStDQWJWekZPQnFweXkzUVZVbnpURGZDLzBYRDk0L29rSCtPQitpN2c5bG9saFdJalNuZkliK0VxNDNaWE9XbXd2anlWL3FxRCt0MGUrN21URU03NHFQL096dDhubUM3bVJweXU2M09CNEtuVXpGYzA3NFNxb3lQVUFnTSsvVEpHRm82VDQ0RUhuUVU0WDR6NnFhbm5WcWd3L1U3ekNwd2NtWFYxQXViSXJ2T21rS0hhekpBUjU1ZVBqcDV0TEJzTjh2QXFzM05BSGRjRUhPUjJ4UTBsc05BRnpTVXV4RlFDRll2WExaSmRPajlwNGZOcTZwMEhCR1VpazJZemFJNHh5U3k5MUt6aFEwK3ExaGp4dkltUndQUmY3NnRDaGxSa2hSQ2k3NE5YWjlxVU5lSXdQK3M1cCszbTVud1BkTk9IZ1NMRDc5bjdPOW0xbjF1REhpTW50cTRua1l3VjVPWjFFTmJYeEZkNFBncmx2YXZac3lVTzRNcVlscXFuMU84Vy9JMWRFWnE1ZFhocmJFVExhWkliQzJLai9BYS9RTStmcVVPSGRmMHRYQVExaHVaM2NtV0VDV1NYeS80M2ozNStNdnE5eHdzN0pLc2VyaVoxcEVXS2M4cWx6TnJHUFVHY1ZnT2E5Y1BKWUlKc0duSlRBVXNFY0RPRVZVTE81eDByWEJpamMxbGdYRXpRUUtoUk9mOHpJVjgydzhlc3djNzhZWDExS1lMV1FSY2dITkpFbEJ4ZlhyNzJsUzJSQlNsMDdxVEtvck8ydVVEWnIzc0ZoWXN2bmhMWm4wQTk0S1J6Si83REVHSUFoVzVaV0ZwTDhnRXd1MWFMQTlNdVdaek53bDhPemU5WStiWCt2OWd5d1JWbm9CNUkvOGtYVFhVMzE0MXlSTFlySU9PejZTT255SE55NFNpZXF6a0JYaGFyamZqcXExcTZ0a2xhRWJBOFFmbTJEYUlQczdPVHEvbnZKQmpLZk8ySDliSDJjQ01oMSs1Z3NwZnljdThmL2N1dVJtdERqeXFaN3VDSU15amRWM2ErcDNmcW1Yc1J4NEM4bHVqZXpJRkhuUWlWVFhMWHVJMVhyd04zK3NpWVlqMkhIVHZFU1V4OERsT1RYcGFrOXFGUksrTDNtZ0oxV3NEN0Y0Y3UxYUpvRm9ZUW51K3dHRE1PakpNM2tpQlFXSENjdmhKL0hSZHhvZE9RcDQ1WVphT1RBMjJOYjRYS0NWeHFrYndNWUZoellRWUlBbkNXOEZXMTR1Zjk4amhVRzJ6cktoUVEwcTBDRXEwdDVuWHl2VXl2UjhEdkQ2OUxVK2czaStIRldRTVE4UHFadUhEK3NOS0FWMCtNNkVKQzBzenE3ckVyN0I1YlE4QmNOSHp2RE1jOWVxQjVaQ1FkVGY4ME9ibjR1emp3cFlVN1NJU2R0VjBRR2E5RDNXcmgyQkRRdHBCS3hhTkZWKy9DeTJQL1N2KzhzN1VkMEZkNzRYNCtvL1ROenRXZ0VUVWFweSttYWpOUTY4THEzZWUwWk80OFZFYlRaWWlIMUNvNE9sZldlZjgyUldleVVYbzd3b00wM1B5YXBHZmlrVG5RaW5vTnE1ejV2ZUxwZU1WM0hDQU1UYVptQTFvR0xBbjdYUzNYWXN6K1hLN1ZNUXNjNFhLcm1EWE9MVS9wU1hWTlVxOGRJcVRiYS8vLzN4NkxpTFM2eHMxeHVDQVlTZmNRMytyUWdtdTd1dmYzVEhLdDVPb285N1RxY2JScXh4N0VBU2l6YVFDQlFsbEcvcll4VmFwTUxndExiWlM2NHcxTURCTVhYK1BRcEJLTndxVUtPZjJERFJEVVhRZjlFaE9TMFFqNG5UbWxBOGR6U0x6L0cxZCtVZDhNVHkvNmdoaGRpTHBlZXJHWS9VbERPZml1cUZzTVVVNS9VWWxQK0JBbWdSTHVOcHZyVWFMbFZrcnFEaWV2TlZFQXdGKzRDb00xTVpUbWp4akpNc0tKcSt1OFpkN3ROQ1VGeTZMaXlZWFJKUTRWeXZFUUZGYUNHS3N4SXdRa2s3RXpaNkxUSnEyaFV1UGh2QVcrZ1FuU0c2SitNc3pDKzdRQ1JIY25xRGR5TlJKNlQ5eHlTODdBNk1EdXRiektHdkdrdHBiWHF0eld0WGI5SHNmSzJjQk1vbWpOOWE0eStUYUpMblh4QWVYL0hXem1mNGNSNHZBTHQvUDR3NHFnS1kwNG1sNFpkTE9pbkZZUzZjdXAzRy8xaWU0K3QxZU9ucEJObHFHcXM3NWlsemtUNCtEc1pReE52YVNLSi8vNnpJYmJrL003TE9oRm1SYy8xUitrQnR6N0pGR2RabS9DT290SWR2UW9YcFRxUC8xdXFFVW1DYi9RV29HTE13TzVBTmNIenhkWTQ4SUdQNStKK3pLT1RCRlo0UGlkK0dUTStXcTEyTVYvSDg2eEVKcHRCYTZUK3Aza2dwd0xlZE1hbkJIQzJHZ05yRnBvTjJ4bnJNejlXRldYLzgveWdTQmthdnEyVXY3RmRDc0xFWUx1OUxMSXZBVTBiTlJEdHpZbCsvdlhtanBJdnVKRllqbUkwaW02UUVZcW5JZU1zTmpYRzR2SXV0SUdIaWplQUcvOUVEQm96S1Y1Y2xka0hiTHhIaDI1dlQrWkV6YmhYbHF2cHpLSndjRWdmTndMQUtGZW8wL3B2RUUxMFhEQitFWFJUWHRTekpvelFLRkZBSmhNeFlrVmFDVytFOUFMN3RNZVU4YWN4aWRIcXpiNmxYNDY5MVVzRHB5L0xMUm1UK2VwZ1c1Nis1Q3c4dEI0a01VdjZzOWxoM2VSS2J5R3MrSC80bVFNYVl6UFRmMk9PZG9rRW4renpndm9EM0ZxTktrOFFxR0FYVnNxY0dkWHJUNjJmU1BrUjJ2Uk9GaTY4QTZzZTg2VXhSVWs0Y2FqZlB5Q0M0RzV3RGhEK3pOcTRqb2RRNHU0bi9tMzdMcjM2bjRMSUFBc1ZyMDJkRmk5QWl3QTgxTVlzMnJtNGVEbERObWRNUnZFS1JIZkJ3VzVEZE1OcDBqUEZaTWVBUnFGL3dMNFhCZmQrRU1MQmZNenBINUdINk5hVysxdnJ2TWRnK1Z4RHphdGszTVhnTzNybzNQL0RwY0M2K01vNE15U0poS0poU1IwMVNHR0dwNWhQV21yclVncnYzbERuUCtIaGNJM250M1lxQm9WQVZUQkFRVDVpdWhUZzhudlB0ZDhaZVlqNncxeDZScUdVQnJTa3U3K04xK0JhYXNadmpUazY0Um9JRGxMOGJycEVjSngzT21ZN2pMb1pzc3dkdG1oZkMvRzIxbGxYaElUT3dtdlJERGVUVFBieUFTT2ExNmNGNS9BMWZaQWlkSnBxanUzd1lBeTlhdlBSMXlhNmVOcDlLOFhZcnJ0dXhscWkrYkRLd2xmcllkUjBSUmlLUlZUTE9IODUrWlk3WFNtelJwZlpCSmphVGE4MVZEY0pIcFpuWm5TUUxBU0dZVzlsNTFaVi9oN2VWelRpM0h2NmhVc2djLzUxQXFKUlRrcGJGVkxYWHN6b0JMOG5CWDB1LzBqQkxUOG5IK2ZKZVBicndVUlQ1OE9ZK1VpZVJqZDF2czA0dzBWRzVWTjJVNk1vR1prUXpLTi9wdHowUTM2NmR4b1RHbWo3aTFOUUdIaTlHZ25xdVhGWWRyQ2ZaQm1lYjdzMFQ2eXJkbFpINWNadXdIRnlJSi9rQXRHc1RnMHhINXRhQUFxNDRCQWsxQ1BrOUtWVmJxUXpyQ1VpRmRGLzZndGxQUThiSEhjMUcxVzkyTVhHWjVIRUhmdHlMWXM4bWJELzl4WVJVV2tIbWxNMHpDMmlsSmxuTmdWNGJmQUxwUWdoeE9Vb1pMN1ZUcXRDSElhUVNYbStZVU1ucGtYeWJuVitBNnhsbTJDVnk4Zm4wWGxtMlhSYTArenpPYTIxSldXbWl4ZmlQTVNDWjdxQTRyUzkzVk4zcGtwRjFzNVRvblFqaXNIZjdpVTlaR3ZVUE9BS1pjUjFwYmVWZi9VbDdPaGVwR0NhSWQ5d090cW83cEo3eUxjQlowcEZrT0YyOHk0ekVJL2tjVU5tdXRCSGFRcEJkTk04dmpDUzZIWlJva2tlbzg4VEJBakd5RzdTUis2dlVnVGN5SzlJbWFsajBrdXh6MHdtSytieVFVMTFBaUpGay95YTVkTmR1UkNsY25VNjR5R3UvaWVXU2VPb3MxdDNlcCtSUElXUTJweVRZVmJabHRUYnNiN05pd1NpM0FWKzhLTFdrN0x4Q25mWlVldEVNOFRobnNTb0dIMzgvbnlBd0ZndUpwOEZqdmxIdGNXWnVVNGhQdmEwckhmcjBVaE9PSi9GNnZTNjJGVzdLemttUmxsMkhFYzdvVXE0ZnlpNVQ3MFZsN1lWSWZzUEhVQ2RIZXNmOUxrN1dOVldPNzVKRGtZYk1JOFRPVzhKS1Z0TFk5ZDZVSlJJVE84b0tvMHhTK285OVl5MDRpbmlHSEFhR2o4OGtFV2d3djBPckhkWS9ucjc2RE9HTlM1OWhYQ0dYelRLVXZEbDlpS3BMU1dZTjFseElleXl3ZE5wVGtoYXk3NHcyakZUNk5TOHFram81Q3hBMXlmU1l3cDZBSklaTktJZUVLNVBKQVc3T1JnV2d3cDBWZ3pZcHFvdk1yV3hidStER1o2TGhpZTFSQXFwem04VlV6S0pPSDNtQ3pXdVRPTHNOM1ZUL2R2MmVlWWU5VWpiUjhZVEJzTHo3cTYwVk4xc1U1MWsrdW0xZjhKeEQ1cFBoYmhTQzhyUmFCNDU0dG1oNllVV3JKSTMrR1dZMHFlV2lvai90YmtZSVRPa0phZXVHdDRKckp2SEErbDBHdTdrWTdYT2FhMDVhbE1uUldWQ1hxRmdMSXdTWTR1RjU5VWU1U1U0UUt1Yy9IYW1EeGJyMHg2Y3NDZXRYR29QN1FuMUJrL0o5RHN5bk8vVUQ2aVoxSHlyeitqaXQwaERDd2kvRTlPamdLVGJCM1pRS1EvMFpPdmV2Zk5IRzBOSzRBajNDcDdOcFJrMDdSVDFpL1MwRUw5M0FnOEdSZ0tJOUNmcGFqS3lLNitKai9QSTFLTzUvODVWQXd6MkF3elA4RlRCYjA3NUl4Q1h2NlQ5UlZ2V1QydFVhcXhEUzkyenJHVWJXelVZazltU3M4MnBFQ0grZmtxc0R0OTNWVysrNFlzUi9kSENZY1FTWVRPL0thQk1EajlMU0QvSi8rejIwS3E4WHZaVUFJSHRtOWhSUFAzSXRidUF1MkhtNWxrUHM5MnBkN2tDeGdSczB4T1ZCbloxM2NjZEEwYXVucnd2OVNkcUVsSlJDM2crb0N1K25YeUNnbVhVczl5TWpUTUFJSGZ4WlYrYVBLY1plVUJXdDA1N1hvODVLczFJcjVnekVIQ1dxWkVockxaTXVGMTF6aUd0RlFVZHMvRUVTYWpoYWd6Y0tzeGFtY1NaeEd0aDRVSUkrYWRQaFFrVW54Mld5Tis0WVdSK3IzZjhNbmt5R0Z1UjR6anp4SlM4V3NRWVI1UFR5UmFEOWl4YTZNaDc0MW5CSGJ6ZmpYSHNrR0RxMTc5eGFSTnJDSUIxejF4UmZXZmpxdzJwSGMxems5eGxQcEw4c1FXQUl1RVRaWmhibm1MNTRyY2VYVk5SdlVpS3JycUlrZW9nc2wwWFhiMTd5bE5iMGY0R0E5V2Q0NHZmZkVHOEZTWkdIRUwyZmJhVEdSY1NpQ2VBOFBtQS9mNkh6OEhDUzc2ZlhVSHdnd2t6U3dsSTcxZWtaN0ZhcG1say9LQytIczhoVWN3M04yTE41TGhrVll5aXpZRmwvdVBlVlA1bHNvSkhoaGZXdnZTV3J1Q1VXMVpjSk9ldVRickRneXdKL3FHMDdnWkpwbG5UdkxjWWROYUgwS01ZT1lNR1grckI0TkdQRm1Rc05hSXdsV3JmQ2V6eHJlOHpYQnJzTVQrZWRWTGJMcU4xQnFCNzZKSDRCdlpUcVVJTWZHd1BHRW4rRW5tVFY4NmZQQmFZYkZMM0RGRWhqQjQ1Q2V3a1hFQXRKeGs0L01zMnBQWG5hUnFka3kwSE9ZZGNVY0UyemNYcTR2YUl2VzIvdjBuSEZKSDJYWGUyMnVlRG1xLzE4WEd0RUxTcTg1ajlYOHEwdGNOU1NLSklYOEZUdUpGL1BmOGo1UGhxRzJ1K29zdnNMeFlydnZmZVZKTCs0dGtjWGNyOUpWN3YwRVJtai9YNmZNM05DNGo2ZFMxKzlVbXIyb1BhdnFpQXlkVFpQTE1OUkdZMjNMTzl6QVZEbHk3akQrNzBHNVRQUExkaFJJbDRXeGNZakxuTStTTmNKMjZGT3JrcklTVXRQT2JJejVaYjNBRzYxMmtybnB5MTVSTVcrMWNRamxuV0ZJNjUzOHFreTlheGQyb0ptSElIUDA4S3lQMHViR08rVFFOT1l1djJ1aDE3eUNJdlI4VmNTdHc3bzFnME5NNjBzays4VHE3WWZJQkpydHA1M0drdnpYSDdPQTBwOC9uL3Uxc2F0Zi9WSmh0UjFsOFdhNkdtYXVnN2hhU3BhQ2FZUWF4NnRhMG1rdXRsYitlQU9TRzFhb2JNODFEOUE0aVMxUlJsekJCb1ZYNnRVMVM2V0UyTjlPUlk2RGZlTFJDNGw5UnZyNWg5NVhEV0IybVIxZDRXRnVkcHNnVll3aVR3VDMxbGpza0Q4WnlET2xtNURrR2g5Ti9VQi8wQUk1WHZiOFpCbWFpMmhRNEJXTXFGd1luenh3QjI2WUhTT3Y5V2dZM0pYbnZvTisyUjRycUdWaC9MTERNdHBGUCtTcE1HSk5XdmJJbDVTT29kYkNjelcyUktsZWtzUG9VZUdFenJqdEtIVmR0WkEra2ZxTytyVngvaWNsQ3F3b29wZXB2SnBTVERqVCtiOUdXeWxHUkY4RURiR2x3NmVVem1KTTk1T3Zveitrd0xYM2MyZlRqRmVZRXNFN3ZVWm0zbXFkR0p1S2gydzkvUUdTYXFSSHM5OWFTY0dPZERxa0ZjQUNvcWRiQm9RcXFqYW1oSDZROW5nMzlKQ2czbHJHSndkNTBRazlvdm5xQlRyOE1NRTdQczJ3aVZmeWdVbVBvVUJKSmZKV1g1TmRhMG51bmNiRmtBPT0iKSl9ZXhwb3J0cy5nZXREYXRhPWdldERhdGF9KTt2YXIgaW5jbHVkZSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGluY2x1ZGUpO3ZhciBsaWIkYT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuZW5zX25vcm1hbGl6ZT1leHBvcnRzLmVuc19ub3JtYWxpemVfcG9zdF9jaGVjaz12b2lkIDA7dmFyIHI9KDAsaW5jbHVkZS5nZXREYXRhKSgpO3ZhciBWQUxJRD1uZXcgU2V0KCgwLGRlY29kZXIucmVhZF9tZW1iZXJfYXJyYXkpKHIpKTt2YXIgSUdOT1JFRD1uZXcgU2V0KCgwLGRlY29kZXIucmVhZF9tZW1iZXJfYXJyYXkpKHIpKTt2YXIgTUFQUEVEPSgwLGRlY29kZXIucmVhZF9tYXBwZWRfbWFwKShyKTt2YXIgRU1PSklfUk9PVD0oMCxkZWNvZGVyLnJlYWRfZW1vamlfdHJpZSkocik7dmFyIEhZUEhFTj00NTt2YXIgVU5ERVJTQ09SRT05NTtmdW5jdGlvbiBleHBsb2RlX2NwKG5hbWUpe3JldHVybigwLGxpYiQ4LnRvVXRmOENvZGVQb2ludHMpKG5hbWUpfWZ1bmN0aW9uIGZpbHRlcl9mZTBmKGNwcyl7cmV0dXJuIGNwcy5maWx0ZXIoZnVuY3Rpb24oY3Ape3JldHVybiBjcCE9NjUwMzl9KX1mdW5jdGlvbiBlbnNfbm9ybWFsaXplX3Bvc3RfY2hlY2sobmFtZSl7Zm9yKHZhciBfaT0wLF9hPW5hbWUuc3BsaXQoIi4iKTtfaTxfYS5sZW5ndGg7X2krKyl7dmFyIGxhYmVsPV9hW19pXTt2YXIgY3BzPWV4cGxvZGVfY3AobGFiZWwpO3RyeXtmb3IodmFyIGk9Y3BzLmxhc3RJbmRleE9mKFVOREVSU0NPUkUpLTE7aT49MDtpLS0pe2lmKGNwc1tpXSE9PVVOREVSU0NPUkUpe3Rocm93IG5ldyBFcnJvcigidW5kZXJzY29yZSBvbmx5IGFsbG93ZWQgYXQgc3RhcnQiKX19aWYoY3BzLmxlbmd0aD49NCYmY3BzLmV2ZXJ5KGZ1bmN0aW9uKGNwKXtyZXR1cm4gY3A8MTI4fSkmJmNwc1syXT09PUhZUEhFTiYmY3BzWzNdPT09SFlQSEVOKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgbGFiZWwgZXh0ZW5zaW9uIil9fWNhdGNoKGVycil7dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGxhYmVsICInK2xhYmVsKyciOiAnK2Vyci5tZXNzYWdlKX19cmV0dXJuIG5hbWV9ZXhwb3J0cy5lbnNfbm9ybWFsaXplX3Bvc3RfY2hlY2s9ZW5zX25vcm1hbGl6ZV9wb3N0X2NoZWNrO2Z1bmN0aW9uIGVuc19ub3JtYWxpemUobmFtZSl7cmV0dXJuIGVuc19ub3JtYWxpemVfcG9zdF9jaGVjayhub3JtYWxpemUobmFtZSxmaWx0ZXJfZmUwZikpfWV4cG9ydHMuZW5zX25vcm1hbGl6ZT1lbnNfbm9ybWFsaXplO2Z1bmN0aW9uIG5vcm1hbGl6ZShuYW1lLGVtb2ppX2ZpbHRlcil7dmFyIGlucHV0PWV4cGxvZGVfY3AobmFtZSkucmV2ZXJzZSgpO3ZhciBvdXRwdXQ9W107d2hpbGUoaW5wdXQubGVuZ3RoKXt2YXIgZW1vamk9Y29uc3VtZV9lbW9qaV9yZXZlcnNlZChpbnB1dCk7aWYoZW1vamkpe291dHB1dC5wdXNoLmFwcGx5KG91dHB1dCxlbW9qaV9maWx0ZXIoZW1vamkpKTtjb250aW51ZX12YXIgY3A9aW5wdXQucG9wKCk7aWYoVkFMSUQuaGFzKGNwKSl7b3V0cHV0LnB1c2goY3ApO2NvbnRpbnVlfWlmKElHTk9SRUQuaGFzKGNwKSl7Y29udGludWV9dmFyIGNwcz1NQVBQRURbY3BdO2lmKGNwcyl7b3V0cHV0LnB1c2guYXBwbHkob3V0cHV0LGNwcyk7Y29udGludWV9dGhyb3cgbmV3IEVycm9yKCJEaXNhbGxvd2VkIGNvZGVwb2ludDogMHgiK2NwLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKX1yZXR1cm4gZW5zX25vcm1hbGl6ZV9wb3N0X2NoZWNrKG5mYyhTdHJpbmcuZnJvbUNvZGVQb2ludC5hcHBseShTdHJpbmcsb3V0cHV0KSkpfWZ1bmN0aW9uIG5mYyhzKXtyZXR1cm4gcy5ub3JtYWxpemUoIk5GQyIpfWZ1bmN0aW9uIGNvbnN1bWVfZW1vamlfcmV2ZXJzZWQoY3BzLGVhdGVuKXt2YXIgX2E7dmFyIG5vZGU9RU1PSklfUk9PVDt2YXIgZW1vamk7dmFyIHNhdmVkO3ZhciBzdGFjaz1bXTt2YXIgcG9zPWNwcy5sZW5ndGg7aWYoZWF0ZW4pZWF0ZW4ubGVuZ3RoPTA7dmFyIF9sb29wXzE9ZnVuY3Rpb24oKXt2YXIgY3A9Y3BzWy0tcG9zXTtub2RlPShfYT1ub2RlLmJyYW5jaGVzLmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHguc2V0LmhhcyhjcCl9KSk9PT1udWxsfHxfYT09PXZvaWQgMD92b2lkIDA6X2Eubm9kZTtpZighbm9kZSlyZXR1cm4iYnJlYWsiO2lmKG5vZGUuc2F2ZSl7c2F2ZWQ9Y3B9ZWxzZSBpZihub2RlLmNoZWNrKXtpZihjcD09PXNhdmVkKXJldHVybiJicmVhayJ9c3RhY2sucHVzaChjcCk7aWYobm9kZS5mZTBmKXtzdGFjay5wdXNoKDY1MDM5KTtpZihwb3M+MCYmY3BzW3Bvcy0xXT09NjUwMzkpcG9zLS19aWYobm9kZS52YWxpZCl7ZW1vamk9c3RhY2suc2xpY2UoKTtpZihub2RlLnZhbGlkPT0yKWVtb2ppLnNwbGljZSgxLDEpO2lmKGVhdGVuKWVhdGVuLnB1c2guYXBwbHkoZWF0ZW4sY3BzLnNsaWNlKHBvcykucmV2ZXJzZSgpKTtjcHMubGVuZ3RoPXBvc319O3doaWxlKHBvcyl7dmFyIHN0YXRlXzE9X2xvb3BfMSgpO2lmKHN0YXRlXzE9PT0iYnJlYWsiKWJyZWFrfXJldHVybiBlbW9qaX19KTt2YXIgbGliJGI9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJGEpO3ZhciBuYW1laGFzaF8xPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5kbnNFbmNvZGU9ZXhwb3J0cy5uYW1laGFzaD1leHBvcnRzLmlzVmFsaWROYW1lPWV4cG9ydHMuZW5zTm9ybWFsaXplPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJGcudmVyc2lvbik7dmFyIFplcm9zPW5ldyBVaW50OEFycmF5KDMyKTtaZXJvcy5maWxsKDApO2Z1bmN0aW9uIGNoZWNrQ29tcG9uZW50KGNvbXApe2lmKGNvbXAubGVuZ3RoPT09MCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIEVOUyBuYW1lOyBlbXB0eSBjb21wb25lbnQiKX1yZXR1cm4gY29tcH1mdW5jdGlvbiBlbnNOYW1lU3BsaXQobmFtZSl7dmFyIGJ5dGVzPSgwLGxpYiQ4LnRvVXRmOEJ5dGVzKSgoMCxsaWIkYS5lbnNfbm9ybWFsaXplKShuYW1lKSk7dmFyIGNvbXBzPVtdO2lmKG5hbWUubGVuZ3RoPT09MCl7cmV0dXJuIGNvbXBzfXZhciBsYXN0PTA7Zm9yKHZhciBpPTA7aTxieXRlcy5sZW5ndGg7aSsrKXt2YXIgZD1ieXRlc1tpXTtpZihkPT09NDYpe2NvbXBzLnB1c2goY2hlY2tDb21wb25lbnQoYnl0ZXMuc2xpY2UobGFzdCxpKSkpO2xhc3Q9aSsxfX1pZihsYXN0Pj1ieXRlcy5sZW5ndGgpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBFTlMgbmFtZTsgZW1wdHkgY29tcG9uZW50Iil9Y29tcHMucHVzaChjaGVja0NvbXBvbmVudChieXRlcy5zbGljZShsYXN0KSkpO3JldHVybiBjb21wc31mdW5jdGlvbiBlbnNOb3JtYWxpemUobmFtZSl7cmV0dXJuIGVuc05hbWVTcGxpdChuYW1lKS5tYXAoZnVuY3Rpb24oY29tcCl7cmV0dXJuKDAsbGliJDgudG9VdGY4U3RyaW5nKShjb21wKX0pLmpvaW4oIi4iKX1leHBvcnRzLmVuc05vcm1hbGl6ZT1lbnNOb3JtYWxpemU7ZnVuY3Rpb24gaXNWYWxpZE5hbWUobmFtZSl7dHJ5e3JldHVybiBlbnNOYW1lU3BsaXQobmFtZSkubGVuZ3RoIT09MH1jYXRjaChlcnJvcil7fXJldHVybiBmYWxzZX1leHBvcnRzLmlzVmFsaWROYW1lPWlzVmFsaWROYW1lO2Z1bmN0aW9uIG5hbWVoYXNoKG5hbWUpe2lmKHR5cGVvZiBuYW1lIT09InN0cmluZyIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgRU5TIG5hbWU7IG5vdCBhIHN0cmluZyIsIm5hbWUiLG5hbWUpfXZhciByZXN1bHQ9WmVyb3M7dmFyIGNvbXBzPWVuc05hbWVTcGxpdChuYW1lKTt3aGlsZShjb21wcy5sZW5ndGgpe3Jlc3VsdD0oMCxsaWIkNC5rZWNjYWsyNTYpKCgwLGxpYiQxLmNvbmNhdCkoW3Jlc3VsdCwoMCxsaWIkNC5rZWNjYWsyNTYpKGNvbXBzLnBvcCgpKV0pKX1yZXR1cm4oMCxsaWIkMS5oZXhsaWZ5KShyZXN1bHQpfWV4cG9ydHMubmFtZWhhc2g9bmFtZWhhc2g7ZnVuY3Rpb24gZG5zRW5jb2RlKG5hbWUpe3JldHVybigwLGxpYiQxLmhleGxpZnkpKCgwLGxpYiQxLmNvbmNhdCkoZW5zTmFtZVNwbGl0KG5hbWUpLm1hcChmdW5jdGlvbihjb21wKXtpZihjb21wLmxlbmd0aD42Myl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIEROUyBlbmNvZGVkIGVudHJ5OyBsZW5ndGggZXhjZWVkcyA2MyBieXRlcyIpfXZhciBieXRlcz1uZXcgVWludDhBcnJheShjb21wLmxlbmd0aCsxKTtieXRlcy5zZXQoY29tcCwxKTtieXRlc1swXT1ieXRlcy5sZW5ndGgtMTtyZXR1cm4gYnl0ZXN9KSkpKyIwMCJ9ZXhwb3J0cy5kbnNFbmNvZGU9ZG5zRW5jb2RlfSk7dmFyIG5hbWVoYXNoPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKG5hbWVoYXNoXzEpO3ZhciBtZXNzYWdlPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5oYXNoTWVzc2FnZT1leHBvcnRzLm1lc3NhZ2VQcmVmaXg9dm9pZCAwO2V4cG9ydHMubWVzc2FnZVByZWZpeD0iGUV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOlxuIjtmdW5jdGlvbiBoYXNoTWVzc2FnZShtZXNzYWdlKXtpZih0eXBlb2YgbWVzc2FnZT09PSJzdHJpbmciKXttZXNzYWdlPSgwLGxpYiQ4LnRvVXRmOEJ5dGVzKShtZXNzYWdlKX1yZXR1cm4oMCxsaWIkNC5rZWNjYWsyNTYpKCgwLGxpYiQxLmNvbmNhdCkoWygwLGxpYiQ4LnRvVXRmOEJ5dGVzKShleHBvcnRzLm1lc3NhZ2VQcmVmaXgpLCgwLGxpYiQ4LnRvVXRmOEJ5dGVzKShTdHJpbmcobWVzc2FnZS5sZW5ndGgpKSxtZXNzYWdlXSkpfWV4cG9ydHMuaGFzaE1lc3NhZ2U9aGFzaE1lc3NhZ2V9KTt2YXIgbWVzc2FnZSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKG1lc3NhZ2UpO3ZhciB0eXBlZERhdGE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuVHlwZWREYXRhRW5jb2Rlcj12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRnLnZlcnNpb24pO3ZhciBwYWRkaW5nPW5ldyBVaW50OEFycmF5KDMyKTtwYWRkaW5nLmZpbGwoMCk7dmFyIE5lZ2F0aXZlT25lPWxpYiQyLkJpZ051bWJlci5mcm9tKC0xKTt2YXIgWmVybz1saWIkMi5CaWdOdW1iZXIuZnJvbSgwKTt2YXIgT25lPWxpYiQyLkJpZ051bWJlci5mcm9tKDEpO3ZhciBNYXhVaW50MjU2PWxpYiQyLkJpZ051bWJlci5mcm9tKCIweGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYiKTtmdW5jdGlvbiBoZXhQYWRSaWdodCh2YWx1ZSl7dmFyIGJ5dGVzPSgwLGxpYiQxLmFycmF5aWZ5KSh2YWx1ZSk7dmFyIHBhZE9mZnNldD1ieXRlcy5sZW5ndGglMzI7aWYocGFkT2Zmc2V0KXtyZXR1cm4oMCxsaWIkMS5oZXhDb25jYXQpKFtieXRlcyxwYWRkaW5nLnNsaWNlKHBhZE9mZnNldCldKX1yZXR1cm4oMCxsaWIkMS5oZXhsaWZ5KShieXRlcyl9dmFyIGhleFRydWU9KDAsbGliJDEuaGV4WmVyb1BhZCkoT25lLnRvSGV4U3RyaW5nKCksMzIpO3ZhciBoZXhGYWxzZT0oMCxsaWIkMS5oZXhaZXJvUGFkKShaZXJvLnRvSGV4U3RyaW5nKCksMzIpO3ZhciBkb21haW5GaWVsZFR5cGVzPXtuYW1lOiJzdHJpbmciLHZlcnNpb246InN0cmluZyIsY2hhaW5JZDoidWludDI1NiIsdmVyaWZ5aW5nQ29udHJhY3Q6ImFkZHJlc3MiLHNhbHQ6ImJ5dGVzMzIifTt2YXIgZG9tYWluRmllbGROYW1lcz1bIm5hbWUiLCJ2ZXJzaW9uIiwiY2hhaW5JZCIsInZlcmlmeWluZ0NvbnRyYWN0Iiwic2FsdCJdO2Z1bmN0aW9uIGNoZWNrU3RyaW5nKGtleSl7cmV0dXJuIGZ1bmN0aW9uKHZhbHVlKXtpZih0eXBlb2YgdmFsdWUhPT0ic3RyaW5nIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBkb21haW4gdmFsdWUgZm9yICIrSlNPTi5zdHJpbmdpZnkoa2V5KSwiZG9tYWluLiIra2V5LHZhbHVlKX1yZXR1cm4gdmFsdWV9fXZhciBkb21haW5DaGVja3M9e25hbWU6Y2hlY2tTdHJpbmcoIm5hbWUiKSx2ZXJzaW9uOmNoZWNrU3RyaW5nKCJ2ZXJzaW9uIiksY2hhaW5JZDpmdW5jdGlvbih2YWx1ZSl7dHJ5e3JldHVybiBsaWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZSkudG9TdHJpbmcoKX1jYXRjaChlcnJvcil7fXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCdpbnZhbGlkIGRvbWFpbiB2YWx1ZSBmb3IgImNoYWluSWQiJywiZG9tYWluLmNoYWluSWQiLHZhbHVlKX0sdmVyaWZ5aW5nQ29udHJhY3Q6ZnVuY3Rpb24odmFsdWUpe3RyeXtyZXR1cm4oMCxsaWIkNi5nZXRBZGRyZXNzKSh2YWx1ZSkudG9Mb3dlckNhc2UoKX1jYXRjaChlcnJvcil7fXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCdpbnZhbGlkIGRvbWFpbiB2YWx1ZSAidmVyaWZ5aW5nQ29udHJhY3QiJywiZG9tYWluLnZlcmlmeWluZ0NvbnRyYWN0Iix2YWx1ZSl9LHNhbHQ6ZnVuY3Rpb24odmFsdWUpe3RyeXt2YXIgYnl0ZXM9KDAsbGliJDEuYXJyYXlpZnkpKHZhbHVlKTtpZihieXRlcy5sZW5ndGghPT0zMil7dGhyb3cgbmV3IEVycm9yKCJiYWQgbGVuZ3RoIil9cmV0dXJuKDAsbGliJDEuaGV4bGlmeSkoYnl0ZXMpfWNhdGNoKGVycm9yKXt9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoJ2ludmFsaWQgZG9tYWluIHZhbHVlICJzYWx0IicsImRvbWFpbi5zYWx0Iix2YWx1ZSl9fTtmdW5jdGlvbiBnZXRCYXNlRW5jb2Rlcih0eXBlKXt7dmFyIG1hdGNoPXR5cGUubWF0Y2goL14odT8paW50KFxkKikkLyk7aWYobWF0Y2gpe3ZhciBzaWduZWQ9bWF0Y2hbMV09PT0iIjt2YXIgd2lkdGg9cGFyc2VJbnQobWF0Y2hbMl18fCIyNTYiKTtpZih3aWR0aCU4IT09MHx8d2lkdGg+MjU2fHxtYXRjaFsyXSYmbWF0Y2hbMl0hPT1TdHJpbmcod2lkdGgpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIG51bWVyaWMgd2lkdGgiLCJ0eXBlIix0eXBlKX12YXIgYm91bmRzVXBwZXJfMT1NYXhVaW50MjU2Lm1hc2soc2lnbmVkP3dpZHRoLTE6d2lkdGgpO3ZhciBib3VuZHNMb3dlcl8xPXNpZ25lZD9ib3VuZHNVcHBlcl8xLmFkZChPbmUpLm11bChOZWdhdGl2ZU9uZSk6WmVybztyZXR1cm4gZnVuY3Rpb24odmFsdWUpe3ZhciB2PWxpYiQyLkJpZ051bWJlci5mcm9tKHZhbHVlKTtpZih2Lmx0KGJvdW5kc0xvd2VyXzEpfHx2Lmd0KGJvdW5kc1VwcGVyXzEpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ2YWx1ZSBvdXQtb2YtYm91bmRzIGZvciAiK3R5cGUsInZhbHVlIix2YWx1ZSl9cmV0dXJuKDAsbGliJDEuaGV4WmVyb1BhZCkodi50b1R3b3MoMjU2KS50b0hleFN0cmluZygpLDMyKX19fXt2YXIgbWF0Y2g9dHlwZS5tYXRjaCgvXmJ5dGVzKFxkKykkLyk7aWYobWF0Y2gpe3ZhciB3aWR0aF8xPXBhcnNlSW50KG1hdGNoWzFdKTtpZih3aWR0aF8xPT09MHx8d2lkdGhfMT4zMnx8bWF0Y2hbMV0hPT1TdHJpbmcod2lkdGhfMSkpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYnl0ZXMgd2lkdGgiLCJ0eXBlIix0eXBlKX1yZXR1cm4gZnVuY3Rpb24odmFsdWUpe3ZhciBieXRlcz0oMCxsaWIkMS5hcnJheWlmeSkodmFsdWUpO2lmKGJ5dGVzLmxlbmd0aCE9PXdpZHRoXzEpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgbGVuZ3RoIGZvciAiK3R5cGUsInZhbHVlIix2YWx1ZSl9cmV0dXJuIGhleFBhZFJpZ2h0KHZhbHVlKX19fXN3aXRjaCh0eXBlKXtjYXNlImFkZHJlc3MiOnJldHVybiBmdW5jdGlvbih2YWx1ZSl7cmV0dXJuKDAsbGliJDEuaGV4WmVyb1BhZCkoKDAsbGliJDYuZ2V0QWRkcmVzcykodmFsdWUpLDMyKX07Y2FzZSJib29sIjpyZXR1cm4gZnVuY3Rpb24odmFsdWUpe3JldHVybiF2YWx1ZT9oZXhGYWxzZTpoZXhUcnVlfTtjYXNlImJ5dGVzIjpyZXR1cm4gZnVuY3Rpb24odmFsdWUpe3JldHVybigwLGxpYiQ0LmtlY2NhazI1NikodmFsdWUpfTtjYXNlInN0cmluZyI6cmV0dXJuIGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4oMCxpZF8xLmlkKSh2YWx1ZSl9fXJldHVybiBudWxsfWZ1bmN0aW9uIGVuY29kZVR5cGUobmFtZSxmaWVsZHMpe3JldHVybiBuYW1lKyIoIitmaWVsZHMubWFwKGZ1bmN0aW9uKF9hKXt2YXIgbmFtZT1fYS5uYW1lLHR5cGU9X2EudHlwZTtyZXR1cm4gdHlwZSsiICIrbmFtZX0pLmpvaW4oIiwiKSsiKSJ9dmFyIFR5cGVkRGF0YUVuY29kZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBUeXBlZERhdGFFbmNvZGVyKHR5cGVzKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywidHlwZXMiLE9iamVjdC5mcmVlemUoKDAsbGliJDMuZGVlcENvcHkpKHR5cGVzKSkpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJfZW5jb2RlckNhY2hlIix7fSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsIl90eXBlcyIse30pO3ZhciBsaW5rcz17fTt2YXIgcGFyZW50cz17fTt2YXIgc3VidHlwZXM9e307T2JqZWN0LmtleXModHlwZXMpLmZvckVhY2goZnVuY3Rpb24odHlwZSl7bGlua3NbdHlwZV09e307cGFyZW50c1t0eXBlXT1bXTtzdWJ0eXBlc1t0eXBlXT17fX0pO3ZhciBfbG9vcF8xPWZ1bmN0aW9uKG5hbWVfMSl7dmFyIHVuaXF1ZU5hbWVzPXt9O3R5cGVzW25hbWVfMV0uZm9yRWFjaChmdW5jdGlvbihmaWVsZCl7aWYodW5pcXVlTmFtZXNbZmllbGQubmFtZV0pe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImR1cGxpY2F0ZSB2YXJpYWJsZSBuYW1lICIrSlNPTi5zdHJpbmdpZnkoZmllbGQubmFtZSkrIiBpbiAiK0pTT04uc3RyaW5naWZ5KG5hbWVfMSksInR5cGVzIix0eXBlcyl9dW5pcXVlTmFtZXNbZmllbGQubmFtZV09dHJ1ZTt2YXIgYmFzZVR5cGU9ZmllbGQudHlwZS5tYXRjaCgvXihbXlx4NWJdKikoXHg1YnwkKS8pWzFdO2lmKGJhc2VUeXBlPT09bmFtZV8xKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJjaXJjdWxhciB0eXBlIHJlZmVyZW5jZSB0byAiK0pTT04uc3RyaW5naWZ5KGJhc2VUeXBlKSwidHlwZXMiLHR5cGVzKX12YXIgZW5jb2Rlcj1nZXRCYXNlRW5jb2RlcihiYXNlVHlwZSk7aWYoZW5jb2Rlcil7cmV0dXJufWlmKCFwYXJlbnRzW2Jhc2VUeXBlXSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5rbm93biB0eXBlICIrSlNPTi5zdHJpbmdpZnkoYmFzZVR5cGUpLCJ0eXBlcyIsdHlwZXMpfXBhcmVudHNbYmFzZVR5cGVdLnB1c2gobmFtZV8xKTtsaW5rc1tuYW1lXzFdW2Jhc2VUeXBlXT10cnVlfSl9O2Zvcih2YXIgbmFtZV8xIGluIHR5cGVzKXtfbG9vcF8xKG5hbWVfMSl9dmFyIHByaW1hcnlUeXBlcz1PYmplY3Qua2V5cyhwYXJlbnRzKS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIHBhcmVudHNbbl0ubGVuZ3RoPT09MH0pO2lmKHByaW1hcnlUeXBlcy5sZW5ndGg9PT0wKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJtaXNzaW5nIHByaW1hcnkgdHlwZSIsInR5cGVzIix0eXBlcyl9ZWxzZSBpZihwcmltYXJ5VHlwZXMubGVuZ3RoPjEpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImFtYmlndW91cyBwcmltYXJ5IHR5cGVzIG9yIHVudXNlZCB0eXBlczogIitwcmltYXJ5VHlwZXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX0pLmpvaW4oIiwgIiksInR5cGVzIix0eXBlcyl9KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsInByaW1hcnlUeXBlIixwcmltYXJ5VHlwZXNbMF0pO2Z1bmN0aW9uIGNoZWNrQ2lyY3VsYXIodHlwZSxmb3VuZCl7aWYoZm91bmRbdHlwZV0pe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImNpcmN1bGFyIHR5cGUgcmVmZXJlbmNlIHRvICIrSlNPTi5zdHJpbmdpZnkodHlwZSksInR5cGVzIix0eXBlcyl9Zm91bmRbdHlwZV09dHJ1ZTtPYmplY3Qua2V5cyhsaW5rc1t0eXBlXSkuZm9yRWFjaChmdW5jdGlvbihjaGlsZCl7aWYoIXBhcmVudHNbY2hpbGRdKXtyZXR1cm59Y2hlY2tDaXJjdWxhcihjaGlsZCxmb3VuZCk7T2JqZWN0LmtleXMoZm91bmQpLmZvckVhY2goZnVuY3Rpb24oc3VidHlwZSl7c3VidHlwZXNbc3VidHlwZV1bY2hpbGRdPXRydWV9KX0pO2RlbGV0ZSBmb3VuZFt0eXBlXX1jaGVja0NpcmN1bGFyKHRoaXMucHJpbWFyeVR5cGUse30pO2Zvcih2YXIgbmFtZV8yIGluIHN1YnR5cGVzKXt2YXIgc3Q9T2JqZWN0LmtleXMoc3VidHlwZXNbbmFtZV8yXSk7c3Quc29ydCgpO3RoaXMuX3R5cGVzW25hbWVfMl09ZW5jb2RlVHlwZShuYW1lXzIsdHlwZXNbbmFtZV8yXSkrc3QubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlbmNvZGVUeXBlKHQsdHlwZXNbdF0pfSkuam9pbigiIil9fVR5cGVkRGF0YUVuY29kZXIucHJvdG90eXBlLmdldEVuY29kZXI9ZnVuY3Rpb24odHlwZSl7dmFyIGVuY29kZXI9dGhpcy5fZW5jb2RlckNhY2hlW3R5cGVdO2lmKCFlbmNvZGVyKXtlbmNvZGVyPXRoaXMuX2VuY29kZXJDYWNoZVt0eXBlXT10aGlzLl9nZXRFbmNvZGVyKHR5cGUpfXJldHVybiBlbmNvZGVyfTtUeXBlZERhdGFFbmNvZGVyLnByb3RvdHlwZS5fZ2V0RW5jb2Rlcj1mdW5jdGlvbih0eXBlKXt2YXIgX3RoaXM9dGhpczt7dmFyIGVuY29kZXI9Z2V0QmFzZUVuY29kZXIodHlwZSk7aWYoZW5jb2Rlcil7cmV0dXJuIGVuY29kZXJ9fXZhciBtYXRjaD10eXBlLm1hdGNoKC9eKC4qKShceDViKFxkKilceDVkKSQvKTtpZihtYXRjaCl7dmFyIHN1YnR5cGVfMT1tYXRjaFsxXTt2YXIgc3ViRW5jb2Rlcl8xPXRoaXMuZ2V0RW5jb2RlcihzdWJ0eXBlXzEpO3ZhciBsZW5ndGhfMT1wYXJzZUludChtYXRjaFszXSk7cmV0dXJuIGZ1bmN0aW9uKHZhbHVlKXtpZihsZW5ndGhfMT49MCYmdmFsdWUubGVuZ3RoIT09bGVuZ3RoXzEpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImFycmF5IGxlbmd0aCBtaXNtYXRjaDsgZXhwZWN0ZWQgbGVuZ3RoICR7IGFycmF5TGVuZ3RoIH0iLCJ2YWx1ZSIsdmFsdWUpfXZhciByZXN1bHQ9dmFsdWUubWFwKHN1YkVuY29kZXJfMSk7aWYoX3RoaXMuX3R5cGVzW3N1YnR5cGVfMV0pe3Jlc3VsdD1yZXN1bHQubWFwKGxpYiQ0LmtlY2NhazI1Nil9cmV0dXJuKDAsbGliJDQua2VjY2FrMjU2KSgoMCxsaWIkMS5oZXhDb25jYXQpKHJlc3VsdCkpfX12YXIgZmllbGRzPXRoaXMudHlwZXNbdHlwZV07aWYoZmllbGRzKXt2YXIgZW5jb2RlZFR5cGVfMT0oMCxpZF8xLmlkKSh0aGlzLl90eXBlc1t0eXBlXSk7cmV0dXJuIGZ1bmN0aW9uKHZhbHVlKXt2YXIgdmFsdWVzPWZpZWxkcy5tYXAoZnVuY3Rpb24oX2Epe3ZhciBuYW1lPV9hLm5hbWUsdHlwZT1fYS50eXBlO3ZhciByZXN1bHQ9X3RoaXMuZ2V0RW5jb2Rlcih0eXBlKSh2YWx1ZVtuYW1lXSk7aWYoX3RoaXMuX3R5cGVzW3R5cGVdKXtyZXR1cm4oMCxsaWIkNC5rZWNjYWsyNTYpKHJlc3VsdCl9cmV0dXJuIHJlc3VsdH0pO3ZhbHVlcy51bnNoaWZ0KGVuY29kZWRUeXBlXzEpO3JldHVybigwLGxpYiQxLmhleENvbmNhdCkodmFsdWVzKX19cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVua25vd24gdHlwZTogIit0eXBlLCJ0eXBlIix0eXBlKX07VHlwZWREYXRhRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlVHlwZT1mdW5jdGlvbihuYW1lKXt2YXIgcmVzdWx0PXRoaXMuX3R5cGVzW25hbWVdO2lmKCFyZXN1bHQpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVua25vd24gdHlwZTogIitKU09OLnN0cmluZ2lmeShuYW1lKSwibmFtZSIsbmFtZSl9cmV0dXJuIHJlc3VsdH07VHlwZWREYXRhRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlRGF0YT1mdW5jdGlvbih0eXBlLHZhbHVlKXtyZXR1cm4gdGhpcy5nZXRFbmNvZGVyKHR5cGUpKHZhbHVlKX07VHlwZWREYXRhRW5jb2Rlci5wcm90b3R5cGUuaGFzaFN0cnVjdD1mdW5jdGlvbihuYW1lLHZhbHVlKXtyZXR1cm4oMCxsaWIkNC5rZWNjYWsyNTYpKHRoaXMuZW5jb2RlRGF0YShuYW1lLHZhbHVlKSl9O1R5cGVkRGF0YUVuY29kZXIucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHRoaXMuZW5jb2RlRGF0YSh0aGlzLnByaW1hcnlUeXBlLHZhbHVlKX07VHlwZWREYXRhRW5jb2Rlci5wcm90b3R5cGUuaGFzaD1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHRoaXMuaGFzaFN0cnVjdCh0aGlzLnByaW1hcnlUeXBlLHZhbHVlKX07VHlwZWREYXRhRW5jb2Rlci5wcm90b3R5cGUuX3Zpc2l0PWZ1bmN0aW9uKHR5cGUsdmFsdWUsY2FsbGJhY2spe3ZhciBfdGhpcz10aGlzO3t2YXIgZW5jb2Rlcj1nZXRCYXNlRW5jb2Rlcih0eXBlKTtpZihlbmNvZGVyKXtyZXR1cm4gY2FsbGJhY2sodHlwZSx2YWx1ZSl9fXZhciBtYXRjaD10eXBlLm1hdGNoKC9eKC4qKShceDViKFxkKilceDVkKSQvKTtpZihtYXRjaCl7dmFyIHN1YnR5cGVfMj1tYXRjaFsxXTt2YXIgbGVuZ3RoXzI9cGFyc2VJbnQobWF0Y2hbM10pO2lmKGxlbmd0aF8yPj0wJiZ2YWx1ZS5sZW5ndGghPT1sZW5ndGhfMil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiYXJyYXkgbGVuZ3RoIG1pc21hdGNoOyBleHBlY3RlZCBsZW5ndGggJHsgYXJyYXlMZW5ndGggfSIsInZhbHVlIix2YWx1ZSl9cmV0dXJuIHZhbHVlLm1hcChmdW5jdGlvbih2KXtyZXR1cm4gX3RoaXMuX3Zpc2l0KHN1YnR5cGVfMix2LGNhbGxiYWNrKX0pfXZhciBmaWVsZHM9dGhpcy50eXBlc1t0eXBlXTtpZihmaWVsZHMpe3JldHVybiBmaWVsZHMucmVkdWNlKGZ1bmN0aW9uKGFjY3VtLF9hKXt2YXIgbmFtZT1fYS5uYW1lLHR5cGU9X2EudHlwZTthY2N1bVtuYW1lXT1fdGhpcy5fdmlzaXQodHlwZSx2YWx1ZVtuYW1lXSxjYWxsYmFjayk7cmV0dXJuIGFjY3VtfSx7fSl9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVua25vd24gdHlwZTogIit0eXBlLCJ0eXBlIix0eXBlKX07VHlwZWREYXRhRW5jb2Rlci5wcm90b3R5cGUudmlzaXQ9ZnVuY3Rpb24odmFsdWUsY2FsbGJhY2spe3JldHVybiB0aGlzLl92aXNpdCh0aGlzLnByaW1hcnlUeXBlLHZhbHVlLGNhbGxiYWNrKX07VHlwZWREYXRhRW5jb2Rlci5mcm9tPWZ1bmN0aW9uKHR5cGVzKXtyZXR1cm4gbmV3IFR5cGVkRGF0YUVuY29kZXIodHlwZXMpfTtUeXBlZERhdGFFbmNvZGVyLmdldFByaW1hcnlUeXBlPWZ1bmN0aW9uKHR5cGVzKXtyZXR1cm4gVHlwZWREYXRhRW5jb2Rlci5mcm9tKHR5cGVzKS5wcmltYXJ5VHlwZX07VHlwZWREYXRhRW5jb2Rlci5oYXNoU3RydWN0PWZ1bmN0aW9uKG5hbWUsdHlwZXMsdmFsdWUpe3JldHVybiBUeXBlZERhdGFFbmNvZGVyLmZyb20odHlwZXMpLmhhc2hTdHJ1Y3QobmFtZSx2YWx1ZSl9O1R5cGVkRGF0YUVuY29kZXIuaGFzaERvbWFpbj1mdW5jdGlvbihkb21haW4pe3ZhciBkb21haW5GaWVsZHM9W107Zm9yKHZhciBuYW1lXzMgaW4gZG9tYWluKXt2YXIgdHlwZT1kb21haW5GaWVsZFR5cGVzW25hbWVfM107aWYoIXR5cGUpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdHlwZWQtZGF0YSBkb21haW4ga2V5OiAiK0pTT04uc3RyaW5naWZ5KG5hbWVfMyksImRvbWFpbiIsZG9tYWluKX1kb21haW5GaWVsZHMucHVzaCh7bmFtZTpuYW1lXzMsdHlwZTp0eXBlfSl9ZG9tYWluRmllbGRzLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gZG9tYWluRmllbGROYW1lcy5pbmRleE9mKGEubmFtZSktZG9tYWluRmllbGROYW1lcy5pbmRleE9mKGIubmFtZSl9KTtyZXR1cm4gVHlwZWREYXRhRW5jb2Rlci5oYXNoU3RydWN0KCJFSVA3MTJEb21haW4iLHtFSVA3MTJEb21haW46ZG9tYWluRmllbGRzfSxkb21haW4pfTtUeXBlZERhdGFFbmNvZGVyLmVuY29kZT1mdW5jdGlvbihkb21haW4sdHlwZXMsdmFsdWUpe3JldHVybigwLGxpYiQxLmhleENvbmNhdCkoWyIweDE5MDEiLFR5cGVkRGF0YUVuY29kZXIuaGFzaERvbWFpbihkb21haW4pLFR5cGVkRGF0YUVuY29kZXIuZnJvbSh0eXBlcykuaGFzaCh2YWx1ZSldKX07VHlwZWREYXRhRW5jb2Rlci5oYXNoPWZ1bmN0aW9uKGRvbWFpbix0eXBlcyx2YWx1ZSl7cmV0dXJuKDAsbGliJDQua2VjY2FrMjU2KShUeXBlZERhdGFFbmNvZGVyLmVuY29kZShkb21haW4sdHlwZXMsdmFsdWUpKX07VHlwZWREYXRhRW5jb2Rlci5yZXNvbHZlTmFtZXM9ZnVuY3Rpb24oZG9tYWluLHR5cGVzLHZhbHVlLHJlc29sdmVOYW1lKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlbnNDYWNoZSxlbmNvZGVyLF9hLF9iLF9pLG5hbWVfNCxfYyxfZDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfZSl7c3dpdGNoKF9lLmxhYmVsKXtjYXNlIDA6ZG9tYWluPSgwLGxpYiQzLnNoYWxsb3dDb3B5KShkb21haW4pO2Vuc0NhY2hlPXt9O2lmKGRvbWFpbi52ZXJpZnlpbmdDb250cmFjdCYmISgwLGxpYiQxLmlzSGV4U3RyaW5nKShkb21haW4udmVyaWZ5aW5nQ29udHJhY3QsMjApKXtlbnNDYWNoZVtkb21haW4udmVyaWZ5aW5nQ29udHJhY3RdPSIweCJ9ZW5jb2Rlcj1UeXBlZERhdGFFbmNvZGVyLmZyb20odHlwZXMpO2VuY29kZXIudmlzaXQodmFsdWUsZnVuY3Rpb24odHlwZSx2YWx1ZSl7aWYodHlwZT09PSJhZGRyZXNzIiYmISgwLGxpYiQxLmlzSGV4U3RyaW5nKSh2YWx1ZSwyMCkpe2Vuc0NhY2hlW3ZhbHVlXT0iMHgifXJldHVybiB2YWx1ZX0pO19hPVtdO2ZvcihfYiBpbiBlbnNDYWNoZSlfYS5wdXNoKF9iKTtfaT0wO19lLmxhYmVsPTE7Y2FzZSAxOmlmKCEoX2k8X2EubGVuZ3RoKSlyZXR1cm5bMyw0XTtuYW1lXzQ9X2FbX2ldO19jPWVuc0NhY2hlO19kPW5hbWVfNDtyZXR1cm5bNCxyZXNvbHZlTmFtZShuYW1lXzQpXTtjYXNlIDI6X2NbX2RdPV9lLnNlbnQoKTtfZS5sYWJlbD0zO2Nhc2UgMzpfaSsrO3JldHVyblszLDFdO2Nhc2UgNDppZihkb21haW4udmVyaWZ5aW5nQ29udHJhY3QmJmVuc0NhY2hlW2RvbWFpbi52ZXJpZnlpbmdDb250cmFjdF0pe2RvbWFpbi52ZXJpZnlpbmdDb250cmFjdD1lbnNDYWNoZVtkb21haW4udmVyaWZ5aW5nQ29udHJhY3RdfXZhbHVlPWVuY29kZXIudmlzaXQodmFsdWUsZnVuY3Rpb24odHlwZSx2YWx1ZSl7aWYodHlwZT09PSJhZGRyZXNzIiYmZW5zQ2FjaGVbdmFsdWVdKXtyZXR1cm4gZW5zQ2FjaGVbdmFsdWVdfXJldHVybiB2YWx1ZX0pO3JldHVyblsyLHtkb21haW46ZG9tYWluLHZhbHVlOnZhbHVlfV19fSl9KX07VHlwZWREYXRhRW5jb2Rlci5nZXRQYXlsb2FkPWZ1bmN0aW9uKGRvbWFpbix0eXBlcyx2YWx1ZSl7VHlwZWREYXRhRW5jb2Rlci5oYXNoRG9tYWluKGRvbWFpbik7dmFyIGRvbWFpblZhbHVlcz17fTt2YXIgZG9tYWluVHlwZXM9W107ZG9tYWluRmllbGROYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpe3ZhciB2YWx1ZT1kb21haW5bbmFtZV07aWYodmFsdWU9PW51bGwpe3JldHVybn1kb21haW5WYWx1ZXNbbmFtZV09ZG9tYWluQ2hlY2tzW25hbWVdKHZhbHVlKTtkb21haW5UeXBlcy5wdXNoKHtuYW1lOm5hbWUsdHlwZTpkb21haW5GaWVsZFR5cGVzW25hbWVdfSl9KTt2YXIgZW5jb2Rlcj1UeXBlZERhdGFFbmNvZGVyLmZyb20odHlwZXMpO3ZhciB0eXBlc1dpdGhEb21haW49KDAsbGliJDMuc2hhbGxvd0NvcHkpKHR5cGVzKTtpZih0eXBlc1dpdGhEb21haW4uRUlQNzEyRG9tYWluKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ0eXBlcyBtdXN0IG5vdCBjb250YWluIEVJUDcxMkRvbWFpbiB0eXBlIiwidHlwZXMuRUlQNzEyRG9tYWluIix0eXBlcyl9ZWxzZXt0eXBlc1dpdGhEb21haW4uRUlQNzEyRG9tYWluPWRvbWFpblR5cGVzfWVuY29kZXIuZW5jb2RlKHZhbHVlKTtyZXR1cm57dHlwZXM6dHlwZXNXaXRoRG9tYWluLGRvbWFpbjpkb21haW5WYWx1ZXMscHJpbWFyeVR5cGU6ZW5jb2Rlci5wcmltYXJ5VHlwZSxtZXNzYWdlOmVuY29kZXIudmlzaXQodmFsdWUsZnVuY3Rpb24odHlwZSx2YWx1ZSl7aWYodHlwZS5tYXRjaCgvXmJ5dGVzKFxkKikvKSl7cmV0dXJuKDAsbGliJDEuaGV4bGlmeSkoKDAsbGliJDEuYXJyYXlpZnkpKHZhbHVlKSl9aWYodHlwZS5tYXRjaCgvXnU/aW50Lykpe3JldHVybiBsaWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZSkudG9TdHJpbmcoKX1zd2l0Y2godHlwZSl7Y2FzZSJhZGRyZXNzIjpyZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKTtjYXNlImJvb2wiOnJldHVybiEhdmFsdWU7Y2FzZSJzdHJpbmciOmlmKHR5cGVvZiB2YWx1ZSE9PSJzdHJpbmciKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIHN0cmluZyIsInZhbHVlIix2YWx1ZSl9cmV0dXJuIHZhbHVlfXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bnN1cHBvcnRlZCB0eXBlIiwidHlwZSIsdHlwZSl9KX19O3JldHVybiBUeXBlZERhdGFFbmNvZGVyfSgpO2V4cG9ydHMuVHlwZWREYXRhRW5jb2Rlcj1UeXBlZERhdGFFbmNvZGVyfSk7dmFyIHR5cGVkRGF0YSQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHR5cGVkRGF0YSk7dmFyIGxpYiRjPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5fVHlwZWREYXRhRW5jb2Rlcj1leHBvcnRzLmhhc2hNZXNzYWdlPWV4cG9ydHMubWVzc2FnZVByZWZpeD1leHBvcnRzLmVuc05vcm1hbGl6ZT1leHBvcnRzLmlzVmFsaWROYW1lPWV4cG9ydHMubmFtZWhhc2g9ZXhwb3J0cy5kbnNFbmNvZGU9ZXhwb3J0cy5pZD12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImlkIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBpZF8xLmlkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJkbnNFbmNvZGUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5hbWVoYXNoXzEuZG5zRW5jb2RlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJpc1ZhbGlkTmFtZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmFtZWhhc2hfMS5pc1ZhbGlkTmFtZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywibmFtZWhhc2giLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5hbWVoYXNoXzEubmFtZWhhc2h9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImhhc2hNZXNzYWdlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBtZXNzYWdlLmhhc2hNZXNzYWdlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJtZXNzYWdlUHJlZml4Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBtZXNzYWdlLm1lc3NhZ2VQcmVmaXh9fSk7dmFyIG5hbWVoYXNoXzI9bmFtZWhhc2hfMTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZW5zTm9ybWFsaXplIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBuYW1laGFzaF8yLmVuc05vcm1hbGl6ZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX1R5cGVkRGF0YUVuY29kZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVkRGF0YS5UeXBlZERhdGFFbmNvZGVyfX0pfSk7dmFyIGluZGV4JGE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJGMpO3ZhciBfaW50ZXJmYWNlPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuSW50ZXJmYWNlPWV4cG9ydHMuSW5kZXhlZD1leHBvcnRzLkVycm9yRGVzY3JpcHRpb249ZXhwb3J0cy5UcmFuc2FjdGlvbkRlc2NyaXB0aW9uPWV4cG9ydHMuTG9nRGVzY3JpcHRpb249ZXhwb3J0cy5jaGVja1Jlc3VsdEVycm9ycz12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImNoZWNrUmVzdWx0RXJyb3JzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBhYnN0cmFjdENvZGVyLmNoZWNrUmVzdWx0RXJyb3JzfX0pO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kOC52ZXJzaW9uKTt2YXIgTG9nRGVzY3JpcHRpb249ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoTG9nRGVzY3JpcHRpb24sX3N1cGVyKTtmdW5jdGlvbiBMb2dEZXNjcmlwdGlvbigpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBMb2dEZXNjcmlwdGlvbn0obGliJDMuRGVzY3JpcHRpb24pO2V4cG9ydHMuTG9nRGVzY3JpcHRpb249TG9nRGVzY3JpcHRpb247dmFyIFRyYW5zYWN0aW9uRGVzY3JpcHRpb249ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoVHJhbnNhY3Rpb25EZXNjcmlwdGlvbixfc3VwZXIpO2Z1bmN0aW9uIFRyYW5zYWN0aW9uRGVzY3JpcHRpb24oKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gVHJhbnNhY3Rpb25EZXNjcmlwdGlvbn0obGliJDMuRGVzY3JpcHRpb24pO2V4cG9ydHMuVHJhbnNhY3Rpb25EZXNjcmlwdGlvbj1UcmFuc2FjdGlvbkRlc2NyaXB0aW9uO3ZhciBFcnJvckRlc2NyaXB0aW9uPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEVycm9yRGVzY3JpcHRpb24sX3N1cGVyKTtmdW5jdGlvbiBFcnJvckRlc2NyaXB0aW9uKCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIEVycm9yRGVzY3JpcHRpb259KGxpYiQzLkRlc2NyaXB0aW9uKTtleHBvcnRzLkVycm9yRGVzY3JpcHRpb249RXJyb3JEZXNjcmlwdGlvbjt2YXIgSW5kZXhlZD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhJbmRleGVkLF9zdXBlcik7ZnVuY3Rpb24gSW5kZXhlZCgpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUluZGV4ZWQuaXNJbmRleGVkPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4hISh2YWx1ZSYmdmFsdWUuX2lzSW5kZXhlZCl9O3JldHVybiBJbmRleGVkfShsaWIkMy5EZXNjcmlwdGlvbik7ZXhwb3J0cy5JbmRleGVkPUluZGV4ZWQ7dmFyIEJ1aWx0aW5FcnJvcnM9eyIweDA4YzM3OWEwIjp7c2lnbmF0dXJlOiJFcnJvcihzdHJpbmcpIixuYW1lOiJFcnJvciIsaW5wdXRzOlsic3RyaW5nIl0scmVhc29uOnRydWV9LCIweDRlNDg3YjcxIjp7c2lnbmF0dXJlOiJQYW5pYyh1aW50MjU2KSIsbmFtZToiUGFuaWMiLGlucHV0czpbInVpbnQyNTYiXX19O2Z1bmN0aW9uIHdyYXBBY2Nlc3NFcnJvcihwcm9wZXJ0eSxlcnJvcil7dmFyIHdyYXA9bmV3IEVycm9yKCJkZWZlcnJlZCBlcnJvciBkdXJpbmcgQUJJIGRlY29kaW5nIHRyaWdnZXJlZCBhY2Nlc3NpbmcgIitwcm9wZXJ0eSk7d3JhcC5lcnJvcj1lcnJvcjtyZXR1cm4gd3JhcH12YXIgSW50ZXJmYWNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gSW50ZXJmYWNlKGZyYWdtZW50cyQxKXt2YXIgX25ld1RhcmdldD10aGlzLmNvbnN0cnVjdG9yO3ZhciBfdGhpcz10aGlzO3ZhciBhYmk9W107aWYodHlwZW9mIGZyYWdtZW50cyQxPT09InN0cmluZyIpe2FiaT1KU09OLnBhcnNlKGZyYWdtZW50cyQxKX1lbHNle2FiaT1mcmFnbWVudHMkMX0oMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiZnJhZ21lbnRzIixhYmkubWFwKGZ1bmN0aW9uKGZyYWdtZW50KXtyZXR1cm4gZnJhZ21lbnRzLkZyYWdtZW50LmZyb20oZnJhZ21lbnQpfSkuZmlsdGVyKGZ1bmN0aW9uKGZyYWdtZW50KXtyZXR1cm4gZnJhZ21lbnQhPW51bGx9KSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsIl9hYmlDb2RlciIsKDAsbGliJDMuZ2V0U3RhdGljKShfbmV3VGFyZ2V0LCJnZXRBYmlDb2RlciIpKCkpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJmdW5jdGlvbnMiLHt9KTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiZXJyb3JzIix7fSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsImV2ZW50cyIse30pOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJzdHJ1Y3RzIix7fSk7dGhpcy5mcmFnbWVudHMuZm9yRWFjaChmdW5jdGlvbihmcmFnbWVudCl7dmFyIGJ1Y2tldD1udWxsO3N3aXRjaChmcmFnbWVudC50eXBlKXtjYXNlImNvbnN0cnVjdG9yIjppZihfdGhpcy5kZXBsb3kpe2xvZ2dlci53YXJuKCJkdXBsaWNhdGUgZGVmaW5pdGlvbiAtIGNvbnN0cnVjdG9yIik7cmV0dXJufSgwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShfdGhpcywiZGVwbG95IixmcmFnbWVudCk7cmV0dXJuO2Nhc2UiZnVuY3Rpb24iOmJ1Y2tldD1fdGhpcy5mdW5jdGlvbnM7YnJlYWs7Y2FzZSJldmVudCI6YnVja2V0PV90aGlzLmV2ZW50czticmVhaztjYXNlImVycm9yIjpidWNrZXQ9X3RoaXMuZXJyb3JzO2JyZWFrO2RlZmF1bHQ6cmV0dXJufXZhciBzaWduYXR1cmU9ZnJhZ21lbnQuZm9ybWF0KCk7aWYoYnVja2V0W3NpZ25hdHVyZV0pe2xvZ2dlci53YXJuKCJkdXBsaWNhdGUgZGVmaW5pdGlvbiAtICIrc2lnbmF0dXJlKTtyZXR1cm59YnVja2V0W3NpZ25hdHVyZV09ZnJhZ21lbnR9KTtpZighdGhpcy5kZXBsb3kpeygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJkZXBsb3kiLGZyYWdtZW50cy5Db25zdHJ1Y3RvckZyYWdtZW50LmZyb20oe3BheWFibGU6ZmFsc2UsdHlwZToiY29uc3RydWN0b3IifSkpfSgwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJfaXNJbnRlcmZhY2UiLHRydWUpfUludGVyZmFjZS5wcm90b3R5cGUuZm9ybWF0PWZ1bmN0aW9uKGZvcm1hdCl7aWYoIWZvcm1hdCl7Zm9ybWF0PWZyYWdtZW50cy5Gb3JtYXRUeXBlcy5mdWxsfWlmKGZvcm1hdD09PWZyYWdtZW50cy5Gb3JtYXRUeXBlcy5zaWdoYXNoKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnRlcmZhY2UgZG9lcyBub3Qgc3VwcG9ydCBmb3JtYXR0aW5nIHNpZ2hhc2giLCJmb3JtYXQiLGZvcm1hdCl9dmFyIGFiaT10aGlzLmZyYWdtZW50cy5tYXAoZnVuY3Rpb24oZnJhZ21lbnQpe3JldHVybiBmcmFnbWVudC5mb3JtYXQoZm9ybWF0KX0pO2lmKGZvcm1hdD09PWZyYWdtZW50cy5Gb3JtYXRUeXBlcy5qc29uKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYWJpLm1hcChmdW5jdGlvbihqKXtyZXR1cm4gSlNPTi5wYXJzZShqKX0pKX1yZXR1cm4gYWJpfTtJbnRlcmZhY2UuZ2V0QWJpQ29kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gYWJpQ29kZXIuZGVmYXVsdEFiaUNvZGVyfTtJbnRlcmZhY2UuZ2V0QWRkcmVzcz1mdW5jdGlvbihhZGRyZXNzKXtyZXR1cm4oMCxsaWIkNi5nZXRBZGRyZXNzKShhZGRyZXNzKX07SW50ZXJmYWNlLmdldFNpZ2hhc2g9ZnVuY3Rpb24oZnJhZ21lbnQpe3JldHVybigwLGxpYiQxLmhleERhdGFTbGljZSkoKDAsbGliJGMuaWQpKGZyYWdtZW50LmZvcm1hdCgpKSwwLDQpfTtJbnRlcmZhY2UuZ2V0RXZlbnRUb3BpYz1mdW5jdGlvbihldmVudEZyYWdtZW50KXtyZXR1cm4oMCxsaWIkYy5pZCkoZXZlbnRGcmFnbWVudC5mb3JtYXQoKSl9O0ludGVyZmFjZS5wcm90b3R5cGUuZ2V0RnVuY3Rpb249ZnVuY3Rpb24obmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoKXtpZigoMCxsaWIkMS5pc0hleFN0cmluZykobmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoKSl7Zm9yKHZhciBuYW1lXzEgaW4gdGhpcy5mdW5jdGlvbnMpe2lmKG5hbWVPclNpZ25hdHVyZU9yU2lnaGFzaD09PXRoaXMuZ2V0U2lnaGFzaChuYW1lXzEpKXtyZXR1cm4gdGhpcy5mdW5jdGlvbnNbbmFtZV8xXX19bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibm8gbWF0Y2hpbmcgZnVuY3Rpb24iLCJzaWdoYXNoIixuYW1lT3JTaWduYXR1cmVPclNpZ2hhc2gpfWlmKG5hbWVPclNpZ25hdHVyZU9yU2lnaGFzaC5pbmRleE9mKCIoIik9PT0tMSl7dmFyIG5hbWVfMj1uYW1lT3JTaWduYXR1cmVPclNpZ2hhc2gudHJpbSgpO3ZhciBtYXRjaGluZz1PYmplY3Qua2V5cyh0aGlzLmZ1bmN0aW9ucykuZmlsdGVyKGZ1bmN0aW9uKGYpe3JldHVybiBmLnNwbGl0KCIoIilbMF09PT1uYW1lXzJ9KTtpZihtYXRjaGluZy5sZW5ndGg9PT0wKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJubyBtYXRjaGluZyBmdW5jdGlvbiIsIm5hbWUiLG5hbWVfMil9ZWxzZSBpZihtYXRjaGluZy5sZW5ndGg+MSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibXVsdGlwbGUgbWF0Y2hpbmcgZnVuY3Rpb25zIiwibmFtZSIsbmFtZV8yKX1yZXR1cm4gdGhpcy5mdW5jdGlvbnNbbWF0Y2hpbmdbMF1dfXZhciByZXN1bHQ9dGhpcy5mdW5jdGlvbnNbZnJhZ21lbnRzLkZ1bmN0aW9uRnJhZ21lbnQuZnJvbVN0cmluZyhuYW1lT3JTaWduYXR1cmVPclNpZ2hhc2gpLmZvcm1hdCgpXTtpZighcmVzdWx0KXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJubyBtYXRjaGluZyBmdW5jdGlvbiIsInNpZ25hdHVyZSIsbmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoKX1yZXR1cm4gcmVzdWx0fTtJbnRlcmZhY2UucHJvdG90eXBlLmdldEV2ZW50PWZ1bmN0aW9uKG5hbWVPclNpZ25hdHVyZU9yVG9waWMpe2lmKCgwLGxpYiQxLmlzSGV4U3RyaW5nKShuYW1lT3JTaWduYXR1cmVPclRvcGljKSl7dmFyIHRvcGljaGFzaD1uYW1lT3JTaWduYXR1cmVPclRvcGljLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciBuYW1lXzMgaW4gdGhpcy5ldmVudHMpe2lmKHRvcGljaGFzaD09PXRoaXMuZ2V0RXZlbnRUb3BpYyhuYW1lXzMpKXtyZXR1cm4gdGhpcy5ldmVudHNbbmFtZV8zXX19bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibm8gbWF0Y2hpbmcgZXZlbnQiLCJ0b3BpY2hhc2giLHRvcGljaGFzaCl9aWYobmFtZU9yU2lnbmF0dXJlT3JUb3BpYy5pbmRleE9mKCIoIik9PT0tMSl7dmFyIG5hbWVfND1uYW1lT3JTaWduYXR1cmVPclRvcGljLnRyaW0oKTt2YXIgbWF0Y2hpbmc9T2JqZWN0LmtleXModGhpcy5ldmVudHMpLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZi5zcGxpdCgiKCIpWzBdPT09bmFtZV80fSk7aWYobWF0Y2hpbmcubGVuZ3RoPT09MCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibm8gbWF0Y2hpbmcgZXZlbnQiLCJuYW1lIixuYW1lXzQpfWVsc2UgaWYobWF0Y2hpbmcubGVuZ3RoPjEpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm11bHRpcGxlIG1hdGNoaW5nIGV2ZW50cyIsIm5hbWUiLG5hbWVfNCl9cmV0dXJuIHRoaXMuZXZlbnRzW21hdGNoaW5nWzBdXX12YXIgcmVzdWx0PXRoaXMuZXZlbnRzW2ZyYWdtZW50cy5FdmVudEZyYWdtZW50LmZyb21TdHJpbmcobmFtZU9yU2lnbmF0dXJlT3JUb3BpYykuZm9ybWF0KCldO2lmKCFyZXN1bHQpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm5vIG1hdGNoaW5nIGV2ZW50Iiwic2lnbmF0dXJlIixuYW1lT3JTaWduYXR1cmVPclRvcGljKX1yZXR1cm4gcmVzdWx0fTtJbnRlcmZhY2UucHJvdG90eXBlLmdldEVycm9yPWZ1bmN0aW9uKG5hbWVPclNpZ25hdHVyZU9yU2lnaGFzaCl7aWYoKDAsbGliJDEuaXNIZXhTdHJpbmcpKG5hbWVPclNpZ25hdHVyZU9yU2lnaGFzaCkpe3ZhciBnZXRTaWdoYXNoPSgwLGxpYiQzLmdldFN0YXRpYykodGhpcy5jb25zdHJ1Y3RvciwiZ2V0U2lnaGFzaCIpO2Zvcih2YXIgbmFtZV81IGluIHRoaXMuZXJyb3JzKXt2YXIgZXJyb3I9dGhpcy5lcnJvcnNbbmFtZV81XTtpZihuYW1lT3JTaWduYXR1cmVPclNpZ2hhc2g9PT1nZXRTaWdoYXNoKGVycm9yKSl7cmV0dXJuIHRoaXMuZXJyb3JzW25hbWVfNV19fWxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm5vIG1hdGNoaW5nIGVycm9yIiwic2lnaGFzaCIsbmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoKX1pZihuYW1lT3JTaWduYXR1cmVPclNpZ2hhc2guaW5kZXhPZigiKCIpPT09LTEpe3ZhciBuYW1lXzY9bmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoLnRyaW0oKTt2YXIgbWF0Y2hpbmc9T2JqZWN0LmtleXModGhpcy5lcnJvcnMpLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZi5zcGxpdCgiKCIpWzBdPT09bmFtZV82fSk7aWYobWF0Y2hpbmcubGVuZ3RoPT09MCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibm8gbWF0Y2hpbmcgZXJyb3IiLCJuYW1lIixuYW1lXzYpfWVsc2UgaWYobWF0Y2hpbmcubGVuZ3RoPjEpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm11bHRpcGxlIG1hdGNoaW5nIGVycm9ycyIsIm5hbWUiLG5hbWVfNil9cmV0dXJuIHRoaXMuZXJyb3JzW21hdGNoaW5nWzBdXX12YXIgcmVzdWx0PXRoaXMuZXJyb3JzW2ZyYWdtZW50cy5GdW5jdGlvbkZyYWdtZW50LmZyb21TdHJpbmcobmFtZU9yU2lnbmF0dXJlT3JTaWdoYXNoKS5mb3JtYXQoKV07aWYoIXJlc3VsdCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibm8gbWF0Y2hpbmcgZXJyb3IiLCJzaWduYXR1cmUiLG5hbWVPclNpZ25hdHVyZU9yU2lnaGFzaCl9cmV0dXJuIHJlc3VsdH07SW50ZXJmYWNlLnByb3RvdHlwZS5nZXRTaWdoYXNoPWZ1bmN0aW9uKGZyYWdtZW50KXtpZih0eXBlb2YgZnJhZ21lbnQ9PT0ic3RyaW5nIil7dHJ5e2ZyYWdtZW50PXRoaXMuZ2V0RnVuY3Rpb24oZnJhZ21lbnQpfWNhdGNoKGVycm9yKXt0cnl7ZnJhZ21lbnQ9dGhpcy5nZXRFcnJvcihmcmFnbWVudCl9Y2F0Y2goXyl7dGhyb3cgZXJyb3J9fX1yZXR1cm4oMCxsaWIkMy5nZXRTdGF0aWMpKHRoaXMuY29uc3RydWN0b3IsImdldFNpZ2hhc2giKShmcmFnbWVudCl9O0ludGVyZmFjZS5wcm90b3R5cGUuZ2V0RXZlbnRUb3BpYz1mdW5jdGlvbihldmVudEZyYWdtZW50KXtpZih0eXBlb2YgZXZlbnRGcmFnbWVudD09PSJzdHJpbmciKXtldmVudEZyYWdtZW50PXRoaXMuZ2V0RXZlbnQoZXZlbnRGcmFnbWVudCl9cmV0dXJuKDAsbGliJDMuZ2V0U3RhdGljKSh0aGlzLmNvbnN0cnVjdG9yLCJnZXRFdmVudFRvcGljIikoZXZlbnRGcmFnbWVudCl9O0ludGVyZmFjZS5wcm90b3R5cGUuX2RlY29kZVBhcmFtcz1mdW5jdGlvbihwYXJhbXMsZGF0YSl7cmV0dXJuIHRoaXMuX2FiaUNvZGVyLmRlY29kZShwYXJhbXMsZGF0YSl9O0ludGVyZmFjZS5wcm90b3R5cGUuX2VuY29kZVBhcmFtcz1mdW5jdGlvbihwYXJhbXMsdmFsdWVzKXtyZXR1cm4gdGhpcy5fYWJpQ29kZXIuZW5jb2RlKHBhcmFtcyx2YWx1ZXMpfTtJbnRlcmZhY2UucHJvdG90eXBlLmVuY29kZURlcGxveT1mdW5jdGlvbih2YWx1ZXMpe3JldHVybiB0aGlzLl9lbmNvZGVQYXJhbXModGhpcy5kZXBsb3kuaW5wdXRzLHZhbHVlc3x8W10pfTtJbnRlcmZhY2UucHJvdG90eXBlLmRlY29kZUVycm9yUmVzdWx0PWZ1bmN0aW9uKGZyYWdtZW50LGRhdGEpe2lmKHR5cGVvZiBmcmFnbWVudD09PSJzdHJpbmciKXtmcmFnbWVudD10aGlzLmdldEVycm9yKGZyYWdtZW50KX12YXIgYnl0ZXM9KDAsbGliJDEuYXJyYXlpZnkpKGRhdGEpO2lmKCgwLGxpYiQxLmhleGxpZnkpKGJ5dGVzLnNsaWNlKDAsNCkpIT09dGhpcy5nZXRTaWdoYXNoKGZyYWdtZW50KSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiZGF0YSBzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2ggZXJyb3IgIitmcmFnbWVudC5uYW1lKyIuIiwiZGF0YSIsKDAsbGliJDEuaGV4bGlmeSkoYnl0ZXMpKX1yZXR1cm4gdGhpcy5fZGVjb2RlUGFyYW1zKGZyYWdtZW50LmlucHV0cyxieXRlcy5zbGljZSg0KSl9O0ludGVyZmFjZS5wcm90b3R5cGUuZW5jb2RlRXJyb3JSZXN1bHQ9ZnVuY3Rpb24oZnJhZ21lbnQsdmFsdWVzKXtpZih0eXBlb2YgZnJhZ21lbnQ9PT0ic3RyaW5nIil7ZnJhZ21lbnQ9dGhpcy5nZXRFcnJvcihmcmFnbWVudCl9cmV0dXJuKDAsbGliJDEuaGV4bGlmeSkoKDAsbGliJDEuY29uY2F0KShbdGhpcy5nZXRTaWdoYXNoKGZyYWdtZW50KSx0aGlzLl9lbmNvZGVQYXJhbXMoZnJhZ21lbnQuaW5wdXRzLHZhbHVlc3x8W10pXSkpfTtJbnRlcmZhY2UucHJvdG90eXBlLmRlY29kZUZ1bmN0aW9uRGF0YT1mdW5jdGlvbihmdW5jdGlvbkZyYWdtZW50LGRhdGEpe2lmKHR5cGVvZiBmdW5jdGlvbkZyYWdtZW50PT09InN0cmluZyIpe2Z1bmN0aW9uRnJhZ21lbnQ9dGhpcy5nZXRGdW5jdGlvbihmdW5jdGlvbkZyYWdtZW50KX12YXIgYnl0ZXM9KDAsbGliJDEuYXJyYXlpZnkpKGRhdGEpO2lmKCgwLGxpYiQxLmhleGxpZnkpKGJ5dGVzLnNsaWNlKDAsNCkpIT09dGhpcy5nZXRTaWdoYXNoKGZ1bmN0aW9uRnJhZ21lbnQpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJkYXRhIHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaCBmdW5jdGlvbiAiK2Z1bmN0aW9uRnJhZ21lbnQubmFtZSsiLiIsImRhdGEiLCgwLGxpYiQxLmhleGxpZnkpKGJ5dGVzKSl9cmV0dXJuIHRoaXMuX2RlY29kZVBhcmFtcyhmdW5jdGlvbkZyYWdtZW50LmlucHV0cyxieXRlcy5zbGljZSg0KSl9O0ludGVyZmFjZS5wcm90b3R5cGUuZW5jb2RlRnVuY3Rpb25EYXRhPWZ1bmN0aW9uKGZ1bmN0aW9uRnJhZ21lbnQsdmFsdWVzKXtpZih0eXBlb2YgZnVuY3Rpb25GcmFnbWVudD09PSJzdHJpbmciKXtmdW5jdGlvbkZyYWdtZW50PXRoaXMuZ2V0RnVuY3Rpb24oZnVuY3Rpb25GcmFnbWVudCl9cmV0dXJuKDAsbGliJDEuaGV4bGlmeSkoKDAsbGliJDEuY29uY2F0KShbdGhpcy5nZXRTaWdoYXNoKGZ1bmN0aW9uRnJhZ21lbnQpLHRoaXMuX2VuY29kZVBhcmFtcyhmdW5jdGlvbkZyYWdtZW50LmlucHV0cyx2YWx1ZXN8fFtdKV0pKX07SW50ZXJmYWNlLnByb3RvdHlwZS5kZWNvZGVGdW5jdGlvblJlc3VsdD1mdW5jdGlvbihmdW5jdGlvbkZyYWdtZW50LGRhdGEpe2lmKHR5cGVvZiBmdW5jdGlvbkZyYWdtZW50PT09InN0cmluZyIpe2Z1bmN0aW9uRnJhZ21lbnQ9dGhpcy5nZXRGdW5jdGlvbihmdW5jdGlvbkZyYWdtZW50KX12YXIgYnl0ZXM9KDAsbGliJDEuYXJyYXlpZnkpKGRhdGEpO3ZhciByZWFzb249bnVsbDt2YXIgbWVzc2FnZT0iIjt2YXIgZXJyb3JBcmdzPW51bGw7dmFyIGVycm9yTmFtZT1udWxsO3ZhciBlcnJvclNpZ25hdHVyZT1udWxsO3N3aXRjaChieXRlcy5sZW5ndGgldGhpcy5fYWJpQ29kZXIuX2dldFdvcmRTaXplKCkpe2Nhc2UgMDp0cnl7cmV0dXJuIHRoaXMuX2FiaUNvZGVyLmRlY29kZShmdW5jdGlvbkZyYWdtZW50Lm91dHB1dHMsYnl0ZXMpfWNhdGNoKGVycm9yKXt9YnJlYWs7Y2FzZSA0Ont2YXIgc2VsZWN0b3I9KDAsbGliJDEuaGV4bGlmeSkoYnl0ZXMuc2xpY2UoMCw0KSk7dmFyIGJ1aWx0aW49QnVpbHRpbkVycm9yc1tzZWxlY3Rvcl07aWYoYnVpbHRpbil7ZXJyb3JBcmdzPXRoaXMuX2FiaUNvZGVyLmRlY29kZShidWlsdGluLmlucHV0cyxieXRlcy5zbGljZSg0KSk7ZXJyb3JOYW1lPWJ1aWx0aW4ubmFtZTtlcnJvclNpZ25hdHVyZT1idWlsdGluLnNpZ25hdHVyZTtpZihidWlsdGluLnJlYXNvbil7cmVhc29uPWVycm9yQXJnc1swXX1pZihlcnJvck5hbWU9PT0iRXJyb3IiKXttZXNzYWdlPSI7IFZNIEV4Y2VwdGlvbiB3aGlsZSBwcm9jZXNzaW5nIHRyYW5zYWN0aW9uOiByZXZlcnRlZCB3aXRoIHJlYXNvbiBzdHJpbmcgIitKU09OLnN0cmluZ2lmeShlcnJvckFyZ3NbMF0pfWVsc2UgaWYoZXJyb3JOYW1lPT09IlBhbmljIil7bWVzc2FnZT0iOyBWTSBFeGNlcHRpb24gd2hpbGUgcHJvY2Vzc2luZyB0cmFuc2FjdGlvbjogcmV2ZXJ0ZWQgd2l0aCBwYW5pYyBjb2RlICIrZXJyb3JBcmdzWzBdfX1lbHNle3RyeXt2YXIgZXJyb3I9dGhpcy5nZXRFcnJvcihzZWxlY3Rvcik7ZXJyb3JBcmdzPXRoaXMuX2FiaUNvZGVyLmRlY29kZShlcnJvci5pbnB1dHMsYnl0ZXMuc2xpY2UoNCkpO2Vycm9yTmFtZT1lcnJvci5uYW1lO2Vycm9yU2lnbmF0dXJlPWVycm9yLmZvcm1hdCgpfWNhdGNoKGVycm9yKXt9fWJyZWFrfX1yZXR1cm4gbG9nZ2VyLnRocm93RXJyb3IoImNhbGwgcmV2ZXJ0IGV4Y2VwdGlvbiIrbWVzc2FnZSxsaWIuTG9nZ2VyLmVycm9ycy5DQUxMX0VYQ0VQVElPTix7bWV0aG9kOmZ1bmN0aW9uRnJhZ21lbnQuZm9ybWF0KCksZGF0YTooMCxsaWIkMS5oZXhsaWZ5KShkYXRhKSxlcnJvckFyZ3M6ZXJyb3JBcmdzLGVycm9yTmFtZTplcnJvck5hbWUsZXJyb3JTaWduYXR1cmU6ZXJyb3JTaWduYXR1cmUscmVhc29uOnJlYXNvbn0pfTtJbnRlcmZhY2UucHJvdG90eXBlLmVuY29kZUZ1bmN0aW9uUmVzdWx0PWZ1bmN0aW9uKGZ1bmN0aW9uRnJhZ21lbnQsdmFsdWVzKXtpZih0eXBlb2YgZnVuY3Rpb25GcmFnbWVudD09PSJzdHJpbmciKXtmdW5jdGlvbkZyYWdtZW50PXRoaXMuZ2V0RnVuY3Rpb24oZnVuY3Rpb25GcmFnbWVudCl9cmV0dXJuKDAsbGliJDEuaGV4bGlmeSkodGhpcy5fYWJpQ29kZXIuZW5jb2RlKGZ1bmN0aW9uRnJhZ21lbnQub3V0cHV0cyx2YWx1ZXN8fFtdKSl9O0ludGVyZmFjZS5wcm90b3R5cGUuZW5jb2RlRmlsdGVyVG9waWNzPWZ1bmN0aW9uKGV2ZW50RnJhZ21lbnQsdmFsdWVzKXt2YXIgX3RoaXM9dGhpcztpZih0eXBlb2YgZXZlbnRGcmFnbWVudD09PSJzdHJpbmciKXtldmVudEZyYWdtZW50PXRoaXMuZ2V0RXZlbnQoZXZlbnRGcmFnbWVudCl9aWYodmFsdWVzLmxlbmd0aD5ldmVudEZyYWdtZW50LmlucHV0cy5sZW5ndGgpe2xvZ2dlci50aHJvd0Vycm9yKCJ0b28gbWFueSBhcmd1bWVudHMgZm9yICIrZXZlbnRGcmFnbWVudC5mb3JtYXQoKSxsaWIuTG9nZ2VyLmVycm9ycy5VTkVYUEVDVEVEX0FSR1VNRU5ULHthcmd1bWVudDoidmFsdWVzIix2YWx1ZTp2YWx1ZXN9KX12YXIgdG9waWNzPVtdO2lmKCFldmVudEZyYWdtZW50LmFub255bW91cyl7dG9waWNzLnB1c2godGhpcy5nZXRFdmVudFRvcGljKGV2ZW50RnJhZ21lbnQpKX12YXIgZW5jb2RlVG9waWM9ZnVuY3Rpb24ocGFyYW0sdmFsdWUpe2lmKHBhcmFtLnR5cGU9PT0ic3RyaW5nIil7cmV0dXJuKDAsbGliJGMuaWQpKHZhbHVlKX1lbHNlIGlmKHBhcmFtLnR5cGU9PT0iYnl0ZXMiKXtyZXR1cm4oMCxsaWIkNC5rZWNjYWsyNTYpKCgwLGxpYiQxLmhleGxpZnkpKHZhbHVlKSl9aWYocGFyYW0udHlwZT09PSJib29sIiYmdHlwZW9mIHZhbHVlPT09ImJvb2xlYW4iKXt2YWx1ZT12YWx1ZT8iMHgwMSI6IjB4MDAifWlmKHBhcmFtLnR5cGUubWF0Y2goL151P2ludC8pKXt2YWx1ZT1saWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZSkudG9IZXhTdHJpbmcoKX1pZihwYXJhbS50eXBlPT09ImFkZHJlc3MiKXtfdGhpcy5fYWJpQ29kZXIuZW5jb2RlKFsiYWRkcmVzcyJdLFt2YWx1ZV0pfXJldHVybigwLGxpYiQxLmhleFplcm9QYWQpKCgwLGxpYiQxLmhleGxpZnkpKHZhbHVlKSwzMil9O3ZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLGluZGV4KXt2YXIgcGFyYW09ZXZlbnRGcmFnbWVudC5pbnB1dHNbaW5kZXhdO2lmKCFwYXJhbS5pbmRleGVkKXtpZih2YWx1ZSE9bnVsbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiY2Fubm90IGZpbHRlciBub24taW5kZXhlZCBwYXJhbWV0ZXJzOyBtdXN0IGJlIG51bGwiLCJjb250cmFjdC4iK3BhcmFtLm5hbWUsdmFsdWUpfXJldHVybn1pZih2YWx1ZT09bnVsbCl7dG9waWNzLnB1c2gobnVsbCl9ZWxzZSBpZihwYXJhbS5iYXNlVHlwZT09PSJhcnJheSJ8fHBhcmFtLmJhc2VUeXBlPT09InR1cGxlIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiZmlsdGVyaW5nIHdpdGggdHVwbGVzIG9yIGFycmF5cyBub3Qgc3VwcG9ydGVkIiwiY29udHJhY3QuIitwYXJhbS5uYW1lLHZhbHVlKX1lbHNlIGlmKEFycmF5LmlzQXJyYXkodmFsdWUpKXt0b3BpY3MucHVzaCh2YWx1ZS5tYXAoZnVuY3Rpb24odmFsdWUpe3JldHVybiBlbmNvZGVUb3BpYyhwYXJhbSx2YWx1ZSl9KSl9ZWxzZXt0b3BpY3MucHVzaChlbmNvZGVUb3BpYyhwYXJhbSx2YWx1ZSkpfX0pO3doaWxlKHRvcGljcy5sZW5ndGgmJnRvcGljc1t0b3BpY3MubGVuZ3RoLTFdPT09bnVsbCl7dG9waWNzLnBvcCgpfXJldHVybiB0b3BpY3N9O0ludGVyZmFjZS5wcm90b3R5cGUuZW5jb2RlRXZlbnRMb2c9ZnVuY3Rpb24oZXZlbnRGcmFnbWVudCx2YWx1ZXMpe3ZhciBfdGhpcz10aGlzO2lmKHR5cGVvZiBldmVudEZyYWdtZW50PT09InN0cmluZyIpe2V2ZW50RnJhZ21lbnQ9dGhpcy5nZXRFdmVudChldmVudEZyYWdtZW50KX12YXIgdG9waWNzPVtdO3ZhciBkYXRhVHlwZXM9W107dmFyIGRhdGFWYWx1ZXM9W107aWYoIWV2ZW50RnJhZ21lbnQuYW5vbnltb3VzKXt0b3BpY3MucHVzaCh0aGlzLmdldEV2ZW50VG9waWMoZXZlbnRGcmFnbWVudCkpfWlmKHZhbHVlcy5sZW5ndGghPT1ldmVudEZyYWdtZW50LmlucHV0cy5sZW5ndGgpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImV2ZW50IGFyZ3VtZW50cy92YWx1ZXMgbWlzbWF0Y2giLCJ2YWx1ZXMiLHZhbHVlcyl9ZXZlbnRGcmFnbWVudC5pbnB1dHMuZm9yRWFjaChmdW5jdGlvbihwYXJhbSxpbmRleCl7dmFyIHZhbHVlPXZhbHVlc1tpbmRleF07aWYocGFyYW0uaW5kZXhlZCl7aWYocGFyYW0udHlwZT09PSJzdHJpbmciKXt0b3BpY3MucHVzaCgoMCxsaWIkYy5pZCkodmFsdWUpKX1lbHNlIGlmKHBhcmFtLnR5cGU9PT0iYnl0ZXMiKXt0b3BpY3MucHVzaCgoMCxsaWIkNC5rZWNjYWsyNTYpKHZhbHVlKSl9ZWxzZSBpZihwYXJhbS5iYXNlVHlwZT09PSJ0dXBsZSJ8fHBhcmFtLmJhc2VUeXBlPT09ImFycmF5Iil7dGhyb3cgbmV3IEVycm9yKCJub3QgaW1wbGVtZW50ZWQiKX1lbHNle3RvcGljcy5wdXNoKF90aGlzLl9hYmlDb2Rlci5lbmNvZGUoW3BhcmFtLnR5cGVdLFt2YWx1ZV0pKX19ZWxzZXtkYXRhVHlwZXMucHVzaChwYXJhbSk7ZGF0YVZhbHVlcy5wdXNoKHZhbHVlKX19KTtyZXR1cm57ZGF0YTp0aGlzLl9hYmlDb2Rlci5lbmNvZGUoZGF0YVR5cGVzLGRhdGFWYWx1ZXMpLHRvcGljczp0b3BpY3N9fTtJbnRlcmZhY2UucHJvdG90eXBlLmRlY29kZUV2ZW50TG9nPWZ1bmN0aW9uKGV2ZW50RnJhZ21lbnQsZGF0YSx0b3BpY3Mpe2lmKHR5cGVvZiBldmVudEZyYWdtZW50PT09InN0cmluZyIpe2V2ZW50RnJhZ21lbnQ9dGhpcy5nZXRFdmVudChldmVudEZyYWdtZW50KX1pZih0b3BpY3MhPW51bGwmJiFldmVudEZyYWdtZW50LmFub255bW91cyl7dmFyIHRvcGljSGFzaD10aGlzLmdldEV2ZW50VG9waWMoZXZlbnRGcmFnbWVudCk7aWYoISgwLGxpYiQxLmlzSGV4U3RyaW5nKSh0b3BpY3NbMF0sMzIpfHx0b3BpY3NbMF0udG9Mb3dlckNhc2UoKSE9PXRvcGljSGFzaCl7bG9nZ2VyLnRocm93RXJyb3IoImZyYWdtZW50L3RvcGljIG1pc21hdGNoIixsaWIuTG9nZ2VyLmVycm9ycy5JTlZBTElEX0FSR1VNRU5ULHthcmd1bWVudDoidG9waWNzWzBdIixleHBlY3RlZDp0b3BpY0hhc2gsdmFsdWU6dG9waWNzWzBdfSl9dG9waWNzPXRvcGljcy5zbGljZSgxKX12YXIgaW5kZXhlZD1bXTt2YXIgbm9uSW5kZXhlZD1bXTt2YXIgZHluYW1pYz1bXTtldmVudEZyYWdtZW50LmlucHV0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcmFtLGluZGV4KXtpZihwYXJhbS5pbmRleGVkKXtpZihwYXJhbS50eXBlPT09InN0cmluZyJ8fHBhcmFtLnR5cGU9PT0iYnl0ZXMifHxwYXJhbS5iYXNlVHlwZT09PSJ0dXBsZSJ8fHBhcmFtLmJhc2VUeXBlPT09ImFycmF5Iil7aW5kZXhlZC5wdXNoKGZyYWdtZW50cy5QYXJhbVR5cGUuZnJvbU9iamVjdCh7dHlwZToiYnl0ZXMzMiIsbmFtZTpwYXJhbS5uYW1lfSkpO2R5bmFtaWMucHVzaCh0cnVlKX1lbHNle2luZGV4ZWQucHVzaChwYXJhbSk7ZHluYW1pYy5wdXNoKGZhbHNlKX19ZWxzZXtub25JbmRleGVkLnB1c2gocGFyYW0pO2R5bmFtaWMucHVzaChmYWxzZSl9fSk7dmFyIHJlc3VsdEluZGV4ZWQ9dG9waWNzIT1udWxsP3RoaXMuX2FiaUNvZGVyLmRlY29kZShpbmRleGVkLCgwLGxpYiQxLmNvbmNhdCkodG9waWNzKSk6bnVsbDt2YXIgcmVzdWx0Tm9uSW5kZXhlZD10aGlzLl9hYmlDb2Rlci5kZWNvZGUobm9uSW5kZXhlZCxkYXRhLHRydWUpO3ZhciByZXN1bHQ9W107dmFyIG5vbkluZGV4ZWRJbmRleD0wLGluZGV4ZWRJbmRleD0wO2V2ZW50RnJhZ21lbnQuaW5wdXRzLmZvckVhY2goZnVuY3Rpb24ocGFyYW0saW5kZXgpe2lmKHBhcmFtLmluZGV4ZWQpe2lmKHJlc3VsdEluZGV4ZWQ9PW51bGwpe3Jlc3VsdFtpbmRleF09bmV3IEluZGV4ZWQoe19pc0luZGV4ZWQ6dHJ1ZSxoYXNoOm51bGx9KX1lbHNlIGlmKGR5bmFtaWNbaW5kZXhdKXtyZXN1bHRbaW5kZXhdPW5ldyBJbmRleGVkKHtfaXNJbmRleGVkOnRydWUsaGFzaDpyZXN1bHRJbmRleGVkW2luZGV4ZWRJbmRleCsrXX0pfWVsc2V7dHJ5e3Jlc3VsdFtpbmRleF09cmVzdWx0SW5kZXhlZFtpbmRleGVkSW5kZXgrK119Y2F0Y2goZXJyb3Ipe3Jlc3VsdFtpbmRleF09ZXJyb3J9fX1lbHNle3RyeXtyZXN1bHRbaW5kZXhdPXJlc3VsdE5vbkluZGV4ZWRbbm9uSW5kZXhlZEluZGV4KytdfWNhdGNoKGVycm9yKXtyZXN1bHRbaW5kZXhdPWVycm9yfX1pZihwYXJhbS5uYW1lJiZyZXN1bHRbcGFyYW0ubmFtZV09PW51bGwpe3ZhciB2YWx1ZV8xPXJlc3VsdFtpbmRleF07aWYodmFsdWVfMSBpbnN0YW5jZW9mIEVycm9yKXtPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzdWx0LHBhcmFtLm5hbWUse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXt0aHJvdyB3cmFwQWNjZXNzRXJyb3IoInByb3BlcnR5ICIrSlNPTi5zdHJpbmdpZnkocGFyYW0ubmFtZSksdmFsdWVfMSl9fSl9ZWxzZXtyZXN1bHRbcGFyYW0ubmFtZV09dmFsdWVfMX19fSk7dmFyIF9sb29wXzE9ZnVuY3Rpb24oaSl7dmFyIHZhbHVlPXJlc3VsdFtpXTtpZih2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKXtPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzdWx0LGkse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXt0aHJvdyB3cmFwQWNjZXNzRXJyb3IoImluZGV4ICIraSx2YWx1ZSl9fSl9fTtmb3IodmFyIGk9MDtpPHJlc3VsdC5sZW5ndGg7aSsrKXtfbG9vcF8xKGkpfXJldHVybiBPYmplY3QuZnJlZXplKHJlc3VsdCl9O0ludGVyZmFjZS5wcm90b3R5cGUucGFyc2VUcmFuc2FjdGlvbj1mdW5jdGlvbih0eCl7dmFyIGZyYWdtZW50PXRoaXMuZ2V0RnVuY3Rpb24odHguZGF0YS5zdWJzdHJpbmcoMCwxMCkudG9Mb3dlckNhc2UoKSk7aWYoIWZyYWdtZW50KXtyZXR1cm4gbnVsbH1yZXR1cm4gbmV3IFRyYW5zYWN0aW9uRGVzY3JpcHRpb24oe2FyZ3M6dGhpcy5fYWJpQ29kZXIuZGVjb2RlKGZyYWdtZW50LmlucHV0cywiMHgiK3R4LmRhdGEuc3Vic3RyaW5nKDEwKSksZnVuY3Rpb25GcmFnbWVudDpmcmFnbWVudCxuYW1lOmZyYWdtZW50Lm5hbWUsc2lnbmF0dXJlOmZyYWdtZW50LmZvcm1hdCgpLHNpZ2hhc2g6dGhpcy5nZXRTaWdoYXNoKGZyYWdtZW50KSx2YWx1ZTpsaWIkMi5CaWdOdW1iZXIuZnJvbSh0eC52YWx1ZXx8IjAiKX0pfTtJbnRlcmZhY2UucHJvdG90eXBlLnBhcnNlTG9nPWZ1bmN0aW9uKGxvZyl7dmFyIGZyYWdtZW50PXRoaXMuZ2V0RXZlbnQobG9nLnRvcGljc1swXSk7aWYoIWZyYWdtZW50fHxmcmFnbWVudC5hbm9ueW1vdXMpe3JldHVybiBudWxsfXJldHVybiBuZXcgTG9nRGVzY3JpcHRpb24oe2V2ZW50RnJhZ21lbnQ6ZnJhZ21lbnQsbmFtZTpmcmFnbWVudC5uYW1lLHNpZ25hdHVyZTpmcmFnbWVudC5mb3JtYXQoKSx0b3BpYzp0aGlzLmdldEV2ZW50VG9waWMoZnJhZ21lbnQpLGFyZ3M6dGhpcy5kZWNvZGVFdmVudExvZyhmcmFnbWVudCxsb2cuZGF0YSxsb2cudG9waWNzKX0pfTtJbnRlcmZhY2UucHJvdG90eXBlLnBhcnNlRXJyb3I9ZnVuY3Rpb24oZGF0YSl7dmFyIGhleERhdGE9KDAsbGliJDEuaGV4bGlmeSkoZGF0YSk7dmFyIGZyYWdtZW50PXRoaXMuZ2V0RXJyb3IoaGV4RGF0YS5zdWJzdHJpbmcoMCwxMCkudG9Mb3dlckNhc2UoKSk7aWYoIWZyYWdtZW50KXtyZXR1cm4gbnVsbH1yZXR1cm4gbmV3IEVycm9yRGVzY3JpcHRpb24oe2FyZ3M6dGhpcy5fYWJpQ29kZXIuZGVjb2RlKGZyYWdtZW50LmlucHV0cywiMHgiK2hleERhdGEuc3Vic3RyaW5nKDEwKSksZXJyb3JGcmFnbWVudDpmcmFnbWVudCxuYW1lOmZyYWdtZW50Lm5hbWUsc2lnbmF0dXJlOmZyYWdtZW50LmZvcm1hdCgpLHNpZ2hhc2g6dGhpcy5nZXRTaWdoYXNoKGZyYWdtZW50KX0pfTtJbnRlcmZhY2UuaXNJbnRlcmZhY2U9ZnVuY3Rpb24odmFsdWUpe3JldHVybiEhKHZhbHVlJiZ2YWx1ZS5faXNJbnRlcmZhY2UpfTtyZXR1cm4gSW50ZXJmYWNlfSgpO2V4cG9ydHMuSW50ZXJmYWNlPUludGVyZmFjZX0pO3ZhciBfaW50ZXJmYWNlJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX2ludGVyZmFjZSk7dmFyIGxpYiRkPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5UcmFuc2FjdGlvbkRlc2NyaXB0aW9uPWV4cG9ydHMuTG9nRGVzY3JpcHRpb249ZXhwb3J0cy5jaGVja1Jlc3VsdEVycm9ycz1leHBvcnRzLkluZGV4ZWQ9ZXhwb3J0cy5JbnRlcmZhY2U9ZXhwb3J0cy5kZWZhdWx0QWJpQ29kZXI9ZXhwb3J0cy5BYmlDb2Rlcj1leHBvcnRzLkZvcm1hdFR5cGVzPWV4cG9ydHMuUGFyYW1UeXBlPWV4cG9ydHMuRnVuY3Rpb25GcmFnbWVudD1leHBvcnRzLkZyYWdtZW50PWV4cG9ydHMuRXZlbnRGcmFnbWVudD1leHBvcnRzLkVycm9yRnJhZ21lbnQ9ZXhwb3J0cy5Db25zdHJ1Y3RvckZyYWdtZW50PXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQ29uc3RydWN0b3JGcmFnbWVudCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnJhZ21lbnRzLkNvbnN0cnVjdG9yRnJhZ21lbnR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkVycm9yRnJhZ21lbnQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZyYWdtZW50cy5FcnJvckZyYWdtZW50fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJFdmVudEZyYWdtZW50Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBmcmFnbWVudHMuRXZlbnRGcmFnbWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRm9ybWF0VHlwZXMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZyYWdtZW50cy5Gb3JtYXRUeXBlc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRnJhZ21lbnQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZyYWdtZW50cy5GcmFnbWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRnVuY3Rpb25GcmFnbWVudCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnJhZ21lbnRzLkZ1bmN0aW9uRnJhZ21lbnR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlBhcmFtVHlwZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnJhZ21lbnRzLlBhcmFtVHlwZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQWJpQ29kZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFiaUNvZGVyLkFiaUNvZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJkZWZhdWx0QWJpQ29kZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFiaUNvZGVyLmRlZmF1bHRBYmlDb2Rlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiY2hlY2tSZXN1bHRFcnJvcnMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIF9pbnRlcmZhY2UuY2hlY2tSZXN1bHRFcnJvcnN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkluZGV4ZWQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIF9pbnRlcmZhY2UuSW5kZXhlZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiSW50ZXJmYWNlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBfaW50ZXJmYWNlLkludGVyZmFjZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiTG9nRGVzY3JpcHRpb24iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIF9pbnRlcmZhY2UuTG9nRGVzY3JpcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlRyYW5zYWN0aW9uRGVzY3JpcHRpb24iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIF9pbnRlcmZhY2UuVHJhbnNhY3Rpb25EZXNjcmlwdGlvbn19KX0pO3ZhciBpbmRleCRiPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiRkKTt2YXIgX3ZlcnNpb24kaT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJhYnN0cmFjdC1wcm92aWRlci81LjcuMCJ9KTt2YXIgX3ZlcnNpb24kaj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiRpKTt2YXIgbGliJGU9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7dmFyIF9fYXdhaXRlcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19hd2FpdGVyfHxmdW5jdGlvbih0aGlzQXJnLF9hcmd1bWVudHMsUCxnZW5lcmF0b3Ipe2Z1bmN0aW9uIGFkb3B0KHZhbHVlKXtyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQP3ZhbHVlOm5ldyBQKGZ1bmN0aW9uKHJlc29sdmUpe3Jlc29sdmUodmFsdWUpfSl9cmV0dXJuIG5ldyhQfHwoUD1Qcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2Z1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHN0ZXAocmVzdWx0KXtyZXN1bHQuZG9uZT9yZXNvbHZlKHJlc3VsdC52YWx1ZSk6YWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCl9c3RlcCgoZ2VuZXJhdG9yPWdlbmVyYXRvci5hcHBseSh0aGlzQXJnLF9hcmd1bWVudHN8fFtdKSkubmV4dCgpKX0pfTt2YXIgX19nZW5lcmF0b3I9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0aGlzQXJnLGJvZHkpe3ZhciBfPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZih0WzBdJjEpdGhyb3cgdFsxXTtyZXR1cm4gdFsxXX0sdHJ5czpbXSxvcHM6W119LGYseSx0LGc7cmV0dXJuIGc9e25leHQ6dmVyYigwKSx0aHJvdzp2ZXJiKDEpLHJldHVybjp2ZXJiKDIpfSx0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmKGdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZztmdW5jdGlvbiB2ZXJiKG4pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gc3RlcChbbix2XSl9fWZ1bmN0aW9uIHN0ZXAob3Ape2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO3doaWxlKF8pdHJ5e2lmKGY9MSx5JiYodD1vcFswXSYyP3lbInJldHVybiJdOm9wWzBdP3lbInRocm93Il18fCgodD15WyJyZXR1cm4iXSkmJnQuY2FsbCh5KSwwKTp5Lm5leHQpJiYhKHQ9dC5jYWxsKHksb3BbMV0pKS5kb25lKXJldHVybiB0O2lmKHk9MCx0KW9wPVtvcFswXSYyLHQudmFsdWVdO3N3aXRjaChvcFswXSl7Y2FzZSAwOmNhc2UgMTp0PW9wO2JyZWFrO2Nhc2UgNDpfLmxhYmVsKys7cmV0dXJue3ZhbHVlOm9wWzFdLGRvbmU6ZmFsc2V9O2Nhc2UgNTpfLmxhYmVsKys7eT1vcFsxXTtvcD1bMF07Y29udGludWU7Y2FzZSA3Om9wPV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEodD1fLnRyeXMsdD10Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdKSYmKG9wWzBdPT09Nnx8b3BbMF09PT0yKSl7Xz0wO2NvbnRpbnVlfWlmKG9wWzBdPT09MyYmKCF0fHxvcFsxXT50WzBdJiZvcFsxXTx0WzNdKSl7Xy5sYWJlbD1vcFsxXTticmVha31pZihvcFswXT09PTYmJl8ubGFiZWw8dFsxXSl7Xy5sYWJlbD10WzFdO3Q9b3A7YnJlYWt9aWYodCYmXy5sYWJlbDx0WzJdKXtfLmxhYmVsPXRbMl07Xy5vcHMucHVzaChvcCk7YnJlYWt9aWYodFsyXSlfLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWV9b3A9Ym9keS5jYWxsKHRoaXNBcmcsXyl9Y2F0Y2goZSl7b3A9WzYsZV07eT0wfWZpbmFsbHl7Zj10PTB9aWYob3BbMF0mNSl0aHJvdyBvcFsxXTtyZXR1cm57dmFsdWU6b3BbMF0/b3BbMV06dm9pZCAwLGRvbmU6dHJ1ZX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLlByb3ZpZGVyPWV4cG9ydHMuVHJhbnNhY3Rpb25PcmRlckZvcmtFdmVudD1leHBvcnRzLlRyYW5zYWN0aW9uRm9ya0V2ZW50PWV4cG9ydHMuQmxvY2tGb3JrRXZlbnQ9ZXhwb3J0cy5Gb3JrRXZlbnQ9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kaS52ZXJzaW9uKTt2YXIgRm9ya0V2ZW50PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEZvcmtFdmVudCxfc3VwZXIpO2Z1bmN0aW9uIEZvcmtFdmVudCgpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUZvcmtFdmVudC5pc0ZvcmtFdmVudD1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUmJnZhbHVlLl9pc0ZvcmtFdmVudCl9O3JldHVybiBGb3JrRXZlbnR9KGxpYiQzLkRlc2NyaXB0aW9uKTtleHBvcnRzLkZvcmtFdmVudD1Gb3JrRXZlbnQ7dmFyIEJsb2NrRm9ya0V2ZW50PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEJsb2NrRm9ya0V2ZW50LF9zdXBlcik7ZnVuY3Rpb24gQmxvY2tGb3JrRXZlbnQoYmxvY2tIYXNoLGV4cGlyeSl7dmFyIF90aGlzPXRoaXM7aWYoISgwLGxpYiQxLmlzSGV4U3RyaW5nKShibG9ja0hhc2gsMzIpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGJsb2NrSGFzaCIsImJsb2NrSGFzaCIsYmxvY2tIYXNoKX1fdGhpcz1fc3VwZXIuY2FsbCh0aGlzLHtfaXNGb3JrRXZlbnQ6dHJ1ZSxfaXNCbG9ja0ZvcmtFdmVudDp0cnVlLGV4cGlyeTpleHBpcnl8fDAsYmxvY2tIYXNoOmJsb2NrSGFzaH0pfHx0aGlzO3JldHVybiBfdGhpc31yZXR1cm4gQmxvY2tGb3JrRXZlbnR9KEZvcmtFdmVudCk7ZXhwb3J0cy5CbG9ja0ZvcmtFdmVudD1CbG9ja0ZvcmtFdmVudDt2YXIgVHJhbnNhY3Rpb25Gb3JrRXZlbnQ9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoVHJhbnNhY3Rpb25Gb3JrRXZlbnQsX3N1cGVyKTtmdW5jdGlvbiBUcmFuc2FjdGlvbkZvcmtFdmVudChoYXNoLGV4cGlyeSl7dmFyIF90aGlzPXRoaXM7aWYoISgwLGxpYiQxLmlzSGV4U3RyaW5nKShoYXNoLDMyKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCB0cmFuc2FjdGlvbiBoYXNoIiwiaGFzaCIsaGFzaCl9X3RoaXM9X3N1cGVyLmNhbGwodGhpcyx7X2lzRm9ya0V2ZW50OnRydWUsX2lzVHJhbnNhY3Rpb25Gb3JrRXZlbnQ6dHJ1ZSxleHBpcnk6ZXhwaXJ5fHwwLGhhc2g6aGFzaH0pfHx0aGlzO3JldHVybiBfdGhpc31yZXR1cm4gVHJhbnNhY3Rpb25Gb3JrRXZlbnR9KEZvcmtFdmVudCk7ZXhwb3J0cy5UcmFuc2FjdGlvbkZvcmtFdmVudD1UcmFuc2FjdGlvbkZvcmtFdmVudDt2YXIgVHJhbnNhY3Rpb25PcmRlckZvcmtFdmVudD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhUcmFuc2FjdGlvbk9yZGVyRm9ya0V2ZW50LF9zdXBlcik7ZnVuY3Rpb24gVHJhbnNhY3Rpb25PcmRlckZvcmtFdmVudChiZWZvcmVIYXNoLGFmdGVySGFzaCxleHBpcnkpe3ZhciBfdGhpcz10aGlzO2lmKCEoMCxsaWIkMS5pc0hleFN0cmluZykoYmVmb3JlSGFzaCwzMikpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdHJhbnNhY3Rpb24gaGFzaCIsImJlZm9yZUhhc2giLGJlZm9yZUhhc2gpfWlmKCEoMCxsaWIkMS5pc0hleFN0cmluZykoYWZ0ZXJIYXNoLDMyKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCB0cmFuc2FjdGlvbiBoYXNoIiwiYWZ0ZXJIYXNoIixhZnRlckhhc2gpfV90aGlzPV9zdXBlci5jYWxsKHRoaXMse19pc0ZvcmtFdmVudDp0cnVlLF9pc1RyYW5zYWN0aW9uT3JkZXJGb3JrRXZlbnQ6dHJ1ZSxleHBpcnk6ZXhwaXJ5fHwwLGJlZm9yZUhhc2g6YmVmb3JlSGFzaCxhZnRlckhhc2g6YWZ0ZXJIYXNofSl8fHRoaXM7cmV0dXJuIF90aGlzfXJldHVybiBUcmFuc2FjdGlvbk9yZGVyRm9ya0V2ZW50fShGb3JrRXZlbnQpO2V4cG9ydHMuVHJhbnNhY3Rpb25PcmRlckZvcmtFdmVudD1UcmFuc2FjdGlvbk9yZGVyRm9ya0V2ZW50O3ZhciBQcm92aWRlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIFByb3ZpZGVyKCl7dmFyIF9uZXdUYXJnZXQ9dGhpcy5jb25zdHJ1Y3Rvcjtsb2dnZXIuY2hlY2tBYnN0cmFjdChfbmV3VGFyZ2V0LFByb3ZpZGVyKTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiX2lzUHJvdmlkZXIiLHRydWUpfVByb3ZpZGVyLnByb3RvdHlwZS5nZXRGZWVEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgX2EsYmxvY2ssZ2FzUHJpY2UsbGFzdEJhc2VGZWVQZXJHYXMsbWF4RmVlUGVyR2FzLG1heFByaW9yaXR5RmVlUGVyR2FzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9iKXtzd2l0Y2goX2IubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCwoMCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcykoe2Jsb2NrOnRoaXMuZ2V0QmxvY2soImxhdGVzdCIpLGdhc1ByaWNlOnRoaXMuZ2V0R2FzUHJpY2UoKS5jYXRjaChmdW5jdGlvbihlcnJvcil7cmV0dXJuIG51bGx9KX0pXTtjYXNlIDE6X2E9X2Iuc2VudCgpLGJsb2NrPV9hLmJsb2NrLGdhc1ByaWNlPV9hLmdhc1ByaWNlO2xhc3RCYXNlRmVlUGVyR2FzPW51bGwsbWF4RmVlUGVyR2FzPW51bGwsbWF4UHJpb3JpdHlGZWVQZXJHYXM9bnVsbDtpZihibG9jayYmYmxvY2suYmFzZUZlZVBlckdhcyl7bGFzdEJhc2VGZWVQZXJHYXM9YmxvY2suYmFzZUZlZVBlckdhczttYXhQcmlvcml0eUZlZVBlckdhcz1saWIkMi5CaWdOdW1iZXIuZnJvbSgiMTUwMDAwMDAwMCIpO21heEZlZVBlckdhcz1ibG9jay5iYXNlRmVlUGVyR2FzLm11bCgyKS5hZGQobWF4UHJpb3JpdHlGZWVQZXJHYXMpfXJldHVyblsyLHtsYXN0QmFzZUZlZVBlckdhczpsYXN0QmFzZUZlZVBlckdhcyxtYXhGZWVQZXJHYXM6bWF4RmVlUGVyR2FzLG1heFByaW9yaXR5RmVlUGVyR2FzOm1heFByaW9yaXR5RmVlUGVyR2FzLGdhc1ByaWNlOmdhc1ByaWNlfV19fSl9KX07UHJvdmlkZXIucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9uKGV2ZW50TmFtZSxsaXN0ZW5lcil7cmV0dXJuIHRoaXMub24oZXZlbnROYW1lLGxpc3RlbmVyKX07UHJvdmlkZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGV2ZW50TmFtZSxsaXN0ZW5lcil7cmV0dXJuIHRoaXMub2ZmKGV2ZW50TmFtZSxsaXN0ZW5lcil9O1Byb3ZpZGVyLmlzUHJvdmlkZXI9ZnVuY3Rpb24odmFsdWUpe3JldHVybiEhKHZhbHVlJiZ2YWx1ZS5faXNQcm92aWRlcil9O3JldHVybiBQcm92aWRlcn0oKTtleHBvcnRzLlByb3ZpZGVyPVByb3ZpZGVyfSk7dmFyIGluZGV4JGM9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJGUpO3ZhciBfdmVyc2lvbiRrPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249ImFic3RyYWN0LXNpZ25lci81LjcuMCJ9KTt2YXIgX3ZlcnNpb24kbD1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiRrKTt2YXIgbGliJGY9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7dmFyIF9fYXdhaXRlcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19hd2FpdGVyfHxmdW5jdGlvbih0aGlzQXJnLF9hcmd1bWVudHMsUCxnZW5lcmF0b3Ipe2Z1bmN0aW9uIGFkb3B0KHZhbHVlKXtyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQP3ZhbHVlOm5ldyBQKGZ1bmN0aW9uKHJlc29sdmUpe3Jlc29sdmUodmFsdWUpfSl9cmV0dXJuIG5ldyhQfHwoUD1Qcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2Z1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHN0ZXAocmVzdWx0KXtyZXN1bHQuZG9uZT9yZXNvbHZlKHJlc3VsdC52YWx1ZSk6YWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCl9c3RlcCgoZ2VuZXJhdG9yPWdlbmVyYXRvci5hcHBseSh0aGlzQXJnLF9hcmd1bWVudHN8fFtdKSkubmV4dCgpKX0pfTt2YXIgX19nZW5lcmF0b3I9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0aGlzQXJnLGJvZHkpe3ZhciBfPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZih0WzBdJjEpdGhyb3cgdFsxXTtyZXR1cm4gdFsxXX0sdHJ5czpbXSxvcHM6W119LGYseSx0LGc7cmV0dXJuIGc9e25leHQ6dmVyYigwKSx0aHJvdzp2ZXJiKDEpLHJldHVybjp2ZXJiKDIpfSx0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmKGdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZztmdW5jdGlvbiB2ZXJiKG4pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gc3RlcChbbix2XSl9fWZ1bmN0aW9uIHN0ZXAob3Ape2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO3doaWxlKF8pdHJ5e2lmKGY9MSx5JiYodD1vcFswXSYyP3lbInJldHVybiJdOm9wWzBdP3lbInRocm93Il18fCgodD15WyJyZXR1cm4iXSkmJnQuY2FsbCh5KSwwKTp5Lm5leHQpJiYhKHQ9dC5jYWxsKHksb3BbMV0pKS5kb25lKXJldHVybiB0O2lmKHk9MCx0KW9wPVtvcFswXSYyLHQudmFsdWVdO3N3aXRjaChvcFswXSl7Y2FzZSAwOmNhc2UgMTp0PW9wO2JyZWFrO2Nhc2UgNDpfLmxhYmVsKys7cmV0dXJue3ZhbHVlOm9wWzFdLGRvbmU6ZmFsc2V9O2Nhc2UgNTpfLmxhYmVsKys7eT1vcFsxXTtvcD1bMF07Y29udGludWU7Y2FzZSA3Om9wPV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEodD1fLnRyeXMsdD10Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdKSYmKG9wWzBdPT09Nnx8b3BbMF09PT0yKSl7Xz0wO2NvbnRpbnVlfWlmKG9wWzBdPT09MyYmKCF0fHxvcFsxXT50WzBdJiZvcFsxXTx0WzNdKSl7Xy5sYWJlbD1vcFsxXTticmVha31pZihvcFswXT09PTYmJl8ubGFiZWw8dFsxXSl7Xy5sYWJlbD10WzFdO3Q9b3A7YnJlYWt9aWYodCYmXy5sYWJlbDx0WzJdKXtfLmxhYmVsPXRbMl07Xy5vcHMucHVzaChvcCk7YnJlYWt9aWYodFsyXSlfLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWV9b3A9Ym9keS5jYWxsKHRoaXNBcmcsXyl9Y2F0Y2goZSl7b3A9WzYsZV07eT0wfWZpbmFsbHl7Zj10PTB9aWYob3BbMF0mNSl0aHJvdyBvcFsxXTtyZXR1cm57dmFsdWU6b3BbMF0/b3BbMV06dm9pZCAwLGRvbmU6dHJ1ZX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLlZvaWRTaWduZXI9ZXhwb3J0cy5TaWduZXI9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kay52ZXJzaW9uKTt2YXIgYWxsb3dlZFRyYW5zYWN0aW9uS2V5cz1bImFjY2Vzc0xpc3QiLCJjY2lwUmVhZEVuYWJsZWQiLCJjaGFpbklkIiwiY3VzdG9tRGF0YSIsImRhdGEiLCJmcm9tIiwiZ2FzTGltaXQiLCJnYXNQcmljZSIsIm1heEZlZVBlckdhcyIsIm1heFByaW9yaXR5RmVlUGVyR2FzIiwibm9uY2UiLCJ0byIsInR5cGUiLCJ2YWx1ZSJdO3ZhciBmb3J3YXJkRXJyb3JzPVtsaWIuTG9nZ2VyLmVycm9ycy5JTlNVRkZJQ0lFTlRfRlVORFMsbGliLkxvZ2dlci5lcnJvcnMuTk9OQ0VfRVhQSVJFRCxsaWIuTG9nZ2VyLmVycm9ycy5SRVBMQUNFTUVOVF9VTkRFUlBSSUNFRF07dmFyIFNpZ25lcj1mdW5jdGlvbigpe2Z1bmN0aW9uIFNpZ25lcigpe3ZhciBfbmV3VGFyZ2V0PXRoaXMuY29uc3RydWN0b3I7bG9nZ2VyLmNoZWNrQWJzdHJhY3QoX25ld1RhcmdldCxTaWduZXIpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJfaXNTaWduZXIiLHRydWUpfVNpZ25lci5wcm90b3R5cGUuZ2V0QmFsYW5jZT1mdW5jdGlvbihibG9ja1RhZyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6dGhpcy5fY2hlY2tQcm92aWRlcigiZ2V0QmFsYW5jZSIpO3JldHVybls0LHRoaXMucHJvdmlkZXIuZ2V0QmFsYW5jZSh0aGlzLmdldEFkZHJlc3MoKSxibG9ja1RhZyldO2Nhc2UgMTpyZXR1cm5bMixfYS5zZW50KCldfX0pfSl9O1NpZ25lci5wcm90b3R5cGUuZ2V0VHJhbnNhY3Rpb25Db3VudD1mdW5jdGlvbihibG9ja1RhZyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6dGhpcy5fY2hlY2tQcm92aWRlcigiZ2V0VHJhbnNhY3Rpb25Db3VudCIpO3JldHVybls0LHRoaXMucHJvdmlkZXIuZ2V0VHJhbnNhY3Rpb25Db3VudCh0aGlzLmdldEFkZHJlc3MoKSxibG9ja1RhZyldO2Nhc2UgMTpyZXR1cm5bMixfYS5zZW50KCldfX0pfSl9O1NpZ25lci5wcm90b3R5cGUuZXN0aW1hdGVHYXM9ZnVuY3Rpb24odHJhbnNhY3Rpb24pe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHR4O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDp0aGlzLl9jaGVja1Byb3ZpZGVyKCJlc3RpbWF0ZUdhcyIpO3JldHVybls0LCgwLGxpYiQzLnJlc29sdmVQcm9wZXJ0aWVzKSh0aGlzLmNoZWNrVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pKV07Y2FzZSAxOnR4PV9hLnNlbnQoKTtyZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmVzdGltYXRlR2FzKHR4KV07Y2FzZSAyOnJldHVyblsyLF9hLnNlbnQoKV19fSl9KX07U2lnbmVyLnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHRyYW5zYWN0aW9uLGJsb2NrVGFnKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB0eDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6dGhpcy5fY2hlY2tQcm92aWRlcigiY2FsbCIpO3JldHVybls0LCgwLGxpYiQzLnJlc29sdmVQcm9wZXJ0aWVzKSh0aGlzLmNoZWNrVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pKV07Y2FzZSAxOnR4PV9hLnNlbnQoKTtyZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmNhbGwodHgsYmxvY2tUYWcpXTtjYXNlIDI6cmV0dXJuWzIsX2Euc2VudCgpXX19KX0pfTtTaWduZXIucHJvdG90eXBlLnNlbmRUcmFuc2FjdGlvbj1mdW5jdGlvbih0cmFuc2FjdGlvbil7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdHgsc2lnbmVkVHg7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnRoaXMuX2NoZWNrUHJvdmlkZXIoInNlbmRUcmFuc2FjdGlvbiIpO3JldHVybls0LHRoaXMucG9wdWxhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbildO2Nhc2UgMTp0eD1fYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5zaWduVHJhbnNhY3Rpb24odHgpXTtjYXNlIDI6c2lnbmVkVHg9X2Euc2VudCgpO3JldHVybls0LHRoaXMucHJvdmlkZXIuc2VuZFRyYW5zYWN0aW9uKHNpZ25lZFR4KV07Y2FzZSAzOnJldHVyblsyLF9hLnNlbnQoKV19fSl9KX07U2lnbmVyLnByb3RvdHlwZS5nZXRDaGFpbklkPWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbmV0d29yaztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6dGhpcy5fY2hlY2tQcm92aWRlcigiZ2V0Q2hhaW5JZCIpO3JldHVybls0LHRoaXMucHJvdmlkZXIuZ2V0TmV0d29yaygpXTtjYXNlIDE6bmV0d29yaz1fYS5zZW50KCk7cmV0dXJuWzIsbmV0d29yay5jaGFpbklkXX19KX0pfTtTaWduZXIucHJvdG90eXBlLmdldEdhc1ByaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6dGhpcy5fY2hlY2tQcm92aWRlcigiZ2V0R2FzUHJpY2UiKTtyZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmdldEdhc1ByaWNlKCldO2Nhc2UgMTpyZXR1cm5bMixfYS5zZW50KCldfX0pfSl9O1NpZ25lci5wcm90b3R5cGUuZ2V0RmVlRGF0YT1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnRoaXMuX2NoZWNrUHJvdmlkZXIoImdldEZlZURhdGEiKTtyZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmdldEZlZURhdGEoKV07Y2FzZSAxOnJldHVyblsyLF9hLnNlbnQoKV19fSl9KX07U2lnbmVyLnByb3RvdHlwZS5yZXNvbHZlTmFtZT1mdW5jdGlvbihuYW1lKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDp0aGlzLl9jaGVja1Byb3ZpZGVyKCJyZXNvbHZlTmFtZSIpO3JldHVybls0LHRoaXMucHJvdmlkZXIucmVzb2x2ZU5hbWUobmFtZSldO2Nhc2UgMTpyZXR1cm5bMixfYS5zZW50KCldfX0pfSl9O1NpZ25lci5wcm90b3R5cGUuY2hlY2tUcmFuc2FjdGlvbj1mdW5jdGlvbih0cmFuc2FjdGlvbil7Zm9yKHZhciBrZXkgaW4gdHJhbnNhY3Rpb24pe2lmKGFsbG93ZWRUcmFuc2FjdGlvbktleXMuaW5kZXhPZihrZXkpPT09LTEpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdHJhbnNhY3Rpb24ga2V5OiAiK2tleSwidHJhbnNhY3Rpb24iLHRyYW5zYWN0aW9uKX19dmFyIHR4PSgwLGxpYiQzLnNoYWxsb3dDb3B5KSh0cmFuc2FjdGlvbik7aWYodHguZnJvbT09bnVsbCl7dHguZnJvbT10aGlzLmdldEFkZHJlc3MoKX1lbHNle3R4LmZyb209UHJvbWlzZS5hbGwoW1Byb21pc2UucmVzb2x2ZSh0eC5mcm9tKSx0aGlzLmdldEFkZHJlc3MoKV0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXtpZihyZXN1bHRbMF0udG9Mb3dlckNhc2UoKSE9PXJlc3VsdFsxXS50b0xvd2VyQ2FzZSgpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJmcm9tIGFkZHJlc3MgbWlzbWF0Y2giLCJ0cmFuc2FjdGlvbiIsdHJhbnNhY3Rpb24pfXJldHVybiByZXN1bHRbMF19KX1yZXR1cm4gdHh9O1NpZ25lci5wcm90b3R5cGUucG9wdWxhdGVUcmFuc2FjdGlvbj1mdW5jdGlvbih0cmFuc2FjdGlvbil7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdHgsaGFzRWlwMTU1OSxmZWVEYXRhLGdhc1ByaWNlO3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCwoMCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcykodGhpcy5jaGVja1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKSldO2Nhc2UgMTp0eD1fYS5zZW50KCk7aWYodHgudG8hPW51bGwpe3R4LnRvPVByb21pc2UucmVzb2x2ZSh0eC50bykudGhlbihmdW5jdGlvbih0byl7cmV0dXJuIF9fYXdhaXRlcihfdGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGFkZHJlc3M7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmlmKHRvPT1udWxsKXtyZXR1cm5bMixudWxsXX1yZXR1cm5bNCx0aGlzLnJlc29sdmVOYW1lKHRvKV07Y2FzZSAxOmFkZHJlc3M9X2Euc2VudCgpO2lmKGFkZHJlc3M9PW51bGwpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInByb3ZpZGVkIEVOUyBuYW1lIHJlc29sdmVzIHRvIG51bGwiLCJ0eC50byIsdG8pfXJldHVyblsyLGFkZHJlc3NdfX0pfSl9KTt0eC50by5jYXRjaChmdW5jdGlvbihlcnJvcil7fSl9aGFzRWlwMTU1OT10eC5tYXhGZWVQZXJHYXMhPW51bGx8fHR4Lm1heFByaW9yaXR5RmVlUGVyR2FzIT1udWxsO2lmKHR4Lmdhc1ByaWNlIT1udWxsJiYodHgudHlwZT09PTJ8fGhhc0VpcDE1NTkpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJlaXAtMTU1OSB0cmFuc2FjdGlvbiBkbyBub3Qgc3VwcG9ydCBnYXNQcmljZSIsInRyYW5zYWN0aW9uIix0cmFuc2FjdGlvbil9ZWxzZSBpZigodHgudHlwZT09PTB8fHR4LnR5cGU9PT0xKSYmaGFzRWlwMTU1OSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigicHJlLWVpcC0xNTU5IHRyYW5zYWN0aW9uIGRvIG5vdCBzdXBwb3J0IG1heEZlZVBlckdhcy9tYXhQcmlvcml0eUZlZVBlckdhcyIsInRyYW5zYWN0aW9uIix0cmFuc2FjdGlvbil9aWYoISgodHgudHlwZT09PTJ8fHR4LnR5cGU9PW51bGwpJiYodHgubWF4RmVlUGVyR2FzIT1udWxsJiZ0eC5tYXhQcmlvcml0eUZlZVBlckdhcyE9bnVsbCkpKXJldHVyblszLDJdO3R4LnR5cGU9MjtyZXR1cm5bMyw1XTtjYXNlIDI6aWYoISh0eC50eXBlPT09MHx8dHgudHlwZT09PTEpKXJldHVyblszLDNdO2lmKHR4Lmdhc1ByaWNlPT1udWxsKXt0eC5nYXNQcmljZT10aGlzLmdldEdhc1ByaWNlKCl9cmV0dXJuWzMsNV07Y2FzZSAzOnJldHVybls0LHRoaXMuZ2V0RmVlRGF0YSgpXTtjYXNlIDQ6ZmVlRGF0YT1fYS5zZW50KCk7aWYodHgudHlwZT09bnVsbCl7aWYoZmVlRGF0YS5tYXhGZWVQZXJHYXMhPW51bGwmJmZlZURhdGEubWF4UHJpb3JpdHlGZWVQZXJHYXMhPW51bGwpe3R4LnR5cGU9MjtpZih0eC5nYXNQcmljZSE9bnVsbCl7Z2FzUHJpY2U9dHguZ2FzUHJpY2U7ZGVsZXRlIHR4Lmdhc1ByaWNlO3R4Lm1heEZlZVBlckdhcz1nYXNQcmljZTt0eC5tYXhQcmlvcml0eUZlZVBlckdhcz1nYXNQcmljZX1lbHNle2lmKHR4Lm1heEZlZVBlckdhcz09bnVsbCl7dHgubWF4RmVlUGVyR2FzPWZlZURhdGEubWF4RmVlUGVyR2FzfWlmKHR4Lm1heFByaW9yaXR5RmVlUGVyR2FzPT1udWxsKXt0eC5tYXhQcmlvcml0eUZlZVBlckdhcz1mZWVEYXRhLm1heFByaW9yaXR5RmVlUGVyR2FzfX19ZWxzZSBpZihmZWVEYXRhLmdhc1ByaWNlIT1udWxsKXtpZihoYXNFaXAxNTU5KXtsb2dnZXIudGhyb3dFcnJvcigibmV0d29yayBkb2VzIG5vdCBzdXBwb3J0IEVJUC0xNTU5IixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoicG9wdWxhdGVUcmFuc2FjdGlvbiJ9KX1pZih0eC5nYXNQcmljZT09bnVsbCl7dHguZ2FzUHJpY2U9ZmVlRGF0YS5nYXNQcmljZX10eC50eXBlPTB9ZWxzZXtsb2dnZXIudGhyb3dFcnJvcigiZmFpbGVkIHRvIGdldCBjb25zaXN0ZW50IGZlZSBkYXRhIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoic2lnbmVyLmdldEZlZURhdGEifSl9fWVsc2UgaWYodHgudHlwZT09PTIpe2lmKHR4Lm1heEZlZVBlckdhcz09bnVsbCl7dHgubWF4RmVlUGVyR2FzPWZlZURhdGEubWF4RmVlUGVyR2FzfWlmKHR4Lm1heFByaW9yaXR5RmVlUGVyR2FzPT1udWxsKXt0eC5tYXhQcmlvcml0eUZlZVBlckdhcz1mZWVEYXRhLm1heFByaW9yaXR5RmVlUGVyR2FzfX1fYS5sYWJlbD01O2Nhc2UgNTppZih0eC5ub25jZT09bnVsbCl7dHgubm9uY2U9dGhpcy5nZXRUcmFuc2FjdGlvbkNvdW50KCJwZW5kaW5nIil9aWYodHguZ2FzTGltaXQ9PW51bGwpe3R4Lmdhc0xpbWl0PXRoaXMuZXN0aW1hdGVHYXModHgpLmNhdGNoKGZ1bmN0aW9uKGVycm9yKXtpZihmb3J3YXJkRXJyb3JzLmluZGV4T2YoZXJyb3IuY29kZSk+PTApe3Rocm93IGVycm9yfXJldHVybiBsb2dnZXIudGhyb3dFcnJvcigiY2Fubm90IGVzdGltYXRlIGdhczsgdHJhbnNhY3Rpb24gbWF5IGZhaWwgb3IgbWF5IHJlcXVpcmUgbWFudWFsIGdhcyBsaW1pdCIsbGliLkxvZ2dlci5lcnJvcnMuVU5QUkVESUNUQUJMRV9HQVNfTElNSVQse2Vycm9yOmVycm9yLHR4OnR4fSl9KX1pZih0eC5jaGFpbklkPT1udWxsKXt0eC5jaGFpbklkPXRoaXMuZ2V0Q2hhaW5JZCgpfWVsc2V7dHguY2hhaW5JZD1Qcm9taXNlLmFsbChbUHJvbWlzZS5yZXNvbHZlKHR4LmNoYWluSWQpLHRoaXMuZ2V0Q2hhaW5JZCgpXSkudGhlbihmdW5jdGlvbihyZXN1bHRzKXtpZihyZXN1bHRzWzFdIT09MCYmcmVzdWx0c1swXSE9PXJlc3VsdHNbMV0pe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImNoYWluSWQgYWRkcmVzcyBtaXNtYXRjaCIsInRyYW5zYWN0aW9uIix0cmFuc2FjdGlvbil9cmV0dXJuIHJlc3VsdHNbMF19KX1yZXR1cm5bNCwoMCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcykodHgpXTtjYXNlIDY6cmV0dXJuWzIsX2Euc2VudCgpXX19KX0pfTtTaWduZXIucHJvdG90eXBlLl9jaGVja1Byb3ZpZGVyPWZ1bmN0aW9uKG9wZXJhdGlvbil7aWYoIXRoaXMucHJvdmlkZXIpe2xvZ2dlci50aHJvd0Vycm9yKCJtaXNzaW5nIHByb3ZpZGVyIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjpvcGVyYXRpb258fCJfY2hlY2tQcm92aWRlciJ9KX19O1NpZ25lci5pc1NpZ25lcj1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUmJnZhbHVlLl9pc1NpZ25lcil9O3JldHVybiBTaWduZXJ9KCk7ZXhwb3J0cy5TaWduZXI9U2lnbmVyO3ZhciBWb2lkU2lnbmVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKFZvaWRTaWduZXIsX3N1cGVyKTtmdW5jdGlvbiBWb2lkU2lnbmVyKGFkZHJlc3MscHJvdmlkZXIpe3ZhciBfdGhpcz1fc3VwZXIuY2FsbCh0aGlzKXx8dGhpczsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsImFkZHJlc3MiLGFkZHJlc3MpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShfdGhpcywicHJvdmlkZXIiLHByb3ZpZGVyfHxudWxsKTtyZXR1cm4gX3RoaXN9Vm9pZFNpZ25lci5wcm90b3R5cGUuZ2V0QWRkcmVzcz1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5hZGRyZXNzKX07Vm9pZFNpZ25lci5wcm90b3R5cGUuX2ZhaWw9ZnVuY3Rpb24obWVzc2FnZSxvcGVyYXRpb24pe3JldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7bG9nZ2VyLnRocm93RXJyb3IobWVzc2FnZSxsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjpvcGVyYXRpb259KX0pfTtWb2lkU2lnbmVyLnByb3RvdHlwZS5zaWduTWVzc2FnZT1mdW5jdGlvbihtZXNzYWdlKXtyZXR1cm4gdGhpcy5fZmFpbCgiVm9pZFNpZ25lciBjYW5ub3Qgc2lnbiBtZXNzYWdlcyIsInNpZ25NZXNzYWdlIil9O1ZvaWRTaWduZXIucHJvdG90eXBlLnNpZ25UcmFuc2FjdGlvbj1mdW5jdGlvbih0cmFuc2FjdGlvbil7cmV0dXJuIHRoaXMuX2ZhaWwoIlZvaWRTaWduZXIgY2Fubm90IHNpZ24gdHJhbnNhY3Rpb25zIiwic2lnblRyYW5zYWN0aW9uIil9O1ZvaWRTaWduZXIucHJvdG90eXBlLl9zaWduVHlwZWREYXRhPWZ1bmN0aW9uKGRvbWFpbix0eXBlcyx2YWx1ZSl7cmV0dXJuIHRoaXMuX2ZhaWwoIlZvaWRTaWduZXIgY2Fubm90IHNpZ24gdHlwZWQgZGF0YSIsInNpZ25UeXBlZERhdGEiKX07Vm9pZFNpZ25lci5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbihwcm92aWRlcil7cmV0dXJuIG5ldyBWb2lkU2lnbmVyKHRoaXMuYWRkcmVzcyxwcm92aWRlcil9O3JldHVybiBWb2lkU2lnbmVyfShTaWduZXIpO2V4cG9ydHMuVm9pZFNpZ25lcj1Wb2lkU2lnbmVyfSk7dmFyIGluZGV4JGQ9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJGYpO3ZhciBibiQxPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSl7KGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYXNzZXJ0KHZhbCxtc2cpe2lmKCF2YWwpdGhyb3cgbmV3IEVycm9yKG1zZ3x8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBpbmhlcml0cyhjdG9yLHN1cGVyQ3Rvcil7Y3Rvci5zdXBlcl89c3VwZXJDdG9yO3ZhciBUZW1wQ3Rvcj1mdW5jdGlvbigpe307VGVtcEN0b3IucHJvdG90eXBlPXN1cGVyQ3Rvci5wcm90b3R5cGU7Y3Rvci5wcm90b3R5cGU9bmV3IFRlbXBDdG9yO2N0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPWN0b3J9ZnVuY3Rpb24gQk4obnVtYmVyLGJhc2UsZW5kaWFuKXtpZihCTi5pc0JOKG51bWJlcikpe3JldHVybiBudW1iZXJ9dGhpcy5uZWdhdGl2ZT0wO3RoaXMud29yZHM9bnVsbDt0aGlzLmxlbmd0aD0wO3RoaXMucmVkPW51bGw7aWYobnVtYmVyIT09bnVsbCl7aWYoYmFzZT09PSJsZSJ8fGJhc2U9PT0iYmUiKXtlbmRpYW49YmFzZTtiYXNlPTEwfXRoaXMuX2luaXQobnVtYmVyfHwwLGJhc2V8fDEwLGVuZGlhbnx8ImJlIil9fWlmKHR5cGVvZiBtb2R1bGU9PT0ib2JqZWN0Iil7bW9kdWxlLmV4cG9ydHM9Qk59ZWxzZXtleHBvcnRzLkJOPUJOfUJOLkJOPUJOO0JOLndvcmRTaXplPTI2O3ZhciBCdWZmZXI7dHJ5e2lmKHR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIiYmdHlwZW9mIHdpbmRvdy5CdWZmZXIhPT0idW5kZWZpbmVkIil7QnVmZmVyPXdpbmRvdy5CdWZmZXJ9ZWxzZXtCdWZmZXI9bnVsbC5CdWZmZXJ9fWNhdGNoKGUpe31CTi5pc0JOPWZ1bmN0aW9uIGlzQk4obnVtKXtpZihudW0gaW5zdGFuY2VvZiBCTil7cmV0dXJuIHRydWV9cmV0dXJuIG51bSE9PW51bGwmJnR5cGVvZiBudW09PT0ib2JqZWN0IiYmbnVtLmNvbnN0cnVjdG9yLndvcmRTaXplPT09Qk4ud29yZFNpemUmJkFycmF5LmlzQXJyYXkobnVtLndvcmRzKX07Qk4ubWF4PWZ1bmN0aW9uIG1heChsZWZ0LHJpZ2h0KXtpZihsZWZ0LmNtcChyaWdodCk+MClyZXR1cm4gbGVmdDtyZXR1cm4gcmlnaHR9O0JOLm1pbj1mdW5jdGlvbiBtaW4obGVmdCxyaWdodCl7aWYobGVmdC5jbXAocmlnaHQpPDApcmV0dXJuIGxlZnQ7cmV0dXJuIHJpZ2h0fTtCTi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24gaW5pdChudW1iZXIsYmFzZSxlbmRpYW4pe2lmKHR5cGVvZiBudW1iZXI9PT0ibnVtYmVyIil7cmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLGJhc2UsZW5kaWFuKX1pZih0eXBlb2YgbnVtYmVyPT09Im9iamVjdCIpe3JldHVybiB0aGlzLl9pbml0QXJyYXkobnVtYmVyLGJhc2UsZW5kaWFuKX1pZihiYXNlPT09ImhleCIpe2Jhc2U9MTZ9YXNzZXJ0KGJhc2U9PT0oYmFzZXwwKSYmYmFzZT49MiYmYmFzZTw9MzYpO251bWJlcj1udW1iZXIudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIik7dmFyIHN0YXJ0PTA7aWYobnVtYmVyWzBdPT09Ii0iKXtzdGFydCsrO3RoaXMubmVnYXRpdmU9MX1pZihzdGFydDxudW1iZXIubGVuZ3RoKXtpZihiYXNlPT09MTYpe3RoaXMuX3BhcnNlSGV4KG51bWJlcixzdGFydCxlbmRpYW4pfWVsc2V7dGhpcy5fcGFyc2VCYXNlKG51bWJlcixiYXNlLHN0YXJ0KTtpZihlbmRpYW49PT0ibGUiKXt0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksYmFzZSxlbmRpYW4pfX19fTtCTi5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24gX2luaXROdW1iZXIobnVtYmVyLGJhc2UsZW5kaWFuKXtpZihudW1iZXI8MCl7dGhpcy5uZWdhdGl2ZT0xO251bWJlcj0tbnVtYmVyfWlmKG51bWJlcjw2NzEwODg2NCl7dGhpcy53b3Jkcz1bbnVtYmVyJjY3MTA4ODYzXTt0aGlzLmxlbmd0aD0xfWVsc2UgaWYobnVtYmVyPDQ1MDM1OTk2MjczNzA0OTYpe3RoaXMud29yZHM9W251bWJlciY2NzEwODg2MyxudW1iZXIvNjcxMDg4NjQmNjcxMDg4NjNdO3RoaXMubGVuZ3RoPTJ9ZWxzZXthc3NlcnQobnVtYmVyPDkwMDcxOTkyNTQ3NDA5OTIpO3RoaXMud29yZHM9W251bWJlciY2NzEwODg2MyxudW1iZXIvNjcxMDg4NjQmNjcxMDg4NjMsMV07dGhpcy5sZW5ndGg9M31pZihlbmRpYW4hPT0ibGUiKXJldHVybjt0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksYmFzZSxlbmRpYW4pfTtCTi5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbiBfaW5pdEFycmF5KG51bWJlcixiYXNlLGVuZGlhbil7YXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoPT09Im51bWJlciIpO2lmKG51bWJlci5sZW5ndGg8PTApe3RoaXMud29yZHM9WzBdO3RoaXMubGVuZ3RoPTE7cmV0dXJuIHRoaXN9dGhpcy5sZW5ndGg9TWF0aC5jZWlsKG51bWJlci5sZW5ndGgvMyk7dGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPTB9dmFyIGosdzt2YXIgb2ZmPTA7aWYoZW5kaWFuPT09ImJlIil7Zm9yKGk9bnVtYmVyLmxlbmd0aC0xLGo9MDtpPj0wO2ktPTMpe3c9bnVtYmVyW2ldfG51bWJlcltpLTFdPDw4fG51bWJlcltpLTJdPDwxNjt0aGlzLndvcmRzW2pdfD13PDxvZmYmNjcxMDg4NjM7dGhpcy53b3Jkc1tqKzFdPXc+Pj4yNi1vZmYmNjcxMDg4NjM7b2ZmKz0yNDtpZihvZmY+PTI2KXtvZmYtPTI2O2orK319fWVsc2UgaWYoZW5kaWFuPT09ImxlIil7Zm9yKGk9MCxqPTA7aTxudW1iZXIubGVuZ3RoO2krPTMpe3c9bnVtYmVyW2ldfG51bWJlcltpKzFdPDw4fG51bWJlcltpKzJdPDwxNjt0aGlzLndvcmRzW2pdfD13PDxvZmYmNjcxMDg4NjM7dGhpcy53b3Jkc1tqKzFdPXc+Pj4yNi1vZmYmNjcxMDg4NjM7b2ZmKz0yNDtpZihvZmY+PTI2KXtvZmYtPTI2O2orK319fXJldHVybiB0aGlzLnN0cmlwKCl9O2Z1bmN0aW9uIHBhcnNlSGV4NEJpdHMoc3RyaW5nLGluZGV4KXt2YXIgYz1zdHJpbmcuY2hhckNvZGVBdChpbmRleCk7aWYoYz49NjUmJmM8PTcwKXtyZXR1cm4gYy01NX1lbHNlIGlmKGM+PTk3JiZjPD0xMDIpe3JldHVybiBjLTg3fWVsc2V7cmV0dXJuIGMtNDgmMTV9fWZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZShzdHJpbmcsbG93ZXJCb3VuZCxpbmRleCl7dmFyIHI9cGFyc2VIZXg0Qml0cyhzdHJpbmcsaW5kZXgpO2lmKGluZGV4LTE+PWxvd2VyQm91bmQpe3J8PXBhcnNlSGV4NEJpdHMoc3RyaW5nLGluZGV4LTEpPDw0fXJldHVybiByfUJOLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24gX3BhcnNlSGV4KG51bWJlcixzdGFydCxlbmRpYW4pe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgobnVtYmVyLmxlbmd0aC1zdGFydCkvNik7dGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPTB9dmFyIG9mZj0wO3ZhciBqPTA7dmFyIHc7aWYoZW5kaWFuPT09ImJlIil7Zm9yKGk9bnVtYmVyLmxlbmd0aC0xO2k+PXN0YXJ0O2ktPTIpe3c9cGFyc2VIZXhCeXRlKG51bWJlcixzdGFydCxpKTw8b2ZmO3RoaXMud29yZHNbal18PXcmNjcxMDg4NjM7aWYob2ZmPj0xOCl7b2ZmLT0xODtqKz0xO3RoaXMud29yZHNbal18PXc+Pj4yNn1lbHNle29mZis9OH19fWVsc2V7dmFyIHBhcnNlTGVuZ3RoPW51bWJlci5sZW5ndGgtc3RhcnQ7Zm9yKGk9cGFyc2VMZW5ndGglMj09PTA/c3RhcnQrMTpzdGFydDtpPG51bWJlci5sZW5ndGg7aSs9Mil7dz1wYXJzZUhleEJ5dGUobnVtYmVyLHN0YXJ0LGkpPDxvZmY7dGhpcy53b3Jkc1tqXXw9dyY2NzEwODg2MztpZihvZmY+PTE4KXtvZmYtPTE4O2orPTE7dGhpcy53b3Jkc1tqXXw9dz4+PjI2fWVsc2V7b2ZmKz04fX19dGhpcy5zdHJpcCgpfTtmdW5jdGlvbiBwYXJzZUJhc2Uoc3RyLHN0YXJ0LGVuZCxtdWwpe3ZhciByPTA7dmFyIGxlbj1NYXRoLm1pbihzdHIubGVuZ3RoLGVuZCk7Zm9yKHZhciBpPXN0YXJ0O2k8bGVuO2krKyl7dmFyIGM9c3RyLmNoYXJDb2RlQXQoaSktNDg7cio9bXVsO2lmKGM+PTQ5KXtyKz1jLTQ5KzEwfWVsc2UgaWYoYz49MTcpe3IrPWMtMTcrMTB9ZWxzZXtyKz1jfX1yZXR1cm4gcn1CTi5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbiBfcGFyc2VCYXNlKG51bWJlcixiYXNlLHN0YXJ0KXt0aGlzLndvcmRzPVswXTt0aGlzLmxlbmd0aD0xO2Zvcih2YXIgbGltYkxlbj0wLGxpbWJQb3c9MTtsaW1iUG93PD02NzEwODg2MztsaW1iUG93Kj1iYXNlKXtsaW1iTGVuKyt9bGltYkxlbi0tO2xpbWJQb3c9bGltYlBvdy9iYXNlfDA7dmFyIHRvdGFsPW51bWJlci5sZW5ndGgtc3RhcnQ7dmFyIG1vZD10b3RhbCVsaW1iTGVuO3ZhciBlbmQ9TWF0aC5taW4odG90YWwsdG90YWwtbW9kKStzdGFydDt2YXIgd29yZD0wO2Zvcih2YXIgaT1zdGFydDtpPGVuZDtpKz1saW1iTGVuKXt3b3JkPXBhcnNlQmFzZShudW1iZXIsaSxpK2xpbWJMZW4sYmFzZSk7dGhpcy5pbXVsbihsaW1iUG93KTtpZih0aGlzLndvcmRzWzBdK3dvcmQ8NjcxMDg4NjQpe3RoaXMud29yZHNbMF0rPXdvcmR9ZWxzZXt0aGlzLl9pYWRkbih3b3JkKX19aWYobW9kIT09MCl7dmFyIHBvdz0xO3dvcmQ9cGFyc2VCYXNlKG51bWJlcixpLG51bWJlci5sZW5ndGgsYmFzZSk7Zm9yKGk9MDtpPG1vZDtpKyspe3Bvdyo9YmFzZX10aGlzLmltdWxuKHBvdyk7aWYodGhpcy53b3Jkc1swXSt3b3JkPDY3MTA4ODY0KXt0aGlzLndvcmRzWzBdKz13b3JkfWVsc2V7dGhpcy5faWFkZG4od29yZCl9fXRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24gY29weShkZXN0KXtkZXN0LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aDtpKyspe2Rlc3Qud29yZHNbaV09dGhpcy53b3Jkc1tpXX1kZXN0Lmxlbmd0aD10aGlzLmxlbmd0aDtkZXN0Lm5lZ2F0aXZlPXRoaXMubmVnYXRpdmU7ZGVzdC5yZWQ9dGhpcy5yZWR9O0JOLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbiBjbG9uZSgpe3ZhciByPW5ldyBCTihudWxsKTt0aGlzLmNvcHkocik7cmV0dXJuIHJ9O0JOLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uIF9leHBhbmQoc2l6ZSl7d2hpbGUodGhpcy5sZW5ndGg8c2l6ZSl7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wfXJldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24gc3RyaXAoKXt3aGlsZSh0aGlzLmxlbmd0aD4xJiZ0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdPT09MCl7dGhpcy5sZW5ndGgtLX1yZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX07Qk4ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbiBfbm9ybVNpZ24oKXtpZih0aGlzLmxlbmd0aD09PTEmJnRoaXMud29yZHNbMF09PT0wKXt0aGlzLm5lZ2F0aXZlPTB9cmV0dXJuIHRoaXN9O0JOLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uIGluc3BlY3QoKXtyZXR1cm4odGhpcy5yZWQ/IjxCTi1SOiAiOiI8Qk46ICIpK3RoaXMudG9TdHJpbmcoMTYpKyI+In07dmFyIHplcm9zPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdO3ZhciBncm91cFNpemVzPVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdO3ZhciBncm91cEJhc2VzPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO0JOLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbiB0b1N0cmluZyhiYXNlLHBhZGRpbmcpe2Jhc2U9YmFzZXx8MTA7cGFkZGluZz1wYWRkaW5nfDB8fDE7dmFyIG91dDtpZihiYXNlPT09MTZ8fGJhc2U9PT0iaGV4Iil7b3V0PSIiO3ZhciBvZmY9MDt2YXIgY2Fycnk9MDtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dmFyIHc9dGhpcy53b3Jkc1tpXTt2YXIgd29yZD0oKHc8PG9mZnxjYXJyeSkmMTY3NzcyMTUpLnRvU3RyaW5nKDE2KTtjYXJyeT13Pj4+MjQtb2ZmJjE2Nzc3MjE1O2lmKGNhcnJ5IT09MHx8aSE9PXRoaXMubGVuZ3RoLTEpe291dD16ZXJvc1s2LXdvcmQubGVuZ3RoXSt3b3JkK291dH1lbHNle291dD13b3JkK291dH1vZmYrPTI7aWYob2ZmPj0yNil7b2ZmLT0yNjtpLS19fWlmKGNhcnJ5IT09MCl7b3V0PWNhcnJ5LnRvU3RyaW5nKDE2KStvdXR9d2hpbGUob3V0Lmxlbmd0aCVwYWRkaW5nIT09MCl7b3V0PSIwIitvdXR9aWYodGhpcy5uZWdhdGl2ZSE9PTApe291dD0iLSIrb3V0fXJldHVybiBvdXR9aWYoYmFzZT09PShiYXNlfDApJiZiYXNlPj0yJiZiYXNlPD0zNil7dmFyIGdyb3VwU2l6ZT1ncm91cFNpemVzW2Jhc2VdO3ZhciBncm91cEJhc2U9Z3JvdXBCYXNlc1tiYXNlXTtvdXQ9IiI7dmFyIGM9dGhpcy5jbG9uZSgpO2MubmVnYXRpdmU9MDt3aGlsZSghYy5pc1plcm8oKSl7dmFyIHI9Yy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7Yz1jLmlkaXZuKGdyb3VwQmFzZSk7aWYoIWMuaXNaZXJvKCkpe291dD16ZXJvc1tncm91cFNpemUtci5sZW5ndGhdK3Irb3V0fWVsc2V7b3V0PXIrb3V0fX1pZih0aGlzLmlzWmVybygpKXtvdXQ9IjAiK291dH13aGlsZShvdXQubGVuZ3RoJXBhZGRpbmchPT0wKXtvdXQ9IjAiK291dH1pZih0aGlzLm5lZ2F0aXZlIT09MCl7b3V0PSItIitvdXR9cmV0dXJuIG91dH1hc3NlcnQoZmFsc2UsIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYiKX07Qk4ucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uIHRvTnVtYmVyKCl7dmFyIHJldD10aGlzLndvcmRzWzBdO2lmKHRoaXMubGVuZ3RoPT09Mil7cmV0Kz10aGlzLndvcmRzWzFdKjY3MTA4ODY0fWVsc2UgaWYodGhpcy5sZW5ndGg9PT0zJiZ0aGlzLndvcmRzWzJdPT09MSl7cmV0Kz00NTAzNTk5NjI3MzcwNDk2K3RoaXMud29yZHNbMV0qNjcxMDg4NjR9ZWxzZSBpZih0aGlzLmxlbmd0aD4yKXthc3NlcnQoZmFsc2UsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpfXJldHVybiB0aGlzLm5lZ2F0aXZlIT09MD8tcmV0OnJldH07Qk4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbiB0b0pTT04oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9O0JOLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbiB0b0J1ZmZlcihlbmRpYW4sbGVuZ3RoKXthc3NlcnQodHlwZW9mIEJ1ZmZlciE9PSJ1bmRlZmluZWQiKTtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsZW5kaWFuLGxlbmd0aCl9O0JOLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uIHRvQXJyYXkoZW5kaWFuLGxlbmd0aCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksZW5kaWFuLGxlbmd0aCl9O0JOLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbiB0b0FycmF5TGlrZShBcnJheVR5cGUsZW5kaWFuLGxlbmd0aCl7dmFyIGJ5dGVMZW5ndGg9dGhpcy5ieXRlTGVuZ3RoKCk7dmFyIHJlcUxlbmd0aD1sZW5ndGh8fE1hdGgubWF4KDEsYnl0ZUxlbmd0aCk7YXNzZXJ0KGJ5dGVMZW5ndGg8PXJlcUxlbmd0aCwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCIpO2Fzc2VydChyZXFMZW5ndGg+MCwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwIik7dGhpcy5zdHJpcCgpO3ZhciBsaXR0bGVFbmRpYW49ZW5kaWFuPT09ImxlIjt2YXIgcmVzPW5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTt2YXIgYixpO3ZhciBxPXRoaXMuY2xvbmUoKTtpZighbGl0dGxlRW5kaWFuKXtmb3IoaT0wO2k8cmVxTGVuZ3RoLWJ5dGVMZW5ndGg7aSsrKXtyZXNbaV09MH1mb3IoaT0wOyFxLmlzWmVybygpO2krKyl7Yj1xLmFuZGxuKDI1NSk7cS5pdXNocm4oOCk7cmVzW3JlcUxlbmd0aC1pLTFdPWJ9fWVsc2V7Zm9yKGk9MDshcS5pc1plcm8oKTtpKyspe2I9cS5hbmRsbigyNTUpO3EuaXVzaHJuKDgpO3Jlc1tpXT1ifWZvcig7aTxyZXFMZW5ndGg7aSsrKXtyZXNbaV09MH19cmV0dXJuIHJlc307aWYoTWF0aC5jbHozMil7Qk4ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24gX2NvdW50Qml0cyh3KXtyZXR1cm4gMzItTWF0aC5jbHozMih3KX19ZWxzZXtCTi5wcm90b3R5cGUuX2NvdW50Qml0cz1mdW5jdGlvbiBfY291bnRCaXRzKHcpe3ZhciB0PXc7dmFyIHI9MDtpZih0Pj00MDk2KXtyKz0xMzt0Pj4+PTEzfWlmKHQ+PTY0KXtyKz03O3Q+Pj49N31pZih0Pj04KXtyKz00O3Q+Pj49NH1pZih0Pj0yKXtyKz0yO3Q+Pj49Mn1yZXR1cm4gcit0fX1CTi5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uIF96ZXJvQml0cyh3KXtpZih3PT09MClyZXR1cm4gMjY7dmFyIHQ9dzt2YXIgcj0wO2lmKCh0JjgxOTEpPT09MCl7cis9MTM7dD4+Pj0xM31pZigodCYxMjcpPT09MCl7cis9Nzt0Pj4+PTd9aWYoKHQmMTUpPT09MCl7cis9NDt0Pj4+PTR9aWYoKHQmMyk9PT0wKXtyKz0yO3Q+Pj49Mn1pZigodCYxKT09PTApe3IrK31yZXR1cm4gcn07Qk4ucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbiBiaXRMZW5ndGgoKXt2YXIgdz10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdO3ZhciBoaT10aGlzLl9jb3VudEJpdHModyk7cmV0dXJuKHRoaXMubGVuZ3RoLTEpKjI2K2hpfTtmdW5jdGlvbiB0b0JpdEFycmF5KG51bSl7dmFyIHc9bmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7Zm9yKHZhciBiaXQ9MDtiaXQ8dy5sZW5ndGg7Yml0Kyspe3ZhciBvZmY9Yml0LzI2fDA7dmFyIHdiaXQ9Yml0JTI2O3dbYml0XT0obnVtLndvcmRzW29mZl0mMTw8d2JpdCk+Pj53Yml0fXJldHVybiB3fUJOLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbiB6ZXJvQml0cygpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7dmFyIHI9MDtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dmFyIGI9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7cis9YjtpZihiIT09MjYpYnJlYWt9cmV0dXJuIHJ9O0JOLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uIGJ5dGVMZW5ndGgoKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9O0JOLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24gdG9Ud29zKHdpZHRoKXtpZih0aGlzLm5lZ2F0aXZlIT09MCl7cmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpfXJldHVybiB0aGlzLmNsb25lKCl9O0JOLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbiBmcm9tVHdvcyh3aWR0aCl7aWYodGhpcy50ZXN0bih3aWR0aC0xKSl7cmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpfXJldHVybiB0aGlzLmNsb25lKCl9O0JOLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbiBpc05lZygpe3JldHVybiB0aGlzLm5lZ2F0aXZlIT09MH07Qk4ucHJvdG90eXBlLm5lZz1mdW5jdGlvbiBuZWcoKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX07Qk4ucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24gaW5lZygpe2lmKCF0aGlzLmlzWmVybygpKXt0aGlzLm5lZ2F0aXZlXj0xfXJldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbiBpdW9yKG51bSl7d2hpbGUodGhpcy5sZW5ndGg8bnVtLmxlbmd0aCl7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wfWZvcih2YXIgaT0wO2k8bnVtLmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09dGhpcy53b3Jkc1tpXXxudW0ud29yZHNbaV19cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLmlvcj1mdW5jdGlvbiBpb3IobnVtKXthc3NlcnQoKHRoaXMubmVnYXRpdmV8bnVtLm5lZ2F0aXZlKT09PTApO3JldHVybiB0aGlzLml1b3IobnVtKX07Qk4ucHJvdG90eXBlLm9yPWZ1bmN0aW9uIG9yKG51bSl7aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aClyZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO3JldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyl9O0JOLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24gdW9yKG51bSl7aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aClyZXR1cm4gdGhpcy5jbG9uZSgpLml1b3IobnVtKTtyZXR1cm4gbnVtLmNsb25lKCkuaXVvcih0aGlzKX07Qk4ucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uIGl1YW5kKG51bSl7dmFyIGI7aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aCl7Yj1udW19ZWxzZXtiPXRoaXN9Zm9yKHZhciBpPTA7aTxiLmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09dGhpcy53b3Jkc1tpXSZudW0ud29yZHNbaV19dGhpcy5sZW5ndGg9Yi5sZW5ndGg7cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24gaWFuZChudW0pe2Fzc2VydCgodGhpcy5uZWdhdGl2ZXxudW0ubmVnYXRpdmUpPT09MCk7cmV0dXJuIHRoaXMuaXVhbmQobnVtKX07Qk4ucHJvdG90eXBlLmFuZD1mdW5jdGlvbiBhbmQobnVtKXtpZih0aGlzLmxlbmd0aD5udW0ubGVuZ3RoKXJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO3JldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpfTtCTi5wcm90b3R5cGUudWFuZD1mdW5jdGlvbiB1YW5kKG51bSl7aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aClyZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKG51bSk7cmV0dXJuIG51bS5jbG9uZSgpLml1YW5kKHRoaXMpfTtCTi5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24gaXV4b3IobnVtKXt2YXIgYTt2YXIgYjtpZih0aGlzLmxlbmd0aD5udW0ubGVuZ3RoKXthPXRoaXM7Yj1udW19ZWxzZXthPW51bTtiPXRoaXN9Zm9yKHZhciBpPTA7aTxiLmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09YS53b3Jkc1tpXV5iLndvcmRzW2ldfWlmKHRoaXMhPT1hKXtmb3IoO2k8YS5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPWEud29yZHNbaV19fXRoaXMubGVuZ3RoPWEubGVuZ3RoO3JldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uIGl4b3IobnVtKXthc3NlcnQoKHRoaXMubmVnYXRpdmV8bnVtLm5lZ2F0aXZlKT09PTApO3JldHVybiB0aGlzLml1eG9yKG51bSl9O0JOLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24geG9yKG51bSl7aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aClyZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtyZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKX07Qk4ucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24gdXhvcihudW0pe2lmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO3JldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKX07Qk4ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uIGlub3RuKHdpZHRoKXthc3NlcnQodHlwZW9mIHdpZHRoPT09Im51bWJlciImJndpZHRoPj0wKTt2YXIgYnl0ZXNOZWVkZWQ9TWF0aC5jZWlsKHdpZHRoLzI2KXwwO3ZhciBiaXRzTGVmdD13aWR0aCUyNjt0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO2lmKGJpdHNMZWZ0PjApe2J5dGVzTmVlZGVkLS19Zm9yKHZhciBpPTA7aTxieXRlc05lZWRlZDtpKyspe3RoaXMud29yZHNbaV09fnRoaXMud29yZHNbaV0mNjcxMDg4NjN9aWYoYml0c0xlZnQ+MCl7dGhpcy53b3Jkc1tpXT1+dGhpcy53b3Jkc1tpXSY2NzEwODg2Mz4+MjYtYml0c0xlZnR9cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24gbm90bih3aWR0aCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih3aWR0aCl9O0JOLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uIHNldG4oYml0LHZhbCl7YXNzZXJ0KHR5cGVvZiBiaXQ9PT0ibnVtYmVyIiYmYml0Pj0wKTt2YXIgb2ZmPWJpdC8yNnwwO3ZhciB3Yml0PWJpdCUyNjt0aGlzLl9leHBhbmQob2ZmKzEpO2lmKHZhbCl7dGhpcy53b3Jkc1tvZmZdPXRoaXMud29yZHNbb2ZmXXwxPDx3Yml0fWVsc2V7dGhpcy53b3Jkc1tvZmZdPXRoaXMud29yZHNbb2ZmXSZ+KDE8PHdiaXQpfXJldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uIGlhZGQobnVtKXt2YXIgcjtpZih0aGlzLm5lZ2F0aXZlIT09MCYmbnVtLm5lZ2F0aXZlPT09MCl7dGhpcy5uZWdhdGl2ZT0wO3I9dGhpcy5pc3ViKG51bSk7dGhpcy5uZWdhdGl2ZV49MTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX1lbHNlIGlmKHRoaXMubmVnYXRpdmU9PT0wJiZudW0ubmVnYXRpdmUhPT0wKXtudW0ubmVnYXRpdmU9MDtyPXRoaXMuaXN1YihudW0pO251bS5uZWdhdGl2ZT0xO3JldHVybiByLl9ub3JtU2lnbigpfXZhciBhLGI7aWYodGhpcy5sZW5ndGg+bnVtLmxlbmd0aCl7YT10aGlzO2I9bnVtfWVsc2V7YT1udW07Yj10aGlzfXZhciBjYXJyeT0wO2Zvcih2YXIgaT0wO2k8Yi5sZW5ndGg7aSsrKXtyPShhLndvcmRzW2ldfDApKyhiLndvcmRzW2ldfDApK2NhcnJ5O3RoaXMud29yZHNbaV09ciY2NzEwODg2MztjYXJyeT1yPj4+MjZ9Zm9yKDtjYXJyeSE9PTAmJmk8YS5sZW5ndGg7aSsrKXtyPShhLndvcmRzW2ldfDApK2NhcnJ5O3RoaXMud29yZHNbaV09ciY2NzEwODg2MztjYXJyeT1yPj4+MjZ9dGhpcy5sZW5ndGg9YS5sZW5ndGg7aWYoY2FycnkhPT0wKXt0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1jYXJyeTt0aGlzLmxlbmd0aCsrfWVsc2UgaWYoYSE9PXRoaXMpe2Zvcig7aTxhLmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09YS53b3Jkc1tpXX19cmV0dXJuIHRoaXN9O0JOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24gYWRkKG51bSl7dmFyIHJlcztpZihudW0ubmVnYXRpdmUhPT0wJiZ0aGlzLm5lZ2F0aXZlPT09MCl7bnVtLm5lZ2F0aXZlPTA7cmVzPXRoaXMuc3ViKG51bSk7bnVtLm5lZ2F0aXZlXj0xO3JldHVybiByZXN9ZWxzZSBpZihudW0ubmVnYXRpdmU9PT0wJiZ0aGlzLm5lZ2F0aXZlIT09MCl7dGhpcy5uZWdhdGl2ZT0wO3Jlcz1udW0uc3ViKHRoaXMpO3RoaXMubmVnYXRpdmU9MTtyZXR1cm4gcmVzfWlmKHRoaXMubGVuZ3RoPm51bS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7cmV0dXJuIG51bS5jbG9uZSgpLmlhZGQodGhpcyl9O0JOLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uIGlzdWIobnVtKXtpZihudW0ubmVnYXRpdmUhPT0wKXtudW0ubmVnYXRpdmU9MDt2YXIgcj10aGlzLmlhZGQobnVtKTtudW0ubmVnYXRpdmU9MTtyZXR1cm4gci5fbm9ybVNpZ24oKX1lbHNlIGlmKHRoaXMubmVnYXRpdmUhPT0wKXt0aGlzLm5lZ2F0aXZlPTA7dGhpcy5pYWRkKG51bSk7dGhpcy5uZWdhdGl2ZT0xO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfXZhciBjbXA9dGhpcy5jbXAobnVtKTtpZihjbXA9PT0wKXt0aGlzLm5lZ2F0aXZlPTA7dGhpcy5sZW5ndGg9MTt0aGlzLndvcmRzWzBdPTA7cmV0dXJuIHRoaXN9dmFyIGEsYjtpZihjbXA+MCl7YT10aGlzO2I9bnVtfWVsc2V7YT1udW07Yj10aGlzfXZhciBjYXJyeT0wO2Zvcih2YXIgaT0wO2k8Yi5sZW5ndGg7aSsrKXtyPShhLndvcmRzW2ldfDApLShiLndvcmRzW2ldfDApK2NhcnJ5O2NhcnJ5PXI+PjI2O3RoaXMud29yZHNbaV09ciY2NzEwODg2M31mb3IoO2NhcnJ5IT09MCYmaTxhLmxlbmd0aDtpKyspe3I9KGEud29yZHNbaV18MCkrY2Fycnk7Y2Fycnk9cj4+MjY7dGhpcy53b3Jkc1tpXT1yJjY3MTA4ODYzfWlmKGNhcnJ5PT09MCYmaTxhLmxlbmd0aCYmYSE9PXRoaXMpe2Zvcig7aTxhLmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09YS53b3Jkc1tpXX19dGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsaSk7aWYoYSE9PXRoaXMpe3RoaXMubmVnYXRpdmU9MX1yZXR1cm4gdGhpcy5zdHJpcCgpfTtCTi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uIHN1YihudW0pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pfTtmdW5jdGlvbiBzbWFsbE11bFRvKHNlbGYsbnVtLG91dCl7b3V0Lm5lZ2F0aXZlPW51bS5uZWdhdGl2ZV5zZWxmLm5lZ2F0aXZlO3ZhciBsZW49c2VsZi5sZW5ndGgrbnVtLmxlbmd0aHwwO291dC5sZW5ndGg9bGVuO2xlbj1sZW4tMXwwO3ZhciBhPXNlbGYud29yZHNbMF18MDt2YXIgYj1udW0ud29yZHNbMF18MDt2YXIgcj1hKmI7dmFyIGxvPXImNjcxMDg4NjM7dmFyIGNhcnJ5PXIvNjcxMDg4NjR8MDtvdXQud29yZHNbMF09bG87Zm9yKHZhciBrPTE7azxsZW47aysrKXt2YXIgbmNhcnJ5PWNhcnJ5Pj4+MjY7dmFyIHJ3b3JkPWNhcnJ5JjY3MTA4ODYzO3ZhciBtYXhKPU1hdGgubWluKGssbnVtLmxlbmd0aC0xKTtmb3IodmFyIGo9TWF0aC5tYXgoMCxrLXNlbGYubGVuZ3RoKzEpO2o8PW1heEo7aisrKXt2YXIgaT1rLWp8MDthPXNlbGYud29yZHNbaV18MDtiPW51bS53b3Jkc1tqXXwwO3I9YSpiK3J3b3JkO25jYXJyeSs9ci82NzEwODg2NHwwO3J3b3JkPXImNjcxMDg4NjN9b3V0LndvcmRzW2tdPXJ3b3JkfDA7Y2Fycnk9bmNhcnJ5fDB9aWYoY2FycnkhPT0wKXtvdXQud29yZHNba109Y2Fycnl8MH1lbHNle291dC5sZW5ndGgtLX1yZXR1cm4gb3V0LnN0cmlwKCl9dmFyIGNvbWIxME11bFRvPWZ1bmN0aW9uIGNvbWIxME11bFRvKHNlbGYsbnVtLG91dCl7dmFyIGE9c2VsZi53b3Jkczt2YXIgYj1udW0ud29yZHM7dmFyIG89b3V0LndvcmRzO3ZhciBjPTA7dmFyIGxvO3ZhciBtaWQ7dmFyIGhpO3ZhciBhMD1hWzBdfDA7dmFyIGFsMD1hMCY4MTkxO3ZhciBhaDA9YTA+Pj4xMzt2YXIgYTE9YVsxXXwwO3ZhciBhbDE9YTEmODE5MTt2YXIgYWgxPWExPj4+MTM7dmFyIGEyPWFbMl18MDt2YXIgYWwyPWEyJjgxOTE7dmFyIGFoMj1hMj4+PjEzO3ZhciBhMz1hWzNdfDA7dmFyIGFsMz1hMyY4MTkxO3ZhciBhaDM9YTM+Pj4xMzt2YXIgYTQ9YVs0XXwwO3ZhciBhbDQ9YTQmODE5MTt2YXIgYWg0PWE0Pj4+MTM7dmFyIGE1PWFbNV18MDt2YXIgYWw1PWE1JjgxOTE7dmFyIGFoNT1hNT4+PjEzO3ZhciBhNj1hWzZdfDA7dmFyIGFsNj1hNiY4MTkxO3ZhciBhaDY9YTY+Pj4xMzt2YXIgYTc9YVs3XXwwO3ZhciBhbDc9YTcmODE5MTt2YXIgYWg3PWE3Pj4+MTM7dmFyIGE4PWFbOF18MDt2YXIgYWw4PWE4JjgxOTE7dmFyIGFoOD1hOD4+PjEzO3ZhciBhOT1hWzldfDA7dmFyIGFsOT1hOSY4MTkxO3ZhciBhaDk9YTk+Pj4xMzt2YXIgYjA9YlswXXwwO3ZhciBibDA9YjAmODE5MTt2YXIgYmgwPWIwPj4+MTM7dmFyIGIxPWJbMV18MDt2YXIgYmwxPWIxJjgxOTE7dmFyIGJoMT1iMT4+PjEzO3ZhciBiMj1iWzJdfDA7dmFyIGJsMj1iMiY4MTkxO3ZhciBiaDI9YjI+Pj4xMzt2YXIgYjM9YlszXXwwO3ZhciBibDM9YjMmODE5MTt2YXIgYmgzPWIzPj4+MTM7dmFyIGI0PWJbNF18MDt2YXIgYmw0PWI0JjgxOTE7dmFyIGJoND1iND4+PjEzO3ZhciBiNT1iWzVdfDA7dmFyIGJsNT1iNSY4MTkxO3ZhciBiaDU9YjU+Pj4xMzt2YXIgYjY9Yls2XXwwO3ZhciBibDY9YjYmODE5MTt2YXIgYmg2PWI2Pj4+MTM7dmFyIGI3PWJbN118MDt2YXIgYmw3PWI3JjgxOTE7dmFyIGJoNz1iNz4+PjEzO3ZhciBiOD1iWzhdfDA7dmFyIGJsOD1iOCY4MTkxO3ZhciBiaDg9Yjg+Pj4xMzt2YXIgYjk9Yls5XXwwO3ZhciBibDk9YjkmODE5MTt2YXIgYmg5PWI5Pj4+MTM7b3V0Lm5lZ2F0aXZlPXNlbGYubmVnYXRpdmVebnVtLm5lZ2F0aXZlO291dC5sZW5ndGg9MTk7bG89TWF0aC5pbXVsKGFsMCxibDApO21pZD1NYXRoLmltdWwoYWwwLGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWgwLGJsMCl8MDtoaT1NYXRoLmltdWwoYWgwLGJoMCk7dmFyIHcwPShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MD4+PjI2KXwwO3cwJj02NzEwODg2Mztsbz1NYXRoLmltdWwoYWwxLGJsMCk7bWlkPU1hdGguaW11bChhbDEsYmgwKTttaWQ9bWlkK01hdGguaW11bChhaDEsYmwwKXwwO2hpPU1hdGguaW11bChhaDEsYmgwKTtsbz1sbytNYXRoLmltdWwoYWwwLGJsMSl8MDttaWQ9bWlkK01hdGguaW11bChhbDAsYmgxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMCxibDEpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMCxiaDEpfDA7dmFyIHcxPShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3MT4+PjI2KXwwO3cxJj02NzEwODg2Mztsbz1NYXRoLmltdWwoYWwyLGJsMCk7bWlkPU1hdGguaW11bChhbDIsYmgwKTttaWQ9bWlkK01hdGguaW11bChhaDIsYmwwKXwwO2hpPU1hdGguaW11bChhaDIsYmgwKTtsbz1sbytNYXRoLmltdWwoYWwxLGJsMSl8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmgxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDEpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDEpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoMil8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmwyKXwwO2hpPWhpK01hdGguaW11bChhaDAsYmgyKXwwO3ZhciB3Mj0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzI+Pj4yNil8MDt3MiY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsMyxibDApO21pZD1NYXRoLmltdWwoYWwzLGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWgzLGJsMCl8MDtoaT1NYXRoLmltdWwoYWgzLGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsMixibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwyLGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDIsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDIsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDEsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMSxiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgxLGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWgxLGJoMil8MDtsbz1sbytNYXRoLmltdWwoYWwwLGJsMyl8MDttaWQ9bWlkK01hdGguaW11bChhbDAsYmgzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMCxibDMpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMCxiaDMpfDA7dmFyIHczPShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3Mz4+PjI2KXwwO3czJj02NzEwODg2Mztsbz1NYXRoLmltdWwoYWw0LGJsMCk7bWlkPU1hdGguaW11bChhbDQsYmgwKTttaWQ9bWlkK01hdGguaW11bChhaDQsYmwwKXwwO2hpPU1hdGguaW11bChhaDQsYmgwKTtsbz1sbytNYXRoLmltdWwoYWwzLGJsMSl8MDttaWQ9bWlkK01hdGguaW11bChhbDMsYmgxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMyxibDEpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMyxiaDEpfDA7bG89bG8rTWF0aC5pbXVsKGFsMixibDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwyLGJoMil8MDttaWQ9bWlkK01hdGguaW11bChhaDIsYmwyKXwwO2hpPWhpK01hdGguaW11bChhaDIsYmgyKXwwO2xvPWxvK01hdGguaW11bChhbDEsYmwzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMSxiaDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgxLGJsMyl8MDtoaT1oaStNYXRoLmltdWwoYWgxLGJoMyl8MDtsbz1sbytNYXRoLmltdWwoYWwwLGJsNCl8MDttaWQ9bWlkK01hdGguaW11bChhbDAsYmg0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMCxibDQpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMCxiaDQpfDA7dmFyIHc0PShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3ND4+PjI2KXwwO3c0Jj02NzEwODg2Mztsbz1NYXRoLmltdWwoYWw1LGJsMCk7bWlkPU1hdGguaW11bChhbDUsYmgwKTttaWQ9bWlkK01hdGguaW11bChhaDUsYmwwKXwwO2hpPU1hdGguaW11bChhaDUsYmgwKTtsbz1sbytNYXRoLmltdWwoYWw0LGJsMSl8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmgxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDEpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDEpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoMil8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmwyKXwwO2hpPWhpK01hdGguaW11bChhaDMsYmgyKXwwO2xvPWxvK01hdGguaW11bChhbDIsYmwzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsMyl8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoMyl8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsNCl8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmg0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDQpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDQpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoNSl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmw1KXwwO2hpPWhpK01hdGguaW11bChhaDAsYmg1KXwwO3ZhciB3NT0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzU+Pj4yNil8MDt3NSY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsNixibDApO21pZD1NYXRoLmltdWwoYWw2LGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWg2LGJsMCl8MDtoaT1NYXRoLmltdWwoYWg2LGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsNSxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw1LGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDUsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDUsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDQsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNCxiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg0LGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWg0LGJoMil8MDtsbz1sbytNYXRoLmltdWwoYWwzLGJsMyl8MDttaWQ9bWlkK01hdGguaW11bChhbDMsYmgzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMyxibDMpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMyxiaDMpfDA7bG89bG8rTWF0aC5pbXVsKGFsMixibDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwyLGJoNCl8MDttaWQ9bWlkK01hdGguaW11bChhaDIsYmw0KXwwO2hpPWhpK01hdGguaW11bChhaDIsYmg0KXwwO2xvPWxvK01hdGguaW11bChhbDEsYmw1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMSxiaDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgxLGJsNSl8MDtoaT1oaStNYXRoLmltdWwoYWgxLGJoNSl8MDtsbz1sbytNYXRoLmltdWwoYWwwLGJsNil8MDttaWQ9bWlkK01hdGguaW11bChhbDAsYmg2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMCxibDYpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMCxiaDYpfDA7dmFyIHc2PShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3Nj4+PjI2KXwwO3c2Jj02NzEwODg2Mztsbz1NYXRoLmltdWwoYWw3LGJsMCk7bWlkPU1hdGguaW11bChhbDcsYmgwKTttaWQ9bWlkK01hdGguaW11bChhaDcsYmwwKXwwO2hpPU1hdGguaW11bChhaDcsYmgwKTtsbz1sbytNYXRoLmltdWwoYWw2LGJsMSl8MDttaWQ9bWlkK01hdGguaW11bChhbDYsYmgxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDEpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNixiaDEpfDA7bG89bG8rTWF0aC5pbXVsKGFsNSxibDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw1LGJoMil8MDttaWQ9bWlkK01hdGguaW11bChhaDUsYmwyKXwwO2hpPWhpK01hdGguaW11bChhaDUsYmgyKXwwO2xvPWxvK01hdGguaW11bChhbDQsYmwzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNCxiaDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg0LGJsMyl8MDtoaT1oaStNYXRoLmltdWwoYWg0LGJoMyl8MDtsbz1sbytNYXRoLmltdWwoYWwzLGJsNCl8MDttaWQ9bWlkK01hdGguaW11bChhbDMsYmg0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMyxibDQpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMyxiaDQpfDA7bG89bG8rTWF0aC5pbXVsKGFsMixibDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwyLGJoNSl8MDttaWQ9bWlkK01hdGguaW11bChhaDIsYmw1KXwwO2hpPWhpK01hdGguaW11bChhaDIsYmg1KXwwO2xvPWxvK01hdGguaW11bChhbDEsYmw2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMSxiaDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgxLGJsNil8MDtoaT1oaStNYXRoLmltdWwoYWgxLGJoNil8MDtsbz1sbytNYXRoLmltdWwoYWwwLGJsNyl8MDttaWQ9bWlkK01hdGguaW11bChhbDAsYmg3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMCxibDcpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMCxiaDcpfDA7dmFyIHc3PShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3Nz4+PjI2KXwwO3c3Jj02NzEwODg2Mztsbz1NYXRoLmltdWwoYWw4LGJsMCk7bWlkPU1hdGguaW11bChhbDgsYmgwKTttaWQ9bWlkK01hdGguaW11bChhaDgsYmwwKXwwO2hpPU1hdGguaW11bChhaDgsYmgwKTtsbz1sbytNYXRoLmltdWwoYWw3LGJsMSl8MDttaWQ9bWlkK01hdGguaW11bChhbDcsYmgxKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNyxibDEpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNyxiaDEpfDA7bG89bG8rTWF0aC5pbXVsKGFsNixibDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw2LGJoMil8MDttaWQ9bWlkK01hdGguaW11bChhaDYsYmwyKXwwO2hpPWhpK01hdGguaW11bChhaDYsYmgyKXwwO2xvPWxvK01hdGguaW11bChhbDUsYmwzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNSxiaDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg1LGJsMyl8MDtoaT1oaStNYXRoLmltdWwoYWg1LGJoMyl8MDtsbz1sbytNYXRoLmltdWwoYWw0LGJsNCl8MDttaWQ9bWlkK01hdGguaW11bChhbDQsYmg0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNCxibDQpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNCxiaDQpfDA7bG89bG8rTWF0aC5pbXVsKGFsMyxibDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwzLGJoNSl8MDttaWQ9bWlkK01hdGguaW11bChhaDMsYmw1KXwwO2hpPWhpK01hdGguaW11bChhaDMsYmg1KXwwO2xvPWxvK01hdGguaW11bChhbDIsYmw2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMixiaDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgyLGJsNil8MDtoaT1oaStNYXRoLmltdWwoYWgyLGJoNil8MDtsbz1sbytNYXRoLmltdWwoYWwxLGJsNyl8MDttaWQ9bWlkK01hdGguaW11bChhbDEsYmg3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMSxibDcpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMSxiaDcpfDA7bG89bG8rTWF0aC5pbXVsKGFsMCxibDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwwLGJoOCl8MDttaWQ9bWlkK01hdGguaW11bChhaDAsYmw4KXwwO2hpPWhpK01hdGguaW11bChhaDAsYmg4KXwwO3ZhciB3OD0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzg+Pj4yNil8MDt3OCY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDApO21pZD1NYXRoLmltdWwoYWw5LGJoMCk7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsMCl8MDtoaT1NYXRoLmltdWwoYWg5LGJoMCk7bG89bG8rTWF0aC5pbXVsKGFsOCxibDEpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoMSl8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmwxKXwwO2hpPWhpK01hdGguaW11bChhaDgsYmgxKXwwO2xvPWxvK01hdGguaW11bChhbDcsYmwyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNyxiaDIpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsMil8MDtoaT1oaStNYXRoLmltdWwoYWg3LGJoMil8MDtsbz1sbytNYXRoLmltdWwoYWw2LGJsMyl8MDttaWQ9bWlkK01hdGguaW11bChhbDYsYmgzKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDMpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNixiaDMpfDA7bG89bG8rTWF0aC5pbXVsKGFsNSxibDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw1LGJoNCl8MDttaWQ9bWlkK01hdGguaW11bChhaDUsYmw0KXwwO2hpPWhpK01hdGguaW11bChhaDUsYmg0KXwwO2xvPWxvK01hdGguaW11bChhbDQsYmw1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNCxiaDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg0LGJsNSl8MDtoaT1oaStNYXRoLmltdWwoYWg0LGJoNSl8MDtsbz1sbytNYXRoLmltdWwoYWwzLGJsNil8MDttaWQ9bWlkK01hdGguaW11bChhbDMsYmg2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMyxibDYpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMyxiaDYpfDA7bG89bG8rTWF0aC5pbXVsKGFsMixibDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwyLGJoNyl8MDttaWQ9bWlkK01hdGguaW11bChhaDIsYmw3KXwwO2hpPWhpK01hdGguaW11bChhaDIsYmg3KXwwO2xvPWxvK01hdGguaW11bChhbDEsYmw4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMSxiaDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgxLGJsOCl8MDtoaT1oaStNYXRoLmltdWwoYWgxLGJoOCl8MDtsbz1sbytNYXRoLmltdWwoYWwwLGJsOSl8MDttaWQ9bWlkK01hdGguaW11bChhbDAsYmg5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMCxibDkpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMCxiaDkpfDA7dmFyIHc5PShjK2xvfDApKygobWlkJjgxOTEpPDwxMyl8MDtjPShoaSsobWlkPj4+MTMpfDApKyh3OT4+PjI2KXwwO3c5Jj02NzEwODg2Mztsbz1NYXRoLmltdWwoYWw5LGJsMSk7bWlkPU1hdGguaW11bChhbDksYmgxKTttaWQ9bWlkK01hdGguaW11bChhaDksYmwxKXwwO2hpPU1hdGguaW11bChhaDksYmgxKTtsbz1sbytNYXRoLmltdWwoYWw4LGJsMil8MDttaWQ9bWlkK01hdGguaW11bChhbDgsYmgyKXwwO21pZD1taWQrTWF0aC5pbXVsKGFoOCxibDIpfDA7aGk9aGkrTWF0aC5pbXVsKGFoOCxiaDIpfDA7bG89bG8rTWF0aC5pbXVsKGFsNyxibDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw3LGJoMyl8MDttaWQ9bWlkK01hdGguaW11bChhaDcsYmwzKXwwO2hpPWhpK01hdGguaW11bChhaDcsYmgzKXwwO2xvPWxvK01hdGguaW11bChhbDYsYmw0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNixiaDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg2LGJsNCl8MDtoaT1oaStNYXRoLmltdWwoYWg2LGJoNCl8MDtsbz1sbytNYXRoLmltdWwoYWw1LGJsNSl8MDttaWQ9bWlkK01hdGguaW11bChhbDUsYmg1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNSxibDUpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNSxiaDUpfDA7bG89bG8rTWF0aC5pbXVsKGFsNCxibDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw0LGJoNil8MDttaWQ9bWlkK01hdGguaW11bChhaDQsYmw2KXwwO2hpPWhpK01hdGguaW11bChhaDQsYmg2KXwwO2xvPWxvK01hdGguaW11bChhbDMsYmw3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsMyxiaDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWgzLGJsNyl8MDtoaT1oaStNYXRoLmltdWwoYWgzLGJoNyl8MDtsbz1sbytNYXRoLmltdWwoYWwyLGJsOCl8MDttaWQ9bWlkK01hdGguaW11bChhbDIsYmg4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMixibDgpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMixiaDgpfDA7bG89bG8rTWF0aC5pbXVsKGFsMSxibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwxLGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDEsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDEsYmg5KXwwO3ZhciB3MTA9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxMD4+PjI2KXwwO3cxMCY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDIpO21pZD1NYXRoLmltdWwoYWw5LGJoMik7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsMil8MDtoaT1NYXRoLmltdWwoYWg5LGJoMik7bG89bG8rTWF0aC5pbXVsKGFsOCxibDMpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoMyl8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmwzKXwwO2hpPWhpK01hdGguaW11bChhaDgsYmgzKXwwO2xvPWxvK01hdGguaW11bChhbDcsYmw0KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNyxiaDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsNCl8MDtoaT1oaStNYXRoLmltdWwoYWg3LGJoNCl8MDtsbz1sbytNYXRoLmltdWwoYWw2LGJsNSl8MDttaWQ9bWlkK01hdGguaW11bChhbDYsYmg1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDUpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNixiaDUpfDA7bG89bG8rTWF0aC5pbXVsKGFsNSxibDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw1LGJoNil8MDttaWQ9bWlkK01hdGguaW11bChhaDUsYmw2KXwwO2hpPWhpK01hdGguaW11bChhaDUsYmg2KXwwO2xvPWxvK01hdGguaW11bChhbDQsYmw3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNCxiaDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg0LGJsNyl8MDtoaT1oaStNYXRoLmltdWwoYWg0LGJoNyl8MDtsbz1sbytNYXRoLmltdWwoYWwzLGJsOCl8MDttaWQ9bWlkK01hdGguaW11bChhbDMsYmg4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMyxibDgpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMyxiaDgpfDA7bG89bG8rTWF0aC5pbXVsKGFsMixibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWwyLGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDIsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDIsYmg5KXwwO3ZhciB3MTE9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxMT4+PjI2KXwwO3cxMSY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDMpO21pZD1NYXRoLmltdWwoYWw5LGJoMyk7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsMyl8MDtoaT1NYXRoLmltdWwoYWg5LGJoMyk7bG89bG8rTWF0aC5pbXVsKGFsOCxibDQpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoNCl8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmw0KXwwO2hpPWhpK01hdGguaW11bChhaDgsYmg0KXwwO2xvPWxvK01hdGguaW11bChhbDcsYmw1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNyxiaDUpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsNSl8MDtoaT1oaStNYXRoLmltdWwoYWg3LGJoNSl8MDtsbz1sbytNYXRoLmltdWwoYWw2LGJsNil8MDttaWQ9bWlkK01hdGguaW11bChhbDYsYmg2KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDYpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNixiaDYpfDA7bG89bG8rTWF0aC5pbXVsKGFsNSxibDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw1LGJoNyl8MDttaWQ9bWlkK01hdGguaW11bChhaDUsYmw3KXwwO2hpPWhpK01hdGguaW11bChhaDUsYmg3KXwwO2xvPWxvK01hdGguaW11bChhbDQsYmw4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNCxiaDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg0LGJsOCl8MDtoaT1oaStNYXRoLmltdWwoYWg0LGJoOCl8MDtsbz1sbytNYXRoLmltdWwoYWwzLGJsOSl8MDttaWQ9bWlkK01hdGguaW11bChhbDMsYmg5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoMyxibDkpfDA7aGk9aGkrTWF0aC5pbXVsKGFoMyxiaDkpfDA7dmFyIHcxMj0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzEyPj4+MjYpfDA7dzEyJj02NzEwODg2Mztsbz1NYXRoLmltdWwoYWw5LGJsNCk7bWlkPU1hdGguaW11bChhbDksYmg0KTttaWQ9bWlkK01hdGguaW11bChhaDksYmw0KXwwO2hpPU1hdGguaW11bChhaDksYmg0KTtsbz1sbytNYXRoLmltdWwoYWw4LGJsNSl8MDttaWQ9bWlkK01hdGguaW11bChhbDgsYmg1KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoOCxibDUpfDA7aGk9aGkrTWF0aC5pbXVsKGFoOCxiaDUpfDA7bG89bG8rTWF0aC5pbXVsKGFsNyxibDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw3LGJoNil8MDttaWQ9bWlkK01hdGguaW11bChhaDcsYmw2KXwwO2hpPWhpK01hdGguaW11bChhaDcsYmg2KXwwO2xvPWxvK01hdGguaW11bChhbDYsYmw3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNixiaDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg2LGJsNyl8MDtoaT1oaStNYXRoLmltdWwoYWg2LGJoNyl8MDtsbz1sbytNYXRoLmltdWwoYWw1LGJsOCl8MDttaWQ9bWlkK01hdGguaW11bChhbDUsYmg4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNSxibDgpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNSxiaDgpfDA7bG89bG8rTWF0aC5pbXVsKGFsNCxibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw0LGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDQsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDQsYmg5KXwwO3ZhciB3MTM9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxMz4+PjI2KXwwO3cxMyY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDUpO21pZD1NYXRoLmltdWwoYWw5LGJoNSk7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsNSl8MDtoaT1NYXRoLmltdWwoYWg5LGJoNSk7bG89bG8rTWF0aC5pbXVsKGFsOCxibDYpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoNil8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmw2KXwwO2hpPWhpK01hdGguaW11bChhaDgsYmg2KXwwO2xvPWxvK01hdGguaW11bChhbDcsYmw3KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNyxiaDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsNyl8MDtoaT1oaStNYXRoLmltdWwoYWg3LGJoNyl8MDtsbz1sbytNYXRoLmltdWwoYWw2LGJsOCl8MDttaWQ9bWlkK01hdGguaW11bChhbDYsYmg4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDgpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNixiaDgpfDA7bG89bG8rTWF0aC5pbXVsKGFsNSxibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw1LGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDUsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDUsYmg5KXwwO3ZhciB3MTQ9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxND4+PjI2KXwwO3cxNCY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDYpO21pZD1NYXRoLmltdWwoYWw5LGJoNik7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsNil8MDtoaT1NYXRoLmltdWwoYWg5LGJoNik7bG89bG8rTWF0aC5pbXVsKGFsOCxibDcpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoNyl8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmw3KXwwO2hpPWhpK01hdGguaW11bChhaDgsYmg3KXwwO2xvPWxvK01hdGguaW11bChhbDcsYmw4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFsNyxiaDgpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWg3LGJsOCl8MDtoaT1oaStNYXRoLmltdWwoYWg3LGJoOCl8MDtsbz1sbytNYXRoLmltdWwoYWw2LGJsOSl8MDttaWQ9bWlkK01hdGguaW11bChhbDYsYmg5KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoNixibDkpfDA7aGk9aGkrTWF0aC5pbXVsKGFoNixiaDkpfDA7dmFyIHcxNT0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzE1Pj4+MjYpfDA7dzE1Jj02NzEwODg2Mztsbz1NYXRoLmltdWwoYWw5LGJsNyk7bWlkPU1hdGguaW11bChhbDksYmg3KTttaWQ9bWlkK01hdGguaW11bChhaDksYmw3KXwwO2hpPU1hdGguaW11bChhaDksYmg3KTtsbz1sbytNYXRoLmltdWwoYWw4LGJsOCl8MDttaWQ9bWlkK01hdGguaW11bChhbDgsYmg4KXwwO21pZD1taWQrTWF0aC5pbXVsKGFoOCxibDgpfDA7aGk9aGkrTWF0aC5pbXVsKGFoOCxiaDgpfDA7bG89bG8rTWF0aC5pbXVsKGFsNyxibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw3LGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDcsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDcsYmg5KXwwO3ZhciB3MTY9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxNj4+PjI2KXwwO3cxNiY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDgpO21pZD1NYXRoLmltdWwoYWw5LGJoOCk7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsOCl8MDtoaT1NYXRoLmltdWwoYWg5LGJoOCk7bG89bG8rTWF0aC5pbXVsKGFsOCxibDkpfDA7bWlkPW1pZCtNYXRoLmltdWwoYWw4LGJoOSl8MDttaWQ9bWlkK01hdGguaW11bChhaDgsYmw5KXwwO2hpPWhpK01hdGguaW11bChhaDgsYmg5KXwwO3ZhciB3MTc9KGMrbG98MCkrKChtaWQmODE5MSk8PDEzKXwwO2M9KGhpKyhtaWQ+Pj4xMyl8MCkrKHcxNz4+PjI2KXwwO3cxNyY9NjcxMDg4NjM7bG89TWF0aC5pbXVsKGFsOSxibDkpO21pZD1NYXRoLmltdWwoYWw5LGJoOSk7bWlkPW1pZCtNYXRoLmltdWwoYWg5LGJsOSl8MDtoaT1NYXRoLmltdWwoYWg5LGJoOSk7dmFyIHcxOD0oYytsb3wwKSsoKG1pZCY4MTkxKTw8MTMpfDA7Yz0oaGkrKG1pZD4+PjEzKXwwKSsodzE4Pj4+MjYpfDA7dzE4Jj02NzEwODg2MztvWzBdPXcwO29bMV09dzE7b1syXT13MjtvWzNdPXczO29bNF09dzQ7b1s1XT13NTtvWzZdPXc2O29bN109dzc7b1s4XT13ODtvWzldPXc5O29bMTBdPXcxMDtvWzExXT13MTE7b1sxMl09dzEyO29bMTNdPXcxMztvWzE0XT13MTQ7b1sxNV09dzE1O29bMTZdPXcxNjtvWzE3XT13MTc7b1sxOF09dzE4O2lmKGMhPT0wKXtvWzE5XT1jO291dC5sZW5ndGgrK31yZXR1cm4gb3V0fTtpZighTWF0aC5pbXVsKXtjb21iMTBNdWxUbz1zbWFsbE11bFRvfWZ1bmN0aW9uIGJpZ011bFRvKHNlbGYsbnVtLG91dCl7b3V0Lm5lZ2F0aXZlPW51bS5uZWdhdGl2ZV5zZWxmLm5lZ2F0aXZlO291dC5sZW5ndGg9c2VsZi5sZW5ndGgrbnVtLmxlbmd0aDt2YXIgY2Fycnk9MDt2YXIgaG5jYXJyeT0wO2Zvcih2YXIgaz0wO2s8b3V0Lmxlbmd0aC0xO2srKyl7dmFyIG5jYXJyeT1obmNhcnJ5O2huY2Fycnk9MDt2YXIgcndvcmQ9Y2FycnkmNjcxMDg4NjM7dmFyIG1heEo9TWF0aC5taW4oayxudW0ubGVuZ3RoLTEpO2Zvcih2YXIgaj1NYXRoLm1heCgwLGstc2VsZi5sZW5ndGgrMSk7ajw9bWF4SjtqKyspe3ZhciBpPWstajt2YXIgYT1zZWxmLndvcmRzW2ldfDA7dmFyIGI9bnVtLndvcmRzW2pdfDA7dmFyIHI9YSpiO3ZhciBsbz1yJjY3MTA4ODYzO25jYXJyeT1uY2FycnkrKHIvNjcxMDg4NjR8MCl8MDtsbz1sbytyd29yZHwwO3J3b3JkPWxvJjY3MTA4ODYzO25jYXJyeT1uY2FycnkrKGxvPj4+MjYpfDA7aG5jYXJyeSs9bmNhcnJ5Pj4+MjY7bmNhcnJ5Jj02NzEwODg2M31vdXQud29yZHNba109cndvcmQ7Y2Fycnk9bmNhcnJ5O25jYXJyeT1obmNhcnJ5fWlmKGNhcnJ5IT09MCl7b3V0LndvcmRzW2tdPWNhcnJ5fWVsc2V7b3V0Lmxlbmd0aC0tfXJldHVybiBvdXQuc3RyaXAoKX1mdW5jdGlvbiBqdW1ib011bFRvKHNlbGYsbnVtLG91dCl7dmFyIGZmdG09bmV3IEZGVE07cmV0dXJuIGZmdG0ubXVscChzZWxmLG51bSxvdXQpfUJOLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbiBtdWxUbyhudW0sb3V0KXt2YXIgcmVzO3ZhciBsZW49dGhpcy5sZW5ndGgrbnVtLmxlbmd0aDtpZih0aGlzLmxlbmd0aD09PTEwJiZudW0ubGVuZ3RoPT09MTApe3Jlcz1jb21iMTBNdWxUbyh0aGlzLG51bSxvdXQpfWVsc2UgaWYobGVuPDYzKXtyZXM9c21hbGxNdWxUbyh0aGlzLG51bSxvdXQpfWVsc2UgaWYobGVuPDEwMjQpe3Jlcz1iaWdNdWxUbyh0aGlzLG51bSxvdXQpfWVsc2V7cmVzPWp1bWJvTXVsVG8odGhpcyxudW0sb3V0KX1yZXR1cm4gcmVzfTtmdW5jdGlvbiBGRlRNKHgseSl7dGhpcy54PXg7dGhpcy55PXl9RkZUTS5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbiBtYWtlUkJUKE4pe3ZhciB0PW5ldyBBcnJheShOKTt2YXIgbD1CTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKS0xO2Zvcih2YXIgaT0wO2k8TjtpKyspe3RbaV09dGhpcy5yZXZCaW4oaSxsLE4pfXJldHVybiB0fTtGRlRNLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24gcmV2QmluKHgsbCxOKXtpZih4PT09MHx8eD09PU4tMSlyZXR1cm4geDt2YXIgcmI9MDtmb3IodmFyIGk9MDtpPGw7aSsrKXtyYnw9KHgmMSk8PGwtaS0xO3g+Pj0xfXJldHVybiByYn07RkZUTS5wcm90b3R5cGUucGVybXV0ZT1mdW5jdGlvbiBwZXJtdXRlKHJidCxyd3MsaXdzLHJ0d3MsaXR3cyxOKXtmb3IodmFyIGk9MDtpPE47aSsrKXtydHdzW2ldPXJ3c1tyYnRbaV1dO2l0d3NbaV09aXdzW3JidFtpXV19fTtGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24gdHJhbnNmb3JtKHJ3cyxpd3MscnR3cyxpdHdzLE4scmJ0KXt0aGlzLnBlcm11dGUocmJ0LHJ3cyxpd3MscnR3cyxpdHdzLE4pO2Zvcih2YXIgcz0xO3M8TjtzPDw9MSl7dmFyIGw9czw8MTt2YXIgcnR3ZGY9TWF0aC5jb3MoMipNYXRoLlBJL2wpO3ZhciBpdHdkZj1NYXRoLnNpbigyKk1hdGguUEkvbCk7Zm9yKHZhciBwPTA7cDxOO3ArPWwpe3ZhciBydHdkZl89cnR3ZGY7dmFyIGl0d2RmXz1pdHdkZjtmb3IodmFyIGo9MDtqPHM7aisrKXt2YXIgcmU9cnR3c1twK2pdO3ZhciBpZT1pdHdzW3Aral07dmFyIHJvPXJ0d3NbcCtqK3NdO3ZhciBpbz1pdHdzW3AraitzXTt2YXIgcng9cnR3ZGZfKnJvLWl0d2RmXyppbztpbz1ydHdkZl8qaW8raXR3ZGZfKnJvO3JvPXJ4O3J0d3NbcCtqXT1yZStybztpdHdzW3Aral09aWUraW87cnR3c1twK2orc109cmUtcm87aXR3c1twK2orc109aWUtaW87aWYoaiE9PWwpe3J4PXJ0d2RmKnJ0d2RmXy1pdHdkZippdHdkZl87aXR3ZGZfPXJ0d2RmKml0d2RmXytpdHdkZipydHdkZl87cnR3ZGZfPXJ4fX19fX07RkZUTS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24gZ3Vlc3NMZW4xM2IobixtKXt2YXIgTj1NYXRoLm1heChtLG4pfDE7dmFyIG9kZD1OJjE7dmFyIGk9MDtmb3IoTj1OLzJ8MDtOO049Tj4+PjEpe2krK31yZXR1cm4gMTw8aSsxK29kZH07RkZUTS5wcm90b3R5cGUuY29uanVnYXRlPWZ1bmN0aW9uIGNvbmp1Z2F0ZShyd3MsaXdzLE4pe2lmKE48PTEpcmV0dXJuO2Zvcih2YXIgaT0wO2k8Ti8yO2krKyl7dmFyIHQ9cndzW2ldO3J3c1tpXT1yd3NbTi1pLTFdO3J3c1tOLWktMV09dDt0PWl3c1tpXTtpd3NbaV09LWl3c1tOLWktMV07aXdzW04taS0xXT0tdH19O0ZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbiBub3JtYWxpemUxM2Iod3MsTil7dmFyIGNhcnJ5PTA7Zm9yKHZhciBpPTA7aTxOLzI7aSsrKXt2YXIgdz1NYXRoLnJvdW5kKHdzWzIqaSsxXS9OKSo4MTkyK01hdGgucm91bmQod3NbMippXS9OKStjYXJyeTt3c1tpXT13JjY3MTA4ODYzO2lmKHc8NjcxMDg4NjQpe2NhcnJ5PTB9ZWxzZXtjYXJyeT13LzY3MTA4ODY0fDB9fXJldHVybiB3c307RkZUTS5wcm90b3R5cGUuY29udmVydDEzYj1mdW5jdGlvbiBjb252ZXJ0MTNiKHdzLGxlbixyd3MsTil7dmFyIGNhcnJ5PTA7Zm9yKHZhciBpPTA7aTxsZW47aSsrKXtjYXJyeT1jYXJyeSsod3NbaV18MCk7cndzWzIqaV09Y2FycnkmODE5MTtjYXJyeT1jYXJyeT4+PjEzO3J3c1syKmkrMV09Y2FycnkmODE5MTtjYXJyeT1jYXJyeT4+PjEzfWZvcihpPTIqbGVuO2k8TjsrK2kpe3J3c1tpXT0wfWFzc2VydChjYXJyeT09PTApO2Fzc2VydCgoY2FycnkmfjgxOTEpPT09MCl9O0ZGVE0ucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24gc3R1YihOKXt2YXIgcGg9bmV3IEFycmF5KE4pO2Zvcih2YXIgaT0wO2k8TjtpKyspe3BoW2ldPTB9cmV0dXJuIHBofTtGRlRNLnByb3RvdHlwZS5tdWxwPWZ1bmN0aW9uIG11bHAoeCx5LG91dCl7dmFyIE49Mip0aGlzLmd1ZXNzTGVuMTNiKHgubGVuZ3RoLHkubGVuZ3RoKTt2YXIgcmJ0PXRoaXMubWFrZVJCVChOKTt2YXIgXz10aGlzLnN0dWIoTik7dmFyIHJ3cz1uZXcgQXJyYXkoTik7dmFyIHJ3c3Q9bmV3IEFycmF5KE4pO3ZhciBpd3N0PW5ldyBBcnJheShOKTt2YXIgbnJ3cz1uZXcgQXJyYXkoTik7dmFyIG5yd3N0PW5ldyBBcnJheShOKTt2YXIgbml3c3Q9bmV3IEFycmF5KE4pO3ZhciBybXdzPW91dC53b3JkcztybXdzLmxlbmd0aD1OO3RoaXMuY29udmVydDEzYih4LndvcmRzLHgubGVuZ3RoLHJ3cyxOKTt0aGlzLmNvbnZlcnQxM2IoeS53b3Jkcyx5Lmxlbmd0aCxucndzLE4pO3RoaXMudHJhbnNmb3JtKHJ3cyxfLHJ3c3QsaXdzdCxOLHJidCk7dGhpcy50cmFuc2Zvcm0obnJ3cyxfLG5yd3N0LG5pd3N0LE4scmJ0KTtmb3IodmFyIGk9MDtpPE47aSsrKXt2YXIgcng9cndzdFtpXSpucndzdFtpXS1pd3N0W2ldKm5pd3N0W2ldO2l3c3RbaV09cndzdFtpXSpuaXdzdFtpXStpd3N0W2ldKm5yd3N0W2ldO3J3c3RbaV09cnh9dGhpcy5jb25qdWdhdGUocndzdCxpd3N0LE4pO3RoaXMudHJhbnNmb3JtKHJ3c3QsaXdzdCxybXdzLF8sTixyYnQpO3RoaXMuY29uanVnYXRlKHJtd3MsXyxOKTt0aGlzLm5vcm1hbGl6ZTEzYihybXdzLE4pO291dC5uZWdhdGl2ZT14Lm5lZ2F0aXZlXnkubmVnYXRpdmU7b3V0Lmxlbmd0aD14Lmxlbmd0aCt5Lmxlbmd0aDtyZXR1cm4gb3V0LnN0cmlwKCl9O0JOLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24gbXVsKG51bSl7dmFyIG91dD1uZXcgQk4obnVsbCk7b3V0LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtudW0ubGVuZ3RoKTtyZXR1cm4gdGhpcy5tdWxUbyhudW0sb3V0KX07Qk4ucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24gbXVsZihudW0pe3ZhciBvdXQ9bmV3IEJOKG51bGwpO291dC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrbnVtLmxlbmd0aCk7cmV0dXJuIGp1bWJvTXVsVG8odGhpcyxudW0sb3V0KX07Qk4ucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24gaW11bChudW0pe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8obnVtLHRoaXMpfTtCTi5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24gaW11bG4obnVtKXthc3NlcnQodHlwZW9mIG51bT09PSJudW1iZXIiKTthc3NlcnQobnVtPDY3MTA4ODY0KTt2YXIgY2Fycnk9MDtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dmFyIHc9KHRoaXMud29yZHNbaV18MCkqbnVtO3ZhciBsbz0odyY2NzEwODg2MykrKGNhcnJ5JjY3MTA4ODYzKTtjYXJyeT4+PTI2O2NhcnJ5Kz13LzY3MTA4ODY0fDA7Y2FycnkrPWxvPj4+MjY7dGhpcy53b3Jkc1tpXT1sbyY2NzEwODg2M31pZihjYXJyeSE9PTApe3RoaXMud29yZHNbaV09Y2Fycnk7dGhpcy5sZW5ndGgrK31yZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLm11bG49ZnVuY3Rpb24gbXVsbihudW0pe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKX07Qk4ucHJvdG90eXBlLnNxcj1mdW5jdGlvbiBzcXIoKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9O0JOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uIGlzcXIoKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9O0JOLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24gcG93KG51bSl7dmFyIHc9dG9CaXRBcnJheShudW0pO2lmKHcubGVuZ3RoPT09MClyZXR1cm4gbmV3IEJOKDEpO3ZhciByZXM9dGhpcztmb3IodmFyIGk9MDtpPHcubGVuZ3RoO2krKyxyZXM9cmVzLnNxcigpKXtpZih3W2ldIT09MClicmVha31pZigrK2k8dy5sZW5ndGgpe2Zvcih2YXIgcT1yZXMuc3FyKCk7aTx3Lmxlbmd0aDtpKysscT1xLnNxcigpKXtpZih3W2ldPT09MCljb250aW51ZTtyZXM9cmVzLm11bChxKX19cmV0dXJuIHJlc307Qk4ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbiBpdXNobG4oYml0cyl7YXNzZXJ0KHR5cGVvZiBiaXRzPT09Im51bWJlciImJmJpdHM+PTApO3ZhciByPWJpdHMlMjY7dmFyIHM9KGJpdHMtcikvMjY7dmFyIGNhcnJ5TWFzaz02NzEwODg2Mz4+PjI2LXI8PDI2LXI7dmFyIGk7aWYociE9PTApe3ZhciBjYXJyeT0wO2ZvcihpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciBuZXdDYXJyeT10aGlzLndvcmRzW2ldJmNhcnJ5TWFzazt2YXIgYz0odGhpcy53b3Jkc1tpXXwwKS1uZXdDYXJyeTw8cjt0aGlzLndvcmRzW2ldPWN8Y2Fycnk7Y2Fycnk9bmV3Q2Fycnk+Pj4yNi1yfWlmKGNhcnJ5KXt0aGlzLndvcmRzW2ldPWNhcnJ5O3RoaXMubGVuZ3RoKyt9fWlmKHMhPT0wKXtmb3IoaT10aGlzLmxlbmd0aC0xO2k+PTA7aS0tKXt0aGlzLndvcmRzW2krc109dGhpcy53b3Jkc1tpXX1mb3IoaT0wO2k8cztpKyspe3RoaXMud29yZHNbaV09MH10aGlzLmxlbmd0aCs9c31yZXR1cm4gdGhpcy5zdHJpcCgpfTtCTi5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24gaXNobG4oYml0cyl7YXNzZXJ0KHRoaXMubmVnYXRpdmU9PT0wKTtyZXR1cm4gdGhpcy5pdXNobG4oYml0cyl9O0JOLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24gaXVzaHJuKGJpdHMsaGludCxleHRlbmRlZCl7YXNzZXJ0KHR5cGVvZiBiaXRzPT09Im51bWJlciImJmJpdHM+PTApO3ZhciBoO2lmKGhpbnQpe2g9KGhpbnQtaGludCUyNikvMjZ9ZWxzZXtoPTB9dmFyIHI9Yml0cyUyNjt2YXIgcz1NYXRoLm1pbigoYml0cy1yKS8yNix0aGlzLmxlbmd0aCk7dmFyIG1hc2s9NjcxMDg4NjNeNjcxMDg4NjM+Pj5yPDxyO3ZhciBtYXNrZWRXb3Jkcz1leHRlbmRlZDtoLT1zO2g9TWF0aC5tYXgoMCxoKTtpZihtYXNrZWRXb3Jkcyl7Zm9yKHZhciBpPTA7aTxzO2krKyl7bWFza2VkV29yZHMud29yZHNbaV09dGhpcy53b3Jkc1tpXX1tYXNrZWRXb3Jkcy5sZW5ndGg9c31pZihzPT09MCl7fWVsc2UgaWYodGhpcy5sZW5ndGg+cyl7dGhpcy5sZW5ndGgtPXM7Zm9yKGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dGhpcy53b3Jkc1tpXT10aGlzLndvcmRzW2krc119fWVsc2V7dGhpcy53b3Jkc1swXT0wO3RoaXMubGVuZ3RoPTF9dmFyIGNhcnJ5PTA7Zm9yKGk9dGhpcy5sZW5ndGgtMTtpPj0wJiYoY2FycnkhPT0wfHxpPj1oKTtpLS0pe3ZhciB3b3JkPXRoaXMud29yZHNbaV18MDt0aGlzLndvcmRzW2ldPWNhcnJ5PDwyNi1yfHdvcmQ+Pj5yO2NhcnJ5PXdvcmQmbWFza31pZihtYXNrZWRXb3JkcyYmY2FycnkhPT0wKXttYXNrZWRXb3Jkcy53b3Jkc1ttYXNrZWRXb3Jkcy5sZW5ndGgrK109Y2Fycnl9aWYodGhpcy5sZW5ndGg9PT0wKXt0aGlzLndvcmRzWzBdPTA7dGhpcy5sZW5ndGg9MX1yZXR1cm4gdGhpcy5zdHJpcCgpfTtCTi5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24gaXNocm4oYml0cyxoaW50LGV4dGVuZGVkKXthc3NlcnQodGhpcy5uZWdhdGl2ZT09PTApO3JldHVybiB0aGlzLml1c2hybihiaXRzLGhpbnQsZXh0ZW5kZWQpfTtCTi5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbiBzaGxuKGJpdHMpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyl9O0JOLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbiB1c2hsbihiaXRzKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKX07Qk4ucHJvdG90eXBlLnNocm49ZnVuY3Rpb24gc2hybihiaXRzKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpfTtCTi5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24gdXNocm4oYml0cyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyl9O0JOLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbiB0ZXN0bihiaXQpe2Fzc2VydCh0eXBlb2YgYml0PT09Im51bWJlciImJmJpdD49MCk7dmFyIHI9Yml0JTI2O3ZhciBzPShiaXQtcikvMjY7dmFyIHE9MTw8cjtpZih0aGlzLmxlbmd0aDw9cylyZXR1cm4gZmFsc2U7dmFyIHc9dGhpcy53b3Jkc1tzXTtyZXR1cm4hISh3JnEpfTtCTi5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uIGltYXNrbihiaXRzKXthc3NlcnQodHlwZW9mIGJpdHM9PT0ibnVtYmVyIiYmYml0cz49MCk7dmFyIHI9Yml0cyUyNjt2YXIgcz0oYml0cy1yKS8yNjthc3NlcnQodGhpcy5uZWdhdGl2ZT09PTAsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpO2lmKHRoaXMubGVuZ3RoPD1zKXtyZXR1cm4gdGhpc31pZihyIT09MCl7cysrfXRoaXMubGVuZ3RoPU1hdGgubWluKHMsdGhpcy5sZW5ndGgpO2lmKHIhPT0wKXt2YXIgbWFzaz02NzEwODg2M142NzEwODg2Mz4+PnI8PHI7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9bWFza31yZXR1cm4gdGhpcy5zdHJpcCgpfTtCTi5wcm90b3R5cGUubWFza249ZnVuY3Rpb24gbWFza24oYml0cyl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYml0cyl9O0JOLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbiBpYWRkbihudW0pe2Fzc2VydCh0eXBlb2YgbnVtPT09Im51bWJlciIpO2Fzc2VydChudW08NjcxMDg4NjQpO2lmKG51bTwwKXJldHVybiB0aGlzLmlzdWJuKC1udW0pO2lmKHRoaXMubmVnYXRpdmUhPT0wKXtpZih0aGlzLmxlbmd0aD09PTEmJih0aGlzLndvcmRzWzBdfDApPG51bSl7dGhpcy53b3Jkc1swXT1udW0tKHRoaXMud29yZHNbMF18MCk7dGhpcy5uZWdhdGl2ZT0wO3JldHVybiB0aGlzfXRoaXMubmVnYXRpdmU9MDt0aGlzLmlzdWJuKG51bSk7dGhpcy5uZWdhdGl2ZT0xO3JldHVybiB0aGlzfXJldHVybiB0aGlzLl9pYWRkbihudW0pfTtCTi5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uIF9pYWRkbihudW0pe3RoaXMud29yZHNbMF0rPW51bTtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2ldPj02NzEwODg2NDtpKyspe3RoaXMud29yZHNbaV0tPTY3MTA4ODY0O2lmKGk9PT10aGlzLmxlbmd0aC0xKXt0aGlzLndvcmRzW2krMV09MX1lbHNle3RoaXMud29yZHNbaSsxXSsrfX10aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxpKzEpO3JldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24gaXN1Ym4obnVtKXthc3NlcnQodHlwZW9mIG51bT09PSJudW1iZXIiKTthc3NlcnQobnVtPDY3MTA4ODY0KTtpZihudW08MClyZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtpZih0aGlzLm5lZ2F0aXZlIT09MCl7dGhpcy5uZWdhdGl2ZT0wO3RoaXMuaWFkZG4obnVtKTt0aGlzLm5lZ2F0aXZlPTE7cmV0dXJuIHRoaXN9dGhpcy53b3Jkc1swXS09bnVtO2lmKHRoaXMubGVuZ3RoPT09MSYmdGhpcy53b3Jkc1swXTwwKXt0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdO3RoaXMubmVnYXRpdmU9MX1lbHNle2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbaV08MDtpKyspe3RoaXMud29yZHNbaV0rPTY3MTA4ODY0O3RoaXMud29yZHNbaSsxXS09MX19cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24gYWRkbihudW0pe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4obnVtKX07Qk4ucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24gc3VibihudW0pe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4obnVtKX07Qk4ucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24gaWFicygpe3RoaXMubmVnYXRpdmU9MDtyZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmFicz1mdW5jdGlvbiBhYnMoKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKX07Qk4ucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbiBfaXNobG5zdWJtdWwobnVtLG11bCxzaGlmdCl7dmFyIGxlbj1udW0ubGVuZ3RoK3NoaWZ0O3ZhciBpO3RoaXMuX2V4cGFuZChsZW4pO3ZhciB3O3ZhciBjYXJyeT0wO2ZvcihpPTA7aTxudW0ubGVuZ3RoO2krKyl7dz0odGhpcy53b3Jkc1tpK3NoaWZ0XXwwKStjYXJyeTt2YXIgcmlnaHQ9KG51bS53b3Jkc1tpXXwwKSptdWw7dy09cmlnaHQmNjcxMDg4NjM7Y2Fycnk9KHc+PjI2KS0ocmlnaHQvNjcxMDg4NjR8MCk7dGhpcy53b3Jkc1tpK3NoaWZ0XT13JjY3MTA4ODYzfWZvcig7aTx0aGlzLmxlbmd0aC1zaGlmdDtpKyspe3c9KHRoaXMud29yZHNbaStzaGlmdF18MCkrY2Fycnk7Y2Fycnk9dz4+MjY7dGhpcy53b3Jkc1tpK3NoaWZ0XT13JjY3MTA4ODYzfWlmKGNhcnJ5PT09MClyZXR1cm4gdGhpcy5zdHJpcCgpO2Fzc2VydChjYXJyeT09PS0xKTtjYXJyeT0wO2ZvcihpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3c9LSh0aGlzLndvcmRzW2ldfDApK2NhcnJ5O2NhcnJ5PXc+PjI2O3RoaXMud29yZHNbaV09dyY2NzEwODg2M310aGlzLm5lZ2F0aXZlPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLl93b3JkRGl2PWZ1bmN0aW9uIF93b3JkRGl2KG51bSxtb2RlKXt2YXIgc2hpZnQ9dGhpcy5sZW5ndGgtbnVtLmxlbmd0aDt2YXIgYT10aGlzLmNsb25lKCk7dmFyIGI9bnVtO3ZhciBiaGk9Yi53b3Jkc1tiLmxlbmd0aC0xXXwwO3ZhciBiaGlCaXRzPXRoaXMuX2NvdW50Qml0cyhiaGkpO3NoaWZ0PTI2LWJoaUJpdHM7aWYoc2hpZnQhPT0wKXtiPWIudXNobG4oc2hpZnQpO2EuaXVzaGxuKHNoaWZ0KTtiaGk9Yi53b3Jkc1tiLmxlbmd0aC0xXXwwfXZhciBtPWEubGVuZ3RoLWIubGVuZ3RoO3ZhciBxO2lmKG1vZGUhPT0ibW9kIil7cT1uZXcgQk4obnVsbCk7cS5sZW5ndGg9bSsxO3Eud29yZHM9bmV3IEFycmF5KHEubGVuZ3RoKTtmb3IodmFyIGk9MDtpPHEubGVuZ3RoO2krKyl7cS53b3Jkc1tpXT0wfX12YXIgZGlmZj1hLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsMSxtKTtpZihkaWZmLm5lZ2F0aXZlPT09MCl7YT1kaWZmO2lmKHEpe3Eud29yZHNbbV09MX19Zm9yKHZhciBqPW0tMTtqPj0wO2otLSl7dmFyIHFqPShhLndvcmRzW2IubGVuZ3RoK2pdfDApKjY3MTA4ODY0KyhhLndvcmRzW2IubGVuZ3RoK2otMV18MCk7cWo9TWF0aC5taW4ocWovYmhpfDAsNjcxMDg4NjMpO2EuX2lzaGxuc3VibXVsKGIscWosaik7d2hpbGUoYS5uZWdhdGl2ZSE9PTApe3FqLS07YS5uZWdhdGl2ZT0wO2EuX2lzaGxuc3VibXVsKGIsMSxqKTtpZighYS5pc1plcm8oKSl7YS5uZWdhdGl2ZV49MX19aWYocSl7cS53b3Jkc1tqXT1xan19aWYocSl7cS5zdHJpcCgpfWEuc3RyaXAoKTtpZihtb2RlIT09ImRpdiImJnNoaWZ0IT09MCl7YS5pdXNocm4oc2hpZnQpfXJldHVybntkaXY6cXx8bnVsbCxtb2Q6YX19O0JOLnByb3RvdHlwZS5kaXZtb2Q9ZnVuY3Rpb24gZGl2bW9kKG51bSxtb2RlLHBvc2l0aXZlKXthc3NlcnQoIW51bS5pc1plcm8oKSk7aWYodGhpcy5pc1plcm8oKSl7cmV0dXJue2RpdjpuZXcgQk4oMCksbW9kOm5ldyBCTigwKX19dmFyIGRpdixtb2QscmVzO2lmKHRoaXMubmVnYXRpdmUhPT0wJiZudW0ubmVnYXRpdmU9PT0wKXtyZXM9dGhpcy5uZWcoKS5kaXZtb2QobnVtLG1vZGUpO2lmKG1vZGUhPT0ibW9kIil7ZGl2PXJlcy5kaXYubmVnKCl9aWYobW9kZSE9PSJkaXYiKXttb2Q9cmVzLm1vZC5uZWcoKTtpZihwb3NpdGl2ZSYmbW9kLm5lZ2F0aXZlIT09MCl7bW9kLmlhZGQobnVtKX19cmV0dXJue2RpdjpkaXYsbW9kOm1vZH19aWYodGhpcy5uZWdhdGl2ZT09PTAmJm51bS5uZWdhdGl2ZSE9PTApe3Jlcz10aGlzLmRpdm1vZChudW0ubmVnKCksbW9kZSk7aWYobW9kZSE9PSJtb2QiKXtkaXY9cmVzLmRpdi5uZWcoKX1yZXR1cm57ZGl2OmRpdixtb2Q6cmVzLm1vZH19aWYoKHRoaXMubmVnYXRpdmUmbnVtLm5lZ2F0aXZlKSE9PTApe3Jlcz10aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksbW9kZSk7aWYobW9kZSE9PSJkaXYiKXttb2Q9cmVzLm1vZC5uZWcoKTtpZihwb3NpdGl2ZSYmbW9kLm5lZ2F0aXZlIT09MCl7bW9kLmlzdWIobnVtKX19cmV0dXJue2RpdjpyZXMuZGl2LG1vZDptb2R9fWlmKG51bS5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKG51bSk8MCl7cmV0dXJue2RpdjpuZXcgQk4oMCksbW9kOnRoaXN9fWlmKG51bS5sZW5ndGg9PT0xKXtpZihtb2RlPT09ImRpdiIpe3JldHVybntkaXY6dGhpcy5kaXZuKG51bS53b3Jkc1swXSksbW9kOm51bGx9fWlmKG1vZGU9PT0ibW9kIil7cmV0dXJue2RpdjpudWxsLG1vZDpuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpfX1yZXR1cm57ZGl2OnRoaXMuZGl2bihudW0ud29yZHNbMF0pLG1vZDpuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpfX1yZXR1cm4gdGhpcy5fd29yZERpdihudW0sbW9kZSl9O0JOLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24gZGl2KG51bSl7cmV0dXJuIHRoaXMuZGl2bW9kKG51bSwiZGl2IixmYWxzZSkuZGl2fTtCTi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uIG1vZChudW0pe3JldHVybiB0aGlzLmRpdm1vZChudW0sIm1vZCIsZmFsc2UpLm1vZH07Qk4ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24gdW1vZChudW0pe3JldHVybiB0aGlzLmRpdm1vZChudW0sIm1vZCIsdHJ1ZSkubW9kfTtCTi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24gZGl2Um91bmQobnVtKXt2YXIgZG09dGhpcy5kaXZtb2QobnVtKTtpZihkbS5tb2QuaXNaZXJvKCkpcmV0dXJuIGRtLmRpdjt2YXIgbW9kPWRtLmRpdi5uZWdhdGl2ZSE9PTA/ZG0ubW9kLmlzdWIobnVtKTpkbS5tb2Q7dmFyIGhhbGY9bnVtLnVzaHJuKDEpO3ZhciByMj1udW0uYW5kbG4oMSk7dmFyIGNtcD1tb2QuY21wKGhhbGYpO2lmKGNtcDwwfHxyMj09PTEmJmNtcD09PTApcmV0dXJuIGRtLmRpdjtyZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlIT09MD9kbS5kaXYuaXN1Ym4oMSk6ZG0uZGl2LmlhZGRuKDEpfTtCTi5wcm90b3R5cGUubW9kbj1mdW5jdGlvbiBtb2RuKG51bSl7YXNzZXJ0KG51bTw9NjcxMDg4NjMpO3ZhciBwPSgxPDwyNiklbnVtO3ZhciBhY2M9MDtmb3IodmFyIGk9dGhpcy5sZW5ndGgtMTtpPj0wO2ktLSl7YWNjPShwKmFjYysodGhpcy53b3Jkc1tpXXwwKSklbnVtfXJldHVybiBhY2N9O0JOLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbiBpZGl2bihudW0pe2Fzc2VydChudW08PTY3MTA4ODYzKTt2YXIgY2Fycnk9MDtmb3IodmFyIGk9dGhpcy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIHc9KHRoaXMud29yZHNbaV18MCkrY2FycnkqNjcxMDg4NjQ7dGhpcy53b3Jkc1tpXT13L251bXwwO2NhcnJ5PXclbnVtfXJldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uIGRpdm4obnVtKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKG51bSl9O0JOLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uIGVnY2QocCl7YXNzZXJ0KHAubmVnYXRpdmU9PT0wKTthc3NlcnQoIXAuaXNaZXJvKCkpO3ZhciB4PXRoaXM7dmFyIHk9cC5jbG9uZSgpO2lmKHgubmVnYXRpdmUhPT0wKXt4PXgudW1vZChwKX1lbHNle3g9eC5jbG9uZSgpfXZhciBBPW5ldyBCTigxKTt2YXIgQj1uZXcgQk4oMCk7dmFyIEM9bmV3IEJOKDApO3ZhciBEPW5ldyBCTigxKTt2YXIgZz0wO3doaWxlKHguaXNFdmVuKCkmJnkuaXNFdmVuKCkpe3guaXVzaHJuKDEpO3kuaXVzaHJuKDEpOysrZ312YXIgeXA9eS5jbG9uZSgpO3ZhciB4cD14LmNsb25lKCk7d2hpbGUoIXguaXNaZXJvKCkpe2Zvcih2YXIgaT0wLGltPTE7KHgud29yZHNbMF0maW0pPT09MCYmaTwyNjsrK2ksaW08PD0xKTtpZihpPjApe3guaXVzaHJuKGkpO3doaWxlKGktLSA+MCl7aWYoQS5pc09kZCgpfHxCLmlzT2RkKCkpe0EuaWFkZCh5cCk7Qi5pc3ViKHhwKX1BLml1c2hybigxKTtCLml1c2hybigxKX19Zm9yKHZhciBqPTAsam09MTsoeS53b3Jkc1swXSZqbSk9PT0wJiZqPDI2OysraixqbTw8PTEpO2lmKGo+MCl7eS5pdXNocm4oaik7d2hpbGUoai0tID4wKXtpZihDLmlzT2RkKCl8fEQuaXNPZGQoKSl7Qy5pYWRkKHlwKTtELmlzdWIoeHApfUMuaXVzaHJuKDEpO0QuaXVzaHJuKDEpfX1pZih4LmNtcCh5KT49MCl7eC5pc3ViKHkpO0EuaXN1YihDKTtCLmlzdWIoRCl9ZWxzZXt5LmlzdWIoeCk7Qy5pc3ViKEEpO0QuaXN1YihCKX19cmV0dXJue2E6QyxiOkQsZ2NkOnkuaXVzaGxuKGcpfX07Qk4ucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbiBfaW52bXAocCl7YXNzZXJ0KHAubmVnYXRpdmU9PT0wKTthc3NlcnQoIXAuaXNaZXJvKCkpO3ZhciBhPXRoaXM7dmFyIGI9cC5jbG9uZSgpO2lmKGEubmVnYXRpdmUhPT0wKXthPWEudW1vZChwKX1lbHNle2E9YS5jbG9uZSgpfXZhciB4MT1uZXcgQk4oMSk7dmFyIHgyPW5ldyBCTigwKTt2YXIgZGVsdGE9Yi5jbG9uZSgpO3doaWxlKGEuY21wbigxKT4wJiZiLmNtcG4oMSk+MCl7Zm9yKHZhciBpPTAsaW09MTsoYS53b3Jkc1swXSZpbSk9PT0wJiZpPDI2OysraSxpbTw8PTEpO2lmKGk+MCl7YS5pdXNocm4oaSk7d2hpbGUoaS0tID4wKXtpZih4MS5pc09kZCgpKXt4MS5pYWRkKGRlbHRhKX14MS5pdXNocm4oMSl9fWZvcih2YXIgaj0wLGptPTE7KGIud29yZHNbMF0mam0pPT09MCYmajwyNjsrK2osam08PD0xKTtpZihqPjApe2IuaXVzaHJuKGopO3doaWxlKGotLSA+MCl7aWYoeDIuaXNPZGQoKSl7eDIuaWFkZChkZWx0YSl9eDIuaXVzaHJuKDEpfX1pZihhLmNtcChiKT49MCl7YS5pc3ViKGIpO3gxLmlzdWIoeDIpfWVsc2V7Yi5pc3ViKGEpO3gyLmlzdWIoeDEpfX12YXIgcmVzO2lmKGEuY21wbigxKT09PTApe3Jlcz14MX1lbHNle3Jlcz14Mn1pZihyZXMuY21wbigwKTwwKXtyZXMuaWFkZChwKX1yZXR1cm4gcmVzfTtCTi5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uIGdjZChudW0pe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIG51bS5hYnMoKTtpZihudW0uaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIGE9dGhpcy5jbG9uZSgpO3ZhciBiPW51bS5jbG9uZSgpO2EubmVnYXRpdmU9MDtiLm5lZ2F0aXZlPTA7Zm9yKHZhciBzaGlmdD0wO2EuaXNFdmVuKCkmJmIuaXNFdmVuKCk7c2hpZnQrKyl7YS5pdXNocm4oMSk7Yi5pdXNocm4oMSl9ZG97d2hpbGUoYS5pc0V2ZW4oKSl7YS5pdXNocm4oMSl9d2hpbGUoYi5pc0V2ZW4oKSl7Yi5pdXNocm4oMSl9dmFyIHI9YS5jbXAoYik7aWYocjwwKXt2YXIgdD1hO2E9YjtiPXR9ZWxzZSBpZihyPT09MHx8Yi5jbXBuKDEpPT09MCl7YnJlYWt9YS5pc3ViKGIpfXdoaWxlKHRydWUpO3JldHVybiBiLml1c2hsbihzaGlmdCl9O0JOLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uIGludm0obnVtKXtyZXR1cm4gdGhpcy5lZ2NkKG51bSkuYS51bW9kKG51bSl9O0JOLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24gaXNFdmVuKCl7cmV0dXJuKHRoaXMud29yZHNbMF0mMSk9PT0wfTtCTi5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24gaXNPZGQoKXtyZXR1cm4odGhpcy53b3Jkc1swXSYxKT09PTF9O0JOLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbiBhbmRsbihudW0pe3JldHVybiB0aGlzLndvcmRzWzBdJm51bX07Qk4ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uIGJpbmNuKGJpdCl7YXNzZXJ0KHR5cGVvZiBiaXQ9PT0ibnVtYmVyIik7dmFyIHI9Yml0JTI2O3ZhciBzPShiaXQtcikvMjY7dmFyIHE9MTw8cjtpZih0aGlzLmxlbmd0aDw9cyl7dGhpcy5fZXhwYW5kKHMrMSk7dGhpcy53b3Jkc1tzXXw9cTtyZXR1cm4gdGhpc312YXIgY2Fycnk9cTtmb3IodmFyIGk9cztjYXJyeSE9PTAmJmk8dGhpcy5sZW5ndGg7aSsrKXt2YXIgdz10aGlzLndvcmRzW2ldfDA7dys9Y2Fycnk7Y2Fycnk9dz4+PjI2O3cmPTY3MTA4ODYzO3RoaXMud29yZHNbaV09d31pZihjYXJyeSE9PTApe3RoaXMud29yZHNbaV09Y2Fycnk7dGhpcy5sZW5ndGgrK31yZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbiBpc1plcm8oKXtyZXR1cm4gdGhpcy5sZW5ndGg9PT0xJiZ0aGlzLndvcmRzWzBdPT09MH07Qk4ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24gY21wbihudW0pe3ZhciBuZWdhdGl2ZT1udW08MDtpZih0aGlzLm5lZ2F0aXZlIT09MCYmIW5lZ2F0aXZlKXJldHVybi0xO2lmKHRoaXMubmVnYXRpdmU9PT0wJiZuZWdhdGl2ZSlyZXR1cm4gMTt0aGlzLnN0cmlwKCk7dmFyIHJlcztpZih0aGlzLmxlbmd0aD4xKXtyZXM9MX1lbHNle2lmKG5lZ2F0aXZlKXtudW09LW51bX1hc3NlcnQobnVtPD02NzEwODg2MywiTnVtYmVyIGlzIHRvbyBiaWciKTt2YXIgdz10aGlzLndvcmRzWzBdfDA7cmVzPXc9PT1udW0/MDp3PG51bT8tMToxfWlmKHRoaXMubmVnYXRpdmUhPT0wKXJldHVybi1yZXN8MDtyZXR1cm4gcmVzfTtCTi5wcm90b3R5cGUuY21wPWZ1bmN0aW9uIGNtcChudW0pe2lmKHRoaXMubmVnYXRpdmUhPT0wJiZudW0ubmVnYXRpdmU9PT0wKXJldHVybi0xO2lmKHRoaXMubmVnYXRpdmU9PT0wJiZudW0ubmVnYXRpdmUhPT0wKXJldHVybiAxO3ZhciByZXM9dGhpcy51Y21wKG51bSk7aWYodGhpcy5uZWdhdGl2ZSE9PTApcmV0dXJuLXJlc3wwO3JldHVybiByZXN9O0JOLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uIHVjbXAobnVtKXtpZih0aGlzLmxlbmd0aD5udW0ubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPG51bS5sZW5ndGgpcmV0dXJuLTE7dmFyIHJlcz0wO2Zvcih2YXIgaT10aGlzLmxlbmd0aC0xO2k+PTA7aS0tKXt2YXIgYT10aGlzLndvcmRzW2ldfDA7dmFyIGI9bnVtLndvcmRzW2ldfDA7aWYoYT09PWIpY29udGludWU7aWYoYTxiKXtyZXM9LTF9ZWxzZSBpZihhPmIpe3Jlcz0xfWJyZWFrfXJldHVybiByZXN9O0JOLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24gZ3RuKG51bSl7cmV0dXJuIHRoaXMuY21wbihudW0pPT09MX07Qk4ucHJvdG90eXBlLmd0PWZ1bmN0aW9uIGd0KG51bSl7cmV0dXJuIHRoaXMuY21wKG51bSk9PT0xfTtCTi5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbiBndGVuKG51bSl7cmV0dXJuIHRoaXMuY21wbihudW0pPj0wfTtCTi5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uIGd0ZShudW0pe3JldHVybiB0aGlzLmNtcChudW0pPj0wfTtCTi5wcm90b3R5cGUubHRuPWZ1bmN0aW9uIGx0bihudW0pe3JldHVybiB0aGlzLmNtcG4obnVtKT09PS0xfTtCTi5wcm90b3R5cGUubHQ9ZnVuY3Rpb24gbHQobnVtKXtyZXR1cm4gdGhpcy5jbXAobnVtKT09PS0xfTtCTi5wcm90b3R5cGUubHRlbj1mdW5jdGlvbiBsdGVuKG51bSl7cmV0dXJuIHRoaXMuY21wbihudW0pPD0wfTtCTi5wcm90b3R5cGUubHRlPWZ1bmN0aW9uIGx0ZShudW0pe3JldHVybiB0aGlzLmNtcChudW0pPD0wfTtCTi5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uIGVxbihudW0pe3JldHVybiB0aGlzLmNtcG4obnVtKT09PTB9O0JOLnByb3RvdHlwZS5lcT1mdW5jdGlvbiBlcShudW0pe3JldHVybiB0aGlzLmNtcChudW0pPT09MH07Qk4ucmVkPWZ1bmN0aW9uIHJlZChudW0pe3JldHVybiBuZXcgUmVkKG51bSl9O0JOLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbiB0b1JlZChjdHgpe2Fzc2VydCghdGhpcy5yZWQsIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQiKTthc3NlcnQodGhpcy5uZWdhdGl2ZT09PTAsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIik7cmV0dXJuIGN0eC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGN0eCl9O0JOLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uIGZyb21SZWQoKXthc3NlcnQodGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKTtyZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9O0JOLnByb3RvdHlwZS5fZm9yY2VSZWQ9ZnVuY3Rpb24gX2ZvcmNlUmVkKGN0eCl7dGhpcy5yZWQ9Y3R4O3JldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuZm9yY2VSZWQ9ZnVuY3Rpb24gZm9yY2VSZWQoY3R4KXthc3NlcnQoIXRoaXMucmVkLCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Iik7cmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCl9O0JOLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24gcmVkQWRkKG51bSl7YXNzZXJ0KHRoaXMucmVkLCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7cmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLG51bSl9O0JOLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uIHJlZElBZGQobnVtKXthc3NlcnQodGhpcy5yZWQsInJlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7cmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcyxudW0pfTtCTi5wcm90b3R5cGUucmVkU3ViPWZ1bmN0aW9uIHJlZFN1YihudW0pe2Fzc2VydCh0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3JldHVybiB0aGlzLnJlZC5zdWIodGhpcyxudW0pfTtCTi5wcm90b3R5cGUucmVkSVN1Yj1mdW5jdGlvbiByZWRJU3ViKG51bSl7YXNzZXJ0KHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3JldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsbnVtKX07Qk4ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbiByZWRTaGwobnVtKXthc3NlcnQodGhpcy5yZWQsInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKTtyZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsbnVtKX07Qk4ucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbiByZWRNdWwobnVtKXthc3NlcnQodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKTt0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLG51bSk7cmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLG51bSl9O0JOLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uIHJlZElNdWwobnVtKXthc3NlcnQodGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKTt0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLG51bSk7cmV0dXJuIHRoaXMucmVkLmltdWwodGhpcyxudW0pfTtCTi5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uIHJlZFNxcigpe2Fzc2VydCh0aGlzLnJlZCwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5zcXIodGhpcyl9O0JOLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uIHJlZElTcXIoKXthc3NlcnQodGhpcy5yZWQsInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7dGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7cmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyl9O0JOLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uIHJlZFNxcnQoKXthc3NlcnQodGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7dGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7cmV0dXJuIHRoaXMucmVkLnNxcnQodGhpcyl9O0JOLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uIHJlZEludm0oKXthc3NlcnQodGhpcy5yZWQsInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7dGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7cmV0dXJuIHRoaXMucmVkLmludm0odGhpcyl9O0JOLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24gcmVkTmVnKCl7YXNzZXJ0KHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIik7dGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7cmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKX07Qk4ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbiByZWRQb3cobnVtKXthc3NlcnQodGhpcy5yZWQmJiFudW0ucmVkLCJyZWRQb3cobm9ybWFsTnVtKSIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5wb3codGhpcyxudW0pfTt2YXIgcHJpbWVzPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gTVByaW1lKG5hbWUscCl7dGhpcy5uYW1lPW5hbWU7dGhpcy5wPW5ldyBCTihwLDE2KTt0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpO3RoaXMuaz1uZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO3RoaXMudG1wPXRoaXMuX3RtcCgpfU1QcmltZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbiBfdG1wKCl7dmFyIHRtcD1uZXcgQk4obnVsbCk7dG1wLndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSk7cmV0dXJuIHRtcH07TVByaW1lLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uIGlyZWR1Y2UobnVtKXt2YXIgcj1udW07dmFyIHJsZW47ZG97dGhpcy5zcGxpdChyLHRoaXMudG1wKTtyPXRoaXMuaW11bEsocik7cj1yLmlhZGQodGhpcy50bXApO3JsZW49ci5iaXRMZW5ndGgoKX13aGlsZShybGVuPnRoaXMubik7dmFyIGNtcD1ybGVuPHRoaXMubj8tMTpyLnVjbXAodGhpcy5wKTtpZihjbXA9PT0wKXtyLndvcmRzWzBdPTA7ci5sZW5ndGg9MX1lbHNlIGlmKGNtcD4wKXtyLmlzdWIodGhpcy5wKX1lbHNle2lmKHIuc3RyaXAhPT11bmRlZmluZWQpe3Iuc3RyaXAoKX1lbHNle3IuX3N0cmlwKCl9fXJldHVybiByfTtNUHJpbWUucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uIHNwbGl0KGlucHV0LG91dCl7aW5wdXQuaXVzaHJuKHRoaXMubiwwLG91dCl9O01QcmltZS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24gaW11bEsobnVtKXtyZXR1cm4gbnVtLmltdWwodGhpcy5rKX07ZnVuY3Rpb24gSzI1Nigpe01QcmltZS5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWluaGVyaXRzKEsyNTYsTVByaW1lKTtLMjU2LnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbiBzcGxpdChpbnB1dCxvdXRwdXQpe3ZhciBtYXNrPTQxOTQzMDM7dmFyIG91dExlbj1NYXRoLm1pbihpbnB1dC5sZW5ndGgsOSk7Zm9yKHZhciBpPTA7aTxvdXRMZW47aSsrKXtvdXRwdXQud29yZHNbaV09aW5wdXQud29yZHNbaV19b3V0cHV0Lmxlbmd0aD1vdXRMZW47aWYoaW5wdXQubGVuZ3RoPD05KXtpbnB1dC53b3Jkc1swXT0wO2lucHV0Lmxlbmd0aD0xO3JldHVybn12YXIgcHJldj1pbnB1dC53b3Jkc1s5XTtvdXRwdXQud29yZHNbb3V0cHV0Lmxlbmd0aCsrXT1wcmV2Jm1hc2s7Zm9yKGk9MTA7aTxpbnB1dC5sZW5ndGg7aSsrKXt2YXIgbmV4dD1pbnB1dC53b3Jkc1tpXXwwO2lucHV0LndvcmRzW2ktMTBdPShuZXh0Jm1hc2spPDw0fHByZXY+Pj4yMjtwcmV2PW5leHR9cHJldj4+Pj0yMjtpbnB1dC53b3Jkc1tpLTEwXT1wcmV2O2lmKHByZXY9PT0wJiZpbnB1dC5sZW5ndGg+MTApe2lucHV0Lmxlbmd0aC09MTB9ZWxzZXtpbnB1dC5sZW5ndGgtPTl9fTtLMjU2LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbiBpbXVsSyhudW0pe251bS53b3Jkc1tudW0ubGVuZ3RoXT0wO251bS53b3Jkc1tudW0ubGVuZ3RoKzFdPTA7bnVtLmxlbmd0aCs9Mjt2YXIgbG89MDtmb3IodmFyIGk9MDtpPG51bS5sZW5ndGg7aSsrKXt2YXIgdz1udW0ud29yZHNbaV18MDtsbys9dyo5Nzc7bnVtLndvcmRzW2ldPWxvJjY3MTA4ODYzO2xvPXcqNjQrKGxvLzY3MTA4ODY0fDApfWlmKG51bS53b3Jkc1tudW0ubGVuZ3RoLTFdPT09MCl7bnVtLmxlbmd0aC0tO2lmKG51bS53b3Jkc1tudW0ubGVuZ3RoLTFdPT09MCl7bnVtLmxlbmd0aC0tfX1yZXR1cm4gbnVtfTtmdW5jdGlvbiBQMjI0KCl7TVByaW1lLmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9aW5oZXJpdHMoUDIyNCxNUHJpbWUpO2Z1bmN0aW9uIFAxOTIoKXtNUHJpbWUuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1pbmhlcml0cyhQMTkyLE1QcmltZSk7ZnVuY3Rpb24gUDI1NTE5KCl7TVByaW1lLmNhbGwodGhpcywiMjU1MTkiLCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIil9aW5oZXJpdHMoUDI1NTE5LE1QcmltZSk7UDI1NTE5LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbiBpbXVsSyhudW0pe3ZhciBjYXJyeT0wO2Zvcih2YXIgaT0wO2k8bnVtLmxlbmd0aDtpKyspe3ZhciBoaT0obnVtLndvcmRzW2ldfDApKjE5K2NhcnJ5O3ZhciBsbz1oaSY2NzEwODg2MztoaT4+Pj0yNjtudW0ud29yZHNbaV09bG87Y2Fycnk9aGl9aWYoY2FycnkhPT0wKXtudW0ud29yZHNbbnVtLmxlbmd0aCsrXT1jYXJyeX1yZXR1cm4gbnVtfTtCTi5fcHJpbWU9ZnVuY3Rpb24gcHJpbWUobmFtZSl7aWYocHJpbWVzW25hbWVdKXJldHVybiBwcmltZXNbbmFtZV07dmFyIHByaW1lO2lmKG5hbWU9PT0iazI1NiIpe3ByaW1lPW5ldyBLMjU2fWVsc2UgaWYobmFtZT09PSJwMjI0Iil7cHJpbWU9bmV3IFAyMjR9ZWxzZSBpZihuYW1lPT09InAxOTIiKXtwcmltZT1uZXcgUDE5Mn1lbHNlIGlmKG5hbWU9PT0icDI1NTE5Iil7cHJpbWU9bmV3IFAyNTUxOX1lbHNle3Rocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK25hbWUpfXByaW1lc1tuYW1lXT1wcmltZTtyZXR1cm4gcHJpbWV9O2Z1bmN0aW9uIFJlZChtKXtpZih0eXBlb2YgbT09PSJzdHJpbmciKXt2YXIgcHJpbWU9Qk4uX3ByaW1lKG0pO3RoaXMubT1wcmltZS5wO3RoaXMucHJpbWU9cHJpbWV9ZWxzZXthc3NlcnQobS5ndG4oMSksIm1vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMSIpO3RoaXMubT1tO3RoaXMucHJpbWU9bnVsbH19UmVkLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbiBfdmVyaWZ5MShhKXthc3NlcnQoYS5uZWdhdGl2ZT09PTAsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIik7YXNzZXJ0KGEucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9O1JlZC5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24gX3ZlcmlmeTIoYSxiKXthc3NlcnQoKGEubmVnYXRpdmV8Yi5uZWdhdGl2ZSk9PT0wLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpO2Fzc2VydChhLnJlZCYmYS5yZWQ9PT1iLnJlZCwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpfTtSZWQucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24gaW1vZChhKXtpZih0aGlzLnByaW1lKXJldHVybiB0aGlzLnByaW1lLmlyZWR1Y2UoYSkuX2ZvcmNlUmVkKHRoaXMpO3JldHVybiBhLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9O1JlZC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uIG5lZyhhKXtpZihhLmlzWmVybygpKXtyZXR1cm4gYS5jbG9uZSgpfXJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKX07UmVkLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24gYWRkKGEsYil7dGhpcy5fdmVyaWZ5MihhLGIpO3ZhciByZXM9YS5hZGQoYik7aWYocmVzLmNtcCh0aGlzLm0pPj0wKXtyZXMuaXN1Yih0aGlzLm0pfXJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpfTtSZWQucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24gaWFkZChhLGIpe3RoaXMuX3ZlcmlmeTIoYSxiKTt2YXIgcmVzPWEuaWFkZChiKTtpZihyZXMuY21wKHRoaXMubSk+PTApe3Jlcy5pc3ViKHRoaXMubSl9cmV0dXJuIHJlc307UmVkLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24gc3ViKGEsYil7dGhpcy5fdmVyaWZ5MihhLGIpO3ZhciByZXM9YS5zdWIoYik7aWYocmVzLmNtcG4oMCk8MCl7cmVzLmlhZGQodGhpcy5tKX1yZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKX07UmVkLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uIGlzdWIoYSxiKXt0aGlzLl92ZXJpZnkyKGEsYik7dmFyIHJlcz1hLmlzdWIoYik7aWYocmVzLmNtcG4oMCk8MCl7cmVzLmlhZGQodGhpcy5tKX1yZXR1cm4gcmVzfTtSZWQucHJvdG90eXBlLnNobD1mdW5jdGlvbiBzaGwoYSxudW0pe3RoaXMuX3ZlcmlmeTEoYSk7cmV0dXJuIHRoaXMuaW1vZChhLnVzaGxuKG51bSkpfTtSZWQucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24gaW11bChhLGIpe3RoaXMuX3ZlcmlmeTIoYSxiKTtyZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSl9O1JlZC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uIG11bChhLGIpe3RoaXMuX3ZlcmlmeTIoYSxiKTtyZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKX07UmVkLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uIGlzcXIoYSl7cmV0dXJuIHRoaXMuaW11bChhLGEuY2xvbmUoKSl9O1JlZC5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uIHNxcihhKXtyZXR1cm4gdGhpcy5tdWwoYSxhKX07UmVkLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uIHNxcnQoYSl7aWYoYS5pc1plcm8oKSlyZXR1cm4gYS5jbG9uZSgpO3ZhciBtb2QzPXRoaXMubS5hbmRsbigzKTthc3NlcnQobW9kMyUyPT09MSk7aWYobW9kMz09PTMpe3ZhciBwb3c9dGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coYSxwb3cpfXZhciBxPXRoaXMubS5zdWJuKDEpO3ZhciBzPTA7d2hpbGUoIXEuaXNaZXJvKCkmJnEuYW5kbG4oMSk9PT0wKXtzKys7cS5pdXNocm4oMSl9YXNzZXJ0KCFxLmlzWmVybygpKTt2YXIgb25lPW5ldyBCTigxKS50b1JlZCh0aGlzKTt2YXIgbk9uZT1vbmUucmVkTmVnKCk7dmFyIGxwb3c9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO3ZhciB6PXRoaXMubS5iaXRMZW5ndGgoKTt6PW5ldyBCTigyKnoqeikudG9SZWQodGhpcyk7d2hpbGUodGhpcy5wb3coeixscG93KS5jbXAobk9uZSkhPT0wKXt6LnJlZElBZGQobk9uZSl9dmFyIGM9dGhpcy5wb3coeixxKTt2YXIgcj10aGlzLnBvdyhhLHEuYWRkbigxKS5pdXNocm4oMSkpO3ZhciB0PXRoaXMucG93KGEscSk7dmFyIG09czt3aGlsZSh0LmNtcChvbmUpIT09MCl7dmFyIHRtcD10O2Zvcih2YXIgaT0wO3RtcC5jbXAob25lKSE9PTA7aSsrKXt0bXA9dG1wLnJlZFNxcigpfWFzc2VydChpPG0pO3ZhciBiPXRoaXMucG93KGMsbmV3IEJOKDEpLml1c2hsbihtLWktMSkpO3I9ci5yZWRNdWwoYik7Yz1iLnJlZFNxcigpO3Q9dC5yZWRNdWwoYyk7bT1pfXJldHVybiByfTtSZWQucHJvdG90eXBlLmludm09ZnVuY3Rpb24gaW52bShhKXt2YXIgaW52PWEuX2ludm1wKHRoaXMubSk7aWYoaW52Lm5lZ2F0aXZlIT09MCl7aW52Lm5lZ2F0aXZlPTA7cmV0dXJuIHRoaXMuaW1vZChpbnYpLnJlZE5lZygpfWVsc2V7cmV0dXJuIHRoaXMuaW1vZChpbnYpfX07UmVkLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24gcG93KGEsbnVtKXtpZihudW0uaXNaZXJvKCkpcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtpZihudW0uY21wbigxKT09PTApcmV0dXJuIGEuY2xvbmUoKTt2YXIgd2luZG93U2l6ZT00O3ZhciB3bmQ9bmV3IEFycmF5KDE8PHdpbmRvd1NpemUpO3duZFswXT1uZXcgQk4oMSkudG9SZWQodGhpcyk7d25kWzFdPWE7Zm9yKHZhciBpPTI7aTx3bmQubGVuZ3RoO2krKyl7d25kW2ldPXRoaXMubXVsKHduZFtpLTFdLGEpfXZhciByZXM9d25kWzBdO3ZhciBjdXJyZW50PTA7dmFyIGN1cnJlbnRMZW49MDt2YXIgc3RhcnQ9bnVtLmJpdExlbmd0aCgpJTI2O2lmKHN0YXJ0PT09MCl7c3RhcnQ9MjZ9Zm9yKGk9bnVtLmxlbmd0aC0xO2k+PTA7aS0tKXt2YXIgd29yZD1udW0ud29yZHNbaV07Zm9yKHZhciBqPXN0YXJ0LTE7aj49MDtqLS0pe3ZhciBiaXQ9d29yZD4+aiYxO2lmKHJlcyE9PXduZFswXSl7cmVzPXRoaXMuc3FyKHJlcyl9aWYoYml0PT09MCYmY3VycmVudD09PTApe2N1cnJlbnRMZW49MDtjb250aW51ZX1jdXJyZW50PDw9MTtjdXJyZW50fD1iaXQ7Y3VycmVudExlbisrO2lmKGN1cnJlbnRMZW4hPT13aW5kb3dTaXplJiYoaSE9PTB8fGohPT0wKSljb250aW51ZTtyZXM9dGhpcy5tdWwocmVzLHduZFtjdXJyZW50XSk7Y3VycmVudExlbj0wO2N1cnJlbnQ9MH1zdGFydD0yNn1yZXR1cm4gcmVzfTtSZWQucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbiBjb252ZXJ0VG8obnVtKXt2YXIgcj1udW0udW1vZCh0aGlzLm0pO3JldHVybiByPT09bnVtP3IuY2xvbmUoKTpyfTtSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uIGNvbnZlcnRGcm9tKG51bSl7dmFyIHJlcz1udW0uY2xvbmUoKTtyZXMucmVkPW51bGw7cmV0dXJuIHJlc307Qk4ubW9udD1mdW5jdGlvbiBtb250KG51bSl7cmV0dXJuIG5ldyBNb250KG51bSl9O2Z1bmN0aW9uIE1vbnQobSl7UmVkLmNhbGwodGhpcyxtKTt0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKTtpZih0aGlzLnNoaWZ0JTI2IT09MCl7dGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNn10aGlzLnI9bmV3IEJOKDEpLml1c2hsbih0aGlzLnNoaWZ0KTt0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO3RoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSk7dGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTt0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKTt0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfWluaGVyaXRzKE1vbnQsUmVkKTtNb250LnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24gY29udmVydFRvKG51bSl7cmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpfTtNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbiBjb252ZXJ0RnJvbShudW0pe3ZhciByPXRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO3IucmVkPW51bGw7cmV0dXJuIHJ9O01vbnQucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24gaW11bChhLGIpe2lmKGEuaXNaZXJvKCl8fGIuaXNaZXJvKCkpe2Eud29yZHNbMF09MDthLmxlbmd0aD0xO3JldHVybiBhfXZhciB0PWEuaW11bChiKTt2YXIgYz10Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTt2YXIgdT10LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO3ZhciByZXM9dTtpZih1LmNtcCh0aGlzLm0pPj0wKXtyZXM9dS5pc3ViKHRoaXMubSl9ZWxzZSBpZih1LmNtcG4oMCk8MCl7cmVzPXUuaWFkZCh0aGlzLm0pfXJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpfTtNb250LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24gbXVsKGEsYil7aWYoYS5pc1plcm8oKXx8Yi5pc1plcm8oKSlyZXR1cm4gbmV3IEJOKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgdD1hLm11bChiKTt2YXIgYz10Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTt2YXIgdT10LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO3ZhciByZXM9dTtpZih1LmNtcCh0aGlzLm0pPj0wKXtyZXM9dS5pc3ViKHRoaXMubSl9ZWxzZSBpZih1LmNtcG4oMCk8MCl7cmVzPXUuaWFkZCh0aGlzLm0pfXJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpfTtNb250LnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uIGludm0oYSl7dmFyIHJlcz10aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO3JldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpfX0pKCJvYmplY3QiPT09InVuZGVmaW5lZCJ8fG1vZHVsZSxjb21tb25qc0dsb2JhbCl9KTt2YXIgbWluaW1hbGlzdGljQXNzZXJ0PWFzc2VydDtmdW5jdGlvbiBhc3NlcnQodmFsLG1zZyl7aWYoIXZhbCl0aHJvdyBuZXcgRXJyb3IobXNnfHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWFzc2VydC5lcXVhbD1mdW5jdGlvbiBhc3NlcnRFcXVhbChsLHIsbXNnKXtpZihsIT1yKXRocm93IG5ldyBFcnJvcihtc2d8fCJBc3NlcnRpb24gZmFpbGVkOiAiK2wrIiAhPSAiK3IpfTt2YXIgdXRpbHNfMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciB1dGlscz1leHBvcnRzO2Z1bmN0aW9uIHRvQXJyYXkobXNnLGVuYyl7aWYoQXJyYXkuaXNBcnJheShtc2cpKXJldHVybiBtc2cuc2xpY2UoKTtpZighbXNnKXJldHVybltdO3ZhciByZXM9W107aWYodHlwZW9mIG1zZyE9PSJzdHJpbmciKXtmb3IodmFyIGk9MDtpPG1zZy5sZW5ndGg7aSsrKXJlc1tpXT1tc2dbaV18MDtyZXR1cm4gcmVzfWlmKGVuYz09PSJoZXgiKXttc2c9bXNnLnJlcGxhY2UoL1teYS16MC05XSsvZ2ksIiIpO2lmKG1zZy5sZW5ndGglMiE9PTApbXNnPSIwIittc2c7Zm9yKHZhciBpPTA7aTxtc2cubGVuZ3RoO2krPTIpcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldK21zZ1tpKzFdLDE2KSl9ZWxzZXtmb3IodmFyIGk9MDtpPG1zZy5sZW5ndGg7aSsrKXt2YXIgYz1tc2cuY2hhckNvZGVBdChpKTt2YXIgaGk9Yz4+ODt2YXIgbG89YyYyNTU7aWYoaGkpcmVzLnB1c2goaGksbG8pO2Vsc2UgcmVzLnB1c2gobG8pfX1yZXR1cm4gcmVzfXV0aWxzLnRvQXJyYXk9dG9BcnJheTtmdW5jdGlvbiB6ZXJvMih3b3JkKXtpZih3b3JkLmxlbmd0aD09PTEpcmV0dXJuIjAiK3dvcmQ7ZWxzZSByZXR1cm4gd29yZH11dGlscy56ZXJvMj16ZXJvMjtmdW5jdGlvbiB0b0hleChtc2cpe3ZhciByZXM9IiI7Zm9yKHZhciBpPTA7aTxtc2cubGVuZ3RoO2krKylyZXMrPXplcm8yKG1zZ1tpXS50b1N0cmluZygxNikpO3JldHVybiByZXN9dXRpbHMudG9IZXg9dG9IZXg7dXRpbHMuZW5jb2RlPWZ1bmN0aW9uIGVuY29kZShhcnIsZW5jKXtpZihlbmM9PT0iaGV4IilyZXR1cm4gdG9IZXgoYXJyKTtlbHNlIHJldHVybiBhcnJ9fSk7dmFyIHV0aWxzXzEkMT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciB1dGlscz1leHBvcnRzO3V0aWxzLmFzc2VydD1taW5pbWFsaXN0aWNBc3NlcnQ7dXRpbHMudG9BcnJheT11dGlsc18xLnRvQXJyYXk7dXRpbHMuemVybzI9dXRpbHNfMS56ZXJvMjt1dGlscy50b0hleD11dGlsc18xLnRvSGV4O3V0aWxzLmVuY29kZT11dGlsc18xLmVuY29kZTtmdW5jdGlvbiBnZXROQUYobnVtLHcsYml0cyl7dmFyIG5hZj1uZXcgQXJyYXkoTWF0aC5tYXgobnVtLmJpdExlbmd0aCgpLGJpdHMpKzEpO25hZi5maWxsKDApO3ZhciB3cz0xPDx3KzE7dmFyIGs9bnVtLmNsb25lKCk7Zm9yKHZhciBpPTA7aTxuYWYubGVuZ3RoO2krKyl7dmFyIHo7dmFyIG1vZD1rLmFuZGxuKHdzLTEpO2lmKGsuaXNPZGQoKSl7aWYobW9kPih3cz4+MSktMSl6PSh3cz4+MSktbW9kO2Vsc2Ugej1tb2Q7ay5pc3Vibih6KX1lbHNle3o9MH1uYWZbaV09ejtrLml1c2hybigxKX1yZXR1cm4gbmFmfXV0aWxzLmdldE5BRj1nZXROQUY7ZnVuY3Rpb24gZ2V0SlNGKGsxLGsyKXt2YXIganNmPVtbXSxbXV07azE9azEuY2xvbmUoKTtrMj1rMi5jbG9uZSgpO3ZhciBkMT0wO3ZhciBkMj0wO3ZhciBtODt3aGlsZShrMS5jbXBuKC1kMSk+MHx8azIuY21wbigtZDIpPjApe3ZhciBtMTQ9azEuYW5kbG4oMykrZDEmMzt2YXIgbTI0PWsyLmFuZGxuKDMpK2QyJjM7aWYobTE0PT09MyltMTQ9LTE7aWYobTI0PT09MyltMjQ9LTE7dmFyIHUxO2lmKChtMTQmMSk9PT0wKXt1MT0wfWVsc2V7bTg9azEuYW5kbG4oNykrZDEmNztpZigobTg9PT0zfHxtOD09PTUpJiZtMjQ9PT0yKXUxPS1tMTQ7ZWxzZSB1MT1tMTR9anNmWzBdLnB1c2godTEpO3ZhciB1MjtpZigobTI0JjEpPT09MCl7dTI9MH1lbHNle204PWsyLmFuZGxuKDcpK2QyJjc7aWYoKG04PT09M3x8bTg9PT01KSYmbTE0PT09Mil1Mj0tbTI0O2Vsc2UgdTI9bTI0fWpzZlsxXS5wdXNoKHUyKTtpZigyKmQxPT09dTErMSlkMT0xLWQxO2lmKDIqZDI9PT11MisxKWQyPTEtZDI7azEuaXVzaHJuKDEpO2syLml1c2hybigxKX1yZXR1cm4ganNmfXV0aWxzLmdldEpTRj1nZXRKU0Y7ZnVuY3Rpb24gY2FjaGVkUHJvcGVydHkob2JqLG5hbWUsY29tcHV0ZXIpe3ZhciBrZXk9Il8iK25hbWU7b2JqLnByb3RvdHlwZVtuYW1lXT1mdW5jdGlvbiBjYWNoZWRQcm9wZXJ0eSgpe3JldHVybiB0aGlzW2tleV0hPT11bmRlZmluZWQ/dGhpc1trZXldOnRoaXNba2V5XT1jb21wdXRlci5jYWxsKHRoaXMpfX11dGlscy5jYWNoZWRQcm9wZXJ0eT1jYWNoZWRQcm9wZXJ0eTtmdW5jdGlvbiBwYXJzZUJ5dGVzKGJ5dGVzKXtyZXR1cm4gdHlwZW9mIGJ5dGVzPT09InN0cmluZyI/dXRpbHMudG9BcnJheShieXRlcywiaGV4Iik6Ynl0ZXN9dXRpbHMucGFyc2VCeXRlcz1wYXJzZUJ5dGVzO2Z1bmN0aW9uIGludEZyb21MRShieXRlcyl7cmV0dXJuIG5ldyBibiQxKGJ5dGVzLCJoZXgiLCJsZSIpfXV0aWxzLmludEZyb21MRT1pbnRGcm9tTEV9KTsidXNlIHN0cmljdCI7dmFyIGdldE5BRj11dGlsc18xJDEuZ2V0TkFGO3ZhciBnZXRKU0Y9dXRpbHNfMSQxLmdldEpTRjt2YXIgYXNzZXJ0JDE9dXRpbHNfMSQxLmFzc2VydDtmdW5jdGlvbiBCYXNlQ3VydmUodHlwZSxjb25mKXt0aGlzLnR5cGU9dHlwZTt0aGlzLnA9bmV3IGJuJDEoY29uZi5wLDE2KTt0aGlzLnJlZD1jb25mLnByaW1lP2JuJDEucmVkKGNvbmYucHJpbWUpOmJuJDEubW9udCh0aGlzLnApO3RoaXMuemVybz1uZXcgYm4kMSgwKS50b1JlZCh0aGlzLnJlZCk7dGhpcy5vbmU9bmV3IGJuJDEoMSkudG9SZWQodGhpcy5yZWQpO3RoaXMudHdvPW5ldyBibiQxKDIpLnRvUmVkKHRoaXMucmVkKTt0aGlzLm49Y29uZi5uJiZuZXcgYm4kMShjb25mLm4sMTYpO3RoaXMuZz1jb25mLmcmJnRoaXMucG9pbnRGcm9tSlNPTihjb25mLmcsY29uZi5nUmVkKTt0aGlzLl93bmFmVDE9bmV3IEFycmF5KDQpO3RoaXMuX3duYWZUMj1uZXcgQXJyYXkoNCk7dGhpcy5fd25hZlQzPW5ldyBBcnJheSg0KTt0aGlzLl93bmFmVDQ9bmV3IEFycmF5KDQpO3RoaXMuX2JpdExlbmd0aD10aGlzLm4/dGhpcy5uLmJpdExlbmd0aCgpOjA7dmFyIGFkanVzdENvdW50PXRoaXMubiYmdGhpcy5wLmRpdih0aGlzLm4pO2lmKCFhZGp1c3RDb3VudHx8YWRqdXN0Q291bnQuY21wbigxMDApPjApe3RoaXMucmVkTj1udWxsfWVsc2V7dGhpcy5fbWF4d2VsbFRyaWNrPXRydWU7dGhpcy5yZWROPXRoaXMubi50b1JlZCh0aGlzLnJlZCl9fXZhciBiYXNlPUJhc2VDdXJ2ZTtCYXNlQ3VydmUucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uIHBvaW50KCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX07QmFzZUN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbiB2YWxpZGF0ZSgpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9O0Jhc2VDdXJ2ZS5wcm90b3R5cGUuX2ZpeGVkTmFmTXVsPWZ1bmN0aW9uIF9maXhlZE5hZk11bChwLGspe2Fzc2VydCQxKHAucHJlY29tcHV0ZWQpO3ZhciBkb3VibGVzPXAuX2dldERvdWJsZXMoKTt2YXIgbmFmPWdldE5BRihrLDEsdGhpcy5fYml0TGVuZ3RoKTt2YXIgST0oMTw8ZG91Ymxlcy5zdGVwKzEpLShkb3VibGVzLnN0ZXAlMj09PTA/MjoxKTtJLz0zO3ZhciByZXByPVtdO3ZhciBqO3ZhciBuYWZXO2ZvcihqPTA7ajxuYWYubGVuZ3RoO2orPWRvdWJsZXMuc3RlcCl7bmFmVz0wO2Zvcih2YXIgbD1qK2RvdWJsZXMuc3RlcC0xO2w+PWo7bC0tKW5hZlc9KG5hZlc8PDEpK25hZltsXTtyZXByLnB1c2gobmFmVyl9dmFyIGE9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpO3ZhciBiPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKTtmb3IodmFyIGk9STtpPjA7aS0tKXtmb3Ioaj0wO2o8cmVwci5sZW5ndGg7aisrKXtuYWZXPXJlcHJbal07aWYobmFmVz09PWkpYj1iLm1peGVkQWRkKGRvdWJsZXMucG9pbnRzW2pdKTtlbHNlIGlmKG5hZlc9PT0taSliPWIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0ubmVnKCkpfWE9YS5hZGQoYil9cmV0dXJuIGEudG9QKCl9O0Jhc2VDdXJ2ZS5wcm90b3R5cGUuX3duYWZNdWw9ZnVuY3Rpb24gX3duYWZNdWwocCxrKXt2YXIgdz00O3ZhciBuYWZQb2ludHM9cC5fZ2V0TkFGUG9pbnRzKHcpO3c9bmFmUG9pbnRzLnduZDt2YXIgd25kPW5hZlBvaW50cy5wb2ludHM7dmFyIG5hZj1nZXROQUYoayx3LHRoaXMuX2JpdExlbmd0aCk7dmFyIGFjYz10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCk7Zm9yKHZhciBpPW5hZi5sZW5ndGgtMTtpPj0wO2ktLSl7Zm9yKHZhciBsPTA7aT49MCYmbmFmW2ldPT09MDtpLS0pbCsrO2lmKGk+PTApbCsrO2FjYz1hY2MuZGJscChsKTtpZihpPDApYnJlYWs7dmFyIHo9bmFmW2ldO2Fzc2VydCQxKHohPT0wKTtpZihwLnR5cGU9PT0iYWZmaW5lIil7aWYoej4wKWFjYz1hY2MubWl4ZWRBZGQod25kW3otMT4+MV0pO2Vsc2UgYWNjPWFjYy5taXhlZEFkZCh3bmRbLXotMT4+MV0ubmVnKCkpfWVsc2V7aWYoej4wKWFjYz1hY2MuYWRkKHduZFt6LTE+PjFdKTtlbHNlIGFjYz1hY2MuYWRkKHduZFstei0xPj4xXS5uZWcoKSl9fXJldHVybiBwLnR5cGU9PT0iYWZmaW5lIj9hY2MudG9QKCk6YWNjfTtCYXNlQ3VydmUucHJvdG90eXBlLl93bmFmTXVsQWRkPWZ1bmN0aW9uIF93bmFmTXVsQWRkKGRlZlcscG9pbnRzLGNvZWZmcyxsZW4samFjb2JpYW5SZXN1bHQpe3ZhciB3bmRXaWR0aD10aGlzLl93bmFmVDE7dmFyIHduZD10aGlzLl93bmFmVDI7dmFyIG5hZj10aGlzLl93bmFmVDM7dmFyIG1heD0wO3ZhciBpO3ZhciBqO3ZhciBwO2ZvcihpPTA7aTxsZW47aSsrKXtwPXBvaW50c1tpXTt2YXIgbmFmUG9pbnRzPXAuX2dldE5BRlBvaW50cyhkZWZXKTt3bmRXaWR0aFtpXT1uYWZQb2ludHMud25kO3duZFtpXT1uYWZQb2ludHMucG9pbnRzfWZvcihpPWxlbi0xO2k+PTE7aS09Mil7dmFyIGE9aS0xO3ZhciBiPWk7aWYod25kV2lkdGhbYV0hPT0xfHx3bmRXaWR0aFtiXSE9PTEpe25hZlthXT1nZXROQUYoY29lZmZzW2FdLHduZFdpZHRoW2FdLHRoaXMuX2JpdExlbmd0aCk7bmFmW2JdPWdldE5BRihjb2VmZnNbYl0sd25kV2lkdGhbYl0sdGhpcy5fYml0TGVuZ3RoKTttYXg9TWF0aC5tYXgobmFmW2FdLmxlbmd0aCxtYXgpO21heD1NYXRoLm1heChuYWZbYl0ubGVuZ3RoLG1heCk7Y29udGludWV9dmFyIGNvbWI9W3BvaW50c1thXSxudWxsLG51bGwscG9pbnRzW2JdXTtpZihwb2ludHNbYV0ueS5jbXAocG9pbnRzW2JdLnkpPT09MCl7Y29tYlsxXT1wb2ludHNbYV0uYWRkKHBvaW50c1tiXSk7Y29tYlsyXT1wb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKX1lbHNlIGlmKHBvaW50c1thXS55LmNtcChwb2ludHNbYl0ueS5yZWROZWcoKSk9PT0wKXtjb21iWzFdPXBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0pO2NvbWJbMl09cG9pbnRzW2FdLmFkZChwb2ludHNbYl0ubmVnKCkpfWVsc2V7Y29tYlsxXT1wb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtjb21iWzJdPXBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0ubmVnKCkpfXZhciBpbmRleD1bLTMsLTEsLTUsLTcsMCw3LDUsMSwzXTt2YXIganNmPWdldEpTRihjb2VmZnNbYV0sY29lZmZzW2JdKTttYXg9TWF0aC5tYXgoanNmWzBdLmxlbmd0aCxtYXgpO25hZlthXT1uZXcgQXJyYXkobWF4KTtuYWZbYl09bmV3IEFycmF5KG1heCk7Zm9yKGo9MDtqPG1heDtqKyspe3ZhciBqYT1qc2ZbMF1bal18MDt2YXIgamI9anNmWzFdW2pdfDA7bmFmW2FdW2pdPWluZGV4WyhqYSsxKSozKyhqYisxKV07bmFmW2JdW2pdPTA7d25kW2FdPWNvbWJ9fXZhciBhY2M9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpO3ZhciB0bXA9dGhpcy5fd25hZlQ0O2ZvcihpPW1heDtpPj0wO2ktLSl7dmFyIGs9MDt3aGlsZShpPj0wKXt2YXIgemVybz10cnVlO2ZvcihqPTA7ajxsZW47aisrKXt0bXBbal09bmFmW2pdW2ldfDA7aWYodG1wW2pdIT09MCl6ZXJvPWZhbHNlfWlmKCF6ZXJvKWJyZWFrO2srKztpLS19aWYoaT49MClrKys7YWNjPWFjYy5kYmxwKGspO2lmKGk8MClicmVhaztmb3Ioaj0wO2o8bGVuO2orKyl7dmFyIHo9dG1wW2pdO3A7aWYoej09PTApY29udGludWU7ZWxzZSBpZih6PjApcD13bmRbal1bei0xPj4xXTtlbHNlIGlmKHo8MClwPXduZFtqXVstei0xPj4xXS5uZWcoKTtpZihwLnR5cGU9PT0iYWZmaW5lIilhY2M9YWNjLm1peGVkQWRkKHApO2Vsc2UgYWNjPWFjYy5hZGQocCl9fWZvcihpPTA7aTxsZW47aSsrKXduZFtpXT1udWxsO2lmKGphY29iaWFuUmVzdWx0KXJldHVybiBhY2M7ZWxzZSByZXR1cm4gYWNjLnRvUCgpfTtmdW5jdGlvbiBCYXNlUG9pbnQoY3VydmUsdHlwZSl7dGhpcy5jdXJ2ZT1jdXJ2ZTt0aGlzLnR5cGU9dHlwZTt0aGlzLnByZWNvbXB1dGVkPW51bGx9QmFzZUN1cnZlLkJhc2VQb2ludD1CYXNlUG9pbnQ7QmFzZVBvaW50LnByb3RvdHlwZS5lcT1mdW5jdGlvbiBlcSgpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkIil9O0Jhc2VQb2ludC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24gdmFsaWRhdGUoKXtyZXR1cm4gdGhpcy5jdXJ2ZS52YWxpZGF0ZSh0aGlzKX07QmFzZUN1cnZlLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcyxlbmMpe2J5dGVzPXV0aWxzXzEkMS50b0FycmF5KGJ5dGVzLGVuYyk7dmFyIGxlbj10aGlzLnAuYnl0ZUxlbmd0aCgpO2lmKChieXRlc1swXT09PTR8fGJ5dGVzWzBdPT09Nnx8Ynl0ZXNbMF09PT03KSYmYnl0ZXMubGVuZ3RoLTE9PT0yKmxlbil7aWYoYnl0ZXNbMF09PT02KWFzc2VydCQxKGJ5dGVzW2J5dGVzLmxlbmd0aC0xXSUyPT09MCk7ZWxzZSBpZihieXRlc1swXT09PTcpYXNzZXJ0JDEoYnl0ZXNbYnl0ZXMubGVuZ3RoLTFdJTI9PT0xKTt2YXIgcmVzPXRoaXMucG9pbnQoYnl0ZXMuc2xpY2UoMSwxK2xlbiksYnl0ZXMuc2xpY2UoMStsZW4sMSsyKmxlbikpO3JldHVybiByZXN9ZWxzZSBpZigoYnl0ZXNbMF09PT0yfHxieXRlc1swXT09PTMpJiZieXRlcy5sZW5ndGgtMT09PWxlbil7cmV0dXJuIHRoaXMucG9pbnRGcm9tWChieXRlcy5zbGljZSgxLDErbGVuKSxieXRlc1swXT09PTMpfXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwb2ludCBmb3JtYXQiKX07QmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkPWZ1bmN0aW9uIGVuY29kZUNvbXByZXNzZWQoZW5jKXtyZXR1cm4gdGhpcy5lbmNvZGUoZW5jLHRydWUpfTtCYXNlUG9pbnQucHJvdG90eXBlLl9lbmNvZGU9ZnVuY3Rpb24gX2VuY29kZShjb21wYWN0KXt2YXIgbGVuPXRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCk7dmFyIHg9dGhpcy5nZXRYKCkudG9BcnJheSgiYmUiLGxlbik7aWYoY29tcGFjdClyZXR1cm5bdGhpcy5nZXRZKCkuaXNFdmVuKCk/MjozXS5jb25jYXQoeCk7cmV0dXJuWzRdLmNvbmNhdCh4LHRoaXMuZ2V0WSgpLnRvQXJyYXkoImJlIixsZW4pKX07QmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24gZW5jb2RlKGVuYyxjb21wYWN0KXtyZXR1cm4gdXRpbHNfMSQxLmVuY29kZSh0aGlzLl9lbmNvZGUoY29tcGFjdCksZW5jKX07QmFzZVBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0aW9uIHByZWNvbXB1dGUocG93ZXIpe2lmKHRoaXMucHJlY29tcHV0ZWQpcmV0dXJuIHRoaXM7dmFyIHByZWNvbXB1dGVkPXtkb3VibGVzOm51bGwsbmFmOm51bGwsYmV0YTpudWxsfTtwcmVjb21wdXRlZC5uYWY9dGhpcy5fZ2V0TkFGUG9pbnRzKDgpO3ByZWNvbXB1dGVkLmRvdWJsZXM9dGhpcy5fZ2V0RG91Ymxlcyg0LHBvd2VyKTtwcmVjb21wdXRlZC5iZXRhPXRoaXMuX2dldEJldGEoKTt0aGlzLnByZWNvbXB1dGVkPXByZWNvbXB1dGVkO3JldHVybiB0aGlzfTtCYXNlUG9pbnQucHJvdG90eXBlLl9oYXNEb3VibGVzPWZ1bmN0aW9uIF9oYXNEb3VibGVzKGspe2lmKCF0aGlzLnByZWNvbXB1dGVkKXJldHVybiBmYWxzZTt2YXIgZG91Ymxlcz10aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7aWYoIWRvdWJsZXMpcmV0dXJuIGZhbHNlO3JldHVybiBkb3VibGVzLnBvaW50cy5sZW5ndGg+PU1hdGguY2VpbCgoay5iaXRMZW5ndGgoKSsxKS9kb3VibGVzLnN0ZXApfTtCYXNlUG9pbnQucHJvdG90eXBlLl9nZXREb3VibGVzPWZ1bmN0aW9uIF9nZXREb3VibGVzKHN0ZXAscG93ZXIpe2lmKHRoaXMucHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQuZG91YmxlcylyZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO3ZhciBkb3VibGVzPVt0aGlzXTt2YXIgYWNjPXRoaXM7Zm9yKHZhciBpPTA7aTxwb3dlcjtpKz1zdGVwKXtmb3IodmFyIGo9MDtqPHN0ZXA7aisrKWFjYz1hY2MuZGJsKCk7ZG91Ymxlcy5wdXNoKGFjYyl9cmV0dXJue3N0ZXA6c3RlcCxwb2ludHM6ZG91Ymxlc319O0Jhc2VQb2ludC5wcm90b3R5cGUuX2dldE5BRlBvaW50cz1mdW5jdGlvbiBfZ2V0TkFGUG9pbnRzKHduZCl7aWYodGhpcy5wcmVjb21wdXRlZCYmdGhpcy5wcmVjb21wdXRlZC5uYWYpcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQubmFmO3ZhciByZXM9W3RoaXNdO3ZhciBtYXg9KDE8PHduZCktMTt2YXIgZGJsPW1heD09PTE/bnVsbDp0aGlzLmRibCgpO2Zvcih2YXIgaT0xO2k8bWF4O2krKylyZXNbaV09cmVzW2ktMV0uYWRkKGRibCk7cmV0dXJue3duZDp3bmQscG9pbnRzOnJlc319O0Jhc2VQb2ludC5wcm90b3R5cGUuX2dldEJldGE9ZnVuY3Rpb24gX2dldEJldGEoKXtyZXR1cm4gbnVsbH07QmFzZVBvaW50LnByb3RvdHlwZS5kYmxwPWZ1bmN0aW9uIGRibHAoayl7dmFyIHI9dGhpcztmb3IodmFyIGk9MDtpPGs7aSsrKXI9ci5kYmwoKTtyZXR1cm4gcn07dmFyIGluaGVyaXRzX2Jyb3dzZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlKXtpZih0eXBlb2YgT2JqZWN0LmNyZWF0ZT09PSJmdW5jdGlvbiIpe21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uIGluaGVyaXRzKGN0b3Isc3VwZXJDdG9yKXtpZihzdXBlckN0b3Ipe2N0b3Iuc3VwZXJfPXN1cGVyQ3RvcjtjdG9yLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpjdG9yLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX19KX19fWVsc2V7bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24gaW5oZXJpdHMoY3RvcixzdXBlckN0b3Ipe2lmKHN1cGVyQ3Rvcil7Y3Rvci5zdXBlcl89c3VwZXJDdG9yO3ZhciBUZW1wQ3Rvcj1mdW5jdGlvbigpe307VGVtcEN0b3IucHJvdG90eXBlPXN1cGVyQ3Rvci5wcm90b3R5cGU7Y3Rvci5wcm90b3R5cGU9bmV3IFRlbXBDdG9yO2N0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPWN0b3J9fX19KTsidXNlIHN0cmljdCI7dmFyIGFzc2VydCQyPXV0aWxzXzEkMS5hc3NlcnQ7ZnVuY3Rpb24gU2hvcnRDdXJ2ZShjb25mKXtiYXNlLmNhbGwodGhpcywic2hvcnQiLGNvbmYpO3RoaXMuYT1uZXcgYm4kMShjb25mLmEsMTYpLnRvUmVkKHRoaXMucmVkKTt0aGlzLmI9bmV3IGJuJDEoY29uZi5iLDE2KS50b1JlZCh0aGlzLnJlZCk7dGhpcy50aW52PXRoaXMudHdvLnJlZEludm0oKTt0aGlzLnplcm9BPXRoaXMuYS5mcm9tUmVkKCkuY21wbigwKT09PTA7dGhpcy50aHJlZUE9dGhpcy5hLmZyb21SZWQoKS5zdWIodGhpcy5wKS5jbXBuKC0zKT09PTA7dGhpcy5lbmRvPXRoaXMuX2dldEVuZG9tb3JwaGlzbShjb25mKTt0aGlzLl9lbmRvV25hZlQxPW5ldyBBcnJheSg0KTt0aGlzLl9lbmRvV25hZlQyPW5ldyBBcnJheSg0KX1pbmhlcml0c19icm93c2VyKFNob3J0Q3VydmUsYmFzZSk7dmFyIHNob3J0XzE9U2hvcnRDdXJ2ZTtTaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb21vcnBoaXNtPWZ1bmN0aW9uIF9nZXRFbmRvbW9ycGhpc20oY29uZil7aWYoIXRoaXMuemVyb0F8fCF0aGlzLmd8fCF0aGlzLm58fHRoaXMucC5tb2RuKDMpIT09MSlyZXR1cm47dmFyIGJldGE7dmFyIGxhbWJkYTtpZihjb25mLmJldGEpe2JldGE9bmV3IGJuJDEoY29uZi5iZXRhLDE2KS50b1JlZCh0aGlzLnJlZCl9ZWxzZXt2YXIgYmV0YXM9dGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMucCk7YmV0YT1iZXRhc1swXS5jbXAoYmV0YXNbMV0pPDA/YmV0YXNbMF06YmV0YXNbMV07YmV0YT1iZXRhLnRvUmVkKHRoaXMucmVkKX1pZihjb25mLmxhbWJkYSl7bGFtYmRhPW5ldyBibiQxKGNvbmYubGFtYmRhLDE2KX1lbHNle3ZhciBsYW1iZGFzPXRoaXMuX2dldEVuZG9Sb290cyh0aGlzLm4pO2lmKHRoaXMuZy5tdWwobGFtYmRhc1swXSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKT09PTApe2xhbWJkYT1sYW1iZGFzWzBdfWVsc2V7bGFtYmRhPWxhbWJkYXNbMV07YXNzZXJ0JDIodGhpcy5nLm11bChsYW1iZGEpLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSk9PT0wKX19dmFyIGJhc2lzO2lmKGNvbmYuYmFzaXMpe2Jhc2lzPWNvbmYuYmFzaXMubWFwKGZ1bmN0aW9uKHZlYyl7cmV0dXJue2E6bmV3IGJuJDEodmVjLmEsMTYpLGI6bmV3IGJuJDEodmVjLmIsMTYpfX0pfWVsc2V7YmFzaXM9dGhpcy5fZ2V0RW5kb0Jhc2lzKGxhbWJkYSl9cmV0dXJue2JldGE6YmV0YSxsYW1iZGE6bGFtYmRhLGJhc2lzOmJhc2lzfX07U2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9Sb290cz1mdW5jdGlvbiBfZ2V0RW5kb1Jvb3RzKG51bSl7dmFyIHJlZD1udW09PT10aGlzLnA/dGhpcy5yZWQ6Ym4kMS5tb250KG51bSk7dmFyIHRpbnY9bmV3IGJuJDEoMikudG9SZWQocmVkKS5yZWRJbnZtKCk7dmFyIG50aW52PXRpbnYucmVkTmVnKCk7dmFyIHM9bmV3IGJuJDEoMykudG9SZWQocmVkKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKHRpbnYpO3ZhciBsMT1udGludi5yZWRBZGQocykuZnJvbVJlZCgpO3ZhciBsMj1udGludi5yZWRTdWIocykuZnJvbVJlZCgpO3JldHVybltsMSxsMl19O1Nob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvQmFzaXM9ZnVuY3Rpb24gX2dldEVuZG9CYXNpcyhsYW1iZGEpe3ZhciBhcHJ4U3FydD10aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkvMikpO3ZhciB1PWxhbWJkYTt2YXIgdj10aGlzLm4uY2xvbmUoKTt2YXIgeDE9bmV3IGJuJDEoMSk7dmFyIHkxPW5ldyBibiQxKDApO3ZhciB4Mj1uZXcgYm4kMSgwKTt2YXIgeTI9bmV3IGJuJDEoMSk7dmFyIGEwO3ZhciBiMDt2YXIgYTE7dmFyIGIxO3ZhciBhMjt2YXIgYjI7dmFyIHByZXZSO3ZhciBpPTA7dmFyIHI7dmFyIHg7d2hpbGUodS5jbXBuKDApIT09MCl7dmFyIHE9di5kaXYodSk7cj12LnN1YihxLm11bCh1KSk7eD14Mi5zdWIocS5tdWwoeDEpKTt2YXIgeT15Mi5zdWIocS5tdWwoeTEpKTtpZighYTEmJnIuY21wKGFwcnhTcXJ0KTwwKXthMD1wcmV2Ui5uZWcoKTtiMD14MTthMT1yLm5lZygpO2IxPXh9ZWxzZSBpZihhMSYmKytpPT09Mil7YnJlYWt9cHJldlI9cjt2PXU7dT1yO3gyPXgxO3gxPXg7eTI9eTE7eTE9eX1hMj1yLm5lZygpO2IyPXg7dmFyIGxlbjE9YTEuc3FyKCkuYWRkKGIxLnNxcigpKTt2YXIgbGVuMj1hMi5zcXIoKS5hZGQoYjIuc3FyKCkpO2lmKGxlbjIuY21wKGxlbjEpPj0wKXthMj1hMDtiMj1iMH1pZihhMS5uZWdhdGl2ZSl7YTE9YTEubmVnKCk7YjE9YjEubmVnKCl9aWYoYTIubmVnYXRpdmUpe2EyPWEyLm5lZygpO2IyPWIyLm5lZygpfXJldHVyblt7YTphMSxiOmIxfSx7YTphMixiOmIyfV19O1Nob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvU3BsaXQ9ZnVuY3Rpb24gX2VuZG9TcGxpdChrKXt2YXIgYmFzaXM9dGhpcy5lbmRvLmJhc2lzO3ZhciB2MT1iYXNpc1swXTt2YXIgdjI9YmFzaXNbMV07dmFyIGMxPXYyLmIubXVsKGspLmRpdlJvdW5kKHRoaXMubik7dmFyIGMyPXYxLmIubmVnKCkubXVsKGspLmRpdlJvdW5kKHRoaXMubik7dmFyIHAxPWMxLm11bCh2MS5hKTt2YXIgcDI9YzIubXVsKHYyLmEpO3ZhciBxMT1jMS5tdWwodjEuYik7dmFyIHEyPWMyLm11bCh2Mi5iKTt2YXIgazE9ay5zdWIocDEpLnN1YihwMik7dmFyIGsyPXExLmFkZChxMikubmVnKCk7cmV0dXJue2sxOmsxLGsyOmsyfX07U2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWD1mdW5jdGlvbiBwb2ludEZyb21YKHgsb2RkKXt4PW5ldyBibiQxKHgsMTYpO2lmKCF4LnJlZCl4PXgudG9SZWQodGhpcy5yZWQpO3ZhciB5Mj14LnJlZFNxcigpLnJlZE11bCh4KS5yZWRJQWRkKHgucmVkTXVsKHRoaXMuYSkpLnJlZElBZGQodGhpcy5iKTt2YXIgeT15Mi5yZWRTcXJ0KCk7aWYoeS5yZWRTcXIoKS5yZWRTdWIoeTIpLmNtcCh0aGlzLnplcm8pIT09MCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcG9pbnQiKTt2YXIgaXNPZGQ9eS5mcm9tUmVkKCkuaXNPZGQoKTtpZihvZGQmJiFpc09kZHx8IW9kZCYmaXNPZGQpeT15LnJlZE5lZygpO3JldHVybiB0aGlzLnBvaW50KHgseSl9O1Nob3J0Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KXtpZihwb2ludC5pbmYpcmV0dXJuIHRydWU7dmFyIHg9cG9pbnQueDt2YXIgeT1wb2ludC55O3ZhciBheD10aGlzLmEucmVkTXVsKHgpO3ZhciByaHM9eC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZChheCkucmVkSUFkZCh0aGlzLmIpO3JldHVybiB5LnJlZFNxcigpLnJlZElTdWIocmhzKS5jbXBuKDApPT09MH07U2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2VuZG9XbmFmTXVsQWRkPWZ1bmN0aW9uIF9lbmRvV25hZk11bEFkZChwb2ludHMsY29lZmZzLGphY29iaWFuUmVzdWx0KXt2YXIgbnBvaW50cz10aGlzLl9lbmRvV25hZlQxO3ZhciBuY29lZmZzPXRoaXMuX2VuZG9XbmFmVDI7Zm9yKHZhciBpPTA7aTxwb2ludHMubGVuZ3RoO2krKyl7dmFyIHNwbGl0PXRoaXMuX2VuZG9TcGxpdChjb2VmZnNbaV0pO3ZhciBwPXBvaW50c1tpXTt2YXIgYmV0YT1wLl9nZXRCZXRhKCk7aWYoc3BsaXQuazEubmVnYXRpdmUpe3NwbGl0LmsxLmluZWcoKTtwPXAubmVnKHRydWUpfWlmKHNwbGl0LmsyLm5lZ2F0aXZlKXtzcGxpdC5rMi5pbmVnKCk7YmV0YT1iZXRhLm5lZyh0cnVlKX1ucG9pbnRzW2kqMl09cDtucG9pbnRzW2kqMisxXT1iZXRhO25jb2VmZnNbaSoyXT1zcGxpdC5rMTtuY29lZmZzW2kqMisxXT1zcGxpdC5rMn12YXIgcmVzPXRoaXMuX3duYWZNdWxBZGQoMSxucG9pbnRzLG5jb2VmZnMsaSoyLGphY29iaWFuUmVzdWx0KTtmb3IodmFyIGo9MDtqPGkqMjtqKyspe25wb2ludHNbal09bnVsbDtuY29lZmZzW2pdPW51bGx9cmV0dXJuIHJlc307ZnVuY3Rpb24gUG9pbnQoY3VydmUseCx5LGlzUmVkKXtiYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsY3VydmUsImFmZmluZSIpO2lmKHg9PT1udWxsJiZ5PT09bnVsbCl7dGhpcy54PW51bGw7dGhpcy55PW51bGw7dGhpcy5pbmY9dHJ1ZX1lbHNle3RoaXMueD1uZXcgYm4kMSh4LDE2KTt0aGlzLnk9bmV3IGJuJDEoeSwxNik7aWYoaXNSZWQpe3RoaXMueC5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCk7dGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKX1pZighdGhpcy54LnJlZCl0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtpZighdGhpcy55LnJlZCl0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTt0aGlzLmluZj1mYWxzZX19aW5oZXJpdHNfYnJvd3NlcihQb2ludCxiYXNlLkJhc2VQb2ludCk7U2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24gcG9pbnQoeCx5LGlzUmVkKXtyZXR1cm4gbmV3IFBvaW50KHRoaXMseCx5LGlzUmVkKX07U2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTj1mdW5jdGlvbiBwb2ludEZyb21KU09OKG9iaixyZWQpe3JldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLG9iaixyZWQpfTtQb2ludC5wcm90b3R5cGUuX2dldEJldGE9ZnVuY3Rpb24gX2dldEJldGEoKXtpZighdGhpcy5jdXJ2ZS5lbmRvKXJldHVybjt2YXIgcHJlPXRoaXMucHJlY29tcHV0ZWQ7aWYocHJlJiZwcmUuYmV0YSlyZXR1cm4gcHJlLmJldGE7dmFyIGJldGE9dGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTXVsKHRoaXMuY3VydmUuZW5kby5iZXRhKSx0aGlzLnkpO2lmKHByZSl7dmFyIGN1cnZlPXRoaXMuY3VydmU7dmFyIGVuZG9NdWw9ZnVuY3Rpb24ocCl7cmV0dXJuIGN1cnZlLnBvaW50KHAueC5yZWRNdWwoY3VydmUuZW5kby5iZXRhKSxwLnkpfTtwcmUuYmV0YT1iZXRhO2JldGEucHJlY29tcHV0ZWQ9e2JldGE6bnVsbCxuYWY6cHJlLm5hZiYme3duZDpwcmUubmFmLnduZCxwb2ludHM6cHJlLm5hZi5wb2ludHMubWFwKGVuZG9NdWwpfSxkb3VibGVzOnByZS5kb3VibGVzJiZ7c3RlcDpwcmUuZG91Ymxlcy5zdGVwLHBvaW50czpwcmUuZG91Ymxlcy5wb2ludHMubWFwKGVuZG9NdWwpfX19cmV0dXJuIGJldGF9O1BvaW50LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24gdG9KU09OKCl7aWYoIXRoaXMucHJlY29tcHV0ZWQpcmV0dXJuW3RoaXMueCx0aGlzLnldO3JldHVyblt0aGlzLngsdGhpcy55LHRoaXMucHJlY29tcHV0ZWQmJntkb3VibGVzOnRoaXMucHJlY29tcHV0ZWQuZG91YmxlcyYme3N0ZXA6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSl9LG5hZjp0aGlzLnByZWNvbXB1dGVkLm5hZiYme3duZDp0aGlzLnByZWNvbXB1dGVkLm5hZi53bmQscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQubmFmLnBvaW50cy5zbGljZSgxKX19XX07UG9pbnQuZnJvbUpTT049ZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsb2JqLHJlZCl7aWYodHlwZW9mIG9iaj09PSJzdHJpbmciKW9iaj1KU09OLnBhcnNlKG9iaik7dmFyIHJlcz1jdXJ2ZS5wb2ludChvYmpbMF0sb2JqWzFdLHJlZCk7aWYoIW9ialsyXSlyZXR1cm4gcmVzO2Z1bmN0aW9uIG9iajJwb2ludChvYmope3JldHVybiBjdXJ2ZS5wb2ludChvYmpbMF0sb2JqWzFdLHJlZCl9dmFyIHByZT1vYmpbMl07cmVzLnByZWNvbXB1dGVkPXtiZXRhOm51bGwsZG91YmxlczpwcmUuZG91YmxlcyYme3N0ZXA6cHJlLmRvdWJsZXMuc3RlcCxwb2ludHM6W3Jlc10uY29uY2F0KHByZS5kb3VibGVzLnBvaW50cy5tYXAob2JqMnBvaW50KSl9LG5hZjpwcmUubmFmJiZ7d25kOnByZS5uYWYud25kLHBvaW50czpbcmVzXS5jb25jYXQocHJlLm5hZi5wb2ludHMubWFwKG9iajJwb2ludCkpfX07cmV0dXJuIHJlc307UG9pbnQucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24gaW5zcGVjdCgpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiI8RUMgUG9pbnQgSW5maW5pdHk+IjtyZXR1cm4iPEVDIFBvaW50IHg6ICIrdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwyKSsiPiJ9O1BvaW50LnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uIGlzSW5maW5pdHkoKXtyZXR1cm4gdGhpcy5pbmZ9O1BvaW50LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24gYWRkKHApe2lmKHRoaXMuaW5mKXJldHVybiBwO2lmKHAuaW5mKXJldHVybiB0aGlzO2lmKHRoaXMuZXEocCkpcmV0dXJuIHRoaXMuZGJsKCk7aWYodGhpcy5uZWcoKS5lcShwKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO2lmKHRoaXMueC5jbXAocC54KT09PTApcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgYz10aGlzLnkucmVkU3ViKHAueSk7aWYoYy5jbXBuKDApIT09MCljPWMucmVkTXVsKHRoaXMueC5yZWRTdWIocC54KS5yZWRJbnZtKCkpO3ZhciBueD1jLnJlZFNxcigpLnJlZElTdWIodGhpcy54KS5yZWRJU3ViKHAueCk7dmFyIG55PWMucmVkTXVsKHRoaXMueC5yZWRTdWIobngpKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsbnkpfTtQb2ludC5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uIGRibCgpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzO3ZhciB5czE9dGhpcy55LnJlZEFkZCh0aGlzLnkpO2lmKHlzMS5jbXBuKDApPT09MClyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciBhPXRoaXMuY3VydmUuYTt2YXIgeDI9dGhpcy54LnJlZFNxcigpO3ZhciBkeWludj15czEucmVkSW52bSgpO3ZhciBjPXgyLnJlZEFkZCh4MikucmVkSUFkZCh4MikucmVkSUFkZChhKS5yZWRNdWwoZHlpbnYpO3ZhciBueD1jLnJlZFNxcigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlzLngpKTt2YXIgbnk9Yy5yZWRNdWwodGhpcy54LnJlZFN1YihueCkpLnJlZElTdWIodGhpcy55KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCxueSl9O1BvaW50LnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uIGdldFgoKXtyZXR1cm4gdGhpcy54LmZyb21SZWQoKX07UG9pbnQucHJvdG90eXBlLmdldFk9ZnVuY3Rpb24gZ2V0WSgpe3JldHVybiB0aGlzLnkuZnJvbVJlZCgpfTtQb2ludC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uIG11bChrKXtrPW5ldyBibiQxKGssMTYpO2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO2Vsc2UgaWYodGhpcy5faGFzRG91YmxlcyhrKSlyZXR1cm4gdGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcyxrKTtlbHNlIGlmKHRoaXMuY3VydmUuZW5kbylyZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQoW3RoaXNdLFtrXSk7ZWxzZSByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLGspfTtQb2ludC5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uIG11bEFkZChrMSxwMixrMil7dmFyIHBvaW50cz1bdGhpcyxwMl07dmFyIGNvZWZmcz1bazEsazJdO2lmKHRoaXMuY3VydmUuZW5kbylyZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLGNvZWZmcyk7ZWxzZSByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLHBvaW50cyxjb2VmZnMsMil9O1BvaW50LnByb3RvdHlwZS5qbXVsQWRkPWZ1bmN0aW9uIGptdWxBZGQoazEscDIsazIpe3ZhciBwb2ludHM9W3RoaXMscDJdO3ZhciBjb2VmZnM9W2sxLGsyXTtpZih0aGlzLmN1cnZlLmVuZG8pcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHBvaW50cyxjb2VmZnMsdHJ1ZSk7ZWxzZSByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLHBvaW50cyxjb2VmZnMsMix0cnVlKX07UG9pbnQucHJvdG90eXBlLmVxPWZ1bmN0aW9uIGVxKHApe3JldHVybiB0aGlzPT09cHx8dGhpcy5pbmY9PT1wLmluZiYmKHRoaXMuaW5mfHx0aGlzLnguY21wKHAueCk9PT0wJiZ0aGlzLnkuY21wKHAueSk9PT0wKX07UG9pbnQucHJvdG90eXBlLm5lZz1mdW5jdGlvbiBuZWcoX3ByZWNvbXB1dGUpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzO3ZhciByZXM9dGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpKTtpZihfcHJlY29tcHV0ZSYmdGhpcy5wcmVjb21wdXRlZCl7dmFyIHByZT10aGlzLnByZWNvbXB1dGVkO3ZhciBuZWdhdGU9ZnVuY3Rpb24ocCl7cmV0dXJuIHAubmVnKCl9O3Jlcy5wcmVjb21wdXRlZD17bmFmOnByZS5uYWYmJnt3bmQ6cHJlLm5hZi53bmQscG9pbnRzOnByZS5uYWYucG9pbnRzLm1hcChuZWdhdGUpfSxkb3VibGVzOnByZS5kb3VibGVzJiZ7c3RlcDpwcmUuZG91Ymxlcy5zdGVwLHBvaW50czpwcmUuZG91Ymxlcy5wb2ludHMubWFwKG5lZ2F0ZSl9fX1yZXR1cm4gcmVzfTtQb2ludC5wcm90b3R5cGUudG9KPWZ1bmN0aW9uIHRvSigpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk7dmFyIHJlcz10aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LHRoaXMuY3VydmUub25lKTtyZXR1cm4gcmVzfTtmdW5jdGlvbiBKUG9pbnQoY3VydmUseCx5LHope2Jhc2UuQmFzZVBvaW50LmNhbGwodGhpcyxjdXJ2ZSwiamFjb2JpYW4iKTtpZih4PT09bnVsbCYmeT09PW51bGwmJno9PT1udWxsKXt0aGlzLng9dGhpcy5jdXJ2ZS5vbmU7dGhpcy55PXRoaXMuY3VydmUub25lO3RoaXMuej1uZXcgYm4kMSgwKX1lbHNle3RoaXMueD1uZXcgYm4kMSh4LDE2KTt0aGlzLnk9bmV3IGJuJDEoeSwxNik7dGhpcy56PW5ldyBibiQxKHosMTYpfWlmKCF0aGlzLngucmVkKXRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO2lmKCF0aGlzLnkucmVkKXRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO2lmKCF0aGlzLnoucmVkKXRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO3RoaXMuek9uZT10aGlzLno9PT10aGlzLmN1cnZlLm9uZX1pbmhlcml0c19icm93c2VyKEpQb2ludCxiYXNlLkJhc2VQb2ludCk7U2hvcnRDdXJ2ZS5wcm90b3R5cGUuanBvaW50PWZ1bmN0aW9uIGpwb2ludCh4LHkseil7cmV0dXJuIG5ldyBKUG9pbnQodGhpcyx4LHkseil9O0pQb2ludC5wcm90b3R5cGUudG9QPWZ1bmN0aW9uIHRvUCgpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIHppbnY9dGhpcy56LnJlZEludm0oKTt2YXIgemludjI9emludi5yZWRTcXIoKTt2YXIgYXg9dGhpcy54LnJlZE11bCh6aW52Mik7dmFyIGF5PXRoaXMueS5yZWRNdWwoemludjIpLnJlZE11bCh6aW52KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChheCxheSl9O0pQb2ludC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uIG5lZygpe3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpLHRoaXMueil9O0pQb2ludC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uIGFkZChwKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gcDtpZihwLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgcHoyPXAuei5yZWRTcXIoKTt2YXIgejI9dGhpcy56LnJlZFNxcigpO3ZhciB1MT10aGlzLngucmVkTXVsKHB6Mik7dmFyIHUyPXAueC5yZWRNdWwoejIpO3ZhciBzMT10aGlzLnkucmVkTXVsKHB6Mi5yZWRNdWwocC56KSk7dmFyIHMyPXAueS5yZWRNdWwoejIucmVkTXVsKHRoaXMueikpO3ZhciBoPXUxLnJlZFN1Yih1Mik7dmFyIHI9czEucmVkU3ViKHMyKTtpZihoLmNtcG4oMCk9PT0wKXtpZihyLmNtcG4oMCkhPT0wKXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk7ZWxzZSByZXR1cm4gdGhpcy5kYmwoKX12YXIgaDI9aC5yZWRTcXIoKTt2YXIgaDM9aDIucmVkTXVsKGgpO3ZhciB2PXUxLnJlZE11bChoMik7dmFyIG54PXIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO3ZhciBueT1yLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO3ZhciBuej10aGlzLnoucmVkTXVsKHAueikucmVkTXVsKGgpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCxueSxueil9O0pQb2ludC5wcm90b3R5cGUubWl4ZWRBZGQ9ZnVuY3Rpb24gbWl4ZWRBZGQocCl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHAudG9KKCk7aWYocC5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7dmFyIHoyPXRoaXMuei5yZWRTcXIoKTt2YXIgdTE9dGhpcy54O3ZhciB1Mj1wLngucmVkTXVsKHoyKTt2YXIgczE9dGhpcy55O3ZhciBzMj1wLnkucmVkTXVsKHoyKS5yZWRNdWwodGhpcy56KTt2YXIgaD11MS5yZWRTdWIodTIpO3ZhciByPXMxLnJlZFN1YihzMik7aWYoaC5jbXBuKDApPT09MCl7aWYoci5jbXBuKDApIT09MClyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwpO2Vsc2UgcmV0dXJuIHRoaXMuZGJsKCl9dmFyIGgyPWgucmVkU3FyKCk7dmFyIGgzPWgyLnJlZE11bChoKTt2YXIgdj11MS5yZWRNdWwoaDIpO3ZhciBueD1yLnJlZFNxcigpLnJlZElBZGQoaDMpLnJlZElTdWIodikucmVkSVN1Yih2KTt2YXIgbnk9ci5yZWRNdWwodi5yZWRJU3ViKG54KSkucmVkSVN1YihzMS5yZWRNdWwoaDMpKTt2YXIgbno9dGhpcy56LnJlZE11bChoKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsbnksbnopfTtKUG9pbnQucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24gZGJscChwb3cpe2lmKHBvdz09PTApcmV0dXJuIHRoaXM7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7aWYoIXBvdylyZXR1cm4gdGhpcy5kYmwoKTt2YXIgaTtpZih0aGlzLmN1cnZlLnplcm9BfHx0aGlzLmN1cnZlLnRocmVlQSl7dmFyIHI9dGhpcztmb3IoaT0wO2k8cG93O2krKylyPXIuZGJsKCk7cmV0dXJuIHJ9dmFyIGE9dGhpcy5jdXJ2ZS5hO3ZhciB0aW52PXRoaXMuY3VydmUudGludjt2YXIgang9dGhpcy54O3ZhciBqeT10aGlzLnk7dmFyIGp6PXRoaXMuejt2YXIgano0PWp6LnJlZFNxcigpLnJlZFNxcigpO3ZhciBqeWQ9ankucmVkQWRkKGp5KTtmb3IoaT0wO2k8cG93O2krKyl7dmFyIGp4Mj1qeC5yZWRTcXIoKTt2YXIganlkMj1qeWQucmVkU3FyKCk7dmFyIGp5ZDQ9anlkMi5yZWRTcXIoKTt2YXIgYz1qeDIucmVkQWRkKGp4MikucmVkSUFkZChqeDIpLnJlZElBZGQoYS5yZWRNdWwoano0KSk7dmFyIHQxPWp4LnJlZE11bChqeWQyKTt2YXIgbng9Yy5yZWRTcXIoKS5yZWRJU3ViKHQxLnJlZEFkZCh0MSkpO3ZhciB0Mj10MS5yZWRJU3ViKG54KTt2YXIgZG55PWMucmVkTXVsKHQyKTtkbnk9ZG55LnJlZElBZGQoZG55KS5yZWRJU3ViKGp5ZDQpO3ZhciBuej1qeWQucmVkTXVsKGp6KTtpZihpKzE8cG93KWp6ND1qejQucmVkTXVsKGp5ZDQpO2p4PW54O2p6PW56O2p5ZD1kbnl9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGp4LGp5ZC5yZWRNdWwodGludiksanopfTtKUG9pbnQucHJvdG90eXBlLmRibD1mdW5jdGlvbiBkYmwoKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpcztpZih0aGlzLmN1cnZlLnplcm9BKXJldHVybiB0aGlzLl96ZXJvRGJsKCk7ZWxzZSBpZih0aGlzLmN1cnZlLnRocmVlQSlyZXR1cm4gdGhpcy5fdGhyZWVEYmwoKTtlbHNlIHJldHVybiB0aGlzLl9kYmwoKX07SlBvaW50LnByb3RvdHlwZS5femVyb0RibD1mdW5jdGlvbiBfemVyb0RibCgpe3ZhciBueDt2YXIgbnk7dmFyIG56O2lmKHRoaXMuek9uZSl7dmFyIHh4PXRoaXMueC5yZWRTcXIoKTt2YXIgeXk9dGhpcy55LnJlZFNxcigpO3ZhciB5eXl5PXl5LnJlZFNxcigpO3ZhciBzPXRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7cz1zLnJlZElBZGQocyk7dmFyIG09eHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KTt2YXIgdD1tLnJlZFNxcigpLnJlZElTdWIocykucmVkSVN1YihzKTt2YXIgeXl5eTg9eXl5eS5yZWRJQWRkKHl5eXkpO3l5eXk4PXl5eXk4LnJlZElBZGQoeXl5eTgpO3l5eXk4PXl5eXk4LnJlZElBZGQoeXl5eTgpO254PXQ7bnk9bS5yZWRNdWwocy5yZWRJU3ViKHQpKS5yZWRJU3ViKHl5eXk4KTtuej10aGlzLnkucmVkQWRkKHRoaXMueSl9ZWxzZXt2YXIgYT10aGlzLngucmVkU3FyKCk7dmFyIGI9dGhpcy55LnJlZFNxcigpO3ZhciBjPWIucmVkU3FyKCk7dmFyIGQ9dGhpcy54LnJlZEFkZChiKS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYyk7ZD1kLnJlZElBZGQoZCk7dmFyIGU9YS5yZWRBZGQoYSkucmVkSUFkZChhKTt2YXIgZj1lLnJlZFNxcigpO3ZhciBjOD1jLnJlZElBZGQoYyk7Yzg9YzgucmVkSUFkZChjOCk7Yzg9YzgucmVkSUFkZChjOCk7bng9Zi5yZWRJU3ViKGQpLnJlZElTdWIoZCk7bnk9ZS5yZWRNdWwoZC5yZWRJU3ViKG54KSkucmVkSVN1YihjOCk7bno9dGhpcy55LnJlZE11bCh0aGlzLnopO256PW56LnJlZElBZGQobnopfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCxueSxueil9O0pQb2ludC5wcm90b3R5cGUuX3RocmVlRGJsPWZ1bmN0aW9uIF90aHJlZURibCgpe3ZhciBueDt2YXIgbnk7dmFyIG56O2lmKHRoaXMuek9uZSl7dmFyIHh4PXRoaXMueC5yZWRTcXIoKTt2YXIgeXk9dGhpcy55LnJlZFNxcigpO3ZhciB5eXl5PXl5LnJlZFNxcigpO3ZhciBzPXRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7cz1zLnJlZElBZGQocyk7dmFyIG09eHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KS5yZWRJQWRkKHRoaXMuY3VydmUuYSk7dmFyIHQ9bS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7bng9dDt2YXIgeXl5eTg9eXl5eS5yZWRJQWRkKHl5eXkpO3l5eXk4PXl5eXk4LnJlZElBZGQoeXl5eTgpO3l5eXk4PXl5eXk4LnJlZElBZGQoeXl5eTgpO255PW0ucmVkTXVsKHMucmVkSVN1Yih0KSkucmVkSVN1Yih5eXl5OCk7bno9dGhpcy55LnJlZEFkZCh0aGlzLnkpfWVsc2V7dmFyIGRlbHRhPXRoaXMuei5yZWRTcXIoKTt2YXIgZ2FtbWE9dGhpcy55LnJlZFNxcigpO3ZhciBiZXRhPXRoaXMueC5yZWRNdWwoZ2FtbWEpO3ZhciBhbHBoYT10aGlzLngucmVkU3ViKGRlbHRhKS5yZWRNdWwodGhpcy54LnJlZEFkZChkZWx0YSkpO2FscGhhPWFscGhhLnJlZEFkZChhbHBoYSkucmVkSUFkZChhbHBoYSk7dmFyIGJldGE0PWJldGEucmVkSUFkZChiZXRhKTtiZXRhND1iZXRhNC5yZWRJQWRkKGJldGE0KTt2YXIgYmV0YTg9YmV0YTQucmVkQWRkKGJldGE0KTtueD1hbHBoYS5yZWRTcXIoKS5yZWRJU3ViKGJldGE4KTtuej10aGlzLnkucmVkQWRkKHRoaXMueikucmVkU3FyKCkucmVkSVN1YihnYW1tYSkucmVkSVN1YihkZWx0YSk7dmFyIGdnYW1tYTg9Z2FtbWEucmVkU3FyKCk7Z2dhbW1hOD1nZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7Z2dhbW1hOD1nZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7Z2dhbW1hOD1nZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7bnk9YWxwaGEucmVkTXVsKGJldGE0LnJlZElTdWIobngpKS5yZWRJU3ViKGdnYW1tYTgpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCxueSxueil9O0pQb2ludC5wcm90b3R5cGUuX2RibD1mdW5jdGlvbiBfZGJsKCl7dmFyIGE9dGhpcy5jdXJ2ZS5hO3ZhciBqeD10aGlzLng7dmFyIGp5PXRoaXMueTt2YXIgano9dGhpcy56O3ZhciBqejQ9anoucmVkU3FyKCkucmVkU3FyKCk7dmFyIGp4Mj1qeC5yZWRTcXIoKTt2YXIgankyPWp5LnJlZFNxcigpO3ZhciBjPWp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTt2YXIganhkND1qeC5yZWRBZGQoangpO2p4ZDQ9anhkNC5yZWRJQWRkKGp4ZDQpO3ZhciB0MT1qeGQ0LnJlZE11bChqeTIpO3ZhciBueD1jLnJlZFNxcigpLnJlZElTdWIodDEucmVkQWRkKHQxKSk7dmFyIHQyPXQxLnJlZElTdWIobngpO3ZhciBqeWQ4PWp5Mi5yZWRTcXIoKTtqeWQ4PWp5ZDgucmVkSUFkZChqeWQ4KTtqeWQ4PWp5ZDgucmVkSUFkZChqeWQ4KTtqeWQ4PWp5ZDgucmVkSUFkZChqeWQ4KTt2YXIgbnk9Yy5yZWRNdWwodDIpLnJlZElTdWIoanlkOCk7dmFyIG56PWp5LnJlZEFkZChqeSkucmVkTXVsKGp6KTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsbnksbnopfTtKUG9pbnQucHJvdG90eXBlLnRycGw9ZnVuY3Rpb24gdHJwbCgpe2lmKCF0aGlzLmN1cnZlLnplcm9BKXJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTt2YXIgeHg9dGhpcy54LnJlZFNxcigpO3ZhciB5eT10aGlzLnkucmVkU3FyKCk7dmFyIHp6PXRoaXMuei5yZWRTcXIoKTt2YXIgeXl5eT15eS5yZWRTcXIoKTt2YXIgbT14eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpO3ZhciBtbT1tLnJlZFNxcigpO3ZhciBlPXRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7ZT1lLnJlZElBZGQoZSk7ZT1lLnJlZEFkZChlKS5yZWRJQWRkKGUpO2U9ZS5yZWRJU3ViKG1tKTt2YXIgZWU9ZS5yZWRTcXIoKTt2YXIgdD15eXl5LnJlZElBZGQoeXl5eSk7dD10LnJlZElBZGQodCk7dD10LnJlZElBZGQodCk7dD10LnJlZElBZGQodCk7dmFyIHU9bS5yZWRJQWRkKGUpLnJlZFNxcigpLnJlZElTdWIobW0pLnJlZElTdWIoZWUpLnJlZElTdWIodCk7dmFyIHl5dTQ9eXkucmVkTXVsKHUpO3l5dTQ9eXl1NC5yZWRJQWRkKHl5dTQpO3l5dTQ9eXl1NC5yZWRJQWRkKHl5dTQpO3ZhciBueD10aGlzLngucmVkTXVsKGVlKS5yZWRJU3ViKHl5dTQpO254PW54LnJlZElBZGQobngpO254PW54LnJlZElBZGQobngpO3ZhciBueT10aGlzLnkucmVkTXVsKHUucmVkTXVsKHQucmVkSVN1Yih1KSkucmVkSVN1YihlLnJlZE11bChlZSkpKTtueT1ueS5yZWRJQWRkKG55KTtueT1ueS5yZWRJQWRkKG55KTtueT1ueS5yZWRJQWRkKG55KTt2YXIgbno9dGhpcy56LnJlZEFkZChlKS5yZWRTcXIoKS5yZWRJU3ViKHp6KS5yZWRJU3ViKGVlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsbnksbnopfTtKUG9pbnQucHJvdG90eXBlLm11bD1mdW5jdGlvbiBtdWwoayxrYmFzZSl7az1uZXcgYm4kMShrLGtiYXNlKTtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLGspfTtKUG9pbnQucHJvdG90eXBlLmVxPWZ1bmN0aW9uIGVxKHApe2lmKHAudHlwZT09PSJhZmZpbmUiKXJldHVybiB0aGlzLmVxKHAudG9KKCkpO2lmKHRoaXM9PT1wKXJldHVybiB0cnVlO3ZhciB6Mj10aGlzLnoucmVkU3FyKCk7dmFyIHB6Mj1wLnoucmVkU3FyKCk7aWYodGhpcy54LnJlZE11bChwejIpLnJlZElTdWIocC54LnJlZE11bCh6MikpLmNtcG4oMCkhPT0wKXJldHVybiBmYWxzZTt2YXIgejM9ejIucmVkTXVsKHRoaXMueik7dmFyIHB6Mz1wejIucmVkTXVsKHAueik7cmV0dXJuIHRoaXMueS5yZWRNdWwocHozKS5yZWRJU3ViKHAueS5yZWRNdWwoejMpKS5jbXBuKDApPT09MH07SlBvaW50LnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rpb24gZXFYVG9QKHgpe3ZhciB6cz10aGlzLnoucmVkU3FyKCk7dmFyIHJ4PXgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh6cyk7aWYodGhpcy54LmNtcChyeCk9PT0wKXJldHVybiB0cnVlO3ZhciB4Yz14LmNsb25lKCk7dmFyIHQ9dGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh6cyk7Zm9yKDs7KXt4Yy5pYWRkKHRoaXMuY3VydmUubik7aWYoeGMuY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuIGZhbHNlO3J4LnJlZElBZGQodCk7aWYodGhpcy54LmNtcChyeCk9PT0wKXJldHVybiB0cnVlfX07SlBvaW50LnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uIGluc3BlY3QoKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4iPEVDIEpQb2ludCBJbmZpbml0eT4iO3JldHVybiI8RUMgSlBvaW50IHg6ICIrdGhpcy54LnRvU3RyaW5nKDE2LDIpKyIgeTogIit0aGlzLnkudG9TdHJpbmcoMTYsMikrIiB6OiAiK3RoaXMuei50b1N0cmluZygxNiwyKSsiPiJ9O0pQb2ludC5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbiBpc0luZmluaXR5KCl7cmV0dXJuIHRoaXMuei5jbXBuKDApPT09MH07dmFyIGN1cnZlXzE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgY3VydmU9ZXhwb3J0cztjdXJ2ZS5iYXNlPWJhc2U7Y3VydmUuc2hvcnQ9c2hvcnRfMTtjdXJ2ZS5tb250PW51bGw7Y3VydmUuZWR3YXJkcz1udWxsfSk7InVzZSBzdHJpY3QiO3ZhciBpbmhlcml0c18xPWluaGVyaXRzX2Jyb3dzZXI7ZnVuY3Rpb24gaXNTdXJyb2dhdGVQYWlyKG1zZyxpKXtpZigobXNnLmNoYXJDb2RlQXQoaSkmNjQ1MTIpIT09NTUyOTYpe3JldHVybiBmYWxzZX1pZihpPDB8fGkrMT49bXNnLmxlbmd0aCl7cmV0dXJuIGZhbHNlfXJldHVybihtc2cuY2hhckNvZGVBdChpKzEpJjY0NTEyKT09PTU2MzIwfWZ1bmN0aW9uIHRvQXJyYXkobXNnLGVuYyl7aWYoQXJyYXkuaXNBcnJheShtc2cpKXJldHVybiBtc2cuc2xpY2UoKTtpZighbXNnKXJldHVybltdO3ZhciByZXM9W107aWYodHlwZW9mIG1zZz09PSJzdHJpbmciKXtpZighZW5jKXt2YXIgcD0wO2Zvcih2YXIgaT0wO2k8bXNnLmxlbmd0aDtpKyspe3ZhciBjPW1zZy5jaGFyQ29kZUF0KGkpO2lmKGM8MTI4KXtyZXNbcCsrXT1jfWVsc2UgaWYoYzwyMDQ4KXtyZXNbcCsrXT1jPj42fDE5MjtyZXNbcCsrXT1jJjYzfDEyOH1lbHNlIGlmKGlzU3Vycm9nYXRlUGFpcihtc2csaSkpe2M9NjU1MzYrKChjJjEwMjMpPDwxMCkrKG1zZy5jaGFyQ29kZUF0KCsraSkmMTAyMyk7cmVzW3ArK109Yz4+MTh8MjQwO3Jlc1twKytdPWM+PjEyJjYzfDEyODtyZXNbcCsrXT1jPj42JjYzfDEyODtyZXNbcCsrXT1jJjYzfDEyOH1lbHNle3Jlc1twKytdPWM+PjEyfDIyNDtyZXNbcCsrXT1jPj42JjYzfDEyODtyZXNbcCsrXT1jJjYzfDEyOH19fWVsc2UgaWYoZW5jPT09ImhleCIpe21zZz1tc2cucmVwbGFjZSgvW15hLXowLTldKy9naSwiIik7aWYobXNnLmxlbmd0aCUyIT09MCltc2c9IjAiK21zZztmb3IoaT0wO2k8bXNnLmxlbmd0aDtpKz0yKXJlcy5wdXNoKHBhcnNlSW50KG1zZ1tpXSttc2dbaSsxXSwxNikpfX1lbHNle2ZvcihpPTA7aTxtc2cubGVuZ3RoO2krKylyZXNbaV09bXNnW2ldfDB9cmV0dXJuIHJlc312YXIgdG9BcnJheV8xPXRvQXJyYXk7ZnVuY3Rpb24gdG9IZXgobXNnKXt2YXIgcmVzPSIiO2Zvcih2YXIgaT0wO2k8bXNnLmxlbmd0aDtpKyspcmVzKz16ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtyZXR1cm4gcmVzfXZhciB0b0hleF8xPXRvSGV4O2Z1bmN0aW9uIGh0b25sKHcpe3ZhciByZXM9dz4+PjI0fHc+Pj44JjY1MjgwfHc8PDgmMTY3MTE2ODB8KHcmMjU1KTw8MjQ7cmV0dXJuIHJlcz4+PjB9dmFyIGh0b25sXzE9aHRvbmw7ZnVuY3Rpb24gdG9IZXgzMihtc2csZW5kaWFuKXt2YXIgcmVzPSIiO2Zvcih2YXIgaT0wO2k8bXNnLmxlbmd0aDtpKyspe3ZhciB3PW1zZ1tpXTtpZihlbmRpYW49PT0ibGl0dGxlIil3PWh0b25sKHcpO3Jlcys9emVybzgody50b1N0cmluZygxNikpfXJldHVybiByZXN9dmFyIHRvSGV4MzJfMT10b0hleDMyO2Z1bmN0aW9uIHplcm8yKHdvcmQpe2lmKHdvcmQubGVuZ3RoPT09MSlyZXR1cm4iMCIrd29yZDtlbHNlIHJldHVybiB3b3JkfXZhciB6ZXJvMl8xPXplcm8yO2Z1bmN0aW9uIHplcm84KHdvcmQpe2lmKHdvcmQubGVuZ3RoPT09NylyZXR1cm4iMCIrd29yZDtlbHNlIGlmKHdvcmQubGVuZ3RoPT09NilyZXR1cm4iMDAiK3dvcmQ7ZWxzZSBpZih3b3JkLmxlbmd0aD09PTUpcmV0dXJuIjAwMCIrd29yZDtlbHNlIGlmKHdvcmQubGVuZ3RoPT09NClyZXR1cm4iMDAwMCIrd29yZDtlbHNlIGlmKHdvcmQubGVuZ3RoPT09MylyZXR1cm4iMDAwMDAiK3dvcmQ7ZWxzZSBpZih3b3JkLmxlbmd0aD09PTIpcmV0dXJuIjAwMDAwMCIrd29yZDtlbHNlIGlmKHdvcmQubGVuZ3RoPT09MSlyZXR1cm4iMDAwMDAwMCIrd29yZDtlbHNlIHJldHVybiB3b3JkfXZhciB6ZXJvOF8xPXplcm84O2Z1bmN0aW9uIGpvaW4zMihtc2csc3RhcnQsZW5kLGVuZGlhbil7dmFyIGxlbj1lbmQtc3RhcnQ7bWluaW1hbGlzdGljQXNzZXJ0KGxlbiU0PT09MCk7dmFyIHJlcz1uZXcgQXJyYXkobGVuLzQpO2Zvcih2YXIgaT0wLGs9c3RhcnQ7aTxyZXMubGVuZ3RoO2krKyxrKz00KXt2YXIgdztpZihlbmRpYW49PT0iYmlnIil3PW1zZ1trXTw8MjR8bXNnW2srMV08PDE2fG1zZ1trKzJdPDw4fG1zZ1trKzNdO2Vsc2Ugdz1tc2dbayszXTw8MjR8bXNnW2srMl08PDE2fG1zZ1trKzFdPDw4fG1zZ1trXTtyZXNbaV09dz4+PjB9cmV0dXJuIHJlc312YXIgam9pbjMyXzE9am9pbjMyO2Z1bmN0aW9uIHNwbGl0MzIobXNnLGVuZGlhbil7dmFyIHJlcz1uZXcgQXJyYXkobXNnLmxlbmd0aCo0KTtmb3IodmFyIGk9MCxrPTA7aTxtc2cubGVuZ3RoO2krKyxrKz00KXt2YXIgbT1tc2dbaV07aWYoZW5kaWFuPT09ImJpZyIpe3Jlc1trXT1tPj4+MjQ7cmVzW2srMV09bT4+PjE2JjI1NTtyZXNbaysyXT1tPj4+OCYyNTU7cmVzW2srM109bSYyNTV9ZWxzZXtyZXNbayszXT1tPj4+MjQ7cmVzW2srMl09bT4+PjE2JjI1NTtyZXNbaysxXT1tPj4+OCYyNTU7cmVzW2tdPW0mMjU1fX1yZXR1cm4gcmVzfXZhciBzcGxpdDMyXzE9c3BsaXQzMjtmdW5jdGlvbiByb3RyMzIodyxiKXtyZXR1cm4gdz4+PmJ8dzw8MzItYn12YXIgcm90cjMyXzE9cm90cjMyO2Z1bmN0aW9uIHJvdGwzMih3LGIpe3JldHVybiB3PDxifHc+Pj4zMi1ifXZhciByb3RsMzJfMT1yb3RsMzI7ZnVuY3Rpb24gc3VtMzIoYSxiKXtyZXR1cm4gYStiPj4+MH12YXIgc3VtMzJfMT1zdW0zMjtmdW5jdGlvbiBzdW0zMl8zKGEsYixjKXtyZXR1cm4gYStiK2M+Pj4wfXZhciBzdW0zMl8zXzE9c3VtMzJfMztmdW5jdGlvbiBzdW0zMl80KGEsYixjLGQpe3JldHVybiBhK2IrYytkPj4+MH12YXIgc3VtMzJfNF8xPXN1bTMyXzQ7ZnVuY3Rpb24gc3VtMzJfNShhLGIsYyxkLGUpe3JldHVybiBhK2IrYytkK2U+Pj4wfXZhciBzdW0zMl81XzE9c3VtMzJfNTtmdW5jdGlvbiBzdW02NChidWYscG9zLGFoLGFsKXt2YXIgYmg9YnVmW3Bvc107dmFyIGJsPWJ1Zltwb3MrMV07dmFyIGxvPWFsK2JsPj4+MDt2YXIgaGk9KGxvPGFsPzE6MCkrYWgrYmg7YnVmW3Bvc109aGk+Pj4wO2J1Zltwb3MrMV09bG99dmFyIHN1bTY0XzE9c3VtNjQ7ZnVuY3Rpb24gc3VtNjRfaGkoYWgsYWwsYmgsYmwpe3ZhciBsbz1hbCtibD4+PjA7dmFyIGhpPShsbzxhbD8xOjApK2FoK2JoO3JldHVybiBoaT4+PjB9dmFyIHN1bTY0X2hpXzE9c3VtNjRfaGk7ZnVuY3Rpb24gc3VtNjRfbG8oYWgsYWwsYmgsYmwpe3ZhciBsbz1hbCtibDtyZXR1cm4gbG8+Pj4wfXZhciBzdW02NF9sb18xPXN1bTY0X2xvO2Z1bmN0aW9uIHN1bTY0XzRfaGkoYWgsYWwsYmgsYmwsY2gsY2wsZGgsZGwpe3ZhciBjYXJyeT0wO3ZhciBsbz1hbDtsbz1sbytibD4+PjA7Y2FycnkrPWxvPGFsPzE6MDtsbz1sbytjbD4+PjA7Y2FycnkrPWxvPGNsPzE6MDtsbz1sbytkbD4+PjA7Y2FycnkrPWxvPGRsPzE6MDt2YXIgaGk9YWgrYmgrY2grZGgrY2Fycnk7cmV0dXJuIGhpPj4+MH12YXIgc3VtNjRfNF9oaV8xPXN1bTY0XzRfaGk7ZnVuY3Rpb24gc3VtNjRfNF9sbyhhaCxhbCxiaCxibCxjaCxjbCxkaCxkbCl7dmFyIGxvPWFsK2JsK2NsK2RsO3JldHVybiBsbz4+PjB9dmFyIHN1bTY0XzRfbG9fMT1zdW02NF80X2xvO2Z1bmN0aW9uIHN1bTY0XzVfaGkoYWgsYWwsYmgsYmwsY2gsY2wsZGgsZGwsZWgsZWwpe3ZhciBjYXJyeT0wO3ZhciBsbz1hbDtsbz1sbytibD4+PjA7Y2FycnkrPWxvPGFsPzE6MDtsbz1sbytjbD4+PjA7Y2FycnkrPWxvPGNsPzE6MDtsbz1sbytkbD4+PjA7Y2FycnkrPWxvPGRsPzE6MDtsbz1sbytlbD4+PjA7Y2FycnkrPWxvPGVsPzE6MDt2YXIgaGk9YWgrYmgrY2grZGgrZWgrY2Fycnk7cmV0dXJuIGhpPj4+MH12YXIgc3VtNjRfNV9oaV8xPXN1bTY0XzVfaGk7ZnVuY3Rpb24gc3VtNjRfNV9sbyhhaCxhbCxiaCxibCxjaCxjbCxkaCxkbCxlaCxlbCl7dmFyIGxvPWFsK2JsK2NsK2RsK2VsO3JldHVybiBsbz4+PjB9dmFyIHN1bTY0XzVfbG9fMT1zdW02NF81X2xvO2Z1bmN0aW9uIHJvdHI2NF9oaShhaCxhbCxudW0pe3ZhciByPWFsPDwzMi1udW18YWg+Pj5udW07cmV0dXJuIHI+Pj4wfXZhciByb3RyNjRfaGlfMT1yb3RyNjRfaGk7ZnVuY3Rpb24gcm90cjY0X2xvKGFoLGFsLG51bSl7dmFyIHI9YWg8PDMyLW51bXxhbD4+Pm51bTtyZXR1cm4gcj4+PjB9dmFyIHJvdHI2NF9sb18xPXJvdHI2NF9sbztmdW5jdGlvbiBzaHI2NF9oaShhaCxhbCxudW0pe3JldHVybiBhaD4+Pm51bX12YXIgc2hyNjRfaGlfMT1zaHI2NF9oaTtmdW5jdGlvbiBzaHI2NF9sbyhhaCxhbCxudW0pe3ZhciByPWFoPDwzMi1udW18YWw+Pj5udW07cmV0dXJuIHI+Pj4wfXZhciBzaHI2NF9sb18xPXNocjY0X2xvO3ZhciB1dGlscz17aW5oZXJpdHM6aW5oZXJpdHNfMSx0b0FycmF5OnRvQXJyYXlfMSx0b0hleDp0b0hleF8xLGh0b25sOmh0b25sXzEsdG9IZXgzMjp0b0hleDMyXzEsemVybzI6emVybzJfMSx6ZXJvODp6ZXJvOF8xLGpvaW4zMjpqb2luMzJfMSxzcGxpdDMyOnNwbGl0MzJfMSxyb3RyMzI6cm90cjMyXzEscm90bDMyOnJvdGwzMl8xLHN1bTMyOnN1bTMyXzEsc3VtMzJfMzpzdW0zMl8zXzEsc3VtMzJfNDpzdW0zMl80XzEsc3VtMzJfNTpzdW0zMl81XzEsc3VtNjQ6c3VtNjRfMSxzdW02NF9oaTpzdW02NF9oaV8xLHN1bTY0X2xvOnN1bTY0X2xvXzEsc3VtNjRfNF9oaTpzdW02NF80X2hpXzEsc3VtNjRfNF9sbzpzdW02NF80X2xvXzEsc3VtNjRfNV9oaTpzdW02NF81X2hpXzEsc3VtNjRfNV9sbzpzdW02NF81X2xvXzEscm90cjY0X2hpOnJvdHI2NF9oaV8xLHJvdHI2NF9sbzpyb3RyNjRfbG9fMSxzaHI2NF9oaTpzaHI2NF9oaV8xLHNocjY0X2xvOnNocjY0X2xvXzF9OyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCbG9ja0hhc2goKXt0aGlzLnBlbmRpbmc9bnVsbDt0aGlzLnBlbmRpbmdUb3RhbD0wO3RoaXMuYmxvY2tTaXplPXRoaXMuY29uc3RydWN0b3IuYmxvY2tTaXplO3RoaXMub3V0U2l6ZT10aGlzLmNvbnN0cnVjdG9yLm91dFNpemU7dGhpcy5obWFjU3RyZW5ndGg9dGhpcy5jb25zdHJ1Y3Rvci5obWFjU3RyZW5ndGg7dGhpcy5wYWRMZW5ndGg9dGhpcy5jb25zdHJ1Y3Rvci5wYWRMZW5ndGgvODt0aGlzLmVuZGlhbj0iYmlnIjt0aGlzLl9kZWx0YTg9dGhpcy5ibG9ja1NpemUvODt0aGlzLl9kZWx0YTMyPXRoaXMuYmxvY2tTaXplLzMyfXZhciBCbG9ja0hhc2hfMT1CbG9ja0hhc2g7QmxvY2tIYXNoLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24gdXBkYXRlKG1zZyxlbmMpe21zZz11dGlscy50b0FycmF5KG1zZyxlbmMpO2lmKCF0aGlzLnBlbmRpbmcpdGhpcy5wZW5kaW5nPW1zZztlbHNlIHRoaXMucGVuZGluZz10aGlzLnBlbmRpbmcuY29uY2F0KG1zZyk7dGhpcy5wZW5kaW5nVG90YWwrPW1zZy5sZW5ndGg7aWYodGhpcy5wZW5kaW5nLmxlbmd0aD49dGhpcy5fZGVsdGE4KXttc2c9dGhpcy5wZW5kaW5nO3ZhciByPW1zZy5sZW5ndGgldGhpcy5fZGVsdGE4O3RoaXMucGVuZGluZz1tc2cuc2xpY2UobXNnLmxlbmd0aC1yLG1zZy5sZW5ndGgpO2lmKHRoaXMucGVuZGluZy5sZW5ndGg9PT0wKXRoaXMucGVuZGluZz1udWxsO21zZz11dGlscy5qb2luMzIobXNnLDAsbXNnLmxlbmd0aC1yLHRoaXMuZW5kaWFuKTtmb3IodmFyIGk9MDtpPG1zZy5sZW5ndGg7aSs9dGhpcy5fZGVsdGEzMil0aGlzLl91cGRhdGUobXNnLGksaSt0aGlzLl9kZWx0YTMyKX1yZXR1cm4gdGhpc307QmxvY2tIYXNoLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24gZGlnZXN0KGVuYyl7dGhpcy51cGRhdGUodGhpcy5fcGFkKCkpO21pbmltYWxpc3RpY0Fzc2VydCh0aGlzLnBlbmRpbmc9PT1udWxsKTtyZXR1cm4gdGhpcy5fZGlnZXN0KGVuYyl9O0Jsb2NrSGFzaC5wcm90b3R5cGUuX3BhZD1mdW5jdGlvbiBwYWQoKXt2YXIgbGVuPXRoaXMucGVuZGluZ1RvdGFsO3ZhciBieXRlcz10aGlzLl9kZWx0YTg7dmFyIGs9Ynl0ZXMtKGxlbit0aGlzLnBhZExlbmd0aCklYnl0ZXM7dmFyIHJlcz1uZXcgQXJyYXkoayt0aGlzLnBhZExlbmd0aCk7cmVzWzBdPTEyODtmb3IodmFyIGk9MTtpPGs7aSsrKXJlc1tpXT0wO2xlbjw8PTM7aWYodGhpcy5lbmRpYW49PT0iYmlnIil7Zm9yKHZhciB0PTg7dDx0aGlzLnBhZExlbmd0aDt0KyspcmVzW2krK109MDtyZXNbaSsrXT0wO3Jlc1tpKytdPTA7cmVzW2krK109MDtyZXNbaSsrXT0wO3Jlc1tpKytdPWxlbj4+PjI0JjI1NTtyZXNbaSsrXT1sZW4+Pj4xNiYyNTU7cmVzW2krK109bGVuPj4+OCYyNTU7cmVzW2krK109bGVuJjI1NX1lbHNle3Jlc1tpKytdPWxlbiYyNTU7cmVzW2krK109bGVuPj4+OCYyNTU7cmVzW2krK109bGVuPj4+MTYmMjU1O3Jlc1tpKytdPWxlbj4+PjI0JjI1NTtyZXNbaSsrXT0wO3Jlc1tpKytdPTA7cmVzW2krK109MDtyZXNbaSsrXT0wO2Zvcih0PTg7dDx0aGlzLnBhZExlbmd0aDt0KyspcmVzW2krK109MH1yZXR1cm4gcmVzfTt2YXIgY29tbW9uPXtCbG9ja0hhc2g6QmxvY2tIYXNoXzF9OyJ1c2Ugc3RyaWN0Ijt2YXIgcm90cjMyJDE9dXRpbHMucm90cjMyO2Z1bmN0aW9uIGZ0XzEocyx4LHkseil7aWYocz09PTApcmV0dXJuIGNoMzIoeCx5LHopO2lmKHM9PT0xfHxzPT09MylyZXR1cm4gcDMyKHgseSx6KTtpZihzPT09MilyZXR1cm4gbWFqMzIoeCx5LHopfXZhciBmdF8xXzE9ZnRfMTtmdW5jdGlvbiBjaDMyKHgseSx6KXtyZXR1cm4geCZ5Xn54Jnp9dmFyIGNoMzJfMT1jaDMyO2Z1bmN0aW9uIG1hajMyKHgseSx6KXtyZXR1cm4geCZ5Xngmel55Jnp9dmFyIG1hajMyXzE9bWFqMzI7ZnVuY3Rpb24gcDMyKHgseSx6KXtyZXR1cm4geF55Xnp9dmFyIHAzMl8xPXAzMjtmdW5jdGlvbiBzMF8yNTYoeCl7cmV0dXJuIHJvdHIzMiQxKHgsMilecm90cjMyJDEoeCwxMylecm90cjMyJDEoeCwyMil9dmFyIHMwXzI1Nl8xPXMwXzI1NjtmdW5jdGlvbiBzMV8yNTYoeCl7cmV0dXJuIHJvdHIzMiQxKHgsNilecm90cjMyJDEoeCwxMSlecm90cjMyJDEoeCwyNSl9dmFyIHMxXzI1Nl8xPXMxXzI1NjtmdW5jdGlvbiBnMF8yNTYoeCl7cmV0dXJuIHJvdHIzMiQxKHgsNylecm90cjMyJDEoeCwxOCleeD4+PjN9dmFyIGcwXzI1Nl8xPWcwXzI1NjtmdW5jdGlvbiBnMV8yNTYoeCl7cmV0dXJuIHJvdHIzMiQxKHgsMTcpXnJvdHIzMiQxKHgsMTkpXng+Pj4xMH12YXIgZzFfMjU2XzE9ZzFfMjU2O3ZhciBjb21tb24kMT17ZnRfMTpmdF8xXzEsY2gzMjpjaDMyXzEsbWFqMzI6bWFqMzJfMSxwMzI6cDMyXzEsczBfMjU2OnMwXzI1Nl8xLHMxXzI1NjpzMV8yNTZfMSxnMF8yNTY6ZzBfMjU2XzEsZzFfMjU2OmcxXzI1Nl8xfTsidXNlIHN0cmljdCI7dmFyIHJvdGwzMiQxPXV0aWxzLnJvdGwzMjt2YXIgc3VtMzIkMT11dGlscy5zdW0zMjt2YXIgc3VtMzJfNSQxPXV0aWxzLnN1bTMyXzU7dmFyIGZ0XzEkMT1jb21tb24kMS5mdF8xO3ZhciBCbG9ja0hhc2gkMT1jb21tb24uQmxvY2tIYXNoO3ZhciBzaGExX0s9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4LDMzOTU0Njk3ODJdO2Z1bmN0aW9uIFNIQTEoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBTSEExKSlyZXR1cm4gbmV3IFNIQTE7QmxvY2tIYXNoJDEuY2FsbCh0aGlzKTt0aGlzLmg9WzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXTt0aGlzLlc9bmV3IEFycmF5KDgwKX11dGlscy5pbmhlcml0cyhTSEExLEJsb2NrSGFzaCQxKTt2YXIgXzE9U0hBMTtTSEExLmJsb2NrU2l6ZT01MTI7U0hBMS5vdXRTaXplPTE2MDtTSEExLmhtYWNTdHJlbmd0aD04MDtTSEExLnBhZExlbmd0aD02NDtTSEExLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uIF91cGRhdGUobXNnLHN0YXJ0KXt2YXIgVz10aGlzLlc7Zm9yKHZhciBpPTA7aTwxNjtpKyspV1tpXT1tc2dbc3RhcnQraV07Zm9yKDtpPFcubGVuZ3RoO2krKylXW2ldPXJvdGwzMiQxKFdbaS0zXV5XW2ktOF1eV1tpLTE0XV5XW2ktMTZdLDEpO3ZhciBhPXRoaXMuaFswXTt2YXIgYj10aGlzLmhbMV07dmFyIGM9dGhpcy5oWzJdO3ZhciBkPXRoaXMuaFszXTt2YXIgZT10aGlzLmhbNF07Zm9yKGk9MDtpPFcubGVuZ3RoO2krKyl7dmFyIHM9fn4oaS8yMCk7dmFyIHQ9c3VtMzJfNSQxKHJvdGwzMiQxKGEsNSksZnRfMSQxKHMsYixjLGQpLGUsV1tpXSxzaGExX0tbc10pO2U9ZDtkPWM7Yz1yb3RsMzIkMShiLDMwKTtiPWE7YT10fXRoaXMuaFswXT1zdW0zMiQxKHRoaXMuaFswXSxhKTt0aGlzLmhbMV09c3VtMzIkMSh0aGlzLmhbMV0sYik7dGhpcy5oWzJdPXN1bTMyJDEodGhpcy5oWzJdLGMpO3RoaXMuaFszXT1zdW0zMiQxKHRoaXMuaFszXSxkKTt0aGlzLmhbNF09c3VtMzIkMSh0aGlzLmhbNF0sZSl9O1NIQTEucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24gZGlnZXN0KGVuYyl7aWYoZW5jPT09ImhleCIpcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCJiaWciKTtlbHNlIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwiYmlnIil9OyJ1c2Ugc3RyaWN0Ijt2YXIgc3VtMzIkMj11dGlscy5zdW0zMjt2YXIgc3VtMzJfNCQxPXV0aWxzLnN1bTMyXzQ7dmFyIHN1bTMyXzUkMj11dGlscy5zdW0zMl81O3ZhciBjaDMyJDE9Y29tbW9uJDEuY2gzMjt2YXIgbWFqMzIkMT1jb21tb24kMS5tYWozMjt2YXIgczBfMjU2JDE9Y29tbW9uJDEuczBfMjU2O3ZhciBzMV8yNTYkMT1jb21tb24kMS5zMV8yNTY7dmFyIGcwXzI1NiQxPWNvbW1vbiQxLmcwXzI1Njt2YXIgZzFfMjU2JDE9Y29tbW9uJDEuZzFfMjU2O3ZhciBCbG9ja0hhc2gkMj1jb21tb24uQmxvY2tIYXNoO3ZhciBzaGEyNTZfSz1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtmdW5jdGlvbiBTSEEyNTYoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBTSEEyNTYpKXJldHVybiBuZXcgU0hBMjU2O0Jsb2NrSGFzaCQyLmNhbGwodGhpcyk7dGhpcy5oPVsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV07dGhpcy5rPXNoYTI1Nl9LO3RoaXMuVz1uZXcgQXJyYXkoNjQpfXV0aWxzLmluaGVyaXRzKFNIQTI1NixCbG9ja0hhc2gkMik7dmFyIF8yNTY9U0hBMjU2O1NIQTI1Ni5ibG9ja1NpemU9NTEyO1NIQTI1Ni5vdXRTaXplPTI1NjtTSEEyNTYuaG1hY1N0cmVuZ3RoPTE5MjtTSEEyNTYucGFkTGVuZ3RoPTY0O1NIQTI1Ni5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbiBfdXBkYXRlKG1zZyxzdGFydCl7dmFyIFc9dGhpcy5XO2Zvcih2YXIgaT0wO2k8MTY7aSsrKVdbaV09bXNnW3N0YXJ0K2ldO2Zvcig7aTxXLmxlbmd0aDtpKyspV1tpXT1zdW0zMl80JDEoZzFfMjU2JDEoV1tpLTJdKSxXW2ktN10sZzBfMjU2JDEoV1tpLTE1XSksV1tpLTE2XSk7dmFyIGE9dGhpcy5oWzBdO3ZhciBiPXRoaXMuaFsxXTt2YXIgYz10aGlzLmhbMl07dmFyIGQ9dGhpcy5oWzNdO3ZhciBlPXRoaXMuaFs0XTt2YXIgZj10aGlzLmhbNV07dmFyIGc9dGhpcy5oWzZdO3ZhciBoPXRoaXMuaFs3XTttaW5pbWFsaXN0aWNBc3NlcnQodGhpcy5rLmxlbmd0aD09PVcubGVuZ3RoKTtmb3IoaT0wO2k8Vy5sZW5ndGg7aSsrKXt2YXIgVDE9c3VtMzJfNSQyKGgsczFfMjU2JDEoZSksY2gzMiQxKGUsZixnKSx0aGlzLmtbaV0sV1tpXSk7dmFyIFQyPXN1bTMyJDIoczBfMjU2JDEoYSksbWFqMzIkMShhLGIsYykpO2g9ZztnPWY7Zj1lO2U9c3VtMzIkMihkLFQxKTtkPWM7Yz1iO2I9YTthPXN1bTMyJDIoVDEsVDIpfXRoaXMuaFswXT1zdW0zMiQyKHRoaXMuaFswXSxhKTt0aGlzLmhbMV09c3VtMzIkMih0aGlzLmhbMV0sYik7dGhpcy5oWzJdPXN1bTMyJDIodGhpcy5oWzJdLGMpO3RoaXMuaFszXT1zdW0zMiQyKHRoaXMuaFszXSxkKTt0aGlzLmhbNF09c3VtMzIkMih0aGlzLmhbNF0sZSk7dGhpcy5oWzVdPXN1bTMyJDIodGhpcy5oWzVdLGYpO3RoaXMuaFs2XT1zdW0zMiQyKHRoaXMuaFs2XSxnKTt0aGlzLmhbN109c3VtMzIkMih0aGlzLmhbN10saCl9O1NIQTI1Ni5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbiBkaWdlc3QoZW5jKXtpZihlbmM9PT0iaGV4IilyZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsImJpZyIpO2Vsc2UgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCJiaWciKX07InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFNIQTIyNCgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFNIQTIyNCkpcmV0dXJuIG5ldyBTSEEyMjQ7XzI1Ni5jYWxsKHRoaXMpO3RoaXMuaD1bMzIzODM3MTAzMiw5MTQxNTA2NjMsODEyNzAyOTk5LDQxNDQ5MTI2OTcsNDI5MDc3NTg1NywxNzUwNjAzMDI1LDE2OTQwNzY4MzksMzIwNDA3NTQyOF19dXRpbHMuaW5oZXJpdHMoU0hBMjI0LF8yNTYpO3ZhciBfMjI0PVNIQTIyNDtTSEEyMjQuYmxvY2tTaXplPTUxMjtTSEEyMjQub3V0U2l6ZT0yMjQ7U0hBMjI0LmhtYWNTdHJlbmd0aD0xOTI7U0hBMjI0LnBhZExlbmd0aD02NDtTSEEyMjQucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24gZGlnZXN0KGVuYyl7aWYoZW5jPT09ImhleCIpcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsNyksImJpZyIpO2Vsc2UgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsNyksImJpZyIpfTsidXNlIHN0cmljdCI7dmFyIHJvdHI2NF9oaSQxPXV0aWxzLnJvdHI2NF9oaTt2YXIgcm90cjY0X2xvJDE9dXRpbHMucm90cjY0X2xvO3ZhciBzaHI2NF9oaSQxPXV0aWxzLnNocjY0X2hpO3ZhciBzaHI2NF9sbyQxPXV0aWxzLnNocjY0X2xvO3ZhciBzdW02NCQxPXV0aWxzLnN1bTY0O3ZhciBzdW02NF9oaSQxPXV0aWxzLnN1bTY0X2hpO3ZhciBzdW02NF9sbyQxPXV0aWxzLnN1bTY0X2xvO3ZhciBzdW02NF80X2hpJDE9dXRpbHMuc3VtNjRfNF9oaTt2YXIgc3VtNjRfNF9sbyQxPXV0aWxzLnN1bTY0XzRfbG87dmFyIHN1bTY0XzVfaGkkMT11dGlscy5zdW02NF81X2hpO3ZhciBzdW02NF81X2xvJDE9dXRpbHMuc3VtNjRfNV9sbzt2YXIgQmxvY2tIYXNoJDM9Y29tbW9uLkJsb2NrSGFzaDt2YXIgc2hhNTEyX0s9WzExMTYzNTI0MDgsMzYwOTc2NzQ1OCwxODk5NDQ3NDQxLDYwMjg5MTcyNSwzMDQ5MzIzNDcxLDM5NjQ0ODQzOTksMzkyMTAwOTU3MywyMTczMjk1NTQ4LDk2MTk4NzE2Myw0MDgxNjI4NDcyLDE1MDg5NzA5OTMsMzA1MzgzNDI2NSwyNDUzNjM1NzQ4LDI5Mzc2NzE1NzksMjg3MDc2MzIyMSwzNjY0NjA5NTYwLDM2MjQzODEwODAsMjczNDg4MzM5NCwzMTA1OTg0MDEsMTE2NDk5NjU0Miw2MDcyMjUyNzgsMTMyMzYxMDc2NCwxNDI2ODgxOTg3LDM1OTAzMDQ5OTQsMTkyNTA3ODM4OCw0MDY4MTgyMzgzLDIxNjIwNzgyMDYsOTkxMzM2MTEzLDI2MTQ4ODgxMDMsNjMzODAzMzE3LDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCwzODM1MzkwNDAxLDI2NjY2MTM0NTgsNDAyMjIyNDc3NCw5NDQ3MTExMzksMjY0MzQ3MDc4LDIzNDEyNjI3NzMsNjA0ODA3NjI4LDIwMDc4MDA5MzMsNzcwMjU1OTgzLDE0OTU5OTA5MDEsMTI0OTE1MDEyMiwxODU2NDMxMjM1LDE1NTUwODE2OTIsMzE3NTIxODEzMiwxOTk2MDY0OTg2LDIxOTg5NTA4MzcsMjU1NDIyMDg4MiwzOTk5NzE5MzM5LDI4MjE4MzQzNDksNzY2Nzg0MDE2LDI5NTI5OTY4MDgsMjU2NjU5NDg3OSwzMjEwMzEzNjcxLDMyMDMzMzc5NTYsMzMzNjU3MTg5MSwxMDM0NDU3MDI2LDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSwxMTM5MjY5OTMsMzc1ODMyNjM4MywzMzgyNDE4OTUsMTY4NzE3OTM2LDY2NjMwNzIwNSwxMTg4MTc5OTY0LDc3MzUyOTkxMiwxNTQ2MDQ1NzM0LDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSwxMzk2MTgyMjkxLDI2NDM4MzM4MjMsMTY5NTE4MzcwMCwyMzQzNTI3MzkwLDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCwyMTc3MDI2MzUwLDEyMDY3NTkxNDIsMjQ1Njk1NjAzNywzNDQwNzc2MjcsMjczMDQ4NTkyMSwxMjkwODYzNDYwLDI4MjAzMDI0MTEsMzE1ODQ1NDI3MywzMjU5NzMwODAwLDM1MDU5NTI2NTcsMzM0NTc2NDc3MSwxMDYyMTcwMDgsMzUxNjA2NTgxNywzNjA2MDA4MzQ0LDM2MDAzNTI4MDQsMTQzMjcyNTc3Niw0MDk0NTcxOTA5LDE0NjcwMzE1OTQsMjc1NDIzMzQ0LDg1MTE2OTcyMCw0MzAyMjc3MzQsMzEwMDgyMzc1Miw1MDY5NDg2MTYsMTM2MzI1ODE5NSw2NTkwNjA1NTYsMzc1MDY4NTU5Myw4ODM5OTc4NzcsMzc4NTA1MDI4MCw5NTgxMzk1NzEsMzMxODMwNzQyNywxMzIyODIyMjE4LDM4MTI3MjM0MDMsMTUzNzAwMjA2MywyMDAzMDM0OTk1LDE3NDc4NzM3NzksMzYwMjAzNjg5OSwxOTU1NTYyMjIyLDE1NzU5OTAwMTIsMjAyNDEwNDgxNSwxMTI1NTkyOTI4LDIyMjc3MzA0NTIsMjcxNjkwNDMwNiwyMzYxODUyNDI0LDQ0Mjc3NjA0NCwyNDI4NDM2NDc0LDU5MzY5ODM0NCwyNzU2NzM0MTg3LDM3MzMxMTAyNDksMzIwNDAzMTQ3OSwyOTk5MzUxNTczLDMzMjkzMjUyOTgsMzgxNTkyMDQyNywzMzkxNTY5NjE0LDM5MjgzODM5MDAsMzUxNTI2NzI3MSw1NjYyODA3MTEsMzk0MDE4NzYwNiwzNDU0MDY5NTM0LDQxMTg2MzAyNzEsNDAwMDIzOTk5MiwxMTY0MTg0NzQsMTkxNDEzODU1NCwxNzQyOTI0MjEsMjczMTA1NTI3MCwyODkzODAzNTYsMzIwMzk5MzAwNiw0NjAzOTMyNjksMzIwNjIwMzE1LDY4NTQ3MTczMyw1ODc0OTY4MzYsODUyMTQyOTcxLDEwODY3OTI4NTEsMTAxNzAzNjI5OCwzNjU1NDMxMDAsMTEyNjAwMDU4MCwyNjE4Mjk3Njc2LDEyODgwMzM0NzAsMzQwOTg1NTE1OCwxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYsMTYwNzE2NzkxNSw5ODcxNjc0NjgsMTgxNjQwMjMxNiwxMjQ2MTg5NTkxXTtmdW5jdGlvbiBTSEE1MTIoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBTSEE1MTIpKXJldHVybiBuZXcgU0hBNTEyO0Jsb2NrSGFzaCQzLmNhbGwodGhpcyk7dGhpcy5oPVsxNzc5MDMzNzAzLDQwODkyMzU3MjAsMzE0NDEzNDI3NywyMjI3ODczNTk1LDEwMTM5MDQyNDIsNDI3MTE3NTcyMywyNzczNDgwNzYyLDE1OTU3NTAxMjksMTM1OTg5MzExOSwyOTE3NTY1MTM3LDI2MDA4MjI5MjQsNzI1NTExMTk5LDUyODczNDYzNSw0MjE1Mzg5NTQ3LDE1NDE0NTkyMjUsMzI3MDMzMjA5XTt0aGlzLms9c2hhNTEyX0s7dGhpcy5XPW5ldyBBcnJheSgxNjApfXV0aWxzLmluaGVyaXRzKFNIQTUxMixCbG9ja0hhc2gkMyk7dmFyIF81MTI9U0hBNTEyO1NIQTUxMi5ibG9ja1NpemU9MTAyNDtTSEE1MTIub3V0U2l6ZT01MTI7U0hBNTEyLmhtYWNTdHJlbmd0aD0xOTI7U0hBNTEyLnBhZExlbmd0aD0xMjg7U0hBNTEyLnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrPWZ1bmN0aW9uIF9wcmVwYXJlQmxvY2sobXNnLHN0YXJ0KXt2YXIgVz10aGlzLlc7Zm9yKHZhciBpPTA7aTwzMjtpKyspV1tpXT1tc2dbc3RhcnQraV07Zm9yKDtpPFcubGVuZ3RoO2krPTIpe3ZhciBjMF9oaT1nMV81MTJfaGkoV1tpLTRdLFdbaS0zXSk7dmFyIGMwX2xvPWcxXzUxMl9sbyhXW2ktNF0sV1tpLTNdKTt2YXIgYzFfaGk9V1tpLTE0XTt2YXIgYzFfbG89V1tpLTEzXTt2YXIgYzJfaGk9ZzBfNTEyX2hpKFdbaS0zMF0sV1tpLTI5XSk7dmFyIGMyX2xvPWcwXzUxMl9sbyhXW2ktMzBdLFdbaS0yOV0pO3ZhciBjM19oaT1XW2ktMzJdO3ZhciBjM19sbz1XW2ktMzFdO1dbaV09c3VtNjRfNF9oaSQxKGMwX2hpLGMwX2xvLGMxX2hpLGMxX2xvLGMyX2hpLGMyX2xvLGMzX2hpLGMzX2xvKTtXW2krMV09c3VtNjRfNF9sbyQxKGMwX2hpLGMwX2xvLGMxX2hpLGMxX2xvLGMyX2hpLGMyX2xvLGMzX2hpLGMzX2xvKX19O1NIQTUxMi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbiBfdXBkYXRlKG1zZyxzdGFydCl7dGhpcy5fcHJlcGFyZUJsb2NrKG1zZyxzdGFydCk7dmFyIFc9dGhpcy5XO3ZhciBhaD10aGlzLmhbMF07dmFyIGFsPXRoaXMuaFsxXTt2YXIgYmg9dGhpcy5oWzJdO3ZhciBibD10aGlzLmhbM107dmFyIGNoPXRoaXMuaFs0XTt2YXIgY2w9dGhpcy5oWzVdO3ZhciBkaD10aGlzLmhbNl07dmFyIGRsPXRoaXMuaFs3XTt2YXIgZWg9dGhpcy5oWzhdO3ZhciBlbD10aGlzLmhbOV07dmFyIGZoPXRoaXMuaFsxMF07dmFyIGZsPXRoaXMuaFsxMV07dmFyIGdoPXRoaXMuaFsxMl07dmFyIGdsPXRoaXMuaFsxM107dmFyIGhoPXRoaXMuaFsxNF07dmFyIGhsPXRoaXMuaFsxNV07bWluaW1hbGlzdGljQXNzZXJ0KHRoaXMuay5sZW5ndGg9PT1XLmxlbmd0aCk7Zm9yKHZhciBpPTA7aTxXLmxlbmd0aDtpKz0yKXt2YXIgYzBfaGk9aGg7dmFyIGMwX2xvPWhsO3ZhciBjMV9oaT1zMV81MTJfaGkoZWgsZWwpO3ZhciBjMV9sbz1zMV81MTJfbG8oZWgsZWwpO3ZhciBjMl9oaT1jaDY0X2hpKGVoLGVsLGZoLGZsLGdoLGdsKTt2YXIgYzJfbG89Y2g2NF9sbyhlaCxlbCxmaCxmbCxnaCxnbCk7dmFyIGMzX2hpPXRoaXMua1tpXTt2YXIgYzNfbG89dGhpcy5rW2krMV07dmFyIGM0X2hpPVdbaV07dmFyIGM0X2xvPVdbaSsxXTt2YXIgVDFfaGk9c3VtNjRfNV9oaSQxKGMwX2hpLGMwX2xvLGMxX2hpLGMxX2xvLGMyX2hpLGMyX2xvLGMzX2hpLGMzX2xvLGM0X2hpLGM0X2xvKTt2YXIgVDFfbG89c3VtNjRfNV9sbyQxKGMwX2hpLGMwX2xvLGMxX2hpLGMxX2xvLGMyX2hpLGMyX2xvLGMzX2hpLGMzX2xvLGM0X2hpLGM0X2xvKTtjMF9oaT1zMF81MTJfaGkoYWgsYWwpO2MwX2xvPXMwXzUxMl9sbyhhaCxhbCk7YzFfaGk9bWFqNjRfaGkoYWgsYWwsYmgsYmwsY2gsY2wpO2MxX2xvPW1hajY0X2xvKGFoLGFsLGJoLGJsLGNoLGNsKTt2YXIgVDJfaGk9c3VtNjRfaGkkMShjMF9oaSxjMF9sbyxjMV9oaSxjMV9sbyk7dmFyIFQyX2xvPXN1bTY0X2xvJDEoYzBfaGksYzBfbG8sYzFfaGksYzFfbG8pO2hoPWdoO2hsPWdsO2doPWZoO2dsPWZsO2ZoPWVoO2ZsPWVsO2VoPXN1bTY0X2hpJDEoZGgsZGwsVDFfaGksVDFfbG8pO2VsPXN1bTY0X2xvJDEoZGwsZGwsVDFfaGksVDFfbG8pO2RoPWNoO2RsPWNsO2NoPWJoO2NsPWJsO2JoPWFoO2JsPWFsO2FoPXN1bTY0X2hpJDEoVDFfaGksVDFfbG8sVDJfaGksVDJfbG8pO2FsPXN1bTY0X2xvJDEoVDFfaGksVDFfbG8sVDJfaGksVDJfbG8pfXN1bTY0JDEodGhpcy5oLDAsYWgsYWwpO3N1bTY0JDEodGhpcy5oLDIsYmgsYmwpO3N1bTY0JDEodGhpcy5oLDQsY2gsY2wpO3N1bTY0JDEodGhpcy5oLDYsZGgsZGwpO3N1bTY0JDEodGhpcy5oLDgsZWgsZWwpO3N1bTY0JDEodGhpcy5oLDEwLGZoLGZsKTtzdW02NCQxKHRoaXMuaCwxMixnaCxnbCk7c3VtNjQkMSh0aGlzLmgsMTQsaGgsaGwpfTtTSEE1MTIucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24gZGlnZXN0KGVuYyl7aWYoZW5jPT09ImhleCIpcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCJiaWciKTtlbHNlIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwiYmlnIil9O2Z1bmN0aW9uIGNoNjRfaGkoeGgseGwseWgseWwsemgpe3ZhciByPXhoJnloXn54aCZ6aDtpZihyPDApcis9NDI5NDk2NzI5NjtyZXR1cm4gcn1mdW5jdGlvbiBjaDY0X2xvKHhoLHhsLHloLHlsLHpoLHpsKXt2YXIgcj14bCZ5bF5+eGwmemw7aWYocjwwKXIrPTQyOTQ5NjcyOTY7cmV0dXJuIHJ9ZnVuY3Rpb24gbWFqNjRfaGkoeGgseGwseWgseWwsemgpe3ZhciByPXhoJnloXnhoJnpoXnloJnpoO2lmKHI8MClyKz00Mjk0OTY3Mjk2O3JldHVybiByfWZ1bmN0aW9uIG1hajY0X2xvKHhoLHhsLHloLHlsLHpoLHpsKXt2YXIgcj14bCZ5bF54bCZ6bF55bCZ6bDtpZihyPDApcis9NDI5NDk2NzI5NjtyZXR1cm4gcn1mdW5jdGlvbiBzMF81MTJfaGkoeGgseGwpe3ZhciBjMF9oaT1yb3RyNjRfaGkkMSh4aCx4bCwyOCk7dmFyIGMxX2hpPXJvdHI2NF9oaSQxKHhsLHhoLDIpO3ZhciBjMl9oaT1yb3RyNjRfaGkkMSh4bCx4aCw3KTt2YXIgcj1jMF9oaV5jMV9oaV5jMl9oaTtpZihyPDApcis9NDI5NDk2NzI5NjtyZXR1cm4gcn1mdW5jdGlvbiBzMF81MTJfbG8oeGgseGwpe3ZhciBjMF9sbz1yb3RyNjRfbG8kMSh4aCx4bCwyOCk7dmFyIGMxX2xvPXJvdHI2NF9sbyQxKHhsLHhoLDIpO3ZhciBjMl9sbz1yb3RyNjRfbG8kMSh4bCx4aCw3KTt2YXIgcj1jMF9sb15jMV9sb15jMl9sbztpZihyPDApcis9NDI5NDk2NzI5NjtyZXR1cm4gcn1mdW5jdGlvbiBzMV81MTJfaGkoeGgseGwpe3ZhciBjMF9oaT1yb3RyNjRfaGkkMSh4aCx4bCwxNCk7dmFyIGMxX2hpPXJvdHI2NF9oaSQxKHhoLHhsLDE4KTt2YXIgYzJfaGk9cm90cjY0X2hpJDEoeGwseGgsOSk7dmFyIHI9YzBfaGleYzFfaGleYzJfaGk7aWYocjwwKXIrPTQyOTQ5NjcyOTY7cmV0dXJuIHJ9ZnVuY3Rpb24gczFfNTEyX2xvKHhoLHhsKXt2YXIgYzBfbG89cm90cjY0X2xvJDEoeGgseGwsMTQpO3ZhciBjMV9sbz1yb3RyNjRfbG8kMSh4aCx4bCwxOCk7dmFyIGMyX2xvPXJvdHI2NF9sbyQxKHhsLHhoLDkpO3ZhciByPWMwX2xvXmMxX2xvXmMyX2xvO2lmKHI8MClyKz00Mjk0OTY3Mjk2O3JldHVybiByfWZ1bmN0aW9uIGcwXzUxMl9oaSh4aCx4bCl7dmFyIGMwX2hpPXJvdHI2NF9oaSQxKHhoLHhsLDEpO3ZhciBjMV9oaT1yb3RyNjRfaGkkMSh4aCx4bCw4KTt2YXIgYzJfaGk9c2hyNjRfaGkkMSh4aCx4bCw3KTt2YXIgcj1jMF9oaV5jMV9oaV5jMl9oaTtpZihyPDApcis9NDI5NDk2NzI5NjtyZXR1cm4gcn1mdW5jdGlvbiBnMF81MTJfbG8oeGgseGwpe3ZhciBjMF9sbz1yb3RyNjRfbG8kMSh4aCx4bCwxKTt2YXIgYzFfbG89cm90cjY0X2xvJDEoeGgseGwsOCk7dmFyIGMyX2xvPXNocjY0X2xvJDEoeGgseGwsNyk7dmFyIHI9YzBfbG9eYzFfbG9eYzJfbG87aWYocjwwKXIrPTQyOTQ5NjcyOTY7cmV0dXJuIHJ9ZnVuY3Rpb24gZzFfNTEyX2hpKHhoLHhsKXt2YXIgYzBfaGk9cm90cjY0X2hpJDEoeGgseGwsMTkpO3ZhciBjMV9oaT1yb3RyNjRfaGkkMSh4bCx4aCwyOSk7dmFyIGMyX2hpPXNocjY0X2hpJDEoeGgseGwsNik7dmFyIHI9YzBfaGleYzFfaGleYzJfaGk7aWYocjwwKXIrPTQyOTQ5NjcyOTY7cmV0dXJuIHJ9ZnVuY3Rpb24gZzFfNTEyX2xvKHhoLHhsKXt2YXIgYzBfbG89cm90cjY0X2xvJDEoeGgseGwsMTkpO3ZhciBjMV9sbz1yb3RyNjRfbG8kMSh4bCx4aCwyOSk7dmFyIGMyX2xvPXNocjY0X2xvJDEoeGgseGwsNik7dmFyIHI9YzBfbG9eYzFfbG9eYzJfbG87aWYocjwwKXIrPTQyOTQ5NjcyOTY7cmV0dXJuIHJ9InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFNIQTM4NCgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFNIQTM4NCkpcmV0dXJuIG5ldyBTSEEzODQ7XzUxMi5jYWxsKHRoaXMpO3RoaXMuaD1bMzQxODA3MDM2NSwzMjM4MzcxMDMyLDE2NTQyNzAyNTAsOTE0MTUwNjYzLDI0Mzg1MjkzNzAsODEyNzAyOTk5LDM1NTQ2MjM2MCw0MTQ0OTEyNjk3LDE3MzE0MDU0MTUsNDI5MDc3NTg1NywyMzk0MTgwMjMxLDE3NTA2MDMwMjUsMzY3NTAwODUyNSwxNjk0MDc2ODM5LDEyMDMwNjI4MTMsMzIwNDA3NTQyOF19dXRpbHMuaW5oZXJpdHMoU0hBMzg0LF81MTIpO3ZhciBfMzg0PVNIQTM4NDtTSEEzODQuYmxvY2tTaXplPTEwMjQ7U0hBMzg0Lm91dFNpemU9Mzg0O1NIQTM4NC5obWFjU3RyZW5ndGg9MTkyO1NIQTM4NC5wYWRMZW5ndGg9MTI4O1NIQTM4NC5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbiBkaWdlc3QoZW5jKXtpZihlbmM9PT0iaGV4IilyZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmguc2xpY2UoMCwxMiksImJpZyIpO2Vsc2UgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsMTIpLCJiaWciKX07InVzZSBzdHJpY3QiO3ZhciBzaGExPV8xO3ZhciBzaGEyMjQ9XzIyNDt2YXIgc2hhMjU2PV8yNTY7dmFyIHNoYTM4ND1fMzg0O3ZhciBzaGE1MTI9XzUxMjt2YXIgc2hhPXtzaGExOnNoYTEsc2hhMjI0OnNoYTIyNCxzaGEyNTY6c2hhMjU2LHNoYTM4NDpzaGEzODQsc2hhNTEyOnNoYTUxMn07InVzZSBzdHJpY3QiO3ZhciByb3RsMzIkMj11dGlscy5yb3RsMzI7dmFyIHN1bTMyJDM9dXRpbHMuc3VtMzI7dmFyIHN1bTMyXzMkMT11dGlscy5zdW0zMl8zO3ZhciBzdW0zMl80JDI9dXRpbHMuc3VtMzJfNDt2YXIgQmxvY2tIYXNoJDQ9Y29tbW9uLkJsb2NrSGFzaDtmdW5jdGlvbiBSSVBFTUQxNjAoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBSSVBFTUQxNjApKXJldHVybiBuZXcgUklQRU1EMTYwO0Jsb2NrSGFzaCQ0LmNhbGwodGhpcyk7dGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF07dGhpcy5lbmRpYW49ImxpdHRsZSJ9dXRpbHMuaW5oZXJpdHMoUklQRU1EMTYwLEJsb2NrSGFzaCQ0KTt2YXIgcmlwZW1kMTYwPVJJUEVNRDE2MDtSSVBFTUQxNjAuYmxvY2tTaXplPTUxMjtSSVBFTUQxNjAub3V0U2l6ZT0xNjA7UklQRU1EMTYwLmhtYWNTdHJlbmd0aD0xOTI7UklQRU1EMTYwLnBhZExlbmd0aD02NDtSSVBFTUQxNjAucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24gdXBkYXRlKG1zZyxzdGFydCl7dmFyIEE9dGhpcy5oWzBdO3ZhciBCPXRoaXMuaFsxXTt2YXIgQz10aGlzLmhbMl07dmFyIEQ9dGhpcy5oWzNdO3ZhciBFPXRoaXMuaFs0XTt2YXIgQWg9QTt2YXIgQmg9Qjt2YXIgQ2g9Qzt2YXIgRGg9RDt2YXIgRWg9RTtmb3IodmFyIGo9MDtqPDgwO2orKyl7dmFyIFQ9c3VtMzIkMyhyb3RsMzIkMihzdW0zMl80JDIoQSxmKGosQixDLEQpLG1zZ1tyW2pdK3N0YXJ0XSxLKGopKSxzW2pdKSxFKTtBPUU7RT1EO0Q9cm90bDMyJDIoQywxMCk7Qz1CO0I9VDtUPXN1bTMyJDMocm90bDMyJDIoc3VtMzJfNCQyKEFoLGYoNzktaixCaCxDaCxEaCksbXNnW3JoW2pdK3N0YXJ0XSxLaChqKSksc2hbal0pLEVoKTtBaD1FaDtFaD1EaDtEaD1yb3RsMzIkMihDaCwxMCk7Q2g9Qmg7Qmg9VH1UPXN1bTMyXzMkMSh0aGlzLmhbMV0sQyxEaCk7dGhpcy5oWzFdPXN1bTMyXzMkMSh0aGlzLmhbMl0sRCxFaCk7dGhpcy5oWzJdPXN1bTMyXzMkMSh0aGlzLmhbM10sRSxBaCk7dGhpcy5oWzNdPXN1bTMyXzMkMSh0aGlzLmhbNF0sQSxCaCk7dGhpcy5oWzRdPXN1bTMyXzMkMSh0aGlzLmhbMF0sQixDaCk7dGhpcy5oWzBdPVR9O1JJUEVNRDE2MC5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbiBkaWdlc3QoZW5jKXtpZihlbmM9PT0iaGV4IilyZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsImxpdHRsZSIpO2Vsc2UgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCJsaXR0bGUiKX07ZnVuY3Rpb24gZihqLHgseSx6KXtpZihqPD0xNSlyZXR1cm4geF55Xno7ZWxzZSBpZihqPD0zMSlyZXR1cm4geCZ5fH54Jno7ZWxzZSBpZihqPD00NylyZXR1cm4oeHx+eSleejtlbHNlIGlmKGo8PTYzKXJldHVybiB4Jnp8eSZ+ejtlbHNlIHJldHVybiB4Xih5fH56KX1mdW5jdGlvbiBLKGope2lmKGo8PTE1KXJldHVybiAwO2Vsc2UgaWYoajw9MzEpcmV0dXJuIDE1MTg1MDAyNDk7ZWxzZSBpZihqPD00NylyZXR1cm4gMTg1OTc3NTM5MztlbHNlIGlmKGo8PTYzKXJldHVybiAyNDAwOTU5NzA4O2Vsc2UgcmV0dXJuIDI4NDA4NTM4Mzh9ZnVuY3Rpb24gS2goail7aWYoajw9MTUpcmV0dXJuIDEzNTI4Mjk5MjY7ZWxzZSBpZihqPD0zMSlyZXR1cm4gMTU0ODYwMzY4NDtlbHNlIGlmKGo8PTQ3KXJldHVybiAxODM2MDcyNjkxO2Vsc2UgaWYoajw9NjMpcmV0dXJuIDIwNTM5OTQyMTc7ZWxzZSByZXR1cm4gMH12YXIgcj1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXTt2YXIgcmg9WzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcsMCwxMyw1LDEwLDE0LDE1LDgsMTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUsMTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV07dmFyIHM9WzExLDE0LDE1LDEyLDUsOCw3LDksMTEsMTMsMTQsMTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUsMTEsNiw4LDEzLDEyLDUsMTIsMTMsMTQsMTEsOCw1LDZdO3ZhciBzaD1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV07dmFyIHJpcGVtZD17cmlwZW1kMTYwOnJpcGVtZDE2MH07InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEhtYWMoaGFzaCxrZXksZW5jKXtpZighKHRoaXMgaW5zdGFuY2VvZiBIbWFjKSlyZXR1cm4gbmV3IEhtYWMoaGFzaCxrZXksZW5jKTt0aGlzLkhhc2g9aGFzaDt0aGlzLmJsb2NrU2l6ZT1oYXNoLmJsb2NrU2l6ZS84O3RoaXMub3V0U2l6ZT1oYXNoLm91dFNpemUvODt0aGlzLmlubmVyPW51bGw7dGhpcy5vdXRlcj1udWxsO3RoaXMuX2luaXQodXRpbHMudG9BcnJheShrZXksZW5jKSl9dmFyIGhtYWM9SG1hYztIbWFjLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbiBpbml0KGtleSl7aWYoa2V5Lmxlbmd0aD50aGlzLmJsb2NrU2l6ZSlrZXk9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShrZXkpLmRpZ2VzdCgpO21pbmltYWxpc3RpY0Fzc2VydChrZXkubGVuZ3RoPD10aGlzLmJsb2NrU2l6ZSk7Zm9yKHZhciBpPWtleS5sZW5ndGg7aTx0aGlzLmJsb2NrU2l6ZTtpKyspa2V5LnB1c2goMCk7Zm9yKGk9MDtpPGtleS5sZW5ndGg7aSsrKWtleVtpXV49NTQ7dGhpcy5pbm5lcj0obmV3IHRoaXMuSGFzaCkudXBkYXRlKGtleSk7Zm9yKGk9MDtpPGtleS5sZW5ndGg7aSsrKWtleVtpXV49MTA2O3RoaXMub3V0ZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZShrZXkpfTtIbWFjLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24gdXBkYXRlKG1zZyxlbmMpe3RoaXMuaW5uZXIudXBkYXRlKG1zZyxlbmMpO3JldHVybiB0aGlzfTtIbWFjLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24gZGlnZXN0KGVuYyl7dGhpcy5vdXRlci51cGRhdGUodGhpcy5pbm5lci5kaWdlc3QoKSk7cmV0dXJuIHRoaXMub3V0ZXIuZGlnZXN0KGVuYyl9O3ZhciBoYXNoXzE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpe3ZhciBoYXNoPWV4cG9ydHM7aGFzaC51dGlscz11dGlscztoYXNoLmNvbW1vbj1jb21tb247aGFzaC5zaGE9c2hhO2hhc2gucmlwZW1kPXJpcGVtZDtoYXNoLmhtYWM9aG1hYztoYXNoLnNoYTE9aGFzaC5zaGEuc2hhMTtoYXNoLnNoYTI1Nj1oYXNoLnNoYS5zaGEyNTY7aGFzaC5zaGEyMjQ9aGFzaC5zaGEuc2hhMjI0O2hhc2guc2hhMzg0PWhhc2guc2hhLnNoYTM4NDtoYXNoLnNoYTUxMj1oYXNoLnNoYS5zaGE1MTI7aGFzaC5yaXBlbWQxNjA9aGFzaC5yaXBlbWQucmlwZW1kMTYwfSk7dmFyIGN1cnZlc18xPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIGN1cnZlcz1leHBvcnRzO3ZhciBhc3NlcnQ9dXRpbHNfMSQxLmFzc2VydDtmdW5jdGlvbiBQcmVzZXRDdXJ2ZShvcHRpb25zKXtpZihvcHRpb25zLnR5cGU9PT0ic2hvcnQiKXRoaXMuY3VydmU9bmV3IGN1cnZlXzEuc2hvcnQob3B0aW9ucyk7ZWxzZSBpZihvcHRpb25zLnR5cGU9PT0iZWR3YXJkcyIpdGhpcy5jdXJ2ZT1uZXcgY3VydmVfMS5lZHdhcmRzKG9wdGlvbnMpO2Vsc2UgdGhpcy5jdXJ2ZT1uZXcgY3VydmVfMS5tb250KG9wdGlvbnMpO3RoaXMuZz10aGlzLmN1cnZlLmc7dGhpcy5uPXRoaXMuY3VydmUubjt0aGlzLmhhc2g9b3B0aW9ucy5oYXNoO2Fzc2VydCh0aGlzLmcudmFsaWRhdGUoKSwiSW52YWxpZCBjdXJ2ZSIpO2Fzc2VydCh0aGlzLmcubXVsKHRoaXMubikuaXNJbmZpbml0eSgpLCJJbnZhbGlkIGN1cnZlLCBHKk4gIT0gTyIpfWN1cnZlcy5QcmVzZXRDdXJ2ZT1QcmVzZXRDdXJ2ZTtmdW5jdGlvbiBkZWZpbmVDdXJ2ZShuYW1lLG9wdGlvbnMpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsbmFtZSx7Y29uZmlndXJhYmxlOnRydWUsZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3ZhciBjdXJ2ZT1uZXcgUHJlc2V0Q3VydmUob3B0aW9ucyk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGN1cnZlcyxuYW1lLHtjb25maWd1cmFibGU6dHJ1ZSxlbnVtZXJhYmxlOnRydWUsdmFsdWU6Y3VydmV9KTtyZXR1cm4gY3VydmV9fSl9ZGVmaW5lQ3VydmUoInAxOTIiLHt0eXBlOiJzaG9ydCIscHJpbWU6InAxOTIiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjEiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDk5ZGVmODM2IDE0NmJjOWIxIGI0ZDIyODMxIixoYXNoOmhhc2hfMS5zaGEyNTYsZ1JlZDpmYWxzZSxnOlsiMTg4ZGE4MGUgYjAzMDkwZjYgN2NiZjIwZWIgNDNhMTg4MDAgZjRmZjBhZmQgODJmZjEwMTIiLCIwNzE5MmI5NSBmZmM4ZGE3OCA2MzEwMTFlZCA2YjI0Y2RkNSA3M2Y5NzdhMSAxZTc5NDgxMSJdfSk7ZGVmaW5lQ3VydmUoInAyMjQiLHt0eXBlOiJzaG9ydCIscHJpbWU6InAyMjQiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSIsYjoiYjQwNTBhODUgMGMwNGIzYWIgZjU0MTMyNTYgNTA0NGIwYjcgZDdiZmQ4YmEgMjcwYjM5NDMgMjM1NWZmYjQiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmYxNmEyIGUwYjhmMDNlIDEzZGQyOTQ1IDVjNWMyYTNkIixoYXNoOmhhc2hfMS5zaGEyNTYsZ1JlZDpmYWxzZSxnOlsiYjcwZTBjYmQgNmJiNGJmN2YgMzIxMzkwYjkgNGEwM2MxZDMgNTZjMjExMjIgMzQzMjgwZDYgMTE1YzFkMjEiLCJiZDM3NjM4OCBiNWY3MjNmYiA0YzIyZGZlNiBjZDQzNzVhMCA1YTA3NDc2NCA0NGQ1ODE5OSA4NTAwN2UzNCJdfSk7ZGVmaW5lQ3VydmUoInAyNTYiLHt0eXBlOiJzaG9ydCIscHJpbWU6bnVsbCxwOiJmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiIsYToiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiIixuOiJmZmZmZmZmZiAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBiY2U2ZmFhZCBhNzE3OWU4NCBmM2I5Y2FjMiBmYzYzMjU1MSIsaGFzaDpoYXNoXzEuc2hhMjU2LGdSZWQ6ZmFsc2UsZzpbIjZiMTdkMWYyIGUxMmM0MjQ3IGY4YmNlNmU1IDYzYTQ0MGYyIDc3MDM3ZDgxIDJkZWIzM2EwIGY0YTEzOTQ1IGQ4OThjMjk2IiwiNGZlMzQyZTIgZmUxYTdmOWIgOGVlN2ViNGEgN2MwZjllMTYgMmJjZTMzNTcgNmIzMTVlY2UgY2JiNjQwNjggMzdiZjUxZjUiXX0pO2RlZmluZUN1cnZlKCJwMzg0Iix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgIisiZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYiLGE6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICIrImZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZjIixiOiJiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiAiKyI1MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZiIsbjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgYzc2MzRkODEgIisiZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMiLGhhc2g6aGFzaF8xLnNoYTM4NCxnUmVkOmZhbHNlLGc6WyJhYTg3Y2EyMiBiZThiMDUzNyA4ZWIxYzcxZSBmMzIwYWQ3NCA2ZTFkM2I2MiA4YmE3OWI5OCA1OWY3NDFlMCA4MjU0MmEzOCAiKyI1NTAyZjI1ZCBiZjU1Mjk2YyAzYTU0NWUzOCA3Mjc2MGFiNyIsIjM2MTdkZTRhIDk2MjYyYzZmIDVkOWU5OGJmIDkyOTJkYzI5IGY4ZjQxZGJkIDI4OWExNDdjIGU5ZGEzMTEzIGI1ZjBiOGMwICIrIjBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmIl19KTtkZWZpbmVDdXJ2ZSgicDUyMSIse3R5cGU6InNob3J0IixwcmltZTpudWxsLHA6IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICIrImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICIrImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIixhOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAiKyJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAiKyJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYyIsYjoiMDAwMDAwNTEgOTUzZWI5NjEgOGUxYzlhMWYgOTI5YTIxYTAgYjY4NTQwZWUgYTJkYTcyNWIgIisiOTliMzE1ZjMgYjhiNDg5OTEgOGVmMTA5ZTEgNTYxOTM5NTEgZWM3ZTkzN2IgMTY1MmMwYmQgIisiM2JiMWJmMDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAiLG46IjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICIrImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZhIDUxODY4NzgzIGJmMmY5NjZiIDdmY2MwMTQ4ICIrImY3MDlhNWQwIDNiYjVjOWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5IixoYXNoOmhhc2hfMS5zaGE1MTIsZ1JlZDpmYWxzZSxnOlsiMDAwMDAwYzYgODU4ZTA2YjcgMDQwNGU5Y2QgOWUzZWNiNjYgMjM5NWI0NDIgOWM2NDgxMzkgIisiMDUzZmI1MjEgZjgyOGFmNjAgNmI0ZDNkYmEgYTE0YjVlNzcgZWZlNzU5MjggZmUxZGMxMjcgIisiYTJmZmE4ZGUgMzM0OGIzYzEgODU2YTQyOWIgZjk3ZTdlMzEgYzJlNWJkNjYiLCIwMDAwMDExOCAzOTI5NmE3OCA5YTNiYzAwNCA1YzhhNWZiNCAyYzdkMWJkOSA5OGY1NDQ0OSAiKyI1NzliNDQ2OCAxN2FmYmQxNyAyNzNlNjYyYyA5N2VlNzI5OSA1ZWY0MjY0MCBjNTUwYjkwMSAiKyIzZmFkMDc2MSAzNTNjNzA4NiBhMjcyYzI0MCA4OGJlOTQ3NiA5ZmQxNjY1MCJdfSk7ZGVmaW5lQ3VydmUoImN1cnZlMjU1MTkiLHt0eXBlOiJtb250IixwcmltZToicDI1NTE5IixwOiI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkIixhOiI3NmQwNiIsYjoiMSIsbjoiMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCIsaGFzaDpoYXNoXzEuc2hhMjU2LGdSZWQ6ZmFsc2UsZzpbIjkiXX0pO2RlZmluZUN1cnZlKCJlZDI1NTE5Iix7dHlwZToiZWR3YXJkcyIscHJpbWU6InAyNTUxOSIscDoiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIsYToiLTEiLGM6IjEiLGQ6IjUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMiLG46IjEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQiLGhhc2g6aGFzaF8xLnNoYTI1NixnUmVkOmZhbHNlLGc6WyIyMTY5MzZkM2NkNmU1M2ZlYzBhNGUyMzFmZGQ2ZGM1YzY5MmNjNzYwOTUyNWE3YjJjOTU2MmQ2MDhmMjVkNTFhIiwiNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY1OCJdfSk7dmFyIHByZTt0cnl7cHJlPW51bGwuY3Jhc2goKX1jYXRjaChlKXtwcmU9dW5kZWZpbmVkfWRlZmluZUN1cnZlKCJzZWNwMjU2azEiLHt0eXBlOiJzaG9ydCIscHJpbWU6ImsyNTYiLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmIixhOiIwIixiOiI3IixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBiYWFlZGNlNiBhZjQ4YTAzYiBiZmQyNWU4YyBkMDM2NDE0MSIsaDoiMSIsaGFzaDpoYXNoXzEuc2hhMjU2LGJldGE6IjdhZTk2YTJiNjU3YzA3MTA2ZTY0NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWUiLGxhbWJkYToiNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MiIsYmFzaXM6W3thOiIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSIsYjoiLWU0NDM3ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzIn0se2E6IjExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCIsYjoiMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUifV0sZ1JlZDpmYWxzZSxnOlsiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCIsIjQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgiLHByZV19KX0pOyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBIbWFjRFJCRyhvcHRpb25zKXtpZighKHRoaXMgaW5zdGFuY2VvZiBIbWFjRFJCRykpcmV0dXJuIG5ldyBIbWFjRFJCRyhvcHRpb25zKTt0aGlzLmhhc2g9b3B0aW9ucy5oYXNoO3RoaXMucHJlZFJlc2lzdD0hIW9wdGlvbnMucHJlZFJlc2lzdDt0aGlzLm91dExlbj10aGlzLmhhc2gub3V0U2l6ZTt0aGlzLm1pbkVudHJvcHk9b3B0aW9ucy5taW5FbnRyb3B5fHx0aGlzLmhhc2guaG1hY1N0cmVuZ3RoO3RoaXMuX3Jlc2VlZD1udWxsO3RoaXMucmVzZWVkSW50ZXJ2YWw9bnVsbDt0aGlzLks9bnVsbDt0aGlzLlY9bnVsbDt2YXIgZW50cm9weT11dGlsc18xLnRvQXJyYXkob3B0aW9ucy5lbnRyb3B5LG9wdGlvbnMuZW50cm9weUVuY3x8ImhleCIpO3ZhciBub25jZT11dGlsc18xLnRvQXJyYXkob3B0aW9ucy5ub25jZSxvcHRpb25zLm5vbmNlRW5jfHwiaGV4Iik7dmFyIHBlcnM9dXRpbHNfMS50b0FycmF5KG9wdGlvbnMucGVycyxvcHRpb25zLnBlcnNFbmN8fCJoZXgiKTttaW5pbWFsaXN0aWNBc3NlcnQoZW50cm9weS5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICIrdGhpcy5taW5FbnRyb3B5KyIgYml0cyIpO3RoaXMuX2luaXQoZW50cm9weSxub25jZSxwZXJzKX12YXIgaG1hY0RyYmc9SG1hY0RSQkc7SG1hY0RSQkcucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uIGluaXQoZW50cm9weSxub25jZSxwZXJzKXt2YXIgc2VlZD1lbnRyb3B5LmNvbmNhdChub25jZSkuY29uY2F0KHBlcnMpO3RoaXMuSz1uZXcgQXJyYXkodGhpcy5vdXRMZW4vOCk7dGhpcy5WPW5ldyBBcnJheSh0aGlzLm91dExlbi84KTtmb3IodmFyIGk9MDtpPHRoaXMuVi5sZW5ndGg7aSsrKXt0aGlzLktbaV09MDt0aGlzLlZbaV09MX10aGlzLl91cGRhdGUoc2VlZCk7dGhpcy5fcmVzZWVkPTE7dGhpcy5yZXNlZWRJbnRlcnZhbD0yODE0NzQ5NzY3MTA2NTZ9O0htYWNEUkJHLnByb3RvdHlwZS5faG1hYz1mdW5jdGlvbiBobWFjKCl7cmV0dXJuIG5ldyBoYXNoXzEuaG1hYyh0aGlzLmhhc2gsdGhpcy5LKX07SG1hY0RSQkcucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24gdXBkYXRlKHNlZWQpe3ZhciBrbWFjPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS51cGRhdGUoWzBdKTtpZihzZWVkKWttYWM9a21hYy51cGRhdGUoc2VlZCk7dGhpcy5LPWttYWMuZGlnZXN0KCk7dGhpcy5WPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtpZighc2VlZClyZXR1cm47dGhpcy5LPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS51cGRhdGUoWzFdKS51cGRhdGUoc2VlZCkuZGlnZXN0KCk7dGhpcy5WPXRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKX07SG1hY0RSQkcucHJvdG90eXBlLnJlc2VlZD1mdW5jdGlvbiByZXNlZWQoZW50cm9weSxlbnRyb3B5RW5jLGFkZCxhZGRFbmMpe2lmKHR5cGVvZiBlbnRyb3B5RW5jIT09InN0cmluZyIpe2FkZEVuYz1hZGQ7YWRkPWVudHJvcHlFbmM7ZW50cm9weUVuYz1udWxsfWVudHJvcHk9dXRpbHNfMS50b0FycmF5KGVudHJvcHksZW50cm9weUVuYyk7YWRkPXV0aWxzXzEudG9BcnJheShhZGQsYWRkRW5jKTttaW5pbWFsaXN0aWNBc3NlcnQoZW50cm9weS5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICIrdGhpcy5taW5FbnRyb3B5KyIgYml0cyIpO3RoaXMuX3VwZGF0ZShlbnRyb3B5LmNvbmNhdChhZGR8fFtdKSk7dGhpcy5fcmVzZWVkPTF9O0htYWNEUkJHLnByb3RvdHlwZS5nZW5lcmF0ZT1mdW5jdGlvbiBnZW5lcmF0ZShsZW4sZW5jLGFkZCxhZGRFbmMpe2lmKHRoaXMuX3Jlc2VlZD50aGlzLnJlc2VlZEludGVydmFsKXRocm93IG5ldyBFcnJvcigiUmVzZWVkIGlzIHJlcXVpcmVkIik7aWYodHlwZW9mIGVuYyE9PSJzdHJpbmciKXthZGRFbmM9YWRkO2FkZD1lbmM7ZW5jPW51bGx9aWYoYWRkKXthZGQ9dXRpbHNfMS50b0FycmF5KGFkZCxhZGRFbmN8fCJoZXgiKTt0aGlzLl91cGRhdGUoYWRkKX12YXIgdGVtcD1bXTt3aGlsZSh0ZW1wLmxlbmd0aDxsZW4pe3RoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7dGVtcD10ZW1wLmNvbmNhdCh0aGlzLlYpfXZhciByZXM9dGVtcC5zbGljZSgwLGxlbik7dGhpcy5fdXBkYXRlKGFkZCk7dGhpcy5fcmVzZWVkKys7cmV0dXJuIHV0aWxzXzEuZW5jb2RlKHJlcyxlbmMpfTsidXNlIHN0cmljdCI7dmFyIGFzc2VydCQzPXV0aWxzXzEkMS5hc3NlcnQ7ZnVuY3Rpb24gS2V5UGFpcihlYyxvcHRpb25zKXt0aGlzLmVjPWVjO3RoaXMucHJpdj1udWxsO3RoaXMucHViPW51bGw7aWYob3B0aW9ucy5wcml2KXRoaXMuX2ltcG9ydFByaXZhdGUob3B0aW9ucy5wcml2LG9wdGlvbnMucHJpdkVuYyk7aWYob3B0aW9ucy5wdWIpdGhpcy5faW1wb3J0UHVibGljKG9wdGlvbnMucHViLG9wdGlvbnMucHViRW5jKX12YXIga2V5PUtleVBhaXI7S2V5UGFpci5mcm9tUHVibGljPWZ1bmN0aW9uIGZyb21QdWJsaWMoZWMscHViLGVuYyl7aWYocHViIGluc3RhbmNlb2YgS2V5UGFpcilyZXR1cm4gcHViO3JldHVybiBuZXcgS2V5UGFpcihlYyx7cHViOnB1YixwdWJFbmM6ZW5jfSl9O0tleVBhaXIuZnJvbVByaXZhdGU9ZnVuY3Rpb24gZnJvbVByaXZhdGUoZWMscHJpdixlbmMpe2lmKHByaXYgaW5zdGFuY2VvZiBLZXlQYWlyKXJldHVybiBwcml2O3JldHVybiBuZXcgS2V5UGFpcihlYyx7cHJpdjpwcml2LHByaXZFbmM6ZW5jfSl9O0tleVBhaXIucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uIHZhbGlkYXRlKCl7dmFyIHB1Yj10aGlzLmdldFB1YmxpYygpO2lmKHB1Yi5pc0luZmluaXR5KCkpcmV0dXJue3Jlc3VsdDpmYWxzZSxyZWFzb246IkludmFsaWQgcHVibGljIGtleSJ9O2lmKCFwdWIudmFsaWRhdGUoKSlyZXR1cm57cmVzdWx0OmZhbHNlLHJlYXNvbjoiUHVibGljIGtleSBpcyBub3QgYSBwb2ludCJ9O2lmKCFwdWIubXVsKHRoaXMuZWMuY3VydmUubikuaXNJbmZpbml0eSgpKXJldHVybntyZXN1bHQ6ZmFsc2UscmVhc29uOiJQdWJsaWMga2V5ICogTiAhPSBPIn07cmV0dXJue3Jlc3VsdDp0cnVlLHJlYXNvbjpudWxsfX07S2V5UGFpci5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uIGdldFB1YmxpYyhjb21wYWN0LGVuYyl7aWYodHlwZW9mIGNvbXBhY3Q9PT0ic3RyaW5nIil7ZW5jPWNvbXBhY3Q7Y29tcGFjdD1udWxsfWlmKCF0aGlzLnB1Yil0aGlzLnB1Yj10aGlzLmVjLmcubXVsKHRoaXMucHJpdik7aWYoIWVuYylyZXR1cm4gdGhpcy5wdWI7cmV0dXJuIHRoaXMucHViLmVuY29kZShlbmMsY29tcGFjdCl9O0tleVBhaXIucHJvdG90eXBlLmdldFByaXZhdGU9ZnVuY3Rpb24gZ2V0UHJpdmF0ZShlbmMpe2lmKGVuYz09PSJoZXgiKXJldHVybiB0aGlzLnByaXYudG9TdHJpbmcoMTYsMik7ZWxzZSByZXR1cm4gdGhpcy5wcml2fTtLZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZT1mdW5jdGlvbiBfaW1wb3J0UHJpdmF0ZShrZXksZW5jKXt0aGlzLnByaXY9bmV3IGJuJDEoa2V5LGVuY3x8MTYpO3RoaXMucHJpdj10aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pfTtLZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHVibGljPWZ1bmN0aW9uIF9pbXBvcnRQdWJsaWMoa2V5LGVuYyl7aWYoa2V5Lnh8fGtleS55KXtpZih0aGlzLmVjLmN1cnZlLnR5cGU9PT0ibW9udCIpe2Fzc2VydCQzKGtleS54LCJOZWVkIHggY29vcmRpbmF0ZSIpfWVsc2UgaWYodGhpcy5lYy5jdXJ2ZS50eXBlPT09InNob3J0Inx8dGhpcy5lYy5jdXJ2ZS50eXBlPT09ImVkd2FyZHMiKXthc3NlcnQkMyhrZXkueCYma2V5LnksIk5lZWQgYm90aCB4IGFuZCB5IGNvb3JkaW5hdGUiKX10aGlzLnB1Yj10aGlzLmVjLmN1cnZlLnBvaW50KGtleS54LGtleS55KTtyZXR1cm59dGhpcy5wdWI9dGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludChrZXksZW5jKX07S2V5UGFpci5wcm90b3R5cGUuZGVyaXZlPWZ1bmN0aW9uIGRlcml2ZShwdWIpe2lmKCFwdWIudmFsaWRhdGUoKSl7YXNzZXJ0JDMocHViLnZhbGlkYXRlKCksInB1YmxpYyBwb2ludCBub3QgdmFsaWRhdGVkIil9cmV0dXJuIHB1Yi5tdWwodGhpcy5wcml2KS5nZXRYKCl9O0tleVBhaXIucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24gc2lnbihtc2csZW5jLG9wdGlvbnMpe3JldHVybiB0aGlzLmVjLnNpZ24obXNnLHRoaXMsZW5jLG9wdGlvbnMpfTtLZXlQYWlyLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24gdmVyaWZ5KG1zZyxzaWduYXR1cmUpe3JldHVybiB0aGlzLmVjLnZlcmlmeShtc2csc2lnbmF0dXJlLHRoaXMpfTtLZXlQYWlyLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uIGluc3BlY3QoKXtyZXR1cm4iPEtleSBwcml2OiAiKyh0aGlzLnByaXYmJnRoaXMucHJpdi50b1N0cmluZygxNiwyKSkrIiBwdWI6ICIrKHRoaXMucHViJiZ0aGlzLnB1Yi5pbnNwZWN0KCkpKyIgPiJ9OyJ1c2Ugc3RyaWN0Ijt2YXIgYXNzZXJ0JDQ9dXRpbHNfMSQxLmFzc2VydDtmdW5jdGlvbiBTaWduYXR1cmUob3B0aW9ucyxlbmMpe2lmKG9wdGlvbnMgaW5zdGFuY2VvZiBTaWduYXR1cmUpcmV0dXJuIG9wdGlvbnM7aWYodGhpcy5faW1wb3J0REVSKG9wdGlvbnMsZW5jKSlyZXR1cm47YXNzZXJ0JDQob3B0aW9ucy5yJiZvcHRpb25zLnMsIlNpZ25hdHVyZSB3aXRob3V0IHIgb3IgcyIpO3RoaXMucj1uZXcgYm4kMShvcHRpb25zLnIsMTYpO3RoaXMucz1uZXcgYm4kMShvcHRpb25zLnMsMTYpO2lmKG9wdGlvbnMucmVjb3ZlcnlQYXJhbT09PXVuZGVmaW5lZCl0aGlzLnJlY292ZXJ5UGFyYW09bnVsbDtlbHNlIHRoaXMucmVjb3ZlcnlQYXJhbT1vcHRpb25zLnJlY292ZXJ5UGFyYW19dmFyIHNpZ25hdHVyZT1TaWduYXR1cmU7ZnVuY3Rpb24gUG9zaXRpb24oKXt0aGlzLnBsYWNlPTB9ZnVuY3Rpb24gZ2V0TGVuZ3RoKGJ1ZixwKXt2YXIgaW5pdGlhbD1idWZbcC5wbGFjZSsrXTtpZighKGluaXRpYWwmMTI4KSl7cmV0dXJuIGluaXRpYWx9dmFyIG9jdGV0TGVuPWluaXRpYWwmMTU7aWYob2N0ZXRMZW49PT0wfHxvY3RldExlbj40KXtyZXR1cm4gZmFsc2V9dmFyIHZhbD0wO2Zvcih2YXIgaT0wLG9mZj1wLnBsYWNlO2k8b2N0ZXRMZW47aSsrLG9mZisrKXt2YWw8PD04O3ZhbHw9YnVmW29mZl07dmFsPj4+PTB9aWYodmFsPD0xMjcpe3JldHVybiBmYWxzZX1wLnBsYWNlPW9mZjtyZXR1cm4gdmFsfWZ1bmN0aW9uIHJtUGFkZGluZyhidWYpe3ZhciBpPTA7dmFyIGxlbj1idWYubGVuZ3RoLTE7d2hpbGUoIWJ1ZltpXSYmIShidWZbaSsxXSYxMjgpJiZpPGxlbil7aSsrfWlmKGk9PT0wKXtyZXR1cm4gYnVmfXJldHVybiBidWYuc2xpY2UoaSl9U2lnbmF0dXJlLnByb3RvdHlwZS5faW1wb3J0REVSPWZ1bmN0aW9uIF9pbXBvcnRERVIoZGF0YSxlbmMpe2RhdGE9dXRpbHNfMSQxLnRvQXJyYXkoZGF0YSxlbmMpO3ZhciBwPW5ldyBQb3NpdGlvbjtpZihkYXRhW3AucGxhY2UrK10hPT00OCl7cmV0dXJuIGZhbHNlfXZhciBsZW49Z2V0TGVuZ3RoKGRhdGEscCk7aWYobGVuPT09ZmFsc2Upe3JldHVybiBmYWxzZX1pZihsZW4rcC5wbGFjZSE9PWRhdGEubGVuZ3RoKXtyZXR1cm4gZmFsc2V9aWYoZGF0YVtwLnBsYWNlKytdIT09Mil7cmV0dXJuIGZhbHNlfXZhciBybGVuPWdldExlbmd0aChkYXRhLHApO2lmKHJsZW49PT1mYWxzZSl7cmV0dXJuIGZhbHNlfXZhciByPWRhdGEuc2xpY2UocC5wbGFjZSxybGVuK3AucGxhY2UpO3AucGxhY2UrPXJsZW47aWYoZGF0YVtwLnBsYWNlKytdIT09Mil7cmV0dXJuIGZhbHNlfXZhciBzbGVuPWdldExlbmd0aChkYXRhLHApO2lmKHNsZW49PT1mYWxzZSl7cmV0dXJuIGZhbHNlfWlmKGRhdGEubGVuZ3RoIT09c2xlbitwLnBsYWNlKXtyZXR1cm4gZmFsc2V9dmFyIHM9ZGF0YS5zbGljZShwLnBsYWNlLHNsZW4rcC5wbGFjZSk7aWYoclswXT09PTApe2lmKHJbMV0mMTI4KXtyPXIuc2xpY2UoMSl9ZWxzZXtyZXR1cm4gZmFsc2V9fWlmKHNbMF09PT0wKXtpZihzWzFdJjEyOCl7cz1zLnNsaWNlKDEpfWVsc2V7cmV0dXJuIGZhbHNlfX10aGlzLnI9bmV3IGJuJDEocik7dGhpcy5zPW5ldyBibiQxKHMpO3RoaXMucmVjb3ZlcnlQYXJhbT1udWxsO3JldHVybiB0cnVlfTtmdW5jdGlvbiBjb25zdHJ1Y3RMZW5ndGgoYXJyLGxlbil7aWYobGVuPDEyOCl7YXJyLnB1c2gobGVuKTtyZXR1cm59dmFyIG9jdGV0cz0xKyhNYXRoLmxvZyhsZW4pL01hdGguTE4yPj4+Myk7YXJyLnB1c2gob2N0ZXRzfDEyOCk7d2hpbGUoLS1vY3RldHMpe2Fyci5wdXNoKGxlbj4+PihvY3RldHM8PDMpJjI1NSl9YXJyLnB1c2gobGVuKX1TaWduYXR1cmUucHJvdG90eXBlLnRvREVSPWZ1bmN0aW9uIHRvREVSKGVuYyl7dmFyIHI9dGhpcy5yLnRvQXJyYXkoKTt2YXIgcz10aGlzLnMudG9BcnJheSgpO2lmKHJbMF0mMTI4KXI9WzBdLmNvbmNhdChyKTtpZihzWzBdJjEyOClzPVswXS5jb25jYXQocyk7cj1ybVBhZGRpbmcocik7cz1ybVBhZGRpbmcocyk7d2hpbGUoIXNbMF0mJiEoc1sxXSYxMjgpKXtzPXMuc2xpY2UoMSl9dmFyIGFycj1bMl07Y29uc3RydWN0TGVuZ3RoKGFycixyLmxlbmd0aCk7YXJyPWFyci5jb25jYXQocik7YXJyLnB1c2goMik7Y29uc3RydWN0TGVuZ3RoKGFycixzLmxlbmd0aCk7dmFyIGJhY2tIYWxmPWFyci5jb25jYXQocyk7dmFyIHJlcz1bNDhdO2NvbnN0cnVjdExlbmd0aChyZXMsYmFja0hhbGYubGVuZ3RoKTtyZXM9cmVzLmNvbmNhdChiYWNrSGFsZik7cmV0dXJuIHV0aWxzXzEkMS5lbmNvZGUocmVzLGVuYyl9OyJ1c2Ugc3RyaWN0Ijt2YXIgcmFuZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQiKX07dmFyIGFzc2VydCQ1PXV0aWxzXzEkMS5hc3NlcnQ7ZnVuY3Rpb24gRUMob3B0aW9ucyl7aWYoISh0aGlzIGluc3RhbmNlb2YgRUMpKXJldHVybiBuZXcgRUMob3B0aW9ucyk7aWYodHlwZW9mIG9wdGlvbnM9PT0ic3RyaW5nIil7YXNzZXJ0JDUoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGN1cnZlc18xLG9wdGlvbnMpLCJVbmtub3duIGN1cnZlICIrb3B0aW9ucyk7b3B0aW9ucz1jdXJ2ZXNfMVtvcHRpb25zXX1pZihvcHRpb25zIGluc3RhbmNlb2YgY3VydmVzXzEuUHJlc2V0Q3VydmUpb3B0aW9ucz17Y3VydmU6b3B0aW9uc307dGhpcy5jdXJ2ZT1vcHRpb25zLmN1cnZlLmN1cnZlO3RoaXMubj10aGlzLmN1cnZlLm47dGhpcy5uaD10aGlzLm4udXNocm4oMSk7dGhpcy5nPXRoaXMuY3VydmUuZzt0aGlzLmc9b3B0aW9ucy5jdXJ2ZS5nO3RoaXMuZy5wcmVjb21wdXRlKG9wdGlvbnMuY3VydmUubi5iaXRMZW5ndGgoKSsxKTt0aGlzLmhhc2g9b3B0aW9ucy5oYXNofHxvcHRpb25zLmN1cnZlLmhhc2h9dmFyIGVjPUVDO0VDLnByb3RvdHlwZS5rZXlQYWlyPWZ1bmN0aW9uIGtleVBhaXIob3B0aW9ucyl7cmV0dXJuIG5ldyBrZXkodGhpcyxvcHRpb25zKX07RUMucHJvdG90eXBlLmtleUZyb21Qcml2YXRlPWZ1bmN0aW9uIGtleUZyb21Qcml2YXRlKHByaXYsZW5jKXtyZXR1cm4ga2V5LmZyb21Qcml2YXRlKHRoaXMscHJpdixlbmMpfTtFQy5wcm90b3R5cGUua2V5RnJvbVB1YmxpYz1mdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1YixlbmMpe3JldHVybiBrZXkuZnJvbVB1YmxpYyh0aGlzLHB1YixlbmMpfTtFQy5wcm90b3R5cGUuZ2VuS2V5UGFpcj1mdW5jdGlvbiBnZW5LZXlQYWlyKG9wdGlvbnMpe2lmKCFvcHRpb25zKW9wdGlvbnM9e307dmFyIGRyYmc9bmV3IGhtYWNEcmJnKHtoYXNoOnRoaXMuaGFzaCxwZXJzOm9wdGlvbnMucGVycyxwZXJzRW5jOm9wdGlvbnMucGVyc0VuY3x8InV0ZjgiLGVudHJvcHk6b3B0aW9ucy5lbnRyb3B5fHxyYW5kKHRoaXMuaGFzaC5obWFjU3RyZW5ndGgpLGVudHJvcHlFbmM6b3B0aW9ucy5lbnRyb3B5JiZvcHRpb25zLmVudHJvcHlFbmN8fCJ1dGY4Iixub25jZTp0aGlzLm4udG9BcnJheSgpfSk7dmFyIGJ5dGVzPXRoaXMubi5ieXRlTGVuZ3RoKCk7dmFyIG5zMj10aGlzLm4uc3ViKG5ldyBibiQxKDIpKTtmb3IoOzspe3ZhciBwcml2PW5ldyBibiQxKGRyYmcuZ2VuZXJhdGUoYnl0ZXMpKTtpZihwcml2LmNtcChuczIpPjApY29udGludWU7cHJpdi5pYWRkbigxKTtyZXR1cm4gdGhpcy5rZXlGcm9tUHJpdmF0ZShwcml2KX19O0VDLnByb3RvdHlwZS5fdHJ1bmNhdGVUb049ZnVuY3Rpb24gX3RydW5jYXRlVG9OKG1zZyx0cnVuY09ubHkpe3ZhciBkZWx0YT1tc2cuYnl0ZUxlbmd0aCgpKjgtdGhpcy5uLmJpdExlbmd0aCgpO2lmKGRlbHRhPjApbXNnPW1zZy51c2hybihkZWx0YSk7aWYoIXRydW5jT25seSYmbXNnLmNtcCh0aGlzLm4pPj0wKXJldHVybiBtc2cuc3ViKHRoaXMubik7ZWxzZSByZXR1cm4gbXNnfTtFQy5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbiBzaWduKG1zZyxrZXksZW5jLG9wdGlvbnMpe2lmKHR5cGVvZiBlbmM9PT0ib2JqZWN0Iil7b3B0aW9ucz1lbmM7ZW5jPW51bGx9aWYoIW9wdGlvbnMpb3B0aW9ucz17fTtrZXk9dGhpcy5rZXlGcm9tUHJpdmF0ZShrZXksZW5jKTttc2c9dGhpcy5fdHJ1bmNhdGVUb04obmV3IGJuJDEobXNnLDE2KSk7dmFyIGJ5dGVzPXRoaXMubi5ieXRlTGVuZ3RoKCk7dmFyIGJrZXk9a2V5LmdldFByaXZhdGUoKS50b0FycmF5KCJiZSIsYnl0ZXMpO3ZhciBub25jZT1tc2cudG9BcnJheSgiYmUiLGJ5dGVzKTt2YXIgZHJiZz1uZXcgaG1hY0RyYmcoe2hhc2g6dGhpcy5oYXNoLGVudHJvcHk6YmtleSxub25jZTpub25jZSxwZXJzOm9wdGlvbnMucGVycyxwZXJzRW5jOm9wdGlvbnMucGVyc0VuY3x8InV0ZjgifSk7dmFyIG5zMT10aGlzLm4uc3ViKG5ldyBibiQxKDEpKTtmb3IodmFyIGl0ZXI9MDs7aXRlcisrKXt2YXIgaz1vcHRpb25zLms/b3B0aW9ucy5rKGl0ZXIpOm5ldyBibiQxKGRyYmcuZ2VuZXJhdGUodGhpcy5uLmJ5dGVMZW5ndGgoKSkpO2s9dGhpcy5fdHJ1bmNhdGVUb04oayx0cnVlKTtpZihrLmNtcG4oMSk8PTB8fGsuY21wKG5zMSk+PTApY29udGludWU7dmFyIGtwPXRoaXMuZy5tdWwoayk7aWYoa3AuaXNJbmZpbml0eSgpKWNvbnRpbnVlO3ZhciBrcFg9a3AuZ2V0WCgpO3ZhciByPWtwWC51bW9kKHRoaXMubik7aWYoci5jbXBuKDApPT09MCljb250aW51ZTt2YXIgcz1rLmludm0odGhpcy5uKS5tdWwoci5tdWwoa2V5LmdldFByaXZhdGUoKSkuaWFkZChtc2cpKTtzPXMudW1vZCh0aGlzLm4pO2lmKHMuY21wbigwKT09PTApY29udGludWU7dmFyIHJlY292ZXJ5UGFyYW09KGtwLmdldFkoKS5pc09kZCgpPzE6MCl8KGtwWC5jbXAocikhPT0wPzI6MCk7aWYob3B0aW9ucy5jYW5vbmljYWwmJnMuY21wKHRoaXMubmgpPjApe3M9dGhpcy5uLnN1YihzKTtyZWNvdmVyeVBhcmFtXj0xfXJldHVybiBuZXcgc2lnbmF0dXJlKHtyOnIsczpzLHJlY292ZXJ5UGFyYW06cmVjb3ZlcnlQYXJhbX0pfX07RUMucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbiB2ZXJpZnkobXNnLHNpZ25hdHVyZSQxLGtleSxlbmMpe21zZz10aGlzLl90cnVuY2F0ZVRvTihuZXcgYm4kMShtc2csMTYpKTtrZXk9dGhpcy5rZXlGcm9tUHVibGljKGtleSxlbmMpO3NpZ25hdHVyZSQxPW5ldyBzaWduYXR1cmUoc2lnbmF0dXJlJDEsImhleCIpO3ZhciByPXNpZ25hdHVyZSQxLnI7dmFyIHM9c2lnbmF0dXJlJDEucztpZihyLmNtcG4oMSk8MHx8ci5jbXAodGhpcy5uKT49MClyZXR1cm4gZmFsc2U7aWYocy5jbXBuKDEpPDB8fHMuY21wKHRoaXMubik+PTApcmV0dXJuIGZhbHNlO3ZhciBzaW52PXMuaW52bSh0aGlzLm4pO3ZhciB1MT1zaW52Lm11bChtc2cpLnVtb2QodGhpcy5uKTt2YXIgdTI9c2ludi5tdWwocikudW1vZCh0aGlzLm4pO3ZhciBwO2lmKCF0aGlzLmN1cnZlLl9tYXh3ZWxsVHJpY2spe3A9dGhpcy5nLm11bEFkZCh1MSxrZXkuZ2V0UHVibGljKCksdTIpO2lmKHAuaXNJbmZpbml0eSgpKXJldHVybiBmYWxzZTtyZXR1cm4gcC5nZXRYKCkudW1vZCh0aGlzLm4pLmNtcChyKT09PTB9cD10aGlzLmcuam11bEFkZCh1MSxrZXkuZ2V0UHVibGljKCksdTIpO2lmKHAuaXNJbmZpbml0eSgpKXJldHVybiBmYWxzZTtyZXR1cm4gcC5lcVhUb1Aocil9O0VDLnByb3RvdHlwZS5yZWNvdmVyUHViS2V5PWZ1bmN0aW9uKG1zZyxzaWduYXR1cmUkMSxqLGVuYyl7YXNzZXJ0JDUoKDMmaik9PT1qLCJUaGUgcmVjb3ZlcnkgcGFyYW0gaXMgbW9yZSB0aGFuIHR3byBiaXRzIik7c2lnbmF0dXJlJDE9bmV3IHNpZ25hdHVyZShzaWduYXR1cmUkMSxlbmMpO3ZhciBuPXRoaXMubjt2YXIgZT1uZXcgYm4kMShtc2cpO3ZhciByPXNpZ25hdHVyZSQxLnI7dmFyIHM9c2lnbmF0dXJlJDEuczt2YXIgaXNZT2RkPWomMTt2YXIgaXNTZWNvbmRLZXk9aj4+MTtpZihyLmNtcCh0aGlzLmN1cnZlLnAudW1vZCh0aGlzLmN1cnZlLm4pKT49MCYmaXNTZWNvbmRLZXkpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCBzZW5jb25kIGtleSBjYW5kaW5hdGUiKTtpZihpc1NlY29uZEtleSlyPXRoaXMuY3VydmUucG9pbnRGcm9tWChyLmFkZCh0aGlzLmN1cnZlLm4pLGlzWU9kZCk7ZWxzZSByPXRoaXMuY3VydmUucG9pbnRGcm9tWChyLGlzWU9kZCk7dmFyIHJJbnY9c2lnbmF0dXJlJDEuci5pbnZtKG4pO3ZhciBzMT1uLnN1YihlKS5tdWwockludikudW1vZChuKTt2YXIgczI9cy5tdWwockludikudW1vZChuKTtyZXR1cm4gdGhpcy5nLm11bEFkZChzMSxyLHMyKX07RUMucHJvdG90eXBlLmdldEtleVJlY292ZXJ5UGFyYW09ZnVuY3Rpb24oZSxzaWduYXR1cmUkMSxRLGVuYyl7c2lnbmF0dXJlJDE9bmV3IHNpZ25hdHVyZShzaWduYXR1cmUkMSxlbmMpO2lmKHNpZ25hdHVyZSQxLnJlY292ZXJ5UGFyYW0hPT1udWxsKXJldHVybiBzaWduYXR1cmUkMS5yZWNvdmVyeVBhcmFtO2Zvcih2YXIgaT0wO2k8NDtpKyspe3ZhciBRcHJpbWU7dHJ5e1FwcmltZT10aGlzLnJlY292ZXJQdWJLZXkoZSxzaWduYXR1cmUkMSxpKX1jYXRjaChlKXtjb250aW51ZX1pZihRcHJpbWUuZXEoUSkpcmV0dXJuIGl9dGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCB2YWxpZCByZWNvdmVyeSBmYWN0b3IiKX07dmFyIGVsbGlwdGljXzE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgZWxsaXB0aWM9ZXhwb3J0cztlbGxpcHRpYy52ZXJzaW9uPXt2ZXJzaW9uOiI2LjUuNCJ9LnZlcnNpb247ZWxsaXB0aWMudXRpbHM9dXRpbHNfMSQxO2VsbGlwdGljLnJhbmQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIil9O2VsbGlwdGljLmN1cnZlPWN1cnZlXzE7ZWxsaXB0aWMuY3VydmVzPWN1cnZlc18xO2VsbGlwdGljLmVjPWVjO2VsbGlwdGljLmVkZHNhPW51bGx9KTt2YXIgZWxsaXB0aWM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19pbXBvcnREZWZhdWx0PWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKG1vZCl7cmV0dXJuIG1vZCYmbW9kLl9fZXNNb2R1bGU/bW9kOntkZWZhdWx0Om1vZH19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuRUM9dm9pZCAwO3ZhciBlbGxpcHRpY18xJDE9X19pbXBvcnREZWZhdWx0KGVsbGlwdGljXzEpO3ZhciBFQz1lbGxpcHRpY18xJDEuZGVmYXVsdC5lYztleHBvcnRzLkVDPUVDfSk7dmFyIGVsbGlwdGljJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoZWxsaXB0aWMpO3ZhciBfdmVyc2lvbiRtPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249InNpZ25pbmcta2V5LzUuNy4wIn0pO3ZhciBfdmVyc2lvbiRuPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJG0pO3ZhciBsaWIkZz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuY29tcHV0ZVB1YmxpY0tleT1leHBvcnRzLnJlY292ZXJQdWJsaWNLZXk9ZXhwb3J0cy5TaWduaW5nS2V5PXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJG0udmVyc2lvbik7dmFyIF9jdXJ2ZT1udWxsO2Z1bmN0aW9uIGdldEN1cnZlKCl7aWYoIV9jdXJ2ZSl7X2N1cnZlPW5ldyBlbGxpcHRpYy5FQygic2VjcDI1NmsxIil9cmV0dXJuIF9jdXJ2ZX12YXIgU2lnbmluZ0tleT1mdW5jdGlvbigpe2Z1bmN0aW9uIFNpZ25pbmdLZXkocHJpdmF0ZUtleSl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsImN1cnZlIiwic2VjcDI1NmsxIik7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsInByaXZhdGVLZXkiLCgwLGxpYiQxLmhleGxpZnkpKHByaXZhdGVLZXkpKTtpZigoMCxsaWIkMS5oZXhEYXRhTGVuZ3RoKSh0aGlzLnByaXZhdGVLZXkpIT09MzIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgcHJpdmF0ZSBrZXkiLCJwcml2YXRlS2V5IiwiW1sgUkVEQUNURUQgXV0iKX12YXIga2V5UGFpcj1nZXRDdXJ2ZSgpLmtleUZyb21Qcml2YXRlKCgwLGxpYiQxLmFycmF5aWZ5KSh0aGlzLnByaXZhdGVLZXkpKTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywicHVibGljS2V5IiwiMHgiK2tleVBhaXIuZ2V0UHVibGljKGZhbHNlLCJoZXgiKSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsImNvbXByZXNzZWRQdWJsaWNLZXkiLCIweCIra2V5UGFpci5nZXRQdWJsaWModHJ1ZSwiaGV4IikpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJfaXNTaWduaW5nS2V5Iix0cnVlKX1TaWduaW5nS2V5LnByb3RvdHlwZS5fYWRkUG9pbnQ9ZnVuY3Rpb24ob3RoZXIpe3ZhciBwMD1nZXRDdXJ2ZSgpLmtleUZyb21QdWJsaWMoKDAsbGliJDEuYXJyYXlpZnkpKHRoaXMucHVibGljS2V5KSk7dmFyIHAxPWdldEN1cnZlKCkua2V5RnJvbVB1YmxpYygoMCxsaWIkMS5hcnJheWlmeSkob3RoZXIpKTtyZXR1cm4iMHgiK3AwLnB1Yi5hZGQocDEucHViKS5lbmNvZGVDb21wcmVzc2VkKCJoZXgiKX07U2lnbmluZ0tleS5wcm90b3R5cGUuc2lnbkRpZ2VzdD1mdW5jdGlvbihkaWdlc3Qpe3ZhciBrZXlQYWlyPWdldEN1cnZlKCkua2V5RnJvbVByaXZhdGUoKDAsbGliJDEuYXJyYXlpZnkpKHRoaXMucHJpdmF0ZUtleSkpO3ZhciBkaWdlc3RCeXRlcz0oMCxsaWIkMS5hcnJheWlmeSkoZGlnZXN0KTtpZihkaWdlc3RCeXRlcy5sZW5ndGghPT0zMil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiYmFkIGRpZ2VzdCBsZW5ndGgiLCJkaWdlc3QiLGRpZ2VzdCl9dmFyIHNpZ25hdHVyZT1rZXlQYWlyLnNpZ24oZGlnZXN0Qnl0ZXMse2Nhbm9uaWNhbDp0cnVlfSk7cmV0dXJuKDAsbGliJDEuc3BsaXRTaWduYXR1cmUpKHtyZWNvdmVyeVBhcmFtOnNpZ25hdHVyZS5yZWNvdmVyeVBhcmFtLHI6KDAsbGliJDEuaGV4WmVyb1BhZCkoIjB4IitzaWduYXR1cmUuci50b1N0cmluZygxNiksMzIpLHM6KDAsbGliJDEuaGV4WmVyb1BhZCkoIjB4IitzaWduYXR1cmUucy50b1N0cmluZygxNiksMzIpfSl9O1NpZ25pbmdLZXkucHJvdG90eXBlLmNvbXB1dGVTaGFyZWRTZWNyZXQ9ZnVuY3Rpb24ob3RoZXJLZXkpe3ZhciBrZXlQYWlyPWdldEN1cnZlKCkua2V5RnJvbVByaXZhdGUoKDAsbGliJDEuYXJyYXlpZnkpKHRoaXMucHJpdmF0ZUtleSkpO3ZhciBvdGhlcktleVBhaXI9Z2V0Q3VydmUoKS5rZXlGcm9tUHVibGljKCgwLGxpYiQxLmFycmF5aWZ5KShjb21wdXRlUHVibGljS2V5KG90aGVyS2V5KSkpO3JldHVybigwLGxpYiQxLmhleFplcm9QYWQpKCIweCIra2V5UGFpci5kZXJpdmUob3RoZXJLZXlQYWlyLmdldFB1YmxpYygpKS50b1N0cmluZygxNiksMzIpfTtTaWduaW5nS2V5LmlzU2lnbmluZ0tleT1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUmJnZhbHVlLl9pc1NpZ25pbmdLZXkpfTtyZXR1cm4gU2lnbmluZ0tleX0oKTtleHBvcnRzLlNpZ25pbmdLZXk9U2lnbmluZ0tleTtmdW5jdGlvbiByZWNvdmVyUHVibGljS2V5KGRpZ2VzdCxzaWduYXR1cmUpe3ZhciBzaWc9KDAsbGliJDEuc3BsaXRTaWduYXR1cmUpKHNpZ25hdHVyZSk7dmFyIHJzPXtyOigwLGxpYiQxLmFycmF5aWZ5KShzaWcuciksczooMCxsaWIkMS5hcnJheWlmeSkoc2lnLnMpfTtyZXR1cm4iMHgiK2dldEN1cnZlKCkucmVjb3ZlclB1YktleSgoMCxsaWIkMS5hcnJheWlmeSkoZGlnZXN0KSxycyxzaWcucmVjb3ZlcnlQYXJhbSkuZW5jb2RlKCJoZXgiLGZhbHNlKX1leHBvcnRzLnJlY292ZXJQdWJsaWNLZXk9cmVjb3ZlclB1YmxpY0tleTtmdW5jdGlvbiBjb21wdXRlUHVibGljS2V5KGtleSxjb21wcmVzc2VkKXt2YXIgYnl0ZXM9KDAsbGliJDEuYXJyYXlpZnkpKGtleSk7aWYoYnl0ZXMubGVuZ3RoPT09MzIpe3ZhciBzaWduaW5nS2V5PW5ldyBTaWduaW5nS2V5KGJ5dGVzKTtpZihjb21wcmVzc2VkKXtyZXR1cm4iMHgiK2dldEN1cnZlKCkua2V5RnJvbVByaXZhdGUoYnl0ZXMpLmdldFB1YmxpYyh0cnVlLCJoZXgiKX1yZXR1cm4gc2lnbmluZ0tleS5wdWJsaWNLZXl9ZWxzZSBpZihieXRlcy5sZW5ndGg9PT0zMyl7aWYoY29tcHJlc3NlZCl7cmV0dXJuKDAsbGliJDEuaGV4bGlmeSkoYnl0ZXMpfXJldHVybiIweCIrZ2V0Q3VydmUoKS5rZXlGcm9tUHVibGljKGJ5dGVzKS5nZXRQdWJsaWMoZmFsc2UsImhleCIpfWVsc2UgaWYoYnl0ZXMubGVuZ3RoPT09NjUpe2lmKCFjb21wcmVzc2VkKXtyZXR1cm4oMCxsaWIkMS5oZXhsaWZ5KShieXRlcyl9cmV0dXJuIjB4IitnZXRDdXJ2ZSgpLmtleUZyb21QdWJsaWMoYnl0ZXMpLmdldFB1YmxpYyh0cnVlLCJoZXgiKX1yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBwdWJsaWMgb3IgcHJpdmF0ZSBrZXkiLCJrZXkiLCJbUkVEQUNURURdIil9ZXhwb3J0cy5jb21wdXRlUHVibGljS2V5PWNvbXB1dGVQdWJsaWNLZXl9KTt2YXIgaW5kZXgkZT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkZyk7dmFyIF92ZXJzaW9uJG89Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0idHJhbnNhY3Rpb25zLzUuNy4wIn0pO3ZhciBfdmVyc2lvbiRwPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJG8pO3ZhciBsaWIkaD1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2NyZWF0ZUJpbmRpbmc9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24obyxtLGssazIpe2lmKGsyPT09dW5kZWZpbmVkKWsyPWs7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sazIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbVtrXX19KX06ZnVuY3Rpb24obyxtLGssazIpe2lmKGsyPT09dW5kZWZpbmVkKWsyPWs7b1trMl09bVtrXX0pO3ZhciBfX3NldE1vZHVsZURlZmF1bHQ9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24obyx2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkobywiZGVmYXVsdCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp2fSl9OmZ1bmN0aW9uKG8sdil7b1siZGVmYXVsdCJdPXZ9KTt2YXIgX19pbXBvcnRTdGFyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKG1vZCl7aWYobW9kJiZtb2QuX19lc01vZHVsZSlyZXR1cm4gbW9kO3ZhciByZXN1bHQ9e307aWYobW9kIT1udWxsKWZvcih2YXIgayBpbiBtb2QpaWYoayE9PSJkZWZhdWx0IiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCxrKSlfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LG1vZCxrKTtfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LG1vZCk7cmV0dXJuIHJlc3VsdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5wYXJzZT1leHBvcnRzLnNlcmlhbGl6ZT1leHBvcnRzLmFjY2Vzc0xpc3RpZnk9ZXhwb3J0cy5yZWNvdmVyQWRkcmVzcz1leHBvcnRzLmNvbXB1dGVBZGRyZXNzPWV4cG9ydHMuVHJhbnNhY3Rpb25UeXBlcz12b2lkIDA7dmFyIFJMUD1fX2ltcG9ydFN0YXIobGliJDUpO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kby52ZXJzaW9uKTt2YXIgVHJhbnNhY3Rpb25UeXBlczsoZnVuY3Rpb24oVHJhbnNhY3Rpb25UeXBlcyl7VHJhbnNhY3Rpb25UeXBlc1tUcmFuc2FjdGlvblR5cGVzWyJsZWdhY3kiXT0wXT0ibGVnYWN5IjtUcmFuc2FjdGlvblR5cGVzW1RyYW5zYWN0aW9uVHlwZXNbImVpcDI5MzAiXT0xXT0iZWlwMjkzMCI7VHJhbnNhY3Rpb25UeXBlc1tUcmFuc2FjdGlvblR5cGVzWyJlaXAxNTU5Il09Ml09ImVpcDE1NTkifSkoVHJhbnNhY3Rpb25UeXBlcz1leHBvcnRzLlRyYW5zYWN0aW9uVHlwZXN8fChleHBvcnRzLlRyYW5zYWN0aW9uVHlwZXM9e30pKTtmdW5jdGlvbiBoYW5kbGVBZGRyZXNzKHZhbHVlKXtpZih2YWx1ZT09PSIweCIpe3JldHVybiBudWxsfXJldHVybigwLGxpYiQ2LmdldEFkZHJlc3MpKHZhbHVlKX1mdW5jdGlvbiBoYW5kbGVOdW1iZXIodmFsdWUpe2lmKHZhbHVlPT09IjB4Iil7cmV0dXJuIGxpYiQ3Llplcm99cmV0dXJuIGxpYiQyLkJpZ051bWJlci5mcm9tKHZhbHVlKX12YXIgdHJhbnNhY3Rpb25GaWVsZHM9W3tuYW1lOiJub25jZSIsbWF4TGVuZ3RoOjMyLG51bWVyaWM6dHJ1ZX0se25hbWU6Imdhc1ByaWNlIixtYXhMZW5ndGg6MzIsbnVtZXJpYzp0cnVlfSx7bmFtZToiZ2FzTGltaXQiLG1heExlbmd0aDozMixudW1lcmljOnRydWV9LHtuYW1lOiJ0byIsbGVuZ3RoOjIwfSx7bmFtZToidmFsdWUiLG1heExlbmd0aDozMixudW1lcmljOnRydWV9LHtuYW1lOiJkYXRhIn1dO3ZhciBhbGxvd2VkVHJhbnNhY3Rpb25LZXlzPXtjaGFpbklkOnRydWUsZGF0YTp0cnVlLGdhc0xpbWl0OnRydWUsZ2FzUHJpY2U6dHJ1ZSxub25jZTp0cnVlLHRvOnRydWUsdHlwZTp0cnVlLHZhbHVlOnRydWV9O2Z1bmN0aW9uIGNvbXB1dGVBZGRyZXNzKGtleSl7dmFyIHB1YmxpY0tleT0oMCxsaWIkZy5jb21wdXRlUHVibGljS2V5KShrZXkpO3JldHVybigwLGxpYiQ2LmdldEFkZHJlc3MpKCgwLGxpYiQxLmhleERhdGFTbGljZSkoKDAsbGliJDQua2VjY2FrMjU2KSgoMCxsaWIkMS5oZXhEYXRhU2xpY2UpKHB1YmxpY0tleSwxKSksMTIpKX1leHBvcnRzLmNvbXB1dGVBZGRyZXNzPWNvbXB1dGVBZGRyZXNzO2Z1bmN0aW9uIHJlY292ZXJBZGRyZXNzKGRpZ2VzdCxzaWduYXR1cmUpe3JldHVybiBjb21wdXRlQWRkcmVzcygoMCxsaWIkZy5yZWNvdmVyUHVibGljS2V5KSgoMCxsaWIkMS5hcnJheWlmeSkoZGlnZXN0KSxzaWduYXR1cmUpKX1leHBvcnRzLnJlY292ZXJBZGRyZXNzPXJlY292ZXJBZGRyZXNzO2Z1bmN0aW9uIGZvcm1hdE51bWJlcih2YWx1ZSxuYW1lKXt2YXIgcmVzdWx0PSgwLGxpYiQxLnN0cmlwWmVyb3MpKGxpYiQyLkJpZ051bWJlci5mcm9tKHZhbHVlKS50b0hleFN0cmluZygpKTtpZihyZXN1bHQubGVuZ3RoPjMyKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGxlbmd0aCBmb3IgIituYW1lLCJ0cmFuc2FjdGlvbjoiK25hbWUsdmFsdWUpfXJldHVybiByZXN1bHR9ZnVuY3Rpb24gYWNjZXNzU2V0aWZ5KGFkZHIsc3RvcmFnZUtleXMpe3JldHVybnthZGRyZXNzOigwLGxpYiQ2LmdldEFkZHJlc3MpKGFkZHIpLHN0b3JhZ2VLZXlzOihzdG9yYWdlS2V5c3x8W10pLm1hcChmdW5jdGlvbihzdG9yYWdlS2V5LGluZGV4KXtpZigoMCxsaWIkMS5oZXhEYXRhTGVuZ3RoKShzdG9yYWdlS2V5KSE9PTMyKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGFjY2VzcyBsaXN0IHN0b3JhZ2VLZXkiLCJhY2Nlc3NMaXN0WyIrYWRkcisiOiIraW5kZXgrIl0iLHN0b3JhZ2VLZXkpfXJldHVybiBzdG9yYWdlS2V5LnRvTG93ZXJDYXNlKCl9KX19ZnVuY3Rpb24gYWNjZXNzTGlzdGlmeSh2YWx1ZSl7aWYoQXJyYXkuaXNBcnJheSh2YWx1ZSkpe3JldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24oc2V0LGluZGV4KXtpZihBcnJheS5pc0FycmF5KHNldCkpe2lmKHNldC5sZW5ndGg+Mil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiYWNjZXNzIGxpc3QgZXhwZWN0ZWQgdG8gYmUgWyBhZGRyZXNzLCBzdG9yYWdlS2V5c1tdIF0iLCJ2YWx1ZVsiK2luZGV4KyJdIixzZXQpfXJldHVybiBhY2Nlc3NTZXRpZnkoc2V0WzBdLHNldFsxXSl9cmV0dXJuIGFjY2Vzc1NldGlmeShzZXQuYWRkcmVzcyxzZXQuc3RvcmFnZUtleXMpfSl9dmFyIHJlc3VsdD1PYmplY3Qua2V5cyh2YWx1ZSkubWFwKGZ1bmN0aW9uKGFkZHIpe3ZhciBzdG9yYWdlS2V5cz12YWx1ZVthZGRyXS5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sc3RvcmFnZUtleSl7YWNjdW1bc3RvcmFnZUtleV09dHJ1ZTtyZXR1cm4gYWNjdW19LHt9KTtyZXR1cm4gYWNjZXNzU2V0aWZ5KGFkZHIsT2JqZWN0LmtleXMoc3RvcmFnZUtleXMpLnNvcnQoKSl9KTtyZXN1bHQuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLmFkZHJlc3MubG9jYWxlQ29tcGFyZShiLmFkZHJlc3MpfSk7cmV0dXJuIHJlc3VsdH1leHBvcnRzLmFjY2Vzc0xpc3RpZnk9YWNjZXNzTGlzdGlmeTtmdW5jdGlvbiBmb3JtYXRBY2Nlc3NMaXN0KHZhbHVlKXtyZXR1cm4gYWNjZXNzTGlzdGlmeSh2YWx1ZSkubWFwKGZ1bmN0aW9uKHNldCl7cmV0dXJuW3NldC5hZGRyZXNzLHNldC5zdG9yYWdlS2V5c119KX1mdW5jdGlvbiBfc2VyaWFsaXplRWlwMTU1OSh0cmFuc2FjdGlvbixzaWduYXR1cmUpe2lmKHRyYW5zYWN0aW9uLmdhc1ByaWNlIT1udWxsKXt2YXIgZ2FzUHJpY2U9bGliJDIuQmlnTnVtYmVyLmZyb20odHJhbnNhY3Rpb24uZ2FzUHJpY2UpO3ZhciBtYXhGZWVQZXJHYXM9bGliJDIuQmlnTnVtYmVyLmZyb20odHJhbnNhY3Rpb24ubWF4RmVlUGVyR2FzfHwwKTtpZighZ2FzUHJpY2UuZXEobWF4RmVlUGVyR2FzKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibWlzbWF0Y2ggRUlQLTE1NTkgZ2FzUHJpY2UgIT0gbWF4RmVlUGVyR2FzIiwidHgiLHtnYXNQcmljZTpnYXNQcmljZSxtYXhGZWVQZXJHYXM6bWF4RmVlUGVyR2FzfSl9fXZhciBmaWVsZHM9W2Zvcm1hdE51bWJlcih0cmFuc2FjdGlvbi5jaGFpbklkfHwwLCJjaGFpbklkIiksZm9ybWF0TnVtYmVyKHRyYW5zYWN0aW9uLm5vbmNlfHwwLCJub25jZSIpLGZvcm1hdE51bWJlcih0cmFuc2FjdGlvbi5tYXhQcmlvcml0eUZlZVBlckdhc3x8MCwibWF4UHJpb3JpdHlGZWVQZXJHYXMiKSxmb3JtYXROdW1iZXIodHJhbnNhY3Rpb24ubWF4RmVlUGVyR2FzfHwwLCJtYXhGZWVQZXJHYXMiKSxmb3JtYXROdW1iZXIodHJhbnNhY3Rpb24uZ2FzTGltaXR8fDAsImdhc0xpbWl0IiksdHJhbnNhY3Rpb24udG8hPW51bGw/KDAsbGliJDYuZ2V0QWRkcmVzcykodHJhbnNhY3Rpb24udG8pOiIweCIsZm9ybWF0TnVtYmVyKHRyYW5zYWN0aW9uLnZhbHVlfHwwLCJ2YWx1ZSIpLHRyYW5zYWN0aW9uLmRhdGF8fCIweCIsZm9ybWF0QWNjZXNzTGlzdCh0cmFuc2FjdGlvbi5hY2Nlc3NMaXN0fHxbXSldO2lmKHNpZ25hdHVyZSl7dmFyIHNpZz0oMCxsaWIkMS5zcGxpdFNpZ25hdHVyZSkoc2lnbmF0dXJlKTtmaWVsZHMucHVzaChmb3JtYXROdW1iZXIoc2lnLnJlY292ZXJ5UGFyYW0sInJlY292ZXJ5UGFyYW0iKSk7ZmllbGRzLnB1c2goKDAsbGliJDEuc3RyaXBaZXJvcykoc2lnLnIpKTtmaWVsZHMucHVzaCgoMCxsaWIkMS5zdHJpcFplcm9zKShzaWcucykpfXJldHVybigwLGxpYiQxLmhleENvbmNhdCkoWyIweDAyIixSTFAuZW5jb2RlKGZpZWxkcyldKX1mdW5jdGlvbiBfc2VyaWFsaXplRWlwMjkzMCh0cmFuc2FjdGlvbixzaWduYXR1cmUpe3ZhciBmaWVsZHM9W2Zvcm1hdE51bWJlcih0cmFuc2FjdGlvbi5jaGFpbklkfHwwLCJjaGFpbklkIiksZm9ybWF0TnVtYmVyKHRyYW5zYWN0aW9uLm5vbmNlfHwwLCJub25jZSIpLGZvcm1hdE51bWJlcih0cmFuc2FjdGlvbi5nYXNQcmljZXx8MCwiZ2FzUHJpY2UiKSxmb3JtYXROdW1iZXIodHJhbnNhY3Rpb24uZ2FzTGltaXR8fDAsImdhc0xpbWl0IiksdHJhbnNhY3Rpb24udG8hPW51bGw/KDAsbGliJDYuZ2V0QWRkcmVzcykodHJhbnNhY3Rpb24udG8pOiIweCIsZm9ybWF0TnVtYmVyKHRyYW5zYWN0aW9uLnZhbHVlfHwwLCJ2YWx1ZSIpLHRyYW5zYWN0aW9uLmRhdGF8fCIweCIsZm9ybWF0QWNjZXNzTGlzdCh0cmFuc2FjdGlvbi5hY2Nlc3NMaXN0fHxbXSldO2lmKHNpZ25hdHVyZSl7dmFyIHNpZz0oMCxsaWIkMS5zcGxpdFNpZ25hdHVyZSkoc2lnbmF0dXJlKTtmaWVsZHMucHVzaChmb3JtYXROdW1iZXIoc2lnLnJlY292ZXJ5UGFyYW0sInJlY292ZXJ5UGFyYW0iKSk7ZmllbGRzLnB1c2goKDAsbGliJDEuc3RyaXBaZXJvcykoc2lnLnIpKTtmaWVsZHMucHVzaCgoMCxsaWIkMS5zdHJpcFplcm9zKShzaWcucykpfXJldHVybigwLGxpYiQxLmhleENvbmNhdCkoWyIweDAxIixSTFAuZW5jb2RlKGZpZWxkcyldKX1mdW5jdGlvbiBfc2VyaWFsaXplKHRyYW5zYWN0aW9uLHNpZ25hdHVyZSl7KDAsbGliJDMuY2hlY2tQcm9wZXJ0aWVzKSh0cmFuc2FjdGlvbixhbGxvd2VkVHJhbnNhY3Rpb25LZXlzKTt2YXIgcmF3PVtdO3RyYW5zYWN0aW9uRmllbGRzLmZvckVhY2goZnVuY3Rpb24oZmllbGRJbmZvKXt2YXIgdmFsdWU9dHJhbnNhY3Rpb25bZmllbGRJbmZvLm5hbWVdfHxbXTt2YXIgb3B0aW9ucz17fTtpZihmaWVsZEluZm8ubnVtZXJpYyl7b3B0aW9ucy5oZXhQYWQ9ImxlZnQifXZhbHVlPSgwLGxpYiQxLmFycmF5aWZ5KSgoMCxsaWIkMS5oZXhsaWZ5KSh2YWx1ZSxvcHRpb25zKSk7aWYoZmllbGRJbmZvLmxlbmd0aCYmdmFsdWUubGVuZ3RoIT09ZmllbGRJbmZvLmxlbmd0aCYmdmFsdWUubGVuZ3RoPjApe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgbGVuZ3RoIGZvciAiK2ZpZWxkSW5mby5uYW1lLCJ0cmFuc2FjdGlvbjoiK2ZpZWxkSW5mby5uYW1lLHZhbHVlKX1pZihmaWVsZEluZm8ubWF4TGVuZ3RoKXt2YWx1ZT0oMCxsaWIkMS5zdHJpcFplcm9zKSh2YWx1ZSk7aWYodmFsdWUubGVuZ3RoPmZpZWxkSW5mby5tYXhMZW5ndGgpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgbGVuZ3RoIGZvciAiK2ZpZWxkSW5mby5uYW1lLCJ0cmFuc2FjdGlvbjoiK2ZpZWxkSW5mby5uYW1lLHZhbHVlKX19cmF3LnB1c2goKDAsbGliJDEuaGV4bGlmeSkodmFsdWUpKX0pO3ZhciBjaGFpbklkPTA7aWYodHJhbnNhY3Rpb24uY2hhaW5JZCE9bnVsbCl7Y2hhaW5JZD10cmFuc2FjdGlvbi5jaGFpbklkO2lmKHR5cGVvZiBjaGFpbklkIT09Im51bWJlciIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdHJhbnNhY3Rpb24uY2hhaW5JZCIsInRyYW5zYWN0aW9uIix0cmFuc2FjdGlvbil9fWVsc2UgaWYoc2lnbmF0dXJlJiYhKDAsbGliJDEuaXNCeXRlc0xpa2UpKHNpZ25hdHVyZSkmJnNpZ25hdHVyZS52PjI4KXtjaGFpbklkPU1hdGguZmxvb3IoKHNpZ25hdHVyZS52LTM1KS8yKX1pZihjaGFpbklkIT09MCl7cmF3LnB1c2goKDAsbGliJDEuaGV4bGlmeSkoY2hhaW5JZCkpO3Jhdy5wdXNoKCIweCIpO3Jhdy5wdXNoKCIweCIpfWlmKCFzaWduYXR1cmUpe3JldHVybiBSTFAuZW5jb2RlKHJhdyl9dmFyIHNpZz0oMCxsaWIkMS5zcGxpdFNpZ25hdHVyZSkoc2lnbmF0dXJlKTt2YXIgdj0yNytzaWcucmVjb3ZlcnlQYXJhbTtpZihjaGFpbklkIT09MCl7cmF3LnBvcCgpO3Jhdy5wb3AoKTtyYXcucG9wKCk7dis9Y2hhaW5JZCoyKzg7aWYoc2lnLnY+MjgmJnNpZy52IT09dil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidHJhbnNhY3Rpb24uY2hhaW5JZC9zaWduYXR1cmUudiBtaXNtYXRjaCIsInNpZ25hdHVyZSIsc2lnbmF0dXJlKX19ZWxzZSBpZihzaWcudiE9PXYpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInRyYW5zYWN0aW9uLmNoYWluSWQvc2lnbmF0dXJlLnYgbWlzbWF0Y2giLCJzaWduYXR1cmUiLHNpZ25hdHVyZSl9cmF3LnB1c2goKDAsbGliJDEuaGV4bGlmeSkodikpO3Jhdy5wdXNoKCgwLGxpYiQxLnN0cmlwWmVyb3MpKCgwLGxpYiQxLmFycmF5aWZ5KShzaWcucikpKTtyYXcucHVzaCgoMCxsaWIkMS5zdHJpcFplcm9zKSgoMCxsaWIkMS5hcnJheWlmeSkoc2lnLnMpKSk7cmV0dXJuIFJMUC5lbmNvZGUocmF3KX1mdW5jdGlvbiBzZXJpYWxpemUodHJhbnNhY3Rpb24sc2lnbmF0dXJlKXtpZih0cmFuc2FjdGlvbi50eXBlPT1udWxsfHx0cmFuc2FjdGlvbi50eXBlPT09MCl7aWYodHJhbnNhY3Rpb24uYWNjZXNzTGlzdCE9bnVsbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW50eXBlZCB0cmFuc2FjdGlvbnMgZG8gbm90IHN1cHBvcnQgYWNjZXNzTGlzdDsgaW5jbHVkZSB0eXBlOiAxIiwidHJhbnNhY3Rpb24iLHRyYW5zYWN0aW9uKX1yZXR1cm4gX3NlcmlhbGl6ZSh0cmFuc2FjdGlvbixzaWduYXR1cmUpfXN3aXRjaCh0cmFuc2FjdGlvbi50eXBlKXtjYXNlIDE6cmV0dXJuIF9zZXJpYWxpemVFaXAyOTMwKHRyYW5zYWN0aW9uLHNpZ25hdHVyZSk7Y2FzZSAyOnJldHVybiBfc2VyaWFsaXplRWlwMTU1OSh0cmFuc2FjdGlvbixzaWduYXR1cmUpO2RlZmF1bHQ6YnJlYWt9cmV0dXJuIGxvZ2dlci50aHJvd0Vycm9yKCJ1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlOiAiK3RyYW5zYWN0aW9uLnR5cGUsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246InNlcmlhbGl6ZVRyYW5zYWN0aW9uIix0cmFuc2FjdGlvblR5cGU6dHJhbnNhY3Rpb24udHlwZX0pfWV4cG9ydHMuc2VyaWFsaXplPXNlcmlhbGl6ZTtmdW5jdGlvbiBfcGFyc2VFaXBTaWduYXR1cmUodHgsZmllbGRzLHNlcmlhbGl6ZSl7dHJ5e3ZhciByZWNpZD1oYW5kbGVOdW1iZXIoZmllbGRzWzBdKS50b051bWJlcigpO2lmKHJlY2lkIT09MCYmcmVjaWQhPT0xKXt0aHJvdyBuZXcgRXJyb3IoImJhZCByZWNpZCIpfXR4LnY9cmVjaWR9Y2F0Y2goZXJyb3Ipe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdiBmb3IgdHJhbnNhY3Rpb24gdHlwZTogMSIsInYiLGZpZWxkc1swXSl9dHgucj0oMCxsaWIkMS5oZXhaZXJvUGFkKShmaWVsZHNbMV0sMzIpO3R4LnM9KDAsbGliJDEuaGV4WmVyb1BhZCkoZmllbGRzWzJdLDMyKTt0cnl7dmFyIGRpZ2VzdD0oMCxsaWIkNC5rZWNjYWsyNTYpKHNlcmlhbGl6ZSh0eCkpO3R4LmZyb209cmVjb3ZlckFkZHJlc3MoZGlnZXN0LHtyOnR4LnIsczp0eC5zLHJlY292ZXJ5UGFyYW06dHgudn0pfWNhdGNoKGVycm9yKXt9fWZ1bmN0aW9uIF9wYXJzZUVpcDE1NTkocGF5bG9hZCl7dmFyIHRyYW5zYWN0aW9uPVJMUC5kZWNvZGUocGF5bG9hZC5zbGljZSgxKSk7aWYodHJhbnNhY3Rpb24ubGVuZ3RoIT09OSYmdHJhbnNhY3Rpb24ubGVuZ3RoIT09MTIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgY29tcG9uZW50IGNvdW50IGZvciB0cmFuc2FjdGlvbiB0eXBlOiAyIiwicGF5bG9hZCIsKDAsbGliJDEuaGV4bGlmeSkocGF5bG9hZCkpfXZhciBtYXhQcmlvcml0eUZlZVBlckdhcz1oYW5kbGVOdW1iZXIodHJhbnNhY3Rpb25bMl0pO3ZhciBtYXhGZWVQZXJHYXM9aGFuZGxlTnVtYmVyKHRyYW5zYWN0aW9uWzNdKTt2YXIgdHg9e3R5cGU6MixjaGFpbklkOmhhbmRsZU51bWJlcih0cmFuc2FjdGlvblswXSkudG9OdW1iZXIoKSxub25jZTpoYW5kbGVOdW1iZXIodHJhbnNhY3Rpb25bMV0pLnRvTnVtYmVyKCksbWF4UHJpb3JpdHlGZWVQZXJHYXM6bWF4UHJpb3JpdHlGZWVQZXJHYXMsbWF4RmVlUGVyR2FzOm1heEZlZVBlckdhcyxnYXNQcmljZTpudWxsLGdhc0xpbWl0OmhhbmRsZU51bWJlcih0cmFuc2FjdGlvbls0XSksdG86aGFuZGxlQWRkcmVzcyh0cmFuc2FjdGlvbls1XSksdmFsdWU6aGFuZGxlTnVtYmVyKHRyYW5zYWN0aW9uWzZdKSxkYXRhOnRyYW5zYWN0aW9uWzddLGFjY2Vzc0xpc3Q6YWNjZXNzTGlzdGlmeSh0cmFuc2FjdGlvbls4XSl9O2lmKHRyYW5zYWN0aW9uLmxlbmd0aD09PTkpe3JldHVybiB0eH10eC5oYXNoPSgwLGxpYiQ0LmtlY2NhazI1NikocGF5bG9hZCk7X3BhcnNlRWlwU2lnbmF0dXJlKHR4LHRyYW5zYWN0aW9uLnNsaWNlKDkpLF9zZXJpYWxpemVFaXAxNTU5KTtyZXR1cm4gdHh9ZnVuY3Rpb24gX3BhcnNlRWlwMjkzMChwYXlsb2FkKXt2YXIgdHJhbnNhY3Rpb249UkxQLmRlY29kZShwYXlsb2FkLnNsaWNlKDEpKTtpZih0cmFuc2FjdGlvbi5sZW5ndGghPT04JiZ0cmFuc2FjdGlvbi5sZW5ndGghPT0xMSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBjb21wb25lbnQgY291bnQgZm9yIHRyYW5zYWN0aW9uIHR5cGU6IDEiLCJwYXlsb2FkIiwoMCxsaWIkMS5oZXhsaWZ5KShwYXlsb2FkKSl9dmFyIHR4PXt0eXBlOjEsY2hhaW5JZDpoYW5kbGVOdW1iZXIodHJhbnNhY3Rpb25bMF0pLnRvTnVtYmVyKCksbm9uY2U6aGFuZGxlTnVtYmVyKHRyYW5zYWN0aW9uWzFdKS50b051bWJlcigpLGdhc1ByaWNlOmhhbmRsZU51bWJlcih0cmFuc2FjdGlvblsyXSksZ2FzTGltaXQ6aGFuZGxlTnVtYmVyKHRyYW5zYWN0aW9uWzNdKSx0bzpoYW5kbGVBZGRyZXNzKHRyYW5zYWN0aW9uWzRdKSx2YWx1ZTpoYW5kbGVOdW1iZXIodHJhbnNhY3Rpb25bNV0pLGRhdGE6dHJhbnNhY3Rpb25bNl0sYWNjZXNzTGlzdDphY2Nlc3NMaXN0aWZ5KHRyYW5zYWN0aW9uWzddKX07aWYodHJhbnNhY3Rpb24ubGVuZ3RoPT09OCl7cmV0dXJuIHR4fXR4Lmhhc2g9KDAsbGliJDQua2VjY2FrMjU2KShwYXlsb2FkKTtfcGFyc2VFaXBTaWduYXR1cmUodHgsdHJhbnNhY3Rpb24uc2xpY2UoOCksX3NlcmlhbGl6ZUVpcDI5MzApO3JldHVybiB0eH1mdW5jdGlvbiBfcGFyc2UocmF3VHJhbnNhY3Rpb24pe3ZhciB0cmFuc2FjdGlvbj1STFAuZGVjb2RlKHJhd1RyYW5zYWN0aW9uKTtpZih0cmFuc2FjdGlvbi5sZW5ndGghPT05JiZ0cmFuc2FjdGlvbi5sZW5ndGghPT02KXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIHJhdyB0cmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIixyYXdUcmFuc2FjdGlvbil9dmFyIHR4PXtub25jZTpoYW5kbGVOdW1iZXIodHJhbnNhY3Rpb25bMF0pLnRvTnVtYmVyKCksZ2FzUHJpY2U6aGFuZGxlTnVtYmVyKHRyYW5zYWN0aW9uWzFdKSxnYXNMaW1pdDpoYW5kbGVOdW1iZXIodHJhbnNhY3Rpb25bMl0pLHRvOmhhbmRsZUFkZHJlc3ModHJhbnNhY3Rpb25bM10pLHZhbHVlOmhhbmRsZU51bWJlcih0cmFuc2FjdGlvbls0XSksZGF0YTp0cmFuc2FjdGlvbls1XSxjaGFpbklkOjB9O2lmKHRyYW5zYWN0aW9uLmxlbmd0aD09PTYpe3JldHVybiB0eH10cnl7dHgudj1saWIkMi5CaWdOdW1iZXIuZnJvbSh0cmFuc2FjdGlvbls2XSkudG9OdW1iZXIoKX1jYXRjaChlcnJvcil7cmV0dXJuIHR4fXR4LnI9KDAsbGliJDEuaGV4WmVyb1BhZCkodHJhbnNhY3Rpb25bN10sMzIpO3R4LnM9KDAsbGliJDEuaGV4WmVyb1BhZCkodHJhbnNhY3Rpb25bOF0sMzIpO2lmKGxpYiQyLkJpZ051bWJlci5mcm9tKHR4LnIpLmlzWmVybygpJiZsaWIkMi5CaWdOdW1iZXIuZnJvbSh0eC5zKS5pc1plcm8oKSl7dHguY2hhaW5JZD10eC52O3R4LnY9MH1lbHNle3R4LmNoYWluSWQ9TWF0aC5mbG9vcigodHgudi0zNSkvMik7aWYodHguY2hhaW5JZDwwKXt0eC5jaGFpbklkPTB9dmFyIHJlY292ZXJ5UGFyYW09dHgudi0yNzt2YXIgcmF3PXRyYW5zYWN0aW9uLnNsaWNlKDAsNik7aWYodHguY2hhaW5JZCE9PTApe3Jhdy5wdXNoKCgwLGxpYiQxLmhleGxpZnkpKHR4LmNoYWluSWQpKTtyYXcucHVzaCgiMHgiKTtyYXcucHVzaCgiMHgiKTtyZWNvdmVyeVBhcmFtLT10eC5jaGFpbklkKjIrOH12YXIgZGlnZXN0PSgwLGxpYiQ0LmtlY2NhazI1NikoUkxQLmVuY29kZShyYXcpKTt0cnl7dHguZnJvbT1yZWNvdmVyQWRkcmVzcyhkaWdlc3Qse3I6KDAsbGliJDEuaGV4bGlmeSkodHguciksczooMCxsaWIkMS5oZXhsaWZ5KSh0eC5zKSxyZWNvdmVyeVBhcmFtOnJlY292ZXJ5UGFyYW19KX1jYXRjaChlcnJvcil7fXR4Lmhhc2g9KDAsbGliJDQua2VjY2FrMjU2KShyYXdUcmFuc2FjdGlvbil9dHgudHlwZT1udWxsO3JldHVybiB0eH1mdW5jdGlvbiBwYXJzZShyYXdUcmFuc2FjdGlvbil7dmFyIHBheWxvYWQ9KDAsbGliJDEuYXJyYXlpZnkpKHJhd1RyYW5zYWN0aW9uKTtpZihwYXlsb2FkWzBdPjEyNyl7cmV0dXJuIF9wYXJzZShwYXlsb2FkKX1zd2l0Y2gocGF5bG9hZFswXSl7Y2FzZSAxOnJldHVybiBfcGFyc2VFaXAyOTMwKHBheWxvYWQpO2Nhc2UgMjpyZXR1cm4gX3BhcnNlRWlwMTU1OShwYXlsb2FkKTtkZWZhdWx0OmJyZWFrfXJldHVybiBsb2dnZXIudGhyb3dFcnJvcigidW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24gdHlwZTogIitwYXlsb2FkWzBdLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJwYXJzZVRyYW5zYWN0aW9uIix0cmFuc2FjdGlvblR5cGU6cGF5bG9hZFswXX0pfWV4cG9ydHMucGFyc2U9cGFyc2V9KTt2YXIgaW5kZXgkZj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkaCk7dmFyIF92ZXJzaW9uJHE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0iY29udHJhY3RzLzUuNy4wIn0pO3ZhciBfdmVyc2lvbiRyPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJHEpO3ZhciBsaWIkaT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O3ZhciBfX3NwcmVhZEFycmF5PWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX3NwcmVhZEFycmF5fHxmdW5jdGlvbih0byxmcm9tLHBhY2spe2lmKHBhY2t8fGFyZ3VtZW50cy5sZW5ndGg9PT0yKWZvcih2YXIgaT0wLGw9ZnJvbS5sZW5ndGgsYXI7aTxsO2krKyl7aWYoYXJ8fCEoaSBpbiBmcm9tKSl7aWYoIWFyKWFyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sMCxpKTthcltpXT1mcm9tW2ldfX1yZXR1cm4gdG8uY29uY2F0KGFyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQ29udHJhY3RGYWN0b3J5PWV4cG9ydHMuQ29udHJhY3Q9ZXhwb3J0cy5CYXNlQ29udHJhY3Q9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kcS52ZXJzaW9uKTt2YXIgYWxsb3dlZFRyYW5zYWN0aW9uS2V5cz17Y2hhaW5JZDp0cnVlLGRhdGE6dHJ1ZSxmcm9tOnRydWUsZ2FzTGltaXQ6dHJ1ZSxnYXNQcmljZTp0cnVlLG5vbmNlOnRydWUsdG86dHJ1ZSx2YWx1ZTp0cnVlLHR5cGU6dHJ1ZSxhY2Nlc3NMaXN0OnRydWUsbWF4RmVlUGVyR2FzOnRydWUsbWF4UHJpb3JpdHlGZWVQZXJHYXM6dHJ1ZSxjdXN0b21EYXRhOnRydWUsY2NpcFJlYWRFbmFibGVkOnRydWV9O2Z1bmN0aW9uIHJlc29sdmVOYW1lKHJlc29sdmVyLG5hbWVPclByb21pc2Upe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5hbWUsYWRkcmVzcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsbmFtZU9yUHJvbWlzZV07Y2FzZSAxOm5hbWU9X2Euc2VudCgpO2lmKHR5cGVvZiBuYW1lIT09InN0cmluZyIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYWRkcmVzcyBvciBFTlMgbmFtZSIsIm5hbWUiLG5hbWUpfXRyeXtyZXR1cm5bMiwoMCxsaWIkNi5nZXRBZGRyZXNzKShuYW1lKV19Y2F0Y2goZXJyb3Ipe31pZighcmVzb2x2ZXIpe2xvZ2dlci50aHJvd0Vycm9yKCJhIHByb3ZpZGVyIG9yIHNpZ25lciBpcyBuZWVkZWQgdG8gcmVzb2x2ZSBFTlMgbmFtZXMiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJyZXNvbHZlTmFtZSJ9KX1yZXR1cm5bNCxyZXNvbHZlci5yZXNvbHZlTmFtZShuYW1lKV07Y2FzZSAyOmFkZHJlc3M9X2Euc2VudCgpO2lmKGFkZHJlc3M9PW51bGwpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInJlc29sdmVyIG9yIGFkZHIgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIEVOUyBuYW1lIiwibmFtZSIsbmFtZSl9cmV0dXJuWzIsYWRkcmVzc119fSl9KX1mdW5jdGlvbiByZXNvbHZlQWRkcmVzc2VzKHJlc29sdmVyLHZhbHVlLHBhcmFtVHlwZSl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYoIUFycmF5LmlzQXJyYXkocGFyYW1UeXBlKSlyZXR1cm5bMywyXTtyZXR1cm5bNCxQcm9taXNlLmFsbChwYXJhbVR5cGUubWFwKGZ1bmN0aW9uKHBhcmFtVHlwZSxpbmRleCl7cmV0dXJuIHJlc29sdmVBZGRyZXNzZXMocmVzb2x2ZXIsQXJyYXkuaXNBcnJheSh2YWx1ZSk/dmFsdWVbaW5kZXhdOnZhbHVlW3BhcmFtVHlwZS5uYW1lXSxwYXJhbVR5cGUpfSkpXTtjYXNlIDE6cmV0dXJuWzIsX2Euc2VudCgpXTtjYXNlIDI6aWYoIShwYXJhbVR5cGUudHlwZT09PSJhZGRyZXNzIikpcmV0dXJuWzMsNF07cmV0dXJuWzQscmVzb2x2ZU5hbWUocmVzb2x2ZXIsdmFsdWUpXTtjYXNlIDM6cmV0dXJuWzIsX2Euc2VudCgpXTtjYXNlIDQ6aWYoIShwYXJhbVR5cGUudHlwZT09PSJ0dXBsZSIpKXJldHVyblszLDZdO3JldHVybls0LHJlc29sdmVBZGRyZXNzZXMocmVzb2x2ZXIsdmFsdWUscGFyYW1UeXBlLmNvbXBvbmVudHMpXTtjYXNlIDU6cmV0dXJuWzIsX2Euc2VudCgpXTtjYXNlIDY6aWYoIShwYXJhbVR5cGUuYmFzZVR5cGU9PT0iYXJyYXkiKSlyZXR1cm5bMyw4XTtpZighQXJyYXkuaXNBcnJheSh2YWx1ZSkpe3JldHVyblsyLFByb21pc2UucmVqZWN0KGxvZ2dlci5tYWtlRXJyb3IoImludmFsaWQgdmFsdWUgZm9yIGFycmF5IixsaWIuTG9nZ2VyLmVycm9ycy5JTlZBTElEX0FSR1VNRU5ULHthcmd1bWVudDoidmFsdWUiLHZhbHVlOnZhbHVlfSkpXX1yZXR1cm5bNCxQcm9taXNlLmFsbCh2YWx1ZS5tYXAoZnVuY3Rpb24odil7cmV0dXJuIHJlc29sdmVBZGRyZXNzZXMocmVzb2x2ZXIsdixwYXJhbVR5cGUuYXJyYXlDaGlsZHJlbil9KSldO2Nhc2UgNzpyZXR1cm5bMixfYS5zZW50KCldO2Nhc2UgODpyZXR1cm5bMix2YWx1ZV19fSl9KX1mdW5jdGlvbiBwb3B1bGF0ZVRyYW5zYWN0aW9uKGNvbnRyYWN0LGZyYWdtZW50LGFyZ3Mpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG92ZXJyaWRlcyxyZXNvbHZlZCxkYXRhLHR4LHJvLGludHJpbnNpYyxieXRlcyxpLHJvVmFsdWUsbGVmdG92ZXJzO3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpvdmVycmlkZXM9e307aWYoYXJncy5sZW5ndGg9PT1mcmFnbWVudC5pbnB1dHMubGVuZ3RoKzEmJnR5cGVvZiBhcmdzW2FyZ3MubGVuZ3RoLTFdPT09Im9iamVjdCIpe292ZXJyaWRlcz0oMCxsaWIkMy5zaGFsbG93Q29weSkoYXJncy5wb3AoKSl9bG9nZ2VyLmNoZWNrQXJndW1lbnRDb3VudChhcmdzLmxlbmd0aCxmcmFnbWVudC5pbnB1dHMubGVuZ3RoLCJwYXNzZWQgdG8gY29udHJhY3QiKTtpZihjb250cmFjdC5zaWduZXIpe2lmKG92ZXJyaWRlcy5mcm9tKXtvdmVycmlkZXMuZnJvbT0oMCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcykoe292ZXJyaWRlOnJlc29sdmVOYW1lKGNvbnRyYWN0LnNpZ25lcixvdmVycmlkZXMuZnJvbSksc2lnbmVyOmNvbnRyYWN0LnNpZ25lci5nZXRBZGRyZXNzKCl9KS50aGVuKGZ1bmN0aW9uKGNoZWNrKXtyZXR1cm4gX19hd2FpdGVyKF90aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7aWYoKDAsbGliJDYuZ2V0QWRkcmVzcykoY2hlY2suc2lnbmVyKSE9PWNoZWNrLm92ZXJyaWRlKXtsb2dnZXIudGhyb3dFcnJvcigiQ29udHJhY3Qgd2l0aCBhIFNpZ25lciBjYW5ub3Qgb3ZlcnJpZGUgZnJvbSIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246Im92ZXJyaWRlcy5mcm9tIn0pfXJldHVyblsyLGNoZWNrLm92ZXJyaWRlXX0pfSl9KX1lbHNle292ZXJyaWRlcy5mcm9tPWNvbnRyYWN0LnNpZ25lci5nZXRBZGRyZXNzKCl9fWVsc2UgaWYob3ZlcnJpZGVzLmZyb20pe292ZXJyaWRlcy5mcm9tPXJlc29sdmVOYW1lKGNvbnRyYWN0LnByb3ZpZGVyLG92ZXJyaWRlcy5mcm9tKX1yZXR1cm5bNCwoMCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcykoe2FyZ3M6cmVzb2x2ZUFkZHJlc3Nlcyhjb250cmFjdC5zaWduZXJ8fGNvbnRyYWN0LnByb3ZpZGVyLGFyZ3MsZnJhZ21lbnQuaW5wdXRzKSxhZGRyZXNzOmNvbnRyYWN0LnJlc29sdmVkQWRkcmVzcyxvdmVycmlkZXM6KDAsbGliJDMucmVzb2x2ZVByb3BlcnRpZXMpKG92ZXJyaWRlcyl8fHt9fSldO2Nhc2UgMTpyZXNvbHZlZD1fYS5zZW50KCk7ZGF0YT1jb250cmFjdC5pbnRlcmZhY2UuZW5jb2RlRnVuY3Rpb25EYXRhKGZyYWdtZW50LHJlc29sdmVkLmFyZ3MpO3R4PXtkYXRhOmRhdGEsdG86cmVzb2x2ZWQuYWRkcmVzc307cm89cmVzb2x2ZWQub3ZlcnJpZGVzO2lmKHJvLm5vbmNlIT1udWxsKXt0eC5ub25jZT1saWIkMi5CaWdOdW1iZXIuZnJvbShyby5ub25jZSkudG9OdW1iZXIoKX1pZihyby5nYXNMaW1pdCE9bnVsbCl7dHguZ2FzTGltaXQ9bGliJDIuQmlnTnVtYmVyLmZyb20ocm8uZ2FzTGltaXQpfWlmKHJvLmdhc1ByaWNlIT1udWxsKXt0eC5nYXNQcmljZT1saWIkMi5CaWdOdW1iZXIuZnJvbShyby5nYXNQcmljZSl9aWYocm8ubWF4RmVlUGVyR2FzIT1udWxsKXt0eC5tYXhGZWVQZXJHYXM9bGliJDIuQmlnTnVtYmVyLmZyb20ocm8ubWF4RmVlUGVyR2FzKX1pZihyby5tYXhQcmlvcml0eUZlZVBlckdhcyE9bnVsbCl7dHgubWF4UHJpb3JpdHlGZWVQZXJHYXM9bGliJDIuQmlnTnVtYmVyLmZyb20ocm8ubWF4UHJpb3JpdHlGZWVQZXJHYXMpfWlmKHJvLmZyb20hPW51bGwpe3R4LmZyb209cm8uZnJvbX1pZihyby50eXBlIT1udWxsKXt0eC50eXBlPXJvLnR5cGV9aWYocm8uYWNjZXNzTGlzdCE9bnVsbCl7dHguYWNjZXNzTGlzdD0oMCxsaWIkaC5hY2Nlc3NMaXN0aWZ5KShyby5hY2Nlc3NMaXN0KX1pZih0eC5nYXNMaW1pdD09bnVsbCYmZnJhZ21lbnQuZ2FzIT1udWxsKXtpbnRyaW5zaWM9MjFlMztieXRlcz0oMCxsaWIkMS5hcnJheWlmeSkoZGF0YSk7Zm9yKGk9MDtpPGJ5dGVzLmxlbmd0aDtpKyspe2ludHJpbnNpYys9NDtpZihieXRlc1tpXSl7aW50cmluc2ljKz02NH19dHguZ2FzTGltaXQ9bGliJDIuQmlnTnVtYmVyLmZyb20oZnJhZ21lbnQuZ2FzKS5hZGQoaW50cmluc2ljKX1pZihyby52YWx1ZSl7cm9WYWx1ZT1saWIkMi5CaWdOdW1iZXIuZnJvbShyby52YWx1ZSk7aWYoIXJvVmFsdWUuaXNaZXJvKCkmJiFmcmFnbWVudC5wYXlhYmxlKXtsb2dnZXIudGhyb3dFcnJvcigibm9uLXBheWFibGUgbWV0aG9kIGNhbm5vdCBvdmVycmlkZSB2YWx1ZSIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246Im92ZXJyaWRlcy52YWx1ZSIsdmFsdWU6b3ZlcnJpZGVzLnZhbHVlfSl9dHgudmFsdWU9cm9WYWx1ZX1pZihyby5jdXN0b21EYXRhKXt0eC5jdXN0b21EYXRhPSgwLGxpYiQzLnNoYWxsb3dDb3B5KShyby5jdXN0b21EYXRhKX1pZihyby5jY2lwUmVhZEVuYWJsZWQpe3R4LmNjaXBSZWFkRW5hYmxlZD0hIXJvLmNjaXBSZWFkRW5hYmxlZH1kZWxldGUgb3ZlcnJpZGVzLm5vbmNlO2RlbGV0ZSBvdmVycmlkZXMuZ2FzTGltaXQ7ZGVsZXRlIG92ZXJyaWRlcy5nYXNQcmljZTtkZWxldGUgb3ZlcnJpZGVzLmZyb207ZGVsZXRlIG92ZXJyaWRlcy52YWx1ZTtkZWxldGUgb3ZlcnJpZGVzLnR5cGU7ZGVsZXRlIG92ZXJyaWRlcy5hY2Nlc3NMaXN0O2RlbGV0ZSBvdmVycmlkZXMubWF4RmVlUGVyR2FzO2RlbGV0ZSBvdmVycmlkZXMubWF4UHJpb3JpdHlGZWVQZXJHYXM7ZGVsZXRlIG92ZXJyaWRlcy5jdXN0b21EYXRhO2RlbGV0ZSBvdmVycmlkZXMuY2NpcFJlYWRFbmFibGVkO2xlZnRvdmVycz1PYmplY3Qua2V5cyhvdmVycmlkZXMpLmZpbHRlcihmdW5jdGlvbihrZXkpe3JldHVybiBvdmVycmlkZXNba2V5XSE9bnVsbH0pO2lmKGxlZnRvdmVycy5sZW5ndGgpe2xvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3Qgb3ZlcnJpZGUgIitsZWZ0b3ZlcnMubWFwKGZ1bmN0aW9uKGwpe3JldHVybiBKU09OLnN0cmluZ2lmeShsKX0pLmpvaW4oIiwiKSxsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoib3ZlcnJpZGVzIixvdmVycmlkZXM6bGVmdG92ZXJzfSl9cmV0dXJuWzIsdHhdfX0pfSl9ZnVuY3Rpb24gYnVpbGRQb3B1bGF0ZShjb250cmFjdCxmcmFnbWVudCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGFyZ3M9W107Zm9yKHZhciBfaT0wO19pPGFyZ3VtZW50cy5sZW5ndGg7X2krKyl7YXJnc1tfaV09YXJndW1lbnRzW19pXX1yZXR1cm4gcG9wdWxhdGVUcmFuc2FjdGlvbihjb250cmFjdCxmcmFnbWVudCxhcmdzKX19ZnVuY3Rpb24gYnVpbGRFc3RpbWF0ZShjb250cmFjdCxmcmFnbWVudCl7dmFyIHNpZ25lck9yUHJvdmlkZXI9Y29udHJhY3Quc2lnbmVyfHxjb250cmFjdC5wcm92aWRlcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYXJncz1bXTtmb3IodmFyIF9pPTA7X2k8YXJndW1lbnRzLmxlbmd0aDtfaSsrKXthcmdzW19pXT1hcmd1bWVudHNbX2ldfXJldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHR4O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDppZighc2lnbmVyT3JQcm92aWRlcil7bG9nZ2VyLnRocm93RXJyb3IoImVzdGltYXRlIHJlcXVpcmUgYSBwcm92aWRlciBvciBzaWduZXIiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJlc3RpbWF0ZUdhcyJ9KX1yZXR1cm5bNCxwb3B1bGF0ZVRyYW5zYWN0aW9uKGNvbnRyYWN0LGZyYWdtZW50LGFyZ3MpXTtjYXNlIDE6dHg9X2Euc2VudCgpO3JldHVybls0LHNpZ25lck9yUHJvdmlkZXIuZXN0aW1hdGVHYXModHgpXTtjYXNlIDI6cmV0dXJuWzIsX2Euc2VudCgpXX19KX0pfX1mdW5jdGlvbiBhZGRDb250cmFjdFdhaXQoY29udHJhY3QsdHgpe3ZhciB3YWl0PXR4LndhaXQuYmluZCh0eCk7dHgud2FpdD1mdW5jdGlvbihjb25maXJtYXRpb25zKXtyZXR1cm4gd2FpdChjb25maXJtYXRpb25zKS50aGVuKGZ1bmN0aW9uKHJlY2VpcHQpe3JlY2VpcHQuZXZlbnRzPXJlY2VpcHQubG9ncy5tYXAoZnVuY3Rpb24obG9nKXt2YXIgZXZlbnQ9KDAsbGliJDMuZGVlcENvcHkpKGxvZyk7dmFyIHBhcnNlZD1udWxsO3RyeXtwYXJzZWQ9Y29udHJhY3QuaW50ZXJmYWNlLnBhcnNlTG9nKGxvZyl9Y2F0Y2goZSl7fWlmKHBhcnNlZCl7ZXZlbnQuYXJncz1wYXJzZWQuYXJncztldmVudC5kZWNvZGU9ZnVuY3Rpb24oZGF0YSx0b3BpY3Mpe3JldHVybiBjb250cmFjdC5pbnRlcmZhY2UuZGVjb2RlRXZlbnRMb2cocGFyc2VkLmV2ZW50RnJhZ21lbnQsZGF0YSx0b3BpY3MpfTtldmVudC5ldmVudD1wYXJzZWQubmFtZTtldmVudC5ldmVudFNpZ25hdHVyZT1wYXJzZWQuc2lnbmF0dXJlfWV2ZW50LnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnRyYWN0LnByb3ZpZGVyfTtldmVudC5nZXRCbG9jaz1mdW5jdGlvbigpe3JldHVybiBjb250cmFjdC5wcm92aWRlci5nZXRCbG9jayhyZWNlaXB0LmJsb2NrSGFzaCl9O2V2ZW50LmdldFRyYW5zYWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnRyYWN0LnByb3ZpZGVyLmdldFRyYW5zYWN0aW9uKHJlY2VpcHQudHJhbnNhY3Rpb25IYXNoKX07ZXZlbnQuZ2V0VHJhbnNhY3Rpb25SZWNlaXB0PWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWNlaXB0KX07cmV0dXJuIGV2ZW50fSk7cmV0dXJuIHJlY2VpcHR9KX19ZnVuY3Rpb24gYnVpbGRDYWxsKGNvbnRyYWN0LGZyYWdtZW50LGNvbGxhcHNlU2ltcGxlKXt2YXIgc2lnbmVyT3JQcm92aWRlcj1jb250cmFjdC5zaWduZXJ8fGNvbnRyYWN0LnByb3ZpZGVyO3JldHVybiBmdW5jdGlvbigpe3ZhciBhcmdzPVtdO2Zvcih2YXIgX2k9MDtfaTxhcmd1bWVudHMubGVuZ3RoO19pKyspe2FyZ3NbX2ldPWFyZ3VtZW50c1tfaV19cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYmxvY2tUYWcsb3ZlcnJpZGVzLHR4LHJlc3VsdCx2YWx1ZTtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6YmxvY2tUYWc9dW5kZWZpbmVkO2lmKCEoYXJncy5sZW5ndGg9PT1mcmFnbWVudC5pbnB1dHMubGVuZ3RoKzEmJnR5cGVvZiBhcmdzW2FyZ3MubGVuZ3RoLTFdPT09Im9iamVjdCIpKXJldHVyblszLDNdO292ZXJyaWRlcz0oMCxsaWIkMy5zaGFsbG93Q29weSkoYXJncy5wb3AoKSk7aWYoIShvdmVycmlkZXMuYmxvY2tUYWchPW51bGwpKXJldHVyblszLDJdO3JldHVybls0LG92ZXJyaWRlcy5ibG9ja1RhZ107Y2FzZSAxOmJsb2NrVGFnPV9hLnNlbnQoKTtfYS5sYWJlbD0yO2Nhc2UgMjpkZWxldGUgb3ZlcnJpZGVzLmJsb2NrVGFnO2FyZ3MucHVzaChvdmVycmlkZXMpO19hLmxhYmVsPTM7Y2FzZSAzOmlmKCEoY29udHJhY3QuZGVwbG95VHJhbnNhY3Rpb24hPW51bGwpKXJldHVyblszLDVdO3JldHVybls0LGNvbnRyYWN0Ll9kZXBsb3llZChibG9ja1RhZyldO2Nhc2UgNDpfYS5zZW50KCk7X2EubGFiZWw9NTtjYXNlIDU6cmV0dXJuWzQscG9wdWxhdGVUcmFuc2FjdGlvbihjb250cmFjdCxmcmFnbWVudCxhcmdzKV07Y2FzZSA2OnR4PV9hLnNlbnQoKTtyZXR1cm5bNCxzaWduZXJPclByb3ZpZGVyLmNhbGwodHgsYmxvY2tUYWcpXTtjYXNlIDc6cmVzdWx0PV9hLnNlbnQoKTt0cnl7dmFsdWU9Y29udHJhY3QuaW50ZXJmYWNlLmRlY29kZUZ1bmN0aW9uUmVzdWx0KGZyYWdtZW50LHJlc3VsdCk7aWYoY29sbGFwc2VTaW1wbGUmJmZyYWdtZW50Lm91dHB1dHMubGVuZ3RoPT09MSl7dmFsdWU9dmFsdWVbMF19cmV0dXJuWzIsdmFsdWVdfWNhdGNoKGVycm9yKXtpZihlcnJvci5jb2RlPT09bGliLkxvZ2dlci5lcnJvcnMuQ0FMTF9FWENFUFRJT04pe2Vycm9yLmFkZHJlc3M9Y29udHJhY3QuYWRkcmVzcztlcnJvci5hcmdzPWFyZ3M7ZXJyb3IudHJhbnNhY3Rpb249dHh9dGhyb3cgZXJyb3J9cmV0dXJuWzJdfX0pfSl9fWZ1bmN0aW9uIGJ1aWxkU2VuZChjb250cmFjdCxmcmFnbWVudCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGFyZ3M9W107Zm9yKHZhciBfaT0wO19pPGFyZ3VtZW50cy5sZW5ndGg7X2krKyl7YXJnc1tfaV09YXJndW1lbnRzW19pXX1yZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB0eFJlcXVlc3QsdHg7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmlmKCFjb250cmFjdC5zaWduZXIpe2xvZ2dlci50aHJvd0Vycm9yKCJzZW5kaW5nIGEgdHJhbnNhY3Rpb24gcmVxdWlyZXMgYSBzaWduZXIiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJzZW5kVHJhbnNhY3Rpb24ifSl9aWYoIShjb250cmFjdC5kZXBsb3lUcmFuc2FjdGlvbiE9bnVsbCkpcmV0dXJuWzMsMl07cmV0dXJuWzQsY29udHJhY3QuX2RlcGxveWVkKCldO2Nhc2UgMTpfYS5zZW50KCk7X2EubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzQscG9wdWxhdGVUcmFuc2FjdGlvbihjb250cmFjdCxmcmFnbWVudCxhcmdzKV07Y2FzZSAzOnR4UmVxdWVzdD1fYS5zZW50KCk7cmV0dXJuWzQsY29udHJhY3Quc2lnbmVyLnNlbmRUcmFuc2FjdGlvbih0eFJlcXVlc3QpXTtjYXNlIDQ6dHg9X2Euc2VudCgpO2FkZENvbnRyYWN0V2FpdChjb250cmFjdCx0eCk7cmV0dXJuWzIsdHhdfX0pfSl9fWZ1bmN0aW9uIGJ1aWxkRGVmYXVsdChjb250cmFjdCxmcmFnbWVudCxjb2xsYXBzZVNpbXBsZSl7aWYoZnJhZ21lbnQuY29uc3RhbnQpe3JldHVybiBidWlsZENhbGwoY29udHJhY3QsZnJhZ21lbnQsY29sbGFwc2VTaW1wbGUpfXJldHVybiBidWlsZFNlbmQoY29udHJhY3QsZnJhZ21lbnQpfWZ1bmN0aW9uIGdldEV2ZW50VGFnKGZpbHRlcil7aWYoZmlsdGVyLmFkZHJlc3MmJihmaWx0ZXIudG9waWNzPT1udWxsfHxmaWx0ZXIudG9waWNzLmxlbmd0aD09PTApKXtyZXR1cm4iKiJ9cmV0dXJuKGZpbHRlci5hZGRyZXNzfHwiKiIpKyJAIisoZmlsdGVyLnRvcGljcz9maWx0ZXIudG9waWNzLm1hcChmdW5jdGlvbih0b3BpYyl7aWYoQXJyYXkuaXNBcnJheSh0b3BpYykpe3JldHVybiB0b3BpYy5qb2luKCJ8Iil9cmV0dXJuIHRvcGljfSkuam9pbigiOiIpOiIiKX12YXIgUnVubmluZ0V2ZW50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gUnVubmluZ0V2ZW50KHRhZyxmaWx0ZXIpeygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJ0YWciLHRhZyk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsImZpbHRlciIsZmlsdGVyKTt0aGlzLl9saXN0ZW5lcnM9W119UnVubmluZ0V2ZW50LnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihsaXN0ZW5lcixvbmNlKXt0aGlzLl9saXN0ZW5lcnMucHVzaCh7bGlzdGVuZXI6bGlzdGVuZXIsb25jZTpvbmNlfSl9O1J1bm5pbmdFdmVudC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24obGlzdGVuZXIpe3ZhciBkb25lPWZhbHNlO3RoaXMuX2xpc3RlbmVycz10aGlzLl9saXN0ZW5lcnMuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0pe2lmKGRvbmV8fGl0ZW0ubGlzdGVuZXIhPT1saXN0ZW5lcil7cmV0dXJuIHRydWV9ZG9uZT10cnVlO3JldHVybiBmYWxzZX0pfTtSdW5uaW5nRXZlbnQucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbigpe3RoaXMuX2xpc3RlbmVycz1bXX07UnVubmluZ0V2ZW50LnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGlzdGVuZXJzLm1hcChmdW5jdGlvbihpKXtyZXR1cm4gaS5saXN0ZW5lcn0pfTtSdW5uaW5nRXZlbnQucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGlzdGVuZXJzLmxlbmd0aH07UnVubmluZ0V2ZW50LnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oYXJncyl7dmFyIF90aGlzPXRoaXM7dmFyIGxpc3RlbmVyQ291bnQ9dGhpcy5saXN0ZW5lckNvdW50KCk7dGhpcy5fbGlzdGVuZXJzPXRoaXMuX2xpc3RlbmVycy5maWx0ZXIoZnVuY3Rpb24oaXRlbSl7dmFyIGFyZ3NDb3B5PWFyZ3Muc2xpY2UoKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aXRlbS5saXN0ZW5lci5hcHBseShfdGhpcyxhcmdzQ29weSl9LDApO3JldHVybiFpdGVtLm9uY2V9KTtyZXR1cm4gbGlzdGVuZXJDb3VudH07UnVubmluZ0V2ZW50LnByb3RvdHlwZS5wcmVwYXJlRXZlbnQ9ZnVuY3Rpb24oZXZlbnQpe307UnVubmluZ0V2ZW50LnByb3RvdHlwZS5nZXRFbWl0PWZ1bmN0aW9uKGV2ZW50KXtyZXR1cm5bZXZlbnRdfTtyZXR1cm4gUnVubmluZ0V2ZW50fSgpO3ZhciBFcnJvclJ1bm5pbmdFdmVudD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhFcnJvclJ1bm5pbmdFdmVudCxfc3VwZXIpO2Z1bmN0aW9uIEVycm9yUnVubmluZ0V2ZW50KCl7cmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsImVycm9yIixudWxsKXx8dGhpc31yZXR1cm4gRXJyb3JSdW5uaW5nRXZlbnR9KFJ1bm5pbmdFdmVudCk7dmFyIEZyYWdtZW50UnVubmluZ0V2ZW50PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEZyYWdtZW50UnVubmluZ0V2ZW50LF9zdXBlcik7ZnVuY3Rpb24gRnJhZ21lbnRSdW5uaW5nRXZlbnQoYWRkcmVzcyxjb250cmFjdEludGVyZmFjZSxmcmFnbWVudCx0b3BpY3Mpe3ZhciBfdGhpcz10aGlzO3ZhciBmaWx0ZXI9e2FkZHJlc3M6YWRkcmVzc307dmFyIHRvcGljPWNvbnRyYWN0SW50ZXJmYWNlLmdldEV2ZW50VG9waWMoZnJhZ21lbnQpO2lmKHRvcGljcyl7aWYodG9waWMhPT10b3BpY3NbMF0pe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInRvcGljIG1pc21hdGNoIiwidG9waWNzIix0b3BpY3MpfWZpbHRlci50b3BpY3M9dG9waWNzLnNsaWNlKCl9ZWxzZXtmaWx0ZXIudG9waWNzPVt0b3BpY119X3RoaXM9X3N1cGVyLmNhbGwodGhpcyxnZXRFdmVudFRhZyhmaWx0ZXIpLGZpbHRlcil8fHRoaXM7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJhZGRyZXNzIixhZGRyZXNzKTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsImludGVyZmFjZSIsY29udHJhY3RJbnRlcmZhY2UpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShfdGhpcywiZnJhZ21lbnQiLGZyYWdtZW50KTtyZXR1cm4gX3RoaXN9RnJhZ21lbnRSdW5uaW5nRXZlbnQucHJvdG90eXBlLnByZXBhcmVFdmVudD1mdW5jdGlvbihldmVudCl7dmFyIF90aGlzPXRoaXM7X3N1cGVyLnByb3RvdHlwZS5wcmVwYXJlRXZlbnQuY2FsbCh0aGlzLGV2ZW50KTtldmVudC5ldmVudD10aGlzLmZyYWdtZW50Lm5hbWU7ZXZlbnQuZXZlbnRTaWduYXR1cmU9dGhpcy5mcmFnbWVudC5mb3JtYXQoKTtldmVudC5kZWNvZGU9ZnVuY3Rpb24oZGF0YSx0b3BpY3Mpe3JldHVybiBfdGhpcy5pbnRlcmZhY2UuZGVjb2RlRXZlbnRMb2coX3RoaXMuZnJhZ21lbnQsZGF0YSx0b3BpY3MpfTt0cnl7ZXZlbnQuYXJncz10aGlzLmludGVyZmFjZS5kZWNvZGVFdmVudExvZyh0aGlzLmZyYWdtZW50LGV2ZW50LmRhdGEsZXZlbnQudG9waWNzKX1jYXRjaChlcnJvcil7ZXZlbnQuYXJncz1udWxsO2V2ZW50LmRlY29kZUVycm9yPWVycm9yfX07RnJhZ21lbnRSdW5uaW5nRXZlbnQucHJvdG90eXBlLmdldEVtaXQ9ZnVuY3Rpb24oZXZlbnQpe3ZhciBlcnJvcnM9KDAsbGliJGQuY2hlY2tSZXN1bHRFcnJvcnMpKGV2ZW50LmFyZ3MpO2lmKGVycm9ycy5sZW5ndGgpe3Rocm93IGVycm9yc1swXS5lcnJvcn12YXIgYXJncz0oZXZlbnQuYXJnc3x8W10pLnNsaWNlKCk7YXJncy5wdXNoKGV2ZW50KTtyZXR1cm4gYXJnc307cmV0dXJuIEZyYWdtZW50UnVubmluZ0V2ZW50fShSdW5uaW5nRXZlbnQpO3ZhciBXaWxkY2FyZFJ1bm5pbmdFdmVudD1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhXaWxkY2FyZFJ1bm5pbmdFdmVudCxfc3VwZXIpO2Z1bmN0aW9uIFdpbGRjYXJkUnVubmluZ0V2ZW50KGFkZHJlc3MsY29udHJhY3RJbnRlcmZhY2Upe3ZhciBfdGhpcz1fc3VwZXIuY2FsbCh0aGlzLCIqIix7YWRkcmVzczphZGRyZXNzfSl8fHRoaXM7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJhZGRyZXNzIixhZGRyZXNzKTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsImludGVyZmFjZSIsY29udHJhY3RJbnRlcmZhY2UpO3JldHVybiBfdGhpc31XaWxkY2FyZFJ1bm5pbmdFdmVudC5wcm90b3R5cGUucHJlcGFyZUV2ZW50PWZ1bmN0aW9uKGV2ZW50KXt2YXIgX3RoaXM9dGhpcztfc3VwZXIucHJvdG90eXBlLnByZXBhcmVFdmVudC5jYWxsKHRoaXMsZXZlbnQpO3RyeXt2YXIgcGFyc2VkXzE9dGhpcy5pbnRlcmZhY2UucGFyc2VMb2coZXZlbnQpO2V2ZW50LmV2ZW50PXBhcnNlZF8xLm5hbWU7ZXZlbnQuZXZlbnRTaWduYXR1cmU9cGFyc2VkXzEuc2lnbmF0dXJlO2V2ZW50LmRlY29kZT1mdW5jdGlvbihkYXRhLHRvcGljcyl7cmV0dXJuIF90aGlzLmludGVyZmFjZS5kZWNvZGVFdmVudExvZyhwYXJzZWRfMS5ldmVudEZyYWdtZW50LGRhdGEsdG9waWNzKX07ZXZlbnQuYXJncz1wYXJzZWRfMS5hcmdzfWNhdGNoKGVycm9yKXt9fTtyZXR1cm4gV2lsZGNhcmRSdW5uaW5nRXZlbnR9KFJ1bm5pbmdFdmVudCk7dmFyIEJhc2VDb250cmFjdD1mdW5jdGlvbigpe2Z1bmN0aW9uIEJhc2VDb250cmFjdChhZGRyZXNzT3JOYW1lLGNvbnRyYWN0SW50ZXJmYWNlLHNpZ25lck9yUHJvdmlkZXIpe3ZhciBfbmV3VGFyZ2V0PXRoaXMuY29uc3RydWN0b3I7dmFyIF90aGlzPXRoaXM7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsImludGVyZmFjZSIsKDAsbGliJDMuZ2V0U3RhdGljKShfbmV3VGFyZ2V0LCJnZXRJbnRlcmZhY2UiKShjb250cmFjdEludGVyZmFjZSkpO2lmKHNpZ25lck9yUHJvdmlkZXI9PW51bGwpeygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJwcm92aWRlciIsbnVsbCk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsInNpZ25lciIsbnVsbCl9ZWxzZSBpZihsaWIkZi5TaWduZXIuaXNTaWduZXIoc2lnbmVyT3JQcm92aWRlcikpeygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJwcm92aWRlciIsc2lnbmVyT3JQcm92aWRlci5wcm92aWRlcnx8bnVsbCk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsInNpZ25lciIsc2lnbmVyT3JQcm92aWRlcil9ZWxzZSBpZihsaWIkZS5Qcm92aWRlci5pc1Byb3ZpZGVyKHNpZ25lck9yUHJvdmlkZXIpKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywicHJvdmlkZXIiLHNpZ25lck9yUHJvdmlkZXIpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJzaWduZXIiLG51bGwpfWVsc2V7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBzaWduZXIgb3IgcHJvdmlkZXIiLCJzaWduZXJPclByb3ZpZGVyIixzaWduZXJPclByb3ZpZGVyKX0oMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiY2FsbFN0YXRpYyIse30pOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJlc3RpbWF0ZUdhcyIse30pOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJmdW5jdGlvbnMiLHt9KTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywicG9wdWxhdGVUcmFuc2FjdGlvbiIse30pOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJmaWx0ZXJzIix7fSk7e3ZhciB1bmlxdWVGaWx0ZXJzXzE9e307T2JqZWN0LmtleXModGhpcy5pbnRlcmZhY2UuZXZlbnRzKS5mb3JFYWNoKGZ1bmN0aW9uKGV2ZW50U2lnbmF0dXJlKXt2YXIgZXZlbnQ9X3RoaXMuaW50ZXJmYWNlLmV2ZW50c1tldmVudFNpZ25hdHVyZV07KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLmZpbHRlcnMsZXZlbnRTaWduYXR1cmUsZnVuY3Rpb24oKXt2YXIgYXJncz1bXTtmb3IodmFyIF9pPTA7X2k8YXJndW1lbnRzLmxlbmd0aDtfaSsrKXthcmdzW19pXT1hcmd1bWVudHNbX2ldfXJldHVybnthZGRyZXNzOl90aGlzLmFkZHJlc3MsdG9waWNzOl90aGlzLmludGVyZmFjZS5lbmNvZGVGaWx0ZXJUb3BpY3MoZXZlbnQsYXJncyl9fSk7aWYoIXVuaXF1ZUZpbHRlcnNfMVtldmVudC5uYW1lXSl7dW5pcXVlRmlsdGVyc18xW2V2ZW50Lm5hbWVdPVtdfXVuaXF1ZUZpbHRlcnNfMVtldmVudC5uYW1lXS5wdXNoKGV2ZW50U2lnbmF0dXJlKX0pO09iamVjdC5rZXlzKHVuaXF1ZUZpbHRlcnNfMSkuZm9yRWFjaChmdW5jdGlvbihuYW1lKXt2YXIgZmlsdGVycz11bmlxdWVGaWx0ZXJzXzFbbmFtZV07aWYoZmlsdGVycy5sZW5ndGg9PT0xKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMuZmlsdGVycyxuYW1lLF90aGlzLmZpbHRlcnNbZmlsdGVyc1swXV0pfWVsc2V7bG9nZ2VyLndhcm4oIkR1cGxpY2F0ZSBkZWZpbml0aW9uIG9mICIrbmFtZSsiICgiK2ZpbHRlcnMuam9pbigiLCAiKSsiKSIpfX0pfSgwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJfcnVubmluZ0V2ZW50cyIse30pOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJfd3JhcHBlZEVtaXRzIix7fSk7aWYoYWRkcmVzc09yTmFtZT09bnVsbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBjb250cmFjdCBhZGRyZXNzIG9yIEVOUyBuYW1lIiwiYWRkcmVzc09yTmFtZSIsYWRkcmVzc09yTmFtZSl9KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsImFkZHJlc3MiLGFkZHJlc3NPck5hbWUpO2lmKHRoaXMucHJvdmlkZXIpeygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJyZXNvbHZlZEFkZHJlc3MiLHJlc29sdmVOYW1lKHRoaXMucHJvdmlkZXIsYWRkcmVzc09yTmFtZSkpfWVsc2V7dHJ5eygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJyZXNvbHZlZEFkZHJlc3MiLFByb21pc2UucmVzb2x2ZSgoMCxsaWIkNi5nZXRBZGRyZXNzKShhZGRyZXNzT3JOYW1lKSkpfWNhdGNoKGVycm9yKXtsb2dnZXIudGhyb3dFcnJvcigicHJvdmlkZXIgaXMgcmVxdWlyZWQgdG8gdXNlIEVOUyBuYW1lIGFzIGNvbnRyYWN0IGFkZHJlc3MiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJuZXcgQ29udHJhY3QifSl9fXRoaXMucmVzb2x2ZWRBZGRyZXNzLmNhdGNoKGZ1bmN0aW9uKGUpe30pO3ZhciB1bmlxdWVOYW1lcz17fTt2YXIgdW5pcXVlU2lnbmF0dXJlcz17fTtPYmplY3Qua2V5cyh0aGlzLmludGVyZmFjZS5mdW5jdGlvbnMpLmZvckVhY2goZnVuY3Rpb24oc2lnbmF0dXJlKXt2YXIgZnJhZ21lbnQ9X3RoaXMuaW50ZXJmYWNlLmZ1bmN0aW9uc1tzaWduYXR1cmVdO2lmKHVuaXF1ZVNpZ25hdHVyZXNbc2lnbmF0dXJlXSl7bG9nZ2VyLndhcm4oIkR1cGxpY2F0ZSBBQkkgZW50cnkgZm9yICIrSlNPTi5zdHJpbmdpZnkoc2lnbmF0dXJlKSk7cmV0dXJufXVuaXF1ZVNpZ25hdHVyZXNbc2lnbmF0dXJlXT10cnVlO3t2YXIgbmFtZV8xPWZyYWdtZW50Lm5hbWU7aWYoIXVuaXF1ZU5hbWVzWyIlIituYW1lXzFdKXt1bmlxdWVOYW1lc1siJSIrbmFtZV8xXT1bXX11bmlxdWVOYW1lc1siJSIrbmFtZV8xXS5wdXNoKHNpZ25hdHVyZSl9aWYoX3RoaXNbc2lnbmF0dXJlXT09bnVsbCl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLHNpZ25hdHVyZSxidWlsZERlZmF1bHQoX3RoaXMsZnJhZ21lbnQsdHJ1ZSkpfWlmKF90aGlzLmZ1bmN0aW9uc1tzaWduYXR1cmVdPT1udWxsKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMuZnVuY3Rpb25zLHNpZ25hdHVyZSxidWlsZERlZmF1bHQoX3RoaXMsZnJhZ21lbnQsZmFsc2UpKX1pZihfdGhpcy5jYWxsU3RhdGljW3NpZ25hdHVyZV09PW51bGwpeygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShfdGhpcy5jYWxsU3RhdGljLHNpZ25hdHVyZSxidWlsZENhbGwoX3RoaXMsZnJhZ21lbnQsdHJ1ZSkpfWlmKF90aGlzLnBvcHVsYXRlVHJhbnNhY3Rpb25bc2lnbmF0dXJlXT09bnVsbCl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLnBvcHVsYXRlVHJhbnNhY3Rpb24sc2lnbmF0dXJlLGJ1aWxkUG9wdWxhdGUoX3RoaXMsZnJhZ21lbnQpKX1pZihfdGhpcy5lc3RpbWF0ZUdhc1tzaWduYXR1cmVdPT1udWxsKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMuZXN0aW1hdGVHYXMsc2lnbmF0dXJlLGJ1aWxkRXN0aW1hdGUoX3RoaXMsZnJhZ21lbnQpKX19KTtPYmplY3Qua2V5cyh1bmlxdWVOYW1lcykuZm9yRWFjaChmdW5jdGlvbihuYW1lKXt2YXIgc2lnbmF0dXJlcz11bmlxdWVOYW1lc1tuYW1lXTtpZihzaWduYXR1cmVzLmxlbmd0aD4xKXtyZXR1cm59bmFtZT1uYW1lLnN1YnN0cmluZygxKTt2YXIgc2lnbmF0dXJlPXNpZ25hdHVyZXNbMF07dHJ5e2lmKF90aGlzW25hbWVdPT1udWxsKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsbmFtZSxfdGhpc1tzaWduYXR1cmVdKX19Y2F0Y2goZSl7fWlmKF90aGlzLmZ1bmN0aW9uc1tuYW1lXT09bnVsbCl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLmZ1bmN0aW9ucyxuYW1lLF90aGlzLmZ1bmN0aW9uc1tzaWduYXR1cmVdKX1pZihfdGhpcy5jYWxsU3RhdGljW25hbWVdPT1udWxsKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMuY2FsbFN0YXRpYyxuYW1lLF90aGlzLmNhbGxTdGF0aWNbc2lnbmF0dXJlXSl9aWYoX3RoaXMucG9wdWxhdGVUcmFuc2FjdGlvbltuYW1lXT09bnVsbCl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLnBvcHVsYXRlVHJhbnNhY3Rpb24sbmFtZSxfdGhpcy5wb3B1bGF0ZVRyYW5zYWN0aW9uW3NpZ25hdHVyZV0pfWlmKF90aGlzLmVzdGltYXRlR2FzW25hbWVdPT1udWxsKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMuZXN0aW1hdGVHYXMsbmFtZSxfdGhpcy5lc3RpbWF0ZUdhc1tzaWduYXR1cmVdKX19KX1CYXNlQ29udHJhY3QuZ2V0Q29udHJhY3RBZGRyZXNzPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXtyZXR1cm4oMCxsaWIkNi5nZXRDb250cmFjdEFkZHJlc3MpKHRyYW5zYWN0aW9uKX07QmFzZUNvbnRyYWN0LmdldEludGVyZmFjZT1mdW5jdGlvbihjb250cmFjdEludGVyZmFjZSl7aWYobGliJGQuSW50ZXJmYWNlLmlzSW50ZXJmYWNlKGNvbnRyYWN0SW50ZXJmYWNlKSl7cmV0dXJuIGNvbnRyYWN0SW50ZXJmYWNlfXJldHVybiBuZXcgbGliJGQuSW50ZXJmYWNlKGNvbnRyYWN0SW50ZXJmYWNlKX07QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5kZXBsb3llZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXBsb3llZCgpfTtCYXNlQ29udHJhY3QucHJvdG90eXBlLl9kZXBsb3llZD1mdW5jdGlvbihibG9ja1RhZyl7dmFyIF90aGlzPXRoaXM7aWYoIXRoaXMuX2RlcGxveWVkUHJvbWlzZSl7aWYodGhpcy5kZXBsb3lUcmFuc2FjdGlvbil7dGhpcy5fZGVwbG95ZWRQcm9taXNlPXRoaXMuZGVwbG95VHJhbnNhY3Rpb24ud2FpdCgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gX3RoaXN9KX1lbHNle3RoaXMuX2RlcGxveWVkUHJvbWlzZT10aGlzLnByb3ZpZGVyLmdldENvZGUodGhpcy5hZGRyZXNzLGJsb2NrVGFnKS50aGVuKGZ1bmN0aW9uKGNvZGUpe2lmKGNvZGU9PT0iMHgiKXtsb2dnZXIudGhyb3dFcnJvcigiY29udHJhY3Qgbm90IGRlcGxveWVkIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se2NvbnRyYWN0QWRkcmVzczpfdGhpcy5hZGRyZXNzLG9wZXJhdGlvbjoiZ2V0RGVwbG95ZWQifSl9cmV0dXJuIF90aGlzfSl9fXJldHVybiB0aGlzLl9kZXBsb3llZFByb21pc2V9O0Jhc2VDb250cmFjdC5wcm90b3R5cGUuZmFsbGJhY2s9ZnVuY3Rpb24ob3ZlcnJpZGVzKXt2YXIgX3RoaXM9dGhpcztpZighdGhpcy5zaWduZXIpe2xvZ2dlci50aHJvd0Vycm9yKCJzZW5kaW5nIGEgdHJhbnNhY3Rpb25zIHJlcXVpcmUgYSBzaWduZXIiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJzZW5kVHJhbnNhY3Rpb24oZmFsbGJhY2spIn0pfXZhciB0eD0oMCxsaWIkMy5zaGFsbG93Q29weSkob3ZlcnJpZGVzfHx7fSk7WyJmcm9tIiwidG8iXS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7aWYodHhba2V5XT09bnVsbCl7cmV0dXJufWxvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3Qgb3ZlcnJpZGUgIitrZXksbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246a2V5fSl9KTt0eC50bz10aGlzLnJlc29sdmVkQWRkcmVzcztyZXR1cm4gdGhpcy5kZXBsb3llZCgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gX3RoaXMuc2lnbmVyLnNlbmRUcmFuc2FjdGlvbih0eCl9KX07QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5jb25uZWN0PWZ1bmN0aW9uKHNpZ25lck9yUHJvdmlkZXIpe2lmKHR5cGVvZiBzaWduZXJPclByb3ZpZGVyPT09InN0cmluZyIpe3NpZ25lck9yUHJvdmlkZXI9bmV3IGxpYiRmLlZvaWRTaWduZXIoc2lnbmVyT3JQcm92aWRlcix0aGlzLnByb3ZpZGVyKX12YXIgY29udHJhY3Q9bmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5hZGRyZXNzLHRoaXMuaW50ZXJmYWNlLHNpZ25lck9yUHJvdmlkZXIpO2lmKHRoaXMuZGVwbG95VHJhbnNhY3Rpb24peygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShjb250cmFjdCwiZGVwbG95VHJhbnNhY3Rpb24iLHRoaXMuZGVwbG95VHJhbnNhY3Rpb24pfXJldHVybiBjb250cmFjdH07QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5hdHRhY2g9ZnVuY3Rpb24oYWRkcmVzc09yTmFtZSl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKGFkZHJlc3NPck5hbWUsdGhpcy5pbnRlcmZhY2UsdGhpcy5zaWduZXJ8fHRoaXMucHJvdmlkZXIpfTtCYXNlQ29udHJhY3QuaXNJbmRleGVkPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gbGliJGQuSW5kZXhlZC5pc0luZGV4ZWQodmFsdWUpfTtCYXNlQ29udHJhY3QucHJvdG90eXBlLl9ub3JtYWxpemVSdW5uaW5nRXZlbnQ9ZnVuY3Rpb24ocnVubmluZ0V2ZW50KXtpZih0aGlzLl9ydW5uaW5nRXZlbnRzW3J1bm5pbmdFdmVudC50YWddKXtyZXR1cm4gdGhpcy5fcnVubmluZ0V2ZW50c1tydW5uaW5nRXZlbnQudGFnXX1yZXR1cm4gcnVubmluZ0V2ZW50fTtCYXNlQ29udHJhY3QucHJvdG90eXBlLl9nZXRSdW5uaW5nRXZlbnQ9ZnVuY3Rpb24oZXZlbnROYW1lKXtpZih0eXBlb2YgZXZlbnROYW1lPT09InN0cmluZyIpe2lmKGV2ZW50TmFtZT09PSJlcnJvciIpe3JldHVybiB0aGlzLl9ub3JtYWxpemVSdW5uaW5nRXZlbnQobmV3IEVycm9yUnVubmluZ0V2ZW50KX1pZihldmVudE5hbWU9PT0iZXZlbnQiKXtyZXR1cm4gdGhpcy5fbm9ybWFsaXplUnVubmluZ0V2ZW50KG5ldyBSdW5uaW5nRXZlbnQoImV2ZW50IixudWxsKSl9aWYoZXZlbnROYW1lPT09IioiKXtyZXR1cm4gdGhpcy5fbm9ybWFsaXplUnVubmluZ0V2ZW50KG5ldyBXaWxkY2FyZFJ1bm5pbmdFdmVudCh0aGlzLmFkZHJlc3MsdGhpcy5pbnRlcmZhY2UpKX12YXIgZnJhZ21lbnQ9dGhpcy5pbnRlcmZhY2UuZ2V0RXZlbnQoZXZlbnROYW1lKTtyZXR1cm4gdGhpcy5fbm9ybWFsaXplUnVubmluZ0V2ZW50KG5ldyBGcmFnbWVudFJ1bm5pbmdFdmVudCh0aGlzLmFkZHJlc3MsdGhpcy5pbnRlcmZhY2UsZnJhZ21lbnQpKX1pZihldmVudE5hbWUudG9waWNzJiZldmVudE5hbWUudG9waWNzLmxlbmd0aD4wKXt0cnl7dmFyIHRvcGljPWV2ZW50TmFtZS50b3BpY3NbMF07aWYodHlwZW9mIHRvcGljIT09InN0cmluZyIpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCB0b3BpYyIpfXZhciBmcmFnbWVudD10aGlzLmludGVyZmFjZS5nZXRFdmVudCh0b3BpYyk7cmV0dXJuIHRoaXMuX25vcm1hbGl6ZVJ1bm5pbmdFdmVudChuZXcgRnJhZ21lbnRSdW5uaW5nRXZlbnQodGhpcy5hZGRyZXNzLHRoaXMuaW50ZXJmYWNlLGZyYWdtZW50LGV2ZW50TmFtZS50b3BpY3MpKX1jYXRjaChlcnJvcil7fXZhciBmaWx0ZXI9e2FkZHJlc3M6dGhpcy5hZGRyZXNzLHRvcGljczpldmVudE5hbWUudG9waWNzfTtyZXR1cm4gdGhpcy5fbm9ybWFsaXplUnVubmluZ0V2ZW50KG5ldyBSdW5uaW5nRXZlbnQoZ2V0RXZlbnRUYWcoZmlsdGVyKSxmaWx0ZXIpKX1yZXR1cm4gdGhpcy5fbm9ybWFsaXplUnVubmluZ0V2ZW50KG5ldyBXaWxkY2FyZFJ1bm5pbmdFdmVudCh0aGlzLmFkZHJlc3MsdGhpcy5pbnRlcmZhY2UpKX07QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5fY2hlY2tSdW5uaW5nRXZlbnRzPWZ1bmN0aW9uKHJ1bm5pbmdFdmVudCl7aWYocnVubmluZ0V2ZW50Lmxpc3RlbmVyQ291bnQoKT09PTApe2RlbGV0ZSB0aGlzLl9ydW5uaW5nRXZlbnRzW3J1bm5pbmdFdmVudC50YWddO3ZhciBlbWl0PXRoaXMuX3dyYXBwZWRFbWl0c1tydW5uaW5nRXZlbnQudGFnXTtpZihlbWl0JiZydW5uaW5nRXZlbnQuZmlsdGVyKXt0aGlzLnByb3ZpZGVyLm9mZihydW5uaW5nRXZlbnQuZmlsdGVyLGVtaXQpO2RlbGV0ZSB0aGlzLl93cmFwcGVkRW1pdHNbcnVubmluZ0V2ZW50LnRhZ119fX07QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5fd3JhcEV2ZW50PWZ1bmN0aW9uKHJ1bm5pbmdFdmVudCxsb2csbGlzdGVuZXIpe3ZhciBfdGhpcz10aGlzO3ZhciBldmVudD0oMCxsaWIkMy5kZWVwQ29weSkobG9nKTtldmVudC5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbigpe2lmKCFsaXN0ZW5lcil7cmV0dXJufXJ1bm5pbmdFdmVudC5yZW1vdmVMaXN0ZW5lcihsaXN0ZW5lcik7X3RoaXMuX2NoZWNrUnVubmluZ0V2ZW50cyhydW5uaW5nRXZlbnQpfTtldmVudC5nZXRCbG9jaz1mdW5jdGlvbigpe3JldHVybiBfdGhpcy5wcm92aWRlci5nZXRCbG9jayhsb2cuYmxvY2tIYXNoKX07ZXZlbnQuZ2V0VHJhbnNhY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gX3RoaXMucHJvdmlkZXIuZ2V0VHJhbnNhY3Rpb24obG9nLnRyYW5zYWN0aW9uSGFzaCl9O2V2ZW50LmdldFRyYW5zYWN0aW9uUmVjZWlwdD1mdW5jdGlvbigpe3JldHVybiBfdGhpcy5wcm92aWRlci5nZXRUcmFuc2FjdGlvblJlY2VpcHQobG9nLnRyYW5zYWN0aW9uSGFzaCl9O3J1bm5pbmdFdmVudC5wcmVwYXJlRXZlbnQoZXZlbnQpO3JldHVybiBldmVudH07QmFzZUNvbnRyYWN0LnByb3RvdHlwZS5fYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihydW5uaW5nRXZlbnQsbGlzdGVuZXIsb25jZSl7dmFyIF90aGlzPXRoaXM7aWYoIXRoaXMucHJvdmlkZXIpe2xvZ2dlci50aHJvd0Vycm9yKCJldmVudHMgcmVxdWlyZSBhIHByb3ZpZGVyIG9yIGEgc2lnbmVyIHdpdGggYSBwcm92aWRlciIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246Im9uY2UifSl9cnVubmluZ0V2ZW50LmFkZExpc3RlbmVyKGxpc3RlbmVyLG9uY2UpO3RoaXMuX3J1bm5pbmdFdmVudHNbcnVubmluZ0V2ZW50LnRhZ109cnVubmluZ0V2ZW50O2lmKCF0aGlzLl93cmFwcGVkRW1pdHNbcnVubmluZ0V2ZW50LnRhZ10pe3ZhciB3cmFwcGVkRW1pdD1mdW5jdGlvbihsb2cpe3ZhciBldmVudD1fdGhpcy5fd3JhcEV2ZW50KHJ1bm5pbmdFdmVudCxsb2csbGlzdGVuZXIpO2lmKGV2ZW50LmRlY29kZUVycm9yPT1udWxsKXt0cnl7dmFyIGFyZ3M9cnVubmluZ0V2ZW50LmdldEVtaXQoZXZlbnQpO190aGlzLmVtaXQuYXBwbHkoX3RoaXMsX19zcHJlYWRBcnJheShbcnVubmluZ0V2ZW50LmZpbHRlcl0sYXJncyxmYWxzZSkpfWNhdGNoKGVycm9yKXtldmVudC5kZWNvZGVFcnJvcj1lcnJvci5lcnJvcn19aWYocnVubmluZ0V2ZW50LmZpbHRlciE9bnVsbCl7X3RoaXMuZW1pdCgiZXZlbnQiLGV2ZW50KX1pZihldmVudC5kZWNvZGVFcnJvciE9bnVsbCl7X3RoaXMuZW1pdCgiZXJyb3IiLGV2ZW50LmRlY29kZUVycm9yLGV2ZW50KX19O3RoaXMuX3dyYXBwZWRFbWl0c1tydW5uaW5nRXZlbnQudGFnXT13cmFwcGVkRW1pdDtpZihydW5uaW5nRXZlbnQuZmlsdGVyIT1udWxsKXt0aGlzLnByb3ZpZGVyLm9uKHJ1bm5pbmdFdmVudC5maWx0ZXIsd3JhcHBlZEVtaXQpfX19O0Jhc2VDb250cmFjdC5wcm90b3R5cGUucXVlcnlGaWx0ZXI9ZnVuY3Rpb24oZXZlbnQsZnJvbUJsb2NrT3JCbG9ja2hhc2gsdG9CbG9jayl7dmFyIF90aGlzPXRoaXM7dmFyIHJ1bm5pbmdFdmVudD10aGlzLl9nZXRSdW5uaW5nRXZlbnQoZXZlbnQpO3ZhciBmaWx0ZXI9KDAsbGliJDMuc2hhbGxvd0NvcHkpKHJ1bm5pbmdFdmVudC5maWx0ZXIpO2lmKHR5cGVvZiBmcm9tQmxvY2tPckJsb2NraGFzaD09PSJzdHJpbmciJiYoMCxsaWIkMS5pc0hleFN0cmluZykoZnJvbUJsb2NrT3JCbG9ja2hhc2gsMzIpKXtpZih0b0Jsb2NrIT1udWxsKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJjYW5ub3Qgc3BlY2lmeSB0b0Jsb2NrIHdpdGggYmxvY2toYXNoIiwidG9CbG9jayIsdG9CbG9jayl9ZmlsdGVyLmJsb2NrSGFzaD1mcm9tQmxvY2tPckJsb2NraGFzaH1lbHNle2ZpbHRlci5mcm9tQmxvY2s9ZnJvbUJsb2NrT3JCbG9ja2hhc2ghPW51bGw/ZnJvbUJsb2NrT3JCbG9ja2hhc2g6MDtmaWx0ZXIudG9CbG9jaz10b0Jsb2NrIT1udWxsP3RvQmxvY2s6ImxhdGVzdCJ9cmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0TG9ncyhmaWx0ZXIpLnRoZW4oZnVuY3Rpb24obG9ncyl7cmV0dXJuIGxvZ3MubWFwKGZ1bmN0aW9uKGxvZyl7cmV0dXJuIF90aGlzLl93cmFwRXZlbnQocnVubmluZ0V2ZW50LGxvZyxudWxsKX0pfSl9O0Jhc2VDb250cmFjdC5wcm90b3R5cGUub249ZnVuY3Rpb24oZXZlbnQsbGlzdGVuZXIpe3RoaXMuX2FkZEV2ZW50TGlzdGVuZXIodGhpcy5fZ2V0UnVubmluZ0V2ZW50KGV2ZW50KSxsaXN0ZW5lcixmYWxzZSk7cmV0dXJuIHRoaXN9O0Jhc2VDb250cmFjdC5wcm90b3R5cGUub25jZT1mdW5jdGlvbihldmVudCxsaXN0ZW5lcil7dGhpcy5fYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl9nZXRSdW5uaW5nRXZlbnQoZXZlbnQpLGxpc3RlbmVyLHRydWUpO3JldHVybiB0aGlzfTtCYXNlQ29udHJhY3QucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24oZXZlbnROYW1lKXt2YXIgYXJncz1bXTtmb3IodmFyIF9pPTE7X2k8YXJndW1lbnRzLmxlbmd0aDtfaSsrKXthcmdzW19pLTFdPWFyZ3VtZW50c1tfaV19aWYoIXRoaXMucHJvdmlkZXIpe3JldHVybiBmYWxzZX12YXIgcnVubmluZ0V2ZW50PXRoaXMuX2dldFJ1bm5pbmdFdmVudChldmVudE5hbWUpO3ZhciByZXN1bHQ9cnVubmluZ0V2ZW50LnJ1bihhcmdzKT4wO3RoaXMuX2NoZWNrUnVubmluZ0V2ZW50cyhydW5uaW5nRXZlbnQpO3JldHVybiByZXN1bHR9O0Jhc2VDb250cmFjdC5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1mdW5jdGlvbihldmVudE5hbWUpe3ZhciBfdGhpcz10aGlzO2lmKCF0aGlzLnByb3ZpZGVyKXtyZXR1cm4gMH1pZihldmVudE5hbWU9PW51bGwpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9ydW5uaW5nRXZlbnRzKS5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sa2V5KXtyZXR1cm4gYWNjdW0rX3RoaXMuX3J1bm5pbmdFdmVudHNba2V5XS5saXN0ZW5lckNvdW50KCl9LDApfXJldHVybiB0aGlzLl9nZXRSdW5uaW5nRXZlbnQoZXZlbnROYW1lKS5saXN0ZW5lckNvdW50KCl9O0Jhc2VDb250cmFjdC5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGV2ZW50TmFtZSl7aWYoIXRoaXMucHJvdmlkZXIpe3JldHVybltdfWlmKGV2ZW50TmFtZT09bnVsbCl7dmFyIHJlc3VsdF8xPVtdO2Zvcih2YXIgdGFnIGluIHRoaXMuX3J1bm5pbmdFdmVudHMpe3RoaXMuX3J1bm5pbmdFdmVudHNbdGFnXS5saXN0ZW5lcnMoKS5mb3JFYWNoKGZ1bmN0aW9uKGxpc3RlbmVyKXtyZXN1bHRfMS5wdXNoKGxpc3RlbmVyKX0pfXJldHVybiByZXN1bHRfMX1yZXR1cm4gdGhpcy5fZ2V0UnVubmluZ0V2ZW50KGV2ZW50TmFtZSkubGlzdGVuZXJzKCl9O0Jhc2VDb250cmFjdC5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGV2ZW50TmFtZSl7aWYoIXRoaXMucHJvdmlkZXIpe3JldHVybiB0aGlzfWlmKGV2ZW50TmFtZT09bnVsbCl7Zm9yKHZhciB0YWcgaW4gdGhpcy5fcnVubmluZ0V2ZW50cyl7dmFyIHJ1bm5pbmdFdmVudF8xPXRoaXMuX3J1bm5pbmdFdmVudHNbdGFnXTtydW5uaW5nRXZlbnRfMS5yZW1vdmVBbGxMaXN0ZW5lcnMoKTt0aGlzLl9jaGVja1J1bm5pbmdFdmVudHMocnVubmluZ0V2ZW50XzEpfXJldHVybiB0aGlzfXZhciBydW5uaW5nRXZlbnQ9dGhpcy5fZ2V0UnVubmluZ0V2ZW50KGV2ZW50TmFtZSk7cnVubmluZ0V2ZW50LnJlbW92ZUFsbExpc3RlbmVycygpO3RoaXMuX2NoZWNrUnVubmluZ0V2ZW50cyhydW5uaW5nRXZlbnQpO3JldHVybiB0aGlzfTtCYXNlQ29udHJhY3QucHJvdG90eXBlLm9mZj1mdW5jdGlvbihldmVudE5hbWUsbGlzdGVuZXIpe2lmKCF0aGlzLnByb3ZpZGVyKXtyZXR1cm4gdGhpc312YXIgcnVubmluZ0V2ZW50PXRoaXMuX2dldFJ1bm5pbmdFdmVudChldmVudE5hbWUpO3J1bm5pbmdFdmVudC5yZW1vdmVMaXN0ZW5lcihsaXN0ZW5lcik7dGhpcy5fY2hlY2tSdW5uaW5nRXZlbnRzKHJ1bm5pbmdFdmVudCk7cmV0dXJuIHRoaXN9O0Jhc2VDb250cmFjdC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZXZlbnROYW1lLGxpc3RlbmVyKXtyZXR1cm4gdGhpcy5vZmYoZXZlbnROYW1lLGxpc3RlbmVyKX07cmV0dXJuIEJhc2VDb250cmFjdH0oKTtleHBvcnRzLkJhc2VDb250cmFjdD1CYXNlQ29udHJhY3Q7dmFyIENvbnRyYWN0PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKENvbnRyYWN0LF9zdXBlcik7ZnVuY3Rpb24gQ29udHJhY3QoKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gQ29udHJhY3R9KEJhc2VDb250cmFjdCk7ZXhwb3J0cy5Db250cmFjdD1Db250cmFjdDt2YXIgQ29udHJhY3RGYWN0b3J5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQ29udHJhY3RGYWN0b3J5KGNvbnRyYWN0SW50ZXJmYWNlLGJ5dGVjb2RlLHNpZ25lcil7dmFyIF9uZXdUYXJnZXQ9dGhpcy5jb25zdHJ1Y3Rvcjt2YXIgYnl0ZWNvZGVIZXg9bnVsbDtpZih0eXBlb2YgYnl0ZWNvZGU9PT0ic3RyaW5nIil7Ynl0ZWNvZGVIZXg9Ynl0ZWNvZGV9ZWxzZSBpZigoMCxsaWIkMS5pc0J5dGVzKShieXRlY29kZSkpe2J5dGVjb2RlSGV4PSgwLGxpYiQxLmhleGxpZnkpKGJ5dGVjb2RlKX1lbHNlIGlmKGJ5dGVjb2RlJiZ0eXBlb2YgYnl0ZWNvZGUub2JqZWN0PT09InN0cmluZyIpe2J5dGVjb2RlSGV4PWJ5dGVjb2RlLm9iamVjdH1lbHNle2J5dGVjb2RlSGV4PSIhIn1pZihieXRlY29kZUhleC5zdWJzdHJpbmcoMCwyKSE9PSIweCIpe2J5dGVjb2RlSGV4PSIweCIrYnl0ZWNvZGVIZXh9aWYoISgwLGxpYiQxLmlzSGV4U3RyaW5nKShieXRlY29kZUhleCl8fGJ5dGVjb2RlSGV4Lmxlbmd0aCUyKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGJ5dGVjb2RlIiwiYnl0ZWNvZGUiLGJ5dGVjb2RlKX1pZihzaWduZXImJiFsaWIkZi5TaWduZXIuaXNTaWduZXIoc2lnbmVyKSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBzaWduZXIiLCJzaWduZXIiLHNpZ25lcil9KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsImJ5dGVjb2RlIixieXRlY29kZUhleCk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsImludGVyZmFjZSIsKDAsbGliJDMuZ2V0U3RhdGljKShfbmV3VGFyZ2V0LCJnZXRJbnRlcmZhY2UiKShjb250cmFjdEludGVyZmFjZSkpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJzaWduZXIiLHNpZ25lcnx8bnVsbCl9Q29udHJhY3RGYWN0b3J5LnByb3RvdHlwZS5nZXREZXBsb3lUcmFuc2FjdGlvbj1mdW5jdGlvbigpe3ZhciBhcmdzPVtdO2Zvcih2YXIgX2k9MDtfaTxhcmd1bWVudHMubGVuZ3RoO19pKyspe2FyZ3NbX2ldPWFyZ3VtZW50c1tfaV19dmFyIHR4PXt9O2lmKGFyZ3MubGVuZ3RoPT09dGhpcy5pbnRlcmZhY2UuZGVwbG95LmlucHV0cy5sZW5ndGgrMSYmdHlwZW9mIGFyZ3NbYXJncy5sZW5ndGgtMV09PT0ib2JqZWN0Iil7dHg9KDAsbGliJDMuc2hhbGxvd0NvcHkpKGFyZ3MucG9wKCkpO2Zvcih2YXIga2V5IGluIHR4KXtpZighYWxsb3dlZFRyYW5zYWN0aW9uS2V5c1trZXldKXt0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHJhbnNhY3Rpb24gb3ZlcnJpZGUgIitrZXkpfX19WyJkYXRhIiwiZnJvbSIsInRvIl0uZm9yRWFjaChmdW5jdGlvbihrZXkpe2lmKHR4W2tleV09PW51bGwpe3JldHVybn1sb2dnZXIudGhyb3dFcnJvcigiY2Fubm90IG92ZXJyaWRlICIra2V5LGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOmtleX0pfSk7aWYodHgudmFsdWUpe3ZhciB2YWx1ZT1saWIkMi5CaWdOdW1iZXIuZnJvbSh0eC52YWx1ZSk7aWYoIXZhbHVlLmlzWmVybygpJiYhdGhpcy5pbnRlcmZhY2UuZGVwbG95LnBheWFibGUpe2xvZ2dlci50aHJvd0Vycm9yKCJub24tcGF5YWJsZSBjb25zdHJ1Y3RvciBjYW5ub3Qgb3ZlcnJpZGUgdmFsdWUiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJvdmVycmlkZXMudmFsdWUiLHZhbHVlOnR4LnZhbHVlfSl9fWxvZ2dlci5jaGVja0FyZ3VtZW50Q291bnQoYXJncy5sZW5ndGgsdGhpcy5pbnRlcmZhY2UuZGVwbG95LmlucHV0cy5sZW5ndGgsIiBpbiBDb250cmFjdCBjb25zdHJ1Y3RvciIpO3R4LmRhdGE9KDAsbGliJDEuaGV4bGlmeSkoKDAsbGliJDEuY29uY2F0KShbdGhpcy5ieXRlY29kZSx0aGlzLmludGVyZmFjZS5lbmNvZGVEZXBsb3koYXJncyldKSk7cmV0dXJuIHR4fTtDb250cmFjdEZhY3RvcnkucHJvdG90eXBlLmRlcGxveT1mdW5jdGlvbigpe3ZhciBhcmdzPVtdO2Zvcih2YXIgX2k9MDtfaTxhcmd1bWVudHMubGVuZ3RoO19pKyspe2FyZ3NbX2ldPWFyZ3VtZW50c1tfaV19cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgb3ZlcnJpZGVzLHBhcmFtcyx1bnNpZ25lZFR4LHR4LGFkZHJlc3MsY29udHJhY3Q7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOm92ZXJyaWRlcz17fTtpZihhcmdzLmxlbmd0aD09PXRoaXMuaW50ZXJmYWNlLmRlcGxveS5pbnB1dHMubGVuZ3RoKzEpe292ZXJyaWRlcz1hcmdzLnBvcCgpfWxvZ2dlci5jaGVja0FyZ3VtZW50Q291bnQoYXJncy5sZW5ndGgsdGhpcy5pbnRlcmZhY2UuZGVwbG95LmlucHV0cy5sZW5ndGgsIiBpbiBDb250cmFjdCBjb25zdHJ1Y3RvciIpO3JldHVybls0LHJlc29sdmVBZGRyZXNzZXModGhpcy5zaWduZXIsYXJncyx0aGlzLmludGVyZmFjZS5kZXBsb3kuaW5wdXRzKV07Y2FzZSAxOnBhcmFtcz1fYS5zZW50KCk7cGFyYW1zLnB1c2gob3ZlcnJpZGVzKTt1bnNpZ25lZFR4PXRoaXMuZ2V0RGVwbG95VHJhbnNhY3Rpb24uYXBwbHkodGhpcyxwYXJhbXMpO3JldHVybls0LHRoaXMuc2lnbmVyLnNlbmRUcmFuc2FjdGlvbih1bnNpZ25lZFR4KV07Y2FzZSAyOnR4PV9hLnNlbnQoKTthZGRyZXNzPSgwLGxpYiQzLmdldFN0YXRpYykodGhpcy5jb25zdHJ1Y3RvciwiZ2V0Q29udHJhY3RBZGRyZXNzIikodHgpO2NvbnRyYWN0PSgwLGxpYiQzLmdldFN0YXRpYykodGhpcy5jb25zdHJ1Y3RvciwiZ2V0Q29udHJhY3QiKShhZGRyZXNzLHRoaXMuaW50ZXJmYWNlLHRoaXMuc2lnbmVyKTthZGRDb250cmFjdFdhaXQoY29udHJhY3QsdHgpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShjb250cmFjdCwiZGVwbG95VHJhbnNhY3Rpb24iLHR4KTtyZXR1cm5bMixjb250cmFjdF19fSl9KX07Q29udHJhY3RGYWN0b3J5LnByb3RvdHlwZS5hdHRhY2g9ZnVuY3Rpb24oYWRkcmVzcyl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuZ2V0Q29udHJhY3QoYWRkcmVzcyx0aGlzLmludGVyZmFjZSx0aGlzLnNpZ25lcil9O0NvbnRyYWN0RmFjdG9yeS5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbihzaWduZXIpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmludGVyZmFjZSx0aGlzLmJ5dGVjb2RlLHNpZ25lcil9O0NvbnRyYWN0RmFjdG9yeS5mcm9tU29saWRpdHk9ZnVuY3Rpb24oY29tcGlsZXJPdXRwdXQsc2lnbmVyKXtpZihjb21waWxlck91dHB1dD09bnVsbCl7bG9nZ2VyLnRocm93RXJyb3IoIm1pc3NpbmcgY29tcGlsZXIgb3V0cHV0IixsaWIuTG9nZ2VyLmVycm9ycy5NSVNTSU5HX0FSR1VNRU5ULHthcmd1bWVudDoiY29tcGlsZXJPdXRwdXQifSl9aWYodHlwZW9mIGNvbXBpbGVyT3V0cHV0PT09InN0cmluZyIpe2NvbXBpbGVyT3V0cHV0PUpTT04ucGFyc2UoY29tcGlsZXJPdXRwdXQpfXZhciBhYmk9Y29tcGlsZXJPdXRwdXQuYWJpO3ZhciBieXRlY29kZT1udWxsO2lmKGNvbXBpbGVyT3V0cHV0LmJ5dGVjb2RlKXtieXRlY29kZT1jb21waWxlck91dHB1dC5ieXRlY29kZX1lbHNlIGlmKGNvbXBpbGVyT3V0cHV0LmV2bSYmY29tcGlsZXJPdXRwdXQuZXZtLmJ5dGVjb2RlKXtieXRlY29kZT1jb21waWxlck91dHB1dC5ldm0uYnl0ZWNvZGV9cmV0dXJuIG5ldyB0aGlzKGFiaSxieXRlY29kZSxzaWduZXIpfTtDb250cmFjdEZhY3RvcnkuZ2V0SW50ZXJmYWNlPWZ1bmN0aW9uKGNvbnRyYWN0SW50ZXJmYWNlKXtyZXR1cm4gQ29udHJhY3QuZ2V0SW50ZXJmYWNlKGNvbnRyYWN0SW50ZXJmYWNlKX07Q29udHJhY3RGYWN0b3J5LmdldENvbnRyYWN0QWRkcmVzcz1mdW5jdGlvbih0eCl7cmV0dXJuKDAsbGliJDYuZ2V0Q29udHJhY3RBZGRyZXNzKSh0eCl9O0NvbnRyYWN0RmFjdG9yeS5nZXRDb250cmFjdD1mdW5jdGlvbihhZGRyZXNzLGNvbnRyYWN0SW50ZXJmYWNlLHNpZ25lcil7cmV0dXJuIG5ldyBDb250cmFjdChhZGRyZXNzLGNvbnRyYWN0SW50ZXJmYWNlLHNpZ25lcil9O3JldHVybiBDb250cmFjdEZhY3Rvcnl9KCk7ZXhwb3J0cy5Db250cmFjdEZhY3Rvcnk9Q29udHJhY3RGYWN0b3J5fSk7dmFyIGluZGV4JGc9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJGkpO3ZhciBsaWIkaj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQmFzZTU4PWV4cG9ydHMuQmFzZTMyPWV4cG9ydHMuQmFzZVg9dm9pZCAwO3ZhciBCYXNlWD1mdW5jdGlvbigpe2Z1bmN0aW9uIEJhc2VYKGFscGhhYmV0KXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiYWxwaGFiZXQiLGFscGhhYmV0KTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiYmFzZSIsYWxwaGFiZXQubGVuZ3RoKTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiX2FscGhhYmV0TWFwIix7fSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsIl9sZWFkZXIiLGFscGhhYmV0LmNoYXJBdCgwKSk7Zm9yKHZhciBpPTA7aTxhbHBoYWJldC5sZW5ndGg7aSsrKXt0aGlzLl9hbHBoYWJldE1hcFthbHBoYWJldC5jaGFyQXQoaSldPWl9fUJhc2VYLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24odmFsdWUpe3ZhciBzb3VyY2U9KDAsbGliJDEuYXJyYXlpZnkpKHZhbHVlKTtpZihzb3VyY2UubGVuZ3RoPT09MCl7cmV0dXJuIiJ9dmFyIGRpZ2l0cz1bMF07Zm9yKHZhciBpPTA7aTxzb3VyY2UubGVuZ3RoOysraSl7dmFyIGNhcnJ5PXNvdXJjZVtpXTtmb3IodmFyIGo9MDtqPGRpZ2l0cy5sZW5ndGg7KytqKXtjYXJyeSs9ZGlnaXRzW2pdPDw4O2RpZ2l0c1tqXT1jYXJyeSV0aGlzLmJhc2U7Y2Fycnk9Y2FycnkvdGhpcy5iYXNlfDB9d2hpbGUoY2Fycnk+MCl7ZGlnaXRzLnB1c2goY2FycnkldGhpcy5iYXNlKTtjYXJyeT1jYXJyeS90aGlzLmJhc2V8MH19dmFyIHN0cmluZz0iIjtmb3IodmFyIGs9MDtzb3VyY2Vba109PT0wJiZrPHNvdXJjZS5sZW5ndGgtMTsrK2spe3N0cmluZys9dGhpcy5fbGVhZGVyfWZvcih2YXIgcT1kaWdpdHMubGVuZ3RoLTE7cT49MDstLXEpe3N0cmluZys9dGhpcy5hbHBoYWJldFtkaWdpdHNbcV1dfXJldHVybiBzdHJpbmd9O0Jhc2VYLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24odmFsdWUpe2lmKHR5cGVvZiB2YWx1ZSE9PSJzdHJpbmciKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBTdHJpbmciKX12YXIgYnl0ZXM9W107aWYodmFsdWUubGVuZ3RoPT09MCl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGJ5dGVzKX1ieXRlcy5wdXNoKDApO2Zvcih2YXIgaT0wO2k8dmFsdWUubGVuZ3RoO2krKyl7dmFyIGJ5dGU9dGhpcy5fYWxwaGFiZXRNYXBbdmFsdWVbaV1dO2lmKGJ5dGU9PT11bmRlZmluZWQpe3Rocm93IG5ldyBFcnJvcigiTm9uLWJhc2UiK3RoaXMuYmFzZSsiIGNoYXJhY3RlciIpfXZhciBjYXJyeT1ieXRlO2Zvcih2YXIgaj0wO2o8Ynl0ZXMubGVuZ3RoOysrail7Y2FycnkrPWJ5dGVzW2pdKnRoaXMuYmFzZTtieXRlc1tqXT1jYXJyeSYyNTU7Y2Fycnk+Pj04fXdoaWxlKGNhcnJ5PjApe2J5dGVzLnB1c2goY2FycnkmMjU1KTtjYXJyeT4+PTh9fWZvcih2YXIgaz0wO3ZhbHVlW2tdPT09dGhpcy5fbGVhZGVyJiZrPHZhbHVlLmxlbmd0aC0xOysrayl7Ynl0ZXMucHVzaCgwKX1yZXR1cm4oMCxsaWIkMS5hcnJheWlmeSkobmV3IFVpbnQ4QXJyYXkoYnl0ZXMucmV2ZXJzZSgpKSl9O3JldHVybiBCYXNlWH0oKTtleHBvcnRzLkJhc2VYPUJhc2VYO3ZhciBCYXNlMzI9bmV3IEJhc2VYKCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejIzNDU2NyIpO2V4cG9ydHMuQmFzZTMyPUJhc2UzMjt2YXIgQmFzZTU4PW5ldyBCYXNlWCgiMTIzNDU2Nzg5QUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5eiIpO2V4cG9ydHMuQmFzZTU4PUJhc2U1OH0pO3ZhciBpbmRleCRoPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiRqKTt2YXIgdHlwZXM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLlN1cHBvcnRlZEFsZ29yaXRobT12b2lkIDA7dmFyIFN1cHBvcnRlZEFsZ29yaXRobTsoZnVuY3Rpb24oU3VwcG9ydGVkQWxnb3JpdGhtKXtTdXBwb3J0ZWRBbGdvcml0aG1bInNoYTI1NiJdPSJzaGEyNTYiO1N1cHBvcnRlZEFsZ29yaXRobVsic2hhNTEyIl09InNoYTUxMiJ9KShTdXBwb3J0ZWRBbGdvcml0aG09ZXhwb3J0cy5TdXBwb3J0ZWRBbGdvcml0aG18fChleHBvcnRzLlN1cHBvcnRlZEFsZ29yaXRobT17fSkpfSk7dmFyIHR5cGVzJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanModHlwZXMpO3ZhciBfdmVyc2lvbiRzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249InNoYTIvNS43LjAifSk7dmFyIF92ZXJzaW9uJHQ9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kcyk7dmFyIGJyb3dzZXJTaGEyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9faW1wb3J0RGVmYXVsdD1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihtb2Qpe3JldHVybiBtb2QmJm1vZC5fX2VzTW9kdWxlP21vZDp7ZGVmYXVsdDptb2R9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLmNvbXB1dGVIbWFjPWV4cG9ydHMuc2hhNTEyPWV4cG9ydHMuc2hhMjU2PWV4cG9ydHMucmlwZW1kMTYwPXZvaWQgMDt2YXIgaGFzaF9qc18xPV9faW1wb3J0RGVmYXVsdChoYXNoXzEpO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kcy52ZXJzaW9uKTtmdW5jdGlvbiByaXBlbWQxNjAoZGF0YSl7cmV0dXJuIjB4IitoYXNoX2pzXzEuZGVmYXVsdC5yaXBlbWQxNjAoKS51cGRhdGUoKDAsbGliJDEuYXJyYXlpZnkpKGRhdGEpKS5kaWdlc3QoImhleCIpfWV4cG9ydHMucmlwZW1kMTYwPXJpcGVtZDE2MDtmdW5jdGlvbiBzaGEyNTYoZGF0YSl7cmV0dXJuIjB4IitoYXNoX2pzXzEuZGVmYXVsdC5zaGEyNTYoKS51cGRhdGUoKDAsbGliJDEuYXJyYXlpZnkpKGRhdGEpKS5kaWdlc3QoImhleCIpfWV4cG9ydHMuc2hhMjU2PXNoYTI1NjtmdW5jdGlvbiBzaGE1MTIoZGF0YSl7cmV0dXJuIjB4IitoYXNoX2pzXzEuZGVmYXVsdC5zaGE1MTIoKS51cGRhdGUoKDAsbGliJDEuYXJyYXlpZnkpKGRhdGEpKS5kaWdlc3QoImhleCIpfWV4cG9ydHMuc2hhNTEyPXNoYTUxMjtmdW5jdGlvbiBjb21wdXRlSG1hYyhhbGdvcml0aG0sa2V5LGRhdGEpe2lmKCF0eXBlcy5TdXBwb3J0ZWRBbGdvcml0aG1bYWxnb3JpdGhtXSl7bG9nZ2VyLnRocm93RXJyb3IoInVuc3VwcG9ydGVkIGFsZ29yaXRobSAiK2FsZ29yaXRobSxsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiaG1hYyIsYWxnb3JpdGhtOmFsZ29yaXRobX0pfXJldHVybiIweCIraGFzaF9qc18xLmRlZmF1bHQuaG1hYyhoYXNoX2pzXzEuZGVmYXVsdFthbGdvcml0aG1dLCgwLGxpYiQxLmFycmF5aWZ5KShrZXkpKS51cGRhdGUoKDAsbGliJDEuYXJyYXlpZnkpKGRhdGEpKS5kaWdlc3QoImhleCIpfWV4cG9ydHMuY29tcHV0ZUhtYWM9Y29tcHV0ZUhtYWN9KTt2YXIgYnJvd3NlclNoYTIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhicm93c2VyU2hhMik7dmFyIGxpYiRrPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5TdXBwb3J0ZWRBbGdvcml0aG09ZXhwb3J0cy5zaGE1MTI9ZXhwb3J0cy5zaGEyNTY9ZXhwb3J0cy5yaXBlbWQxNjA9ZXhwb3J0cy5jb21wdXRlSG1hYz12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImNvbXB1dGVIbWFjIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBicm93c2VyU2hhMi5jb21wdXRlSG1hY319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywicmlwZW1kMTYwIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBicm93c2VyU2hhMi5yaXBlbWQxNjB9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInNoYTI1NiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYnJvd3NlclNoYTIuc2hhMjU2fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJzaGE1MTIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJyb3dzZXJTaGEyLnNoYTUxMn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiU3VwcG9ydGVkQWxnb3JpdGhtIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0eXBlcy5TdXBwb3J0ZWRBbGdvcml0aG19fSl9KTt2YXIgaW5kZXgkaT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkayk7dmFyIGJyb3dzZXJQYmtkZjI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnBia2RmMj12b2lkIDA7ZnVuY3Rpb24gcGJrZGYyKHBhc3N3b3JkLHNhbHQsaXRlcmF0aW9ucyxrZXlsZW4saGFzaEFsZ29yaXRobSl7cGFzc3dvcmQ9KDAsbGliJDEuYXJyYXlpZnkpKHBhc3N3b3JkKTtzYWx0PSgwLGxpYiQxLmFycmF5aWZ5KShzYWx0KTt2YXIgaExlbjt2YXIgbD0xO3ZhciBESz1uZXcgVWludDhBcnJheShrZXlsZW4pO3ZhciBibG9jazE9bmV3IFVpbnQ4QXJyYXkoc2FsdC5sZW5ndGgrNCk7YmxvY2sxLnNldChzYWx0KTt2YXIgcjt2YXIgVDtmb3IodmFyIGk9MTtpPD1sO2krKyl7YmxvY2sxW3NhbHQubGVuZ3RoXT1pPj4yNCYyNTU7YmxvY2sxW3NhbHQubGVuZ3RoKzFdPWk+PjE2JjI1NTtibG9jazFbc2FsdC5sZW5ndGgrMl09aT4+OCYyNTU7YmxvY2sxW3NhbHQubGVuZ3RoKzNdPWkmMjU1O3ZhciBVPSgwLGxpYiQxLmFycmF5aWZ5KSgoMCxsaWIkay5jb21wdXRlSG1hYykoaGFzaEFsZ29yaXRobSxwYXNzd29yZCxibG9jazEpKTtpZighaExlbil7aExlbj1VLmxlbmd0aDtUPW5ldyBVaW50OEFycmF5KGhMZW4pO2w9TWF0aC5jZWlsKGtleWxlbi9oTGVuKTtyPWtleWxlbi0obC0xKSpoTGVufVQuc2V0KFUpO2Zvcih2YXIgaj0xO2o8aXRlcmF0aW9ucztqKyspe1U9KDAsbGliJDEuYXJyYXlpZnkpKCgwLGxpYiRrLmNvbXB1dGVIbWFjKShoYXNoQWxnb3JpdGhtLHBhc3N3b3JkLFUpKTtmb3IodmFyIGs9MDtrPGhMZW47aysrKVRba11ePVVba119dmFyIGRlc3RQb3M9KGktMSkqaExlbjt2YXIgbGVuPWk9PT1sP3I6aExlbjtESy5zZXQoKDAsbGliJDEuYXJyYXlpZnkpKFQpLnNsaWNlKDAsbGVuKSxkZXN0UG9zKX1yZXR1cm4oMCxsaWIkMS5oZXhsaWZ5KShESyl9ZXhwb3J0cy5wYmtkZjI9cGJrZGYyfSk7dmFyIGJyb3dzZXJQYmtkZjIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhicm93c2VyUGJrZGYyKTt2YXIgbGliJGw9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnBia2RmMj12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInBia2RmMiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYnJvd3NlclBia2RmMi5wYmtkZjJ9fSl9KTt2YXIgaW5kZXgkaj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkbCk7dmFyIF92ZXJzaW9uJHU9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0id29yZGxpc3RzLzUuNy4wIn0pO3ZhciBfdmVyc2lvbiR2PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJHUpO3ZhciB3b3JkbGlzdD1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuV29yZGxpc3Q9ZXhwb3J0cy5sb2dnZXI9dm9pZCAwO3ZhciBleHBvcnRXb3JkbGlzdD1mYWxzZTtleHBvcnRzLmxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiR1LnZlcnNpb24pO3ZhciBXb3JkbGlzdD1mdW5jdGlvbigpe2Z1bmN0aW9uIFdvcmRsaXN0KGxvY2FsZSl7dmFyIF9uZXdUYXJnZXQ9dGhpcy5jb25zdHJ1Y3RvcjtleHBvcnRzLmxvZ2dlci5jaGVja0Fic3RyYWN0KF9uZXdUYXJnZXQsV29yZGxpc3QpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJsb2NhbGUiLGxvY2FsZSl9V29yZGxpc3QucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKG1uZW1vbmljKXtyZXR1cm4gbW5lbW9uaWMudG9Mb3dlckNhc2UoKS5zcGxpdCgvICsvZyl9O1dvcmRsaXN0LnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKHdvcmRzKXtyZXR1cm4gd29yZHMuam9pbigiICIpfTtXb3JkbGlzdC5jaGVjaz1mdW5jdGlvbih3b3JkbGlzdCl7dmFyIHdvcmRzPVtdO2Zvcih2YXIgaT0wO2k8MjA0ODtpKyspe3ZhciB3b3JkPXdvcmRsaXN0LmdldFdvcmQoaSk7aWYoaSE9PXdvcmRsaXN0LmdldFdvcmRJbmRleCh3b3JkKSl7cmV0dXJuIjB4In13b3Jkcy5wdXNoKHdvcmQpfXJldHVybigwLGxpYiRjLmlkKSh3b3Jkcy5qb2luKCJcbiIpKyJcbiIpfTtXb3JkbGlzdC5yZWdpc3Rlcj1mdW5jdGlvbihsYW5nLG5hbWUpe2lmKCFuYW1lKXtuYW1lPWxhbmcubG9jYWxlfWlmKGV4cG9ydFdvcmRsaXN0KXt0cnl7dmFyIGFueUdsb2JhbD13aW5kb3c7aWYoYW55R2xvYmFsLl9ldGhlcnMmJmFueUdsb2JhbC5fZXRoZXJzLndvcmRsaXN0cyl7aWYoIWFueUdsb2JhbC5fZXRoZXJzLndvcmRsaXN0c1tuYW1lXSl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKGFueUdsb2JhbC5fZXRoZXJzLndvcmRsaXN0cyxuYW1lLGxhbmcpfX19Y2F0Y2goZXJyb3Ipe319fTtyZXR1cm4gV29yZGxpc3R9KCk7ZXhwb3J0cy5Xb3JkbGlzdD1Xb3JkbGlzdH0pO3ZhciB3b3JkbGlzdCQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHdvcmRsaXN0KTt2YXIgbGFuZ0VuXzE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5sYW5nRW49dm9pZCAwO3ZhciB3b3Jkcz0iQWJhbmRvbkFiaWxpdHlBYmxlQWJvdXRBYm92ZUFic2VudEFic29yYkFic3RyYWN0QWJzdXJkQWJ1c2VBY2Nlc3NBY2NpZGVudEFjY291bnRBY2N1c2VBY2hpZXZlQWNpZEFjb3VzdGljQWNxdWlyZUFjcm9zc0FjdEFjdGlvbkFjdG9yQWN0cmVzc0FjdHVhbEFkYXB0QWRkQWRkaWN0QWRkcmVzc0FkanVzdEFkbWl0QWR1bHRBZHZhbmNlQWR2aWNlQWVyb2JpY0FmZmFpckFmZm9yZEFmcmFpZEFnYWluQWdlQWdlbnRBZ3JlZUFoZWFkQWltQWlyQWlycG9ydEFpc2xlQWxhcm1BbGJ1bUFsY29ob2xBbGVydEFsaWVuQWxsQWxsZXlBbGxvd0FsbW9zdEFsb25lQWxwaGFBbHJlYWR5QWxzb0FsdGVyQWx3YXlzQW1hdGV1ckFtYXppbmdBbW9uZ0Ftb3VudEFtdXNlZEFuYWx5c3RBbmNob3JBbmNpZW50QW5nZXJBbmdsZUFuZ3J5QW5pbWFsQW5rbGVBbm5vdW5jZUFubnVhbEFub3RoZXJBbnN3ZXJBbnRlbm5hQW50aXF1ZUFueGlldHlBbnlBcGFydEFwb2xvZ3lBcHBlYXJBcHBsZUFwcHJvdmVBcHJpbEFyY2hBcmN0aWNBcmVhQXJlbmFBcmd1ZUFybUFybWVkQXJtb3JBcm15QXJvdW5kQXJyYW5nZUFycmVzdEFycml2ZUFycm93QXJ0QXJ0ZWZhY3RBcnRpc3RBcnR3b3JrQXNrQXNwZWN0QXNzYXVsdEFzc2V0QXNzaXN0QXNzdW1lQXN0aG1hQXRobGV0ZUF0b21BdHRhY2tBdHRlbmRBdHRpdHVkZUF0dHJhY3RBdWN0aW9uQXVkaXRBdWd1c3RBdW50QXV0aG9yQXV0b0F1dHVtbkF2ZXJhZ2VBdm9jYWRvQXZvaWRBd2FrZUF3YXJlQXdheUF3ZXNvbWVBd2Z1bEF3a3dhcmRBeGlzQmFieUJhY2hlbG9yQmFjb25CYWRnZUJhZ0JhbGFuY2VCYWxjb255QmFsbEJhbWJvb0JhbmFuYUJhbm5lckJhckJhcmVseUJhcmdhaW5CYXJyZWxCYXNlQmFzaWNCYXNrZXRCYXR0bGVCZWFjaEJlYW5CZWF1dHlCZWNhdXNlQmVjb21lQmVlZkJlZm9yZUJlZ2luQmVoYXZlQmVoaW5kQmVsaWV2ZUJlbG93QmVsdEJlbmNoQmVuZWZpdEJlc3RCZXRyYXlCZXR0ZXJCZXR3ZWVuQmV5b25kQmljeWNsZUJpZEJpa2VCaW5kQmlvbG9neUJpcmRCaXJ0aEJpdHRlckJsYWNrQmxhZGVCbGFtZUJsYW5rZXRCbGFzdEJsZWFrQmxlc3NCbGluZEJsb29kQmxvc3NvbUJsb3VzZUJsdWVCbHVyQmx1c2hCb2FyZEJvYXRCb2R5Qm9pbEJvbWJCb25lQm9udXNCb29rQm9vc3RCb3JkZXJCb3JpbmdCb3Jyb3dCb3NzQm90dG9tQm91bmNlQm94Qm95QnJhY2tldEJyYWluQnJhbmRCcmFzc0JyYXZlQnJlYWRCcmVlemVCcmlja0JyaWRnZUJyaWVmQnJpZ2h0QnJpbmdCcmlza0Jyb2Njb2xpQnJva2VuQnJvbnplQnJvb21Ccm90aGVyQnJvd25CcnVzaEJ1YmJsZUJ1ZGR5QnVkZ2V0QnVmZmFsb0J1aWxkQnVsYkJ1bGtCdWxsZXRCdW5kbGVCdW5rZXJCdXJkZW5CdXJnZXJCdXJzdEJ1c0J1c2luZXNzQnVzeUJ1dHRlckJ1eWVyQnV6ekNhYmJhZ2VDYWJpbkNhYmxlQ2FjdHVzQ2FnZUNha2VDYWxsQ2FsbUNhbWVyYUNhbXBDYW5DYW5hbENhbmNlbENhbmR5Q2Fubm9uQ2Fub2VDYW52YXNDYW55b25DYXBhYmxlQ2FwaXRhbENhcHRhaW5DYXJDYXJib25DYXJkQ2FyZ29DYXJwZXRDYXJyeUNhcnRDYXNlQ2FzaENhc2lub0Nhc3RsZUNhc3VhbENhdENhdGFsb2dDYXRjaENhdGVnb3J5Q2F0dGxlQ2F1Z2h0Q2F1c2VDYXV0aW9uQ2F2ZUNlaWxpbmdDZWxlcnlDZW1lbnRDZW5zdXNDZW50dXJ5Q2VyZWFsQ2VydGFpbkNoYWlyQ2hhbGtDaGFtcGlvbkNoYW5nZUNoYW9zQ2hhcHRlckNoYXJnZUNoYXNlQ2hhdENoZWFwQ2hlY2tDaGVlc2VDaGVmQ2hlcnJ5Q2hlc3RDaGlja2VuQ2hpZWZDaGlsZENoaW1uZXlDaG9pY2VDaG9vc2VDaHJvbmljQ2h1Y2tsZUNodW5rQ2h1cm5DaWdhckNpbm5hbW9uQ2lyY2xlQ2l0aXplbkNpdHlDaXZpbENsYWltQ2xhcENsYXJpZnlDbGF3Q2xheUNsZWFuQ2xlcmtDbGV2ZXJDbGlja0NsaWVudENsaWZmQ2xpbWJDbGluaWNDbGlwQ2xvY2tDbG9nQ2xvc2VDbG90aENsb3VkQ2xvd25DbHViQ2x1bXBDbHVzdGVyQ2x1dGNoQ29hY2hDb2FzdENvY29udXRDb2RlQ29mZmVlQ29pbENvaW5Db2xsZWN0Q29sb3JDb2x1bW5Db21iaW5lQ29tZUNvbWZvcnRDb21pY0NvbW1vbkNvbXBhbnlDb25jZXJ0Q29uZHVjdENvbmZpcm1Db25ncmVzc0Nvbm5lY3RDb25zaWRlckNvbnRyb2xDb252aW5jZUNvb2tDb29sQ29wcGVyQ29weUNvcmFsQ29yZUNvcm5Db3JyZWN0Q29zdENvdHRvbkNvdWNoQ291bnRyeUNvdXBsZUNvdXJzZUNvdXNpbkNvdmVyQ295b3RlQ3JhY2tDcmFkbGVDcmFmdENyYW1DcmFuZUNyYXNoQ3JhdGVyQ3Jhd2xDcmF6eUNyZWFtQ3JlZGl0Q3JlZWtDcmV3Q3JpY2tldENyaW1lQ3Jpc3BDcml0aWNDcm9wQ3Jvc3NDcm91Y2hDcm93ZENydWNpYWxDcnVlbENydWlzZUNydW1ibGVDcnVuY2hDcnVzaENyeUNyeXN0YWxDdWJlQ3VsdHVyZUN1cEN1cGJvYXJkQ3VyaW91c0N1cnJlbnRDdXJ0YWluQ3VydmVDdXNoaW9uQ3VzdG9tQ3V0ZUN5Y2xlRGFkRGFtYWdlRGFtcERhbmNlRGFuZ2VyRGFyaW5nRGFzaERhdWdodGVyRGF3bkRheURlYWxEZWJhdGVEZWJyaXNEZWNhZGVEZWNlbWJlckRlY2lkZURlY2xpbmVEZWNvcmF0ZURlY3JlYXNlRGVlckRlZmVuc2VEZWZpbmVEZWZ5RGVncmVlRGVsYXlEZWxpdmVyRGVtYW5kRGVtaXNlRGVuaWFsRGVudGlzdERlbnlEZXBhcnREZXBlbmREZXBvc2l0RGVwdGhEZXB1dHlEZXJpdmVEZXNjcmliZURlc2VydERlc2lnbkRlc2tEZXNwYWlyRGVzdHJveURldGFpbERldGVjdERldmVsb3BEZXZpY2VEZXZvdGVEaWFncmFtRGlhbERpYW1vbmREaWFyeURpY2VEaWVzZWxEaWV0RGlmZmVyRGlnaXRhbERpZ25pdHlEaWxlbW1hRGlubmVyRGlub3NhdXJEaXJlY3REaXJ0RGlzYWdyZWVEaXNjb3ZlckRpc2Vhc2VEaXNoRGlzbWlzc0Rpc29yZGVyRGlzcGxheURpc3RhbmNlRGl2ZXJ0RGl2aWRlRGl2b3JjZURpenp5RG9jdG9yRG9jdW1lbnREb2dEb2xsRG9scGhpbkRvbWFpbkRvbmF0ZURvbmtleURvbm9yRG9vckRvc2VEb3VibGVEb3ZlRHJhZnREcmFnb25EcmFtYURyYXN0aWNEcmF3RHJlYW1EcmVzc0RyaWZ0RHJpbGxEcmlua0RyaXBEcml2ZURyb3BEcnVtRHJ5RHVja0R1bWJEdW5lRHVyaW5nRHVzdER1dGNoRHV0eUR3YXJmRHluYW1pY0VhZ2VyRWFnbGVFYXJseUVhcm5FYXJ0aEVhc2lseUVhc3RFYXN5RWNob0Vjb2xvZ3lFY29ub215RWRnZUVkaXRFZHVjYXRlRWZmb3J0RWdnRWlnaHRFaXRoZXJFbGJvd0VsZGVyRWxlY3RyaWNFbGVnYW50RWxlbWVudEVsZXBoYW50RWxldmF0b3JFbGl0ZUVsc2VFbWJhcmtFbWJvZHlFbWJyYWNlRW1lcmdlRW1vdGlvbkVtcGxveUVtcG93ZXJFbXB0eUVuYWJsZUVuYWN0RW5kRW5kbGVzc0VuZG9yc2VFbmVteUVuZXJneUVuZm9yY2VFbmdhZ2VFbmdpbmVFbmhhbmNlRW5qb3lFbmxpc3RFbm91Z2hFbnJpY2hFbnJvbGxFbnN1cmVFbnRlckVudGlyZUVudHJ5RW52ZWxvcGVFcGlzb2RlRXF1YWxFcXVpcEVyYUVyYXNlRXJvZGVFcm9zaW9uRXJyb3JFcnVwdEVzY2FwZUVzc2F5RXNzZW5jZUVzdGF0ZUV0ZXJuYWxFdGhpY3NFdmlkZW5jZUV2aWxFdm9rZUV2b2x2ZUV4YWN0RXhhbXBsZUV4Y2Vzc0V4Y2hhbmdlRXhjaXRlRXhjbHVkZUV4Y3VzZUV4ZWN1dGVFeGVyY2lzZUV4aGF1c3RFeGhpYml0RXhpbGVFeGlzdEV4aXRFeG90aWNFeHBhbmRFeHBlY3RFeHBpcmVFeHBsYWluRXhwb3NlRXhwcmVzc0V4dGVuZEV4dHJhRXllRXllYnJvd0ZhYnJpY0ZhY2VGYWN1bHR5RmFkZUZhaW50RmFpdGhGYWxsRmFsc2VGYW1lRmFtaWx5RmFtb3VzRmFuRmFuY3lGYW50YXN5RmFybUZhc2hpb25GYXRGYXRhbEZhdGhlckZhdGlndWVGYXVsdEZhdm9yaXRlRmVhdHVyZUZlYnJ1YXJ5RmVkZXJhbEZlZUZlZWRGZWVsRmVtYWxlRmVuY2VGZXN0aXZhbEZldGNoRmV2ZXJGZXdGaWJlckZpY3Rpb25GaWVsZEZpZ3VyZUZpbGVGaWxtRmlsdGVyRmluYWxGaW5kRmluZUZpbmdlckZpbmlzaEZpcmVGaXJtRmlyc3RGaXNjYWxGaXNoRml0Rml0bmVzc0ZpeEZsYWdGbGFtZUZsYXNoRmxhdEZsYXZvckZsZWVGbGlnaHRGbGlwRmxvYXRGbG9ja0Zsb29yRmxvd2VyRmx1aWRGbHVzaEZseUZvYW1Gb2N1c0ZvZ0ZvaWxGb2xkRm9sbG93Rm9vZEZvb3RGb3JjZUZvcmVzdEZvcmdldEZvcmtGb3J0dW5lRm9ydW1Gb3J3YXJkRm9zc2lsRm9zdGVyRm91bmRGb3hGcmFnaWxlRnJhbWVGcmVxdWVudEZyZXNoRnJpZW5kRnJpbmdlRnJvZ0Zyb250RnJvc3RGcm93bkZyb3plbkZydWl0RnVlbEZ1bkZ1bm55RnVybmFjZUZ1cnlGdXR1cmVHYWRnZXRHYWluR2FsYXh5R2FsbGVyeUdhbWVHYXBHYXJhZ2VHYXJiYWdlR2FyZGVuR2FybGljR2FybWVudEdhc0dhc3BHYXRlR2F0aGVyR2F1Z2VHYXplR2VuZXJhbEdlbml1c0dlbnJlR2VudGxlR2VudWluZUdlc3R1cmVHaG9zdEdpYW50R2lmdEdpZ2dsZUdpbmdlckdpcmFmZmVHaXJsR2l2ZUdsYWRHbGFuY2VHbGFyZUdsYXNzR2xpZGVHbGltcHNlR2xvYmVHbG9vbUdsb3J5R2xvdmVHbG93R2x1ZUdvYXRHb2RkZXNzR29sZEdvb2RHb29zZUdvcmlsbGFHb3NwZWxHb3NzaXBHb3Zlcm5Hb3duR3JhYkdyYWNlR3JhaW5HcmFudEdyYXBlR3Jhc3NHcmF2aXR5R3JlYXRHcmVlbkdyaWRHcmllZkdyaXRHcm9jZXJ5R3JvdXBHcm93R3J1bnRHdWFyZEd1ZXNzR3VpZGVHdWlsdEd1aXRhckd1bkd5bUhhYml0SGFpckhhbGZIYW1tZXJIYW1zdGVySGFuZEhhcHB5SGFyYm9ySGFyZEhhcnNoSGFydmVzdEhhdEhhdmVIYXdrSGF6YXJkSGVhZEhlYWx0aEhlYXJ0SGVhdnlIZWRnZWhvZ0hlaWdodEhlbGxvSGVsbWV0SGVscEhlbkhlcm9IaWRkZW5IaWdoSGlsbEhpbnRIaXBIaXJlSGlzdG9yeUhvYmJ5SG9ja2V5SG9sZEhvbGVIb2xpZGF5SG9sbG93SG9tZUhvbmV5SG9vZEhvcGVIb3JuSG9ycm9ySG9yc2VIb3NwaXRhbEhvc3RIb3RlbEhvdXJIb3Zlckh1Ykh1Z2VIdW1hbkh1bWJsZUh1bW9ySHVuZHJlZEh1bmdyeUh1bnRIdXJkbGVIdXJyeUh1cnRIdXNiYW5kSHlicmlkSWNlSWNvbklkZWFJZGVudGlmeUlkbGVJZ25vcmVJbGxJbGxlZ2FsSWxsbmVzc0ltYWdlSW1pdGF0ZUltbWVuc2VJbW11bmVJbXBhY3RJbXBvc2VJbXByb3ZlSW1wdWxzZUluY2hJbmNsdWRlSW5jb21lSW5jcmVhc2VJbmRleEluZGljYXRlSW5kb29ySW5kdXN0cnlJbmZhbnRJbmZsaWN0SW5mb3JtSW5oYWxlSW5oZXJpdEluaXRpYWxJbmplY3RJbmp1cnlJbm1hdGVJbm5lcklubm9jZW50SW5wdXRJbnF1aXJ5SW5zYW5lSW5zZWN0SW5zaWRlSW5zcGlyZUluc3RhbGxJbnRhY3RJbnRlcmVzdEludG9JbnZlc3RJbnZpdGVJbnZvbHZlSXJvbklzbGFuZElzb2xhdGVJc3N1ZUl0ZW1Jdm9yeUphY2tldEphZ3VhckphckphenpKZWFsb3VzSmVhbnNKZWxseUpld2VsSm9iSm9pbkpva2VKb3VybmV5Sm95SnVkZ2VKdWljZUp1bXBKdW5nbGVKdW5pb3JKdW5rSnVzdEthbmdhcm9vS2VlbktlZXBLZXRjaHVwS2V5S2lja0tpZEtpZG5leUtpbmRLaW5nZG9tS2lzc0tpdEtpdGNoZW5LaXRlS2l0dGVuS2l3aUtuZWVLbmlmZUtub2NrS25vd0xhYkxhYmVsTGFib3JMYWRkZXJMYWR5TGFrZUxhbXBMYW5ndWFnZUxhcHRvcExhcmdlTGF0ZXJMYXRpbkxhdWdoTGF1bmRyeUxhdmFMYXdMYXduTGF3c3VpdExheWVyTGF6eUxlYWRlckxlYWZMZWFybkxlYXZlTGVjdHVyZUxlZnRMZWdMZWdhbExlZ2VuZExlaXN1cmVMZW1vbkxlbmRMZW5ndGhMZW5zTGVvcGFyZExlc3NvbkxldHRlckxldmVsTGlhckxpYmVydHlMaWJyYXJ5TGljZW5zZUxpZmVMaWZ0TGlnaHRMaWtlTGltYkxpbWl0TGlua0xpb25MaXF1aWRMaXN0TGl0dGxlTGl2ZUxpemFyZExvYWRMb2FuTG9ic3RlckxvY2FsTG9ja0xvZ2ljTG9uZWx5TG9uZ0xvb3BMb3R0ZXJ5TG91ZExvdW5nZUxvdmVMb3lhbEx1Y2t5THVnZ2FnZUx1bWJlckx1bmFyTHVuY2hMdXh1cnlMeXJpY3NNYWNoaW5lTWFkTWFnaWNNYWduZXRNYWlkTWFpbE1haW5NYWpvck1ha2VNYW1tYWxNYW5NYW5hZ2VNYW5kYXRlTWFuZ29NYW5zaW9uTWFudWFsTWFwbGVNYXJibGVNYXJjaE1hcmdpbk1hcmluZU1hcmtldE1hcnJpYWdlTWFza01hc3NNYXN0ZXJNYXRjaE1hdGVyaWFsTWF0aE1hdHJpeE1hdHRlck1heGltdW1NYXplTWVhZG93TWVhbk1lYXN1cmVNZWF0TWVjaGFuaWNNZWRhbE1lZGlhTWVsb2R5TWVsdE1lbWJlck1lbW9yeU1lbnRpb25NZW51TWVyY3lNZXJnZU1lcml0TWVycnlNZXNoTWVzc2FnZU1ldGFsTWV0aG9kTWlkZGxlTWlkbmlnaHRNaWxrTWlsbGlvbk1pbWljTWluZE1pbmltdW1NaW5vck1pbnV0ZU1pcmFjbGVNaXJyb3JNaXNlcnlNaXNzTWlzdGFrZU1peE1peGVkTWl4dHVyZU1vYmlsZU1vZGVsTW9kaWZ5TW9tTW9tZW50TW9uaXRvck1vbmtleU1vbnN0ZXJNb250aE1vb25Nb3JhbE1vcmVNb3JuaW5nTW9zcXVpdG9Nb3RoZXJNb3Rpb25Nb3Rvck1vdW50YWluTW91c2VNb3ZlTW92aWVNdWNoTXVmZmluTXVsZU11bHRpcGx5TXVzY2xlTXVzZXVtTXVzaHJvb21NdXNpY011c3RNdXR1YWxNeXNlbGZNeXN0ZXJ5TXl0aE5haXZlTmFtZU5hcGtpbk5hcnJvd05hc3R5TmF0aW9uTmF0dXJlTmVhck5lY2tOZWVkTmVnYXRpdmVOZWdsZWN0TmVpdGhlck5lcGhld05lcnZlTmVzdE5ldE5ldHdvcmtOZXV0cmFsTmV2ZXJOZXdzTmV4dE5pY2VOaWdodE5vYmxlTm9pc2VOb21pbmVlTm9vZGxlTm9ybWFsTm9ydGhOb3NlTm90YWJsZU5vdGVOb3RoaW5nTm90aWNlTm92ZWxOb3dOdWNsZWFyTnVtYmVyTnVyc2VOdXRPYWtPYmV5T2JqZWN0T2JsaWdlT2JzY3VyZU9ic2VydmVPYnRhaW5PYnZpb3VzT2NjdXJPY2Vhbk9jdG9iZXJPZG9yT2ZmT2ZmZXJPZmZpY2VPZnRlbk9pbE9rYXlPbGRPbGl2ZU9seW1waWNPbWl0T25jZU9uZU9uaW9uT25saW5lT25seU9wZW5PcGVyYU9waW5pb25PcHBvc2VPcHRpb25PcmFuZ2VPcmJpdE9yY2hhcmRPcmRlck9yZGluYXJ5T3JnYW5PcmllbnRPcmlnaW5hbE9ycGhhbk9zdHJpY2hPdGhlck91dGRvb3JPdXRlck91dHB1dE91dHNpZGVPdmFsT3Zlbk92ZXJPd25Pd25lck94eWdlbk95c3Rlck96b25lUGFjdFBhZGRsZVBhZ2VQYWlyUGFsYWNlUGFsbVBhbmRhUGFuZWxQYW5pY1BhbnRoZXJQYXBlclBhcmFkZVBhcmVudFBhcmtQYXJyb3RQYXJ0eVBhc3NQYXRjaFBhdGhQYXRpZW50UGF0cm9sUGF0dGVyblBhdXNlUGF2ZVBheW1lbnRQZWFjZVBlYW51dFBlYXJQZWFzYW50UGVsaWNhblBlblBlbmFsdHlQZW5jaWxQZW9wbGVQZXBwZXJQZXJmZWN0UGVybWl0UGVyc29uUGV0UGhvbmVQaG90b1BocmFzZVBoeXNpY2FsUGlhbm9QaWNuaWNQaWN0dXJlUGllY2VQaWdQaWdlb25QaWxsUGlsb3RQaW5rUGlvbmVlclBpcGVQaXN0b2xQaXRjaFBpenphUGxhY2VQbGFuZXRQbGFzdGljUGxhdGVQbGF5UGxlYXNlUGxlZGdlUGx1Y2tQbHVnUGx1bmdlUG9lbVBvZXRQb2ludFBvbGFyUG9sZVBvbGljZVBvbmRQb255UG9vbFBvcHVsYXJQb3J0aW9uUG9zaXRpb25Qb3NzaWJsZVBvc3RQb3RhdG9Qb3R0ZXJ5UG92ZXJ0eVBvd2RlclBvd2VyUHJhY3RpY2VQcmFpc2VQcmVkaWN0UHJlZmVyUHJlcGFyZVByZXNlbnRQcmV0dHlQcmV2ZW50UHJpY2VQcmlkZVByaW1hcnlQcmludFByaW9yaXR5UHJpc29uUHJpdmF0ZVByaXplUHJvYmxlbVByb2Nlc3NQcm9kdWNlUHJvZml0UHJvZ3JhbVByb2plY3RQcm9tb3RlUHJvb2ZQcm9wZXJ0eVByb3NwZXJQcm90ZWN0UHJvdWRQcm92aWRlUHVibGljUHVkZGluZ1B1bGxQdWxwUHVsc2VQdW1wa2luUHVuY2hQdXBpbFB1cHB5UHVyY2hhc2VQdXJpdHlQdXJwb3NlUHVyc2VQdXNoUHV0UHV6emxlUHlyYW1pZFF1YWxpdHlRdWFudHVtUXVhcnRlclF1ZXN0aW9uUXVpY2tRdWl0UXVpelF1b3RlUmFiYml0UmFjY29vblJhY2VSYWNrUmFkYXJSYWRpb1JhaWxSYWluUmFpc2VSYWxseVJhbXBSYW5jaFJhbmRvbVJhbmdlUmFwaWRSYXJlUmF0ZVJhdGhlclJhdmVuUmF3UmF6b3JSZWFkeVJlYWxSZWFzb25SZWJlbFJlYnVpbGRSZWNhbGxSZWNlaXZlUmVjaXBlUmVjb3JkUmVjeWNsZVJlZHVjZVJlZmxlY3RSZWZvcm1SZWZ1c2VSZWdpb25SZWdyZXRSZWd1bGFyUmVqZWN0UmVsYXhSZWxlYXNlUmVsaWVmUmVseVJlbWFpblJlbWVtYmVyUmVtaW5kUmVtb3ZlUmVuZGVyUmVuZXdSZW50UmVvcGVuUmVwYWlyUmVwZWF0UmVwbGFjZVJlcG9ydFJlcXVpcmVSZXNjdWVSZXNlbWJsZVJlc2lzdFJlc291cmNlUmVzcG9uc2VSZXN1bHRSZXRpcmVSZXRyZWF0UmV0dXJuUmV1bmlvblJldmVhbFJldmlld1Jld2FyZFJoeXRobVJpYlJpYmJvblJpY2VSaWNoUmlkZVJpZGdlUmlmbGVSaWdodFJpZ2lkUmluZ1Jpb3RSaXBwbGVSaXNrUml0dWFsUml2YWxSaXZlclJvYWRSb2FzdFJvYm90Um9idXN0Um9ja2V0Um9tYW5jZVJvb2ZSb29raWVSb29tUm9zZVJvdGF0ZVJvdWdoUm91bmRSb3V0ZVJveWFsUnViYmVyUnVkZVJ1Z1J1bGVSdW5SdW53YXlSdXJhbFNhZFNhZGRsZVNhZG5lc3NTYWZlU2FpbFNhbGFkU2FsbW9uU2Fsb25TYWx0U2FsdXRlU2FtZVNhbXBsZVNhbmRTYXRpc2Z5U2F0b3NoaVNhdWNlU2F1c2FnZVNhdmVTYXlTY2FsZVNjYW5TY2FyZVNjYXR0ZXJTY2VuZVNjaGVtZVNjaG9vbFNjaWVuY2VTY2lzc29yc1Njb3JwaW9uU2NvdXRTY3JhcFNjcmVlblNjcmlwdFNjcnViU2VhU2VhcmNoU2Vhc29uU2VhdFNlY29uZFNlY3JldFNlY3Rpb25TZWN1cml0eVNlZWRTZWVrU2VnbWVudFNlbGVjdFNlbGxTZW1pbmFyU2VuaW9yU2Vuc2VTZW50ZW5jZVNlcmllc1NlcnZpY2VTZXNzaW9uU2V0dGxlU2V0dXBTZXZlblNoYWRvd1NoYWZ0U2hhbGxvd1NoYXJlU2hlZFNoZWxsU2hlcmlmZlNoaWVsZFNoaWZ0U2hpbmVTaGlwU2hpdmVyU2hvY2tTaG9lU2hvb3RTaG9wU2hvcnRTaG91bGRlclNob3ZlU2hyaW1wU2hydWdTaHVmZmxlU2h5U2libGluZ1NpY2tTaWRlU2llZ2VTaWdodFNpZ25TaWxlbnRTaWxrU2lsbHlTaWx2ZXJTaW1pbGFyU2ltcGxlU2luY2VTaW5nU2lyZW5TaXN0ZXJTaXR1YXRlU2l4U2l6ZVNrYXRlU2tldGNoU2tpU2tpbGxTa2luU2tpcnRTa3VsbFNsYWJTbGFtU2xlZXBTbGVuZGVyU2xpY2VTbGlkZVNsaWdodFNsaW1TbG9nYW5TbG90U2xvd1NsdXNoU21hbGxTbWFydFNtaWxlU21va2VTbW9vdGhTbmFja1NuYWtlU25hcFNuaWZmU25vd1NvYXBTb2NjZXJTb2NpYWxTb2NrU29kYVNvZnRTb2xhclNvbGRpZXJTb2xpZFNvbHV0aW9uU29sdmVTb21lb25lU29uZ1Nvb25Tb3JyeVNvcnRTb3VsU291bmRTb3VwU291cmNlU291dGhTcGFjZVNwYXJlU3BhdGlhbFNwYXduU3BlYWtTcGVjaWFsU3BlZWRTcGVsbFNwZW5kU3BoZXJlU3BpY2VTcGlkZXJTcGlrZVNwaW5TcGlyaXRTcGxpdFNwb2lsU3BvbnNvclNwb29uU3BvcnRTcG90U3ByYXlTcHJlYWRTcHJpbmdTcHlTcXVhcmVTcXVlZXplU3F1aXJyZWxTdGFibGVTdGFkaXVtU3RhZmZTdGFnZVN0YWlyc1N0YW1wU3RhbmRTdGFydFN0YXRlU3RheVN0ZWFrU3RlZWxTdGVtU3RlcFN0ZXJlb1N0aWNrU3RpbGxTdGluZ1N0b2NrU3RvbWFjaFN0b25lU3Rvb2xTdG9yeVN0b3ZlU3RyYXRlZ3lTdHJlZXRTdHJpa2VTdHJvbmdTdHJ1Z2dsZVN0dWRlbnRTdHVmZlN0dW1ibGVTdHlsZVN1YmplY3RTdWJtaXRTdWJ3YXlTdWNjZXNzU3VjaFN1ZGRlblN1ZmZlclN1Z2FyU3VnZ2VzdFN1aXRTdW1tZXJTdW5TdW5ueVN1bnNldFN1cGVyU3VwcGx5U3VwcmVtZVN1cmVTdXJmYWNlU3VyZ2VTdXJwcmlzZVN1cnJvdW5kU3VydmV5U3VzcGVjdFN1c3RhaW5Td2FsbG93U3dhbXBTd2FwU3dhcm1Td2VhclN3ZWV0U3dpZnRTd2ltU3dpbmdTd2l0Y2hTd29yZFN5bWJvbFN5bXB0b21TeXJ1cFN5c3RlbVRhYmxlVGFja2xlVGFnVGFpbFRhbGVudFRhbGtUYW5rVGFwZVRhcmdldFRhc2tUYXN0ZVRhdHRvb1RheGlUZWFjaFRlYW1UZWxsVGVuVGVuYW50VGVubmlzVGVudFRlcm1UZXN0VGV4dFRoYW5rVGhhdFRoZW1lVGhlblRoZW9yeVRoZXJlVGhleVRoaW5nVGhpc1Rob3VnaHRUaHJlZVRocml2ZVRocm93VGh1bWJUaHVuZGVyVGlja2V0VGlkZVRpZ2VyVGlsdFRpbWJlclRpbWVUaW55VGlwVGlyZWRUaXNzdWVUaXRsZVRvYXN0VG9iYWNjb1RvZGF5VG9kZGxlclRvZVRvZ2V0aGVyVG9pbGV0VG9rZW5Ub21hdG9Ub21vcnJvd1RvbmVUb25ndWVUb25pZ2h0VG9vbFRvb3RoVG9wVG9waWNUb3BwbGVUb3JjaFRvcm5hZG9Ub3J0b2lzZVRvc3NUb3RhbFRvdXJpc3RUb3dhcmRUb3dlclRvd25Ub3lUcmFja1RyYWRlVHJhZmZpY1RyYWdpY1RyYWluVHJhbnNmZXJUcmFwVHJhc2hUcmF2ZWxUcmF5VHJlYXRUcmVlVHJlbmRUcmlhbFRyaWJlVHJpY2tUcmlnZ2VyVHJpbVRyaXBUcm9waHlUcm91YmxlVHJ1Y2tUcnVlVHJ1bHlUcnVtcGV0VHJ1c3RUcnV0aFRyeVR1YmVUdWl0aW9uVHVtYmxlVHVuYVR1bm5lbFR1cmtleVR1cm5UdXJ0bGVUd2VsdmVUd2VudHlUd2ljZVR3aW5Ud2lzdFR3b1R5cGVUeXBpY2FsVWdseVVtYnJlbGxhVW5hYmxlVW5hd2FyZVVuY2xlVW5jb3ZlclVuZGVyVW5kb1VuZmFpclVuZm9sZFVuaGFwcHlVbmlmb3JtVW5pcXVlVW5pdFVuaXZlcnNlVW5rbm93blVubG9ja1VudGlsVW51c3VhbFVudmVpbFVwZGF0ZVVwZ3JhZGVVcGhvbGRVcG9uVXBwZXJVcHNldFVyYmFuVXJnZVVzYWdlVXNlVXNlZFVzZWZ1bFVzZWxlc3NVc3VhbFV0aWxpdHlWYWNhbnRWYWN1dW1WYWd1ZVZhbGlkVmFsbGV5VmFsdmVWYW5WYW5pc2hWYXBvclZhcmlvdXNWYXN0VmF1bHRWZWhpY2xlVmVsdmV0VmVuZG9yVmVudHVyZVZlbnVlVmVyYlZlcmlmeVZlcnNpb25WZXJ5VmVzc2VsVmV0ZXJhblZpYWJsZVZpYnJhbnRWaWNpb3VzVmljdG9yeVZpZGVvVmlld1ZpbGxhZ2VWaW50YWdlVmlvbGluVmlydHVhbFZpcnVzVmlzYVZpc2l0VmlzdWFsVml0YWxWaXZpZFZvY2FsVm9pY2VWb2lkVm9sY2Fub1ZvbHVtZVZvdGVWb3lhZ2VXYWdlV2Fnb25XYWl0V2Fsa1dhbGxXYWxudXRXYW50V2FyZmFyZVdhcm1XYXJyaW9yV2FzaFdhc3BXYXN0ZVdhdGVyV2F2ZVdheVdlYWx0aFdlYXBvbldlYXJXZWFzZWxXZWF0aGVyV2ViV2VkZGluZ1dlZWtlbmRXZWlyZFdlbGNvbWVXZXN0V2V0V2hhbGVXaGF0V2hlYXRXaGVlbFdoZW5XaGVyZVdoaXBXaGlzcGVyV2lkZVdpZHRoV2lmZVdpbGRXaWxsV2luV2luZG93V2luZVdpbmdXaW5rV2lubmVyV2ludGVyV2lyZVdpc2RvbVdpc2VXaXNoV2l0bmVzc1dvbGZXb21hbldvbmRlcldvb2RXb29sV29yZFdvcmtXb3JsZFdvcnJ5V29ydGhXcmFwV3JlY2tXcmVzdGxlV3Jpc3RXcml0ZVdyb25nWWFyZFllYXJZZWxsb3dZb3VZb3VuZ1lvdXRoWmVicmFaZXJvWm9uZVpvbyI7dmFyIHdvcmRsaXN0JDE9bnVsbDtmdW5jdGlvbiBsb2FkV29yZHMobGFuZyl7aWYod29yZGxpc3QkMSE9bnVsbCl7cmV0dXJufXdvcmRsaXN0JDE9d29yZHMucmVwbGFjZSgvKFtBLVpdKS9nLCIgJDEiKS50b0xvd2VyQ2FzZSgpLnN1YnN0cmluZygxKS5zcGxpdCgiICIpO2lmKHdvcmRsaXN0LldvcmRsaXN0LmNoZWNrKGxhbmcpIT09IjB4M2M4YWNjMWU3YjA4ZDhlNzZmOWZkYTAxNWVmNDhkYzhjNzEwYTczY2I3ZTBmNzdiMmMxOGE5YjVhN2FkZGU2MCIpe3dvcmRsaXN0JDE9bnVsbDt0aHJvdyBuZXcgRXJyb3IoIkJJUDM5IFdvcmRsaXN0IGZvciBlbiAoRW5nbGlzaCkgRkFJTEVEIil9fXZhciBMYW5nRW49ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoTGFuZ0VuLF9zdXBlcik7ZnVuY3Rpb24gTGFuZ0VuKCl7cmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsImVuIil8fHRoaXN9TGFuZ0VuLnByb3RvdHlwZS5nZXRXb3JkPWZ1bmN0aW9uKGluZGV4KXtsb2FkV29yZHModGhpcyk7cmV0dXJuIHdvcmRsaXN0JDFbaW5kZXhdfTtMYW5nRW4ucHJvdG90eXBlLmdldFdvcmRJbmRleD1mdW5jdGlvbih3b3JkKXtsb2FkV29yZHModGhpcyk7cmV0dXJuIHdvcmRsaXN0JDEuaW5kZXhPZih3b3JkKX07cmV0dXJuIExhbmdFbn0od29yZGxpc3QuV29yZGxpc3QpO3ZhciBsYW5nRW49bmV3IExhbmdFbjtleHBvcnRzLmxhbmdFbj1sYW5nRW47d29yZGxpc3QuV29yZGxpc3QucmVnaXN0ZXIobGFuZ0VuKX0pO3ZhciBsYW5nRW49Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGFuZ0VuXzEpO3ZhciBicm93c2VyV29yZGxpc3RzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy53b3JkbGlzdHM9dm9pZCAwO2V4cG9ydHMud29yZGxpc3RzPXtlbjpsYW5nRW5fMS5sYW5nRW59fSk7dmFyIGJyb3dzZXJXb3JkbGlzdHMkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhicm93c2VyV29yZGxpc3RzKTt2YXIgbGliJG09Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLndvcmRsaXN0cz1leHBvcnRzLldvcmRsaXN0PWV4cG9ydHMubG9nZ2VyPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywibG9nZ2VyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB3b3JkbGlzdC5sb2dnZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIldvcmRsaXN0Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB3b3JkbGlzdC5Xb3JkbGlzdH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywid29yZGxpc3RzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBicm93c2VyV29yZGxpc3RzLndvcmRsaXN0c319KX0pO3ZhciBpbmRleCRrPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiRtKTt2YXIgX3ZlcnNpb24kdz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJoZG5vZGUvNS43LjAifSk7dmFyIF92ZXJzaW9uJHg9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kdyk7dmFyIGxpYiRuPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5nZXRBY2NvdW50UGF0aD1leHBvcnRzLmlzVmFsaWRNbmVtb25pYz1leHBvcnRzLmVudHJvcHlUb01uZW1vbmljPWV4cG9ydHMubW5lbW9uaWNUb0VudHJvcHk9ZXhwb3J0cy5tbmVtb25pY1RvU2VlZD1leHBvcnRzLkhETm9kZT1leHBvcnRzLmRlZmF1bHRQYXRoPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJHcudmVyc2lvbik7dmFyIE49bGliJDIuQmlnTnVtYmVyLmZyb20oIjB4ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmViYWFlZGNlNmFmNDhhMDNiYmZkMjVlOGNkMDM2NDE0MSIpO3ZhciBNYXN0ZXJTZWNyZXQ9KDAsbGliJDgudG9VdGY4Qnl0ZXMpKCJCaXRjb2luIHNlZWQiKTt2YXIgSGFyZGVuZWRCaXQ9MjE0NzQ4MzY0ODtmdW5jdGlvbiBnZXRVcHBlck1hc2soYml0cyl7cmV0dXJuKDE8PGJpdHMpLTE8PDgtYml0c31mdW5jdGlvbiBnZXRMb3dlck1hc2soYml0cyl7cmV0dXJuKDE8PGJpdHMpLTF9ZnVuY3Rpb24gYnl0ZXMzMih2YWx1ZSl7cmV0dXJuKDAsbGliJDEuaGV4WmVyb1BhZCkoKDAsbGliJDEuaGV4bGlmeSkodmFsdWUpLDMyKX1mdW5jdGlvbiBiYXNlNThjaGVjayhkYXRhKXtyZXR1cm4gbGliJGouQmFzZTU4LmVuY29kZSgoMCxsaWIkMS5jb25jYXQpKFtkYXRhLCgwLGxpYiQxLmhleERhdGFTbGljZSkoKDAsbGliJGsuc2hhMjU2KSgoMCxsaWIkay5zaGEyNTYpKGRhdGEpKSwwLDQpXSkpfWZ1bmN0aW9uIGdldFdvcmRsaXN0KHdvcmRsaXN0KXtpZih3b3JkbGlzdD09bnVsbCl7cmV0dXJuIGxpYiRtLndvcmRsaXN0c1siZW4iXX1pZih0eXBlb2Ygd29yZGxpc3Q9PT0ic3RyaW5nIil7dmFyIHdvcmRzPWxpYiRtLndvcmRsaXN0c1t3b3JkbGlzdF07aWYod29yZHM9PW51bGwpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVua25vd24gbG9jYWxlIiwid29yZGxpc3QiLHdvcmRsaXN0KX1yZXR1cm4gd29yZHN9cmV0dXJuIHdvcmRsaXN0fXZhciBfY29uc3RydWN0b3JHdWFyZD17fTtleHBvcnRzLmRlZmF1bHRQYXRoPSJtLzQ0Jy82MCcvMCcvMC8wIjt2YXIgSEROb2RlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gSEROb2RlKGNvbnN0cnVjdG9yR3VhcmQscHJpdmF0ZUtleSxwdWJsaWNLZXkscGFyZW50RmluZ2VycHJpbnQsY2hhaW5Db2RlLGluZGV4LGRlcHRoLG1uZW1vbmljT3JQYXRoKXtpZihjb25zdHJ1Y3Rvckd1YXJkIT09X2NvbnN0cnVjdG9yR3VhcmQpe3Rocm93IG5ldyBFcnJvcigiSEROb2RlIGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiKX1pZihwcml2YXRlS2V5KXt2YXIgc2lnbmluZ0tleT1uZXcgbGliJGcuU2lnbmluZ0tleShwcml2YXRlS2V5KTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywicHJpdmF0ZUtleSIsc2lnbmluZ0tleS5wcml2YXRlS2V5KTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywicHVibGljS2V5IixzaWduaW5nS2V5LmNvbXByZXNzZWRQdWJsaWNLZXkpfWVsc2V7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsInByaXZhdGVLZXkiLG51bGwpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJwdWJsaWNLZXkiLCgwLGxpYiQxLmhleGxpZnkpKHB1YmxpY0tleSkpfSgwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJwYXJlbnRGaW5nZXJwcmludCIscGFyZW50RmluZ2VycHJpbnQpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJmaW5nZXJwcmludCIsKDAsbGliJDEuaGV4RGF0YVNsaWNlKSgoMCxsaWIkay5yaXBlbWQxNjApKCgwLGxpYiRrLnNoYTI1NikodGhpcy5wdWJsaWNLZXkpKSwwLDQpKTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiYWRkcmVzcyIsKDAsbGliJGguY29tcHV0ZUFkZHJlc3MpKHRoaXMucHVibGljS2V5KSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsImNoYWluQ29kZSIsY2hhaW5Db2RlKTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiaW5kZXgiLGluZGV4KTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiZGVwdGgiLGRlcHRoKTtpZihtbmVtb25pY09yUGF0aD09bnVsbCl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsIm1uZW1vbmljIixudWxsKTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywicGF0aCIsbnVsbCl9ZWxzZSBpZih0eXBlb2YgbW5lbW9uaWNPclBhdGg9PT0ic3RyaW5nIil7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsIm1uZW1vbmljIixudWxsKTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywicGF0aCIsbW5lbW9uaWNPclBhdGgpfWVsc2V7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsIm1uZW1vbmljIixtbmVtb25pY09yUGF0aCk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsInBhdGgiLG1uZW1vbmljT3JQYXRoLnBhdGgpfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoSEROb2RlLnByb3RvdHlwZSwiZXh0ZW5kZWRLZXkiLHtnZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRlcHRoPj0yNTYpe3Rocm93IG5ldyBFcnJvcigiRGVwdGggdG9vIGxhcmdlISIpfXJldHVybiBiYXNlNThjaGVjaygoMCxsaWIkMS5jb25jYXQpKFt0aGlzLnByaXZhdGVLZXkhPW51bGw/IjB4MDQ4OEFERTQiOiIweDA0ODhCMjFFIiwoMCxsaWIkMS5oZXhsaWZ5KSh0aGlzLmRlcHRoKSx0aGlzLnBhcmVudEZpbmdlcnByaW50LCgwLGxpYiQxLmhleFplcm9QYWQpKCgwLGxpYiQxLmhleGxpZnkpKHRoaXMuaW5kZXgpLDQpLHRoaXMuY2hhaW5Db2RlLHRoaXMucHJpdmF0ZUtleSE9bnVsbD8oMCxsaWIkMS5jb25jYXQpKFsiMHgwMCIsdGhpcy5wcml2YXRlS2V5XSk6dGhpcy5wdWJsaWNLZXldKSl9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtIRE5vZGUucHJvdG90eXBlLm5ldXRlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgSEROb2RlKF9jb25zdHJ1Y3Rvckd1YXJkLG51bGwsdGhpcy5wdWJsaWNLZXksdGhpcy5wYXJlbnRGaW5nZXJwcmludCx0aGlzLmNoYWluQ29kZSx0aGlzLmluZGV4LHRoaXMuZGVwdGgsdGhpcy5wYXRoKX07SEROb2RlLnByb3RvdHlwZS5fZGVyaXZlPWZ1bmN0aW9uKGluZGV4KXtpZihpbmRleD40Mjk0OTY3Mjk1KXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgaW5kZXggLSAiK1N0cmluZyhpbmRleCkpfXZhciBwYXRoPXRoaXMucGF0aDtpZihwYXRoKXtwYXRoKz0iLyIrKGluZGV4Jn5IYXJkZW5lZEJpdCl9dmFyIGRhdGE9bmV3IFVpbnQ4QXJyYXkoMzcpO2lmKGluZGV4JkhhcmRlbmVkQml0KXtpZighdGhpcy5wcml2YXRlS2V5KXt0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBkZXJpdmUgY2hpbGQgb2YgbmV1dGVyZWQgbm9kZSIpfWRhdGEuc2V0KCgwLGxpYiQxLmFycmF5aWZ5KSh0aGlzLnByaXZhdGVLZXkpLDEpO2lmKHBhdGgpe3BhdGgrPSInIn19ZWxzZXtkYXRhLnNldCgoMCxsaWIkMS5hcnJheWlmeSkodGhpcy5wdWJsaWNLZXkpKX1mb3IodmFyIGk9MjQ7aT49MDtpLT04KXtkYXRhWzMzKyhpPj4zKV09aW5kZXg+PjI0LWkmMjU1fXZhciBJPSgwLGxpYiQxLmFycmF5aWZ5KSgoMCxsaWIkay5jb21wdXRlSG1hYykobGliJGsuU3VwcG9ydGVkQWxnb3JpdGhtLnNoYTUxMix0aGlzLmNoYWluQ29kZSxkYXRhKSk7dmFyIElMPUkuc2xpY2UoMCwzMik7dmFyIElSPUkuc2xpY2UoMzIpO3ZhciBraT1udWxsO3ZhciBLaT1udWxsO2lmKHRoaXMucHJpdmF0ZUtleSl7a2k9Ynl0ZXMzMihsaWIkMi5CaWdOdW1iZXIuZnJvbShJTCkuYWRkKHRoaXMucHJpdmF0ZUtleSkubW9kKE4pKX1lbHNle3ZhciBlaz1uZXcgbGliJGcuU2lnbmluZ0tleSgoMCxsaWIkMS5oZXhsaWZ5KShJTCkpO0tpPWVrLl9hZGRQb2ludCh0aGlzLnB1YmxpY0tleSl9dmFyIG1uZW1vbmljT3JQYXRoPXBhdGg7dmFyIHNyY01uZW1vbmljPXRoaXMubW5lbW9uaWM7aWYoc3JjTW5lbW9uaWMpe21uZW1vbmljT3JQYXRoPU9iamVjdC5mcmVlemUoe3BocmFzZTpzcmNNbmVtb25pYy5waHJhc2UscGF0aDpwYXRoLGxvY2FsZTpzcmNNbmVtb25pYy5sb2NhbGV8fCJlbiJ9KX1yZXR1cm4gbmV3IEhETm9kZShfY29uc3RydWN0b3JHdWFyZCxraSxLaSx0aGlzLmZpbmdlcnByaW50LGJ5dGVzMzIoSVIpLGluZGV4LHRoaXMuZGVwdGgrMSxtbmVtb25pY09yUGF0aCl9O0hETm9kZS5wcm90b3R5cGUuZGVyaXZlUGF0aD1mdW5jdGlvbihwYXRoKXt2YXIgY29tcG9uZW50cz1wYXRoLnNwbGl0KCIvIik7aWYoY29tcG9uZW50cy5sZW5ndGg9PT0wfHxjb21wb25lbnRzWzBdPT09Im0iJiZ0aGlzLmRlcHRoIT09MCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBhdGggLSAiK3BhdGgpfWlmKGNvbXBvbmVudHNbMF09PT0ibSIpe2NvbXBvbmVudHMuc2hpZnQoKX12YXIgcmVzdWx0PXRoaXM7Zm9yKHZhciBpPTA7aTxjb21wb25lbnRzLmxlbmd0aDtpKyspe3ZhciBjb21wb25lbnQ9Y29tcG9uZW50c1tpXTtpZihjb21wb25lbnQubWF0Y2goL15bMC05XSsnJC8pKXt2YXIgaW5kZXg9cGFyc2VJbnQoY29tcG9uZW50LnN1YnN0cmluZygwLGNvbXBvbmVudC5sZW5ndGgtMSkpO2lmKGluZGV4Pj1IYXJkZW5lZEJpdCl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBhdGggaW5kZXggLSAiK2NvbXBvbmVudCl9cmVzdWx0PXJlc3VsdC5fZGVyaXZlKEhhcmRlbmVkQml0K2luZGV4KX1lbHNlIGlmKGNvbXBvbmVudC5tYXRjaCgvXlswLTldKyQvKSl7dmFyIGluZGV4PXBhcnNlSW50KGNvbXBvbmVudCk7aWYoaW5kZXg+PUhhcmRlbmVkQml0KXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcGF0aCBpbmRleCAtICIrY29tcG9uZW50KX1yZXN1bHQ9cmVzdWx0Ll9kZXJpdmUoaW5kZXgpfWVsc2V7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBhdGggY29tcG9uZW50IC0gIitjb21wb25lbnQpfX1yZXR1cm4gcmVzdWx0fTtIRE5vZGUuX2Zyb21TZWVkPWZ1bmN0aW9uKHNlZWQsbW5lbW9uaWMpe3ZhciBzZWVkQXJyYXk9KDAsbGliJDEuYXJyYXlpZnkpKHNlZWQpO2lmKHNlZWRBcnJheS5sZW5ndGg8MTZ8fHNlZWRBcnJheS5sZW5ndGg+NjQpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBzZWVkIil9dmFyIEk9KDAsbGliJDEuYXJyYXlpZnkpKCgwLGxpYiRrLmNvbXB1dGVIbWFjKShsaWIkay5TdXBwb3J0ZWRBbGdvcml0aG0uc2hhNTEyLE1hc3RlclNlY3JldCxzZWVkQXJyYXkpKTtyZXR1cm4gbmV3IEhETm9kZShfY29uc3RydWN0b3JHdWFyZCxieXRlczMyKEkuc2xpY2UoMCwzMikpLG51bGwsIjB4MDAwMDAwMDAiLGJ5dGVzMzIoSS5zbGljZSgzMikpLDAsMCxtbmVtb25pYyl9O0hETm9kZS5mcm9tTW5lbW9uaWM9ZnVuY3Rpb24obW5lbW9uaWMscGFzc3dvcmQsd29yZGxpc3Qpe3dvcmRsaXN0PWdldFdvcmRsaXN0KHdvcmRsaXN0KTttbmVtb25pYz1lbnRyb3B5VG9NbmVtb25pYyhtbmVtb25pY1RvRW50cm9weShtbmVtb25pYyx3b3JkbGlzdCksd29yZGxpc3QpO3JldHVybiBIRE5vZGUuX2Zyb21TZWVkKG1uZW1vbmljVG9TZWVkKG1uZW1vbmljLHBhc3N3b3JkKSx7cGhyYXNlOm1uZW1vbmljLHBhdGg6Im0iLGxvY2FsZTp3b3JkbGlzdC5sb2NhbGV9KX07SEROb2RlLmZyb21TZWVkPWZ1bmN0aW9uKHNlZWQpe3JldHVybiBIRE5vZGUuX2Zyb21TZWVkKHNlZWQsbnVsbCl9O0hETm9kZS5mcm9tRXh0ZW5kZWRLZXk9ZnVuY3Rpb24oZXh0ZW5kZWRLZXkpe3ZhciBieXRlcz1saWIkai5CYXNlNTguZGVjb2RlKGV4dGVuZGVkS2V5KTtpZihieXRlcy5sZW5ndGghPT04Mnx8YmFzZTU4Y2hlY2soYnl0ZXMuc2xpY2UoMCw3OCkpIT09ZXh0ZW5kZWRLZXkpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgZXh0ZW5kZWQga2V5IiwiZXh0ZW5kZWRLZXkiLCJbUkVEQUNURURdIil9dmFyIGRlcHRoPWJ5dGVzWzRdO3ZhciBwYXJlbnRGaW5nZXJwcmludD0oMCxsaWIkMS5oZXhsaWZ5KShieXRlcy5zbGljZSg1LDkpKTt2YXIgaW5kZXg9cGFyc2VJbnQoKDAsbGliJDEuaGV4bGlmeSkoYnl0ZXMuc2xpY2UoOSwxMykpLnN1YnN0cmluZygyKSwxNik7dmFyIGNoYWluQ29kZT0oMCxsaWIkMS5oZXhsaWZ5KShieXRlcy5zbGljZSgxMyw0NSkpO3ZhciBrZXk9Ynl0ZXMuc2xpY2UoNDUsNzgpO3N3aXRjaCgoMCxsaWIkMS5oZXhsaWZ5KShieXRlcy5zbGljZSgwLDQpKSl7Y2FzZSIweDA0ODhiMjFlIjpjYXNlIjB4MDQzNTg3Y2YiOnJldHVybiBuZXcgSEROb2RlKF9jb25zdHJ1Y3Rvckd1YXJkLG51bGwsKDAsbGliJDEuaGV4bGlmeSkoa2V5KSxwYXJlbnRGaW5nZXJwcmludCxjaGFpbkNvZGUsaW5kZXgsZGVwdGgsbnVsbCk7Y2FzZSIweDA0ODhhZGU0IjpjYXNlIjB4MDQzNTgzOTQgIjppZihrZXlbMF0hPT0wKXticmVha31yZXR1cm4gbmV3IEhETm9kZShfY29uc3RydWN0b3JHdWFyZCwoMCxsaWIkMS5oZXhsaWZ5KShrZXkuc2xpY2UoMSkpLG51bGwscGFyZW50RmluZ2VycHJpbnQsY2hhaW5Db2RlLGluZGV4LGRlcHRoLG51bGwpfXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGV4dGVuZGVkIGtleSIsImV4dGVuZGVkS2V5IiwiW1JFREFDVEVEXSIpfTtyZXR1cm4gSEROb2RlfSgpO2V4cG9ydHMuSEROb2RlPUhETm9kZTtmdW5jdGlvbiBtbmVtb25pY1RvU2VlZChtbmVtb25pYyxwYXNzd29yZCl7aWYoIXBhc3N3b3JkKXtwYXNzd29yZD0iIn12YXIgc2FsdD0oMCxsaWIkOC50b1V0ZjhCeXRlcykoIm1uZW1vbmljIitwYXNzd29yZCxsaWIkOC5Vbmljb2RlTm9ybWFsaXphdGlvbkZvcm0uTkZLRCk7cmV0dXJuKDAsbGliJGwucGJrZGYyKSgoMCxsaWIkOC50b1V0ZjhCeXRlcykobW5lbW9uaWMsbGliJDguVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtLk5GS0QpLHNhbHQsMjA0OCw2NCwic2hhNTEyIil9ZXhwb3J0cy5tbmVtb25pY1RvU2VlZD1tbmVtb25pY1RvU2VlZDtmdW5jdGlvbiBtbmVtb25pY1RvRW50cm9weShtbmVtb25pYyx3b3JkbGlzdCl7d29yZGxpc3Q9Z2V0V29yZGxpc3Qod29yZGxpc3QpO2xvZ2dlci5jaGVja05vcm1hbGl6ZSgpO3ZhciB3b3Jkcz13b3JkbGlzdC5zcGxpdChtbmVtb25pYyk7aWYod29yZHMubGVuZ3RoJTMhPT0wKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgbW5lbW9uaWMiKX12YXIgZW50cm9weT0oMCxsaWIkMS5hcnJheWlmeSkobmV3IFVpbnQ4QXJyYXkoTWF0aC5jZWlsKDExKndvcmRzLmxlbmd0aC84KSkpO3ZhciBvZmZzZXQ9MDtmb3IodmFyIGk9MDtpPHdvcmRzLmxlbmd0aDtpKyspe3ZhciBpbmRleD13b3JkbGlzdC5nZXRXb3JkSW5kZXgod29yZHNbaV0ubm9ybWFsaXplKCJORktEIikpO2lmKGluZGV4PT09LTEpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBtbmVtb25pYyIpfWZvcih2YXIgYml0PTA7Yml0PDExO2JpdCsrKXtpZihpbmRleCYxPDwxMC1iaXQpe2VudHJvcHlbb2Zmc2V0Pj4zXXw9MTw8Ny1vZmZzZXQlOH1vZmZzZXQrK319dmFyIGVudHJvcHlCaXRzPTMyKndvcmRzLmxlbmd0aC8zO3ZhciBjaGVja3N1bUJpdHM9d29yZHMubGVuZ3RoLzM7dmFyIGNoZWNrc3VtTWFzaz1nZXRVcHBlck1hc2soY2hlY2tzdW1CaXRzKTt2YXIgY2hlY2tzdW09KDAsbGliJDEuYXJyYXlpZnkpKCgwLGxpYiRrLnNoYTI1NikoZW50cm9weS5zbGljZSgwLGVudHJvcHlCaXRzLzgpKSlbMF0mY2hlY2tzdW1NYXNrO2lmKGNoZWNrc3VtIT09KGVudHJvcHlbZW50cm9weS5sZW5ndGgtMV0mY2hlY2tzdW1NYXNrKSl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNoZWNrc3VtIil9cmV0dXJuKDAsbGliJDEuaGV4bGlmeSkoZW50cm9weS5zbGljZSgwLGVudHJvcHlCaXRzLzgpKX1leHBvcnRzLm1uZW1vbmljVG9FbnRyb3B5PW1uZW1vbmljVG9FbnRyb3B5O2Z1bmN0aW9uIGVudHJvcHlUb01uZW1vbmljKGVudHJvcHksd29yZGxpc3Qpe3dvcmRsaXN0PWdldFdvcmRsaXN0KHdvcmRsaXN0KTtlbnRyb3B5PSgwLGxpYiQxLmFycmF5aWZ5KShlbnRyb3B5KTtpZihlbnRyb3B5Lmxlbmd0aCU0IT09MHx8ZW50cm9weS5sZW5ndGg8MTZ8fGVudHJvcHkubGVuZ3RoPjMyKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZW50cm9weSIpfXZhciBpbmRpY2VzPVswXTt2YXIgcmVtYWluaW5nQml0cz0xMTtmb3IodmFyIGk9MDtpPGVudHJvcHkubGVuZ3RoO2krKyl7aWYocmVtYWluaW5nQml0cz44KXtpbmRpY2VzW2luZGljZXMubGVuZ3RoLTFdPDw9ODtpbmRpY2VzW2luZGljZXMubGVuZ3RoLTFdfD1lbnRyb3B5W2ldO3JlbWFpbmluZ0JpdHMtPTh9ZWxzZXtpbmRpY2VzW2luZGljZXMubGVuZ3RoLTFdPDw9cmVtYWluaW5nQml0cztpbmRpY2VzW2luZGljZXMubGVuZ3RoLTFdfD1lbnRyb3B5W2ldPj44LXJlbWFpbmluZ0JpdHM7aW5kaWNlcy5wdXNoKGVudHJvcHlbaV0mZ2V0TG93ZXJNYXNrKDgtcmVtYWluaW5nQml0cykpO3JlbWFpbmluZ0JpdHMrPTN9fXZhciBjaGVja3N1bUJpdHM9ZW50cm9weS5sZW5ndGgvNDt2YXIgY2hlY2tzdW09KDAsbGliJDEuYXJyYXlpZnkpKCgwLGxpYiRrLnNoYTI1NikoZW50cm9weSkpWzBdJmdldFVwcGVyTWFzayhjaGVja3N1bUJpdHMpO2luZGljZXNbaW5kaWNlcy5sZW5ndGgtMV08PD1jaGVja3N1bUJpdHM7aW5kaWNlc1tpbmRpY2VzLmxlbmd0aC0xXXw9Y2hlY2tzdW0+PjgtY2hlY2tzdW1CaXRzO3JldHVybiB3b3JkbGlzdC5qb2luKGluZGljZXMubWFwKGZ1bmN0aW9uKGluZGV4KXtyZXR1cm4gd29yZGxpc3QuZ2V0V29yZChpbmRleCl9KSl9ZXhwb3J0cy5lbnRyb3B5VG9NbmVtb25pYz1lbnRyb3B5VG9NbmVtb25pYztmdW5jdGlvbiBpc1ZhbGlkTW5lbW9uaWMobW5lbW9uaWMsd29yZGxpc3Qpe3RyeXttbmVtb25pY1RvRW50cm9weShtbmVtb25pYyx3b3JkbGlzdCk7cmV0dXJuIHRydWV9Y2F0Y2goZXJyb3Ipe31yZXR1cm4gZmFsc2V9ZXhwb3J0cy5pc1ZhbGlkTW5lbW9uaWM9aXNWYWxpZE1uZW1vbmljO2Z1bmN0aW9uIGdldEFjY291bnRQYXRoKGluZGV4KXtpZih0eXBlb2YgaW5kZXghPT0ibnVtYmVyInx8aW5kZXg8MHx8aW5kZXg+PUhhcmRlbmVkQml0fHxpbmRleCUxKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGFjY291bnQgaW5kZXgiLCJpbmRleCIsaW5kZXgpfXJldHVybiJtLzQ0Jy82MCcvIitpbmRleCsiJy8wLzAifWV4cG9ydHMuZ2V0QWNjb3VudFBhdGg9Z2V0QWNjb3VudFBhdGh9KTt2YXIgaW5kZXgkbD1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkbik7dmFyIF92ZXJzaW9uJHk9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0icmFuZG9tLzUuNy4wIn0pO3ZhciBfdmVyc2lvbiR6PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJHkpO3ZhciBicm93c2VyUmFuZG9tPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5yYW5kb21CeXRlcz12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiR5LnZlcnNpb24pO2Z1bmN0aW9uIGdldEdsb2JhbCgpe2lmKHR5cGVvZiBzZWxmIT09InVuZGVmaW5lZCIpe3JldHVybiBzZWxmfWlmKHR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIil7cmV0dXJuIHdpbmRvd31pZih0eXBlb2YgY29tbW9uanNHbG9iYWwhPT0idW5kZWZpbmVkIil7cmV0dXJuIGNvbW1vbmpzR2xvYmFsfXRocm93IG5ldyBFcnJvcigidW5hYmxlIHRvIGxvY2F0ZSBnbG9iYWwgb2JqZWN0Iil9dmFyIGFueUdsb2JhbD1nZXRHbG9iYWwoKTt2YXIgY3J5cHRvPWFueUdsb2JhbC5jcnlwdG98fGFueUdsb2JhbC5tc0NyeXB0bztpZighY3J5cHRvfHwhY3J5cHRvLmdldFJhbmRvbVZhbHVlcyl7bG9nZ2VyLndhcm4oIldBUk5JTkc6IE1pc3Npbmcgc3Ryb25nIHJhbmRvbSBudW1iZXIgc291cmNlIik7Y3J5cHRvPXtnZXRSYW5kb21WYWx1ZXM6ZnVuY3Rpb24oYnVmZmVyKXtyZXR1cm4gbG9nZ2VyLnRocm93RXJyb3IoIm5vIHNlY3VyZSByYW5kb20gc291cmNlIGF2YWlhbGJsZSIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246ImNyeXB0by5nZXRSYW5kb21WYWx1ZXMifSl9fX1mdW5jdGlvbiByYW5kb21CeXRlcyhsZW5ndGgpe2lmKGxlbmd0aDw9MHx8bGVuZ3RoPjEwMjR8fGxlbmd0aCUxfHxsZW5ndGghPWxlbmd0aCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBsZW5ndGgiLCJsZW5ndGgiLGxlbmd0aCl9dmFyIHJlc3VsdD1uZXcgVWludDhBcnJheShsZW5ndGgpO2NyeXB0by5nZXRSYW5kb21WYWx1ZXMocmVzdWx0KTtyZXR1cm4oMCxsaWIkMS5hcnJheWlmeSkocmVzdWx0KX1leHBvcnRzLnJhbmRvbUJ5dGVzPXJhbmRvbUJ5dGVzfSk7dmFyIGJyb3dzZXJSYW5kb20kMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhicm93c2VyUmFuZG9tKTt2YXIgc2h1ZmZsZT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuc2h1ZmZsZWQ9dm9pZCAwO2Z1bmN0aW9uIHNodWZmbGVkKGFycmF5KXthcnJheT1hcnJheS5zbGljZSgpO2Zvcih2YXIgaT1hcnJheS5sZW5ndGgtMTtpPjA7aS0tKXt2YXIgaj1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqKGkrMSkpO3ZhciB0bXA9YXJyYXlbaV07YXJyYXlbaV09YXJyYXlbal07YXJyYXlbal09dG1wfXJldHVybiBhcnJheX1leHBvcnRzLnNodWZmbGVkPXNodWZmbGVkfSk7dmFyIHNodWZmbGUkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhzaHVmZmxlKTt2YXIgbGliJG89Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnNodWZmbGVkPWV4cG9ydHMucmFuZG9tQnl0ZXM9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJyYW5kb21CeXRlcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYnJvd3NlclJhbmRvbS5yYW5kb21CeXRlc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywic2h1ZmZsZWQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHNodWZmbGUuc2h1ZmZsZWR9fSl9KTt2YXIgaW5kZXgkbT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkbyk7dmFyIGFlc0pzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHJvb3Qpe2Z1bmN0aW9uIGNoZWNrSW50KHZhbHVlKXtyZXR1cm4gcGFyc2VJbnQodmFsdWUpPT09dmFsdWV9ZnVuY3Rpb24gY2hlY2tJbnRzKGFycmF5aXNoKXtpZighY2hlY2tJbnQoYXJyYXlpc2gubGVuZ3RoKSl7cmV0dXJuIGZhbHNlfWZvcih2YXIgaT0wO2k8YXJyYXlpc2gubGVuZ3RoO2krKyl7aWYoIWNoZWNrSW50KGFycmF5aXNoW2ldKXx8YXJyYXlpc2hbaV08MHx8YXJyYXlpc2hbaV0+MjU1KXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfWZ1bmN0aW9uIGNvZXJjZUFycmF5KGFyZyxjb3B5KXtpZihhcmcuYnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXcoYXJnKSYmYXJnLm5hbWU9PT0iVWludDhBcnJheSIpe2lmKGNvcHkpe2lmKGFyZy5zbGljZSl7YXJnPWFyZy5zbGljZSgpfWVsc2V7YXJnPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZyl9fXJldHVybiBhcmd9aWYoQXJyYXkuaXNBcnJheShhcmcpKXtpZighY2hlY2tJbnRzKGFyZykpe3Rocm93IG5ldyBFcnJvcigiQXJyYXkgY29udGFpbnMgaW52YWxpZCB2YWx1ZTogIithcmcpfXJldHVybiBuZXcgVWludDhBcnJheShhcmcpfWlmKGNoZWNrSW50KGFyZy5sZW5ndGgpJiZjaGVja0ludHMoYXJnKSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGFyZyl9dGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBhcnJheS1saWtlIG9iamVjdCIpfWZ1bmN0aW9uIGNyZWF0ZUFycmF5KGxlbmd0aCl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGxlbmd0aCl9ZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZUFycmF5LHRhcmdldEFycmF5LHRhcmdldFN0YXJ0LHNvdXJjZVN0YXJ0LHNvdXJjZUVuZCl7aWYoc291cmNlU3RhcnQhPW51bGx8fHNvdXJjZUVuZCE9bnVsbCl7aWYoc291cmNlQXJyYXkuc2xpY2Upe3NvdXJjZUFycmF5PXNvdXJjZUFycmF5LnNsaWNlKHNvdXJjZVN0YXJ0LHNvdXJjZUVuZCl9ZWxzZXtzb3VyY2VBcnJheT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChzb3VyY2VBcnJheSxzb3VyY2VTdGFydCxzb3VyY2VFbmQpfX10YXJnZXRBcnJheS5zZXQoc291cmNlQXJyYXksdGFyZ2V0U3RhcnQpfXZhciBjb252ZXJ0VXRmOD1mdW5jdGlvbigpe2Z1bmN0aW9uIHRvQnl0ZXModGV4dCl7dmFyIHJlc3VsdD1bXSxpPTA7dGV4dD1lbmNvZGVVUkkodGV4dCk7d2hpbGUoaTx0ZXh0Lmxlbmd0aCl7dmFyIGM9dGV4dC5jaGFyQ29kZUF0KGkrKyk7aWYoYz09PTM3KXtyZXN1bHQucHVzaChwYXJzZUludCh0ZXh0LnN1YnN0cihpLDIpLDE2KSk7aSs9Mn1lbHNle3Jlc3VsdC5wdXNoKGMpfX1yZXR1cm4gY29lcmNlQXJyYXkocmVzdWx0KX1mdW5jdGlvbiBmcm9tQnl0ZXMoYnl0ZXMpe3ZhciByZXN1bHQ9W10saT0wO3doaWxlKGk8Ynl0ZXMubGVuZ3RoKXt2YXIgYz1ieXRlc1tpXTtpZihjPDEyOCl7cmVzdWx0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7aSsrfWVsc2UgaWYoYz4xOTEmJmM8MjI0KXtyZXN1bHQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKChjJjMxKTw8NnxieXRlc1tpKzFdJjYzKSk7aSs9Mn1lbHNle3Jlc3VsdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoKGMmMTUpPDwxMnwoYnl0ZXNbaSsxXSY2Myk8PDZ8Ynl0ZXNbaSsyXSY2MykpO2krPTN9fXJldHVybiByZXN1bHQuam9pbigiIil9cmV0dXJue3RvQnl0ZXM6dG9CeXRlcyxmcm9tQnl0ZXM6ZnJvbUJ5dGVzfX0oKTt2YXIgY29udmVydEhleD1mdW5jdGlvbigpe2Z1bmN0aW9uIHRvQnl0ZXModGV4dCl7dmFyIHJlc3VsdD1bXTtmb3IodmFyIGk9MDtpPHRleHQubGVuZ3RoO2krPTIpe3Jlc3VsdC5wdXNoKHBhcnNlSW50KHRleHQuc3Vic3RyKGksMiksMTYpKX1yZXR1cm4gcmVzdWx0fXZhciBIZXg9IjAxMjM0NTY3ODlhYmNkZWYiO2Z1bmN0aW9uIGZyb21CeXRlcyhieXRlcyl7dmFyIHJlc3VsdD1bXTtmb3IodmFyIGk9MDtpPGJ5dGVzLmxlbmd0aDtpKyspe3ZhciB2PWJ5dGVzW2ldO3Jlc3VsdC5wdXNoKEhleFsodiYyNDApPj40XStIZXhbdiYxNV0pfXJldHVybiByZXN1bHQuam9pbigiIil9cmV0dXJue3RvQnl0ZXM6dG9CeXRlcyxmcm9tQnl0ZXM6ZnJvbUJ5dGVzfX0oKTt2YXIgbnVtYmVyT2ZSb3VuZHM9ezE2OjEwLDI0OjEyLDMyOjE0fTt2YXIgcmNvbj1bMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDVdO3ZhciBTPVs5OSwxMjQsMTE5LDEyMywyNDIsMTA3LDExMSwxOTcsNDgsMSwxMDMsNDMsMjU0LDIxNSwxNzEsMTE4LDIwMiwxMzAsMjAxLDEyNSwyNTAsODksNzEsMjQwLDE3MywyMTIsMTYyLDE3NSwxNTYsMTY0LDExNCwxOTIsMTgzLDI1MywxNDcsMzgsNTQsNjMsMjQ3LDIwNCw1MiwxNjUsMjI5LDI0MSwxMTMsMjE2LDQ5LDIxLDQsMTk5LDM1LDE5NSwyNCwxNTAsNSwxNTQsNywxOCwxMjgsMjI2LDIzNSwzOSwxNzgsMTE3LDksMTMxLDQ0LDI2LDI3LDExMCw5MCwxNjAsODIsNTksMjE0LDE3OSw0MSwyMjcsNDcsMTMyLDgzLDIwOSwwLDIzNywzMiwyNTIsMTc3LDkxLDEwNiwyMDMsMTkwLDU3LDc0LDc2LDg4LDIwNywyMDgsMjM5LDE3MCwyNTEsNjcsNzcsNTEsMTMzLDY5LDI0OSwyLDEyNyw4MCw2MCwxNTksMTY4LDgxLDE2Myw2NCwxNDMsMTQ2LDE1Nyw1NiwyNDUsMTg4LDE4MiwyMTgsMzMsMTYsMjU1LDI0MywyMTAsMjA1LDEyLDE5LDIzNiw5NSwxNTEsNjgsMjMsMTk2LDE2NywxMjYsNjEsMTAwLDkzLDI1LDExNSw5NiwxMjksNzksMjIwLDM0LDQyLDE0NCwxMzYsNzAsMjM4LDE4NCwyMCwyMjIsOTQsMTEsMjE5LDIyNCw1MCw1OCwxMCw3Myw2LDM2LDkyLDE5NCwyMTEsMTcyLDk4LDE0NSwxNDksMjI4LDEyMSwyMzEsMjAwLDU1LDEwOSwxNDEsMjEzLDc4LDE2OSwxMDgsODYsMjQ0LDIzNCwxMDEsMTIyLDE3NCw4LDE4NiwxMjAsMzcsNDYsMjgsMTY2LDE4MCwxOTgsMjMyLDIyMSwxMTYsMzEsNzUsMTg5LDEzOSwxMzgsMTEyLDYyLDE4MSwxMDIsNzIsMywyNDYsMTQsOTcsNTMsODcsMTg1LDEzNCwxOTMsMjksMTU4LDIyNSwyNDgsMTUyLDE3LDEwNSwyMTcsMTQyLDE0OCwxNTUsMzAsMTM1LDIzMywyMDYsODUsNDAsMjIzLDE0MCwxNjEsMTM3LDEzLDE5MSwyMzAsNjYsMTA0LDY1LDE1Myw0NSwxNSwxNzYsODQsMTg3LDIyXTt2YXIgU2k9WzgyLDksMTA2LDIxMyw0OCw1NCwxNjUsNTYsMTkxLDY0LDE2MywxNTgsMTI5LDI0MywyMTUsMjUxLDEyNCwyMjcsNTcsMTMwLDE1NSw0NywyNTUsMTM1LDUyLDE0Miw2Nyw2OCwxOTYsMjIyLDIzMywyMDMsODQsMTIzLDE0OCw1MCwxNjYsMTk0LDM1LDYxLDIzOCw3NiwxNDksMTEsNjYsMjUwLDE5NSw3OCw4LDQ2LDE2MSwxMDIsNDAsMjE3LDM2LDE3OCwxMTgsOTEsMTYyLDczLDEwOSwxMzksMjA5LDM3LDExNCwyNDgsMjQ2LDEwMCwxMzQsMTA0LDE1MiwyMiwyMTIsMTY0LDkyLDIwNCw5MywxMDEsMTgyLDE0NiwxMDgsMTEyLDcyLDgwLDI1MywyMzcsMTg1LDIxOCw5NCwyMSw3MCw4NywxNjcsMTQxLDE1NywxMzIsMTQ0LDIxNiwxNzEsMCwxNDAsMTg4LDIxMSwxMCwyNDcsMjI4LDg4LDUsMTg0LDE3OSw2OSw2LDIwOCw0NCwzMCwxNDMsMjAyLDYzLDE1LDIsMTkzLDE3NSwxODksMywxLDE5LDEzOCwxMDcsNTgsMTQ1LDE3LDY1LDc5LDEwMywyMjAsMjM0LDE1MSwyNDIsMjA3LDIwNiwyNDAsMTgwLDIzMCwxMTUsMTUwLDE3MiwxMTYsMzQsMjMxLDE3Myw1MywxMzMsMjI2LDI0OSw1NSwyMzIsMjgsMTE3LDIyMywxMTAsNzEsMjQxLDI2LDExMywyOSw0MSwxOTcsMTM3LDExMSwxODMsOTgsMTQsMTcwLDI0LDE5MCwyNywyNTIsODYsNjIsNzUsMTk4LDIxMCwxMjEsMzIsMTU0LDIxOSwxOTIsMjU0LDEyMCwyMDUsOTAsMjQ0LDMxLDIyMSwxNjgsNTEsMTM2LDcsMTk5LDQ5LDE3NywxOCwxNiw4OSwzOSwxMjgsMjM2LDk1LDk2LDgxLDEyNywxNjksMjUsMTgxLDc0LDEzLDQ1LDIyOSwxMjIsMTU5LDE0NywyMDEsMTU2LDIzOSwxNjAsMjI0LDU5LDc3LDE3NCw0MiwyNDUsMTc2LDIwMCwyMzUsMTg3LDYwLDEzMSw4MywxNTMsOTcsMjMsNDMsNCwxMjYsMTg2LDExOSwyMTQsMzgsMjI1LDEwNSwyMCw5OSw4NSwzMywxMiwxMjVdO3ZhciBUMT1bMzMyODQwMjM0MSw0MTY4OTA3OTA4LDQwMDA4MDY4MDksNDEzNTI4NzY5Myw0Mjk0MTExNzU3LDM1OTczNjQxNTcsMzczMTg0NTA0MSwyNDQ1NjU3NDI4LDE2MTM3NzA4MzIsMzM2MjAyMjcsMzQ2Mjg4MzI0MSwxNDQ1NjY5NzU3LDM4OTIyNDgwODksMzA1MDgyMTQ3NCwxMzAzMDk2Mjk0LDM5NjcxODY1ODYsMjQxMjQzMTk0MSw1Mjg2NDY4MTMsMjMxMTcwMjg0OCw0MjAyNTI4MTM1LDQwMjYyMDI2NDUsMjk5MjIwMDE3MSwyMzg3MDM2MTA1LDQyMjY4NzEzMDcsMTEwMTkwMTI5MiwzMDE3MDY5NjcxLDE2MDQ0OTQwNzcsMTE2OTE0MTczOCw1OTc0NjYzMDMsMTQwMzI5OTA2MywzODMyNzA1Njg2LDI2MTMxMDA2MzUsMTk3NDk3NDQwMiwzNzkxNTE5MDA0LDEwMzMwODE3NzQsMTI3NzU2ODYxOCwxODE1NDkyMTg2LDIxMTgwNzQxNzcsNDEyNjY2ODU0NiwyMjExMjM2OTQzLDE3NDgyNTE3NDAsMTM2OTgxMDQyMCwzNTIxNTA0NTY0LDQxOTMzODI2NjQsMzc5OTA4NTQ1OSwyODgzMTE1MTIzLDE2NDczOTEwNTksNzA2MDI0NzY3LDEzNDQ4MDkwOCwyNTEyODk3ODc0LDExNzY3MDc5NDEsMjY0Njg1MjQ0Niw4MDY4ODU0MTYsOTMyNjE1ODQxLDE2ODEwMTEzNSw3OTg2NjEzMDEsMjM1MzQxNTc3LDYwNTE2NDA4Niw0NjE0MDYzNjMsMzc1NjE4ODIyMSwzNDU0NzkwNDM4LDEzMTExODg4NDEsMjE0MjQxNzYxMywzOTMzNTY2MzY3LDMwMjU4MjA0Myw0OTUxNTgxNzQsMTQ3OTI4OTk3Miw4NzQxMjU4NzAsOTA3NzQ2MDkzLDM2OTgyMjQ4MTgsMzAyNTgyMDM5OCwxNTM3MjUzNjI3LDI3NTY4NTg2MTQsMTk4MzU5MzI5MywzMDg0MzEwMTEzLDIxMDg5Mjg5NzQsMTM3ODQyOTMwNywzNzIyNjk5NTgyLDE1ODAxNTA2NDEsMzI3NDUxNzk5LDI3OTA0Nzg4MzcsMzExNzUzNTU5MiwwLDMyNTM1OTU0MzYsMTA3NTg0NzI2NCwzODI1MDA3NjQ3LDIwNDE2ODg1MjAsMzA1OTQ0MDYyMSwzNTYzNzQzOTM0LDIzNzg5NDMzMDIsMTc0MDU1Mzk0NSwxOTE2MzUyODQzLDI0ODc4OTY3OTgsMjU1NTEzNzIzNiwyOTU4NTc5OTQ0LDIyNDQ5ODg3NDYsMzE1MTAyNDIzNSwzMzIwODM1ODgyLDEzMzY1ODQ5MzMsMzk5MjcxNDAwNiwyMjUyNTU1MjA1LDI1ODg3NTc0NjMsMTcxNDYzMTUwOSwyOTM5NjMxNTYsMjMxOTc5NTY2MywzOTI1NDczNTUyLDY3MjQwNDU0LDQyNjk3Njg1NzcsMjY4OTYxODE2MCwyMDE3MjEzNTA4LDYzMTIxODEwNiwxMjY5MzQ0NDgzLDI3MjMyMzgzODcsMTU3MTAwNTQzOCwyMTUxNjk0NTI4LDkzMjk0NDc0LDEwNjY1NzA0MTMsNTYzOTc3NjYwLDE4ODI3MzI2MTYsNDA1OTQyODEwMCwxNjczMzEzNTAzLDIwMDg0NjMwNDEsMjk1MDM1NTU3MywxMTA5NDY3NDkxLDUzNzkyMzYzMiwzODU4NzU5NDUwLDQyNjA2MjMxMTgsMzIxODI2NDY4NSwyMTc3NzQ4MzAwLDQwMzQ0MjcwOCw2Mzg3ODQzMDksMzI4NzA4NDA3OSwzMTkzOTIxNTA1LDg5OTEyNzIwMiwyMjg2MTc1NDM2LDc3MzI2NTIwOSwyNDc5MTQ2MDcxLDE0MzcwNTA4NjYsNDIzNjE0ODM1NCwyMDUwODMzNzM1LDMzNjIwMjI1NzIsMzEyNjY4MTA2Myw4NDA1MDU2NDMsMzg2NjMyNTkwOSwzMjI3NTQxNjY0LDQyNzkxNzcyMCwyNjU1OTk3OTA1LDI3NDkxNjA1NzUsMTE0MzA4NzcxOCwxNDEyMDQ5NTM0LDk5OTMyOTk2MywxOTM0OTcyMTksMjM1MzQxNTg4MiwzMzU0MzI0NTIxLDE4MDcyNjgwNTEsNjcyNDA0NTQwLDI4MTY0MDEwMTcsMzE2MDMwMTI4MiwzNjk4MjI0OTMsMjkxNjg2NjkzNCwzNjg4OTQ3NzcxLDE2ODEwMTEyODYsMTk0OTk3MzA3MCwzMzYyMDIyNzAsMjQ1NDI3NjU3MSwyMDE3MjEzNTQsMTIxMDMyODE3MiwzMDkzMDYwODM2LDI2ODAzNDEwODUsMzE4NDc3NjA0NiwxMTM1Mzg5OTM1LDMyOTQ3ODIxMTgsOTY1ODQxMzIwLDgzMTg4Njc1NiwzNTU0OTkzMjA3LDQwNjgwNDcyNDMsMzU4ODc0NTAxMCwyMzQ1MTkxNDkxLDE4NDkxMTI0MDksMzY2NDYwNDU5OSwyNjA1NDAyOCwyOTgzNTgxMDI4LDI2MjIzNzc2ODIsMTIzNTg1NTg0MCwzNjMwOTg0MzcyLDI4OTEzMzk1MTQsNDA5MjkxNjc0MywzNDg4Mjc5MDc3LDMzOTU2NDI3OTksNDEwMTY2NzQ3MCwxMjAyNjMwMzc3LDI2ODk2MTgxNiwxODc0NTA4NTAxLDQwMzQ0MjcwMTYsMTI0Mzk0ODM5OSwxNTQ2NTMwNDE4LDk0MTM2NjMwOCwxNDcwNTM5NTA1LDE5NDEyMjI1OTksMjU0NjM4NjUxMywzNDIxMDM4NjI3LDI3MTU2NzE5MzIsMzg5OTk0NjE0MCwxMDQyMjI2OTc3LDI1MjE1MTcwMjEsMTYzOTgyNDg2MCwyMjcyNDkwMzAsMjYwNzM3NjY5LDM3NjU0NjUyMzIsMjA4NDQ1Mzk1NCwxOTA3NzMzOTU2LDM0MjkyNjMwMTgsMjQyMDY1NjM0NCwxMDA4NjA2NzcsNDE2MDE1NzE4NSw0NzA2ODMxNTQsMzI2MTE2MTg5MSwxNzgxODcxOTY3LDI5MjQ5NTk3MzcsMTc3Mzc3OTQwOCwzOTQ2OTIyNDEsMjU3OTYxMTk5Miw5NzQ5ODY1MzUsNjY0NzA2NzQ1LDM2NTU0NTkxMjgsMzk1ODk2MjE5NSw3MzE0MjA4NTEsNTcxNTQzODU5LDM1MzAxMjM3MDcsMjg0OTYyNjQ4MCwxMjY3ODMxMTMsODY1Mzc1Mzk5LDc2NTE3MjY2MiwxMDA4NjA2NzU0LDM2MTIwMzYwMiwzMzg3NTQ5OTg0LDIyNzg0NzczODUsMjg1NzcxOTI5NSwxMzQ0ODA5MDgwLDI3ODI5MTIzNzgsNTk1NDI2NzEsMTUwMzc2NDk4NCwxNjAwMDg1NzYsNDM3MDYyOTM1LDE3MDcwNjUzMDYsMzYyMjIzMzY0OSwyMjE4OTM0OTgyLDM0OTY1MDM0ODAsMjE4NTMxNDc1NSw2OTc5MzIyMDgsMTUxMjkxMDE5OSw1MDQzMDMzNzcsMjA3NTE3NzE2MywyODI0MDk5MDY4LDE4NDEwMTk4NjIsNzM5NjQ0OTg2XTt2YXIgVDI9WzI3ODEyNDIyMTEsMjIzMDg3NzMwOCwyNTgyNTQyMTk5LDIzODE3NDA5MjMsMjM0ODc3NjgyLDMxODQ5NDYwMjcsMjk4NDE0NDc1MSwxNDE4ODM5NDkzLDEzNDg0ODEwNzIsNTA0NjI5NzcsMjg0ODg3NjM5MSwyMTAyNzk5MTQ3LDQzNDYzNDQ5NCwxNjU2MDg0NDM5LDM4NjM4NDk4OTksMjU5OTE4ODA4NiwxMTY3MDUxNDY2LDI2MzYwODc5MzgsMTA4Mjc3MTkxMywyMjgxMzQwMjg1LDM2ODA0ODg5MCwzOTU0MzM0MDQxLDMzODE1NDQ3NzUsMjAxMDYwNTkyLDM5NjM3MjcyNzcsMTczOTgzODY3Niw0MjUwOTAzMjAyLDM5MzA0MzU1MDMsMzIwNjc4MjEwOCw0MTQ5NDUzOTg4LDI1MzE1NTM5MDYsMTUzNjkzNDA4MCwzMjYyNDk0NjQ3LDQ4NDU3MjY2OSwyOTIzMjcxMDU5LDE3ODMzNzUzOTgsMTUxNzA0MTIwNiwxMDk4NzkyNzY3LDQ5Njc0MjMxLDEzMzQwMzc3MDgsMTU1MDMzMjk4MCw0MDk4OTkxNTI1LDg4NjE3MTEwOSwxNTA1OTgxMjksMjQ4MTA5MDkyOSwxOTQwNjQyMDA4LDEzOTg5NDQwNDksMTA1OTcyMjUxNywyMDE4NTE5MDgsMTM4NTU0NzcxOSwxNjk5MDk1MzMxLDE1ODczOTc1NzEsNjc0MjQwNTM2LDI3MDQ3NzQ4MDYsMjUyMzE0ODg1LDMwMzk3OTU4NjYsMTUxOTE0MjQ3LDkwODMzMzU4NiwyNjAyMjcwODQ4LDEwMzgwODI3ODYsNjUxMDI5NDgzLDE3NjY3Mjk1MTEsMzQ0NzY5ODA5OCwyNjgyOTQyODM3LDQ1NDE2Njc5MywyNjUyNzM0MzM5LDE5NTE5MzU1MzIsNzc1MTY2NDkwLDc1ODUyMDYwMywzMDAwNzkwNjM4LDQwMDQ3OTcwMTgsNDIxNzA4NjExMiw0MTM3OTY0MTE0LDEyOTk1OTQwNDMsMTYzOTQzODAzOCwzNDY0MzQ0NDk5LDIwNjg5ODIwNTcsMTA1NDcyOTE4NywxOTAxOTk3ODcxLDI1MzQ2Mzg3MjQsNDEyMTMxODIyNywxNzU3MDA4MzM3LDAsNzUwOTA2ODYxLDE2MTQ4MTUyNjQsNTM1MDM1MTMyLDMzNjM0MTg1NDUsMzk4ODE1MTEzMSwzMjAxNTkxOTE0LDExODM2OTc4NjcsMzY0NzQ1NDkxMCwxMjY1Nzc2OTUzLDM3MzQyNjAyOTgsMzU2Njc1MDc5NiwzOTAzODcxMDY0LDEyNTAyODM0NzEsMTgwNzQ3MDgwMCw3MTc2MTUwODcsMzg0NzIwMzQ5OCwzODQ2OTUyOTEsMzMxMzkxMDU5NSwzNjE3MjEzNzczLDE0MzI3NjExMzksMjQ4NDE3NjI2MSwzNDgxOTQ1NDEzLDI4Mzc2OTMzNywxMDA5MjU5NTQsMjE4MDkzOTY0Nyw0MDM3MDM4MTYwLDExNDg3MzA0MjgsMzEyMzAyNzg3MSwzODEzMzg2NDA4LDQwODc1MDExMzcsNDI2NzU0OTYwMywzMjI5NjMwNTI4LDIzMTU2MjAyMzksMjkwNjYyNDY1OCwzMTU2MzE5NjQ1LDEyMTUzMTM5NzYsODI5NjYwMDUsMzc0Nzg1NTU0OCwzMjQ1ODQ4MjQ2LDE5NzQ0NTkwOTgsMTY2NTI3ODI0MSw4MDc0MDc2MzIsNDUxMjgwODk1LDI1MTUyNDA4MywxODQxMjg3ODkwLDEyODM1NzUyNDUsMzM3MTIwMjY4LDg5MTY4NzY5OSw4MDEzNjkzMjQsMzc4NzM0OTg1NSwyNzIxNDIxMjA3LDM0MzE0ODI0MzYsOTU5MzIxODc5LDE0NjkzMDE5NTYsNDA2NTY5OTc1MSwyMTk3NTg1NTM0LDExOTkxOTM0MDUsMjg5ODgxNDA1MiwzODg3NzUwNDkzLDcyNDcwMzUxMywyNTE0OTA4MDE5LDI2OTY5NjIxNDQsMjU1MTgwODM4NSwzNTE2ODEzMTM1LDIxNDE0NDUzNDAsMTcxNTc0MTIxOCwyMTE5NDQ1MDM0LDI4NzI4MDc1NjgsMjE5ODU3MTE0NCwzMzk4MTkwNjYyLDcwMDk2ODY4NiwzNTQ3MDUyMjE2LDEwMDkyNTk1NDAsMjA0MTA0NDcwMiwzODAzOTk1NzQyLDQ4Nzk4Mzg4MywxOTkxMTA1NDk5LDEwMDQyNjU2OTYsMTQ0OTQwNzAyNiwxMzE2MjM5OTMwLDUwNDYyOTc3MCwzNjgzNzk3MzIxLDE2ODU2MDEzNCwxODE2NjY3MTcyLDM4MzcyODc1MTYsMTU3MDc1MTE3MCwxODU3OTM0MjkxLDQwMTQxODk3NDAsMjc5Nzg4ODA5OCwyODIyMzQ1MTA1LDI3NTQ3MTI5ODEsOTM2NjMzNTcyLDIzNDc5MjM4MzMsODUyODc5MzM1LDExMzMyMzQzNzYsMTUwMDM5NTMxOSwzMDg0NTQ1Mzg5LDIzNDg5MTIwMTMsMTY4OTM3NjIxMywzNTMzNDU5MDIyLDM3NjI5MjM5NDUsMzAzNDA4MjQxMiw0MjA1NTk4Mjk0LDEzMzQyODQ2OCw2MzQzODMwODIsMjk0OTI3NzAyOSwyMzk4Mzg2ODEwLDM5MTM3ODkxMDIsNDAzNzAzODE2LDM1ODA4NjkzMDYsMjI5NzQ2MDg1NiwxODY3MTMwMTQ5LDE5MTg2NDM3NTgsNjA3NjU2OTg4LDQwNDkwNTMzNTAsMzM0NjI0ODg4NCwxMzY4OTAxMzE4LDYwMDU2NTk5MiwyMDkwOTgyODc3LDI2MzI0Nzk4NjAsNTU3NzE5MzI3LDM3MTc2MTQ0MTEsMzY5NzM5MzA4NSwyMjQ5MDM0NjM1LDIyMzIzODgyMzQsMjQzMDYyNzk1MiwxMTE1NDM4NjU0LDMyOTU3ODY0MjEsMjg2NTUyMjI3OCwzNjMzMzM0MzQ0LDg0MjgwMDY3LDMzMDI3ODMwLDMwMzgyODQ5NCwyNzQ3NDI1MTIxLDE2MDA3OTU5NTcsNDE4ODk1MjQwNywzNDk2NTg5NzUzLDI0MzQyMzgwODYsMTQ4NjQ3MTYxNyw2NTgxMTk5NjUsMzEwNjM4MTQ3MCw5NTM4MDMyMzMsMzM0MjMxODAwLDMwMDU5Nzg3NzYsODU3ODcwNjA5LDMxNTExMjg5MzcsMTg5MDE3OTU0NSwyMjk4OTczODM4LDI4MDUxNzU0NDQsMzA1NjQ0MjI2Nyw1NzQzNjUyMTQsMjQ1MDg4NDQ4Nyw1NTAxMDM1MjksMTIzMzYzNzA3MCw0Mjg5MzUzMDQ1LDIwMTg1MTkwODAsMjA1NzY5MTEwMywyMzk5Mzc0NDc2LDQxNjY2MjM2NDksMjE0ODEwODY4MSwzODc1ODMyNDUsMzY2NDEwMTMxMSw4MzYyMzI5MzQsMzMzMDU1NjQ4MiwzMTAwNjY1OTYwLDMyODAwOTM1MDUsMjk1NTUxNjMxMywyMDAyMzk4NTA5LDI4NzE4MjYwNywzNDEzODgxMDA4LDQyMzg4OTAwNjgsMzU5NzUxNTcwNyw5NzU5Njc3NjZdO3ZhciBUMz1bMTY3MTgwODYxMSwyMDg5MDg5MTQ4LDIwMDY1NzY3NTksMjA3MjkwMTI0Myw0MDYxMDAzNzYyLDE4MDc2MDMzMDcsMTg3MzkyNzc5MSwzMzEwNjUzODkzLDgxMDU3Mzg3MiwxNjk3NDMzNywxNzM5MTgxNjcxLDcyOTYzNDM0Nyw0MjYzMTEwNjU0LDM2MTM1NzA1MTksMjg4Mzk5NzA5OSwxOTg5ODY0NTY2LDMzOTM1NTY0MjYsMjE5MTMzNTI5OCwzMzc2NDQ5OTkzLDIxMDYwNjM0ODUsNDE5NTc0MTY5MCwxNTA4NjE4ODQxLDEyMDQzOTE0OTUsNDAyNzMxNzIzMiwyOTE3OTQxNjc3LDM1NjM1NjYwMzYsMjczNDUxNDA4MiwyOTUxMzY2MDYzLDI2Mjk3NzIxODgsMjc2NzY3MjIyOCwxOTIyNDkxNTA2LDMyMjcyMjkxMjAsMzA4Mjk3NDY0Nyw0MjQ2NTI4NTA5LDI0Nzc2Njk3NzksNjQ0NTAwNTE4LDkxMTg5NTYwNiwxMDYxMjU2NzY3LDQxNDQxNjYzOTEsMzQyNzc2MzE0OCw4Nzg0NzEyMjAsMjc4NDI1MjMyNSwzODQ1NDQ0MDY5LDQwNDM4OTczMjksMTkwNTUxNzE2OSwzNjMxNDU5Mjg4LDgyNzU0ODIwOSwzNTY0NjEwNzcsNjc4OTczNDgsMzM0NDA3ODI3OSw1OTM4Mzk2NTEsMzI3Nzc1Nzg5MSw0MDUyODY5MzYsMjUyNzE0NzkyNiw4NDg3MTY4NSwyNTk1NTY1NDY2LDExODAzMzkyNywzMDU1MzgwNjYsMjE1NzY0ODc2OCwzNzk1NzA1ODI2LDM5NDUxODg4NDMsNjYxMjEyNzExLDI5OTk4MTIwMTgsMTk3MzQxNDUxNywxNTI3NjkwMzMsMjIwODE3NzUzOSw3NDU4MjIyNTIsNDM5MjM1NjEwLDQ1NTk0NzgwMywxODU3MjE1NTk4LDE1MjU1OTMxNzgsMjcwMDgyNzU1MiwxMzkxODk1NjM0LDk5NDkzMjI4MywzNTk2NzI4Mjc4LDMwMTY2NTQyNTksNjk1OTQ3ODE3LDM4MTI1NDgwNjcsNzk1OTU4ODMxLDIyMjQ0OTM0NDQsMTQwODYwNzgyNywzNTEzMzAxNDU3LDAsMzk3OTEzMzQyMSw1NDMxNzg3ODQsNDIyOTk0ODQxMiwyOTgyNzA1NTg1LDE1NDIzMDUzNzEsMTc5MDg5MTExNCwzNDEwMzk4NjY3LDMyMDE5MTg5MTAsOTYxMjQ1NzUzLDEyNTYxMDA5MzgsMTI4OTAwMTAzNiwxNDkxNjQ0NTA0LDM0Nzc3Njc2MzEsMzQ5NjcyMTM2MCw0MDEyNTU3ODA3LDI4NjcxNTQ4NTgsNDIxMjU4MzkzMSwxMTM3MDE4NDM1LDEzMDU5NzUzNzMsODYxMjM0NzM5LDIyNDEwNzM1NDEsMTE3MTIyOTI1Myw0MTc4NjM1MjU3LDMzOTQ4Njc0LDIxMzkyMjU3MjcsMTM1Nzk0Njk2MCwxMDExMTIwMTg4LDI2Nzk3NzY2NzEsMjgzMzQ2ODMyOCwxMzc0OTIxMjk3LDI3NTEzNTYzMjMsMTA4NjM1NzU2OCwyNDA4MTg3Mjc5LDI0NjA4Mjc1MzgsMjY0NjM1MjI4NSw5NDQyNzE0MTYsNDExMDc0MjAwNSwzMTY4NzU2NjY4LDMwNjYxMzI0MDYsMzY2NTE0NTgxOCw1NjAxNTMxMjEsMjcxNTg5MzkyLDQyNzk5NTI4OTUsNDA3Nzg0NjAwMywzNTMwNDA3ODkwLDM0NDQzNDMyNDUsMjAyNjQzNDY4LDMyMjI1MDI1OSwzOTYyNTUzMzI0LDE2MDg2Mjk4NTUsMjU0Mzk5MDE2NywxMTU0MjU0OTE2LDM4OTYyMzMxOSwzMjk0MDczNzk2LDI4MTc2NzY3MTEsMjEyMjUxMzUzNCwxMDI4MDk0NTI1LDE2ODkwNDUwOTIsMTU3NTQ2NzYxMyw0MjIyNjEyNzMsMTkzOTIwMzY5OSwxNjIxMTQ3NzQ0LDIxNzQyMjg4NjUsMTMzOTEzNzYxNSwzNjk5MzUyNTQwLDU3NzEyNzQ1OCw3MTI5MjIxNTQsMjQyNzE0MTAwOCwyMjkwMjg5NTQ0LDExODc2NzkzMDIsMzk5NTcxNTU2NiwzMTAwODYzNDE2LDMzOTQ4Njc0MCwzNzMyNTE0NzgyLDE1OTE5MTc2NjIsMTg2NDU1NTYzLDM2ODE5ODgwNTksMzc2MjAxOTI5Niw4NDQ1MjI1NDYsOTc4MjIwMDkwLDE2OTc0MzM3MCwxMjM5MTI2NjAxLDEwMTMyMTczNCw2MTEwNzYxMzIsMTU1ODQ5MzI3NiwzMjYwOTE1NjUwLDM1NDcyNTAxMzEsMjkwMTM2MTU4MCwxNjU1MDk2NDE4LDI0NDM3MjExMDUsMjUxMDU2NTc4MSwzODI4ODYzOTcyLDIwMzkyMTQ3MTMsMzg3ODg2ODQ1NSwzMzU5ODY5ODk2LDkyODYwNzc5OSwxODQwNzY1NTQ5LDIzNzQ3NjI4OTMsMzU4MDE0NjEzMywxMzIyNDI1NDIyLDI4NTAwNDg0MjUsMTgyMzc5MTIxMiwxNDU5MjY4Njk0LDQwOTQxNjE5MDgsMzkyODM0NjYwMiwxNzA2MDE5NDI5LDIwNTYxODkwNTAsMjkzNDUyMzgyMiwxMzU3OTQ2OTYsMzEzNDU0OTk0NiwyMDIyMjQwMzc2LDYyODA1MDQ2OSw3NzkyNDY2MzgsNDcyMTM1NzA4LDI4MDA4MzQ0NzAsMzAzMjk3MDE2NCwzMzI3MjM2MDM4LDM4OTQ2NjAwNzIsMzcxNTkzMjYzNywxOTU2NDQwMTgwLDUyMjI3MjI4NywxMjcyODEzMTMxLDMxODUzMzY3NjUsMjM0MDgxODMxNSwyMzIzOTc2MDc0LDE4ODg1NDI4MzIsMTA0NDU0NDU3NCwzMDQ5NTUwMjYxLDE3MjI0Njk0NzgsMTIyMjE1MjI2NCw1MDY2MDg2Nyw0MTI3MzI0MTUwLDIzNjA2Nzg1NCwxNjM4MTIyMDgxLDg5NTQ0NTU1NywxNDc1OTgwODg3LDMxMTc0NDM1MTMsMjI1NzY1NTY4NiwzMjQzODA5MjE3LDQ4OTExMDA0NSwyNjYyOTM0NDMwLDM3Nzg1OTkzOTMsNDE2MjA1NTE2MCwyNTYxODc4OTM2LDI4ODU2MzcyOSwxNzczOTE2Nzc3LDM2NDgwMzkzODUsMjM5MTM0NTAzOCwyNDkzOTg1Njg0LDI2MTI0MDc3MDcsNTA1NTYwMDk0LDIyNzQ0OTc5MjcsMzkxMTI0MDE2OSwzNDYwOTI1MzkwLDE0NDI4MTg2NDUsNjc4OTczNDgwLDM3NDkzNTcwMjMsMjM1ODE4Mjc5NiwyNzE3NDA3NjQ5LDIzMDY4Njk2NDEsMjE5NjE3ODA1LDMyMTg3NjExNTEsMzg2MjAyNjIxNCwxMTIwMzA2MjQyLDE3NTY5NDI0NDAsMTEwMzMzMTkwNSwyNTc4NDU5MDMzLDc2Mjc5NjU4OSwyNTI3ODAwNDcsMjk2NjEyNTQ4OCwxNDI1ODQ0MzA4LDMxNTEzOTIxODcsMzcyOTExMTI2XTt2YXIgVDQ9WzE2Njc0NzQ4ODYsMjA4ODUzNTI4OCwyMDA0MzI2ODk0LDIwNzE2OTQ4MzgsNDA3NTk0OTU2NywxODAyMjIzMDYyLDE4Njk1OTEwMDYsMzMxODA0Mzc5Myw4MDg0NzI2NzIsMTY4NDM1MjIsMTczNDg0NjkyNiw3MjQyNzA0MjIsNDI3ODA2NTYzOSwzNjIxMjE2OTQ5LDI4ODAxNjk1NDksMTk4NzQ4NDM5NiwzNDAyMjUzNzExLDIxODk1OTc5ODMsMzM4NTQwOTY3MywyMTA1Mzc4ODEwLDQyMTA2OTM2MTUsMTQ5OTA2NTI2NiwxMTk1ODg2OTkwLDQwNDIyNjM1NDcsMjkxMzg1NjU3NywzNTcwNjg5OTcxLDI3Mjg1OTA2ODcsMjk0NzU0MTU3MywyNjI3NTE4MjQzLDI3NjIyNzQ2NDMsMTkyMDExMjM1NiwzMjMzODMxODM1LDMwODIyNzMzOTcsNDI2MTIyMzY0OSwyNDc1OTI5MTQ5LDY0MDA1MTc4OCw5MDk1MzE3NTYsMTA2MTExMDE0Miw0MTYwMTYwNTAxLDM0MzU5NDE3NjMsODc1ODQ2NzYwLDI3NzkxMTY2MjUsMzg1NzAwMzcyOSw0MDU5MTA1NTI5LDE5MDMyNjg4MzQsMzYzODA2NDA0Myw4MjUzMTYxOTQsMzUzNzEzOTYyLDY3Mzc0MDg4LDMzNTE3Mjg3ODksNTg5NTIyMjQ2LDMyODQzNjA4NjEsNDA0MjM2MzM2LDI1MjY0NTQwNzEsODQyMTc2MTAsMjU5MzgzMDE5MSwxMTc5MDE1ODIsMzAzMTgzMzk2LDIxNTU5MTE5NjMsMzgwNjQ3Nzc5MSwzOTU4MDU2NjUzLDY1Njg5NDI4NiwyOTk4MDYyNDYzLDE5NzA2NDI5MjIsMTUxNTkxNjk4LDIyMDY0NDA5ODksNzQxMTEwODcyLDQzNzkyMzM4MCw0NTQ3NjU4NzgsMTg1Mjc0ODUwOCwxNTE1OTA4Nzg4LDI2OTQ5MDQ2NjcsMTM4MTE2ODgwNCw5OTM3NDIxOTgsMzYwNDM3Mzk0MywzMDE0OTA1NDY5LDY5MDU4NDQwMiwzODIzMzIwNzk3LDc5MTYzODM2NiwyMjIzMjgxOTM5LDEzOTgwMTEzMDIsMzUyMDE2MTk3NywwLDM5OTE3NDM2ODEsNTM4OTkyNzA0LDQyNDQzODE2NjcsMjk4MTIxODQyNSwxNTMyNzUxMjg2LDE3ODUzODA1NjQsMzQxOTA5NjcxNywzMjAwMTc4NTM1LDk2MDA1NjE3OCwxMjQ2NDIwNjI4LDEyODAxMDM1NzYsMTQ4MjIyMTc0NCwzNDg2NDY4NzQxLDM1MDMzMTk5OTUsNDAyNTQyODY3NywyODYzMzI2NTQzLDQyMjc1MzY2MjEsMTEyODUxNDk1MCwxMjk2OTQ3MDk4LDg1OTAwMjIxNCwyMjQwMTIzOTIxLDExNjIyMDMwMTgsNDE5Mzg0OTU3NywzMzY4NzA0NCwyMTM5MDYyNzgyLDEzNDc0ODE3NjAsMTAxMDU4MjY0OCwyNjc4MDQ1MjIxLDI4Mjk2NDA1MjMsMTM2NDMyNTI4MiwyNzQ1NDMzNjkzLDEwNzc5ODU0MDgsMjQwODU0ODg2OSwyNDU5MDg2MTQzLDI2NDQzNjAyMjUsOTQzMjEyNjU2LDQxMjY0NzU1MDUsMzE2NjQ5NDU2MywzMDY1NDMwMzkxLDM2NzE3NTAwNjMsNTU1ODM2MjI2LDI2OTQ5NjM1Miw0Mjk0OTA4NjQ1LDQwOTI3OTI1NzMsMzUzNzAwNjAxNSwzNDUyNzgzNzQ1LDIwMjExODE2OCwzMjAwMjU4OTQsMzk3NDkwMTY5OSwxNjAwMTE5MjMwLDI1NDMyOTcwNzcsMTE0NTM1OTQ5NiwzODczOTc5MzQsMzMwMTIwMTgxMSwyODEyODAxNjIxLDIxMjIyMjAyODQsMTAyNzQyNjE3MCwxNjg0MzE5NDMyLDE1NjY0MzUyNTgsNDIxMDc5ODU4LDE5MzY5NTQ4NTQsMTYxNjk0NTM0NCwyMTcyNzUzOTQ1LDEzMzA2MzEwNzAsMzcwNTQzODExNSw1NzI2Nzk3NDgsNzA3NDI3OTI0LDI0MjU0MDAxMjMsMjI5MDY0NzgxOSwxMTc5MDQ0NDkyLDQwMDg1ODU2NzEsMzA5OTEyMDQ5MSwzMzY4NzA0NDAsMzczOTEyMjA4NywxNTgzMjc2NzMyLDE4NTI3NzcxOCwzNjg4NTkzMDY5LDM3NzI3OTE3NzEsODQyMTU5NzE2LDk3Njg5OTcwMCwxNjg0MzUyMjAsMTIyOTU3NzEwNiwxMDEwNTkwODQsNjA2MzY2NzkyLDE1NDk1OTE3MzYsMzI2NzUxNzg1NSwzNTUzODQ5MDIxLDI4OTcwMTQ1OTUsMTY1MDYzMjM4OCwyNDQyMjQyMTA1LDI1MDk2MTIwODEsMzg0MDE2MTc0NywyMDM4MDA4ODE4LDM4OTA2ODg3MjUsMzM2ODU2NzY5MSw5MjYzNzQyNTQsMTgzNTkwNzAzNCwyMzc0ODYzODczLDM1ODc1MzE5NTMsMTMxMzc4ODU3MiwyODQ2NDgyNTA1LDE4MTkwNjM1MTIsMTQ0ODU0MDg0NCw0MTA5NjMzNTIzLDM5NDEyMTM2NDcsMTcwMTE2Mjk1NCwyMDU0ODUyMzQwLDI5MzA2OTg1NjcsMTM0NzQ4MTc2LDMxMzI4MDY1MTEsMjAyMTE2NTI5Niw2MjMyMTAzMTQsNzc0Nzk1ODY4LDQ3MTYwNjMyOCwyNzk1OTU4NjE1LDMwMzE3NDY0MTksMzMzNDg4NTc4MywzOTA3NTI3NjI3LDM3MjIyODAwOTcsMTk1Mzc5OTQwMCw1MjIxMzM4MjIsMTI2MzI2MzEyNiwzMTgzMzM2NTQ1LDIzNDExNzY4NDUsMjMyNDMzMzgzOSwxODg2NDI1MzEyLDEwNDQyNjc2NDQsMzA0ODU4ODQwMSwxNzE4MDA0NDI4LDEyMTI3MzM1ODQsNTA1Mjk1NDIsNDE0MzMxNzQ5NSwyMzU4MDMxNjQsMTYzMzc4ODg2Niw4OTI2OTAyODIsMTQ2NTM4MzM0MiwzMTE1OTYyNDczLDIyNTY5NjU5MTEsMzI1MDY3MzgxNyw0ODg0NDk4NTAsMjY2MTIwMjIxNSwzNzg5NjMzNzUzLDQxNzcwMDc1OTUsMjU2MDE0NDE3MSwyODYzMzk4NzQsMTc2ODUzNzA0MiwzNjU0OTA2MDI1LDIzOTE3MDU4NjMsMjQ5Mjc3MDA5OSwyNjEwNjczMTk3LDUwNTI5MTMyNCwyMjczODA4OTE3LDM5MjQzNjk2MDksMzQ2OTYyNTczNSwxNDMxNjk5MzcwLDY3Mzc0MDg4MCwzNzU1OTY1MDkzLDIzNTgwMjE4OTEsMjcxMTc0NjY0OSwyMzA3NDg5ODAxLDIxODk2MTY5MCwzMjE3MDIxNTQxLDM4NzM4NDU3MTksMTExMTY3MjQ1MiwxNzUxNjkzNTIwLDEwOTQ4Mjg5MzAsMjU3Njk4NjE1Myw3NTc5NTQzOTQsMjUyNjQ1NjYyLDI5NjQzNzY0NDMsMTQxNDg1NTg0OCwzMTQ5NjQ5NTE3LDM3MDU1NTQzNl07dmFyIFQ1PVsxMzc0OTg4MTEyLDIxMTgyMTQ5OTUsNDM3NzU3MTIzLDk3NTY1ODY0NiwxMDAxMDg5OTk1LDUzMDQwMDc1MywyOTAyMDg3ODUxLDEyNzMxNjg3ODcsNTQwMDgwNzI1LDI5MTAyMTk3NjYsMjI5NTEwMTA3Myw0MTEwNTY4NDg1LDEzNDA0NjMxMDAsMzMwNzkxNjI0Nyw2NDEwMjUxNTIsMzA0MzE0MDQ5NSwzNzM2MTY0OTM3LDYzMjk1MzcwMywxMTcyOTY3MDY0LDE1NzY5NzY2MDksMzI3NDY2NzI2NiwyMTY5MzAzMDU4LDIzNzAyMTM3OTUsMTgwOTA1NDE1MCw1OTcyNzg0NywzNjE5Mjk4NzcsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDM1NjkyNTUyMTMsMTQ4NDAwNTg0MywxMjM5NDQzNzUzLDIzOTU1ODg2NzYsMTk3NTY4MzQzNCw0MTAyOTc3OTEyLDI1NzI2OTcxOTUsNjY2NDY0NzMzLDMyMDI0MzcwNDYsNDAzNTQ4OTA0NywzMzc0MzYxNzAyLDIxMTA2Njc0NDQsMTY3NTU3Nzg4MCwzODQzNjk5MDc0LDI1Mzg2ODExODQsMTY0OTYzOTIzNywyOTc2MTUxNTIwLDMxNDQzOTY0MjAsNDI2OTkwNzk5Niw0MTc4MDYyMjI4LDE4ODM3OTM0OTYsMjQwMzcyODY2NSwyNDk3NjA0NzQzLDEzODM4NTYzMTEsMjg3NjQ5NDYyNywxOTE3NTE4NTYyLDM4MTA0OTYzNDMsMTcxNjg5MDQxMCwzMDAxNzU1NjU1LDgwMDQ0MDgzNSwyMjYxMDg5MTc4LDM1NDM1OTkyNjksODA3OTYyNjEwLDU5OTc2MjM1NCwzMzc3ODM2MiwzOTc3Njc1MzU2LDIzMjg4Mjg5NzEsMjgwOTc3MTE1NCw0MDc3Mzg0NDMyLDEzMTU1NjIxNDUsMTcwODg0ODMzMywxMDEwMzk4MjksMzUwOTg3MTEzNSwzMjk5Mjc4NDc0LDg3NTQ1MTI5MywyNzMzODU2MTYwLDkyOTg3Njk4LDI3Njc2NDU1NTcsMTkzMTk1MDY1LDEwODAwOTQ2MzQsMTU4NDUwNDU4MiwzMTc4MTA2OTYxLDEwNDIzODU2NTcsMjUzMTA2NzQ1MywzNzExODI5NDIyLDEzMDY5NjczNjYsMjQzODIzNzYyMSwxOTA4Njk0Mjc3LDY3NTU2NDYzLDE2MTU4NjEyNDcsNDI5NDU2MTY0LDM2MDI3NzAzMjcsMjMwMjY5MDI1MiwxNzQyMzE1MTI3LDI5NjgwMTE0NTMsMTI2NDU0NjY0LDM4NzcxOTg2NDgsMjA0MzIxMTQ4MywyNzA5MjYwODcxLDIwODQ3MDQyMzMsNDE2OTQwODIwMSwwLDE1OTQxNzk4Nyw4NDE3Mzk1OTIsNTA0NDU5NDM2LDE4MTc4NjY4MzAsNDI0NTYxODY4MywyNjAzODg5NTAsMTAzNDg2Nzk5OCw5MDg5MzM0MTUsMTY4ODEwODUyLDE3NTA5MDIzMDUsMjYwNjQ1Mzk2OSw2MDc1MzA1NTQsMjAyMDA4NDk3LDI0NzIwMTE1MzUsMzAzNTUzNTA1OCw0NjMxODAxOTAsMjE2MDExNzA3MSwxNjQxODE2MjI2LDE1MTc3Njc1MjksNDcwOTQ4Mzc0LDM4MDEzMzIyMzQsMzIzMTcyMjIxMywxMDA4OTE4NTk1LDMwMzc2NTI3NywyMzU0NzQxODcsNDA2OTI0Njg5Myw3NjY5NDU0NjUsMzM3NTUzODY0LDE0NzU0MTg1MDEsMjk0MzY4MjM4MCw0MDAzMDYxMTc5LDI3NDMwMzQxMDksNDE0NDA0Nzc3NSwxNTUxMDM3ODg0LDExNDc1NTA2NjEsMTU0MzIwODUwMCwyMzM2NDM0NTUwLDM0MDgxMTk1MTYsMzA2OTA0OTk2MCwzMTAyMDExNzQ3LDM2MTAzNjkyMjYsMTExMzgxODM4NCwzMjg2NzE4MDgsMjIyNzU3MzAyNCwyMjM2MjI4NzMzLDM1MzU0ODY0NTYsMjkzNTU2Njg2NSwzMzQxMzk0Mjg1LDQ5NjkwNjA1OSwzNzAyNjY1NDU5LDIyNjkwNjg2MCwyMDA5MTk1NDcyLDczMzE1Njk3MiwyODQyNzM3MDQ5LDI5NDkzMDY4MiwxMjA2NDc3ODU4LDI4MzUxMjMzOTYsMjcwMDA5OTM1NCwxNDUxMDQ0MDU2LDU3MzgwNDc4MywyMjY5NzI4NDU1LDM2NDQzNzk1ODUsMjM2MjA5MDIzOCwyNTY0MDMzMzM0LDI4MDExMDc0MDcsMjc3NjI5MjkwNCwzNjY5NDYyNTY2LDEwNjgzNTEzOTYsNzQyMDM5MDEyLDEzNTAwNzg5ODksMTc4NDY2MzE5NSwxNDE3NTYxNjk4LDQxMzY0NDA3NzAsMjQzMDEyMjIxNiw3NzU1NTA4MTQsMjE5Mzg2MjY0NSwyNjczNzA1MTUwLDE3NzUyNzY5MjQsMTg3NjI0MTgzMywzNDc1MzEzMzMxLDMzNjY3NTQ2MTksMjcwMDQwNDg3LDM5MDI1NjMxODIsMzY3ODEyNDkyMywzNDQxODUwMzc3LDE4NTEzMzI4NTIsMzk2OTU2MjM2OSwyMjAzMDMyMjMyLDM4Njg1NTI4MDUsMjg2ODg5NzQwNiw1NjYwMjE4OTYsNDAxMTE5MDUwMiwzMTM1NzQwODg5LDEyNDg4MDI1MTAsMzkzNjI5MTI4NCw2OTk0MzIxNTAsODMyODc3MjMxLDcwODc4MDg0OSwzMzMyNzQwMTQ0LDg5OTgzNTU4NCwxOTUxMzE3MDQ3LDQyMzY0Mjk5OTAsMzc2NzU4Njk5Miw4NjY2Mzc4NDUsNDA0MzYxMDE4NiwxMTA2MDQxNTkxLDIxNDQxNjE4MDYsMzk1NDQxNzExLDE5ODQ4MTI2ODUsMTEzOTc4MTcwOSwzNDMzNzEyOTgwLDM4MzUwMzY4OTUsMjY2NDU0MzcxNSwxMjgyMDUwMDc1LDMyNDA4OTQzOTIsMTE4MTA0NTExOSwyNjQwMjQzMjA0LDI1OTY1OTE3LDQyMDMxODExNzEsNDIxMTgxODc5OCwzMDA5ODc5Mzg2LDI0NjM4Nzk3NjIsMzkxMDE2MTk3MSwxODQyNzU5NDQzLDI1OTc4MDY0NzYsOTMzMzAxMzcwLDE1MDk0MzA0MTQsMzk0MzkwNjQ0MSwzNDY3MTkyMzAyLDMwNzY2MzkwMjksMzc3Njc2NzQ2OSwyMDUxNTE4NzgwLDI2MzEwNjU0MzMsMTQ0MTk1MjU3NSw0MDQwMTY3NjEsMTk0MjQzNTc3NSwxNDA4NzQ5MDM0LDE2MTA0NTk3MzksMzc0NTM0NTMwMCwyMDE3Nzc4NTY2LDM0MDA1Mjg3NjksMzExMDY1MDk0Miw5NDE4OTY3NDgsMzI2NTQ3ODc1MSwzNzEwNDkzMzAsMzE2ODkzNzIyOCw2NzUwMzk2MjcsNDI3OTA4MDI1Nyw5NjczMTE3MjksMTM1MDUwMjA2LDM2MzU3MzM2NjAsMTY4MzQwNzI0OCwyMDc2OTM1MjY1LDM1NzY4NzA1MTIsMTIxNTA2MTEwOCwzNTAxNzQxODkwXTt2YXIgVDY9WzEzNDc1NDgzMjcsMTQwMDc4MzIwNSwzMjczMjY3MTA4LDI1MjAzOTM1NjYsMzQwOTY4NTM1NSw0MDQ1MzgwOTMzLDI4ODAyNDAyMTYsMjQ3MTIyNDA2NywxNDI4MTczMDUwLDQxMzg1NjMxODEsMjQ0MTY2MTU1OCw2MzY4MTM5MDAsNDIzMzA5NDYxNSwzNjIwMDIyOTg3LDIxNDk5ODc2NTIsMjQxMTAyOTE1NSwxMjM5MzMxMTYyLDE3MzA1MjU3MjMsMjU1NDcxODczNCwzNzgxMDMzNjY0LDQ2MzQ2MTAxLDMxMDQ2MzcyOCwyNzQzOTQ0ODU1LDMzMjg5NTUzODUsMzg3NTc3MDIwNywyNTAxMjE4OTcyLDM5NTUxOTExNjIsMzY2NzIxOTAzMyw3Njg5MTcxMjMsMzU0NTc4OTQ3Myw2OTI3MDc0MzMsMTE1MDIwODQ1NiwxNzg2MTAyNDA5LDIwMjkyOTMxNzcsMTgwNTIxMTcxMCwzNzEwMzY4MTEzLDMwNjU5NjI4MzEsNDAxNjM5NTk3LDE3MjQ0NTcxMzIsMzAyODE0MzY3NCw0MDkxOTg0MTAsMjE5NjA1MjUyOSwxNjIwNTI5NDU5LDExNjQwNzE4MDcsMzc2OTcyMTk3NSwyMjI2ODc1MzEwLDQ4NjQ0MTM3NiwyNDk5MzQ4NTIzLDE0ODM3NTM1NzYsNDI4ODE5OTY1LDIyNzQ2ODA0MjgsMzA3NTYzNjIxNiw1OTg0Mzg4NjcsMzc5OTE0MTEyMiwxNDc0NTAyNTQzLDcxMTM0OTY3NSwxMjkxNjYxMjAsNTM0NTgzNzAsMjU5MjUyMzY0MywyNzgyMDgyODI0LDQwNjMyNDIzNzUsMjk4ODY4NzI2OSwzMTIwNjk0MTIyLDE1NTkwNDE2NjYsNzMwNTE3Mjc2LDI0NjA0NDkyMDQsNDA0MjQ1OTEyMiwyNzA2MjcwNjkwLDM0NDYwMDQ0NjgsMzU3Mzk0MTY5NCw1MzM4MDQxMzAsMjMyODE0MzYxNCwyNjM3NDQyNjQzLDI2OTUwMzM2ODUsODM5MjI0MDMzLDE5NzM3NDUzODcsOTU3MDU1OTgwLDI4NTYzNDU4MzksMTA2ODUyNzY3LDEzNzEzNjg5NzYsNDE4MTU5ODYwMiwxMDMzMjk3MTU4LDI5MzM3MzQ5MTcsMTE3OTUxMDQ2MSwzMDQ2MjAwNDYxLDkxMzQxOTE3LDE4NjI1MzQ4NjgsNDI4NDUwMjAzNyw2MDU2NTczMzksMjU0NzQzMjkzNywzNDMxNTQ2OTQ3LDIwMDMyOTQ2MjIsMzE4MjQ4NzYxOCwyMjgyMTk1MzM5LDk1NDY2OTQwMywzNjgyMTkxNTk4LDEyMDE3NjUzODYsMzkxNzIzNDcwMywzMzg4NTA3MTY2LDAsMjE5ODQzODAyMiwxMjExMjQ3NTk3LDI4ODc2NTE2OTYsMTMxNTcyMzg5MCw0MjI3NjY1NjYzLDE0NDM4NTc3MjAsNTA3MzU4OTMzLDY1Nzg2MTk0NSwxNjc4MzgxMDE3LDU2MDQ4NzU5MCwzNTE2NjE5NjA0LDk3NTQ1MTY5NCwyOTcwMzU2MzI3LDI2MTMxNDUzNSwzNTM1MDcyOTE4LDI2NTI2MDk0MjUsMTMzMzgzODAyMSwyNzI0MzIyMzM2LDE3Njc1MzY0NTksMzcwOTM4Mzk0LDE4MjYyMTExNCwzODU0NjA2Mzc4LDExMjgwMTQ1NjAsNDg3NzI1ODQ3LDE4NTQ2OTE5NywyOTE4MzUzODYzLDMxMDY3ODA4NDAsMzM1Njc2MTc2OSwyMjM3MTMzMDgxLDEyODY1NjcxNzUsMzE1Mjk3NjM0OSw0MjU1MzUwNjI0LDI2ODM3NjUwMzAsMzE2MDE3NTM0OSwzMzA5NTk0MTcxLDg3ODQ0MzM5MCwxOTg4ODM4MTg1LDM3MDQzMDA0ODYsMTc1NjgxODk0MCwxNjczMDYxNjE3LDM0MDMxMDA2MzYsMjcyNzg2MzA5LDEwNzUwMjU2OTgsNTQ1NTcyMzY5LDIxMDU4ODcyNjgsNDE3NDU2MDA2MSwyOTY2Nzk3MzAsMTg0MTc2ODg2NSwxMjYwMjMyMjM5LDQwOTEzMjcwMjQsMzk2MDMwOTMzMCwzNDk3NTA5MzQ3LDE4MTQ4MDMyMjIsMjU3ODAxODQ4OSw0MTk1NDU2MDcyLDU3NTEzODE0OCwzMjk5NDA5MDM2LDQ0Njc1NDg3OSwzNjI5NTQ2Nzk2LDQwMTE5OTYwNDgsMzM0NzUzMjExMCwzMjUyMjM4NTQ1LDQyNzA2Mzk3NzgsOTE1OTg1NDE5LDM0ODM4MjU1MzcsNjgxOTMzNTM0LDY1MTg2ODA0NiwyNzU1NjM2NjcxLDM4MjgxMDM4MzcsMjIzMzc3NTU0LDI2MDc0Mzk4MjAsMTY0OTcwNDUxOCwzMjcwOTM3ODc1LDM5MDE4MDY3NzYsMTU4MDA4Nzc5OSw0MTE4OTg3Njk1LDMxOTgxMTUyMDAsMjA4NzMwOTQ1OSwyODQyNjc4NTczLDMwMTY2OTcxMDYsMTAwMzAwNzEyOSwyODAyODQ5OTE3LDE4NjA3MzgxNDcsMjA3Nzk2NTI0MywxNjQ0Mzk2NzIsNDEwMDg3MjQ3MiwzMjI4MzMxOSwyODI3MTc3ODgyLDE3MDk2MTAzNTAsMjEyNTEzNTg0NiwxMzY0Mjg3NTEsMzg3NDQyODM5MiwzNjUyOTA0ODU5LDM0NjA5ODQ2MzAsMzU3MjE0NTkyOSwzNTkzMDU2MzgwLDI5MzkyNjYyMjYsODI0ODUyMjU5LDgxODMyNDg4NCwzMjI0NzQwNDU0LDkzMDM2OTIxMiwyODAxNTY2NDEwLDI5Njc1MDcxNTIsMzU1NzA2ODQwLDEyNTczMDkzMzYsNDE0ODI5MjgyNiwyNDMyNTY2NTYsNzkwMDczODQ2LDIzNzMzNDA2MzAsMTI5NjI5NzkwNCwxNDIyNjk5MDg1LDM3NTYyOTk3ODAsMzgxODgzNjQwNSw0NTc5OTI4NDAsMzA5OTY2NzQ4NywyMTM1MzE5ODg5LDc3NDIyMzE0LDE1NjAzODI1MTcsMTk0NTc5ODUxNiw3ODgyMDQzNTMsMTUyMTcwNjc4MSwxMzg1MzU2MjQyLDg3MDkxMjA4NiwzMjU5NjUzODMsMjM1ODk1NzkyMSwyMDUwNDY2MDYwLDIzODgyNjA4ODQsMjMxMzg4NDQ3Niw0MDA2NTIxMTI3LDkwMTIxMDU2OSwzOTkwOTUzMTg5LDEwMTQ2NDY3MDUsMTUwMzQ0OTgyMywxMDYyNTk3MjM1LDIwMzE2MjEzMjYsMzIxMjAzNTg5NSwzOTMxMzcxNDY5LDE1MzMwMTc1MTQsMzUwMTc0NTc1LDIyNTYwMjg4OTEsMjE3NzU0NDE3OSwxMDUyMzM4MzcyLDc0MTg3Njc4OCwxNjA2NTkxMjk2LDE5MTQwNTIwMzUsMjEzNzA1MjUzLDIzMzQ2Njk4OTcsMTEwNzIzNDE5NywxODk5NjAzOTY5LDM3MjUwNjk0OTEsMjYzMTQ0Nzc4MCwyNDIyNDk0OTEzLDE2MzU1MDI5ODAsMTg5MzAyMDM0MiwxOTUwOTAzMzg4LDExMjA5NzQ5MzVdO3ZhciBUNz1bMjgwNzA1ODkzMiwxNjk5OTcwNjI1LDI3NjQyNDk2MjMsMTU4NjkwMzU5MSwxODA4NDgxMTk1LDExNzM0MzAxNzMsMTQ4NzY0NTk0Niw1OTk4NDg2Nyw0MTk5ODgyODAwLDE4NDQ4ODI4MDYsMTk4OTI0OTIyOCwxMjc3NTU1OTcwLDM2MjM2MzY5NjUsMzQxOTkxNTU2MiwxMTQ5MjQ5MDc3LDI3NDQxMDQyOTAsMTUxNDc5MDU3Nyw0NTk3NDQ2OTgsMjQ0ODYwMzk0LDMyMzU5OTUxMzQsMTk2MzExNTMxMSw0MDI3NzQ0NTg4LDI1NDQwNzgxNTAsNDE5MDUzMDUxNSwxNjA4OTc1MjQ3LDI2MjcwMTYwODIsMjA2MjI3MDMxNywxNTA3NDk3Mjk4LDIyMDA4MTg4NzgsNTY3NDk4ODY4LDE3NjQzMTM1NjgsMzM1OTkzNjIwMSwyMzA1NDU1NTU0LDIwMzc5NzAwNjIsMTA0NzIzOWUzLDE5MTAzMTkwMzMsMTMzNzM3NjQ4MSwyOTA0MDI3MjcyLDI4OTI0MTczMTIsOTg0OTA3MjE0LDEyNDMxMTI0MTUsODMwNjYxOTE0LDg2MTk2ODIwOSwyMTM1MjUzNTg3LDIwMTEyMTQxODAsMjkyNzkzNDMxNSwyNjg2MjU0NzIxLDczMTE4MzM2OCwxNzUwNjI2Mzc2LDQyNDYzMTA3MjUsMTgyMDgyNDc5OCw0MTcyNzYzNzcxLDM1NDIzMzAyMjcsNDgzOTQ4MjcsMjQwNDkwMTY2MywyODcxNjgyNjQ1LDY3MTU5MzE5NSwzMjU0OTg4NzI1LDIwNzM3MjQ2MTMsMTQ1MDg1MjM5LDIyODA3OTYyMDAsMjc3OTkxNTE5OSwxNzkwNTc1MTA3LDIxODcxMjgwODYsNDcyNjE1NjMxLDMwMjk1MTAwMDksNDA3NTg3NzEyNywzODAyMjIyMTg1LDQxMDcxMDE2NTgsMzIwMTYzMTc0OSwxNjQ2MjUyMzQwLDQyNzA1MDcxNzQsMTQwMjgxMTQzOCwxNDM2NTkwODM1LDM3NzgxNTE4MTgsMzk1MDM1NTcwMiwzOTYzMTYxNDc1LDQwMjA5MTIyMjQsMjY2Nzk5NDczNywyNzM3OTIzNjYsMjMzMTU5MDE3NywxMDQ2OTk2MTMsOTUzNDU5ODIsMzE3NTUwMTI4NiwyMzc3NDg2Njc2LDE1NjA2Mzc4OTIsMzU2NDA0NTMxOCwzNjkwNTc4NzIsNDIxMzQ0NzA2NCwzOTE5MDQyMjM3LDExMzc0Nzc5NTIsMjY1ODYyNTQ5NywxMTE5NzI3ODQ4LDIzNDA5NDc4NDksMTUzMDQ1NTgzMyw0MDA3MzYwOTY4LDE3MjQ2NjU1NiwyNjY5NTk5MzgsNTE2NTUyODM2LDAsMjI1NjczNDU5MiwzOTgwOTMxNjI3LDE4OTAzMjgwODEsMTkxNzc0MjE3MCw0Mjk0NzA0Mzk4LDk0NTE2NDE2NSwzNTc1NTI4ODc4LDk1ODg3MTA4NSwzNjQ3MjEyMDQ3LDI3ODcyMDcyNjAsMTQyMzAyMjkzOSw3NzU1NjIyOTQsMTczOTY1NjIwMiwzODc2NTU3NjU1LDI1MzAzOTEyNzgsMjQ0MzA1ODA3NSwzMzEwMzIxODU2LDU0NzUxMjc5NiwxMjY1MTk1NjM5LDQzNzY1NjU5NCwzMTIxMjc1NTM5LDcxOTcwMDEyOCwzNzYyNTAyNjkwLDM4Nzc4MTE0NywyMTg4MjgyOTcsMzM1MDA2NTgwMywyODMwNzA4MTUwLDI4NDg0NjE4NTQsNDI4MTY5MjAxLDEyMjQ2NjE2NSwzNzIwMDgxMDQ5LDE2MjcyMzUxOTksNjQ4MDE3NjY1LDQxMjI3NjIzNTQsMTAwMjc4Mzg0NiwyMTE3MzYwNjM1LDY5NTYzNDc1NSwzMzM2MzU4NjkxLDQyMzQ3MjEwMDUsNDA0OTg0NDQ1MiwzNzA0MjgwODgxLDIyMzI0MzUyOTksNTc0NjI0NjYzLDI4NzM0MzgxNCw2MTIyMDU4OTgsMTAzOTcxNzA1MSw4NDAwMTk3MDUsMjcwODMyNjE4NSw3OTM0NTE5MzQsODIxMjg4MTE0LDEzOTEyMDE2NzAsMzgyMjA5MDE3NywzNzYxODc4MjcsMzExMzg1NTM0NCwxMjI0MzQ4MDUyLDE2Nzk5NjgyMzMsMjM2MTY5ODU1NiwxMDU4NzA5NzQ0LDc1MjM3NTQyMSwyNDMxNTkwOTYzLDEzMjE2OTkxNDUsMzUxOTE0MjIwMCwyNzM0NTkxMTc4LDE4ODEyNzQ0NCwyMTc3ODY5NTU3LDM3MjcyMDU3NTQsMjM4NDkxMTAzMSwzMjE1MjEyNDYxLDI2NDg5NzY0NDIsMjQ1MDM0NjEwNCwzNDMyNzM3Mzc1LDExODA4NDkyNzgsMzMxNTQ0MjA1LDMxMDIyNDkxNzYsNDE1MDE0NDU2OSwyOTUyMTAyNTk1LDIxNTk5NzYyODUsMjQ3NDQwNDMwNCw3NjYwNzg5MzMsMzEzNzczODYxLDI1NzA4MzIwNDQsMjEwODEwMDYzMiwxNjY4MjEyODkyLDMxNDU0NTY0NDMsMjAxMzkwODI2Miw0MTg2NzIyMTcsMzA3MDM1NjYzNCwyNTk0NzM0OTI3LDE4NTIxNzE5MjUsMzg2NzA2MDk5MSwzNDczNDE2NjM2LDM5MDc0NDg1OTcsMjYxNDczNzYzOSw5MTk0ODkxMzUsMTY0OTQ4NjM5LDIwOTQ0MTAxNjAsMjk5NzgyNTk1Niw1OTA0MjQ2MzksMjQ4NjIyNDU0OSwxNzIzODcyNjc0LDMxNTc3NTA4NjIsMzM5OTk0MTI1MCwzNTAxMjUyNzUyLDM2MjUyNjgxMzUsMjU1NTA0ODE5NiwzNjczNjM3MzU2LDEzNDMxMjc1MDEsNDEzMDI4MTM2MSwzNTk5NTk1MDg1LDI5NTc4NTM2NzksMTI5NzQwMzA1MCw4MTc4MTkxMCwzMDUxNTkzNDI1LDIyODM0OTA0MTAsNTMyMjAxNzcyLDEzNjcyOTU1ODksMzkyNjE3MDk3NCw4OTUyODc2OTIsMTk1Mzc1NzgzMSwxMDkzNTk3OTYzLDQ5MjQ4MzQzMSwzNTI4NjI2OTA3LDE0NDYyNDI1NzYsMTE5MjQ1NTYzOCwxNjM2NjA0NjMxLDIwOTMzNjIyNSwzNDQ4NzM0NjQsMTAxNTY3MTU3MSw2Njk5NjE4OTcsMzM3NTc0MDc2OSwzODU3NTcyMTI0LDI5NzM1MzA2OTUsMzc0NzE5MjAxOCwxOTMzNTMwNjEwLDM0NjQwNDI1MTYsOTM1MjkzODk1LDM0NTQ2ODYxOTksMjg1ODExNTA2OSwxODYzNjM4ODQ1LDM2ODMwMjI5MTYsNDA4NTM2OTUxOSwzMjkyNDQ1MDMyLDg3NTMxMzE4OCwxMDgwMDE3NTcxLDMyNzkwMzM4ODUsNjIxNTkxNzc4LDEyMzM4NTY1NzIsMjUwNDEzMDMxNywyNDE5NzU0NCwzMDE3NjcyNzE2LDM4MzU0ODQzNDAsMzI0NzQ2NTU1OCwyMjIwOTgxMTk1LDMwNjA4NDc5MjIsMTU1MTEyNDU4OCwxNDYzOTk2NjAwXTt2YXIgVDg9WzQxMDQ2MDU3NzcsMTA5NzE1OTU1MCwzOTY2NzM4MTgsNjYwNTEwMjY2LDI4NzU5NjgzMTUsMjYzODYwNjYyMyw0MjAwMTE1MTE2LDM4MDg2NjIzNDcsODIxNzEyMTYwLDE5ODY5MTgwNjEsMzQzMDMyMjU2OCwzODU0NDg4NSwzODU2MTM3Mjk1LDcxODAwMjExNyw4OTM2ODE3MDIsMTY1NDg4NjMyNSwyOTc1NDg0MzgyLDMxMjIzNTgwNTMsMzkyNjgyNTAyOSw0Mjc0MDUzNDY5LDc5NjE5NzU3MSwxMjkwODAxNzkzLDExODQzNDI5MjUsMzU1NjM2MTgzNSwyNDA1NDI2OTQ3LDI0NTk3MzUzMTcsMTgzNjc3MjI4NywxMzgxNjIwMzczLDMxOTYyNjc5ODgsMTk0ODM3Mzg0OCwzNzY0OTg4MjMzLDMzODUzNDUxNjYsMzI2Mzc4NTU4OSwyMzkwMzI1NDkyLDE0ODA0ODU3ODUsMzExMTI0NzE0MywzNzgwMDk3NzI2LDIyOTMwNDUyMzIsNTQ4MTY5NDE3LDM0NTk5NTM3ODksMzc0NjE3NTA3NSw0Mzk0NTIzODksMTM2MjMyMTU1OSwxNDAwODQ5NzYyLDE2ODU1Nzc5MDUsMTgwNjU5OTM1NSwyMTc0NzU0MDQ2LDEzNzA3MzkxMywxMjE0Nzk3OTM2LDExNzQyMTUwNTUsMzczMTY1NDU0OCwyMDc5ODk3NDI2LDE5NDMyMTcwNjcsMTI1ODQ4MDI0Miw1Mjk0ODc4NDMsMTQzNzI4MDg3MCwzOTQ1MjY5MTcwLDMwNDkzOTA4OTUsMzMxMzIxMjAzOCw5MjMzMTM2MTksNjc5OTk4ZTMsMzIxNTMwNzI5OSw1NzMyNjA4MiwzNzc2NDIyMjEsMzQ3NDcyOTg2NiwyMDQxODc3MTU5LDEzMzM2MTkwNywxNzc2NDYwMTEwLDM2NzM0NzY0NTMsOTYzOTI0NTQsODc4ODQ1OTA1LDI4MDE2OTk1MjQsNzc3MjMxNjY4LDQwODI0NzUxNzAsMjMzMDAxNDIxMyw0MTQyNjI2MjEyLDIyMTMyOTYzOTUsMTYyNjMxOTQyNCwxOTA2MjQ3MjYyLDE4NDY1NjMyNjEsNTYyNzU1OTAyLDM3MDgxNzM3MTgsMTA0MDU1OTgzNywzODcxMTYzOTgxLDE0MTg1NzMyMDEsMzI5NDQzMDU3NywxMTQ1ODUzNDgsMTM0MzYxODkxMiwyNTY2NTk1NjA5LDMxODYyMDI1ODIsMTA3ODE4NTA5NywzNjUxMDQxMTI3LDM4OTY2ODgwNDgsMjMwNzYyMjkxOSw0MjU0MDg3NDMsMzM3MTA5Njk1MywyMDgxMDQ4NDgxLDExMDgzMzkwNjgsMjIxNjYxMDI5NiwwLDIxNTYyOTkwMTcsNzM2OTcwODAyLDI5MjU5Njc2NiwxNTE3NDQwNjIwLDI1MTY1NzIxMywyMjM1MDYxNzc1LDI5MzMyMDI0OTMsNzU4NzIwMzEwLDI2NTkwNTE2MiwxNTU0MzkxNDAwLDE1MzIyODUzMzksOTA4OTk5MjA0LDE3NDU2NzY5MiwxNDc0NzYwNTk1LDQwMDI4NjE3NDgsMjYxMDAxMTY3NSwzMjM0MTU2NDE2LDM2OTMxMjYyNDEsMjAwMTQzMDg3NCwzMDM2OTk0ODQsMjQ3ODQ0MzIzNCwyNjg3MTY1ODg4LDU4NTEyMjYyMCw0NTQ0OTk2MDIsMTUxODQ5NzQyLDIzNDUxMTkyMTgsMzA2NDUxMDc2NSw1MTQ0NDMyODQsNDA0NDk4MTU5MSwxOTYzNDEyNjU1LDI1ODE0NDU2MTQsMjEzNzA2MjgxOSwxOTMwODUzNSwxOTI4NzA3MTY0LDE3MTUxOTMxNTYsNDIxOTM1MjE1NSwxMTI2NzkwNzk1LDYwMDIzNTIxMSwzOTkyNzQyMDcwLDM4NDEwMjQ5NTIsODM2NTUzNDMxLDE2Njk2NjQ4MzQsMjUzNTYwNDI0MywzMzIzMDExMjA0LDEyNDM5MDU0MTMsMzE0MTQwMDc4Niw0MTgwODA4MTEwLDY5ODQ0NTI1NSwyNjUzODk5NTQ5LDI5ODk1NTI2MDQsMjI1MzU4MTMyNSwzMjUyOTMyNzI3LDMwMDQ1OTExNDcsMTg5MTIxMTY4OSwyNDg3ODEwNTc3LDM5MTU2NTM3MDMsNDIzNzA4MzgxNiw0MDMwNjY3NDI0LDIxMDAwOTA5NjYsODY1MTM2NDE4LDEyMjk4OTk2NTUsOTUzMjcwNzQ1LDMzOTk2Nzk2MjgsMzU1NzUwNDY2NCw0MTE4OTI1MjIyLDIwNjEzNzk3NDksMzA3OTU0NjU4NiwyOTE1MDE3NzkxLDk4MzQyNjA5MiwyMDIyODM3NTg0LDE2MDcyNDQ2NTAsMjExODU0MTkwOCwyMzY2ODgyNTUwLDM2MzU5OTY4MTYsOTcyNTEyODE0LDMyODMwODg3NzAsMTU2ODcxODQ5NSwzNDk5MzI2NTY5LDM1NzY1Mzk1MDMsNjIxOTgyNjcxLDI4OTU3MjM0NjQsNDEwODg3OTUyLDI2MjM3NjIxNTIsMTAwMjE0MjY4Myw2NDU0MDEwMzcsMTQ5NDgwNzY2MiwyNTk1Njg0ODQ0LDEzMzU1MzU3NDcsMjUwNzA0MDIzMCw0MjkzMjk1Nzg2LDMxNjc2ODQ2NDEsMzY3NTg1MDA3LDM4ODU3NTA3MTQsMTg2NTg2MjczMCwyNjY4MjIxNjc0LDI5NjA5NzEzMDUsMjc2MzE3MzY4MSwxMDU5MjcwOTU0LDI3Nzc5NTI0NTQsMjcyNDY0Mjg2OSwxMzIwOTU3ODEyLDIxOTQzMTkxMDAsMjQyOTU5NTg3MiwyODE1OTU2Mjc1LDc3MDg5NTIxLDM5NzM3NzMxMjEsMzQ0NDU3NTg3MSwyNDQ4ODMwMjMxLDEzMDU5MDY1NTAsNDAyMTMwODczOSwyODU3MTk0NzAwLDI1MTY5MDE4NjAsMzUxODM1ODQzMCwxNzg3MzA0NzgwLDc0MDI3NjQxNywxNjk5ODM5ODE0LDE1OTIzOTQ5MDksMjM1MjMwNzQ1NywyMjcyNTU2MDI2LDE4ODgyMTI0MywxNzI5OTc3MDExLDM2ODc5OTQwMDIsMjc0MDg0ODQxLDM1OTQ5ODIyNTMsMzYxMzQ5NDQyNiwyNzAxOTQ5NDk1LDQxNjIwOTY3MjksMzIyNzM0NTcxLDI4Mzc5NjY1NDIsMTY0MDU3NjQzOSw0ODQ4MzA2ODksMTIwMjc5NzY5MCwzNTM3ODUyODI4LDQwNjc2MzkxMjUsMzQ5MDc1NzM2LDMzNDIzMTk0NzUsNDE1NzQ2NzIxOSw0MjU1ODAwMTU5LDEwMzA2OTAwMTUsMTE1NTIzNzQ5NiwyOTUxOTcxMjc0LDE3NTc2OTE1NzcsNjA3Mzk4OTY4LDI3Mzg5MDUwMjYsNDk5MzQ3OTkwLDM3OTQwNzg5MDgsMTAxMTQ1MjcxMiwyMjc4ODU1NjcsMjgxODY2NjgwOSwyMTMxMTQzNzYsMzAzNDg4MTI0MCwxNDU1NTI1OTg4LDM0MTQ0NTA1NTUsODUwODE3MjM3LDE4MTc5OTg0MDgsMzA5MjcyNjQ4MF07dmFyIFUxPVswLDIzNTQ3NDE4Nyw0NzA5NDgzNzQsMzAzNzY1Mjc3LDk0MTg5Njc0OCw5MDg5MzM0MTUsNjA3NTMwNTU0LDcwODc4MDg0OSwxODgzNzkzNDk2LDIxMTgyMTQ5OTUsMTgxNzg2NjgzMCwxNjQ5NjM5MjM3LDEyMTUwNjExMDgsMTE4MTA0NTExOSwxNDE3NTYxNjk4LDE1MTc3Njc1MjksMzc2NzU4Njk5Miw0MDAzMDYxMTc5LDQyMzY0Mjk5OTAsNDA2OTI0Njg5MywzNjM1NzMzNjYwLDM2MDI3NzAzMjcsMzI5OTI3ODQ3NCwzNDAwNTI4NzY5LDI0MzAxMjIyMTYsMjY2NDU0MzcxNSwyMzYyMDkwMjM4LDIxOTM4NjI2NDUsMjgzNTEyMzM5NiwyODAxMTA3NDA3LDMwMzU1MzUwNTgsMzEzNTc0MDg4OSwzNjc4MTI0OTIzLDM1NzY4NzA1MTIsMzM0MTM5NDI4NSwzMzc0MzYxNzAyLDM4MTA0OTYzNDMsMzk3NzY3NTM1Niw0Mjc5MDgwMjU3LDQwNDM2MTAxODYsMjg3NjQ5NDYyNywyNzc2MjkyOTA0LDMwNzY2MzkwMjksMzExMDY1MDk0MiwyNDcyMDExNTM1LDI2NDAyNDMyMDQsMjQwMzcyODY2NSwyMTY5MzAzMDU4LDEwMDEwODk5OTUsODk5ODM1NTg0LDY2NjQ2NDczMyw2OTk0MzIxNTAsNTk3Mjc4NDcsMjI2OTA2ODYwLDUzMDQwMDc1MywyOTQ5MzA2ODIsMTI3MzE2ODc4NywxMTcyOTY3MDY0LDE0NzU0MTg1MDEsMTUwOTQzMDQxNCwxOTQyNDM1Nzc1LDIxMTA2Njc0NDQsMTg3NjI0MTgzMywxNjQxODE2MjI2LDI5MTAyMTk3NjYsMjc0MzAzNDEwOSwyOTc2MTUxNTIwLDMyMTE2MjMxNDcsMjUwNTIwMjEzOCwyNjA2NDUzOTY5LDIzMDI2OTAyNTIsMjI2OTcyODQ1NSwzNzExODI5NDIyLDM1NDM1OTkyNjksMzI0MDg5NDM5MiwzNDc1MzEzMzMxLDM4NDM2OTkwNzQsMzk0MzkwNjQ0MSw0MTc4MDYyMjI4LDQxNDQwNDc3NzUsMTMwNjk2NzM2NiwxMTM5NzgxNzA5LDEzNzQ5ODgxMTIsMTYxMDQ1OTczOSwxOTc1NjgzNDM0LDIwNzY5MzUyNjUsMTc3NTI3NjkyNCwxNzQyMzE1MTI3LDEwMzQ4Njc5OTgsODY2NjM3ODQ1LDU2NjAyMTg5Niw4MDA0NDA4MzUsOTI5ODc2OTgsMTkzMTk1MDY1LDQyOTQ1NjE2NCwzOTU0NDE3MTEsMTk4NDgxMjY4NSwyMDE3Nzc4NTY2LDE3ODQ2NjMxOTUsMTY4MzQwNzI0OCwxMzE1NTYyMTQ1LDEwODAwOTQ2MzQsMTM4Mzg1NjMxMSwxNTUxMDM3ODg0LDEwMTAzOTgyOSwxMzUwNTAyMDYsNDM3NzU3MTIzLDMzNzU1Mzg2NCwxMDQyMzg1NjU3LDgwNzk2MjYxMCw1NzM4MDQ3ODMsNzQyMDM5MDEyLDI1MzEwNjc0NTMsMjU2NDAzMzMzNCwyMzI4ODI4OTcxLDIyMjc1NzMwMjQsMjkzNTU2Njg2NSwyNzAwMDk5MzU0LDMwMDE3NTU2NTUsMzE2ODkzNzIyOCwzODY4NTUyODA1LDM5MDI1NjMxODIsNDIwMzE4MTE3MSw0MTAyOTc3OTEyLDM3MzYxNjQ5MzcsMzUwMTc0MTg5MCwzMjY1NDc4NzUxLDM0MzM3MTI5ODAsMTEwNjA0MTU5MSwxMzQwNDYzMTAwLDE1NzY5NzY2MDksMTQwODc0OTAzNCwyMDQzMjExNDgzLDIwMDkxOTU0NzIsMTcwODg0ODMzMywxODA5MDU0MTUwLDgzMjg3NzIzMSwxMDY4MzUxMzk2LDc2Njk0NTQ2NSw1OTk3NjIzNTQsMTU5NDE3OTg3LDEyNjQ1NDY2NCwzNjE5Mjk4NzcsNDYzMTgwMTkwLDI3MDkyNjA4NzEsMjk0MzY4MjM4MCwzMTc4MTA2OTYxLDMwMDk4NzkzODYsMjU3MjY5NzE5NSwyNTM4NjgxMTg0LDIyMzYyMjg3MzMsMjMzNjQzNDU1MCwzNTA5ODcxMTM1LDM3NDUzNDUzMDAsMzQ0MTg1MDM3NywzMjc0NjY3MjY2LDM5MTAxNjE5NzEsMzg3NzE5ODY0OCw0MTEwNTY4NDg1LDQyMTE4MTg3OTgsMjU5NzgwNjQ3NiwyNDk3NjA0NzQzLDIyNjEwODkxNzgsMjI5NTEwMTA3MywyNzMzODU2MTYwLDI5MDIwODc4NTEsMzIwMjQzNzA0NiwyOTY4MDExNDUzLDM5MzYyOTEyODQsMzgzNTAzNjg5NSw0MTM2NDQwNzcwLDQxNjk0MDgyMDEsMzUzNTQ4NjQ1NiwzNzAyNjY1NDU5LDM0NjcxOTIzMDIsMzIzMTcyMjIxMywyMDUxNTE4NzgwLDE5NTEzMTcwNDcsMTcxNjg5MDQxMCwxNzUwOTAyMzA1LDExMTM4MTgzODQsMTI4MjA1MDA3NSwxNTg0NTA0NTgyLDEzNTAwNzg5ODksMTY4ODEwODUyLDY3NTU2NDYzLDM3MTA0OTMzMCw0MDQwMTY3NjEsODQxNzM5NTkyLDEwMDg5MTg1OTUsNzc1NTUwODE0LDU0MDA4MDcyNSwzOTY5NTYyMzY5LDM4MDEzMzIyMzQsNDAzNTQ4OTA0Nyw0MjY5OTA3OTk2LDM1NjkyNTUyMTMsMzY2OTQ2MjU2NiwzMzY2NzU0NjE5LDMzMzI3NDAxNDQsMjYzMTA2NTQzMywyNDYzODc5NzYyLDIxNjAxMTcwNzEsMjM5NTU4ODY3NiwyNzY3NjQ1NTU3LDI4Njg4OTc0MDYsMzEwMjAxMTc0NywzMDY5MDQ5OTYwLDIwMjAwODQ5NywzMzc3ODM2MiwyNzAwNDA0ODcsNTA0NDU5NDM2LDg3NTQ1MTI5Myw5NzU2NTg2NDYsNjc1MDM5NjI3LDY0MTAyNTE1MiwyMDg0NzA0MjMzLDE5MTc1MTg1NjIsMTYxNTg2MTI0NywxODUxMzMyODUyLDExNDc1NTA2NjEsMTI0ODgwMjUxMCwxNDg0MDA1ODQzLDE0NTEwNDQwNTYsOTMzMzAxMzcwLDk2NzMxMTcyOSw3MzMxNTY5NzIsNjMyOTUzNzAzLDI2MDM4ODk1MCwyNTk2NTkxNywzMjg2NzE4MDgsNDk2OTA2MDU5LDEyMDY0Nzc4NTgsMTIzOTQ0Mzc1MywxNTQzMjA4NTAwLDE0NDE5NTI1NzUsMjE0NDE2MTgwNiwxOTA4Njk0Mjc3LDE2NzU1Nzc4ODAsMTg0Mjc1OTQ0MywzNjEwMzY5MjI2LDM2NDQzNzk1ODUsMzQwODExOTUxNiwzMzA3OTE2MjQ3LDQwMTExOTA1MDIsMzc3Njc2NzQ2OSw0MDc3Mzg0NDMyLDQyNDU2MTg2ODMsMjgwOTc3MTE1NCwyODQyNzM3MDQ5LDMxNDQzOTY0MjAsMzA0MzE0MDQ5NSwyNjczNzA1MTUwLDI0MzgyMzc2MjEsMjIwMzAzMjIzMiwyMzcwMjEzNzk1XTt2YXIgVTI9WzAsMTg1NDY5MTk3LDM3MDkzODM5NCw0ODc3MjU4NDcsNzQxODc2Nzg4LDY1Nzg2MTk0NSw5NzU0NTE2OTQsODI0ODUyMjU5LDE0ODM3NTM1NzYsMTQwMDc4MzIwNSwxMzE1NzIzODkwLDExNjQwNzE4MDcsMTk1MDkwMzM4OCwyMTM1MzE5ODg5LDE2NDk3MDQ1MTgsMTc2NzUzNjQ1OSwyOTY3NTA3MTUyLDMxNTI5NzYzNDksMjgwMTU2NjQxMCwyOTE4MzUzODYzLDI2MzE0NDc3ODAsMjU0NzQzMjkzNywyMzI4MTQzNjE0LDIxNzc1NDQxNzksMzkwMTgwNjc3NiwzODE4ODM2NDA1LDQyNzA2Mzk3NzgsNDExODk4NzY5NSwzMjk5NDA5MDM2LDM0ODM4MjU1MzcsMzUzNTA3MjkxOCwzNjUyOTA0ODU5LDIwNzc5NjUyNDMsMTg5MzAyMDM0MiwxODQxNzY4ODY1LDE3MjQ0NTcxMzIsMTQ3NDUwMjU0MywxNTU5MDQxNjY2LDExMDcyMzQxOTcsMTI1NzMwOTMzNiw1OTg0Mzg4NjcsNjgxOTMzNTM0LDkwMTIxMDU2OSwxMDUyMzM4MzcyLDI2MTMxNDUzNSw3NzQyMjMxNCw0Mjg4MTk5NjUsMzEwNDYzNzI4LDM0MDk2ODUzNTUsMzIyNDc0MDQ1NCwzNzEwMzY4MTEzLDM1OTMwNTYzODAsMzg3NTc3MDIwNywzOTYwMzA5MzMwLDQwNDUzODA5MzMsNDE5NTQ1NjA3MiwyNDcxMjI0MDY3LDI1NTQ3MTg3MzQsMjIzNzEzMzA4MSwyMzg4MjYwODg0LDMyMTIwMzU4OTUsMzAyODE0MzY3NCwyODQyNjc4NTczLDI3MjQzMjIzMzYsNDEzODU2MzE4MSw0MjU1MzUwNjI0LDM3Njk3MjE5NzUsMzk1NTE5MTE2MiwzNjY3MjE5MDMzLDM1MTY2MTk2MDQsMzQzMTU0Njk0NywzMzQ3NTMyMTEwLDI5MzM3MzQ5MTcsMjc4MjA4MjgyNCwzMDk5NjY3NDg3LDMwMTY2OTcxMDYsMjE5NjA1MjUyOSwyMzEzODg0NDc2LDI0OTkzNDg1MjMsMjY4Mzc2NTAzMCwxMTc5NTEwNDYxLDEyOTYyOTc5MDQsMTM0NzU0ODMyNywxNTMzMDE3NTE0LDE3ODYxMDI0MDksMTYzNTUwMjk4MCwyMDg3MzA5NDU5LDIwMDMyOTQ2MjIsNTA3MzU4OTMzLDM1NTcwNjg0MCwxMzY0Mjg3NTEsNTM0NTgzNzAsODM5MjI0MDMzLDk1NzA1NTk4MCw2MDU2NTczMzksNzkwMDczODQ2LDIzNzMzNDA2MzAsMjI1NjAyODg5MSwyNjA3NDM5ODIwLDI0MjI0OTQ5MTMsMjcwNjI3MDY5MCwyODU2MzQ1ODM5LDMwNzU2MzYyMTYsMzE2MDE3NTM0OSwzNTczOTQxNjk0LDM3MjUwNjk0OTEsMzI3MzI2NzEwOCwzMzU2NzYxNzY5LDQxODE1OTg2MDIsNDA2MzI0MjM3NSw0MDExOTk2MDQ4LDM4MjgxMDM4MzcsMTAzMzI5NzE1OCw5MTU5ODU0MTksNzMwNTE3Mjc2LDU0NTU3MjM2OSwyOTY2Nzk3MzAsNDQ2NzU0ODc5LDEyOTE2NjEyMCwyMTM3MDUyNTMsMTcwOTYxMDM1MCwxODYwNzM4MTQ3LDE5NDU3OTg1MTYsMjAyOTI5MzE3NywxMjM5MzMxMTYyLDExMjA5NzQ5MzUsMTYwNjU5MTI5NiwxNDIyNjk5MDg1LDQxNDgyOTI4MjYsNDIzMzA5NDYxNSwzNzgxMDMzNjY0LDM5MzEzNzE0NjksMzY4MjE5MTU5OCwzNDk3NTA5MzQ3LDM0NDYwMDQ0NjgsMzMyODk1NTM4NSwyOTM5MjY2MjI2LDI3NTU2MzY2NzEsMzEwNjc4MDg0MCwyOTg4Njg3MjY5LDIxOTg0MzgwMjIsMjI4MjE5NTMzOSwyNTAxMjE4OTcyLDI2NTI2MDk0MjUsMTIwMTc2NTM4NiwxMjg2NTY3MTc1LDEzNzEzNjg5NzYsMTUyMTcwNjc4MSwxODA1MjExNzEwLDE2MjA1Mjk0NTksMjEwNTg4NzI2OCwxOTg4ODM4MTg1LDUzMzgwNDEzMCwzNTAxNzQ1NzUsMTY0NDM5NjcyLDQ2MzQ2MTAxLDg3MDkxMjA4Niw5NTQ2Njk0MDMsNjM2ODEzOTAwLDc4ODIwNDM1MywyMzU4OTU3OTIxLDIyNzQ2ODA0MjgsMjU5MjUyMzY0MywyNDQxNjYxNTU4LDI2OTUwMzM2ODUsMjg4MDI0MDIxNiwzMDY1OTYyODMxLDMxODI0ODc2MTgsMzU3MjE0NTkyOSwzNzU2Mjk5NzgwLDMyNzA5Mzc4NzUsMzM4ODUwNzE2Niw0MTc0NTYwMDYxLDQwOTEzMjcwMjQsNDAwNjUyMTEyNywzODU0NjA2Mzc4LDEwMTQ2NDY3MDUsOTMwMzY5MjEyLDcxMTM0OTY3NSw1NjA0ODc1OTAsMjcyNzg2MzA5LDQ1Nzk5Mjg0MCwxMDY4NTI3NjcsMjIzMzc3NTU0LDE2NzgzODEwMTcsMTg2MjUzNDg2OCwxOTE0MDUyMDM1LDIwMzE2MjEzMjYsMTIxMTI0NzU5NywxMTI4MDE0NTYwLDE1ODAwODc3OTksMTQyODE3MzA1MCwzMjI4MzMxOSwxODI2MjExMTQsNDAxNjM5NTk3LDQ4NjQ0MTM3Niw3Njg5MTcxMjMsNjUxODY4MDQ2LDEwMDMwMDcxMjksODE4MzI0ODg0LDE1MDM0NDk4MjMsMTM4NTM1NjI0MiwxMzMzODM4MDIxLDExNTAyMDg0NTYsMTk3Mzc0NTM4NywyMTI1MTM1ODQ2LDE2NzMwNjE2MTcsMTc1NjgxODk0MCwyOTcwMzU2MzI3LDMxMjA2OTQxMjIsMjgwMjg0OTkxNywyODg3NjUxNjk2LDI2Mzc0NDI2NDMsMjUyMDM5MzU2NiwyMzM0NjY5ODk3LDIxNDk5ODc2NTIsMzkxNzIzNDcwMywzNzk5MTQxMTIyLDQyODQ1MDIwMzcsNDEwMDg3MjQ3MiwzMzA5NTk0MTcxLDM0NjA5ODQ2MzAsMzU0NTc4OTQ3MywzNjI5NTQ2Nzk2LDIwNTA0NjYwNjAsMTg5OTYwMzk2OSwxODE0ODAzMjIyLDE3MzA1MjU3MjMsMTQ0Mzg1NzcyMCwxNTYwMzgyNTE3LDEwNzUwMjU2OTgsMTI2MDIzMjIzOSw1NzUxMzgxNDgsNjkyNzA3NDMzLDg3ODQ0MzM5MCwxMDYyNTk3MjM1LDI0MzI1NjY1Niw5MTM0MTkxNyw0MDkxOTg0MTAsMzI1OTY1MzgzLDM0MDMxMDA2MzYsMzI1MjIzODU0NSwzNzA0MzAwNDg2LDM2MjAwMjI5ODcsMzg3NDQyODM5MiwzOTkwOTUzMTg5LDQwNDI0NTkxMjIsNDIyNzY2NTY2MywyNDYwNDQ5MjA0LDI1NzgwMTg0ODksMjIyNjg3NTMxMCwyNDExMDI5MTU1LDMxOTgxMTUyMDAsMzA0NjIwMDQ2MSwyODI3MTc3ODgyLDI3NDM5NDQ4NTVdO3ZhciBVMz1bMCwyMTg4MjgyOTcsNDM3NjU2NTk0LDM4Nzc4MTE0Nyw4NzUzMTMxODgsOTU4ODcxMDg1LDc3NTU2MjI5NCw1OTA0MjQ2MzksMTc1MDYyNjM3NiwxNjk5OTcwNjI1LDE5MTc3NDIxNzAsMjEzNTI1MzU4NywxNTUxMTI0NTg4LDEzNjcyOTU1ODksMTE4MDg0OTI3OCwxMjY1MTk1NjM5LDM1MDEyNTI3NTIsMzcyMDA4MTA0OSwzMzk5OTQxMjUwLDMzNTAwNjU4MDMsMzgzNTQ4NDM0MCwzOTE5MDQyMjM3LDQyNzA1MDcxNzQsNDA4NTM2OTUxOSwzMTAyMjQ5MTc2LDMwNTE1OTM0MjUsMjczNDU5MTE3OCwyOTUyMTAyNTk1LDIzNjE2OTg1NTYsMjE3Nzg2OTU1NywyNTMwMzkxMjc4LDI2MTQ3Mzc2MzksMzE0NTQ1NjQ0MywzMDYwODQ3OTIyLDI3MDgzMjYxODUsMjg5MjQxNzMxMiwyNDA0OTAxNjYzLDIxODcxMjgwODYsMjUwNDEzMDMxNywyNTU1MDQ4MTk2LDM1NDIzMzAyMjcsMzcyNzIwNTc1NCwzMzc1NzQwNzY5LDMyOTI0NDUwMzIsMzg3NjU1NzY1NSwzOTI2MTcwOTc0LDQyNDYzMTA3MjUsNDAyNzc0NDU4OCwxODA4NDgxMTk1LDE3MjM4NzI2NzQsMTkxMDMxOTAzMywyMDk0NDEwMTYwLDE2MDg5NzUyNDcsMTM5MTIwMTY3MCwxMTczNDMwMTczLDEyMjQzNDgwNTIsNTk5ODQ4NjcsMjQ0ODYwMzk0LDQyODE2OTIwMSwzNDQ4NzM0NjQsOTM1MjkzODk1LDk4NDkwNzIxNCw3NjYwNzg5MzMsNTQ3NTEyNzk2LDE4NDQ4ODI4MDYsMTYyNzIzNTE5OSwyMDExMjE0MTgwLDIwNjIyNzAzMTcsMTUwNzQ5NzI5OCwxNDIzMDIyOTM5LDExMzc0Nzc5NTIsMTMyMTY5OTE0NSw5NTM0NTk4MiwxNDUwODUyMzksNTMyMjAxNzcyLDMxMzc3Mzg2MSw4MzA2NjE5MTQsMTAxNTY3MTU3MSw3MzExODMzNjgsNjQ4MDE3NjY1LDMxNzU1MDEyODYsMjk1Nzg1MzY3OSwyODA3MDU4OTMyLDI4NTgxMTUwNjksMjMwNTQ1NTU1NCwyMjIwOTgxMTk1LDI0NzQ0MDQzMDQsMjY1ODYyNTQ5NywzNTc1NTI4ODc4LDM2MjUyNjgxMzUsMzQ3MzQxNjYzNiwzMjU0OTg4NzI1LDM3NzgxNTE4MTgsMzk2MzE2MTQ3NSw0MjEzNDQ3MDY0LDQxMzAyODEzNjEsMzU5OTU5NTA4NSwzNjgzMDIyOTE2LDM0MzI3MzczNzUsMzI0NzQ2NTU1OCwzODAyMjIyMTg1LDQwMjA5MTIyMjQsNDE3Mjc2Mzc3MSw0MTIyNzYyMzU0LDMyMDE2MzE3NDksMzAxNzY3MjcxNiwyNzY0MjQ5NjIzLDI4NDg0NjE4NTQsMjMzMTU5MDE3NywyMjgwNzk2MjAwLDI0MzE1OTA5NjMsMjY0ODk3NjQ0MiwxMDQ2OTk2MTMsMTg4MTI3NDQ0LDQ3MjYxNTYzMSwyODczNDM4MTQsODQwMDE5NzA1LDEwNTg3MDk3NDQsNjcxNTkzMTk1LDYyMTU5MTc3OCwxODUyMTcxOTI1LDE2NjgyMTI4OTIsMTk1Mzc1NzgzMSwyMDM3OTcwMDYyLDE1MTQ3OTA1NzcsMTQ2Mzk5NjYwMCwxMDgwMDE3NTcxLDEyOTc0MDMwNTAsMzY3MzYzNzM1NiwzNjIzNjM2OTY1LDMyMzU5OTUxMzQsMzQ1NDY4NjE5OSw0MDA3MzYwOTY4LDM4MjIwOTAxNzcsNDEwNzEwMTY1OCw0MTkwNTMwNTE1LDI5OTc4MjU5NTYsMzIxNTIxMjQ2MSwyODMwNzA4MTUwLDI3Nzk5MTUxOTksMjI1NjczNDU5MiwyMzQwOTQ3ODQ5LDI2MjcwMTYwODIsMjQ0MzA1ODA3NSwxNzI0NjY1NTYsMTIyNDY2MTY1LDI3Mzc5MjM2Niw0OTI0ODM0MzEsMTA0NzIzOWUzLDg2MTk2ODIwOSw2MTIyMDU4OTgsNjk1NjM0NzU1LDE2NDYyNTIzNDAsMTg2MzYzODg0NSwyMDEzOTA4MjYyLDE5NjMxMTUzMTEsMTQ0NjI0MjU3NiwxNTMwNDU1ODMzLDEyNzc1NTU5NzAsMTA5MzU5Nzk2MywxNjM2NjA0NjMxLDE4MjA4MjQ3OTgsMjA3MzcyNDYxMywxOTg5MjQ5MjI4LDE0MzY1OTA4MzUsMTQ4NzY0NTk0NiwxMzM3Mzc2NDgxLDExMTk3Mjc4NDgsMTY0OTQ4NjM5LDgxNzgxOTEwLDMzMTU0NDIwNSw1MTY1NTI4MzYsMTAzOTcxNzA1MSw4MjEyODgxMTQsNjY5OTYxODk3LDcxOTcwMDEyOCwyOTczNTMwNjk1LDMxNTc3NTA4NjIsMjg3MTY4MjY0NSwyNzg3MjA3MjYwLDIyMzI0MzUyOTksMjI4MzQ5MDQxMCwyNjY3OTk0NzM3LDI0NTAzNDYxMDQsMzY0NzIxMjA0NywzNTY0MDQ1MzE4LDMyNzkwMzM4ODUsMzQ2NDA0MjUxNiwzOTgwOTMxNjI3LDM3NjI1MDI2OTAsNDE1MDE0NDU2OSw0MTk5ODgyODAwLDMwNzAzNTY2MzQsMzEyMTI3NTUzOSwyOTA0MDI3MjcyLDI2ODYyNTQ3MjEsMjIwMDgxODg3OCwyMzg0OTExMDMxLDI1NzA4MzIwNDQsMjQ4NjIyNDU0OSwzNzQ3MTkyMDE4LDM1Mjg2MjY5MDcsMzMxMDMyMTg1NiwzMzU5OTM2MjAxLDM5NTAzNTU3MDIsMzg2NzA2MDk5MSw0MDQ5ODQ0NDUyLDQyMzQ3MjEwMDUsMTczOTY1NjIwMiwxNzkwNTc1MTA3LDIxMDgxMDA2MzIsMTg5MDMyODA4MSwxNDAyODExNDM4LDE1ODY5MDM1OTEsMTIzMzg1NjU3MiwxMTQ5MjQ5MDc3LDI2Njk1OTkzOCw0ODM5NDgyNywzNjkwNTc4NzIsNDE4NjcyMjE3LDEwMDI3ODM4NDYsOTE5NDg5MTM1LDU2NzQ5ODg2OCw3NTIzNzU0MjEsMjA5MzM2MjI1LDI0MTk3NTQ0LDM3NjE4NzgyNyw0NTk3NDQ2OTgsOTQ1MTY0MTY1LDg5NTI4NzY5Miw1NzQ2MjQ2NjMsNzkzNDUxOTM0LDE2Nzk5NjgyMzMsMTc2NDMxMzU2OCwyMTE3MzYwNjM1LDE5MzM1MzA2MTAsMTM0MzEyNzUwMSwxNTYwNjM3ODkyLDEyNDMxMTI0MTUsMTE5MjQ1NTYzOCwzNzA0MjgwODgxLDM1MTkxNDIyMDAsMzMzNjM1ODY5MSwzNDE5OTE1NTYyLDM5MDc0NDg1OTcsMzg1NzU3MjEyNCw0MDc1ODc3MTI3LDQyOTQ3MDQzOTgsMzAyOTUxMDAwOSwzMTEzODU1MzQ0LDI5Mjc5MzQzMTUsMjc0NDEwNDI5MCwyMTU5OTc2Mjg1LDIzNzc0ODY2NzYsMjU5NDczNDkyNywyNTQ0MDc4MTUwXTt2YXIgVTQ9WzAsMTUxODQ5NzQyLDMwMzY5OTQ4NCw0NTQ0OTk2MDIsNjA3Mzk4OTY4LDc1ODcyMDMxMCw5MDg5OTkyMDQsMTA1OTI3MDk1NCwxMjE0Nzk3OTM2LDEwOTcxNTk1NTAsMTUxNzQ0MDYyMCwxNDAwODQ5NzYyLDE4MTc5OTg0MDgsMTY5OTgzOTgxNCwyMTE4NTQxOTA4LDIwMDE0MzA4NzQsMjQyOTU5NTg3MiwyNTgxNDQ1NjE0LDIxOTQzMTkxMDAsMjM0NTExOTIxOCwzMDM0ODgxMjQwLDMxODYyMDI1ODIsMjgwMTY5OTUyNCwyOTUxOTcxMjc0LDM2MzU5OTY4MTYsMzUxODM1ODQzMCwzMzk5Njc5NjI4LDMyODMwODg3NzAsNDIzNzA4MzgxNiw0MTE4OTI1MjIyLDQwMDI4NjE3NDgsMzg4NTc1MDcxNCwxMDAyMTQyNjgzLDg1MDgxNzIzNyw2OTg0NDUyNTUsNTQ4MTY5NDE3LDUyOTQ4Nzg0MywzNzc2NDIyMjEsMjI3ODg1NTY3LDc3MDg5NTIxLDE5NDMyMTcwNjcsMjA2MTM3OTc0OSwxNjQwNTc2NDM5LDE3NTc2OTE1NzcsMTQ3NDc2MDU5NSwxNTkyMzk0OTA5LDExNzQyMTUwNTUsMTI5MDgwMTc5MywyODc1OTY4MzE1LDI3MjQ2NDI4NjksMzExMTI0NzE0MywyOTYwOTcxMzA1LDI0MDU0MjY5NDcsMjI1MzU4MTMyNSwyNjM4NjA2NjIzLDI0ODc4MTA1NzcsMzgwODY2MjM0NywzOTI2ODI1MDI5LDQwNDQ5ODE1OTEsNDE2MjA5NjcyOSwzMzQyMzE5NDc1LDM0NTk5NTM3ODksMzU3NjUzOTUwMywzNjkzMTI2MjQxLDE5ODY5MTgwNjEsMjEzNzA2MjgxOSwxNjg1NTc3OTA1LDE4MzY3NzIyODcsMTM4MTYyMDM3MywxNTMyMjg1MzM5LDEwNzgxODUwOTcsMTIyOTg5OTY1NSwxMDQwNTU5ODM3LDkyMzMxMzYxOSw3NDAyNzY0MTcsNjIxOTgyNjcxLDQzOTQ1MjM4OSwzMjI3MzQ1NzEsMTM3MDczOTEzLDE5MzA4NTM1LDM4NzExNjM5ODEsNDAyMTMwODczOSw0MTA0NjA1Nzc3LDQyNTU4MDAxNTksMzI2Mzc4NTU4OSwzNDE0NDUwNTU1LDM0OTkzMjY1NjksMzY1MTA0MTEyNywyOTMzMjAyNDkzLDI4MTU5NTYyNzUsMzE2NzY4NDY0MSwzMDQ5MzkwODk1LDIzMzAwMTQyMTMsMjIxMzI5NjM5NSwyNTY2NTk1NjA5LDI0NDg4MzAyMzEsMTMwNTkwNjU1MCwxMTU1MjM3NDk2LDE2MDcyNDQ2NTAsMTQ1NTUyNTk4OCwxNzc2NDYwMTEwLDE2MjYzMTk0MjQsMjA3OTg5NzQyNiwxOTI4NzA3MTY0LDk2MzkyNDU0LDIxMzExNDM3NiwzOTY2NzM4MTgsNTE0NDQzMjg0LDU2Mjc1NTkwMiw2Nzk5OThlMyw4NjUxMzY0MTgsOTgzNDI2MDkyLDM3MDgxNzM3MTgsMzU1NzUwNDY2NCwzNDc0NzI5ODY2LDMzMjMwMTEyMDQsNDE4MDgwODExMCw0MDMwNjY3NDI0LDM5NDUyNjkxNzAsMzc5NDA3ODkwOCwyNTA3MDQwMjMwLDI2MjM3NjIxNTIsMjI3MjU1NjAyNiwyMzkwMzI1NDkyLDI5NzU0ODQzODIsMzA5MjcyNjQ4MCwyNzM4OTA1MDI2LDI4NTcxOTQ3MDAsMzk3Mzc3MzEyMSwzODU2MTM3Mjk1LDQyNzQwNTM0NjksNDE1NzQ2NzIxOSwzMzcxMDk2OTUzLDMyNTI5MzI3MjcsMzY3MzQ3NjQ1MywzNTU2MzYxODM1LDI3NjMxNzM2ODEsMjkxNTAxNzc5MSwzMDY0NTEwNzY1LDMyMTUzMDcyOTksMjE1NjI5OTAxNywyMzA3NjIyOTE5LDI0NTk3MzUzMTcsMjYxMDAxMTY3NSwyMDgxMDQ4NDgxLDE5NjM0MTI2NTUsMTg0NjU2MzI2MSwxNzI5OTc3MDExLDE0ODA0ODU3ODUsMTM2MjMyMTU1OSwxMjQzOTA1NDEzLDExMjY3OTA3OTUsODc4ODQ1OTA1LDEwMzA2OTAwMTUsNjQ1NDAxMDM3LDc5NjE5NzU3MSwyNzQwODQ4NDEsNDI1NDA4NzQzLDM4NTQ0ODg1LDE4ODgyMTI0MywzNjEzNDk0NDI2LDM3MzE2NTQ1NDgsMzMxMzIxMjAzOCwzNDMwMzIyNTY4LDQwODI0NzUxNzAsNDIwMDExNTExNiwzNzgwMDk3NzI2LDM4OTY2ODgwNDgsMjY2ODIyMTY3NCwyNTE2OTAxODYwLDIzNjY4ODI1NTAsMjIxNjYxMDI5NiwzMTQxNDAwNzg2LDI5ODk1NTI2MDQsMjgzNzk2NjU0MiwyNjg3MTY1ODg4LDEyMDI3OTc2OTAsMTMyMDk1NzgxMiwxNDM3MjgwODcwLDE1NTQzOTE0MDAsMTY2OTY2NDgzNCwxNzg3MzA0NzgwLDE5MDYyNDcyNjIsMjAyMjgzNzU4NCwyNjU5MDUxNjIsMTE0NTg1MzQ4LDQ5OTM0Nzk5MCwzNDkwNzU3MzYsNzM2OTcwODAyLDU4NTEyMjYyMCw5NzI1MTI4MTQsODIxNzEyMTYwLDI1OTU2ODQ4NDQsMjQ3ODQ0MzIzNCwyMjkzMDQ1MjMyLDIxNzQ3NTQwNDYsMzE5NjI2Nzk4OCwzMDc5NTQ2NTg2LDI4OTU3MjM0NjQsMjc3Nzk1MjQ1NCwzNTM3ODUyODI4LDM2ODc5OTQwMDIsMzIzNDE1NjQxNiwzMzg1MzQ1MTY2LDQxNDI2MjYyMTIsNDI5MzI5NTc4NiwzODQxMDI0OTUyLDM5OTI3NDIwNzAsMTc0NTY3NjkyLDU3MzI2MDgyLDQxMDg4Nzk1MiwyOTI1OTY3NjYsNzc3MjMxNjY4LDY2MDUxMDI2NiwxMDExNDUyNzEyLDg5MzY4MTcwMiwxMTA4MzM5MDY4LDEyNTg0ODAyNDIsMTM0MzYxODkxMiwxNDk0ODA3NjYyLDE3MTUxOTMxNTYsMTg2NTg2MjczMCwxOTQ4MzczODQ4LDIxMDAwOTA5NjYsMjcwMTk0OTQ5NSwyODE4NjY2ODA5LDMwMDQ1OTExNDcsMzEyMjM1ODA1MywyMjM1MDYxNzc1LDIzNTIzMDc0NTcsMjUzNTYwNDI0MywyNjUzODk5NTQ5LDM5MTU2NTM3MDMsMzc2NDk4ODIzMyw0MjE5MzUyMTU1LDQwNjc2MzkxMjUsMzQ0NDU3NTg3MSwzMjk0NDMwNTc3LDM3NDYxNzUwNzUsMzU5NDk4MjI1Myw4MzY1NTM0MzEsOTUzMjcwNzQ1LDYwMDIzNTIxMSw3MTgwMDIxMTcsMzY3NTg1MDA3LDQ4NDgzMDY4OSwxMzMzNjE5MDcsMjUxNjU3MjEzLDIwNDE4NzcxNTksMTg5MTIxMTY4OSwxODA2NTk5MzU1LDE2NTQ4ODYzMjUsMTU2ODcxODQ5NSwxNDE4NTczMjAxLDEzMzU1MzU3NDcsMTE4NDM0MjkyNV07ZnVuY3Rpb24gY29udmVydFRvSW50MzIoYnl0ZXMpe3ZhciByZXN1bHQ9W107Zm9yKHZhciBpPTA7aTxieXRlcy5sZW5ndGg7aSs9NCl7cmVzdWx0LnB1c2goYnl0ZXNbaV08PDI0fGJ5dGVzW2krMV08PDE2fGJ5dGVzW2krMl08PDh8Ynl0ZXNbaSszXSl9cmV0dXJuIHJlc3VsdH12YXIgQUVTPWZ1bmN0aW9uKGtleSl7aWYoISh0aGlzIGluc3RhbmNlb2YgQUVTKSl7dGhyb3cgRXJyb3IoIkFFUyBtdXN0IGJlIGluc3Rhbml0YXRlZCB3aXRoIGBuZXdgIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImtleSIse3ZhbHVlOmNvZXJjZUFycmF5KGtleSx0cnVlKX0pO3RoaXMuX3ByZXBhcmUoKX07QUVTLnByb3RvdHlwZS5fcHJlcGFyZT1mdW5jdGlvbigpe3ZhciByb3VuZHM9bnVtYmVyT2ZSb3VuZHNbdGhpcy5rZXkubGVuZ3RoXTtpZihyb3VuZHM9PW51bGwpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBrZXkgc2l6ZSAobXVzdCBiZSAxNiwgMjQgb3IgMzIgYnl0ZXMpIil9dGhpcy5fS2U9W107dGhpcy5fS2Q9W107Zm9yKHZhciBpPTA7aTw9cm91bmRzO2krKyl7dGhpcy5fS2UucHVzaChbMCwwLDAsMF0pO3RoaXMuX0tkLnB1c2goWzAsMCwwLDBdKX12YXIgcm91bmRLZXlDb3VudD0ocm91bmRzKzEpKjQ7dmFyIEtDPXRoaXMua2V5Lmxlbmd0aC80O3ZhciB0az1jb252ZXJ0VG9JbnQzMih0aGlzLmtleSk7dmFyIGluZGV4O2Zvcih2YXIgaT0wO2k8S0M7aSsrKXtpbmRleD1pPj4yO3RoaXMuX0tlW2luZGV4XVtpJTRdPXRrW2ldO3RoaXMuX0tkW3JvdW5kcy1pbmRleF1baSU0XT10a1tpXX12YXIgcmNvbnBvaW50ZXI9MDt2YXIgdD1LQyx0dDt3aGlsZSh0PHJvdW5kS2V5Q291bnQpe3R0PXRrW0tDLTFdO3RrWzBdXj1TW3R0Pj4xNiYyNTVdPDwyNF5TW3R0Pj44JjI1NV08PDE2XlNbdHQmMjU1XTw8OF5TW3R0Pj4yNCYyNTVdXnJjb25bcmNvbnBvaW50ZXJdPDwyNDtyY29ucG9pbnRlcis9MTtpZihLQyE9OCl7Zm9yKHZhciBpPTE7aTxLQztpKyspe3RrW2ldXj10a1tpLTFdfX1lbHNle2Zvcih2YXIgaT0xO2k8S0MvMjtpKyspe3RrW2ldXj10a1tpLTFdfXR0PXRrW0tDLzItMV07dGtbS0MvMl1ePVNbdHQmMjU1XV5TW3R0Pj44JjI1NV08PDheU1t0dD4+MTYmMjU1XTw8MTZeU1t0dD4+MjQmMjU1XTw8MjQ7Zm9yKHZhciBpPUtDLzIrMTtpPEtDO2krKyl7dGtbaV1ePXRrW2ktMV19fXZhciBpPTAscixjO3doaWxlKGk8S0MmJnQ8cm91bmRLZXlDb3VudCl7cj10Pj4yO2M9dCU0O3RoaXMuX0tlW3JdW2NdPXRrW2ldO3RoaXMuX0tkW3JvdW5kcy1yXVtjXT10a1tpKytdO3QrK319Zm9yKHZhciByPTE7cjxyb3VuZHM7cisrKXtmb3IodmFyIGM9MDtjPDQ7YysrKXt0dD10aGlzLl9LZFtyXVtjXTt0aGlzLl9LZFtyXVtjXT1VMVt0dD4+MjQmMjU1XV5VMlt0dD4+MTYmMjU1XV5VM1t0dD4+OCYyNTVdXlU0W3R0JjI1NV19fX07QUVTLnByb3RvdHlwZS5lbmNyeXB0PWZ1bmN0aW9uKHBsYWludGV4dCl7aWYocGxhaW50ZXh0Lmxlbmd0aCE9MTYpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBwbGFpbnRleHQgc2l6ZSAobXVzdCBiZSAxNiBieXRlcykiKX12YXIgcm91bmRzPXRoaXMuX0tlLmxlbmd0aC0xO3ZhciBhPVswLDAsMCwwXTt2YXIgdD1jb252ZXJ0VG9JbnQzMihwbGFpbnRleHQpO2Zvcih2YXIgaT0wO2k8NDtpKyspe3RbaV1ePXRoaXMuX0tlWzBdW2ldfWZvcih2YXIgcj0xO3I8cm91bmRzO3IrKyl7Zm9yKHZhciBpPTA7aTw0O2krKyl7YVtpXT1UMVt0W2ldPj4yNCYyNTVdXlQyW3RbKGkrMSklNF0+PjE2JjI1NV1eVDNbdFsoaSsyKSU0XT4+OCYyNTVdXlQ0W3RbKGkrMyklNF0mMjU1XV50aGlzLl9LZVtyXVtpXX10PWEuc2xpY2UoKX12YXIgcmVzdWx0PWNyZWF0ZUFycmF5KDE2KSx0dDtmb3IodmFyIGk9MDtpPDQ7aSsrKXt0dD10aGlzLl9LZVtyb3VuZHNdW2ldO3Jlc3VsdFs0KmldPShTW3RbaV0+PjI0JjI1NV1edHQ+PjI0KSYyNTU7cmVzdWx0WzQqaSsxXT0oU1t0WyhpKzEpJTRdPj4xNiYyNTVdXnR0Pj4xNikmMjU1O3Jlc3VsdFs0KmkrMl09KFNbdFsoaSsyKSU0XT4+OCYyNTVdXnR0Pj44KSYyNTU7cmVzdWx0WzQqaSszXT0oU1t0WyhpKzMpJTRdJjI1NV1edHQpJjI1NX1yZXR1cm4gcmVzdWx0fTtBRVMucHJvdG90eXBlLmRlY3J5cHQ9ZnVuY3Rpb24oY2lwaGVydGV4dCl7aWYoY2lwaGVydGV4dC5sZW5ndGghPTE2KXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2lwaGVydGV4dCBzaXplIChtdXN0IGJlIDE2IGJ5dGVzKSIpfXZhciByb3VuZHM9dGhpcy5fS2QubGVuZ3RoLTE7dmFyIGE9WzAsMCwwLDBdO3ZhciB0PWNvbnZlcnRUb0ludDMyKGNpcGhlcnRleHQpO2Zvcih2YXIgaT0wO2k8NDtpKyspe3RbaV1ePXRoaXMuX0tkWzBdW2ldfWZvcih2YXIgcj0xO3I8cm91bmRzO3IrKyl7Zm9yKHZhciBpPTA7aTw0O2krKyl7YVtpXT1UNVt0W2ldPj4yNCYyNTVdXlQ2W3RbKGkrMyklNF0+PjE2JjI1NV1eVDdbdFsoaSsyKSU0XT4+OCYyNTVdXlQ4W3RbKGkrMSklNF0mMjU1XV50aGlzLl9LZFtyXVtpXX10PWEuc2xpY2UoKX12YXIgcmVzdWx0PWNyZWF0ZUFycmF5KDE2KSx0dDtmb3IodmFyIGk9MDtpPDQ7aSsrKXt0dD10aGlzLl9LZFtyb3VuZHNdW2ldO3Jlc3VsdFs0KmldPShTaVt0W2ldPj4yNCYyNTVdXnR0Pj4yNCkmMjU1O3Jlc3VsdFs0KmkrMV09KFNpW3RbKGkrMyklNF0+PjE2JjI1NV1edHQ+PjE2KSYyNTU7cmVzdWx0WzQqaSsyXT0oU2lbdFsoaSsyKSU0XT4+OCYyNTVdXnR0Pj44KSYyNTU7cmVzdWx0WzQqaSszXT0oU2lbdFsoaSsxKSU0XSYyNTVdXnR0KSYyNTV9cmV0dXJuIHJlc3VsdH07dmFyIE1vZGVPZk9wZXJhdGlvbkVDQj1mdW5jdGlvbihrZXkpe2lmKCEodGhpcyBpbnN0YW5jZW9mIE1vZGVPZk9wZXJhdGlvbkVDQikpe3Rocm93IEVycm9yKCJBRVMgbXVzdCBiZSBpbnN0YW5pdGF0ZWQgd2l0aCBgbmV3YCIpfXRoaXMuZGVzY3JpcHRpb249IkVsZWN0cm9uaWMgQ29kZSBCbG9jayI7dGhpcy5uYW1lPSJlY2IiO3RoaXMuX2Flcz1uZXcgQUVTKGtleSl9O01vZGVPZk9wZXJhdGlvbkVDQi5wcm90b3R5cGUuZW5jcnlwdD1mdW5jdGlvbihwbGFpbnRleHQpe3BsYWludGV4dD1jb2VyY2VBcnJheShwbGFpbnRleHQpO2lmKHBsYWludGV4dC5sZW5ndGglMTYhPT0wKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcGxhaW50ZXh0IHNpemUgKG11c3QgYmUgbXVsdGlwbGUgb2YgMTYgYnl0ZXMpIil9dmFyIGNpcGhlcnRleHQ9Y3JlYXRlQXJyYXkocGxhaW50ZXh0Lmxlbmd0aCk7dmFyIGJsb2NrPWNyZWF0ZUFycmF5KDE2KTtmb3IodmFyIGk9MDtpPHBsYWludGV4dC5sZW5ndGg7aSs9MTYpe2NvcHlBcnJheShwbGFpbnRleHQsYmxvY2ssMCxpLGkrMTYpO2Jsb2NrPXRoaXMuX2Flcy5lbmNyeXB0KGJsb2NrKTtjb3B5QXJyYXkoYmxvY2ssY2lwaGVydGV4dCxpKX1yZXR1cm4gY2lwaGVydGV4dH07TW9kZU9mT3BlcmF0aW9uRUNCLnByb3RvdHlwZS5kZWNyeXB0PWZ1bmN0aW9uKGNpcGhlcnRleHQpe2NpcGhlcnRleHQ9Y29lcmNlQXJyYXkoY2lwaGVydGV4dCk7aWYoY2lwaGVydGV4dC5sZW5ndGglMTYhPT0wKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2lwaGVydGV4dCBzaXplIChtdXN0IGJlIG11bHRpcGxlIG9mIDE2IGJ5dGVzKSIpfXZhciBwbGFpbnRleHQ9Y3JlYXRlQXJyYXkoY2lwaGVydGV4dC5sZW5ndGgpO3ZhciBibG9jaz1jcmVhdGVBcnJheSgxNik7Zm9yKHZhciBpPTA7aTxjaXBoZXJ0ZXh0Lmxlbmd0aDtpKz0xNil7Y29weUFycmF5KGNpcGhlcnRleHQsYmxvY2ssMCxpLGkrMTYpO2Jsb2NrPXRoaXMuX2Flcy5kZWNyeXB0KGJsb2NrKTtjb3B5QXJyYXkoYmxvY2sscGxhaW50ZXh0LGkpfXJldHVybiBwbGFpbnRleHR9O3ZhciBNb2RlT2ZPcGVyYXRpb25DQkM9ZnVuY3Rpb24oa2V5LGl2KXtpZighKHRoaXMgaW5zdGFuY2VvZiBNb2RlT2ZPcGVyYXRpb25DQkMpKXt0aHJvdyBFcnJvcigiQUVTIG11c3QgYmUgaW5zdGFuaXRhdGVkIHdpdGggYG5ld2AiKX10aGlzLmRlc2NyaXB0aW9uPSJDaXBoZXIgQmxvY2sgQ2hhaW5pbmciO3RoaXMubmFtZT0iY2JjIjtpZighaXYpe2l2PWNyZWF0ZUFycmF5KDE2KX1lbHNlIGlmKGl2Lmxlbmd0aCE9MTYpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBpbml0aWFsYXRpb24gdmVjdG9yIHNpemUgKG11c3QgYmUgMTYgYnl0ZXMpIil9dGhpcy5fbGFzdENpcGhlcmJsb2NrPWNvZXJjZUFycmF5KGl2LHRydWUpO3RoaXMuX2Flcz1uZXcgQUVTKGtleSl9O01vZGVPZk9wZXJhdGlvbkNCQy5wcm90b3R5cGUuZW5jcnlwdD1mdW5jdGlvbihwbGFpbnRleHQpe3BsYWludGV4dD1jb2VyY2VBcnJheShwbGFpbnRleHQpO2lmKHBsYWludGV4dC5sZW5ndGglMTYhPT0wKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcGxhaW50ZXh0IHNpemUgKG11c3QgYmUgbXVsdGlwbGUgb2YgMTYgYnl0ZXMpIil9dmFyIGNpcGhlcnRleHQ9Y3JlYXRlQXJyYXkocGxhaW50ZXh0Lmxlbmd0aCk7dmFyIGJsb2NrPWNyZWF0ZUFycmF5KDE2KTtmb3IodmFyIGk9MDtpPHBsYWludGV4dC5sZW5ndGg7aSs9MTYpe2NvcHlBcnJheShwbGFpbnRleHQsYmxvY2ssMCxpLGkrMTYpO2Zvcih2YXIgaj0wO2o8MTY7aisrKXtibG9ja1tqXV49dGhpcy5fbGFzdENpcGhlcmJsb2NrW2pdfXRoaXMuX2xhc3RDaXBoZXJibG9jaz10aGlzLl9hZXMuZW5jcnlwdChibG9jayk7Y29weUFycmF5KHRoaXMuX2xhc3RDaXBoZXJibG9jayxjaXBoZXJ0ZXh0LGkpfXJldHVybiBjaXBoZXJ0ZXh0fTtNb2RlT2ZPcGVyYXRpb25DQkMucHJvdG90eXBlLmRlY3J5cHQ9ZnVuY3Rpb24oY2lwaGVydGV4dCl7Y2lwaGVydGV4dD1jb2VyY2VBcnJheShjaXBoZXJ0ZXh0KTtpZihjaXBoZXJ0ZXh0Lmxlbmd0aCUxNiE9PTApe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBjaXBoZXJ0ZXh0IHNpemUgKG11c3QgYmUgbXVsdGlwbGUgb2YgMTYgYnl0ZXMpIil9dmFyIHBsYWludGV4dD1jcmVhdGVBcnJheShjaXBoZXJ0ZXh0Lmxlbmd0aCk7dmFyIGJsb2NrPWNyZWF0ZUFycmF5KDE2KTtmb3IodmFyIGk9MDtpPGNpcGhlcnRleHQubGVuZ3RoO2krPTE2KXtjb3B5QXJyYXkoY2lwaGVydGV4dCxibG9jaywwLGksaSsxNik7YmxvY2s9dGhpcy5fYWVzLmRlY3J5cHQoYmxvY2spO2Zvcih2YXIgaj0wO2o8MTY7aisrKXtwbGFpbnRleHRbaStqXT1ibG9ja1tqXV50aGlzLl9sYXN0Q2lwaGVyYmxvY2tbal19Y29weUFycmF5KGNpcGhlcnRleHQsdGhpcy5fbGFzdENpcGhlcmJsb2NrLDAsaSxpKzE2KX1yZXR1cm4gcGxhaW50ZXh0fTt2YXIgTW9kZU9mT3BlcmF0aW9uQ0ZCPWZ1bmN0aW9uKGtleSxpdixzZWdtZW50U2l6ZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgTW9kZU9mT3BlcmF0aW9uQ0ZCKSl7dGhyb3cgRXJyb3IoIkFFUyBtdXN0IGJlIGluc3Rhbml0YXRlZCB3aXRoIGBuZXdgIil9dGhpcy5kZXNjcmlwdGlvbj0iQ2lwaGVyIEZlZWRiYWNrIjt0aGlzLm5hbWU9ImNmYiI7aWYoIWl2KXtpdj1jcmVhdGVBcnJheSgxNil9ZWxzZSBpZihpdi5sZW5ndGghPTE2KXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgaW5pdGlhbGF0aW9uIHZlY3RvciBzaXplIChtdXN0IGJlIDE2IHNpemUpIil9aWYoIXNlZ21lbnRTaXplKXtzZWdtZW50U2l6ZT0xfXRoaXMuc2VnbWVudFNpemU9c2VnbWVudFNpemU7dGhpcy5fc2hpZnRSZWdpc3Rlcj1jb2VyY2VBcnJheShpdix0cnVlKTt0aGlzLl9hZXM9bmV3IEFFUyhrZXkpfTtNb2RlT2ZPcGVyYXRpb25DRkIucHJvdG90eXBlLmVuY3J5cHQ9ZnVuY3Rpb24ocGxhaW50ZXh0KXtpZihwbGFpbnRleHQubGVuZ3RoJXRoaXMuc2VnbWVudFNpemUhPTApe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBwbGFpbnRleHQgc2l6ZSAobXVzdCBiZSBzZWdtZW50U2l6ZSBieXRlcykiKX12YXIgZW5jcnlwdGVkPWNvZXJjZUFycmF5KHBsYWludGV4dCx0cnVlKTt2YXIgeG9yU2VnbWVudDtmb3IodmFyIGk9MDtpPGVuY3J5cHRlZC5sZW5ndGg7aSs9dGhpcy5zZWdtZW50U2l6ZSl7eG9yU2VnbWVudD10aGlzLl9hZXMuZW5jcnlwdCh0aGlzLl9zaGlmdFJlZ2lzdGVyKTtmb3IodmFyIGo9MDtqPHRoaXMuc2VnbWVudFNpemU7aisrKXtlbmNyeXB0ZWRbaStqXV49eG9yU2VnbWVudFtqXX1jb3B5QXJyYXkodGhpcy5fc2hpZnRSZWdpc3Rlcix0aGlzLl9zaGlmdFJlZ2lzdGVyLDAsdGhpcy5zZWdtZW50U2l6ZSk7Y29weUFycmF5KGVuY3J5cHRlZCx0aGlzLl9zaGlmdFJlZ2lzdGVyLDE2LXRoaXMuc2VnbWVudFNpemUsaSxpK3RoaXMuc2VnbWVudFNpemUpfXJldHVybiBlbmNyeXB0ZWR9O01vZGVPZk9wZXJhdGlvbkNGQi5wcm90b3R5cGUuZGVjcnlwdD1mdW5jdGlvbihjaXBoZXJ0ZXh0KXtpZihjaXBoZXJ0ZXh0Lmxlbmd0aCV0aGlzLnNlZ21lbnRTaXplIT0wKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2lwaGVydGV4dCBzaXplIChtdXN0IGJlIHNlZ21lbnRTaXplIGJ5dGVzKSIpfXZhciBwbGFpbnRleHQ9Y29lcmNlQXJyYXkoY2lwaGVydGV4dCx0cnVlKTt2YXIgeG9yU2VnbWVudDtmb3IodmFyIGk9MDtpPHBsYWludGV4dC5sZW5ndGg7aSs9dGhpcy5zZWdtZW50U2l6ZSl7eG9yU2VnbWVudD10aGlzLl9hZXMuZW5jcnlwdCh0aGlzLl9zaGlmdFJlZ2lzdGVyKTtmb3IodmFyIGo9MDtqPHRoaXMuc2VnbWVudFNpemU7aisrKXtwbGFpbnRleHRbaStqXV49eG9yU2VnbWVudFtqXX1jb3B5QXJyYXkodGhpcy5fc2hpZnRSZWdpc3Rlcix0aGlzLl9zaGlmdFJlZ2lzdGVyLDAsdGhpcy5zZWdtZW50U2l6ZSk7Y29weUFycmF5KGNpcGhlcnRleHQsdGhpcy5fc2hpZnRSZWdpc3RlciwxNi10aGlzLnNlZ21lbnRTaXplLGksaSt0aGlzLnNlZ21lbnRTaXplKX1yZXR1cm4gcGxhaW50ZXh0fTt2YXIgTW9kZU9mT3BlcmF0aW9uT0ZCPWZ1bmN0aW9uKGtleSxpdil7aWYoISh0aGlzIGluc3RhbmNlb2YgTW9kZU9mT3BlcmF0aW9uT0ZCKSl7dGhyb3cgRXJyb3IoIkFFUyBtdXN0IGJlIGluc3Rhbml0YXRlZCB3aXRoIGBuZXdgIil9dGhpcy5kZXNjcmlwdGlvbj0iT3V0cHV0IEZlZWRiYWNrIjt0aGlzLm5hbWU9Im9mYiI7aWYoIWl2KXtpdj1jcmVhdGVBcnJheSgxNil9ZWxzZSBpZihpdi5sZW5ndGghPTE2KXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgaW5pdGlhbGF0aW9uIHZlY3RvciBzaXplIChtdXN0IGJlIDE2IGJ5dGVzKSIpfXRoaXMuX2xhc3RQcmVjaXBoZXI9Y29lcmNlQXJyYXkoaXYsdHJ1ZSk7dGhpcy5fbGFzdFByZWNpcGhlckluZGV4PTE2O3RoaXMuX2Flcz1uZXcgQUVTKGtleSl9O01vZGVPZk9wZXJhdGlvbk9GQi5wcm90b3R5cGUuZW5jcnlwdD1mdW5jdGlvbihwbGFpbnRleHQpe3ZhciBlbmNyeXB0ZWQ9Y29lcmNlQXJyYXkocGxhaW50ZXh0LHRydWUpO2Zvcih2YXIgaT0wO2k8ZW5jcnlwdGVkLmxlbmd0aDtpKyspe2lmKHRoaXMuX2xhc3RQcmVjaXBoZXJJbmRleD09PTE2KXt0aGlzLl9sYXN0UHJlY2lwaGVyPXRoaXMuX2Flcy5lbmNyeXB0KHRoaXMuX2xhc3RQcmVjaXBoZXIpO3RoaXMuX2xhc3RQcmVjaXBoZXJJbmRleD0wfWVuY3J5cHRlZFtpXV49dGhpcy5fbGFzdFByZWNpcGhlclt0aGlzLl9sYXN0UHJlY2lwaGVySW5kZXgrK119cmV0dXJuIGVuY3J5cHRlZH07TW9kZU9mT3BlcmF0aW9uT0ZCLnByb3RvdHlwZS5kZWNyeXB0PU1vZGVPZk9wZXJhdGlvbk9GQi5wcm90b3R5cGUuZW5jcnlwdDt2YXIgQ291bnRlcj1mdW5jdGlvbihpbml0aWFsVmFsdWUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIENvdW50ZXIpKXt0aHJvdyBFcnJvcigiQ291bnRlciBtdXN0IGJlIGluc3Rhbml0YXRlZCB3aXRoIGBuZXdgIil9aWYoaW5pdGlhbFZhbHVlIT09MCYmIWluaXRpYWxWYWx1ZSl7aW5pdGlhbFZhbHVlPTF9aWYodHlwZW9mIGluaXRpYWxWYWx1ZT09PSJudW1iZXIiKXt0aGlzLl9jb3VudGVyPWNyZWF0ZUFycmF5KDE2KTt0aGlzLnNldFZhbHVlKGluaXRpYWxWYWx1ZSl9ZWxzZXt0aGlzLnNldEJ5dGVzKGluaXRpYWxWYWx1ZSl9fTtDb3VudGVyLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih2YWx1ZSl7aWYodHlwZW9mIHZhbHVlIT09Im51bWJlciJ8fHBhcnNlSW50KHZhbHVlKSE9dmFsdWUpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBjb3VudGVyIHZhbHVlIChtdXN0IGJlIGFuIGludGVnZXIpIil9Zm9yKHZhciBpbmRleD0xNTtpbmRleD49MDstLWluZGV4KXt0aGlzLl9jb3VudGVyW2luZGV4XT12YWx1ZSUyNTY7dmFsdWU9dmFsdWU+Pjh9fTtDb3VudGVyLnByb3RvdHlwZS5zZXRCeXRlcz1mdW5jdGlvbihieXRlcyl7Ynl0ZXM9Y29lcmNlQXJyYXkoYnl0ZXMsdHJ1ZSk7aWYoYnl0ZXMubGVuZ3RoIT0xNil7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNvdW50ZXIgYnl0ZXMgc2l6ZSAobXVzdCBiZSAxNiBieXRlcykiKX10aGlzLl9jb3VudGVyPWJ5dGVzfTtDb3VudGVyLnByb3RvdHlwZS5pbmNyZW1lbnQ9ZnVuY3Rpb24oKXtmb3IodmFyIGk9MTU7aT49MDtpLS0pe2lmKHRoaXMuX2NvdW50ZXJbaV09PT0yNTUpe3RoaXMuX2NvdW50ZXJbaV09MH1lbHNle3RoaXMuX2NvdW50ZXJbaV0rKzticmVha319fTt2YXIgTW9kZU9mT3BlcmF0aW9uQ1RSPWZ1bmN0aW9uKGtleSxjb3VudGVyKXtpZighKHRoaXMgaW5zdGFuY2VvZiBNb2RlT2ZPcGVyYXRpb25DVFIpKXt0aHJvdyBFcnJvcigiQUVTIG11c3QgYmUgaW5zdGFuaXRhdGVkIHdpdGggYG5ld2AiKX10aGlzLmRlc2NyaXB0aW9uPSJDb3VudGVyIjt0aGlzLm5hbWU9ImN0ciI7aWYoIShjb3VudGVyIGluc3RhbmNlb2YgQ291bnRlcikpe2NvdW50ZXI9bmV3IENvdW50ZXIoY291bnRlcil9dGhpcy5fY291bnRlcj1jb3VudGVyO3RoaXMuX3JlbWFpbmluZ0NvdW50ZXI9bnVsbDt0aGlzLl9yZW1haW5pbmdDb3VudGVySW5kZXg9MTY7dGhpcy5fYWVzPW5ldyBBRVMoa2V5KX07TW9kZU9mT3BlcmF0aW9uQ1RSLnByb3RvdHlwZS5lbmNyeXB0PWZ1bmN0aW9uKHBsYWludGV4dCl7dmFyIGVuY3J5cHRlZD1jb2VyY2VBcnJheShwbGFpbnRleHQsdHJ1ZSk7Zm9yKHZhciBpPTA7aTxlbmNyeXB0ZWQubGVuZ3RoO2krKyl7aWYodGhpcy5fcmVtYWluaW5nQ291bnRlckluZGV4PT09MTYpe3RoaXMuX3JlbWFpbmluZ0NvdW50ZXI9dGhpcy5fYWVzLmVuY3J5cHQodGhpcy5fY291bnRlci5fY291bnRlcik7dGhpcy5fcmVtYWluaW5nQ291bnRlckluZGV4PTA7dGhpcy5fY291bnRlci5pbmNyZW1lbnQoKX1lbmNyeXB0ZWRbaV1ePXRoaXMuX3JlbWFpbmluZ0NvdW50ZXJbdGhpcy5fcmVtYWluaW5nQ291bnRlckluZGV4KytdfXJldHVybiBlbmNyeXB0ZWR9O01vZGVPZk9wZXJhdGlvbkNUUi5wcm90b3R5cGUuZGVjcnlwdD1Nb2RlT2ZPcGVyYXRpb25DVFIucHJvdG90eXBlLmVuY3J5cHQ7ZnVuY3Rpb24gcGtjczdwYWQoZGF0YSl7ZGF0YT1jb2VyY2VBcnJheShkYXRhLHRydWUpO3ZhciBwYWRkZXI9MTYtZGF0YS5sZW5ndGglMTY7dmFyIHJlc3VsdD1jcmVhdGVBcnJheShkYXRhLmxlbmd0aCtwYWRkZXIpO2NvcHlBcnJheShkYXRhLHJlc3VsdCk7Zm9yKHZhciBpPWRhdGEubGVuZ3RoO2k8cmVzdWx0Lmxlbmd0aDtpKyspe3Jlc3VsdFtpXT1wYWRkZXJ9cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBwa2NzN3N0cmlwKGRhdGEpe2RhdGE9Y29lcmNlQXJyYXkoZGF0YSx0cnVlKTtpZihkYXRhLmxlbmd0aDwxNil7dGhyb3cgbmV3IEVycm9yKCJQS0NTIzcgaW52YWxpZCBsZW5ndGgiKX12YXIgcGFkZGVyPWRhdGFbZGF0YS5sZW5ndGgtMV07aWYocGFkZGVyPjE2KXt0aHJvdyBuZXcgRXJyb3IoIlBLQ1MjNyBwYWRkaW5nIGJ5dGUgb3V0IG9mIHJhbmdlIil9dmFyIGxlbmd0aD1kYXRhLmxlbmd0aC1wYWRkZXI7Zm9yKHZhciBpPTA7aTxwYWRkZXI7aSsrKXtpZihkYXRhW2xlbmd0aCtpXSE9PXBhZGRlcil7dGhyb3cgbmV3IEVycm9yKCJQS0NTIzcgaW52YWxpZCBwYWRkaW5nIGJ5dGUiKX19dmFyIHJlc3VsdD1jcmVhdGVBcnJheShsZW5ndGgpO2NvcHlBcnJheShkYXRhLHJlc3VsdCwwLDAsbGVuZ3RoKTtyZXR1cm4gcmVzdWx0fXZhciBhZXNqcz17QUVTOkFFUyxDb3VudGVyOkNvdW50ZXIsTW9kZU9mT3BlcmF0aW9uOntlY2I6TW9kZU9mT3BlcmF0aW9uRUNCLGNiYzpNb2RlT2ZPcGVyYXRpb25DQkMsY2ZiOk1vZGVPZk9wZXJhdGlvbkNGQixvZmI6TW9kZU9mT3BlcmF0aW9uT0ZCLGN0cjpNb2RlT2ZPcGVyYXRpb25DVFJ9LHV0aWxzOntoZXg6Y29udmVydEhleCx1dGY4OmNvbnZlcnRVdGY4fSxwYWRkaW5nOntwa2NzNzp7cGFkOnBrY3M3cGFkLHN0cmlwOnBrY3M3c3RyaXB9fSxfYXJyYXlUZXN0Ontjb2VyY2VBcnJheTpjb2VyY2VBcnJheSxjcmVhdGVBcnJheTpjcmVhdGVBcnJheSxjb3B5QXJyYXk6Y29weUFycmF5fX07aWYoIm9iamVjdCIhPT0idW5kZWZpbmVkIil7bW9kdWxlLmV4cG9ydHM9YWVzanN9ZWxzZSBpZih0eXBlb2YgdW5kZWZpbmVkPT09ImZ1bmN0aW9uIiYmdW5kZWZpbmVkLmFtZCl7dW5kZWZpbmVkKGFlc2pzKX1lbHNle2lmKHJvb3QuYWVzanMpe2Flc2pzLl9hZXNqcz1yb290LmFlc2pzfXJvb3QuYWVzanM9YWVzanN9fSkoY29tbW9uanNHbG9iYWwpfSk7dmFyIF92ZXJzaW9uJEE9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0ianNvbi13YWxsZXRzLzUuNy4wIn0pO3ZhciBfdmVyc2lvbiRCPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJEEpO3ZhciB1dGlscyQxPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy51dWlkVjQ9ZXhwb3J0cy5zZWFyY2hQYXRoPWV4cG9ydHMuZ2V0UGFzc3dvcmQ9ZXhwb3J0cy56cGFkPWV4cG9ydHMubG9vc2VBcnJheWlmeT12b2lkIDA7ZnVuY3Rpb24gbG9vc2VBcnJheWlmeShoZXhTdHJpbmcpe2lmKHR5cGVvZiBoZXhTdHJpbmc9PT0ic3RyaW5nIiYmaGV4U3RyaW5nLnN1YnN0cmluZygwLDIpIT09IjB4Iil7aGV4U3RyaW5nPSIweCIraGV4U3RyaW5nfXJldHVybigwLGxpYiQxLmFycmF5aWZ5KShoZXhTdHJpbmcpfWV4cG9ydHMubG9vc2VBcnJheWlmeT1sb29zZUFycmF5aWZ5O2Z1bmN0aW9uIHpwYWQodmFsdWUsbGVuZ3RoKXt2YWx1ZT1TdHJpbmcodmFsdWUpO3doaWxlKHZhbHVlLmxlbmd0aDxsZW5ndGgpe3ZhbHVlPSIwIit2YWx1ZX1yZXR1cm4gdmFsdWV9ZXhwb3J0cy56cGFkPXpwYWQ7ZnVuY3Rpb24gZ2V0UGFzc3dvcmQocGFzc3dvcmQpe2lmKHR5cGVvZiBwYXNzd29yZD09PSJzdHJpbmciKXtyZXR1cm4oMCxsaWIkOC50b1V0ZjhCeXRlcykocGFzc3dvcmQsbGliJDguVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtLk5GS0MpfXJldHVybigwLGxpYiQxLmFycmF5aWZ5KShwYXNzd29yZCl9ZXhwb3J0cy5nZXRQYXNzd29yZD1nZXRQYXNzd29yZDtmdW5jdGlvbiBzZWFyY2hQYXRoKG9iamVjdCxwYXRoKXt2YXIgY3VycmVudENoaWxkPW9iamVjdDt2YXIgY29tcHM9cGF0aC50b0xvd2VyQ2FzZSgpLnNwbGl0KCIvIik7Zm9yKHZhciBpPTA7aTxjb21wcy5sZW5ndGg7aSsrKXt2YXIgbWF0Y2hpbmdDaGlsZD1udWxsO2Zvcih2YXIga2V5IGluIGN1cnJlbnRDaGlsZCl7aWYoa2V5LnRvTG93ZXJDYXNlKCk9PT1jb21wc1tpXSl7bWF0Y2hpbmdDaGlsZD1jdXJyZW50Q2hpbGRba2V5XTticmVha319aWYobWF0Y2hpbmdDaGlsZD09PW51bGwpe3JldHVybiBudWxsfWN1cnJlbnRDaGlsZD1tYXRjaGluZ0NoaWxkfXJldHVybiBjdXJyZW50Q2hpbGR9ZXhwb3J0cy5zZWFyY2hQYXRoPXNlYXJjaFBhdGg7ZnVuY3Rpb24gdXVpZFY0KHJhbmRvbUJ5dGVzKXt2YXIgYnl0ZXM9KDAsbGliJDEuYXJyYXlpZnkpKHJhbmRvbUJ5dGVzKTtieXRlc1s2XT1ieXRlc1s2XSYxNXw2NDtieXRlc1s4XT1ieXRlc1s4XSY2M3wxMjg7dmFyIHZhbHVlPSgwLGxpYiQxLmhleGxpZnkpKGJ5dGVzKTtyZXR1cm5bdmFsdWUuc3Vic3RyaW5nKDIsMTApLHZhbHVlLnN1YnN0cmluZygxMCwxNCksdmFsdWUuc3Vic3RyaW5nKDE0LDE4KSx2YWx1ZS5zdWJzdHJpbmcoMTgsMjIpLHZhbHVlLnN1YnN0cmluZygyMiwzNCldLmpvaW4oIi0iKX1leHBvcnRzLnV1aWRWND11dWlkVjR9KTt2YXIgdXRpbHMkMj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyh1dGlscyQxKTt2YXIgY3Jvd2RzYWxlPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO3ZhciBfX2ltcG9ydERlZmF1bHQ9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24obW9kKXtyZXR1cm4gbW9kJiZtb2QuX19lc01vZHVsZT9tb2Q6e2RlZmF1bHQ6bW9kfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5kZWNyeXB0PWV4cG9ydHMuQ3Jvd2RzYWxlQWNjb3VudD12b2lkIDA7dmFyIGFlc19qc18xPV9faW1wb3J0RGVmYXVsdChhZXNKcyk7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRBLnZlcnNpb24pO3ZhciBDcm93ZHNhbGVBY2NvdW50PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKENyb3dkc2FsZUFjY291bnQsX3N1cGVyKTtmdW5jdGlvbiBDcm93ZHNhbGVBY2NvdW50KCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9Q3Jvd2RzYWxlQWNjb3VudC5wcm90b3R5cGUuaXNDcm93ZHNhbGVBY2NvdW50PWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4hISh2YWx1ZSYmdmFsdWUuX2lzQ3Jvd2RzYWxlQWNjb3VudCl9O3JldHVybiBDcm93ZHNhbGVBY2NvdW50fShsaWIkMy5EZXNjcmlwdGlvbik7ZXhwb3J0cy5Dcm93ZHNhbGVBY2NvdW50PUNyb3dkc2FsZUFjY291bnQ7ZnVuY3Rpb24gZGVjcnlwdChqc29uLHBhc3N3b3JkKXt2YXIgZGF0YT1KU09OLnBhcnNlKGpzb24pO3Bhc3N3b3JkPSgwLHV0aWxzJDEuZ2V0UGFzc3dvcmQpKHBhc3N3b3JkKTt2YXIgZXRoYWRkcj0oMCxsaWIkNi5nZXRBZGRyZXNzKSgoMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsImV0aGFkZHIiKSk7dmFyIGVuY3NlZWQ9KDAsdXRpbHMkMS5sb29zZUFycmF5aWZ5KSgoMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsImVuY3NlZWQiKSk7aWYoIWVuY3NlZWR8fGVuY3NlZWQubGVuZ3RoJTE2IT09MCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBlbmNzZWVkIiwianNvbiIsanNvbil9dmFyIGtleT0oMCxsaWIkMS5hcnJheWlmeSkoKDAsbGliJGwucGJrZGYyKShwYXNzd29yZCxwYXNzd29yZCwyZTMsMzIsInNoYTI1NiIpKS5zbGljZSgwLDE2KTt2YXIgaXY9ZW5jc2VlZC5zbGljZSgwLDE2KTt2YXIgZW5jcnlwdGVkU2VlZD1lbmNzZWVkLnNsaWNlKDE2KTt2YXIgYWVzQ2JjPW5ldyBhZXNfanNfMS5kZWZhdWx0Lk1vZGVPZk9wZXJhdGlvbi5jYmMoa2V5LGl2KTt2YXIgc2VlZD1hZXNfanNfMS5kZWZhdWx0LnBhZGRpbmcucGtjczcuc3RyaXAoKDAsbGliJDEuYXJyYXlpZnkpKGFlc0NiYy5kZWNyeXB0KGVuY3J5cHRlZFNlZWQpKSk7dmFyIHNlZWRIZXg9IiI7Zm9yKHZhciBpPTA7aTxzZWVkLmxlbmd0aDtpKyspe3NlZWRIZXgrPVN0cmluZy5mcm9tQ2hhckNvZGUoc2VlZFtpXSl9dmFyIHNlZWRIZXhCeXRlcz0oMCxsaWIkOC50b1V0ZjhCeXRlcykoc2VlZEhleCk7dmFyIHByaXZhdGVLZXk9KDAsbGliJDQua2VjY2FrMjU2KShzZWVkSGV4Qnl0ZXMpO3JldHVybiBuZXcgQ3Jvd2RzYWxlQWNjb3VudCh7X2lzQ3Jvd2RzYWxlQWNjb3VudDp0cnVlLGFkZHJlc3M6ZXRoYWRkcixwcml2YXRlS2V5OnByaXZhdGVLZXl9KX1leHBvcnRzLmRlY3J5cHQ9ZGVjcnlwdH0pO3ZhciBjcm93ZHNhbGUkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhjcm93ZHNhbGUpO3ZhciBpbnNwZWN0PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5nZXRKc29uV2FsbGV0QWRkcmVzcz1leHBvcnRzLmlzS2V5c3RvcmVXYWxsZXQ9ZXhwb3J0cy5pc0Nyb3dkc2FsZVdhbGxldD12b2lkIDA7ZnVuY3Rpb24gaXNDcm93ZHNhbGVXYWxsZXQoanNvbil7dmFyIGRhdGE9bnVsbDt0cnl7ZGF0YT1KU09OLnBhcnNlKGpzb24pfWNhdGNoKGVycm9yKXtyZXR1cm4gZmFsc2V9cmV0dXJuIGRhdGEuZW5jc2VlZCYmZGF0YS5ldGhhZGRyfWV4cG9ydHMuaXNDcm93ZHNhbGVXYWxsZXQ9aXNDcm93ZHNhbGVXYWxsZXQ7ZnVuY3Rpb24gaXNLZXlzdG9yZVdhbGxldChqc29uKXt2YXIgZGF0YT1udWxsO3RyeXtkYXRhPUpTT04ucGFyc2UoanNvbil9Y2F0Y2goZXJyb3Ipe3JldHVybiBmYWxzZX1pZighZGF0YS52ZXJzaW9ufHxwYXJzZUludChkYXRhLnZlcnNpb24pIT09ZGF0YS52ZXJzaW9ufHxwYXJzZUludChkYXRhLnZlcnNpb24pIT09Myl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfWV4cG9ydHMuaXNLZXlzdG9yZVdhbGxldD1pc0tleXN0b3JlV2FsbGV0O2Z1bmN0aW9uIGdldEpzb25XYWxsZXRBZGRyZXNzKGpzb24pe2lmKGlzQ3Jvd2RzYWxlV2FsbGV0KGpzb24pKXt0cnl7cmV0dXJuKDAsbGliJDYuZ2V0QWRkcmVzcykoSlNPTi5wYXJzZShqc29uKS5ldGhhZGRyKX1jYXRjaChlcnJvcil7cmV0dXJuIG51bGx9fWlmKGlzS2V5c3RvcmVXYWxsZXQoanNvbikpe3RyeXtyZXR1cm4oMCxsaWIkNi5nZXRBZGRyZXNzKShKU09OLnBhcnNlKGpzb24pLmFkZHJlc3MpfWNhdGNoKGVycm9yKXtyZXR1cm4gbnVsbH19cmV0dXJuIG51bGx9ZXhwb3J0cy5nZXRKc29uV2FsbGV0QWRkcmVzcz1nZXRKc29uV2FsbGV0QWRkcmVzc30pO3ZhciBpbnNwZWN0JDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoaW5zcGVjdCk7dmFyIHNjcnlwdD1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihyb290KXtjb25zdCBNQVhfVkFMVUU9MjE0NzQ4MzY0NztmdW5jdGlvbiBTSEEyNTYobSl7Y29uc3QgSz1uZXcgVWludDMyQXJyYXkoWzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0pO2xldCBoMD0xNzc5MDMzNzAzLGgxPTMxNDQxMzQyNzcsaDI9MTAxMzkwNDI0MixoMz0yNzczNDgwNzYyO2xldCBoND0xMzU5ODkzMTE5LGg1PTI2MDA4MjI5MjQsaDY9NTI4NzM0NjM1LGg3PTE1NDE0NTkyMjU7Y29uc3Qgdz1uZXcgVWludDMyQXJyYXkoNjQpO2Z1bmN0aW9uIGJsb2NrcyhwKXtsZXQgb2ZmPTAsbGVuPXAubGVuZ3RoO3doaWxlKGxlbj49NjQpe2xldCBhPWgwLGI9aDEsYz1oMixkPWgzLGU9aDQsZj1oNSxnPWg2LGg9aDcsdSxpLGosdDEsdDI7Zm9yKGk9MDtpPDE2O2krKyl7aj1vZmYraSo0O3dbaV09KHBbal0mMjU1KTw8MjR8KHBbaisxXSYyNTUpPDwxNnwocFtqKzJdJjI1NSk8PDh8cFtqKzNdJjI1NX1mb3IoaT0xNjtpPDY0O2krKyl7dT13W2ktMl07dDE9KHU+Pj4xN3x1PDwzMi0xNyleKHU+Pj4xOXx1PDwzMi0xOSledT4+PjEwO3U9d1tpLTE1XTt0Mj0odT4+Pjd8dTw8MzItNyleKHU+Pj4xOHx1PDwzMi0xOCledT4+PjM7d1tpXT0odDErd1tpLTddfDApKyh0Mit3W2ktMTZdfDApfDB9Zm9yKGk9MDtpPDY0O2krKyl7dDE9KCgoZT4+PjZ8ZTw8MzItNileKGU+Pj4xMXxlPDwzMi0xMSleKGU+Pj4yNXxlPDwzMi0yNSkpKyhlJmZefmUmZyl8MCkrKGgrKEtbaV0rd1tpXXwwKXwwKXwwO3QyPSgoYT4+PjJ8YTw8MzItMileKGE+Pj4xM3xhPDwzMi0xMyleKGE+Pj4yMnxhPDwzMi0yMikpKyhhJmJeYSZjXmImYyl8MDtoPWc7Zz1mO2Y9ZTtlPWQrdDF8MDtkPWM7Yz1iO2I9YTthPXQxK3QyfDB9aDA9aDArYXwwO2gxPWgxK2J8MDtoMj1oMitjfDA7aDM9aDMrZHwwO2g0PWg0K2V8MDtoNT1oNStmfDA7aDY9aDYrZ3wwO2g3PWg3K2h8MDtvZmYrPTY0O2xlbi09NjR9fWJsb2NrcyhtKTtsZXQgaSxieXRlc0xlZnQ9bS5sZW5ndGglNjQsYml0TGVuSGk9bS5sZW5ndGgvNTM2ODcwOTEyfDAsYml0TGVuTG89bS5sZW5ndGg8PDMsbnVtWmVyb3M9Ynl0ZXNMZWZ0PDU2PzU2OjEyMCxwPW0uc2xpY2UobS5sZW5ndGgtYnl0ZXNMZWZ0LG0ubGVuZ3RoKTtwLnB1c2goMTI4KTtmb3IoaT1ieXRlc0xlZnQrMTtpPG51bVplcm9zO2krKyl7cC5wdXNoKDApfXAucHVzaChiaXRMZW5IaT4+PjI0JjI1NSk7cC5wdXNoKGJpdExlbkhpPj4+MTYmMjU1KTtwLnB1c2goYml0TGVuSGk+Pj44JjI1NSk7cC5wdXNoKGJpdExlbkhpPj4+MCYyNTUpO3AucHVzaChiaXRMZW5Mbz4+PjI0JjI1NSk7cC5wdXNoKGJpdExlbkxvPj4+MTYmMjU1KTtwLnB1c2goYml0TGVuTG8+Pj44JjI1NSk7cC5wdXNoKGJpdExlbkxvPj4+MCYyNTUpO2Jsb2NrcyhwKTtyZXR1cm5baDA+Pj4yNCYyNTUsaDA+Pj4xNiYyNTUsaDA+Pj44JjI1NSxoMD4+PjAmMjU1LGgxPj4+MjQmMjU1LGgxPj4+MTYmMjU1LGgxPj4+OCYyNTUsaDE+Pj4wJjI1NSxoMj4+PjI0JjI1NSxoMj4+PjE2JjI1NSxoMj4+PjgmMjU1LGgyPj4+MCYyNTUsaDM+Pj4yNCYyNTUsaDM+Pj4xNiYyNTUsaDM+Pj44JjI1NSxoMz4+PjAmMjU1LGg0Pj4+MjQmMjU1LGg0Pj4+MTYmMjU1LGg0Pj4+OCYyNTUsaDQ+Pj4wJjI1NSxoNT4+PjI0JjI1NSxoNT4+PjE2JjI1NSxoNT4+PjgmMjU1LGg1Pj4+MCYyNTUsaDY+Pj4yNCYyNTUsaDY+Pj4xNiYyNTUsaDY+Pj44JjI1NSxoNj4+PjAmMjU1LGg3Pj4+MjQmMjU1LGg3Pj4+MTYmMjU1LGg3Pj4+OCYyNTUsaDc+Pj4wJjI1NV19ZnVuY3Rpb24gUEJLREYyX0hNQUNfU0hBMjU2X09uZUl0ZXIocGFzc3dvcmQsc2FsdCxka0xlbil7cGFzc3dvcmQ9cGFzc3dvcmQubGVuZ3RoPD02ND9wYXNzd29yZDpTSEEyNTYocGFzc3dvcmQpO2NvbnN0IGlubmVyTGVuPTY0K3NhbHQubGVuZ3RoKzQ7Y29uc3QgaW5uZXI9bmV3IEFycmF5KGlubmVyTGVuKTtjb25zdCBvdXRlcktleT1uZXcgQXJyYXkoNjQpO2xldCBpO2xldCBkaz1bXTtmb3IoaT0wO2k8NjQ7aSsrKXtpbm5lcltpXT01NH1mb3IoaT0wO2k8cGFzc3dvcmQubGVuZ3RoO2krKyl7aW5uZXJbaV1ePXBhc3N3b3JkW2ldfWZvcihpPTA7aTxzYWx0Lmxlbmd0aDtpKyspe2lubmVyWzY0K2ldPXNhbHRbaV19Zm9yKGk9aW5uZXJMZW4tNDtpPGlubmVyTGVuO2krKyl7aW5uZXJbaV09MH1mb3IoaT0wO2k8NjQ7aSsrKW91dGVyS2V5W2ldPTkyO2ZvcihpPTA7aTxwYXNzd29yZC5sZW5ndGg7aSsrKW91dGVyS2V5W2ldXj1wYXNzd29yZFtpXTtmdW5jdGlvbiBpbmNyZW1lbnRDb3VudGVyKCl7Zm9yKGxldCBpPWlubmVyTGVuLTE7aT49aW5uZXJMZW4tNDtpLS0pe2lubmVyW2ldKys7aWYoaW5uZXJbaV08PTI1NSlyZXR1cm47aW5uZXJbaV09MH19d2hpbGUoZGtMZW4+PTMyKXtpbmNyZW1lbnRDb3VudGVyKCk7ZGs9ZGsuY29uY2F0KFNIQTI1NihvdXRlcktleS5jb25jYXQoU0hBMjU2KGlubmVyKSkpKTtka0xlbi09MzJ9aWYoZGtMZW4+MCl7aW5jcmVtZW50Q291bnRlcigpO2RrPWRrLmNvbmNhdChTSEEyNTYob3V0ZXJLZXkuY29uY2F0KFNIQTI1Nihpbm5lcikpKS5zbGljZSgwLGRrTGVuKSl9cmV0dXJuIGRrfWZ1bmN0aW9uIGJsb2NrbWl4X3NhbHNhOChCWSxZaSxyLHgsX1gpe2xldCBpO2FycmF5Y29weShCWSwoMipyLTEpKjE2LF9YLDAsMTYpO2ZvcihpPTA7aTwyKnI7aSsrKXtibG9ja3hvcihCWSxpKjE2LF9YLDE2KTtzYWxzYTIwXzgoX1gseCk7YXJyYXljb3B5KF9YLDAsQlksWWkraSoxNiwxNil9Zm9yKGk9MDtpPHI7aSsrKXthcnJheWNvcHkoQlksWWkraSoyKjE2LEJZLGkqMTYsMTYpfWZvcihpPTA7aTxyO2krKyl7YXJyYXljb3B5KEJZLFlpKyhpKjIrMSkqMTYsQlksKGkrcikqMTYsMTYpfX1mdW5jdGlvbiBSKGEsYil7cmV0dXJuIGE8PGJ8YT4+PjMyLWJ9ZnVuY3Rpb24gc2Fsc2EyMF84KEIseCl7YXJyYXljb3B5KEIsMCx4LDAsMTYpO2ZvcihsZXQgaT04O2k+MDtpLT0yKXt4WzRdXj1SKHhbMF0reFsxMl0sNyk7eFs4XV49Uih4WzRdK3hbMF0sOSk7eFsxMl1ePVIoeFs4XSt4WzRdLDEzKTt4WzBdXj1SKHhbMTJdK3hbOF0sMTgpO3hbOV1ePVIoeFs1XSt4WzFdLDcpO3hbMTNdXj1SKHhbOV0reFs1XSw5KTt4WzFdXj1SKHhbMTNdK3hbOV0sMTMpO3hbNV1ePVIoeFsxXSt4WzEzXSwxOCk7eFsxNF1ePVIoeFsxMF0reFs2XSw3KTt4WzJdXj1SKHhbMTRdK3hbMTBdLDkpO3hbNl1ePVIoeFsyXSt4WzE0XSwxMyk7eFsxMF1ePVIoeFs2XSt4WzJdLDE4KTt4WzNdXj1SKHhbMTVdK3hbMTFdLDcpO3hbN11ePVIoeFszXSt4WzE1XSw5KTt4WzExXV49Uih4WzddK3hbM10sMTMpO3hbMTVdXj1SKHhbMTFdK3hbN10sMTgpO3hbMV1ePVIoeFswXSt4WzNdLDcpO3hbMl1ePVIoeFsxXSt4WzBdLDkpO3hbM11ePVIoeFsyXSt4WzFdLDEzKTt4WzBdXj1SKHhbM10reFsyXSwxOCk7eFs2XV49Uih4WzVdK3hbNF0sNyk7eFs3XV49Uih4WzZdK3hbNV0sOSk7eFs0XV49Uih4WzddK3hbNl0sMTMpO3hbNV1ePVIoeFs0XSt4WzddLDE4KTt4WzExXV49Uih4WzEwXSt4WzldLDcpO3hbOF1ePVIoeFsxMV0reFsxMF0sOSk7eFs5XV49Uih4WzhdK3hbMTFdLDEzKTt4WzEwXV49Uih4WzldK3hbOF0sMTgpO3hbMTJdXj1SKHhbMTVdK3hbMTRdLDcpO3hbMTNdXj1SKHhbMTJdK3hbMTVdLDkpO3hbMTRdXj1SKHhbMTNdK3hbMTJdLDEzKTt4WzE1XV49Uih4WzE0XSt4WzEzXSwxOCl9Zm9yKGxldCBpPTA7aTwxNjsrK2kpe0JbaV0rPXhbaV19fWZ1bmN0aW9uIGJsb2NreG9yKFMsU2ksRCxsZW4pe2ZvcihsZXQgaT0wO2k8bGVuO2krKyl7RFtpXV49U1tTaStpXX19ZnVuY3Rpb24gYXJyYXljb3B5KHNyYyxzcmNQb3MsZGVzdCxkZXN0UG9zLGxlbmd0aCl7d2hpbGUobGVuZ3RoLS0pe2Rlc3RbZGVzdFBvcysrXT1zcmNbc3JjUG9zKytdfX1mdW5jdGlvbiBjaGVja0J1ZmZlcmlzaChvKXtpZighb3x8dHlwZW9mIG8ubGVuZ3RoIT09Im51bWJlciIpe3JldHVybiBmYWxzZX1mb3IobGV0IGk9MDtpPG8ubGVuZ3RoO2krKyl7Y29uc3Qgdj1vW2ldO2lmKHR5cGVvZiB2IT09Im51bWJlciJ8fHYlMXx8djwwfHx2Pj0yNTYpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9ZnVuY3Rpb24gZW5zdXJlSW50ZWdlcih2YWx1ZSxuYW1lKXtpZih0eXBlb2YgdmFsdWUhPT0ibnVtYmVyInx8dmFsdWUlMSl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkICIrbmFtZSl9cmV0dXJuIHZhbHVlfWZ1bmN0aW9uIF9zY3J5cHQocGFzc3dvcmQsc2FsdCxOLHIscCxka0xlbixjYWxsYmFjayl7Tj1lbnN1cmVJbnRlZ2VyKE4sIk4iKTtyPWVuc3VyZUludGVnZXIociwiciIpO3A9ZW5zdXJlSW50ZWdlcihwLCJwIik7ZGtMZW49ZW5zdXJlSW50ZWdlcihka0xlbiwiZGtMZW4iKTtpZihOPT09MHx8KE4mTi0xKSE9PTApe3Rocm93IG5ldyBFcnJvcigiTiBtdXN0IGJlIHBvd2VyIG9mIDIiKX1pZihOPk1BWF9WQUxVRS8xMjgvcil7dGhyb3cgbmV3IEVycm9yKCJOIHRvbyBsYXJnZSIpfWlmKHI+TUFYX1ZBTFVFLzEyOC9wKXt0aHJvdyBuZXcgRXJyb3IoInIgdG9vIGxhcmdlIil9aWYoIWNoZWNrQnVmZmVyaXNoKHBhc3N3b3JkKSl7dGhyb3cgbmV3IEVycm9yKCJwYXNzd29yZCBtdXN0IGJlIGFuIGFycmF5IG9yIGJ1ZmZlciIpfXBhc3N3b3JkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHBhc3N3b3JkKTtpZighY2hlY2tCdWZmZXJpc2goc2FsdCkpe3Rocm93IG5ldyBFcnJvcigic2FsdCBtdXN0IGJlIGFuIGFycmF5IG9yIGJ1ZmZlciIpfXNhbHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoc2FsdCk7bGV0IGI9UEJLREYyX0hNQUNfU0hBMjU2X09uZUl0ZXIocGFzc3dvcmQsc2FsdCxwKjEyOCpyKTtjb25zdCBCPW5ldyBVaW50MzJBcnJheShwKjMyKnIpO2ZvcihsZXQgaT0wO2k8Qi5sZW5ndGg7aSsrKXtjb25zdCBqPWkqNDtCW2ldPShiW2orM10mMjU1KTw8MjR8KGJbaisyXSYyNTUpPDwxNnwoYltqKzFdJjI1NSk8PDh8KGJbaiswXSYyNTUpPDwwfWNvbnN0IFhZPW5ldyBVaW50MzJBcnJheSg2NCpyKTtjb25zdCBWPW5ldyBVaW50MzJBcnJheSgzMipyKk4pO2NvbnN0IFlpPTMyKnI7Y29uc3QgeD1uZXcgVWludDMyQXJyYXkoMTYpO2NvbnN0IF9YPW5ldyBVaW50MzJBcnJheSgxNik7Y29uc3QgdG90YWxPcHM9cCpOKjI7bGV0IGN1cnJlbnRPcD0wO2xldCBsYXN0UGVyY2VudDEwPW51bGw7bGV0IHN0b3A9ZmFsc2U7bGV0IHN0YXRlPTA7bGV0IGkwPTAsaTE7bGV0IEJpO2NvbnN0IGxpbWl0PWNhbGxiYWNrP3BhcnNlSW50KDFlMy9yKTo0Mjk0OTY3Mjk1O2NvbnN0IG5leHRUaWNrPXR5cGVvZiBzZXRJbW1lZGlhdGUhPT0idW5kZWZpbmVkIj9zZXRJbW1lZGlhdGU6c2V0VGltZW91dDtjb25zdCBpbmNyZW1lbnRhbFNNaXg9ZnVuY3Rpb24oKXtpZihzdG9wKXtyZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCJjYW5jZWxsZWQiKSxjdXJyZW50T3AvdG90YWxPcHMpfWxldCBzdGVwcztzd2l0Y2goc3RhdGUpe2Nhc2UgMDpCaT1pMCozMipyO2FycmF5Y29weShCLEJpLFhZLDAsWWkpO3N0YXRlPTE7aTE9MDtjYXNlIDE6c3RlcHM9Ti1pMTtpZihzdGVwcz5saW1pdCl7c3RlcHM9bGltaXR9Zm9yKGxldCBpPTA7aTxzdGVwcztpKyspe2FycmF5Y29weShYWSwwLFYsKGkxK2kpKllpLFlpKTtibG9ja21peF9zYWxzYTgoWFksWWkscix4LF9YKX1pMSs9c3RlcHM7Y3VycmVudE9wKz1zdGVwcztpZihjYWxsYmFjayl7Y29uc3QgcGVyY2VudDEwPXBhcnNlSW50KDFlMypjdXJyZW50T3AvdG90YWxPcHMpO2lmKHBlcmNlbnQxMCE9PWxhc3RQZXJjZW50MTApe3N0b3A9Y2FsbGJhY2sobnVsbCxjdXJyZW50T3AvdG90YWxPcHMpO2lmKHN0b3Ape2JyZWFrfWxhc3RQZXJjZW50MTA9cGVyY2VudDEwfX1pZihpMTxOKXticmVha31pMT0wO3N0YXRlPTI7Y2FzZSAyOnN0ZXBzPU4taTE7aWYoc3RlcHM+bGltaXQpe3N0ZXBzPWxpbWl0fWZvcihsZXQgaT0wO2k8c3RlcHM7aSsrKXtjb25zdCBvZmZzZXQ9KDIqci0xKSoxNjtjb25zdCBqPVhZW29mZnNldF0mTi0xO2Jsb2NreG9yKFYsaipZaSxYWSxZaSk7YmxvY2ttaXhfc2Fsc2E4KFhZLFlpLHIseCxfWCl9aTErPXN0ZXBzO2N1cnJlbnRPcCs9c3RlcHM7aWYoY2FsbGJhY2spe2NvbnN0IHBlcmNlbnQxMD1wYXJzZUludCgxZTMqY3VycmVudE9wL3RvdGFsT3BzKTtpZihwZXJjZW50MTAhPT1sYXN0UGVyY2VudDEwKXtzdG9wPWNhbGxiYWNrKG51bGwsY3VycmVudE9wL3RvdGFsT3BzKTtpZihzdG9wKXticmVha31sYXN0UGVyY2VudDEwPXBlcmNlbnQxMH19aWYoaTE8Til7YnJlYWt9YXJyYXljb3B5KFhZLDAsQixCaSxZaSk7aTArKztpZihpMDxwKXtzdGF0ZT0wO2JyZWFrfWI9W107Zm9yKGxldCBpPTA7aTxCLmxlbmd0aDtpKyspe2IucHVzaChCW2ldPj4wJjI1NSk7Yi5wdXNoKEJbaV0+PjgmMjU1KTtiLnB1c2goQltpXT4+MTYmMjU1KTtiLnB1c2goQltpXT4+MjQmMjU1KX1jb25zdCBkZXJpdmVkS2V5PVBCS0RGMl9ITUFDX1NIQTI1Nl9PbmVJdGVyKHBhc3N3b3JkLGIsZGtMZW4pO2lmKGNhbGxiYWNrKXtjYWxsYmFjayhudWxsLDEsZGVyaXZlZEtleSl9cmV0dXJuIGRlcml2ZWRLZXl9aWYoY2FsbGJhY2spe25leHRUaWNrKGluY3JlbWVudGFsU01peCl9fTtpZighY2FsbGJhY2spe3doaWxlKHRydWUpe2NvbnN0IGRlcml2ZWRLZXk9aW5jcmVtZW50YWxTTWl4KCk7aWYoZGVyaXZlZEtleSE9dW5kZWZpbmVkKXtyZXR1cm4gZGVyaXZlZEtleX19fWluY3JlbWVudGFsU01peCgpfWNvbnN0IGxpYj17c2NyeXB0OmZ1bmN0aW9uKHBhc3N3b3JkLHNhbHQsTixyLHAsZGtMZW4scHJvZ3Jlc3NDYWxsYmFjayl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtsZXQgbGFzdFByb2dyZXNzPTA7aWYocHJvZ3Jlc3NDYWxsYmFjayl7cHJvZ3Jlc3NDYWxsYmFjaygwKX1fc2NyeXB0KHBhc3N3b3JkLHNhbHQsTixyLHAsZGtMZW4sZnVuY3Rpb24oZXJyb3IscHJvZ3Jlc3Msa2V5KXtpZihlcnJvcil7cmVqZWN0KGVycm9yKX1lbHNlIGlmKGtleSl7aWYocHJvZ3Jlc3NDYWxsYmFjayYmbGFzdFByb2dyZXNzIT09MSl7cHJvZ3Jlc3NDYWxsYmFjaygxKX1yZXNvbHZlKG5ldyBVaW50OEFycmF5KGtleSkpfWVsc2UgaWYocHJvZ3Jlc3NDYWxsYmFjayYmcHJvZ3Jlc3MhPT1sYXN0UHJvZ3Jlc3Mpe2xhc3RQcm9ncmVzcz1wcm9ncmVzcztyZXR1cm4gcHJvZ3Jlc3NDYWxsYmFjayhwcm9ncmVzcyl9fSl9KX0sc3luY1NjcnlwdDpmdW5jdGlvbihwYXNzd29yZCxzYWx0LE4scixwLGRrTGVuKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoX3NjcnlwdChwYXNzd29yZCxzYWx0LE4scixwLGRrTGVuKSl9fTtpZigib2JqZWN0IiE9PSJ1bmRlZmluZWQiKXttb2R1bGUuZXhwb3J0cz1saWJ9ZWxzZSBpZih0eXBlb2YgdW5kZWZpbmVkPT09ImZ1bmN0aW9uIiYmdW5kZWZpbmVkLmFtZCl7dW5kZWZpbmVkKGxpYil9ZWxzZSBpZihyb290KXtpZihyb290LnNjcnlwdCl7cm9vdC5fc2NyeXB0PXJvb3Quc2NyeXB0fXJvb3Quc2NyeXB0PWxpYn19KShjb21tb25qc0dsb2JhbCl9KTt2YXIga2V5c3RvcmU9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7dmFyIF9fYXdhaXRlcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19hd2FpdGVyfHxmdW5jdGlvbih0aGlzQXJnLF9hcmd1bWVudHMsUCxnZW5lcmF0b3Ipe2Z1bmN0aW9uIGFkb3B0KHZhbHVlKXtyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQP3ZhbHVlOm5ldyBQKGZ1bmN0aW9uKHJlc29sdmUpe3Jlc29sdmUodmFsdWUpfSl9cmV0dXJuIG5ldyhQfHwoUD1Qcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2Z1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHN0ZXAocmVzdWx0KXtyZXN1bHQuZG9uZT9yZXNvbHZlKHJlc3VsdC52YWx1ZSk6YWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCl9c3RlcCgoZ2VuZXJhdG9yPWdlbmVyYXRvci5hcHBseSh0aGlzQXJnLF9hcmd1bWVudHN8fFtdKSkubmV4dCgpKX0pfTt2YXIgX19nZW5lcmF0b3I9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0aGlzQXJnLGJvZHkpe3ZhciBfPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZih0WzBdJjEpdGhyb3cgdFsxXTtyZXR1cm4gdFsxXX0sdHJ5czpbXSxvcHM6W119LGYseSx0LGc7cmV0dXJuIGc9e25leHQ6dmVyYigwKSx0aHJvdzp2ZXJiKDEpLHJldHVybjp2ZXJiKDIpfSx0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmKGdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZztmdW5jdGlvbiB2ZXJiKG4pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gc3RlcChbbix2XSl9fWZ1bmN0aW9uIHN0ZXAob3Ape2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO3doaWxlKF8pdHJ5e2lmKGY9MSx5JiYodD1vcFswXSYyP3lbInJldHVybiJdOm9wWzBdP3lbInRocm93Il18fCgodD15WyJyZXR1cm4iXSkmJnQuY2FsbCh5KSwwKTp5Lm5leHQpJiYhKHQ9dC5jYWxsKHksb3BbMV0pKS5kb25lKXJldHVybiB0O2lmKHk9MCx0KW9wPVtvcFswXSYyLHQudmFsdWVdO3N3aXRjaChvcFswXSl7Y2FzZSAwOmNhc2UgMTp0PW9wO2JyZWFrO2Nhc2UgNDpfLmxhYmVsKys7cmV0dXJue3ZhbHVlOm9wWzFdLGRvbmU6ZmFsc2V9O2Nhc2UgNTpfLmxhYmVsKys7eT1vcFsxXTtvcD1bMF07Y29udGludWU7Y2FzZSA3Om9wPV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEodD1fLnRyeXMsdD10Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdKSYmKG9wWzBdPT09Nnx8b3BbMF09PT0yKSl7Xz0wO2NvbnRpbnVlfWlmKG9wWzBdPT09MyYmKCF0fHxvcFsxXT50WzBdJiZvcFsxXTx0WzNdKSl7Xy5sYWJlbD1vcFsxXTticmVha31pZihvcFswXT09PTYmJl8ubGFiZWw8dFsxXSl7Xy5sYWJlbD10WzFdO3Q9b3A7YnJlYWt9aWYodCYmXy5sYWJlbDx0WzJdKXtfLmxhYmVsPXRbMl07Xy5vcHMucHVzaChvcCk7YnJlYWt9aWYodFsyXSlfLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWV9b3A9Ym9keS5jYWxsKHRoaXNBcmcsXyl9Y2F0Y2goZSl7b3A9WzYsZV07eT0wfWZpbmFsbHl7Zj10PTB9aWYob3BbMF0mNSl0aHJvdyBvcFsxXTtyZXR1cm57dmFsdWU6b3BbMF0/b3BbMV06dm9pZCAwLGRvbmU6dHJ1ZX19fTt2YXIgX19pbXBvcnREZWZhdWx0PWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKG1vZCl7cmV0dXJuIG1vZCYmbW9kLl9fZXNNb2R1bGU/bW9kOntkZWZhdWx0Om1vZH19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuZW5jcnlwdD1leHBvcnRzLmRlY3J5cHQ9ZXhwb3J0cy5kZWNyeXB0U3luYz1leHBvcnRzLktleXN0b3JlQWNjb3VudD12b2lkIDA7dmFyIGFlc19qc18xPV9faW1wb3J0RGVmYXVsdChhZXNKcyk7dmFyIHNjcnlwdF9qc18xPV9faW1wb3J0RGVmYXVsdChzY3J5cHQpO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kQS52ZXJzaW9uKTtmdW5jdGlvbiBoYXNNbmVtb25pYyh2YWx1ZSl7cmV0dXJuIHZhbHVlIT1udWxsJiZ2YWx1ZS5tbmVtb25pYyYmdmFsdWUubW5lbW9uaWMucGhyYXNlfXZhciBLZXlzdG9yZUFjY291bnQ9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoS2V5c3RvcmVBY2NvdW50LF9zdXBlcik7ZnVuY3Rpb24gS2V5c3RvcmVBY2NvdW50KCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9S2V5c3RvcmVBY2NvdW50LnByb3RvdHlwZS5pc0tleXN0b3JlQWNjb3VudD1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuISEodmFsdWUmJnZhbHVlLl9pc0tleXN0b3JlQWNjb3VudCl9O3JldHVybiBLZXlzdG9yZUFjY291bnR9KGxpYiQzLkRlc2NyaXB0aW9uKTtleHBvcnRzLktleXN0b3JlQWNjb3VudD1LZXlzdG9yZUFjY291bnQ7ZnVuY3Rpb24gX2RlY3J5cHQoZGF0YSxrZXksY2lwaGVydGV4dCl7dmFyIGNpcGhlcj0oMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsImNyeXB0by9jaXBoZXIiKTtpZihjaXBoZXI9PT0iYWVzLTEyOC1jdHIiKXt2YXIgaXY9KDAsdXRpbHMkMS5sb29zZUFycmF5aWZ5KSgoMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsImNyeXB0by9jaXBoZXJwYXJhbXMvaXYiKSk7dmFyIGNvdW50ZXI9bmV3IGFlc19qc18xLmRlZmF1bHQuQ291bnRlcihpdik7dmFyIGFlc0N0cj1uZXcgYWVzX2pzXzEuZGVmYXVsdC5Nb2RlT2ZPcGVyYXRpb24uY3RyKGtleSxjb3VudGVyKTtyZXR1cm4oMCxsaWIkMS5hcnJheWlmeSkoYWVzQ3RyLmRlY3J5cHQoY2lwaGVydGV4dCkpfXJldHVybiBudWxsfWZ1bmN0aW9uIF9nZXRBY2NvdW50KGRhdGEsa2V5KXt2YXIgY2lwaGVydGV4dD0oMCx1dGlscyQxLmxvb3NlQXJyYXlpZnkpKCgwLHV0aWxzJDEuc2VhcmNoUGF0aCkoZGF0YSwiY3J5cHRvL2NpcGhlcnRleHQiKSk7dmFyIGNvbXB1dGVkTUFDPSgwLGxpYiQxLmhleGxpZnkpKCgwLGxpYiQ0LmtlY2NhazI1NikoKDAsbGliJDEuY29uY2F0KShba2V5LnNsaWNlKDE2LDMyKSxjaXBoZXJ0ZXh0XSkpKS5zdWJzdHJpbmcoMik7aWYoY29tcHV0ZWRNQUMhPT0oMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsImNyeXB0by9tYWMiKS50b0xvd2VyQ2FzZSgpKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcGFzc3dvcmQiKX12YXIgcHJpdmF0ZUtleT1fZGVjcnlwdChkYXRhLGtleS5zbGljZSgwLDE2KSxjaXBoZXJ0ZXh0KTtpZighcHJpdmF0ZUtleSl7bG9nZ2VyLnRocm93RXJyb3IoInVuc3VwcG9ydGVkIGNpcGhlciIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246ImRlY3J5cHQifSl9dmFyIG1uZW1vbmljS2V5PWtleS5zbGljZSgzMiw2NCk7dmFyIGFkZHJlc3M9KDAsbGliJGguY29tcHV0ZUFkZHJlc3MpKHByaXZhdGVLZXkpO2lmKGRhdGEuYWRkcmVzcyl7dmFyIGNoZWNrPWRhdGEuYWRkcmVzcy50b0xvd2VyQ2FzZSgpO2lmKGNoZWNrLnN1YnN0cmluZygwLDIpIT09IjB4Iil7Y2hlY2s9IjB4IitjaGVja31pZigoMCxsaWIkNi5nZXRBZGRyZXNzKShjaGVjaykhPT1hZGRyZXNzKXt0aHJvdyBuZXcgRXJyb3IoImFkZHJlc3MgbWlzbWF0Y2giKX19dmFyIGFjY291bnQ9e19pc0tleXN0b3JlQWNjb3VudDp0cnVlLGFkZHJlc3M6YWRkcmVzcyxwcml2YXRlS2V5OigwLGxpYiQxLmhleGxpZnkpKHByaXZhdGVLZXkpfTtpZigoMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsIngtZXRoZXJzL3ZlcnNpb24iKT09PSIwLjEiKXt2YXIgbW5lbW9uaWNDaXBoZXJ0ZXh0PSgwLHV0aWxzJDEubG9vc2VBcnJheWlmeSkoKDAsdXRpbHMkMS5zZWFyY2hQYXRoKShkYXRhLCJ4LWV0aGVycy9tbmVtb25pY0NpcGhlcnRleHQiKSk7dmFyIG1uZW1vbmljSXY9KDAsdXRpbHMkMS5sb29zZUFycmF5aWZ5KSgoMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsIngtZXRoZXJzL21uZW1vbmljQ291bnRlciIpKTt2YXIgbW5lbW9uaWNDb3VudGVyPW5ldyBhZXNfanNfMS5kZWZhdWx0LkNvdW50ZXIobW5lbW9uaWNJdik7dmFyIG1uZW1vbmljQWVzQ3RyPW5ldyBhZXNfanNfMS5kZWZhdWx0Lk1vZGVPZk9wZXJhdGlvbi5jdHIobW5lbW9uaWNLZXksbW5lbW9uaWNDb3VudGVyKTt2YXIgcGF0aD0oMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsIngtZXRoZXJzL3BhdGgiKXx8bGliJG4uZGVmYXVsdFBhdGg7dmFyIGxvY2FsZT0oMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsIngtZXRoZXJzL2xvY2FsZSIpfHwiZW4iO3ZhciBlbnRyb3B5PSgwLGxpYiQxLmFycmF5aWZ5KShtbmVtb25pY0Flc0N0ci5kZWNyeXB0KG1uZW1vbmljQ2lwaGVydGV4dCkpO3RyeXt2YXIgbW5lbW9uaWM9KDAsbGliJG4uZW50cm9weVRvTW5lbW9uaWMpKGVudHJvcHksbG9jYWxlKTt2YXIgbm9kZT1saWIkbi5IRE5vZGUuZnJvbU1uZW1vbmljKG1uZW1vbmljLG51bGwsbG9jYWxlKS5kZXJpdmVQYXRoKHBhdGgpO2lmKG5vZGUucHJpdmF0ZUtleSE9YWNjb3VudC5wcml2YXRlS2V5KXt0aHJvdyBuZXcgRXJyb3IoIm1uZW1vbmljIG1pc21hdGNoIil9YWNjb3VudC5tbmVtb25pYz1ub2RlLm1uZW1vbmljfWNhdGNoKGVycm9yKXtpZihlcnJvci5jb2RlIT09bGliLkxvZ2dlci5lcnJvcnMuSU5WQUxJRF9BUkdVTUVOVHx8ZXJyb3IuYXJndW1lbnQhPT0id29yZGxpc3QiKXt0aHJvdyBlcnJvcn19fXJldHVybiBuZXcgS2V5c3RvcmVBY2NvdW50KGFjY291bnQpfWZ1bmN0aW9uIHBia2RmMlN5bmMocGFzc3dvcmRCeXRlcyxzYWx0LGNvdW50LGRrTGVuLHByZkZ1bmMpe3JldHVybigwLGxpYiQxLmFycmF5aWZ5KSgoMCxsaWIkbC5wYmtkZjIpKHBhc3N3b3JkQnl0ZXMsc2FsdCxjb3VudCxka0xlbixwcmZGdW5jKSl9ZnVuY3Rpb24gcGJrZGYyKHBhc3N3b3JkQnl0ZXMsc2FsdCxjb3VudCxka0xlbixwcmZGdW5jKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBia2RmMlN5bmMocGFzc3dvcmRCeXRlcyxzYWx0LGNvdW50LGRrTGVuLHByZkZ1bmMpKX1mdW5jdGlvbiBfY29tcHV0ZUtkZktleShkYXRhLHBhc3N3b3JkLHBia2RmMkZ1bmMsc2NyeXB0RnVuYyxwcm9ncmVzc0NhbGxiYWNrKXt2YXIgcGFzc3dvcmRCeXRlcz0oMCx1dGlscyQxLmdldFBhc3N3b3JkKShwYXNzd29yZCk7dmFyIGtkZj0oMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsImNyeXB0by9rZGYiKTtpZihrZGYmJnR5cGVvZiBrZGY9PT0ic3RyaW5nIil7dmFyIHRocm93RXJyb3I9ZnVuY3Rpb24obmFtZSx2YWx1ZSl7cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQga2V5LWRlcml2YXRpb24gZnVuY3Rpb24gcGFyYW1ldGVycyIsbmFtZSx2YWx1ZSl9O2lmKGtkZi50b0xvd2VyQ2FzZSgpPT09InNjcnlwdCIpe3ZhciBzYWx0PSgwLHV0aWxzJDEubG9vc2VBcnJheWlmeSkoKDAsdXRpbHMkMS5zZWFyY2hQYXRoKShkYXRhLCJjcnlwdG8va2RmcGFyYW1zL3NhbHQiKSk7dmFyIE49cGFyc2VJbnQoKDAsdXRpbHMkMS5zZWFyY2hQYXRoKShkYXRhLCJjcnlwdG8va2RmcGFyYW1zL24iKSk7dmFyIHI9cGFyc2VJbnQoKDAsdXRpbHMkMS5zZWFyY2hQYXRoKShkYXRhLCJjcnlwdG8va2RmcGFyYW1zL3IiKSk7dmFyIHA9cGFyc2VJbnQoKDAsdXRpbHMkMS5zZWFyY2hQYXRoKShkYXRhLCJjcnlwdG8va2RmcGFyYW1zL3AiKSk7aWYoIU58fCFyfHwhcCl7dGhyb3dFcnJvcigia2RmIixrZGYpfWlmKChOJk4tMSkhPT0wKXt0aHJvd0Vycm9yKCJOIixOKX12YXIgZGtMZW49cGFyc2VJbnQoKDAsdXRpbHMkMS5zZWFyY2hQYXRoKShkYXRhLCJjcnlwdG8va2RmcGFyYW1zL2RrbGVuIikpO2lmKGRrTGVuIT09MzIpe3Rocm93RXJyb3IoImRrbGVuIixka0xlbil9cmV0dXJuIHNjcnlwdEZ1bmMocGFzc3dvcmRCeXRlcyxzYWx0LE4scixwLDY0LHByb2dyZXNzQ2FsbGJhY2spfWVsc2UgaWYoa2RmLnRvTG93ZXJDYXNlKCk9PT0icGJrZGYyIil7dmFyIHNhbHQ9KDAsdXRpbHMkMS5sb29zZUFycmF5aWZ5KSgoMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsImNyeXB0by9rZGZwYXJhbXMvc2FsdCIpKTt2YXIgcHJmRnVuYz1udWxsO3ZhciBwcmY9KDAsdXRpbHMkMS5zZWFyY2hQYXRoKShkYXRhLCJjcnlwdG8va2RmcGFyYW1zL3ByZiIpO2lmKHByZj09PSJobWFjLXNoYTI1NiIpe3ByZkZ1bmM9InNoYTI1NiJ9ZWxzZSBpZihwcmY9PT0iaG1hYy1zaGE1MTIiKXtwcmZGdW5jPSJzaGE1MTIifWVsc2V7dGhyb3dFcnJvcigicHJmIixwcmYpfXZhciBjb3VudD1wYXJzZUludCgoMCx1dGlscyQxLnNlYXJjaFBhdGgpKGRhdGEsImNyeXB0by9rZGZwYXJhbXMvYyIpKTt2YXIgZGtMZW49cGFyc2VJbnQoKDAsdXRpbHMkMS5zZWFyY2hQYXRoKShkYXRhLCJjcnlwdG8va2RmcGFyYW1zL2RrbGVuIikpO2lmKGRrTGVuIT09MzIpe3Rocm93RXJyb3IoImRrbGVuIixka0xlbil9cmV0dXJuIHBia2RmMkZ1bmMocGFzc3dvcmRCeXRlcyxzYWx0LGNvdW50LGRrTGVuLHByZkZ1bmMpfX1yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5zdXBwb3J0ZWQga2V5LWRlcml2YXRpb24gZnVuY3Rpb24iLCJrZGYiLGtkZil9ZnVuY3Rpb24gZGVjcnlwdFN5bmMoanNvbixwYXNzd29yZCl7dmFyIGRhdGE9SlNPTi5wYXJzZShqc29uKTt2YXIga2V5PV9jb21wdXRlS2RmS2V5KGRhdGEscGFzc3dvcmQscGJrZGYyU3luYyxzY3J5cHRfanNfMS5kZWZhdWx0LnN5bmNTY3J5cHQpO3JldHVybiBfZ2V0QWNjb3VudChkYXRhLGtleSl9ZXhwb3J0cy5kZWNyeXB0U3luYz1kZWNyeXB0U3luYztmdW5jdGlvbiBkZWNyeXB0KGpzb24scGFzc3dvcmQscHJvZ3Jlc3NDYWxsYmFjayl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZGF0YSxrZXk7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmRhdGE9SlNPTi5wYXJzZShqc29uKTtyZXR1cm5bNCxfY29tcHV0ZUtkZktleShkYXRhLHBhc3N3b3JkLHBia2RmMixzY3J5cHRfanNfMS5kZWZhdWx0LnNjcnlwdCxwcm9ncmVzc0NhbGxiYWNrKV07Y2FzZSAxOmtleT1fYS5zZW50KCk7cmV0dXJuWzIsX2dldEFjY291bnQoZGF0YSxrZXkpXX19KX0pfWV4cG9ydHMuZGVjcnlwdD1kZWNyeXB0O2Z1bmN0aW9uIGVuY3J5cHQoYWNjb3VudCxwYXNzd29yZCxvcHRpb25zLHByb2dyZXNzQ2FsbGJhY2spe3RyeXtpZigoMCxsaWIkNi5nZXRBZGRyZXNzKShhY2NvdW50LmFkZHJlc3MpIT09KDAsbGliJGguY29tcHV0ZUFkZHJlc3MpKGFjY291bnQucHJpdmF0ZUtleSkpe3Rocm93IG5ldyBFcnJvcigiYWRkcmVzcy9wcml2YXRlS2V5IG1pc21hdGNoIil9aWYoaGFzTW5lbW9uaWMoYWNjb3VudCkpe3ZhciBtbmVtb25pYz1hY2NvdW50Lm1uZW1vbmljO3ZhciBub2RlPWxpYiRuLkhETm9kZS5mcm9tTW5lbW9uaWMobW5lbW9uaWMucGhyYXNlLG51bGwsbW5lbW9uaWMubG9jYWxlKS5kZXJpdmVQYXRoKG1uZW1vbmljLnBhdGh8fGxpYiRuLmRlZmF1bHRQYXRoKTtpZihub2RlLnByaXZhdGVLZXkhPWFjY291bnQucHJpdmF0ZUtleSl7dGhyb3cgbmV3IEVycm9yKCJtbmVtb25pYyBtaXNtYXRjaCIpfX19Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfWlmKHR5cGVvZiBvcHRpb25zPT09ImZ1bmN0aW9uIiYmIXByb2dyZXNzQ2FsbGJhY2spe3Byb2dyZXNzQ2FsbGJhY2s9b3B0aW9ucztvcHRpb25zPXt9fWlmKCFvcHRpb25zKXtvcHRpb25zPXt9fXZhciBwcml2YXRlS2V5PSgwLGxpYiQxLmFycmF5aWZ5KShhY2NvdW50LnByaXZhdGVLZXkpO3ZhciBwYXNzd29yZEJ5dGVzPSgwLHV0aWxzJDEuZ2V0UGFzc3dvcmQpKHBhc3N3b3JkKTt2YXIgZW50cm9weT1udWxsO3ZhciBwYXRoPW51bGw7dmFyIGxvY2FsZT1udWxsO2lmKGhhc01uZW1vbmljKGFjY291bnQpKXt2YXIgc3JjTW5lbW9uaWM9YWNjb3VudC5tbmVtb25pYztlbnRyb3B5PSgwLGxpYiQxLmFycmF5aWZ5KSgoMCxsaWIkbi5tbmVtb25pY1RvRW50cm9weSkoc3JjTW5lbW9uaWMucGhyYXNlLHNyY01uZW1vbmljLmxvY2FsZXx8ImVuIikpO3BhdGg9c3JjTW5lbW9uaWMucGF0aHx8bGliJG4uZGVmYXVsdFBhdGg7bG9jYWxlPXNyY01uZW1vbmljLmxvY2FsZXx8ImVuIn12YXIgY2xpZW50PW9wdGlvbnMuY2xpZW50O2lmKCFjbGllbnQpe2NsaWVudD0iZXRoZXJzLmpzIn12YXIgc2FsdD1udWxsO2lmKG9wdGlvbnMuc2FsdCl7c2FsdD0oMCxsaWIkMS5hcnJheWlmeSkob3B0aW9ucy5zYWx0KX1lbHNle3NhbHQ9KDAsbGliJG8ucmFuZG9tQnl0ZXMpKDMyKX12YXIgaXY9bnVsbDtpZihvcHRpb25zLml2KXtpdj0oMCxsaWIkMS5hcnJheWlmeSkob3B0aW9ucy5pdik7aWYoaXYubGVuZ3RoIT09MTYpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBpdiIpfX1lbHNle2l2PSgwLGxpYiRvLnJhbmRvbUJ5dGVzKSgxNil9dmFyIHV1aWRSYW5kb209bnVsbDtpZihvcHRpb25zLnV1aWQpe3V1aWRSYW5kb209KDAsbGliJDEuYXJyYXlpZnkpKG9wdGlvbnMudXVpZCk7aWYodXVpZFJhbmRvbS5sZW5ndGghPT0xNil7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHV1aWQiKX19ZWxzZXt1dWlkUmFuZG9tPSgwLGxpYiRvLnJhbmRvbUJ5dGVzKSgxNil9dmFyIE49MTw8MTcscj04LHA9MTtpZihvcHRpb25zLnNjcnlwdCl7aWYob3B0aW9ucy5zY3J5cHQuTil7Tj1vcHRpb25zLnNjcnlwdC5OfWlmKG9wdGlvbnMuc2NyeXB0LnIpe3I9b3B0aW9ucy5zY3J5cHQucn1pZihvcHRpb25zLnNjcnlwdC5wKXtwPW9wdGlvbnMuc2NyeXB0LnB9fXJldHVybiBzY3J5cHRfanNfMS5kZWZhdWx0LnNjcnlwdChwYXNzd29yZEJ5dGVzLHNhbHQsTixyLHAsNjQscHJvZ3Jlc3NDYWxsYmFjaykudGhlbihmdW5jdGlvbihrZXkpe2tleT0oMCxsaWIkMS5hcnJheWlmeSkoa2V5KTt2YXIgZGVyaXZlZEtleT1rZXkuc2xpY2UoMCwxNik7dmFyIG1hY1ByZWZpeD1rZXkuc2xpY2UoMTYsMzIpO3ZhciBtbmVtb25pY0tleT1rZXkuc2xpY2UoMzIsNjQpO3ZhciBjb3VudGVyPW5ldyBhZXNfanNfMS5kZWZhdWx0LkNvdW50ZXIoaXYpO3ZhciBhZXNDdHI9bmV3IGFlc19qc18xLmRlZmF1bHQuTW9kZU9mT3BlcmF0aW9uLmN0cihkZXJpdmVkS2V5LGNvdW50ZXIpO3ZhciBjaXBoZXJ0ZXh0PSgwLGxpYiQxLmFycmF5aWZ5KShhZXNDdHIuZW5jcnlwdChwcml2YXRlS2V5KSk7dmFyIG1hYz0oMCxsaWIkNC5rZWNjYWsyNTYpKCgwLGxpYiQxLmNvbmNhdCkoW21hY1ByZWZpeCxjaXBoZXJ0ZXh0XSkpO3ZhciBkYXRhPXthZGRyZXNzOmFjY291bnQuYWRkcmVzcy5zdWJzdHJpbmcoMikudG9Mb3dlckNhc2UoKSxpZDooMCx1dGlscyQxLnV1aWRWNCkodXVpZFJhbmRvbSksdmVyc2lvbjozLGNyeXB0bzp7Y2lwaGVyOiJhZXMtMTI4LWN0ciIsY2lwaGVycGFyYW1zOntpdjooMCxsaWIkMS5oZXhsaWZ5KShpdikuc3Vic3RyaW5nKDIpfSxjaXBoZXJ0ZXh0OigwLGxpYiQxLmhleGxpZnkpKGNpcGhlcnRleHQpLnN1YnN0cmluZygyKSxrZGY6InNjcnlwdCIsa2RmcGFyYW1zOntzYWx0OigwLGxpYiQxLmhleGxpZnkpKHNhbHQpLnN1YnN0cmluZygyKSxuOk4sZGtsZW46MzIscDpwLHI6cn0sbWFjOm1hYy5zdWJzdHJpbmcoMil9fTtpZihlbnRyb3B5KXt2YXIgbW5lbW9uaWNJdj0oMCxsaWIkby5yYW5kb21CeXRlcykoMTYpO3ZhciBtbmVtb25pY0NvdW50ZXI9bmV3IGFlc19qc18xLmRlZmF1bHQuQ291bnRlcihtbmVtb25pY0l2KTt2YXIgbW5lbW9uaWNBZXNDdHI9bmV3IGFlc19qc18xLmRlZmF1bHQuTW9kZU9mT3BlcmF0aW9uLmN0cihtbmVtb25pY0tleSxtbmVtb25pY0NvdW50ZXIpO3ZhciBtbmVtb25pY0NpcGhlcnRleHQ9KDAsbGliJDEuYXJyYXlpZnkpKG1uZW1vbmljQWVzQ3RyLmVuY3J5cHQoZW50cm9weSkpO3ZhciBub3c9bmV3IERhdGU7dmFyIHRpbWVzdGFtcD1ub3cuZ2V0VVRDRnVsbFllYXIoKSsiLSIrKDAsdXRpbHMkMS56cGFkKShub3cuZ2V0VVRDTW9udGgoKSsxLDIpKyItIisoMCx1dGlscyQxLnpwYWQpKG5vdy5nZXRVVENEYXRlKCksMikrIlQiKygwLHV0aWxzJDEuenBhZCkobm93LmdldFVUQ0hvdXJzKCksMikrIi0iKygwLHV0aWxzJDEuenBhZCkobm93LmdldFVUQ01pbnV0ZXMoKSwyKSsiLSIrKDAsdXRpbHMkMS56cGFkKShub3cuZ2V0VVRDU2Vjb25kcygpLDIpKyIuMFoiO2RhdGFbIngtZXRoZXJzIl09e2NsaWVudDpjbGllbnQsZ2V0aEZpbGVuYW1lOiJVVEMtLSIrdGltZXN0YW1wKyItLSIrZGF0YS5hZGRyZXNzLG1uZW1vbmljQ291bnRlcjooMCxsaWIkMS5oZXhsaWZ5KShtbmVtb25pY0l2KS5zdWJzdHJpbmcoMiksbW5lbW9uaWNDaXBoZXJ0ZXh0OigwLGxpYiQxLmhleGxpZnkpKG1uZW1vbmljQ2lwaGVydGV4dCkuc3Vic3RyaW5nKDIpLHBhdGg6cGF0aCxsb2NhbGU6bG9jYWxlLHZlcnNpb246IjAuMSJ9fXJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKX0pfWV4cG9ydHMuZW5jcnlwdD1lbmNyeXB0fSk7dmFyIGtleXN0b3JlJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoa2V5c3RvcmUpO3ZhciBsaWIkcD1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuZGVjcnlwdEpzb25XYWxsZXRTeW5jPWV4cG9ydHMuZGVjcnlwdEpzb25XYWxsZXQ9ZXhwb3J0cy5nZXRKc29uV2FsbGV0QWRkcmVzcz1leHBvcnRzLmlzS2V5c3RvcmVXYWxsZXQ9ZXhwb3J0cy5pc0Nyb3dkc2FsZVdhbGxldD1leHBvcnRzLmVuY3J5cHRLZXlzdG9yZT1leHBvcnRzLmRlY3J5cHRLZXlzdG9yZVN5bmM9ZXhwb3J0cy5kZWNyeXB0S2V5c3RvcmU9ZXhwb3J0cy5kZWNyeXB0Q3Jvd2RzYWxlPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZGVjcnlwdENyb3dkc2FsZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY3Jvd2RzYWxlLmRlY3J5cHR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImdldEpzb25XYWxsZXRBZGRyZXNzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBpbnNwZWN0LmdldEpzb25XYWxsZXRBZGRyZXNzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJpc0Nyb3dkc2FsZVdhbGxldCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaW5zcGVjdC5pc0Nyb3dkc2FsZVdhbGxldH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaXNLZXlzdG9yZVdhbGxldCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaW5zcGVjdC5pc0tleXN0b3JlV2FsbGV0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJkZWNyeXB0S2V5c3RvcmUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGtleXN0b3JlLmRlY3J5cHR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImRlY3J5cHRLZXlzdG9yZVN5bmMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGtleXN0b3JlLmRlY3J5cHRTeW5jfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJlbmNyeXB0S2V5c3RvcmUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGtleXN0b3JlLmVuY3J5cHR9fSk7ZnVuY3Rpb24gZGVjcnlwdEpzb25XYWxsZXQoanNvbixwYXNzd29yZCxwcm9ncmVzc0NhbGxiYWNrKXtpZigoMCxpbnNwZWN0LmlzQ3Jvd2RzYWxlV2FsbGV0KShqc29uKSl7aWYocHJvZ3Jlc3NDYWxsYmFjayl7cHJvZ3Jlc3NDYWxsYmFjaygwKX12YXIgYWNjb3VudD0oMCxjcm93ZHNhbGUuZGVjcnlwdCkoanNvbixwYXNzd29yZCk7aWYocHJvZ3Jlc3NDYWxsYmFjayl7cHJvZ3Jlc3NDYWxsYmFjaygxKX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGFjY291bnQpfWlmKCgwLGluc3BlY3QuaXNLZXlzdG9yZVdhbGxldCkoanNvbikpe3JldHVybigwLGtleXN0b3JlLmRlY3J5cHQpKGpzb24scGFzc3dvcmQscHJvZ3Jlc3NDYWxsYmFjayl9cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiaW52YWxpZCBKU09OIHdhbGxldCIpKX1leHBvcnRzLmRlY3J5cHRKc29uV2FsbGV0PWRlY3J5cHRKc29uV2FsbGV0O2Z1bmN0aW9uIGRlY3J5cHRKc29uV2FsbGV0U3luYyhqc29uLHBhc3N3b3JkKXtpZigoMCxpbnNwZWN0LmlzQ3Jvd2RzYWxlV2FsbGV0KShqc29uKSl7cmV0dXJuKDAsY3Jvd2RzYWxlLmRlY3J5cHQpKGpzb24scGFzc3dvcmQpfWlmKCgwLGluc3BlY3QuaXNLZXlzdG9yZVdhbGxldCkoanNvbikpe3JldHVybigwLGtleXN0b3JlLmRlY3J5cHRTeW5jKShqc29uLHBhc3N3b3JkKX10aHJvdyBuZXcgRXJyb3IoImludmFsaWQgSlNPTiB3YWxsZXQiKX1leHBvcnRzLmRlY3J5cHRKc29uV2FsbGV0U3luYz1kZWNyeXB0SnNvbldhbGxldFN5bmN9KTt2YXIgaW5kZXgkbj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkcCk7dmFyIF92ZXJzaW9uJEM9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0id2FsbGV0LzUuNy4wIn0pO3ZhciBfdmVyc2lvbiREPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJEMpO3ZhciBsaWIkcT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyaWZ5VHlwZWREYXRhPWV4cG9ydHMudmVyaWZ5TWVzc2FnZT1leHBvcnRzLldhbGxldD12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRDLnZlcnNpb24pO2Z1bmN0aW9uIGlzQWNjb3VudCh2YWx1ZSl7cmV0dXJuIHZhbHVlIT1udWxsJiYoMCxsaWIkMS5pc0hleFN0cmluZykodmFsdWUucHJpdmF0ZUtleSwzMikmJnZhbHVlLmFkZHJlc3MhPW51bGx9ZnVuY3Rpb24gaGFzTW5lbW9uaWModmFsdWUpe3ZhciBtbmVtb25pYz12YWx1ZS5tbmVtb25pYztyZXR1cm4gbW5lbW9uaWMmJm1uZW1vbmljLnBocmFzZX12YXIgV2FsbGV0PWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKFdhbGxldCxfc3VwZXIpO2Z1bmN0aW9uIFdhbGxldChwcml2YXRlS2V5LHByb3ZpZGVyKXt2YXIgX3RoaXM9X3N1cGVyLmNhbGwodGhpcyl8fHRoaXM7aWYoaXNBY2NvdW50KHByaXZhdGVLZXkpKXt2YXIgc2lnbmluZ0tleV8xPW5ldyBsaWIkZy5TaWduaW5nS2V5KHByaXZhdGVLZXkucHJpdmF0ZUtleSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJfc2lnbmluZ0tleSIsZnVuY3Rpb24oKXtyZXR1cm4gc2lnbmluZ0tleV8xfSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJhZGRyZXNzIiwoMCxsaWIkaC5jb21wdXRlQWRkcmVzcykoX3RoaXMucHVibGljS2V5KSk7aWYoX3RoaXMuYWRkcmVzcyE9PSgwLGxpYiQ2LmdldEFkZHJlc3MpKHByaXZhdGVLZXkuYWRkcmVzcykpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInByaXZhdGVLZXkvYWRkcmVzcyBtaXNtYXRjaCIsInByaXZhdGVLZXkiLCJbUkVEQUNURURdIil9aWYoaGFzTW5lbW9uaWMocHJpdmF0ZUtleSkpe3ZhciBzcmNNbmVtb25pY18xPXByaXZhdGVLZXkubW5lbW9uaWM7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJfbW5lbW9uaWMiLGZ1bmN0aW9uKCl7cmV0dXJue3BocmFzZTpzcmNNbmVtb25pY18xLnBocmFzZSxwYXRoOnNyY01uZW1vbmljXzEucGF0aHx8bGliJG4uZGVmYXVsdFBhdGgsbG9jYWxlOnNyY01uZW1vbmljXzEubG9jYWxlfHwiZW4ifX0pO3ZhciBtbmVtb25pYz1fdGhpcy5tbmVtb25pYzt2YXIgbm9kZT1saWIkbi5IRE5vZGUuZnJvbU1uZW1vbmljKG1uZW1vbmljLnBocmFzZSxudWxsLG1uZW1vbmljLmxvY2FsZSkuZGVyaXZlUGF0aChtbmVtb25pYy5wYXRoKTtpZigoMCxsaWIkaC5jb21wdXRlQWRkcmVzcykobm9kZS5wcml2YXRlS2V5KSE9PV90aGlzLmFkZHJlc3Mpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm1uZW1vbmljL2FkZHJlc3MgbWlzbWF0Y2giLCJwcml2YXRlS2V5IiwiW1JFREFDVEVEXSIpfX1lbHNleygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShfdGhpcywiX21uZW1vbmljIixmdW5jdGlvbigpe3JldHVybiBudWxsfSl9fWVsc2V7aWYobGliJGcuU2lnbmluZ0tleS5pc1NpZ25pbmdLZXkocHJpdmF0ZUtleSkpe2lmKHByaXZhdGVLZXkuY3VydmUhPT0ic2VjcDI1NmsxIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5zdXBwb3J0ZWQgY3VydmU7IG11c3QgYmUgc2VjcDI1NmsxIiwicHJpdmF0ZUtleSIsIltSRURBQ1RFRF0iKX0oMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsIl9zaWduaW5nS2V5IixmdW5jdGlvbigpe3JldHVybiBwcml2YXRlS2V5fSl9ZWxzZXtpZih0eXBlb2YgcHJpdmF0ZUtleT09PSJzdHJpbmciKXtpZihwcml2YXRlS2V5Lm1hdGNoKC9eWzAtOWEtZl0qJC9pKSYmcHJpdmF0ZUtleS5sZW5ndGg9PT02NCl7cHJpdmF0ZUtleT0iMHgiK3ByaXZhdGVLZXl9fXZhciBzaWduaW5nS2V5XzI9bmV3IGxpYiRnLlNpZ25pbmdLZXkocHJpdmF0ZUtleSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJfc2lnbmluZ0tleSIsZnVuY3Rpb24oKXtyZXR1cm4gc2lnbmluZ0tleV8yfSl9KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJfbW5lbW9uaWMiLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsImFkZHJlc3MiLCgwLGxpYiRoLmNvbXB1dGVBZGRyZXNzKShfdGhpcy5wdWJsaWNLZXkpKX1pZihwcm92aWRlciYmIWxpYiRlLlByb3ZpZGVyLmlzUHJvdmlkZXIocHJvdmlkZXIpKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIHByb3ZpZGVyIiwicHJvdmlkZXIiLHByb3ZpZGVyKX0oMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsInByb3ZpZGVyIixwcm92aWRlcnx8bnVsbCk7cmV0dXJuIF90aGlzfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShXYWxsZXQucHJvdG90eXBlLCJtbmVtb25pYyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tbmVtb25pYygpfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFdhbGxldC5wcm90b3R5cGUsInByaXZhdGVLZXkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2lnbmluZ0tleSgpLnByaXZhdGVLZXl9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoV2FsbGV0LnByb3RvdHlwZSwicHVibGljS2V5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NpZ25pbmdLZXkoKS5wdWJsaWNLZXl9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtXYWxsZXQucHJvdG90eXBlLmdldEFkZHJlc3M9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYWRkcmVzcyl9O1dhbGxldC5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbihwcm92aWRlcil7cmV0dXJuIG5ldyBXYWxsZXQodGhpcyxwcm92aWRlcil9O1dhbGxldC5wcm90b3R5cGUuc2lnblRyYW5zYWN0aW9uPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXt2YXIgX3RoaXM9dGhpcztyZXR1cm4oMCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcykodHJhbnNhY3Rpb24pLnRoZW4oZnVuY3Rpb24odHgpe2lmKHR4LmZyb20hPW51bGwpe2lmKCgwLGxpYiQ2LmdldEFkZHJlc3MpKHR4LmZyb20pIT09X3RoaXMuYWRkcmVzcyl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidHJhbnNhY3Rpb24gZnJvbSBhZGRyZXNzIG1pc21hdGNoIiwidHJhbnNhY3Rpb24uZnJvbSIsdHJhbnNhY3Rpb24uZnJvbSl9ZGVsZXRlIHR4LmZyb219dmFyIHNpZ25hdHVyZT1fdGhpcy5fc2lnbmluZ0tleSgpLnNpZ25EaWdlc3QoKDAsbGliJDQua2VjY2FrMjU2KSgoMCxsaWIkaC5zZXJpYWxpemUpKHR4KSkpO3JldHVybigwLGxpYiRoLnNlcmlhbGl6ZSkodHgsc2lnbmF0dXJlKX0pfTtXYWxsZXQucHJvdG90eXBlLnNpZ25NZXNzYWdlPWZ1bmN0aW9uKG1lc3NhZ2Upe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3JldHVyblsyLCgwLGxpYiQxLmpvaW5TaWduYXR1cmUpKHRoaXMuX3NpZ25pbmdLZXkoKS5zaWduRGlnZXN0KCgwLGxpYiRjLmhhc2hNZXNzYWdlKShtZXNzYWdlKSkpXX0pfSl9O1dhbGxldC5wcm90b3R5cGUuX3NpZ25UeXBlZERhdGE9ZnVuY3Rpb24oZG9tYWluLHR5cGVzLHZhbHVlKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwb3B1bGF0ZWQ7dmFyIF90aGlzPXRoaXM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LGxpYiRjLl9UeXBlZERhdGFFbmNvZGVyLnJlc29sdmVOYW1lcyhkb21haW4sdHlwZXMsdmFsdWUsZnVuY3Rpb24obmFtZSl7aWYoX3RoaXMucHJvdmlkZXI9PW51bGwpe2xvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3QgcmVzb2x2ZSBFTlMgbmFtZXMgd2l0aG91dCBhIHByb3ZpZGVyIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoicmVzb2x2ZU5hbWUiLHZhbHVlOm5hbWV9KX1yZXR1cm4gX3RoaXMucHJvdmlkZXIucmVzb2x2ZU5hbWUobmFtZSl9KV07Y2FzZSAxOnBvcHVsYXRlZD1fYS5zZW50KCk7cmV0dXJuWzIsKDAsbGliJDEuam9pblNpZ25hdHVyZSkodGhpcy5fc2lnbmluZ0tleSgpLnNpZ25EaWdlc3QobGliJGMuX1R5cGVkRGF0YUVuY29kZXIuaGFzaChwb3B1bGF0ZWQuZG9tYWluLHR5cGVzLHBvcHVsYXRlZC52YWx1ZSkpKV19fSl9KX07V2FsbGV0LnByb3RvdHlwZS5lbmNyeXB0PWZ1bmN0aW9uKHBhc3N3b3JkLG9wdGlvbnMscHJvZ3Jlc3NDYWxsYmFjayl7aWYodHlwZW9mIG9wdGlvbnM9PT0iZnVuY3Rpb24iJiYhcHJvZ3Jlc3NDYWxsYmFjayl7cHJvZ3Jlc3NDYWxsYmFjaz1vcHRpb25zO29wdGlvbnM9e319aWYocHJvZ3Jlc3NDYWxsYmFjayYmdHlwZW9mIHByb2dyZXNzQ2FsbGJhY2shPT0iZnVuY3Rpb24iKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2siKX1pZighb3B0aW9ucyl7b3B0aW9ucz17fX1yZXR1cm4oMCxsaWIkcC5lbmNyeXB0S2V5c3RvcmUpKHRoaXMscGFzc3dvcmQsb3B0aW9ucyxwcm9ncmVzc0NhbGxiYWNrKX07V2FsbGV0LmNyZWF0ZVJhbmRvbT1mdW5jdGlvbihvcHRpb25zKXt2YXIgZW50cm9weT0oMCxsaWIkby5yYW5kb21CeXRlcykoMTYpO2lmKCFvcHRpb25zKXtvcHRpb25zPXt9fWlmKG9wdGlvbnMuZXh0cmFFbnRyb3B5KXtlbnRyb3B5PSgwLGxpYiQxLmFycmF5aWZ5KSgoMCxsaWIkMS5oZXhEYXRhU2xpY2UpKCgwLGxpYiQ0LmtlY2NhazI1NikoKDAsbGliJDEuY29uY2F0KShbZW50cm9weSxvcHRpb25zLmV4dHJhRW50cm9weV0pKSwwLDE2KSl9dmFyIG1uZW1vbmljPSgwLGxpYiRuLmVudHJvcHlUb01uZW1vbmljKShlbnRyb3B5LG9wdGlvbnMubG9jYWxlKTtyZXR1cm4gV2FsbGV0LmZyb21NbmVtb25pYyhtbmVtb25pYyxvcHRpb25zLnBhdGgsb3B0aW9ucy5sb2NhbGUpfTtXYWxsZXQuZnJvbUVuY3J5cHRlZEpzb249ZnVuY3Rpb24oanNvbixwYXNzd29yZCxwcm9ncmVzc0NhbGxiYWNrKXtyZXR1cm4oMCxsaWIkcC5kZWNyeXB0SnNvbldhbGxldCkoanNvbixwYXNzd29yZCxwcm9ncmVzc0NhbGxiYWNrKS50aGVuKGZ1bmN0aW9uKGFjY291bnQpe3JldHVybiBuZXcgV2FsbGV0KGFjY291bnQpfSl9O1dhbGxldC5mcm9tRW5jcnlwdGVkSnNvblN5bmM9ZnVuY3Rpb24oanNvbixwYXNzd29yZCl7cmV0dXJuIG5ldyBXYWxsZXQoKDAsbGliJHAuZGVjcnlwdEpzb25XYWxsZXRTeW5jKShqc29uLHBhc3N3b3JkKSl9O1dhbGxldC5mcm9tTW5lbW9uaWM9ZnVuY3Rpb24obW5lbW9uaWMscGF0aCx3b3JkbGlzdCl7aWYoIXBhdGgpe3BhdGg9bGliJG4uZGVmYXVsdFBhdGh9cmV0dXJuIG5ldyBXYWxsZXQobGliJG4uSEROb2RlLmZyb21NbmVtb25pYyhtbmVtb25pYyxudWxsLHdvcmRsaXN0KS5kZXJpdmVQYXRoKHBhdGgpKX07cmV0dXJuIFdhbGxldH0obGliJGYuU2lnbmVyKTtleHBvcnRzLldhbGxldD1XYWxsZXQ7ZnVuY3Rpb24gdmVyaWZ5TWVzc2FnZShtZXNzYWdlLHNpZ25hdHVyZSl7cmV0dXJuKDAsbGliJGgucmVjb3ZlckFkZHJlc3MpKCgwLGxpYiRjLmhhc2hNZXNzYWdlKShtZXNzYWdlKSxzaWduYXR1cmUpfWV4cG9ydHMudmVyaWZ5TWVzc2FnZT12ZXJpZnlNZXNzYWdlO2Z1bmN0aW9uIHZlcmlmeVR5cGVkRGF0YShkb21haW4sdHlwZXMsdmFsdWUsc2lnbmF0dXJlKXtyZXR1cm4oMCxsaWIkaC5yZWNvdmVyQWRkcmVzcykobGliJGMuX1R5cGVkRGF0YUVuY29kZXIuaGFzaChkb21haW4sdHlwZXMsdmFsdWUpLHNpZ25hdHVyZSl9ZXhwb3J0cy52ZXJpZnlUeXBlZERhdGE9dmVyaWZ5VHlwZWREYXRhfSk7dmFyIGluZGV4JG89Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMobGliJHEpO3ZhciBfdmVyc2lvbiRFPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249Im5ldHdvcmtzLzUuNy4xIn0pO3ZhciBfdmVyc2lvbiRGPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKF92ZXJzaW9uJEUpO3ZhciBsaWIkcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuZ2V0TmV0d29yaz12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRFLnZlcnNpb24pO2Z1bmN0aW9uIGlzUmVuZXR3b3JrYWJsZSh2YWx1ZSl7cmV0dXJuIHZhbHVlJiZ0eXBlb2YgdmFsdWUucmVuZXR3b3JrPT09ImZ1bmN0aW9uIn1mdW5jdGlvbiBldGhEZWZhdWx0UHJvdmlkZXIobmV0d29yayl7dmFyIGZ1bmM9ZnVuY3Rpb24ocHJvdmlkZXJzLG9wdGlvbnMpe2lmKG9wdGlvbnM9PW51bGwpe29wdGlvbnM9e319dmFyIHByb3ZpZGVyTGlzdD1bXTtpZihwcm92aWRlcnMuSW5mdXJhUHJvdmlkZXImJm9wdGlvbnMuaW5mdXJhIT09Ii0iKXt0cnl7cHJvdmlkZXJMaXN0LnB1c2gobmV3IHByb3ZpZGVycy5JbmZ1cmFQcm92aWRlcihuZXR3b3JrLG9wdGlvbnMuaW5mdXJhKSl9Y2F0Y2goZXJyb3Ipe319aWYocHJvdmlkZXJzLkV0aGVyc2NhblByb3ZpZGVyJiZvcHRpb25zLmV0aGVyc2NhbiE9PSItIil7dHJ5e3Byb3ZpZGVyTGlzdC5wdXNoKG5ldyBwcm92aWRlcnMuRXRoZXJzY2FuUHJvdmlkZXIobmV0d29yayxvcHRpb25zLmV0aGVyc2NhbikpfWNhdGNoKGVycm9yKXt9fWlmKHByb3ZpZGVycy5BbGNoZW15UHJvdmlkZXImJm9wdGlvbnMuYWxjaGVteSE9PSItIil7dHJ5e3Byb3ZpZGVyTGlzdC5wdXNoKG5ldyBwcm92aWRlcnMuQWxjaGVteVByb3ZpZGVyKG5ldHdvcmssb3B0aW9ucy5hbGNoZW15KSl9Y2F0Y2goZXJyb3Ipe319aWYocHJvdmlkZXJzLlBvY2tldFByb3ZpZGVyJiZvcHRpb25zLnBvY2tldCE9PSItIil7dmFyIHNraXA9WyJnb2VybGkiLCJyb3BzdGVuIiwicmlua2VieSIsInNlcG9saWEiXTt0cnl7dmFyIHByb3ZpZGVyPW5ldyBwcm92aWRlcnMuUG9ja2V0UHJvdmlkZXIobmV0d29yayxvcHRpb25zLnBvY2tldCk7aWYocHJvdmlkZXIubmV0d29yayYmc2tpcC5pbmRleE9mKHByb3ZpZGVyLm5ldHdvcmsubmFtZSk9PT0tMSl7cHJvdmlkZXJMaXN0LnB1c2gocHJvdmlkZXIpfX1jYXRjaChlcnJvcil7fX1pZihwcm92aWRlcnMuQ2xvdWRmbGFyZVByb3ZpZGVyJiZvcHRpb25zLmNsb3VkZmxhcmUhPT0iLSIpe3RyeXtwcm92aWRlckxpc3QucHVzaChuZXcgcHJvdmlkZXJzLkNsb3VkZmxhcmVQcm92aWRlcihuZXR3b3JrKSl9Y2F0Y2goZXJyb3Ipe319aWYocHJvdmlkZXJzLkFua3JQcm92aWRlciYmb3B0aW9ucy5hbmtyIT09Ii0iKXt0cnl7dmFyIHNraXA9WyJyb3BzdGVuIl07dmFyIHByb3ZpZGVyPW5ldyBwcm92aWRlcnMuQW5rclByb3ZpZGVyKG5ldHdvcmssb3B0aW9ucy5hbmtyKTtpZihwcm92aWRlci5uZXR3b3JrJiZza2lwLmluZGV4T2YocHJvdmlkZXIubmV0d29yay5uYW1lKT09PS0xKXtwcm92aWRlckxpc3QucHVzaChwcm92aWRlcil9fWNhdGNoKGVycm9yKXt9fWlmKHByb3ZpZGVyTGlzdC5sZW5ndGg9PT0wKXtyZXR1cm4gbnVsbH1pZihwcm92aWRlcnMuRmFsbGJhY2tQcm92aWRlcil7dmFyIHF1b3J1bT0xO2lmKG9wdGlvbnMucXVvcnVtIT1udWxsKXtxdW9ydW09b3B0aW9ucy5xdW9ydW19ZWxzZSBpZihuZXR3b3JrPT09ImhvbWVzdGVhZCIpe3F1b3J1bT0yfXJldHVybiBuZXcgcHJvdmlkZXJzLkZhbGxiYWNrUHJvdmlkZXIocHJvdmlkZXJMaXN0LHF1b3J1bSl9cmV0dXJuIHByb3ZpZGVyTGlzdFswXX07ZnVuYy5yZW5ldHdvcms9ZnVuY3Rpb24obmV0d29yayl7cmV0dXJuIGV0aERlZmF1bHRQcm92aWRlcihuZXR3b3JrKX07cmV0dXJuIGZ1bmN9ZnVuY3Rpb24gZXRjRGVmYXVsdFByb3ZpZGVyKHVybCxuZXR3b3JrKXt2YXIgZnVuYz1mdW5jdGlvbihwcm92aWRlcnMsb3B0aW9ucyl7aWYocHJvdmlkZXJzLkpzb25ScGNQcm92aWRlcil7cmV0dXJuIG5ldyBwcm92aWRlcnMuSnNvblJwY1Byb3ZpZGVyKHVybCxuZXR3b3JrKX1yZXR1cm4gbnVsbH07ZnVuYy5yZW5ldHdvcms9ZnVuY3Rpb24obmV0d29yayl7cmV0dXJuIGV0Y0RlZmF1bHRQcm92aWRlcih1cmwsbmV0d29yayl9O3JldHVybiBmdW5jfXZhciBob21lc3RlYWQ9e2NoYWluSWQ6MSxlbnNBZGRyZXNzOiIweDAwMDAwMDAwMDAwQzJFMDc0ZUM2OUEwZEZiMjk5N0JBNkM3ZDJlMWUiLG5hbWU6ImhvbWVzdGVhZCIsX2RlZmF1bHRQcm92aWRlcjpldGhEZWZhdWx0UHJvdmlkZXIoImhvbWVzdGVhZCIpfTt2YXIgcm9wc3Rlbj17Y2hhaW5JZDozLGVuc0FkZHJlc3M6IjB4MDAwMDAwMDAwMDBDMkUwNzRlQzY5QTBkRmIyOTk3QkE2QzdkMmUxZSIsbmFtZToicm9wc3RlbiIsX2RlZmF1bHRQcm92aWRlcjpldGhEZWZhdWx0UHJvdmlkZXIoInJvcHN0ZW4iKX07dmFyIGNsYXNzaWNNb3Jkb3I9e2NoYWluSWQ6NjMsbmFtZToiY2xhc3NpY01vcmRvciIsX2RlZmF1bHRQcm92aWRlcjpldGNEZWZhdWx0UHJvdmlkZXIoImh0dHBzOi8vd3d3LmV0aGVyY2x1c3Rlci5jb20vbW9yZG9yIiwiY2xhc3NpY01vcmRvciIpfTt2YXIgbmV0d29ya3M9e3Vuc3BlY2lmaWVkOntjaGFpbklkOjAsbmFtZToidW5zcGVjaWZpZWQifSxob21lc3RlYWQ6aG9tZXN0ZWFkLG1haW5uZXQ6aG9tZXN0ZWFkLG1vcmRlbjp7Y2hhaW5JZDoyLG5hbWU6Im1vcmRlbiJ9LHJvcHN0ZW46cm9wc3Rlbix0ZXN0bmV0OnJvcHN0ZW4scmlua2VieTp7Y2hhaW5JZDo0LGVuc0FkZHJlc3M6IjB4MDAwMDAwMDAwMDBDMkUwNzRlQzY5QTBkRmIyOTk3QkE2QzdkMmUxZSIsbmFtZToicmlua2VieSIsX2RlZmF1bHRQcm92aWRlcjpldGhEZWZhdWx0UHJvdmlkZXIoInJpbmtlYnkiKX0sa292YW46e2NoYWluSWQ6NDIsbmFtZToia292YW4iLF9kZWZhdWx0UHJvdmlkZXI6ZXRoRGVmYXVsdFByb3ZpZGVyKCJrb3ZhbiIpfSxnb2VybGk6e2NoYWluSWQ6NSxlbnNBZGRyZXNzOiIweDAwMDAwMDAwMDAwQzJFMDc0ZUM2OUEwZEZiMjk5N0JBNkM3ZDJlMWUiLG5hbWU6ImdvZXJsaSIsX2RlZmF1bHRQcm92aWRlcjpldGhEZWZhdWx0UHJvdmlkZXIoImdvZXJsaSIpfSxraW50c3VnaTp7Y2hhaW5JZDoxMzM3NzAyLG5hbWU6ImtpbnRzdWdpIn0sc2Vwb2xpYTp7Y2hhaW5JZDoxMTE1NTExMSxuYW1lOiJzZXBvbGlhIixfZGVmYXVsdFByb3ZpZGVyOmV0aERlZmF1bHRQcm92aWRlcigic2Vwb2xpYSIpfSxjbGFzc2ljOntjaGFpbklkOjYxLG5hbWU6ImNsYXNzaWMiLF9kZWZhdWx0UHJvdmlkZXI6ZXRjRGVmYXVsdFByb3ZpZGVyKCJodHRwczovL3d3dy5ldGhlcmNsdXN0ZXIuY29tL2V0YyIsImNsYXNzaWMiKX0sY2xhc3NpY01vcmRlbjp7Y2hhaW5JZDo2MixuYW1lOiJjbGFzc2ljTW9yZGVuIn0sY2xhc3NpY01vcmRvcjpjbGFzc2ljTW9yZG9yLGNsYXNzaWNUZXN0bmV0OmNsYXNzaWNNb3Jkb3IsY2xhc3NpY0tvdHRpOntjaGFpbklkOjYsbmFtZToiY2xhc3NpY0tvdHRpIixfZGVmYXVsdFByb3ZpZGVyOmV0Y0RlZmF1bHRQcm92aWRlcigiaHR0cHM6Ly93d3cuZXRoZXJjbHVzdGVyLmNvbS9rb3R0aSIsImNsYXNzaWNLb3R0aSIpfSx4ZGFpOntjaGFpbklkOjEwMCxuYW1lOiJ4ZGFpIn0sbWF0aWM6e2NoYWluSWQ6MTM3LG5hbWU6Im1hdGljIixfZGVmYXVsdFByb3ZpZGVyOmV0aERlZmF1bHRQcm92aWRlcigibWF0aWMiKX0sbWF0aWNtdW06e2NoYWluSWQ6ODAwMDEsbmFtZToibWF0aWNtdW0ifSxvcHRpbWlzbTp7Y2hhaW5JZDoxMCxuYW1lOiJvcHRpbWlzbSIsX2RlZmF1bHRQcm92aWRlcjpldGhEZWZhdWx0UHJvdmlkZXIoIm9wdGltaXNtIil9LCJvcHRpbWlzbS1rb3ZhbiI6e2NoYWluSWQ6NjksbmFtZToib3B0aW1pc20ta292YW4ifSwib3B0aW1pc20tZ29lcmxpIjp7Y2hhaW5JZDo0MjAsbmFtZToib3B0aW1pc20tZ29lcmxpIn0sYXJiaXRydW06e2NoYWluSWQ6NDIxNjEsbmFtZToiYXJiaXRydW0ifSwiYXJiaXRydW0tcmlua2VieSI6e2NoYWluSWQ6NDIxNjExLG5hbWU6ImFyYml0cnVtLXJpbmtlYnkifSwiYXJiaXRydW0tZ29lcmxpIjp7Y2hhaW5JZDo0MjE2MTMsbmFtZToiYXJiaXRydW0tZ29lcmxpIn0sYm5iOntjaGFpbklkOjU2LG5hbWU6ImJuYiJ9LGJuYnQ6e2NoYWluSWQ6OTcsbmFtZToiYm5idCJ9fTtmdW5jdGlvbiBnZXROZXR3b3JrKG5ldHdvcmspe2lmKG5ldHdvcms9PW51bGwpe3JldHVybiBudWxsfWlmKHR5cGVvZiBuZXR3b3JrPT09Im51bWJlciIpe2Zvcih2YXIgbmFtZV8xIGluIG5ldHdvcmtzKXt2YXIgc3RhbmRhcmRfMT1uZXR3b3Jrc1tuYW1lXzFdO2lmKHN0YW5kYXJkXzEuY2hhaW5JZD09PW5ldHdvcmspe3JldHVybntuYW1lOnN0YW5kYXJkXzEubmFtZSxjaGFpbklkOnN0YW5kYXJkXzEuY2hhaW5JZCxlbnNBZGRyZXNzOnN0YW5kYXJkXzEuZW5zQWRkcmVzc3x8bnVsbCxfZGVmYXVsdFByb3ZpZGVyOnN0YW5kYXJkXzEuX2RlZmF1bHRQcm92aWRlcnx8bnVsbH19fXJldHVybntjaGFpbklkOm5ldHdvcmssbmFtZToidW5rbm93biJ9fWlmKHR5cGVvZiBuZXR3b3JrPT09InN0cmluZyIpe3ZhciBzdGFuZGFyZF8yPW5ldHdvcmtzW25ldHdvcmtdO2lmKHN0YW5kYXJkXzI9PW51bGwpe3JldHVybiBudWxsfXJldHVybntuYW1lOnN0YW5kYXJkXzIubmFtZSxjaGFpbklkOnN0YW5kYXJkXzIuY2hhaW5JZCxlbnNBZGRyZXNzOnN0YW5kYXJkXzIuZW5zQWRkcmVzcyxfZGVmYXVsdFByb3ZpZGVyOnN0YW5kYXJkXzIuX2RlZmF1bHRQcm92aWRlcnx8bnVsbH19dmFyIHN0YW5kYXJkPW5ldHdvcmtzW25ldHdvcmsubmFtZV07aWYoIXN0YW5kYXJkKXtpZih0eXBlb2YgbmV0d29yay5jaGFpbklkIT09Im51bWJlciIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgbmV0d29yayBjaGFpbklkIiwibmV0d29yayIsbmV0d29yayl9cmV0dXJuIG5ldHdvcmt9aWYobmV0d29yay5jaGFpbklkIT09MCYmbmV0d29yay5jaGFpbklkIT09c3RhbmRhcmQuY2hhaW5JZCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibmV0d29yayBjaGFpbklkIG1pc21hdGNoIiwibmV0d29yayIsbmV0d29yayl9dmFyIGRlZmF1bHRQcm92aWRlcj1uZXR3b3JrLl9kZWZhdWx0UHJvdmlkZXJ8fG51bGw7aWYoZGVmYXVsdFByb3ZpZGVyPT1udWxsJiZzdGFuZGFyZC5fZGVmYXVsdFByb3ZpZGVyKXtpZihpc1JlbmV0d29ya2FibGUoc3RhbmRhcmQuX2RlZmF1bHRQcm92aWRlcikpe2RlZmF1bHRQcm92aWRlcj1zdGFuZGFyZC5fZGVmYXVsdFByb3ZpZGVyLnJlbmV0d29yayhuZXR3b3JrKX1lbHNle2RlZmF1bHRQcm92aWRlcj1zdGFuZGFyZC5fZGVmYXVsdFByb3ZpZGVyfX1yZXR1cm57bmFtZTpuZXR3b3JrLm5hbWUsY2hhaW5JZDpzdGFuZGFyZC5jaGFpbklkLGVuc0FkZHJlc3M6bmV0d29yay5lbnNBZGRyZXNzfHxzdGFuZGFyZC5lbnNBZGRyZXNzfHxudWxsLF9kZWZhdWx0UHJvdmlkZXI6ZGVmYXVsdFByb3ZpZGVyfX1leHBvcnRzLmdldE5ldHdvcms9Z2V0TmV0d29ya30pO3ZhciBpbmRleCRwPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiRyKTt2YXIgX3ZlcnNpb24kRz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJ3ZWIvNS43LjEifSk7dmFyIF92ZXJzaW9uJEg9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kRyk7dmFyIGJyb3dzZXJHZXR1cmw9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuZ2V0VXJsPXZvaWQgMDtmdW5jdGlvbiBnZXRVcmwoaHJlZixvcHRpb25zKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciByZXF1ZXN0LG9wdHMscmVzcG9uc2UsYm9keSxoZWFkZXJzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDppZihvcHRpb25zPT1udWxsKXtvcHRpb25zPXt9fXJlcXVlc3Q9e21ldGhvZDpvcHRpb25zLm1ldGhvZHx8IkdFVCIsaGVhZGVyczpvcHRpb25zLmhlYWRlcnN8fHt9LGJvZHk6b3B0aW9ucy5ib2R5fHx1bmRlZmluZWR9O2lmKG9wdGlvbnMuc2tpcEZldGNoU2V0dXAhPT10cnVlKXtyZXF1ZXN0Lm1vZGU9ImNvcnMiO3JlcXVlc3QuY2FjaGU9Im5vLWNhY2hlIjtyZXF1ZXN0LmNyZWRlbnRpYWxzPSJzYW1lLW9yaWdpbiI7cmVxdWVzdC5yZWRpcmVjdD0iZm9sbG93IjtyZXF1ZXN0LnJlZmVycmVyPSJjbGllbnQifTtpZihvcHRpb25zLmZldGNoT3B0aW9ucyE9bnVsbCl7b3B0cz1vcHRpb25zLmZldGNoT3B0aW9ucztpZihvcHRzLm1vZGUpe3JlcXVlc3QubW9kZT1vcHRzLm1vZGV9aWYob3B0cy5jYWNoZSl7cmVxdWVzdC5jYWNoZT1vcHRzLmNhY2hlfWlmKG9wdHMuY3JlZGVudGlhbHMpe3JlcXVlc3QuY3JlZGVudGlhbHM9b3B0cy5jcmVkZW50aWFsc31pZihvcHRzLnJlZGlyZWN0KXtyZXF1ZXN0LnJlZGlyZWN0PW9wdHMucmVkaXJlY3R9aWYob3B0cy5yZWZlcnJlcil7cmVxdWVzdC5yZWZlcnJlcj1vcHRzLnJlZmVycmVyfX1yZXR1cm5bNCxmZXRjaChocmVmLHJlcXVlc3QpXTtjYXNlIDE6cmVzcG9uc2U9X2Euc2VudCgpO3JldHVybls0LHJlc3BvbnNlLmFycmF5QnVmZmVyKCldO2Nhc2UgMjpib2R5PV9hLnNlbnQoKTtoZWFkZXJzPXt9O2lmKHJlc3BvbnNlLmhlYWRlcnMuZm9yRWFjaCl7cmVzcG9uc2UuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLGtleSl7aGVhZGVyc1trZXkudG9Mb3dlckNhc2UoKV09dmFsdWV9KX1lbHNle3Jlc3BvbnNlLmhlYWRlcnMua2V5cygpLmZvckVhY2goZnVuY3Rpb24oa2V5KXtoZWFkZXJzW2tleS50b0xvd2VyQ2FzZSgpXT1yZXNwb25zZS5oZWFkZXJzLmdldChrZXkpfSl9cmV0dXJuWzIse2hlYWRlcnM6aGVhZGVycyxzdGF0dXNDb2RlOnJlc3BvbnNlLnN0YXR1cyxzdGF0dXNNZXNzYWdlOnJlc3BvbnNlLnN0YXR1c1RleHQsYm9keTooMCxsaWIkMS5hcnJheWlmeSkobmV3IFVpbnQ4QXJyYXkoYm9keSkpfV19fSl9KX1leHBvcnRzLmdldFVybD1nZXRVcmx9KTt2YXIgYnJvd3NlckdldHVybCQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGJyb3dzZXJHZXR1cmwpO3ZhciBsaWIkcz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2F3YWl0ZXI9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fYXdhaXRlcnx8ZnVuY3Rpb24odGhpc0FyZyxfYXJndW1lbnRzLFAsZ2VuZXJhdG9yKXtmdW5jdGlvbiBhZG9wdCh2YWx1ZSl7cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUD92YWx1ZTpuZXcgUChmdW5jdGlvbihyZXNvbHZlKXtyZXNvbHZlKHZhbHVlKX0pfXJldHVybiBuZXcoUHx8KFA9UHJvbWlzZSkpKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiByZWplY3RlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yWyJ0aHJvdyJdKHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiBzdGVwKHJlc3VsdCl7cmVzdWx0LmRvbmU/cmVzb2x2ZShyZXN1bHQudmFsdWUpOmFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQscmVqZWN0ZWQpfXN0ZXAoKGdlbmVyYXRvcj1nZW5lcmF0b3IuYXBwbHkodGhpc0FyZyxfYXJndW1lbnRzfHxbXSkpLm5leHQoKSl9KX07dmFyIF9fZ2VuZXJhdG9yPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odGhpc0FyZyxib2R5KXt2YXIgXz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYodFswXSYxKXRocm93IHRbMV07cmV0dXJuIHRbMV19LHRyeXM6W10sb3BzOltdfSxmLHksdCxnO3JldHVybiBnPXtuZXh0OnZlcmIoMCksdGhyb3c6dmVyYigxKSxyZXR1cm46dmVyYigyKX0sdHlwZW9mIFN5bWJvbD09PSJmdW5jdGlvbiImJihnW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGc7ZnVuY3Rpb24gdmVyYihuKXtyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuIHN0ZXAoW24sdl0pfX1mdW5jdGlvbiBzdGVwKG9wKXtpZihmKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTt3aGlsZShfKXRyeXtpZihmPTEseSYmKHQ9b3BbMF0mMj95WyJyZXR1cm4iXTpvcFswXT95WyJ0aHJvdyJdfHwoKHQ9eVsicmV0dXJuIl0pJiZ0LmNhbGwoeSksMCk6eS5uZXh0KSYmISh0PXQuY2FsbCh5LG9wWzFdKSkuZG9uZSlyZXR1cm4gdDtpZih5PTAsdClvcD1bb3BbMF0mMix0LnZhbHVlXTtzd2l0Y2gob3BbMF0pe2Nhc2UgMDpjYXNlIDE6dD1vcDticmVhaztjYXNlIDQ6Xy5sYWJlbCsrO3JldHVybnt2YWx1ZTpvcFsxXSxkb25lOmZhbHNlfTtjYXNlIDU6Xy5sYWJlbCsrO3k9b3BbMV07b3A9WzBdO2NvbnRpbnVlO2Nhc2UgNzpvcD1fLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHQ9Xy50cnlzLHQ9dC5sZW5ndGg+MCYmdFt0Lmxlbmd0aC0xXSkmJihvcFswXT09PTZ8fG9wWzBdPT09Mikpe189MDtjb250aW51ZX1pZihvcFswXT09PTMmJighdHx8b3BbMV0+dFswXSYmb3BbMV08dFszXSkpe18ubGFiZWw9b3BbMV07YnJlYWt9aWYob3BbMF09PT02JiZfLmxhYmVsPHRbMV0pe18ubGFiZWw9dFsxXTt0PW9wO2JyZWFrfWlmKHQmJl8ubGFiZWw8dFsyXSl7Xy5sYWJlbD10WzJdO18ub3BzLnB1c2gob3ApO2JyZWFrfWlmKHRbMl0pXy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlfW9wPWJvZHkuY2FsbCh0aGlzQXJnLF8pfWNhdGNoKGUpe29wPVs2LGVdO3k9MH1maW5hbGx5e2Y9dD0wfWlmKG9wWzBdJjUpdGhyb3cgb3BbMV07cmV0dXJue3ZhbHVlOm9wWzBdP29wWzFdOnZvaWQgMCxkb25lOnRydWV9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5wb2xsPWV4cG9ydHMuZmV0Y2hKc29uPWV4cG9ydHMuX2ZldGNoRGF0YT12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRHLnZlcnNpb24pO2Z1bmN0aW9uIHN0YWxsZXIoZHVyYXRpb24pe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKXtzZXRUaW1lb3V0KHJlc29sdmUsZHVyYXRpb24pfSl9ZnVuY3Rpb24gYm9keWlmeSh2YWx1ZSx0eXBlKXtpZih2YWx1ZT09bnVsbCl7cmV0dXJuIG51bGx9aWYodHlwZW9mIHZhbHVlPT09InN0cmluZyIpe3JldHVybiB2YWx1ZX1pZigoMCxsaWIkMS5pc0J5dGVzTGlrZSkodmFsdWUpKXtpZih0eXBlJiYodHlwZS5zcGxpdCgiLyIpWzBdPT09InRleHQifHx0eXBlLnNwbGl0KCI7IilbMF0udHJpbSgpPT09ImFwcGxpY2F0aW9uL2pzb24iKSl7dHJ5e3JldHVybigwLGxpYiQ4LnRvVXRmOFN0cmluZykodmFsdWUpfWNhdGNoKGVycm9yKXt9fXJldHVybigwLGxpYiQxLmhleGxpZnkpKHZhbHVlKX1yZXR1cm4gdmFsdWV9ZnVuY3Rpb24gdW5wZXJjZW50KHZhbHVlKXtyZXR1cm4oMCxsaWIkOC50b1V0ZjhCeXRlcykodmFsdWUucmVwbGFjZSgvJShbMC05YS1mXVswLTlhLWZdKS9naSxmdW5jdGlvbihhbGwsY29kZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoY29kZSwxNikpfSkpfWZ1bmN0aW9uIF9mZXRjaERhdGEoY29ubmVjdGlvbixib2R5LHByb2Nlc3NGdW5jKXt2YXIgYXR0ZW1wdExpbWl0PXR5cGVvZiBjb25uZWN0aW9uPT09Im9iamVjdCImJmNvbm5lY3Rpb24udGhyb3R0bGVMaW1pdCE9bnVsbD9jb25uZWN0aW9uLnRocm90dGxlTGltaXQ6MTI7bG9nZ2VyLmFzc2VydEFyZ3VtZW50KGF0dGVtcHRMaW1pdD4wJiZhdHRlbXB0TGltaXQlMT09PTAsImludmFsaWQgY29ubmVjdGlvbiB0aHJvdHRsZSBsaW1pdCIsImNvbm5lY3Rpb24udGhyb3R0bGVMaW1pdCIsYXR0ZW1wdExpbWl0KTt2YXIgdGhyb3R0bGVDYWxsYmFjaz10eXBlb2YgY29ubmVjdGlvbj09PSJvYmplY3QiP2Nvbm5lY3Rpb24udGhyb3R0bGVDYWxsYmFjazpudWxsO3ZhciB0aHJvdHRsZVNsb3RJbnRlcnZhbD10eXBlb2YgY29ubmVjdGlvbj09PSJvYmplY3QiJiZ0eXBlb2YgY29ubmVjdGlvbi50aHJvdHRsZVNsb3RJbnRlcnZhbD09PSJudW1iZXIiP2Nvbm5lY3Rpb24udGhyb3R0bGVTbG90SW50ZXJ2YWw6MTAwO2xvZ2dlci5hc3NlcnRBcmd1bWVudCh0aHJvdHRsZVNsb3RJbnRlcnZhbD4wJiZ0aHJvdHRsZVNsb3RJbnRlcnZhbCUxPT09MCwiaW52YWxpZCBjb25uZWN0aW9uIHRocm90dGxlIHNsb3QgaW50ZXJ2YWwiLCJjb25uZWN0aW9uLnRocm90dGxlU2xvdEludGVydmFsIix0aHJvdHRsZVNsb3RJbnRlcnZhbCk7dmFyIGVycm9yUGFzc1Rocm91Z2g9dHlwZW9mIGNvbm5lY3Rpb249PT0ib2JqZWN0Ij8hIWNvbm5lY3Rpb24uZXJyb3JQYXNzVGhyb3VnaDpmYWxzZTt2YXIgaGVhZGVycz17fTt2YXIgdXJsPW51bGw7dmFyIG9wdGlvbnM9e21ldGhvZDoiR0VUIn07dmFyIGFsbG93MzA0PWZhbHNlO3ZhciB0aW1lb3V0PTIqNjAqMWUzO2lmKHR5cGVvZiBjb25uZWN0aW9uPT09InN0cmluZyIpe3VybD1jb25uZWN0aW9ufWVsc2UgaWYodHlwZW9mIGNvbm5lY3Rpb249PT0ib2JqZWN0Iil7aWYoY29ubmVjdGlvbj09bnVsbHx8Y29ubmVjdGlvbi51cmw9PW51bGwpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoIm1pc3NpbmcgVVJMIiwiY29ubmVjdGlvbi51cmwiLGNvbm5lY3Rpb24pfXVybD1jb25uZWN0aW9uLnVybDtpZih0eXBlb2YgY29ubmVjdGlvbi50aW1lb3V0PT09Im51bWJlciImJmNvbm5lY3Rpb24udGltZW91dD4wKXt0aW1lb3V0PWNvbm5lY3Rpb24udGltZW91dH1pZihjb25uZWN0aW9uLmhlYWRlcnMpe2Zvcih2YXIga2V5IGluIGNvbm5lY3Rpb24uaGVhZGVycyl7aGVhZGVyc1trZXkudG9Mb3dlckNhc2UoKV09e2tleTprZXksdmFsdWU6U3RyaW5nKGNvbm5lY3Rpb24uaGVhZGVyc1trZXldKX07aWYoWyJpZi1ub25lLW1hdGNoIiwiaWYtbW9kaWZpZWQtc2luY2UiXS5pbmRleE9mKGtleS50b0xvd2VyQ2FzZSgpKT49MCl7YWxsb3czMDQ9dHJ1ZX19fW9wdGlvbnMuYWxsb3dHemlwPSEhY29ubmVjdGlvbi5hbGxvd0d6aXA7aWYoY29ubmVjdGlvbi51c2VyIT1udWxsJiZjb25uZWN0aW9uLnBhc3N3b3JkIT1udWxsKXtpZih1cmwuc3Vic3RyaW5nKDAsNikhPT0iaHR0cHM6IiYmY29ubmVjdGlvbi5hbGxvd0luc2VjdXJlQXV0aGVudGljYXRpb24hPT10cnVlKXtsb2dnZXIudGhyb3dFcnJvcigiYmFzaWMgYXV0aGVudGljYXRpb24gcmVxdWlyZXMgYSBzZWN1cmUgaHR0cHMgdXJsIixsaWIuTG9nZ2VyLmVycm9ycy5JTlZBTElEX0FSR1VNRU5ULHthcmd1bWVudDoidXJsIix1cmw6dXJsLHVzZXI6Y29ubmVjdGlvbi51c2VyLHBhc3N3b3JkOiJbUkVEQUNURURdIn0pfXZhciBhdXRob3JpemF0aW9uPWNvbm5lY3Rpb24udXNlcisiOiIrY29ubmVjdGlvbi5wYXNzd29yZDtoZWFkZXJzWyJhdXRob3JpemF0aW9uIl09e2tleToiQXV0aG9yaXphdGlvbiIsdmFsdWU6IkJhc2ljICIrKDAsbGliJDkuZW5jb2RlKSgoMCxsaWIkOC50b1V0ZjhCeXRlcykoYXV0aG9yaXphdGlvbikpfX1pZihjb25uZWN0aW9uLnNraXBGZXRjaFNldHVwIT1udWxsKXtvcHRpb25zLnNraXBGZXRjaFNldHVwPSEhY29ubmVjdGlvbi5za2lwRmV0Y2hTZXR1cH1pZihjb25uZWN0aW9uLmZldGNoT3B0aW9ucyE9bnVsbCl7b3B0aW9ucy5mZXRjaE9wdGlvbnM9KDAsbGliJDMuc2hhbGxvd0NvcHkpKGNvbm5lY3Rpb24uZmV0Y2hPcHRpb25zKX19dmFyIHJlRGF0YT1uZXcgUmVnRXhwKCJeZGF0YTooW147Ol0qKT8oO2Jhc2U2NCk/LCguKikkIiwiaSIpO3ZhciBkYXRhTWF0Y2g9dXJsP3VybC5tYXRjaChyZURhdGEpOm51bGw7aWYoZGF0YU1hdGNoKXt0cnl7dmFyIHJlc3BvbnNlPXtzdGF0dXNDb2RlOjIwMCxzdGF0dXNNZXNzYWdlOiJPSyIsaGVhZGVyczp7ImNvbnRlbnQtdHlwZSI6ZGF0YU1hdGNoWzFdfHwidGV4dC9wbGFpbiJ9LGJvZHk6ZGF0YU1hdGNoWzJdPygwLGxpYiQ5LmRlY29kZSkoZGF0YU1hdGNoWzNdKTp1bnBlcmNlbnQoZGF0YU1hdGNoWzNdKX07dmFyIHJlc3VsdD1yZXNwb25zZS5ib2R5O2lmKHByb2Nlc3NGdW5jKXtyZXN1bHQ9cHJvY2Vzc0Z1bmMocmVzcG9uc2UuYm9keSxyZXNwb25zZSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpfWNhdGNoKGVycm9yKXtsb2dnZXIudGhyb3dFcnJvcigicHJvY2Vzc2luZyByZXNwb25zZSBlcnJvciIsbGliLkxvZ2dlci5lcnJvcnMuU0VSVkVSX0VSUk9SLHtib2R5OmJvZHlpZnkoZGF0YU1hdGNoWzFdLGRhdGFNYXRjaFsyXSksZXJyb3I6ZXJyb3IscmVxdWVzdEJvZHk6bnVsbCxyZXF1ZXN0TWV0aG9kOiJHRVQiLHVybDp1cmx9KX19aWYoYm9keSl7b3B0aW9ucy5tZXRob2Q9IlBPU1QiO29wdGlvbnMuYm9keT1ib2R5O2lmKGhlYWRlcnNbImNvbnRlbnQtdHlwZSJdPT1udWxsKXtoZWFkZXJzWyJjb250ZW50LXR5cGUiXT17a2V5OiJDb250ZW50LVR5cGUiLHZhbHVlOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifX1pZihoZWFkZXJzWyJjb250ZW50LWxlbmd0aCJdPT1udWxsKXtoZWFkZXJzWyJjb250ZW50LWxlbmd0aCJdPXtrZXk6IkNvbnRlbnQtTGVuZ3RoIix2YWx1ZTpTdHJpbmcoYm9keS5sZW5ndGgpfX19dmFyIGZsYXRIZWFkZXJzPXt9O09iamVjdC5rZXlzKGhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24oa2V5KXt2YXIgaGVhZGVyPWhlYWRlcnNba2V5XTtmbGF0SGVhZGVyc1toZWFkZXIua2V5XT1oZWFkZXIudmFsdWV9KTtvcHRpb25zLmhlYWRlcnM9ZmxhdEhlYWRlcnM7dmFyIHJ1bm5pbmdUaW1lb3V0PWZ1bmN0aW9uKCl7dmFyIHRpbWVyPW51bGw7dmFyIHByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2lmKHRpbWVvdXQpe3RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZih0aW1lcj09bnVsbCl7cmV0dXJufXRpbWVyPW51bGw7cmVqZWN0KGxvZ2dlci5tYWtlRXJyb3IoInRpbWVvdXQiLGxpYi5Mb2dnZXIuZXJyb3JzLlRJTUVPVVQse3JlcXVlc3RCb2R5OmJvZHlpZnkob3B0aW9ucy5ib2R5LGZsYXRIZWFkZXJzWyJjb250ZW50LXR5cGUiXSkscmVxdWVzdE1ldGhvZDpvcHRpb25zLm1ldGhvZCx0aW1lb3V0OnRpbWVvdXQsdXJsOnVybH0pKX0sdGltZW91dCl9fSk7dmFyIGNhbmNlbD1mdW5jdGlvbigpe2lmKHRpbWVyPT1udWxsKXtyZXR1cm59Y2xlYXJUaW1lb3V0KHRpbWVyKTt0aW1lcj1udWxsfTtyZXR1cm57cHJvbWlzZTpwcm9taXNlLGNhbmNlbDpjYW5jZWx9fSgpO3ZhciBydW5uaW5nRmV0Y2g9ZnVuY3Rpb24oKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBhdHRlbXB0LHJlc3BvbnNlLGxvY2F0aW9uXzEsdHJ5QWdhaW4sc3RhbGwscmV0cnlBZnRlcixlcnJvcl8xLGJvZHlfMSxyZXN1bHQsZXJyb3JfMix0cnlBZ2Fpbix0aW1lb3V0XzE7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmF0dGVtcHQ9MDtfYS5sYWJlbD0xO2Nhc2UgMTppZighKGF0dGVtcHQ8YXR0ZW1wdExpbWl0KSlyZXR1cm5bMywyMF07cmVzcG9uc2U9bnVsbDtfYS5sYWJlbD0yO2Nhc2UgMjpfYS50cnlzLnB1c2goWzIsOSwsMTBdKTtyZXR1cm5bNCwoMCxicm93c2VyR2V0dXJsLmdldFVybCkodXJsLG9wdGlvbnMpXTtjYXNlIDM6cmVzcG9uc2U9X2Euc2VudCgpO2lmKCEoYXR0ZW1wdDxhdHRlbXB0TGltaXQpKXJldHVyblszLDhdO2lmKCEocmVzcG9uc2Uuc3RhdHVzQ29kZT09PTMwMXx8cmVzcG9uc2Uuc3RhdHVzQ29kZT09PTMwMikpcmV0dXJuWzMsNF07bG9jYXRpb25fMT1yZXNwb25zZS5oZWFkZXJzLmxvY2F0aW9ufHwiIjtpZihvcHRpb25zLm1ldGhvZD09PSJHRVQiJiZsb2NhdGlvbl8xLm1hdGNoKC9eaHR0cHM6Lykpe3VybD1yZXNwb25zZS5oZWFkZXJzLmxvY2F0aW9uO3JldHVyblszLDE5XX1yZXR1cm5bMyw4XTtjYXNlIDQ6aWYoIShyZXNwb25zZS5zdGF0dXNDb2RlPT09NDI5KSlyZXR1cm5bMyw4XTt0cnlBZ2Fpbj10cnVlO2lmKCF0aHJvdHRsZUNhbGxiYWNrKXJldHVyblszLDZdO3JldHVybls0LHRocm90dGxlQ2FsbGJhY2soYXR0ZW1wdCx1cmwpXTtjYXNlIDU6dHJ5QWdhaW49X2Euc2VudCgpO19hLmxhYmVsPTY7Y2FzZSA2OmlmKCF0cnlBZ2FpbilyZXR1cm5bMyw4XTtzdGFsbD0wO3JldHJ5QWZ0ZXI9cmVzcG9uc2UuaGVhZGVyc1sicmV0cnktYWZ0ZXIiXTtpZih0eXBlb2YgcmV0cnlBZnRlcj09PSJzdHJpbmciJiZyZXRyeUFmdGVyLm1hdGNoKC9eWzEtOV1bMC05XSokLykpe3N0YWxsPXBhcnNlSW50KHJldHJ5QWZ0ZXIpKjFlM31lbHNle3N0YWxsPXRocm90dGxlU2xvdEludGVydmFsKnBhcnNlSW50KFN0cmluZyhNYXRoLnJhbmRvbSgpKk1hdGgucG93KDIsYXR0ZW1wdCkpKX1yZXR1cm5bNCxzdGFsbGVyKHN0YWxsKV07Y2FzZSA3Ol9hLnNlbnQoKTtyZXR1cm5bMywxOV07Y2FzZSA4OnJldHVyblszLDEwXTtjYXNlIDk6ZXJyb3JfMT1fYS5zZW50KCk7cmVzcG9uc2U9ZXJyb3JfMS5yZXNwb25zZTtpZihyZXNwb25zZT09bnVsbCl7cnVubmluZ1RpbWVvdXQuY2FuY2VsKCk7bG9nZ2VyLnRocm93RXJyb3IoIm1pc3NpbmcgcmVzcG9uc2UiLGxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUix7cmVxdWVzdEJvZHk6Ym9keWlmeShvcHRpb25zLmJvZHksZmxhdEhlYWRlcnNbImNvbnRlbnQtdHlwZSJdKSxyZXF1ZXN0TWV0aG9kOm9wdGlvbnMubWV0aG9kLHNlcnZlckVycm9yOmVycm9yXzEsdXJsOnVybH0pfXJldHVyblszLDEwXTtjYXNlIDEwOmJvZHlfMT1yZXNwb25zZS5ib2R5O2lmKGFsbG93MzA0JiZyZXNwb25zZS5zdGF0dXNDb2RlPT09MzA0KXtib2R5XzE9bnVsbH1lbHNlIGlmKCFlcnJvclBhc3NUaHJvdWdoJiYocmVzcG9uc2Uuc3RhdHVzQ29kZTwyMDB8fHJlc3BvbnNlLnN0YXR1c0NvZGU+PTMwMCkpe3J1bm5pbmdUaW1lb3V0LmNhbmNlbCgpO2xvZ2dlci50aHJvd0Vycm9yKCJiYWQgcmVzcG9uc2UiLGxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUix7c3RhdHVzOnJlc3BvbnNlLnN0YXR1c0NvZGUsaGVhZGVyczpyZXNwb25zZS5oZWFkZXJzLGJvZHk6Ym9keWlmeShib2R5XzEscmVzcG9uc2UuaGVhZGVycz9yZXNwb25zZS5oZWFkZXJzWyJjb250ZW50LXR5cGUiXTpudWxsKSxyZXF1ZXN0Qm9keTpib2R5aWZ5KG9wdGlvbnMuYm9keSxmbGF0SGVhZGVyc1siY29udGVudC10eXBlIl0pLHJlcXVlc3RNZXRob2Q6b3B0aW9ucy5tZXRob2QsdXJsOnVybH0pfWlmKCFwcm9jZXNzRnVuYylyZXR1cm5bMywxOF07X2EubGFiZWw9MTE7Y2FzZSAxMTpfYS50cnlzLnB1c2goWzExLDEzLCwxOF0pO3JldHVybls0LHByb2Nlc3NGdW5jKGJvZHlfMSxyZXNwb25zZSldO2Nhc2UgMTI6cmVzdWx0PV9hLnNlbnQoKTtydW5uaW5nVGltZW91dC5jYW5jZWwoKTtyZXR1cm5bMixyZXN1bHRdO2Nhc2UgMTM6ZXJyb3JfMj1fYS5zZW50KCk7aWYoIShlcnJvcl8yLnRocm90dGxlUmV0cnkmJmF0dGVtcHQ8YXR0ZW1wdExpbWl0KSlyZXR1cm5bMywxN107dHJ5QWdhaW49dHJ1ZTtpZighdGhyb3R0bGVDYWxsYmFjaylyZXR1cm5bMywxNV07cmV0dXJuWzQsdGhyb3R0bGVDYWxsYmFjayhhdHRlbXB0LHVybCldO2Nhc2UgMTQ6dHJ5QWdhaW49X2Euc2VudCgpO19hLmxhYmVsPTE1O2Nhc2UgMTU6aWYoIXRyeUFnYWluKXJldHVyblszLDE3XTt0aW1lb3V0XzE9dGhyb3R0bGVTbG90SW50ZXJ2YWwqcGFyc2VJbnQoU3RyaW5nKE1hdGgucmFuZG9tKCkqTWF0aC5wb3coMixhdHRlbXB0KSkpO3JldHVybls0LHN0YWxsZXIodGltZW91dF8xKV07Y2FzZSAxNjpfYS5zZW50KCk7cmV0dXJuWzMsMTldO2Nhc2UgMTc6cnVubmluZ1RpbWVvdXQuY2FuY2VsKCk7bG9nZ2VyLnRocm93RXJyb3IoInByb2Nlc3NpbmcgcmVzcG9uc2UgZXJyb3IiLGxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUix7Ym9keTpib2R5aWZ5KGJvZHlfMSxyZXNwb25zZS5oZWFkZXJzP3Jlc3BvbnNlLmhlYWRlcnNbImNvbnRlbnQtdHlwZSJdOm51bGwpLGVycm9yOmVycm9yXzIscmVxdWVzdEJvZHk6Ym9keWlmeShvcHRpb25zLmJvZHksZmxhdEhlYWRlcnNbImNvbnRlbnQtdHlwZSJdKSxyZXF1ZXN0TWV0aG9kOm9wdGlvbnMubWV0aG9kLHVybDp1cmx9KTtyZXR1cm5bMywxOF07Y2FzZSAxODpydW5uaW5nVGltZW91dC5jYW5jZWwoKTtyZXR1cm5bMixib2R5XzFdO2Nhc2UgMTk6YXR0ZW1wdCsrO3JldHVyblszLDFdO2Nhc2UgMjA6cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoImZhaWxlZCByZXNwb25zZSIsbGliLkxvZ2dlci5lcnJvcnMuU0VSVkVSX0VSUk9SLHtyZXF1ZXN0Qm9keTpib2R5aWZ5KG9wdGlvbnMuYm9keSxmbGF0SGVhZGVyc1siY29udGVudC10eXBlIl0pLHJlcXVlc3RNZXRob2Q6b3B0aW9ucy5tZXRob2QsdXJsOnVybH0pXX19KX0pfSgpO3JldHVybiBQcm9taXNlLnJhY2UoW3J1bm5pbmdUaW1lb3V0LnByb21pc2UscnVubmluZ0ZldGNoXSl9ZXhwb3J0cy5fZmV0Y2hEYXRhPV9mZXRjaERhdGE7ZnVuY3Rpb24gZmV0Y2hKc29uKGNvbm5lY3Rpb24sanNvbixwcm9jZXNzRnVuYyl7dmFyIHByb2Nlc3NKc29uRnVuYz1mdW5jdGlvbih2YWx1ZSxyZXNwb25zZSl7dmFyIHJlc3VsdD1udWxsO2lmKHZhbHVlIT1udWxsKXt0cnl7cmVzdWx0PUpTT04ucGFyc2UoKDAsbGliJDgudG9VdGY4U3RyaW5nKSh2YWx1ZSkpfWNhdGNoKGVycm9yKXtsb2dnZXIudGhyb3dFcnJvcigiaW52YWxpZCBKU09OIixsaWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1Ise2JvZHk6dmFsdWUsZXJyb3I6ZXJyb3J9KX19aWYocHJvY2Vzc0Z1bmMpe3Jlc3VsdD1wcm9jZXNzRnVuYyhyZXN1bHQscmVzcG9uc2UpfXJldHVybiByZXN1bHR9O3ZhciBib2R5PW51bGw7aWYoanNvbiE9bnVsbCl7Ym9keT0oMCxsaWIkOC50b1V0ZjhCeXRlcykoanNvbik7dmFyIHVwZGF0ZWQ9dHlwZW9mIGNvbm5lY3Rpb249PT0ic3RyaW5nIj97dXJsOmNvbm5lY3Rpb259OigwLGxpYiQzLnNoYWxsb3dDb3B5KShjb25uZWN0aW9uKTtpZih1cGRhdGVkLmhlYWRlcnMpe3ZhciBoYXNDb250ZW50VHlwZT1PYmplY3Qua2V5cyh1cGRhdGVkLmhlYWRlcnMpLmZpbHRlcihmdW5jdGlvbihrKXtyZXR1cm4gay50b0xvd2VyQ2FzZSgpPT09ImNvbnRlbnQtdHlwZSJ9KS5sZW5ndGghPT0wO2lmKCFoYXNDb250ZW50VHlwZSl7dXBkYXRlZC5oZWFkZXJzPSgwLGxpYiQzLnNoYWxsb3dDb3B5KSh1cGRhdGVkLmhlYWRlcnMpO3VwZGF0ZWQuaGVhZGVyc1siY29udGVudC10eXBlIl09ImFwcGxpY2F0aW9uL2pzb24ifX1lbHNle3VwZGF0ZWQuaGVhZGVycz17ImNvbnRlbnQtdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifX1jb25uZWN0aW9uPXVwZGF0ZWR9cmV0dXJuIF9mZXRjaERhdGEoY29ubmVjdGlvbixib2R5LHByb2Nlc3NKc29uRnVuYyl9ZXhwb3J0cy5mZXRjaEpzb249ZmV0Y2hKc29uO2Z1bmN0aW9uIHBvbGwoZnVuYyxvcHRpb25zKXtpZighb3B0aW9ucyl7b3B0aW9ucz17fX1vcHRpb25zPSgwLGxpYiQzLnNoYWxsb3dDb3B5KShvcHRpb25zKTtpZihvcHRpb25zLmZsb29yPT1udWxsKXtvcHRpb25zLmZsb29yPTB9aWYob3B0aW9ucy5jZWlsaW5nPT1udWxsKXtvcHRpb25zLmNlaWxpbmc9MWU0fWlmKG9wdGlvbnMuaW50ZXJ2YWw9PW51bGwpe29wdGlvbnMuaW50ZXJ2YWw9MjUwfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7dmFyIHRpbWVyPW51bGw7dmFyIGRvbmU9ZmFsc2U7dmFyIGNhbmNlbD1mdW5jdGlvbigpe2lmKGRvbmUpe3JldHVybiBmYWxzZX1kb25lPXRydWU7aWYodGltZXIpe2NsZWFyVGltZW91dCh0aW1lcil9cmV0dXJuIHRydWV9O2lmKG9wdGlvbnMudGltZW91dCl7dGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe2lmKGNhbmNlbCgpKXtyZWplY3QobmV3IEVycm9yKCJ0aW1lb3V0IikpfX0sb3B0aW9ucy50aW1lb3V0KX12YXIgcmV0cnlMaW1pdD1vcHRpb25zLnJldHJ5TGltaXQ7dmFyIGF0dGVtcHQ9MDtmdW5jdGlvbiBjaGVjaygpe3JldHVybiBmdW5jKCkudGhlbihmdW5jdGlvbihyZXN1bHQpe2lmKHJlc3VsdCE9PXVuZGVmaW5lZCl7aWYoY2FuY2VsKCkpe3Jlc29sdmUocmVzdWx0KX19ZWxzZSBpZihvcHRpb25zLm9uY2VQb2xsKXtvcHRpb25zLm9uY2VQb2xsLm9uY2UoInBvbGwiLGNoZWNrKX1lbHNlIGlmKG9wdGlvbnMub25jZUJsb2NrKXtvcHRpb25zLm9uY2VCbG9jay5vbmNlKCJibG9jayIsY2hlY2spfWVsc2UgaWYoIWRvbmUpe2F0dGVtcHQrKztpZihhdHRlbXB0PnJldHJ5TGltaXQpe2lmKGNhbmNlbCgpKXtyZWplY3QobmV3IEVycm9yKCJyZXRyeSBsaW1pdCByZWFjaGVkIikpfXJldHVybn12YXIgdGltZW91dD1vcHRpb25zLmludGVydmFsKnBhcnNlSW50KFN0cmluZyhNYXRoLnJhbmRvbSgpKk1hdGgucG93KDIsYXR0ZW1wdCkpKTtpZih0aW1lb3V0PG9wdGlvbnMuZmxvb3Ipe3RpbWVvdXQ9b3B0aW9ucy5mbG9vcn1pZih0aW1lb3V0Pm9wdGlvbnMuY2VpbGluZyl7dGltZW91dD1vcHRpb25zLmNlaWxpbmd9c2V0VGltZW91dChjaGVjayx0aW1lb3V0KX1yZXR1cm4gbnVsbH0sZnVuY3Rpb24oZXJyb3Ipe2lmKGNhbmNlbCgpKXtyZWplY3QoZXJyb3IpfX0pfWNoZWNrKCl9KX1leHBvcnRzLnBvbGw9cG9sbH0pO3ZhciBpbmRleCRxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiRzKTsidXNlIHN0cmljdCI7dmFyIEFMUEhBQkVUPSJxcHpyeTl4OGdmMnR2ZHcwczNqbjU0a2hjZTZtdWE3bCI7dmFyIEFMUEhBQkVUX01BUD17fTtmb3IodmFyIHo9MDt6PEFMUEhBQkVULmxlbmd0aDt6Kyspe3ZhciB4PUFMUEhBQkVULmNoYXJBdCh6KTtpZihBTFBIQUJFVF9NQVBbeF0hPT11bmRlZmluZWQpdGhyb3cgbmV3IFR5cGVFcnJvcih4KyIgaXMgYW1iaWd1b3VzIik7QUxQSEFCRVRfTUFQW3hdPXp9ZnVuY3Rpb24gcG9seW1vZFN0ZXAocHJlKXt2YXIgYj1wcmU+PjI1O3JldHVybihwcmUmMzM1NTQ0MzEpPDw1Xi0oYj4+MCYxKSY5OTY4MjUwMTBeLShiPj4xJjEpJjY0MjgxMzU0OV4tKGI+PjImMSkmNTEzODc0NDI2Xi0oYj4+MyYxKSYxMDI3NzQ4ODI5Xi0oYj4+NCYxKSY3MDU5NzkwNTl9ZnVuY3Rpb24gcHJlZml4Q2hrKHByZWZpeCl7dmFyIGNoaz0xO2Zvcih2YXIgaT0wO2k8cHJlZml4Lmxlbmd0aDsrK2kpe3ZhciBjPXByZWZpeC5jaGFyQ29kZUF0KGkpO2lmKGM8MzN8fGM+MTI2KXJldHVybiJJbnZhbGlkIHByZWZpeCAoIitwcmVmaXgrIikiO2Noaz1wb2x5bW9kU3RlcChjaGspXmM+PjV9Y2hrPXBvbHltb2RTdGVwKGNoayk7Zm9yKGk9MDtpPHByZWZpeC5sZW5ndGg7KytpKXt2YXIgdj1wcmVmaXguY2hhckNvZGVBdChpKTtjaGs9cG9seW1vZFN0ZXAoY2hrKV52JjMxfXJldHVybiBjaGt9ZnVuY3Rpb24gZW5jb2RlKHByZWZpeCx3b3JkcyxMSU1JVCl7TElNSVQ9TElNSVR8fDkwO2lmKHByZWZpeC5sZW5ndGgrNyt3b3Jkcy5sZW5ndGg+TElNSVQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhjZWVkcyBsZW5ndGggbGltaXQiKTtwcmVmaXg9cHJlZml4LnRvTG93ZXJDYXNlKCk7dmFyIGNoaz1wcmVmaXhDaGsocHJlZml4KTtpZih0eXBlb2YgY2hrPT09InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKGNoayk7dmFyIHJlc3VsdD1wcmVmaXgrIjEiO2Zvcih2YXIgaT0wO2k8d29yZHMubGVuZ3RoOysraSl7dmFyIHg9d29yZHNbaV07aWYoeD4+NSE9PTApdGhyb3cgbmV3IEVycm9yKCJOb24gNS1iaXQgd29yZCIpO2Noaz1wb2x5bW9kU3RlcChjaGspXng7cmVzdWx0Kz1BTFBIQUJFVC5jaGFyQXQoeCl9Zm9yKGk9MDtpPDY7KytpKXtjaGs9cG9seW1vZFN0ZXAoY2hrKX1jaGtePTE7Zm9yKGk9MDtpPDY7KytpKXt2YXIgdj1jaGs+Pig1LWkpKjUmMzE7cmVzdWx0Kz1BTFBIQUJFVC5jaGFyQXQodil9cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBfX2RlY29kZShzdHIsTElNSVQpe0xJTUlUPUxJTUlUfHw5MDtpZihzdHIubGVuZ3RoPDgpcmV0dXJuIHN0cisiIHRvbyBzaG9ydCI7aWYoc3RyLmxlbmd0aD5MSU1JVClyZXR1cm4iRXhjZWVkcyBsZW5ndGggbGltaXQiO3ZhciBsb3dlcmVkPXN0ci50b0xvd2VyQ2FzZSgpO3ZhciB1cHBlcmVkPXN0ci50b1VwcGVyQ2FzZSgpO2lmKHN0ciE9PWxvd2VyZWQmJnN0ciE9PXVwcGVyZWQpcmV0dXJuIk1peGVkLWNhc2Ugc3RyaW5nICIrc3RyO3N0cj1sb3dlcmVkO3ZhciBzcGxpdD1zdHIubGFzdEluZGV4T2YoIjEiKTtpZihzcGxpdD09PS0xKXJldHVybiJObyBzZXBhcmF0b3IgY2hhcmFjdGVyIGZvciAiK3N0cjtpZihzcGxpdD09PTApcmV0dXJuIk1pc3NpbmcgcHJlZml4IGZvciAiK3N0cjt2YXIgcHJlZml4PXN0ci5zbGljZSgwLHNwbGl0KTt2YXIgd29yZENoYXJzPXN0ci5zbGljZShzcGxpdCsxKTtpZih3b3JkQ2hhcnMubGVuZ3RoPDYpcmV0dXJuIkRhdGEgdG9vIHNob3J0Ijt2YXIgY2hrPXByZWZpeENoayhwcmVmaXgpO2lmKHR5cGVvZiBjaGs9PT0ic3RyaW5nIilyZXR1cm4gY2hrO3ZhciB3b3Jkcz1bXTtmb3IodmFyIGk9MDtpPHdvcmRDaGFycy5sZW5ndGg7KytpKXt2YXIgYz13b3JkQ2hhcnMuY2hhckF0KGkpO3ZhciB2PUFMUEhBQkVUX01BUFtjXTtpZih2PT09dW5kZWZpbmVkKXJldHVybiJVbmtub3duIGNoYXJhY3RlciAiK2M7Y2hrPXBvbHltb2RTdGVwKGNoayledjtpZihpKzY+PXdvcmRDaGFycy5sZW5ndGgpY29udGludWU7d29yZHMucHVzaCh2KX1pZihjaGshPT0xKXJldHVybiJJbnZhbGlkIGNoZWNrc3VtIGZvciAiK3N0cjtyZXR1cm57cHJlZml4OnByZWZpeCx3b3Jkczp3b3Jkc319ZnVuY3Rpb24gZGVjb2RlVW5zYWZlKCl7dmFyIHJlcz1fX2RlY29kZS5hcHBseShudWxsLGFyZ3VtZW50cyk7aWYodHlwZW9mIHJlcz09PSJvYmplY3QiKXJldHVybiByZXN9ZnVuY3Rpb24gZGVjb2RlKHN0cil7dmFyIHJlcz1fX2RlY29kZS5hcHBseShudWxsLGFyZ3VtZW50cyk7aWYodHlwZW9mIHJlcz09PSJvYmplY3QiKXJldHVybiByZXM7dGhyb3cgbmV3IEVycm9yKHJlcyl9ZnVuY3Rpb24gY29udmVydChkYXRhLGluQml0cyxvdXRCaXRzLHBhZCl7dmFyIHZhbHVlPTA7dmFyIGJpdHM9MDt2YXIgbWF4Vj0oMTw8b3V0Qml0cyktMTt2YXIgcmVzdWx0PVtdO2Zvcih2YXIgaT0wO2k8ZGF0YS5sZW5ndGg7KytpKXt2YWx1ZT12YWx1ZTw8aW5CaXRzfGRhdGFbaV07Yml0cys9aW5CaXRzO3doaWxlKGJpdHM+PW91dEJpdHMpe2JpdHMtPW91dEJpdHM7cmVzdWx0LnB1c2godmFsdWU+PmJpdHMmbWF4Vil9fWlmKHBhZCl7aWYoYml0cz4wKXtyZXN1bHQucHVzaCh2YWx1ZTw8b3V0Qml0cy1iaXRzJm1heFYpfX1lbHNle2lmKGJpdHM+PWluQml0cylyZXR1cm4iRXhjZXNzIHBhZGRpbmciO2lmKHZhbHVlPDxvdXRCaXRzLWJpdHMmbWF4VilyZXR1cm4iTm9uLXplcm8gcGFkZGluZyJ9cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiB0b1dvcmRzVW5zYWZlKGJ5dGVzKXt2YXIgcmVzPWNvbnZlcnQoYnl0ZXMsOCw1LHRydWUpO2lmKEFycmF5LmlzQXJyYXkocmVzKSlyZXR1cm4gcmVzfWZ1bmN0aW9uIHRvV29yZHMoYnl0ZXMpe3ZhciByZXM9Y29udmVydChieXRlcyw4LDUsdHJ1ZSk7aWYoQXJyYXkuaXNBcnJheShyZXMpKXJldHVybiByZXM7dGhyb3cgbmV3IEVycm9yKHJlcyl9ZnVuY3Rpb24gZnJvbVdvcmRzVW5zYWZlKHdvcmRzKXt2YXIgcmVzPWNvbnZlcnQod29yZHMsNSw4LGZhbHNlKTtpZihBcnJheS5pc0FycmF5KHJlcykpcmV0dXJuIHJlc31mdW5jdGlvbiBmcm9tV29yZHMod29yZHMpe3ZhciByZXM9Y29udmVydCh3b3Jkcyw1LDgsZmFsc2UpO2lmKEFycmF5LmlzQXJyYXkocmVzKSlyZXR1cm4gcmVzO3Rocm93IG5ldyBFcnJvcihyZXMpfXZhciBiZWNoMzI9e2RlY29kZVVuc2FmZTpkZWNvZGVVbnNhZmUsZGVjb2RlOmRlY29kZSxlbmNvZGU6ZW5jb2RlLHRvV29yZHNVbnNhZmU6dG9Xb3Jkc1Vuc2FmZSx0b1dvcmRzOnRvV29yZHMsZnJvbVdvcmRzVW5zYWZlOmZyb21Xb3Jkc1Vuc2FmZSxmcm9tV29yZHM6ZnJvbVdvcmRzfTt2YXIgX3ZlcnNpb24kST1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJwcm92aWRlcnMvNS43LjIifSk7dmFyIF92ZXJzaW9uJEo9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kSSk7dmFyIGZvcm1hdHRlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuc2hvd1Rocm90dGxlTWVzc2FnZT1leHBvcnRzLmlzQ29tbXVuaXR5UmVzb3VyY2U9ZXhwb3J0cy5pc0NvbW11bml0eVJlc291cmNhYmxlPWV4cG9ydHMuRm9ybWF0dGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIEZvcm1hdHRlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIEZvcm1hdHRlcigpe3RoaXMuZm9ybWF0cz10aGlzLmdldERlZmF1bHRGb3JtYXRzKCl9Rm9ybWF0dGVyLnByb3RvdHlwZS5nZXREZWZhdWx0Rm9ybWF0cz1mdW5jdGlvbigpe3ZhciBfdGhpcz10aGlzO3ZhciBmb3JtYXRzPXt9O3ZhciBhZGRyZXNzPXRoaXMuYWRkcmVzcy5iaW5kKHRoaXMpO3ZhciBiaWdOdW1iZXI9dGhpcy5iaWdOdW1iZXIuYmluZCh0aGlzKTt2YXIgYmxvY2tUYWc9dGhpcy5ibG9ja1RhZy5iaW5kKHRoaXMpO3ZhciBkYXRhPXRoaXMuZGF0YS5iaW5kKHRoaXMpO3ZhciBoYXNoPXRoaXMuaGFzaC5iaW5kKHRoaXMpO3ZhciBoZXg9dGhpcy5oZXguYmluZCh0aGlzKTt2YXIgbnVtYmVyPXRoaXMubnVtYmVyLmJpbmQodGhpcyk7dmFyIHR5cGU9dGhpcy50eXBlLmJpbmQodGhpcyk7dmFyIHN0cmljdERhdGE9ZnVuY3Rpb24odil7cmV0dXJuIF90aGlzLmRhdGEodix0cnVlKX07Zm9ybWF0cy50cmFuc2FjdGlvbj17aGFzaDpoYXNoLHR5cGU6dHlwZSxhY2Nlc3NMaXN0OkZvcm1hdHRlci5hbGxvd051bGwodGhpcy5hY2Nlc3NMaXN0LmJpbmQodGhpcyksbnVsbCksYmxvY2tIYXNoOkZvcm1hdHRlci5hbGxvd051bGwoaGFzaCxudWxsKSxibG9ja051bWJlcjpGb3JtYXR0ZXIuYWxsb3dOdWxsKG51bWJlcixudWxsKSx0cmFuc2FjdGlvbkluZGV4OkZvcm1hdHRlci5hbGxvd051bGwobnVtYmVyLG51bGwpLGNvbmZpcm1hdGlvbnM6Rm9ybWF0dGVyLmFsbG93TnVsbChudW1iZXIsbnVsbCksZnJvbTphZGRyZXNzLGdhc1ByaWNlOkZvcm1hdHRlci5hbGxvd051bGwoYmlnTnVtYmVyKSxtYXhQcmlvcml0eUZlZVBlckdhczpGb3JtYXR0ZXIuYWxsb3dOdWxsKGJpZ051bWJlciksbWF4RmVlUGVyR2FzOkZvcm1hdHRlci5hbGxvd051bGwoYmlnTnVtYmVyKSxnYXNMaW1pdDpiaWdOdW1iZXIsdG86Rm9ybWF0dGVyLmFsbG93TnVsbChhZGRyZXNzLG51bGwpLHZhbHVlOmJpZ051bWJlcixub25jZTpudW1iZXIsZGF0YTpkYXRhLHI6Rm9ybWF0dGVyLmFsbG93TnVsbCh0aGlzLnVpbnQyNTYpLHM6Rm9ybWF0dGVyLmFsbG93TnVsbCh0aGlzLnVpbnQyNTYpLHY6Rm9ybWF0dGVyLmFsbG93TnVsbChudW1iZXIpLGNyZWF0ZXM6Rm9ybWF0dGVyLmFsbG93TnVsbChhZGRyZXNzLG51bGwpLHJhdzpGb3JtYXR0ZXIuYWxsb3dOdWxsKGRhdGEpfTtmb3JtYXRzLnRyYW5zYWN0aW9uUmVxdWVzdD17ZnJvbTpGb3JtYXR0ZXIuYWxsb3dOdWxsKGFkZHJlc3MpLG5vbmNlOkZvcm1hdHRlci5hbGxvd051bGwobnVtYmVyKSxnYXNMaW1pdDpGb3JtYXR0ZXIuYWxsb3dOdWxsKGJpZ051bWJlciksZ2FzUHJpY2U6Rm9ybWF0dGVyLmFsbG93TnVsbChiaWdOdW1iZXIpLG1heFByaW9yaXR5RmVlUGVyR2FzOkZvcm1hdHRlci5hbGxvd051bGwoYmlnTnVtYmVyKSxtYXhGZWVQZXJHYXM6Rm9ybWF0dGVyLmFsbG93TnVsbChiaWdOdW1iZXIpLHRvOkZvcm1hdHRlci5hbGxvd051bGwoYWRkcmVzcyksdmFsdWU6Rm9ybWF0dGVyLmFsbG93TnVsbChiaWdOdW1iZXIpLGRhdGE6Rm9ybWF0dGVyLmFsbG93TnVsbChzdHJpY3REYXRhKSx0eXBlOkZvcm1hdHRlci5hbGxvd051bGwobnVtYmVyKSxhY2Nlc3NMaXN0OkZvcm1hdHRlci5hbGxvd051bGwodGhpcy5hY2Nlc3NMaXN0LmJpbmQodGhpcyksbnVsbCl9O2Zvcm1hdHMucmVjZWlwdExvZz17dHJhbnNhY3Rpb25JbmRleDpudW1iZXIsYmxvY2tOdW1iZXI6bnVtYmVyLHRyYW5zYWN0aW9uSGFzaDpoYXNoLGFkZHJlc3M6YWRkcmVzcyx0b3BpY3M6Rm9ybWF0dGVyLmFycmF5T2YoaGFzaCksZGF0YTpkYXRhLGxvZ0luZGV4Om51bWJlcixibG9ja0hhc2g6aGFzaH07Zm9ybWF0cy5yZWNlaXB0PXt0bzpGb3JtYXR0ZXIuYWxsb3dOdWxsKHRoaXMuYWRkcmVzcyxudWxsKSxmcm9tOkZvcm1hdHRlci5hbGxvd051bGwodGhpcy5hZGRyZXNzLG51bGwpLGNvbnRyYWN0QWRkcmVzczpGb3JtYXR0ZXIuYWxsb3dOdWxsKGFkZHJlc3MsbnVsbCksdHJhbnNhY3Rpb25JbmRleDpudW1iZXIscm9vdDpGb3JtYXR0ZXIuYWxsb3dOdWxsKGhleCksZ2FzVXNlZDpiaWdOdW1iZXIsbG9nc0Jsb29tOkZvcm1hdHRlci5hbGxvd051bGwoZGF0YSksYmxvY2tIYXNoOmhhc2gsdHJhbnNhY3Rpb25IYXNoOmhhc2gsbG9nczpGb3JtYXR0ZXIuYXJyYXlPZih0aGlzLnJlY2VpcHRMb2cuYmluZCh0aGlzKSksYmxvY2tOdW1iZXI6bnVtYmVyLGNvbmZpcm1hdGlvbnM6Rm9ybWF0dGVyLmFsbG93TnVsbChudW1iZXIsbnVsbCksY3VtdWxhdGl2ZUdhc1VzZWQ6YmlnTnVtYmVyLGVmZmVjdGl2ZUdhc1ByaWNlOkZvcm1hdHRlci5hbGxvd051bGwoYmlnTnVtYmVyKSxzdGF0dXM6Rm9ybWF0dGVyLmFsbG93TnVsbChudW1iZXIpLHR5cGU6dHlwZX07Zm9ybWF0cy5ibG9jaz17aGFzaDpGb3JtYXR0ZXIuYWxsb3dOdWxsKGhhc2gpLHBhcmVudEhhc2g6aGFzaCxudW1iZXI6bnVtYmVyLHRpbWVzdGFtcDpudW1iZXIsbm9uY2U6Rm9ybWF0dGVyLmFsbG93TnVsbChoZXgpLGRpZmZpY3VsdHk6dGhpcy5kaWZmaWN1bHR5LmJpbmQodGhpcyksZ2FzTGltaXQ6YmlnTnVtYmVyLGdhc1VzZWQ6YmlnTnVtYmVyLG1pbmVyOkZvcm1hdHRlci5hbGxvd051bGwoYWRkcmVzcyksZXh0cmFEYXRhOmRhdGEsdHJhbnNhY3Rpb25zOkZvcm1hdHRlci5hbGxvd051bGwoRm9ybWF0dGVyLmFycmF5T2YoaGFzaCkpLGJhc2VGZWVQZXJHYXM6Rm9ybWF0dGVyLmFsbG93TnVsbChiaWdOdW1iZXIpfTtmb3JtYXRzLmJsb2NrV2l0aFRyYW5zYWN0aW9ucz0oMCxsaWIkMy5zaGFsbG93Q29weSkoZm9ybWF0cy5ibG9jayk7Zm9ybWF0cy5ibG9ja1dpdGhUcmFuc2FjdGlvbnMudHJhbnNhY3Rpb25zPUZvcm1hdHRlci5hbGxvd051bGwoRm9ybWF0dGVyLmFycmF5T2YodGhpcy50cmFuc2FjdGlvblJlc3BvbnNlLmJpbmQodGhpcykpKTtmb3JtYXRzLmZpbHRlcj17ZnJvbUJsb2NrOkZvcm1hdHRlci5hbGxvd051bGwoYmxvY2tUYWcsdW5kZWZpbmVkKSx0b0Jsb2NrOkZvcm1hdHRlci5hbGxvd051bGwoYmxvY2tUYWcsdW5kZWZpbmVkKSxibG9ja0hhc2g6Rm9ybWF0dGVyLmFsbG93TnVsbChoYXNoLHVuZGVmaW5lZCksYWRkcmVzczpGb3JtYXR0ZXIuYWxsb3dOdWxsKGFkZHJlc3MsdW5kZWZpbmVkKSx0b3BpY3M6Rm9ybWF0dGVyLmFsbG93TnVsbCh0aGlzLnRvcGljcy5iaW5kKHRoaXMpLHVuZGVmaW5lZCl9O2Zvcm1hdHMuZmlsdGVyTG9nPXtibG9ja051bWJlcjpGb3JtYXR0ZXIuYWxsb3dOdWxsKG51bWJlciksYmxvY2tIYXNoOkZvcm1hdHRlci5hbGxvd051bGwoaGFzaCksdHJhbnNhY3Rpb25JbmRleDpudW1iZXIscmVtb3ZlZDpGb3JtYXR0ZXIuYWxsb3dOdWxsKHRoaXMuYm9vbGVhbi5iaW5kKHRoaXMpKSxhZGRyZXNzOmFkZHJlc3MsZGF0YTpGb3JtYXR0ZXIuYWxsb3dGYWxzaXNoKGRhdGEsIjB4IiksdG9waWNzOkZvcm1hdHRlci5hcnJheU9mKGhhc2gpLHRyYW5zYWN0aW9uSGFzaDpoYXNoLGxvZ0luZGV4Om51bWJlcn07cmV0dXJuIGZvcm1hdHN9O0Zvcm1hdHRlci5wcm90b3R5cGUuYWNjZXNzTGlzdD1mdW5jdGlvbihhY2Nlc3NMaXN0KXtyZXR1cm4oMCxsaWIkaC5hY2Nlc3NMaXN0aWZ5KShhY2Nlc3NMaXN0fHxbXSl9O0Zvcm1hdHRlci5wcm90b3R5cGUubnVtYmVyPWZ1bmN0aW9uKG51bWJlcil7aWYobnVtYmVyPT09IjB4Iil7cmV0dXJuIDB9cmV0dXJuIGxpYiQyLkJpZ051bWJlci5mcm9tKG51bWJlcikudG9OdW1iZXIoKX07Rm9ybWF0dGVyLnByb3RvdHlwZS50eXBlPWZ1bmN0aW9uKG51bWJlcil7aWYobnVtYmVyPT09IjB4Inx8bnVtYmVyPT1udWxsKXtyZXR1cm4gMH1yZXR1cm4gbGliJDIuQmlnTnVtYmVyLmZyb20obnVtYmVyKS50b051bWJlcigpfTtGb3JtYXR0ZXIucHJvdG90eXBlLmJpZ051bWJlcj1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIGxpYiQyLkJpZ051bWJlci5mcm9tKHZhbHVlKX07Rm9ybWF0dGVyLnByb3RvdHlwZS5ib29sZWFuPWZ1bmN0aW9uKHZhbHVlKXtpZih0eXBlb2YgdmFsdWU9PT0iYm9vbGVhbiIpe3JldHVybiB2YWx1ZX1pZih0eXBlb2YgdmFsdWU9PT0ic3RyaW5nIil7dmFsdWU9dmFsdWUudG9Mb3dlckNhc2UoKTtpZih2YWx1ZT09PSJ0cnVlIil7cmV0dXJuIHRydWV9aWYodmFsdWU9PT0iZmFsc2UiKXtyZXR1cm4gZmFsc2V9fXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBib29sZWFuIC0gIit2YWx1ZSl9O0Zvcm1hdHRlci5wcm90b3R5cGUuaGV4PWZ1bmN0aW9uKHZhbHVlLHN0cmljdCl7aWYodHlwZW9mIHZhbHVlPT09InN0cmluZyIpe2lmKCFzdHJpY3QmJnZhbHVlLnN1YnN0cmluZygwLDIpIT09IjB4Iil7dmFsdWU9IjB4Iit2YWx1ZX1pZigoMCxsaWIkMS5pc0hleFN0cmluZykodmFsdWUpKXtyZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKX19cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgaGFzaCIsInZhbHVlIix2YWx1ZSl9O0Zvcm1hdHRlci5wcm90b3R5cGUuZGF0YT1mdW5jdGlvbih2YWx1ZSxzdHJpY3Qpe3ZhciByZXN1bHQ9dGhpcy5oZXgodmFsdWUsc3RyaWN0KTtpZihyZXN1bHQubGVuZ3RoJTIhPT0wKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZGF0YTsgb2RkLWxlbmd0aCAtICIrdmFsdWUpfXJldHVybiByZXN1bHR9O0Zvcm1hdHRlci5wcm90b3R5cGUuYWRkcmVzcz1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuKDAsbGliJDYuZ2V0QWRkcmVzcykodmFsdWUpfTtGb3JtYXR0ZXIucHJvdG90eXBlLmNhbGxBZGRyZXNzPWZ1bmN0aW9uKHZhbHVlKXtpZighKDAsbGliJDEuaXNIZXhTdHJpbmcpKHZhbHVlLDMyKSl7cmV0dXJuIG51bGx9dmFyIGFkZHJlc3M9KDAsbGliJDYuZ2V0QWRkcmVzcykoKDAsbGliJDEuaGV4RGF0YVNsaWNlKSh2YWx1ZSwxMikpO3JldHVybiBhZGRyZXNzPT09bGliJDcuQWRkcmVzc1plcm8/bnVsbDphZGRyZXNzfTtGb3JtYXR0ZXIucHJvdG90eXBlLmNvbnRyYWN0QWRkcmVzcz1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuKDAsbGliJDYuZ2V0Q29udHJhY3RBZGRyZXNzKSh2YWx1ZSl9O0Zvcm1hdHRlci5wcm90b3R5cGUuYmxvY2tUYWc9ZnVuY3Rpb24oYmxvY2tUYWcpe2lmKGJsb2NrVGFnPT1udWxsKXtyZXR1cm4ibGF0ZXN0In1pZihibG9ja1RhZz09PSJlYXJsaWVzdCIpe3JldHVybiIweDAifXN3aXRjaChibG9ja1RhZyl7Y2FzZSJlYXJsaWVzdCI6cmV0dXJuIjB4MCI7Y2FzZSJsYXRlc3QiOmNhc2UicGVuZGluZyI6Y2FzZSJzYWZlIjpjYXNlImZpbmFsaXplZCI6cmV0dXJuIGJsb2NrVGFnfWlmKHR5cGVvZiBibG9ja1RhZz09PSJudW1iZXIifHwoMCxsaWIkMS5pc0hleFN0cmluZykoYmxvY2tUYWcpKXtyZXR1cm4oMCxsaWIkMS5oZXhWYWx1ZSkoYmxvY2tUYWcpfXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBibG9ja1RhZyIpfTtGb3JtYXR0ZXIucHJvdG90eXBlLmhhc2g9ZnVuY3Rpb24odmFsdWUsc3RyaWN0KXt2YXIgcmVzdWx0PXRoaXMuaGV4KHZhbHVlLHN0cmljdCk7aWYoKDAsbGliJDEuaGV4RGF0YUxlbmd0aCkocmVzdWx0KSE9PTMyKXtyZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBoYXNoIiwidmFsdWUiLHZhbHVlKX1yZXR1cm4gcmVzdWx0fTtGb3JtYXR0ZXIucHJvdG90eXBlLmRpZmZpY3VsdHk9ZnVuY3Rpb24odmFsdWUpe2lmKHZhbHVlPT1udWxsKXtyZXR1cm4gbnVsbH12YXIgdj1saWIkMi5CaWdOdW1iZXIuZnJvbSh2YWx1ZSk7dHJ5e3JldHVybiB2LnRvTnVtYmVyKCl9Y2F0Y2goZXJyb3Ipe31yZXR1cm4gbnVsbH07Rm9ybWF0dGVyLnByb3RvdHlwZS51aW50MjU2PWZ1bmN0aW9uKHZhbHVlKXtpZighKDAsbGliJDEuaXNIZXhTdHJpbmcpKHZhbHVlKSl7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHVpbnQyNTYiKX1yZXR1cm4oMCxsaWIkMS5oZXhaZXJvUGFkKSh2YWx1ZSwzMil9O0Zvcm1hdHRlci5wcm90b3R5cGUuX2Jsb2NrPWZ1bmN0aW9uKHZhbHVlLGZvcm1hdCl7aWYodmFsdWUuYXV0aG9yIT1udWxsJiZ2YWx1ZS5taW5lcj09bnVsbCl7dmFsdWUubWluZXI9dmFsdWUuYXV0aG9yfXZhciBkaWZmaWN1bHR5PXZhbHVlLl9kaWZmaWN1bHR5IT1udWxsP3ZhbHVlLl9kaWZmaWN1bHR5OnZhbHVlLmRpZmZpY3VsdHk7dmFyIHJlc3VsdD1Gb3JtYXR0ZXIuY2hlY2soZm9ybWF0LHZhbHVlKTtyZXN1bHQuX2RpZmZpY3VsdHk9ZGlmZmljdWx0eT09bnVsbD9udWxsOmxpYiQyLkJpZ051bWJlci5mcm9tKGRpZmZpY3VsdHkpO3JldHVybiByZXN1bHR9O0Zvcm1hdHRlci5wcm90b3R5cGUuYmxvY2s9ZnVuY3Rpb24odmFsdWUpe3JldHVybiB0aGlzLl9ibG9jayh2YWx1ZSx0aGlzLmZvcm1hdHMuYmxvY2spfTtGb3JtYXR0ZXIucHJvdG90eXBlLmJsb2NrV2l0aFRyYW5zYWN0aW9ucz1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHRoaXMuX2Jsb2NrKHZhbHVlLHRoaXMuZm9ybWF0cy5ibG9ja1dpdGhUcmFuc2FjdGlvbnMpfTtGb3JtYXR0ZXIucHJvdG90eXBlLnRyYW5zYWN0aW9uUmVxdWVzdD1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIEZvcm1hdHRlci5jaGVjayh0aGlzLmZvcm1hdHMudHJhbnNhY3Rpb25SZXF1ZXN0LHZhbHVlKX07Rm9ybWF0dGVyLnByb3RvdHlwZS50cmFuc2FjdGlvblJlc3BvbnNlPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXtpZih0cmFuc2FjdGlvbi5nYXMhPW51bGwmJnRyYW5zYWN0aW9uLmdhc0xpbWl0PT1udWxsKXt0cmFuc2FjdGlvbi5nYXNMaW1pdD10cmFuc2FjdGlvbi5nYXN9aWYodHJhbnNhY3Rpb24udG8mJmxpYiQyLkJpZ051bWJlci5mcm9tKHRyYW5zYWN0aW9uLnRvKS5pc1plcm8oKSl7dHJhbnNhY3Rpb24udG89IjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJ9aWYodHJhbnNhY3Rpb24uaW5wdXQhPW51bGwmJnRyYW5zYWN0aW9uLmRhdGE9PW51bGwpe3RyYW5zYWN0aW9uLmRhdGE9dHJhbnNhY3Rpb24uaW5wdXR9aWYodHJhbnNhY3Rpb24udG89PW51bGwmJnRyYW5zYWN0aW9uLmNyZWF0ZXM9PW51bGwpe3RyYW5zYWN0aW9uLmNyZWF0ZXM9dGhpcy5jb250cmFjdEFkZHJlc3ModHJhbnNhY3Rpb24pfWlmKCh0cmFuc2FjdGlvbi50eXBlPT09MXx8dHJhbnNhY3Rpb24udHlwZT09PTIpJiZ0cmFuc2FjdGlvbi5hY2Nlc3NMaXN0PT1udWxsKXt0cmFuc2FjdGlvbi5hY2Nlc3NMaXN0PVtdfXZhciByZXN1bHQ9Rm9ybWF0dGVyLmNoZWNrKHRoaXMuZm9ybWF0cy50cmFuc2FjdGlvbix0cmFuc2FjdGlvbik7aWYodHJhbnNhY3Rpb24uY2hhaW5JZCE9bnVsbCl7dmFyIGNoYWluSWQ9dHJhbnNhY3Rpb24uY2hhaW5JZDtpZigoMCxsaWIkMS5pc0hleFN0cmluZykoY2hhaW5JZCkpe2NoYWluSWQ9bGliJDIuQmlnTnVtYmVyLmZyb20oY2hhaW5JZCkudG9OdW1iZXIoKX1yZXN1bHQuY2hhaW5JZD1jaGFpbklkfWVsc2V7dmFyIGNoYWluSWQ9dHJhbnNhY3Rpb24ubmV0d29ya0lkO2lmKGNoYWluSWQ9PW51bGwmJnJlc3VsdC52PT1udWxsKXtjaGFpbklkPXRyYW5zYWN0aW9uLmNoYWluSWR9aWYoKDAsbGliJDEuaXNIZXhTdHJpbmcpKGNoYWluSWQpKXtjaGFpbklkPWxpYiQyLkJpZ051bWJlci5mcm9tKGNoYWluSWQpLnRvTnVtYmVyKCl9aWYodHlwZW9mIGNoYWluSWQhPT0ibnVtYmVyIiYmcmVzdWx0LnYhPW51bGwpe2NoYWluSWQ9KHJlc3VsdC52LTM1KS8yO2lmKGNoYWluSWQ8MCl7Y2hhaW5JZD0wfWNoYWluSWQ9cGFyc2VJbnQoY2hhaW5JZCl9aWYodHlwZW9mIGNoYWluSWQhPT0ibnVtYmVyIil7Y2hhaW5JZD0wfXJlc3VsdC5jaGFpbklkPWNoYWluSWR9aWYocmVzdWx0LmJsb2NrSGFzaCYmcmVzdWx0LmJsb2NrSGFzaC5yZXBsYWNlKC8wL2csIiIpPT09IngiKXtyZXN1bHQuYmxvY2tIYXNoPW51bGx9cmV0dXJuIHJlc3VsdH07Rm9ybWF0dGVyLnByb3RvdHlwZS50cmFuc2FjdGlvbj1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuKDAsbGliJGgucGFyc2UpKHZhbHVlKX07Rm9ybWF0dGVyLnByb3RvdHlwZS5yZWNlaXB0TG9nPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gRm9ybWF0dGVyLmNoZWNrKHRoaXMuZm9ybWF0cy5yZWNlaXB0TG9nLHZhbHVlKX07Rm9ybWF0dGVyLnByb3RvdHlwZS5yZWNlaXB0PWZ1bmN0aW9uKHZhbHVlKXt2YXIgcmVzdWx0PUZvcm1hdHRlci5jaGVjayh0aGlzLmZvcm1hdHMucmVjZWlwdCx2YWx1ZSk7aWYocmVzdWx0LnJvb3QhPW51bGwpe2lmKHJlc3VsdC5yb290Lmxlbmd0aDw9NCl7dmFyIHZhbHVlXzE9bGliJDIuQmlnTnVtYmVyLmZyb20ocmVzdWx0LnJvb3QpLnRvTnVtYmVyKCk7aWYodmFsdWVfMT09PTB8fHZhbHVlXzE9PT0xKXtpZihyZXN1bHQuc3RhdHVzIT1udWxsJiZyZXN1bHQuc3RhdHVzIT09dmFsdWVfMSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiYWx0LXJvb3Qtc3RhdHVzL3N0YXR1cyBtaXNtYXRjaCIsInZhbHVlIix7cm9vdDpyZXN1bHQucm9vdCxzdGF0dXM6cmVzdWx0LnN0YXR1c30pfXJlc3VsdC5zdGF0dXM9dmFsdWVfMTtkZWxldGUgcmVzdWx0LnJvb3R9ZWxzZXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGFsdC1yb290LXN0YXR1cyIsInZhbHVlLnJvb3QiLHJlc3VsdC5yb290KX19ZWxzZSBpZihyZXN1bHQucm9vdC5sZW5ndGghPT02Nil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCByb290IGhhc2giLCJ2YWx1ZS5yb290IixyZXN1bHQucm9vdCl9fWlmKHJlc3VsdC5zdGF0dXMhPW51bGwpe3Jlc3VsdC5ieXphbnRpdW09dHJ1ZX1yZXR1cm4gcmVzdWx0fTtGb3JtYXR0ZXIucHJvdG90eXBlLnRvcGljcz1mdW5jdGlvbih2YWx1ZSl7dmFyIF90aGlzPXRoaXM7aWYoQXJyYXkuaXNBcnJheSh2YWx1ZSkpe3JldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24odil7cmV0dXJuIF90aGlzLnRvcGljcyh2KX0pfWVsc2UgaWYodmFsdWUhPW51bGwpe3JldHVybiB0aGlzLmhhc2godmFsdWUsdHJ1ZSl9cmV0dXJuIG51bGx9O0Zvcm1hdHRlci5wcm90b3R5cGUuZmlsdGVyPWZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gRm9ybWF0dGVyLmNoZWNrKHRoaXMuZm9ybWF0cy5maWx0ZXIsdmFsdWUpfTtGb3JtYXR0ZXIucHJvdG90eXBlLmZpbHRlckxvZz1mdW5jdGlvbih2YWx1ZSl7cmV0dXJuIEZvcm1hdHRlci5jaGVjayh0aGlzLmZvcm1hdHMuZmlsdGVyTG9nLHZhbHVlKX07Rm9ybWF0dGVyLmNoZWNrPWZ1bmN0aW9uKGZvcm1hdCxvYmplY3Qpe3ZhciByZXN1bHQ9e307Zm9yKHZhciBrZXkgaW4gZm9ybWF0KXt0cnl7dmFyIHZhbHVlPWZvcm1hdFtrZXldKG9iamVjdFtrZXldKTtpZih2YWx1ZSE9PXVuZGVmaW5lZCl7cmVzdWx0W2tleV09dmFsdWV9fWNhdGNoKGVycm9yKXtlcnJvci5jaGVja0tleT1rZXk7ZXJyb3IuY2hlY2tWYWx1ZT1vYmplY3Rba2V5XTt0aHJvdyBlcnJvcn19cmV0dXJuIHJlc3VsdH07Rm9ybWF0dGVyLmFsbG93TnVsbD1mdW5jdGlvbihmb3JtYXQsbnVsbFZhbHVlKXtyZXR1cm4gZnVuY3Rpb24odmFsdWUpe2lmKHZhbHVlPT1udWxsKXtyZXR1cm4gbnVsbFZhbHVlfXJldHVybiBmb3JtYXQodmFsdWUpfX07Rm9ybWF0dGVyLmFsbG93RmFsc2lzaD1mdW5jdGlvbihmb3JtYXQscmVwbGFjZVZhbHVlKXtyZXR1cm4gZnVuY3Rpb24odmFsdWUpe2lmKCF2YWx1ZSl7cmV0dXJuIHJlcGxhY2VWYWx1ZX1yZXR1cm4gZm9ybWF0KHZhbHVlKX19O0Zvcm1hdHRlci5hcnJheU9mPWZ1bmN0aW9uKGZvcm1hdCl7cmV0dXJuIGZ1bmN0aW9uKGFycmF5KXtpZighQXJyYXkuaXNBcnJheShhcnJheSkpe3Rocm93IG5ldyBFcnJvcigibm90IGFuIGFycmF5Iil9dmFyIHJlc3VsdD1bXTthcnJheS5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKXtyZXN1bHQucHVzaChmb3JtYXQodmFsdWUpKX0pO3JldHVybiByZXN1bHR9fTtyZXR1cm4gRm9ybWF0dGVyfSgpO2V4cG9ydHMuRm9ybWF0dGVyPUZvcm1hdHRlcjtmdW5jdGlvbiBpc0NvbW11bml0eVJlc291cmNhYmxlKHZhbHVlKXtyZXR1cm4gdmFsdWUmJnR5cGVvZiB2YWx1ZS5pc0NvbW11bml0eVJlc291cmNlPT09ImZ1bmN0aW9uIn1leHBvcnRzLmlzQ29tbXVuaXR5UmVzb3VyY2FibGU9aXNDb21tdW5pdHlSZXNvdXJjYWJsZTtmdW5jdGlvbiBpc0NvbW11bml0eVJlc291cmNlKHZhbHVlKXtyZXR1cm4gaXNDb21tdW5pdHlSZXNvdXJjYWJsZSh2YWx1ZSkmJnZhbHVlLmlzQ29tbXVuaXR5UmVzb3VyY2UoKX1leHBvcnRzLmlzQ29tbXVuaXR5UmVzb3VyY2U9aXNDb21tdW5pdHlSZXNvdXJjZTt2YXIgdGhyb3R0bGVNZXNzYWdlPWZhbHNlO2Z1bmN0aW9uIHNob3dUaHJvdHRsZU1lc3NhZ2UoKXtpZih0aHJvdHRsZU1lc3NhZ2Upe3JldHVybn10aHJvdHRsZU1lc3NhZ2U9dHJ1ZTtjb25zb2xlLmxvZygiPT09PT09PT09IE5PVElDRSA9PT09PT09PT0iKTtjb25zb2xlLmxvZygiUmVxdWVzdC1SYXRlIEV4Y2VlZGVkICAodGhpcyBtZXNzYWdlIHdpbGwgbm90IGJlIHJlcGVhdGVkKSIpO2NvbnNvbGUubG9nKCIiKTtjb25zb2xlLmxvZygiVGhlIGRlZmF1bHQgQVBJIGtleXMgZm9yIGVhY2ggc2VydmljZSBhcmUgcHJvdmlkZWQgYXMgYSBoaWdobHktdGhyb3R0bGVkLCIpO2NvbnNvbGUubG9nKCJjb21tdW5pdHkgcmVzb3VyY2UgZm9yIGxvdy10cmFmZmljIHByb2plY3RzIGFuZCBlYXJseSBwcm90b3R5cGluZy4iKTtjb25zb2xlLmxvZygiIik7Y29uc29sZS5sb2coIldoaWxlIHlvdXIgYXBwbGljYXRpb24gd2lsbCBjb250aW51ZSB0byBmdW5jdGlvbiwgd2UgaGlnaGx5IHJlY29tbWVuZGVkIik7Y29uc29sZS5sb2coInNpZ25pbmcgdXAgZm9yIHlvdXIgb3duIEFQSSBrZXlzIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UsIGluY3JlYXNlIHlvdXIiKTtjb25zb2xlLmxvZygicmVxdWVzdCByYXRlL2xpbWl0IGFuZCBlbmFibGUgb3RoZXIgcGVya3MsIHN1Y2ggYXMgbWV0cmljcyBhbmQgYWR2YW5jZWQgQVBJcy4iKTtjb25zb2xlLmxvZygiIik7Y29uc29sZS5sb2coIkZvciBtb3JlIGRldGFpbHM6IGh0dHBzOi8vZG9jcy5ldGhlcnMuaW8vYXBpLWtleXMvIik7Y29uc29sZS5sb2coIj09PT09PT09PT09PT09PT09PT09PT09PT09Iil9ZXhwb3J0cy5zaG93VGhyb3R0bGVNZXNzYWdlPXNob3dUaHJvdHRsZU1lc3NhZ2V9KTt2YXIgZm9ybWF0dGVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoZm9ybWF0dGVyKTt2YXIgYmFzZVByb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO3ZhciBfX2F3YWl0ZXI9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fYXdhaXRlcnx8ZnVuY3Rpb24odGhpc0FyZyxfYXJndW1lbnRzLFAsZ2VuZXJhdG9yKXtmdW5jdGlvbiBhZG9wdCh2YWx1ZSl7cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUD92YWx1ZTpuZXcgUChmdW5jdGlvbihyZXNvbHZlKXtyZXNvbHZlKHZhbHVlKX0pfXJldHVybiBuZXcoUHx8KFA9UHJvbWlzZSkpKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiByZWplY3RlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yWyJ0aHJvdyJdKHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiBzdGVwKHJlc3VsdCl7cmVzdWx0LmRvbmU/cmVzb2x2ZShyZXN1bHQudmFsdWUpOmFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQscmVqZWN0ZWQpfXN0ZXAoKGdlbmVyYXRvcj1nZW5lcmF0b3IuYXBwbHkodGhpc0FyZyxfYXJndW1lbnRzfHxbXSkpLm5leHQoKSl9KX07dmFyIF9fZ2VuZXJhdG9yPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odGhpc0FyZyxib2R5KXt2YXIgXz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYodFswXSYxKXRocm93IHRbMV07cmV0dXJuIHRbMV19LHRyeXM6W10sb3BzOltdfSxmLHksdCxnO3JldHVybiBnPXtuZXh0OnZlcmIoMCksdGhyb3c6dmVyYigxKSxyZXR1cm46dmVyYigyKX0sdHlwZW9mIFN5bWJvbD09PSJmdW5jdGlvbiImJihnW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGc7ZnVuY3Rpb24gdmVyYihuKXtyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuIHN0ZXAoW24sdl0pfX1mdW5jdGlvbiBzdGVwKG9wKXtpZihmKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTt3aGlsZShfKXRyeXtpZihmPTEseSYmKHQ9b3BbMF0mMj95WyJyZXR1cm4iXTpvcFswXT95WyJ0aHJvdyJdfHwoKHQ9eVsicmV0dXJuIl0pJiZ0LmNhbGwoeSksMCk6eS5uZXh0KSYmISh0PXQuY2FsbCh5LG9wWzFdKSkuZG9uZSlyZXR1cm4gdDtpZih5PTAsdClvcD1bb3BbMF0mMix0LnZhbHVlXTtzd2l0Y2gob3BbMF0pe2Nhc2UgMDpjYXNlIDE6dD1vcDticmVhaztjYXNlIDQ6Xy5sYWJlbCsrO3JldHVybnt2YWx1ZTpvcFsxXSxkb25lOmZhbHNlfTtjYXNlIDU6Xy5sYWJlbCsrO3k9b3BbMV07b3A9WzBdO2NvbnRpbnVlO2Nhc2UgNzpvcD1fLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHQ9Xy50cnlzLHQ9dC5sZW5ndGg+MCYmdFt0Lmxlbmd0aC0xXSkmJihvcFswXT09PTZ8fG9wWzBdPT09Mikpe189MDtjb250aW51ZX1pZihvcFswXT09PTMmJighdHx8b3BbMV0+dFswXSYmb3BbMV08dFszXSkpe18ubGFiZWw9b3BbMV07YnJlYWt9aWYob3BbMF09PT02JiZfLmxhYmVsPHRbMV0pe18ubGFiZWw9dFsxXTt0PW9wO2JyZWFrfWlmKHQmJl8ubGFiZWw8dFsyXSl7Xy5sYWJlbD10WzJdO18ub3BzLnB1c2gob3ApO2JyZWFrfWlmKHRbMl0pXy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlfW9wPWJvZHkuY2FsbCh0aGlzQXJnLF8pfWNhdGNoKGUpe29wPVs2LGVdO3k9MH1maW5hbGx5e2Y9dD0wfWlmKG9wWzBdJjUpdGhyb3cgb3BbMV07cmV0dXJue3ZhbHVlOm9wWzBdP29wWzFdOnZvaWQgMCxkb25lOnRydWV9fX07dmFyIF9faW1wb3J0RGVmYXVsdD1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihtb2Qpe3JldHVybiBtb2QmJm1vZC5fX2VzTW9kdWxlP21vZDp7ZGVmYXVsdDptb2R9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkJhc2VQcm92aWRlcj1leHBvcnRzLlJlc29sdmVyPWV4cG9ydHMuRXZlbnQ9dm9pZCAwO3ZhciBiZWNoMzJfMT1fX2ltcG9ydERlZmF1bHQoYmVjaDMyKTt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIE1BWF9DQ0lQX1JFRElSRUNUUz0xMDtmdW5jdGlvbiBjaGVja1RvcGljKHRvcGljKXtpZih0b3BpYz09bnVsbCl7cmV0dXJuIm51bGwifWlmKCgwLGxpYiQxLmhleERhdGFMZW5ndGgpKHRvcGljKSE9PTMyKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIHRvcGljIiwidG9waWMiLHRvcGljKX1yZXR1cm4gdG9waWMudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBzZXJpYWxpemVUb3BpY3ModG9waWNzKXt0b3BpY3M9dG9waWNzLnNsaWNlKCk7d2hpbGUodG9waWNzLmxlbmd0aD4wJiZ0b3BpY3NbdG9waWNzLmxlbmd0aC0xXT09bnVsbCl7dG9waWNzLnBvcCgpfXJldHVybiB0b3BpY3MubWFwKGZ1bmN0aW9uKHRvcGljKXtpZihBcnJheS5pc0FycmF5KHRvcGljKSl7dmFyIHVuaXF1ZV8xPXt9O3RvcGljLmZvckVhY2goZnVuY3Rpb24odG9waWMpe3VuaXF1ZV8xW2NoZWNrVG9waWModG9waWMpXT10cnVlfSk7dmFyIHNvcnRlZD1PYmplY3Qua2V5cyh1bmlxdWVfMSk7c29ydGVkLnNvcnQoKTtyZXR1cm4gc29ydGVkLmpvaW4oInwiKX1lbHNle3JldHVybiBjaGVja1RvcGljKHRvcGljKX19KS5qb2luKCImIil9ZnVuY3Rpb24gZGVzZXJpYWxpemVUb3BpY3MoZGF0YSl7aWYoZGF0YT09PSIiKXtyZXR1cm5bXX1yZXR1cm4gZGF0YS5zcGxpdCgvJi9nKS5tYXAoZnVuY3Rpb24odG9waWMpe2lmKHRvcGljPT09IiIpe3JldHVybltdfXZhciBjb21wcz10b3BpYy5zcGxpdCgifCIpLm1hcChmdW5jdGlvbih0b3BpYyl7cmV0dXJuIHRvcGljPT09Im51bGwiP251bGw6dG9waWN9KTtyZXR1cm4gY29tcHMubGVuZ3RoPT09MT9jb21wc1swXTpjb21wc30pfWZ1bmN0aW9uIGdldEV2ZW50VGFnKGV2ZW50TmFtZSl7aWYodHlwZW9mIGV2ZW50TmFtZT09PSJzdHJpbmciKXtldmVudE5hbWU9ZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7aWYoKDAsbGliJDEuaGV4RGF0YUxlbmd0aCkoZXZlbnROYW1lKT09PTMyKXtyZXR1cm4idHg6IitldmVudE5hbWV9aWYoZXZlbnROYW1lLmluZGV4T2YoIjoiKT09PS0xKXtyZXR1cm4gZXZlbnROYW1lfX1lbHNlIGlmKEFycmF5LmlzQXJyYXkoZXZlbnROYW1lKSl7cmV0dXJuImZpbHRlcjoqOiIrc2VyaWFsaXplVG9waWNzKGV2ZW50TmFtZSl9ZWxzZSBpZihsaWIkZS5Gb3JrRXZlbnQuaXNGb3JrRXZlbnQoZXZlbnROYW1lKSl7bG9nZ2VyLndhcm4oIm5vdCBpbXBsZW1lbnRlZCIpO3Rocm93IG5ldyBFcnJvcigibm90IGltcGxlbWVudGVkIil9ZWxzZSBpZihldmVudE5hbWUmJnR5cGVvZiBldmVudE5hbWU9PT0ib2JqZWN0Iil7cmV0dXJuImZpbHRlcjoiKyhldmVudE5hbWUuYWRkcmVzc3x8IioiKSsiOiIrc2VyaWFsaXplVG9waWNzKGV2ZW50TmFtZS50b3BpY3N8fFtdKX10aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZXZlbnQgLSAiK2V2ZW50TmFtZSl9ZnVuY3Rpb24gZ2V0VGltZSgpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfWZ1bmN0aW9uIHN0YWxsKGR1cmF0aW9uKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSl7c2V0VGltZW91dChyZXNvbHZlLGR1cmF0aW9uKX0pfXZhciBQb2xsYWJsZUV2ZW50cz1bImJsb2NrIiwibmV0d29yayIsInBlbmRpbmciLCJwb2xsIl07dmFyIEV2ZW50PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRXZlbnQodGFnLGxpc3RlbmVyLG9uY2UpeygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJ0YWciLHRhZyk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsImxpc3RlbmVyIixsaXN0ZW5lcik7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsIm9uY2UiLG9uY2UpO3RoaXMuX2xhc3RCbG9ja051bWJlcj0tMjt0aGlzLl9pbmZsaWdodD1mYWxzZX1PYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnQucHJvdG90eXBlLCJldmVudCIse2dldDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UidHgiOnJldHVybiB0aGlzLmhhc2g7Y2FzZSJmaWx0ZXIiOnJldHVybiB0aGlzLmZpbHRlcn1yZXR1cm4gdGhpcy50YWd9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnQucHJvdG90eXBlLCJ0eXBlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFnLnNwbGl0KCI6IilbMF19LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnQucHJvdG90eXBlLCJoYXNoIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIGNvbXBzPXRoaXMudGFnLnNwbGl0KCI6Iik7aWYoY29tcHNbMF0hPT0idHgiKXtyZXR1cm4gbnVsbH1yZXR1cm4gY29tcHNbMV19LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnQucHJvdG90eXBlLCJmaWx0ZXIiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgY29tcHM9dGhpcy50YWcuc3BsaXQoIjoiKTtpZihjb21wc1swXSE9PSJmaWx0ZXIiKXtyZXR1cm4gbnVsbH12YXIgYWRkcmVzcz1jb21wc1sxXTt2YXIgdG9waWNzPWRlc2VyaWFsaXplVG9waWNzKGNvbXBzWzJdKTt2YXIgZmlsdGVyPXt9O2lmKHRvcGljcy5sZW5ndGg+MCl7ZmlsdGVyLnRvcGljcz10b3BpY3N9aWYoYWRkcmVzcyYmYWRkcmVzcyE9PSIqIil7ZmlsdGVyLmFkZHJlc3M9YWRkcmVzc31yZXR1cm4gZmlsdGVyfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7RXZlbnQucHJvdG90eXBlLnBvbGxhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFnLmluZGV4T2YoIjoiKT49MHx8UG9sbGFibGVFdmVudHMuaW5kZXhPZih0aGlzLnRhZyk+PTB9O3JldHVybiBFdmVudH0oKTtleHBvcnRzLkV2ZW50PUV2ZW50O3ZhciBjb2luSW5mb3M9ezA6e3N5bWJvbDoiYnRjIixwMnBraDowLHAyc2g6NSxwcmVmaXg6ImJjIn0sMjp7c3ltYm9sOiJsdGMiLHAycGtoOjQ4LHAyc2g6NTAscHJlZml4OiJsdGMifSwzOntzeW1ib2w6ImRvZ2UiLHAycGtoOjMwLHAyc2g6MjJ9LDYwOntzeW1ib2w6ImV0aCIsaWxrOiJldGgifSw2MTp7c3ltYm9sOiJldGMiLGlsazoiZXRoIn0sNzAwOntzeW1ib2w6InhkYWkiLGlsazoiZXRoIn19O2Z1bmN0aW9uIGJ5dGVzMzJpZnkodmFsdWUpe3JldHVybigwLGxpYiQxLmhleFplcm9QYWQpKGxpYiQyLkJpZ051bWJlci5mcm9tKHZhbHVlKS50b0hleFN0cmluZygpLDMyKX1mdW5jdGlvbiBiYXNlNThFbmNvZGUoZGF0YSl7cmV0dXJuIGxpYiRqLkJhc2U1OC5lbmNvZGUoKDAsbGliJDEuY29uY2F0KShbZGF0YSwoMCxsaWIkMS5oZXhEYXRhU2xpY2UpKCgwLGxpYiRrLnNoYTI1NikoKDAsbGliJGsuc2hhMjU2KShkYXRhKSksMCw0KV0pKX12YXIgbWF0Y2hlcklwZnM9bmV3IFJlZ0V4cCgiXihpcGZzKTovLyguKikkIiwiaSIpO3ZhciBtYXRjaGVycz1bbmV3IFJlZ0V4cCgiXihodHRwcyk6Ly8oLiopJCIsImkiKSxuZXcgUmVnRXhwKCJeKGRhdGEpOiguKikkIiwiaSIpLG1hdGNoZXJJcGZzLG5ldyBSZWdFeHAoIl5laXAxNTU6WzAtOV0rLyhlcmNbMC05XSspOiguKikkIiwiaSIpXTtmdW5jdGlvbiBfcGFyc2VTdHJpbmcocmVzdWx0LHN0YXJ0KXt0cnl7cmV0dXJuKDAsbGliJDgudG9VdGY4U3RyaW5nKShfcGFyc2VCeXRlcyhyZXN1bHQsc3RhcnQpKX1jYXRjaChlcnJvcil7fXJldHVybiBudWxsfWZ1bmN0aW9uIF9wYXJzZUJ5dGVzKHJlc3VsdCxzdGFydCl7aWYocmVzdWx0PT09IjB4Iil7cmV0dXJuIG51bGx9dmFyIG9mZnNldD1saWIkMi5CaWdOdW1iZXIuZnJvbSgoMCxsaWIkMS5oZXhEYXRhU2xpY2UpKHJlc3VsdCxzdGFydCxzdGFydCszMikpLnRvTnVtYmVyKCk7dmFyIGxlbmd0aD1saWIkMi5CaWdOdW1iZXIuZnJvbSgoMCxsaWIkMS5oZXhEYXRhU2xpY2UpKHJlc3VsdCxvZmZzZXQsb2Zmc2V0KzMyKSkudG9OdW1iZXIoKTtyZXR1cm4oMCxsaWIkMS5oZXhEYXRhU2xpY2UpKHJlc3VsdCxvZmZzZXQrMzIsb2Zmc2V0KzMyK2xlbmd0aCl9ZnVuY3Rpb24gZ2V0SXBmc0xpbmsobGluayl7aWYobGluay5tYXRjaCgvXmlwZnM6XC9cL2lwZnNcLy9pKSl7bGluaz1saW5rLnN1YnN0cmluZygxMil9ZWxzZSBpZihsaW5rLm1hdGNoKC9eaXBmczpcL1wvL2kpKXtsaW5rPWxpbmsuc3Vic3RyaW5nKDcpfWVsc2V7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5zdXBwb3J0ZWQgSVBGUyBmb3JtYXQiLCJsaW5rIixsaW5rKX1yZXR1cm4iaHR0cHM6Ly9nYXRld2F5LmlwZnMuaW8vaXBmcy8iK2xpbmt9ZnVuY3Rpb24gbnVtUGFkKHZhbHVlKXt2YXIgcmVzdWx0PSgwLGxpYiQxLmFycmF5aWZ5KSh2YWx1ZSk7aWYocmVzdWx0Lmxlbmd0aD4zMil7dGhyb3cgbmV3IEVycm9yKCJpbnRlcm5hbDsgc2hvdWxkIG5vdCBoYXBwZW4iKX12YXIgcGFkZGVkPW5ldyBVaW50OEFycmF5KDMyKTtwYWRkZWQuc2V0KHJlc3VsdCwzMi1yZXN1bHQubGVuZ3RoKTtyZXR1cm4gcGFkZGVkfWZ1bmN0aW9uIGJ5dGVzUGFkKHZhbHVlKXtpZih2YWx1ZS5sZW5ndGglMzI9PT0wKXtyZXR1cm4gdmFsdWV9dmFyIHJlc3VsdD1uZXcgVWludDhBcnJheShNYXRoLmNlaWwodmFsdWUubGVuZ3RoLzMyKSozMik7cmVzdWx0LnNldCh2YWx1ZSk7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBlbmNvZGVCeXRlcyhkYXRhcyl7dmFyIHJlc3VsdD1bXTt2YXIgYnl0ZUNvdW50PTA7Zm9yKHZhciBpPTA7aTxkYXRhcy5sZW5ndGg7aSsrKXtyZXN1bHQucHVzaChudWxsKTtieXRlQ291bnQrPTMyfWZvcih2YXIgaT0wO2k8ZGF0YXMubGVuZ3RoO2krKyl7dmFyIGRhdGE9KDAsbGliJDEuYXJyYXlpZnkpKGRhdGFzW2ldKTtyZXN1bHRbaV09bnVtUGFkKGJ5dGVDb3VudCk7cmVzdWx0LnB1c2gobnVtUGFkKGRhdGEubGVuZ3RoKSk7cmVzdWx0LnB1c2goYnl0ZXNQYWQoZGF0YSkpO2J5dGVDb3VudCs9MzIrTWF0aC5jZWlsKGRhdGEubGVuZ3RoLzMyKSozMn1yZXR1cm4oMCxsaWIkMS5oZXhDb25jYXQpKHJlc3VsdCl9dmFyIFJlc29sdmVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gUmVzb2x2ZXIocHJvdmlkZXIsYWRkcmVzcyxuYW1lLHJlc29sdmVkQWRkcmVzcyl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsInByb3ZpZGVyIixwcm92aWRlcik7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsIm5hbWUiLG5hbWUpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KSh0aGlzLCJhZGRyZXNzIixwcm92aWRlci5mb3JtYXR0ZXIuYWRkcmVzcyhhZGRyZXNzKSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsIl9yZXNvbHZlZEFkZHJlc3MiLHJlc29sdmVkQWRkcmVzcyl9UmVzb2x2ZXIucHJvdG90eXBlLnN1cHBvcnRzV2lsZGNhcmQ9ZnVuY3Rpb24oKXt2YXIgX3RoaXM9dGhpcztpZighdGhpcy5fc3VwcG9ydHNFaXAyNTQ0KXt0aGlzLl9zdXBwb3J0c0VpcDI1NDQ9dGhpcy5wcm92aWRlci5jYWxsKHt0bzp0aGlzLmFkZHJlc3MsZGF0YToiMHgwMWZmYzlhNzkwNjFiOTIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAifSkudGhlbihmdW5jdGlvbihyZXN1bHQpe3JldHVybiBsaWIkMi5CaWdOdW1iZXIuZnJvbShyZXN1bHQpLmVxKDEpfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3Ipe2lmKGVycm9yLmNvZGU9PT1saWIuTG9nZ2VyLmVycm9ycy5DQUxMX0VYQ0VQVElPTil7cmV0dXJuIGZhbHNlfV90aGlzLl9zdXBwb3J0c0VpcDI1NDQ9bnVsbDt0aHJvdyBlcnJvcn0pfXJldHVybiB0aGlzLl9zdXBwb3J0c0VpcDI1NDR9O1Jlc29sdmVyLnByb3RvdHlwZS5fZmV0Y2g9ZnVuY3Rpb24oc2VsZWN0b3IscGFyYW1ldGVycyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdHgscGFyc2VCeXRlcyxyZXN1bHQsZXJyb3JfMTtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6dHg9e3RvOnRoaXMuYWRkcmVzcyxjY2lwUmVhZEVuYWJsZWQ6dHJ1ZSxkYXRhOigwLGxpYiQxLmhleENvbmNhdCkoW3NlbGVjdG9yLCgwLGxpYiRjLm5hbWVoYXNoKSh0aGlzLm5hbWUpLHBhcmFtZXRlcnN8fCIweCJdKX07cGFyc2VCeXRlcz1mYWxzZTtyZXR1cm5bNCx0aGlzLnN1cHBvcnRzV2lsZGNhcmQoKV07Y2FzZSAxOmlmKF9hLnNlbnQoKSl7cGFyc2VCeXRlcz10cnVlO3R4LmRhdGE9KDAsbGliJDEuaGV4Q29uY2F0KShbIjB4OTA2MWI5MjMiLGVuY29kZUJ5dGVzKFsoMCxsaWIkYy5kbnNFbmNvZGUpKHRoaXMubmFtZSksdHguZGF0YV0pXSl9X2EubGFiZWw9MjtjYXNlIDI6X2EudHJ5cy5wdXNoKFsyLDQsLDVdKTtyZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmNhbGwodHgpXTtjYXNlIDM6cmVzdWx0PV9hLnNlbnQoKTtpZigoMCxsaWIkMS5hcnJheWlmeSkocmVzdWx0KS5sZW5ndGglMzI9PT00KXtsb2dnZXIudGhyb3dFcnJvcigicmVzb2x2ZXIgdGhyZXcgZXJyb3IiLGxpYi5Mb2dnZXIuZXJyb3JzLkNBTExfRVhDRVBUSU9OLHt0cmFuc2FjdGlvbjp0eCxkYXRhOnJlc3VsdH0pfWlmKHBhcnNlQnl0ZXMpe3Jlc3VsdD1fcGFyc2VCeXRlcyhyZXN1bHQsMCl9cmV0dXJuWzIscmVzdWx0XTtjYXNlIDQ6ZXJyb3JfMT1fYS5zZW50KCk7aWYoZXJyb3JfMS5jb2RlPT09bGliLkxvZ2dlci5lcnJvcnMuQ0FMTF9FWENFUFRJT04pe3JldHVyblsyLG51bGxdfXRocm93IGVycm9yXzE7Y2FzZSA1OnJldHVyblsyXX19KX0pfTtSZXNvbHZlci5wcm90b3R5cGUuX2ZldGNoQnl0ZXM9ZnVuY3Rpb24oc2VsZWN0b3IscGFyYW1ldGVycyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcmVzdWx0O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLl9mZXRjaChzZWxlY3RvcixwYXJhbWV0ZXJzKV07Y2FzZSAxOnJlc3VsdD1fYS5zZW50KCk7aWYocmVzdWx0IT1udWxsKXtyZXR1cm5bMixfcGFyc2VCeXRlcyhyZXN1bHQsMCldfXJldHVyblsyLG51bGxdfX0pfSl9O1Jlc29sdmVyLnByb3RvdHlwZS5fZ2V0QWRkcmVzcz1mdW5jdGlvbihjb2luVHlwZSxoZXhCeXRlcyl7dmFyIGNvaW5JbmZvPWNvaW5JbmZvc1tTdHJpbmcoY29pblR5cGUpXTtpZihjb2luSW5mbz09bnVsbCl7bG9nZ2VyLnRocm93RXJyb3IoInVuc3VwcG9ydGVkIGNvaW4gdHlwZTogIitjb2luVHlwZSxsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiZ2V0QWRkcmVzcygiK2NvaW5UeXBlKyIpIn0pfWlmKGNvaW5JbmZvLmlsaz09PSJldGgiKXtyZXR1cm4gdGhpcy5wcm92aWRlci5mb3JtYXR0ZXIuYWRkcmVzcyhoZXhCeXRlcyl9dmFyIGJ5dGVzPSgwLGxpYiQxLmFycmF5aWZ5KShoZXhCeXRlcyk7aWYoY29pbkluZm8ucDJwa2ghPW51bGwpe3ZhciBwMnBraD1oZXhCeXRlcy5tYXRjaCgvXjB4NzZhOShbMC05YS1mXVswLTlhLWZdKShbMC05YS1mXSopODhhYyQvKTtpZihwMnBraCl7dmFyIGxlbmd0aF8xPXBhcnNlSW50KHAycGtoWzFdLDE2KTtpZihwMnBraFsyXS5sZW5ndGg9PT1sZW5ndGhfMSoyJiZsZW5ndGhfMT49MSYmbGVuZ3RoXzE8PTc1KXtyZXR1cm4gYmFzZTU4RW5jb2RlKCgwLGxpYiQxLmNvbmNhdCkoW1tjb2luSW5mby5wMnBraF0sIjB4IitwMnBraFsyXV0pKX19fWlmKGNvaW5JbmZvLnAyc2ghPW51bGwpe3ZhciBwMnNoPWhleEJ5dGVzLm1hdGNoKC9eMHhhOShbMC05YS1mXVswLTlhLWZdKShbMC05YS1mXSopODckLyk7aWYocDJzaCl7dmFyIGxlbmd0aF8yPXBhcnNlSW50KHAyc2hbMV0sMTYpO2lmKHAyc2hbMl0ubGVuZ3RoPT09bGVuZ3RoXzIqMiYmbGVuZ3RoXzI+PTEmJmxlbmd0aF8yPD03NSl7cmV0dXJuIGJhc2U1OEVuY29kZSgoMCxsaWIkMS5jb25jYXQpKFtbY29pbkluZm8ucDJzaF0sIjB4IitwMnNoWzJdXSkpfX19aWYoY29pbkluZm8ucHJlZml4IT1udWxsKXt2YXIgbGVuZ3RoXzM9Ynl0ZXNbMV07dmFyIHZlcnNpb25fMT1ieXRlc1swXTtpZih2ZXJzaW9uXzE9PT0wKXtpZihsZW5ndGhfMyE9PTIwJiZsZW5ndGhfMyE9PTMyKXt2ZXJzaW9uXzE9LTF9fWVsc2V7dmVyc2lvbl8xPS0xfWlmKHZlcnNpb25fMT49MCYmYnl0ZXMubGVuZ3RoPT09MitsZW5ndGhfMyYmbGVuZ3RoXzM+PTEmJmxlbmd0aF8zPD03NSl7dmFyIHdvcmRzPWJlY2gzMl8xLmRlZmF1bHQudG9Xb3JkcyhieXRlcy5zbGljZSgyKSk7d29yZHMudW5zaGlmdCh2ZXJzaW9uXzEpO3JldHVybiBiZWNoMzJfMS5kZWZhdWx0LmVuY29kZShjb2luSW5mby5wcmVmaXgsd29yZHMpfX1yZXR1cm4gbnVsbH07UmVzb2x2ZXIucHJvdG90eXBlLmdldEFkZHJlc3M9ZnVuY3Rpb24oY29pblR5cGUpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlc3VsdCxlcnJvcl8yLGhleEJ5dGVzLGFkZHJlc3M7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmlmKGNvaW5UeXBlPT1udWxsKXtjb2luVHlwZT02MH1pZighKGNvaW5UeXBlPT09NjApKXJldHVyblszLDRdO19hLmxhYmVsPTE7Y2FzZSAxOl9hLnRyeXMucHVzaChbMSwzLCw0XSk7cmV0dXJuWzQsdGhpcy5fZmV0Y2goIjB4M2IzYjU3ZGUiKV07Y2FzZSAyOnJlc3VsdD1fYS5zZW50KCk7aWYocmVzdWx0PT09IjB4Inx8cmVzdWx0PT09bGliJDcuSGFzaFplcm8pe3JldHVyblsyLG51bGxdfXJldHVyblsyLHRoaXMucHJvdmlkZXIuZm9ybWF0dGVyLmNhbGxBZGRyZXNzKHJlc3VsdCldO2Nhc2UgMzplcnJvcl8yPV9hLnNlbnQoKTtpZihlcnJvcl8yLmNvZGU9PT1saWIuTG9nZ2VyLmVycm9ycy5DQUxMX0VYQ0VQVElPTil7cmV0dXJuWzIsbnVsbF19dGhyb3cgZXJyb3JfMjtjYXNlIDQ6cmV0dXJuWzQsdGhpcy5fZmV0Y2hCeXRlcygiMHhmMWNiN2UwNiIsYnl0ZXMzMmlmeShjb2luVHlwZSkpXTtjYXNlIDU6aGV4Qnl0ZXM9X2Euc2VudCgpO2lmKGhleEJ5dGVzPT1udWxsfHxoZXhCeXRlcz09PSIweCIpe3JldHVyblsyLG51bGxdfWFkZHJlc3M9dGhpcy5fZ2V0QWRkcmVzcyhjb2luVHlwZSxoZXhCeXRlcyk7aWYoYWRkcmVzcz09bnVsbCl7bG9nZ2VyLnRocm93RXJyb3IoImludmFsaWQgb3IgdW5zdXBwb3J0ZWQgY29pbiBkYXRhIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiZ2V0QWRkcmVzcygiK2NvaW5UeXBlKyIpIixjb2luVHlwZTpjb2luVHlwZSxkYXRhOmhleEJ5dGVzfSl9cmV0dXJuWzIsYWRkcmVzc119fSl9KX07UmVzb2x2ZXIucHJvdG90eXBlLmdldEF2YXRhcj1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGxpbmthZ2UsYXZhdGFyLGksbWF0Y2gsc2NoZW1lLF9hLHNlbGVjdG9yLG93bmVyLF9iLGNvbXBzLGFkZHIsdG9rZW5JZCx0b2tlbk93bmVyLF9jLF9kLGJhbGFuY2UsX2UsX2YsdHgsbWV0YWRhdGFVcmwsX2csbWV0YWRhdGEsaW1hZ2VVcmwsaXBmcyxlcnJvcl8zO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9oKXtzd2l0Y2goX2gubGFiZWwpe2Nhc2UgMDpsaW5rYWdlPVt7dHlwZToibmFtZSIsY29udGVudDp0aGlzLm5hbWV9XTtfaC5sYWJlbD0xO2Nhc2UgMTpfaC50cnlzLnB1c2goWzEsMTksLDIwXSk7cmV0dXJuWzQsdGhpcy5nZXRUZXh0KCJhdmF0YXIiKV07Y2FzZSAyOmF2YXRhcj1faC5zZW50KCk7aWYoYXZhdGFyPT1udWxsKXtyZXR1cm5bMixudWxsXX1pPTA7X2gubGFiZWw9MztjYXNlIDM6aWYoIShpPG1hdGNoZXJzLmxlbmd0aCkpcmV0dXJuWzMsMThdO21hdGNoPWF2YXRhci5tYXRjaChtYXRjaGVyc1tpXSk7aWYobWF0Y2g9PW51bGwpe3JldHVyblszLDE3XX1zY2hlbWU9bWF0Y2hbMV0udG9Mb3dlckNhc2UoKTtfYT1zY2hlbWU7c3dpdGNoKF9hKXtjYXNlImh0dHBzIjpyZXR1cm5bMyw0XTtjYXNlImRhdGEiOnJldHVyblszLDVdO2Nhc2UiaXBmcyI6cmV0dXJuWzMsNl07Y2FzZSJlcmM3MjEiOnJldHVyblszLDddO2Nhc2UiZXJjMTE1NSI6cmV0dXJuWzMsN119cmV0dXJuWzMsMTddO2Nhc2UgNDpsaW5rYWdlLnB1c2goe3R5cGU6InVybCIsY29udGVudDphdmF0YXJ9KTtyZXR1cm5bMix7bGlua2FnZTpsaW5rYWdlLHVybDphdmF0YXJ9XTtjYXNlIDU6bGlua2FnZS5wdXNoKHt0eXBlOiJkYXRhIixjb250ZW50OmF2YXRhcn0pO3JldHVyblsyLHtsaW5rYWdlOmxpbmthZ2UsdXJsOmF2YXRhcn1dO2Nhc2UgNjpsaW5rYWdlLnB1c2goe3R5cGU6ImlwZnMiLGNvbnRlbnQ6YXZhdGFyfSk7cmV0dXJuWzIse2xpbmthZ2U6bGlua2FnZSx1cmw6Z2V0SXBmc0xpbmsoYXZhdGFyKX1dO2Nhc2UgNzpzZWxlY3Rvcj1zY2hlbWU9PT0iZXJjNzIxIj8iMHhjODdiNTZkZCI6IjB4MGU4OTM0MWMiO2xpbmthZ2UucHVzaCh7dHlwZTpzY2hlbWUsY29udGVudDphdmF0YXJ9KTtfYj10aGlzLl9yZXNvbHZlZEFkZHJlc3M7aWYoX2IpcmV0dXJuWzMsOV07cmV0dXJuWzQsdGhpcy5nZXRBZGRyZXNzKCldO2Nhc2UgODpfYj1faC5zZW50KCk7X2gubGFiZWw9OTtjYXNlIDk6b3duZXI9X2I7Y29tcHM9KG1hdGNoWzJdfHwiIikuc3BsaXQoIi8iKTtpZihjb21wcy5sZW5ndGghPT0yKXtyZXR1cm5bMixudWxsXX1yZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmZvcm1hdHRlci5hZGRyZXNzKGNvbXBzWzBdKV07Y2FzZSAxMDphZGRyPV9oLnNlbnQoKTt0b2tlbklkPSgwLGxpYiQxLmhleFplcm9QYWQpKGxpYiQyLkJpZ051bWJlci5mcm9tKGNvbXBzWzFdKS50b0hleFN0cmluZygpLDMyKTtpZighKHNjaGVtZT09PSJlcmM3MjEiKSlyZXR1cm5bMywxMl07X2Q9KF9jPXRoaXMucHJvdmlkZXIuZm9ybWF0dGVyKS5jYWxsQWRkcmVzcztyZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmNhbGwoe3RvOmFkZHIsZGF0YTooMCxsaWIkMS5oZXhDb25jYXQpKFsiMHg2MzUyMjExZSIsdG9rZW5JZF0pfSldO2Nhc2UgMTE6dG9rZW5Pd25lcj1fZC5hcHBseShfYyxbX2guc2VudCgpXSk7aWYob3duZXIhPT10b2tlbk93bmVyKXtyZXR1cm5bMixudWxsXX1saW5rYWdlLnB1c2goe3R5cGU6Im93bmVyIixjb250ZW50OnRva2VuT3duZXJ9KTtyZXR1cm5bMywxNF07Y2FzZSAxMjppZighKHNjaGVtZT09PSJlcmMxMTU1IikpcmV0dXJuWzMsMTRdO19mPShfZT1saWIkMi5CaWdOdW1iZXIpLmZyb207cmV0dXJuWzQsdGhpcy5wcm92aWRlci5jYWxsKHt0bzphZGRyLGRhdGE6KDAsbGliJDEuaGV4Q29uY2F0KShbIjB4MDBmZGQ1OGUiLCgwLGxpYiQxLmhleFplcm9QYWQpKG93bmVyLDMyKSx0b2tlbklkXSl9KV07Y2FzZSAxMzpiYWxhbmNlPV9mLmFwcGx5KF9lLFtfaC5zZW50KCldKTtpZihiYWxhbmNlLmlzWmVybygpKXtyZXR1cm5bMixudWxsXX1saW5rYWdlLnB1c2goe3R5cGU6ImJhbGFuY2UiLGNvbnRlbnQ6YmFsYW5jZS50b1N0cmluZygpfSk7X2gubGFiZWw9MTQ7Y2FzZSAxNDp0eD17dG86dGhpcy5wcm92aWRlci5mb3JtYXR0ZXIuYWRkcmVzcyhjb21wc1swXSksZGF0YTooMCxsaWIkMS5oZXhDb25jYXQpKFtzZWxlY3Rvcix0b2tlbklkXSl9O19nPV9wYXJzZVN0cmluZztyZXR1cm5bNCx0aGlzLnByb3ZpZGVyLmNhbGwodHgpXTtjYXNlIDE1Om1ldGFkYXRhVXJsPV9nLmFwcGx5KHZvaWQgMCxbX2guc2VudCgpLDBdKTtpZihtZXRhZGF0YVVybD09bnVsbCl7cmV0dXJuWzIsbnVsbF19bGlua2FnZS5wdXNoKHt0eXBlOiJtZXRhZGF0YS11cmwtYmFzZSIsY29udGVudDptZXRhZGF0YVVybH0pO2lmKHNjaGVtZT09PSJlcmMxMTU1Iil7bWV0YWRhdGFVcmw9bWV0YWRhdGFVcmwucmVwbGFjZSgie2lkfSIsdG9rZW5JZC5zdWJzdHJpbmcoMikpO2xpbmthZ2UucHVzaCh7dHlwZToibWV0YWRhdGEtdXJsLWV4cGFuZGVkIixjb250ZW50Om1ldGFkYXRhVXJsfSl9aWYobWV0YWRhdGFVcmwubWF0Y2goL15pcGZzOi9pKSl7bWV0YWRhdGFVcmw9Z2V0SXBmc0xpbmsobWV0YWRhdGFVcmwpfWxpbmthZ2UucHVzaCh7dHlwZToibWV0YWRhdGEtdXJsIixjb250ZW50Om1ldGFkYXRhVXJsfSk7cmV0dXJuWzQsKDAsbGliJHMuZmV0Y2hKc29uKShtZXRhZGF0YVVybCldO2Nhc2UgMTY6bWV0YWRhdGE9X2guc2VudCgpO2lmKCFtZXRhZGF0YSl7cmV0dXJuWzIsbnVsbF19bGlua2FnZS5wdXNoKHt0eXBlOiJtZXRhZGF0YSIsY29udGVudDpKU09OLnN0cmluZ2lmeShtZXRhZGF0YSl9KTtpbWFnZVVybD1tZXRhZGF0YS5pbWFnZTtpZih0eXBlb2YgaW1hZ2VVcmwhPT0ic3RyaW5nIil7cmV0dXJuWzIsbnVsbF19aWYoaW1hZ2VVcmwubWF0Y2goL14oaHR0cHM6XC9cL3xkYXRhOikvaSkpe31lbHNle2lwZnM9aW1hZ2VVcmwubWF0Y2gobWF0Y2hlcklwZnMpO2lmKGlwZnM9PW51bGwpe3JldHVyblsyLG51bGxdfWxpbmthZ2UucHVzaCh7dHlwZToidXJsLWlwZnMiLGNvbnRlbnQ6aW1hZ2VVcmx9KTtpbWFnZVVybD1nZXRJcGZzTGluayhpbWFnZVVybCl9bGlua2FnZS5wdXNoKHt0eXBlOiJ1cmwiLGNvbnRlbnQ6aW1hZ2VVcmx9KTtyZXR1cm5bMix7bGlua2FnZTpsaW5rYWdlLHVybDppbWFnZVVybH1dO2Nhc2UgMTc6aSsrO3JldHVyblszLDNdO2Nhc2UgMTg6cmV0dXJuWzMsMjBdO2Nhc2UgMTk6ZXJyb3JfMz1faC5zZW50KCk7cmV0dXJuWzMsMjBdO2Nhc2UgMjA6cmV0dXJuWzIsbnVsbF19fSl9KX07UmVzb2x2ZXIucHJvdG90eXBlLmdldENvbnRlbnRIYXNoPWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaGV4Qnl0ZXMsaXBmcyxsZW5ndGhfNCxpcG5zLGxlbmd0aF81LHN3YXJtLHNreW5ldCx1cmxTYWZlXzEsaGFzaDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5fZmV0Y2hCeXRlcygiMHhiYzFjNThkMSIpXTtjYXNlIDE6aGV4Qnl0ZXM9X2Euc2VudCgpO2lmKGhleEJ5dGVzPT1udWxsfHxoZXhCeXRlcz09PSIweCIpe3JldHVyblsyLG51bGxdfWlwZnM9aGV4Qnl0ZXMubWF0Y2goL14weGUzMDEwMTcwKChbMC05YS1mXVswLTlhLWZdKShbMC05YS1mXVswLTlhLWZdKShbMC05YS1mXSopKSQvKTtpZihpcGZzKXtsZW5ndGhfND1wYXJzZUludChpcGZzWzNdLDE2KTtpZihpcGZzWzRdLmxlbmd0aD09PWxlbmd0aF80KjIpe3JldHVyblsyLCJpcGZzOi8vIitsaWIkai5CYXNlNTguZW5jb2RlKCIweCIraXBmc1sxXSldfX1pcG5zPWhleEJ5dGVzLm1hdGNoKC9eMHhlNTAxMDE3MigoWzAtOWEtZl1bMC05YS1mXSkoWzAtOWEtZl1bMC05YS1mXSkoWzAtOWEtZl0qKSkkLyk7aWYoaXBucyl7bGVuZ3RoXzU9cGFyc2VJbnQoaXBuc1szXSwxNik7aWYoaXBuc1s0XS5sZW5ndGg9PT1sZW5ndGhfNSoyKXtyZXR1cm5bMiwiaXBuczovLyIrbGliJGouQmFzZTU4LmVuY29kZSgiMHgiK2lwbnNbMV0pXX19c3dhcm09aGV4Qnl0ZXMubWF0Y2goL14weGU0MDEwMWZhMDExYjIwKFswLTlhLWZdKikkLyk7aWYoc3dhcm0pe2lmKHN3YXJtWzFdLmxlbmd0aD09PTMyKjIpe3JldHVyblsyLCJieno6Ly8iK3N3YXJtWzFdXX19c2t5bmV0PWhleEJ5dGVzLm1hdGNoKC9eMHg5MGIyYzYwNShbMC05YS1mXSopJC8pO2lmKHNreW5ldCl7aWYoc2t5bmV0WzFdLmxlbmd0aD09PTM0KjIpe3VybFNhZmVfMT17Ij0iOiIiLCIrIjoiLSIsIi8iOiJfIn07aGFzaD0oMCxsaWIkOS5lbmNvZGUpKCIweCIrc2t5bmV0WzFdKS5yZXBsYWNlKC9bPStcL10vZyxmdW5jdGlvbihhKXtyZXR1cm4gdXJsU2FmZV8xW2FdfSk7cmV0dXJuWzIsInNpYTovLyIraGFzaF19fXJldHVyblsyLGxvZ2dlci50aHJvd0Vycm9yKCJpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIGNvbnRlbnQgaGFzaCBkYXRhIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiZ2V0Q29udGVudEhhc2goKSIsZGF0YTpoZXhCeXRlc30pXX19KX0pfTtSZXNvbHZlci5wcm90b3R5cGUuZ2V0VGV4dD1mdW5jdGlvbihrZXkpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGtleUJ5dGVzLGhleEJ5dGVzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDprZXlCeXRlcz0oMCxsaWIkOC50b1V0ZjhCeXRlcykoa2V5KTtrZXlCeXRlcz0oMCxsaWIkMS5jb25jYXQpKFtieXRlczMyaWZ5KDY0KSxieXRlczMyaWZ5KGtleUJ5dGVzLmxlbmd0aCksa2V5Qnl0ZXNdKTtpZihrZXlCeXRlcy5sZW5ndGglMzIhPT0wKXtrZXlCeXRlcz0oMCxsaWIkMS5jb25jYXQpKFtrZXlCeXRlcywoMCxsaWIkMS5oZXhaZXJvUGFkKSgiMHgiLDMyLWtleS5sZW5ndGglMzIpXSl9cmV0dXJuWzQsdGhpcy5fZmV0Y2hCeXRlcygiMHg1OWQxZDQzYyIsKDAsbGliJDEuaGV4bGlmeSkoa2V5Qnl0ZXMpKV07Y2FzZSAxOmhleEJ5dGVzPV9hLnNlbnQoKTtpZihoZXhCeXRlcz09bnVsbHx8aGV4Qnl0ZXM9PT0iMHgiKXtyZXR1cm5bMixudWxsXX1yZXR1cm5bMiwoMCxsaWIkOC50b1V0ZjhTdHJpbmcpKGhleEJ5dGVzKV19fSl9KX07cmV0dXJuIFJlc29sdmVyfSgpO2V4cG9ydHMuUmVzb2x2ZXI9UmVzb2x2ZXI7dmFyIGRlZmF1bHRGb3JtYXR0ZXI9bnVsbDt2YXIgbmV4dFBvbGxJZD0xO3ZhciBCYXNlUHJvdmlkZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoQmFzZVByb3ZpZGVyLF9zdXBlcik7ZnVuY3Rpb24gQmFzZVByb3ZpZGVyKG5ldHdvcmspe3ZhciBfbmV3VGFyZ2V0PXRoaXMuY29uc3RydWN0b3I7dmFyIF90aGlzPV9zdXBlci5jYWxsKHRoaXMpfHx0aGlzO190aGlzLl9ldmVudHM9W107X3RoaXMuX2VtaXR0ZWQ9e2Jsb2NrOi0yfTtfdGhpcy5kaXNhYmxlQ2NpcFJlYWQ9ZmFsc2U7X3RoaXMuZm9ybWF0dGVyPV9uZXdUYXJnZXQuZ2V0Rm9ybWF0dGVyKCk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJhbnlOZXR3b3JrIixuZXR3b3JrPT09ImFueSIpO2lmKF90aGlzLmFueU5ldHdvcmspe25ldHdvcms9X3RoaXMuZGV0ZWN0TmV0d29yaygpfWlmKG5ldHdvcmsgaW5zdGFuY2VvZiBQcm9taXNlKXtfdGhpcy5fbmV0d29ya1Byb21pc2U9bmV0d29yaztuZXR3b3JrLmNhdGNoKGZ1bmN0aW9uKGVycm9yKXt9KTtfdGhpcy5fcmVhZHkoKS5jYXRjaChmdW5jdGlvbihlcnJvcil7fSl9ZWxzZXt2YXIga25vd25OZXR3b3JrPSgwLGxpYiQzLmdldFN0YXRpYykoX25ld1RhcmdldCwiZ2V0TmV0d29yayIpKG5ldHdvcmspO2lmKGtub3duTmV0d29yayl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJfbmV0d29yayIsa25vd25OZXR3b3JrKTtfdGhpcy5lbWl0KCJuZXR3b3JrIixrbm93bk5ldHdvcmssbnVsbCl9ZWxzZXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIG5ldHdvcmsiLCJuZXR3b3JrIixuZXR3b3JrKX19X3RoaXMuX21heEludGVybmFsQmxvY2tOdW1iZXI9LTEwMjQ7X3RoaXMuX2xhc3RCbG9ja051bWJlcj0tMjtfdGhpcy5fbWF4RmlsdGVyQmxvY2tSYW5nZT0xMDtfdGhpcy5fcG9sbGluZ0ludGVydmFsPTRlMztfdGhpcy5fZmFzdFF1ZXJ5RGF0ZT0wO3JldHVybiBfdGhpc31CYXNlUHJvdmlkZXIucHJvdG90eXBlLl9yZWFkeT1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5ldHdvcmssZXJyb3JfNDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYoISh0aGlzLl9uZXR3b3JrPT1udWxsKSlyZXR1cm5bMyw3XTtuZXR3b3JrPW51bGw7aWYoIXRoaXMuX25ldHdvcmtQcm9taXNlKXJldHVyblszLDRdO19hLmxhYmVsPTE7Y2FzZSAxOl9hLnRyeXMucHVzaChbMSwzLCw0XSk7cmV0dXJuWzQsdGhpcy5fbmV0d29ya1Byb21pc2VdO2Nhc2UgMjpuZXR3b3JrPV9hLnNlbnQoKTtyZXR1cm5bMyw0XTtjYXNlIDM6ZXJyb3JfND1fYS5zZW50KCk7cmV0dXJuWzMsNF07Y2FzZSA0OmlmKCEobmV0d29yaz09bnVsbCkpcmV0dXJuWzMsNl07cmV0dXJuWzQsdGhpcy5kZXRlY3ROZXR3b3JrKCldO2Nhc2UgNTpuZXR3b3JrPV9hLnNlbnQoKTtfYS5sYWJlbD02O2Nhc2UgNjppZighbmV0d29yayl7bG9nZ2VyLnRocm93RXJyb3IoIm5vIG5ldHdvcmsgZGV0ZWN0ZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOS05PV05fRVJST1Ise30pfWlmKHRoaXMuX25ldHdvcms9PW51bGwpe2lmKHRoaXMuYW55TmV0d29yayl7dGhpcy5fbmV0d29yaz1uZXR3b3JrfWVsc2V7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKHRoaXMsIl9uZXR3b3JrIixuZXR3b3JrKX10aGlzLmVtaXQoIm5ldHdvcmsiLG5ldHdvcmssbnVsbCl9X2EubGFiZWw9NztjYXNlIDc6cmV0dXJuWzIsdGhpcy5fbmV0d29ya119fSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2VQcm92aWRlci5wcm90b3R5cGUsInJlYWR5Iix7Z2V0OmZ1bmN0aW9uKCl7dmFyIF90aGlzPXRoaXM7cmV0dXJuKDAsbGliJHMucG9sbCkoZnVuY3Rpb24oKXtyZXR1cm4gX3RoaXMuX3JlYWR5KCkudGhlbihmdW5jdGlvbihuZXR3b3JrKXtyZXR1cm4gbmV0d29ya30sZnVuY3Rpb24oZXJyb3Ipe2lmKGVycm9yLmNvZGU9PT1saWIuTG9nZ2VyLmVycm9ycy5ORVRXT1JLX0VSUk9SJiZlcnJvci5ldmVudD09PSJub05ldHdvcmsiKXtyZXR1cm4gdW5kZWZpbmVkfXRocm93IGVycm9yfSl9KX0sZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6dHJ1ZX0pO0Jhc2VQcm92aWRlci5nZXRGb3JtYXR0ZXI9ZnVuY3Rpb24oKXtpZihkZWZhdWx0Rm9ybWF0dGVyPT1udWxsKXtkZWZhdWx0Rm9ybWF0dGVyPW5ldyBmb3JtYXR0ZXIuRm9ybWF0dGVyfXJldHVybiBkZWZhdWx0Rm9ybWF0dGVyfTtCYXNlUHJvdmlkZXIuZ2V0TmV0d29yaz1mdW5jdGlvbihuZXR3b3JrKXtyZXR1cm4oMCxsaWIkci5nZXROZXR3b3JrKShuZXR3b3JrPT1udWxsPyJob21lc3RlYWQiOm5ldHdvcmspfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmNjaXBSZWFkRmV0Y2g9ZnVuY3Rpb24odHgsY2FsbGRhdGEsdXJscyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgc2VuZGVyLGRhdGEsZXJyb3JNZXNzYWdlcyxpLHVybCxocmVmLGpzb24scmVzdWx0LGVycm9yTWVzc2FnZTtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYodGhpcy5kaXNhYmxlQ2NpcFJlYWR8fHVybHMubGVuZ3RoPT09MCl7cmV0dXJuWzIsbnVsbF19c2VuZGVyPXR4LnRvLnRvTG93ZXJDYXNlKCk7ZGF0YT1jYWxsZGF0YS50b0xvd2VyQ2FzZSgpO2Vycm9yTWVzc2FnZXM9W107aT0wO19hLmxhYmVsPTE7Y2FzZSAxOmlmKCEoaTx1cmxzLmxlbmd0aCkpcmV0dXJuWzMsNF07dXJsPXVybHNbaV07aHJlZj11cmwucmVwbGFjZSgie3NlbmRlcn0iLHNlbmRlcikucmVwbGFjZSgie2RhdGF9IixkYXRhKTtqc29uPXVybC5pbmRleE9mKCJ7ZGF0YX0iKT49MD9udWxsOkpTT04uc3RyaW5naWZ5KHtkYXRhOmRhdGEsc2VuZGVyOnNlbmRlcn0pO3JldHVybls0LCgwLGxpYiRzLmZldGNoSnNvbikoe3VybDpocmVmLGVycm9yUGFzc1Rocm91Z2g6dHJ1ZX0sanNvbixmdW5jdGlvbih2YWx1ZSxyZXNwb25zZSl7dmFsdWUuc3RhdHVzPXJlc3BvbnNlLnN0YXR1c0NvZGU7cmV0dXJuIHZhbHVlfSldO2Nhc2UgMjpyZXN1bHQ9X2Euc2VudCgpO2lmKHJlc3VsdC5kYXRhKXtyZXR1cm5bMixyZXN1bHQuZGF0YV19ZXJyb3JNZXNzYWdlPXJlc3VsdC5tZXNzYWdlfHwidW5rbm93biBlcnJvciI7aWYocmVzdWx0LnN0YXR1cz49NDAwJiZyZXN1bHQuc3RhdHVzPDUwMCl7cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoInJlc3BvbnNlIG5vdCBmb3VuZCBkdXJpbmcgQ0NJUCBmZXRjaDogIitlcnJvck1lc3NhZ2UsbGliLkxvZ2dlci5lcnJvcnMuU0VSVkVSX0VSUk9SLHt1cmw6dXJsLGVycm9yTWVzc2FnZTplcnJvck1lc3NhZ2V9KV19ZXJyb3JNZXNzYWdlcy5wdXNoKGVycm9yTWVzc2FnZSk7X2EubGFiZWw9MztjYXNlIDM6aSsrO3JldHVyblszLDFdO2Nhc2UgNDpyZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigiZXJyb3IgZW5jb3VudGVyZWQgZHVyaW5nIENDSVAgZmV0Y2g6ICIrZXJyb3JNZXNzYWdlcy5tYXAoZnVuY3Rpb24obSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KG0pfSkuam9pbigiLCAiKSxsaWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1Ise3VybHM6dXJscyxlcnJvck1lc3NhZ2VzOmVycm9yTWVzc2FnZXN9KV19fSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5fZ2V0SW50ZXJuYWxCbG9ja051bWJlcj1mdW5jdGlvbihtYXhBZ2Upe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGludGVybmFsQmxvY2tOdW1iZXIscmVzdWx0LGVycm9yXzUscmVxVGltZSxjaGVja0ludGVybmFsQmxvY2tOdW1iZXI7dmFyIF90aGlzPXRoaXM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuX3JlYWR5KCldO2Nhc2UgMTpfYS5zZW50KCk7aWYoIShtYXhBZ2U+MCkpcmV0dXJuWzMsN107X2EubGFiZWw9MjtjYXNlIDI6aWYoIXRoaXMuX2ludGVybmFsQmxvY2tOdW1iZXIpcmV0dXJuWzMsN107aW50ZXJuYWxCbG9ja051bWJlcj10aGlzLl9pbnRlcm5hbEJsb2NrTnVtYmVyO19hLmxhYmVsPTM7Y2FzZSAzOl9hLnRyeXMucHVzaChbMyw1LCw2XSk7cmV0dXJuWzQsaW50ZXJuYWxCbG9ja051bWJlcl07Y2FzZSA0OnJlc3VsdD1fYS5zZW50KCk7aWYoZ2V0VGltZSgpLXJlc3VsdC5yZXNwVGltZTw9bWF4QWdlKXtyZXR1cm5bMixyZXN1bHQuYmxvY2tOdW1iZXJdfXJldHVyblszLDddO2Nhc2UgNTplcnJvcl81PV9hLnNlbnQoKTtpZih0aGlzLl9pbnRlcm5hbEJsb2NrTnVtYmVyPT09aW50ZXJuYWxCbG9ja051bWJlcil7cmV0dXJuWzMsN119cmV0dXJuWzMsNl07Y2FzZSA2OnJldHVyblszLDJdO2Nhc2UgNzpyZXFUaW1lPWdldFRpbWUoKTtjaGVja0ludGVybmFsQmxvY2tOdW1iZXI9KDAsbGliJDMucmVzb2x2ZVByb3BlcnRpZXMpKHtibG9ja051bWJlcjp0aGlzLnBlcmZvcm0oImdldEJsb2NrTnVtYmVyIix7fSksbmV0d29ya0Vycm9yOnRoaXMuZ2V0TmV0d29yaygpLnRoZW4oZnVuY3Rpb24obmV0d29yayl7cmV0dXJuIG51bGx9LGZ1bmN0aW9uKGVycm9yKXtyZXR1cm4gZXJyb3J9KX0pLnRoZW4oZnVuY3Rpb24oX2Epe3ZhciBibG9ja051bWJlcj1fYS5ibG9ja051bWJlcixuZXR3b3JrRXJyb3I9X2EubmV0d29ya0Vycm9yO2lmKG5ldHdvcmtFcnJvcil7aWYoX3RoaXMuX2ludGVybmFsQmxvY2tOdW1iZXI9PT1jaGVja0ludGVybmFsQmxvY2tOdW1iZXIpe190aGlzLl9pbnRlcm5hbEJsb2NrTnVtYmVyPW51bGx9dGhyb3cgbmV0d29ya0Vycm9yfXZhciByZXNwVGltZT1nZXRUaW1lKCk7YmxvY2tOdW1iZXI9bGliJDIuQmlnTnVtYmVyLmZyb20oYmxvY2tOdW1iZXIpLnRvTnVtYmVyKCk7aWYoYmxvY2tOdW1iZXI8X3RoaXMuX21heEludGVybmFsQmxvY2tOdW1iZXIpe2Jsb2NrTnVtYmVyPV90aGlzLl9tYXhJbnRlcm5hbEJsb2NrTnVtYmVyfV90aGlzLl9tYXhJbnRlcm5hbEJsb2NrTnVtYmVyPWJsb2NrTnVtYmVyO190aGlzLl9zZXRGYXN0QmxvY2tOdW1iZXIoYmxvY2tOdW1iZXIpO3JldHVybntibG9ja051bWJlcjpibG9ja051bWJlcixyZXFUaW1lOnJlcVRpbWUscmVzcFRpbWU6cmVzcFRpbWV9fSk7dGhpcy5faW50ZXJuYWxCbG9ja051bWJlcj1jaGVja0ludGVybmFsQmxvY2tOdW1iZXI7Y2hlY2tJbnRlcm5hbEJsb2NrTnVtYmVyLmNhdGNoKGZ1bmN0aW9uKGVycm9yKXtpZihfdGhpcy5faW50ZXJuYWxCbG9ja051bWJlcj09PWNoZWNrSW50ZXJuYWxCbG9ja051bWJlcil7X3RoaXMuX2ludGVybmFsQmxvY2tOdW1iZXI9bnVsbH19KTtyZXR1cm5bNCxjaGVja0ludGVybmFsQmxvY2tOdW1iZXJdO2Nhc2UgODpyZXR1cm5bMixfYS5zZW50KCkuYmxvY2tOdW1iZXJdfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUucG9sbD1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHBvbGxJZCxydW5uZXJzLGJsb2NrTnVtYmVyLGVycm9yXzYsaTt2YXIgX3RoaXM9dGhpcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cG9sbElkPW5leHRQb2xsSWQrKztydW5uZXJzPVtdO2Jsb2NrTnVtYmVyPW51bGw7X2EubGFiZWw9MTtjYXNlIDE6X2EudHJ5cy5wdXNoKFsxLDMsLDRdKTtyZXR1cm5bNCx0aGlzLl9nZXRJbnRlcm5hbEJsb2NrTnVtYmVyKDEwMCt0aGlzLnBvbGxpbmdJbnRlcnZhbC8yKV07Y2FzZSAyOmJsb2NrTnVtYmVyPV9hLnNlbnQoKTtyZXR1cm5bMyw0XTtjYXNlIDM6ZXJyb3JfNj1fYS5zZW50KCk7dGhpcy5lbWl0KCJlcnJvciIsZXJyb3JfNik7cmV0dXJuWzJdO2Nhc2UgNDp0aGlzLl9zZXRGYXN0QmxvY2tOdW1iZXIoYmxvY2tOdW1iZXIpO3RoaXMuZW1pdCgicG9sbCIscG9sbElkLGJsb2NrTnVtYmVyKTtpZihibG9ja051bWJlcj09PXRoaXMuX2xhc3RCbG9ja051bWJlcil7dGhpcy5lbWl0KCJkaWRQb2xsIixwb2xsSWQpO3JldHVyblsyXX1pZih0aGlzLl9lbWl0dGVkLmJsb2NrPT09LTIpe3RoaXMuX2VtaXR0ZWQuYmxvY2s9YmxvY2tOdW1iZXItMX1pZihNYXRoLmFicyh0aGlzLl9lbWl0dGVkLmJsb2NrLWJsb2NrTnVtYmVyKT4xZTMpe2xvZ2dlci53YXJuKCJuZXR3b3JrIGJsb2NrIHNrZXcgZGV0ZWN0ZWQ7IHNraXBwaW5nIGJsb2NrIGV2ZW50cyAoZW1pdHRlZD0iK3RoaXMuX2VtaXR0ZWQuYmxvY2srIiBibG9ja051bWJlciIrYmxvY2tOdW1iZXIrIikiKTt0aGlzLmVtaXQoImVycm9yIixsb2dnZXIubWFrZUVycm9yKCJuZXR3b3JrIGJsb2NrIHNrZXcgZGV0ZWN0ZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLk5FVFdPUktfRVJST1Ise2Jsb2NrTnVtYmVyOmJsb2NrTnVtYmVyLGV2ZW50OiJibG9ja1NrZXciLHByZXZpb3VzQmxvY2tOdW1iZXI6dGhpcy5fZW1pdHRlZC5ibG9ja30pKTt0aGlzLmVtaXQoImJsb2NrIixibG9ja051bWJlcil9ZWxzZXtmb3IoaT10aGlzLl9lbWl0dGVkLmJsb2NrKzE7aTw9YmxvY2tOdW1iZXI7aSsrKXt0aGlzLmVtaXQoImJsb2NrIixpKX19aWYodGhpcy5fZW1pdHRlZC5ibG9jayE9PWJsb2NrTnVtYmVyKXt0aGlzLl9lbWl0dGVkLmJsb2NrPWJsb2NrTnVtYmVyO09iamVjdC5rZXlzKHRoaXMuX2VtaXR0ZWQpLmZvckVhY2goZnVuY3Rpb24oa2V5KXtpZihrZXk9PT0iYmxvY2siKXtyZXR1cm59dmFyIGV2ZW50QmxvY2tOdW1iZXI9X3RoaXMuX2VtaXR0ZWRba2V5XTtpZihldmVudEJsb2NrTnVtYmVyPT09InBlbmRpbmciKXtyZXR1cm59aWYoYmxvY2tOdW1iZXItZXZlbnRCbG9ja051bWJlcj4xMil7ZGVsZXRlIF90aGlzLl9lbWl0dGVkW2tleV19fSl9aWYodGhpcy5fbGFzdEJsb2NrTnVtYmVyPT09LTIpe3RoaXMuX2xhc3RCbG9ja051bWJlcj1ibG9ja051bWJlci0xfXRoaXMuX2V2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGV2ZW50KXtzd2l0Y2goZXZlbnQudHlwZSl7Y2FzZSJ0eCI6e3ZhciBoYXNoXzI9ZXZlbnQuaGFzaDt2YXIgcnVubmVyPV90aGlzLmdldFRyYW5zYWN0aW9uUmVjZWlwdChoYXNoXzIpLnRoZW4oZnVuY3Rpb24ocmVjZWlwdCl7aWYoIXJlY2VpcHR8fHJlY2VpcHQuYmxvY2tOdW1iZXI9PW51bGwpe3JldHVybiBudWxsfV90aGlzLl9lbWl0dGVkWyJ0OiIraGFzaF8yXT1yZWNlaXB0LmJsb2NrTnVtYmVyO190aGlzLmVtaXQoaGFzaF8yLHJlY2VpcHQpO3JldHVybiBudWxsfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3Ipe190aGlzLmVtaXQoImVycm9yIixlcnJvcil9KTtydW5uZXJzLnB1c2gocnVubmVyKTticmVha31jYXNlImZpbHRlciI6e2lmKCFldmVudC5faW5mbGlnaHQpe2V2ZW50Ll9pbmZsaWdodD10cnVlO2lmKGV2ZW50Ll9sYXN0QmxvY2tOdW1iZXI9PT0tMil7ZXZlbnQuX2xhc3RCbG9ja051bWJlcj1ibG9ja051bWJlci0xfXZhciBmaWx0ZXJfMT1ldmVudC5maWx0ZXI7ZmlsdGVyXzEuZnJvbUJsb2NrPWV2ZW50Ll9sYXN0QmxvY2tOdW1iZXIrMTtmaWx0ZXJfMS50b0Jsb2NrPWJsb2NrTnVtYmVyO3ZhciBtaW5Gcm9tQmxvY2s9ZmlsdGVyXzEudG9CbG9jay1fdGhpcy5fbWF4RmlsdGVyQmxvY2tSYW5nZTtpZihtaW5Gcm9tQmxvY2s+ZmlsdGVyXzEuZnJvbUJsb2NrKXtmaWx0ZXJfMS5mcm9tQmxvY2s9bWluRnJvbUJsb2NrfWlmKGZpbHRlcl8xLmZyb21CbG9jazwwKXtmaWx0ZXJfMS5mcm9tQmxvY2s9MH12YXIgcnVubmVyPV90aGlzLmdldExvZ3MoZmlsdGVyXzEpLnRoZW4oZnVuY3Rpb24obG9ncyl7ZXZlbnQuX2luZmxpZ2h0PWZhbHNlO2lmKGxvZ3MubGVuZ3RoPT09MCl7cmV0dXJufWxvZ3MuZm9yRWFjaChmdW5jdGlvbihsb2cpe2lmKGxvZy5ibG9ja051bWJlcj5ldmVudC5fbGFzdEJsb2NrTnVtYmVyKXtldmVudC5fbGFzdEJsb2NrTnVtYmVyPWxvZy5ibG9ja051bWJlcn1fdGhpcy5fZW1pdHRlZFsiYjoiK2xvZy5ibG9ja0hhc2hdPWxvZy5ibG9ja051bWJlcjtfdGhpcy5fZW1pdHRlZFsidDoiK2xvZy50cmFuc2FjdGlvbkhhc2hdPWxvZy5ibG9ja051bWJlcjtfdGhpcy5lbWl0KGZpbHRlcl8xLGxvZyl9KX0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKXtfdGhpcy5lbWl0KCJlcnJvciIsZXJyb3IpO2V2ZW50Ll9pbmZsaWdodD1mYWxzZX0pO3J1bm5lcnMucHVzaChydW5uZXIpfWJyZWFrfX19KTt0aGlzLl9sYXN0QmxvY2tOdW1iZXI9YmxvY2tOdW1iZXI7UHJvbWlzZS5hbGwocnVubmVycykudGhlbihmdW5jdGlvbigpe190aGlzLmVtaXQoImRpZFBvbGwiLHBvbGxJZCl9KS5jYXRjaChmdW5jdGlvbihlcnJvcil7X3RoaXMuZW1pdCgiZXJyb3IiLGVycm9yKX0pO3JldHVyblsyXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLnJlc2V0RXZlbnRzQmxvY2s9ZnVuY3Rpb24oYmxvY2tOdW1iZXIpe3RoaXMuX2xhc3RCbG9ja051bWJlcj1ibG9ja051bWJlci0xO2lmKHRoaXMucG9sbGluZyl7dGhpcy5wb2xsKCl9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQmFzZVByb3ZpZGVyLnByb3RvdHlwZSwibmV0d29yayIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZXR3b3JrfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5kZXRlY3ROZXR3b3JrPWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoInByb3ZpZGVyIGRvZXMgbm90IHN1cHBvcnQgbmV0d29yayBkZXRlY3Rpb24iLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJwcm92aWRlci5kZXRlY3ROZXR3b3JrIn0pXX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuZ2V0TmV0d29yaz1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5ldHdvcmssY3VycmVudE5ldHdvcmssZXJyb3I7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuX3JlYWR5KCldO2Nhc2UgMTpuZXR3b3JrPV9hLnNlbnQoKTtyZXR1cm5bNCx0aGlzLmRldGVjdE5ldHdvcmsoKV07Y2FzZSAyOmN1cnJlbnROZXR3b3JrPV9hLnNlbnQoKTtpZighKG5ldHdvcmsuY2hhaW5JZCE9PWN1cnJlbnROZXR3b3JrLmNoYWluSWQpKXJldHVyblszLDVdO2lmKCF0aGlzLmFueU5ldHdvcmspcmV0dXJuWzMsNF07dGhpcy5fbmV0d29yaz1jdXJyZW50TmV0d29yazt0aGlzLl9sYXN0QmxvY2tOdW1iZXI9LTI7dGhpcy5fZmFzdEJsb2NrTnVtYmVyPW51bGw7dGhpcy5fZmFzdEJsb2NrTnVtYmVyUHJvbWlzZT1udWxsO3RoaXMuX2Zhc3RRdWVyeURhdGU9MDt0aGlzLl9lbWl0dGVkLmJsb2NrPS0yO3RoaXMuX21heEludGVybmFsQmxvY2tOdW1iZXI9LTEwMjQ7dGhpcy5faW50ZXJuYWxCbG9ja051bWJlcj1udWxsO3RoaXMuZW1pdCgibmV0d29yayIsY3VycmVudE5ldHdvcmssbmV0d29yayk7cmV0dXJuWzQsc3RhbGwoMCldO2Nhc2UgMzpfYS5zZW50KCk7cmV0dXJuWzIsdGhpcy5fbmV0d29ya107Y2FzZSA0OmVycm9yPWxvZ2dlci5tYWtlRXJyb3IoInVuZGVybHlpbmcgbmV0d29yayBjaGFuZ2VkIixsaWIuTG9nZ2VyLmVycm9ycy5ORVRXT1JLX0VSUk9SLHtldmVudDoiY2hhbmdlZCIsbmV0d29yazpuZXR3b3JrLGRldGVjdGVkTmV0d29yazpjdXJyZW50TmV0d29ya30pO3RoaXMuZW1pdCgiZXJyb3IiLGVycm9yKTt0aHJvdyBlcnJvcjtjYXNlIDU6cmV0dXJuWzIsbmV0d29ya119fSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2VQcm92aWRlci5wcm90b3R5cGUsImJsb2NrTnVtYmVyIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIF90aGlzPXRoaXM7dGhpcy5fZ2V0SW50ZXJuYWxCbG9ja051bWJlcigxMDArdGhpcy5wb2xsaW5nSW50ZXJ2YWwvMikudGhlbihmdW5jdGlvbihibG9ja051bWJlcil7X3RoaXMuX3NldEZhc3RCbG9ja051bWJlcihibG9ja051bWJlcil9LGZ1bmN0aW9uKGVycm9yKXt9KTtyZXR1cm4gdGhpcy5fZmFzdEJsb2NrTnVtYmVyIT1udWxsP3RoaXMuX2Zhc3RCbG9ja051bWJlcjotMX0sZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6dHJ1ZX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCYXNlUHJvdmlkZXIucHJvdG90eXBlLCJwb2xsaW5nIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BvbGxlciE9bnVsbH0sc2V0OmZ1bmN0aW9uKHZhbHVlKXt2YXIgX3RoaXM9dGhpcztpZih2YWx1ZSYmIXRoaXMuX3BvbGxlcil7dGhpcy5fcG9sbGVyPXNldEludGVydmFsKGZ1bmN0aW9uKCl7X3RoaXMucG9sbCgpfSx0aGlzLnBvbGxpbmdJbnRlcnZhbCk7aWYoIXRoaXMuX2Jvb3RzdHJhcFBvbGwpe3RoaXMuX2Jvb3RzdHJhcFBvbGw9c2V0VGltZW91dChmdW5jdGlvbigpe190aGlzLnBvbGwoKTtfdGhpcy5fYm9vdHN0cmFwUG9sbD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYoIV90aGlzLl9wb2xsZXIpe190aGlzLnBvbGwoKX1fdGhpcy5fYm9vdHN0cmFwUG9sbD1udWxsfSxfdGhpcy5wb2xsaW5nSW50ZXJ2YWwpfSwwKX19ZWxzZSBpZighdmFsdWUmJnRoaXMuX3BvbGxlcil7Y2xlYXJJbnRlcnZhbCh0aGlzLl9wb2xsZXIpO3RoaXMuX3BvbGxlcj1udWxsfX0sZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6dHJ1ZX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCYXNlUHJvdmlkZXIucHJvdG90eXBlLCJwb2xsaW5nSW50ZXJ2YWwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9sbGluZ0ludGVydmFsfSxzZXQ6ZnVuY3Rpb24odmFsdWUpe3ZhciBfdGhpcz10aGlzO2lmKHR5cGVvZiB2YWx1ZSE9PSJudW1iZXIifHx2YWx1ZTw9MHx8cGFyc2VJbnQoU3RyaW5nKHZhbHVlKSkhPXZhbHVlKXt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcG9sbGluZyBpbnRlcnZhbCIpfXRoaXMuX3BvbGxpbmdJbnRlcnZhbD12YWx1ZTtpZih0aGlzLl9wb2xsZXIpe2NsZWFySW50ZXJ2YWwodGhpcy5fcG9sbGVyKTt0aGlzLl9wb2xsZXI9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtfdGhpcy5wb2xsKCl9LHRoaXMuX3BvbGxpbmdJbnRlcnZhbCl9fSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5fZ2V0RmFzdEJsb2NrTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIF90aGlzPXRoaXM7dmFyIG5vdz1nZXRUaW1lKCk7aWYobm93LXRoaXMuX2Zhc3RRdWVyeURhdGU+Mip0aGlzLl9wb2xsaW5nSW50ZXJ2YWwpe3RoaXMuX2Zhc3RRdWVyeURhdGU9bm93O3RoaXMuX2Zhc3RCbG9ja051bWJlclByb21pc2U9dGhpcy5nZXRCbG9ja051bWJlcigpLnRoZW4oZnVuY3Rpb24oYmxvY2tOdW1iZXIpe2lmKF90aGlzLl9mYXN0QmxvY2tOdW1iZXI9PW51bGx8fGJsb2NrTnVtYmVyPl90aGlzLl9mYXN0QmxvY2tOdW1iZXIpe190aGlzLl9mYXN0QmxvY2tOdW1iZXI9YmxvY2tOdW1iZXJ9cmV0dXJuIF90aGlzLl9mYXN0QmxvY2tOdW1iZXJ9KX1yZXR1cm4gdGhpcy5fZmFzdEJsb2NrTnVtYmVyUHJvbWlzZX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5fc2V0RmFzdEJsb2NrTnVtYmVyPWZ1bmN0aW9uKGJsb2NrTnVtYmVyKXtpZih0aGlzLl9mYXN0QmxvY2tOdW1iZXIhPW51bGwmJmJsb2NrTnVtYmVyPHRoaXMuX2Zhc3RCbG9ja051bWJlcil7cmV0dXJufXRoaXMuX2Zhc3RRdWVyeURhdGU9Z2V0VGltZSgpO2lmKHRoaXMuX2Zhc3RCbG9ja051bWJlcj09bnVsbHx8YmxvY2tOdW1iZXI+dGhpcy5fZmFzdEJsb2NrTnVtYmVyKXt0aGlzLl9mYXN0QmxvY2tOdW1iZXI9YmxvY2tOdW1iZXI7dGhpcy5fZmFzdEJsb2NrTnVtYmVyUHJvbWlzZT1Qcm9taXNlLnJlc29sdmUoYmxvY2tOdW1iZXIpfX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS53YWl0Rm9yVHJhbnNhY3Rpb249ZnVuY3Rpb24odHJhbnNhY3Rpb25IYXNoLGNvbmZpcm1hdGlvbnMsdGltZW91dCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7cmV0dXJuWzIsdGhpcy5fd2FpdEZvclRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSGFzaCxjb25maXJtYXRpb25zPT1udWxsPzE6Y29uZmlybWF0aW9ucyx0aW1lb3V0fHwwLG51bGwpXX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuX3dhaXRGb3JUcmFuc2FjdGlvbj1mdW5jdGlvbih0cmFuc2FjdGlvbkhhc2gsY29uZmlybWF0aW9ucyx0aW1lb3V0LHJlcGxhY2VhYmxlKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciByZWNlaXB0O3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldFRyYW5zYWN0aW9uUmVjZWlwdCh0cmFuc2FjdGlvbkhhc2gpXTtjYXNlIDE6cmVjZWlwdD1fYS5zZW50KCk7aWYoKHJlY2VpcHQ/cmVjZWlwdC5jb25maXJtYXRpb25zOjApPj1jb25maXJtYXRpb25zKXtyZXR1cm5bMixyZWNlaXB0XX1yZXR1cm5bMixuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7dmFyIGNhbmNlbEZ1bmNzPVtdO3ZhciBkb25lPWZhbHNlO3ZhciBhbHJlYWR5RG9uZT1mdW5jdGlvbigpe2lmKGRvbmUpe3JldHVybiB0cnVlfWRvbmU9dHJ1ZTtjYW5jZWxGdW5jcy5mb3JFYWNoKGZ1bmN0aW9uKGZ1bmMpe2Z1bmMoKX0pO3JldHVybiBmYWxzZX07dmFyIG1pbmVkSGFuZGxlcj1mdW5jdGlvbihyZWNlaXB0KXtpZihyZWNlaXB0LmNvbmZpcm1hdGlvbnM8Y29uZmlybWF0aW9ucyl7cmV0dXJufWlmKGFscmVhZHlEb25lKCkpe3JldHVybn1yZXNvbHZlKHJlY2VpcHQpfTtfdGhpcy5vbih0cmFuc2FjdGlvbkhhc2gsbWluZWRIYW5kbGVyKTtjYW5jZWxGdW5jcy5wdXNoKGZ1bmN0aW9uKCl7X3RoaXMucmVtb3ZlTGlzdGVuZXIodHJhbnNhY3Rpb25IYXNoLG1pbmVkSGFuZGxlcil9KTtpZihyZXBsYWNlYWJsZSl7dmFyIGxhc3RCbG9ja051bWJlcl8xPXJlcGxhY2VhYmxlLnN0YXJ0QmxvY2s7dmFyIHNjYW5uZWRCbG9ja18xPW51bGw7dmFyIHJlcGxhY2VIYW5kbGVyXzE9ZnVuY3Rpb24oYmxvY2tOdW1iZXIpe3JldHVybiBfX2F3YWl0ZXIoX3RoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDppZihkb25lKXtyZXR1cm5bMl19cmV0dXJuWzQsc3RhbGwoMWUzKV07Y2FzZSAxOl9hLnNlbnQoKTt0aGlzLmdldFRyYW5zYWN0aW9uQ291bnQocmVwbGFjZWFibGUuZnJvbSkudGhlbihmdW5jdGlvbihub25jZSl7cmV0dXJuIF9fYXdhaXRlcihfdGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG1pbmVkLGJsb2NrLHRpLHR4LHJlY2VpcHRfMSxyZWFzb247cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmlmKGRvbmUpe3JldHVyblsyXX1pZighKG5vbmNlPD1yZXBsYWNlYWJsZS5ub25jZSkpcmV0dXJuWzMsMV07bGFzdEJsb2NrTnVtYmVyXzE9YmxvY2tOdW1iZXI7cmV0dXJuWzMsOV07Y2FzZSAxOnJldHVybls0LHRoaXMuZ2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25IYXNoKV07Y2FzZSAyOm1pbmVkPV9hLnNlbnQoKTtpZihtaW5lZCYmbWluZWQuYmxvY2tOdW1iZXIhPW51bGwpe3JldHVyblsyXX1pZihzY2FubmVkQmxvY2tfMT09bnVsbCl7c2Nhbm5lZEJsb2NrXzE9bGFzdEJsb2NrTnVtYmVyXzEtMztpZihzY2FubmVkQmxvY2tfMTxyZXBsYWNlYWJsZS5zdGFydEJsb2NrKXtzY2FubmVkQmxvY2tfMT1yZXBsYWNlYWJsZS5zdGFydEJsb2NrfX1fYS5sYWJlbD0zO2Nhc2UgMzppZighKHNjYW5uZWRCbG9ja18xPD1ibG9ja051bWJlcikpcmV0dXJuWzMsOV07aWYoZG9uZSl7cmV0dXJuWzJdfXJldHVybls0LHRoaXMuZ2V0QmxvY2tXaXRoVHJhbnNhY3Rpb25zKHNjYW5uZWRCbG9ja18xKV07Y2FzZSA0OmJsb2NrPV9hLnNlbnQoKTt0aT0wO19hLmxhYmVsPTU7Y2FzZSA1OmlmKCEodGk8YmxvY2sudHJhbnNhY3Rpb25zLmxlbmd0aCkpcmV0dXJuWzMsOF07dHg9YmxvY2sudHJhbnNhY3Rpb25zW3RpXTtpZih0eC5oYXNoPT09dHJhbnNhY3Rpb25IYXNoKXtyZXR1cm5bMl19aWYoISh0eC5mcm9tPT09cmVwbGFjZWFibGUuZnJvbSYmdHgubm9uY2U9PT1yZXBsYWNlYWJsZS5ub25jZSkpcmV0dXJuWzMsN107aWYoZG9uZSl7cmV0dXJuWzJdfXJldHVybls0LHRoaXMud2FpdEZvclRyYW5zYWN0aW9uKHR4Lmhhc2gsY29uZmlybWF0aW9ucyldO2Nhc2UgNjpyZWNlaXB0XzE9X2Euc2VudCgpO2lmKGFscmVhZHlEb25lKCkpe3JldHVyblsyXX1yZWFzb249InJlcGxhY2VkIjtpZih0eC5kYXRhPT09cmVwbGFjZWFibGUuZGF0YSYmdHgudG89PT1yZXBsYWNlYWJsZS50byYmdHgudmFsdWUuZXEocmVwbGFjZWFibGUudmFsdWUpKXtyZWFzb249InJlcHJpY2VkIn1lbHNlIGlmKHR4LmRhdGE9PT0iMHgiJiZ0eC5mcm9tPT09dHgudG8mJnR4LnZhbHVlLmlzWmVybygpKXtyZWFzb249ImNhbmNlbGxlZCJ9cmVqZWN0KGxvZ2dlci5tYWtlRXJyb3IoInRyYW5zYWN0aW9uIHdhcyByZXBsYWNlZCIsbGliLkxvZ2dlci5lcnJvcnMuVFJBTlNBQ1RJT05fUkVQTEFDRUQse2NhbmNlbGxlZDpyZWFzb249PT0icmVwbGFjZWQifHxyZWFzb249PT0iY2FuY2VsbGVkIixyZWFzb246cmVhc29uLHJlcGxhY2VtZW50OnRoaXMuX3dyYXBUcmFuc2FjdGlvbih0eCksaGFzaDp0cmFuc2FjdGlvbkhhc2gscmVjZWlwdDpyZWNlaXB0XzF9KSk7cmV0dXJuWzJdO2Nhc2UgNzp0aSsrO3JldHVyblszLDVdO2Nhc2UgODpzY2FubmVkQmxvY2tfMSsrO3JldHVyblszLDNdO2Nhc2UgOTppZihkb25lKXtyZXR1cm5bMl19dGhpcy5vbmNlKCJibG9jayIscmVwbGFjZUhhbmRsZXJfMSk7cmV0dXJuWzJdfX0pfSl9LGZ1bmN0aW9uKGVycm9yKXtpZihkb25lKXtyZXR1cm59X3RoaXMub25jZSgiYmxvY2siLHJlcGxhY2VIYW5kbGVyXzEpfSk7cmV0dXJuWzJdfX0pfSl9O2lmKGRvbmUpe3JldHVybn1fdGhpcy5vbmNlKCJibG9jayIscmVwbGFjZUhhbmRsZXJfMSk7Y2FuY2VsRnVuY3MucHVzaChmdW5jdGlvbigpe190aGlzLnJlbW92ZUxpc3RlbmVyKCJibG9jayIscmVwbGFjZUhhbmRsZXJfMSl9KX1pZih0eXBlb2YgdGltZW91dD09PSJudW1iZXIiJiZ0aW1lb3V0PjApe3ZhciB0aW1lcl8xPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihhbHJlYWR5RG9uZSgpKXtyZXR1cm59cmVqZWN0KGxvZ2dlci5tYWtlRXJyb3IoInRpbWVvdXQgZXhjZWVkZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLlRJTUVPVVQse3RpbWVvdXQ6dGltZW91dH0pKX0sdGltZW91dCk7aWYodGltZXJfMS51bnJlZil7dGltZXJfMS51bnJlZigpfWNhbmNlbEZ1bmNzLnB1c2goZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGltZXJfMSl9KX19KV19fSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5nZXRCbG9ja051bWJlcj1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3JldHVyblsyLHRoaXMuX2dldEludGVybmFsQmxvY2tOdW1iZXIoMCldfSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5nZXRHYXNQcmljZT1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlc3VsdDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXROZXR3b3JrKCldO2Nhc2UgMTpfYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5wZXJmb3JtKCJnZXRHYXNQcmljZSIse30pXTtjYXNlIDI6cmVzdWx0PV9hLnNlbnQoKTt0cnl7cmV0dXJuWzIsbGliJDIuQmlnTnVtYmVyLmZyb20ocmVzdWx0KV19Y2F0Y2goZXJyb3Ipe3JldHVyblsyLGxvZ2dlci50aHJvd0Vycm9yKCJiYWQgcmVzdWx0IGZyb20gYmFja2VuZCIsbGliLkxvZ2dlci5lcnJvcnMuU0VSVkVSX0VSUk9SLHttZXRob2Q6ImdldEdhc1ByaWNlIixyZXN1bHQ6cmVzdWx0LGVycm9yOmVycm9yfSldfXJldHVyblsyXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldEJhbGFuY2U9ZnVuY3Rpb24oYWRkcmVzc09yTmFtZSxibG9ja1RhZyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcGFyYW1zLHJlc3VsdDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXROZXR3b3JrKCldO2Nhc2UgMTpfYS5zZW50KCk7cmV0dXJuWzQsKDAsbGliJDMucmVzb2x2ZVByb3BlcnRpZXMpKHthZGRyZXNzOnRoaXMuX2dldEFkZHJlc3MoYWRkcmVzc09yTmFtZSksYmxvY2tUYWc6dGhpcy5fZ2V0QmxvY2tUYWcoYmxvY2tUYWcpfSldO2Nhc2UgMjpwYXJhbXM9X2Euc2VudCgpO3JldHVybls0LHRoaXMucGVyZm9ybSgiZ2V0QmFsYW5jZSIscGFyYW1zKV07Y2FzZSAzOnJlc3VsdD1fYS5zZW50KCk7dHJ5e3JldHVyblsyLGxpYiQyLkJpZ051bWJlci5mcm9tKHJlc3VsdCldfWNhdGNoKGVycm9yKXtyZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigiYmFkIHJlc3VsdCBmcm9tIGJhY2tlbmQiLGxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUix7bWV0aG9kOiJnZXRCYWxhbmNlIixwYXJhbXM6cGFyYW1zLHJlc3VsdDpyZXN1bHQsZXJyb3I6ZXJyb3J9KV19cmV0dXJuWzJdfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuZ2V0VHJhbnNhY3Rpb25Db3VudD1mdW5jdGlvbihhZGRyZXNzT3JOYW1lLGJsb2NrVGFnKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwYXJhbXMscmVzdWx0O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9hLnNlbnQoKTtyZXR1cm5bNCwoMCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcykoe2FkZHJlc3M6dGhpcy5fZ2V0QWRkcmVzcyhhZGRyZXNzT3JOYW1lKSxibG9ja1RhZzp0aGlzLl9nZXRCbG9ja1RhZyhibG9ja1RhZyl9KV07Y2FzZSAyOnBhcmFtcz1fYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5wZXJmb3JtKCJnZXRUcmFuc2FjdGlvbkNvdW50IixwYXJhbXMpXTtjYXNlIDM6cmVzdWx0PV9hLnNlbnQoKTt0cnl7cmV0dXJuWzIsbGliJDIuQmlnTnVtYmVyLmZyb20ocmVzdWx0KS50b051bWJlcigpXX1jYXRjaChlcnJvcil7cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoImJhZCByZXN1bHQgZnJvbSBiYWNrZW5kIixsaWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1Ise21ldGhvZDoiZ2V0VHJhbnNhY3Rpb25Db3VudCIscGFyYW1zOnBhcmFtcyxyZXN1bHQ6cmVzdWx0LGVycm9yOmVycm9yfSldfXJldHVyblsyXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldENvZGU9ZnVuY3Rpb24oYWRkcmVzc09yTmFtZSxibG9ja1RhZyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcGFyYW1zLHJlc3VsdDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXROZXR3b3JrKCldO2Nhc2UgMTpfYS5zZW50KCk7cmV0dXJuWzQsKDAsbGliJDMucmVzb2x2ZVByb3BlcnRpZXMpKHthZGRyZXNzOnRoaXMuX2dldEFkZHJlc3MoYWRkcmVzc09yTmFtZSksYmxvY2tUYWc6dGhpcy5fZ2V0QmxvY2tUYWcoYmxvY2tUYWcpfSldO2Nhc2UgMjpwYXJhbXM9X2Euc2VudCgpO3JldHVybls0LHRoaXMucGVyZm9ybSgiZ2V0Q29kZSIscGFyYW1zKV07Y2FzZSAzOnJlc3VsdD1fYS5zZW50KCk7dHJ5e3JldHVyblsyLCgwLGxpYiQxLmhleGxpZnkpKHJlc3VsdCldfWNhdGNoKGVycm9yKXtyZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigiYmFkIHJlc3VsdCBmcm9tIGJhY2tlbmQiLGxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUix7bWV0aG9kOiJnZXRDb2RlIixwYXJhbXM6cGFyYW1zLHJlc3VsdDpyZXN1bHQsZXJyb3I6ZXJyb3J9KV19cmV0dXJuWzJdfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuZ2V0U3RvcmFnZUF0PWZ1bmN0aW9uKGFkZHJlc3NPck5hbWUscG9zaXRpb24sYmxvY2tUYWcpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHBhcmFtcyxyZXN1bHQ7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZ2V0TmV0d29yaygpXTtjYXNlIDE6X2Euc2VudCgpO3JldHVybls0LCgwLGxpYiQzLnJlc29sdmVQcm9wZXJ0aWVzKSh7YWRkcmVzczp0aGlzLl9nZXRBZGRyZXNzKGFkZHJlc3NPck5hbWUpLGJsb2NrVGFnOnRoaXMuX2dldEJsb2NrVGFnKGJsb2NrVGFnKSxwb3NpdGlvbjpQcm9taXNlLnJlc29sdmUocG9zaXRpb24pLnRoZW4oZnVuY3Rpb24ocCl7cmV0dXJuKDAsbGliJDEuaGV4VmFsdWUpKHApfSl9KV07Y2FzZSAyOnBhcmFtcz1fYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5wZXJmb3JtKCJnZXRTdG9yYWdlQXQiLHBhcmFtcyldO2Nhc2UgMzpyZXN1bHQ9X2Euc2VudCgpO3RyeXtyZXR1cm5bMiwoMCxsaWIkMS5oZXhsaWZ5KShyZXN1bHQpXX1jYXRjaChlcnJvcil7cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoImJhZCByZXN1bHQgZnJvbSBiYWNrZW5kIixsaWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1Ise21ldGhvZDoiZ2V0U3RvcmFnZUF0IixwYXJhbXM6cGFyYW1zLHJlc3VsdDpyZXN1bHQsZXJyb3I6ZXJyb3J9KV19cmV0dXJuWzJdfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuX3dyYXBUcmFuc2FjdGlvbj1mdW5jdGlvbih0eCxoYXNoLHN0YXJ0QmxvY2spe3ZhciBfdGhpcz10aGlzO2lmKGhhc2ghPW51bGwmJigwLGxpYiQxLmhleERhdGFMZW5ndGgpKGhhc2gpIT09MzIpe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCByZXNwb25zZSAtIHNlbmRUcmFuc2FjdGlvbiIpfXZhciByZXN1bHQ9dHg7aWYoaGFzaCE9bnVsbCYmdHguaGFzaCE9PWhhc2gpe2xvZ2dlci50aHJvd0Vycm9yKCJUcmFuc2FjdGlvbiBoYXNoIG1pc21hdGNoIGZyb20gUHJvdmlkZXIuc2VuZFRyYW5zYWN0aW9uLiIsbGliLkxvZ2dlci5lcnJvcnMuVU5LTk9XTl9FUlJPUix7ZXhwZWN0ZWRIYXNoOnR4Lmhhc2gscmV0dXJuZWRIYXNoOmhhc2h9KX1yZXN1bHQud2FpdD1mdW5jdGlvbihjb25maXJtcyx0aW1lb3V0KXtyZXR1cm4gX19hd2FpdGVyKF90aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcmVwbGFjZW1lbnQscmVjZWlwdDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYoY29uZmlybXM9PW51bGwpe2NvbmZpcm1zPTF9aWYodGltZW91dD09bnVsbCl7dGltZW91dD0wfXJlcGxhY2VtZW50PXVuZGVmaW5lZDtpZihjb25maXJtcyE9PTAmJnN0YXJ0QmxvY2shPW51bGwpe3JlcGxhY2VtZW50PXtkYXRhOnR4LmRhdGEsZnJvbTp0eC5mcm9tLG5vbmNlOnR4Lm5vbmNlLHRvOnR4LnRvLHZhbHVlOnR4LnZhbHVlLHN0YXJ0QmxvY2s6c3RhcnRCbG9ja319cmV0dXJuWzQsdGhpcy5fd2FpdEZvclRyYW5zYWN0aW9uKHR4Lmhhc2gsY29uZmlybXMsdGltZW91dCxyZXBsYWNlbWVudCldO2Nhc2UgMTpyZWNlaXB0PV9hLnNlbnQoKTtpZihyZWNlaXB0PT1udWxsJiZjb25maXJtcz09PTApe3JldHVyblsyLG51bGxdfXRoaXMuX2VtaXR0ZWRbInQ6Iit0eC5oYXNoXT1yZWNlaXB0LmJsb2NrTnVtYmVyO2lmKHJlY2VpcHQuc3RhdHVzPT09MCl7bG9nZ2VyLnRocm93RXJyb3IoInRyYW5zYWN0aW9uIGZhaWxlZCIsbGliLkxvZ2dlci5lcnJvcnMuQ0FMTF9FWENFUFRJT04se3RyYW5zYWN0aW9uSGFzaDp0eC5oYXNoLHRyYW5zYWN0aW9uOnR4LHJlY2VpcHQ6cmVjZWlwdH0pfXJldHVyblsyLHJlY2VpcHRdfX0pfSl9O3JldHVybiByZXN1bHR9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuc2VuZFRyYW5zYWN0aW9uPWZ1bmN0aW9uKHNpZ25lZFRyYW5zYWN0aW9uKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBoZXhUeCx0eCxibG9ja051bWJlcixoYXNoLGVycm9yXzc7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZ2V0TmV0d29yaygpXTtjYXNlIDE6X2Euc2VudCgpO3JldHVybls0LFByb21pc2UucmVzb2x2ZShzaWduZWRUcmFuc2FjdGlvbikudGhlbihmdW5jdGlvbih0KXtyZXR1cm4oMCxsaWIkMS5oZXhsaWZ5KSh0KX0pXTtjYXNlIDI6aGV4VHg9X2Euc2VudCgpO3R4PXRoaXMuZm9ybWF0dGVyLnRyYW5zYWN0aW9uKHNpZ25lZFRyYW5zYWN0aW9uKTtpZih0eC5jb25maXJtYXRpb25zPT1udWxsKXt0eC5jb25maXJtYXRpb25zPTB9cmV0dXJuWzQsdGhpcy5fZ2V0SW50ZXJuYWxCbG9ja051bWJlcigxMDArMip0aGlzLnBvbGxpbmdJbnRlcnZhbCldO2Nhc2UgMzpibG9ja051bWJlcj1fYS5zZW50KCk7X2EubGFiZWw9NDtjYXNlIDQ6X2EudHJ5cy5wdXNoKFs0LDYsLDddKTtyZXR1cm5bNCx0aGlzLnBlcmZvcm0oInNlbmRUcmFuc2FjdGlvbiIse3NpZ25lZFRyYW5zYWN0aW9uOmhleFR4fSldO2Nhc2UgNTpoYXNoPV9hLnNlbnQoKTtyZXR1cm5bMix0aGlzLl93cmFwVHJhbnNhY3Rpb24odHgsaGFzaCxibG9ja051bWJlcildO2Nhc2UgNjplcnJvcl83PV9hLnNlbnQoKTtlcnJvcl83LnRyYW5zYWN0aW9uPXR4O2Vycm9yXzcudHJhbnNhY3Rpb25IYXNoPXR4Lmhhc2g7dGhyb3cgZXJyb3JfNztjYXNlIDc6cmV0dXJuWzJdfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuX2dldFRyYW5zYWN0aW9uUmVxdWVzdD1mdW5jdGlvbih0cmFuc2FjdGlvbil7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgdmFsdWVzLHR4LF9hLF9iO3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9jKXtzd2l0Y2goX2MubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0cmFuc2FjdGlvbl07Y2FzZSAxOnZhbHVlcz1fYy5zZW50KCk7dHg9e307WyJmcm9tIiwidG8iXS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7aWYodmFsdWVzW2tleV09PW51bGwpe3JldHVybn10eFtrZXldPVByb21pc2UucmVzb2x2ZSh2YWx1ZXNba2V5XSkudGhlbihmdW5jdGlvbih2KXtyZXR1cm4gdj9fdGhpcy5fZ2V0QWRkcmVzcyh2KTpudWxsfSl9KTtbImdhc0xpbWl0IiwiZ2FzUHJpY2UiLCJtYXhGZWVQZXJHYXMiLCJtYXhQcmlvcml0eUZlZVBlckdhcyIsInZhbHVlIl0uZm9yRWFjaChmdW5jdGlvbihrZXkpe2lmKHZhbHVlc1trZXldPT1udWxsKXtyZXR1cm59dHhba2V5XT1Qcm9taXNlLnJlc29sdmUodmFsdWVzW2tleV0pLnRoZW4oZnVuY3Rpb24odil7cmV0dXJuIHY/bGliJDIuQmlnTnVtYmVyLmZyb20odik6bnVsbH0pfSk7WyJ0eXBlIl0uZm9yRWFjaChmdW5jdGlvbihrZXkpe2lmKHZhbHVlc1trZXldPT1udWxsKXtyZXR1cm59dHhba2V5XT1Qcm9taXNlLnJlc29sdmUodmFsdWVzW2tleV0pLnRoZW4oZnVuY3Rpb24odil7cmV0dXJuIHYhPW51bGw/djpudWxsfSl9KTtpZih2YWx1ZXMuYWNjZXNzTGlzdCl7dHguYWNjZXNzTGlzdD10aGlzLmZvcm1hdHRlci5hY2Nlc3NMaXN0KHZhbHVlcy5hY2Nlc3NMaXN0KX1bImRhdGEiXS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7aWYodmFsdWVzW2tleV09PW51bGwpe3JldHVybn10eFtrZXldPVByb21pc2UucmVzb2x2ZSh2YWx1ZXNba2V5XSkudGhlbihmdW5jdGlvbih2KXtyZXR1cm4gdj8oMCxsaWIkMS5oZXhsaWZ5KSh2KTpudWxsfSl9KTtfYj0oX2E9dGhpcy5mb3JtYXR0ZXIpLnRyYW5zYWN0aW9uUmVxdWVzdDtyZXR1cm5bNCwoMCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcykodHgpXTtjYXNlIDI6cmV0dXJuWzIsX2IuYXBwbHkoX2EsW19jLnNlbnQoKV0pXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLl9nZXRGaWx0ZXI9ZnVuY3Rpb24oZmlsdGVyKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciByZXN1bHQsX2EsX2I7dmFyIF90aGlzPXRoaXM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Mpe3N3aXRjaChfYy5sYWJlbCl7Y2FzZSAwOnJldHVybls0LGZpbHRlcl07Y2FzZSAxOmZpbHRlcj1fYy5zZW50KCk7cmVzdWx0PXt9O2lmKGZpbHRlci5hZGRyZXNzIT1udWxsKXtyZXN1bHQuYWRkcmVzcz10aGlzLl9nZXRBZGRyZXNzKGZpbHRlci5hZGRyZXNzKX1bImJsb2NrSGFzaCIsInRvcGljcyJdLmZvckVhY2goZnVuY3Rpb24oa2V5KXtpZihmaWx0ZXJba2V5XT09bnVsbCl7cmV0dXJufXJlc3VsdFtrZXldPWZpbHRlcltrZXldfSk7WyJmcm9tQmxvY2siLCJ0b0Jsb2NrIl0uZm9yRWFjaChmdW5jdGlvbihrZXkpe2lmKGZpbHRlcltrZXldPT1udWxsKXtyZXR1cm59cmVzdWx0W2tleV09X3RoaXMuX2dldEJsb2NrVGFnKGZpbHRlcltrZXldKX0pO19iPShfYT10aGlzLmZvcm1hdHRlcikuZmlsdGVyO3JldHVybls0LCgwLGxpYiQzLnJlc29sdmVQcm9wZXJ0aWVzKShyZXN1bHQpXTtjYXNlIDI6cmV0dXJuWzIsX2IuYXBwbHkoX2EsW19jLnNlbnQoKV0pXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLl9jYWxsPWZ1bmN0aW9uKHRyYW5zYWN0aW9uLGJsb2NrVGFnLGF0dGVtcHQpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHR4U2VuZGVyLHJlc3VsdCxkYXRhLHNlbmRlcix1cmxzLHVybHNPZmZzZXQsdXJsc0xlbmd0aCx1cmxzRGF0YSx1LHVybCxjYWxsZGF0YSxjYWxsYmFja1NlbGVjdG9yLGV4dHJhRGF0YSxjY2lwUmVzdWx0LHR4LGVycm9yXzg7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmlmKGF0dGVtcHQ+PU1BWF9DQ0lQX1JFRElSRUNUUyl7bG9nZ2VyLnRocm93RXJyb3IoIkNDSVAgcmVhZCBleGNlZWRlZCBtYXhpbXVtIHJlZGlyZWN0aW9ucyIsbGliLkxvZ2dlci5lcnJvcnMuU0VSVkVSX0VSUk9SLHtyZWRpcmVjdHM6YXR0ZW1wdCx0cmFuc2FjdGlvbjp0cmFuc2FjdGlvbn0pfXR4U2VuZGVyPXRyYW5zYWN0aW9uLnRvO3JldHVybls0LHRoaXMucGVyZm9ybSgiY2FsbCIse3RyYW5zYWN0aW9uOnRyYW5zYWN0aW9uLGJsb2NrVGFnOmJsb2NrVGFnfSldO2Nhc2UgMTpyZXN1bHQ9X2Euc2VudCgpO2lmKCEoYXR0ZW1wdD49MCYmYmxvY2tUYWc9PT0ibGF0ZXN0IiYmdHhTZW5kZXIhPW51bGwmJnJlc3VsdC5zdWJzdHJpbmcoMCwxMCk9PT0iMHg1NTZmMTgzMCImJigwLGxpYiQxLmhleERhdGFMZW5ndGgpKHJlc3VsdCklMzI9PT00KSlyZXR1cm5bMyw1XTtfYS5sYWJlbD0yO2Nhc2UgMjpfYS50cnlzLnB1c2goWzIsNCwsNV0pO2RhdGE9KDAsbGliJDEuaGV4RGF0YVNsaWNlKShyZXN1bHQsNCk7c2VuZGVyPSgwLGxpYiQxLmhleERhdGFTbGljZSkoZGF0YSwwLDMyKTtpZighbGliJDIuQmlnTnVtYmVyLmZyb20oc2VuZGVyKS5lcSh0eFNlbmRlcikpe2xvZ2dlci50aHJvd0Vycm9yKCJDQ0lQIFJlYWQgc2VuZGVyIGRpZCBub3QgbWF0Y2giLGxpYi5Mb2dnZXIuZXJyb3JzLkNBTExfRVhDRVBUSU9OLHtuYW1lOiJPZmZjaGFpbkxvb2t1cCIsc2lnbmF0dXJlOiJPZmZjaGFpbkxvb2t1cChhZGRyZXNzLHN0cmluZ1tdLGJ5dGVzLGJ5dGVzNCxieXRlcykiLHRyYW5zYWN0aW9uOnRyYW5zYWN0aW9uLGRhdGE6cmVzdWx0fSl9dXJscz1bXTt1cmxzT2Zmc2V0PWxpYiQyLkJpZ051bWJlci5mcm9tKCgwLGxpYiQxLmhleERhdGFTbGljZSkoZGF0YSwzMiw2NCkpLnRvTnVtYmVyKCk7dXJsc0xlbmd0aD1saWIkMi5CaWdOdW1iZXIuZnJvbSgoMCxsaWIkMS5oZXhEYXRhU2xpY2UpKGRhdGEsdXJsc09mZnNldCx1cmxzT2Zmc2V0KzMyKSkudG9OdW1iZXIoKTt1cmxzRGF0YT0oMCxsaWIkMS5oZXhEYXRhU2xpY2UpKGRhdGEsdXJsc09mZnNldCszMik7Zm9yKHU9MDt1PHVybHNMZW5ndGg7dSsrKXt1cmw9X3BhcnNlU3RyaW5nKHVybHNEYXRhLHUqMzIpO2lmKHVybD09bnVsbCl7bG9nZ2VyLnRocm93RXJyb3IoIkNDSVAgUmVhZCBjb250YWluZWQgY29ycnVwdCBVUkwgc3RyaW5nIixsaWIuTG9nZ2VyLmVycm9ycy5DQUxMX0VYQ0VQVElPTix7bmFtZToiT2ZmY2hhaW5Mb29rdXAiLHNpZ25hdHVyZToiT2ZmY2hhaW5Mb29rdXAoYWRkcmVzcyxzdHJpbmdbXSxieXRlcyxieXRlczQsYnl0ZXMpIix0cmFuc2FjdGlvbjp0cmFuc2FjdGlvbixkYXRhOnJlc3VsdH0pfXVybHMucHVzaCh1cmwpfWNhbGxkYXRhPV9wYXJzZUJ5dGVzKGRhdGEsNjQpO2lmKCFsaWIkMi5CaWdOdW1iZXIuZnJvbSgoMCxsaWIkMS5oZXhEYXRhU2xpY2UpKGRhdGEsMTAwLDEyOCkpLmlzWmVybygpKXtsb2dnZXIudGhyb3dFcnJvcigiQ0NJUCBSZWFkIGNhbGxiYWNrIHNlbGVjdG9yIGluY2x1ZGVkIGp1bmsiLGxpYi5Mb2dnZXIuZXJyb3JzLkNBTExfRVhDRVBUSU9OLHtuYW1lOiJPZmZjaGFpbkxvb2t1cCIsc2lnbmF0dXJlOiJPZmZjaGFpbkxvb2t1cChhZGRyZXNzLHN0cmluZ1tdLGJ5dGVzLGJ5dGVzNCxieXRlcykiLHRyYW5zYWN0aW9uOnRyYW5zYWN0aW9uLGRhdGE6cmVzdWx0fSl9Y2FsbGJhY2tTZWxlY3Rvcj0oMCxsaWIkMS5oZXhEYXRhU2xpY2UpKGRhdGEsOTYsMTAwKTtleHRyYURhdGE9X3BhcnNlQnl0ZXMoZGF0YSwxMjgpO3JldHVybls0LHRoaXMuY2NpcFJlYWRGZXRjaCh0cmFuc2FjdGlvbixjYWxsZGF0YSx1cmxzKV07Y2FzZSAzOmNjaXBSZXN1bHQ9X2Euc2VudCgpO2lmKGNjaXBSZXN1bHQ9PW51bGwpe2xvZ2dlci50aHJvd0Vycm9yKCJDQ0lQIFJlYWQgZGlzYWJsZWQgb3IgcHJvdmlkZWQgbm8gVVJMcyIsbGliLkxvZ2dlci5lcnJvcnMuQ0FMTF9FWENFUFRJT04se25hbWU6Ik9mZmNoYWluTG9va3VwIixzaWduYXR1cmU6Ik9mZmNoYWluTG9va3VwKGFkZHJlc3Msc3RyaW5nW10sYnl0ZXMsYnl0ZXM0LGJ5dGVzKSIsdHJhbnNhY3Rpb246dHJhbnNhY3Rpb24sZGF0YTpyZXN1bHR9KX10eD17dG86dHhTZW5kZXIsZGF0YTooMCxsaWIkMS5oZXhDb25jYXQpKFtjYWxsYmFja1NlbGVjdG9yLGVuY29kZUJ5dGVzKFtjY2lwUmVzdWx0LGV4dHJhRGF0YV0pXSl9O3JldHVyblsyLHRoaXMuX2NhbGwodHgsYmxvY2tUYWcsYXR0ZW1wdCsxKV07Y2FzZSA0OmVycm9yXzg9X2Euc2VudCgpO2lmKGVycm9yXzguY29kZT09PWxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUil7dGhyb3cgZXJyb3JfOH1yZXR1cm5bMyw1XTtjYXNlIDU6dHJ5e3JldHVyblsyLCgwLGxpYiQxLmhleGxpZnkpKHJlc3VsdCldfWNhdGNoKGVycm9yKXtyZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigiYmFkIHJlc3VsdCBmcm9tIGJhY2tlbmQiLGxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUix7bWV0aG9kOiJjYWxsIixwYXJhbXM6e3RyYW5zYWN0aW9uOnRyYW5zYWN0aW9uLGJsb2NrVGFnOmJsb2NrVGFnfSxyZXN1bHQ6cmVzdWx0LGVycm9yOmVycm9yfSldfXJldHVyblsyXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odHJhbnNhY3Rpb24sYmxvY2tUYWcpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlc29sdmVkO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9hLnNlbnQoKTtyZXR1cm5bNCwoMCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcykoe3RyYW5zYWN0aW9uOnRoaXMuX2dldFRyYW5zYWN0aW9uUmVxdWVzdCh0cmFuc2FjdGlvbiksYmxvY2tUYWc6dGhpcy5fZ2V0QmxvY2tUYWcoYmxvY2tUYWcpLGNjaXBSZWFkRW5hYmxlZDpQcm9taXNlLnJlc29sdmUodHJhbnNhY3Rpb24uY2NpcFJlYWRFbmFibGVkKX0pXTtjYXNlIDI6cmVzb2x2ZWQ9X2Euc2VudCgpO3JldHVyblsyLHRoaXMuX2NhbGwocmVzb2x2ZWQudHJhbnNhY3Rpb24scmVzb2x2ZWQuYmxvY2tUYWcscmVzb2x2ZWQuY2NpcFJlYWRFbmFibGVkPzA6LTEpXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmVzdGltYXRlR2FzPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwYXJhbXMscmVzdWx0O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9hLnNlbnQoKTtyZXR1cm5bNCwoMCxsaWIkMy5yZXNvbHZlUHJvcGVydGllcykoe3RyYW5zYWN0aW9uOnRoaXMuX2dldFRyYW5zYWN0aW9uUmVxdWVzdCh0cmFuc2FjdGlvbil9KV07Y2FzZSAyOnBhcmFtcz1fYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5wZXJmb3JtKCJlc3RpbWF0ZUdhcyIscGFyYW1zKV07Y2FzZSAzOnJlc3VsdD1fYS5zZW50KCk7dHJ5e3JldHVyblsyLGxpYiQyLkJpZ051bWJlci5mcm9tKHJlc3VsdCldfWNhdGNoKGVycm9yKXtyZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigiYmFkIHJlc3VsdCBmcm9tIGJhY2tlbmQiLGxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUix7bWV0aG9kOiJlc3RpbWF0ZUdhcyIscGFyYW1zOnBhcmFtcyxyZXN1bHQ6cmVzdWx0LGVycm9yOmVycm9yfSldfXJldHVyblsyXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLl9nZXRBZGRyZXNzPWZ1bmN0aW9uKGFkZHJlc3NPck5hbWUpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGFkZHJlc3M7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LGFkZHJlc3NPck5hbWVdO2Nhc2UgMTphZGRyZXNzT3JOYW1lPV9hLnNlbnQoKTtpZih0eXBlb2YgYWRkcmVzc09yTmFtZSE9PSJzdHJpbmciKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGFkZHJlc3Mgb3IgRU5TIG5hbWUiLCJuYW1lIixhZGRyZXNzT3JOYW1lKX1yZXR1cm5bNCx0aGlzLnJlc29sdmVOYW1lKGFkZHJlc3NPck5hbWUpXTtjYXNlIDI6YWRkcmVzcz1fYS5zZW50KCk7aWYoYWRkcmVzcz09bnVsbCl7bG9nZ2VyLnRocm93RXJyb3IoIkVOUyBuYW1lIG5vdCBjb25maWd1cmVkIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoicmVzb2x2ZU5hbWUoIitKU09OLnN0cmluZ2lmeShhZGRyZXNzT3JOYW1lKSsiKSJ9KX1yZXR1cm5bMixhZGRyZXNzXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLl9nZXRCbG9jaz1mdW5jdGlvbihibG9ja0hhc2hPckJsb2NrVGFnLGluY2x1ZGVUcmFuc2FjdGlvbnMpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGJsb2NrTnVtYmVyLHBhcmFtcyxfYSxlcnJvcl85O3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9iKXtzd2l0Y2goX2IubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9iLnNlbnQoKTtyZXR1cm5bNCxibG9ja0hhc2hPckJsb2NrVGFnXTtjYXNlIDI6YmxvY2tIYXNoT3JCbG9ja1RhZz1fYi5zZW50KCk7YmxvY2tOdW1iZXI9LTEyODtwYXJhbXM9e2luY2x1ZGVUcmFuc2FjdGlvbnM6ISFpbmNsdWRlVHJhbnNhY3Rpb25zfTtpZighKDAsbGliJDEuaXNIZXhTdHJpbmcpKGJsb2NrSGFzaE9yQmxvY2tUYWcsMzIpKXJldHVyblszLDNdO3BhcmFtcy5ibG9ja0hhc2g9YmxvY2tIYXNoT3JCbG9ja1RhZztyZXR1cm5bMyw2XTtjYXNlIDM6X2IudHJ5cy5wdXNoKFszLDUsLDZdKTtfYT1wYXJhbXM7cmV0dXJuWzQsdGhpcy5fZ2V0QmxvY2tUYWcoYmxvY2tIYXNoT3JCbG9ja1RhZyldO2Nhc2UgNDpfYS5ibG9ja1RhZz1fYi5zZW50KCk7aWYoKDAsbGliJDEuaXNIZXhTdHJpbmcpKHBhcmFtcy5ibG9ja1RhZykpe2Jsb2NrTnVtYmVyPXBhcnNlSW50KHBhcmFtcy5ibG9ja1RhZy5zdWJzdHJpbmcoMiksMTYpfXJldHVyblszLDZdO2Nhc2UgNTplcnJvcl85PV9iLnNlbnQoKTtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIGJsb2NrIGhhc2ggb3IgYmxvY2sgdGFnIiwiYmxvY2tIYXNoT3JCbG9ja1RhZyIsYmxvY2tIYXNoT3JCbG9ja1RhZyk7cmV0dXJuWzMsNl07Y2FzZSA2OnJldHVyblsyLCgwLGxpYiRzLnBvbGwpKGZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcihfdGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGJsb2NrLGJsb2NrTnVtYmVyXzEsaSx0eCxjb25maXJtYXRpb25zLGJsb2NrV2l0aFR4czt2YXIgX3RoaXM9dGhpcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5wZXJmb3JtKCJnZXRCbG9jayIscGFyYW1zKV07Y2FzZSAxOmJsb2NrPV9hLnNlbnQoKTtpZihibG9jaz09bnVsbCl7aWYocGFyYW1zLmJsb2NrSGFzaCE9bnVsbCl7aWYodGhpcy5fZW1pdHRlZFsiYjoiK3BhcmFtcy5ibG9ja0hhc2hdPT1udWxsKXtyZXR1cm5bMixudWxsXX19aWYocGFyYW1zLmJsb2NrVGFnIT1udWxsKXtpZihibG9ja051bWJlcj50aGlzLl9lbWl0dGVkLmJsb2NrKXtyZXR1cm5bMixudWxsXX19cmV0dXJuWzIsdW5kZWZpbmVkXX1pZighaW5jbHVkZVRyYW5zYWN0aW9ucylyZXR1cm5bMyw4XTtibG9ja051bWJlcl8xPW51bGw7aT0wO19hLmxhYmVsPTI7Y2FzZSAyOmlmKCEoaTxibG9jay50cmFuc2FjdGlvbnMubGVuZ3RoKSlyZXR1cm5bMyw3XTt0eD1ibG9jay50cmFuc2FjdGlvbnNbaV07aWYoISh0eC5ibG9ja051bWJlcj09bnVsbCkpcmV0dXJuWzMsM107dHguY29uZmlybWF0aW9ucz0wO3JldHVyblszLDZdO2Nhc2UgMzppZighKHR4LmNvbmZpcm1hdGlvbnM9PW51bGwpKXJldHVyblszLDZdO2lmKCEoYmxvY2tOdW1iZXJfMT09bnVsbCkpcmV0dXJuWzMsNV07cmV0dXJuWzQsdGhpcy5fZ2V0SW50ZXJuYWxCbG9ja051bWJlcigxMDArMip0aGlzLnBvbGxpbmdJbnRlcnZhbCldO2Nhc2UgNDpibG9ja051bWJlcl8xPV9hLnNlbnQoKTtfYS5sYWJlbD01O2Nhc2UgNTpjb25maXJtYXRpb25zPWJsb2NrTnVtYmVyXzEtdHguYmxvY2tOdW1iZXIrMTtpZihjb25maXJtYXRpb25zPD0wKXtjb25maXJtYXRpb25zPTF9dHguY29uZmlybWF0aW9ucz1jb25maXJtYXRpb25zO19hLmxhYmVsPTY7Y2FzZSA2OmkrKztyZXR1cm5bMywyXTtjYXNlIDc6YmxvY2tXaXRoVHhzPXRoaXMuZm9ybWF0dGVyLmJsb2NrV2l0aFRyYW5zYWN0aW9ucyhibG9jayk7YmxvY2tXaXRoVHhzLnRyYW5zYWN0aW9ucz1ibG9ja1dpdGhUeHMudHJhbnNhY3Rpb25zLm1hcChmdW5jdGlvbih0eCl7cmV0dXJuIF90aGlzLl93cmFwVHJhbnNhY3Rpb24odHgpfSk7cmV0dXJuWzIsYmxvY2tXaXRoVHhzXTtjYXNlIDg6cmV0dXJuWzIsdGhpcy5mb3JtYXR0ZXIuYmxvY2soYmxvY2spXX19KX0pfSx7b25jZVBvbGw6dGhpc30pXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldEJsb2NrPWZ1bmN0aW9uKGJsb2NrSGFzaE9yQmxvY2tUYWcpe3JldHVybiB0aGlzLl9nZXRCbG9jayhibG9ja0hhc2hPckJsb2NrVGFnLGZhbHNlKX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5nZXRCbG9ja1dpdGhUcmFuc2FjdGlvbnM9ZnVuY3Rpb24oYmxvY2tIYXNoT3JCbG9ja1RhZyl7cmV0dXJuIHRoaXMuX2dldEJsb2NrKGJsb2NrSGFzaE9yQmxvY2tUYWcsdHJ1ZSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuZ2V0VHJhbnNhY3Rpb249ZnVuY3Rpb24odHJhbnNhY3Rpb25IYXNoKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwYXJhbXM7dmFyIF90aGlzPXRoaXM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZ2V0TmV0d29yaygpXTtjYXNlIDE6X2Euc2VudCgpO3JldHVybls0LHRyYW5zYWN0aW9uSGFzaF07Y2FzZSAyOnRyYW5zYWN0aW9uSGFzaD1fYS5zZW50KCk7cGFyYW1zPXt0cmFuc2FjdGlvbkhhc2g6dGhpcy5mb3JtYXR0ZXIuaGFzaCh0cmFuc2FjdGlvbkhhc2gsdHJ1ZSl9O3JldHVyblsyLCgwLGxpYiRzLnBvbGwpKGZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcihfdGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlc3VsdCx0eCxibG9ja051bWJlcixjb25maXJtYXRpb25zO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLnBlcmZvcm0oImdldFRyYW5zYWN0aW9uIixwYXJhbXMpXTtjYXNlIDE6cmVzdWx0PV9hLnNlbnQoKTtpZihyZXN1bHQ9PW51bGwpe2lmKHRoaXMuX2VtaXR0ZWRbInQ6Iit0cmFuc2FjdGlvbkhhc2hdPT1udWxsKXtyZXR1cm5bMixudWxsXX1yZXR1cm5bMix1bmRlZmluZWRdfXR4PXRoaXMuZm9ybWF0dGVyLnRyYW5zYWN0aW9uUmVzcG9uc2UocmVzdWx0KTtpZighKHR4LmJsb2NrTnVtYmVyPT1udWxsKSlyZXR1cm5bMywyXTt0eC5jb25maXJtYXRpb25zPTA7cmV0dXJuWzMsNF07Y2FzZSAyOmlmKCEodHguY29uZmlybWF0aW9ucz09bnVsbCkpcmV0dXJuWzMsNF07cmV0dXJuWzQsdGhpcy5fZ2V0SW50ZXJuYWxCbG9ja051bWJlcigxMDArMip0aGlzLnBvbGxpbmdJbnRlcnZhbCldO2Nhc2UgMzpibG9ja051bWJlcj1fYS5zZW50KCk7Y29uZmlybWF0aW9ucz1ibG9ja051bWJlci10eC5ibG9ja051bWJlcisxO2lmKGNvbmZpcm1hdGlvbnM8PTApe2NvbmZpcm1hdGlvbnM9MX10eC5jb25maXJtYXRpb25zPWNvbmZpcm1hdGlvbnM7X2EubGFiZWw9NDtjYXNlIDQ6cmV0dXJuWzIsdGhpcy5fd3JhcFRyYW5zYWN0aW9uKHR4KV19fSl9KX0se29uY2VQb2xsOnRoaXN9KV19fSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5nZXRUcmFuc2FjdGlvblJlY2VpcHQ9ZnVuY3Rpb24odHJhbnNhY3Rpb25IYXNoKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwYXJhbXM7dmFyIF90aGlzPXRoaXM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMuZ2V0TmV0d29yaygpXTtjYXNlIDE6X2Euc2VudCgpO3JldHVybls0LHRyYW5zYWN0aW9uSGFzaF07Y2FzZSAyOnRyYW5zYWN0aW9uSGFzaD1fYS5zZW50KCk7cGFyYW1zPXt0cmFuc2FjdGlvbkhhc2g6dGhpcy5mb3JtYXR0ZXIuaGFzaCh0cmFuc2FjdGlvbkhhc2gsdHJ1ZSl9O3JldHVyblsyLCgwLGxpYiRzLnBvbGwpKGZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcihfdGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlc3VsdCxyZWNlaXB0LGJsb2NrTnVtYmVyLGNvbmZpcm1hdGlvbnM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LHRoaXMucGVyZm9ybSgiZ2V0VHJhbnNhY3Rpb25SZWNlaXB0IixwYXJhbXMpXTtjYXNlIDE6cmVzdWx0PV9hLnNlbnQoKTtpZihyZXN1bHQ9PW51bGwpe2lmKHRoaXMuX2VtaXR0ZWRbInQ6Iit0cmFuc2FjdGlvbkhhc2hdPT1udWxsKXtyZXR1cm5bMixudWxsXX1yZXR1cm5bMix1bmRlZmluZWRdfWlmKHJlc3VsdC5ibG9ja0hhc2g9PW51bGwpe3JldHVyblsyLHVuZGVmaW5lZF19cmVjZWlwdD10aGlzLmZvcm1hdHRlci5yZWNlaXB0KHJlc3VsdCk7aWYoIShyZWNlaXB0LmJsb2NrTnVtYmVyPT1udWxsKSlyZXR1cm5bMywyXTtyZWNlaXB0LmNvbmZpcm1hdGlvbnM9MDtyZXR1cm5bMyw0XTtjYXNlIDI6aWYoIShyZWNlaXB0LmNvbmZpcm1hdGlvbnM9PW51bGwpKXJldHVyblszLDRdO3JldHVybls0LHRoaXMuX2dldEludGVybmFsQmxvY2tOdW1iZXIoMTAwKzIqdGhpcy5wb2xsaW5nSW50ZXJ2YWwpXTtjYXNlIDM6YmxvY2tOdW1iZXI9X2Euc2VudCgpO2NvbmZpcm1hdGlvbnM9YmxvY2tOdW1iZXItcmVjZWlwdC5ibG9ja051bWJlcisxO2lmKGNvbmZpcm1hdGlvbnM8PTApe2NvbmZpcm1hdGlvbnM9MX1yZWNlaXB0LmNvbmZpcm1hdGlvbnM9Y29uZmlybWF0aW9ucztfYS5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bMixyZWNlaXB0XX19KX0pfSx7b25jZVBvbGw6dGhpc30pXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldExvZ3M9ZnVuY3Rpb24oZmlsdGVyKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwYXJhbXMsbG9ncztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5nZXROZXR3b3JrKCldO2Nhc2UgMTpfYS5zZW50KCk7cmV0dXJuWzQsKDAsbGliJDMucmVzb2x2ZVByb3BlcnRpZXMpKHtmaWx0ZXI6dGhpcy5fZ2V0RmlsdGVyKGZpbHRlcil9KV07Y2FzZSAyOnBhcmFtcz1fYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5wZXJmb3JtKCJnZXRMb2dzIixwYXJhbXMpXTtjYXNlIDM6bG9ncz1fYS5zZW50KCk7bG9ncy5mb3JFYWNoKGZ1bmN0aW9uKGxvZyl7aWYobG9nLnJlbW92ZWQ9PW51bGwpe2xvZy5yZW1vdmVkPWZhbHNlfX0pO3JldHVyblsyLGZvcm1hdHRlci5Gb3JtYXR0ZXIuYXJyYXlPZih0aGlzLmZvcm1hdHRlci5maWx0ZXJMb2cuYmluZCh0aGlzLmZvcm1hdHRlcikpKGxvZ3MpXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmdldEV0aGVyUHJpY2U9ZnVuY3Rpb24oKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCx0aGlzLmdldE5ldHdvcmsoKV07Y2FzZSAxOl9hLnNlbnQoKTtyZXR1cm5bMix0aGlzLnBlcmZvcm0oImdldEV0aGVyUHJpY2UiLHt9KV19fSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5fZ2V0QmxvY2tUYWc9ZnVuY3Rpb24oYmxvY2tUYWcpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGJsb2NrTnVtYmVyO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxibG9ja1RhZ107Y2FzZSAxOmJsb2NrVGFnPV9hLnNlbnQoKTtpZighKHR5cGVvZiBibG9ja1RhZz09PSJudW1iZXIiJiZibG9ja1RhZzwwKSlyZXR1cm5bMywzXTtpZihibG9ja1RhZyUxKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIEJsb2NrVGFnIiwiYmxvY2tUYWciLGJsb2NrVGFnKX1yZXR1cm5bNCx0aGlzLl9nZXRJbnRlcm5hbEJsb2NrTnVtYmVyKDEwMCsyKnRoaXMucG9sbGluZ0ludGVydmFsKV07Y2FzZSAyOmJsb2NrTnVtYmVyPV9hLnNlbnQoKTtibG9ja051bWJlcis9YmxvY2tUYWc7aWYoYmxvY2tOdW1iZXI8MCl7YmxvY2tOdW1iZXI9MH1yZXR1cm5bMix0aGlzLmZvcm1hdHRlci5ibG9ja1RhZyhibG9ja051bWJlcildO2Nhc2UgMzpyZXR1cm5bMix0aGlzLmZvcm1hdHRlci5ibG9ja1RhZyhibG9ja1RhZyldfX0pfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuZ2V0UmVzb2x2ZXI9ZnVuY3Rpb24obmFtZSl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgY3VycmVudE5hbWUsYWRkcixyZXNvbHZlcixfYTtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYil7c3dpdGNoKF9iLmxhYmVsKXtjYXNlIDA6Y3VycmVudE5hbWU9bmFtZTtfYi5sYWJlbD0xO2Nhc2UgMTppZighdHJ1ZSlyZXR1cm5bMyw2XTtpZihjdXJyZW50TmFtZT09PSIifHxjdXJyZW50TmFtZT09PSIuIil7cmV0dXJuWzIsbnVsbF19aWYobmFtZSE9PSJldGgiJiZjdXJyZW50TmFtZT09PSJldGgiKXtyZXR1cm5bMixudWxsXX1yZXR1cm5bNCx0aGlzLl9nZXRSZXNvbHZlcihjdXJyZW50TmFtZSwiZ2V0UmVzb2x2ZXIiKV07Y2FzZSAyOmFkZHI9X2Iuc2VudCgpO2lmKCEoYWRkciE9bnVsbCkpcmV0dXJuWzMsNV07cmVzb2x2ZXI9bmV3IFJlc29sdmVyKHRoaXMsYWRkcixuYW1lKTtfYT1jdXJyZW50TmFtZSE9PW5hbWU7aWYoIV9hKXJldHVyblszLDRdO3JldHVybls0LHJlc29sdmVyLnN1cHBvcnRzV2lsZGNhcmQoKV07Y2FzZSAzOl9hPSFfYi5zZW50KCk7X2IubGFiZWw9NDtjYXNlIDQ6aWYoX2Epe3JldHVyblsyLG51bGxdfXJldHVyblsyLHJlc29sdmVyXTtjYXNlIDU6Y3VycmVudE5hbWU9Y3VycmVudE5hbWUuc3BsaXQoIi4iKS5zbGljZSgxKS5qb2luKCIuIik7cmV0dXJuWzMsMV07Y2FzZSA2OnJldHVyblsyXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLl9nZXRSZXNvbHZlcj1mdW5jdGlvbihuYW1lLG9wZXJhdGlvbil7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbmV0d29yayxhZGRyRGF0YSxlcnJvcl8xMDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYob3BlcmF0aW9uPT1udWxsKXtvcGVyYXRpb249IkVOUyJ9cmV0dXJuWzQsdGhpcy5nZXROZXR3b3JrKCldO2Nhc2UgMTpuZXR3b3JrPV9hLnNlbnQoKTtpZighbmV0d29yay5lbnNBZGRyZXNzKXtsb2dnZXIudGhyb3dFcnJvcigibmV0d29yayBkb2VzIG5vdCBzdXBwb3J0IEVOUyIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246b3BlcmF0aW9uLG5ldHdvcms6bmV0d29yay5uYW1lfSl9X2EubGFiZWw9MjtjYXNlIDI6X2EudHJ5cy5wdXNoKFsyLDQsLDVdKTtyZXR1cm5bNCx0aGlzLmNhbGwoe3RvOm5ldHdvcmsuZW5zQWRkcmVzcyxkYXRhOiIweDAxNzhiOGJmIisoMCxsaWIkYy5uYW1laGFzaCkobmFtZSkuc3Vic3RyaW5nKDIpfSldO2Nhc2UgMzphZGRyRGF0YT1fYS5zZW50KCk7cmV0dXJuWzIsdGhpcy5mb3JtYXR0ZXIuY2FsbEFkZHJlc3MoYWRkckRhdGEpXTtjYXNlIDQ6ZXJyb3JfMTA9X2Euc2VudCgpO3JldHVyblszLDVdO2Nhc2UgNTpyZXR1cm5bMixudWxsXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLnJlc29sdmVOYW1lPWZ1bmN0aW9uKG5hbWUpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlc29sdmVyO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxuYW1lXTtjYXNlIDE6bmFtZT1fYS5zZW50KCk7dHJ5e3JldHVyblsyLFByb21pc2UucmVzb2x2ZSh0aGlzLmZvcm1hdHRlci5hZGRyZXNzKG5hbWUpKV19Y2F0Y2goZXJyb3Ipe2lmKCgwLGxpYiQxLmlzSGV4U3RyaW5nKShuYW1lKSl7dGhyb3cgZXJyb3J9fWlmKHR5cGVvZiBuYW1lIT09InN0cmluZyIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgRU5TIG5hbWUiLCJuYW1lIixuYW1lKX1yZXR1cm5bNCx0aGlzLmdldFJlc29sdmVyKG5hbWUpXTtjYXNlIDI6cmVzb2x2ZXI9X2Euc2VudCgpO2lmKCFyZXNvbHZlcil7cmV0dXJuWzIsbnVsbF19cmV0dXJuWzQscmVzb2x2ZXIuZ2V0QWRkcmVzcygpXTtjYXNlIDM6cmV0dXJuWzIsX2Euc2VudCgpXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmxvb2t1cEFkZHJlc3M9ZnVuY3Rpb24oYWRkcmVzcyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgbm9kZSxyZXNvbHZlckFkZHIsbmFtZSxfYSxhZGRyO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9iKXtzd2l0Y2goX2IubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxhZGRyZXNzXTtjYXNlIDE6YWRkcmVzcz1fYi5zZW50KCk7YWRkcmVzcz10aGlzLmZvcm1hdHRlci5hZGRyZXNzKGFkZHJlc3MpO25vZGU9YWRkcmVzcy5zdWJzdHJpbmcoMikudG9Mb3dlckNhc2UoKSsiLmFkZHIucmV2ZXJzZSI7cmV0dXJuWzQsdGhpcy5fZ2V0UmVzb2x2ZXIobm9kZSwibG9va3VwQWRkcmVzcyIpXTtjYXNlIDI6cmVzb2x2ZXJBZGRyPV9iLnNlbnQoKTtpZihyZXNvbHZlckFkZHI9PW51bGwpe3JldHVyblsyLG51bGxdfV9hPV9wYXJzZVN0cmluZztyZXR1cm5bNCx0aGlzLmNhbGwoe3RvOnJlc29sdmVyQWRkcixkYXRhOiIweDY5MWYzNDMxIisoMCxsaWIkYy5uYW1laGFzaCkobm9kZSkuc3Vic3RyaW5nKDIpfSldO2Nhc2UgMzpuYW1lPV9hLmFwcGx5KHZvaWQgMCxbX2Iuc2VudCgpLDBdKTtyZXR1cm5bNCx0aGlzLnJlc29sdmVOYW1lKG5hbWUpXTtjYXNlIDQ6YWRkcj1fYi5zZW50KCk7aWYoYWRkciE9YWRkcmVzcyl7cmV0dXJuWzIsbnVsbF19cmV0dXJuWzIsbmFtZV19fSl9KX07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5nZXRBdmF0YXI9ZnVuY3Rpb24obmFtZU9yQWRkcmVzcyl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcmVzb2x2ZXIsYWRkcmVzcyxub2RlLHJlc29sdmVyQWRkcmVzcyxhdmF0YXJfMSxlcnJvcl8xMSxuYW1lXzEsX2EsZXJyb3JfMTIsYXZhdGFyO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9iKXtzd2l0Y2goX2IubGFiZWwpe2Nhc2UgMDpyZXNvbHZlcj1udWxsO2lmKCEoMCxsaWIkMS5pc0hleFN0cmluZykobmFtZU9yQWRkcmVzcykpcmV0dXJuWzMsMTBdO2FkZHJlc3M9dGhpcy5mb3JtYXR0ZXIuYWRkcmVzcyhuYW1lT3JBZGRyZXNzKTtub2RlPWFkZHJlc3Muc3Vic3RyaW5nKDIpLnRvTG93ZXJDYXNlKCkrIi5hZGRyLnJldmVyc2UiO3JldHVybls0LHRoaXMuX2dldFJlc29sdmVyKG5vZGUsImdldEF2YXRhciIpXTtjYXNlIDE6cmVzb2x2ZXJBZGRyZXNzPV9iLnNlbnQoKTtpZighcmVzb2x2ZXJBZGRyZXNzKXtyZXR1cm5bMixudWxsXX1yZXNvbHZlcj1uZXcgUmVzb2x2ZXIodGhpcyxyZXNvbHZlckFkZHJlc3Msbm9kZSk7X2IubGFiZWw9MjtjYXNlIDI6X2IudHJ5cy5wdXNoKFsyLDQsLDVdKTtyZXR1cm5bNCxyZXNvbHZlci5nZXRBdmF0YXIoKV07Y2FzZSAzOmF2YXRhcl8xPV9iLnNlbnQoKTtpZihhdmF0YXJfMSl7cmV0dXJuWzIsYXZhdGFyXzEudXJsXX1yZXR1cm5bMyw1XTtjYXNlIDQ6ZXJyb3JfMTE9X2Iuc2VudCgpO2lmKGVycm9yXzExLmNvZGUhPT1saWIuTG9nZ2VyLmVycm9ycy5DQUxMX0VYQ0VQVElPTil7dGhyb3cgZXJyb3JfMTF9cmV0dXJuWzMsNV07Y2FzZSA1Ol9iLnRyeXMucHVzaChbNSw4LCw5XSk7X2E9X3BhcnNlU3RyaW5nO3JldHVybls0LHRoaXMuY2FsbCh7dG86cmVzb2x2ZXJBZGRyZXNzLGRhdGE6IjB4NjkxZjM0MzEiKygwLGxpYiRjLm5hbWVoYXNoKShub2RlKS5zdWJzdHJpbmcoMil9KV07Y2FzZSA2Om5hbWVfMT1fYS5hcHBseSh2b2lkIDAsW19iLnNlbnQoKSwwXSk7cmV0dXJuWzQsdGhpcy5nZXRSZXNvbHZlcihuYW1lXzEpXTtjYXNlIDc6cmVzb2x2ZXI9X2Iuc2VudCgpO3JldHVyblszLDldO2Nhc2UgODplcnJvcl8xMj1fYi5zZW50KCk7aWYoZXJyb3JfMTIuY29kZSE9PWxpYi5Mb2dnZXIuZXJyb3JzLkNBTExfRVhDRVBUSU9OKXt0aHJvdyBlcnJvcl8xMn1yZXR1cm5bMixudWxsXTtjYXNlIDk6cmV0dXJuWzMsMTJdO2Nhc2UgMTA6cmV0dXJuWzQsdGhpcy5nZXRSZXNvbHZlcihuYW1lT3JBZGRyZXNzKV07Y2FzZSAxMTpyZXNvbHZlcj1fYi5zZW50KCk7aWYoIXJlc29sdmVyKXtyZXR1cm5bMixudWxsXX1fYi5sYWJlbD0xMjtjYXNlIDEyOnJldHVybls0LHJlc29sdmVyLmdldEF2YXRhcigpXTtjYXNlIDEzOmF2YXRhcj1fYi5zZW50KCk7aWYoYXZhdGFyPT1udWxsKXtyZXR1cm5bMixudWxsXX1yZXR1cm5bMixhdmF0YXIudXJsXX19KX0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLnBlcmZvcm09ZnVuY3Rpb24obWV0aG9kLHBhcmFtcyl7cmV0dXJuIGxvZ2dlci50aHJvd0Vycm9yKG1ldGhvZCsiIG5vdCBpbXBsZW1lbnRlZCIsbGliLkxvZ2dlci5lcnJvcnMuTk9UX0lNUExFTUVOVEVELHtvcGVyYXRpb246bWV0aG9kfSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuX3N0YXJ0RXZlbnQ9ZnVuY3Rpb24oZXZlbnQpe3RoaXMucG9sbGluZz10aGlzLl9ldmVudHMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnBvbGxhYmxlKCl9KS5sZW5ndGg+MH07QmFzZVByb3ZpZGVyLnByb3RvdHlwZS5fc3RvcEV2ZW50PWZ1bmN0aW9uKGV2ZW50KXt0aGlzLnBvbGxpbmc9dGhpcy5fZXZlbnRzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5wb2xsYWJsZSgpfSkubGVuZ3RoPjB9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuX2FkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZXZlbnROYW1lLGxpc3RlbmVyLG9uY2Upe3ZhciBldmVudD1uZXcgRXZlbnQoZ2V0RXZlbnRUYWcoZXZlbnROYW1lKSxsaXN0ZW5lcixvbmNlKTt0aGlzLl9ldmVudHMucHVzaChldmVudCk7dGhpcy5fc3RhcnRFdmVudChldmVudCk7cmV0dXJuIHRoaXN9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUub249ZnVuY3Rpb24oZXZlbnROYW1lLGxpc3RlbmVyKXtyZXR1cm4gdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsbGlzdGVuZXIsZmFsc2UpfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZXZlbnROYW1lLGxpc3RlbmVyKXtyZXR1cm4gdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsbGlzdGVuZXIsdHJ1ZSl9O0Jhc2VQcm92aWRlci5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihldmVudE5hbWUpe3ZhciBfdGhpcz10aGlzO3ZhciBhcmdzPVtdO2Zvcih2YXIgX2k9MTtfaTxhcmd1bWVudHMubGVuZ3RoO19pKyspe2FyZ3NbX2ktMV09YXJndW1lbnRzW19pXX12YXIgcmVzdWx0PWZhbHNlO3ZhciBzdG9wcGVkPVtdO3ZhciBldmVudFRhZz1nZXRFdmVudFRhZyhldmVudE5hbWUpO3RoaXMuX2V2ZW50cz10aGlzLl9ldmVudHMuZmlsdGVyKGZ1bmN0aW9uKGV2ZW50KXtpZihldmVudC50YWchPT1ldmVudFRhZyl7cmV0dXJuIHRydWV9c2V0VGltZW91dChmdW5jdGlvbigpe2V2ZW50Lmxpc3RlbmVyLmFwcGx5KF90aGlzLGFyZ3MpfSwwKTtyZXN1bHQ9dHJ1ZTtpZihldmVudC5vbmNlKXtzdG9wcGVkLnB1c2goZXZlbnQpO3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX0pO3N0b3BwZWQuZm9yRWFjaChmdW5jdGlvbihldmVudCl7X3RoaXMuX3N0b3BFdmVudChldmVudCl9KTtyZXR1cm4gcmVzdWx0fTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oZXZlbnROYW1lKXtpZighZXZlbnROYW1lKXtyZXR1cm4gdGhpcy5fZXZlbnRzLmxlbmd0aH12YXIgZXZlbnRUYWc9Z2V0RXZlbnRUYWcoZXZlbnROYW1lKTtyZXR1cm4gdGhpcy5fZXZlbnRzLmZpbHRlcihmdW5jdGlvbihldmVudCl7cmV0dXJuIGV2ZW50LnRhZz09PWV2ZW50VGFnfSkubGVuZ3RofTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbihldmVudE5hbWUpe2lmKGV2ZW50TmFtZT09bnVsbCl7cmV0dXJuIHRoaXMuX2V2ZW50cy5tYXAoZnVuY3Rpb24oZXZlbnQpe3JldHVybiBldmVudC5saXN0ZW5lcn0pfXZhciBldmVudFRhZz1nZXRFdmVudFRhZyhldmVudE5hbWUpO3JldHVybiB0aGlzLl9ldmVudHMuZmlsdGVyKGZ1bmN0aW9uKGV2ZW50KXtyZXR1cm4gZXZlbnQudGFnPT09ZXZlbnRUYWd9KS5tYXAoZnVuY3Rpb24oZXZlbnQpe3JldHVybiBldmVudC5saXN0ZW5lcn0pfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLm9mZj1mdW5jdGlvbihldmVudE5hbWUsbGlzdGVuZXIpe3ZhciBfdGhpcz10aGlzO2lmKGxpc3RlbmVyPT1udWxsKXtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoZXZlbnROYW1lKX12YXIgc3RvcHBlZD1bXTt2YXIgZm91bmQ9ZmFsc2U7dmFyIGV2ZW50VGFnPWdldEV2ZW50VGFnKGV2ZW50TmFtZSk7dGhpcy5fZXZlbnRzPXRoaXMuX2V2ZW50cy5maWx0ZXIoZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50LnRhZyE9PWV2ZW50VGFnfHxldmVudC5saXN0ZW5lciE9bGlzdGVuZXIpe3JldHVybiB0cnVlfWlmKGZvdW5kKXtyZXR1cm4gdHJ1ZX1mb3VuZD10cnVlO3N0b3BwZWQucHVzaChldmVudCk7cmV0dXJuIGZhbHNlfSk7c3RvcHBlZC5mb3JFYWNoKGZ1bmN0aW9uKGV2ZW50KXtfdGhpcy5fc3RvcEV2ZW50KGV2ZW50KX0pO3JldHVybiB0aGlzfTtCYXNlUHJvdmlkZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihldmVudE5hbWUpe3ZhciBfdGhpcz10aGlzO3ZhciBzdG9wcGVkPVtdO2lmKGV2ZW50TmFtZT09bnVsbCl7c3RvcHBlZD10aGlzLl9ldmVudHM7dGhpcy5fZXZlbnRzPVtdfWVsc2V7dmFyIGV2ZW50VGFnXzE9Z2V0RXZlbnRUYWcoZXZlbnROYW1lKTt0aGlzLl9ldmVudHM9dGhpcy5fZXZlbnRzLmZpbHRlcihmdW5jdGlvbihldmVudCl7aWYoZXZlbnQudGFnIT09ZXZlbnRUYWdfMSl7cmV0dXJuIHRydWV9c3RvcHBlZC5wdXNoKGV2ZW50KTtyZXR1cm4gZmFsc2V9KX1zdG9wcGVkLmZvckVhY2goZnVuY3Rpb24oZXZlbnQpe190aGlzLl9zdG9wRXZlbnQoZXZlbnQpfSk7cmV0dXJuIHRoaXN9O3JldHVybiBCYXNlUHJvdmlkZXJ9KGxpYiRlLlByb3ZpZGVyKTtleHBvcnRzLkJhc2VQcm92aWRlcj1CYXNlUHJvdmlkZXJ9KTt2YXIgYmFzZVByb3ZpZGVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYmFzZVByb3ZpZGVyKTt2YXIganNvblJwY1Byb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO3ZhciBfX2F3YWl0ZXI9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fYXdhaXRlcnx8ZnVuY3Rpb24odGhpc0FyZyxfYXJndW1lbnRzLFAsZ2VuZXJhdG9yKXtmdW5jdGlvbiBhZG9wdCh2YWx1ZSl7cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUD92YWx1ZTpuZXcgUChmdW5jdGlvbihyZXNvbHZlKXtyZXNvbHZlKHZhbHVlKX0pfXJldHVybiBuZXcoUHx8KFA9UHJvbWlzZSkpKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiByZWplY3RlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yWyJ0aHJvdyJdKHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiBzdGVwKHJlc3VsdCl7cmVzdWx0LmRvbmU/cmVzb2x2ZShyZXN1bHQudmFsdWUpOmFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQscmVqZWN0ZWQpfXN0ZXAoKGdlbmVyYXRvcj1nZW5lcmF0b3IuYXBwbHkodGhpc0FyZyxfYXJndW1lbnRzfHxbXSkpLm5leHQoKSl9KX07dmFyIF9fZ2VuZXJhdG9yPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odGhpc0FyZyxib2R5KXt2YXIgXz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYodFswXSYxKXRocm93IHRbMV07cmV0dXJuIHRbMV19LHRyeXM6W10sb3BzOltdfSxmLHksdCxnO3JldHVybiBnPXtuZXh0OnZlcmIoMCksdGhyb3c6dmVyYigxKSxyZXR1cm46dmVyYigyKX0sdHlwZW9mIFN5bWJvbD09PSJmdW5jdGlvbiImJihnW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGc7ZnVuY3Rpb24gdmVyYihuKXtyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuIHN0ZXAoW24sdl0pfX1mdW5jdGlvbiBzdGVwKG9wKXtpZihmKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTt3aGlsZShfKXRyeXtpZihmPTEseSYmKHQ9b3BbMF0mMj95WyJyZXR1cm4iXTpvcFswXT95WyJ0aHJvdyJdfHwoKHQ9eVsicmV0dXJuIl0pJiZ0LmNhbGwoeSksMCk6eS5uZXh0KSYmISh0PXQuY2FsbCh5LG9wWzFdKSkuZG9uZSlyZXR1cm4gdDtpZih5PTAsdClvcD1bb3BbMF0mMix0LnZhbHVlXTtzd2l0Y2gob3BbMF0pe2Nhc2UgMDpjYXNlIDE6dD1vcDticmVhaztjYXNlIDQ6Xy5sYWJlbCsrO3JldHVybnt2YWx1ZTpvcFsxXSxkb25lOmZhbHNlfTtjYXNlIDU6Xy5sYWJlbCsrO3k9b3BbMV07b3A9WzBdO2NvbnRpbnVlO2Nhc2UgNzpvcD1fLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHQ9Xy50cnlzLHQ9dC5sZW5ndGg+MCYmdFt0Lmxlbmd0aC0xXSkmJihvcFswXT09PTZ8fG9wWzBdPT09Mikpe189MDtjb250aW51ZX1pZihvcFswXT09PTMmJighdHx8b3BbMV0+dFswXSYmb3BbMV08dFszXSkpe18ubGFiZWw9b3BbMV07YnJlYWt9aWYob3BbMF09PT02JiZfLmxhYmVsPHRbMV0pe18ubGFiZWw9dFsxXTt0PW9wO2JyZWFrfWlmKHQmJl8ubGFiZWw8dFsyXSl7Xy5sYWJlbD10WzJdO18ub3BzLnB1c2gob3ApO2JyZWFrfWlmKHRbMl0pXy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlfW9wPWJvZHkuY2FsbCh0aGlzQXJnLF8pfWNhdGNoKGUpe29wPVs2LGVdO3k9MH1maW5hbGx5e2Y9dD0wfWlmKG9wWzBdJjUpdGhyb3cgb3BbMV07cmV0dXJue3ZhbHVlOm9wWzBdP29wWzFdOnZvaWQgMCxkb25lOnRydWV9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5Kc29uUnBjUHJvdmlkZXI9ZXhwb3J0cy5Kc29uUnBjU2lnbmVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIGVycm9yR2FzPVsiY2FsbCIsImVzdGltYXRlR2FzIl07ZnVuY3Rpb24gc3BlbHVuayh2YWx1ZSxyZXF1aXJlRGF0YSl7aWYodmFsdWU9PW51bGwpe3JldHVybiBudWxsfWlmKHR5cGVvZiB2YWx1ZS5tZXNzYWdlPT09InN0cmluZyImJnZhbHVlLm1lc3NhZ2UubWF0Y2goInJldmVydGVkIikpe3ZhciBkYXRhPSgwLGxpYiQxLmlzSGV4U3RyaW5nKSh2YWx1ZS5kYXRhKT92YWx1ZS5kYXRhOm51bGw7aWYoIXJlcXVpcmVEYXRhfHxkYXRhKXtyZXR1cm57bWVzc2FnZTp2YWx1ZS5tZXNzYWdlLGRhdGE6ZGF0YX19fWlmKHR5cGVvZiB2YWx1ZT09PSJvYmplY3QiKXtmb3IodmFyIGtleSBpbiB2YWx1ZSl7dmFyIHJlc3VsdD1zcGVsdW5rKHZhbHVlW2tleV0scmVxdWlyZURhdGEpO2lmKHJlc3VsdCl7cmV0dXJuIHJlc3VsdH19cmV0dXJuIG51bGx9aWYodHlwZW9mIHZhbHVlPT09InN0cmluZyIpe3RyeXtyZXR1cm4gc3BlbHVuayhKU09OLnBhcnNlKHZhbHVlKSxyZXF1aXJlRGF0YSl9Y2F0Y2goZXJyb3Ipe319cmV0dXJuIG51bGx9ZnVuY3Rpb24gY2hlY2tFcnJvcihtZXRob2QsZXJyb3IscGFyYW1zKXt2YXIgdHJhbnNhY3Rpb249cGFyYW1zLnRyYW5zYWN0aW9ufHxwYXJhbXMuc2lnbmVkVHJhbnNhY3Rpb247aWYobWV0aG9kPT09ImNhbGwiKXt2YXIgcmVzdWx0PXNwZWx1bmsoZXJyb3IsdHJ1ZSk7aWYocmVzdWx0KXtyZXR1cm4gcmVzdWx0LmRhdGF9bG9nZ2VyLnRocm93RXJyb3IoIm1pc3NpbmcgcmV2ZXJ0IGRhdGEgaW4gY2FsbCBleGNlcHRpb247IFRyYW5zYWN0aW9uIHJldmVydGVkIHdpdGhvdXQgYSByZWFzb24gc3RyaW5nIixsaWIuTG9nZ2VyLmVycm9ycy5DQUxMX0VYQ0VQVElPTix7ZGF0YToiMHgiLHRyYW5zYWN0aW9uOnRyYW5zYWN0aW9uLGVycm9yOmVycm9yfSl9aWYobWV0aG9kPT09ImVzdGltYXRlR2FzIil7dmFyIHJlc3VsdD1zcGVsdW5rKGVycm9yLmJvZHksZmFsc2UpO2lmKHJlc3VsdD09bnVsbCl7cmVzdWx0PXNwZWx1bmsoZXJyb3IsZmFsc2UpfWlmKHJlc3VsdCl7bG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCBlc3RpbWF0ZSBnYXM7IHRyYW5zYWN0aW9uIG1heSBmYWlsIG9yIG1heSByZXF1aXJlIG1hbnVhbCBnYXMgbGltaXQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOUFJFRElDVEFCTEVfR0FTX0xJTUlULHtyZWFzb246cmVzdWx0Lm1lc3NhZ2UsbWV0aG9kOm1ldGhvZCx0cmFuc2FjdGlvbjp0cmFuc2FjdGlvbixlcnJvcjplcnJvcn0pfX12YXIgbWVzc2FnZT1lcnJvci5tZXNzYWdlO2lmKGVycm9yLmNvZGU9PT1saWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1ImJmVycm9yLmVycm9yJiZ0eXBlb2YgZXJyb3IuZXJyb3IubWVzc2FnZT09PSJzdHJpbmciKXttZXNzYWdlPWVycm9yLmVycm9yLm1lc3NhZ2V9ZWxzZSBpZih0eXBlb2YgZXJyb3IuYm9keT09PSJzdHJpbmciKXttZXNzYWdlPWVycm9yLmJvZHl9ZWxzZSBpZih0eXBlb2YgZXJyb3IucmVzcG9uc2VUZXh0PT09InN0cmluZyIpe21lc3NhZ2U9ZXJyb3IucmVzcG9uc2VUZXh0fW1lc3NhZ2U9KG1lc3NhZ2V8fCIiKS50b0xvd2VyQ2FzZSgpO2lmKG1lc3NhZ2UubWF0Y2goL2luc3VmZmljaWVudCBmdW5kc3xiYXNlIGZlZSBleGNlZWRzIGdhcyBsaW1pdHxJbnN1ZmZpY2llbnRGdW5kcy9pKSl7bG9nZ2VyLnRocm93RXJyb3IoImluc3VmZmljaWVudCBmdW5kcyBmb3IgaW50cmluc2ljIHRyYW5zYWN0aW9uIGNvc3QiLGxpYi5Mb2dnZXIuZXJyb3JzLklOU1VGRklDSUVOVF9GVU5EUyx7ZXJyb3I6ZXJyb3IsbWV0aG9kOm1ldGhvZCx0cmFuc2FjdGlvbjp0cmFuc2FjdGlvbn0pfWlmKG1lc3NhZ2UubWF0Y2goL25vbmNlIChpcyApP3RvbyBsb3cvaSkpe2xvZ2dlci50aHJvd0Vycm9yKCJub25jZSBoYXMgYWxyZWFkeSBiZWVuIHVzZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLk5PTkNFX0VYUElSRUQse2Vycm9yOmVycm9yLG1ldGhvZDptZXRob2QsdHJhbnNhY3Rpb246dHJhbnNhY3Rpb259KX1pZihtZXNzYWdlLm1hdGNoKC9yZXBsYWNlbWVudCB0cmFuc2FjdGlvbiB1bmRlcnByaWNlZHx0cmFuc2FjdGlvbiBnYXMgcHJpY2UuKnRvbyBsb3cvaSkpe2xvZ2dlci50aHJvd0Vycm9yKCJyZXBsYWNlbWVudCBmZWUgdG9vIGxvdyIsbGliLkxvZ2dlci5lcnJvcnMuUkVQTEFDRU1FTlRfVU5ERVJQUklDRUQse2Vycm9yOmVycm9yLG1ldGhvZDptZXRob2QsdHJhbnNhY3Rpb246dHJhbnNhY3Rpb259KX1pZihtZXNzYWdlLm1hdGNoKC9vbmx5IHJlcGxheS1wcm90ZWN0ZWQvaSkpe2xvZ2dlci50aHJvd0Vycm9yKCJsZWdhY3kgcHJlLWVpcC0xNTUgdHJhbnNhY3Rpb25zIG5vdCBzdXBwb3J0ZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7ZXJyb3I6ZXJyb3IsbWV0aG9kOm1ldGhvZCx0cmFuc2FjdGlvbjp0cmFuc2FjdGlvbn0pfWlmKGVycm9yR2FzLmluZGV4T2YobWV0aG9kKT49MCYmbWVzc2FnZS5tYXRjaCgvZ2FzIHJlcXVpcmVkIGV4Y2VlZHMgYWxsb3dhbmNlfGFsd2F5cyBmYWlsaW5nIHRyYW5zYWN0aW9ufGV4ZWN1dGlvbiByZXZlcnRlZHxyZXZlcnQvKSl7bG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCBlc3RpbWF0ZSBnYXM7IHRyYW5zYWN0aW9uIG1heSBmYWlsIG9yIG1heSByZXF1aXJlIG1hbnVhbCBnYXMgbGltaXQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOUFJFRElDVEFCTEVfR0FTX0xJTUlULHtlcnJvcjplcnJvcixtZXRob2Q6bWV0aG9kLHRyYW5zYWN0aW9uOnRyYW5zYWN0aW9ufSl9dGhyb3cgZXJyb3J9ZnVuY3Rpb24gdGltZXIodGltZW91dCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpe3NldFRpbWVvdXQocmVzb2x2ZSx0aW1lb3V0KX0pfWZ1bmN0aW9uIGdldFJlc3VsdChwYXlsb2FkKXtpZihwYXlsb2FkLmVycm9yKXt2YXIgZXJyb3I9bmV3IEVycm9yKHBheWxvYWQuZXJyb3IubWVzc2FnZSk7ZXJyb3IuY29kZT1wYXlsb2FkLmVycm9yLmNvZGU7ZXJyb3IuZGF0YT1wYXlsb2FkLmVycm9yLmRhdGE7dGhyb3cgZXJyb3J9cmV0dXJuIHBheWxvYWQucmVzdWx0fWZ1bmN0aW9uIGdldExvd2VyQ2FzZSh2YWx1ZSl7aWYodmFsdWUpe3JldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpfXJldHVybiB2YWx1ZX12YXIgX2NvbnN0cnVjdG9yR3VhcmQ9e307dmFyIEpzb25ScGNTaWduZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoSnNvblJwY1NpZ25lcixfc3VwZXIpO2Z1bmN0aW9uIEpzb25ScGNTaWduZXIoY29uc3RydWN0b3JHdWFyZCxwcm92aWRlcixhZGRyZXNzT3JJbmRleCl7dmFyIF90aGlzPV9zdXBlci5jYWxsKHRoaXMpfHx0aGlzO2lmKGNvbnN0cnVjdG9yR3VhcmQhPT1fY29uc3RydWN0b3JHdWFyZCl7dGhyb3cgbmV3IEVycm9yKCJkbyBub3QgY2FsbCB0aGUgSnNvblJwY1NpZ25lciBjb25zdHJ1Y3RvciBkaXJlY3RseTsgdXNlIHByb3ZpZGVyLmdldFNpZ25lciIpfSgwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShfdGhpcywicHJvdmlkZXIiLHByb3ZpZGVyKTtpZihhZGRyZXNzT3JJbmRleD09bnVsbCl7YWRkcmVzc09ySW5kZXg9MH1pZih0eXBlb2YgYWRkcmVzc09ySW5kZXg9PT0ic3RyaW5nIil7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJfYWRkcmVzcyIsX3RoaXMucHJvdmlkZXIuZm9ybWF0dGVyLmFkZHJlc3MoYWRkcmVzc09ySW5kZXgpKTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsIl9pbmRleCIsbnVsbCl9ZWxzZSBpZih0eXBlb2YgYWRkcmVzc09ySW5kZXg9PT0ibnVtYmVyIil7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJfaW5kZXgiLGFkZHJlc3NPckluZGV4KTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsIl9hZGRyZXNzIixudWxsKX1lbHNle2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYWRkcmVzcyBvciBpbmRleCIsImFkZHJlc3NPckluZGV4IixhZGRyZXNzT3JJbmRleCl9cmV0dXJuIF90aGlzfUpzb25ScGNTaWduZXIucHJvdG90eXBlLmNvbm5lY3Q9ZnVuY3Rpb24ocHJvdmlkZXIpe3JldHVybiBsb2dnZXIudGhyb3dFcnJvcigiY2Fubm90IGFsdGVyIEpTT04tUlBDIFNpZ25lciBjb25uZWN0aW9uIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoiY29ubmVjdCJ9KX07SnNvblJwY1NpZ25lci5wcm90b3R5cGUuY29ubmVjdFVuY2hlY2tlZD1mdW5jdGlvbigpe3JldHVybiBuZXcgVW5jaGVja2VkSnNvblJwY1NpZ25lcihfY29uc3RydWN0b3JHdWFyZCx0aGlzLnByb3ZpZGVyLHRoaXMuX2FkZHJlc3N8fHRoaXMuX2luZGV4KX07SnNvblJwY1NpZ25lci5wcm90b3R5cGUuZ2V0QWRkcmVzcz1mdW5jdGlvbigpe3ZhciBfdGhpcz10aGlzO2lmKHRoaXMuX2FkZHJlc3Mpe3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYWRkcmVzcyl9cmV0dXJuIHRoaXMucHJvdmlkZXIuc2VuZCgiZXRoX2FjY291bnRzIixbXSkudGhlbihmdW5jdGlvbihhY2NvdW50cyl7aWYoYWNjb3VudHMubGVuZ3RoPD1fdGhpcy5faW5kZXgpe2xvZ2dlci50aHJvd0Vycm9yKCJ1bmtub3duIGFjY291bnQgIyIrX3RoaXMuX2luZGV4LGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7b3BlcmF0aW9uOiJnZXRBZGRyZXNzIn0pfXJldHVybiBfdGhpcy5wcm92aWRlci5mb3JtYXR0ZXIuYWRkcmVzcyhhY2NvdW50c1tfdGhpcy5faW5kZXhdKX0pfTtKc29uUnBjU2lnbmVyLnByb3RvdHlwZS5zZW5kVW5jaGVja2VkVHJhbnNhY3Rpb249ZnVuY3Rpb24odHJhbnNhY3Rpb24pe3ZhciBfdGhpcz10aGlzO3RyYW5zYWN0aW9uPSgwLGxpYiQzLnNoYWxsb3dDb3B5KSh0cmFuc2FjdGlvbik7dmFyIGZyb21BZGRyZXNzPXRoaXMuZ2V0QWRkcmVzcygpLnRoZW4oZnVuY3Rpb24oYWRkcmVzcyl7aWYoYWRkcmVzcyl7YWRkcmVzcz1hZGRyZXNzLnRvTG93ZXJDYXNlKCl9cmV0dXJuIGFkZHJlc3N9KTtpZih0cmFuc2FjdGlvbi5nYXNMaW1pdD09bnVsbCl7dmFyIGVzdGltYXRlPSgwLGxpYiQzLnNoYWxsb3dDb3B5KSh0cmFuc2FjdGlvbik7ZXN0aW1hdGUuZnJvbT1mcm9tQWRkcmVzczt0cmFuc2FjdGlvbi5nYXNMaW1pdD10aGlzLnByb3ZpZGVyLmVzdGltYXRlR2FzKGVzdGltYXRlKX1pZih0cmFuc2FjdGlvbi50byE9bnVsbCl7dHJhbnNhY3Rpb24udG89UHJvbWlzZS5yZXNvbHZlKHRyYW5zYWN0aW9uLnRvKS50aGVuKGZ1bmN0aW9uKHRvKXtyZXR1cm4gX19hd2FpdGVyKF90aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgYWRkcmVzcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYodG89PW51bGwpe3JldHVyblsyLG51bGxdfXJldHVybls0LHRoaXMucHJvdmlkZXIucmVzb2x2ZU5hbWUodG8pXTtjYXNlIDE6YWRkcmVzcz1fYS5zZW50KCk7aWYoYWRkcmVzcz09bnVsbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigicHJvdmlkZWQgRU5TIG5hbWUgcmVzb2x2ZXMgdG8gbnVsbCIsInR4LnRvIix0byl9cmV0dXJuWzIsYWRkcmVzc119fSl9KX0pfXJldHVybigwLGxpYiQzLnJlc29sdmVQcm9wZXJ0aWVzKSh7dHg6KDAsbGliJDMucmVzb2x2ZVByb3BlcnRpZXMpKHRyYW5zYWN0aW9uKSxzZW5kZXI6ZnJvbUFkZHJlc3N9KS50aGVuKGZ1bmN0aW9uKF9hKXt2YXIgdHg9X2EudHgsc2VuZGVyPV9hLnNlbmRlcjtpZih0eC5mcm9tIT1udWxsKXtpZih0eC5mcm9tLnRvTG93ZXJDYXNlKCkhPT1zZW5kZXIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImZyb20gYWRkcmVzcyBtaXNtYXRjaCIsInRyYW5zYWN0aW9uIix0cmFuc2FjdGlvbil9fWVsc2V7dHguZnJvbT1zZW5kZXJ9dmFyIGhleFR4PV90aGlzLnByb3ZpZGVyLmNvbnN0cnVjdG9yLmhleGxpZnlUcmFuc2FjdGlvbih0eCx7ZnJvbTp0cnVlfSk7cmV0dXJuIF90aGlzLnByb3ZpZGVyLnNlbmQoImV0aF9zZW5kVHJhbnNhY3Rpb24iLFtoZXhUeF0pLnRoZW4oZnVuY3Rpb24oaGFzaCl7cmV0dXJuIGhhc2h9LGZ1bmN0aW9uKGVycm9yKXtpZih0eXBlb2YgZXJyb3IubWVzc2FnZT09PSJzdHJpbmciJiZlcnJvci5tZXNzYWdlLm1hdGNoKC91c2VyIGRlbmllZC9pKSl7bG9nZ2VyLnRocm93RXJyb3IoInVzZXIgcmVqZWN0ZWQgdHJhbnNhY3Rpb24iLGxpYi5Mb2dnZXIuZXJyb3JzLkFDVElPTl9SRUpFQ1RFRCx7YWN0aW9uOiJzZW5kVHJhbnNhY3Rpb24iLHRyYW5zYWN0aW9uOnR4fSl9cmV0dXJuIGNoZWNrRXJyb3IoInNlbmRUcmFuc2FjdGlvbiIsZXJyb3IsaGV4VHgpfSl9KX07SnNvblJwY1NpZ25lci5wcm90b3R5cGUuc2lnblRyYW5zYWN0aW9uPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXtyZXR1cm4gbG9nZ2VyLnRocm93RXJyb3IoInNpZ25pbmcgdHJhbnNhY3Rpb25zIGlzIHVuc3VwcG9ydGVkIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoic2lnblRyYW5zYWN0aW9uIn0pfTtKc29uUnBjU2lnbmVyLnByb3RvdHlwZS5zZW5kVHJhbnNhY3Rpb249ZnVuY3Rpb24odHJhbnNhY3Rpb24pe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGJsb2NrTnVtYmVyLGhhc2gsZXJyb3JfMTt2YXIgX3RoaXM9dGhpcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5wcm92aWRlci5fZ2V0SW50ZXJuYWxCbG9ja051bWJlcigxMDArMip0aGlzLnByb3ZpZGVyLnBvbGxpbmdJbnRlcnZhbCldO2Nhc2UgMTpibG9ja051bWJlcj1fYS5zZW50KCk7cmV0dXJuWzQsdGhpcy5zZW5kVW5jaGVja2VkVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pXTtjYXNlIDI6aGFzaD1fYS5zZW50KCk7X2EubGFiZWw9MztjYXNlIDM6X2EudHJ5cy5wdXNoKFszLDUsLDZdKTtyZXR1cm5bNCwoMCxsaWIkcy5wb2xsKShmdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIoX3RoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB0eDtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGhpcy5wcm92aWRlci5nZXRUcmFuc2FjdGlvbihoYXNoKV07Y2FzZSAxOnR4PV9hLnNlbnQoKTtpZih0eD09PW51bGwpe3JldHVyblsyLHVuZGVmaW5lZF19cmV0dXJuWzIsdGhpcy5wcm92aWRlci5fd3JhcFRyYW5zYWN0aW9uKHR4LGhhc2gsYmxvY2tOdW1iZXIpXX19KX0pfSx7b25jZVBvbGw6dGhpcy5wcm92aWRlcn0pXTtjYXNlIDQ6cmV0dXJuWzIsX2Euc2VudCgpXTtjYXNlIDU6ZXJyb3JfMT1fYS5zZW50KCk7ZXJyb3JfMS50cmFuc2FjdGlvbkhhc2g9aGFzaDt0aHJvdyBlcnJvcl8xO2Nhc2UgNjpyZXR1cm5bMl19fSl9KX07SnNvblJwY1NpZ25lci5wcm90b3R5cGUuc2lnbk1lc3NhZ2U9ZnVuY3Rpb24obWVzc2FnZSl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZGF0YSxhZGRyZXNzLGVycm9yXzI7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmRhdGE9dHlwZW9mIG1lc3NhZ2U9PT0ic3RyaW5nIj8oMCxsaWIkOC50b1V0ZjhCeXRlcykobWVzc2FnZSk6bWVzc2FnZTtyZXR1cm5bNCx0aGlzLmdldEFkZHJlc3MoKV07Y2FzZSAxOmFkZHJlc3M9X2Euc2VudCgpO19hLmxhYmVsPTI7Y2FzZSAyOl9hLnRyeXMucHVzaChbMiw0LCw1XSk7cmV0dXJuWzQsdGhpcy5wcm92aWRlci5zZW5kKCJwZXJzb25hbF9zaWduIixbKDAsbGliJDEuaGV4bGlmeSkoZGF0YSksYWRkcmVzcy50b0xvd2VyQ2FzZSgpXSldO2Nhc2UgMzpyZXR1cm5bMixfYS5zZW50KCldO2Nhc2UgNDplcnJvcl8yPV9hLnNlbnQoKTtpZih0eXBlb2YgZXJyb3JfMi5tZXNzYWdlPT09InN0cmluZyImJmVycm9yXzIubWVzc2FnZS5tYXRjaCgvdXNlciBkZW5pZWQvaSkpe2xvZ2dlci50aHJvd0Vycm9yKCJ1c2VyIHJlamVjdGVkIHNpZ25pbmciLGxpYi5Mb2dnZXIuZXJyb3JzLkFDVElPTl9SRUpFQ1RFRCx7YWN0aW9uOiJzaWduTWVzc2FnZSIsZnJvbTphZGRyZXNzLG1lc3NhZ2VEYXRhOm1lc3NhZ2V9KX10aHJvdyBlcnJvcl8yO2Nhc2UgNTpyZXR1cm5bMl19fSl9KX07SnNvblJwY1NpZ25lci5wcm90b3R5cGUuX2xlZ2FjeVNpZ25NZXNzYWdlPWZ1bmN0aW9uKG1lc3NhZ2Upe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGRhdGEsYWRkcmVzcyxlcnJvcl8zO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpkYXRhPXR5cGVvZiBtZXNzYWdlPT09InN0cmluZyI/KDAsbGliJDgudG9VdGY4Qnl0ZXMpKG1lc3NhZ2UpOm1lc3NhZ2U7cmV0dXJuWzQsdGhpcy5nZXRBZGRyZXNzKCldO2Nhc2UgMTphZGRyZXNzPV9hLnNlbnQoKTtfYS5sYWJlbD0yO2Nhc2UgMjpfYS50cnlzLnB1c2goWzIsNCwsNV0pO3JldHVybls0LHRoaXMucHJvdmlkZXIuc2VuZCgiZXRoX3NpZ24iLFthZGRyZXNzLnRvTG93ZXJDYXNlKCksKDAsbGliJDEuaGV4bGlmeSkoZGF0YSldKV07Y2FzZSAzOnJldHVyblsyLF9hLnNlbnQoKV07Y2FzZSA0OmVycm9yXzM9X2Euc2VudCgpO2lmKHR5cGVvZiBlcnJvcl8zLm1lc3NhZ2U9PT0ic3RyaW5nIiYmZXJyb3JfMy5tZXNzYWdlLm1hdGNoKC91c2VyIGRlbmllZC9pKSl7bG9nZ2VyLnRocm93RXJyb3IoInVzZXIgcmVqZWN0ZWQgc2lnbmluZyIsbGliLkxvZ2dlci5lcnJvcnMuQUNUSU9OX1JFSkVDVEVELHthY3Rpb246Il9sZWdhY3lTaWduTWVzc2FnZSIsZnJvbTphZGRyZXNzLG1lc3NhZ2VEYXRhOm1lc3NhZ2V9KX10aHJvdyBlcnJvcl8zO2Nhc2UgNTpyZXR1cm5bMl19fSl9KX07SnNvblJwY1NpZ25lci5wcm90b3R5cGUuX3NpZ25UeXBlZERhdGE9ZnVuY3Rpb24oZG9tYWluLHR5cGVzLHZhbHVlKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwb3B1bGF0ZWQsYWRkcmVzcyxlcnJvcl80O3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxsaWIkYy5fVHlwZWREYXRhRW5jb2Rlci5yZXNvbHZlTmFtZXMoZG9tYWluLHR5cGVzLHZhbHVlLGZ1bmN0aW9uKG5hbWUpe3JldHVybiBfdGhpcy5wcm92aWRlci5yZXNvbHZlTmFtZShuYW1lKX0pXTtjYXNlIDE6cG9wdWxhdGVkPV9hLnNlbnQoKTtyZXR1cm5bNCx0aGlzLmdldEFkZHJlc3MoKV07Y2FzZSAyOmFkZHJlc3M9X2Euc2VudCgpO19hLmxhYmVsPTM7Y2FzZSAzOl9hLnRyeXMucHVzaChbMyw1LCw2XSk7cmV0dXJuWzQsdGhpcy5wcm92aWRlci5zZW5kKCJldGhfc2lnblR5cGVkRGF0YV92NCIsW2FkZHJlc3MudG9Mb3dlckNhc2UoKSxKU09OLnN0cmluZ2lmeShsaWIkYy5fVHlwZWREYXRhRW5jb2Rlci5nZXRQYXlsb2FkKHBvcHVsYXRlZC5kb21haW4sdHlwZXMscG9wdWxhdGVkLnZhbHVlKSldKV07Y2FzZSA0OnJldHVyblsyLF9hLnNlbnQoKV07Y2FzZSA1OmVycm9yXzQ9X2Euc2VudCgpO2lmKHR5cGVvZiBlcnJvcl80Lm1lc3NhZ2U9PT0ic3RyaW5nIiYmZXJyb3JfNC5tZXNzYWdlLm1hdGNoKC91c2VyIGRlbmllZC9pKSl7bG9nZ2VyLnRocm93RXJyb3IoInVzZXIgcmVqZWN0ZWQgc2lnbmluZyIsbGliLkxvZ2dlci5lcnJvcnMuQUNUSU9OX1JFSkVDVEVELHthY3Rpb246Il9zaWduVHlwZWREYXRhIixmcm9tOmFkZHJlc3MsbWVzc2FnZURhdGE6e2RvbWFpbjpwb3B1bGF0ZWQuZG9tYWluLHR5cGVzOnR5cGVzLHZhbHVlOnBvcHVsYXRlZC52YWx1ZX19KX10aHJvdyBlcnJvcl80O2Nhc2UgNjpyZXR1cm5bMl19fSl9KX07SnNvblJwY1NpZ25lci5wcm90b3R5cGUudW5sb2NrPWZ1bmN0aW9uKHBhc3N3b3JkKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBwcm92aWRlcixhZGRyZXNzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpwcm92aWRlcj10aGlzLnByb3ZpZGVyO3JldHVybls0LHRoaXMuZ2V0QWRkcmVzcygpXTtjYXNlIDE6YWRkcmVzcz1fYS5zZW50KCk7cmV0dXJuWzIscHJvdmlkZXIuc2VuZCgicGVyc29uYWxfdW5sb2NrQWNjb3VudCIsW2FkZHJlc3MudG9Mb3dlckNhc2UoKSxwYXNzd29yZCxudWxsXSldfX0pfSl9O3JldHVybiBKc29uUnBjU2lnbmVyfShsaWIkZi5TaWduZXIpO2V4cG9ydHMuSnNvblJwY1NpZ25lcj1Kc29uUnBjU2lnbmVyO3ZhciBVbmNoZWNrZWRKc29uUnBjU2lnbmVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKFVuY2hlY2tlZEpzb25ScGNTaWduZXIsX3N1cGVyKTtmdW5jdGlvbiBVbmNoZWNrZWRKc29uUnBjU2lnbmVyKCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9VW5jaGVja2VkSnNvblJwY1NpZ25lci5wcm90b3R5cGUuc2VuZFRyYW5zYWN0aW9uPWZ1bmN0aW9uKHRyYW5zYWN0aW9uKXt2YXIgX3RoaXM9dGhpcztyZXR1cm4gdGhpcy5zZW5kVW5jaGVja2VkVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pLnRoZW4oZnVuY3Rpb24oaGFzaCl7cmV0dXJue2hhc2g6aGFzaCxub25jZTpudWxsLGdhc0xpbWl0Om51bGwsZ2FzUHJpY2U6bnVsbCxkYXRhOm51bGwsdmFsdWU6bnVsbCxjaGFpbklkOm51bGwsY29uZmlybWF0aW9uczowLGZyb206bnVsbCx3YWl0OmZ1bmN0aW9uKGNvbmZpcm1hdGlvbnMpe3JldHVybiBfdGhpcy5wcm92aWRlci53YWl0Rm9yVHJhbnNhY3Rpb24oaGFzaCxjb25maXJtYXRpb25zKX19fSl9O3JldHVybiBVbmNoZWNrZWRKc29uUnBjU2lnbmVyfShKc29uUnBjU2lnbmVyKTt2YXIgYWxsb3dlZFRyYW5zYWN0aW9uS2V5cz17Y2hhaW5JZDp0cnVlLGRhdGE6dHJ1ZSxnYXNMaW1pdDp0cnVlLGdhc1ByaWNlOnRydWUsbm9uY2U6dHJ1ZSx0bzp0cnVlLHZhbHVlOnRydWUsdHlwZTp0cnVlLGFjY2Vzc0xpc3Q6dHJ1ZSxtYXhGZWVQZXJHYXM6dHJ1ZSxtYXhQcmlvcml0eUZlZVBlckdhczp0cnVlfTt2YXIgSnNvblJwY1Byb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEpzb25ScGNQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIEpzb25ScGNQcm92aWRlcih1cmwsbmV0d29yayl7dmFyIF90aGlzPXRoaXM7dmFyIG5ldHdvcmtPclJlYWR5PW5ldHdvcms7aWYobmV0d29ya09yUmVhZHk9PW51bGwpe25ldHdvcmtPclJlYWR5PW5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7X3RoaXMuZGV0ZWN0TmV0d29yaygpLnRoZW4oZnVuY3Rpb24obmV0d29yayl7cmVzb2x2ZShuZXR3b3JrKX0sZnVuY3Rpb24oZXJyb3Ipe3JlamVjdChlcnJvcil9KX0sMCl9KX1fdGhpcz1fc3VwZXIuY2FsbCh0aGlzLG5ldHdvcmtPclJlYWR5KXx8dGhpcztpZighdXJsKXt1cmw9KDAsbGliJDMuZ2V0U3RhdGljKShfdGhpcy5jb25zdHJ1Y3RvciwiZGVmYXVsdFVybCIpKCl9aWYodHlwZW9mIHVybD09PSJzdHJpbmciKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsImNvbm5lY3Rpb24iLE9iamVjdC5mcmVlemUoe3VybDp1cmx9KSl9ZWxzZXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsImNvbm5lY3Rpb24iLE9iamVjdC5mcmVlemUoKDAsbGliJDMuc2hhbGxvd0NvcHkpKHVybCkpKX1fdGhpcy5fbmV4dElkPTQyO3JldHVybiBfdGhpc31PYmplY3QuZGVmaW5lUHJvcGVydHkoSnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZSwiX2NhY2hlIix7Z2V0OmZ1bmN0aW9uKCl7aWYodGhpcy5fZXZlbnRMb29wQ2FjaGU9PW51bGwpe3RoaXMuX2V2ZW50TG9vcENhY2hlPXt9fXJldHVybiB0aGlzLl9ldmVudExvb3BDYWNoZX0sZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6dHJ1ZX0pO0pzb25ScGNQcm92aWRlci5kZWZhdWx0VXJsPWZ1bmN0aW9uKCl7cmV0dXJuImh0dHA6Ly9sb2NhbGhvc3Q6ODU0NSJ9O0pzb25ScGNQcm92aWRlci5wcm90b3R5cGUuZGV0ZWN0TmV0d29yaz1mdW5jdGlvbigpe3ZhciBfdGhpcz10aGlzO2lmKCF0aGlzLl9jYWNoZVsiZGV0ZWN0TmV0d29yayJdKXt0aGlzLl9jYWNoZVsiZGV0ZWN0TmV0d29yayJdPXRoaXMuX3VuY2FjaGVkRGV0ZWN0TmV0d29yaygpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtfdGhpcy5fY2FjaGVbImRldGVjdE5ldHdvcmsiXT1udWxsfSwwKX1yZXR1cm4gdGhpcy5fY2FjaGVbImRldGVjdE5ldHdvcmsiXX07SnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5fdW5jYWNoZWREZXRlY3ROZXR3b3JrPWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgY2hhaW5JZCxlcnJvcl81LGVycm9yXzYsZ2V0TmV0d29yaztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsdGltZXIoMCldO2Nhc2UgMTpfYS5zZW50KCk7Y2hhaW5JZD1udWxsO19hLmxhYmVsPTI7Y2FzZSAyOl9hLnRyeXMucHVzaChbMiw0LCw5XSk7cmV0dXJuWzQsdGhpcy5zZW5kKCJldGhfY2hhaW5JZCIsW10pXTtjYXNlIDM6Y2hhaW5JZD1fYS5zZW50KCk7cmV0dXJuWzMsOV07Y2FzZSA0OmVycm9yXzU9X2Euc2VudCgpO19hLmxhYmVsPTU7Y2FzZSA1Ol9hLnRyeXMucHVzaChbNSw3LCw4XSk7cmV0dXJuWzQsdGhpcy5zZW5kKCJuZXRfdmVyc2lvbiIsW10pXTtjYXNlIDY6Y2hhaW5JZD1fYS5zZW50KCk7cmV0dXJuWzMsOF07Y2FzZSA3OmVycm9yXzY9X2Euc2VudCgpO3JldHVyblszLDhdO2Nhc2UgODpyZXR1cm5bMyw5XTtjYXNlIDk6aWYoY2hhaW5JZCE9bnVsbCl7Z2V0TmV0d29yaz0oMCxsaWIkMy5nZXRTdGF0aWMpKHRoaXMuY29uc3RydWN0b3IsImdldE5ldHdvcmsiKTt0cnl7cmV0dXJuWzIsZ2V0TmV0d29yayhsaWIkMi5CaWdOdW1iZXIuZnJvbShjaGFpbklkKS50b051bWJlcigpKV19Y2F0Y2goZXJyb3Ipe3JldHVyblsyLGxvZ2dlci50aHJvd0Vycm9yKCJjb3VsZCBub3QgZGV0ZWN0IG5ldHdvcmsiLGxpYi5Mb2dnZXIuZXJyb3JzLk5FVFdPUktfRVJST1Ise2NoYWluSWQ6Y2hhaW5JZCxldmVudDoiaW52YWxpZE5ldHdvcmsiLHNlcnZlckVycm9yOmVycm9yfSldfX1yZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigiY291bGQgbm90IGRldGVjdCBuZXR3b3JrIixsaWIuTG9nZ2VyLmVycm9ycy5ORVRXT1JLX0VSUk9SLHtldmVudDoibm9OZXR3b3JrIn0pXX19KX0pfTtKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLmdldFNpZ25lcj1mdW5jdGlvbihhZGRyZXNzT3JJbmRleCl7cmV0dXJuIG5ldyBKc29uUnBjU2lnbmVyKF9jb25zdHJ1Y3Rvckd1YXJkLHRoaXMsYWRkcmVzc09ySW5kZXgpfTtKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLmdldFVuY2hlY2tlZFNpZ25lcj1mdW5jdGlvbihhZGRyZXNzT3JJbmRleCl7cmV0dXJuIHRoaXMuZ2V0U2lnbmVyKGFkZHJlc3NPckluZGV4KS5jb25uZWN0VW5jaGVja2VkKCl9O0pzb25ScGNQcm92aWRlci5wcm90b3R5cGUubGlzdEFjY291bnRzPWZ1bmN0aW9uKCl7dmFyIF90aGlzPXRoaXM7cmV0dXJuIHRoaXMuc2VuZCgiZXRoX2FjY291bnRzIixbXSkudGhlbihmdW5jdGlvbihhY2NvdW50cyl7cmV0dXJuIGFjY291bnRzLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gX3RoaXMuZm9ybWF0dGVyLmFkZHJlc3MoYSl9KX0pfTtKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24obWV0aG9kLHBhcmFtcyl7dmFyIF90aGlzPXRoaXM7dmFyIHJlcXVlc3Q9e21ldGhvZDptZXRob2QscGFyYW1zOnBhcmFtcyxpZDp0aGlzLl9uZXh0SWQrKyxqc29ucnBjOiIyLjAifTt0aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXF1ZXN0IixyZXF1ZXN0OigwLGxpYiQzLmRlZXBDb3B5KShyZXF1ZXN0KSxwcm92aWRlcjp0aGlzfSk7dmFyIGNhY2hlPVsiZXRoX2NoYWluSWQiLCJldGhfYmxvY2tOdW1iZXIiXS5pbmRleE9mKG1ldGhvZCk+PTA7aWYoY2FjaGUmJnRoaXMuX2NhY2hlW21ldGhvZF0pe3JldHVybiB0aGlzLl9jYWNoZVttZXRob2RdfXZhciByZXN1bHQ9KDAsbGliJHMuZmV0Y2hKc29uKSh0aGlzLmNvbm5lY3Rpb24sSlNPTi5zdHJpbmdpZnkocmVxdWVzdCksZ2V0UmVzdWx0KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCl7X3RoaXMuZW1pdCgiZGVidWciLHthY3Rpb246InJlc3BvbnNlIixyZXF1ZXN0OnJlcXVlc3QscmVzcG9uc2U6cmVzdWx0LHByb3ZpZGVyOl90aGlzfSk7cmV0dXJuIHJlc3VsdH0sZnVuY3Rpb24oZXJyb3Ipe190aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXNwb25zZSIsZXJyb3I6ZXJyb3IscmVxdWVzdDpyZXF1ZXN0LHByb3ZpZGVyOl90aGlzfSk7dGhyb3cgZXJyb3J9KTtpZihjYWNoZSl7dGhpcy5fY2FjaGVbbWV0aG9kXT1yZXN1bHQ7c2V0VGltZW91dChmdW5jdGlvbigpe190aGlzLl9jYWNoZVttZXRob2RdPW51bGx9LDApfXJldHVybiByZXN1bHR9O0pzb25ScGNQcm92aWRlci5wcm90b3R5cGUucHJlcGFyZVJlcXVlc3Q9ZnVuY3Rpb24obWV0aG9kLHBhcmFtcyl7c3dpdGNoKG1ldGhvZCl7Y2FzZSJnZXRCbG9ja051bWJlciI6cmV0dXJuWyJldGhfYmxvY2tOdW1iZXIiLFtdXTtjYXNlImdldEdhc1ByaWNlIjpyZXR1cm5bImV0aF9nYXNQcmljZSIsW11dO2Nhc2UiZ2V0QmFsYW5jZSI6cmV0dXJuWyJldGhfZ2V0QmFsYW5jZSIsW2dldExvd2VyQ2FzZShwYXJhbXMuYWRkcmVzcykscGFyYW1zLmJsb2NrVGFnXV07Y2FzZSJnZXRUcmFuc2FjdGlvbkNvdW50IjpyZXR1cm5bImV0aF9nZXRUcmFuc2FjdGlvbkNvdW50IixbZ2V0TG93ZXJDYXNlKHBhcmFtcy5hZGRyZXNzKSxwYXJhbXMuYmxvY2tUYWddXTtjYXNlImdldENvZGUiOnJldHVyblsiZXRoX2dldENvZGUiLFtnZXRMb3dlckNhc2UocGFyYW1zLmFkZHJlc3MpLHBhcmFtcy5ibG9ja1RhZ11dO2Nhc2UiZ2V0U3RvcmFnZUF0IjpyZXR1cm5bImV0aF9nZXRTdG9yYWdlQXQiLFtnZXRMb3dlckNhc2UocGFyYW1zLmFkZHJlc3MpLCgwLGxpYiQxLmhleFplcm9QYWQpKHBhcmFtcy5wb3NpdGlvbiwzMikscGFyYW1zLmJsb2NrVGFnXV07Y2FzZSJzZW5kVHJhbnNhY3Rpb24iOnJldHVyblsiZXRoX3NlbmRSYXdUcmFuc2FjdGlvbiIsW3BhcmFtcy5zaWduZWRUcmFuc2FjdGlvbl1dO2Nhc2UiZ2V0QmxvY2siOmlmKHBhcmFtcy5ibG9ja1RhZyl7cmV0dXJuWyJldGhfZ2V0QmxvY2tCeU51bWJlciIsW3BhcmFtcy5ibG9ja1RhZywhIXBhcmFtcy5pbmNsdWRlVHJhbnNhY3Rpb25zXV19ZWxzZSBpZihwYXJhbXMuYmxvY2tIYXNoKXtyZXR1cm5bImV0aF9nZXRCbG9ja0J5SGFzaCIsW3BhcmFtcy5ibG9ja0hhc2gsISFwYXJhbXMuaW5jbHVkZVRyYW5zYWN0aW9uc11dfXJldHVybiBudWxsO2Nhc2UiZ2V0VHJhbnNhY3Rpb24iOnJldHVyblsiZXRoX2dldFRyYW5zYWN0aW9uQnlIYXNoIixbcGFyYW1zLnRyYW5zYWN0aW9uSGFzaF1dO2Nhc2UiZ2V0VHJhbnNhY3Rpb25SZWNlaXB0IjpyZXR1cm5bImV0aF9nZXRUcmFuc2FjdGlvblJlY2VpcHQiLFtwYXJhbXMudHJhbnNhY3Rpb25IYXNoXV07Y2FzZSJjYWxsIjp7dmFyIGhleGxpZnlUcmFuc2FjdGlvbj0oMCxsaWIkMy5nZXRTdGF0aWMpKHRoaXMuY29uc3RydWN0b3IsImhleGxpZnlUcmFuc2FjdGlvbiIpO3JldHVyblsiZXRoX2NhbGwiLFtoZXhsaWZ5VHJhbnNhY3Rpb24ocGFyYW1zLnRyYW5zYWN0aW9uLHtmcm9tOnRydWV9KSxwYXJhbXMuYmxvY2tUYWddXX1jYXNlImVzdGltYXRlR2FzIjp7dmFyIGhleGxpZnlUcmFuc2FjdGlvbj0oMCxsaWIkMy5nZXRTdGF0aWMpKHRoaXMuY29uc3RydWN0b3IsImhleGxpZnlUcmFuc2FjdGlvbiIpO3JldHVyblsiZXRoX2VzdGltYXRlR2FzIixbaGV4bGlmeVRyYW5zYWN0aW9uKHBhcmFtcy50cmFuc2FjdGlvbix7ZnJvbTp0cnVlfSldXX1jYXNlImdldExvZ3MiOmlmKHBhcmFtcy5maWx0ZXImJnBhcmFtcy5maWx0ZXIuYWRkcmVzcyE9bnVsbCl7cGFyYW1zLmZpbHRlci5hZGRyZXNzPWdldExvd2VyQ2FzZShwYXJhbXMuZmlsdGVyLmFkZHJlc3MpfXJldHVyblsiZXRoX2dldExvZ3MiLFtwYXJhbXMuZmlsdGVyXV07ZGVmYXVsdDpicmVha31yZXR1cm4gbnVsbH07SnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5wZXJmb3JtPWZ1bmN0aW9uKG1ldGhvZCxwYXJhbXMpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHR4LGZlZURhdGEsYXJncyxlcnJvcl83O3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDppZighKG1ldGhvZD09PSJjYWxsInx8bWV0aG9kPT09ImVzdGltYXRlR2FzIikpcmV0dXJuWzMsMl07dHg9cGFyYW1zLnRyYW5zYWN0aW9uO2lmKCEodHgmJnR4LnR5cGUhPW51bGwmJmxpYiQyLkJpZ051bWJlci5mcm9tKHR4LnR5cGUpLmlzWmVybygpKSlyZXR1cm5bMywyXTtpZighKHR4Lm1heEZlZVBlckdhcz09bnVsbCYmdHgubWF4UHJpb3JpdHlGZWVQZXJHYXM9PW51bGwpKXJldHVyblszLDJdO3JldHVybls0LHRoaXMuZ2V0RmVlRGF0YSgpXTtjYXNlIDE6ZmVlRGF0YT1fYS5zZW50KCk7aWYoZmVlRGF0YS5tYXhGZWVQZXJHYXM9PW51bGwmJmZlZURhdGEubWF4UHJpb3JpdHlGZWVQZXJHYXM9PW51bGwpe3BhcmFtcz0oMCxsaWIkMy5zaGFsbG93Q29weSkocGFyYW1zKTtwYXJhbXMudHJhbnNhY3Rpb249KDAsbGliJDMuc2hhbGxvd0NvcHkpKHR4KTtkZWxldGUgcGFyYW1zLnRyYW5zYWN0aW9uLnR5cGV9X2EubGFiZWw9MjtjYXNlIDI6YXJncz10aGlzLnByZXBhcmVSZXF1ZXN0KG1ldGhvZCxwYXJhbXMpO2lmKGFyZ3M9PW51bGwpe2xvZ2dlci50aHJvd0Vycm9yKG1ldGhvZCsiIG5vdCBpbXBsZW1lbnRlZCIsbGliLkxvZ2dlci5lcnJvcnMuTk9UX0lNUExFTUVOVEVELHtvcGVyYXRpb246bWV0aG9kfSl9X2EubGFiZWw9MztjYXNlIDM6X2EudHJ5cy5wdXNoKFszLDUsLDZdKTtyZXR1cm5bNCx0aGlzLnNlbmQoYXJnc1swXSxhcmdzWzFdKV07Y2FzZSA0OnJldHVyblsyLF9hLnNlbnQoKV07Y2FzZSA1OmVycm9yXzc9X2Euc2VudCgpO3JldHVyblsyLGNoZWNrRXJyb3IobWV0aG9kLGVycm9yXzcscGFyYW1zKV07Y2FzZSA2OnJldHVyblsyXX19KX0pfTtKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLl9zdGFydEV2ZW50PWZ1bmN0aW9uKGV2ZW50KXtpZihldmVudC50YWc9PT0icGVuZGluZyIpe3RoaXMuX3N0YXJ0UGVuZGluZygpfV9zdXBlci5wcm90b3R5cGUuX3N0YXJ0RXZlbnQuY2FsbCh0aGlzLGV2ZW50KX07SnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5fc3RhcnRQZW5kaW5nPWZ1bmN0aW9uKCl7aWYodGhpcy5fcGVuZGluZ0ZpbHRlciE9bnVsbCl7cmV0dXJufXZhciBzZWxmPXRoaXM7dmFyIHBlbmRpbmdGaWx0ZXI9dGhpcy5zZW5kKCJldGhfbmV3UGVuZGluZ1RyYW5zYWN0aW9uRmlsdGVyIixbXSk7dGhpcy5fcGVuZGluZ0ZpbHRlcj1wZW5kaW5nRmlsdGVyO3BlbmRpbmdGaWx0ZXIudGhlbihmdW5jdGlvbihmaWx0ZXJJZCl7ZnVuY3Rpb24gcG9sbCgpe3NlbGYuc2VuZCgiZXRoX2dldEZpbHRlckNoYW5nZXMiLFtmaWx0ZXJJZF0pLnRoZW4oZnVuY3Rpb24oaGFzaGVzKXtpZihzZWxmLl9wZW5kaW5nRmlsdGVyIT1wZW5kaW5nRmlsdGVyKXtyZXR1cm4gbnVsbH12YXIgc2VxPVByb21pc2UucmVzb2x2ZSgpO2hhc2hlcy5mb3JFYWNoKGZ1bmN0aW9uKGhhc2gpe3NlbGYuX2VtaXR0ZWRbInQ6IitoYXNoLnRvTG93ZXJDYXNlKCldPSJwZW5kaW5nIjtzZXE9c2VxLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gc2VsZi5nZXRUcmFuc2FjdGlvbihoYXNoKS50aGVuKGZ1bmN0aW9uKHR4KXtzZWxmLmVtaXQoInBlbmRpbmciLHR4KTtyZXR1cm4gbnVsbH0pfSl9KTtyZXR1cm4gc2VxLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdGltZXIoMWUzKX0pfSkudGhlbihmdW5jdGlvbigpe2lmKHNlbGYuX3BlbmRpbmdGaWx0ZXIhPXBlbmRpbmdGaWx0ZXIpe3NlbGYuc2VuZCgiZXRoX3VuaW5zdGFsbEZpbHRlciIsW2ZpbHRlcklkXSk7cmV0dXJufXNldFRpbWVvdXQoZnVuY3Rpb24oKXtwb2xsKCl9LDApO3JldHVybiBudWxsfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3Ipe30pfXBvbGwoKTtyZXR1cm4gZmlsdGVySWR9KS5jYXRjaChmdW5jdGlvbihlcnJvcil7fSl9O0pzb25ScGNQcm92aWRlci5wcm90b3R5cGUuX3N0b3BFdmVudD1mdW5jdGlvbihldmVudCl7aWYoZXZlbnQudGFnPT09InBlbmRpbmciJiZ0aGlzLmxpc3RlbmVyQ291bnQoInBlbmRpbmciKT09PTApe3RoaXMuX3BlbmRpbmdGaWx0ZXI9bnVsbH1fc3VwZXIucHJvdG90eXBlLl9zdG9wRXZlbnQuY2FsbCh0aGlzLGV2ZW50KX07SnNvblJwY1Byb3ZpZGVyLmhleGxpZnlUcmFuc2FjdGlvbj1mdW5jdGlvbih0cmFuc2FjdGlvbixhbGxvd0V4dHJhKXt2YXIgYWxsb3dlZD0oMCxsaWIkMy5zaGFsbG93Q29weSkoYWxsb3dlZFRyYW5zYWN0aW9uS2V5cyk7aWYoYWxsb3dFeHRyYSl7Zm9yKHZhciBrZXkgaW4gYWxsb3dFeHRyYSl7aWYoYWxsb3dFeHRyYVtrZXldKXthbGxvd2VkW2tleV09dHJ1ZX19fSgwLGxpYiQzLmNoZWNrUHJvcGVydGllcykodHJhbnNhY3Rpb24sYWxsb3dlZCk7dmFyIHJlc3VsdD17fTtbImNoYWluSWQiLCJnYXNMaW1pdCIsImdhc1ByaWNlIiwidHlwZSIsIm1heEZlZVBlckdhcyIsIm1heFByaW9yaXR5RmVlUGVyR2FzIiwibm9uY2UiLCJ2YWx1ZSJdLmZvckVhY2goZnVuY3Rpb24oa2V5KXtpZih0cmFuc2FjdGlvbltrZXldPT1udWxsKXtyZXR1cm59dmFyIHZhbHVlPSgwLGxpYiQxLmhleFZhbHVlKShsaWIkMi5CaWdOdW1iZXIuZnJvbSh0cmFuc2FjdGlvbltrZXldKSk7aWYoa2V5PT09Imdhc0xpbWl0Iil7a2V5PSJnYXMifXJlc3VsdFtrZXldPXZhbHVlfSk7WyJmcm9tIiwidG8iLCJkYXRhIl0uZm9yRWFjaChmdW5jdGlvbihrZXkpe2lmKHRyYW5zYWN0aW9uW2tleV09PW51bGwpe3JldHVybn1yZXN1bHRba2V5XT0oMCxsaWIkMS5oZXhsaWZ5KSh0cmFuc2FjdGlvbltrZXldKX0pO2lmKHRyYW5zYWN0aW9uLmFjY2Vzc0xpc3Qpe3Jlc3VsdFsiYWNjZXNzTGlzdCJdPSgwLGxpYiRoLmFjY2Vzc0xpc3RpZnkpKHRyYW5zYWN0aW9uLmFjY2Vzc0xpc3QpfXJldHVybiByZXN1bHR9O3JldHVybiBKc29uUnBjUHJvdmlkZXJ9KGJhc2VQcm92aWRlci5CYXNlUHJvdmlkZXIpO2V4cG9ydHMuSnNvblJwY1Byb3ZpZGVyPUpzb25ScGNQcm92aWRlcn0pO3ZhciBqc29uUnBjUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhqc29uUnBjUHJvdmlkZXIpO3ZhciBicm93c2VyV3M9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLldlYlNvY2tldD12b2lkIDA7dmFyIFdTPW51bGw7ZXhwb3J0cy5XZWJTb2NrZXQ9V1M7dHJ5e2V4cG9ydHMuV2ViU29ja2V0PVdTPVdlYlNvY2tldDtpZihXUz09bnVsbCl7dGhyb3cgbmV3IEVycm9yKCJpbmplY3QgcGxlYXNlIil9fWNhdGNoKGVycm9yKXt2YXIgbG9nZ2VyXzI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kSS52ZXJzaW9uKTtleHBvcnRzLldlYlNvY2tldD1XUz1mdW5jdGlvbigpe2xvZ2dlcl8yLnRocm93RXJyb3IoIldlYlNvY2tldHMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGVudmlyb25tZW50IixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoibmV3IFdlYlNvY2tldCgpIn0pfX19KTt2YXIgYnJvd3NlcldzJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYnJvd3NlcldzKTt2YXIgd2Vic29ja2V0UHJvdmlkZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7dmFyIF9fYXdhaXRlcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19hd2FpdGVyfHxmdW5jdGlvbih0aGlzQXJnLF9hcmd1bWVudHMsUCxnZW5lcmF0b3Ipe2Z1bmN0aW9uIGFkb3B0KHZhbHVlKXtyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQP3ZhbHVlOm5ldyBQKGZ1bmN0aW9uKHJlc29sdmUpe3Jlc29sdmUodmFsdWUpfSl9cmV0dXJuIG5ldyhQfHwoUD1Qcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2Z1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHN0ZXAocmVzdWx0KXtyZXN1bHQuZG9uZT9yZXNvbHZlKHJlc3VsdC52YWx1ZSk6YWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCl9c3RlcCgoZ2VuZXJhdG9yPWdlbmVyYXRvci5hcHBseSh0aGlzQXJnLF9hcmd1bWVudHN8fFtdKSkubmV4dCgpKX0pfTt2YXIgX19nZW5lcmF0b3I9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0aGlzQXJnLGJvZHkpe3ZhciBfPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZih0WzBdJjEpdGhyb3cgdFsxXTtyZXR1cm4gdFsxXX0sdHJ5czpbXSxvcHM6W119LGYseSx0LGc7cmV0dXJuIGc9e25leHQ6dmVyYigwKSx0aHJvdzp2ZXJiKDEpLHJldHVybjp2ZXJiKDIpfSx0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmKGdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZztmdW5jdGlvbiB2ZXJiKG4pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gc3RlcChbbix2XSl9fWZ1bmN0aW9uIHN0ZXAob3Ape2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO3doaWxlKF8pdHJ5e2lmKGY9MSx5JiYodD1vcFswXSYyP3lbInJldHVybiJdOm9wWzBdP3lbInRocm93Il18fCgodD15WyJyZXR1cm4iXSkmJnQuY2FsbCh5KSwwKTp5Lm5leHQpJiYhKHQ9dC5jYWxsKHksb3BbMV0pKS5kb25lKXJldHVybiB0O2lmKHk9MCx0KW9wPVtvcFswXSYyLHQudmFsdWVdO3N3aXRjaChvcFswXSl7Y2FzZSAwOmNhc2UgMTp0PW9wO2JyZWFrO2Nhc2UgNDpfLmxhYmVsKys7cmV0dXJue3ZhbHVlOm9wWzFdLGRvbmU6ZmFsc2V9O2Nhc2UgNTpfLmxhYmVsKys7eT1vcFsxXTtvcD1bMF07Y29udGludWU7Y2FzZSA3Om9wPV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEodD1fLnRyeXMsdD10Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdKSYmKG9wWzBdPT09Nnx8b3BbMF09PT0yKSl7Xz0wO2NvbnRpbnVlfWlmKG9wWzBdPT09MyYmKCF0fHxvcFsxXT50WzBdJiZvcFsxXTx0WzNdKSl7Xy5sYWJlbD1vcFsxXTticmVha31pZihvcFswXT09PTYmJl8ubGFiZWw8dFsxXSl7Xy5sYWJlbD10WzFdO3Q9b3A7YnJlYWt9aWYodCYmXy5sYWJlbDx0WzJdKXtfLmxhYmVsPXRbMl07Xy5vcHMucHVzaChvcCk7YnJlYWt9aWYodFsyXSlfLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWV9b3A9Ym9keS5jYWxsKHRoaXNBcmcsXyl9Y2F0Y2goZSl7b3A9WzYsZV07eT0wfWZpbmFsbHl7Zj10PTB9aWYob3BbMF0mNSl0aHJvdyBvcFsxXTtyZXR1cm57dmFsdWU6b3BbMF0/b3BbMV06dm9pZCAwLGRvbmU6dHJ1ZX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLldlYlNvY2tldFByb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIE5leHRJZD0xO3ZhciBXZWJTb2NrZXRQcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhXZWJTb2NrZXRQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIFdlYlNvY2tldFByb3ZpZGVyKHVybCxuZXR3b3JrKXt2YXIgX3RoaXM9dGhpcztpZihuZXR3b3JrPT09ImFueSIpe2xvZ2dlci50aHJvd0Vycm9yKCJXZWJTb2NrZXRQcm92aWRlciBkb2VzIG5vdCBzdXBwb3J0ICdhbnknIG5ldHdvcmsgeWV0IixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoibmV0d29yazphbnkifSl9aWYodHlwZW9mIHVybD09PSJzdHJpbmciKXtfdGhpcz1fc3VwZXIuY2FsbCh0aGlzLHVybCxuZXR3b3JrKXx8dGhpc31lbHNle190aGlzPV9zdXBlci5jYWxsKHRoaXMsIl93ZWJzb2NrZXQiLG5ldHdvcmspfHx0aGlzfV90aGlzLl9wb2xsaW5nSW50ZXJ2YWw9LTE7X3RoaXMuX3dzUmVhZHk9ZmFsc2U7aWYodHlwZW9mIHVybD09PSJzdHJpbmciKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsIl93ZWJzb2NrZXQiLG5ldyBicm93c2VyV3MuV2ViU29ja2V0KF90aGlzLmNvbm5lY3Rpb24udXJsKSl9ZWxzZXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsIl93ZWJzb2NrZXQiLHVybCl9KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJfcmVxdWVzdHMiLHt9KTsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsIl9zdWJzIix7fSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJfc3ViSWRzIix7fSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJfZGV0ZWN0TmV0d29yayIsX3N1cGVyLnByb3RvdHlwZS5kZXRlY3ROZXR3b3JrLmNhbGwoX3RoaXMpKTtfdGhpcy53ZWJzb2NrZXQub25vcGVuPWZ1bmN0aW9uKCl7X3RoaXMuX3dzUmVhZHk9dHJ1ZTtPYmplY3Qua2V5cyhfdGhpcy5fcmVxdWVzdHMpLmZvckVhY2goZnVuY3Rpb24oaWQpe190aGlzLndlYnNvY2tldC5zZW5kKF90aGlzLl9yZXF1ZXN0c1tpZF0ucGF5bG9hZCl9KX07X3RoaXMud2Vic29ja2V0Lm9ubWVzc2FnZT1mdW5jdGlvbihtZXNzYWdlRXZlbnQpe3ZhciBkYXRhPW1lc3NhZ2VFdmVudC5kYXRhO3ZhciByZXN1bHQ9SlNPTi5wYXJzZShkYXRhKTtpZihyZXN1bHQuaWQhPW51bGwpe3ZhciBpZD1TdHJpbmcocmVzdWx0LmlkKTt2YXIgcmVxdWVzdD1fdGhpcy5fcmVxdWVzdHNbaWRdO2RlbGV0ZSBfdGhpcy5fcmVxdWVzdHNbaWRdO2lmKHJlc3VsdC5yZXN1bHQhPT11bmRlZmluZWQpe3JlcXVlc3QuY2FsbGJhY2sobnVsbCxyZXN1bHQucmVzdWx0KTtfdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVzcG9uc2UiLHJlcXVlc3Q6SlNPTi5wYXJzZShyZXF1ZXN0LnBheWxvYWQpLHJlc3BvbnNlOnJlc3VsdC5yZXN1bHQscHJvdmlkZXI6X3RoaXN9KX1lbHNle3ZhciBlcnJvcj1udWxsO2lmKHJlc3VsdC5lcnJvcil7ZXJyb3I9bmV3IEVycm9yKHJlc3VsdC5lcnJvci5tZXNzYWdlfHwidW5rbm93biBlcnJvciIpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShlcnJvciwiY29kZSIscmVzdWx0LmVycm9yLmNvZGV8fG51bGwpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShlcnJvciwicmVzcG9uc2UiLGRhdGEpfWVsc2V7ZXJyb3I9bmV3IEVycm9yKCJ1bmtub3duIGVycm9yIil9cmVxdWVzdC5jYWxsYmFjayhlcnJvcix1bmRlZmluZWQpO190aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXNwb25zZSIsZXJyb3I6ZXJyb3IscmVxdWVzdDpKU09OLnBhcnNlKHJlcXVlc3QucGF5bG9hZCkscHJvdmlkZXI6X3RoaXN9KX19ZWxzZSBpZihyZXN1bHQubWV0aG9kPT09ImV0aF9zdWJzY3JpcHRpb24iKXt2YXIgc3ViPV90aGlzLl9zdWJzW3Jlc3VsdC5wYXJhbXMuc3Vic2NyaXB0aW9uXTtpZihzdWIpe3N1Yi5wcm9jZXNzRnVuYyhyZXN1bHQucGFyYW1zLnJlc3VsdCl9fWVsc2V7Y29uc29sZS53YXJuKCJ0aGlzIHNob3VsZCBub3QgaGFwcGVuIil9fTt2YXIgZmF1eFBvbGw9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtfdGhpcy5lbWl0KCJwb2xsIil9LDFlMyk7aWYoZmF1eFBvbGwudW5yZWYpe2ZhdXhQb2xsLnVucmVmKCl9cmV0dXJuIF90aGlzfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJTb2NrZXRQcm92aWRlci5wcm90b3R5cGUsIndlYnNvY2tldCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93ZWJzb2NrZXR9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtXZWJTb2NrZXRQcm92aWRlci5wcm90b3R5cGUuZGV0ZWN0TmV0d29yaz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXRlY3ROZXR3b3JrfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViU29ja2V0UHJvdmlkZXIucHJvdG90eXBlLCJwb2xsaW5nSW50ZXJ2YWwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sc2V0OmZ1bmN0aW9uKHZhbHVlKXtsb2dnZXIudGhyb3dFcnJvcigiY2Fubm90IHNldCBwb2xsaW5nIGludGVydmFsIG9uIFdlYlNvY2tldFByb3ZpZGVyIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoic2V0UG9sbGluZ0ludGVydmFsIn0pfSxlbnVtZXJhYmxlOmZhbHNlLGNvbmZpZ3VyYWJsZTp0cnVlfSk7V2ViU29ja2V0UHJvdmlkZXIucHJvdG90eXBlLnJlc2V0RXZlbnRzQmxvY2s9ZnVuY3Rpb24oYmxvY2tOdW1iZXIpe2xvZ2dlci50aHJvd0Vycm9yKCJjYW5ub3QgcmVzZXQgZXZlbnRzIGJsb2NrIG9uIFdlYlNvY2tldFByb3ZpZGVyIixsaWIuTG9nZ2VyLmVycm9ycy5VTlNVUFBPUlRFRF9PUEVSQVRJT04se29wZXJhdGlvbjoicmVzZXRFdmVudEJsb2NrIn0pfTtXZWJTb2NrZXRQcm92aWRlci5wcm90b3R5cGUucG9sbD1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3JldHVyblsyLG51bGxdfSl9KX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlNvY2tldFByb3ZpZGVyLnByb3RvdHlwZSwicG9sbGluZyIse3NldDpmdW5jdGlvbih2YWx1ZSl7aWYoIXZhbHVlKXtyZXR1cm59bG9nZ2VyLnRocm93RXJyb3IoImNhbm5vdCBzZXQgcG9sbGluZyBvbiBXZWJTb2NrZXRQcm92aWRlciIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246InNldFBvbGxpbmcifSl9LGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtXZWJTb2NrZXRQcm92aWRlci5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbihtZXRob2QscGFyYW1zKXt2YXIgX3RoaXM9dGhpczt2YXIgcmlkPU5leHRJZCsrO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IscmVzdWx0KXtpZihlcnJvcil7cmV0dXJuIHJlamVjdChlcnJvcil9cmV0dXJuIHJlc29sdmUocmVzdWx0KX12YXIgcGF5bG9hZD1KU09OLnN0cmluZ2lmeSh7bWV0aG9kOm1ldGhvZCxwYXJhbXM6cGFyYW1zLGlkOnJpZCxqc29ucnBjOiIyLjAifSk7X3RoaXMuZW1pdCgiZGVidWciLHthY3Rpb246InJlcXVlc3QiLHJlcXVlc3Q6SlNPTi5wYXJzZShwYXlsb2FkKSxwcm92aWRlcjpfdGhpc30pO190aGlzLl9yZXF1ZXN0c1tTdHJpbmcocmlkKV09e2NhbGxiYWNrOmNhbGxiYWNrLHBheWxvYWQ6cGF5bG9hZH07aWYoX3RoaXMuX3dzUmVhZHkpe190aGlzLndlYnNvY2tldC5zZW5kKHBheWxvYWQpfX0pfTtXZWJTb2NrZXRQcm92aWRlci5kZWZhdWx0VXJsPWZ1bmN0aW9uKCl7cmV0dXJuIndzOi8vbG9jYWxob3N0Ojg1NDYifTtXZWJTb2NrZXRQcm92aWRlci5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0YWcscGFyYW0scHJvY2Vzc0Z1bmMpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHN1YklkUHJvbWlzZSxzdWJJZDt2YXIgX3RoaXM9dGhpcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6c3ViSWRQcm9taXNlPXRoaXMuX3N1Yklkc1t0YWddO2lmKHN1YklkUHJvbWlzZT09bnVsbCl7c3ViSWRQcm9taXNlPVByb21pc2UuYWxsKHBhcmFtKS50aGVuKGZ1bmN0aW9uKHBhcmFtKXtyZXR1cm4gX3RoaXMuc2VuZCgiZXRoX3N1YnNjcmliZSIscGFyYW0pfSk7dGhpcy5fc3ViSWRzW3RhZ109c3ViSWRQcm9taXNlfXJldHVybls0LHN1YklkUHJvbWlzZV07Y2FzZSAxOnN1YklkPV9hLnNlbnQoKTt0aGlzLl9zdWJzW3N1YklkXT17dGFnOnRhZyxwcm9jZXNzRnVuYzpwcm9jZXNzRnVuY307cmV0dXJuWzJdfX0pfSl9O1dlYlNvY2tldFByb3ZpZGVyLnByb3RvdHlwZS5fc3RhcnRFdmVudD1mdW5jdGlvbihldmVudCl7dmFyIF90aGlzPXRoaXM7c3dpdGNoKGV2ZW50LnR5cGUpe2Nhc2UiYmxvY2siOnRoaXMuX3N1YnNjcmliZSgiYmxvY2siLFsibmV3SGVhZHMiXSxmdW5jdGlvbihyZXN1bHQpe3ZhciBibG9ja051bWJlcj1saWIkMi5CaWdOdW1iZXIuZnJvbShyZXN1bHQubnVtYmVyKS50b051bWJlcigpO190aGlzLl9lbWl0dGVkLmJsb2NrPWJsb2NrTnVtYmVyO190aGlzLmVtaXQoImJsb2NrIixibG9ja051bWJlcil9KTticmVhaztjYXNlInBlbmRpbmciOnRoaXMuX3N1YnNjcmliZSgicGVuZGluZyIsWyJuZXdQZW5kaW5nVHJhbnNhY3Rpb25zIl0sZnVuY3Rpb24ocmVzdWx0KXtfdGhpcy5lbWl0KCJwZW5kaW5nIixyZXN1bHQpfSk7YnJlYWs7Y2FzZSJmaWx0ZXIiOnRoaXMuX3N1YnNjcmliZShldmVudC50YWcsWyJsb2dzIix0aGlzLl9nZXRGaWx0ZXIoZXZlbnQuZmlsdGVyKV0sZnVuY3Rpb24ocmVzdWx0KXtpZihyZXN1bHQucmVtb3ZlZD09bnVsbCl7cmVzdWx0LnJlbW92ZWQ9ZmFsc2V9X3RoaXMuZW1pdChldmVudC5maWx0ZXIsX3RoaXMuZm9ybWF0dGVyLmZpbHRlckxvZyhyZXN1bHQpKX0pO2JyZWFrO2Nhc2UidHgiOnt2YXIgZW1pdFJlY2VpcHRfMT1mdW5jdGlvbihldmVudCl7dmFyIGhhc2g9ZXZlbnQuaGFzaDtfdGhpcy5nZXRUcmFuc2FjdGlvblJlY2VpcHQoaGFzaCkudGhlbihmdW5jdGlvbihyZWNlaXB0KXtpZighcmVjZWlwdCl7cmV0dXJufV90aGlzLmVtaXQoaGFzaCxyZWNlaXB0KX0pfTtlbWl0UmVjZWlwdF8xKGV2ZW50KTt0aGlzLl9zdWJzY3JpYmUoInR4IixbIm5ld0hlYWRzIl0sZnVuY3Rpb24ocmVzdWx0KXtfdGhpcy5fZXZlbnRzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlPT09InR4In0pLmZvckVhY2goZW1pdFJlY2VpcHRfMSl9KTticmVha31jYXNlImRlYnVnIjpjYXNlInBvbGwiOmNhc2Uid2lsbFBvbGwiOmNhc2UiZGlkUG9sbCI6Y2FzZSJlcnJvciI6YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmxvZygidW5oYW5kbGVkOiIsZXZlbnQpO2JyZWFrfX07V2ViU29ja2V0UHJvdmlkZXIucHJvdG90eXBlLl9zdG9wRXZlbnQ9ZnVuY3Rpb24oZXZlbnQpe3ZhciBfdGhpcz10aGlzO3ZhciB0YWc9ZXZlbnQudGFnO2lmKGV2ZW50LnR5cGU9PT0idHgiKXtpZih0aGlzLl9ldmVudHMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PT0idHgifSkubGVuZ3RoKXtyZXR1cm59dGFnPSJ0eCJ9ZWxzZSBpZih0aGlzLmxpc3RlbmVyQ291bnQoZXZlbnQuZXZlbnQpKXtyZXR1cm59dmFyIHN1YklkPXRoaXMuX3N1Yklkc1t0YWddO2lmKCFzdWJJZCl7cmV0dXJufWRlbGV0ZSB0aGlzLl9zdWJJZHNbdGFnXTtzdWJJZC50aGVuKGZ1bmN0aW9uKHN1YklkKXtpZighX3RoaXMuX3N1YnNbc3ViSWRdKXtyZXR1cm59ZGVsZXRlIF90aGlzLl9zdWJzW3N1YklkXTtfdGhpcy5zZW5kKCJldGhfdW5zdWJzY3JpYmUiLFtzdWJJZF0pfSl9O1dlYlNvY2tldFByb3ZpZGVyLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgX3RoaXM9dGhpcztyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYSl7c3dpdGNoKF9hLmxhYmVsKXtjYXNlIDA6aWYoISh0aGlzLndlYnNvY2tldC5yZWFkeVN0YXRlPT09YnJvd3NlcldzLldlYlNvY2tldC5DT05ORUNUSU5HKSlyZXR1cm5bMywyXTtyZXR1cm5bNCxuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKXtfdGhpcy53ZWJzb2NrZXQub25vcGVuPWZ1bmN0aW9uKCl7cmVzb2x2ZSh0cnVlKX07X3RoaXMud2Vic29ja2V0Lm9uZXJyb3I9ZnVuY3Rpb24oKXtyZXNvbHZlKGZhbHNlKX19KV07Y2FzZSAxOl9hLnNlbnQoKTtfYS5sYWJlbD0yO2Nhc2UgMjp0aGlzLndlYnNvY2tldC5jbG9zZSgxZTMpO3JldHVyblsyXX19KX0pfTtyZXR1cm4gV2ViU29ja2V0UHJvdmlkZXJ9KGpzb25ScGNQcm92aWRlci5Kc29uUnBjUHJvdmlkZXIpO2V4cG9ydHMuV2ViU29ja2V0UHJvdmlkZXI9V2ViU29ja2V0UHJvdmlkZXJ9KTt2YXIgd2Vic29ja2V0UHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyh3ZWJzb2NrZXRQcm92aWRlcik7dmFyIHVybEpzb25ScGNQcm92aWRlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTt2YXIgX19hd2FpdGVyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHRoaXNBcmcsX2FyZ3VtZW50cyxQLGdlbmVyYXRvcil7ZnVuY3Rpb24gYWRvcHQodmFsdWUpe3JldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFA/dmFsdWU6bmV3IFAoZnVuY3Rpb24ocmVzb2x2ZSl7cmVzb2x2ZSh2YWx1ZSl9KX1yZXR1cm4gbmV3KFB8fChQPVByb21pc2UpKShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7ZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpfWNhdGNoKGUpe3JlamVjdChlKX19ZnVuY3Rpb24gc3RlcChyZXN1bHQpe3Jlc3VsdC5kb25lP3Jlc29sdmUocmVzdWx0LnZhbHVlKTphZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLHJlamVjdGVkKX1zdGVwKChnZW5lcmF0b3I9Z2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsX2FyZ3VtZW50c3x8W10pKS5uZXh0KCkpfSl9O3ZhciBfX2dlbmVyYXRvcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19nZW5lcmF0b3J8fGZ1bmN0aW9uKHRoaXNBcmcsYm9keSl7dmFyIF89e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKHRbMF0mMSl0aHJvdyB0WzFdO3JldHVybiB0WzFdfSx0cnlzOltdLG9wczpbXX0sZix5LHQsZztyZXR1cm4gZz17bmV4dDp2ZXJiKDApLHRocm93OnZlcmIoMSkscmV0dXJuOnZlcmIoMil9LHR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiYoZ1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxnO2Z1bmN0aW9uIHZlcmIobil7cmV0dXJuIGZ1bmN0aW9uKHYpe3JldHVybiBzdGVwKFtuLHZdKX19ZnVuY3Rpb24gc3RlcChvcCl7aWYoZil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7d2hpbGUoXyl0cnl7aWYoZj0xLHkmJih0PW9wWzBdJjI/eVsicmV0dXJuIl06b3BbMF0/eVsidGhyb3ciXXx8KCh0PXlbInJldHVybiJdKSYmdC5jYWxsKHkpLDApOnkubmV4dCkmJiEodD10LmNhbGwoeSxvcFsxXSkpLmRvbmUpcmV0dXJuIHQ7aWYoeT0wLHQpb3A9W29wWzBdJjIsdC52YWx1ZV07c3dpdGNoKG9wWzBdKXtjYXNlIDA6Y2FzZSAxOnQ9b3A7YnJlYWs7Y2FzZSA0Ol8ubGFiZWwrKztyZXR1cm57dmFsdWU6b3BbMV0sZG9uZTpmYWxzZX07Y2FzZSA1Ol8ubGFiZWwrKzt5PW9wWzFdO29wPVswXTtjb250aW51ZTtjYXNlIDc6b3A9Xy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISh0PV8udHJ5cyx0PXQubGVuZ3RoPjAmJnRbdC5sZW5ndGgtMV0pJiYob3BbMF09PT02fHxvcFswXT09PTIpKXtfPTA7Y29udGludWV9aWYob3BbMF09PT0zJiYoIXR8fG9wWzFdPnRbMF0mJm9wWzFdPHRbM10pKXtfLmxhYmVsPW9wWzFdO2JyZWFrfWlmKG9wWzBdPT09NiYmXy5sYWJlbDx0WzFdKXtfLmxhYmVsPXRbMV07dD1vcDticmVha31pZih0JiZfLmxhYmVsPHRbMl0pe18ubGFiZWw9dFsyXTtfLm9wcy5wdXNoKG9wKTticmVha31pZih0WzJdKV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZX1vcD1ib2R5LmNhbGwodGhpc0FyZyxfKX1jYXRjaChlKXtvcD1bNixlXTt5PTB9ZmluYWxseXtmPXQ9MH1pZihvcFswXSY1KXRocm93IG9wWzFdO3JldHVybnt2YWx1ZTpvcFswXT9vcFsxXTp2b2lkIDAsZG9uZTp0cnVlfX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuVXJsSnNvblJwY1Byb3ZpZGVyPWV4cG9ydHMuU3RhdGljSnNvblJwY1Byb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIFN0YXRpY0pzb25ScGNQcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhTdGF0aWNKc29uUnBjUHJvdmlkZXIsX3N1cGVyKTtmdW5jdGlvbiBTdGF0aWNKc29uUnBjUHJvdmlkZXIoKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31TdGF0aWNKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLmRldGVjdE5ldHdvcms9ZnVuY3Rpb24oKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBuZXR3b3JrO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpuZXR3b3JrPXRoaXMubmV0d29yaztpZighKG5ldHdvcms9PW51bGwpKXJldHVyblszLDJdO3JldHVybls0LF9zdXBlci5wcm90b3R5cGUuZGV0ZWN0TmV0d29yay5jYWxsKHRoaXMpXTtjYXNlIDE6bmV0d29yaz1fYS5zZW50KCk7aWYoIW5ldHdvcmspe2xvZ2dlci50aHJvd0Vycm9yKCJubyBuZXR3b3JrIGRldGVjdGVkIixsaWIuTG9nZ2VyLmVycm9ycy5VTktOT1dOX0VSUk9SLHt9KX1pZih0aGlzLl9uZXR3b3JrPT1udWxsKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkodGhpcywiX25ldHdvcmsiLG5ldHdvcmspO3RoaXMuZW1pdCgibmV0d29yayIsbmV0d29yayxudWxsKX1fYS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMixuZXR3b3JrXX19KX0pfTtyZXR1cm4gU3RhdGljSnNvblJwY1Byb3ZpZGVyfShqc29uUnBjUHJvdmlkZXIuSnNvblJwY1Byb3ZpZGVyKTtleHBvcnRzLlN0YXRpY0pzb25ScGNQcm92aWRlcj1TdGF0aWNKc29uUnBjUHJvdmlkZXI7dmFyIFVybEpzb25ScGNQcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhVcmxKc29uUnBjUHJvdmlkZXIsX3N1cGVyKTtmdW5jdGlvbiBVcmxKc29uUnBjUHJvdmlkZXIobmV0d29yayxhcGlLZXkpe3ZhciBfbmV3VGFyZ2V0PXRoaXMuY29uc3RydWN0b3I7dmFyIF90aGlzPXRoaXM7bG9nZ2VyLmNoZWNrQWJzdHJhY3QoX25ld1RhcmdldCxVcmxKc29uUnBjUHJvdmlkZXIpO25ldHdvcms9KDAsbGliJDMuZ2V0U3RhdGljKShfbmV3VGFyZ2V0LCJnZXROZXR3b3JrIikobmV0d29yayk7YXBpS2V5PSgwLGxpYiQzLmdldFN0YXRpYykoX25ld1RhcmdldCwiZ2V0QXBpS2V5IikoYXBpS2V5KTt2YXIgY29ubmVjdGlvbj0oMCxsaWIkMy5nZXRTdGF0aWMpKF9uZXdUYXJnZXQsImdldFVybCIpKG5ldHdvcmssYXBpS2V5KTtfdGhpcz1fc3VwZXIuY2FsbCh0aGlzLGNvbm5lY3Rpb24sbmV0d29yayl8fHRoaXM7aWYodHlwZW9mIGFwaUtleT09PSJzdHJpbmciKXsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsImFwaUtleSIsYXBpS2V5KX1lbHNlIGlmKGFwaUtleSE9bnVsbCl7T2JqZWN0LmtleXMoYXBpS2V5KS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLGtleSxhcGlLZXlba2V5XSl9KX1yZXR1cm4gX3RoaXN9VXJsSnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5fc3RhcnRQZW5kaW5nPWZ1bmN0aW9uKCl7bG9nZ2VyLndhcm4oIldBUk5JTkc6IEFQSSBwcm92aWRlciBkb2VzIG5vdCBzdXBwb3J0IHBlbmRpbmcgZmlsdGVycyIpfTtVcmxKc29uUnBjUHJvdmlkZXIucHJvdG90eXBlLmlzQ29tbXVuaXR5UmVzb3VyY2U9ZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9O1VybEpzb25ScGNQcm92aWRlci5wcm90b3R5cGUuZ2V0U2lnbmVyPWZ1bmN0aW9uKGFkZHJlc3Mpe3JldHVybiBsb2dnZXIudGhyb3dFcnJvcigiQVBJIHByb3ZpZGVyIGRvZXMgbm90IHN1cHBvcnQgc2lnbmluZyIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246ImdldFNpZ25lciJ9KX07VXJsSnNvblJwY1Byb3ZpZGVyLnByb3RvdHlwZS5saXN0QWNjb3VudHM9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKX07VXJsSnNvblJwY1Byb3ZpZGVyLmdldEFwaUtleT1mdW5jdGlvbihhcGlLZXkpe3JldHVybiBhcGlLZXl9O1VybEpzb25ScGNQcm92aWRlci5nZXRVcmw9ZnVuY3Rpb24obmV0d29yayxhcGlLZXkpe3JldHVybiBsb2dnZXIudGhyb3dFcnJvcigibm90IGltcGxlbWVudGVkOyBzdWItY2xhc3NlcyBtdXN0IG92ZXJyaWRlIGdldFVybCIsbGliLkxvZ2dlci5lcnJvcnMuTk9UX0lNUExFTUVOVEVELHtvcGVyYXRpb246ImdldFVybCJ9KX07cmV0dXJuIFVybEpzb25ScGNQcm92aWRlcn0oU3RhdGljSnNvblJwY1Byb3ZpZGVyKTtleHBvcnRzLlVybEpzb25ScGNQcm92aWRlcj1VcmxKc29uUnBjUHJvdmlkZXJ9KTt2YXIgdXJsSnNvblJwY1Byb3ZpZGVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanModXJsSnNvblJwY1Byb3ZpZGVyKTt2YXIgYWxjaGVteVByb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQWxjaGVteVByb3ZpZGVyPWV4cG9ydHMuQWxjaGVteVdlYlNvY2tldFByb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIGRlZmF1bHRBcGlLZXk9Il9nZzd3U1NpMEtNQnNkS25HVmZIRHVlcTZ4TUI5RWtDIjt2YXIgQWxjaGVteVdlYlNvY2tldFByb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEFsY2hlbXlXZWJTb2NrZXRQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIEFsY2hlbXlXZWJTb2NrZXRQcm92aWRlcihuZXR3b3JrLGFwaUtleSl7dmFyIF90aGlzPXRoaXM7dmFyIHByb3ZpZGVyPW5ldyBBbGNoZW15UHJvdmlkZXIobmV0d29yayxhcGlLZXkpO3ZhciB1cmw9cHJvdmlkZXIuY29ubmVjdGlvbi51cmwucmVwbGFjZSgvXmh0dHAvaSwid3MiKS5yZXBsYWNlKCIuYWxjaGVteWFwaS4iLCIud3MuYWxjaGVteWFwaS4iKTtfdGhpcz1fc3VwZXIuY2FsbCh0aGlzLHVybCxwcm92aWRlci5uZXR3b3JrKXx8dGhpczsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsImFwaUtleSIscHJvdmlkZXIuYXBpS2V5KTtyZXR1cm4gX3RoaXN9QWxjaGVteVdlYlNvY2tldFByb3ZpZGVyLnByb3RvdHlwZS5pc0NvbW11bml0eVJlc291cmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBpS2V5PT09ZGVmYXVsdEFwaUtleX07cmV0dXJuIEFsY2hlbXlXZWJTb2NrZXRQcm92aWRlcn0od2Vic29ja2V0UHJvdmlkZXIuV2ViU29ja2V0UHJvdmlkZXIpO2V4cG9ydHMuQWxjaGVteVdlYlNvY2tldFByb3ZpZGVyPUFsY2hlbXlXZWJTb2NrZXRQcm92aWRlcjt2YXIgQWxjaGVteVByb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEFsY2hlbXlQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIEFsY2hlbXlQcm92aWRlcigpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUFsY2hlbXlQcm92aWRlci5nZXRXZWJTb2NrZXRQcm92aWRlcj1mdW5jdGlvbihuZXR3b3JrLGFwaUtleSl7cmV0dXJuIG5ldyBBbGNoZW15V2ViU29ja2V0UHJvdmlkZXIobmV0d29yayxhcGlLZXkpfTtBbGNoZW15UHJvdmlkZXIuZ2V0QXBpS2V5PWZ1bmN0aW9uKGFwaUtleSl7aWYoYXBpS2V5PT1udWxsKXtyZXR1cm4gZGVmYXVsdEFwaUtleX1pZihhcGlLZXkmJnR5cGVvZiBhcGlLZXkhPT0ic3RyaW5nIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBhcGlLZXkiLCJhcGlLZXkiLGFwaUtleSl9cmV0dXJuIGFwaUtleX07QWxjaGVteVByb3ZpZGVyLmdldFVybD1mdW5jdGlvbihuZXR3b3JrLGFwaUtleSl7dmFyIGhvc3Q9bnVsbDtzd2l0Y2gobmV0d29yay5uYW1lKXtjYXNlImhvbWVzdGVhZCI6aG9zdD0iZXRoLW1haW5uZXQuYWxjaGVteWFwaS5pby92Mi8iO2JyZWFrO2Nhc2UiZ29lcmxpIjpob3N0PSJldGgtZ29lcmxpLmcuYWxjaGVteS5jb20vdjIvIjticmVhaztjYXNlIm1hdGljIjpob3N0PSJwb2x5Z29uLW1haW5uZXQuZy5hbGNoZW15LmNvbS92Mi8iO2JyZWFrO2Nhc2UibWF0aWNtdW0iOmhvc3Q9InBvbHlnb24tbXVtYmFpLmcuYWxjaGVteS5jb20vdjIvIjticmVhaztjYXNlImFyYml0cnVtIjpob3N0PSJhcmItbWFpbm5ldC5nLmFsY2hlbXkuY29tL3YyLyI7YnJlYWs7Y2FzZSJhcmJpdHJ1bS1nb2VybGkiOmhvc3Q9ImFyYi1nb2VybGkuZy5hbGNoZW15LmNvbS92Mi8iO2JyZWFrO2Nhc2Uib3B0aW1pc20iOmhvc3Q9Im9wdC1tYWlubmV0LmcuYWxjaGVteS5jb20vdjIvIjticmVhaztjYXNlIm9wdGltaXNtLWdvZXJsaSI6aG9zdD0ib3B0LWdvZXJsaS5nLmFsY2hlbXkuY29tL3YyLyI7YnJlYWs7ZGVmYXVsdDpsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bnN1cHBvcnRlZCBuZXR3b3JrIiwibmV0d29yayIsYXJndW1lbnRzWzBdKX1yZXR1cm57YWxsb3dHemlwOnRydWUsdXJsOiJodHRwczovIisiLyIraG9zdCthcGlLZXksdGhyb3R0bGVDYWxsYmFjazpmdW5jdGlvbihhdHRlbXB0LHVybCl7aWYoYXBpS2V5PT09ZGVmYXVsdEFwaUtleSl7KDAsZm9ybWF0dGVyLnNob3dUaHJvdHRsZU1lc3NhZ2UpKCl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKX19fTtBbGNoZW15UHJvdmlkZXIucHJvdG90eXBlLmlzQ29tbXVuaXR5UmVzb3VyY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcGlLZXk9PT1kZWZhdWx0QXBpS2V5fTtyZXR1cm4gQWxjaGVteVByb3ZpZGVyfSh1cmxKc29uUnBjUHJvdmlkZXIuVXJsSnNvblJwY1Byb3ZpZGVyKTtleHBvcnRzLkFsY2hlbXlQcm92aWRlcj1BbGNoZW15UHJvdmlkZXJ9KTt2YXIgYWxjaGVteVByb3ZpZGVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoYWxjaGVteVByb3ZpZGVyKTt2YXIgYW5rclByb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuQW5rclByb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIGRlZmF1bHRBcGlLZXk9IjlmN2Q5MjliMDE4Y2RmZmIzMzg1MTdlZmEwNmY1ODM1OWU4NmZmMWZmZDM1MGJjODg5NzM4NTIzNjU5ZTc5NzIiO2Z1bmN0aW9uIGdldEhvc3QobmFtZSl7c3dpdGNoKG5hbWUpe2Nhc2UiaG9tZXN0ZWFkIjpyZXR1cm4icnBjLmFua3IuY29tL2V0aC8iO2Nhc2Uicm9wc3RlbiI6cmV0dXJuInJwYy5hbmtyLmNvbS9ldGhfcm9wc3Rlbi8iO2Nhc2Uicmlua2VieSI6cmV0dXJuInJwYy5hbmtyLmNvbS9ldGhfcmlua2VieS8iO2Nhc2UiZ29lcmxpIjpyZXR1cm4icnBjLmFua3IuY29tL2V0aF9nb2VybGkvIjtjYXNlIm1hdGljIjpyZXR1cm4icnBjLmFua3IuY29tL3BvbHlnb24vIjtjYXNlImFyYml0cnVtIjpyZXR1cm4icnBjLmFua3IuY29tL2FyYml0cnVtLyJ9cmV0dXJuIGxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVuc3VwcG9ydGVkIG5ldHdvcmsiLCJuYW1lIixuYW1lKX12YXIgQW5rclByb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKEFua3JQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIEFua3JQcm92aWRlcigpe3JldHVybiBfc3VwZXIhPT1udWxsJiZfc3VwZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUFua3JQcm92aWRlci5wcm90b3R5cGUuaXNDb21tdW5pdHlSZXNvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFwaUtleT09PWRlZmF1bHRBcGlLZXl9O0Fua3JQcm92aWRlci5nZXRBcGlLZXk9ZnVuY3Rpb24oYXBpS2V5KXtpZihhcGlLZXk9PW51bGwpe3JldHVybiBkZWZhdWx0QXBpS2V5fXJldHVybiBhcGlLZXl9O0Fua3JQcm92aWRlci5nZXRVcmw9ZnVuY3Rpb24obmV0d29yayxhcGlLZXkpe2lmKGFwaUtleT09bnVsbCl7YXBpS2V5PWRlZmF1bHRBcGlLZXl9dmFyIGNvbm5lY3Rpb249e2FsbG93R3ppcDp0cnVlLHVybDoiaHR0cHM6Ly8iK2dldEhvc3QobmV0d29yay5uYW1lKSthcGlLZXksdGhyb3R0bGVDYWxsYmFjazpmdW5jdGlvbihhdHRlbXB0LHVybCl7aWYoYXBpS2V5LmFwaUtleT09PWRlZmF1bHRBcGlLZXkpeygwLGZvcm1hdHRlci5zaG93VGhyb3R0bGVNZXNzYWdlKSgpfXJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSl9fTtpZihhcGlLZXkucHJvamVjdFNlY3JldCE9bnVsbCl7Y29ubmVjdGlvbi51c2VyPSIiO2Nvbm5lY3Rpb24ucGFzc3dvcmQ9YXBpS2V5LnByb2plY3RTZWNyZXR9cmV0dXJuIGNvbm5lY3Rpb259O3JldHVybiBBbmtyUHJvdmlkZXJ9KHVybEpzb25ScGNQcm92aWRlci5VcmxKc29uUnBjUHJvdmlkZXIpO2V4cG9ydHMuQW5rclByb3ZpZGVyPUFua3JQcm92aWRlcn0pO3ZhciBhbmtyUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhhbmtyUHJvdmlkZXIpO3ZhciBjbG91ZGZsYXJlUHJvdmlkZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7dmFyIF9fYXdhaXRlcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19hd2FpdGVyfHxmdW5jdGlvbih0aGlzQXJnLF9hcmd1bWVudHMsUCxnZW5lcmF0b3Ipe2Z1bmN0aW9uIGFkb3B0KHZhbHVlKXtyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQP3ZhbHVlOm5ldyBQKGZ1bmN0aW9uKHJlc29sdmUpe3Jlc29sdmUodmFsdWUpfSl9cmV0dXJuIG5ldyhQfHwoUD1Qcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2Z1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHN0ZXAocmVzdWx0KXtyZXN1bHQuZG9uZT9yZXNvbHZlKHJlc3VsdC52YWx1ZSk6YWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCl9c3RlcCgoZ2VuZXJhdG9yPWdlbmVyYXRvci5hcHBseSh0aGlzQXJnLF9hcmd1bWVudHN8fFtdKSkubmV4dCgpKX0pfTt2YXIgX19nZW5lcmF0b3I9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0aGlzQXJnLGJvZHkpe3ZhciBfPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZih0WzBdJjEpdGhyb3cgdFsxXTtyZXR1cm4gdFsxXX0sdHJ5czpbXSxvcHM6W119LGYseSx0LGc7cmV0dXJuIGc9e25leHQ6dmVyYigwKSx0aHJvdzp2ZXJiKDEpLHJldHVybjp2ZXJiKDIpfSx0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmKGdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZztmdW5jdGlvbiB2ZXJiKG4pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gc3RlcChbbix2XSl9fWZ1bmN0aW9uIHN0ZXAob3Ape2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO3doaWxlKF8pdHJ5e2lmKGY9MSx5JiYodD1vcFswXSYyP3lbInJldHVybiJdOm9wWzBdP3lbInRocm93Il18fCgodD15WyJyZXR1cm4iXSkmJnQuY2FsbCh5KSwwKTp5Lm5leHQpJiYhKHQ9dC5jYWxsKHksb3BbMV0pKS5kb25lKXJldHVybiB0O2lmKHk9MCx0KW9wPVtvcFswXSYyLHQudmFsdWVdO3N3aXRjaChvcFswXSl7Y2FzZSAwOmNhc2UgMTp0PW9wO2JyZWFrO2Nhc2UgNDpfLmxhYmVsKys7cmV0dXJue3ZhbHVlOm9wWzFdLGRvbmU6ZmFsc2V9O2Nhc2UgNTpfLmxhYmVsKys7eT1vcFsxXTtvcD1bMF07Y29udGludWU7Y2FzZSA3Om9wPV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEodD1fLnRyeXMsdD10Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdKSYmKG9wWzBdPT09Nnx8b3BbMF09PT0yKSl7Xz0wO2NvbnRpbnVlfWlmKG9wWzBdPT09MyYmKCF0fHxvcFsxXT50WzBdJiZvcFsxXTx0WzNdKSl7Xy5sYWJlbD1vcFsxXTticmVha31pZihvcFswXT09PTYmJl8ubGFiZWw8dFsxXSl7Xy5sYWJlbD10WzFdO3Q9b3A7YnJlYWt9aWYodCYmXy5sYWJlbDx0WzJdKXtfLmxhYmVsPXRbMl07Xy5vcHMucHVzaChvcCk7YnJlYWt9aWYodFsyXSlfLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWV9b3A9Ym9keS5jYWxsKHRoaXNBcmcsXyl9Y2F0Y2goZSl7b3A9WzYsZV07eT0wfWZpbmFsbHl7Zj10PTB9aWYob3BbMF0mNSl0aHJvdyBvcFsxXTtyZXR1cm57dmFsdWU6b3BbMF0/b3BbMV06dm9pZCAwLGRvbmU6dHJ1ZX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkNsb3VkZmxhcmVQcm92aWRlcj12b2lkIDA7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRJLnZlcnNpb24pO3ZhciBDbG91ZGZsYXJlUHJvdmlkZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoQ2xvdWRmbGFyZVByb3ZpZGVyLF9zdXBlcik7ZnVuY3Rpb24gQ2xvdWRmbGFyZVByb3ZpZGVyKCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9Q2xvdWRmbGFyZVByb3ZpZGVyLmdldEFwaUtleT1mdW5jdGlvbihhcGlLZXkpe2lmKGFwaUtleSE9bnVsbCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiYXBpS2V5IG5vdCBzdXBwb3J0ZWQgZm9yIGNsb3VkZmxhcmUiLCJhcGlLZXkiLGFwaUtleSl9cmV0dXJuIG51bGx9O0Nsb3VkZmxhcmVQcm92aWRlci5nZXRVcmw9ZnVuY3Rpb24obmV0d29yayxhcGlLZXkpe3ZhciBob3N0PW51bGw7c3dpdGNoKG5ldHdvcmsubmFtZSl7Y2FzZSJob21lc3RlYWQiOmhvc3Q9Imh0dHBzOi8vY2xvdWRmbGFyZS1ldGguY29tLyI7YnJlYWs7ZGVmYXVsdDpsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bnN1cHBvcnRlZCBuZXR3b3JrIiwibmV0d29yayIsYXJndW1lbnRzWzBdKX1yZXR1cm4gaG9zdH07Q2xvdWRmbGFyZVByb3ZpZGVyLnByb3RvdHlwZS5wZXJmb3JtPWZ1bmN0aW9uKG1ldGhvZCxwYXJhbXMpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGJsb2NrO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDppZighKG1ldGhvZD09PSJnZXRCbG9ja051bWJlciIpKXJldHVyblszLDJdO3JldHVybls0LF9zdXBlci5wcm90b3R5cGUucGVyZm9ybS5jYWxsKHRoaXMsImdldEJsb2NrIix7YmxvY2tUYWc6ImxhdGVzdCJ9KV07Y2FzZSAxOmJsb2NrPV9hLnNlbnQoKTtyZXR1cm5bMixibG9jay5udW1iZXJdO2Nhc2UgMjpyZXR1cm5bMixfc3VwZXIucHJvdG90eXBlLnBlcmZvcm0uY2FsbCh0aGlzLG1ldGhvZCxwYXJhbXMpXX19KX0pfTtyZXR1cm4gQ2xvdWRmbGFyZVByb3ZpZGVyfSh1cmxKc29uUnBjUHJvdmlkZXIuVXJsSnNvblJwY1Byb3ZpZGVyKTtleHBvcnRzLkNsb3VkZmxhcmVQcm92aWRlcj1DbG91ZGZsYXJlUHJvdmlkZXJ9KTt2YXIgY2xvdWRmbGFyZVByb3ZpZGVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoY2xvdWRmbGFyZVByb3ZpZGVyKTt2YXIgZXRoZXJzY2FuUHJvdmlkZXI9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0Ijt2YXIgX19leHRlbmRzPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGV4dGVuZFN0YXRpY3M9ZnVuY3Rpb24oZCxiKXtleHRlbmRTdGF0aWNzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgcCBpbiBiKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLHApKWRbcF09YltwXX07cmV0dXJuIGV4dGVuZFN0YXRpY3MoZCxiKX07cmV0dXJuIGZ1bmN0aW9uKGQsYil7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iJiZiIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2V4dGVuZFN0YXRpY3MoZCxiKTtmdW5jdGlvbiBfXygpe3RoaXMuY29uc3RydWN0b3I9ZH1kLnByb3RvdHlwZT1iPT09bnVsbD9PYmplY3QuY3JlYXRlKGIpOihfXy5wcm90b3R5cGU9Yi5wcm90b3R5cGUsbmV3IF9fKX19KCk7dmFyIF9fYXdhaXRlcj1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19hd2FpdGVyfHxmdW5jdGlvbih0aGlzQXJnLF9hcmd1bWVudHMsUCxnZW5lcmF0b3Ipe2Z1bmN0aW9uIGFkb3B0KHZhbHVlKXtyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQP3ZhbHVlOm5ldyBQKGZ1bmN0aW9uKHJlc29sdmUpe3Jlc29sdmUodmFsdWUpfSl9cmV0dXJuIG5ldyhQfHwoUD1Qcm9taXNlKSkoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe2Z1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKXt0cnl7c3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKX1jYXRjaChlKXtyZWplY3QoZSl9fWZ1bmN0aW9uIHN0ZXAocmVzdWx0KXtyZXN1bHQuZG9uZT9yZXNvbHZlKHJlc3VsdC52YWx1ZSk6YWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCxyZWplY3RlZCl9c3RlcCgoZ2VuZXJhdG9yPWdlbmVyYXRvci5hcHBseSh0aGlzQXJnLF9hcmd1bWVudHN8fFtdKSkubmV4dCgpKX0pfTt2YXIgX19nZW5lcmF0b3I9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbih0aGlzQXJnLGJvZHkpe3ZhciBfPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZih0WzBdJjEpdGhyb3cgdFsxXTtyZXR1cm4gdFsxXX0sdHJ5czpbXSxvcHM6W119LGYseSx0LGc7cmV0dXJuIGc9e25leHQ6dmVyYigwKSx0aHJvdzp2ZXJiKDEpLHJldHVybjp2ZXJiKDIpfSx0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmKGdbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksZztmdW5jdGlvbiB2ZXJiKG4pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gc3RlcChbbix2XSl9fWZ1bmN0aW9uIHN0ZXAob3Ape2lmKGYpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO3doaWxlKF8pdHJ5e2lmKGY9MSx5JiYodD1vcFswXSYyP3lbInJldHVybiJdOm9wWzBdP3lbInRocm93Il18fCgodD15WyJyZXR1cm4iXSkmJnQuY2FsbCh5KSwwKTp5Lm5leHQpJiYhKHQ9dC5jYWxsKHksb3BbMV0pKS5kb25lKXJldHVybiB0O2lmKHk9MCx0KW9wPVtvcFswXSYyLHQudmFsdWVdO3N3aXRjaChvcFswXSl7Y2FzZSAwOmNhc2UgMTp0PW9wO2JyZWFrO2Nhc2UgNDpfLmxhYmVsKys7cmV0dXJue3ZhbHVlOm9wWzFdLGRvbmU6ZmFsc2V9O2Nhc2UgNTpfLmxhYmVsKys7eT1vcFsxXTtvcD1bMF07Y29udGludWU7Y2FzZSA3Om9wPV8ub3BzLnBvcCgpO18udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEodD1fLnRyeXMsdD10Lmxlbmd0aD4wJiZ0W3QubGVuZ3RoLTFdKSYmKG9wWzBdPT09Nnx8b3BbMF09PT0yKSl7Xz0wO2NvbnRpbnVlfWlmKG9wWzBdPT09MyYmKCF0fHxvcFsxXT50WzBdJiZvcFsxXTx0WzNdKSl7Xy5sYWJlbD1vcFsxXTticmVha31pZihvcFswXT09PTYmJl8ubGFiZWw8dFsxXSl7Xy5sYWJlbD10WzFdO3Q9b3A7YnJlYWt9aWYodCYmXy5sYWJlbDx0WzJdKXtfLmxhYmVsPXRbMl07Xy5vcHMucHVzaChvcCk7YnJlYWt9aWYodFsyXSlfLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWV9b3A9Ym9keS5jYWxsKHRoaXNBcmcsXyl9Y2F0Y2goZSl7b3A9WzYsZV07eT0wfWZpbmFsbHl7Zj10PTB9aWYob3BbMF0mNSl0aHJvdyBvcFsxXTtyZXR1cm57dmFsdWU6b3BbMF0/b3BbMV06dm9pZCAwLGRvbmU6dHJ1ZX19fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkV0aGVyc2NhblByb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7ZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25Qb3N0RGF0YSh0cmFuc2FjdGlvbil7dmFyIHJlc3VsdD17fTtmb3IodmFyIGtleSBpbiB0cmFuc2FjdGlvbil7aWYodHJhbnNhY3Rpb25ba2V5XT09bnVsbCl7Y29udGludWV9dmFyIHZhbHVlPXRyYW5zYWN0aW9uW2tleV07aWYoa2V5PT09InR5cGUiJiZ2YWx1ZT09PTApe2NvbnRpbnVlfWlmKHt0eXBlOnRydWUsZ2FzTGltaXQ6dHJ1ZSxnYXNQcmljZTp0cnVlLG1heEZlZVBlckdzOnRydWUsbWF4UHJpb3JpdHlGZWVQZXJHYXM6dHJ1ZSxub25jZTp0cnVlLHZhbHVlOnRydWV9W2tleV0pe3ZhbHVlPSgwLGxpYiQxLmhleFZhbHVlKSgoMCxsaWIkMS5oZXhsaWZ5KSh2YWx1ZSkpfWVsc2UgaWYoa2V5PT09ImFjY2Vzc0xpc3QiKXt2YWx1ZT0iWyIrKDAsbGliJGguYWNjZXNzTGlzdGlmeSkodmFsdWUpLm1hcChmdW5jdGlvbihzZXQpe3JldHVybid7YWRkcmVzczoiJytzZXQuYWRkcmVzcysnIixzdG9yYWdlS2V5czpbIicrc2V0LnN0b3JhZ2VLZXlzLmpvaW4oJyIsIicpKyciXX0nfSkuam9pbigiLCIpKyJdIn1lbHNle3ZhbHVlPSgwLGxpYiQxLmhleGxpZnkpKHZhbHVlKX1yZXN1bHRba2V5XT12YWx1ZX1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGdldFJlc3VsdChyZXN1bHQpe2lmKHJlc3VsdC5zdGF0dXM9PTAmJihyZXN1bHQubWVzc2FnZT09PSJObyByZWNvcmRzIGZvdW5kInx8cmVzdWx0Lm1lc3NhZ2U9PT0iTm8gdHJhbnNhY3Rpb25zIGZvdW5kIikpe3JldHVybiByZXN1bHQucmVzdWx0fWlmKHJlc3VsdC5zdGF0dXMhPTF8fHR5cGVvZiByZXN1bHQubWVzc2FnZSE9PSJzdHJpbmcifHwhcmVzdWx0Lm1lc3NhZ2UubWF0Y2goL15PSy8pKXt2YXIgZXJyb3I9bmV3IEVycm9yKCJpbnZhbGlkIHJlc3BvbnNlIik7ZXJyb3IucmVzdWx0PUpTT04uc3RyaW5naWZ5KHJlc3VsdCk7aWYoKHJlc3VsdC5yZXN1bHR8fCIiKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoInJhdGUgbGltaXQiKT49MCl7ZXJyb3IudGhyb3R0bGVSZXRyeT10cnVlfXRocm93IGVycm9yfXJldHVybiByZXN1bHQucmVzdWx0fWZ1bmN0aW9uIGdldEpzb25SZXN1bHQocmVzdWx0KXtpZihyZXN1bHQmJnJlc3VsdC5zdGF0dXM9PTAmJnJlc3VsdC5tZXNzYWdlPT0iTk9UT0siJiYocmVzdWx0LnJlc3VsdHx8IiIpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigicmF0ZSBsaW1pdCIpPj0wKXt2YXIgZXJyb3I9bmV3IEVycm9yKCJ0aHJvdHRsZWQgcmVzcG9uc2UiKTtlcnJvci5yZXN1bHQ9SlNPTi5zdHJpbmdpZnkocmVzdWx0KTtlcnJvci50aHJvdHRsZVJldHJ5PXRydWU7dGhyb3cgZXJyb3J9aWYocmVzdWx0Lmpzb25ycGMhPSIyLjAiKXt2YXIgZXJyb3I9bmV3IEVycm9yKCJpbnZhbGlkIHJlc3BvbnNlIik7ZXJyb3IucmVzdWx0PUpTT04uc3RyaW5naWZ5KHJlc3VsdCk7dGhyb3cgZXJyb3J9aWYocmVzdWx0LmVycm9yKXt2YXIgZXJyb3I9bmV3IEVycm9yKHJlc3VsdC5lcnJvci5tZXNzYWdlfHwidW5rbm93biBlcnJvciIpO2lmKHJlc3VsdC5lcnJvci5jb2RlKXtlcnJvci5jb2RlPXJlc3VsdC5lcnJvci5jb2RlfWlmKHJlc3VsdC5lcnJvci5kYXRhKXtlcnJvci5kYXRhPXJlc3VsdC5lcnJvci5kYXRhfXRocm93IGVycm9yfXJldHVybiByZXN1bHQucmVzdWx0fWZ1bmN0aW9uIGNoZWNrTG9nVGFnKGJsb2NrVGFnKXtpZihibG9ja1RhZz09PSJwZW5kaW5nIil7dGhyb3cgbmV3IEVycm9yKCJwZW5kaW5nIG5vdCBzdXBwb3J0ZWQiKX1pZihibG9ja1RhZz09PSJsYXRlc3QiKXtyZXR1cm4gYmxvY2tUYWd9cmV0dXJuIHBhcnNlSW50KGJsb2NrVGFnLnN1YnN0cmluZygyKSwxNil9ZnVuY3Rpb24gY2hlY2tFcnJvcihtZXRob2QsZXJyb3IsdHJhbnNhY3Rpb24pe2lmKG1ldGhvZD09PSJjYWxsIiYmZXJyb3IuY29kZT09PWxpYi5Mb2dnZXIuZXJyb3JzLlNFUlZFUl9FUlJPUil7dmFyIGU9ZXJyb3IuZXJyb3I7aWYoZSYmKGUubWVzc2FnZS5tYXRjaCgvcmV2ZXJ0ZWQvaSl8fGUubWVzc2FnZS5tYXRjaCgvVk0gZXhlY3V0aW9uIGVycm9yL2kpKSl7dmFyIGRhdGE9ZS5kYXRhO2lmKGRhdGEpe2RhdGE9IjB4IitkYXRhLnJlcGxhY2UoL14uKjB4L2ksIiIpfWlmKCgwLGxpYiQxLmlzSGV4U3RyaW5nKShkYXRhKSl7cmV0dXJuIGRhdGF9bG9nZ2VyLnRocm93RXJyb3IoIm1pc3NpbmcgcmV2ZXJ0IGRhdGEgaW4gY2FsbCBleGNlcHRpb24iLGxpYi5Mb2dnZXIuZXJyb3JzLkNBTExfRVhDRVBUSU9OLHtlcnJvcjplcnJvcixkYXRhOiIweCJ9KX19dmFyIG1lc3NhZ2U9ZXJyb3IubWVzc2FnZTtpZihlcnJvci5jb2RlPT09bGliLkxvZ2dlci5lcnJvcnMuU0VSVkVSX0VSUk9SKXtpZihlcnJvci5lcnJvciYmdHlwZW9mIGVycm9yLmVycm9yLm1lc3NhZ2U9PT0ic3RyaW5nIil7bWVzc2FnZT1lcnJvci5lcnJvci5tZXNzYWdlfWVsc2UgaWYodHlwZW9mIGVycm9yLmJvZHk9PT0ic3RyaW5nIil7bWVzc2FnZT1lcnJvci5ib2R5fWVsc2UgaWYodHlwZW9mIGVycm9yLnJlc3BvbnNlVGV4dD09PSJzdHJpbmciKXttZXNzYWdlPWVycm9yLnJlc3BvbnNlVGV4dH19bWVzc2FnZT0obWVzc2FnZXx8IiIpLnRvTG93ZXJDYXNlKCk7aWYobWVzc2FnZS5tYXRjaCgvaW5zdWZmaWNpZW50IGZ1bmRzLykpe2xvZ2dlci50aHJvd0Vycm9yKCJpbnN1ZmZpY2llbnQgZnVuZHMgZm9yIGludHJpbnNpYyB0cmFuc2FjdGlvbiBjb3N0IixsaWIuTG9nZ2VyLmVycm9ycy5JTlNVRkZJQ0lFTlRfRlVORFMse2Vycm9yOmVycm9yLG1ldGhvZDptZXRob2QsdHJhbnNhY3Rpb246dHJhbnNhY3Rpb259KX1pZihtZXNzYWdlLm1hdGNoKC9zYW1lIGhhc2ggd2FzIGFscmVhZHkgaW1wb3J0ZWR8dHJhbnNhY3Rpb24gbm9uY2UgaXMgdG9vIGxvd3xub25jZSB0b28gbG93Lykpe2xvZ2dlci50aHJvd0Vycm9yKCJub25jZSBoYXMgYWxyZWFkeSBiZWVuIHVzZWQiLGxpYi5Mb2dnZXIuZXJyb3JzLk5PTkNFX0VYUElSRUQse2Vycm9yOmVycm9yLG1ldGhvZDptZXRob2QsdHJhbnNhY3Rpb246dHJhbnNhY3Rpb259KX1pZihtZXNzYWdlLm1hdGNoKC9hbm90aGVyIHRyYW5zYWN0aW9uIHdpdGggc2FtZSBub25jZS8pKXtsb2dnZXIudGhyb3dFcnJvcigicmVwbGFjZW1lbnQgZmVlIHRvbyBsb3ciLGxpYi5Mb2dnZXIuZXJyb3JzLlJFUExBQ0VNRU5UX1VOREVSUFJJQ0VELHtlcnJvcjplcnJvcixtZXRob2Q6bWV0aG9kLHRyYW5zYWN0aW9uOnRyYW5zYWN0aW9ufSl9aWYobWVzc2FnZS5tYXRjaCgvZXhlY3V0aW9uIGZhaWxlZCBkdWUgdG8gYW4gZXhjZXB0aW9ufGV4ZWN1dGlvbiByZXZlcnRlZC8pKXtsb2dnZXIudGhyb3dFcnJvcigiY2Fubm90IGVzdGltYXRlIGdhczsgdHJhbnNhY3Rpb24gbWF5IGZhaWwgb3IgbWF5IHJlcXVpcmUgbWFudWFsIGdhcyBsaW1pdCIsbGliLkxvZ2dlci5lcnJvcnMuVU5QUkVESUNUQUJMRV9HQVNfTElNSVQse2Vycm9yOmVycm9yLG1ldGhvZDptZXRob2QsdHJhbnNhY3Rpb246dHJhbnNhY3Rpb259KX10aHJvdyBlcnJvcn12YXIgRXRoZXJzY2FuUHJvdmlkZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoRXRoZXJzY2FuUHJvdmlkZXIsX3N1cGVyKTtmdW5jdGlvbiBFdGhlcnNjYW5Qcm92aWRlcihuZXR3b3JrLGFwaUtleSl7dmFyIF90aGlzPV9zdXBlci5jYWxsKHRoaXMsbmV0d29yayl8fHRoaXM7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJiYXNlVXJsIixfdGhpcy5nZXRCYXNlVXJsKCkpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShfdGhpcywiYXBpS2V5IixhcGlLZXl8fG51bGwpO3JldHVybiBfdGhpc31FdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuZ2V0QmFzZVVybD1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLm5ldHdvcms/dGhpcy5uZXR3b3JrLm5hbWU6ImludmFsaWQiKXtjYXNlImhvbWVzdGVhZCI6cmV0dXJuImh0dHBzOi8vYXBpLmV0aGVyc2Nhbi5pbyI7Y2FzZSJnb2VybGkiOnJldHVybiJodHRwczovL2FwaS1nb2VybGkuZXRoZXJzY2FuLmlvIjtjYXNlInNlcG9saWEiOnJldHVybiJodHRwczovL2FwaS1zZXBvbGlhLmV0aGVyc2Nhbi5pbyI7Y2FzZSJtYXRpYyI6cmV0dXJuImh0dHBzOi8vYXBpLnBvbHlnb25zY2FuLmNvbSI7Y2FzZSJtYXRpY211bSI6cmV0dXJuImh0dHBzOi8vYXBpLXRlc3RuZXQucG9seWdvbnNjYW4uY29tIjtjYXNlImFyYml0cnVtIjpyZXR1cm4iaHR0cHM6Ly9hcGkuYXJiaXNjYW4uaW8iO2Nhc2UiYXJiaXRydW0tZ29lcmxpIjpyZXR1cm4iaHR0cHM6Ly9hcGktZ29lcmxpLmFyYmlzY2FuLmlvIjtjYXNlIm9wdGltaXNtIjpyZXR1cm4iaHR0cHM6Ly9hcGktb3B0aW1pc3RpYy5ldGhlcnNjYW4uaW8iO2Nhc2Uib3B0aW1pc20tZ29lcmxpIjpyZXR1cm4iaHR0cHM6Ly9hcGktZ29lcmxpLW9wdGltaXN0aWMuZXRoZXJzY2FuLmlvIjtkZWZhdWx0On1yZXR1cm4gbG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5zdXBwb3J0ZWQgbmV0d29yayIsIm5ldHdvcmsiLHRoaXMubmV0d29yay5uYW1lKX07RXRoZXJzY2FuUHJvdmlkZXIucHJvdG90eXBlLmdldFVybD1mdW5jdGlvbihtb2R1bGUscGFyYW1zKXt2YXIgcXVlcnk9T2JqZWN0LmtleXMocGFyYW1zKS5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sa2V5KXt2YXIgdmFsdWU9cGFyYW1zW2tleV07aWYodmFsdWUhPW51bGwpe2FjY3VtKz0iJiIra2V5KyI9Iit2YWx1ZX1yZXR1cm4gYWNjdW19LCIiKTt2YXIgYXBpS2V5PXRoaXMuYXBpS2V5PyImYXBpa2V5PSIrdGhpcy5hcGlLZXk6IiI7cmV0dXJuIHRoaXMuYmFzZVVybCsiL2FwaT9tb2R1bGU9Iittb2R1bGUrcXVlcnkrYXBpS2V5fTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuZ2V0UG9zdFVybD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJhc2VVcmwrIi9hcGkifTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuZ2V0UG9zdERhdGE9ZnVuY3Rpb24obW9kdWxlLHBhcmFtcyl7cGFyYW1zLm1vZHVsZT1tb2R1bGU7cGFyYW1zLmFwaWtleT10aGlzLmFwaUtleTtyZXR1cm4gcGFyYW1zfTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuZmV0Y2g9ZnVuY3Rpb24obW9kdWxlLHBhcmFtcyxwb3N0KXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciB1cmwscGF5bG9hZCxwcm9jRnVuYyxjb25uZWN0aW9uLHBheWxvYWRTdHIscmVzdWx0O3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDp1cmw9cG9zdD90aGlzLmdldFBvc3RVcmwoKTp0aGlzLmdldFVybChtb2R1bGUscGFyYW1zKTtwYXlsb2FkPXBvc3Q/dGhpcy5nZXRQb3N0RGF0YShtb2R1bGUscGFyYW1zKTpudWxsO3Byb2NGdW5jPW1vZHVsZT09PSJwcm94eSI/Z2V0SnNvblJlc3VsdDpnZXRSZXN1bHQ7dGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVxdWVzdCIscmVxdWVzdDp1cmwscHJvdmlkZXI6dGhpc30pO2Nvbm5lY3Rpb249e3VybDp1cmwsdGhyb3R0bGVTbG90SW50ZXJ2YWw6MWUzLHRocm90dGxlQ2FsbGJhY2s6ZnVuY3Rpb24oYXR0ZW1wdCx1cmwpe2lmKF90aGlzLmlzQ29tbXVuaXR5UmVzb3VyY2UoKSl7KDAsZm9ybWF0dGVyLnNob3dUaHJvdHRsZU1lc3NhZ2UpKCl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKX19O3BheWxvYWRTdHI9bnVsbDtpZihwYXlsb2FkKXtjb25uZWN0aW9uLmhlYWRlcnM9eyJjb250ZW50LXR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgifTtwYXlsb2FkU3RyPU9iamVjdC5rZXlzKHBheWxvYWQpLm1hcChmdW5jdGlvbihrZXkpe3JldHVybiBrZXkrIj0iK3BheWxvYWRba2V5XX0pLmpvaW4oIiYiKX1yZXR1cm5bNCwoMCxsaWIkcy5mZXRjaEpzb24pKGNvbm5lY3Rpb24scGF5bG9hZFN0cixwcm9jRnVuY3x8Z2V0SnNvblJlc3VsdCldO2Nhc2UgMTpyZXN1bHQ9X2Euc2VudCgpO3RoaXMuZW1pdCgiZGVidWciLHthY3Rpb246InJlc3BvbnNlIixyZXF1ZXN0OnVybCxyZXNwb25zZTooMCxsaWIkMy5kZWVwQ29weSkocmVzdWx0KSxwcm92aWRlcjp0aGlzfSk7cmV0dXJuWzIscmVzdWx0XX19KX0pfTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuZGV0ZWN0TmV0d29yaz1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3JldHVyblsyLHRoaXMubmV0d29ya119KX0pfTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUucGVyZm9ybT1mdW5jdGlvbihtZXRob2QscGFyYW1zKXtyZXR1cm4gX19hd2FpdGVyKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBfYSxwb3N0RGF0YSxlcnJvcl8xLHBvc3REYXRhLGVycm9yXzIsYXJncyx0b3BpYzAsbG9ncyxibG9ja3MsaSxsb2csYmxvY2ssX2I7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Mpe3N3aXRjaChfYy5sYWJlbCl7Y2FzZSAwOl9hPW1ldGhvZDtzd2l0Y2goX2Epe2Nhc2UiZ2V0QmxvY2tOdW1iZXIiOnJldHVyblszLDFdO2Nhc2UiZ2V0R2FzUHJpY2UiOnJldHVyblszLDJdO2Nhc2UiZ2V0QmFsYW5jZSI6cmV0dXJuWzMsM107Y2FzZSJnZXRUcmFuc2FjdGlvbkNvdW50IjpyZXR1cm5bMyw0XTtjYXNlImdldENvZGUiOnJldHVyblszLDVdO2Nhc2UiZ2V0U3RvcmFnZUF0IjpyZXR1cm5bMyw2XTtjYXNlInNlbmRUcmFuc2FjdGlvbiI6cmV0dXJuWzMsN107Y2FzZSJnZXRCbG9jayI6cmV0dXJuWzMsOF07Y2FzZSJnZXRUcmFuc2FjdGlvbiI6cmV0dXJuWzMsOV07Y2FzZSJnZXRUcmFuc2FjdGlvblJlY2VpcHQiOnJldHVyblszLDEwXTtjYXNlImNhbGwiOnJldHVyblszLDExXTtjYXNlImVzdGltYXRlR2FzIjpyZXR1cm5bMywxNV07Y2FzZSJnZXRMb2dzIjpyZXR1cm5bMywxOV07Y2FzZSJnZXRFdGhlclByaWNlIjpyZXR1cm5bMywyNl19cmV0dXJuWzMsMjhdO2Nhc2UgMTpyZXR1cm5bMix0aGlzLmZldGNoKCJwcm94eSIse2FjdGlvbjoiZXRoX2Jsb2NrTnVtYmVyIn0pXTtjYXNlIDI6cmV0dXJuWzIsdGhpcy5mZXRjaCgicHJveHkiLHthY3Rpb246ImV0aF9nYXNQcmljZSJ9KV07Y2FzZSAzOnJldHVyblsyLHRoaXMuZmV0Y2goImFjY291bnQiLHthY3Rpb246ImJhbGFuY2UiLGFkZHJlc3M6cGFyYW1zLmFkZHJlc3MsdGFnOnBhcmFtcy5ibG9ja1RhZ30pXTtjYXNlIDQ6cmV0dXJuWzIsdGhpcy5mZXRjaCgicHJveHkiLHthY3Rpb246ImV0aF9nZXRUcmFuc2FjdGlvbkNvdW50IixhZGRyZXNzOnBhcmFtcy5hZGRyZXNzLHRhZzpwYXJhbXMuYmxvY2tUYWd9KV07Y2FzZSA1OnJldHVyblsyLHRoaXMuZmV0Y2goInByb3h5Iix7YWN0aW9uOiJldGhfZ2V0Q29kZSIsYWRkcmVzczpwYXJhbXMuYWRkcmVzcyx0YWc6cGFyYW1zLmJsb2NrVGFnfSldO2Nhc2UgNjpyZXR1cm5bMix0aGlzLmZldGNoKCJwcm94eSIse2FjdGlvbjoiZXRoX2dldFN0b3JhZ2VBdCIsYWRkcmVzczpwYXJhbXMuYWRkcmVzcyxwb3NpdGlvbjpwYXJhbXMucG9zaXRpb24sdGFnOnBhcmFtcy5ibG9ja1RhZ30pXTtjYXNlIDc6cmV0dXJuWzIsdGhpcy5mZXRjaCgicHJveHkiLHthY3Rpb246ImV0aF9zZW5kUmF3VHJhbnNhY3Rpb24iLGhleDpwYXJhbXMuc2lnbmVkVHJhbnNhY3Rpb259LHRydWUpLmNhdGNoKGZ1bmN0aW9uKGVycm9yKXtyZXR1cm4gY2hlY2tFcnJvcigic2VuZFRyYW5zYWN0aW9uIixlcnJvcixwYXJhbXMuc2lnbmVkVHJhbnNhY3Rpb24pfSldO2Nhc2UgODppZihwYXJhbXMuYmxvY2tUYWcpe3JldHVyblsyLHRoaXMuZmV0Y2goInByb3h5Iix7YWN0aW9uOiJldGhfZ2V0QmxvY2tCeU51bWJlciIsdGFnOnBhcmFtcy5ibG9ja1RhZyxib29sZWFuOnBhcmFtcy5pbmNsdWRlVHJhbnNhY3Rpb25zPyJ0cnVlIjoiZmFsc2UifSldfXRocm93IG5ldyBFcnJvcigiZ2V0QmxvY2sgYnkgYmxvY2tIYXNoIG5vdCBpbXBsZW1lbnRlZCIpO2Nhc2UgOTpyZXR1cm5bMix0aGlzLmZldGNoKCJwcm94eSIse2FjdGlvbjoiZXRoX2dldFRyYW5zYWN0aW9uQnlIYXNoIix0eGhhc2g6cGFyYW1zLnRyYW5zYWN0aW9uSGFzaH0pXTtjYXNlIDEwOnJldHVyblsyLHRoaXMuZmV0Y2goInByb3h5Iix7YWN0aW9uOiJldGhfZ2V0VHJhbnNhY3Rpb25SZWNlaXB0Iix0eGhhc2g6cGFyYW1zLnRyYW5zYWN0aW9uSGFzaH0pXTtjYXNlIDExOmlmKHBhcmFtcy5ibG9ja1RhZyE9PSJsYXRlc3QiKXt0aHJvdyBuZXcgRXJyb3IoIkV0aGVyc2NhblByb3ZpZGVyIGRvZXMgbm90IHN1cHBvcnQgYmxvY2tUYWcgZm9yIGNhbGwiKX1wb3N0RGF0YT1nZXRUcmFuc2FjdGlvblBvc3REYXRhKHBhcmFtcy50cmFuc2FjdGlvbik7cG9zdERhdGEubW9kdWxlPSJwcm94eSI7cG9zdERhdGEuYWN0aW9uPSJldGhfY2FsbCI7X2MubGFiZWw9MTI7Y2FzZSAxMjpfYy50cnlzLnB1c2goWzEyLDE0LCwxNV0pO3JldHVybls0LHRoaXMuZmV0Y2goInByb3h5Iixwb3N0RGF0YSx0cnVlKV07Y2FzZSAxMzpyZXR1cm5bMixfYy5zZW50KCldO2Nhc2UgMTQ6ZXJyb3JfMT1fYy5zZW50KCk7cmV0dXJuWzIsY2hlY2tFcnJvcigiY2FsbCIsZXJyb3JfMSxwYXJhbXMudHJhbnNhY3Rpb24pXTtjYXNlIDE1OnBvc3REYXRhPWdldFRyYW5zYWN0aW9uUG9zdERhdGEocGFyYW1zLnRyYW5zYWN0aW9uKTtwb3N0RGF0YS5tb2R1bGU9InByb3h5Ijtwb3N0RGF0YS5hY3Rpb249ImV0aF9lc3RpbWF0ZUdhcyI7X2MubGFiZWw9MTY7Y2FzZSAxNjpfYy50cnlzLnB1c2goWzE2LDE4LCwxOV0pO3JldHVybls0LHRoaXMuZmV0Y2goInByb3h5Iixwb3N0RGF0YSx0cnVlKV07Y2FzZSAxNzpyZXR1cm5bMixfYy5zZW50KCldO2Nhc2UgMTg6ZXJyb3JfMj1fYy5zZW50KCk7cmV0dXJuWzIsY2hlY2tFcnJvcigiZXN0aW1hdGVHYXMiLGVycm9yXzIscGFyYW1zLnRyYW5zYWN0aW9uKV07Y2FzZSAxOTphcmdzPXthY3Rpb246ImdldExvZ3MifTtpZihwYXJhbXMuZmlsdGVyLmZyb21CbG9jayl7YXJncy5mcm9tQmxvY2s9Y2hlY2tMb2dUYWcocGFyYW1zLmZpbHRlci5mcm9tQmxvY2spfWlmKHBhcmFtcy5maWx0ZXIudG9CbG9jayl7YXJncy50b0Jsb2NrPWNoZWNrTG9nVGFnKHBhcmFtcy5maWx0ZXIudG9CbG9jayl9aWYocGFyYW1zLmZpbHRlci5hZGRyZXNzKXthcmdzLmFkZHJlc3M9cGFyYW1zLmZpbHRlci5hZGRyZXNzfWlmKHBhcmFtcy5maWx0ZXIudG9waWNzJiZwYXJhbXMuZmlsdGVyLnRvcGljcy5sZW5ndGg+MCl7aWYocGFyYW1zLmZpbHRlci50b3BpY3MubGVuZ3RoPjEpe2xvZ2dlci50aHJvd0Vycm9yKCJ1bnN1cHBvcnRlZCB0b3BpYyBjb3VudCIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHt0b3BpY3M6cGFyYW1zLmZpbHRlci50b3BpY3N9KX1pZihwYXJhbXMuZmlsdGVyLnRvcGljcy5sZW5ndGg9PT0xKXt0b3BpYzA9cGFyYW1zLmZpbHRlci50b3BpY3NbMF07aWYodHlwZW9mIHRvcGljMCE9PSJzdHJpbmcifHx0b3BpYzAubGVuZ3RoIT09NjYpe2xvZ2dlci50aHJvd0Vycm9yKCJ1bnN1cHBvcnRlZCB0b3BpYyBmb3JtYXQiLGxpYi5Mb2dnZXIuZXJyb3JzLlVOU1VQUE9SVEVEX09QRVJBVElPTix7dG9waWMwOnRvcGljMH0pfWFyZ3MudG9waWMwPXRvcGljMH19cmV0dXJuWzQsdGhpcy5mZXRjaCgibG9ncyIsYXJncyldO2Nhc2UgMjA6bG9ncz1fYy5zZW50KCk7YmxvY2tzPXt9O2k9MDtfYy5sYWJlbD0yMTtjYXNlIDIxOmlmKCEoaTxsb2dzLmxlbmd0aCkpcmV0dXJuWzMsMjVdO2xvZz1sb2dzW2ldO2lmKGxvZy5ibG9ja0hhc2ghPW51bGwpe3JldHVyblszLDI0XX1pZighKGJsb2Nrc1tsb2cuYmxvY2tOdW1iZXJdPT1udWxsKSlyZXR1cm5bMywyM107cmV0dXJuWzQsdGhpcy5nZXRCbG9jayhsb2cuYmxvY2tOdW1iZXIpXTtjYXNlIDIyOmJsb2NrPV9jLnNlbnQoKTtpZihibG9jayl7YmxvY2tzW2xvZy5ibG9ja051bWJlcl09YmxvY2suaGFzaH1fYy5sYWJlbD0yMztjYXNlIDIzOmxvZy5ibG9ja0hhc2g9YmxvY2tzW2xvZy5ibG9ja051bWJlcl07X2MubGFiZWw9MjQ7Y2FzZSAyNDppKys7cmV0dXJuWzMsMjFdO2Nhc2UgMjU6cmV0dXJuWzIsbG9nc107Y2FzZSAyNjppZih0aGlzLm5ldHdvcmsubmFtZSE9PSJob21lc3RlYWQiKXtyZXR1cm5bMiwwXX1fYj1wYXJzZUZsb2F0O3JldHVybls0LHRoaXMuZmV0Y2goInN0YXRzIix7YWN0aW9uOiJldGhwcmljZSJ9KV07Y2FzZSAyNzpyZXR1cm5bMixfYi5hcHBseSh2b2lkIDAsW19jLnNlbnQoKS5ldGh1c2RdKV07Y2FzZSAyODpyZXR1cm5bMywyOV07Y2FzZSAyOTpyZXR1cm5bMixfc3VwZXIucHJvdG90eXBlLnBlcmZvcm0uY2FsbCh0aGlzLG1ldGhvZCxwYXJhbXMpXX19KX0pfTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuZ2V0SGlzdG9yeT1mdW5jdGlvbihhZGRyZXNzT3JOYW1lLHN0YXJ0QmxvY2ssZW5kQmxvY2spe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHBhcmFtcyxyZXN1bHQ7dmFyIF9hO3ZhciBfdGhpcz10aGlzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9iKXtzd2l0Y2goX2IubGFiZWwpe2Nhc2UgMDpfYT17YWN0aW9uOiJ0eGxpc3QifTtyZXR1cm5bNCx0aGlzLnJlc29sdmVOYW1lKGFkZHJlc3NPck5hbWUpXTtjYXNlIDE6cGFyYW1zPShfYS5hZGRyZXNzPV9iLnNlbnQoKSxfYS5zdGFydGJsb2NrPXN0YXJ0QmxvY2s9PW51bGw/MDpzdGFydEJsb2NrLF9hLmVuZGJsb2NrPWVuZEJsb2NrPT1udWxsPzk5OTk5OTk5OmVuZEJsb2NrLF9hLnNvcnQ9ImFzYyIsX2EpO3JldHVybls0LHRoaXMuZmV0Y2goImFjY291bnQiLHBhcmFtcyldO2Nhc2UgMjpyZXN1bHQ9X2Iuc2VudCgpO3JldHVyblsyLHJlc3VsdC5tYXAoZnVuY3Rpb24odHgpe1siY29udHJhY3RBZGRyZXNzIiwidG8iXS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7aWYodHhba2V5XT09IiIpe2RlbGV0ZSB0eFtrZXldfX0pO2lmKHR4LmNyZWF0ZXM9PW51bGwmJnR4LmNvbnRyYWN0QWRkcmVzcyE9bnVsbCl7dHguY3JlYXRlcz10eC5jb250cmFjdEFkZHJlc3N9dmFyIGl0ZW09X3RoaXMuZm9ybWF0dGVyLnRyYW5zYWN0aW9uUmVzcG9uc2UodHgpO2lmKHR4LnRpbWVTdGFtcCl7aXRlbS50aW1lc3RhbXA9cGFyc2VJbnQodHgudGltZVN0YW1wKX1yZXR1cm4gaXRlbX0pXX19KX0pfTtFdGhlcnNjYW5Qcm92aWRlci5wcm90b3R5cGUuaXNDb21tdW5pdHlSZXNvdXJjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFwaUtleT09bnVsbH07cmV0dXJuIEV0aGVyc2NhblByb3ZpZGVyfShiYXNlUHJvdmlkZXIuQmFzZVByb3ZpZGVyKTtleHBvcnRzLkV0aGVyc2NhblByb3ZpZGVyPUV0aGVyc2NhblByb3ZpZGVyfSk7dmFyIGV0aGVyc2NhblByb3ZpZGVyJDE9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoZXRoZXJzY2FuUHJvdmlkZXIpO3ZhciBmYWxsYmFja1Byb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO3ZhciBfX2F3YWl0ZXI9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fYXdhaXRlcnx8ZnVuY3Rpb24odGhpc0FyZyxfYXJndW1lbnRzLFAsZ2VuZXJhdG9yKXtmdW5jdGlvbiBhZG9wdCh2YWx1ZSl7cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUD92YWx1ZTpuZXcgUChmdW5jdGlvbihyZXNvbHZlKXtyZXNvbHZlKHZhbHVlKX0pfXJldHVybiBuZXcoUHx8KFA9UHJvbWlzZSkpKGZ1bmN0aW9uKHJlc29sdmUscmVqZWN0KXtmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpe3RyeXtzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiByZWplY3RlZCh2YWx1ZSl7dHJ5e3N0ZXAoZ2VuZXJhdG9yWyJ0aHJvdyJdKHZhbHVlKSl9Y2F0Y2goZSl7cmVqZWN0KGUpfX1mdW5jdGlvbiBzdGVwKHJlc3VsdCl7cmVzdWx0LmRvbmU/cmVzb2x2ZShyZXN1bHQudmFsdWUpOmFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQscmVqZWN0ZWQpfXN0ZXAoKGdlbmVyYXRvcj1nZW5lcmF0b3IuYXBwbHkodGhpc0FyZyxfYXJndW1lbnRzfHxbXSkpLm5leHQoKSl9KX07dmFyIF9fZ2VuZXJhdG9yPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odGhpc0FyZyxib2R5KXt2YXIgXz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYodFswXSYxKXRocm93IHRbMV07cmV0dXJuIHRbMV19LHRyeXM6W10sb3BzOltdfSxmLHksdCxnO3JldHVybiBnPXtuZXh0OnZlcmIoMCksdGhyb3c6dmVyYigxKSxyZXR1cm46dmVyYigyKX0sdHlwZW9mIFN5bWJvbD09PSJmdW5jdGlvbiImJihnW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGc7ZnVuY3Rpb24gdmVyYihuKXtyZXR1cm4gZnVuY3Rpb24odil7cmV0dXJuIHN0ZXAoW24sdl0pfX1mdW5jdGlvbiBzdGVwKG9wKXtpZihmKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTt3aGlsZShfKXRyeXtpZihmPTEseSYmKHQ9b3BbMF0mMj95WyJyZXR1cm4iXTpvcFswXT95WyJ0aHJvdyJdfHwoKHQ9eVsicmV0dXJuIl0pJiZ0LmNhbGwoeSksMCk6eS5uZXh0KSYmISh0PXQuY2FsbCh5LG9wWzFdKSkuZG9uZSlyZXR1cm4gdDtpZih5PTAsdClvcD1bb3BbMF0mMix0LnZhbHVlXTtzd2l0Y2gob3BbMF0pe2Nhc2UgMDpjYXNlIDE6dD1vcDticmVhaztjYXNlIDQ6Xy5sYWJlbCsrO3JldHVybnt2YWx1ZTpvcFsxXSxkb25lOmZhbHNlfTtjYXNlIDU6Xy5sYWJlbCsrO3k9b3BbMV07b3A9WzBdO2NvbnRpbnVlO2Nhc2UgNzpvcD1fLm9wcy5wb3AoKTtfLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHQ9Xy50cnlzLHQ9dC5sZW5ndGg+MCYmdFt0Lmxlbmd0aC0xXSkmJihvcFswXT09PTZ8fG9wWzBdPT09Mikpe189MDtjb250aW51ZX1pZihvcFswXT09PTMmJighdHx8b3BbMV0+dFswXSYmb3BbMV08dFszXSkpe18ubGFiZWw9b3BbMV07YnJlYWt9aWYob3BbMF09PT02JiZfLmxhYmVsPHRbMV0pe18ubGFiZWw9dFsxXTt0PW9wO2JyZWFrfWlmKHQmJl8ubGFiZWw8dFsyXSl7Xy5sYWJlbD10WzJdO18ub3BzLnB1c2gob3ApO2JyZWFrfWlmKHRbMl0pXy5vcHMucG9wKCk7Xy50cnlzLnBvcCgpO2NvbnRpbnVlfW9wPWJvZHkuY2FsbCh0aGlzQXJnLF8pfWNhdGNoKGUpe29wPVs2LGVdO3k9MH1maW5hbGx5e2Y9dD0wfWlmKG9wWzBdJjUpdGhyb3cgb3BbMV07cmV0dXJue3ZhbHVlOm9wWzBdP29wWzFdOnZvaWQgMCxkb25lOnRydWV9fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5GYWxsYmFja1Byb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7ZnVuY3Rpb24gbm93KCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9ZnVuY3Rpb24gY2hlY2tOZXR3b3JrcyhuZXR3b3Jrcyl7dmFyIHJlc3VsdD1udWxsO2Zvcih2YXIgaT0wO2k8bmV0d29ya3MubGVuZ3RoO2krKyl7dmFyIG5ldHdvcms9bmV0d29ya3NbaV07aWYobmV0d29yaz09bnVsbCl7cmV0dXJuIG51bGx9aWYocmVzdWx0KXtpZighKHJlc3VsdC5uYW1lPT09bmV0d29yay5uYW1lJiZyZXN1bHQuY2hhaW5JZD09PW5ldHdvcmsuY2hhaW5JZCYmKHJlc3VsdC5lbnNBZGRyZXNzPT09bmV0d29yay5lbnNBZGRyZXNzfHxyZXN1bHQuZW5zQWRkcmVzcz09bnVsbCYmbmV0d29yay5lbnNBZGRyZXNzPT1udWxsKSkpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInByb3ZpZGVyIG1pc21hdGNoIiwibmV0d29ya3MiLG5ldHdvcmtzKX19ZWxzZXtyZXN1bHQ9bmV0d29ya319cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBtZWRpYW4odmFsdWVzLG1heERlbHRhKXt2YWx1ZXM9dmFsdWVzLnNsaWNlKCkuc29ydCgpO3ZhciBtaWRkbGU9TWF0aC5mbG9vcih2YWx1ZXMubGVuZ3RoLzIpO2lmKHZhbHVlcy5sZW5ndGglMil7cmV0dXJuIHZhbHVlc1ttaWRkbGVdfXZhciBhPXZhbHVlc1ttaWRkbGUtMV0sYj12YWx1ZXNbbWlkZGxlXTtpZihtYXhEZWx0YSE9bnVsbCYmTWF0aC5hYnMoYS1iKT5tYXhEZWx0YSl7cmV0dXJuIG51bGx9cmV0dXJuKGErYikvMn1mdW5jdGlvbiBzZXJpYWxpemUodmFsdWUpe2lmKHZhbHVlPT09bnVsbCl7cmV0dXJuIm51bGwifWVsc2UgaWYodHlwZW9mIHZhbHVlPT09Im51bWJlciJ8fHR5cGVvZiB2YWx1ZT09PSJib29sZWFuIil7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKX1lbHNlIGlmKHR5cGVvZiB2YWx1ZT09PSJzdHJpbmciKXtyZXR1cm4gdmFsdWV9ZWxzZSBpZihsaWIkMi5CaWdOdW1iZXIuaXNCaWdOdW1iZXIodmFsdWUpKXtyZXR1cm4gdmFsdWUudG9TdHJpbmcoKX1lbHNlIGlmKEFycmF5LmlzQXJyYXkodmFsdWUpKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBzZXJpYWxpemUoaSl9KSl9ZWxzZSBpZih0eXBlb2YgdmFsdWU9PT0ib2JqZWN0Iil7dmFyIGtleXM9T2JqZWN0LmtleXModmFsdWUpO2tleXMuc29ydCgpO3JldHVybiJ7IitrZXlzLm1hcChmdW5jdGlvbihrZXkpe3ZhciB2PXZhbHVlW2tleV07aWYodHlwZW9mIHY9PT0iZnVuY3Rpb24iKXt2PSJbZnVuY3Rpb25dIn1lbHNle3Y9c2VyaWFsaXplKHYpfXJldHVybiBKU09OLnN0cmluZ2lmeShrZXkpKyI6Iit2fSkuam9pbigiLCIpKyJ9In10aHJvdyBuZXcgRXJyb3IoInVua25vd24gdmFsdWUgdHlwZTogIit0eXBlb2YgdmFsdWUpfXZhciBuZXh0UmlkPTE7ZnVuY3Rpb24gc3RhbGwoZHVyYXRpb24pe3ZhciBjYW5jZWw9bnVsbDt2YXIgdGltZXI9bnVsbDt2YXIgcHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKXtjYW5jZWw9ZnVuY3Rpb24oKXtpZih0aW1lcil7Y2xlYXJUaW1lb3V0KHRpbWVyKTt0aW1lcj1udWxsfXJlc29sdmUoKX07dGltZXI9c2V0VGltZW91dChjYW5jZWwsZHVyYXRpb24pfSk7dmFyIHdhaXQ9ZnVuY3Rpb24oZnVuYyl7cHJvbWlzZT1wcm9taXNlLnRoZW4oZnVuYyk7cmV0dXJuIHByb21pc2V9O2Z1bmN0aW9uIGdldFByb21pc2UoKXtyZXR1cm4gcHJvbWlzZX1yZXR1cm57Y2FuY2VsOmNhbmNlbCxnZXRQcm9taXNlOmdldFByb21pc2Usd2FpdDp3YWl0fX12YXIgRm9yd2FyZEVycm9ycz1bbGliLkxvZ2dlci5lcnJvcnMuQ0FMTF9FWENFUFRJT04sbGliLkxvZ2dlci5lcnJvcnMuSU5TVUZGSUNJRU5UX0ZVTkRTLGxpYi5Mb2dnZXIuZXJyb3JzLk5PTkNFX0VYUElSRUQsbGliLkxvZ2dlci5lcnJvcnMuUkVQTEFDRU1FTlRfVU5ERVJQUklDRUQsbGliLkxvZ2dlci5lcnJvcnMuVU5QUkVESUNUQUJMRV9HQVNfTElNSVRdO3ZhciBGb3J3YXJkUHJvcGVydGllcz1bImFkZHJlc3MiLCJhcmdzIiwiZXJyb3JBcmdzIiwiZXJyb3JTaWduYXR1cmUiLCJtZXRob2QiLCJ0cmFuc2FjdGlvbiJdO2Z1bmN0aW9uIGV4cG9zZURlYnVnQ29uZmlnKGNvbmZpZyxub3cpe3ZhciByZXN1bHQ9e3dlaWdodDpjb25maWcud2VpZ2h0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzdWx0LCJwcm92aWRlciIse2dldDpmdW5jdGlvbigpe3JldHVybiBjb25maWcucHJvdmlkZXJ9fSk7aWYoY29uZmlnLnN0YXJ0KXtyZXN1bHQuc3RhcnQ9Y29uZmlnLnN0YXJ0fWlmKG5vdyl7cmVzdWx0LmR1cmF0aW9uPW5vdy1jb25maWcuc3RhcnR9aWYoY29uZmlnLmRvbmUpe2lmKGNvbmZpZy5lcnJvcil7cmVzdWx0LmVycm9yPWNvbmZpZy5lcnJvcn1lbHNle3Jlc3VsdC5yZXN1bHQ9Y29uZmlnLnJlc3VsdHx8bnVsbH19cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBub3JtYWxpemVkVGFsbHkobm9ybWFsaXplLHF1b3J1bSl7cmV0dXJuIGZ1bmN0aW9uKGNvbmZpZ3Mpe3ZhciB0YWxseT17fTtjb25maWdzLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIHZhbHVlPW5vcm1hbGl6ZShjLnJlc3VsdCk7aWYoIXRhbGx5W3ZhbHVlXSl7dGFsbHlbdmFsdWVdPXtjb3VudDowLHJlc3VsdDpjLnJlc3VsdH19dGFsbHlbdmFsdWVdLmNvdW50Kyt9KTt2YXIga2V5cz1PYmplY3Qua2V5cyh0YWxseSk7Zm9yKHZhciBpPTA7aTxrZXlzLmxlbmd0aDtpKyspe3ZhciBjaGVjaz10YWxseVtrZXlzW2ldXTtpZihjaGVjay5jb3VudD49cXVvcnVtKXtyZXR1cm4gY2hlY2sucmVzdWx0fX1yZXR1cm4gdW5kZWZpbmVkfX1mdW5jdGlvbiBnZXRQcm9jZXNzRnVuYyhwcm92aWRlcixtZXRob2QscGFyYW1zKXt2YXIgbm9ybWFsaXplPXNlcmlhbGl6ZTtzd2l0Y2gobWV0aG9kKXtjYXNlImdldEJsb2NrTnVtYmVyIjpyZXR1cm4gZnVuY3Rpb24oY29uZmlncyl7dmFyIHZhbHVlcz1jb25maWdzLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy5yZXN1bHR9KTt2YXIgYmxvY2tOdW1iZXI9bWVkaWFuKGNvbmZpZ3MubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBjLnJlc3VsdH0pLDIpO2lmKGJsb2NrTnVtYmVyPT1udWxsKXtyZXR1cm4gdW5kZWZpbmVkfWJsb2NrTnVtYmVyPU1hdGguY2VpbChibG9ja051bWJlcik7aWYodmFsdWVzLmluZGV4T2YoYmxvY2tOdW1iZXIrMSk+PTApe2Jsb2NrTnVtYmVyKyt9aWYoYmxvY2tOdW1iZXI+PXByb3ZpZGVyLl9oaWdoZXN0QmxvY2tOdW1iZXIpe3Byb3ZpZGVyLl9oaWdoZXN0QmxvY2tOdW1iZXI9YmxvY2tOdW1iZXJ9cmV0dXJuIHByb3ZpZGVyLl9oaWdoZXN0QmxvY2tOdW1iZXJ9O2Nhc2UiZ2V0R2FzUHJpY2UiOnJldHVybiBmdW5jdGlvbihjb25maWdzKXt2YXIgdmFsdWVzPWNvbmZpZ3MubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBjLnJlc3VsdH0pO3ZhbHVlcy5zb3J0KCk7cmV0dXJuIHZhbHVlc1tNYXRoLmZsb29yKHZhbHVlcy5sZW5ndGgvMildfTtjYXNlImdldEV0aGVyUHJpY2UiOnJldHVybiBmdW5jdGlvbihjb25maWdzKXtyZXR1cm4gbWVkaWFuKGNvbmZpZ3MubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBjLnJlc3VsdH0pKX07Y2FzZSJnZXRCYWxhbmNlIjpjYXNlImdldFRyYW5zYWN0aW9uQ291bnQiOmNhc2UiZ2V0Q29kZSI6Y2FzZSJnZXRTdG9yYWdlQXQiOmNhc2UiY2FsbCI6Y2FzZSJlc3RpbWF0ZUdhcyI6Y2FzZSJnZXRMb2dzIjpicmVhaztjYXNlImdldFRyYW5zYWN0aW9uIjpjYXNlImdldFRyYW5zYWN0aW9uUmVjZWlwdCI6bm9ybWFsaXplPWZ1bmN0aW9uKHR4KXtpZih0eD09bnVsbCl7cmV0dXJuIG51bGx9dHg9KDAsbGliJDMuc2hhbGxvd0NvcHkpKHR4KTt0eC5jb25maXJtYXRpb25zPS0xO3JldHVybiBzZXJpYWxpemUodHgpfTticmVhaztjYXNlImdldEJsb2NrIjppZihwYXJhbXMuaW5jbHVkZVRyYW5zYWN0aW9ucyl7bm9ybWFsaXplPWZ1bmN0aW9uKGJsb2NrKXtpZihibG9jaz09bnVsbCl7cmV0dXJuIG51bGx9YmxvY2s9KDAsbGliJDMuc2hhbGxvd0NvcHkpKGJsb2NrKTtibG9jay50cmFuc2FjdGlvbnM9YmxvY2sudHJhbnNhY3Rpb25zLm1hcChmdW5jdGlvbih0eCl7dHg9KDAsbGliJDMuc2hhbGxvd0NvcHkpKHR4KTt0eC5jb25maXJtYXRpb25zPS0xO3JldHVybiB0eH0pO3JldHVybiBzZXJpYWxpemUoYmxvY2spfX1lbHNle25vcm1hbGl6ZT1mdW5jdGlvbihibG9jayl7aWYoYmxvY2s9PW51bGwpe3JldHVybiBudWxsfXJldHVybiBzZXJpYWxpemUoYmxvY2spfX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5rbm93biBtZXRob2Q6ICIrbWV0aG9kKX1yZXR1cm4gbm9ybWFsaXplZFRhbGx5KG5vcm1hbGl6ZSxwcm92aWRlci5xdW9ydW0pfWZ1bmN0aW9uIHdhaXRGb3JTeW5jKGNvbmZpZyxibG9ja051bWJlcil7cmV0dXJuIF9fYXdhaXRlcih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgcHJvdmlkZXI7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3Byb3ZpZGVyPWNvbmZpZy5wcm92aWRlcjtpZihwcm92aWRlci5ibG9ja051bWJlciE9bnVsbCYmcHJvdmlkZXIuYmxvY2tOdW1iZXI+PWJsb2NrTnVtYmVyfHxibG9ja051bWJlcj09PS0xKXtyZXR1cm5bMixwcm92aWRlcl19cmV0dXJuWzIsKDAsbGliJHMucG9sbCkoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihwcm92aWRlci5ibG9ja051bWJlcj49YmxvY2tOdW1iZXIpe3JldHVybiByZXNvbHZlKHByb3ZpZGVyKX1pZihjb25maWcuY2FuY2VsbGVkKXtyZXR1cm4gcmVzb2x2ZShudWxsKX1yZXR1cm4gcmVzb2x2ZSh1bmRlZmluZWQpfSwwKX0pfSx7b25jZVBvbGw6cHJvdmlkZXJ9KV19KX0pfWZ1bmN0aW9uIGdldFJ1bm5lcihjb25maWcsY3VycmVudEJsb2NrTnVtYmVyLG1ldGhvZCxwYXJhbXMpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHByb3ZpZGVyLF9hLGZpbHRlcjtyZXR1cm4gX19nZW5lcmF0b3IodGhpcyxmdW5jdGlvbihfYil7c3dpdGNoKF9iLmxhYmVsKXtjYXNlIDA6cHJvdmlkZXI9Y29uZmlnLnByb3ZpZGVyO19hPW1ldGhvZDtzd2l0Y2goX2Epe2Nhc2UiZ2V0QmxvY2tOdW1iZXIiOnJldHVyblszLDFdO2Nhc2UiZ2V0R2FzUHJpY2UiOnJldHVyblszLDFdO2Nhc2UiZ2V0RXRoZXJQcmljZSI6cmV0dXJuWzMsMl07Y2FzZSJnZXRCYWxhbmNlIjpyZXR1cm5bMywzXTtjYXNlImdldFRyYW5zYWN0aW9uQ291bnQiOnJldHVyblszLDNdO2Nhc2UiZ2V0Q29kZSI6cmV0dXJuWzMsM107Y2FzZSJnZXRTdG9yYWdlQXQiOnJldHVyblszLDZdO2Nhc2UiZ2V0QmxvY2siOnJldHVyblszLDldO2Nhc2UiY2FsbCI6cmV0dXJuWzMsMTJdO2Nhc2UiZXN0aW1hdGVHYXMiOnJldHVyblszLDEyXTtjYXNlImdldFRyYW5zYWN0aW9uIjpyZXR1cm5bMywxNV07Y2FzZSJnZXRUcmFuc2FjdGlvblJlY2VpcHQiOnJldHVyblszLDE1XTtjYXNlImdldExvZ3MiOnJldHVyblszLDE2XX1yZXR1cm5bMywxOV07Y2FzZSAxOnJldHVyblsyLHByb3ZpZGVyW21ldGhvZF0oKV07Y2FzZSAyOmlmKHByb3ZpZGVyLmdldEV0aGVyUHJpY2Upe3JldHVyblsyLHByb3ZpZGVyLmdldEV0aGVyUHJpY2UoKV19cmV0dXJuWzMsMTldO2Nhc2UgMzppZighKHBhcmFtcy5ibG9ja1RhZyYmKDAsbGliJDEuaXNIZXhTdHJpbmcpKHBhcmFtcy5ibG9ja1RhZykpKXJldHVyblszLDVdO3JldHVybls0LHdhaXRGb3JTeW5jKGNvbmZpZyxjdXJyZW50QmxvY2tOdW1iZXIpXTtjYXNlIDQ6cHJvdmlkZXI9X2Iuc2VudCgpO19iLmxhYmVsPTU7Y2FzZSA1OnJldHVyblsyLHByb3ZpZGVyW21ldGhvZF0ocGFyYW1zLmFkZHJlc3MscGFyYW1zLmJsb2NrVGFnfHwibGF0ZXN0IildO2Nhc2UgNjppZighKHBhcmFtcy5ibG9ja1RhZyYmKDAsbGliJDEuaXNIZXhTdHJpbmcpKHBhcmFtcy5ibG9ja1RhZykpKXJldHVyblszLDhdO3JldHVybls0LHdhaXRGb3JTeW5jKGNvbmZpZyxjdXJyZW50QmxvY2tOdW1iZXIpXTtjYXNlIDc6cHJvdmlkZXI9X2Iuc2VudCgpO19iLmxhYmVsPTg7Y2FzZSA4OnJldHVyblsyLHByb3ZpZGVyLmdldFN0b3JhZ2VBdChwYXJhbXMuYWRkcmVzcyxwYXJhbXMucG9zaXRpb24scGFyYW1zLmJsb2NrVGFnfHwibGF0ZXN0IildO2Nhc2UgOTppZighKHBhcmFtcy5ibG9ja1RhZyYmKDAsbGliJDEuaXNIZXhTdHJpbmcpKHBhcmFtcy5ibG9ja1RhZykpKXJldHVyblszLDExXTtyZXR1cm5bNCx3YWl0Rm9yU3luYyhjb25maWcsY3VycmVudEJsb2NrTnVtYmVyKV07Y2FzZSAxMDpwcm92aWRlcj1fYi5zZW50KCk7X2IubGFiZWw9MTE7Y2FzZSAxMTpyZXR1cm5bMixwcm92aWRlcltwYXJhbXMuaW5jbHVkZVRyYW5zYWN0aW9ucz8iZ2V0QmxvY2tXaXRoVHJhbnNhY3Rpb25zIjoiZ2V0QmxvY2siXShwYXJhbXMuYmxvY2tUYWd8fHBhcmFtcy5ibG9ja0hhc2gpXTtjYXNlIDEyOmlmKCEocGFyYW1zLmJsb2NrVGFnJiYoMCxsaWIkMS5pc0hleFN0cmluZykocGFyYW1zLmJsb2NrVGFnKSkpcmV0dXJuWzMsMTRdO3JldHVybls0LHdhaXRGb3JTeW5jKGNvbmZpZyxjdXJyZW50QmxvY2tOdW1iZXIpXTtjYXNlIDEzOnByb3ZpZGVyPV9iLnNlbnQoKTtfYi5sYWJlbD0xNDtjYXNlIDE0OmlmKG1ldGhvZD09PSJjYWxsIiYmcGFyYW1zLmJsb2NrVGFnKXtyZXR1cm5bMixwcm92aWRlclttZXRob2RdKHBhcmFtcy50cmFuc2FjdGlvbixwYXJhbXMuYmxvY2tUYWcpXX1yZXR1cm5bMixwcm92aWRlclttZXRob2RdKHBhcmFtcy50cmFuc2FjdGlvbildO2Nhc2UgMTU6cmV0dXJuWzIscHJvdmlkZXJbbWV0aG9kXShwYXJhbXMudHJhbnNhY3Rpb25IYXNoKV07Y2FzZSAxNjpmaWx0ZXI9cGFyYW1zLmZpbHRlcjtpZighKGZpbHRlci5mcm9tQmxvY2smJigwLGxpYiQxLmlzSGV4U3RyaW5nKShmaWx0ZXIuZnJvbUJsb2NrKXx8ZmlsdGVyLnRvQmxvY2smJigwLGxpYiQxLmlzSGV4U3RyaW5nKShmaWx0ZXIudG9CbG9jaykpKXJldHVyblszLDE4XTtyZXR1cm5bNCx3YWl0Rm9yU3luYyhjb25maWcsY3VycmVudEJsb2NrTnVtYmVyKV07Y2FzZSAxNzpwcm92aWRlcj1fYi5zZW50KCk7X2IubGFiZWw9MTg7Y2FzZSAxODpyZXR1cm5bMixwcm92aWRlci5nZXRMb2dzKGZpbHRlcildO2Nhc2UgMTk6cmV0dXJuWzIsbG9nZ2VyLnRocm93RXJyb3IoInVua25vd24gbWV0aG9kIGVycm9yIixsaWIuTG9nZ2VyLmVycm9ycy5VTktOT1dOX0VSUk9SLHttZXRob2Q6bWV0aG9kLHBhcmFtczpwYXJhbXN9KV19fSl9KX12YXIgRmFsbGJhY2tQcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhGYWxsYmFja1Byb3ZpZGVyLF9zdXBlcik7ZnVuY3Rpb24gRmFsbGJhY2tQcm92aWRlcihwcm92aWRlcnMscXVvcnVtKXt2YXIgX3RoaXM9dGhpcztpZihwcm92aWRlcnMubGVuZ3RoPT09MCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigibWlzc2luZyBwcm92aWRlcnMiLCJwcm92aWRlcnMiLHByb3ZpZGVycyl9dmFyIHByb3ZpZGVyQ29uZmlncz1wcm92aWRlcnMubWFwKGZ1bmN0aW9uKGNvbmZpZ09yUHJvdmlkZXIsaW5kZXgpe2lmKGxpYiRlLlByb3ZpZGVyLmlzUHJvdmlkZXIoY29uZmlnT3JQcm92aWRlcikpe3ZhciBzdGFsbFRpbWVvdXQ9KDAsZm9ybWF0dGVyLmlzQ29tbXVuaXR5UmVzb3VyY2UpKGNvbmZpZ09yUHJvdmlkZXIpPzJlMzo3NTA7dmFyIHByaW9yaXR5PTE7cmV0dXJuIE9iamVjdC5mcmVlemUoe3Byb3ZpZGVyOmNvbmZpZ09yUHJvdmlkZXIsd2VpZ2h0OjEsc3RhbGxUaW1lb3V0OnN0YWxsVGltZW91dCxwcmlvcml0eTpwcmlvcml0eX0pfXZhciBjb25maWc9KDAsbGliJDMuc2hhbGxvd0NvcHkpKGNvbmZpZ09yUHJvdmlkZXIpO2lmKGNvbmZpZy5wcmlvcml0eT09bnVsbCl7Y29uZmlnLnByaW9yaXR5PTF9aWYoY29uZmlnLnN0YWxsVGltZW91dD09bnVsbCl7Y29uZmlnLnN0YWxsVGltZW91dD0oMCxmb3JtYXR0ZXIuaXNDb21tdW5pdHlSZXNvdXJjZSkoY29uZmlnT3JQcm92aWRlcik/MmUzOjc1MH1pZihjb25maWcud2VpZ2h0PT1udWxsKXtjb25maWcud2VpZ2h0PTF9dmFyIHdlaWdodD1jb25maWcud2VpZ2h0O2lmKHdlaWdodCUxfHx3ZWlnaHQ+NTEyfHx3ZWlnaHQ8MSl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCB3ZWlnaHQ7IG11c3QgYmUgaW50ZWdlciBpbiBbMSwgNTEyXSIsInByb3ZpZGVyc1siK2luZGV4KyJdLndlaWdodCIsd2VpZ2h0KX1yZXR1cm4gT2JqZWN0LmZyZWV6ZShjb25maWcpfSk7dmFyIHRvdGFsPXByb3ZpZGVyQ29uZmlncy5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sYyl7cmV0dXJuIGFjY3VtK2Mud2VpZ2h0fSwwKTtpZihxdW9ydW09PW51bGwpe3F1b3J1bT10b3RhbC8yfWVsc2UgaWYocXVvcnVtPnRvdGFsKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJxdW9ydW0gd2lsbCBhbHdheXMgZmFpbDsgbGFyZ2VyIHRoYW4gdG90YWwgd2VpZ2h0IiwicXVvcnVtIixxdW9ydW0pfXZhciBuZXR3b3JrT3JSZWFkeT1jaGVja05ldHdvcmtzKHByb3ZpZGVyQ29uZmlncy5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGMucHJvdmlkZXIubmV0d29ya30pKTtpZihuZXR3b3JrT3JSZWFkeT09bnVsbCl7bmV0d29ya09yUmVhZHk9bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtfdGhpcy5kZXRlY3ROZXR3b3JrKCkudGhlbihyZXNvbHZlLHJlamVjdCl9LDApfSl9X3RoaXM9X3N1cGVyLmNhbGwodGhpcyxuZXR3b3JrT3JSZWFkeSl8fHRoaXM7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJwcm92aWRlckNvbmZpZ3MiLE9iamVjdC5mcmVlemUocHJvdmlkZXJDb25maWdzKSk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJxdW9ydW0iLHF1b3J1bSk7X3RoaXMuX2hpZ2hlc3RCbG9ja051bWJlcj0tMTtyZXR1cm4gX3RoaXN9RmFsbGJhY2tQcm92aWRlci5wcm90b3R5cGUuZGV0ZWN0TmV0d29yaz1mdW5jdGlvbigpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIG5ldHdvcmtzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9hKXtzd2l0Y2goX2EubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxQcm9taXNlLmFsbCh0aGlzLnByb3ZpZGVyQ29uZmlncy5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGMucHJvdmlkZXIuZ2V0TmV0d29yaygpfSkpXTtjYXNlIDE6bmV0d29ya3M9X2Euc2VudCgpO3JldHVyblsyLGNoZWNrTmV0d29ya3MobmV0d29ya3MpXX19KX0pfTtGYWxsYmFja1Byb3ZpZGVyLnByb3RvdHlwZS5wZXJmb3JtPWZ1bmN0aW9uKG1ldGhvZCxwYXJhbXMpe3JldHVybiBfX2F3YWl0ZXIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHJlc3VsdHMsaV8xLHJlc3VsdCxwcm9jZXNzRnVuYyxjb25maWdzLGN1cnJlbnRCbG9ja051bWJlcixpLGZpcnN0LF9sb29wXzEsdGhpc18xLHN0YXRlXzE7dmFyIF90aGlzPXRoaXM7cmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsZnVuY3Rpb24oX2Epe3N3aXRjaChfYS5sYWJlbCl7Y2FzZSAwOmlmKCEobWV0aG9kPT09InNlbmRUcmFuc2FjdGlvbiIpKXJldHVyblszLDJdO3JldHVybls0LFByb21pc2UuYWxsKHRoaXMucHJvdmlkZXJDb25maWdzLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy5wcm92aWRlci5zZW5kVHJhbnNhY3Rpb24ocGFyYW1zLnNpZ25lZFRyYW5zYWN0aW9uKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCl7cmV0dXJuIHJlc3VsdC5oYXNofSxmdW5jdGlvbihlcnJvcil7cmV0dXJuIGVycm9yfSl9KSldO2Nhc2UgMTpyZXN1bHRzPV9hLnNlbnQoKTtmb3IoaV8xPTA7aV8xPHJlc3VsdHMubGVuZ3RoO2lfMSsrKXtyZXN1bHQ9cmVzdWx0c1tpXzFdO2lmKHR5cGVvZiByZXN1bHQ9PT0ic3RyaW5nIil7cmV0dXJuWzIscmVzdWx0XX19dGhyb3cgcmVzdWx0c1swXTtjYXNlIDI6aWYoISh0aGlzLl9oaWdoZXN0QmxvY2tOdW1iZXI9PT0tMSYmbWV0aG9kIT09ImdldEJsb2NrTnVtYmVyIikpcmV0dXJuWzMsNF07cmV0dXJuWzQsdGhpcy5nZXRCbG9ja051bWJlcigpXTtjYXNlIDM6X2Euc2VudCgpO19hLmxhYmVsPTQ7Y2FzZSA0OnByb2Nlc3NGdW5jPWdldFByb2Nlc3NGdW5jKHRoaXMsbWV0aG9kLHBhcmFtcyk7Y29uZmlncz0oMCxsaWIkby5zaHVmZmxlZCkodGhpcy5wcm92aWRlckNvbmZpZ3MubWFwKGxpYiQzLnNoYWxsb3dDb3B5KSk7Y29uZmlncy5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEucHJpb3JpdHktYi5wcmlvcml0eX0pO2N1cnJlbnRCbG9ja051bWJlcj10aGlzLl9oaWdoZXN0QmxvY2tOdW1iZXI7aT0wO2ZpcnN0PXRydWU7X2xvb3BfMT1mdW5jdGlvbigpe3ZhciB0MCxpbmZsaWdodFdlaWdodCxfbG9vcF8yLHdhaXRpbmcscmVzdWx0cyxyZXN1bHQsZXJyb3JzO3JldHVybiBfX2dlbmVyYXRvcih0aGlzLGZ1bmN0aW9uKF9iKXtzd2l0Y2goX2IubGFiZWwpe2Nhc2UgMDp0MD1ub3coKTtpbmZsaWdodFdlaWdodD1jb25maWdzLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gYy5ydW5uZXImJnQwLWMuc3RhcnQ8Yy5zdGFsbFRpbWVvdXR9KS5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sYyl7cmV0dXJuIGFjY3VtK2Mud2VpZ2h0fSwwKTtfbG9vcF8yPWZ1bmN0aW9uKCl7dmFyIGNvbmZpZz1jb25maWdzW2krK107dmFyIHJpZD1uZXh0UmlkKys7Y29uZmlnLnN0YXJ0PW5vdygpO2NvbmZpZy5zdGFsbGVyPXN0YWxsKGNvbmZpZy5zdGFsbFRpbWVvdXQpO2NvbmZpZy5zdGFsbGVyLndhaXQoZnVuY3Rpb24oKXtjb25maWcuc3RhbGxlcj1udWxsfSk7Y29uZmlnLnJ1bm5lcj1nZXRSdW5uZXIoY29uZmlnLGN1cnJlbnRCbG9ja051bWJlcixtZXRob2QscGFyYW1zKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCl7Y29uZmlnLmRvbmU9dHJ1ZTtjb25maWcucmVzdWx0PXJlc3VsdDtpZihfdGhpcy5saXN0ZW5lckNvdW50KCJkZWJ1ZyIpKXtfdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVxdWVzdCIscmlkOnJpZCxiYWNrZW5kOmV4cG9zZURlYnVnQ29uZmlnKGNvbmZpZyxub3coKSkscmVxdWVzdDp7bWV0aG9kOm1ldGhvZCxwYXJhbXM6KDAsbGliJDMuZGVlcENvcHkpKHBhcmFtcyl9LHByb3ZpZGVyOl90aGlzfSl9fSxmdW5jdGlvbihlcnJvcil7Y29uZmlnLmRvbmU9dHJ1ZTtjb25maWcuZXJyb3I9ZXJyb3I7aWYoX3RoaXMubGlzdGVuZXJDb3VudCgiZGVidWciKSl7X3RoaXMuZW1pdCgiZGVidWciLHthY3Rpb246InJlcXVlc3QiLHJpZDpyaWQsYmFja2VuZDpleHBvc2VEZWJ1Z0NvbmZpZyhjb25maWcsbm93KCkpLHJlcXVlc3Q6e21ldGhvZDptZXRob2QscGFyYW1zOigwLGxpYiQzLmRlZXBDb3B5KShwYXJhbXMpfSxwcm92aWRlcjpfdGhpc30pfX0pO2lmKHRoaXNfMS5saXN0ZW5lckNvdW50KCJkZWJ1ZyIpKXt0aGlzXzEuZW1pdCgiZGVidWciLHthY3Rpb246InJlcXVlc3QiLHJpZDpyaWQsYmFja2VuZDpleHBvc2VEZWJ1Z0NvbmZpZyhjb25maWcsbnVsbCkscmVxdWVzdDp7bWV0aG9kOm1ldGhvZCxwYXJhbXM6KDAsbGliJDMuZGVlcENvcHkpKHBhcmFtcyl9LHByb3ZpZGVyOnRoaXNfMX0pfWluZmxpZ2h0V2VpZ2h0Kz1jb25maWcud2VpZ2h0fTt3aGlsZShpbmZsaWdodFdlaWdodDx0aGlzXzEucXVvcnVtJiZpPGNvbmZpZ3MubGVuZ3RoKXtfbG9vcF8yKCl9d2FpdGluZz1bXTtjb25maWdzLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoYy5kb25lfHwhYy5ydW5uZXIpe3JldHVybn13YWl0aW5nLnB1c2goYy5ydW5uZXIpO2lmKGMuc3RhbGxlcil7d2FpdGluZy5wdXNoKGMuc3RhbGxlci5nZXRQcm9taXNlKCkpfX0pO2lmKCF3YWl0aW5nLmxlbmd0aClyZXR1cm5bMywyXTtyZXR1cm5bNCxQcm9taXNlLnJhY2Uod2FpdGluZyldO2Nhc2UgMTpfYi5zZW50KCk7X2IubGFiZWw9MjtjYXNlIDI6cmVzdWx0cz1jb25maWdzLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gYy5kb25lJiZjLmVycm9yPT1udWxsfSk7aWYoIShyZXN1bHRzLmxlbmd0aD49dGhpc18xLnF1b3J1bSkpcmV0dXJuWzMsNV07cmVzdWx0PXByb2Nlc3NGdW5jKHJlc3VsdHMpO2lmKHJlc3VsdCE9PXVuZGVmaW5lZCl7Y29uZmlncy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKGMuc3RhbGxlcil7Yy5zdGFsbGVyLmNhbmNlbCgpfWMuY2FuY2VsbGVkPXRydWV9KTtyZXR1cm5bMix7dmFsdWU6cmVzdWx0fV19aWYoISFmaXJzdClyZXR1cm5bMyw0XTtyZXR1cm5bNCxzdGFsbCgxMDApLmdldFByb21pc2UoKV07Y2FzZSAzOl9iLnNlbnQoKTtfYi5sYWJlbD00O2Nhc2UgNDpmaXJzdD1mYWxzZTtfYi5sYWJlbD01O2Nhc2UgNTplcnJvcnM9Y29uZmlncy5yZWR1Y2UoZnVuY3Rpb24oYWNjdW0sYyl7aWYoIWMuZG9uZXx8Yy5lcnJvcj09bnVsbCl7cmV0dXJuIGFjY3VtfXZhciBjb2RlPWMuZXJyb3IuY29kZTtpZihGb3J3YXJkRXJyb3JzLmluZGV4T2YoY29kZSk+PTApe2lmKCFhY2N1bVtjb2RlXSl7YWNjdW1bY29kZV09e2Vycm9yOmMuZXJyb3Isd2VpZ2h0OjB9fWFjY3VtW2NvZGVdLndlaWdodCs9Yy53ZWlnaHR9cmV0dXJuIGFjY3VtfSx7fSk7T2JqZWN0LmtleXMoZXJyb3JzKS5mb3JFYWNoKGZ1bmN0aW9uKGVycm9yQ29kZSl7dmFyIHRhbGx5PWVycm9yc1tlcnJvckNvZGVdO2lmKHRhbGx5LndlaWdodDxfdGhpcy5xdW9ydW0pe3JldHVybn1jb25maWdzLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoYy5zdGFsbGVyKXtjLnN0YWxsZXIuY2FuY2VsKCl9Yy5jYW5jZWxsZWQ9dHJ1ZX0pO3ZhciBlPXRhbGx5LmVycm9yO3ZhciBwcm9wcz17fTtGb3J3YXJkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpe2lmKGVbbmFtZV09PW51bGwpe3JldHVybn1wcm9wc1tuYW1lXT1lW25hbWVdfSk7bG9nZ2VyLnRocm93RXJyb3IoZS5yZWFzb258fGUubWVzc2FnZSxlcnJvckNvZGUscHJvcHMpfSk7aWYoY29uZmlncy5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIWMuZG9uZX0pLmxlbmd0aD09PTApe3JldHVyblsyLCJicmVhayJdfXJldHVyblsyXX19KX07dGhpc18xPXRoaXM7X2EubGFiZWw9NTtjYXNlIDU6aWYoIXRydWUpcmV0dXJuWzMsN107cmV0dXJuWzUsX2xvb3BfMSgpXTtjYXNlIDY6c3RhdGVfMT1fYS5zZW50KCk7aWYodHlwZW9mIHN0YXRlXzE9PT0ib2JqZWN0IilyZXR1cm5bMixzdGF0ZV8xLnZhbHVlXTtpZihzdGF0ZV8xPT09ImJyZWFrIilyZXR1cm5bMyw3XTtyZXR1cm5bMyw1XTtjYXNlIDc6Y29uZmlncy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKGMuc3RhbGxlcil7Yy5zdGFsbGVyLmNhbmNlbCgpfWMuY2FuY2VsbGVkPXRydWV9KTtyZXR1cm5bMixsb2dnZXIudGhyb3dFcnJvcigiZmFpbGVkIHRvIG1lZXQgcXVvcnVtIixsaWIuTG9nZ2VyLmVycm9ycy5TRVJWRVJfRVJST1Ise21ldGhvZDptZXRob2QscGFyYW1zOnBhcmFtcyxyZXN1bHRzOmNvbmZpZ3MubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBleHBvc2VEZWJ1Z0NvbmZpZyhjKX0pLHByb3ZpZGVyOnRoaXN9KV19fSl9KX07cmV0dXJuIEZhbGxiYWNrUHJvdmlkZXJ9KGJhc2VQcm92aWRlci5CYXNlUHJvdmlkZXIpO2V4cG9ydHMuRmFsbGJhY2tQcm92aWRlcj1GYWxsYmFja1Byb3ZpZGVyfSk7dmFyIGZhbGxiYWNrUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhmYWxsYmFja1Byb3ZpZGVyKTt2YXIgYnJvd3NlcklwY1Byb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5JcGNQcm92aWRlcj12b2lkIDA7dmFyIElwY1Byb3ZpZGVyPW51bGw7ZXhwb3J0cy5JcGNQcm92aWRlcj1JcGNQcm92aWRlcn0pO3ZhciBicm93c2VySXBjUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhicm93c2VySXBjUHJvdmlkZXIpO3ZhciBpbmZ1cmFQcm92aWRlcj1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2V4dGVuZHM9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZXh0ZW5kU3RhdGljcz1mdW5jdGlvbihkLGIpe2V4dGVuZFN0YXRpY3M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBwIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIscCkpZFtwXT1iW3BdfTtyZXR1cm4gZXh0ZW5kU3RhdGljcyhkLGIpfTtyZXR1cm4gZnVuY3Rpb24oZCxiKXtpZih0eXBlb2YgYiE9PSJmdW5jdGlvbiImJmIhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcoYikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZXh0ZW5kU3RhdGljcyhkLGIpO2Z1bmN0aW9uIF9fKCl7dGhpcy5jb25zdHJ1Y3Rvcj1kfWQucHJvdG90eXBlPWI9PT1udWxsP09iamVjdC5jcmVhdGUoYik6KF9fLnByb3RvdHlwZT1iLnByb3RvdHlwZSxuZXcgX18pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLkluZnVyYVByb3ZpZGVyPWV4cG9ydHMuSW5mdXJhV2ViU29ja2V0UHJvdmlkZXI9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kSS52ZXJzaW9uKTt2YXIgZGVmYXVsdFByb2plY3RJZD0iODQ4NDIwNzhiMDk5NDY2MzhjMDMxNTdmODM0MDUyMTMiO3ZhciBJbmZ1cmFXZWJTb2NrZXRQcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhJbmZ1cmFXZWJTb2NrZXRQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIEluZnVyYVdlYlNvY2tldFByb3ZpZGVyKG5ldHdvcmssYXBpS2V5KXt2YXIgX3RoaXM9dGhpczt2YXIgcHJvdmlkZXI9bmV3IEluZnVyYVByb3ZpZGVyKG5ldHdvcmssYXBpS2V5KTt2YXIgY29ubmVjdGlvbj1wcm92aWRlci5jb25uZWN0aW9uO2lmKGNvbm5lY3Rpb24ucGFzc3dvcmQpe2xvZ2dlci50aHJvd0Vycm9yKCJJTkZVUkEgV2ViU29ja2V0IHByb2plY3Qgc2VjcmV0cyB1bnN1cHBvcnRlZCIsbGliLkxvZ2dlci5lcnJvcnMuVU5TVVBQT1JURURfT1BFUkFUSU9OLHtvcGVyYXRpb246IkluZnVyYVByb3ZpZGVyLmdldFdlYlNvY2tldFByb3ZpZGVyKCkifSl9dmFyIHVybD1jb25uZWN0aW9uLnVybC5yZXBsYWNlKC9eaHR0cC9pLCJ3cyIpLnJlcGxhY2UoIi92My8iLCIvd3MvdjMvIik7X3RoaXM9X3N1cGVyLmNhbGwodGhpcyx1cmwsbmV0d29yayl8fHRoaXM7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJhcGlLZXkiLHByb3ZpZGVyLnByb2plY3RJZCk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJwcm9qZWN0SWQiLHByb3ZpZGVyLnByb2plY3RJZCk7KDAsbGliJDMuZGVmaW5lUmVhZE9ubHkpKF90aGlzLCJwcm9qZWN0U2VjcmV0Iixwcm92aWRlci5wcm9qZWN0U2VjcmV0KTtyZXR1cm4gX3RoaXN9SW5mdXJhV2ViU29ja2V0UHJvdmlkZXIucHJvdG90eXBlLmlzQ29tbXVuaXR5UmVzb3VyY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9qZWN0SWQ9PT1kZWZhdWx0UHJvamVjdElkfTtyZXR1cm4gSW5mdXJhV2ViU29ja2V0UHJvdmlkZXJ9KHdlYnNvY2tldFByb3ZpZGVyLldlYlNvY2tldFByb3ZpZGVyKTtleHBvcnRzLkluZnVyYVdlYlNvY2tldFByb3ZpZGVyPUluZnVyYVdlYlNvY2tldFByb3ZpZGVyO3ZhciBJbmZ1cmFQcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhJbmZ1cmFQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIEluZnVyYVByb3ZpZGVyKCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9SW5mdXJhUHJvdmlkZXIuZ2V0V2ViU29ja2V0UHJvdmlkZXI9ZnVuY3Rpb24obmV0d29yayxhcGlLZXkpe3JldHVybiBuZXcgSW5mdXJhV2ViU29ja2V0UHJvdmlkZXIobmV0d29yayxhcGlLZXkpfTtJbmZ1cmFQcm92aWRlci5nZXRBcGlLZXk9ZnVuY3Rpb24oYXBpS2V5KXt2YXIgYXBpS2V5T2JqPXthcGlLZXk6ZGVmYXVsdFByb2plY3RJZCxwcm9qZWN0SWQ6ZGVmYXVsdFByb2plY3RJZCxwcm9qZWN0U2VjcmV0Om51bGx9O2lmKGFwaUtleT09bnVsbCl7cmV0dXJuIGFwaUtleU9ian1pZih0eXBlb2YgYXBpS2V5PT09InN0cmluZyIpe2FwaUtleU9iai5wcm9qZWN0SWQ9YXBpS2V5fWVsc2UgaWYoYXBpS2V5LnByb2plY3RTZWNyZXQhPW51bGwpe2xvZ2dlci5hc3NlcnRBcmd1bWVudCh0eXBlb2YgYXBpS2V5LnByb2plY3RJZD09PSJzdHJpbmciLCJwcm9qZWN0U2VjcmV0IHJlcXVpcmVzIGEgcHJvamVjdElkIiwicHJvamVjdElkIixhcGlLZXkucHJvamVjdElkKTtsb2dnZXIuYXNzZXJ0QXJndW1lbnQodHlwZW9mIGFwaUtleS5wcm9qZWN0U2VjcmV0PT09InN0cmluZyIsImludmFsaWQgcHJvamVjdFNlY3JldCIsInByb2plY3RTZWNyZXQiLCJbUkVEQUNURURdIik7YXBpS2V5T2JqLnByb2plY3RJZD1hcGlLZXkucHJvamVjdElkO2FwaUtleU9iai5wcm9qZWN0U2VjcmV0PWFwaUtleS5wcm9qZWN0U2VjcmV0fWVsc2UgaWYoYXBpS2V5LnByb2plY3RJZCl7YXBpS2V5T2JqLnByb2plY3RJZD1hcGlLZXkucHJvamVjdElkfWFwaUtleU9iai5hcGlLZXk9YXBpS2V5T2JqLnByb2plY3RJZDtyZXR1cm4gYXBpS2V5T2JqfTtJbmZ1cmFQcm92aWRlci5nZXRVcmw9ZnVuY3Rpb24obmV0d29yayxhcGlLZXkpe3ZhciBob3N0PW51bGw7c3dpdGNoKG5ldHdvcms/bmV0d29yay5uYW1lOiJ1bmtub3duIil7Y2FzZSJob21lc3RlYWQiOmhvc3Q9Im1haW5uZXQuaW5mdXJhLmlvIjticmVhaztjYXNlImdvZXJsaSI6aG9zdD0iZ29lcmxpLmluZnVyYS5pbyI7YnJlYWs7Y2FzZSJzZXBvbGlhIjpob3N0PSJzZXBvbGlhLmluZnVyYS5pbyI7YnJlYWs7Y2FzZSJtYXRpYyI6aG9zdD0icG9seWdvbi1tYWlubmV0LmluZnVyYS5pbyI7YnJlYWs7Y2FzZSJtYXRpY211bSI6aG9zdD0icG9seWdvbi1tdW1iYWkuaW5mdXJhLmlvIjticmVhaztjYXNlIm9wdGltaXNtIjpob3N0PSJvcHRpbWlzbS1tYWlubmV0LmluZnVyYS5pbyI7YnJlYWs7Y2FzZSJvcHRpbWlzbS1nb2VybGkiOmhvc3Q9Im9wdGltaXNtLWdvZXJsaS5pbmZ1cmEuaW8iO2JyZWFrO2Nhc2UiYXJiaXRydW0iOmhvc3Q9ImFyYml0cnVtLW1haW5uZXQuaW5mdXJhLmlvIjticmVhaztjYXNlImFyYml0cnVtLWdvZXJsaSI6aG9zdD0iYXJiaXRydW0tZ29lcmxpLmluZnVyYS5pbyI7YnJlYWs7ZGVmYXVsdDpsb2dnZXIudGhyb3dFcnJvcigidW5zdXBwb3J0ZWQgbmV0d29yayIsbGliLkxvZ2dlci5lcnJvcnMuSU5WQUxJRF9BUkdVTUVOVCx7YXJndW1lbnQ6Im5ldHdvcmsiLHZhbHVlOm5ldHdvcmt9KX12YXIgY29ubmVjdGlvbj17YWxsb3dHemlwOnRydWUsdXJsOiJodHRwczovIisiLyIraG9zdCsiL3YzLyIrYXBpS2V5LnByb2plY3RJZCx0aHJvdHRsZUNhbGxiYWNrOmZ1bmN0aW9uKGF0dGVtcHQsdXJsKXtpZihhcGlLZXkucHJvamVjdElkPT09ZGVmYXVsdFByb2plY3RJZCl7KDAsZm9ybWF0dGVyLnNob3dUaHJvdHRsZU1lc3NhZ2UpKCl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKX19O2lmKGFwaUtleS5wcm9qZWN0U2VjcmV0IT1udWxsKXtjb25uZWN0aW9uLnVzZXI9IiI7Y29ubmVjdGlvbi5wYXNzd29yZD1hcGlLZXkucHJvamVjdFNlY3JldH1yZXR1cm4gY29ubmVjdGlvbn07SW5mdXJhUHJvdmlkZXIucHJvdG90eXBlLmlzQ29tbXVuaXR5UmVzb3VyY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9qZWN0SWQ9PT1kZWZhdWx0UHJvamVjdElkfTtyZXR1cm4gSW5mdXJhUHJvdmlkZXJ9KHVybEpzb25ScGNQcm92aWRlci5VcmxKc29uUnBjUHJvdmlkZXIpO2V4cG9ydHMuSW5mdXJhUHJvdmlkZXI9SW5mdXJhUHJvdmlkZXJ9KTt2YXIgaW5mdXJhUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhpbmZ1cmFQcm92aWRlcik7dmFyIGpzb25ScGNCYXRjaFByb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuSnNvblJwY0JhdGNoUHJvdmlkZXI9dm9pZCAwO3ZhciBKc29uUnBjQmF0Y2hQcm92aWRlcj1mdW5jdGlvbihfc3VwZXIpe19fZXh0ZW5kcyhKc29uUnBjQmF0Y2hQcm92aWRlcixfc3VwZXIpO2Z1bmN0aW9uIEpzb25ScGNCYXRjaFByb3ZpZGVyKCl7cmV0dXJuIF9zdXBlciE9PW51bGwmJl9zdXBlci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9SnNvblJwY0JhdGNoUHJvdmlkZXIucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24obWV0aG9kLHBhcmFtcyl7dmFyIF90aGlzPXRoaXM7dmFyIHJlcXVlc3Q9e21ldGhvZDptZXRob2QscGFyYW1zOnBhcmFtcyxpZDp0aGlzLl9uZXh0SWQrKyxqc29ucnBjOiIyLjAifTtpZih0aGlzLl9wZW5kaW5nQmF0Y2g9PW51bGwpe3RoaXMuX3BlbmRpbmdCYXRjaD1bXX12YXIgaW5mbGlnaHRSZXF1ZXN0PXtyZXF1ZXN0OnJlcXVlc3QscmVzb2x2ZTpudWxsLHJlamVjdDpudWxsfTt2YXIgcHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7aW5mbGlnaHRSZXF1ZXN0LnJlc29sdmU9cmVzb2x2ZTtpbmZsaWdodFJlcXVlc3QucmVqZWN0PXJlamVjdH0pO3RoaXMuX3BlbmRpbmdCYXRjaC5wdXNoKGluZmxpZ2h0UmVxdWVzdCk7aWYoIXRoaXMuX3BlbmRpbmdCYXRjaEFnZ3JlZ2F0b3Ipe3RoaXMuX3BlbmRpbmdCYXRjaEFnZ3JlZ2F0b3I9c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBiYXRjaD1fdGhpcy5fcGVuZGluZ0JhdGNoO190aGlzLl9wZW5kaW5nQmF0Y2g9bnVsbDtfdGhpcy5fcGVuZGluZ0JhdGNoQWdncmVnYXRvcj1udWxsO3ZhciByZXF1ZXN0PWJhdGNoLm1hcChmdW5jdGlvbihpbmZsaWdodCl7cmV0dXJuIGluZmxpZ2h0LnJlcXVlc3R9KTtfdGhpcy5lbWl0KCJkZWJ1ZyIse2FjdGlvbjoicmVxdWVzdEJhdGNoIixyZXF1ZXN0OigwLGxpYiQzLmRlZXBDb3B5KShyZXF1ZXN0KSxwcm92aWRlcjpfdGhpc30pO3JldHVybigwLGxpYiRzLmZldGNoSnNvbikoX3RoaXMuY29ubmVjdGlvbixKU09OLnN0cmluZ2lmeShyZXF1ZXN0KSkudGhlbihmdW5jdGlvbihyZXN1bHQpe190aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXNwb25zZSIscmVxdWVzdDpyZXF1ZXN0LHJlc3BvbnNlOnJlc3VsdCxwcm92aWRlcjpfdGhpc30pO2JhdGNoLmZvckVhY2goZnVuY3Rpb24oaW5mbGlnaHRSZXF1ZXN0LGluZGV4KXt2YXIgcGF5bG9hZD1yZXN1bHRbaW5kZXhdO2lmKHBheWxvYWQuZXJyb3Ipe3ZhciBlcnJvcj1uZXcgRXJyb3IocGF5bG9hZC5lcnJvci5tZXNzYWdlKTtlcnJvci5jb2RlPXBheWxvYWQuZXJyb3IuY29kZTtlcnJvci5kYXRhPXBheWxvYWQuZXJyb3IuZGF0YTtpbmZsaWdodFJlcXVlc3QucmVqZWN0KGVycm9yKX1lbHNle2luZmxpZ2h0UmVxdWVzdC5yZXNvbHZlKHBheWxvYWQucmVzdWx0KX19KX0sZnVuY3Rpb24oZXJyb3Ipe190aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXNwb25zZSIsZXJyb3I6ZXJyb3IscmVxdWVzdDpyZXF1ZXN0LHByb3ZpZGVyOl90aGlzfSk7YmF0Y2guZm9yRWFjaChmdW5jdGlvbihpbmZsaWdodFJlcXVlc3Qpe2luZmxpZ2h0UmVxdWVzdC5yZWplY3QoZXJyb3IpfSl9KX0sMTApfXJldHVybiBwcm9taXNlfTtyZXR1cm4gSnNvblJwY0JhdGNoUHJvdmlkZXJ9KGpzb25ScGNQcm92aWRlci5Kc29uUnBjUHJvdmlkZXIpO2V4cG9ydHMuSnNvblJwY0JhdGNoUHJvdmlkZXI9SnNvblJwY0JhdGNoUHJvdmlkZXJ9KTt2YXIganNvblJwY0JhdGNoUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhqc29uUnBjQmF0Y2hQcm92aWRlcik7dmFyIG5vZGVzbWl0aFByb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuTm9kZXNtaXRoUHJvdmlkZXI9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kSS52ZXJzaW9uKTt2YXIgZGVmYXVsdEFwaUtleT0iRVRIRVJTX0pTX1NIQVJFRCI7dmFyIE5vZGVzbWl0aFByb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKE5vZGVzbWl0aFByb3ZpZGVyLF9zdXBlcik7ZnVuY3Rpb24gTm9kZXNtaXRoUHJvdmlkZXIoKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31Ob2Rlc21pdGhQcm92aWRlci5nZXRBcGlLZXk9ZnVuY3Rpb24oYXBpS2V5KXtpZihhcGlLZXkmJnR5cGVvZiBhcGlLZXkhPT0ic3RyaW5nIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBhcGlLZXkiLCJhcGlLZXkiLGFwaUtleSl9cmV0dXJuIGFwaUtleXx8ZGVmYXVsdEFwaUtleX07Tm9kZXNtaXRoUHJvdmlkZXIuZ2V0VXJsPWZ1bmN0aW9uKG5ldHdvcmssYXBpS2V5KXtsb2dnZXIud2FybigiTm9kZVNtaXRoIHdpbGwgYmUgZGlzY29udGludWVkIG9uIDIwMTktMTItMjA7IHBsZWFzZSBtaWdyYXRlIHRvIGFub3RoZXIgcGxhdGZvcm0uIik7dmFyIGhvc3Q9bnVsbDtzd2l0Y2gobmV0d29yay5uYW1lKXtjYXNlImhvbWVzdGVhZCI6aG9zdD0iaHR0cHM6Ly9ldGhlcmV1bS5hcGkubm9kZXNtaXRoLmlvL3YxL21haW5uZXQvanNvbnJwYyI7YnJlYWs7Y2FzZSJyb3BzdGVuIjpob3N0PSJodHRwczovL2V0aGVyZXVtLmFwaS5ub2Rlc21pdGguaW8vdjEvcm9wc3Rlbi9qc29ucnBjIjticmVhaztjYXNlInJpbmtlYnkiOmhvc3Q9Imh0dHBzOi8vZXRoZXJldW0uYXBpLm5vZGVzbWl0aC5pby92MS9yaW5rZWJ5L2pzb25ycGMiO2JyZWFrO2Nhc2UiZ29lcmxpIjpob3N0PSJodHRwczovL2V0aGVyZXVtLmFwaS5ub2Rlc21pdGguaW8vdjEvZ29lcmxpL2pzb25ycGMiO2JyZWFrO2Nhc2Uia292YW4iOmhvc3Q9Imh0dHBzOi8vZXRoZXJldW0uYXBpLm5vZGVzbWl0aC5pby92MS9rb3Zhbi9qc29ucnBjIjticmVhaztkZWZhdWx0OmxvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoInVuc3VwcG9ydGVkIG5ldHdvcmsiLCJuZXR3b3JrIixhcmd1bWVudHNbMF0pfXJldHVybiBob3N0KyI/YXBpS2V5PSIrYXBpS2V5fTtyZXR1cm4gTm9kZXNtaXRoUHJvdmlkZXJ9KHVybEpzb25ScGNQcm92aWRlci5VcmxKc29uUnBjUHJvdmlkZXIpO2V4cG9ydHMuTm9kZXNtaXRoUHJvdmlkZXI9Tm9kZXNtaXRoUHJvdmlkZXJ9KTt2YXIgbm9kZXNtaXRoUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhub2Rlc21pdGhQcm92aWRlcik7dmFyIHBvY2tldFByb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuUG9ja2V0UHJvdmlkZXI9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kSS52ZXJzaW9uKTt2YXIgZGVmYXVsdEFwcGxpY2F0aW9uSWQ9IjYyZTFhZDUxYjM3YjhlMDAzOTRiZGEzYiI7dmFyIFBvY2tldFByb3ZpZGVyPWZ1bmN0aW9uKF9zdXBlcil7X19leHRlbmRzKFBvY2tldFByb3ZpZGVyLF9zdXBlcik7ZnVuY3Rpb24gUG9ja2V0UHJvdmlkZXIoKXtyZXR1cm4gX3N1cGVyIT09bnVsbCYmX3N1cGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31Qb2NrZXRQcm92aWRlci5nZXRBcGlLZXk9ZnVuY3Rpb24oYXBpS2V5KXt2YXIgYXBpS2V5T2JqPXthcHBsaWNhdGlvbklkOm51bGwsbG9hZEJhbGFuY2VyOnRydWUsYXBwbGljYXRpb25TZWNyZXRLZXk6bnVsbH07aWYoYXBpS2V5PT1udWxsKXthcGlLZXlPYmouYXBwbGljYXRpb25JZD1kZWZhdWx0QXBwbGljYXRpb25JZH1lbHNlIGlmKHR5cGVvZiBhcGlLZXk9PT0ic3RyaW5nIil7YXBpS2V5T2JqLmFwcGxpY2F0aW9uSWQ9YXBpS2V5fWVsc2UgaWYoYXBpS2V5LmFwcGxpY2F0aW9uU2VjcmV0S2V5IT1udWxsKXthcGlLZXlPYmouYXBwbGljYXRpb25JZD1hcGlLZXkuYXBwbGljYXRpb25JZDthcGlLZXlPYmouYXBwbGljYXRpb25TZWNyZXRLZXk9YXBpS2V5LmFwcGxpY2F0aW9uU2VjcmV0S2V5fWVsc2UgaWYoYXBpS2V5LmFwcGxpY2F0aW9uSWQpe2FwaUtleU9iai5hcHBsaWNhdGlvbklkPWFwaUtleS5hcHBsaWNhdGlvbklkfWVsc2V7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5zdXBwb3J0ZWQgUG9ja2V0UHJvdmlkZXIgYXBpS2V5IiwiYXBpS2V5IixhcGlLZXkpfXJldHVybiBhcGlLZXlPYmp9O1BvY2tldFByb3ZpZGVyLmdldFVybD1mdW5jdGlvbihuZXR3b3JrLGFwaUtleSl7dmFyIGhvc3Q9bnVsbDtzd2l0Y2gobmV0d29yaz9uZXR3b3JrLm5hbWU6InVua25vd24iKXtjYXNlImdvZXJsaSI6aG9zdD0iZXRoLWdvZXJsaS5nYXRld2F5LnBva3QubmV0d29yayI7YnJlYWs7Y2FzZSJob21lc3RlYWQiOmhvc3Q9ImV0aC1tYWlubmV0LmdhdGV3YXkucG9rdC5uZXR3b3JrIjticmVhaztjYXNlImtvdmFuIjpob3N0PSJwb2Eta292YW4uZ2F0ZXdheS5wb2t0Lm5ldHdvcmsiO2JyZWFrO2Nhc2UibWF0aWMiOmhvc3Q9InBvbHktbWFpbm5ldC5nYXRld2F5LnBva3QubmV0d29yayI7YnJlYWs7Y2FzZSJtYXRpY211bSI6aG9zdD0icG9seWdvbi1tdW1iYWktcnBjLmdhdGV3YXkucG9rdC5uZXR3b3JrIjticmVhaztjYXNlInJpbmtlYnkiOmhvc3Q9ImV0aC1yaW5rZWJ5LmdhdGV3YXkucG9rdC5uZXR3b3JrIjticmVhaztjYXNlInJvcHN0ZW4iOmhvc3Q9ImV0aC1yb3BzdGVuLmdhdGV3YXkucG9rdC5uZXR3b3JrIjticmVhaztkZWZhdWx0OmxvZ2dlci50aHJvd0Vycm9yKCJ1bnN1cHBvcnRlZCBuZXR3b3JrIixsaWIuTG9nZ2VyLmVycm9ycy5JTlZBTElEX0FSR1VNRU5ULHthcmd1bWVudDoibmV0d29yayIsdmFsdWU6bmV0d29ya30pfXZhciB1cmw9Imh0dHBzOi8vIitob3N0KyIvdjEvbGIvIithcGlLZXkuYXBwbGljYXRpb25JZDt2YXIgY29ubmVjdGlvbj17aGVhZGVyczp7fSx1cmw6dXJsfTtpZihhcGlLZXkuYXBwbGljYXRpb25TZWNyZXRLZXkhPW51bGwpe2Nvbm5lY3Rpb24udXNlcj0iIjtjb25uZWN0aW9uLnBhc3N3b3JkPWFwaUtleS5hcHBsaWNhdGlvblNlY3JldEtleX1yZXR1cm4gY29ubmVjdGlvbn07UG9ja2V0UHJvdmlkZXIucHJvdG90eXBlLmlzQ29tbXVuaXR5UmVzb3VyY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBsaWNhdGlvbklkPT09ZGVmYXVsdEFwcGxpY2F0aW9uSWR9O3JldHVybiBQb2NrZXRQcm92aWRlcn0odXJsSnNvblJwY1Byb3ZpZGVyLlVybEpzb25ScGNQcm92aWRlcik7ZXhwb3J0cy5Qb2NrZXRQcm92aWRlcj1Qb2NrZXRQcm92aWRlcn0pO3ZhciBwb2NrZXRQcm92aWRlciQxPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHBvY2tldFByb3ZpZGVyKTt2YXIgd2ViM1Byb3ZpZGVyPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fZXh0ZW5kcz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBleHRlbmRTdGF0aWNzPWZ1bmN0aW9uKGQsYil7ZXh0ZW5kU3RhdGljcz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZCxiKXtkLl9fcHJvdG9fXz1ifXx8ZnVuY3Rpb24oZCxiKXtmb3IodmFyIHAgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixwKSlkW3BdPWJbcF19O3JldHVybiBleHRlbmRTdGF0aWNzKGQsYil9O3JldHVybiBmdW5jdGlvbihkLGIpe2lmKHR5cGVvZiBiIT09ImZ1bmN0aW9uIiYmYiE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhiKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTtleHRlbmRTdGF0aWNzKGQsYik7ZnVuY3Rpb24gX18oKXt0aGlzLmNvbnN0cnVjdG9yPWR9ZC5wcm90b3R5cGU9Yj09PW51bGw/T2JqZWN0LmNyZWF0ZShiKTooX18ucHJvdG90eXBlPWIucHJvdG90eXBlLG5ldyBfXyl9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuV2ViM1Byb3ZpZGVyPXZvaWQgMDt2YXIgbG9nZ2VyPW5ldyBsaWIuTG9nZ2VyKF92ZXJzaW9uJEkudmVyc2lvbik7dmFyIF9uZXh0SWQ9MTtmdW5jdGlvbiBidWlsZFdlYjNMZWdhY3lGZXRjaGVyKHByb3ZpZGVyLHNlbmRGdW5jKXt2YXIgZmV0Y2hlcj0iV2ViM0xlZ2FjeUZldGNoZXIiO3JldHVybiBmdW5jdGlvbihtZXRob2QscGFyYW1zKXt2YXIgX3RoaXM9dGhpczt2YXIgcmVxdWVzdD17bWV0aG9kOm1ldGhvZCxwYXJhbXM6cGFyYW1zLGlkOl9uZXh0SWQrKyxqc29ucnBjOiIyLjAifTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe190aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXF1ZXN0IixmZXRjaGVyOmZldGNoZXIscmVxdWVzdDooMCxsaWIkMy5kZWVwQ29weSkocmVxdWVzdCkscHJvdmlkZXI6X3RoaXN9KTtzZW5kRnVuYyhyZXF1ZXN0LGZ1bmN0aW9uKGVycm9yLHJlc3BvbnNlKXtpZihlcnJvcil7X3RoaXMuZW1pdCgiZGVidWciLHthY3Rpb246InJlc3BvbnNlIixmZXRjaGVyOmZldGNoZXIsZXJyb3I6ZXJyb3IscmVxdWVzdDpyZXF1ZXN0LHByb3ZpZGVyOl90aGlzfSk7cmV0dXJuIHJlamVjdChlcnJvcil9X3RoaXMuZW1pdCgiZGVidWciLHthY3Rpb246InJlc3BvbnNlIixmZXRjaGVyOmZldGNoZXIscmVxdWVzdDpyZXF1ZXN0LHJlc3BvbnNlOnJlc3BvbnNlLHByb3ZpZGVyOl90aGlzfSk7aWYocmVzcG9uc2UuZXJyb3Ipe3ZhciBlcnJvcl8xPW5ldyBFcnJvcihyZXNwb25zZS5lcnJvci5tZXNzYWdlKTtlcnJvcl8xLmNvZGU9cmVzcG9uc2UuZXJyb3IuY29kZTtlcnJvcl8xLmRhdGE9cmVzcG9uc2UuZXJyb3IuZGF0YTtyZXR1cm4gcmVqZWN0KGVycm9yXzEpfXJlc29sdmUocmVzcG9uc2UucmVzdWx0KX0pfSl9fWZ1bmN0aW9uIGJ1aWxkRWlwMTE5M0ZldGNoZXIocHJvdmlkZXIpe3JldHVybiBmdW5jdGlvbihtZXRob2QscGFyYW1zKXt2YXIgX3RoaXM9dGhpcztpZihwYXJhbXM9PW51bGwpe3BhcmFtcz1bXX12YXIgcmVxdWVzdD17bWV0aG9kOm1ldGhvZCxwYXJhbXM6cGFyYW1zfTt0aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXF1ZXN0IixmZXRjaGVyOiJFaXAxMTkzRmV0Y2hlciIscmVxdWVzdDooMCxsaWIkMy5kZWVwQ29weSkocmVxdWVzdCkscHJvdmlkZXI6dGhpc30pO3JldHVybiBwcm92aWRlci5yZXF1ZXN0KHJlcXVlc3QpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2Upe190aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXNwb25zZSIsZmV0Y2hlcjoiRWlwMTE5M0ZldGNoZXIiLHJlcXVlc3Q6cmVxdWVzdCxyZXNwb25zZTpyZXNwb25zZSxwcm92aWRlcjpfdGhpc30pO3JldHVybiByZXNwb25zZX0sZnVuY3Rpb24oZXJyb3Ipe190aGlzLmVtaXQoImRlYnVnIix7YWN0aW9uOiJyZXNwb25zZSIsZmV0Y2hlcjoiRWlwMTE5M0ZldGNoZXIiLHJlcXVlc3Q6cmVxdWVzdCxlcnJvcjplcnJvcixwcm92aWRlcjpfdGhpc30pO3Rocm93IGVycm9yfSl9fXZhciBXZWIzUHJvdmlkZXI9ZnVuY3Rpb24oX3N1cGVyKXtfX2V4dGVuZHMoV2ViM1Byb3ZpZGVyLF9zdXBlcik7ZnVuY3Rpb24gV2ViM1Byb3ZpZGVyKHByb3ZpZGVyLG5ldHdvcmspe3ZhciBfdGhpcz10aGlzO2lmKHByb3ZpZGVyPT1udWxsKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJtaXNzaW5nIHByb3ZpZGVyIiwicHJvdmlkZXIiLHByb3ZpZGVyKX12YXIgcGF0aD1udWxsO3ZhciBqc29uUnBjRmV0Y2hGdW5jPW51bGw7dmFyIHN1YnByb3ZpZGVyPW51bGw7aWYodHlwZW9mIHByb3ZpZGVyPT09ImZ1bmN0aW9uIil7cGF0aD0idW5rbm93bjoiO2pzb25ScGNGZXRjaEZ1bmM9cHJvdmlkZXJ9ZWxzZXtwYXRoPXByb3ZpZGVyLmhvc3R8fHByb3ZpZGVyLnBhdGh8fCIiO2lmKCFwYXRoJiZwcm92aWRlci5pc01ldGFNYXNrKXtwYXRoPSJtZXRhbWFzayJ9c3VicHJvdmlkZXI9cHJvdmlkZXI7aWYocHJvdmlkZXIucmVxdWVzdCl7aWYocGF0aD09PSIiKXtwYXRoPSJlaXAtMTE5MzoifWpzb25ScGNGZXRjaEZ1bmM9YnVpbGRFaXAxMTkzRmV0Y2hlcihwcm92aWRlcil9ZWxzZSBpZihwcm92aWRlci5zZW5kQXN5bmMpe2pzb25ScGNGZXRjaEZ1bmM9YnVpbGRXZWIzTGVnYWN5RmV0Y2hlcihwcm92aWRlcixwcm92aWRlci5zZW5kQXN5bmMuYmluZChwcm92aWRlcikpfWVsc2UgaWYocHJvdmlkZXIuc2VuZCl7anNvblJwY0ZldGNoRnVuYz1idWlsZFdlYjNMZWdhY3lGZXRjaGVyKHByb3ZpZGVyLHByb3ZpZGVyLnNlbmQuYmluZChwcm92aWRlcikpfWVsc2V7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidW5zdXBwb3J0ZWQgcHJvdmlkZXIiLCJwcm92aWRlciIscHJvdmlkZXIpfWlmKCFwYXRoKXtwYXRoPSJ1bmtub3duOiJ9fV90aGlzPV9zdXBlci5jYWxsKHRoaXMscGF0aCxuZXR3b3JrKXx8dGhpczsoMCxsaWIkMy5kZWZpbmVSZWFkT25seSkoX3RoaXMsImpzb25ScGNGZXRjaEZ1bmMiLGpzb25ScGNGZXRjaEZ1bmMpOygwLGxpYiQzLmRlZmluZVJlYWRPbmx5KShfdGhpcywicHJvdmlkZXIiLHN1YnByb3ZpZGVyKTtyZXR1cm4gX3RoaXN9V2ViM1Byb3ZpZGVyLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKG1ldGhvZCxwYXJhbXMpe3JldHVybiB0aGlzLmpzb25ScGNGZXRjaEZ1bmMobWV0aG9kLHBhcmFtcyl9O3JldHVybiBXZWIzUHJvdmlkZXJ9KGpzb25ScGNQcm92aWRlci5Kc29uUnBjUHJvdmlkZXIpO2V4cG9ydHMuV2ViM1Byb3ZpZGVyPVdlYjNQcm92aWRlcn0pO3ZhciB3ZWIzUHJvdmlkZXIkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyh3ZWIzUHJvdmlkZXIpO3ZhciBsaWIkdD1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMuRm9ybWF0dGVyPWV4cG9ydHMuc2hvd1Rocm90dGxlTWVzc2FnZT1leHBvcnRzLmlzQ29tbXVuaXR5UmVzb3VyY2FibGU9ZXhwb3J0cy5pc0NvbW11bml0eVJlc291cmNlPWV4cG9ydHMuZ2V0TmV0d29yaz1leHBvcnRzLmdldERlZmF1bHRQcm92aWRlcj1leHBvcnRzLkpzb25ScGNTaWduZXI9ZXhwb3J0cy5JcGNQcm92aWRlcj1leHBvcnRzLldlYlNvY2tldFByb3ZpZGVyPWV4cG9ydHMuV2ViM1Byb3ZpZGVyPWV4cG9ydHMuU3RhdGljSnNvblJwY1Byb3ZpZGVyPWV4cG9ydHMuUG9ja2V0UHJvdmlkZXI9ZXhwb3J0cy5Ob2Rlc21pdGhQcm92aWRlcj1leHBvcnRzLkpzb25ScGNCYXRjaFByb3ZpZGVyPWV4cG9ydHMuSnNvblJwY1Byb3ZpZGVyPWV4cG9ydHMuSW5mdXJhV2ViU29ja2V0UHJvdmlkZXI9ZXhwb3J0cy5JbmZ1cmFQcm92aWRlcj1leHBvcnRzLkV0aGVyc2NhblByb3ZpZGVyPWV4cG9ydHMuQ2xvdWRmbGFyZVByb3ZpZGVyPWV4cG9ydHMuQW5rclByb3ZpZGVyPWV4cG9ydHMuQWxjaGVteVdlYlNvY2tldFByb3ZpZGVyPWV4cG9ydHMuQWxjaGVteVByb3ZpZGVyPWV4cG9ydHMuRmFsbGJhY2tQcm92aWRlcj1leHBvcnRzLlVybEpzb25ScGNQcm92aWRlcj1leHBvcnRzLlJlc29sdmVyPWV4cG9ydHMuQmFzZVByb3ZpZGVyPWV4cG9ydHMuUHJvdmlkZXI9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGUuUHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImdldE5ldHdvcmsiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRyLmdldE5ldHdvcmt9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkJhc2VQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYmFzZVByb3ZpZGVyLkJhc2VQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiUmVzb2x2ZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJhc2VQcm92aWRlci5SZXNvbHZlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQWxjaGVteVByb3ZpZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBhbGNoZW15UHJvdmlkZXIuQWxjaGVteVByb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJBbGNoZW15V2ViU29ja2V0UHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFsY2hlbXlQcm92aWRlci5BbGNoZW15V2ViU29ja2V0UHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkFua3JQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYW5rclByb3ZpZGVyLkFua3JQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQ2xvdWRmbGFyZVByb3ZpZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBjbG91ZGZsYXJlUHJvdmlkZXIuQ2xvdWRmbGFyZVByb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJFdGhlcnNjYW5Qcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzY2FuUHJvdmlkZXIuRXRoZXJzY2FuUHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkZhbGxiYWNrUHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZhbGxiYWNrUHJvdmlkZXIuRmFsbGJhY2tQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiSXBjUHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGJyb3dzZXJJcGNQcm92aWRlci5JcGNQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiSW5mdXJhUHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGluZnVyYVByb3ZpZGVyLkluZnVyYVByb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJJbmZ1cmFXZWJTb2NrZXRQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaW5mdXJhUHJvdmlkZXIuSW5mdXJhV2ViU29ja2V0UHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkpzb25ScGNQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ganNvblJwY1Byb3ZpZGVyLkpzb25ScGNQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiSnNvblJwY1NpZ25lciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ganNvblJwY1Byb3ZpZGVyLkpzb25ScGNTaWduZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkpzb25ScGNCYXRjaFByb3ZpZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBqc29uUnBjQmF0Y2hQcm92aWRlci5Kc29uUnBjQmF0Y2hQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiTm9kZXNtaXRoUHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5vZGVzbWl0aFByb3ZpZGVyLk5vZGVzbWl0aFByb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJQb2NrZXRQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcG9ja2V0UHJvdmlkZXIuUG9ja2V0UHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlN0YXRpY0pzb25ScGNQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdXJsSnNvblJwY1Byb3ZpZGVyLlN0YXRpY0pzb25ScGNQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiVXJsSnNvblJwY1Byb3ZpZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB1cmxKc29uUnBjUHJvdmlkZXIuVXJsSnNvblJwY1Byb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJXZWIzUHJvdmlkZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHdlYjNQcm92aWRlci5XZWIzUHJvdmlkZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIldlYlNvY2tldFByb3ZpZGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB3ZWJzb2NrZXRQcm92aWRlci5XZWJTb2NrZXRQcm92aWRlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRm9ybWF0dGVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBmb3JtYXR0ZXIuRm9ybWF0dGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJpc0NvbW11bml0eVJlc291cmNhYmxlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBmb3JtYXR0ZXIuaXNDb21tdW5pdHlSZXNvdXJjYWJsZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaXNDb21tdW5pdHlSZXNvdXJjZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZm9ybWF0dGVyLmlzQ29tbXVuaXR5UmVzb3VyY2V9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInNob3dUaHJvdHRsZU1lc3NhZ2UiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZvcm1hdHRlci5zaG93VGhyb3R0bGVNZXNzYWdlfX0pO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kSS52ZXJzaW9uKTtmdW5jdGlvbiBnZXREZWZhdWx0UHJvdmlkZXIobmV0d29yayxvcHRpb25zKXtpZihuZXR3b3JrPT1udWxsKXtuZXR3b3JrPSJob21lc3RlYWQifWlmKHR5cGVvZiBuZXR3b3JrPT09InN0cmluZyIpe3ZhciBtYXRjaD1uZXR3b3JrLm1hdGNoKC9eKHdzfGh0dHApcz86L2kpO2lmKG1hdGNoKXtzd2l0Y2gobWF0Y2hbMV0udG9Mb3dlckNhc2UoKSl7Y2FzZSJodHRwIjpjYXNlImh0dHBzIjpyZXR1cm4gbmV3IGpzb25ScGNQcm92aWRlci5Kc29uUnBjUHJvdmlkZXIobmV0d29yayk7Y2FzZSJ3cyI6Y2FzZSJ3c3MiOnJldHVybiBuZXcgd2Vic29ja2V0UHJvdmlkZXIuV2ViU29ja2V0UHJvdmlkZXIobmV0d29yayk7ZGVmYXVsdDpsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ1bnN1cHBvcnRlZCBVUkwgc2NoZW1lIiwibmV0d29yayIsbmV0d29yayl9fX12YXIgbj0oMCxsaWIkci5nZXROZXR3b3JrKShuZXR3b3JrKTtpZighbnx8IW4uX2RlZmF1bHRQcm92aWRlcil7bG9nZ2VyLnRocm93RXJyb3IoInVuc3VwcG9ydGVkIGdldERlZmF1bHRQcm92aWRlciBuZXR3b3JrIixsaWIuTG9nZ2VyLmVycm9ycy5ORVRXT1JLX0VSUk9SLHtvcGVyYXRpb246ImdldERlZmF1bHRQcm92aWRlciIsbmV0d29yazpuZXR3b3JrfSl9cmV0dXJuIG4uX2RlZmF1bHRQcm92aWRlcih7RmFsbGJhY2tQcm92aWRlcjpmYWxsYmFja1Byb3ZpZGVyLkZhbGxiYWNrUHJvdmlkZXIsQWxjaGVteVByb3ZpZGVyOmFsY2hlbXlQcm92aWRlci5BbGNoZW15UHJvdmlkZXIsQW5rclByb3ZpZGVyOmFua3JQcm92aWRlci5BbmtyUHJvdmlkZXIsQ2xvdWRmbGFyZVByb3ZpZGVyOmNsb3VkZmxhcmVQcm92aWRlci5DbG91ZGZsYXJlUHJvdmlkZXIsRXRoZXJzY2FuUHJvdmlkZXI6ZXRoZXJzY2FuUHJvdmlkZXIuRXRoZXJzY2FuUHJvdmlkZXIsSW5mdXJhUHJvdmlkZXI6aW5mdXJhUHJvdmlkZXIuSW5mdXJhUHJvdmlkZXIsSnNvblJwY1Byb3ZpZGVyOmpzb25ScGNQcm92aWRlci5Kc29uUnBjUHJvdmlkZXIsTm9kZXNtaXRoUHJvdmlkZXI6bm9kZXNtaXRoUHJvdmlkZXIuTm9kZXNtaXRoUHJvdmlkZXIsUG9ja2V0UHJvdmlkZXI6cG9ja2V0UHJvdmlkZXIuUG9ja2V0UHJvdmlkZXIsV2ViM1Byb3ZpZGVyOndlYjNQcm92aWRlci5XZWIzUHJvdmlkZXIsSXBjUHJvdmlkZXI6YnJvd3NlcklwY1Byb3ZpZGVyLklwY1Byb3ZpZGVyfSxvcHRpb25zKX1leHBvcnRzLmdldERlZmF1bHRQcm92aWRlcj1nZXREZWZhdWx0UHJvdmlkZXJ9KTt2YXIgaW5kZXgkcj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhsaWIkdCk7dmFyIF92ZXJzaW9uJEs9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnZlcnNpb249dm9pZCAwO2V4cG9ydHMudmVyc2lvbj0ic29saWRpdHkvNS43LjAifSk7dmFyIF92ZXJzaW9uJEw9Z2V0RGVmYXVsdEV4cG9ydEZyb21DanMoX3ZlcnNpb24kSyk7dmFyIGxpYiR1PWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5zaGEyNTY9ZXhwb3J0cy5rZWNjYWsyNTY9ZXhwb3J0cy5wYWNrPXZvaWQgMDt2YXIgcmVnZXhCeXRlcz1uZXcgUmVnRXhwKCJeYnl0ZXMoWzAtOV0rKSQiKTt2YXIgcmVnZXhOdW1iZXI9bmV3IFJlZ0V4cCgiXih1P2ludCkoWzAtOV0qKSQiKTt2YXIgcmVnZXhBcnJheT1uZXcgUmVnRXhwKCJeKC4qKVxcWyhbMC05XSopXFxdJCIpO3ZhciBaZXJvcz0iMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCI7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRLLnZlcnNpb24pO2Z1bmN0aW9uIF9wYWNrKHR5cGUsdmFsdWUsaXNBcnJheSl7c3dpdGNoKHR5cGUpe2Nhc2UiYWRkcmVzcyI6aWYoaXNBcnJheSl7cmV0dXJuKDAsbGliJDEuemVyb1BhZCkodmFsdWUsMzIpfXJldHVybigwLGxpYiQxLmFycmF5aWZ5KSh2YWx1ZSk7Y2FzZSJzdHJpbmciOnJldHVybigwLGxpYiQ4LnRvVXRmOEJ5dGVzKSh2YWx1ZSk7Y2FzZSJieXRlcyI6cmV0dXJuKDAsbGliJDEuYXJyYXlpZnkpKHZhbHVlKTtjYXNlImJvb2wiOnZhbHVlPXZhbHVlPyIweDAxIjoiMHgwMCI7aWYoaXNBcnJheSl7cmV0dXJuKDAsbGliJDEuemVyb1BhZCkodmFsdWUsMzIpfXJldHVybigwLGxpYiQxLmFycmF5aWZ5KSh2YWx1ZSl9dmFyIG1hdGNoPXR5cGUubWF0Y2gocmVnZXhOdW1iZXIpO2lmKG1hdGNoKXt2YXIgc2l6ZT1wYXJzZUludChtYXRjaFsyXXx8IjI1NiIpO2lmKG1hdGNoWzJdJiZTdHJpbmcoc2l6ZSkhPT1tYXRjaFsyXXx8c2l6ZSU4IT09MHx8c2l6ZT09PTB8fHNpemU+MjU2KXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIG51bWJlciB0eXBlIiwidHlwZSIsdHlwZSl9aWYoaXNBcnJheSl7c2l6ZT0yNTZ9dmFsdWU9bGliJDIuQmlnTnVtYmVyLmZyb20odmFsdWUpLnRvVHdvcyhzaXplKTtyZXR1cm4oMCxsaWIkMS56ZXJvUGFkKSh2YWx1ZSxzaXplLzgpfW1hdGNoPXR5cGUubWF0Y2gocmVnZXhCeXRlcyk7aWYobWF0Y2gpe3ZhciBzaXplPXBhcnNlSW50KG1hdGNoWzFdKTtpZihTdHJpbmcoc2l6ZSkhPT1tYXRjaFsxXXx8c2l6ZT09PTB8fHNpemU+MzIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgYnl0ZXMgdHlwZSIsInR5cGUiLHR5cGUpfWlmKCgwLGxpYiQxLmFycmF5aWZ5KSh2YWx1ZSkuYnl0ZUxlbmd0aCE9PXNpemUpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdmFsdWUgZm9yICIrdHlwZSwidmFsdWUiLHZhbHVlKX1pZihpc0FycmF5KXtyZXR1cm4oMCxsaWIkMS5hcnJheWlmeSkoKHZhbHVlK1plcm9zKS5zdWJzdHJpbmcoMCw2NikpfXJldHVybiB2YWx1ZX1tYXRjaD10eXBlLm1hdGNoKHJlZ2V4QXJyYXkpO2lmKG1hdGNoJiZBcnJheS5pc0FycmF5KHZhbHVlKSl7dmFyIGJhc2VUeXBlXzE9bWF0Y2hbMV07dmFyIGNvdW50PXBhcnNlSW50KG1hdGNoWzJdfHxTdHJpbmcodmFsdWUubGVuZ3RoKSk7aWYoY291bnQhPXZhbHVlLmxlbmd0aCl7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigiaW52YWxpZCBhcnJheSBsZW5ndGggZm9yICIrdHlwZSwidmFsdWUiLHZhbHVlKX12YXIgcmVzdWx0XzE9W107dmFsdWUuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSl7cmVzdWx0XzEucHVzaChfcGFjayhiYXNlVHlwZV8xLHZhbHVlLHRydWUpKX0pO3JldHVybigwLGxpYiQxLmNvbmNhdCkocmVzdWx0XzEpfXJldHVybiBsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJpbnZhbGlkIHR5cGUiLCJ0eXBlIix0eXBlKX1mdW5jdGlvbiBwYWNrKHR5cGVzLHZhbHVlcyl7aWYodHlwZXMubGVuZ3RoIT12YWx1ZXMubGVuZ3RoKXtsb2dnZXIudGhyb3dBcmd1bWVudEVycm9yKCJ3cm9uZyBudW1iZXIgb2YgdmFsdWVzOyBleHBlY3RlZCAkeyB0eXBlcy5sZW5ndGggfSIsInZhbHVlcyIsdmFsdWVzKX12YXIgdGlnaHQ9W107dHlwZXMuZm9yRWFjaChmdW5jdGlvbih0eXBlLGluZGV4KXt0aWdodC5wdXNoKF9wYWNrKHR5cGUsdmFsdWVzW2luZGV4XSkpfSk7cmV0dXJuKDAsbGliJDEuaGV4bGlmeSkoKDAsbGliJDEuY29uY2F0KSh0aWdodCkpfWV4cG9ydHMucGFjaz1wYWNrO2Z1bmN0aW9uIGtlY2NhazI1Nih0eXBlcyx2YWx1ZXMpe3JldHVybigwLGxpYiQ0LmtlY2NhazI1NikocGFjayh0eXBlcyx2YWx1ZXMpKX1leHBvcnRzLmtlY2NhazI1Nj1rZWNjYWsyNTY7ZnVuY3Rpb24gc2hhMjU2KHR5cGVzLHZhbHVlcyl7cmV0dXJuKDAsbGliJGsuc2hhMjU2KShwYWNrKHR5cGVzLHZhbHVlcykpfWV4cG9ydHMuc2hhMjU2PXNoYTI1Nn0pO3ZhciBpbmRleCRzPWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiR1KTt2YXIgX3ZlcnNpb24kTT1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfX2VzTW9kdWxlIix7dmFsdWU6dHJ1ZX0pO2V4cG9ydHMudmVyc2lvbj12b2lkIDA7ZXhwb3J0cy52ZXJzaW9uPSJ1bml0cy81LjcuMCJ9KTt2YXIgX3ZlcnNpb24kTj1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiRNKTt2YXIgbGliJHY9Y3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24obW9kdWxlLGV4cG9ydHMpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLnBhcnNlRXRoZXI9ZXhwb3J0cy5mb3JtYXRFdGhlcj1leHBvcnRzLnBhcnNlVW5pdHM9ZXhwb3J0cy5mb3JtYXRVbml0cz1leHBvcnRzLmNvbW1pZnk9dm9pZCAwO3ZhciBsb2dnZXI9bmV3IGxpYi5Mb2dnZXIoX3ZlcnNpb24kTS52ZXJzaW9uKTt2YXIgbmFtZXM9WyJ3ZWkiLCJrd2VpIiwibXdlaSIsImd3ZWkiLCJzemFibyIsImZpbm5leSIsImV0aGVyIl07ZnVuY3Rpb24gY29tbWlmeSh2YWx1ZSl7dmFyIGNvbXBzPVN0cmluZyh2YWx1ZSkuc3BsaXQoIi4iKTtpZihjb21wcy5sZW5ndGg+Mnx8IWNvbXBzWzBdLm1hdGNoKC9eLT9bMC05XSokLyl8fGNvbXBzWzFdJiYhY29tcHNbMV0ubWF0Y2goL15bMC05XSokLyl8fHZhbHVlPT09Ii4ifHx2YWx1ZT09PSItLiIpe2xvZ2dlci50aHJvd0FyZ3VtZW50RXJyb3IoImludmFsaWQgdmFsdWUiLCJ2YWx1ZSIsdmFsdWUpfXZhciB3aG9sZT1jb21wc1swXTt2YXIgbmVnYXRpdmU9IiI7aWYod2hvbGUuc3Vic3RyaW5nKDAsMSk9PT0iLSIpe25lZ2F0aXZlPSItIjt3aG9sZT13aG9sZS5zdWJzdHJpbmcoMSl9d2hpbGUod2hvbGUuc3Vic3RyaW5nKDAsMSk9PT0iMCIpe3dob2xlPXdob2xlLnN1YnN0cmluZygxKX1pZih3aG9sZT09PSIiKXt3aG9sZT0iMCJ9dmFyIHN1ZmZpeD0iIjtpZihjb21wcy5sZW5ndGg9PT0yKXtzdWZmaXg9Ii4iKyhjb21wc1sxXXx8IjAiKX13aGlsZShzdWZmaXgubGVuZ3RoPjImJnN1ZmZpeFtzdWZmaXgubGVuZ3RoLTFdPT09IjAiKXtzdWZmaXg9c3VmZml4LnN1YnN0cmluZygwLHN1ZmZpeC5sZW5ndGgtMSl9dmFyIGZvcm1hdHRlZD1bXTt3aGlsZSh3aG9sZS5sZW5ndGgpe2lmKHdob2xlLmxlbmd0aDw9Myl7Zm9ybWF0dGVkLnVuc2hpZnQod2hvbGUpO2JyZWFrfWVsc2V7dmFyIGluZGV4PXdob2xlLmxlbmd0aC0zO2Zvcm1hdHRlZC51bnNoaWZ0KHdob2xlLnN1YnN0cmluZyhpbmRleCkpO3dob2xlPXdob2xlLnN1YnN0cmluZygwLGluZGV4KX19cmV0dXJuIG5lZ2F0aXZlK2Zvcm1hdHRlZC5qb2luKCIsIikrc3VmZml4fWV4cG9ydHMuY29tbWlmeT1jb21taWZ5O2Z1bmN0aW9uIGZvcm1hdFVuaXRzKHZhbHVlLHVuaXROYW1lKXtpZih0eXBlb2YgdW5pdE5hbWU9PT0ic3RyaW5nIil7dmFyIGluZGV4PW5hbWVzLmluZGV4T2YodW5pdE5hbWUpO2lmKGluZGV4IT09LTEpe3VuaXROYW1lPTMqaW5kZXh9fXJldHVybigwLGxpYiQyLmZvcm1hdEZpeGVkKSh2YWx1ZSx1bml0TmFtZSE9bnVsbD91bml0TmFtZToxOCl9ZXhwb3J0cy5mb3JtYXRVbml0cz1mb3JtYXRVbml0cztmdW5jdGlvbiBwYXJzZVVuaXRzKHZhbHVlLHVuaXROYW1lKXtpZih0eXBlb2YgdmFsdWUhPT0ic3RyaW5nIil7bG9nZ2VyLnRocm93QXJndW1lbnRFcnJvcigidmFsdWUgbXVzdCBiZSBhIHN0cmluZyIsInZhbHVlIix2YWx1ZSl9aWYodHlwZW9mIHVuaXROYW1lPT09InN0cmluZyIpe3ZhciBpbmRleD1uYW1lcy5pbmRleE9mKHVuaXROYW1lKTtpZihpbmRleCE9PS0xKXt1bml0TmFtZT0zKmluZGV4fX1yZXR1cm4oMCxsaWIkMi5wYXJzZUZpeGVkKSh2YWx1ZSx1bml0TmFtZSE9bnVsbD91bml0TmFtZToxOCl9ZXhwb3J0cy5wYXJzZVVuaXRzPXBhcnNlVW5pdHM7ZnVuY3Rpb24gZm9ybWF0RXRoZXIod2VpKXtyZXR1cm4gZm9ybWF0VW5pdHMod2VpLDE4KX1leHBvcnRzLmZvcm1hdEV0aGVyPWZvcm1hdEV0aGVyO2Z1bmN0aW9uIHBhcnNlRXRoZXIoZXRoZXIpe3JldHVybiBwYXJzZVVuaXRzKGV0aGVyLDE4KX1leHBvcnRzLnBhcnNlRXRoZXI9cGFyc2VFdGhlcn0pO3ZhciBpbmRleCR0PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiR2KTt2YXIgdXRpbHMkMz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2NyZWF0ZUJpbmRpbmc9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24obyxtLGssazIpe2lmKGsyPT09dW5kZWZpbmVkKWsyPWs7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sazIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbVtrXX19KX06ZnVuY3Rpb24obyxtLGssazIpe2lmKGsyPT09dW5kZWZpbmVkKWsyPWs7b1trMl09bVtrXX0pO3ZhciBfX3NldE1vZHVsZURlZmF1bHQ9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24obyx2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkobywiZGVmYXVsdCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp2fSl9OmZ1bmN0aW9uKG8sdil7b1siZGVmYXVsdCJdPXZ9KTt2YXIgX19pbXBvcnRTdGFyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKG1vZCl7aWYobW9kJiZtb2QuX19lc01vZHVsZSlyZXR1cm4gbW9kO3ZhciByZXN1bHQ9e307aWYobW9kIT1udWxsKWZvcih2YXIgayBpbiBtb2QpaWYoayE9PSJkZWZhdWx0IiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCxrKSlfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LG1vZCxrKTtfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LG1vZCk7cmV0dXJuIHJlc3VsdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5mb3JtYXRCeXRlczMyU3RyaW5nPWV4cG9ydHMuVXRmOEVycm9yRnVuY3M9ZXhwb3J0cy50b1V0ZjhTdHJpbmc9ZXhwb3J0cy50b1V0ZjhDb2RlUG9pbnRzPWV4cG9ydHMudG9VdGY4Qnl0ZXM9ZXhwb3J0cy5fdG9Fc2NhcGVkVXRmOFN0cmluZz1leHBvcnRzLm5hbWVwcmVwPWV4cG9ydHMuaGV4RGF0YVNsaWNlPWV4cG9ydHMuaGV4RGF0YUxlbmd0aD1leHBvcnRzLmhleFplcm9QYWQ9ZXhwb3J0cy5oZXhWYWx1ZT1leHBvcnRzLmhleFN0cmlwWmVyb3M9ZXhwb3J0cy5oZXhDb25jYXQ9ZXhwb3J0cy5pc0hleFN0cmluZz1leHBvcnRzLmhleGxpZnk9ZXhwb3J0cy5iYXNlNjQ9ZXhwb3J0cy5iYXNlNTg9ZXhwb3J0cy5UcmFuc2FjdGlvbkRlc2NyaXB0aW9uPWV4cG9ydHMuTG9nRGVzY3JpcHRpb249ZXhwb3J0cy5JbnRlcmZhY2U9ZXhwb3J0cy5TaWduaW5nS2V5PWV4cG9ydHMuSEROb2RlPWV4cG9ydHMuZGVmYXVsdFBhdGg9ZXhwb3J0cy5pc0J5dGVzTGlrZT1leHBvcnRzLmlzQnl0ZXM9ZXhwb3J0cy56ZXJvUGFkPWV4cG9ydHMuc3RyaXBaZXJvcz1leHBvcnRzLmNvbmNhdD1leHBvcnRzLmFycmF5aWZ5PWV4cG9ydHMuc2hhbGxvd0NvcHk9ZXhwb3J0cy5yZXNvbHZlUHJvcGVydGllcz1leHBvcnRzLmdldFN0YXRpYz1leHBvcnRzLmRlZmluZVJlYWRPbmx5PWV4cG9ydHMuZGVlcENvcHk9ZXhwb3J0cy5jaGVja1Byb3BlcnRpZXM9ZXhwb3J0cy5wb2xsPWV4cG9ydHMuZmV0Y2hKc29uPWV4cG9ydHMuX2ZldGNoRGF0YT1leHBvcnRzLlJMUD1leHBvcnRzLkxvZ2dlcj1leHBvcnRzLmNoZWNrUmVzdWx0RXJyb3JzPWV4cG9ydHMuRm9ybWF0VHlwZXM9ZXhwb3J0cy5QYXJhbVR5cGU9ZXhwb3J0cy5GdW5jdGlvbkZyYWdtZW50PWV4cG9ydHMuRXZlbnRGcmFnbWVudD1leHBvcnRzLkVycm9yRnJhZ21lbnQ9ZXhwb3J0cy5Db25zdHJ1Y3RvckZyYWdtZW50PWV4cG9ydHMuRnJhZ21lbnQ9ZXhwb3J0cy5kZWZhdWx0QWJpQ29kZXI9ZXhwb3J0cy5BYmlDb2Rlcj12b2lkIDA7ZXhwb3J0cy5JbmRleGVkPWV4cG9ydHMuVXRmOEVycm9yUmVhc29uPWV4cG9ydHMuVW5pY29kZU5vcm1hbGl6YXRpb25Gb3JtPWV4cG9ydHMuU3VwcG9ydGVkQWxnb3JpdGhtPWV4cG9ydHMubW5lbW9uaWNUb1NlZWQ9ZXhwb3J0cy5pc1ZhbGlkTW5lbW9uaWM9ZXhwb3J0cy5lbnRyb3B5VG9NbmVtb25pYz1leHBvcnRzLm1uZW1vbmljVG9FbnRyb3B5PWV4cG9ydHMuZ2V0QWNjb3VudFBhdGg9ZXhwb3J0cy52ZXJpZnlUeXBlZERhdGE9ZXhwb3J0cy52ZXJpZnlNZXNzYWdlPWV4cG9ydHMucmVjb3ZlclB1YmxpY0tleT1leHBvcnRzLmNvbXB1dGVQdWJsaWNLZXk9ZXhwb3J0cy5yZWNvdmVyQWRkcmVzcz1leHBvcnRzLmNvbXB1dGVBZGRyZXNzPWV4cG9ydHMuZ2V0SnNvbldhbGxldEFkZHJlc3M9ZXhwb3J0cy5UcmFuc2FjdGlvblR5cGVzPWV4cG9ydHMuc2VyaWFsaXplVHJhbnNhY3Rpb249ZXhwb3J0cy5wYXJzZVRyYW5zYWN0aW9uPWV4cG9ydHMuYWNjZXNzTGlzdGlmeT1leHBvcnRzLmpvaW5TaWduYXR1cmU9ZXhwb3J0cy5zcGxpdFNpZ25hdHVyZT1leHBvcnRzLnNvbGlkaXR5U2hhMjU2PWV4cG9ydHMuc29saWRpdHlLZWNjYWsyNTY9ZXhwb3J0cy5zb2xpZGl0eVBhY2s9ZXhwb3J0cy5zaHVmZmxlZD1leHBvcnRzLnJhbmRvbUJ5dGVzPWV4cG9ydHMuc2hhNTEyPWV4cG9ydHMuc2hhMjU2PWV4cG9ydHMucmlwZW1kMTYwPWV4cG9ydHMua2VjY2FrMjU2PWV4cG9ydHMuY29tcHV0ZUhtYWM9ZXhwb3J0cy5jb21taWZ5PWV4cG9ydHMucGFyc2VVbml0cz1leHBvcnRzLmZvcm1hdFVuaXRzPWV4cG9ydHMucGFyc2VFdGhlcj1leHBvcnRzLmZvcm1hdEV0aGVyPWV4cG9ydHMuaXNBZGRyZXNzPWV4cG9ydHMuZ2V0Q3JlYXRlMkFkZHJlc3M9ZXhwb3J0cy5nZXRDb250cmFjdEFkZHJlc3M9ZXhwb3J0cy5nZXRJY2FwQWRkcmVzcz1leHBvcnRzLmdldEFkZHJlc3M9ZXhwb3J0cy5fVHlwZWREYXRhRW5jb2Rlcj1leHBvcnRzLmlkPWV4cG9ydHMuaXNWYWxpZE5hbWU9ZXhwb3J0cy5uYW1laGFzaD1leHBvcnRzLmhhc2hNZXNzYWdlPWV4cG9ydHMuZG5zRW5jb2RlPWV4cG9ydHMucGFyc2VCeXRlczMyU3RyaW5nPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQWJpQ29kZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRkLkFiaUNvZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJjaGVja1Jlc3VsdEVycm9ycyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGQuY2hlY2tSZXN1bHRFcnJvcnN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkNvbnN0cnVjdG9yRnJhZ21lbnQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRkLkNvbnN0cnVjdG9yRnJhZ21lbnR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImRlZmF1bHRBYmlDb2RlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGQuZGVmYXVsdEFiaUNvZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJFcnJvckZyYWdtZW50Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZC5FcnJvckZyYWdtZW50fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJFdmVudEZyYWdtZW50Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZC5FdmVudEZyYWdtZW50fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJGb3JtYXRUeXBlcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGQuRm9ybWF0VHlwZXN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkZyYWdtZW50Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZC5GcmFnbWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiRnVuY3Rpb25GcmFnbWVudCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGQuRnVuY3Rpb25GcmFnbWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiSW5kZXhlZCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGQuSW5kZXhlZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiSW50ZXJmYWNlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZC5JbnRlcmZhY2V9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkxvZ0Rlc2NyaXB0aW9uIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZC5Mb2dEZXNjcmlwdGlvbn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiUGFyYW1UeXBlIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZC5QYXJhbVR5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlRyYW5zYWN0aW9uRGVzY3JpcHRpb24iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRkLlRyYW5zYWN0aW9uRGVzY3JpcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImdldEFkZHJlc3MiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQ2LmdldEFkZHJlc3N9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImdldENyZWF0ZTJBZGRyZXNzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkNi5nZXRDcmVhdGUyQWRkcmVzc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZ2V0Q29udHJhY3RBZGRyZXNzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkNi5nZXRDb250cmFjdEFkZHJlc3N9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImdldEljYXBBZGRyZXNzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkNi5nZXRJY2FwQWRkcmVzc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaXNBZGRyZXNzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkNi5pc0FkZHJlc3N9fSk7dmFyIGJhc2U2ND1fX2ltcG9ydFN0YXIobGliJDkpO2V4cG9ydHMuYmFzZTY0PWJhc2U2NDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiYmFzZTU4Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkai5CYXNlNTh9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImFycmF5aWZ5Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5hcnJheWlmeX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiY29uY2F0Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5jb25jYXR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImhleENvbmNhdCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDEuaGV4Q29uY2F0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJoZXhEYXRhU2xpY2UiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQxLmhleERhdGFTbGljZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaGV4RGF0YUxlbmd0aCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDEuaGV4RGF0YUxlbmd0aH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaGV4bGlmeSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDEuaGV4bGlmeX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaGV4U3RyaXBaZXJvcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDEuaGV4U3RyaXBaZXJvc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaGV4VmFsdWUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQxLmhleFZhbHVlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJoZXhaZXJvUGFkIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5oZXhaZXJvUGFkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJpc0J5dGVzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5pc0J5dGVzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJpc0J5dGVzTGlrZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDEuaXNCeXRlc0xpa2V9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImlzSGV4U3RyaW5nIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5pc0hleFN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiam9pblNpZ25hdHVyZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDEuam9pblNpZ25hdHVyZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiemVyb1BhZCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDEuemVyb1BhZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywic3BsaXRTaWduYXR1cmUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQxLnNwbGl0U2lnbmF0dXJlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJzdHJpcFplcm9zIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMS5zdHJpcFplcm9zfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfVHlwZWREYXRhRW5jb2RlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGMuX1R5cGVkRGF0YUVuY29kZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImRuc0VuY29kZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGMuZG5zRW5jb2RlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJoYXNoTWVzc2FnZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGMuaGFzaE1lc3NhZ2V9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImlkIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkYy5pZH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiaXNWYWxpZE5hbWUiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRjLmlzVmFsaWROYW1lfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJuYW1laGFzaCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGMubmFtZWhhc2h9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImRlZmF1bHRQYXRoIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkbi5kZWZhdWx0UGF0aH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZW50cm9weVRvTW5lbW9uaWMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRuLmVudHJvcHlUb01uZW1vbmljfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJnZXRBY2NvdW50UGF0aCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJG4uZ2V0QWNjb3VudFBhdGh9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkhETm9kZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJG4uSEROb2RlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJpc1ZhbGlkTW5lbW9uaWMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRuLmlzVmFsaWRNbmVtb25pY319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywibW5lbW9uaWNUb0VudHJvcHkiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRuLm1uZW1vbmljVG9FbnRyb3B5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJtbmVtb25pY1RvU2VlZCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJG4ubW5lbW9uaWNUb1NlZWR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImdldEpzb25XYWxsZXRBZGRyZXNzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkcC5nZXRKc29uV2FsbGV0QWRkcmVzc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywia2VjY2FrMjU2Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkNC5rZWNjYWsyNTZ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkxvZ2dlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliLkxvZ2dlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiY29tcHV0ZUhtYWMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRrLmNvbXB1dGVIbWFjfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJyaXBlbWQxNjAiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRrLnJpcGVtZDE2MH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywic2hhMjU2Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkay5zaGEyNTZ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInNoYTUxMiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGsuc2hhNTEyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJzb2xpZGl0eUtlY2NhazI1NiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJHUua2VjY2FrMjU2fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJzb2xpZGl0eVBhY2siLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiR1LnBhY2t9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInNvbGlkaXR5U2hhMjU2Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkdS5zaGEyNTZ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInJhbmRvbUJ5dGVzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkby5yYW5kb21CeXRlc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywic2h1ZmZsZWQiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRvLnNodWZmbGVkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJjaGVja1Byb3BlcnRpZXMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQzLmNoZWNrUHJvcGVydGllc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZGVlcENvcHkiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiQzLmRlZXBDb3B5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJkZWZpbmVSZWFkT25seSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDMuZGVmaW5lUmVhZE9ubHl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImdldFN0YXRpYyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDMuZ2V0U3RhdGljfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJyZXNvbHZlUHJvcGVydGllcyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDMucmVzb2x2ZVByb3BlcnRpZXN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInNoYWxsb3dDb3B5Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMy5zaGFsbG93Q29weX19KTt2YXIgUkxQPV9faW1wb3J0U3RhcihsaWIkNSk7ZXhwb3J0cy5STFA9UkxQO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJjb21wdXRlUHVibGljS2V5Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZy5jb21wdXRlUHVibGljS2V5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJyZWNvdmVyUHVibGljS2V5Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZy5yZWNvdmVyUHVibGljS2V5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJTaWduaW5nS2V5Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZy5TaWduaW5nS2V5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJmb3JtYXRCeXRlczMyU3RyaW5nIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkOC5mb3JtYXRCeXRlczMyU3RyaW5nfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJuYW1lcHJlcCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDgubmFtZXByZXB9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInBhcnNlQnl0ZXMzMlN0cmluZyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDgucGFyc2VCeXRlczMyU3RyaW5nfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJfdG9Fc2NhcGVkVXRmOFN0cmluZyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDguX3RvRXNjYXBlZFV0ZjhTdHJpbmd9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInRvVXRmOEJ5dGVzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkOC50b1V0ZjhCeXRlc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywidG9VdGY4Q29kZVBvaW50cyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJDgudG9VdGY4Q29kZVBvaW50c319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywidG9VdGY4U3RyaW5nIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkOC50b1V0ZjhTdHJpbmd9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlV0ZjhFcnJvckZ1bmNzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkOC5VdGY4RXJyb3JGdW5jc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiYWNjZXNzTGlzdGlmeSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGguYWNjZXNzTGlzdGlmeX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiY29tcHV0ZUFkZHJlc3MiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRoLmNvbXB1dGVBZGRyZXNzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJwYXJzZVRyYW5zYWN0aW9uIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkaC5wYXJzZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywicmVjb3ZlckFkZHJlc3MiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRoLnJlY292ZXJBZGRyZXNzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJzZXJpYWxpemVUcmFuc2FjdGlvbiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJGguc2VyaWFsaXplfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJUcmFuc2FjdGlvblR5cGVzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkaC5UcmFuc2FjdGlvblR5cGVzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJjb21taWZ5Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkdi5jb21taWZ5fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJmb3JtYXRFdGhlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJHYuZm9ybWF0RXRoZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInBhcnNlRXRoZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiR2LnBhcnNlRXRoZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImZvcm1hdFVuaXRzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkdi5mb3JtYXRVbml0c319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywicGFyc2VVbml0cyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJHYucGFyc2VVbml0c319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywidmVyaWZ5TWVzc2FnZSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJHEudmVyaWZ5TWVzc2FnZX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywidmVyaWZ5VHlwZWREYXRhIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkcS52ZXJpZnlUeXBlZERhdGF9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9mZXRjaERhdGEiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRzLl9mZXRjaERhdGF9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImZldGNoSnNvbiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJHMuZmV0Y2hKc29ufX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJwb2xsIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkcy5wb2xsfX0pO3ZhciBzaGEyXzI9bGliJGs7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlN1cHBvcnRlZEFsZ29yaXRobSIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc2hhMl8yLlN1cHBvcnRlZEFsZ29yaXRobX19KTt2YXIgc3RyaW5nc18yPWxpYiQ4O09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJVbmljb2RlTm9ybWFsaXphdGlvbkZvcm0iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHN0cmluZ3NfMi5Vbmljb2RlTm9ybWFsaXphdGlvbkZvcm19fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlV0ZjhFcnJvclJlYXNvbiIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc3RyaW5nc18yLlV0ZjhFcnJvclJlYXNvbn19KX0pO3ZhciB1dGlscyQ0PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHV0aWxzJDMpO3ZhciBfdmVyc2lvbiRPPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy52ZXJzaW9uPXZvaWQgMDtleHBvcnRzLnZlcnNpb249ImV0aGVycy81LjcuMiJ9KTt2YXIgX3ZlcnNpb24kUD1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhfdmVyc2lvbiRPKTt2YXIgZXRoZXJzPWNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzKXsidXNlIHN0cmljdCI7dmFyIF9fY3JlYXRlQmluZGluZz1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihvLG0sayxrMil7aWYoazI9PT11bmRlZmluZWQpazI9aztPYmplY3QuZGVmaW5lUHJvcGVydHkobyxrMix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBtW2tdfX0pfTpmdW5jdGlvbihvLG0sayxrMil7aWYoazI9PT11bmRlZmluZWQpazI9aztvW2syXT1tW2tdfSk7dmFyIF9fc2V0TW9kdWxlRGVmYXVsdD1jb21tb25qc0dsb2JhbCYmY29tbW9uanNHbG9iYWwuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihvLHYpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnZ9KX06ZnVuY3Rpb24obyx2KXtvWyJkZWZhdWx0Il09dn0pO3ZhciBfX2ltcG9ydFN0YXI9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24obW9kKXtpZihtb2QmJm1vZC5fX2VzTW9kdWxlKXJldHVybiBtb2Q7dmFyIHJlc3VsdD17fTtpZihtb2QhPW51bGwpZm9yKHZhciBrIGluIG1vZClpZihrIT09ImRlZmF1bHQiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLGspKV9fY3JlYXRlQmluZGluZyhyZXN1bHQsbW9kLGspO19fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsbW9kKTtyZXR1cm4gcmVzdWx0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOnRydWV9KTtleHBvcnRzLldvcmRsaXN0PWV4cG9ydHMudmVyc2lvbj1leHBvcnRzLndvcmRsaXN0cz1leHBvcnRzLnV0aWxzPWV4cG9ydHMubG9nZ2VyPWV4cG9ydHMuZXJyb3JzPWV4cG9ydHMuY29uc3RhbnRzPWV4cG9ydHMuRml4ZWROdW1iZXI9ZXhwb3J0cy5CaWdOdW1iZXI9ZXhwb3J0cy5Db250cmFjdEZhY3Rvcnk9ZXhwb3J0cy5Db250cmFjdD1leHBvcnRzLkJhc2VDb250cmFjdD1leHBvcnRzLnByb3ZpZGVycz1leHBvcnRzLmdldERlZmF1bHRQcm92aWRlcj1leHBvcnRzLlZvaWRTaWduZXI9ZXhwb3J0cy5XYWxsZXQ9ZXhwb3J0cy5TaWduZXI9dm9pZCAwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJCYXNlQ29udHJhY3QiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRpLkJhc2VDb250cmFjdH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQ29udHJhY3QiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRpLkNvbnRyYWN0fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJDb250cmFjdEZhY3RvcnkiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRpLkNvbnRyYWN0RmFjdG9yeX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQmlnTnVtYmVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMi5CaWdOdW1iZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkZpeGVkTnVtYmVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkMi5GaXhlZE51bWJlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiU2lnbmVyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIkZi5TaWduZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlZvaWRTaWduZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxpYiRmLlZvaWRTaWduZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIldhbGxldCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJHEuV2FsbGV0fX0pO3ZhciBjb25zdGFudHM9X19pbXBvcnRTdGFyKGxpYiQ3KTtleHBvcnRzLmNvbnN0YW50cz1jb25zdGFudHM7dmFyIHByb3ZpZGVycz1fX2ltcG9ydFN0YXIobGliJHQpO2V4cG9ydHMucHJvdmlkZXJzPXByb3ZpZGVyczt2YXIgcHJvdmlkZXJzXzE9bGliJHQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImdldERlZmF1bHRQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcHJvdmlkZXJzXzEuZ2V0RGVmYXVsdFByb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJXb3JkbGlzdCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJG0uV29yZGxpc3R9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIndvcmRsaXN0cyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGliJG0ud29yZGxpc3RzfX0pO3ZhciB1dGlscz1fX2ltcG9ydFN0YXIodXRpbHMkMyk7ZXhwb3J0cy51dGlscz11dGlscztPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiZXJyb3JzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsaWIuRXJyb3JDb2RlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJ2ZXJzaW9uIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBfdmVyc2lvbiRPLnZlcnNpb259fSk7dmFyIGxvZ2dlcj1uZXcgbGliLkxvZ2dlcihfdmVyc2lvbiRPLnZlcnNpb24pO2V4cG9ydHMubG9nZ2VyPWxvZ2dlcn0pO3ZhciBldGhlcnMkMT1nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhldGhlcnMpO3ZhciBsaWIkdz1jcmVhdGVDb21tb25qc01vZHVsZShmdW5jdGlvbihtb2R1bGUsZXhwb3J0cyl7InVzZSBzdHJpY3QiO3ZhciBfX2NyZWF0ZUJpbmRpbmc9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24obyxtLGssazIpe2lmKGsyPT09dW5kZWZpbmVkKWsyPWs7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sazIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbVtrXX19KX06ZnVuY3Rpb24obyxtLGssazIpe2lmKGsyPT09dW5kZWZpbmVkKWsyPWs7b1trMl09bVtrXX0pO3ZhciBfX3NldE1vZHVsZURlZmF1bHQ9Y29tbW9uanNHbG9iYWwmJmNvbW1vbmpzR2xvYmFsLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24obyx2KXtPYmplY3QuZGVmaW5lUHJvcGVydHkobywiZGVmYXVsdCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp2fSl9OmZ1bmN0aW9uKG8sdil7b1siZGVmYXVsdCJdPXZ9KTt2YXIgX19pbXBvcnRTdGFyPWNvbW1vbmpzR2xvYmFsJiZjb21tb25qc0dsb2JhbC5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKG1vZCl7aWYobW9kJiZtb2QuX19lc01vZHVsZSlyZXR1cm4gbW9kO3ZhciByZXN1bHQ9e307aWYobW9kIT1udWxsKWZvcih2YXIgayBpbiBtb2QpaWYoayE9PSJkZWZhdWx0IiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCxrKSlfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LG1vZCxrKTtfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LG1vZCk7cmV0dXJuIHJlc3VsdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTp0cnVlfSk7ZXhwb3J0cy5Xb3JkbGlzdD1leHBvcnRzLnZlcnNpb249ZXhwb3J0cy53b3JkbGlzdHM9ZXhwb3J0cy51dGlscz1leHBvcnRzLmxvZ2dlcj1leHBvcnRzLmVycm9ycz1leHBvcnRzLmNvbnN0YW50cz1leHBvcnRzLkZpeGVkTnVtYmVyPWV4cG9ydHMuQmlnTnVtYmVyPWV4cG9ydHMuQ29udHJhY3RGYWN0b3J5PWV4cG9ydHMuQ29udHJhY3Q9ZXhwb3J0cy5CYXNlQ29udHJhY3Q9ZXhwb3J0cy5wcm92aWRlcnM9ZXhwb3J0cy5nZXREZWZhdWx0UHJvdmlkZXI9ZXhwb3J0cy5Wb2lkU2lnbmVyPWV4cG9ydHMuV2FsbGV0PWV4cG9ydHMuU2lnbmVyPWV4cG9ydHMuZXRoZXJzPXZvaWQgMDt2YXIgZXRoZXJzJDE9X19pbXBvcnRTdGFyKGV0aGVycyk7ZXhwb3J0cy5ldGhlcnM9ZXRoZXJzJDE7dHJ5e3ZhciBhbnlHbG9iYWw9d2luZG93O2lmKGFueUdsb2JhbC5fZXRoZXJzPT1udWxsKXthbnlHbG9iYWwuX2V0aGVycz1ldGhlcnMkMX19Y2F0Y2goZXJyb3Ipe312YXIgZXRoZXJzXzE9ZXRoZXJzO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJTaWduZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0aGVyc18xLlNpZ25lcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiV2FsbGV0Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS5XYWxsZXR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIlZvaWRTaWduZXIiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0aGVyc18xLlZvaWRTaWduZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImdldERlZmF1bHRQcm92aWRlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEuZ2V0RGVmYXVsdFByb3ZpZGVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJwcm92aWRlcnMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0aGVyc18xLnByb3ZpZGVyc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQmFzZUNvbnRyYWN0Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS5CYXNlQ29udHJhY3R9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkNvbnRyYWN0Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS5Db250cmFjdH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiQ29udHJhY3RGYWN0b3J5Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS5Db250cmFjdEZhY3Rvcnl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIkJpZ051bWJlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEuQmlnTnVtYmVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJGaXhlZE51bWJlciIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEuRml4ZWROdW1iZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsImNvbnN0YW50cyIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXRoZXJzXzEuY29uc3RhbnRzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCJlcnJvcnMiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0aGVyc18xLmVycm9yc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywibG9nZ2VyIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS5sb2dnZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInV0aWxzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS51dGlsc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywid29yZGxpc3RzIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS53b3JkbGlzdHN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsInZlcnNpb24iLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGV0aGVyc18xLnZlcnNpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIldvcmRsaXN0Iix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBldGhlcnNfMS5Xb3JkbGlzdH19KX0pO3ZhciBpbmRleCR1PWdldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYiR3KTtyZXR1cm4gaW5kZXgkdX0pOw=="}},"time_used":24,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":10,"receive":14,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"1.1.1.1/cdn-cgi/trace","fqdn":"1.1.1.1","domain":"1.1.1.1","tld":""},"ip":{"addr":"1.1.1.1","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:58.007Z","timestamp":1785113878007,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"cloudflare-dns.com","organization":""},"issuer":{"commonName":"SSL.com SSL Intermediate CA ECC R2","organization":"SSL Corp"},"validity":{"start":"Wed, 31 Dec 2025 19:20:01 GMT","end":"Mon, 21 Dec 2026 19:20:01 GMT"},"fingerprint":{"sha1":"F8:86:35:01:72:60:D4:0B:9E:B4:17:BE:E7:37:37:91:1B:63:0E:59","sha256":"E3:B0:28:26:78:9D:65:3D:22:4D:3E:DA:CB:E4:E8:77:CB:72:86:FC:4C:92:26:72:F6:22:67:41:CA:57:AD:65"}}},"request":{"raw":"GET /cdn-cgi/trace HTTP/1.1\r\nHost: 1.1.1.1\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\nReferer: http://sahnesirince.com/\r\nOrigin: http://sahnesirince.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ndate: Mon, 27 Jul 2026 00:57:58 GMT\r\ncontent-type: text/plain\r\nif-modified-since: off\r\nexpires: Thu, 01 Jan 1970 00:00:01 GMT\r\naccess-control-allow-origin: *\r\ncontent-encoding: gzip\r\nserver: cloudflare\r\ncf-ray: a217b169bf0ba41f-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":268,"size_decoded":499,"mime_type":"text/plain","magic":"ASCII text","md5":"8e22440c866e7b2185eb986f7a4e0bd7","sha1":"401767dcd1ed36884fd1d0e09a42352f62e5a4b9","sha256":"4162ab8a4053a93dc4681426d833f0d8ae6a43ddb470213ae914fcb5c8ffad4f","sha512":"3aaeeada532d405c316dd42df8f7bcce50014c87c621d48cd26fc651b38a43887fea47b5e4580ac4315e681ad1596c95b10e153dd25ffe2bce3bb0c3faaa91e4","ssdeep":"","tlshash":"5ad0ebc7d32e0018103c208102aa6080c761460b08b7be20eee510006f5c2db10ca8f0","first_seen":"2026-07-27T00:58:32.335362Z","last_seen":"2026-07-27T00:58:32.335362Z","times_seen":1,"resource_available":false,"data":"Zmw9MTEzMGY1Cmg9MS4xLjEuMQppcD0xOTUuNjQuMTE4LjE1Mgp0cz0xNzg1MTEzODc4LjAwMAp2aXNpdF9zY2hlbWU9aHR0cHMKdWFnPU1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQ7IHJ2OjEzNC4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzEzNC4wCmNvbG89T1NMCnNsaXZlcj1ub25lCmh0dHA9aHR0cC8yCmxvYz1OTwp0bHM9VExTdjEuMwpzbmk9b2ZmCndhcnA9b2ZmCmdhdGV3YXk9b2ZmCnJiaT1vZmYKa2V4PVgyNTUxOU1MS0VNNzY4Cg=="}},"time_used":26,"timings":{"blocked":0,"dns":0,"connect":3,"send":0,"wait":5,"receive":0,"ssl":18},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/commons/thumb/4/46/Bitcoin.svg/2048px-Bitcoin.svg.png","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.060Z","timestamp":1785113873060,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /wikipedia/commons/thumb/4/46/Bitcoin.svg/2048px-Bitcoin.svg.png HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 400 \r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nserver: Varnish\r\nx-cache: cp3077 int\r\nx-cache-status: int-front\r\nserver-timing: cache;desc=\"int-front\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\ncontent-type: text/html; charset=utf-8\r\ncontent-length: 2010\r\nx-request-id: e08d2de3-438d-4b32-90ac-6a48803a91ee\r\nx-analytics: \r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"400","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":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Flag_of_UNICEF.svg/640px-Flag_of_UNICEF.svg.png","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.069Z","timestamp":1785113873069,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.wikimedia.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Fri, 12 Jun 2026 05:24:58 GMT","end":"Thu, 10 Sep 2026 05:24:57 GMT"},"fingerprint":{"sha1":"5B:35:4A:25:C6:4D:17:23:8B:63:A3:F7:CE:52:1B:B7:22:06:BF:1B","sha256":"FE:D1:85:EF:B6:D0:7E:42:4F:F4:62:C9:8C:A3:BA:2C:88:5E:47:EB:9A:03:3D:30:4B:E3:63:FF:11:AD:F6:0D"}}},"request":{"raw":"GET /wikipedia/commons/thumb/d/d1/Flag_of_UNICEF.svg/640px-Flag_of_UNICEF.svg.png HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 400 \r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nserver: Varnish\r\nx-cache: cp3077 int\r\nx-cache-status: int-front\r\nserver-timing: cache;desc=\"int-front\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\ncontent-type: text/html; charset=utf-8\r\ncontent-length: 2010\r\nx-request-id: c2fbd711-a13e-46b4-8a18-c924384e3e47\r\nx-analytics: \r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"400","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":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/commons/thumb/f/f5/World_Food_Program_logo.svg/640px-World_Food_Program_logo.svg.png","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.071Z","timestamp":1785113873071,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /wikipedia/commons/thumb/f/f5/World_Food_Program_logo.svg/640px-World_Food_Program_logo.svg.png HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 400 \r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nserver: Varnish\r\nx-cache: cp3077 int\r\nx-cache-status: int-front\r\nserver-timing: cache;desc=\"int-front\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\ncontent-type: text/html; charset=utf-8\r\ncontent-length: 2010\r\nx-request-id: 54b1e33c-60b1-4c38-a44b-29b8fdcc89ea\r\nx-analytics: \r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"400","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":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdn.jsdelivr.net/npm/qrcode@1.5.0/build/qrcode.min.js","fqdn":"cdn.jsdelivr.net","domain":"jsdelivr.net","tld":"net"},"ip":{"addr":"151.101.129.229","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.049Z","timestamp":1785113873049,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"jsdelivr.net","organization":""},"issuer":{"commonName":"GlobalSign Atlas R3 DV TLS CA 2026 Q2","organization":"GlobalSign nv-sa"},"validity":{"start":"Wed, 20 May 2026 15:48:47 GMT","end":"Sat, 05 Dec 2026 14:48:47 GMT"},"fingerprint":{"sha1":"D4:05:C2:EC:C7:EE:2B:D0:08:68:0D:3D:33:77:48:78:43:E7:D1:E1","sha256":"ED:84:90:EE:71:BC:6B:5E:B3:D2:50:B0:23:3A:06:0D:E0:50:C6:B6:A9:09:36:E6:CE:FE:E8:66:89:EB:4E:C5"}}},"request":{"raw":"GET /npm/qrcode@1.5.0/build/qrcode.min.js HTTP/1.1\r\nHost: cdn.jsdelivr.net\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: *\r\ntiming-allow-origin: *\r\ncache-control: public, max-age=31536000, s-maxage=31536000, immutable\r\ncross-origin-resource-policy: cross-origin\r\nx-content-type-options: nosniff\r\nstrict-transport-security: max-age=31536000; includeSubDomains; preload\r\ncontent-type: application/javascript; charset=utf-8\r\nx-jsd-version: 1.5.0\r\nx-jsd-version-type: version\r\netag: W/\"5ca0-KRTxWx9U19PlfNipb1kRi5XEY8c\"\r\ncontent-encoding: br\r\naccept-ranges: bytes\r\nage: 2198921\r\ndate: Mon, 27 Jul 2026 00:57:53 GMT\r\nx-served-by: cache-fra-eddf8230219-FRA, cache-bma-essb1270076-BMA\r\nx-cache: HIT, HIT\r\nvary: Accept-Encoding\r\nalt-svc: h3=\":443\";ma=86400,h3-29=\":443\";ma=86400,h3-27=\":443\";ma=86400\r\ncontent-length: 9387\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":23712,"size_decoded":10180,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (23441)","md5":"2c6be7c225318bc4145cb3d08b7d9de8","sha1":"2914f15b1f54d7d3e57cd8a96f59118b95c463c7","sha256":"9bbd206c49afacbc48d0544bc41527989cc870068e32dcb6991374c617bf333f","sha512":"d3680ba33f748af03ac16fcbcd022495b3b6d11d7965c522355de0c5d2ec4ed8c823285d7c9602d9f3bef8117ad43773935f834fdd859c7c6395790459c1cdeb","ssdeep":"384:Re3LeEsPd+Iv27CKsC7Gepp+WTYBO79NpSmlj62jZVRYmDEh52xsc8r3OmfPqIME:MkWTYBCnRX42q6ye7wF","tlshash":"6ab2ea98f3a5a16843e76495042f1006e1beb924792e8965db51d4c3fcf8ee9903bf38","first_seen":"2025-03-21T08:06:36.394484Z","last_seen":"2026-07-27T00:59:02.772387Z","times_seen":28,"resource_available":true,"data":"LyoqCiAqIFNraXBwZWQgbWluaWZpY2F0aW9uIGJlY2F1c2UgdGhlIG9yaWdpbmFsIGZpbGVzIGFwcGVhcnMgdG8gYmUgYWxyZWFkeSBtaW5pZmllZC4KICogT3JpZ2luYWwgZmlsZTogL25wbS9xcmNvZGVAMS41LjAvYnVpbGQvcXJjb2RlLmpzCiAqCiAqIERvIE5PVCB1c2UgU1JJIHdpdGggZHluYW1pY2FsbHkgZ2VuZXJhdGVkIGZpbGVzISBNb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5qc2RlbGl2ci5jb20vdXNpbmctc3JpLXdpdGgtZHluYW1pYy1maWxlcwogKi8KdmFyIFFSQ29kZT1mdW5jdGlvbih0KXsidXNlIHN0cmljdCI7dmFyIHIsZT1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBQcm9taXNlJiZQcm9taXNlLnByb3RvdHlwZSYmUHJvbWlzZS5wcm90b3R5cGUudGhlbn0sbj1bMCwyNiw0NCw3MCwxMDAsMTM0LDE3MiwxOTYsMjQyLDI5MiwzNDYsNDA0LDQ2Niw1MzIsNTgxLDY1NSw3MzMsODE1LDkwMSw5OTEsMTA4NSwxMTU2LDEyNTgsMTM2NCwxNDc0LDE1ODgsMTcwNiwxODI4LDE5MjEsMjA1MSwyMTg1LDIzMjMsMjQ2NSwyNjExLDI3NjEsMjg3NiwzMDM0LDMxOTYsMzM2MiwzNTMyLDM3MDZdLG89ZnVuY3Rpb24odCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCcidmVyc2lvbiIgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkJyk7aWYodDwxfHx0PjQwKXRocm93IG5ldyBFcnJvcignInZlcnNpb24iIHNob3VsZCBiZSBpbiByYW5nZSBmcm9tIDEgdG8gNDAnKTtyZXR1cm4gNCp0KzE3fSxhPWZ1bmN0aW9uKHQpe3JldHVybiBuW3RdfSxpPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcj0wOzAhPT10OylyKyssdD4+Pj0xO3JldHVybiByfSx1PWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcignInRvU0pJU0Z1bmMiIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uLicpO3I9dH0scz1mdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT1yfSxmPWZ1bmN0aW9uKHQpe3JldHVybiByKHQpfTtmdW5jdGlvbiBoKHQscil7cmV0dXJuIHQocj17ZXhwb3J0czp7fX0sci5leHBvcnRzKSxyLmV4cG9ydHN9dmFyIGM9aCgoZnVuY3Rpb24odCxyKXtyLkw9e2JpdDoxfSxyLk09e2JpdDowfSxyLlE9e2JpdDozfSxyLkg9e2JpdDoyfSxyLmlzVmFsaWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnZvaWQgMCE9PXQuYml0JiZ0LmJpdD49MCYmdC5iaXQ8NH0sci5mcm9tPWZ1bmN0aW9uKHQsZSl7aWYoci5pc1ZhbGlkKHQpKXJldHVybiB0O3RyeXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiUGFyYW0gaXMgbm90IGEgc3RyaW5nIik7c3dpdGNoKHQudG9Mb3dlckNhc2UoKSl7Y2FzZSJsIjpjYXNlImxvdyI6cmV0dXJuIHIuTDtjYXNlIm0iOmNhc2UibWVkaXVtIjpyZXR1cm4gci5NO2Nhc2UicSI6Y2FzZSJxdWFydGlsZSI6cmV0dXJuIHIuUTtjYXNlImgiOmNhc2UiaGlnaCI6cmV0dXJuIHIuSDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBFQyBMZXZlbDogIit0KX19KHQpfWNhdGNoKHQpe3JldHVybiBlfX19KSk7ZnVuY3Rpb24gZygpe3RoaXMuYnVmZmVyPVtdLHRoaXMubGVuZ3RoPTB9Yy5MLGMuTSxjLlEsYy5ILGMuaXNWYWxpZCxnLnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9uKHQpe3ZhciByPU1hdGguZmxvb3IodC84KTtyZXR1cm4gMT09KHRoaXMuYnVmZmVyW3JdPj4+Ny10JTgmMSl9LHB1dDpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0wO2U8cjtlKyspdGhpcy5wdXRCaXQoMT09KHQ+Pj5yLWUtMSYxKSl9LGdldExlbmd0aEluQml0czpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0scHV0Qml0OmZ1bmN0aW9uKHQpe3ZhciByPU1hdGguZmxvb3IodGhpcy5sZW5ndGgvOCk7dGhpcy5idWZmZXIubGVuZ3RoPD1yJiZ0aGlzLmJ1ZmZlci5wdXNoKDApLHQmJih0aGlzLmJ1ZmZlcltyXXw9MTI4Pj4+dGhpcy5sZW5ndGglOCksdGhpcy5sZW5ndGgrK319O3ZhciBkPWc7ZnVuY3Rpb24gbCh0KXtpZighdHx8dDwxKXRocm93IG5ldyBFcnJvcigiQml0TWF0cml4IHNpemUgbXVzdCBiZSBkZWZpbmVkIGFuZCBncmVhdGVyIHRoYW4gMCIpO3RoaXMuc2l6ZT10LHRoaXMuZGF0YT1uZXcgVWludDhBcnJheSh0KnQpLHRoaXMucmVzZXJ2ZWRCaXQ9bmV3IFVpbnQ4QXJyYXkodCp0KX1sLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyLGUsbil7dmFyIG89dCp0aGlzLnNpemUrcjt0aGlzLmRhdGFbb109ZSxuJiYodGhpcy5yZXNlcnZlZEJpdFtvXT0hMCl9LGwucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLmRhdGFbdCp0aGlzLnNpemUrcl19LGwucHJvdG90eXBlLnhvcj1mdW5jdGlvbih0LHIsZSl7dGhpcy5kYXRhW3QqdGhpcy5zaXplK3JdXj1lfSxsLnByb3RvdHlwZS5pc1Jlc2VydmVkPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMucmVzZXJ2ZWRCaXRbdCp0aGlzLnNpemUrcl19O3ZhciB2PWwscD1oKChmdW5jdGlvbih0LHIpe3ZhciBlPW87ci5nZXRSb3dDb2xDb29yZHM9ZnVuY3Rpb24odCl7aWYoMT09PXQpcmV0dXJuW107Zm9yKHZhciByPU1hdGguZmxvb3IodC83KSsyLG49ZSh0KSxvPTE0NT09PW4/MjY6MipNYXRoLmNlaWwoKG4tMTMpLygyKnItMikpLGE9W24tN10saT0xO2k8ci0xO2krKylhW2ldPWFbaS0xXS1vO3JldHVybiBhLnB1c2goNiksYS5yZXZlcnNlKCl9LHIuZ2V0UG9zaXRpb25zPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPXIuZ2V0Um93Q29sQ29vcmRzKHQpLG89bi5sZW5ndGgsYT0wO2E8bzthKyspZm9yKHZhciBpPTA7aTxvO2krKykwPT09YSYmMD09PWl8fDA9PT1hJiZpPT09by0xfHxhPT09by0xJiYwPT09aXx8ZS5wdXNoKFtuW2FdLG5baV1dKTtyZXR1cm4gZX19KSk7cC5nZXRSb3dDb2xDb29yZHMscC5nZXRQb3NpdGlvbnM7dmFyIHc9byxtPWZ1bmN0aW9uKHQpe3ZhciByPXcodCk7cmV0dXJuW1swLDBdLFtyLTcsMF0sWzAsci03XV19LEU9aCgoZnVuY3Rpb24odCxyKXtyLlBhdHRlcm5zPXtQQVRURVJOMDAwOjAsUEFUVEVSTjAwMToxLFBBVFRFUk4wMTA6MixQQVRURVJOMDExOjMsUEFUVEVSTjEwMDo0LFBBVFRFUk4xMDE6NSxQQVRURVJOMTEwOjYsUEFUVEVSTjExMTo3fTt2YXIgZT0zLG49MyxvPTQwLGE9MTA7ZnVuY3Rpb24gaSh0LGUsbil7c3dpdGNoKHQpe2Nhc2Ugci5QYXR0ZXJucy5QQVRURVJOMDAwOnJldHVybihlK24pJTI9PTA7Y2FzZSByLlBhdHRlcm5zLlBBVFRFUk4wMDE6cmV0dXJuIGUlMj09MDtjYXNlIHIuUGF0dGVybnMuUEFUVEVSTjAxMDpyZXR1cm4gbiUzPT0wO2Nhc2Ugci5QYXR0ZXJucy5QQVRURVJOMDExOnJldHVybihlK24pJTM9PTA7Y2FzZSByLlBhdHRlcm5zLlBBVFRFUk4xMDA6cmV0dXJuKE1hdGguZmxvb3IoZS8yKStNYXRoLmZsb29yKG4vMykpJTI9PTA7Y2FzZSByLlBhdHRlcm5zLlBBVFRFUk4xMDE6cmV0dXJuIGUqbiUyK2UqbiUzPT0wO2Nhc2Ugci5QYXR0ZXJucy5QQVRURVJOMTEwOnJldHVybihlKm4lMitlKm4lMyklMj09MDtjYXNlIHIuUGF0dGVybnMuUEFUVEVSTjExMTpyZXR1cm4oZSpuJTMrKGUrbiklMiklMj09MDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiYmFkIG1hc2tQYXR0ZXJuOiIrdCl9fXIuaXNWYWxpZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIiIhPT10JiYhaXNOYU4odCkmJnQ+PTAmJnQ8PTd9LHIuZnJvbT1mdW5jdGlvbih0KXtyZXR1cm4gci5pc1ZhbGlkKHQpP3BhcnNlSW50KHQsMTApOnZvaWQgMH0sci5nZXRQZW5hbHR5TjE9ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQuc2l6ZSxuPTAsbz0wLGE9MCxpPW51bGwsdT1udWxsLHM9MDtzPHI7cysrKXtvPWE9MCxpPXU9bnVsbDtmb3IodmFyIGY9MDtmPHI7ZisrKXt2YXIgaD10LmdldChzLGYpO2g9PT1pP28rKzoobz49NSYmKG4rPWUrKG8tNSkpLGk9aCxvPTEpLChoPXQuZ2V0KGYscykpPT09dT9hKys6KGE+PTUmJihuKz1lKyhhLTUpKSx1PWgsYT0xKX1vPj01JiYobis9ZSsoby01KSksYT49NSYmKG4rPWUrKGEtNSkpfXJldHVybiBufSxyLmdldFBlbmFsdHlOMj1mdW5jdGlvbih0KXtmb3IodmFyIHI9dC5zaXplLGU9MCxvPTA7bzxyLTE7bysrKWZvcih2YXIgYT0wO2E8ci0xO2ErKyl7dmFyIGk9dC5nZXQobyxhKSt0LmdldChvLGErMSkrdC5nZXQobysxLGEpK3QuZ2V0KG8rMSxhKzEpOzQhPT1pJiYwIT09aXx8ZSsrfXJldHVybiBlKm59LHIuZ2V0UGVuYWx0eU4zPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LnNpemUsZT0wLG49MCxhPTAsaT0wO2k8cjtpKyspe249YT0wO2Zvcih2YXIgdT0wO3U8cjt1Kyspbj1uPDwxJjIwNDd8dC5nZXQoaSx1KSx1Pj0xMCYmKDE0ODg9PT1ufHw5Mz09PW4pJiZlKyssYT1hPDwxJjIwNDd8dC5nZXQodSxpKSx1Pj0xMCYmKDE0ODg9PT1hfHw5Mz09PWEpJiZlKyt9cmV0dXJuIGUqb30sci5nZXRQZW5hbHR5TjQ9ZnVuY3Rpb24odCl7Zm9yKHZhciByPTAsZT10LmRhdGEubGVuZ3RoLG49MDtuPGU7bisrKXIrPXQuZGF0YVtuXTtyZXR1cm4gTWF0aC5hYnMoTWF0aC5jZWlsKDEwMCpyL2UvNSktMTApKmF9LHIuYXBwbHlNYXNrPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXIuc2l6ZSxuPTA7bjxlO24rKylmb3IodmFyIG89MDtvPGU7bysrKXIuaXNSZXNlcnZlZChvLG4pfHxyLnhvcihvLG4saSh0LG8sbikpfSxyLmdldEJlc3RNYXNrPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPU9iamVjdC5rZXlzKHIuUGF0dGVybnMpLmxlbmd0aCxvPTAsYT0xLzAsaT0wO2k8bjtpKyspe2UoaSksci5hcHBseU1hc2soaSx0KTt2YXIgdT1yLmdldFBlbmFsdHlOMSh0KStyLmdldFBlbmFsdHlOMih0KStyLmdldFBlbmFsdHlOMyh0KStyLmdldFBlbmFsdHlONCh0KTtyLmFwcGx5TWFzayhpLHQpLHU8YSYmKGE9dSxvPWkpfXJldHVybiBvfX0pKTtFLlBhdHRlcm5zLEUuaXNWYWxpZCxFLmdldFBlbmFsdHlOMSxFLmdldFBlbmFsdHlOMixFLmdldFBlbmFsdHlOMyxFLmdldFBlbmFsdHlONCxFLmFwcGx5TWFzayxFLmdldEJlc3RNYXNrO3ZhciB5PVsxLDEsMSwxLDEsMSwxLDEsMSwxLDIsMiwxLDIsMiw0LDEsMiw0LDQsMiw0LDQsNCwyLDQsNiw1LDIsNCw2LDYsMiw1LDgsOCw0LDUsOCw4LDQsNSw4LDExLDQsOCwxMCwxMSw0LDksMTIsMTYsNCw5LDE2LDE2LDYsMTAsMTIsMTgsNiwxMCwxNywxNiw2LDExLDE2LDE5LDYsMTMsMTgsMjEsNywxNCwyMSwyNSw4LDE2LDIwLDI1LDgsMTcsMjMsMjUsOSwxNywyMywzNCw5LDE4LDI1LDMwLDEwLDIwLDI3LDMyLDEyLDIxLDI5LDM1LDEyLDIzLDM0LDM3LDEyLDI1LDM0LDQwLDEzLDI2LDM1LDQyLDE0LDI4LDM4LDQ1LDE1LDI5LDQwLDQ4LDE2LDMxLDQzLDUxLDE3LDMzLDQ1LDU0LDE4LDM1LDQ4LDU3LDE5LDM3LDUxLDYwLDE5LDM4LDUzLDYzLDIwLDQwLDU2LDY2LDIxLDQzLDU5LDcwLDIyLDQ1LDYyLDc0LDI0LDQ3LDY1LDc3LDI1LDQ5LDY4LDgxXSxBPVs3LDEwLDEzLDE3LDEwLDE2LDIyLDI4LDE1LDI2LDM2LDQ0LDIwLDM2LDUyLDY0LDI2LDQ4LDcyLDg4LDM2LDY0LDk2LDExMiw0MCw3MiwxMDgsMTMwLDQ4LDg4LDEzMiwxNTYsNjAsMTEwLDE2MCwxOTIsNzIsMTMwLDE5MiwyMjQsODAsMTUwLDIyNCwyNjQsOTYsMTc2LDI2MCwzMDgsMTA0LDE5OCwyODgsMzUyLDEyMCwyMTYsMzIwLDM4NCwxMzIsMjQwLDM2MCw0MzIsMTQ0LDI4MCw0MDgsNDgwLDE2OCwzMDgsNDQ4LDUzMiwxODAsMzM4LDUwNCw1ODgsMTk2LDM2NCw1NDYsNjUwLDIyNCw0MTYsNjAwLDcwMCwyMjQsNDQyLDY0NCw3NTAsMjUyLDQ3Niw2OTAsODE2LDI3MCw1MDQsNzUwLDkwMCwzMDAsNTYwLDgxMCw5NjAsMzEyLDU4OCw4NzAsMTA1MCwzMzYsNjQ0LDk1MiwxMTEwLDM2MCw3MDAsMTAyMCwxMjAwLDM5MCw3MjgsMTA1MCwxMjYwLDQyMCw3ODQsMTE0MCwxMzUwLDQ1MCw4MTIsMTIwMCwxNDQwLDQ4MCw4NjgsMTI5MCwxNTMwLDUxMCw5MjQsMTM1MCwxNjIwLDU0MCw5ODAsMTQ0MCwxNzEwLDU3MCwxMDM2LDE1MzAsMTgwMCw1NzAsMTA2NCwxNTkwLDE4OTAsNjAwLDExMjAsMTY4MCwxOTgwLDYzMCwxMjA0LDE3NzAsMjEwMCw2NjAsMTI2MCwxODYwLDIyMjAsNzIwLDEzMTYsMTk1MCwyMzEwLDc1MCwxMzcyLDIwNDAsMjQzMF0sST1mdW5jdGlvbih0LHIpe3N3aXRjaChyKXtjYXNlIGMuTDpyZXR1cm4geVs0Kih0LTEpKzBdO2Nhc2UgYy5NOnJldHVybiB5WzQqKHQtMSkrMV07Y2FzZSBjLlE6cmV0dXJuIHlbNCoodC0xKSsyXTtjYXNlIGMuSDpyZXR1cm4geVs0Kih0LTEpKzNdO2RlZmF1bHQ6cmV0dXJufX0sTT1mdW5jdGlvbih0LHIpe3N3aXRjaChyKXtjYXNlIGMuTDpyZXR1cm4gQVs0Kih0LTEpKzBdO2Nhc2UgYy5NOnJldHVybiBBWzQqKHQtMSkrMV07Y2FzZSBjLlE6cmV0dXJuIEFbNCoodC0xKSsyXTtjYXNlIGMuSDpyZXR1cm4gQVs0Kih0LTEpKzNdO2RlZmF1bHQ6cmV0dXJufX0sTj1uZXcgVWludDhBcnJheSg1MTIpLEI9bmV3IFVpbnQ4QXJyYXkoMjU2KTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MSxyPTA7cjwyNTU7cisrKU5bcl09dCxCW3RdPXIsMjU2Jih0PDw9MSkmJih0Xj0yODUpO2Zvcih2YXIgZT0yNTU7ZTw1MTI7ZSsrKU5bZV09TltlLTI1NV19KCk7dmFyIEM9ZnVuY3Rpb24odCl7cmV0dXJuIE5bdF19LFA9ZnVuY3Rpb24odCxyKXtyZXR1cm4gMD09PXR8fDA9PT1yPzA6TltCW3RdK0Jbcl1dfSxSPWgoKGZ1bmN0aW9uKHQscil7ci5tdWw9ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgrci5sZW5ndGgtMSksbj0wO248dC5sZW5ndGg7bisrKWZvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKWVbbitvXV49UCh0W25dLHJbb10pO3JldHVybiBlfSxyLm1vZD1mdW5jdGlvbih0LHIpe2Zvcih2YXIgZT1uZXcgVWludDhBcnJheSh0KTtlLmxlbmd0aC1yLmxlbmd0aD49MDspe2Zvcih2YXIgbj1lWzBdLG89MDtvPHIubGVuZ3RoO28rKyllW29dXj1QKHJbb10sbik7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aCYmMD09PWVbYV07KWErKztlPWUuc2xpY2UoYSl9cmV0dXJuIGV9LHIuZ2VuZXJhdGVFQ1BvbHlub21pYWw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBVaW50OEFycmF5KFsxXSksbj0wO248dDtuKyspZT1yLm11bChlLG5ldyBVaW50OEFycmF5KFsxLEMobildKSk7cmV0dXJuIGV9fSkpO2Z1bmN0aW9uIFQodCl7dGhpcy5nZW5Qb2x5PXZvaWQgMCx0aGlzLmRlZ3JlZT10LHRoaXMuZGVncmVlJiZ0aGlzLmluaXRpYWxpemUodGhpcy5kZWdyZWUpfVIubXVsLFIubW9kLFIuZ2VuZXJhdGVFQ1BvbHlub21pYWwsVC5wcm90b3R5cGUuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXt0aGlzLmRlZ3JlZT10LHRoaXMuZ2VuUG9seT1SLmdlbmVyYXRlRUNQb2x5bm9taWFsKHRoaXMuZGVncmVlKX0sVC5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmdlblBvbHkpdGhyb3cgbmV3IEVycm9yKCJFbmNvZGVyIG5vdCBpbml0aWFsaXplZCIpO3ZhciByPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoK3RoaXMuZGVncmVlKTtyLnNldCh0KTt2YXIgZT1SLm1vZChyLHRoaXMuZ2VuUG9seSksbj10aGlzLmRlZ3JlZS1lLmxlbmd0aDtpZihuPjApe3ZhciBvPW5ldyBVaW50OEFycmF5KHRoaXMuZGVncmVlKTtyZXR1cm4gby5zZXQoZSxuKSxvfXJldHVybiBlfTt2YXIgTD1ULGI9ZnVuY3Rpb24odCl7cmV0dXJuIWlzTmFOKHQpJiZ0Pj0xJiZ0PD00MH0sVT0iKD86W3UzMDAwLXUzMDNGXXxbdTMwNDAtdTMwOUZdfFt1MzBBMC11MzBGRl18W3VGRjAwLXVGRkVGXXxbdTRFMDAtdTlGQUZdfFt1MjYwNS11MjYwNl18W3UyMTkwLXUyMTk1XXx1MjAzQnxbdTIwMTB1MjAxNXUyMDE4dTIwMTl1MjAyNXUyMDI2dTIwMUN1MjAxRHUyMjI1dTIyNjBdfFt1MDM5MS11MDQ1MV18W3UwMEE3dTAwQTh1MDBCMXUwMEI0dTAwRDd1MDBGN10pKyIseD0iKD86KD8hW0EtWjAtOSAkJSorXFwtLi86XXwiKyhVPVUucmVwbGFjZSgvdS9nLCJcXHUiKSkrIikoPzoufFtcclxuXSkpKyIsaz1uZXcgUmVnRXhwKFUsImciKSxGPW5ldyBSZWdFeHAoIlteQS1aMC05ICQlKitcXC0uLzpdKyIsImciKSxTPW5ldyBSZWdFeHAoeCwiZyIpLEQ9bmV3IFJlZ0V4cCgiWzAtOV0rIiwiZyIpLFk9bmV3IFJlZ0V4cCgiW0EtWiAkJSorXFwtLi86XSsiLCJnIiksXz1uZXcgUmVnRXhwKCJeIitVKyIkIiksej1uZXcgUmVnRXhwKCJeWzAtOV0rJCIpLEg9bmV3IFJlZ0V4cCgiXltBLVowLTkgJCUqK1xcLS4vOl0rJCIpLEo9e0tBTkpJOmssQllURV9LQU5KSTpGLEJZVEU6UyxOVU1FUklDOkQsQUxQSEFOVU1FUklDOlksdGVzdEthbmppOmZ1bmN0aW9uKHQpe3JldHVybiBfLnRlc3QodCl9LHRlc3ROdW1lcmljOmZ1bmN0aW9uKHQpe3JldHVybiB6LnRlc3QodCl9LHRlc3RBbHBoYW51bWVyaWM6ZnVuY3Rpb24odCl7cmV0dXJuIEgudGVzdCh0KX19LEs9aCgoZnVuY3Rpb24odCxyKXtyLk5VTUVSSUM9e2lkOiJOdW1lcmljIixiaXQ6MSxjY0JpdHM6WzEwLDEyLDE0XX0sci5BTFBIQU5VTUVSSUM9e2lkOiJBbHBoYW51bWVyaWMiLGJpdDoyLGNjQml0czpbOSwxMSwxM119LHIuQllURT17aWQ6IkJ5dGUiLGJpdDo0LGNjQml0czpbOCwxNiwxNl19LHIuS0FOSkk9e2lkOiJLYW5qaSIsYml0OjgsY2NCaXRzOls4LDEwLDEyXX0sci5NSVhFRD17Yml0Oi0xfSxyLmdldENoYXJDb3VudEluZGljYXRvcj1mdW5jdGlvbih0LHIpe2lmKCF0LmNjQml0cyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbW9kZTogIit0KTtpZighYihyKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmVyc2lvbjogIityKTtyZXR1cm4gcj49MSYmcjwxMD90LmNjQml0c1swXTpyPDI3P3QuY2NCaXRzWzFdOnQuY2NCaXRzWzJdfSxyLmdldEJlc3RNb2RlRm9yRGF0YT1mdW5jdGlvbih0KXtyZXR1cm4gSi50ZXN0TnVtZXJpYyh0KT9yLk5VTUVSSUM6Si50ZXN0QWxwaGFudW1lcmljKHQpP3IuQUxQSEFOVU1FUklDOkoudGVzdEthbmppKHQpP3IuS0FOSkk6ci5CWVRFfSxyLnRvU3RyaW5nPWZ1bmN0aW9uKHQpe2lmKHQmJnQuaWQpcmV0dXJuIHQuaWQ7dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG1vZGUiKX0sci5pc1ZhbGlkPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0LmJpdCYmdC5jY0JpdHN9LHIuZnJvbT1mdW5jdGlvbih0LGUpe2lmKHIuaXNWYWxpZCh0KSlyZXR1cm4gdDt0cnl7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIlBhcmFtIGlzIG5vdCBhIHN0cmluZyIpO3N3aXRjaCh0LnRvTG93ZXJDYXNlKCkpe2Nhc2UibnVtZXJpYyI6cmV0dXJuIHIuTlVNRVJJQztjYXNlImFscGhhbnVtZXJpYyI6cmV0dXJuIHIuQUxQSEFOVU1FUklDO2Nhc2Uia2FuamkiOnJldHVybiByLktBTkpJO2Nhc2UiYnl0ZSI6cmV0dXJuIHIuQllURTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBtb2RlOiAiK3QpfX0odCl9Y2F0Y2godCl7cmV0dXJuIGV9fX0pKTtLLk5VTUVSSUMsSy5BTFBIQU5VTUVSSUMsSy5CWVRFLEsuS0FOSkksSy5NSVhFRCxLLmdldENoYXJDb3VudEluZGljYXRvcixLLmdldEJlc3RNb2RlRm9yRGF0YSxLLmlzVmFsaWQ7dmFyIE89aCgoZnVuY3Rpb24odCxyKXt2YXIgZT1pKDc5NzMpO2Z1bmN0aW9uIG4odCxyKXtyZXR1cm4gSy5nZXRDaGFyQ291bnRJbmRpY2F0b3IodCxyKSs0fWZ1bmN0aW9uIG8odCxyKXt2YXIgZT0wO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBvPW4odC5tb2RlLHIpO2UrPW8rdC5nZXRCaXRzTGVuZ3RoKCl9KSksZX1yLmZyb209ZnVuY3Rpb24odCxyKXtyZXR1cm4gYih0KT9wYXJzZUludCh0LDEwKTpyfSxyLmdldENhcGFjaXR5PWZ1bmN0aW9uKHQscixlKXtpZighYih0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUVIgQ29kZSB2ZXJzaW9uIik7dm9pZCAwPT09ZSYmKGU9Sy5CWVRFKTt2YXIgbz04KihhKHQpLU0odCxyKSk7aWYoZT09PUsuTUlYRUQpcmV0dXJuIG87dmFyIGk9by1uKGUsdCk7c3dpdGNoKGUpe2Nhc2UgSy5OVU1FUklDOnJldHVybiBNYXRoLmZsb29yKGkvMTAqMyk7Y2FzZSBLLkFMUEhBTlVNRVJJQzpyZXR1cm4gTWF0aC5mbG9vcihpLzExKjIpO2Nhc2UgSy5LQU5KSTpyZXR1cm4gTWF0aC5mbG9vcihpLzEzKTtjYXNlIEsuQllURTpkZWZhdWx0OnJldHVybiBNYXRoLmZsb29yKGkvOCl9fSxyLmdldEJlc3RWZXJzaW9uRm9yRGF0YT1mdW5jdGlvbih0LGUpe3ZhciBuLGE9Yy5mcm9tKGUsYy5NKTtpZihBcnJheS5pc0FycmF5KHQpKXtpZih0Lmxlbmd0aD4xKXJldHVybiBmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0xO248PTQwO24rKyl7aWYobyh0LG4pPD1yLmdldENhcGFjaXR5KG4sZSxLLk1JWEVEKSlyZXR1cm4gbn19KHQsYSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiAxO249dFswXX1lbHNlIG49dDtyZXR1cm4gZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgbz0xO288PTQwO28rKylpZihlPD1yLmdldENhcGFjaXR5KG8sbix0KSlyZXR1cm4gb30obi5tb2RlLG4uZ2V0TGVuZ3RoKCksYSl9LHIuZ2V0RW5jb2RlZEJpdHM9ZnVuY3Rpb24odCl7aWYoIWIodCl8fHQ8Nyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUVIgQ29kZSB2ZXJzaW9uIik7Zm9yKHZhciByPXQ8PDEyO2kociktZT49MDspcl49Nzk3Mzw8aShyKS1lO3JldHVybiB0PDwxMnxyfX0pKTtPLmdldENhcGFjaXR5LE8uZ2V0QmVzdFZlcnNpb25Gb3JEYXRhLE8uZ2V0RW5jb2RlZEJpdHM7dmFyIFE9aSgxMzM1KSxWPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXQuYml0PDwzfHIsbj1lPDwxMDtpKG4pLVE+PTA7KW5ePTEzMzU8PGkobiktUTtyZXR1cm4gMjE1MjJeKGU8PDEwfG4pfTtmdW5jdGlvbiBxKHQpe3RoaXMubW9kZT1LLk5VTUVSSUMsdGhpcy5kYXRhPXQudG9TdHJpbmcoKX1xLmdldEJpdHNMZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIDEwKk1hdGguZmxvb3IodC8zKSsodCUzP3QlMyozKzE6MCl9LHEucHJvdG90eXBlLmdldExlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEubGVuZ3RofSxxLnByb3RvdHlwZS5nZXRCaXRzTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHEuZ2V0Qml0c0xlbmd0aCh0aGlzLmRhdGEubGVuZ3RoKX0scS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7dmFyIHIsZSxuO2ZvcihyPTA7ciszPD10aGlzLmRhdGEubGVuZ3RoO3IrPTMpZT10aGlzLmRhdGEuc3Vic3RyKHIsMyksbj1wYXJzZUludChlLDEwKSx0LnB1dChuLDEwKTt2YXIgbz10aGlzLmRhdGEubGVuZ3RoLXI7bz4wJiYoZT10aGlzLmRhdGEuc3Vic3RyKHIpLG49cGFyc2VJbnQoZSwxMCksdC5wdXQobiwzKm8rMSkpfTt2YXIgaj1xLCQ9WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCIgIiwiJCIsIiUiLCIqIiwiKyIsIi0iLCIuIiwiLyIsIjoiXTtmdW5jdGlvbiBYKHQpe3RoaXMubW9kZT1LLkFMUEhBTlVNRVJJQyx0aGlzLmRhdGE9dH1YLmdldEJpdHNMZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIDExKk1hdGguZmxvb3IodC8yKSt0JTIqNn0sWC5wcm90b3R5cGUuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5sZW5ndGh9LFgucHJvdG90eXBlLmdldEJpdHNMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gWC5nZXRCaXRzTGVuZ3RoKHRoaXMuZGF0YS5sZW5ndGgpfSxYLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXt2YXIgcjtmb3Iocj0wO3IrMjw9dGhpcy5kYXRhLmxlbmd0aDtyKz0yKXt2YXIgZT00NSokLmluZGV4T2YodGhpcy5kYXRhW3JdKTtlKz0kLmluZGV4T2YodGhpcy5kYXRhW3IrMV0pLHQucHV0KGUsMTEpfXRoaXMuZGF0YS5sZW5ndGglMiYmdC5wdXQoJC5pbmRleE9mKHRoaXMuZGF0YVtyXSksNil9O3ZhciBaPVg7ZnVuY3Rpb24gVyh0KXt0aGlzLm1vZGU9Sy5CWVRFLHRoaXMuZGF0YT1uZXcgVWludDhBcnJheShmdW5jdGlvbih0KXtmb3IodmFyIHI9W10sZT10Lmxlbmd0aCxuPTA7bjxlO24rKyl7dmFyIG89dC5jaGFyQ29kZUF0KG4pO2lmKG8+PTU1Mjk2JiZvPD01NjMxOSYmZT5uKzEpe3ZhciBhPXQuY2hhckNvZGVBdChuKzEpO2E+PTU2MzIwJiZhPD01NzM0MyYmKG89MTAyNCooby01NTI5NikrYS01NjMyMCs2NTUzNixuKz0xKX1vPDEyOD9yLnB1c2gobyk6bzwyMDQ4PyhyLnB1c2gobz4+NnwxOTIpLHIucHVzaCg2MyZvfDEyOCkpOm88NTUyOTZ8fG8+PTU3MzQ0JiZvPDY1NTM2PyhyLnB1c2gobz4+MTJ8MjI0KSxyLnB1c2gobz4+NiY2M3wxMjgpLHIucHVzaCg2MyZvfDEyOCkpOm8+PTY1NTM2JiZvPD0xMTE0MTExPyhyLnB1c2gobz4+MTh8MjQwKSxyLnB1c2gobz4+MTImNjN8MTI4KSxyLnB1c2gobz4+NiY2M3wxMjgpLHIucHVzaCg2MyZvfDEyOCkpOnIucHVzaCgyMzksMTkxLDE4OSl9cmV0dXJuIG5ldyBVaW50OEFycmF5KHIpLmJ1ZmZlcn0odCkpfVcuZ2V0Qml0c0xlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gOCp0fSxXLnByb3RvdHlwZS5nZXRMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLmxlbmd0aH0sVy5wcm90b3R5cGUuZ2V0Qml0c0xlbmd0aD1mdW5jdGlvbigpe3JldHVybiBXLmdldEJpdHNMZW5ndGgodGhpcy5kYXRhLmxlbmd0aCl9LFcucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcj0wLGU9dGhpcy5kYXRhLmxlbmd0aDtyPGU7cisrKXQucHV0KHRoaXMuZGF0YVtyXSw4KX07dmFyIEc9VztmdW5jdGlvbiB0dCh0KXt0aGlzLm1vZGU9Sy5LQU5KSSx0aGlzLmRhdGE9dH10dC5nZXRCaXRzTGVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiAxMyp0fSx0dC5wcm90b3R5cGUuZ2V0TGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5sZW5ndGh9LHR0LnByb3RvdHlwZS5nZXRCaXRzTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHR0LmdldEJpdHNMZW5ndGgodGhpcy5kYXRhLmxlbmd0aCl9LHR0LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXt2YXIgcjtmb3Iocj0wO3I8dGhpcy5kYXRhLmxlbmd0aDtyKyspe3ZhciBlPWYodGhpcy5kYXRhW3JdKTtpZihlPj0zMzA4OCYmZTw9NDA5NTYpZS09MzMwODg7ZWxzZXtpZighKGU+PTU3NDA4JiZlPD02MDM1MSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFNKSVMgY2hhcmFjdGVyOiAiK3RoaXMuZGF0YVtyXSsiXG5NYWtlIHN1cmUgeW91ciBjaGFyc2V0IGlzIFVURi04Iik7ZS09NDk0NzJ9ZT0xOTIqKGU+Pj44JjI1NSkrKDI1NSZlKSx0LnB1dChlLDEzKX19O3ZhciBydD10dCxldD1oKChmdW5jdGlvbih0KXt2YXIgcj17c2luZ2xlX3NvdXJjZV9zaG9ydGVzdF9wYXRoczpmdW5jdGlvbih0LGUsbil7dmFyIG89e30sYT17fTthW2VdPTA7dmFyIGksdSxzLGYsaCxjLGcsZD1yLlByaW9yaXR5UXVldWUubWFrZSgpO2ZvcihkLnB1c2goZSwwKTshZC5lbXB0eSgpOylmb3IocyBpbiB1PShpPWQucG9wKCkpLnZhbHVlLGY9aS5jb3N0LGg9dFt1XXx8e30paC5oYXNPd25Qcm9wZXJ0eShzKSYmKGM9ZitoW3NdLGc9YVtzXSwodm9pZCAwPT09YVtzXXx8Zz5jKSYmKGFbc109YyxkLnB1c2gocyxjKSxvW3NdPXUpKTtpZih2b2lkIDAhPT1uJiZ2b2lkIDA9PT1hW25dKXt2YXIgbD1bIkNvdWxkIG5vdCBmaW5kIGEgcGF0aCBmcm9tICIsZSwiIHRvICIsbiwiLiJdLmpvaW4oIiIpO3Rocm93IG5ldyBFcnJvcihsKX1yZXR1cm4gb30sZXh0cmFjdF9zaG9ydGVzdF9wYXRoX2Zyb21fcHJlZGVjZXNzb3JfbGlzdDpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT1bXSxuPXI7bjspZS5wdXNoKG4pLG49dFtuXTtyZXR1cm4gZS5yZXZlcnNlKCksZX0sZmluZF9wYXRoOmZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1yLnNpbmdsZV9zb3VyY2Vfc2hvcnRlc3RfcGF0aHModCxlLG4pO3JldHVybiByLmV4dHJhY3Rfc2hvcnRlc3RfcGF0aF9mcm9tX3ByZWRlY2Vzc29yX2xpc3QobyxuKX0sUHJpb3JpdHlRdWV1ZTp7bWFrZTpmdW5jdGlvbih0KXt2YXIgZSxuPXIuUHJpb3JpdHlRdWV1ZSxvPXt9O2ZvcihlIGluIHQ9dHx8e30sbiluLmhhc093blByb3BlcnR5KGUpJiYob1tlXT1uW2VdKTtyZXR1cm4gby5xdWV1ZT1bXSxvLnNvcnRlcj10LnNvcnRlcnx8bi5kZWZhdWx0X3NvcnRlcixvfSxkZWZhdWx0X3NvcnRlcjpmdW5jdGlvbih0LHIpe3JldHVybiB0LmNvc3Qtci5jb3N0fSxwdXNoOmZ1bmN0aW9uKHQscil7dmFyIGU9e3ZhbHVlOnQsY29zdDpyfTt0aGlzLnF1ZXVlLnB1c2goZSksdGhpcy5xdWV1ZS5zb3J0KHRoaXMuc29ydGVyKX0scG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVldWUuc2hpZnQoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMucXVldWUubGVuZ3RofX19O3QuZXhwb3J0cz1yfSkpLG50PWgoKGZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHQpKS5sZW5ndGh9ZnVuY3Rpb24gbih0LHIsZSl7Zm9yKHZhciBuLG89W107bnVsbCE9PShuPXQuZXhlYyhlKSk7KW8ucHVzaCh7ZGF0YTpuWzBdLGluZGV4Om4uaW5kZXgsbW9kZTpyLGxlbmd0aDpuWzBdLmxlbmd0aH0pO3JldHVybiBvfWZ1bmN0aW9uIG8odCl7dmFyIHIsZSxvPW4oSi5OVU1FUklDLEsuTlVNRVJJQyx0KSxhPW4oSi5BTFBIQU5VTUVSSUMsSy5BTFBIQU5VTUVSSUMsdCk7cmV0dXJuIHMoKT8ocj1uKEouQllURSxLLkJZVEUsdCksZT1uKEouS0FOSkksSy5LQU5KSSx0KSk6KHI9bihKLkJZVEVfS0FOSkksSy5CWVRFLHQpLGU9W10pLG8uY29uY2F0KGEscixlKS5zb3J0KChmdW5jdGlvbih0LHIpe3JldHVybiB0LmluZGV4LXIuaW5kZXh9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm57ZGF0YTp0LmRhdGEsbW9kZTp0Lm1vZGUsbGVuZ3RoOnQubGVuZ3RofX0pKX1mdW5jdGlvbiBhKHQscil7c3dpdGNoKHIpe2Nhc2UgSy5OVU1FUklDOnJldHVybiBqLmdldEJpdHNMZW5ndGgodCk7Y2FzZSBLLkFMUEhBTlVNRVJJQzpyZXR1cm4gWi5nZXRCaXRzTGVuZ3RoKHQpO2Nhc2UgSy5LQU5KSTpyZXR1cm4gcnQuZ2V0Qml0c0xlbmd0aCh0KTtjYXNlIEsuQllURTpyZXR1cm4gRy5nZXRCaXRzTGVuZ3RoKHQpfX1mdW5jdGlvbiBpKHQscil7dmFyIGUsbj1LLmdldEJlc3RNb2RlRm9yRGF0YSh0KTtpZigoZT1LLmZyb20ocixuKSkhPT1LLkJZVEUmJmUuYml0PG4uYml0KXRocm93IG5ldyBFcnJvcignIicrdCsnIiBjYW5ub3QgYmUgZW5jb2RlZCB3aXRoIG1vZGUgJytLLnRvU3RyaW5nKGUpKyIuXG4gU3VnZ2VzdGVkIG1vZGUgaXM6ICIrSy50b1N0cmluZyhuKSk7c3dpdGNoKGUhPT1LLktBTkpJfHxzKCl8fChlPUsuQllURSksZSl7Y2FzZSBLLk5VTUVSSUM6cmV0dXJuIG5ldyBqKHQpO2Nhc2UgSy5BTFBIQU5VTUVSSUM6cmV0dXJuIG5ldyBaKHQpO2Nhc2UgSy5LQU5KSTpyZXR1cm4gbmV3IHJ0KHQpO2Nhc2UgSy5CWVRFOnJldHVybiBuZXcgRyh0KX19ci5mcm9tQXJyYXk9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LHIpe3JldHVybiJzdHJpbmciPT10eXBlb2Ygcj90LnB1c2goaShyLG51bGwpKTpyLmRhdGEmJnQucHVzaChpKHIuZGF0YSxyLm1vZGUpKSx0fSksW10pfSxyLmZyb21TdHJpbmc9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGk9ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9e30sbj17c3RhcnQ6e319LG89WyJzdGFydCJdLGk9MDtpPHQubGVuZ3RoO2krKyl7Zm9yKHZhciB1PXRbaV0scz1bXSxmPTA7Zjx1Lmxlbmd0aDtmKyspe3ZhciBoPXVbZl0sYz0iIitpK2Y7cy5wdXNoKGMpLGVbY109e25vZGU6aCxsYXN0Q291bnQ6MH0sbltjXT17fTtmb3IodmFyIGc9MDtnPG8ubGVuZ3RoO2crKyl7dmFyIGQ9b1tnXTtlW2RdJiZlW2RdLm5vZGUubW9kZT09PWgubW9kZT8obltkXVtjXT1hKGVbZF0ubGFzdENvdW50K2gubGVuZ3RoLGgubW9kZSktYShlW2RdLmxhc3RDb3VudCxoLm1vZGUpLGVbZF0ubGFzdENvdW50Kz1oLmxlbmd0aCk6KGVbZF0mJihlW2RdLmxhc3RDb3VudD1oLmxlbmd0aCksbltkXVtjXT1hKGgubGVuZ3RoLGgubW9kZSkrNCtLLmdldENoYXJDb3VudEluZGljYXRvcihoLm1vZGUscikpfX1vPXN9Zm9yKHZhciBsPTA7bDxvLmxlbmd0aDtsKyspbltvW2xdXS5lbmQ9MDtyZXR1cm57bWFwOm4sdGFibGU6ZX19KGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBvPXRbbl07c3dpdGNoKG8ubW9kZSl7Y2FzZSBLLk5VTUVSSUM6ci5wdXNoKFtvLHtkYXRhOm8uZGF0YSxtb2RlOksuQUxQSEFOVU1FUklDLGxlbmd0aDpvLmxlbmd0aH0se2RhdGE6by5kYXRhLG1vZGU6Sy5CWVRFLGxlbmd0aDpvLmxlbmd0aH1dKTticmVhaztjYXNlIEsuQUxQSEFOVU1FUklDOnIucHVzaChbbyx7ZGF0YTpvLmRhdGEsbW9kZTpLLkJZVEUsbGVuZ3RoOm8ubGVuZ3RofV0pO2JyZWFrO2Nhc2UgSy5LQU5KSTpyLnB1c2goW28se2RhdGE6by5kYXRhLG1vZGU6Sy5CWVRFLGxlbmd0aDplKG8uZGF0YSl9XSk7YnJlYWs7Y2FzZSBLLkJZVEU6ci5wdXNoKFt7ZGF0YTpvLmRhdGEsbW9kZTpLLkJZVEUsbGVuZ3RoOmUoby5kYXRhKX1dKX19cmV0dXJuIHJ9KG8odCkpLG4pLHU9ZXQuZmluZF9wYXRoKGkubWFwLCJzdGFydCIsImVuZCIpLHM9W10sZj0xO2Y8dS5sZW5ndGgtMTtmKyspcy5wdXNoKGkudGFibGVbdVtmXV0ubm9kZSk7cmV0dXJuIHIuZnJvbUFycmF5KGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxyKXt2YXIgZT10Lmxlbmd0aC0xPj0wP3RbdC5sZW5ndGgtMV06bnVsbDtyZXR1cm4gZSYmZS5tb2RlPT09ci5tb2RlPyh0W3QubGVuZ3RoLTFdLmRhdGErPXIuZGF0YSx0KToodC5wdXNoKHIpLHQpfSksW10pfShzKSl9LHIucmF3U3BsaXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHIuZnJvbUFycmF5KG8odCkpfX0pKTtmdW5jdGlvbiBvdCh0LHIsZSl7dmFyIG4sbyxhPXQuc2l6ZSxpPVYocixlKTtmb3Iobj0wO248MTU7bisrKW89MT09KGk+Pm4mMSksbjw2P3Quc2V0KG4sOCxvLCEwKTpuPDg/dC5zZXQobisxLDgsbywhMCk6dC5zZXQoYS0xNStuLDgsbywhMCksbjw4P3Quc2V0KDgsYS1uLTEsbywhMCk6bjw5P3Quc2V0KDgsMTUtbi0xKzEsbywhMCk6dC5zZXQoOCwxNS1uLTEsbywhMCk7dC5zZXQoYS04LDgsMSwhMCl9ZnVuY3Rpb24gYXQodCxyLGUpe3ZhciBuPW5ldyBkO2UuZm9yRWFjaCgoZnVuY3Rpb24ocil7bi5wdXQoci5tb2RlLmJpdCw0KSxuLnB1dChyLmdldExlbmd0aCgpLEsuZ2V0Q2hhckNvdW50SW5kaWNhdG9yKHIubW9kZSx0KSksci53cml0ZShuKX0pKTt2YXIgbz04KihhKHQpLU0odCxyKSk7Zm9yKG4uZ2V0TGVuZ3RoSW5CaXRzKCkrNDw9byYmbi5wdXQoMCw0KTtuLmdldExlbmd0aEluQml0cygpJTghPTA7KW4ucHV0Qml0KDApO2Zvcih2YXIgaT0oby1uLmdldExlbmd0aEluQml0cygpKS84LHU9MDt1PGk7dSsrKW4ucHV0KHUlMj8xNzoyMzYsOCk7cmV0dXJuIGZ1bmN0aW9uKHQscixlKXtmb3IodmFyIG49YShyKSxvPU0ocixlKSxpPW4tbyx1PUkocixlKSxzPXUtbiV1LGY9TWF0aC5mbG9vcihuL3UpLGg9TWF0aC5mbG9vcihpL3UpLGM9aCsxLGc9Zi1oLGQ9bmV3IEwoZyksbD0wLHY9bmV3IEFycmF5KHUpLHA9bmV3IEFycmF5KHUpLHc9MCxtPW5ldyBVaW50OEFycmF5KHQuYnVmZmVyKSxFPTA7RTx1O0UrKyl7dmFyIHk9RTxzP2g6Yzt2W0VdPW0uc2xpY2UobCxsK3kpLHBbRV09ZC5lbmNvZGUodltFXSksbCs9eSx3PU1hdGgubWF4KHcseSl9dmFyIEEsTixCPW5ldyBVaW50OEFycmF5KG4pLEM9MDtmb3IoQT0wO0E8dztBKyspZm9yKE49MDtOPHU7TisrKUE8dltOXS5sZW5ndGgmJihCW0MrK109dltOXVtBXSk7Zm9yKEE9MDtBPGc7QSsrKWZvcihOPTA7Tjx1O04rKylCW0MrK109cFtOXVtBXTtyZXR1cm4gQn0obix0LHIpfWZ1bmN0aW9uIGl0KHQscixlLG4pe3ZhciBhO2lmKEFycmF5LmlzQXJyYXkodCkpYT1udC5mcm9tQXJyYXkodCk7ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRhdGEiKTt2YXIgaT1yO2lmKCFpKXt2YXIgdT1udC5yYXdTcGxpdCh0KTtpPU8uZ2V0QmVzdFZlcnNpb25Gb3JEYXRhKHUsZSl9YT1udC5mcm9tU3RyaW5nKHQsaXx8NDApfXZhciBzPU8uZ2V0QmVzdFZlcnNpb25Gb3JEYXRhKGEsZSk7aWYoIXMpdGhyb3cgbmV3IEVycm9yKCJUaGUgYW1vdW50IG9mIGRhdGEgaXMgdG9vIGJpZyB0byBiZSBzdG9yZWQgaW4gYSBRUiBDb2RlIik7aWYocil7aWYocjxzKXRocm93IG5ldyBFcnJvcigiXG5UaGUgY2hvc2VuIFFSIENvZGUgdmVyc2lvbiBjYW5ub3QgY29udGFpbiB0aGlzIGFtb3VudCBvZiBkYXRhLlxuTWluaW11bSB2ZXJzaW9uIHJlcXVpcmVkIHRvIHN0b3JlIGN1cnJlbnQgZGF0YSBpczogIitzKyIuXG4iKX1lbHNlIHI9czt2YXIgZj1hdChyLGUsYSksaD1vKHIpLGM9bmV3IHYoaCk7cmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXQuc2l6ZSxuPW0ociksbz0wO288bi5sZW5ndGg7bysrKWZvcih2YXIgYT1uW29dWzBdLGk9bltvXVsxXSx1PS0xO3U8PTc7dSsrKWlmKCEoYSt1PD0tMXx8ZTw9YSt1KSlmb3IodmFyIHM9LTE7czw9NztzKyspaStzPD0tMXx8ZTw9aStzfHwodT49MCYmdTw9NiYmKDA9PT1zfHw2PT09cyl8fHM+PTAmJnM8PTYmJigwPT09dXx8Nj09PXUpfHx1Pj0yJiZ1PD00JiZzPj0yJiZzPD00P3Quc2V0KGErdSxpK3MsITAsITApOnQuc2V0KGErdSxpK3MsITEsITApKX0oYyxyKSxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5zaXplLGU9ODtlPHItODtlKyspe3ZhciBuPWUlMj09MDt0LnNldChlLDYsbiwhMCksdC5zZXQoNixlLG4sITApfX0oYyksZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9cC5nZXRQb3NpdGlvbnMociksbj0wO248ZS5sZW5ndGg7bisrKWZvcih2YXIgbz1lW25dWzBdLGE9ZVtuXVsxXSxpPS0yO2k8PTI7aSsrKWZvcih2YXIgdT0tMjt1PD0yO3UrKyktMj09PWl8fDI9PT1pfHwtMj09PXV8fDI9PT11fHwwPT09aSYmMD09PXU/dC5zZXQobytpLGErdSwhMCwhMCk6dC5zZXQobytpLGErdSwhMSwhMCl9KGMsciksb3QoYyxlLDApLHI+PTcmJmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlLG4sbyxhPXQuc2l6ZSxpPU8uZ2V0RW5jb2RlZEJpdHMociksdT0wO3U8MTg7dSsrKWU9TWF0aC5mbG9vcih1LzMpLG49dSUzK2EtOC0zLG89MT09KGk+PnUmMSksdC5zZXQoZSxuLG8sITApLHQuc2V0KG4sZSxvLCEwKX0oYyxyKSxmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10LnNpemUsbj0tMSxvPWUtMSxhPTcsaT0wLHU9ZS0xO3U+MDt1LT0yKWZvcig2PT09dSYmdS0tOzspe2Zvcih2YXIgcz0wO3M8MjtzKyspaWYoIXQuaXNSZXNlcnZlZChvLHUtcykpe3ZhciBmPSExO2k8ci5sZW5ndGgmJihmPTE9PShyW2ldPj4+YSYxKSksdC5zZXQobyx1LXMsZiksLTE9PT0tLWEmJihpKyssYT03KX1pZigobys9bik8MHx8ZTw9byl7by09bixuPS1uO2JyZWFrfX19KGMsZiksaXNOYU4obikmJihuPUUuZ2V0QmVzdE1hc2soYyxvdC5iaW5kKG51bGwsYyxlKSkpLEUuYXBwbHlNYXNrKG4sYyksb3QoYyxlLG4pLHttb2R1bGVzOmMsdmVyc2lvbjpyLGVycm9yQ29ycmVjdGlvbkxldmVsOmUsbWFza1BhdHRlcm46bixzZWdtZW50czphfX1udC5mcm9tQXJyYXksbnQuZnJvbVN0cmluZyxudC5yYXdTcGxpdDt2YXIgdXQ9ZnVuY3Rpb24odCxyKXtpZih2b2lkIDA9PT10fHwiIj09PXQpdGhyb3cgbmV3IEVycm9yKCJObyBpbnB1dCB0ZXh0Iik7dmFyIGUsbixvPWMuTTtyZXR1cm4gdm9pZCAwIT09ciYmKG89Yy5mcm9tKHIuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsYy5NKSxlPU8uZnJvbShyLnZlcnNpb24pLG49RS5mcm9tKHIubWFza1BhdHRlcm4pLHIudG9TSklTRnVuYyYmdShyLnRvU0pJU0Z1bmMpKSxpdCh0LGUsbyxuKX0sc3Q9aCgoZnVuY3Rpb24odCxyKXtmdW5jdGlvbiBlKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdCYmKHQ9dC50b1N0cmluZygpKSwic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJDb2xvciBzaG91bGQgYmUgZGVmaW5lZCBhcyBoZXggc3RyaW5nIik7dmFyIHI9dC5zbGljZSgpLnJlcGxhY2UoIiMiLCIiKS5zcGxpdCgiIik7aWYoci5sZW5ndGg8M3x8NT09PXIubGVuZ3RofHxyLmxlbmd0aD44KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggY29sb3I6ICIrdCk7MyE9PXIubGVuZ3RoJiY0IT09ci5sZW5ndGh8fChyPUFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVyblt0LHRdfSkpKSksNj09PXIubGVuZ3RoJiZyLnB1c2goIkYiLCJGIik7dmFyIGU9cGFyc2VJbnQoci5qb2luKCIiKSwxNik7cmV0dXJue3I6ZT4+MjQmMjU1LGc6ZT4+MTYmMjU1LGI6ZT4+OCYyNTUsYToyNTUmZSxoZXg6IiMiK3Iuc2xpY2UoMCw2KS5qb2luKCIiKX19ci5nZXRPcHRpb25zPWZ1bmN0aW9uKHQpe3R8fCh0PXt9KSx0LmNvbG9yfHwodC5jb2xvcj17fSk7dmFyIHI9dm9pZCAwPT09dC5tYXJnaW58fG51bGw9PT10Lm1hcmdpbnx8dC5tYXJnaW48MD80OnQubWFyZ2luLG49dC53aWR0aCYmdC53aWR0aD49MjE/dC53aWR0aDp2b2lkIDAsbz10LnNjYWxlfHw0O3JldHVybnt3aWR0aDpuLHNjYWxlOm4/NDpvLG1hcmdpbjpyLGNvbG9yOntkYXJrOmUodC5jb2xvci5kYXJrfHwiIzAwMDAwMGZmIiksbGlnaHQ6ZSh0LmNvbG9yLmxpZ2h0fHwiI2ZmZmZmZmZmIil9LHR5cGU6dC50eXBlLHJlbmRlcmVyT3B0czp0LnJlbmRlcmVyT3B0c3x8e319fSxyLmdldFNjYWxlPWZ1bmN0aW9uKHQscil7cmV0dXJuIHIud2lkdGgmJnIud2lkdGg+PXQrMipyLm1hcmdpbj9yLndpZHRoLyh0KzIqci5tYXJnaW4pOnIuc2NhbGV9LHIuZ2V0SW1hZ2VXaWR0aD1mdW5jdGlvbih0LGUpe3ZhciBuPXIuZ2V0U2NhbGUodCxlKTtyZXR1cm4gTWF0aC5mbG9vcigodCsyKmUubWFyZ2luKSpuKX0sci5xclRvSW1hZ2VEYXRhPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIG89ZS5tb2R1bGVzLnNpemUsYT1lLm1vZHVsZXMuZGF0YSxpPXIuZ2V0U2NhbGUobyxuKSx1PU1hdGguZmxvb3IoKG8rMipuLm1hcmdpbikqaSkscz1uLm1hcmdpbippLGY9W24uY29sb3IubGlnaHQsbi5jb2xvci5kYXJrXSxoPTA7aDx1O2grKylmb3IodmFyIGM9MDtjPHU7YysrKXt2YXIgZz00KihoKnUrYyksZD1uLmNvbG9yLmxpZ2h0O2lmKGg+PXMmJmM+PXMmJmg8dS1zJiZjPHUtcylkPWZbYVtNYXRoLmZsb29yKChoLXMpL2kpKm8rTWF0aC5mbG9vcigoYy1zKS9pKV0/MTowXTt0W2crK109ZC5yLHRbZysrXT1kLmcsdFtnKytdPWQuYix0W2ddPWQuYX19fSkpO3N0LmdldE9wdGlvbnMsc3QuZ2V0U2NhbGUsc3QuZ2V0SW1hZ2VXaWR0aCxzdC5xclRvSW1hZ2VEYXRhO3ZhciBmdD1oKChmdW5jdGlvbih0LHIpe3IucmVuZGVyPWZ1bmN0aW9uKHQscixlKXt2YXIgbj1lLG89cjt2b2lkIDAhPT1ufHxyJiZyLmdldENvbnRleHR8fChuPXIscj12b2lkIDApLHJ8fChvPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKX1jYXRjaCh0KXt0aHJvdyBuZXcgRXJyb3IoIllvdSBuZWVkIHRvIHNwZWNpZnkgYSBjYW52YXMgZWxlbWVudCIpfX0oKSksbj1zdC5nZXRPcHRpb25zKG4pO3ZhciBhPXN0LmdldEltYWdlV2lkdGgodC5tb2R1bGVzLnNpemUsbiksaT1vLmdldENvbnRleHQoIjJkIiksdT1pLmNyZWF0ZUltYWdlRGF0YShhLGEpO3JldHVybiBzdC5xclRvSW1hZ2VEYXRhKHUuZGF0YSx0LG4pLGZ1bmN0aW9uKHQscixlKXt0LmNsZWFyUmVjdCgwLDAsci53aWR0aCxyLmhlaWdodCksci5zdHlsZXx8KHIuc3R5bGU9e30pLHIuaGVpZ2h0PWUsci53aWR0aD1lLHIuc3R5bGUuaGVpZ2h0PWUrInB4IixyLnN0eWxlLndpZHRoPWUrInB4In0oaSxvLGEpLGkucHV0SW1hZ2VEYXRhKHUsMCwwKSxvfSxyLnJlbmRlclRvRGF0YVVSTD1mdW5jdGlvbih0LGUsbil7dmFyIG89bjt2b2lkIDAhPT1vfHxlJiZlLmdldENvbnRleHR8fChvPWUsZT12b2lkIDApLG98fChvPXt9KTt2YXIgYT1yLnJlbmRlcih0LGUsbyksaT1vLnR5cGV8fCJpbWFnZS9wbmciLHU9by5yZW5kZXJlck9wdHN8fHt9O3JldHVybiBhLnRvRGF0YVVSTChpLHUucXVhbGl0eSl9fSkpO2Z1bmN0aW9uIGh0KHQscil7dmFyIGU9dC5hLzI1NSxuPXIrJz0iJyt0LmhleCsnIic7cmV0dXJuIGU8MT9uKyIgIityKyctb3BhY2l0eT0iJytlLnRvRml4ZWQoMikuc2xpY2UoMSkrJyInOm59ZnVuY3Rpb24gY3QodCxyLGUpe3ZhciBuPXQrcjtyZXR1cm4gdm9pZCAwIT09ZSYmKG4rPSIgIitlKSxufWZ0LnJlbmRlcixmdC5yZW5kZXJUb0RhdGFVUkw7dmFyIGd0PWZ1bmN0aW9uKHQscixlKXt2YXIgbj1zdC5nZXRPcHRpb25zKHIpLG89dC5tb2R1bGVzLnNpemUsYT10Lm1vZHVsZXMuZGF0YSxpPW8rMipuLm1hcmdpbix1PW4uY29sb3IubGlnaHQuYT8iPHBhdGggIitodChuLmNvbG9yLmxpZ2h0LCJmaWxsIikrJyBkPSJNMCAwaCcraSsidiIraSsnSDB6Ii8+JzoiIixzPSI8cGF0aCAiK2h0KG4uY29sb3IuZGFyaywic3Ryb2tlIikrJyBkPSInK2Z1bmN0aW9uKHQscixlKXtmb3IodmFyIG49IiIsbz0wLGE9ITEsaT0wLHU9MDt1PHQubGVuZ3RoO3UrKyl7dmFyIHM9TWF0aC5mbG9vcih1JXIpLGY9TWF0aC5mbG9vcih1L3IpO3N8fGF8fChhPSEwKSx0W3VdPyhpKyssdT4wJiZzPjAmJnRbdS0xXXx8KG4rPWE/Y3QoIk0iLHMrZSwuNStmK2UpOmN0KCJtIixvLDApLG89MCxhPSExKSxzKzE8ciYmdFt1KzFdfHwobis9Y3QoImgiLGkpLGk9MCkpOm8rK31yZXR1cm4gbn0oYSxvLG4ubWFyZ2luKSsnIi8+JyxmPSd2aWV3Qm94PSIwIDAgJytpKyIgIitpKyciJyxoPSc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgJysobi53aWR0aD8nd2lkdGg9Iicrbi53aWR0aCsnIiBoZWlnaHQ9Iicrbi53aWR0aCsnIiAnOiIiKStmKycgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj4nK3UrcysiPC9zdmc+XG4iO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlKG51bGwsaCksaH07ZnVuY3Rpb24gZHQodCxyLG4sbyxhKXt2YXIgaT1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSx1PWkubGVuZ3RoLHM9ImZ1bmN0aW9uIj09dHlwZW9mIGlbdS0xXTtpZighcyYmIWUoKSl0aHJvdyBuZXcgRXJyb3IoIkNhbGxiYWNrIHJlcXVpcmVkIGFzIGxhc3QgYXJndW1lbnQiKTtpZighcyl7aWYodTwxKXRocm93IG5ldyBFcnJvcigiVG9vIGZldyBhcmd1bWVudHMgcHJvdmlkZWQiKTtyZXR1cm4gMT09PXU/KG49cixyPW89dm9pZCAwKToyIT09dXx8ci5nZXRDb250ZXh0fHwobz1uLG49cixyPXZvaWQgMCksbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsYSl7dHJ5e3ZhciBpPXV0KG4sbyk7ZSh0KGkscixvKSl9Y2F0Y2godCl7YSh0KX19KSl9aWYodTwyKXRocm93IG5ldyBFcnJvcigiVG9vIGZldyBhcmd1bWVudHMgcHJvdmlkZWQiKTsyPT09dT8oYT1uLG49cixyPW89dm9pZCAwKTozPT09dSYmKHIuZ2V0Q29udGV4dCYmdm9pZCAwPT09YT8oYT1vLG89dm9pZCAwKTooYT1vLG89bixuPXIscj12b2lkIDApKTt0cnl7dmFyIGY9dXQobixvKTthKG51bGwsdChmLHIsbykpfWNhdGNoKHQpe2EodCl9fXZhciBsdD11dCx2dD1kdC5iaW5kKG51bGwsZnQucmVuZGVyKSxwdD1kdC5iaW5kKG51bGwsZnQucmVuZGVyVG9EYXRhVVJMKSx3dD1kdC5iaW5kKG51bGwsKGZ1bmN0aW9uKHQscixlKXtyZXR1cm4gZ3QodCxlKX0pKSxtdD17Y3JlYXRlOmx0LHRvQ2FudmFzOnZ0LHRvRGF0YVVSTDpwdCx0b1N0cmluZzp3dH07cmV0dXJuIHQuY3JlYXRlPWx0LHQuZGVmYXVsdD1tdCx0LnRvQ2FudmFzPXZ0LHQudG9EYXRhVVJMPXB0LHQudG9TdHJpbmc9d3QsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHR9KHt9KTsK"}},"time_used":51,"timings":{"blocked":-1,"dns":2,"connect":9,"send":0,"wait":12,"receive":1,"ssl":27},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/commons/thumb/8/81/Displaced_children_sit_on_the_rubble_of_their_destroyed_home_in_Nuseirat_camp%2C_Gaza_Strip.jpg/640px-Displaced_children_sit_on_the_rubble_of_their_destroyed_home_in_Nuseirat_camp%2C_Gaza_Strip.jpg","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.059Z","timestamp":1785113873059,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /wikipedia/commons/thumb/8/81/Displaced_children_sit_on_the_rubble_of_their_destroyed_home_in_Nuseirat_camp%2C_Gaza_Strip.jpg/640px-Displaced_children_sit_on_the_rubble_of_their_destroyed_home_in_Nuseirat_camp%2C_Gaza_Strip.jpg HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 400 \r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nserver: Varnish\r\nx-cache: cp3077 int\r\nx-cache-status: int-front\r\nserver-timing: cache;desc=\"int-front\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\ncontent-type: text/html; charset=utf-8\r\ncontent-length: 2010\r\nx-request-id: 5c14f1d1-bb8e-4fa7-8e41-c3a9dfd59fbd\r\nx-analytics: \r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"400","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":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/commons/thumb/1/1c/United_Nations_Relief_and_Works_Agency_for_Palestine_Refugees_in_the_Near_East_Logo.svg/640px-United_Nations_Relief_and_Works_Agency_for_Palestine_Refugees_in_the_Near_East_Logo.svg.png","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.073Z","timestamp":1785113873073,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.wikimedia.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Fri, 12 Jun 2026 05:24:58 GMT","end":"Thu, 10 Sep 2026 05:24:57 GMT"},"fingerprint":{"sha1":"5B:35:4A:25:C6:4D:17:23:8B:63:A3:F7:CE:52:1B:B7:22:06:BF:1B","sha256":"FE:D1:85:EF:B6:D0:7E:42:4F:F4:62:C9:8C:A3:BA:2C:88:5E:47:EB:9A:03:3D:30:4B:E3:63:FF:11:AD:F6:0D"}}},"request":{"raw":"GET /wikipedia/commons/thumb/1/1c/United_Nations_Relief_and_Works_Agency_for_Palestine_Refugees_in_the_Near_East_Logo.svg/640px-United_Nations_Relief_and_Works_Agency_for_Palestine_Refugees_in_the_Near_East_Logo.svg.png HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 400 \r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nserver: Varnish\r\nx-cache: cp3077 int\r\nx-cache-status: int-front\r\nserver-timing: cache;desc=\"int-front\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\ncontent-type: text/html; charset=utf-8\r\ncontent-length: 2010\r\nx-request-id: 9a6ca957-a0ea-4cf7-8098-a92b3dec65c1\r\nx-analytics: \r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"400","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":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/commons/thumb/8/86/Oxfam_International.svg/640px-Oxfam_International.svg.png","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.075Z","timestamp":1785113873075,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /wikipedia/commons/thumb/8/86/Oxfam_International.svg/640px-Oxfam_International.svg.png HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 400 \r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nserver: Varnish\r\nx-cache: cp3077 int\r\nx-cache-status: int-front\r\nserver-timing: cache;desc=\"int-front\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\ncontent-type: text/html; charset=utf-8\r\ncontent-length: 2010\r\nx-request-id: 18f02782-d596-45d3-9a67-20faf17aa870\r\nx-analytics: \r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"400","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":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"api.web3modal.org/appkit/v1/config?projectId=8ae938963e559bebea09b02aeec915c6\u0026st=appkit\u0026sv=react-wagmi-1.7.7","fqdn":"api.web3modal.org","domain":"web3modal.org","tld":"org"},"ip":{"addr":"104.18.18.237","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:58.468Z","timestamp":1785113878468,"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":"web3modal.org","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Fri, 12 Jun 2026 20:58:28 GMT","end":"Thu, 10 Sep 2026 21:58:10 GMT"},"fingerprint":{"sha1":"5A:9F:85:4A:51:F4:8A:04:CC:1C:A1:DE:31:3C:94:C7:C5:F6:F0:FB","sha256":"3A:D7:9D:20:F2:66:99:35:F7:6E:20:B7:CC:CE:F1:C5:DA:4D:43:50:10:EA:CF:1E:B1:2C:71:20:5F:2F:70:C4"}}},"request":{"raw":"GET /appkit/v1/config?projectId=8ae938963e559bebea09b02aeec915c6\u0026st=appkit\u0026sv=react-wagmi-1.7.7 HTTP/1.1\r\nHost: api.web3modal.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\nReferer: http://sahnesirince.com/\r\nOrigin: http://sahnesirince.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\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\ndate: Mon, 27 Jul 2026 00:57:58 GMT\r\ncontent-type: application/json; charset=UTF-8\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=60, s-maxage=30\r\nx-robots-tag: noindex\r\npriority: u=4,i=?0\r\ncontent-encoding: br\r\nserver: cloudflare\r\ncf-ray: a217b16c8affa0f0-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":595,"size_decoded":527,"mime_type":"application/json; charset=UTF-8","magic":"JSON text data","md5":"1c3a4908ed2367c1c7aa4becb3405028","sha1":"38ae3e154b0c6327abe105b076013b1bbdfd6cc6","sha256":"b8dbbceec8a5443a9a13f936934d90172636d6481952765b2b803dbb876c208b","sha512":"2a169854233efc51af48e78395a576108b5b1dcd5a2cf741800bce6f2d55ac8f5acc922b1d3c6db9b188930bf103eebbcaa85e62f4d71071edc822275202b832","ssdeep":"","tlshash":"71f05427598c39dac546cd73d64397430fae4bb7ea05ed2cd81c9a0913deab11120d3b","first_seen":"2026-05-23T13:27:26.606318Z","last_seen":"2026-07-27T00:59:02.775284Z","times_seen":1315,"resource_available":false,"data":"eyJmZWF0dXJlcyI6W3siaWQiOiJtdWx0aV93YWxsZXQiLCJpc0VuYWJsZWQiOmZhbHNlLCJjb25maWciOm51bGx9LHsiaWQiOiJhY3Rpdml0eSIsImlzRW5hYmxlZCI6dHJ1ZSwiY29uZmlnIjpudWxsfSx7ImlkIjoic3dhcCIsImlzRW5hYmxlZCI6dHJ1ZSwiY29uZmlnIjpudWxsfSx7ImlkIjoiZXZlbnRfdHJhY2tpbmciLCJpc0VuYWJsZWQiOnRydWUsImNvbmZpZyI6bnVsbH0seyJpZCI6Im9ucmFtcCIsImlzRW5hYmxlZCI6dHJ1ZSwiY29uZmlnIjpudWxsfSx7ImlkIjoicmVvd25fYXV0aGVudGljYXRpb24iLCJpc0VuYWJsZWQiOmZhbHNlLCJjb25maWciOm51bGx9LHsiaWQiOiJzb2NpYWxfbG9naW4iLCJpc0VuYWJsZWQiOnRydWUsImNvbmZpZyI6bnVsbH0seyJpZCI6ImZ1bmRfZnJvbV9leGNoYW5nZSIsImlzRW5hYmxlZCI6ZmFsc2UsImNvbmZpZyI6bnVsbH0seyJpZCI6ImhlYWRsZXNzIiwiaXNFbmFibGVkIjpmYWxzZSwiY29uZmlnIjpudWxsfSx7ImlkIjoicGF5bWVudHMiLCJpc0VuYWJsZWQiOmZhbHNlLCJjb25maWciOm51bGx9LHsiaWQiOiJyZW93bl9icmFuZGluZyIsImlzRW5hYmxlZCI6ZmFsc2UsImNvbmZpZyI6bnVsbH1dfQ=="}},"time_used":115,"timings":{"blocked":0,"dns":3,"connect":11,"send":0,"wait":99,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdn.matomo.cloud/dior.matomo.cloud/matomo.js","fqdn":"cdn.matomo.cloud","domain":"matomo.cloud","tld":"cloud"},"ip":{"addr":"3.167.2.121","port":443,"asn":0,"as":"","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:56.286Z","timestamp":1785113876286,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /dior.matomo.cloud/matomo.js HTTP/1.1\r\nHost: cdn.matomo.cloud\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 404 \r\nserver: CloudFront\r\ncontent-type: text/html\r\ncontent-length: 0\r\ndate: Mon, 27 Jul 2026 00:00:43 GMT\r\nx-amz-replication-status: COMPLETED\r\nlast-modified: Thu, 02 Nov 2023 02:17:11 GMT\r\netag: \"d41d8cd98f00b204e9800998ecf8427e\"\r\nx-amz-version-id: x8CUW72Cdy4wRBv1lXTNc2XlWFvGGyiM\r\naccept-ranges: bytes\r\nx-cache: Error from cloudfront\r\nvia: 1.1 16015e09e0d70f7cc17ec5c4f52b310e.cloudfront.net (CloudFront)\r\nx-amz-cf-pop: OSL50-P2\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-amz-cf-id: H_WnyePoqv6_0PuL-NnQOV8J8XGroSzyWpdXPuNjSkUE2Y9FxLvGFw==\r\nage: 3434\r\nstrict-transport-security: max-age=31536000\r\ncross-origin-resource-policy: cross-origin\r\nvary: Origin\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Amazon CloudFront","description":"Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency, high transfer speeds.","website":"https://aws.amazon.com/cloudfront/","common_platform_enumeration":"","icon":"Amazon Cloudfront.svg","categories":["CDN"]},{"name":"Amazon Web Services","description":"Amazon Web Services (AWS) is a comprehensive cloud services platform offering compute power, database storage, content delivery and other functionality.","website":"https://aws.amazon.com/","common_platform_enumeration":"","icon":"Amazon Web Services.svg","categories":["PaaS"]},{"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":0,"size_decoded":0,"mime_type":"text/html","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"globalsumudflotilla.org/static/icons/favicon.ico","fqdn":"globalsumudflotilla.org","domain":"globalsumudflotilla.org","tld":"org"},"ip":{"addr":"104.26.14.212","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:56.586Z","timestamp":1785113876586,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"globalsumudflotilla.org","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Sun, 05 Jul 2026 05:01:22 GMT","end":"Sat, 03 Oct 2026 06:01:14 GMT"},"fingerprint":{"sha1":"C3:38:11:EF:5B:58:11:F1:48:62:84:AE:26:2A:D9:AB:51:A9:99:FB","sha256":"91:39:CF:78:27:E4:BC:4D:02:88:18:B9:D4:A6:01:90:B7:80:53:CF:46:0D:55:45:6F:D8:EA:0A:3B:F4:54:D5"}}},"request":{"raw":"GET /static/icons/favicon.ico HTTP/1.1\r\nHost: globalsumudflotilla.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\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/2 200 \r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\ncontent-type: image/x-icon\r\naccess-control-allow-origin: *\r\ncache-control: max-age=86400, public\r\ncross-origin-opener-policy: same-origin\r\nvary: accept-encoding\r\nlast-modified: Fri, 26 Dec 2025 18:53:56 GMT\r\nreferrer-policy: same-origin\r\nserver: cloudflare\r\nstrict-transport-security: max-age=63072000; includeSubDomains\r\nx-cloud-trace-context: bf2f2556e2ed569001b830728df08b9b\r\nx-content-type-options: nosniff\r\nvia: 1.1 google\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=AD5zrsW6o0M6U0KyaRMZaD9u6ktGD7CVunm0tFBHh2eiFNprpeaT%2Bh2JUlkvTjX1wlDfkKqEKL3GS%2FkXDwqngsVLVzKxRTywwxznDEaCyo72rt8P49sBj9itKVrfqcyoMDySvwnsPnhK\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-cache-status: HIT\r\nspeculation-rules: \"/cdn-cgi/speculation\"\r\netag: W/\"694ed9c4-3c2e\"\r\ncontent-encoding: br\r\ncf-ray: a217b1620adb8be6-OSL\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"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":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"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"]}],"data":{"size":15406,"size_decoded":3167,"mime_type":"image/x-icon","magic":"MS Windows icon resource - 3 icons, 16x16, 32 bits/pixel, 32x32, 32 bits/pixel","md5":"869018e013b4e0d50dbccfba7f210a48","sha1":"54a9fb8211af0c4ad401009e058a957c7f42d59c","sha256":"e3f2574a365165767068bc2106fc15d40ab1c7acf66c46248c4d3d8d9600768e","sha512":"8ef988d8e8f8f6ce5540ab62a45a40177ae148760406fea20c435de164acabc4b75813b7c5bc7e69a742c8d4d4733073e318dfdeed711143f3bd586cc0e81be8","ssdeep":"96:j2u3fVVbKUqZ6e676f5AfetsCtsatXtb5tYchLEq:j7fVYUqEl+BAfenuattAcB1","tlshash":"d862ddd94f274a65eda11ab84723c77ae12eaf2c18a72711e7c03d1736f61c5b00d61b","first_seen":"2026-07-27T00:58:32.34038Z","last_seen":"2026-07-27T00:59:02.768388Z","times_seen":2,"resource_available":false,"data":"AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAKBEAAJ4EAAAwMAAAAQAgAGgmAADGFQAAKAAAABAAAAAgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9vb2//z8/P///////////////////////////////////////////////////////////////////////////1dXV//CwsL///////////////////////////////////////////////////////////////////////////9WVlb/wsLC////////////////////////////////////////////////////////////y8vL/6Ojo//Nzc3/VlZW/5qamv//////////////////////////////////////////////////////u7u7/wICAv8AAAD/dHR0/1ZWVv8UFBT/5ubm//T48P/+//7//////////////////////////////////////4GBgf8AAAD/AAAA/4CAgP9WVlb/u7u7/5q8cf9PiwX/e6hF//3+/P////////////////////////////////+UlJT/KCgo/0pKSv/p6en/VlZW/8LCwv9ZkRP/T4sE/0+LBP/n797//////////////////////////////////////////////////f39/z8/P//CwsL/ocF7/1GMB/+CrVD//v79/////////////////////////////////////////////////3x8fP8DAwP/wsLC///////7/Pr///////////////////////////////////////////+iwXz/WZET/3unRP/Y3NP/UlJS/8HBwv9fVeP/W1Li/3dv5//m5Pr////////////////////////////j7dn/T4sE/0+LBP9PiwT/qseH/1ZWVv/BwcH/OCzc/zMn3P8zJ9z/ZFvk////////////////////////////6vHi/1GMB/9PiwT/T4sE/7LMkv+Ojo7/19fX/z803v8zJ9z/Myfc/z4z3v////////////////////////////////++1KP/d6U+/5i7b//6+/j///////////+Vj+z/Myfc/zMn3P8+M93//////////////////////////////////////////////////////////////////////9DO9/+5tfP/vLjz//////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+fn5/+Hh4f/19fX///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+urq7/AAAA/4aGhv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6ysrP8AAAD/hYWF////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////rKys/wAAAP+FhYX///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+srKz/AAAA/4WFhf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6ysrP8AAAD/g4OD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////zMzM/2JiYv9HR0f/R0dH/0dHR//u7u7/rKys/wAAAP8VFRX/0NDQ/////////////////////////////////////////////////////////////////////////////////////////////////////////////////7q6uv8GBgb/AAAA/wAAAP8AAAD/AAAA/+fn5/+srKz/AAAA/wAAAP8VFRX/0NDQ////////////////////////////////////////////////////////////////////////////////////////////////////////////MzMz/wAAAP8AAAD/AAAA/wAAAP8AAAD/5+fn/6ysrP8AAAD/JiYm/xUVFf/Jycn//////+706P/j7dn//f78//////////////////////////////////////////////////////////////////////////////////z8/P8HBwf/AAAA/wAAAP8AAAD/AAAA/wAAAP/p6en/rKys/wAAAP+FhYX/5eXl//j69f+JsVr/UIwG/0+LBP9nmij/2OXK////////////////////////////////////////////////////////////////////////////+/v7/wYGBv8AAAD/AAAA/wAAAP8AAAD/Gxsb//z8/P+srKz/AAAA/4WFhf//////mrxy/0+LBP9PiwT/T4sE/0+LBP9flR3/9/r1///////////////////////////////////////////////////////////////////////7+/v/BgYG/wAAAP8AAAD/AAAA/wMDA/+oqKj//////6ysrP8AAAD/hYWF//////9hlh//T4sE/0+LBP9PiwT/T4sE/0+LBP/O3rv///////////////////////////////////////////////////////////////////////z8/P9SUlL/T09P/09PT/9iYmL/xMTE////////////rKys/wAAAP+FhYX//////2OYI/9PiwT/T4sE/0+LBP9PiwT/T4sE/9Dgvv////////////////////////////////////////////////////////////////////////////////////////////////////////////////+srKz/AAAA/4WFhf//////o8J+/0+LBP9PiwT/T4sE/0+LBP9lmSb/+vz4////////////////////////////////////////////////////////////////////////////////////////////////////////////+fn5/09PT/8AAAD/hYWF///////7/Pr/mbxx/1WODf9Qiwb/dKM8/+Ls2P////////////////////////////////////////////////////////////////////////////////////////////////////////////n5+f9RUVH/AAAA/wAAAP+FhYX/////////////////+vz4//X48f//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6Oj/wEBAf8NDQ3/AAAA/4WFhf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/fv/rcmM/2qcLP9akhb/e6dF/9HgwP//////mJiY/5ycnP8AAAD/hYWF//7+//+Iger/g3zp/4N86f+DfOn/mZPt/9rY+P///////////////////////////////////////////////////////////////////////////5C1Y/9PiwT/T4sE/0+LBP9PiwT/UYwI/8rctv//////rKys/wAAAP+FhYX//v7+/zww3f8zJ9z/Myfc/zMn3P8zJ9z/NSnc/5qV7f/////////////////////////////////////////////////////////////////b587/T4sF/0+LBP9PiwT/T4sE/0+LBP9PiwT/aZws/////v+srKz/AAAA/4WFhf/+/v7/PDDd/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/7+89P///////////////////////////////////////////////////////////7TOl/9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwX/8fbs/6ysrP8AAAD/hYWF//7+/v88MN3/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/aWDl////////////////////////////////////////////////////////////vNOh/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/1GMCP/2+fP/rKys/wAAAP+FhYX//v7+/z0x3f8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P9JP+D////////////////////////////////////////////////////////////u9Oj/Vo8P/0+LBP9PiwT/T4sE/0+LBP9PiwT/g61Q///////o6Oj/o6Oj/9ra2v//////WE/i/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/0g+3//////////////////////////////////////////////////////////////////B1qn/U44L/0+LBP9PiwT/T4sE/2ebKf/q8eP///////////////////////////+oo/D/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/SD7f///////////////////////////////////////////////////////////////////////k7dr/pcSB/5e6bf+2zpn/9vn0//////////////////////////////////39/v99dej/Myfc/zMn3P8zJ9z/Myfc/zMn3P9IPt////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7+///Cv/T/gnrp/3Nr5/9zaub/c2rm/4F66f////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADAAAABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z8/P/d3d3/zs7O/+Pj4////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Tk5P8wMDD/AAAA/zw8PP/8/Pz//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Pj4/8tLS3/AAAA/zk5Of/7+/v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Pj4/8tLS3/AAAA/zk5Of/7+/v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Pj4/8tLS3/AAAA/zk5Of/7+/v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Pj4/8tLS3/AAAA/zk5Of/7+/v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Pj4/8tLS3/AAAA/zk5Of/7+/v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Pj4/8tLS3/AAAA/zg4OP/7+/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////29vb/1tbW/8fHx//Gxsb/xsbG/8bGxv/d3d3//f39/+Pj4/8tLS3/AAAA/yIiIv/Pz8///v7+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9HR0f9MTEz/Hh4e/xgYGP8YGBj/GBgY/xgYGP92dnb/+Pj4/+Pj4/8tLS3/AAAA/wICAv8+Pj7/4eHh///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+/v7/wMDA/xEREf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9oaGj/9/f3/+Pj4/8tLS3/AAAA/wAAAP8AAAD/OTk5/+Li4v/+/v7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////g4OD/MTEx/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9oaGj/9/f3/+Pj4/8tLS3/AAAA/wEBAf8AAAD/AAAA/2dnZ//4+Pj///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+kpKT/DAwM/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9oaGj/9/f3/+Pj4/8tLS3/AAAA/x8fH/83Nzf/ODg4/9/f3//9/f3//////+3z5//P37z/1+TI//n8+P////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7+/v+FhYX/AwMD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9paWn/9/f3/+Pj4/8tLS3/AAAA/zk5Of/V1dX/6urq//7+/v/n797/j7Vj/1KNCv9PiwT/T4sE/2KXI/+70qH/+fv3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////7+/v+BgYH/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf92dnb/+/v7/+Pj4/8tLS3/AAAA/zk5Of/7+/v//////+3z5/9/qkv/UYwG/0+LBP9PiwT/T4sE/0+LBP9ZkRT/ssuU//////////////////////////////////////////////////////////////////////////////////////////////////////////////////7+/v+BgYH/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w0NDf+mpqb//////+Pj4/8tLS3/AAAA/zk5Of/7+/v//////6/KkP9RjAj/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/WZEU/+rx4/////////////////////////////////////////////////////////////////////////////////////////////////////////////7+/v+BgYH/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/0pKSv/w8PD//////+Pj4/8tLS3/AAAA/zk5Of/7+/v//////3SjPP9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/7TNl/////////////////////////////////////////////////////////////////////////////////////////////////////////////7+/v+BgYH/AgIC/wAAAP8AAAD/AAAA/wAAAP8SEhL/YWFh/+Hh4f///////////+Pj4/8tLS3/AAAA/zk5Of/7+/v//v7+/2KXIv9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/6bDgv////////////////////////////////////////////////////////////////////////////////////////////////////////////7+/v/CwsL/g4OD/4ODg/+Dg4P/g4OD/5OTk//Ly8v/8/Pz/////////////////+Pj4/8tLS3/AAAA/zk5Of/7+/v//////3mmQ/9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/7nRn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Pj4/8tLS3/AAAA/zk5Of/7+/v//////7rRoP9TjQr/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/XpQc//H27f///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9TU1P8gICD/AAAA/zk5Of/7+/v///////L27f+Lsl3/Uo0J/0+LBP9PiwT/T4sE/0+LBP9flh3/v9Wo////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7u7u/0FBQf8DAwP/AAAA/zk5Of/7+/v//////////v/v9er/p8WG/16VHf9QiwX/UYwI/3elQP/N3rr/+/z6//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7+/v/h4eH/QUFB/wAAAP8AAAD/AAAA/zk5Of/7+/v///////////////////////v9+v/s8ub/8vbt/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Pj4/9RUVH/BAQE/wAAAP8AAAD/AAAA/zk5Of/7+/v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Dg4P83Nzf/AAAA/w4ODv8RERH/AAAA/zk5Of/7+/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0+PD/ydu0/4avV/9lmSb/ZJgk/4ewWf/J27X/9vny///////Kysr/QEBA/7W1tf8tLS3/AAAA/zk5Of/7+/v//////7259P+4tPL/uLTy/7i08v+4tPL/ubTy/8/M9v/k4/r/+Pf+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////+705/+QtmP/VI4N/0+LBP9PiwT/T4sE/0+LBP9XkBD/kLZl/+706f/+/v7/7e3t/+Pj4/8tLS3/AAAA/zk5Of/7+/v//f3+/0E23v8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zUp3P9OQ+D/hn/q/9nX+P///////////////////////////////////////////////////////////////////////////////////////////////////////v/+/5G2Zv9SjQj/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/UIwG/4uyXf/6/Pj//////+Pj4/8tLS3/AAAA/zk5Of/7+/v//f3+/0E23v8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/NCjc/1ZN4v/S0Pf/////////////////////////////////////////////////////////////////////////////////////////////////1ePH/1CLBf9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/1uTFv/M3bj//////+Pj4/8tLS3/AAAA/zk5Of/7+/v//f3+/0E23v8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P9uZub/7+/8////////////////////////////////////////////////////////////////////////////////////////////mLtw/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/1GMB/+mxIL//f78/+Pj4/8tLS3/AAAA/zk5Of/7+/v//f3+/0E23v8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P85Lt3/wLz0////////////////////////////////////////////////////////////////////////////////////////////gKtN/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBP+Xumz/+vv4/+Pj4/8tLS3/AAAA/zk5Of/7+/v//f3+/0E23v8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/fXbo////////////////////////////////////////////////////////////////////////////////////////////hrBW/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBf+bvHL/+/z5/+Pj4/8tLS3/AAAA/zk5Of/7+/v//f3+/0I33v8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/WU/i////////////////////////////////////////////////////////////////////////////////////////////s82X/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/1WPDf+3z5r////+/+np6f9RUVH/JCQk/19fX//9/f3//////1FH4f8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Vkzi////////////////////////////////////////////////////////////////////////////////////////////8/fv/2OXI/9PiwT/T4sE/0+LBP9PiwT/T4sE/0+LBP9PiwT/T4sE/2ebKP/n79////////z8/P/o6Oj/4ODg/+vr6////////////3536P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Vkzi/////////////////////////////////////////////////////////////////////////////////////////////////83euv9flR3/UIsF/0+LBP9PiwT/T4sE/0+LBP9PiwX/XJQZ/8basv///////////////////////////////////////////8zJ9v88MN3/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Vkzi//////////////////////////////////////////////////////////////////////////////////////////////////v9+v/J27T/gKtN/1eQEf9PiwT/T4oE/1eQEv+CrFD/y925//////////////////////////////////////////////////T0/f+Ffur/Nyvd/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Vkzi///////////////////////////////////////////////////////////////////////////////////////////////////////+/v3/8fbs/9/q0v/K3LX/yty1/9/q0v/y9u7//v7+///////////////////////////////////////////////////////r6vz/eHDo/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Myfc/zMn3P8zJ9z/Vkzi/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v3+/7Sw8v9jWeT/TEHg/0k+4P9IPt//SD7f/0g+3/9IPt//aF/l///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/7/4eD6/9nX+P/Y1vj/2Nb4/9jW+P/Y1vj/3935/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="}},"time_used":258,"timings":{"blocked":-1,"dns":200,"connect":2,"send":0,"wait":43,"receive":0,"ssl":12},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/fpbundle.js","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"is_navigation_request":false,"resource_type":"script","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:56.610Z","timestamp":1785113876610,"http_version":"HTTP/1.1","security_state":"insecure","security_info":null,"request":{"raw":"GET /fpbundle.js HTTP/1.1\r\nHost: sahnesirince.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nConnection: Keep-Alive\r\nKeep-Alive: timeout=5, max=100\r\nCache-Control: public, max-age=604800\r\nExpires: Mon, 03 Aug 2026 00:57:56 GMT\r\nContent-Type: application/javascript\r\nLast-Modified: Wed, 01 Oct 2025 05:48:44 GMT\r\nAccept-Ranges: bytes\r\nContent-Encoding: gzip\r\nVary: Accept-Encoding\r\nContent-Length: 17219\r\nDate: Mon, 27 Jul 2026 00:57:56 GMT\r\nServer: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":45503,"size_decoded":17605,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (44961), with CRLF line terminators","md5":"1c59909ad8d56060bf239a34a275da3d","sha1":"1164057a0631f6b5dd80387a1c3a9e332fb00bb4","sha256":"126a8b465ef8734b4d7a289781e0535cd283ccf24394e08c44f23ae300be3a5a","sha512":"39d33737c908bf2a1430f157990f931a0644471a0cf20de61721596e1330fe5867108db7e47d1869576710a72f886ef42e7492a2c0ed05fde2644f6d338e3eac","ssdeep":"768:v8UXI0Nc5VArhXDh1bnUsAq1++umYUT15+2gT/RcKrNcFV3BT/Vo:vN/NcnArV7f5+9cxT6","tlshash":"a413c7a873c67139a217b0719dcf4845b67d6d182289884dca2ec4a4b879d3dc77ecec","first_seen":"2025-07-11T11:18:53.943693Z","last_seen":"2026-07-27T00:59:02.766896Z","times_seen":743,"resource_available":true,"data":"LyoqDQogKiBGaW5nZXJwcmludEpTIHY0LjYuMiAtIENvcHlyaWdodCAoYykgRmluZ2VycHJpbnRKUywgSW5jLCAyMDI1IChodHRwczovL2ZpbmdlcnByaW50LmNvbSkNCiAqDQogKiBMaWNlbnNlZCB1bmRlciBCdXNpbmVzcyBTb3VyY2UgTGljZW5zZSAxLjEgaHR0cHM6Ly9tYXJpYWRiLmNvbS9ic2wxMS8NCiAqIExpY2Vuc29yOiBGaW5nZXJwcmludEpTLCBJbmMuDQogKiBMaWNlbnNlZCBXb3JrOiBGaW5nZXJwcmludEpTIGJyb3dzZXIgZmluZ2VycHJpbnRpbmcgbGlicmFyeQ0KICogQWRkaXRpb25hbCBVc2UgR3JhbnQ6IE5vbmUNCiAqIENoYW5nZSBEYXRlOiBGb3VyIHllYXJzIGZyb20gZmlyc3QgcmVsZWFzZSBmb3IgdGhlIHNwZWNpZmljIHZlcnNpb24uDQogKiBDaGFuZ2UgTGljZW5zZTogTUlULCB0ZXh0IGF0IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZS9taXQvIHdpdGggdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlOg0KICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCBGaW5nZXJwcmludEpTLCBJbmMuDQogKi8NCiFmdW5jdGlvbiAoZSwgbikgeyAib2JqZWN0IiA9PSB0eXBlb2YgZXhwb3J0cyAmJiAidW5kZWZpbmVkIiAhPSB0eXBlb2YgbW9kdWxlID8gbihleHBvcnRzKSA6ICJmdW5jdGlvbiIgPT0gdHlwZW9mIGRlZmluZSAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsiZXhwb3J0cyJdLCBuKSA6IG4oKGUgPSAidW5kZWZpbmVkIiAhPSB0eXBlb2YgZ2xvYmFsVGhpcyA/IGdsb2JhbFRoaXMgOiBlIHx8IHNlbGYpLkZpbmdlcnByaW50SlMgPSB7fSkgfSh0aGlzLCAoZnVuY3Rpb24gKGUpIHsgInVzZSBzdHJpY3QiOyB2YXIgbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG4gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIChlKSB7IGZvciAodmFyIG4sIHQgPSAxLCByID0gYXJndW1lbnRzLmxlbmd0aDsgdCA8IHI7IHQrKylmb3IgKHZhciBvIGluIG4gPSBhcmd1bWVudHNbdF0pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCBvKSAmJiAoZVtvXSA9IG5bb10pOyByZXR1cm4gZSB9LCBuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfTsgZnVuY3Rpb24gdChlLCBuLCB0LCByKSB7IHJldHVybiBuZXcgKHQgfHwgKHQgPSBQcm9taXNlKSkoKGZ1bmN0aW9uIChvLCBpKSB7IGZ1bmN0aW9uIGEoZSkgeyB0cnkgeyB1KHIubmV4dChlKSkgfSBjYXRjaCAobikgeyBpKG4pIH0gfSBmdW5jdGlvbiBjKGUpIHsgdHJ5IHsgdShyLnRocm93KGUpKSB9IGNhdGNoIChuKSB7IGkobikgfSB9IGZ1bmN0aW9uIHUoZSkgeyB2YXIgbjsgZS5kb25lID8gbyhlLnZhbHVlKSA6IChuID0gZS52YWx1ZSwgbiBpbnN0YW5jZW9mIHQgPyBuIDogbmV3IHQoKGZ1bmN0aW9uIChlKSB7IGUobikgfSkpKS50aGVuKGEsIGMpIH0gdSgociA9IHIuYXBwbHkoZSwgbiB8fCBbXSkpLm5leHQoKSkgfSkpIH0gZnVuY3Rpb24gcihlLCBuKSB7IHZhciB0LCByLCBvLCBpLCBhID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24gKCkgeyBpZiAoMSAmIG9bMF0pIHRocm93IG9bMV07IHJldHVybiBvWzFdIH0sIHRyeXM6IFtdLCBvcHM6IFtdIH07IHJldHVybiBpID0geyBuZXh0OiBjKDApLCB0aHJvdzogYygxKSwgcmV0dXJuOiBjKDIpIH0sICJmdW5jdGlvbiIgPT0gdHlwZW9mIFN5bWJvbCAmJiAoaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyB9KSwgaTsgZnVuY3Rpb24gYyhjKSB7IHJldHVybiBmdW5jdGlvbiAodSkgeyByZXR1cm4gZnVuY3Rpb24gKGMpIHsgaWYgKHQpIHRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTsgZm9yICg7IGkgJiYgKGkgPSAwLCBjWzBdICYmIChhID0gMCkpLCBhOyl0cnkgeyBpZiAodCA9IDEsIHIgJiYgKG8gPSAyICYgY1swXSA/IHIucmV0dXJuIDogY1swXSA/IHIudGhyb3cgfHwgKChvID0gci5yZXR1cm4pICYmIG8uY2FsbChyKSwgMCkgOiByLm5leHQpICYmICEobyA9IG8uY2FsbChyLCBjWzFdKSkuZG9uZSkgcmV0dXJuIG87IHN3aXRjaCAociA9IDAsIG8gJiYgKGMgPSBbMiAmIGNbMF0sIG8udmFsdWVdKSwgY1swXSkgeyBjYXNlIDA6IGNhc2UgMTogbyA9IGM7IGJyZWFrOyBjYXNlIDQ6IHJldHVybiBhLmxhYmVsKyssIHsgdmFsdWU6IGNbMV0sIGRvbmU6ICExIH07IGNhc2UgNTogYS5sYWJlbCsrLCByID0gY1sxXSwgYyA9IFswXTsgY29udGludWU7IGNhc2UgNzogYyA9IGEub3BzLnBvcCgpLCBhLnRyeXMucG9wKCk7IGNvbnRpbnVlOyBkZWZhdWx0OiBpZiAoIShvID0gYS50cnlzLCAobyA9IG8ubGVuZ3RoID4gMCAmJiBvW28ubGVuZ3RoIC0gMV0pIHx8IDYgIT09IGNbMF0gJiYgMiAhPT0gY1swXSkpIHsgYSA9IDA7IGNvbnRpbnVlIH0gaWYgKDMgPT09IGNbMF0gJiYgKCFvIHx8IGNbMV0gPiBvWzBdICYmIGNbMV0gPCBvWzNdKSkgeyBhLmxhYmVsID0gY1sxXTsgYnJlYWsgfSBpZiAoNiA9PT0gY1swXSAmJiBhLmxhYmVsIDwgb1sxXSkgeyBhLmxhYmVsID0gb1sxXSwgbyA9IGM7IGJyZWFrIH0gaWYgKG8gJiYgYS5sYWJlbCA8IG9bMl0pIHsgYS5sYWJlbCA9IG9bMl0sIGEub3BzLnB1c2goYyk7IGJyZWFrIH0gb1syXSAmJiBhLm9wcy5wb3AoKSwgYS50cnlzLnBvcCgpOyBjb250aW51ZSB9YyA9IG4uY2FsbChlLCBhKSB9IGNhdGNoICh1KSB7IGMgPSBbNiwgdV0sIHIgPSAwIH0gZmluYWxseSB7IHQgPSBvID0gMCB9IGlmICg1ICYgY1swXSkgdGhyb3cgY1sxXTsgcmV0dXJuIHsgdmFsdWU6IGNbMF0gPyBjWzFdIDogdm9pZCAwLCBkb25lOiAhMCB9IH0oW2MsIHVdKSB9IH0gfSBmdW5jdGlvbiBvKGUsIG4sIHQpIHsgaWYgKHQgfHwgMiA9PT0gYXJndW1lbnRzLmxlbmd0aCkgZm9yICh2YXIgciwgbyA9IDAsIGkgPSBuLmxlbmd0aDsgbyA8IGk7IG8rKykhciAmJiBvIGluIG4gfHwgKHIgfHwgKHIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuLCAwLCBvKSksIHJbb10gPSBuW29dKTsgcmV0dXJuIGUuY29uY2F0KHIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobikpIH0gZnVuY3Rpb24gaShlLCBuKSB7IHJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIHNldFRpbWVvdXQodCwgZSwgbikgfSkpIH0gZnVuY3Rpb24gYShlKSB7IHJldHVybiAhIWUgJiYgImZ1bmN0aW9uIiA9PSB0eXBlb2YgZS50aGVuIH0gZnVuY3Rpb24gYyhlLCBuKSB7IHRyeSB7IHZhciB0ID0gZSgpOyBhKHQpID8gdC50aGVuKChmdW5jdGlvbiAoZSkgeyByZXR1cm4gbighMCwgZSkgfSksIChmdW5jdGlvbiAoZSkgeyByZXR1cm4gbighMSwgZSkgfSkpIDogbighMCwgdCkgfSBjYXRjaCAocikgeyBuKCExLCByKSB9IH0gZnVuY3Rpb24gdShlLCBuLCBvKSB7IHJldHVybiB2b2lkIDAgPT09IG8gJiYgKG8gPSAxNiksIHQodGhpcywgdm9pZCAwLCB2b2lkIDAsIChmdW5jdGlvbiAoKSB7IHZhciB0LCBpLCBhLCBjOyByZXR1cm4gcih0aGlzLCAoZnVuY3Rpb24gKHIpIHsgc3dpdGNoIChyLmxhYmVsKSB7IGNhc2UgMDogdCA9IEFycmF5KGUubGVuZ3RoKSwgaSA9IERhdGUubm93KCksIGEgPSAwLCByLmxhYmVsID0gMTsgY2FzZSAxOiByZXR1cm4gYSA8IGUubGVuZ3RoID8gKHRbYV0gPSBuKGVbYV0sIGEpLCAoYyA9IERhdGUubm93KCkpID49IGkgKyBvID8gKGkgPSBjLCBbNCwgbmV3IFByb21pc2UoKGZ1bmN0aW9uIChlKSB7IHZhciBuID0gbmV3IE1lc3NhZ2VDaGFubmVsOyBuLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGUoKSB9LCBuLnBvcnQyLnBvc3RNZXNzYWdlKG51bGwpIH0pKV0pIDogWzMsIDNdKSA6IFszLCA0XTsgY2FzZSAyOiByLnNlbnQoKSwgci5sYWJlbCA9IDM7IGNhc2UgMzogcmV0dXJuICsrYSwgWzMsIDFdOyBjYXNlIDQ6IHJldHVybiBbMiwgdF0gfSB9KSkgfSkpIH0gZnVuY3Rpb24gbChlKSB7IHJldHVybiBlLnRoZW4odm9pZCAwLCAoZnVuY3Rpb24gKCkgeyB9KSksIGUgfSBmdW5jdGlvbiBzKGUpIHsgcmV0dXJuIHBhcnNlSW50KGUpIH0gZnVuY3Rpb24gZChlKSB7IHJldHVybiBwYXJzZUZsb2F0KGUpIH0gZnVuY3Rpb24gZihlLCBuKSB7IHJldHVybiAibnVtYmVyIiA9PSB0eXBlb2YgZSAmJiBpc05hTihlKSA/IG4gOiBlIH0gZnVuY3Rpb24gbShlKSB7IHJldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24gKGUsIG4pIHsgcmV0dXJuIGUgKyAobiA/IDEgOiAwKSB9KSwgMCkgfSBmdW5jdGlvbiB2KGUsIG4pIHsgaWYgKHZvaWQgMCA9PT0gbiAmJiAobiA9IDEpLCBNYXRoLmFicyhuKSA+PSAxKSByZXR1cm4gTWF0aC5yb3VuZChlIC8gbikgKiBuOyB2YXIgdCA9IDEgLyBuOyByZXR1cm4gTWF0aC5yb3VuZChlICogdCkgLyB0IH0gZnVuY3Rpb24gaChlLCBuKSB7IHZhciB0ID0gZVswXSA+Pj4gMTYsIHIgPSA2NTUzNSAmIGVbMF0sIG8gPSBlWzFdID4+PiAxNiwgaSA9IDY1NTM1ICYgZVsxXSwgYSA9IG5bMF0gPj4+IDE2LCBjID0gNjU1MzUgJiBuWzBdLCB1ID0gblsxXSA+Pj4gMTYsIGwgPSAwLCBzID0gMCwgZCA9IDAsIGYgPSAwOyBkICs9IChmICs9IGkgKyAoNjU1MzUgJiBuWzFdKSkgPj4+IDE2LCBmICY9IDY1NTM1LCBzICs9IChkICs9IG8gKyB1KSA+Pj4gMTYsIGQgJj0gNjU1MzUsIGwgKz0gKHMgKz0gciArIGMpID4+PiAxNiwgcyAmPSA2NTUzNSwgbCArPSB0ICsgYSwgbCAmPSA2NTUzNSwgZVswXSA9IGwgPDwgMTYgfCBzLCBlWzFdID0gZCA8PCAxNiB8IGYgfSBmdW5jdGlvbiBwKGUsIG4pIHsgdmFyIHQgPSBlWzBdID4+PiAxNiwgciA9IDY1NTM1ICYgZVswXSwgbyA9IGVbMV0gPj4+IDE2LCBpID0gNjU1MzUgJiBlWzFdLCBhID0gblswXSA+Pj4gMTYsIGMgPSA2NTUzNSAmIG5bMF0sIHUgPSBuWzFdID4+PiAxNiwgbCA9IDY1NTM1ICYgblsxXSwgcyA9IDAsIGQgPSAwLCBmID0gMCwgbSA9IDA7IGYgKz0gKG0gKz0gaSAqIGwpID4+PiAxNiwgbSAmPSA2NTUzNSwgZCArPSAoZiArPSBvICogbCkgPj4+IDE2LCBmICY9IDY1NTM1LCBkICs9IChmICs9IGkgKiB1KSA+Pj4gMTYsIGYgJj0gNjU1MzUsIHMgKz0gKGQgKz0gciAqIGwpID4+PiAxNiwgZCAmPSA2NTUzNSwgcyArPSAoZCArPSBvICogdSkgPj4+IDE2LCBkICY9IDY1NTM1LCBzICs9IChkICs9IGkgKiBjKSA+Pj4gMTYsIGQgJj0gNjU1MzUsIHMgKz0gdCAqIGwgKyByICogdSArIG8gKiBjICsgaSAqIGEsIHMgJj0gNjU1MzUsIGVbMF0gPSBzIDw8IDE2IHwgZCwgZVsxXSA9IGYgPDwgMTYgfCBtIH0gZnVuY3Rpb24gYihlLCBuKSB7IHZhciB0ID0gZVswXTsgMzIgPT09IChuICU9IDY0KSA/IChlWzBdID0gZVsxXSwgZVsxXSA9IHQpIDogbiA8IDMyID8gKGVbMF0gPSB0IDw8IG4gfCBlWzFdID4+PiAzMiAtIG4sIGVbMV0gPSBlWzFdIDw8IG4gfCB0ID4+PiAzMiAtIG4pIDogKG4gLT0gMzIsIGVbMF0gPSBlWzFdIDw8IG4gfCB0ID4+PiAzMiAtIG4sIGVbMV0gPSB0IDw8IG4gfCBlWzFdID4+PiAzMiAtIG4pIH0gZnVuY3Rpb24geShlLCBuKSB7IDAgIT09IChuICU9IDY0KSAmJiAobiA8IDMyID8gKGVbMF0gPSBlWzFdID4+PiAzMiAtIG4sIGVbMV0gPSBlWzFdIDw8IG4pIDogKGVbMF0gPSBlWzFdIDw8IG4gLSAzMiwgZVsxXSA9IDApKSB9IGZ1bmN0aW9uIGcoZSwgbikgeyBlWzBdIF49IG5bMF0sIGVbMV0gXj0gblsxXSB9IHZhciB3ID0gWzQyODM1NDM1MTEsIDM5ODE4MDY3OTddLCBMID0gWzMzMDE4ODIzNjYsIDQ0NDk4NDQwM107IGZ1bmN0aW9uIGsoZSkgeyB2YXIgbiA9IFswLCBlWzBdID4+PiAxXTsgZyhlLCBuKSwgcChlLCB3KSwgblsxXSA9IGVbMF0gPj4+IDEsIGcoZSwgbiksIHAoZSwgTCksIG5bMV0gPSBlWzBdID4+PiAxLCBnKGUsIG4pIH0gdmFyIFYgPSBbMjI3NzczNTMxMywgMjg5NTU5NTA5XSwgUyA9IFsxMjkxMTY5MDkxLCA2NTg4NzExNjddLCBXID0gWzAsIDVdLCB4ID0gWzAsIDEzOTAyMDg4MDldLCBaID0gWzAsIDk0NDMzMTQ0NV07IGZ1bmN0aW9uIE0oZSwgbikgeyB2YXIgdCA9IGZ1bmN0aW9uIChlKSB7IGZvciAodmFyIG4gPSBuZXcgVWludDhBcnJheShlLmxlbmd0aCksIHQgPSAwOyB0IDwgZS5sZW5ndGg7IHQrKykgeyB2YXIgciA9IGUuY2hhckNvZGVBdCh0KTsgaWYgKHIgPiAxMjcpIHJldHVybiAobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUoZSk7IG5bdF0gPSByIH0gcmV0dXJuIG4gfShlKTsgbiA9IG4gfHwgMDsgdmFyIHIsIG8gPSBbMCwgdC5sZW5ndGhdLCBpID0gb1sxXSAlIDE2LCBhID0gb1sxXSAtIGksIGMgPSBbMCwgbl0sIHUgPSBbMCwgbl0sIGwgPSBbMCwgMF0sIHMgPSBbMCwgMF07IGZvciAociA9IDA7IHIgPCBhOyByICs9IDE2KWxbMF0gPSB0W3IgKyA0XSB8IHRbciArIDVdIDw8IDggfCB0W3IgKyA2XSA8PCAxNiB8IHRbciArIDddIDw8IDI0LCBsWzFdID0gdFtyXSB8IHRbciArIDFdIDw8IDggfCB0W3IgKyAyXSA8PCAxNiB8IHRbciArIDNdIDw8IDI0LCBzWzBdID0gdFtyICsgMTJdIHwgdFtyICsgMTNdIDw8IDggfCB0W3IgKyAxNF0gPDwgMTYgfCB0W3IgKyAxNV0gPDwgMjQsIHNbMV0gPSB0W3IgKyA4XSB8IHRbciArIDldIDw8IDggfCB0W3IgKyAxMF0gPDwgMTYgfCB0W3IgKyAxMV0gPDwgMjQsIHAobCwgViksIGIobCwgMzEpLCBwKGwsIFMpLCBnKGMsIGwpLCBiKGMsIDI3KSwgaChjLCB1KSwgcChjLCBXKSwgaChjLCB4KSwgcChzLCBTKSwgYihzLCAzMyksIHAocywgViksIGcodSwgcyksIGIodSwgMzEpLCBoKHUsIGMpLCBwKHUsIFcpLCBoKHUsIFopOyBsWzBdID0gMCwgbFsxXSA9IDAsIHNbMF0gPSAwLCBzWzFdID0gMDsgdmFyIGQgPSBbMCwgMF07IHN3aXRjaCAoaSkgeyBjYXNlIDE1OiBkWzFdID0gdFtyICsgMTRdLCB5KGQsIDQ4KSwgZyhzLCBkKTsgY2FzZSAxNDogZFsxXSA9IHRbciArIDEzXSwgeShkLCA0MCksIGcocywgZCk7IGNhc2UgMTM6IGRbMV0gPSB0W3IgKyAxMl0sIHkoZCwgMzIpLCBnKHMsIGQpOyBjYXNlIDEyOiBkWzFdID0gdFtyICsgMTFdLCB5KGQsIDI0KSwgZyhzLCBkKTsgY2FzZSAxMTogZFsxXSA9IHRbciArIDEwXSwgeShkLCAxNiksIGcocywgZCk7IGNhc2UgMTA6IGRbMV0gPSB0W3IgKyA5XSwgeShkLCA4KSwgZyhzLCBkKTsgY2FzZSA5OiBkWzFdID0gdFtyICsgOF0sIGcocywgZCksIHAocywgUyksIGIocywgMzMpLCBwKHMsIFYpLCBnKHUsIHMpOyBjYXNlIDg6IGRbMV0gPSB0W3IgKyA3XSwgeShkLCA1NiksIGcobCwgZCk7IGNhc2UgNzogZFsxXSA9IHRbciArIDZdLCB5KGQsIDQ4KSwgZyhsLCBkKTsgY2FzZSA2OiBkWzFdID0gdFtyICsgNV0sIHkoZCwgNDApLCBnKGwsIGQpOyBjYXNlIDU6IGRbMV0gPSB0W3IgKyA0XSwgeShkLCAzMiksIGcobCwgZCk7IGNhc2UgNDogZFsxXSA9IHRbciArIDNdLCB5KGQsIDI0KSwgZyhsLCBkKTsgY2FzZSAzOiBkWzFdID0gdFtyICsgMl0sIHkoZCwgMTYpLCBnKGwsIGQpOyBjYXNlIDI6IGRbMV0gPSB0W3IgKyAxXSwgeShkLCA4KSwgZyhsLCBkKTsgY2FzZSAxOiBkWzFdID0gdFtyXSwgZyhsLCBkKSwgcChsLCBWKSwgYihsLCAzMSksIHAobCwgUyksIGcoYywgbCkgfXJldHVybiBnKGMsIG8pLCBnKHUsIG8pLCBoKGMsIHUpLCBoKHUsIGMpLCBrKGMpLCBrKHUpLCBoKGMsIHUpLCBoKHUsIGMpLCAoIjAwMDAwMDAwIiArIChjWzBdID4+PiAwKS50b1N0cmluZygxNikpLnNsaWNlKC04KSArICgiMDAwMDAwMDAiICsgKGNbMV0gPj4+IDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTgpICsgKCIwMDAwMDAwMCIgKyAodVswXSA+Pj4gMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtOCkgKyAoIjAwMDAwMDAwIiArICh1WzFdID4+PiAwKS50b1N0cmluZygxNikpLnNsaWNlKC04KSB9IGZ1bmN0aW9uIFIoZSkgeyByZXR1cm4gImZ1bmN0aW9uIiAhPSB0eXBlb2YgZSB9IGZ1bmN0aW9uIEYoZSwgbiwgbywgaSkgeyB2YXIgYSA9IE9iamVjdC5rZXlzKGUpLmZpbHRlcigoZnVuY3Rpb24gKGUpIHsgcmV0dXJuICFmdW5jdGlvbiAoZSwgbikgeyBmb3IgKHZhciB0ID0gMCwgciA9IGUubGVuZ3RoOyB0IDwgcjsgKyt0KWlmIChlW3RdID09PSBuKSByZXR1cm4gITA7IHJldHVybiAhMSB9KG8sIGUpIH0pKSwgcyA9IGwodShhLCAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIGZ1bmN0aW9uIChlLCBuKSB7IHZhciB0ID0gbChuZXcgUHJvbWlzZSgoZnVuY3Rpb24gKHQpIHsgdmFyIHIgPSBEYXRlLm5vdygpOyBjKGUuYmluZChudWxsLCBuKSwgKGZ1bmN0aW9uICgpIHsgZm9yICh2YXIgZSA9IFtdLCBuID0gMDsgbiA8IGFyZ3VtZW50cy5sZW5ndGg7IG4rKyllW25dID0gYXJndW1lbnRzW25dOyB2YXIgbyA9IERhdGUubm93KCkgLSByOyBpZiAoIWVbMF0pIHJldHVybiB0KChmdW5jdGlvbiAoKSB7IHJldHVybiB7IGVycm9yOiBlWzFdLCBkdXJhdGlvbjogbyB9IH0pKTsgdmFyIGkgPSBlWzFdOyBpZiAoUihpKSkgcmV0dXJuIHQoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgdmFsdWU6IGksIGR1cmF0aW9uOiBvIH0gfSkpOyB0KChmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gKGUpIHsgdmFyIG4gPSBEYXRlLm5vdygpOyBjKGksIChmdW5jdGlvbiAoKSB7IGZvciAodmFyIHQgPSBbXSwgciA9IDA7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspdFtyXSA9IGFyZ3VtZW50c1tyXTsgdmFyIGkgPSBvICsgRGF0ZS5ub3coKSAtIG47IGlmICghdFswXSkgcmV0dXJuIGUoeyBlcnJvcjogdFsxXSwgZHVyYXRpb246IGkgfSk7IGUoeyB2YWx1ZTogdFsxXSwgZHVyYXRpb246IGkgfSkgfSkpIH0pKSB9KSkgfSkpIH0pKSk7IHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiB0LnRoZW4oKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlKCkgfSkpIH0gfShlW3RdLCBuKSB9KSwgaSkpOyByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gdCh0aGlzLCB2b2lkIDAsIHZvaWQgMCwgKGZ1bmN0aW9uICgpIHsgdmFyIGUsIG4sIHQsIG87IHJldHVybiByKHRoaXMsIChmdW5jdGlvbiAocikgeyBzd2l0Y2ggKHIubGFiZWwpIHsgY2FzZSAwOiByZXR1cm4gWzQsIHNdOyBjYXNlIDE6IHJldHVybiBbNCwgdShyLnNlbnQoKSwgKGZ1bmN0aW9uIChlKSB7IHJldHVybiBsKGUoKSkgfSksIGkpXTsgY2FzZSAyOiByZXR1cm4gZSA9IHIuc2VudCgpLCBbNCwgUHJvbWlzZS5hbGwoZSldOyBjYXNlIDM6IGZvciAobiA9IHIuc2VudCgpLCB0ID0ge30sIG8gPSAwOyBvIDwgYS5sZW5ndGg7ICsrbyl0W2Fbb11dID0gbltvXTsgcmV0dXJuIFsyLCB0XSB9IH0pKSB9KSkgfSB9IGZ1bmN0aW9uIEcoKSB7IHZhciBlID0gd2luZG93LCBuID0gbmF2aWdhdG9yOyByZXR1cm4gbShbIk1TQ1NTTWF0cml4IiBpbiBlLCAibXNTZXRJbW1lZGlhdGUiIGluIGUsICJtc0luZGV4ZWREQiIgaW4gZSwgIm1zTWF4VG91Y2hQb2ludHMiIGluIG4sICJtc1BvaW50ZXJFbmFibGVkIiBpbiBuXSkgPj0gNCB9IGZ1bmN0aW9uIEkoKSB7IHZhciBlID0gd2luZG93LCBuID0gbmF2aWdhdG9yOyByZXR1cm4gbShbIm1zV3JpdGVQcm9maWxlck1hcmsiIGluIGUsICJNU1N0cmVhbSIgaW4gZSwgIm1zTGF1bmNoVXJpIiBpbiBuLCAibXNTYXZlQmxvYiIgaW4gbl0pID49IDMgJiYgIUcoKSB9IGZ1bmN0aW9uIFkoKSB7IHZhciBlID0gd2luZG93LCBuID0gbmF2aWdhdG9yOyByZXR1cm4gbShbIndlYmtpdFBlcnNpc3RlbnRTdG9yYWdlIiBpbiBuLCAid2Via2l0VGVtcG9yYXJ5U3RvcmFnZSIgaW4gbiwgMCA9PT0gKG4udmVuZG9yIHx8ICIiKS5pbmRleE9mKCJHb29nbGUiKSwgIndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwiIGluIGUsICJCYXR0ZXJ5TWFuYWdlciIgaW4gZSwgIndlYmtpdE1lZGlhU3RyZWFtIiBpbiBlLCAid2Via2l0U3BlZWNoR3JhbW1hciIgaW4gZV0pID49IDUgfSBmdW5jdGlvbiBDKCkgeyB2YXIgZSA9IHdpbmRvdzsgcmV0dXJuIG0oWyJBcHBsZVBheUVycm9yIiBpbiBlLCAiQ1NTUHJpbWl0aXZlVmFsdWUiIGluIGUsICJDb3VudGVyIiBpbiBlLCAwID09PSBuYXZpZ2F0b3IudmVuZG9yLmluZGV4T2YoIkFwcGxlIiksICJSR0JDb2xvciIgaW4gZSwgIldlYktpdE1lZGlhS2V5cyIgaW4gZV0pID49IDQgfSBmdW5jdGlvbiBqKCkgeyB2YXIgZSA9IHdpbmRvdywgbiA9IGUuSFRNTEVsZW1lbnQsIHQgPSBlLkRvY3VtZW50OyByZXR1cm4gbShbInNhZmFyaSIgaW4gZSwgISgib25nZXN0dXJlZW5kIiBpbiBlKSwgISgiVG91Y2hFdmVudCIgaW4gZSksICEoIm9yaWVudGF0aW9uIiBpbiBlKSwgbiAmJiAhKCJhdXRvY2FwaXRhbGl6ZSIgaW4gbi5wcm90b3R5cGUpLCB0ICYmICJwb2ludGVyTG9ja0VsZW1lbnQiIGluIHQucHJvdG90eXBlXSkgPj0gNCB9IGZ1bmN0aW9uIFgoKSB7IHZhciBlLCBuID0gd2luZG93OyByZXR1cm4gZSA9IG4ucHJpbnQsIC9eZnVuY3Rpb25ccy4qP1x7XHMqXFtuYXRpdmUgY29kZV1ccyp9JC8udGVzdChTdHJpbmcoZSkpICYmICJbb2JqZWN0IFdlYlBhZ2VOYW1lc3BhY2VdIiA9PT0gU3RyaW5nKG4uYnJvd3NlcikgfSBmdW5jdGlvbiBQKCkgeyB2YXIgZSwgbiwgdCA9IHdpbmRvdzsgcmV0dXJuIG0oWyJidWlsZElEIiBpbiBuYXZpZ2F0b3IsICJNb3pBcHBlYXJhbmNlIiBpbiAobnVsbCAhPT0gKG4gPSBudWxsID09PSAoZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkgfHwgdm9pZCAwID09PSBlID8gdm9pZCAwIDogZS5zdHlsZSkgJiYgdm9pZCAwICE9PSBuID8gbiA6IHt9KSwgIm9ubW96ZnVsbHNjcmVlbmNoYW5nZSIgaW4gdCwgIm1veklubmVyU2NyZWVuWCIgaW4gdCwgIkNTU01vekRvY3VtZW50UnVsZSIgaW4gdCwgIkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbSIgaW4gdF0pID49IDQgfSBmdW5jdGlvbiBFKCkgeyB2YXIgZSA9IHdpbmRvdywgbiA9IG5hdmlnYXRvciwgdCA9IGUuQ1NTLCByID0gZS5IVE1MQnV0dG9uRWxlbWVudDsgcmV0dXJuIG0oWyEoImdldFN0b3JhZ2VVcGRhdGVzIiBpbiBuKSwgciAmJiAicG9wb3ZlciIgaW4gci5wcm90b3R5cGUsICJDU1NDb3VudGVyU3R5bGVSdWxlIiBpbiBlLCB0LnN1cHBvcnRzKCJmb250LXNpemUtYWRqdXN0OiBleC1oZWlnaHQgMC41IiksIHQuc3VwcG9ydHMoInRleHQtdHJhbnNmb3JtOiBmdWxsLXdpZHRoIildKSA+PSA0IH0gZnVuY3Rpb24gSCgpIHsgdmFyIGUgPSBkb2N1bWVudDsgcmV0dXJuIGUuZnVsbHNjcmVlbkVsZW1lbnQgfHwgZS5tc0Z1bGxzY3JlZW5FbGVtZW50IHx8IGUubW96RnVsbFNjcmVlbkVsZW1lbnQgfHwgZS53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCB8fCBudWxsIH0gZnVuY3Rpb24gQSgpIHsgdmFyIGUgPSBZKCksIG4gPSBQKCksIHQgPSB3aW5kb3csIHIgPSBuYXZpZ2F0b3IsIG8gPSAiY29ubmVjdGlvbiI7IHJldHVybiBlID8gbShbISgiU2hhcmVkV29ya2VyIiBpbiB0KSwgcltvXSAmJiAib250eXBlY2hhbmdlIiBpbiByW29dLCAhKCJzaW5rSWQiIGluIG5ldyBBdWRpbyldKSA+PSAyIDogISFuICYmIG0oWyJvbm9yaWVudGF0aW9uY2hhbmdlIiBpbiB0LCAib3JpZW50YXRpb24iIGluIHQsIC9hbmRyb2lkL2kudGVzdChyLmFwcFZlcnNpb24pXSkgPj0gMiB9IGZ1bmN0aW9uIE4oKSB7IHZhciBlID0gbmF2aWdhdG9yLCBuID0gd2luZG93LCB0ID0gQXVkaW8ucHJvdG90eXBlLCByID0gbi52aXN1YWxWaWV3cG9ydDsgcmV0dXJuIG0oWyJzckxhdGVuY3kiIGluIHQsICJzckNoYW5uZWxDb3VudCIgaW4gdCwgImRldmljZVBvc3R1cmUiIGluIGUsIHIgJiYgInNlZ21lbnRzIiBpbiByLCAiZ2V0VGV4dEluZm9ybWF0aW9uIiBpbiBJbWFnZS5wcm90b3R5cGVdKSA+PSAzIH0gZnVuY3Rpb24gSigpIHsgdmFyIGUgPSB3aW5kb3csIG4gPSBlLk9mZmxpbmVBdWRpb0NvbnRleHQgfHwgZS53ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0OyBpZiAoIW4pIHJldHVybiAtMjsgaWYgKEMoKSAmJiAhaigpICYmICFmdW5jdGlvbiAoKSB7IHZhciBlID0gd2luZG93OyByZXR1cm4gbShbIkRPTVJlY3RMaXN0IiBpbiBlLCAiUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCIgaW4gZSwgIlNWR0dlb21ldHJ5RWxlbWVudCIgaW4gZSwgIm9udHJhbnNpdGlvbmNhbmNlbCIgaW4gZV0pID49IDMgfSgpKSByZXR1cm4gLTE7IHZhciB0ID0gbmV3IG4oMSwgNWUzLCA0NDEwMCksIHIgPSB0LmNyZWF0ZU9zY2lsbGF0b3IoKTsgci50eXBlID0gInRyaWFuZ2xlIiwgci5mcmVxdWVuY3kudmFsdWUgPSAxZTQ7IHZhciBvID0gdC5jcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsgby50aHJlc2hvbGQudmFsdWUgPSAtNTAsIG8ua25lZS52YWx1ZSA9IDQwLCBvLnJhdGlvLnZhbHVlID0gMTIsIG8uYXR0YWNrLnZhbHVlID0gMCwgby5yZWxlYXNlLnZhbHVlID0gLjI1LCByLmNvbm5lY3QobyksIG8uY29ubmVjdCh0LmRlc3RpbmF0aW9uKSwgci5zdGFydCgwKTsgdmFyIGkgPSBmdW5jdGlvbiAoZSkgeyB2YXIgbiA9IDMsIHQgPSA1MDAsIHIgPSA1MDAsIG8gPSA1ZTMsIGkgPSBmdW5jdGlvbiAoKSB7IH07IHJldHVybiBbbmV3IFByb21pc2UoKGZ1bmN0aW9uIChjLCB1KSB7IHZhciBzID0gITEsIGQgPSAwLCBmID0gMDsgZS5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGMoZS5yZW5kZXJlZEJ1ZmZlcikgfTsgdmFyIG0gPSBmdW5jdGlvbiAoKSB7IHNldFRpbWVvdXQoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHUoVCgidGltZW91dCIpKSB9KSwgTWF0aC5taW4ociwgZiArIG8gLSBEYXRlLm5vdygpKSkgfSwgdiA9IGZ1bmN0aW9uICgpIHsgdHJ5IHsgdmFyIHIgPSBlLnN0YXJ0UmVuZGVyaW5nKCk7IHN3aXRjaCAoYShyKSAmJiBsKHIpLCBlLnN0YXRlKSB7IGNhc2UgInJ1bm5pbmciOiBmID0gRGF0ZS5ub3coKSwgcyAmJiBtKCk7IGJyZWFrOyBjYXNlICJzdXNwZW5kZWQiOiBkb2N1bWVudC5oaWRkZW4gfHwgZCsrLCBzICYmIGQgPj0gbiA/IHUoVCgic3VzcGVuZGVkIikpIDogc2V0VGltZW91dCh2LCB0KSB9IH0gY2F0Y2ggKG8pIHsgdShvKSB9IH07IHYoKSwgaSA9IGZ1bmN0aW9uICgpIHsgcyB8fCAocyA9ICEwLCBmID4gMCAmJiBtKCkpIH0gfSkpLCBpXSB9KHQpLCBjID0gaVswXSwgdSA9IGlbMV0sIHMgPSBsKGMudGhlbigoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGZ1bmN0aW9uIChlKSB7IGZvciAodmFyIG4gPSAwLCB0ID0gMDsgdCA8IGUubGVuZ3RoOyArK3QpbiArPSBNYXRoLmFicyhlW3RdKTsgcmV0dXJuIG4gfShlLmdldENoYW5uZWxEYXRhKDApLnN1YmFycmF5KDQ1MDApKSB9KSwgKGZ1bmN0aW9uIChlKSB7IGlmICgidGltZW91dCIgPT09IGUubmFtZSB8fCAic3VzcGVuZGVkIiA9PT0gZS5uYW1lKSByZXR1cm4gLTM7IHRocm93IGUgfSkpKTsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHUoKSwgcyB9IH0gZnVuY3Rpb24gVChlKSB7IHZhciBuID0gbmV3IEVycm9yKGUpOyByZXR1cm4gbi5uYW1lID0gZSwgbiB9IGZ1bmN0aW9uIEQoZSwgbiwgbykgeyB2YXIgYSwgYywgdTsgcmV0dXJuIHZvaWQgMCA9PT0gbyAmJiAobyA9IDUwKSwgdCh0aGlzLCB2b2lkIDAsIHZvaWQgMCwgKGZ1bmN0aW9uICgpIHsgdmFyIHQsIGw7IHJldHVybiByKHRoaXMsIChmdW5jdGlvbiAocikgeyBzd2l0Y2ggKHIubGFiZWwpIHsgY2FzZSAwOiB0ID0gZG9jdW1lbnQsIHIubGFiZWwgPSAxOyBjYXNlIDE6IHJldHVybiB0LmJvZHkgPyBbMywgM10gOiBbNCwgaShvKV07IGNhc2UgMjogcmV0dXJuIHIuc2VudCgpLCBbMywgMV07IGNhc2UgMzogbCA9IHQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIiksIHIubGFiZWwgPSA0OyBjYXNlIDQ6IHJldHVybiByLnRyeXMucHVzaChbNCwgLCAxMCwgMTFdKSwgWzQsIG5ldyBQcm9taXNlKChmdW5jdGlvbiAoZSwgcikgeyB2YXIgbyA9ICExLCBpID0gZnVuY3Rpb24gKCkgeyBvID0gITAsIGUoKSB9OyBsLm9ubG9hZCA9IGksIGwub25lcnJvciA9IGZ1bmN0aW9uIChlKSB7IG8gPSAhMCwgcihlKSB9OyB2YXIgYSA9IGwuc3R5bGU7IGEuc2V0UHJvcGVydHkoImRpc3BsYXkiLCAiYmxvY2siLCAiaW1wb3J0YW50IiksIGEucG9zaXRpb24gPSAiYWJzb2x1dGUiLCBhLnRvcCA9ICIwIiwgYS5sZWZ0ID0gIjAiLCBhLnZpc2liaWxpdHkgPSAiaGlkZGVuIiwgbiAmJiAic3JjZG9jIiBpbiBsID8gbC5zcmNkb2MgPSBuIDogbC5zcmMgPSAiYWJvdXQ6YmxhbmsiLCB0LmJvZHkuYXBwZW5kQ2hpbGQobCk7IHZhciBjID0gZnVuY3Rpb24gKCkgeyB2YXIgZSwgbjsgbyB8fCAoImNvbXBsZXRlIiA9PT0gKG51bGwgPT09IChuID0gbnVsbCA9PT0gKGUgPSBsLmNvbnRlbnRXaW5kb3cpIHx8IHZvaWQgMCA9PT0gZSA/IHZvaWQgMCA6IGUuZG9jdW1lbnQpIHx8IHZvaWQgMCA9PT0gbiA/IHZvaWQgMCA6IG4ucmVhZHlTdGF0ZSkgPyBpKCkgOiBzZXRUaW1lb3V0KGMsIDEwKSkgfTsgYygpIH0pKV07IGNhc2UgNTogci5zZW50KCksIHIubGFiZWwgPSA2OyBjYXNlIDY6IHJldHVybiAobnVsbCA9PT0gKGMgPSBudWxsID09PSAoYSA9IGwuY29udGVudFdpbmRvdykgfHwgdm9pZCAwID09PSBhID8gdm9pZCAwIDogYS5kb2N1bWVudCkgfHwgdm9pZCAwID09PSBjID8gdm9pZCAwIDogYy5ib2R5KSA/IFszLCA4XSA6IFs0LCBpKG8pXTsgY2FzZSA3OiByZXR1cm4gci5zZW50KCksIFszLCA2XTsgY2FzZSA4OiByZXR1cm4gWzQsIGUobCwgbC5jb250ZW50V2luZG93KV07IGNhc2UgOTogcmV0dXJuIFsyLCByLnNlbnQoKV07IGNhc2UgMTA6IHJldHVybiBudWxsID09PSAodSA9IGwucGFyZW50Tm9kZSkgfHwgdm9pZCAwID09PSB1IHx8IHUucmVtb3ZlQ2hpbGQobCksIFs3XTsgY2FzZSAxMTogcmV0dXJuIFsyXSB9IH0pKSB9KSkgfSBmdW5jdGlvbiBfKGUpIHsgZm9yICh2YXIgbiA9IGZ1bmN0aW9uIChlKSB7IGZvciAodmFyIG4sIHQsIHIgPSAiVW5leHBlY3RlZCBzeW50YXggJyIuY29uY2F0KGUsICInIiksIG8gPSAvXlxzKihbYS16LV0qKSguKikkL2kuZXhlYyhlKSwgaSA9IG9bMV0gfHwgdm9pZCAwLCBhID0ge30sIGMgPSAvKFsuOiNdW1x3LV0rfFxbLis/XF0pL2dpLCB1ID0gZnVuY3Rpb24gKGUsIG4pIHsgYVtlXSA9IGFbZV0gfHwgW10sIGFbZV0ucHVzaChuKSB9OyA7KSB7IHZhciBsID0gYy5leGVjKG9bMl0pOyBpZiAoIWwpIGJyZWFrOyB2YXIgcyA9IGxbMF07IHN3aXRjaCAoc1swXSkgeyBjYXNlICIuIjogdSgiY2xhc3MiLCBzLnNsaWNlKDEpKTsgYnJlYWs7IGNhc2UgIiMiOiB1KCJpZCIsIHMuc2xpY2UoMSkpOyBicmVhazsgY2FzZSAiWyI6IHZhciBkID0gL15cWyhbXHctXSspKFt+fF4kKl0/PSgiKC4qPykifChbXHctXSspKSk/KFxzK1tpc10pP1xdJC8uZXhlYyhzKTsgaWYgKCFkKSB0aHJvdyBuZXcgRXJyb3Iocik7IHUoZFsxXSwgbnVsbCAhPT0gKHQgPSBudWxsICE9PSAobiA9IGRbNF0pICYmIHZvaWQgMCAhPT0gbiA/IG4gOiBkWzVdKSAmJiB2b2lkIDAgIT09IHQgPyB0IDogIiIpOyBicmVhazsgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKHIpIH0gfSByZXR1cm4gW2ksIGFdIH0oZSksIHQgPSBuWzBdLCByID0gblsxXSwgbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobnVsbCAhPSB0ID8gdCA6ICJkaXYiKSwgaSA9IDAsIGEgPSBPYmplY3Qua2V5cyhyKTsgaSA8IGEubGVuZ3RoOyBpKyspIHsgdmFyIGMgPSBhW2ldLCB1ID0gcltjXS5qb2luKCIgIik7ICJzdHlsZSIgPT09IGMgPyB6KG8uc3R5bGUsIHUpIDogby5zZXRBdHRyaWJ1dGUoYywgdSkgfSByZXR1cm4gbyB9IGZ1bmN0aW9uIHooZSwgbikgeyBmb3IgKHZhciB0ID0gMCwgciA9IG4uc3BsaXQoIjsiKTsgdCA8IHIubGVuZ3RoOyB0KyspIHsgdmFyIG8gPSByW3RdLCBpID0gL15ccyooW1x3LV0rKVxzKjpccyooLis/KShccyohKFtcdy1dKykpP1xzKiQvLmV4ZWMobyk7IGlmIChpKSB7IHZhciBhID0gaVsxXSwgYyA9IGlbMl0sIHUgPSBpWzRdOyBlLnNldFByb3BlcnR5KGEsIGMsIHUgfHwgIiIpIH0gfSB9IHZhciBCID0gWyJtb25vc3BhY2UiLCAic2Fucy1zZXJpZiIsICJzZXJpZiJdLCBPID0gWyJzYW5zLXNlcmlmLXRoaW4iLCAiQVJOTyBQUk8iLCAiQWdlbmN5IEZCIiwgIkFyYWJpYyBUeXBlc2V0dGluZyIsICJBcmlhbCBVbmljb2RlIE1TIiwgIkF2YW50R2FyZGUgQmsgQlQiLCAiQmFua0dvdGhpYyBNZCBCVCIsICJCYXRhbmciLCAiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vIiwgIkNhbGlicmkiLCAiQ2VudHVyeSIsICJDZW50dXJ5IEdvdGhpYyIsICJDbGFyZW5kb24iLCAiRVVST1NUSUxFIiwgIkZyYW5rbGluIEdvdGhpYyIsICJGdXR1cmEgQmsgQlQiLCAiRnV0dXJhIE1kIEJUIiwgIkdPVEhBTSIsICJHaWxsIFNhbnMiLCAiSEVMViIsICJIYWV0dGVuc2Nod2VpbGVyIiwgIkhlbHZldGljYSBOZXVlIiwgIkh1bWFuc3Q1MjEgQlQiLCAiTGVlbGF3YWRlZSIsICJMZXR0ZXIgR290aGljIiwgIkxldmVuaW0gTVQiLCAiTHVjaWRhIEJyaWdodCIsICJMdWNpZGEgU2FucyIsICJNZW5sbyIsICJNUyBNaW5jaG8iLCAiTVMgT3V0bG9vayIsICJNUyBSZWZlcmVuY2UgU3BlY2lhbHR5IiwgIk1TIFVJIEdvdGhpYyIsICJNVCBFeHRyYSIsICJNWVJJQUQgUFJPIiwgIk1hcmxldHQiLCAiTWVpcnlvIFVJIiwgIk1pY3Jvc29mdCBVaWdodXIiLCAiTWluaW9uIFBybyIsICJNb25vdHlwZSBDb3JzaXZhIiwgIlBNaW5nTGlVIiwgIlByaXN0aW5hIiwgIlNDUklQVElOQSIsICJTZWdvZSBVSSBMaWdodCIsICJTZXJpZmEiLCAiU2ltSGVpIiwgIlNtYWxsIEZvbnRzIiwgIlN0YWNjYXRvMjIyIEJUIiwgIlRSQUpBTiBQUk8iLCAiVW5pdmVycyBDRSA1NSBNZWRpdW0iLCAiVnJpbmRhIiwgIlpXQWRvYmVGIl07IGZ1bmN0aW9uIFUoZSkgeyB2YXIgbiwgdCwgciwgbyA9ICExLCBpID0gZnVuY3Rpb24gKCkgeyB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOyByZXR1cm4gZS53aWR0aCA9IDEsIGUuaGVpZ2h0ID0gMSwgW2UsIGUuZ2V0Q29udGV4dCgiMmQiKV0gfSgpLCBhID0gaVswXSwgYyA9IGlbMV07IHJldHVybiAhZnVuY3Rpb24gKGUsIG4pIHsgcmV0dXJuICEoIW4gfHwgIWUudG9EYXRhVVJMKSB9KGEsIGMpID8gdCA9IHIgPSAidW5zdXBwb3J0ZWQiIDogKG8gPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5yZWN0KDAsIDAsIDEwLCAxMCksIGUucmVjdCgyLCAyLCA2LCA2KSwgIWUuaXNQb2ludEluUGF0aCg1LCA1LCAiZXZlbm9kZCIpIH0oYyksIGUgPyB0ID0gciA9ICJza2lwcGVkIiA6IChuID0gZnVuY3Rpb24gKGUsIG4pIHsgIWZ1bmN0aW9uIChlLCBuKSB7IGUud2lkdGggPSAyNDAsIGUuaGVpZ2h0ID0gNjAsIG4udGV4dEJhc2VsaW5lID0gImFscGhhYmV0aWMiLCBuLmZpbGxTdHlsZSA9ICIjZjYwIiwgbi5maWxsUmVjdCgxMDAsIDEsIDYyLCAyMCksIG4uZmlsbFN0eWxlID0gIiMwNjkiLCBuLmZvbnQgPSAnMTFwdCAiVGltZXMgTmV3IFJvbWFuIic7IHZhciB0ID0gIkN3bSBmam9yZGJhbmsgZ2x5ICIuY29uY2F0KFN0cmluZy5mcm9tQ2hhckNvZGUoNTUzNTcsIDU2ODM1KSk7IG4uZmlsbFRleHQodCwgMiwgMTUpLCBuLmZpbGxTdHlsZSA9ICJyZ2JhKDEwMiwgMjA0LCAwLCAwLjIpIiwgbi5mb250ID0gIjE4cHQgQXJpYWwiLCBuLmZpbGxUZXh0KHQsIDQsIDQ1KSB9KGUsIG4pOyB2YXIgdCA9IFEoZSksIHIgPSBRKGUpOyBpZiAodCAhPT0gcikgcmV0dXJuIFsidW5zdGFibGUiLCAidW5zdGFibGUiXTsgcmV0dXJuIGZ1bmN0aW9uIChlLCBuKSB7IGUud2lkdGggPSAxMjIsIGUuaGVpZ2h0ID0gMTEwLCBuLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICJtdWx0aXBseSI7IGZvciAodmFyIHQgPSAwLCByID0gW1siI2YyZiIsIDQwLCA0MF0sIFsiIzJmZiIsIDgwLCA0MF0sIFsiI2ZmMiIsIDYwLCA4MF1dOyB0IDwgci5sZW5ndGg7IHQrKykgeyB2YXIgbyA9IHJbdF0sIGkgPSBvWzBdLCBhID0gb1sxXSwgYyA9IG9bMl07IG4uZmlsbFN0eWxlID0gaSwgbi5iZWdpblBhdGgoKSwgbi5hcmMoYSwgYywgNDAsIDAsIDIgKiBNYXRoLlBJLCAhMCksIG4uY2xvc2VQYXRoKCksIG4uZmlsbCgpIH0gbi5maWxsU3R5bGUgPSAiI2Y5YyIsIG4uYXJjKDYwLCA2MCwgNjAsIDAsIDIgKiBNYXRoLlBJLCAhMCksIG4uYXJjKDYwLCA2MCwgMjAsIDAsIDIgKiBNYXRoLlBJLCAhMCksIG4uZmlsbCgiZXZlbm9kZCIpIH0oZSwgbiksIFtRKGUpLCB0XSB9KGEsIGMpLCB0ID0gblswXSwgciA9IG5bMV0pKSwgeyB3aW5kaW5nOiBvLCBnZW9tZXRyeTogdCwgdGV4dDogciB9IH0gZnVuY3Rpb24gUShlKSB7IHJldHVybiBlLnRvRGF0YVVSTCgpIH0gZnVuY3Rpb24gSygpIHsgdmFyIGUgPSBzY3JlZW4sIG4gPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZihzKGUpLCBudWxsKSB9LCB0ID0gW24oZS53aWR0aCksIG4oZS5oZWlnaHQpXTsgcmV0dXJuIHQuc29ydCgpLnJldmVyc2UoKSwgdCB9IHZhciBxLCAkOyBmdW5jdGlvbiBlZSgpIHsgdmFyIGUgPSB0aGlzOyByZXR1cm4gZnVuY3Rpb24gKCkgeyBpZiAodm9pZCAwID09PSAkKSB7IHZhciBlID0gZnVuY3Rpb24gKCkgeyB2YXIgbiA9IG5lKCk7IHRlKG4pID8gJCA9IHNldFRpbWVvdXQoZSwgMjUwMCkgOiAocSA9IG4sICQgPSB2b2lkIDApIH07IGUoKSB9IH0oKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdChlLCB2b2lkIDAsIHZvaWQgMCwgKGZ1bmN0aW9uICgpIHsgdmFyIGU7IHJldHVybiByKHRoaXMsIChmdW5jdGlvbiAobikgeyBzd2l0Y2ggKG4ubGFiZWwpIHsgY2FzZSAwOiByZXR1cm4gdGUoZSA9IG5lKCkpID8gcSA/IFsyLCBvKFtdLCBxLCAhMCldIDogSCgpID8gWzQsICh0ID0gZG9jdW1lbnQsICh0LmV4aXRGdWxsc2NyZWVuIHx8IHQubXNFeGl0RnVsbHNjcmVlbiB8fCB0Lm1vekNhbmNlbEZ1bGxTY3JlZW4gfHwgdC53ZWJraXRFeGl0RnVsbHNjcmVlbikuY2FsbCh0KSldIDogWzMsIDJdIDogWzMsIDJdOyBjYXNlIDE6IG4uc2VudCgpLCBlID0gbmUoKSwgbi5sYWJlbCA9IDI7IGNhc2UgMjogcmV0dXJuIHRlKGUpIHx8IChxID0gZSksIFsyLCBlXSB9dmFyIHQgfSkpIH0pKSB9IH0gZnVuY3Rpb24gbmUoKSB7IHZhciBlID0gc2NyZWVuOyByZXR1cm4gW2YoZChlLmF2YWlsVG9wKSwgbnVsbCksIGYoZChlLndpZHRoKSAtIGQoZS5hdmFpbFdpZHRoKSAtIGYoZChlLmF2YWlsTGVmdCksIDApLCBudWxsKSwgZihkKGUuaGVpZ2h0KSAtIGQoZS5hdmFpbEhlaWdodCkgLSBmKGQoZS5hdmFpbFRvcCksIDApLCBudWxsKSwgZihkKGUuYXZhaWxMZWZ0KSwgbnVsbCldIH0gZnVuY3Rpb24gdGUoZSkgeyBmb3IgKHZhciBuID0gMDsgbiA8IDQ7ICsrbilpZiAoZVtuXSkgcmV0dXJuICExOyByZXR1cm4gITAgfSBmdW5jdGlvbiByZShlKSB7IHZhciBuOyByZXR1cm4gdCh0aGlzLCB2b2lkIDAsIHZvaWQgMCwgKGZ1bmN0aW9uICgpIHsgdmFyIHQsIG8sIGEsIGMsIHUsIGwsIHM7IHJldHVybiByKHRoaXMsIChmdW5jdGlvbiAocikgeyBzd2l0Y2ggKHIubGFiZWwpIHsgY2FzZSAwOiBmb3IgKHQgPSBkb2N1bWVudCwgbyA9IHQuY3JlYXRlRWxlbWVudCgiZGl2IiksIGEgPSBuZXcgQXJyYXkoZS5sZW5ndGgpLCBjID0ge30sIG9lKG8pLCBzID0gMDsgcyA8IGUubGVuZ3RoOyArK3MpIkRJQUxPRyIgPT09ICh1ID0gXyhlW3NdKSkudGFnTmFtZSAmJiB1LnNob3coKSwgb2UobCA9IHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLCBsLmFwcGVuZENoaWxkKHUpLCBvLmFwcGVuZENoaWxkKGwpLCBhW3NdID0gdTsgci5sYWJlbCA9IDE7IGNhc2UgMTogcmV0dXJuIHQuYm9keSA/IFszLCAzXSA6IFs0LCBpKDUwKV07IGNhc2UgMjogcmV0dXJuIHIuc2VudCgpLCBbMywgMV07IGNhc2UgMzogdC5ib2R5LmFwcGVuZENoaWxkKG8pOyB0cnkgeyBmb3IgKHMgPSAwOyBzIDwgZS5sZW5ndGg7ICsrcylhW3NdLm9mZnNldFBhcmVudCB8fCAoY1tlW3NdXSA9ICEwKSB9IGZpbmFsbHkgeyBudWxsID09PSAobiA9IG8ucGFyZW50Tm9kZSkgfHwgdm9pZCAwID09PSBuIHx8IG4ucmVtb3ZlQ2hpbGQobykgfSByZXR1cm4gWzIsIGNdIH0gfSkpIH0pKSB9IGZ1bmN0aW9uIG9lKGUpIHsgZS5zdHlsZS5zZXRQcm9wZXJ0eSgidmlzaWJpbGl0eSIsICJoaWRkZW4iLCAiaW1wb3J0YW50IiksIGUuc3R5bGUuc2V0UHJvcGVydHkoImRpc3BsYXkiLCAiYmxvY2siLCAiaW1wb3J0YW50IikgfSBmdW5jdGlvbiBpZShlKSB7IHJldHVybiBtYXRjaE1lZGlhKCIoaW52ZXJ0ZWQtY29sb3JzOiAiLmNvbmNhdChlLCAiKSIpKS5tYXRjaGVzIH0gZnVuY3Rpb24gYWUoZSkgeyByZXR1cm4gbWF0Y2hNZWRpYSgiKGZvcmNlZC1jb2xvcnM6ICIuY29uY2F0KGUsICIpIikpLm1hdGNoZXMgfSBmdW5jdGlvbiBjZShlKSB7IHJldHVybiBtYXRjaE1lZGlhKCIocHJlZmVycy1jb250cmFzdDogIi5jb25jYXQoZSwgIikiKSkubWF0Y2hlcyB9IGZ1bmN0aW9uIHVlKGUpIHsgcmV0dXJuIG1hdGNoTWVkaWEoIihwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiAiLmNvbmNhdChlLCAiKSIpKS5tYXRjaGVzIH0gZnVuY3Rpb24gbGUoZSkgeyByZXR1cm4gbWF0Y2hNZWRpYSgiKHByZWZlcnMtcmVkdWNlZC10cmFuc3BhcmVuY3k6ICIuY29uY2F0KGUsICIpIikpLm1hdGNoZXMgfSBmdW5jdGlvbiBzZShlKSB7IHJldHVybiBtYXRjaE1lZGlhKCIoZHluYW1pYy1yYW5nZTogIi5jb25jYXQoZSwgIikiKSkubWF0Y2hlcyB9IHZhciBkZSA9IE1hdGgsIGZlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMCB9OyB2YXIgbWUgPSB7IGRlZmF1bHQ6IFtdLCBhcHBsZTogW3sgZm9udDogIi1hcHBsZS1zeXN0ZW0tYm9keSIgfV0sIHNlcmlmOiBbeyBmb250RmFtaWx5OiAic2VyaWYiIH1dLCBzYW5zOiBbeyBmb250RmFtaWx5OiAic2Fucy1zZXJpZiIgfV0sIG1vbm86IFt7IGZvbnRGYW1pbHk6ICJtb25vc3BhY2UiIH1dLCBtaW46IFt7IGZvbnRTaXplOiAiMXB4IiB9XSwgc3lzdGVtOiBbeyBmb250RmFtaWx5OiAic3lzdGVtLXVpIiB9XSB9OyB2YXIgdmUgPSBmdW5jdGlvbiAoKSB7IGZvciAodmFyIGUgPSB3aW5kb3c7IDspIHsgdmFyIG4gPSBlLnBhcmVudDsgaWYgKCFuIHx8IG4gPT09IGUpIHJldHVybiAhMTsgdHJ5IHsgaWYgKG4ubG9jYXRpb24ub3JpZ2luICE9PSBlLmxvY2F0aW9uLm9yaWdpbikgcmV0dXJuICEwIH0gY2F0Y2ggKHQpIHsgaWYgKHQgaW5zdGFuY2VvZiBFcnJvciAmJiAiU2VjdXJpdHlFcnJvciIgPT09IHQubmFtZSkgcmV0dXJuICEwOyB0aHJvdyB0IH0gZSA9IG4gfSB9OyB2YXIgaGUgPSBuZXcgU2V0KFsxMDc1MiwgMjg0OSwgMjg4NCwgMjg4NSwgMjg4NiwgMjkyOCwgMjkyOSwgMjkzMCwgMjkzMSwgMjkzMiwgMjk2MCwgMjk2MSwgMjk2MiwgMjk2MywgMjk2NCwgMjk2NSwgMjk2NiwgMjk2NywgMjk2OCwgMjk3OCwgMzAyNCwgMzA0MiwgMzA4OCwgMzA4OSwgMzEwNiwgMzEwNywgMzI3NzMsIDMyNzc3LCAzMjc3NywgMzI4MjMsIDMyODI0LCAzMjkzNiwgMzI5MzcsIDMyOTM4LCAzMjkzOSwgMzI5NjgsIDMyOTY5LCAzMjk3MCwgMzI5NzEsIDMzMTcsIDMzMTcwLCAzMzMzLCAzMzc5LCAzMzg2LCAzMzkwMSwgMzM5MDIsIDM0MDE2LCAzNDAyNCwgMzQwNzYsIDM0MDgsIDM0MTAsIDM0MTEsIDM0MTIsIDM0MTMsIDM0MTQsIDM0MTUsIDM0NDY3LCAzNDgxNiwgMzQ4MTcsIDM0ODE4LCAzNDgxOSwgMzQ4NzcsIDM0OTIxLCAzNDkzMCwgMzU2NjAsIDM1NjYxLCAzNTcyNCwgMzU3MzgsIDM1NzM5LCAzNjAwMywgMzYwMDQsIDM2MDA1LCAzNjM0NywgMzYzNDgsIDM2MzQ5LCAzNzQ0MCwgMzc0NDEsIDM3NDQzLCA3OTM2LCA3OTM3LCA3OTM4XSksIHBlID0gbmV3IFNldChbMzQwNDcsIDM1NzIzLCAzNjA2MywgMzQ4NTIsIDM0ODUzLCAzNDg1NCwgMzQyMjksIDM2MzkyLCAzNjc5NSwgMzg0NDldKSwgYmUgPSBbIkZSQUdNRU5UX1NIQURFUiIsICJWRVJURVhfU0hBREVSIl0sIHllID0gWyJMT1dfRkxPQVQiLCAiTUVESVVNX0ZMT0FUIiwgIkhJR0hfRkxPQVQiLCAiTE9XX0lOVCIsICJNRURJVU1fSU5UIiwgIkhJR0hfSU5UIl0sIGdlID0gIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iOyBmdW5jdGlvbiB3ZShlKSB7IGlmIChlLndlYmdsKSByZXR1cm4gZS53ZWJnbC5jb250ZXh0OyB2YXIgbiwgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOyB0LmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsQ3JlYXRlQ29udGV4dEVycm9yIiwgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG4gPSB2b2lkIDAgfSkpOyBmb3IgKHZhciByID0gMCwgbyA9IFsid2ViZ2wiLCAiZXhwZXJpbWVudGFsLXdlYmdsIl07IHIgPCBvLmxlbmd0aDsgcisrKSB7IHZhciBpID0gb1tyXTsgdHJ5IHsgbiA9IHQuZ2V0Q29udGV4dChpKSB9IGNhdGNoIChhKSB7IH0gaWYgKG4pIGJyZWFrIH0gcmV0dXJuIGUud2ViZ2wgPSB7IGNvbnRleHQ6IG4gfSwgbiB9IGZ1bmN0aW9uIExlKGUsIG4sIHQpIHsgdmFyIHIgPSBlLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChlW25dLCBlW3RdKTsgcmV0dXJuIHIgPyBbci5yYW5nZU1pbiwgci5yYW5nZU1heCwgci5wcmVjaXNpb25dIDogW10gfSBmdW5jdGlvbiBrZShlKSB7IHJldHVybiBPYmplY3Qua2V5cyhlLl9fcHJvdG9fXykuZmlsdGVyKFZlKSB9IGZ1bmN0aW9uIFZlKGUpIHsgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiBlICYmICFlLm1hdGNoKC9bXkEtWjAtOV94XS8pIH0gZnVuY3Rpb24gU2UoKSB7IHJldHVybiBQKCkgfSBmdW5jdGlvbiBXZShlKSB7IHJldHVybiAiZnVuY3Rpb24iID09IHR5cGVvZiBlLmdldFBhcmFtZXRlciB9IHZhciB4ZSA9IHsgZm9udHM6IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzOyByZXR1cm4gRCgoZnVuY3Rpb24gKG4sIG8pIHsgdmFyIGkgPSBvLmRvY3VtZW50OyByZXR1cm4gdChlLCB2b2lkIDAsIHZvaWQgMCwgKGZ1bmN0aW9uICgpIHsgdmFyIGUsIG4sIHQsIG8sIGEsIGMsIHUsIGwsIHMsIGQsIGY7IHJldHVybiByKHRoaXMsIChmdW5jdGlvbiAocikgeyBmb3IgKChlID0gaS5ib2R5KS5zdHlsZS5mb250U2l6ZSA9ICI0OHB4IiwgKG4gPSBpLmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5zdHlsZS5zZXRQcm9wZXJ0eSgidmlzaWJpbGl0eSIsICJoaWRkZW4iLCAiaW1wb3J0YW50IiksIHQgPSB7fSwgbyA9IHt9LCBhID0gZnVuY3Rpb24gKGUpIHsgdmFyIHQgPSBpLmNyZWF0ZUVsZW1lbnQoInNwYW4iKSwgciA9IHQuc3R5bGU7IHJldHVybiByLnBvc2l0aW9uID0gImFic29sdXRlIiwgci50b3AgPSAiMCIsIHIubGVmdCA9ICIwIiwgci5mb250RmFtaWx5ID0gZSwgdC50ZXh0Q29udGVudCA9ICJtbU13V0xsaUkwTyYxIiwgbi5hcHBlbmRDaGlsZCh0KSwgdCB9LCBjID0gZnVuY3Rpb24gKGUsIG4pIHsgcmV0dXJuIGEoIiciLmNvbmNhdChlLCAiJywiKS5jb25jYXQobikpIH0sIHUgPSBmdW5jdGlvbiAoKSB7IGZvciAodmFyIGUgPSB7fSwgbiA9IGZ1bmN0aW9uIChuKSB7IGVbbl0gPSBCLm1hcCgoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGMobiwgZSkgfSkpIH0sIHQgPSAwLCByID0gTzsgdCA8IHIubGVuZ3RoOyB0KyspIHsgbihyW3RdKSB9IHJldHVybiBlIH0sIGwgPSBmdW5jdGlvbiAoZSkgeyByZXR1cm4gQi5zb21lKChmdW5jdGlvbiAobiwgcikgeyByZXR1cm4gZVtyXS5vZmZzZXRXaWR0aCAhPT0gdFtuXSB8fCBlW3JdLm9mZnNldEhlaWdodCAhPT0gb1tuXSB9KSkgfSwgcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEIubWFwKGEpIH0oKSwgZCA9IHUoKSwgZS5hcHBlbmRDaGlsZChuKSwgZiA9IDA7IGYgPCBCLmxlbmd0aDsgZisrKXRbQltmXV0gPSBzW2ZdLm9mZnNldFdpZHRoLCBvW0JbZl1dID0gc1tmXS5vZmZzZXRIZWlnaHQ7IHJldHVybiBbMiwgTy5maWx0ZXIoKGZ1bmN0aW9uIChlKSB7IHJldHVybiBsKGRbZV0pIH0pKV0gfSkpIH0pKSB9KSkgfSwgZG9tQmxvY2tlcnM6IGZ1bmN0aW9uIChlKSB7IHZhciBuID0gKHZvaWQgMCA9PT0gZSA/IHt9IDogZSkuZGVidWc7IHJldHVybiB0KHRoaXMsIHZvaWQgMCwgdm9pZCAwLCAoZnVuY3Rpb24gKCkgeyB2YXIgZSwgdCwgbywgaSwgYTsgcmV0dXJuIHIodGhpcywgKGZ1bmN0aW9uIChyKSB7IHN3aXRjaCAoci5sYWJlbCkgeyBjYXNlIDA6IHJldHVybiBDKCkgfHwgQSgpID8gKGMgPSBhdG9iLCBlID0geyBhYnBJbmRvOiBbIiNJa2xhbi1NZWxheWFuZyIsICIjS29sb20tSWtsYW4tNzI4IiwgIiNTaWRlYmFySWtsYW4td3JhcHBlciIsICdbdGl0bGU9IkFMSUVOQk9MQSIgaV0nLCBjKCJJMEp2ZUMxQ1lXNXVaWEl0WVdSeiIpXSwgYWJwdm46IFsiLnF1YW5nY2FvIiwgIiNtb2JpbGVDYXRmaXNoIiwgYygiTG1Oc2IzTmxMV0ZrY3c9PSIpLCAnW2lkXj0iYm5fYm90dG9tX2ZpeGVkXyJdJywgIiNwbWFkdiJdLCBhZEJsb2NrRmlubGFuZDogWyIubWFpbm9zdGlsYSIsIGMoIkxuTndiMjV6YjNKcGRBPT0iKSwgIi55bGFtYWlub3MiLCBjKCJZVnRvY21WbUtqMGlMMk5zYVdOcmRHaHlaMmd1WVhOd1B5SmQiKSwgYygiWVZ0b2NtVm1YajBpYUhSMGNITTZMeTloY0hBdWNtVmhaSEJsWVdzdVkyOXRMMkZrY3lKZCIpXSwgYWRCbG9ja1BlcnNpYW46IFsiI25hdmJhcl9ub3RpY2VfNTAiLCAiLmthZHIiLCAnVEFCTEVbd2lkdGg9IjE0MHB4Il0nLCAiI2RpdkFnYWhpIiwgYygiWVZ0b2NtVm1YajBpYUhSMGNEb3ZMMmN4TG5ZdVpuZHRjbTB1Ym1WMEwyRmtMeUpkIildLCBhZEJsb2NrV2FybmluZ1JlbW92YWw6IFsiI2FkYmxvY2staG9uZXlwb3QiLCAiLmFkYmxvY2tlci1yb290IiwgIi53cF9hZGJsb2NrX2RldGVjdCIsIGMoIkxtaGxZV1JsY2kxaWJHOWphMlZrTFdGayIpLCBjKCJJMkZrWDJKc2IyTnJaWEk9IildLCBhZEd1YXJkQW5ub3lhbmNlczogWyIuaHMtc29zeWFsIiwgIiNjb29raWVjb25zZW50ZGl2IiwgJ2RpdltjbGFzc149ImFwcF9nZHByIl0nLCAiLmFzLW9pbCIsICdbZGF0YS1jeXByZXNzPSJzb2Z0LXB1c2gtbm90aWZpY2F0aW9uLW1vZGFsIl0nXSwgYWRHdWFyZEJhc2U6IFsiLkJldHRlckpzUG9wT3ZlcmxheSIsIGMoIkkyRmtYek13TUZneU5UQT0iKSwgYygiSTJKaGJtNWxjbVpzYjJGME1qST0iKSwgYygiSTJOaGJYQmhhV2R1TFdKaGJtNWxjZz09IiksIGMoIkkwRmtMVU52Ym5SbGJuUT0iKV0sIGFkR3VhcmRDaGluZXNlOiBbYygiTGxwcFgyRmtYMkZmU0E9PSIpLCBjKCJZVnRvY21WbUtqMGlMbWgwYUdKbGRETTBMbU52YlNKZCIpLCAiI3dpZGdldC1xdWFuIiwgYygiWVZ0b2NtVm1LajBpTHpnME9Ua3lNREl3TG5oNWVpSmQiKSwgYygiWVZ0b2NtVm1LajBpTGpFNU5UWm9iQzVqYjIwdklsMD0iKV0sIGFkR3VhcmRGcmVuY2g6IFsiI3BhdmVQdWIiLCBjKCJMbUZrTFdSbGMydDBiM0F0Y21WamRHRnVaMnhsIiksICIubW9iaWxlX2FkaGVzaW9uIiwgIi53aWRnZXRhZHYiLCBjKCJMbUZrYzE5aVlXND0iKV0sIGFkR3VhcmRHZXJtYW46IFsnYXNpZGVbZGF0YS1wb3J0YWwtaWQ9ImxlYWRlcmJvYXJkIl0nXSwgYWRHdWFyZEphcGFuZXNlOiBbIiNrYXVsaV95YWRfMSIsIGMoIllWdG9jbVZtWGowaWFIUjBjRG92TDJGa01pNTBjbUZtWm1saloyRjBaUzV1WlhRdklsMD0iKSwgYygiTGw5d2IzQkpibDlwYm1acGJtbDBaVjloWkE9PSIpLCBjKCJMbUZrWjI5dloyeGwiKSwgYygiTGw5ZmFYTmliMjl6ZEZKbGRIVnlia0ZrIildLCBhZEd1YXJkTW9iaWxlOiBbYygiWVcxd0xXRjFkRzh0WVdSeiIpLCBjKCJMbUZ0Y0Y5aFpBPT0iKSwgJ2FtcC1lbWJlZFt0eXBlPSIyNHNtaSJdJywgIiNtZ2lkX2lmcmFtZTEiLCBjKCJJMkZrWDJsdWRtbGxkMTloY21WaCIpXSwgYWRHdWFyZFJ1c3NpYW46IFtjKCJZVnRvY21WbVhqMGlhSFIwY0hNNkx5OWhaQzVzWlhSdFpXRmtjeTVqYjIwdklsMD0iKSwgYygiTG5KbFkyeGhiV0U9IiksICdkaXZbaWRePSJzbWkyYWRibG9jayJdJywgYygiWkdsMlcybGtYajBpUVdSR2IzaGZZbUZ1Ym1WeVh5SmQiKSwgIiNwc3lkdWNrcG9ja2ViYWxsIl0sIGFkR3VhcmRTb2NpYWw6IFtjKCJZVnRvY21WbVhqMGlMeTkzZDNjdWMzUjFiV0pzWlhWd2IyNHVZMjl0TDNOMVltMXBkRDkxY213OUlsMD0iKSwgYygiWVZ0b2NtVm1YajBpTHk5MFpXeGxaM0poYlM1dFpTOXphR0Z5WlM5MWNtdy9JbDA9IiksICIuZXRzeS10d2VldCIsICIjaW5saW5lU2hhcmUiLCAiLnBvcHVwLXNvY2lhbCJdLCBhZEd1YXJkU3BhbmlzaFBvcnR1Z3Vlc2U6IFsiI2JhcnJhUHVibGljaWRhZGUiLCAiI1B1YmxpY2lkYWRlIiwgIiNwdWJsaUVzcGVjaWFsIiwgIiNxdWVUb29sdGlwIiwgIi5jbnQtcHVibGkiXSwgYWRHdWFyZFRyYWNraW5nUHJvdGVjdGlvbjogWyIjcW9vLWNvdW50ZXIiLCBjKCJZVnRvY21WbVhqMGlhSFIwY0RvdkwyTnNhV05yTG1odmRHeHZaeTV5ZFM4aVhRPT0iKSwgYygiWVZ0b2NtVm1YajBpYUhSMGNEb3ZMMmhwZEdOdmRXNTBaWEl1Y25VdmRHOXdMM04wWVhRdWNHaHdJbDA9IiksIGMoIllWdG9jbVZtWGowaWFIUjBjRG92TDNSdmNDNXRZV2xzTG5KMUwycDFiWEFpWFE9PSIpLCAiI3RvcDEwMGNvdW50ZXIiXSwgYWRHdWFyZFR1cmtpc2g6IFsiI2JhY2trYXBhdCIsIGMoIkkzSmxhMnhoYldrPSIpLCBjKCJZVnRvY21WbVhqMGlhSFIwY0RvdkwyRmtjMlZ5ZGk1dmJuUmxheTVqYjIwdWRISXZJbDA9IiksIGMoIllWdG9jbVZtWGowaWFIUjBjRG92TDJsNmJHVnVlbWt1WTI5dEwyTmhiWEJoYVdkdUx5SmQiKSwgYygiWVZ0b2NtVm1YajBpYUhSMGNEb3ZMM2QzZHk1cGJuTjBZV3hzWVdSekxtNWxkQzhpWFE9PSIpXSwgYnVsZ2FyaWFuOiBbYygiZEdRalpuSmxaVzVsZEY5MFlXSnNaVjloWkhNPSIpLCAiI2VhX2ludGV4dF9kaXYiLCAiLmxhcG5pLXBvcC1vdmVyIiwgIiN4ZW5pdW1faG90X29mZmVycyJdLCBlYXN5TGlzdDogWyIueWItZmxvb3JhZCIsIGMoIkxuZHBaR2RsZEY5d2IxOWhaSE5mZDJsa1oyVjAiKSwgYygiTG5SeVlXWm1hV05xZFc1cmVTMWhaQT09IiksICIudGV4dGFkX2hlYWRsaW5lIiwgYygiTG5Od2IyNXpiM0psWkMxMFpYaDBMV3hwYm10eiIpXSwgZWFzeUxpc3RDaGluYTogW2MoIkxtRndjR2QxYVdSbExYZHlZWEJiYjI1amJHbGpheW85SW1KalpXSnZjeTVqYjIwaVhRPT0iKSwgYygiTG1aeWIyNTBjR0ZuWlVGa2RrMD0iKSwgIiN0YW90YW9sZSIsICIjYWFmb290LnRvcF9ib3giLCAiLmNmYV9wb3B1cCJdLCBlYXN5TGlzdENvb2tpZTogWyIuZXptb2ItZm9vdGVyIiwgIi5jYy1Db29raWVXYXJuaW5nIiwgIltkYXRhLWNvb2tpZS1udW1iZXJdIiwgYygiTG1GM0xXTnZiMnRwWlMxaVlXNXVaWEk9IiksICIuc3lnbmFsMjQtZ2Rwci1tb2RhbC13cmFwIl0sIGVhc3lMaXN0Q3plY2hTbG92YWs6IFsiI29ubGFqbnktc3RpY2tlcnMiLCBjKCJJM0psYTJ4aGJXNXBMV0p2ZUE9PSIpLCBjKCJMbkpsYTJ4aGJXRXRiV1ZuWVdKdllYSmsiKSwgIi5za2xpayIsIGMoIlcybGtYajBpYzJ0c2FXdFNaV3RzWVcxaElsMD0iKV0sIGVhc3lMaXN0RHV0Y2g6IFtjKCJJMkZrZG1WeWRHVnVkR2xsIiksIGMoIkkzWnBjRUZrYldGeWEzUkNZVzV1WlhKQ2JHOWphdz09IiksICIuYWRzdGVrc3QiLCBjKCJZVnRvY21WbVhqMGlhSFIwY0hNNkx5OTRiSFIxWW1VdWJtd3ZZMnhwWTJzdklsMD0iKSwgIiNzZW1pbG8tbHJlY3RhbmdsZSJdLCBlYXN5TGlzdEdlcm1hbnk6IFsiI1NTcG90SU1Qb3BTbGlkZXIiLCBjKCJMbk53YjI1emIzSnNhVzVyWjNKMVpXND0iKSwgYygiSTNkbGNtSjFibWR6YTNrPSIpLCBjKCJJM0psYTJ4aGJXVXRjbVZqYUhSekxXMXBkSFJsIiksIGMoIllWdG9jbVZtWGowaWFIUjBjSE02THk5aVpEYzBNaTVqYjIwdklsMD0iKV0sIGVhc3lMaXN0SXRhbHk6IFtjKCJMbUp2ZUY5aFpIWmZZVzV1ZFc1amFRPT0iKSwgIi5zYi1ib3gtcHViYmxpcmVkYXppb25hbGUiLCBjKCJZVnRvY21WbVhqMGlhSFIwY0RvdkwyRm1abWxzYVdGNmFXOXVhV0ZrY3k1emJtRnBMbWwwTHlKZCIpLCBjKCJZVnRvY21WbVhqMGlhSFIwY0hNNkx5OWhaSE5sY25abGNpNW9kRzFzTG1sMEx5SmQiKSwgYygiWVZ0b2NtVm1YajBpYUhSMGNITTZMeTloWm1acGJHbGhlbWx2Ym1saFpITXVjMjVoYVM1cGRDOGlYUT09IildLCBlYXN5TGlzdExpdGh1YW5pYTogW2MoIkxuSmxhMnhoYlc5elgzUmhjbkJoY3c9PSIpLCBjKCJMbkpsYTJ4aGJXOXpYMjUxYjNKdlpHOXoiKSwgYygiYVcxblcyRnNkRDBpVW1WcmJHRnRhVzVwY3lCemEzbGtaV3hwY3lKZCIpLCBjKCJhVzFuVzJGc2REMGlSR1ZrYVd0MWIzUnBMbXgwSUhObGNuWmxjbWxoYVNKZCIpLCBjKCJhVzFuVzJGc2REMGlTRzl6ZEdsdVoyRnpJRk5sY25abGNtbGhhUzVzZENKZCIpXSwgZXN0b25pYW46IFtjKCJRVnRvY21WbUtqMGlhSFIwY0RvdkwzQmhlVFJ5WlhOMWJIUnpNalF1WlhVaVhRPT0iKV0sIGZhbmJveUFubm95YW5jZXM6IFsiI2FjLWxyZS1wbGF5ZXIiLCAiLm5hdmlnYXRlLXRvLXRvcCIsICIjc3Vic2NyaWJlX3BvcHVwIiwgIi5uZXdzbGV0dGVyX2hvbGRlciIsICIjYmFjay10b3AiXSwgZmFuYm95QW50aUZhY2Vib29rOiBbIi51dGlsLWJhci1tb2R1bGUtZmlyZWZseS12aXNpYmxlIl0sIGZhbmJveUVuaGFuY2VkVHJhY2tlcnM6IFsiLm9wZW4ucHVzaE1vZGFsIiwgIiNpc3N1ZW0tbGVha3ktcGF5d2FsbC1hcnRpY2xlcy16ZXJvLXJlbWFpbmluZy1uYWciLCAiI3NvdnJuX2NvbnRhaW5lciIsICdkaXZbY2xhc3MkPSItaGlkZSJdW3pvb21wYWdlLWZvbnRzaXplXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7Il0nLCAiLkJsb2NrTmFnX19DYXJkIl0sIGZhbmJveVNvY2lhbDogWyIjRm9sbG93VXMiLCAiI21ldGVvcmVkX3NoYXJlIiwgIiNzb2NpYWxfZm9sbG93IiwgIi5hcnRpY2xlLXNoYXJlciIsICIuY29tbXVuaXR5X19zb2NpYWwtZGVzYyJdLCBmcmVsbHdpdFN3ZWRpc2g6IFtjKCJZVnRvY21WbUtqMGlZMkZ6YVc1dmNISnZMbk5sSWwxYmRHRnlaMlYwUFNKZllteGhibXNpWFE9PSIpLCBjKCJZVnRvY21WbUtqMGlaRzlyZEc5eUxYTmxMbTl1Wld4cGJtc3ViV1VpWFE9PSIpLCAiYXJ0aWNsZS5jYXRlZ29yeS1zYW1hcmJldGUiLCBjKCJaR2wyTG1odmJHbGtRV1J6IiksICJ1bC5hZHNtb2Rlcm4iXSwgZ3JlZWtBZEJsb2NrOiBbYygiUVZ0b2NtVm1LajBpWVdSdFlXNHViM1JsYm1WMExtZHlMMk5zYVdOclB5SmQiKSwgYygiUVZ0b2NtVm1LajBpYUhSMGNEb3ZMMkY0YVdGaVlXNXVaWEp6TG1WNGIyUjFjeTVuY2k4aVhRPT0iKSwgYygiUVZ0b2NtVm1LajBpYUhSMGNEb3ZMMmx1ZEdWeVlXTjBhWFpsTG1admNuUm9ibVYwTG1keUwyTnNhV05yUHlKZCIpLCAiRElWLmFnb3JlczMwMCIsICJUQUJMRS5hZHZyaWdodCJdLCBodW5nYXJpYW46IFsiI2NlbXBfZG9ib3oiLCAiLm9wdGltb25rLWlmcmFtZS1jb250YWluZXIiLCBjKCJMbUZrWDE5dFlXbHUiKSwgYygiVzJOc1lYTnpLajBpUjI5dloyeGxRV1J6SWwwPSIpLCAiI2hpcmRldGVzZWtfYm94Il0sIGlEb250Q2FyZUFib3V0Q29va2llczogWycuYWxlcnQtaW5mb1tkYXRhLWJsb2NrLXRyYWNrKj0iQ29va2llTm90aWNlIl0nLCAiLk1vZHVsZVRlbXBsYXRlQ29va2llSW5kaWNhdG9yIiwgIi5vLS1jb29raWVzLS1jb250YWluZXIiLCAiI2Nvb2tpZXMtcG9saWN5LXN0aWNreSIsICIjc3RpY2t5Q29va2llQmFyIl0sIGljZWxhbmRpY0FicDogW2MoIlFWdG9jbVZtWGowaUwyWnlZVzFsZDI5eWF5OXlaWE52ZFhKalpYTXZabTl5YlhNdllXUnpMbUZ6Y0hnaVhRPT0iKV0sIGxhdHZpYW46IFtjKCJZVnRvY21WbVBTSm9kSFJ3T2k4dmQzZDNMbk5oYkdsa2VtbHVhUzVzZGk4aVhWdHpkSGxzWlQwaVpHbHpjR3hoZVRvZ1lteHZZMnM3SUhkcFpIUm9PaUF4TWpCd2VEc2dhR1ZwWjJoME9pQTBNSEI0T3lCdmRtVnlabXh2ZHpvZ2FHbGtaR1Z1T3lCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN0lsMD0iKSwgYygiWVZ0b2NtVm1QU0pvZEhSd09pOHZkM2QzTG5OaGJHbGtlbWx1YVM1c2RpOGlYVnR6ZEhsc1pUMGlaR2x6Y0d4aGVUb2dZbXh2WTJzN0lIZHBaSFJvT2lBNE9IQjRPeUJvWldsbmFIUTZJRE14Y0hnN0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N0lIQnZjMmwwYVc5dU9pQnlaV3hoZEdsMlpUc2lYUT09IildLCBsaXN0S3I6IFtjKCJZVnRvY21WbUtqMGlMeTloWkM1d2JHRnVZbkJzZFhNdVkyOHVhM0l2SWwwPSIpLCBjKCJJMnhwZG1WeVpVRmtWM0poY0hCbGNnPT0iKSwgYygiWVZ0b2NtVm1LajBpTHk5aFpIWXVhVzFoWkhKbGNDNWpieTVyY2k4aVhRPT0iKSwgYygiYVc1ekxtWmhjM1IyYVdWM0xXRmsiKSwgIi5yZXZlbnVlX3VuaXRfaXRlbS5kYWJsZSJdLCBsaXN0ZUFyOiBbYygiTG1kbGJXbHVhVXhDTVVGayIpLCAiLnJpZ2h0LWFuZC1sZWZ0LXNwb25zZXJzIiwgYygiWVZ0b2NtVm1LajBpTG1GbWJHRnRMbWx1Wm04aVhRPT0iKSwgYygiWVZ0b2NtVm1LajBpWW05dmNtRnhMbTl5WnlKZCIpLCBjKCJZVnRvY21WbUtqMGlaSFZpYVhwNmJHVXVZMjl0TDJGeUx6OTFkRzFmYzI5MWNtTmxQU0pkIildLCBsaXN0ZUZyOiBbYygiWVZ0b2NtVm1YajBpYUhSMGNEb3ZMM0J5YjIxdkxuWmhaRzl5TG1OdmJTOGlYUT09IiksIGMoIkkyRmtZMjl1ZEdGcGJtVnlYM0psWTJobGNtTm9aUT09IiksIGMoIllWdG9jbVZtS2owaWQyVmliM0poYldFdVpuSXZabU5uYVMxaWFXNHZJbDA9IiksICIuc2l0ZS1wdWItaW50ZXJzdGl0aWVsIiwgJ2RpdltpZF49ImNydC0iXVtkYXRhLWNyaXRlby1pZF0nXSwgb2ZmaWNpYWxQb2xpc2g6IFsiI2NlbmVvLXBsYWNlaG9sZGVyLWNlbmVvLTEyIiwgYygiVzJoeVpXWmVQU0pvZEhSd2N6b3ZMMkZtWmk1elpXNWthSFZpTG5Cc0x5SmQiKSwgYygiWVZ0b2NtVm1YajBpYUhSMGNEb3ZMMkZrZG0xaGJtRm5aWEl1ZEdWamFHWjFiaTV3YkM5eVpXUnBjbVZqZEM4aVhRPT0iKSwgYygiWVZ0b2NtVm1YajBpYUhSMGNEb3ZMM2QzZHk1MGNtbDZaWEl1Y0d3dlAzVjBiVjl6YjNWeVkyVWlYUT09IiksIGMoIlpHbDJJM05yWVhCcFpXTmZZV1E9IildLCBybzogW2MoIllWdG9jbVZtWGowaUx5OWhabVowY21zdVlXeDBaWGd1Y204dlEyOTFiblJsY2k5RGJHbGpheUpkIiksIGMoIllWdG9jbVZtWGowaWFIUjBjSE02THk5aWJHRmphMlp5YVdSaGVYTmhiR1Z6TG5KdkwzUnlheTl6YUc5d0x5SmQiKSwgYygiWVZ0b2NtVm1YajBpYUhSMGNITTZMeTlsZG1WdWRDNHljR1Z5Wm05eWJXRnVkQzVqYjIwdlpYWmxiblJ6TDJOc2FXTnJJbDA9IiksIGMoIllWdG9jbVZtWGowaWFIUjBjSE02THk5c0xuQnliMlpwZEhOb1lYSmxMbkp2THlKZCIpLCAnYVtocmVmXj0iL3VybC8iXSddLCBydUFkOiBbYygiWVZ0b2NtVm1LajBpTHk5bVpXSnlZWEpsTG5KMUx5SmQiKSwgYygiWVZ0b2NtVm1LajBpTHk5MWRHbHRaeTV5ZFM4aVhRPT0iKSwgYygiWVZ0b2NtVm1LajBpT2k4dlkyaHBhMmxrYVd0cExuSjFJbDA9IiksICIjcGdlbGRpeiIsICIueWFuZGV4LXJ0Yi1ibG9jayJdLCB0aGFpQWRzOiBbImFbaHJlZio9bWFjYXUtdXRhLXBvcHVwXSIsIGMoIkkyRmtjeTFuYjI5bmJHVXRiV2xrWkd4bFgzSmxZM1JoYm1kc1pTMW5jbTkxY0E9PSIpLCBjKCJMbUZrY3pNd01ITT0iKSwgIi5idW1xIiwgIi5pbWcta29zYW5hIl0sIHdlYkFubm95YW5jZXNVbHRyYWxpc3Q6IFsiI21vZC1zb2NpYWwtc2hhcmUtMiIsICIjc29jaWFsLXRvb2xzIiwgYygiTG1OMGNHd3RablZzYkdKaGJtNWxjZz09IiksICIuemVyZ25ldC1yZWNvbW1lbmQiLCAiLnl0LmJ0bi1saW5rLmJ0bi1tZC5idG4iXSB9LCB0ID0gT2JqZWN0LmtleXMoZSksIFs0LCByZSgoYSA9IFtdKS5jb25jYXQuYXBwbHkoYSwgdC5tYXAoKGZ1bmN0aW9uIChuKSB7IHJldHVybiBlW25dIH0pKSkpXSkgOiBbMiwgdm9pZCAwXTsgY2FzZSAxOiByZXR1cm4gbyA9IHIuc2VudCgpLCBuICYmIGZ1bmN0aW9uIChlLCBuKSB7IGZvciAodmFyIHQgPSAiRE9NIGJsb2NrZXJzIGRlYnVnOlxuYGBgIiwgciA9IDAsIG8gPSBPYmplY3Qua2V5cyhlKTsgciA8IG8ubGVuZ3RoOyByKyspIHsgdmFyIGkgPSBvW3JdOyB0ICs9ICJcbiIuY29uY2F0KGksICI6Iik7IGZvciAodmFyIGEgPSAwLCBjID0gZVtpXTsgYSA8IGMubGVuZ3RoOyBhKyspIHsgdmFyIHUgPSBjW2FdOyB0ICs9ICJcbiAgIi5jb25jYXQoblt1XSA/ICLwn5qrIiA6ICLinqHvuI8iLCAiICIpLmNvbmNhdCh1KSB9IH0gY29uc29sZS5sb2coIiIuY29uY2F0KHQsICJcbmBgYCIpKSB9KGUsIG8pLCAoaSA9IHQuZmlsdGVyKChmdW5jdGlvbiAobikgeyB2YXIgdCA9IGVbbl07IHJldHVybiBtKHQubWFwKChmdW5jdGlvbiAoZSkgeyByZXR1cm4gb1tlXSB9KSkpID4gLjYgKiB0Lmxlbmd0aCB9KSkpLnNvcnQoKSwgWzIsIGldIH12YXIgYyB9KSkgfSkpIH0sIGZvbnRQcmVmZXJlbmNlczogZnVuY3Rpb24gKCkgeyByZXR1cm4gZnVuY3Rpb24gKGUsIG4pIHsgdm9pZCAwID09PSBuICYmIChuID0gNGUzKTsgcmV0dXJuIEQoKGZ1bmN0aW9uICh0LCByKSB7IHZhciBpID0gci5kb2N1bWVudCwgYSA9IGkuYm9keSwgYyA9IGEuc3R5bGU7IGMud2lkdGggPSAiIi5jb25jYXQobiwgInB4IiksIGMud2Via2l0VGV4dFNpemVBZGp1c3QgPSBjLnRleHRTaXplQWRqdXN0ID0gIm5vbmUiLCBZKCkgPyBhLnN0eWxlLnpvb20gPSAiIi5jb25jYXQoMSAvIHIuZGV2aWNlUGl4ZWxSYXRpbykgOiBDKCkgJiYgKGEuc3R5bGUuem9vbSA9ICJyZXNldCIpOyB2YXIgdSA9IGkuY3JlYXRlRWxlbWVudCgiZGl2Iik7IHJldHVybiB1LnRleHRDb250ZW50ID0gbyhbXSwgQXJyYXkobiAvIDIwIDw8IDApLCAhMCkubWFwKChmdW5jdGlvbiAoKSB7IHJldHVybiAid29yZCIgfSkpLmpvaW4oIiAiKSwgYS5hcHBlbmRDaGlsZCh1KSwgZShpLCBhKSB9KSwgJzwhZG9jdHlwZSBodG1sPjxodG1sPjxoZWFkPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+JykgfSgoZnVuY3Rpb24gKGUsIG4pIHsgZm9yICh2YXIgdCA9IHt9LCByID0ge30sIG8gPSAwLCBpID0gT2JqZWN0LmtleXMobWUpOyBvIDwgaS5sZW5ndGg7IG8rKykgeyB2YXIgYSA9IGlbb10sIGMgPSBtZVthXSwgdSA9IGNbMF0sIGwgPSB2b2lkIDAgPT09IHUgPyB7fSA6IHUsIHMgPSBjWzFdLCBkID0gdm9pZCAwID09PSBzID8gIm1tTXdXTGxpSTBmaWZsTyYxIiA6IHMsIGYgPSBlLmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsgZi50ZXh0Q29udGVudCA9IGQsIGYuc3R5bGUud2hpdGVTcGFjZSA9ICJub3dyYXAiOyBmb3IgKHZhciBtID0gMCwgdiA9IE9iamVjdC5rZXlzKGwpOyBtIDwgdi5sZW5ndGg7IG0rKykgeyB2YXIgaCA9IHZbbV0sIHAgPSBsW2hdOyB2b2lkIDAgIT09IHAgJiYgKGYuc3R5bGVbaF0gPSBwKSB9IHRbYV0gPSBmLCBuLmFwcGVuZChlLmNyZWF0ZUVsZW1lbnQoImJyIiksIGYpIH0gZm9yICh2YXIgYiA9IDAsIHkgPSBPYmplY3Qua2V5cyhtZSk7IGIgPCB5Lmxlbmd0aDsgYisrKSB7IHJbYSA9IHlbYl1dID0gdFthXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCB9IHJldHVybiByIH0pKSB9LCBhdWRpbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gQygpICYmIEUoKSAmJiBYKCkgfHwgWSgpICYmIE4oKSAmJiAoZSA9IHdpbmRvdywgbiA9IGUuVVJMUGF0dGVybiwgbShbInVuaW9uIiBpbiBTZXQucHJvdG90eXBlLCAiSXRlcmF0b3IiIGluIGUsIG4gJiYgImhhc1JlZ0V4cEdyb3VwcyIgaW4gbi5wcm90b3R5cGUsICJSR0I4IiBpbiBXZWJHTFJlbmRlcmluZ0NvbnRleHQucHJvdG90eXBlXSkgPj0gMykgPyAtNCA6IEooKTsgdmFyIGUsIG4gfSwgc2NyZWVuRnJhbWU6IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSB0aGlzOyBpZiAoQygpICYmIEUoKSAmJiBYKCkpIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodm9pZCAwKSB9OyB2YXIgbiA9IGVlKCk7IHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiB0KGUsIHZvaWQgMCwgdm9pZCAwLCAoZnVuY3Rpb24gKCkgeyB2YXIgZSwgdDsgcmV0dXJuIHIodGhpcywgKGZ1bmN0aW9uIChyKSB7IHN3aXRjaCAoci5sYWJlbCkgeyBjYXNlIDA6IHJldHVybiBbNCwgbigpXTsgY2FzZSAxOiByZXR1cm4gZSA9IHIuc2VudCgpLCBbMiwgWyh0ID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG51bGwgPT09IGUgPyBudWxsIDogdihlLCAxMCkgfSkoZVswXSksIHQoZVsxXSksIHQoZVsyXSksIHQoZVszXSldXSB9IH0pKSB9KSkgfSB9LCBjYW52YXM6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFUoQygpICYmIEUoKSAmJiBYKCkpIH0sIG9zQ3B1OiBmdW5jdGlvbiAoKSB7IHJldHVybiBuYXZpZ2F0b3Iub3NjcHUgfSwgbGFuZ3VhZ2VzOiBmdW5jdGlvbiAoKSB7IHZhciBlLCBuID0gbmF2aWdhdG9yLCB0ID0gW10sIHIgPSBuLmxhbmd1YWdlIHx8IG4udXNlckxhbmd1YWdlIHx8IG4uYnJvd3Nlckxhbmd1YWdlIHx8IG4uc3lzdGVtTGFuZ3VhZ2U7IGlmICh2b2lkIDAgIT09IHIgJiYgdC5wdXNoKFtyXSksIEFycmF5LmlzQXJyYXkobi5sYW5ndWFnZXMpKSBZKCkgJiYgbShbISgiTWVkaWFTZXR0aW5nc1JhbmdlIiBpbiAoZSA9IHdpbmRvdykpLCAiUlRDRW5jb2RlZEF1ZGlvRnJhbWUiIGluIGUsICIiICsgZS5JbnRsID09ICJbb2JqZWN0IEludGxdIiwgIiIgKyBlLlJlZmxlY3QgPT0gIltvYmplY3QgUmVmbGVjdF0iXSkgPj0gMyB8fCB0LnB1c2gobi5sYW5ndWFnZXMpOyBlbHNlIGlmICgic3RyaW5nIiA9PSB0eXBlb2Ygbi5sYW5ndWFnZXMpIHsgdmFyIG8gPSBuLmxhbmd1YWdlczsgbyAmJiB0LnB1c2goby5zcGxpdCgiLCIpKSB9IHJldHVybiB0IH0sIGNvbG9yRGVwdGg6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdy5zY3JlZW4uY29sb3JEZXB0aCB9LCBkZXZpY2VNZW1vcnk6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGYoZChuYXZpZ2F0b3IuZGV2aWNlTWVtb3J5KSwgdm9pZCAwKSB9LCBzY3JlZW5SZXNvbHV0aW9uOiBmdW5jdGlvbiAoKSB7IGlmICghKEMoKSAmJiBFKCkgJiYgWCgpKSkgcmV0dXJuIEsoKSB9LCBoYXJkd2FyZUNvbmN1cnJlbmN5OiBmdW5jdGlvbiAoKSB7IHJldHVybiBmKHMobmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3kpLCB2b2lkIDApIH0sIHRpbWV6b25lOiBmdW5jdGlvbiAoKSB7IHZhciBlLCBuID0gbnVsbCA9PT0gKGUgPSB3aW5kb3cuSW50bCkgfHwgdm9pZCAwID09PSBlID8gdm9pZCAwIDogZS5EYXRlVGltZUZvcm1hdDsgaWYgKG4pIHsgdmFyIHQgPSAobmV3IG4pLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lOyBpZiAodCkgcmV0dXJuIHQgfSB2YXIgciwgbyA9IChyID0gKG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLCAtTWF0aC5tYXgoZChuZXcgRGF0ZShyLCAwLCAxKS5nZXRUaW1lem9uZU9mZnNldCgpKSwgZChuZXcgRGF0ZShyLCA2LCAxKS5nZXRUaW1lem9uZU9mZnNldCgpKSkpOyByZXR1cm4gIlVUQyIuY29uY2F0KG8gPj0gMCA/ICIrIiA6ICIiKS5jb25jYXQobykgfSwgc2Vzc2lvblN0b3JhZ2U6IGZ1bmN0aW9uICgpIHsgdHJ5IHsgcmV0dXJuICEhd2luZG93LnNlc3Npb25TdG9yYWdlIH0gY2F0Y2ggKGUpIHsgcmV0dXJuICEwIH0gfSwgbG9jYWxTdG9yYWdlOiBmdW5jdGlvbiAoKSB7IHRyeSB7IHJldHVybiAhIXdpbmRvdy5sb2NhbFN0b3JhZ2UgfSBjYXRjaCAoZSkgeyByZXR1cm4gITAgfSB9LCBpbmRleGVkREI6IGZ1bmN0aW9uICgpIHsgaWYgKCFHKCkgJiYgIUkoKSkgdHJ5IHsgcmV0dXJuICEhd2luZG93LmluZGV4ZWREQiB9IGNhdGNoIChlKSB7IHJldHVybiAhMCB9IH0sIG9wZW5EYXRhYmFzZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gISF3aW5kb3cub3BlbkRhdGFiYXNlIH0sIGNwdUNsYXNzOiBmdW5jdGlvbiAoKSB7IHJldHVybiBuYXZpZ2F0b3IuY3B1Q2xhc3MgfSwgcGxhdGZvcm06IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSBuYXZpZ2F0b3IucGxhdGZvcm07IHJldHVybiAiTWFjSW50ZWwiID09PSBlICYmIEMoKSAmJiAhaigpID8gZnVuY3Rpb24gKCkgeyBpZiAoImlQYWQiID09PSBuYXZpZ2F0b3IucGxhdGZvcm0pIHJldHVybiAhMDsgdmFyIGUgPSBzY3JlZW4sIG4gPSBlLndpZHRoIC8gZS5oZWlnaHQ7IHJldHVybiBtKFsiTWVkaWFTb3VyY2UiIGluIHdpbmRvdywgISFFbGVtZW50LnByb3RvdHlwZS53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbiwgbiA+IC42NSAmJiBuIDwgMS41M10pID49IDIgfSgpID8gImlQYWQiIDogImlQaG9uZSIgOiBlIH0sIHBsdWdpbnM6IGZ1bmN0aW9uICgpIHsgdmFyIGUgPSBuYXZpZ2F0b3IucGx1Z2luczsgaWYgKGUpIHsgZm9yICh2YXIgbiA9IFtdLCB0ID0gMDsgdCA8IGUubGVuZ3RoOyArK3QpIHsgdmFyIHIgPSBlW3RdOyBpZiAocikgeyBmb3IgKHZhciBvID0gW10sIGkgPSAwOyBpIDwgci5sZW5ndGg7ICsraSkgeyB2YXIgYSA9IHJbaV07IG8ucHVzaCh7IHR5cGU6IGEudHlwZSwgc3VmZml4ZXM6IGEuc3VmZml4ZXMgfSkgfSBuLnB1c2goeyBuYW1lOiByLm5hbWUsIGRlc2NyaXB0aW9uOiByLmRlc2NyaXB0aW9uLCBtaW1lVHlwZXM6IG8gfSkgfSB9IHJldHVybiBuIH0gfSwgdG91Y2hTdXBwb3J0OiBmdW5jdGlvbiAoKSB7IHZhciBlLCBuID0gbmF2aWdhdG9yLCB0ID0gMDsgdm9pZCAwICE9PSBuLm1heFRvdWNoUG9pbnRzID8gdCA9IHMobi5tYXhUb3VjaFBvaW50cykgOiB2b2lkIDAgIT09IG4ubXNNYXhUb3VjaFBvaW50cyAmJiAodCA9IG4ubXNNYXhUb3VjaFBvaW50cyk7IHRyeSB7IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJUb3VjaEV2ZW50IiksIGUgPSAhMCB9IGNhdGNoIChyKSB7IGUgPSAhMSB9IHJldHVybiB7IG1heFRvdWNoUG9pbnRzOiB0LCB0b3VjaEV2ZW50OiBlLCB0b3VjaFN0YXJ0OiAib250b3VjaHN0YXJ0IiBpbiB3aW5kb3cgfSB9LCB2ZW5kb3I6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5hdmlnYXRvci52ZW5kb3IgfHwgIiIgfSwgdmVuZG9yRmxhdm9yczogZnVuY3Rpb24gKCkgeyBmb3IgKHZhciBlID0gW10sIG4gPSAwLCB0ID0gWyJjaHJvbWUiLCAic2FmYXJpIiwgIl9fY3JXZWIiLCAiX19nQ3JXZWIiLCAieWFuZGV4IiwgIl9feWIiLCAiX195YnJvIiwgIl9fZmlyZWZveF9fIiwgIl9fZWRnZVRyYWNraW5nUHJldmVudGlvblN0YXRpc3RpY3MiLCAid2Via2l0IiwgIm9wcnQiLCAic2Ftc3VuZ0FyIiwgInVjd2ViIiwgIlVDU2hlbGxKYXZhIiwgInB1ZmZpbkRldmljZSJdOyBuIDwgdC5sZW5ndGg7IG4rKykgeyB2YXIgciA9IHRbbl0sIG8gPSB3aW5kb3dbcl07IG8gJiYgIm9iamVjdCIgPT0gdHlwZW9mIG8gJiYgZS5wdXNoKHIpIH0gcmV0dXJuIGUuc29ydCgpIH0sIGNvb2tpZXNFbmFibGVkOiBmdW5jdGlvbiAoKSB7IHZhciBlID0gZG9jdW1lbnQ7IHRyeSB7IGUuY29va2llID0gImNvb2tpZXRlc3Q9MTsgU2FtZVNpdGU9U3RyaWN0OyI7IHZhciBuID0gLTEgIT09IGUuY29va2llLmluZGV4T2YoImNvb2tpZXRlc3Q9Iik7IHJldHVybiBlLmNvb2tpZSA9ICJjb29raWV0ZXN0PTE7IFNhbWVTaXRlPVN0cmljdDsgZXhwaXJlcz1UaHUsIDAxLUphbi0xOTcwIDAwOjAwOjAxIEdNVCIsIG4gfSBjYXRjaCAodCkgeyByZXR1cm4gITEgfSB9LCBjb2xvckdhbXV0OiBmdW5jdGlvbiAoKSB7IGZvciAodmFyIGUgPSAwLCBuID0gWyJyZWMyMDIwIiwgInAzIiwgInNyZ2IiXTsgZSA8IG4ubGVuZ3RoOyBlKyspIHsgdmFyIHQgPSBuW2VdOyBpZiAobWF0Y2hNZWRpYSgiKGNvbG9yLWdhbXV0OiAiLmNvbmNhdCh0LCAiKSIpKS5tYXRjaGVzKSByZXR1cm4gdCB9IH0sIGludmVydGVkQ29sb3JzOiBmdW5jdGlvbiAoKSB7IHJldHVybiAhIWllKCJpbnZlcnRlZCIpIHx8ICFpZSgibm9uZSIpICYmIHZvaWQgMCB9LCBmb3JjZWRDb2xvcnM6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICEhYWUoImFjdGl2ZSIpIHx8ICFhZSgibm9uZSIpICYmIHZvaWQgMCB9LCBtb25vY2hyb21lOiBmdW5jdGlvbiAoKSB7IGlmIChtYXRjaE1lZGlhKCIobWluLW1vbm9jaHJvbWU6IDApIikubWF0Y2hlcykgeyBmb3IgKHZhciBlID0gMDsgZSA8PSAxMDA7ICsrZSlpZiAobWF0Y2hNZWRpYSgiKG1heC1tb25vY2hyb21lOiAiLmNvbmNhdChlLCAiKSIpKS5tYXRjaGVzKSByZXR1cm4gZTsgdGhyb3cgbmV3IEVycm9yKCJUb28gaGlnaCB2YWx1ZSIpIH0gfSwgY29udHJhc3Q6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNlKCJuby1wcmVmZXJlbmNlIikgPyAwIDogY2UoImhpZ2giKSB8fCBjZSgibW9yZSIpID8gMSA6IGNlKCJsb3ciKSB8fCBjZSgibGVzcyIpID8gLTEgOiBjZSgiZm9yY2VkIikgPyAxMCA6IHZvaWQgMCB9LCByZWR1Y2VkTW90aW9uOiBmdW5jdGlvbiAoKSB7IHJldHVybiAhIXVlKCJyZWR1Y2UiKSB8fCAhdWUoIm5vLXByZWZlcmVuY2UiKSAmJiB2b2lkIDAgfSwgcmVkdWNlZFRyYW5zcGFyZW5jeTogZnVuY3Rpb24gKCkgeyByZXR1cm4gISFsZSgicmVkdWNlIikgfHwgIWxlKCJuby1wcmVmZXJlbmNlIikgJiYgdm9pZCAwIH0sIGhkcjogZnVuY3Rpb24gKCkgeyByZXR1cm4gISFzZSgiaGlnaCIpIHx8ICFzZSgic3RhbmRhcmQiKSAmJiB2b2lkIDAgfSwgbWF0aDogZnVuY3Rpb24gKCkgeyB2YXIgZSwgbiA9IGRlLmFjb3MgfHwgZmUsIHQgPSBkZS5hY29zaCB8fCBmZSwgciA9IGRlLmFzaW4gfHwgZmUsIG8gPSBkZS5hc2luaCB8fCBmZSwgaSA9IGRlLmF0YW5oIHx8IGZlLCBhID0gZGUuYXRhbiB8fCBmZSwgYyA9IGRlLnNpbiB8fCBmZSwgdSA9IGRlLnNpbmggfHwgZmUsIGwgPSBkZS5jb3MgfHwgZmUsIHMgPSBkZS5jb3NoIHx8IGZlLCBkID0gZGUudGFuIHx8IGZlLCBmID0gZGUudGFuaCB8fCBmZSwgbSA9IGRlLmV4cCB8fCBmZSwgdiA9IGRlLmV4cG0xIHx8IGZlLCBoID0gZGUubG9nMXAgfHwgZmU7IHJldHVybiB7IGFjb3M6IG4oLjEyMzEyNDIzNDIzNDIzNDI0KSwgYWNvc2g6IHQoMWUzMDgpLCBhY29zaFBmOiAoZSA9IDFlMTU0LCBkZS5sb2coZSArIGRlLnNxcnQoZSAqIGUgLSAxKSkpLCBhc2luOiByKC4xMjMxMjQyMzQyMzQyMzQyNCksIGFzaW5oOiBvKDEpLCBhc2luaFBmOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZGUubG9nKGUgKyBkZS5zcXJ0KGUgKiBlICsgMSkpIH0oMSksIGF0YW5oOiBpKC41KSwgYXRhbmhQZjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGRlLmxvZygoMSArIGUpIC8gKDEgLSBlKSkgLyAyIH0oLjUpLCBhdGFuOiBhKC41KSwgc2luOiBjKC0xZTMwMCksIHNpbmg6IHUoMSksIHNpbmhQZjogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGRlLmV4cChlKSAtIDEgLyBkZS5leHAoZSkgLyAyIH0oMSksIGNvczogbCgxMC4wMDAwMDAwMDAxMjMpLCBjb3NoOiBzKDEpLCBjb3NoUGY6IGZ1bmN0aW9uIChlKSB7IHJldHVybiAoZGUuZXhwKGUpICsgMSAvIGRlLmV4cChlKSkgLyAyIH0oMSksIHRhbjogZCgtMWUzMDApLCB0YW5oOiBmKDEpLCB0YW5oUGY6IGZ1bmN0aW9uIChlKSB7IHJldHVybiAoZGUuZXhwKDIgKiBlKSAtIDEpIC8gKGRlLmV4cCgyICogZSkgKyAxKSB9KDEpLCBleHA6IG0oMSksIGV4cG0xOiB2KDEpLCBleHBtMVBmOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZGUuZXhwKGUpIC0gMSB9KDEpLCBsb2cxcDogaCgxMCksIGxvZzFwUGY6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBkZS5sb2coMSArIGUpIH0oMTApLCBwb3dQSTogZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGRlLnBvdyhkZS5QSSwgZSkgfSgtMTAwKSB9IH0sIHBkZlZpZXdlckVuYWJsZWQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5hdmlnYXRvci5wZGZWaWV3ZXJFbmFibGVkIH0sIGFyY2hpdGVjdHVyZTogZnVuY3Rpb24gKCkgeyB2YXIgZSA9IG5ldyBGbG9hdDMyQXJyYXkoMSksIG4gPSBuZXcgVWludDhBcnJheShlLmJ1ZmZlcik7IHJldHVybiBlWzBdID0gMSAvIDAsIGVbMF0gPSBlWzBdIC0gZVswXSwgblszXSB9LCBhcHBsZVBheTogZnVuY3Rpb24gKCkgeyB2YXIgZSA9IHdpbmRvdy5BcHBsZVBheVNlc3Npb247IGlmICgiZnVuY3Rpb24iICE9IHR5cGVvZiAobnVsbCA9PSBlID8gdm9pZCAwIDogZS5jYW5NYWtlUGF5bWVudHMpKSByZXR1cm4gLTE7IGlmICh2ZSgpKSByZXR1cm4gLTM7IHRyeSB7IHJldHVybiBlLmNhbk1ha2VQYXltZW50cygpID8gMSA6IDAgfSBjYXRjaCAobikgeyByZXR1cm4gZnVuY3Rpb24gKGUpIHsgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiAiSW52YWxpZEFjY2Vzc0Vycm9yIiA9PT0gZS5uYW1lICYmIC9cYmZyb21cYi4qXGJpbnNlY3VyZVxiL2kudGVzdChlLm1lc3NhZ2UpKSByZXR1cm4gLTI7IHRocm93IGUgfShuKSB9IH0sIHByaXZhdGVDbGlja01lYXN1cmVtZW50OiBmdW5jdGlvbiAoKSB7IHZhciBlLCBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLCB0ID0gbnVsbCAhPT0gKGUgPSBuLmF0dHJpYnV0aW9uU291cmNlSWQpICYmIHZvaWQgMCAhPT0gZSA/IGUgOiBuLmF0dHJpYnV0aW9uc291cmNlaWQ7IHJldHVybiB2b2lkIDAgPT09IHQgPyB2b2lkIDAgOiBTdHJpbmcodCkgfSwgYXVkaW9CYXNlTGF0ZW5jeTogZnVuY3Rpb24gKCkgeyBpZiAoIShBKCkgfHwgQygpKSkgcmV0dXJuIC0yOyBpZiAoIXdpbmRvdy5BdWRpb0NvbnRleHQpIHJldHVybiAtMTsgdmFyIGUgPSAobmV3IEF1ZGlvQ29udGV4dCkuYmFzZUxhdGVuY3k7IHJldHVybiBudWxsID09IGUgPyAtMSA6IGlzRmluaXRlKGUpID8gZSA6IC0zIH0sIGRhdGVUaW1lTG9jYWxlOiBmdW5jdGlvbiAoKSB7IGlmICghd2luZG93LkludGwpIHJldHVybiAtMTsgdmFyIGUgPSB3aW5kb3cuSW50bC5EYXRlVGltZUZvcm1hdDsgaWYgKCFlKSByZXR1cm4gLTI7IHZhciBuID0gZSgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsgcmV0dXJuIG4gfHwgIiIgPT09IG4gPyBuIDogLTMgfSwgd2ViR2xCYXNpY3M6IGZ1bmN0aW9uIChlKSB7IHZhciBuLCB0LCByLCBvLCBpLCBhLCBjID0gd2UoZS5jYWNoZSk7IGlmICghYykgcmV0dXJuIC0xOyBpZiAoIVdlKGMpKSByZXR1cm4gLTI7IHZhciB1ID0gU2UoKSA/IG51bGwgOiBjLmdldEV4dGVuc2lvbihnZSk7IHJldHVybiB7IHZlcnNpb246IChudWxsID09PSAobiA9IGMuZ2V0UGFyYW1ldGVyKGMuVkVSU0lPTikpIHx8IHZvaWQgMCA9PT0gbiA/IHZvaWQgMCA6IG4udG9TdHJpbmcoKSkgfHwgIiIsIHZlbmRvcjogKG51bGwgPT09ICh0ID0gYy5nZXRQYXJhbWV0ZXIoYy5WRU5ET1IpKSB8fCB2b2lkIDAgPT09IHQgPyB2b2lkIDAgOiB0LnRvU3RyaW5nKCkpIHx8ICIiLCB2ZW5kb3JVbm1hc2tlZDogdSA/IG51bGwgPT09IChyID0gYy5nZXRQYXJhbWV0ZXIodS5VTk1BU0tFRF9WRU5ET1JfV0VCR0wpKSB8fCB2b2lkIDAgPT09IHIgPyB2b2lkIDAgOiByLnRvU3RyaW5nKCkgOiAiIiwgcmVuZGVyZXI6IChudWxsID09PSAobyA9IGMuZ2V0UGFyYW1ldGVyKGMuUkVOREVSRVIpKSB8fCB2b2lkIDAgPT09IG8gPyB2b2lkIDAgOiBvLnRvU3RyaW5nKCkpIHx8ICIiLCByZW5kZXJlclVubWFza2VkOiB1ID8gbnVsbCA9PT0gKGkgPSBjLmdldFBhcmFtZXRlcih1LlVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMKSkgfHwgdm9pZCAwID09PSBpID8gdm9pZCAwIDogaS50b1N0cmluZygpIDogIiIsIHNoYWRpbmdMYW5ndWFnZVZlcnNpb246IChudWxsID09PSAoYSA9IGMuZ2V0UGFyYW1ldGVyKGMuU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OKSkgfHwgdm9pZCAwID09PSBhID8gdm9pZCAwIDogYS50b1N0cmluZygpKSB8fCAiIiB9IH0sIHdlYkdsRXh0ZW5zaW9uczogZnVuY3Rpb24gKGUpIHsgdmFyIG4gPSB3ZShlLmNhY2hlKTsgaWYgKCFuKSByZXR1cm4gLTE7IGlmICghV2UobikpIHJldHVybiAtMjsgdmFyIHQgPSBuLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKSwgciA9IG4uZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSwgbyA9IFtdLCBpID0gW10sIGEgPSBbXSwgYyA9IFtdLCB1ID0gW107IGlmIChyKSBmb3IgKHZhciBsID0gMCwgcyA9IE9iamVjdC5rZXlzKHIpOyBsIDwgcy5sZW5ndGg7IGwrKykgeyB2YXIgZCA9IHNbbF07IGkucHVzaCgiIi5jb25jYXQoZCwgIj0iKS5jb25jYXQocltkXSkpIH0gZm9yICh2YXIgZiA9IDAsIG0gPSBrZShuKTsgZiA8IG0ubGVuZ3RoOyBmKyspIHsgdmFyIHYgPSBuW0wgPSBtW2ZdXTsgYS5wdXNoKCIiLmNvbmNhdChMLCAiPSIpLmNvbmNhdCh2KS5jb25jYXQoaGUuaGFzKHYpID8gIj0iLmNvbmNhdChuLmdldFBhcmFtZXRlcih2KSkgOiAiIikpIH0gaWYgKHQpIGZvciAodmFyIGggPSAwLCBwID0gdDsgaCA8IHAubGVuZ3RoOyBoKyspIHsgdmFyIGIgPSBwW2hdOyBpZiAoIShiID09PSBnZSAmJiBTZSgpIHx8ICJXRUJHTF9wb2x5Z29uX21vZGUiID09PSBiICYmIChZKCkgfHwgQygpKSkpIHsgdmFyIHkgPSBuLmdldEV4dGVuc2lvbihiKTsgaWYgKHkpIGZvciAodmFyIGcgPSAwLCB3ID0ga2UoeSk7IGcgPCB3Lmxlbmd0aDsgZysrKSB7IHZhciBMOyB2ID0geVtMID0gd1tnXV07IGMucHVzaCgiIi5jb25jYXQoTCwgIj0iKS5jb25jYXQodikuY29uY2F0KHBlLmhhcyh2KSA/ICI9Ii5jb25jYXQobi5nZXRQYXJhbWV0ZXIodikpIDogIiIpKSB9IGVsc2Ugby5wdXNoKGIpIH0gfSBmb3IgKHZhciBrID0gMCwgViA9IGJlOyBrIDwgVi5sZW5ndGg7IGsrKylmb3IgKHZhciBTID0gVltrXSwgVyA9IDAsIHggPSB5ZTsgVyA8IHgubGVuZ3RoOyBXKyspIHsgdmFyIFogPSB4W1ddLCBNID0gTGUobiwgUywgWik7IHUucHVzaCgiIi5jb25jYXQoUywgIi4iKS5jb25jYXQoWiwgIj0iKS5jb25jYXQoTS5qb2luKCIsIikpKSB9IHJldHVybiBjLnNvcnQoKSwgYS5zb3J0KCksIHsgY29udGV4dEF0dHJpYnV0ZXM6IGksIHBhcmFtZXRlcnM6IGEsIHNoYWRlclByZWNpc2lvbnM6IHUsIGV4dGVuc2lvbnM6IHQsIGV4dGVuc2lvblBhcmFtZXRlcnM6IGMsIHVuc3VwcG9ydGVkRXh0ZW5zaW9uczogbyB9IH0gfTsgZnVuY3Rpb24gWmUoZSkgeyB2YXIgbiA9IGZ1bmN0aW9uIChlKSB7IGlmIChBKCkpIHJldHVybiAuNDsgaWYgKEMoKSkgcmV0dXJuICFqKCkgfHwgRSgpICYmIFgoKSA/IC4zIDogLjU7IHZhciBuID0gInZhbHVlIiBpbiBlLnBsYXRmb3JtID8gZS5wbGF0Zm9ybS52YWx1ZSA6ICIiOyBpZiAoL15XaW4vLnRlc3QobikpIHJldHVybiAuNjsgaWYgKC9eTWFjLy50ZXN0KG4pKSByZXR1cm4gLjU7IHJldHVybiAuNyB9KGUpLCB0ID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHYoLjk5ICsgLjAxICogZSwgMWUtNCkgfShuKTsgcmV0dXJuIHsgc2NvcmU6IG4sIGNvbW1lbnQ6ICIkIGlmIHVwZ3JhZGUgdG8gUHJvOiBodHRwczovL2ZwanMuZGV2L3BybyIucmVwbGFjZSgvXCQvZywgIiIuY29uY2F0KHQpKSB9IH0gZnVuY3Rpb24gTWUoZSkgeyByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSwgKGZ1bmN0aW9uIChlLCB0KSB7IHJldHVybiB0IGluc3RhbmNlb2YgRXJyb3IgPyBuKHsgbmFtZTogKHIgPSB0KS5uYW1lLCBtZXNzYWdlOiByLm1lc3NhZ2UsIHN0YWNrOiBudWxsID09PSAobyA9IHIuc3RhY2spIHx8IHZvaWQgMCA9PT0gbyA/IHZvaWQgMCA6IG8uc3BsaXQoIlxuIikgfSwgcikgOiB0OyB2YXIgciwgbyB9KSwgMikgfSBmdW5jdGlvbiBSZShlKSB7IHJldHVybiBNKGZ1bmN0aW9uIChlKSB7IGZvciAodmFyIG4gPSAiIiwgdCA9IDAsIHIgPSBPYmplY3Qua2V5cyhlKS5zb3J0KCk7IHQgPCByLmxlbmd0aDsgdCsrKSB7IHZhciBvID0gclt0XSwgaSA9IGVbb10sIGEgPSAiZXJyb3IiIGluIGkgPyAiZXJyb3IiIDogSlNPTi5zdHJpbmdpZnkoaS52YWx1ZSk7IG4gKz0gIiIuY29uY2F0KG4gPyAifCIgOiAiIikuY29uY2F0KG8ucmVwbGFjZSgvKFs6fFxcXSkvZywgIlxcJDEiKSwgIjoiKS5jb25jYXQoYSkgfSByZXR1cm4gbiB9KGUpKSB9IGZ1bmN0aW9uIEZlKGUpIHsgcmV0dXJuIHZvaWQgMCA9PT0gZSAmJiAoZSA9IDUwKSwgZnVuY3Rpb24gKGUsIG4pIHsgdm9pZCAwID09PSBuICYmIChuID0gMSAvIDApOyB2YXIgdCA9IHdpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrOyByZXR1cm4gdCA/IG5ldyBQcm9taXNlKChmdW5jdGlvbiAoZSkgeyByZXR1cm4gdC5jYWxsKHdpbmRvdywgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGUoKSB9KSwgeyB0aW1lb3V0OiBuIH0pIH0pKSA6IGkoTWF0aC5taW4oZSwgbikpIH0oZSwgMiAqIGUpIH0gZnVuY3Rpb24gR2UoZSwgbikgeyB2YXIgbyA9IERhdGUubm93KCk7IHJldHVybiB7IGdldDogZnVuY3Rpb24gKGkpIHsgcmV0dXJuIHQodGhpcywgdm9pZCAwLCB2b2lkIDAsIChmdW5jdGlvbiAoKSB7IHZhciB0LCBhLCBjOyByZXR1cm4gcih0aGlzLCAoZnVuY3Rpb24gKHIpIHsgc3dpdGNoIChyLmxhYmVsKSB7IGNhc2UgMDogcmV0dXJuIHQgPSBEYXRlLm5vdygpLCBbNCwgZSgpXTsgY2FzZSAxOiByZXR1cm4gYSA9IHIuc2VudCgpLCBjID0gZnVuY3Rpb24gKGUpIHsgdmFyIG47IHJldHVybiB7IGdldCB2aXNpdG9ySWQoKSB7IHJldHVybiB2b2lkIDAgPT09IG4gJiYgKG4gPSBSZSh0aGlzLmNvbXBvbmVudHMpKSwgbiB9LCBzZXQgdmlzaXRvcklkKGUpIHsgbiA9IGUgfSwgY29uZmlkZW5jZTogWmUoZSksIGNvbXBvbmVudHM6IGUsIHZlcnNpb246ICI0LjYuMiIgfSB9KGEpLCAobiB8fCAobnVsbCA9PSBpID8gdm9pZCAwIDogaS5kZWJ1ZykpICYmIGNvbnNvbGUubG9nKCJDb3B5IHRoZSB0ZXh0IGJlbG93IHRvIGdldCB0aGUgZGVidWcgZGF0YTpcblxuYGBgXG52ZXJzaW9uOiAiLmNvbmNhdChjLnZlcnNpb24sICJcbnVzZXJBZ2VudDogIikuY29uY2F0KG5hdmlnYXRvci51c2VyQWdlbnQsICJcbnRpbWVCZXR3ZWVuTG9hZEFuZEdldDogIikuY29uY2F0KHQgLSBvLCAiXG52aXNpdG9ySWQ6ICIpLmNvbmNhdChjLnZpc2l0b3JJZCwgIlxuY29tcG9uZW50czogIikuY29uY2F0KE1lKGEpLCAiXG5gYGAiKSksIFsyLCBjXSB9IH0pKSB9KSkgfSB9IH0gZnVuY3Rpb24gSWUoZSkgeyByZXR1cm4gdm9pZCAwID09PSBlICYmIChlID0ge30pLCB0KHRoaXMsIHZvaWQgMCwgdm9pZCAwLCAoZnVuY3Rpb24gKCkgeyB2YXIgbiwgdCwgbzsgcmV0dXJuIHIodGhpcywgKGZ1bmN0aW9uIChyKSB7IHN3aXRjaCAoci5sYWJlbCkgeyBjYXNlIDA6IHJldHVybiBlLm1vbml0b3JpbmcsIG4gPSBlLmRlbGF5RmFsbGJhY2ssIHQgPSBlLmRlYnVnLCBbNCwgRmUobildOyBjYXNlIDE6IHJldHVybiByLnNlbnQoKSwgbyA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBGKHhlLCBlLCBbXSkgfSh7IGNhY2hlOiB7fSwgZGVidWc6IHQgfSksIFsyLCBHZShvLCB0KV0gfSB9KSkgfSkpIH0gdmFyIFllID0geyBsb2FkOiBJZSwgaGFzaENvbXBvbmVudHM6IFJlLCBjb21wb25lbnRzVG9EZWJ1Z1N0cmluZzogTWUgfSwgQ2UgPSBNOyBlLmNvbXBvbmVudHNUb0RlYnVnU3RyaW5nID0gTWUsIGUuZGVmYXVsdCA9IFllLCBlLmdldEZ1bGxzY3JlZW5FbGVtZW50ID0gSCwgZS5nZXRVbnN0YWJsZUF1ZGlvRmluZ2VycHJpbnQgPSBKLCBlLmdldFVuc3RhYmxlQ2FudmFzRmluZ2VycHJpbnQgPSBVLCBlLmdldFVuc3RhYmxlU2NyZWVuRnJhbWUgPSBlZSwgZS5nZXRVbnN0YWJsZVNjcmVlblJlc29sdXRpb24gPSBLLCBlLmdldFdlYkdMQ29udGV4dCA9IHdlLCBlLmhhc2hDb21wb25lbnRzID0gUmUsIGUuaXNBbmRyb2lkID0gQSwgZS5pc0Nocm9taXVtID0gWSwgZS5pc0Rlc2t0b3BXZWJLaXQgPSBqLCBlLmlzRWRnZUhUTUwgPSBJLCBlLmlzR2Vja28gPSBQLCBlLmlzU2Ftc3VuZ0ludGVybmV0ID0gTiwgZS5pc1RyaWRlbnQgPSBHLCBlLmlzV2ViS2l0ID0gQywgZS5sb2FkID0gSWUsIGUubG9hZFNvdXJjZXMgPSBGLCBlLm11cm11clg2NEhhc2gxMjggPSBDZSwgZS5wcmVwYXJlRm9yU291cmNlcyA9IEZlLCBlLnNvdXJjZXMgPSB4ZSwgZS50cmFuc2Zvcm1Tb3VyY2UgPSBmdW5jdGlvbiAoZSwgbikgeyB2YXIgdCA9IGZ1bmN0aW9uIChlKSB7IHJldHVybiBSKGUpID8gbihlKSA6IGZ1bmN0aW9uICgpIHsgdmFyIHQgPSBlKCk7IHJldHVybiBhKHQpID8gdC50aGVuKG4pIDogbih0KSB9IH07IHJldHVybiBmdW5jdGlvbiAobikgeyB2YXIgciA9IGUobik7IHJldHVybiBhKHIpID8gci50aGVuKHQpIDogdChyKSB9IH0sIGUud2l0aElmcmFtZSA9IEQsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCAiX19lc01vZHVsZSIsIHsgdmFsdWU6ICEwIH0pIH0pKTs="}},"time_used":472,"timings":{"blocked":-1,"dns":0,"connect":63,"send":0,"wait":345,"receive":64,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","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.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:58.615Z","timestamp":1785113878615,"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: http://sahnesirince.com/\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: Mon, 27 Jul 2026 00:57:58 GMT\r\ndate: Mon, 27 Jul 2026 00:57:58 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-27T03:35:49.919067Z","times_seen":38135,"resource_available":false,"data":"LyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMkpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEwWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTFwTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEycEw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyNUw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTFaTDdXMEk1bnZ3VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTJKTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMFpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogZ3JlZWstZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMlpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KLyogZ3JlZWsgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWExcEw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDM3NywgVSswMzdBLTAzN0YsIFUrMDM4NC0wMzhBLCBVKzAzOEMsIFUrMDM4RS0wM0ExLCBVKzAzQTMtMDNGRjsKfQovKiB2aWV0bmFtZXNlICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMnBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KLyogbGF0aW4tZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMjVMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KLyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWExWkw3VzBJNW52d1Uud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEySkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTBaTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGdyZWVrLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTJaTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9Ci8qIGdyZWVrICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMXBMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzNzcsIFUrMDM3QS0wMzdGLCBVKzAzODQtMDM4QSwgVSswMzhDLCBVKzAzOEUtMDNBMSwgVSswM0EzLTAzRkY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTJwTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTI1TDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMVpMN1cwSTVudndVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7Cn0KLyogY3lyaWxsaWMtZXh0ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnSW50ZXInOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjIwL1VjQzczRndySzNpTFRlSHVTX25WTXJNeENwNTBTaklhMkpMN1cwSTVudndVZ0hVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7Cn0KLyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEwWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQovKiBncmVlay1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyWkw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQovKiBncmVlayAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTFwTDdXMEk1bnZ3VWdIVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEycEw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcic7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MjAvVWNDNzNGd3JLM2lMVGVIdVNfblZNck14Q3A1MFNqSWEyNUw3VzBJNW52d1VnSFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YyMC9VY0M3M0Z3ckszaUxUZUh1U19uVk1yTXhDcDUwU2pJYTFaTDdXMEk1bnZ3VS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Cg=="}},"time_used":84,"timings":{"blocked":-1,"dns":2,"connect":16,"send":0,"wait":33,"receive":0,"ssl":33},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css","fqdn":"cdnjs.cloudflare.com","domain":"cloudflare.com","tld":"com"},"ip":{"addr":"104.17.24.14","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.038Z","timestamp":1785113873038,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"cdnjs.cloudflare.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Fri, 10 Jul 2026 07:07:58 GMT","end":"Thu, 08 Oct 2026 08:07:45 GMT"},"fingerprint":{"sha1":"DF:66:97:F5:13:A2:C0:81:D3:5B:60:C4:B0:7F:CD:78:F5:91:14:D5","sha256":"3C:F2:95:73:83:BA:4D:D9:CC:85:8F:BC:7D:2C:22:CF:F3:49:9A:3A:E4:1D:FC:AE:CB:07:3D:66:89:74:0E:C5"}}},"request":{"raw":"GET /ajax/libs/font-awesome/6.4.0/css/all.min.css HTTP/1.1\r\nHost: cdnjs.cloudflare.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: http://sahnesirince.com/\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\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\ncontent-type: text/css; charset=utf-8\r\ncontent-length: 18752\r\ncf-cache-status: BYPASS\r\naccess-control-allow-origin: *\r\ncache-control: no-transform, public, s-maxage=30672000, max-age=30672000, immutable\r\ncontent-encoding: br\r\nlast-modified: Mon, 27 Mar 2023 17:46:59 GMT\r\nvary: Accept-Encoding\r\nx-cdnjs-cache: HIT\r\ncross-origin-resource-policy: cross-origin\r\ntiming-allow-origin: *\r\nx-content-type-options: nosniff\r\ncf-cdnjs-via: cfworker/r2\r\nstrict-transport-security: max-age=15780000\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=AfXF2logRf7oE%2B2K%2B1nfP2erUzDDLUGETPK3TGyFSxtKfd408Mp3MJpvxf%2FPlL4hPoJN9F6GKcUKZTrT9EDjxBPP3dHkUYUAX7mq4bXB4QuWvrCSN0Vp8AHOJOSPFKIVtrw%2Fcnsq\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.01,\"max_age\":604800}\r\nserver: cloudflare\r\ncf-ray: a217b15e2c1f56a8-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.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"]}],"data":{"size":102025,"size_decoded":19720,"mime_type":"text/css; charset=utf-8","magic":"ASCII text, with very long lines (52276)","md5":"ded1c367363e8b20bdc6a19b8350a737","sha1":"8c06d82739d14b094ff6d9036021a252bd1d985d","sha256":"1edb1725a9ea8ca4dcf2f5508cee183218aa1685e47c1b23056717f754f58ebf","sha512":"89e71d2e66ac925ec2564aa45cd43f647fd72e5bd664e2728fb632eed71e9e6a43d72a404a8ce9993fc4d223ed985201e3a66676d01cf5e341bc7d07fd9a6207","ssdeep":"1536:OwMCMPMCMjMCM4MCMwMCM3sVMX709gbPMfjSFOTyPGuZprfZCl:S709gMGFiyPGuZpfZCl","tlshash":"2ea3a7f9e44c05d97732c44bab95b37c65b6f738d5810ca9f02f580c1ad26a822c6f7a","first_seen":"2023-04-06T15:05:25Z","last_seen":"2026-07-27T03:54:06.894685Z","times_seen":58157,"resource_available":false,"data":"LyohCiAqIEZvbnQgQXdlc29tZSBGcmVlIDYuNC4wIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tCiAqIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgKEljb25zOiBDQyBCWSA0LjAsIEZvbnRzOiBTSUwgT0ZMIDEuMSwgQ29kZTogTUlUIExpY2Vuc2UpCiAqIENvcHlyaWdodCAyMDIzIEZvbnRpY29ucywgSW5jLgogKi8KLmZhe2ZvbnQtZmFtaWx5OnZhcigtLWZhLXN0eWxlLWZhbWlseSwiRm9udCBBd2Vzb21lIDYgRnJlZSIpO2ZvbnQtd2VpZ2h0OnZhcigtLWZhLXN0eWxlLDkwMCl9LmZhLC5mYS1icmFuZHMsLmZhLWNsYXNzaWMsLmZhLXJlZ3VsYXIsLmZhLXNoYXJwLC5mYS1zb2xpZCwuZmFiLC5mYXIsLmZhc3stbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtkaXNwbGF5OnZhcigtLWZhLWRpc3BsYXksaW5saW5lLWJsb2NrKTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2xpbmUtaGVpZ2h0OjE7dGV4dC1yZW5kZXJpbmc6YXV0b30uZmEtY2xhc3NpYywuZmEtcmVndWxhciwuZmEtc29saWQsLmZhciwuZmFze2ZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNiBGcmVlIn0uZmEtYnJhbmRzLC5mYWJ7Zm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA2IEJyYW5kcyJ9LmZhLTF4e2ZvbnQtc2l6ZToxZW19LmZhLTJ4e2ZvbnQtc2l6ZToyZW19LmZhLTN4e2ZvbnQtc2l6ZTozZW19LmZhLTR4e2ZvbnQtc2l6ZTo0ZW19LmZhLTV4e2ZvbnQtc2l6ZTo1ZW19LmZhLTZ4e2ZvbnQtc2l6ZTo2ZW19LmZhLTd4e2ZvbnQtc2l6ZTo3ZW19LmZhLTh4e2ZvbnQtc2l6ZTo4ZW19LmZhLTl4e2ZvbnQtc2l6ZTo5ZW19LmZhLTEweHtmb250LXNpemU6MTBlbX0uZmEtMnhze2ZvbnQtc2l6ZTouNjI1ZW07bGluZS1oZWlnaHQ6LjFlbTt2ZXJ0aWNhbC1hbGlnbjouMjI1ZW19LmZhLXhze2ZvbnQtc2l6ZTouNzVlbTtsaW5lLWhlaWdodDouMDgzMzNlbTt2ZXJ0aWNhbC1hbGlnbjouMTI1ZW19LmZhLXNte2ZvbnQtc2l6ZTouODc1ZW07bGluZS1oZWlnaHQ6LjA3MTQzZW07dmVydGljYWwtYWxpZ246LjA1MzU3ZW19LmZhLWxne2ZvbnQtc2l6ZToxLjI1ZW07bGluZS1oZWlnaHQ6LjA1ZW07dmVydGljYWwtYWxpZ246LS4wNzVlbX0uZmEteGx7Zm9udC1zaXplOjEuNWVtO2xpbmUtaGVpZ2h0Oi4wNDE2N2VtO3ZlcnRpY2FsLWFsaWduOi0uMTI1ZW19LmZhLTJ4bHtmb250LXNpemU6MmVtO2xpbmUtaGVpZ2h0Oi4wMzEyNWVtO3ZlcnRpY2FsLWFsaWduOi0uMTg3NWVtfS5mYS1md3t0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxLjI1ZW19LmZhLXVse2xpc3Qtc3R5bGUtdHlwZTpub25lO21hcmdpbi1sZWZ0OnZhcigtLWZhLWxpLW1hcmdpbiwyLjVlbSk7cGFkZGluZy1sZWZ0OjB9LmZhLXVsPmxpe3Bvc2l0aW9uOnJlbGF0aXZlfS5mYS1saXtsZWZ0OmNhbGModmFyKC0tZmEtbGktd2lkdGgsIDJlbSkqLTEpO3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOnZhcigtLWZhLWxpLXdpZHRoLDJlbSk7bGluZS1oZWlnaHQ6aW5oZXJpdH0uZmEtYm9yZGVye2JvcmRlci1yYWRpdXM6dmFyKC0tZmEtYm9yZGVyLXJhZGl1cywuMWVtKTtib3JkZXI6dmFyKC0tZmEtYm9yZGVyLXdpZHRoLC4wOGVtKSB2YXIoLS1mYS1ib3JkZXItc3R5bGUsc29saWQpIHZhcigtLWZhLWJvcmRlci1jb2xvciwjZWVlKTtwYWRkaW5nOnZhcigtLWZhLWJvcmRlci1wYWRkaW5nLC4yZW0gLjI1ZW0gLjE1ZW0pfS5mYS1wdWxsLWxlZnR7ZmxvYXQ6bGVmdDttYXJnaW4tcmlnaHQ6dmFyKC0tZmEtcHVsbC1tYXJnaW4sLjNlbSl9LmZhLXB1bGwtcmlnaHR7ZmxvYXQ6cmlnaHQ7bWFyZ2luLWxlZnQ6dmFyKC0tZmEtcHVsbC1tYXJnaW4sLjNlbSl9LmZhLWJlYXR7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmYS1iZWF0O2FuaW1hdGlvbi1uYW1lOmZhLWJlYXQ7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LDBzKTthbmltYXRpb24tZGVsYXk6dmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LDBzKTstd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpO2FuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpOy13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7YW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsZWFzZS1pbi1vdXQpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZyxlYXNlLWluLW91dCl9LmZhLWJvdW5jZXstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhLWJvdW5jZTthbmltYXRpb24tbmFtZTpmYS1ib3VuY2U7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LDBzKTthbmltYXRpb24tZGVsYXk6dmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LDBzKTstd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpO2FuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpOy13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7YW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsY3ViaWMtYmV6aWVyKC4yOCwuODQsLjQyLDEpKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsY3ViaWMtYmV6aWVyKC4yOCwuODQsLjQyLDEpKX0uZmEtZmFkZXstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhLWZhZGU7YW5pbWF0aW9uLW5hbWU6ZmEtZmFkZTstd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZyxjdWJpYy1iZXppZXIoLjQsMCwuNiwxKSk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLGN1YmljLWJlemllciguNCwwLC42LDEpKX0uZmEtYmVhdC1mYWRlLC5mYS1mYWRley13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwwcyk7YW5pbWF0aW9uLWRlbGF5OnZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwwcyk7LXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKTthbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKTstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMXMpO2FuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMXMpfS5mYS1iZWF0LWZhZGV7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmYS1iZWF0LWZhZGU7YW5pbWF0aW9uLW5hbWU6ZmEtYmVhdC1mYWRlOy13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLGN1YmljLWJlemllciguNCwwLC42LDEpKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkpfS5mYS1mbGlwey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ZmEtZmxpcDthbmltYXRpb24tbmFtZTpmYS1mbGlwOy13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwwcyk7YW5pbWF0aW9uLWRlbGF5OnZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwwcyk7LXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKTthbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKTstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMXMpO2FuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sMXMpOy13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLGVhc2UtaW4tb3V0KTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsZWFzZS1pbi1vdXQpfS5mYS1zaGFrZXstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhLXNoYWtlO2FuaW1hdGlvbi1uYW1lOmZhLXNoYWtlOy13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7YW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsbGluZWFyKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsbGluZWFyKX0uZmEtc2hha2UsLmZhLXNwaW57LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LDBzKTthbmltYXRpb24tZGVsYXk6dmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LDBzKTstd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpO2FuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpfS5mYS1zcGluey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ZmEtc3BpbjthbmltYXRpb24tbmFtZTpmYS1zcGluOy13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwycyk7YW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwycyk7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsbGluZWFyKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsbGluZWFyKX0uZmEtc3Bpbi1yZXZlcnNley0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbjpyZXZlcnNlfS5mYS1wdWxzZSwuZmEtc3Bpbi1wdWxzZXstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhLXNwaW47YW5pbWF0aW9uLW5hbWU6ZmEtc3Bpbjstd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpO2FuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpOy13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7YW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwxcyk7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsc3RlcHMoOCkpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZyxzdGVwcyg4KSl9QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LmZhLWJlYXQsLmZhLWJlYXQtZmFkZSwuZmEtYm91bmNlLC5mYS1mYWRlLC5mYS1mbGlwLC5mYS1wdWxzZSwuZmEtc2hha2UsLmZhLXNwaW4sLmZhLXNwaW4tcHVsc2V7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6LTFtczthbmltYXRpb24tZGVsYXk6LTFtczstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjoxbXM7YW5pbWF0aW9uLWR1cmF0aW9uOjFtczstd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6MTthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OjE7LXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OjBzO3RyYW5zaXRpb24tZGVsYXk6MHM7LXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOjBzO3RyYW5zaXRpb24tZHVyYXRpb246MHN9fUAtd2Via2l0LWtleWZyYW1lcyBmYS1iZWF0ezAlLDkwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSl9NDUley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJlYXQtc2NhbGUsMS4yNSkpO3RyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1iZWF0LXNjYWxlLDEuMjUpKX19QGtleWZyYW1lcyBmYS1iZWF0ezAlLDkwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSl9NDUley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJlYXQtc2NhbGUsMS4yNSkpO3RyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1iZWF0LXNjYWxlLDEuMjUpKX19QC13ZWJraXQta2V5ZnJhbWVzIGZhLWJvdW5jZXswJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApO3RyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApfTEwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1ib3VuY2Utc3RhcnQtc2NhbGUteCwxLjEpLHZhcigtLWZhLWJvdW5jZS1zdGFydC1zY2FsZS15LC45KSkgdHJhbnNsYXRlWSgwKTt0cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXgsMS4xKSx2YXIoLS1mYS1ib3VuY2Utc3RhcnQtc2NhbGUteSwuOSkpIHRyYW5zbGF0ZVkoMCl9MzAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJvdW5jZS1qdW1wLXNjYWxlLXgsLjkpLHZhcigtLWZhLWJvdW5jZS1qdW1wLXNjYWxlLXksMS4xKSkgdHJhbnNsYXRlWSh2YXIoLS1mYS1ib3VuY2UtaGVpZ2h0LC0uNWVtKSk7dHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJvdW5jZS1qdW1wLXNjYWxlLXgsLjkpLHZhcigtLWZhLWJvdW5jZS1qdW1wLXNjYWxlLXksMS4xKSkgdHJhbnNsYXRlWSh2YXIoLS1mYS1ib3VuY2UtaGVpZ2h0LC0uNWVtKSl9NTAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXgsMS4wNSksdmFyKC0tZmEtYm91bmNlLWxhbmQtc2NhbGUteSwuOTUpKSB0cmFuc2xhdGVZKDApO3RyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1ib3VuY2UtbGFuZC1zY2FsZS14LDEuMDUpLHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXksLjk1KSkgdHJhbnNsYXRlWSgwKX01NyV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSh2YXIoLS1mYS1ib3VuY2UtcmVib3VuZCwtLjEyNWVtKSk7dHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkodmFyKC0tZmEtYm91bmNlLXJlYm91bmQsLS4xMjVlbSkpfTY0JXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApO3RyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApfXRvey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7dHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCl9fUBrZXlmcmFtZXMgZmEtYm91bmNlezAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7dHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCl9MTAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJvdW5jZS1zdGFydC1zY2FsZS14LDEuMSksdmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXksLjkpKSB0cmFuc2xhdGVZKDApO3RyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1ib3VuY2Utc3RhcnQtc2NhbGUteCwxLjEpLHZhcigtLWZhLWJvdW5jZS1zdGFydC1zY2FsZS15LC45KSkgdHJhbnNsYXRlWSgwKX0zMCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteCwuOSksdmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1oZWlnaHQsLS41ZW0pKTt0cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteCwuOSksdmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1oZWlnaHQsLS41ZW0pKX01MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYm91bmNlLWxhbmQtc2NhbGUteCwxLjA1KSx2YXIoLS1mYS1ib3VuY2UtbGFuZC1zY2FsZS15LC45NSkpIHRyYW5zbGF0ZVkoMCk7dHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXgsMS4wNSksdmFyKC0tZmEtYm91bmNlLWxhbmQtc2NhbGUteSwuOTUpKSB0cmFuc2xhdGVZKDApfTU3JXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1yZWJvdW5kLC0uMTI1ZW0pKTt0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSh2YXIoLS1mYS1ib3VuY2UtcmVib3VuZCwtLjEyNWVtKSl9NjQley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7dHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCl9dG97LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTt0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKX19QC13ZWJraXQta2V5ZnJhbWVzIGZhLWZhZGV7NTAle29wYWNpdHk6dmFyKC0tZmEtZmFkZS1vcGFjaXR5LC40KX19QGtleWZyYW1lcyBmYS1mYWRlezUwJXtvcGFjaXR5OnZhcigtLWZhLWZhZGUtb3BhY2l0eSwuNCl9fUAtd2Via2l0LWtleWZyYW1lcyBmYS1iZWF0LWZhZGV7MCUsdG97b3BhY2l0eTp2YXIoLS1mYS1iZWF0LWZhZGUtb3BhY2l0eSwuNCk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtOnNjYWxlKDEpfTUwJXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYmVhdC1mYWRlLXNjYWxlLDEuMTI1KSk7dHJhbnNmb3JtOnNjYWxlKHZhcigtLWZhLWJlYXQtZmFkZS1zY2FsZSwxLjEyNSkpfX1Aa2V5ZnJhbWVzIGZhLWJlYXQtZmFkZXswJSx0b3tvcGFjaXR5OnZhcigtLWZhLWJlYXQtZmFkZS1vcGFjaXR5LC40KTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSl9NTAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1mYS1iZWF0LWZhZGUtc2NhbGUsMS4xMjUpKTt0cmFuc2Zvcm06c2NhbGUodmFyKC0tZmEtYmVhdC1mYWRlLXNjYWxlLDEuMTI1KSl9fUAtd2Via2l0LWtleWZyYW1lcyBmYS1mbGlwezUwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsMCksdmFyKC0tZmEtZmxpcC15LDEpLHZhcigtLWZhLWZsaXAteiwwKSx2YXIoLS1mYS1mbGlwLWFuZ2xlLC0xODBkZWcpKTt0cmFuc2Zvcm06cm90YXRlM2QodmFyKC0tZmEtZmxpcC14LDApLHZhcigtLWZhLWZsaXAteSwxKSx2YXIoLS1mYS1mbGlwLXosMCksdmFyKC0tZmEtZmxpcC1hbmdsZSwtMTgwZGVnKSl9fUBrZXlmcmFtZXMgZmEtZmxpcHs1MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlM2QodmFyKC0tZmEtZmxpcC14LDApLHZhcigtLWZhLWZsaXAteSwxKSx2YXIoLS1mYS1mbGlwLXosMCksdmFyKC0tZmEtZmxpcC1hbmdsZSwtMTgwZGVnKSk7dHJhbnNmb3JtOnJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwwKSx2YXIoLS1mYS1mbGlwLXksMSksdmFyKC0tZmEtZmxpcC16LDApLHZhcigtLWZhLWZsaXAtYW5nbGUsLTE4MGRlZykpfX1ALXdlYmtpdC1rZXlmcmFtZXMgZmEtc2hha2V7MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtMTVkZWcpfTQley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxNWRlZyl9OCUsMjQley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMThkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTE4ZGVnKX0xMiUsMjgley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxOGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxOGRlZyl9MTYley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMjJkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTIyZGVnKX0yMCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDIyZGVnKTt0cmFuc2Zvcm06cm90YXRlKDIyZGVnKX0zMiV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xMmRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpfTM2JXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTJkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMTJkZWcpfTQwJSx0b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX19QGtleWZyYW1lcyBmYS1zaGFrZXswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTE1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC0xNWRlZyl9NCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDE1ZGVnKX04JSwyNCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xOGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtMThkZWcpfTEyJSwyOCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDE4ZGVnKX0xNiV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0yMmRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtMjJkZWcpfTIwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjJkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMjJkZWcpfTMyJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTEyZGVnKTt0cmFuc2Zvcm06cm90YXRlKC0xMmRlZyl9MzYley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMmRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgxMmRlZyl9NDAlLHRvey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfX1ALXdlYmtpdC1rZXlmcmFtZXMgZmEtc3BpbnswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pO3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1Aa2V5ZnJhbWVzIGZhLXNwaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDF0dXJuKTt0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19LmZhLXJvdGF0ZS05MHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS5mYS1yb3RhdGUtMTgwey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0uZmEtcm90YXRlLTI3MHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9LmZhLWZsaXAtaG9yaXpvbnRhbHstd2Via2l0LXRyYW5zZm9ybTpzY2FsZVgoLTEpO3RyYW5zZm9ybTpzY2FsZVgoLTEpfS5mYS1mbGlwLXZlcnRpY2Fsey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlWSgtMSk7dHJhbnNmb3JtOnNjYWxlWSgtMSl9LmZhLWZsaXAtYm90aCwuZmEtZmxpcC1ob3Jpem9udGFsLmZhLWZsaXAtdmVydGljYWx7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLTEpO3RyYW5zZm9ybTpzY2FsZSgtMSl9LmZhLXJvdGF0ZS1ieXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUodmFyKC0tZmEtcm90YXRlLWFuZ2xlLG5vbmUpKTt0cmFuc2Zvcm06cm90YXRlKHZhcigtLWZhLXJvdGF0ZS1hbmdsZSxub25lKSl9LmZhLXN0YWNre2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyZW07bGluZS1oZWlnaHQ6MmVtO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoyLjVlbX0uZmEtc3RhY2stMXgsLmZhLXN0YWNrLTJ4e2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlO3otaW5kZXg6dmFyKC0tZmEtc3RhY2stei1pbmRleCxhdXRvKX0uZmEtc3RhY2stMXh7bGluZS1oZWlnaHQ6aW5oZXJpdH0uZmEtc3RhY2stMnh7Zm9udC1zaXplOjJlbX0uZmEtaW52ZXJzZXtjb2xvcjp2YXIoLS1mYS1pbnZlcnNlLCNmZmYpfQoKLmZhLTA6YmVmb3Jle2NvbnRlbnQ6IlwzMCJ9LmZhLTE6YmVmb3Jle2NvbnRlbnQ6IlwzMSJ9LmZhLTI6YmVmb3Jle2NvbnRlbnQ6IlwzMiJ9LmZhLTM6YmVmb3Jle2NvbnRlbnQ6IlwzMyJ9LmZhLTQ6YmVmb3Jle2NvbnRlbnQ6IlwzNCJ9LmZhLTU6YmVmb3Jle2NvbnRlbnQ6IlwzNSJ9LmZhLTY6YmVmb3Jle2NvbnRlbnQ6IlwzNiJ9LmZhLTc6YmVmb3Jle2NvbnRlbnQ6IlwzNyJ9LmZhLTg6YmVmb3Jle2NvbnRlbnQ6IlwzOCJ9LmZhLTk6YmVmb3Jle2NvbnRlbnQ6IlwzOSJ9LmZhLWZpbGwtZHJpcDpiZWZvcmV7Y29udGVudDoiXGY1NzYifS5mYS1hcnJvd3MtdG8tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZTRiZCJ9LmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZSwuZmEtY2lyY2xlLWNoZXZyb24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTM4In0uZmEtYXQ6YmVmb3Jle2NvbnRlbnQ6Ilw0MCJ9LmZhLXRyYXNoLWFsdDpiZWZvcmUsLmZhLXRyYXNoLWNhbjpiZWZvcmV7Y29udGVudDoiXGYyZWQifS5mYS10ZXh0LWhlaWdodDpiZWZvcmV7Y29udGVudDoiXGYwMzQifS5mYS11c2VyLXRpbWVzOmJlZm9yZSwuZmEtdXNlci14bWFyazpiZWZvcmV7Y29udGVudDoiXGYyMzUifS5mYS1zdGV0aG9zY29wZTpiZWZvcmV7Y29udGVudDoiXGYwZjEifS5mYS1jb21tZW50LWFsdDpiZWZvcmUsLmZhLW1lc3NhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMjdhIn0uZmEtaW5mbzpiZWZvcmV7Y29udGVudDoiXGYxMjkifS5mYS1jb21wcmVzcy1hbHQ6YmVmb3JlLC5mYS1kb3duLWxlZnQtYW5kLXVwLXJpZ2h0LXRvLWNlbnRlcjpiZWZvcmV7Y29udGVudDoiXGY0MjIifS5mYS1leHBsb3Npb246YmVmb3Jle2NvbnRlbnQ6IlxlNGU5In0uZmEtZmlsZS1hbHQ6YmVmb3JlLC5mYS1maWxlLWxpbmVzOmJlZm9yZSwuZmEtZmlsZS10ZXh0OmJlZm9yZXtjb250ZW50OiJcZjE1YyJ9LmZhLXdhdmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjgzZSJ9LmZhLXJpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNzBiIn0uZmEtYnVpbGRpbmctdW46YmVmb3Jle2NvbnRlbnQ6IlxlNGQ5In0uZmEtZGljZS10aHJlZTpiZWZvcmV7Y29udGVudDoiXGY1MjcifS5mYS1jYWxlbmRhci1hbHQ6YmVmb3JlLC5mYS1jYWxlbmRhci1kYXlzOmJlZm9yZXtjb250ZW50OiJcZjA3MyJ9LmZhLWFuY2hvci1jaXJjbGUtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxlNGFhIn0uZmEtYnVpbGRpbmctY2lyY2xlLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZTRkMSJ9LmZhLXZvbGxleWJhbGwtYmFsbDpiZWZvcmUsLmZhLXZvbGxleWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDVmIn0uZmEtYXJyb3dzLXVwLXRvLWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxlNGMyIn0uZmEtc29ydC1kZXNjOmJlZm9yZSwuZmEtc29ydC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBkZCJ9LmZhLWNpcmNsZS1taW51czpiZWZvcmUsLmZhLW1pbnVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTYifS5mYS1kb29yLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmNTJiIn0uZmEtcmlnaHQtZnJvbS1icmFja2V0OmJlZm9yZSwuZmEtc2lnbi1vdXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmNSJ9LmZhLWF0b206YmVmb3Jle2NvbnRlbnQ6IlxmNWQyIn0uZmEtc29hcDpiZWZvcmV7Y29udGVudDoiXGUwNmUifS5mYS1oZWFydC1tdXNpYy1jYW1lcmEtYm9sdDpiZWZvcmUsLmZhLWljb25zOmJlZm9yZXtjb250ZW50OiJcZjg2ZCJ9LmZhLW1pY3JvcGhvbmUtYWx0LXNsYXNoOmJlZm9yZSwuZmEtbWljcm9waG9uZS1saW5lcy1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGY1MzkifS5mYS1icmlkZ2UtY2lyY2xlLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZTRjOSJ9LmZhLXB1bXAtbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGUwNmEifS5mYS1maW5nZXJwcmludDpiZWZvcmV7Y29udGVudDoiXGY1NzcifS5mYS1oYW5kLXBvaW50LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBhNCJ9LmZhLW1hZ25pZnlpbmctZ2xhc3MtbG9jYXRpb246YmVmb3JlLC5mYS1zZWFyY2gtbG9jYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNjg5In0uZmEtZm9yd2FyZC1zdGVwOmJlZm9yZSwuZmEtc3RlcC1mb3J3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA1MSJ9LmZhLWZhY2Utc21pbGUtYmVhbTpiZWZvcmUsLmZhLXNtaWxlLWJlYW06YmVmb3Jle2NvbnRlbnQ6IlxmNWI4In0uZmEtZmxhZy1jaGVja2VyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFlIn0uZmEtZm9vdGJhbGwtYmFsbDpiZWZvcmUsLmZhLWZvb3RiYWxsOmJlZm9yZXtjb250ZW50OiJcZjQ0ZSJ9LmZhLXNjaG9vbC1jaXJjbGUtZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxlNTZjIn0uZmEtY3JvcDpiZWZvcmV7Y29udGVudDoiXGYxMjUifS5mYS1hbmdsZS1kb3VibGUtZG93bjpiZWZvcmUsLmZhLWFuZ2xlcy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEwMyJ9LmZhLXVzZXJzLXJlY3RhbmdsZTpiZWZvcmV7Y29udGVudDoiXGU1OTQifS5mYS1wZW9wbGUtcm9vZjpiZWZvcmV7Y29udGVudDoiXGU1MzcifS5mYS1wZW9wbGUtbGluZTpiZWZvcmV7Y29udGVudDoiXGU1MzQifS5mYS1iZWVyLW11Zy1lbXB0eTpiZWZvcmUsLmZhLWJlZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGZjIn0uZmEtZGlhZ3JhbS1wcmVkZWNlc3NvcjpiZWZvcmV7Y29udGVudDoiXGU0NzcifS5mYS1hcnJvdy11cC1sb25nOmJlZm9yZSwuZmEtbG9uZy1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGYxNzYifS5mYS1idXJuOmJlZm9yZSwuZmEtZmlyZS1mbGFtZS1zaW1wbGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDZhIn0uZmEtbWFsZTpiZWZvcmUsLmZhLXBlcnNvbjpiZWZvcmV7Y29udGVudDoiXGYxODMifS5mYS1sYXB0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTA5In0uZmEtZmlsZS1jc3Y6YmVmb3Jle2NvbnRlbnQ6IlxmNmRkIn0uZmEtbWVub3JhaDpiZWZvcmV7Y29udGVudDoiXGY2NzYifS5mYS10cnVjay1wbGFuZTpiZWZvcmV7Y29udGVudDoiXGU1OGYifS5mYS1yZWNvcmQtdmlueWw6YmVmb3Jle2NvbnRlbnQ6IlxmOGQ5In0uZmEtZmFjZS1ncmluLXN0YXJzOmJlZm9yZSwuZmEtZ3Jpbi1zdGFyczpiZWZvcmV7Y29udGVudDoiXGY1ODcifS5mYS1ib25nOmJlZm9yZXtjb250ZW50OiJcZjU1YyJ9LmZhLXBhc3RhZmFyaWFuaXNtOmJlZm9yZSwuZmEtc3BhZ2hldHRpLW1vbnN0ZXItZmx5aW5nOmJlZm9yZXtjb250ZW50OiJcZjY3YiJ9LmZhLWFycm93LWRvd24tdXAtYWNyb3NzLWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxlNGFmIn0uZmEtc3Bvb246YmVmb3JlLC5mYS11dGVuc2lsLXNwb29uOmJlZm9yZXtjb250ZW50OiJcZjJlNSJ9LmZhLWphci13aGVhdDpiZWZvcmV7Y29udGVudDoiXGU1MTcifS5mYS1lbnZlbG9wZXMtYnVsazpiZWZvcmUsLmZhLW1haWwtYnVsazpiZWZvcmV7Y29udGVudDoiXGY2NzQifS5mYS1maWxlLWNpcmNsZS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGU0ZWIifS5mYS1jaXJjbGUtaDpiZWZvcmUsLmZhLWhvc3BpdGFsLXN5bWJvbDpiZWZvcmV7Y29udGVudDoiXGY0N2UifS5mYS1wYWdlcjpiZWZvcmV7Y29udGVudDoiXGY4MTUifS5mYS1hZGRyZXNzLWJvb2s6YmVmb3JlLC5mYS1jb250YWN0LWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMmI5In0uZmEtc3RyaWtldGhyb3VnaDpiZWZvcmV7Y29udGVudDoiXGYwY2MifS5mYS1rOmJlZm9yZXtjb250ZW50OiJcNGIifS5mYS1sYW5kbWFyay1mbGFnOmJlZm9yZXtjb250ZW50OiJcZTUxYyJ9LmZhLXBlbmNpbC1hbHQ6YmVmb3JlLC5mYS1wZW5jaWw6YmVmb3Jle2NvbnRlbnQ6IlxmMzAzIn0uZmEtYmFja3dhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDRhIn0uZmEtY2FyZXQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGRhIn0uZmEtY29tbWVudHM6YmVmb3Jle2NvbnRlbnQ6IlxmMDg2In0uZmEtZmlsZS1jbGlwYm9hcmQ6YmVmb3JlLC5mYS1wYXN0ZTpiZWZvcmV7Y29udGVudDoiXGYwZWEifS5mYS1jb2RlLXB1bGwtcmVxdWVzdDpiZWZvcmV7Y29udGVudDoiXGUxM2MifS5mYS1jbGlwYm9hcmQtbGlzdDpiZWZvcmV7Y29udGVudDoiXGY0NmQifS5mYS10cnVjay1sb2FkaW5nOmJlZm9yZSwuZmEtdHJ1Y2stcmFtcC1ib3g6YmVmb3Jle2NvbnRlbnQ6IlxmNGRlIn0uZmEtdXNlci1jaGVjazpiZWZvcmV7Y29udGVudDoiXGY0ZmMifS5mYS12aWFsLXZpcnVzOmJlZm9yZXtjb250ZW50OiJcZTU5NyJ9LmZhLXNoZWV0LXBsYXN0aWM6YmVmb3Jle2NvbnRlbnQ6IlxlNTcxIn0uZmEtYmxvZzpiZWZvcmV7Y29udGVudDoiXGY3ODEifS5mYS11c2VyLW5pbmphOmJlZm9yZXtjb250ZW50OiJcZjUwNCJ9LmZhLXBlcnNvbi1hcnJvdy11cC1mcm9tLWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxlNTM5In0uZmEtc2Nyb2xsLXRvcmFoOmJlZm9yZSwuZmEtdG9yYWg6YmVmb3Jle2NvbnRlbnQ6IlxmNmEwIn0uZmEtYnJvb20tYmFsbDpiZWZvcmUsLmZhLXF1aWRkaXRjaC1icm9vbS1iYWxsOmJlZm9yZSwuZmEtcXVpZGRpdGNoOmJlZm9yZXtjb250ZW50OiJcZjQ1OCJ9LmZhLXRvZ2dsZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxmMjA0In0uZmEtYXJjaGl2ZTpiZWZvcmUsLmZhLWJveC1hcmNoaXZlOmJlZm9yZXtjb250ZW50OiJcZjE4NyJ9LmZhLXBlcnNvbi1kcm93bmluZzpiZWZvcmV7Y29udGVudDoiXGU1NDUifS5mYS1hcnJvdy1kb3duLTktMTpiZWZvcmUsLmZhLXNvcnQtbnVtZXJpYy1kZXNjOmJlZm9yZSwuZmEtc29ydC1udW1lcmljLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4NiJ9LmZhLWZhY2UtZ3Jpbi10b25ndWUtc3F1aW50OmJlZm9yZSwuZmEtZ3Jpbi10b25ndWUtc3F1aW50OmJlZm9yZXtjb250ZW50OiJcZjU4YSJ9LmZhLXNwcmF5LWNhbjpiZWZvcmV7Y29udGVudDoiXGY1YmQifS5mYS10cnVjay1tb25zdGVyOmJlZm9yZXtjb250ZW50OiJcZjYzYiJ9LmZhLXc6YmVmb3Jle2NvbnRlbnQ6Ilw1NyJ9LmZhLWVhcnRoLWFmcmljYTpiZWZvcmUsLmZhLWdsb2JlLWFmcmljYTpiZWZvcmV7Y29udGVudDoiXGY1N2MifS5mYS1yYWluYm93OmJlZm9yZXtjb250ZW50OiJcZjc1YiJ9LmZhLWNpcmNsZS1ub3RjaDpiZWZvcmV7Y29udGVudDoiXGYxY2UifS5mYS10YWJsZXQtYWx0OmJlZm9yZSwuZmEtdGFibGV0LXNjcmVlbi1idXR0b246YmVmb3Jle2NvbnRlbnQ6IlxmM2ZhIn0uZmEtcGF3OmJlZm9yZXtjb250ZW50OiJcZjFiMCJ9LmZhLWNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjBjMiJ9LmZhLXRyb3dlbC1icmlja3M6YmVmb3Jle2NvbnRlbnQ6IlxlNThhIn0uZmEtZmFjZS1mbHVzaGVkOmJlZm9yZSwuZmEtZmx1c2hlZDpiZWZvcmV7Y29udGVudDoiXGY1NzkifS5mYS1ob3NwaXRhbC11c2VyOmJlZm9yZXtjb250ZW50OiJcZjgwZCJ9LmZhLXRlbnQtYXJyb3ctbGVmdC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGU1N2YifS5mYS1nYXZlbDpiZWZvcmUsLmZhLWxlZ2FsOmJlZm9yZXtjb250ZW50OiJcZjBlMyJ9LmZhLWJpbm9jdWxhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMWU1In0uZmEtbWljcm9waG9uZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYxMzEifS5mYS1ib3gtdGlzc3VlOmJlZm9yZXtjb250ZW50OiJcZTA1YiJ9LmZhLW1vdG9yY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjFjIn0uZmEtYmVsbC1jb25jaWVyZ2U6YmVmb3JlLC5mYS1jb25jaWVyZ2UtYmVsbDpiZWZvcmV7Y29udGVudDoiXGY1NjIifS5mYS1wZW4tcnVsZXI6YmVmb3JlLC5mYS1wZW5jaWwtcnVsZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWFlIn0uZmEtcGVvcGxlLWFycm93cy1sZWZ0LXJpZ2h0OmJlZm9yZSwuZmEtcGVvcGxlLWFycm93czpiZWZvcmV7Y29udGVudDoiXGUwNjgifS5mYS1tYXJzLWFuZC12ZW51cy1idXJzdDpiZWZvcmV7Y29udGVudDoiXGU1MjMifS5mYS1jYXJldC1zcXVhcmUtcmlnaHQ6YmVmb3JlLC5mYS1zcXVhcmUtY2FyZXQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTUyIn0uZmEtY3V0OmJlZm9yZSwuZmEtc2Npc3NvcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGM0In0uZmEtc3VuLXBsYW50LXdpbHQ6YmVmb3Jle2NvbnRlbnQ6IlxlNTdhIn0uZmEtdG9pbGV0cy1wb3J0YWJsZTpiZWZvcmV7Y29udGVudDoiXGU1ODQifS5mYS1ob2NrZXktcHVjazpiZWZvcmV7Y29udGVudDoiXGY0NTMifS5mYS10YWJsZTpiZWZvcmV7Y29udGVudDoiXGYwY2UifS5mYS1tYWduaWZ5aW5nLWdsYXNzLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZTUyMSJ9LmZhLWRpZ2l0YWwtdGFjaG9ncmFwaDpiZWZvcmUsLmZhLXRhY2hvZ3JhcGgtZGlnaXRhbDpiZWZvcmV7Y29udGVudDoiXGY1NjYifS5mYS11c2Vycy1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGUwNzMifS5mYS1jbG92ZXI6YmVmb3Jle2NvbnRlbnQ6IlxlMTM5In0uZmEtbWFpbC1yZXBseTpiZWZvcmUsLmZhLXJlcGx5OmJlZm9yZXtjb250ZW50OiJcZjNlNSJ9LmZhLXN0YXItYW5kLWNyZXNjZW50OmJlZm9yZXtjb250ZW50OiJcZjY5OSJ9LmZhLWhvdXNlLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxlNTBjIn0uZmEtbWludXMtc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjE0NiJ9LmZhLWhlbGljb3B0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTMzIn0uZmEtY29tcGFzczpiZWZvcmV7Y29udGVudDoiXGYxNGUifS5mYS1jYXJldC1zcXVhcmUtZG93bjpiZWZvcmUsLmZhLXNxdWFyZS1jYXJldC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1MCJ9LmZhLWZpbGUtY2lyY2xlLXF1ZXN0aW9uOmJlZm9yZXtjb250ZW50OiJcZTRlZiJ9LmZhLWxhcHRvcC1jb2RlOmJlZm9yZXtjb250ZW50OiJcZjVmYyJ9LmZhLXN3YXRjaGJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmNWMzIn0uZmEtcHJlc2NyaXB0aW9uLWJvdHRsZTpiZWZvcmV7Y29udGVudDoiXGY0ODUifS5mYS1iYXJzOmJlZm9yZSwuZmEtbmF2aWNvbjpiZWZvcmV7Y29udGVudDoiXGYwYzkifS5mYS1wZW9wbGUtZ3JvdXA6YmVmb3Jle2NvbnRlbnQ6IlxlNTMzIn0uZmEtaG91cmdsYXNzLTM6YmVmb3JlLC5mYS1ob3VyZ2xhc3MtZW5kOmJlZm9yZXtjb250ZW50OiJcZjI1MyJ9LmZhLWhlYXJ0LWJyb2tlbjpiZWZvcmUsLmZhLWhlYXJ0LWNyYWNrOmJlZm9yZXtjb250ZW50OiJcZjdhOSJ9LmZhLWV4dGVybmFsLWxpbmstc3F1YXJlLWFsdDpiZWZvcmUsLmZhLXNxdWFyZS11cC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNjAifS5mYS1mYWNlLWtpc3MtYmVhbTpiZWZvcmUsLmZhLWtpc3MtYmVhbTpiZWZvcmV7Y29udGVudDoiXGY1OTcifS5mYS1maWxtOmJlZm9yZXtjb250ZW50OiJcZjAwOCJ9LmZhLXJ1bGVyLWhvcml6b250YWw6YmVmb3Jle2NvbnRlbnQ6IlxmNTQ3In0uZmEtcGVvcGxlLXJvYmJlcnk6YmVmb3Jle2NvbnRlbnQ6IlxlNTM2In0uZmEtbGlnaHRidWxiOmJlZm9yZXtjb250ZW50OiJcZjBlYiJ9LmZhLWNhcmV0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ5In0uZmEtY2lyY2xlLWV4Y2xhbWF0aW9uOmJlZm9yZSwuZmEtZXhjbGFtYXRpb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA2YSJ9LmZhLXNjaG9vbC1jaXJjbGUteG1hcms6YmVmb3Jle2NvbnRlbnQ6IlxlNTZkIn0uZmEtYXJyb3ctcmlnaHQtZnJvbS1icmFja2V0OmJlZm9yZSwuZmEtc2lnbi1vdXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDhiIn0uZmEtY2hldnJvbi1jaXJjbGUtZG93bjpiZWZvcmUsLmZhLWNpcmNsZS1jaGV2cm9uLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTNhIn0uZmEtdW5sb2NrLWFsdDpiZWZvcmUsLmZhLXVubG9jay1rZXlob2xlOmJlZm9yZXtjb250ZW50OiJcZjEzZSJ9LmZhLWNsb3VkLXNob3dlcnMtaGVhdnk6YmVmb3Jle2NvbnRlbnQ6IlxmNzQwIn0uZmEtaGVhZHBob25lcy1hbHQ6YmVmb3JlLC5mYS1oZWFkcGhvbmVzLXNpbXBsZTpiZWZvcmV7Y29udGVudDoiXGY1OGYifS5mYS1zaXRlbWFwOmJlZm9yZXtjb250ZW50OiJcZjBlOCJ9LmZhLWNpcmNsZS1kb2xsYXItdG8tc2xvdDpiZWZvcmUsLmZhLWRvbmF0ZTpiZWZvcmV7Y29udGVudDoiXGY0YjkifS5mYS1tZW1vcnk6YmVmb3Jle2NvbnRlbnQ6IlxmNTM4In0uZmEtcm9hZC1zcGlrZXM6YmVmb3Jle2NvbnRlbnQ6IlxlNTY4In0uZmEtZmlyZS1idXJuZXI6YmVmb3Jle2NvbnRlbnQ6IlxlNGYxIn0uZmEtZmxhZzpiZWZvcmV7Y29udGVudDoiXGYwMjQifS5mYS1oYW51a2lhaDpiZWZvcmV7Y29udGVudDoiXGY2ZTYifS5mYS1mZWF0aGVyOmJlZm9yZXtjb250ZW50OiJcZjUyZCJ9LmZhLXZvbHVtZS1kb3duOmJlZm9yZSwuZmEtdm9sdW1lLWxvdzpiZWZvcmV7Y29udGVudDoiXGYwMjcifS5mYS1jb21tZW50LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjRiMyJ9LmZhLWNsb3VkLXN1bi1yYWluOmJlZm9yZXtjb250ZW50OiJcZjc0MyJ9LmZhLWNvbXByZXNzOmJlZm9yZXtjb250ZW50OiJcZjA2NiJ9LmZhLXdoZWF0LWFsdDpiZWZvcmUsLmZhLXdoZWF0LWF3bjpiZWZvcmV7Y29udGVudDoiXGUyY2QifS5mYS1hbmtoOmJlZm9yZXtjb250ZW50OiJcZjY0NCJ9LmZhLWhhbmRzLWhvbGRpbmctY2hpbGQ6YmVmb3Jle2NvbnRlbnQ6IlxlNGZhIn0uZmEtYXN0ZXJpc2s6YmVmb3Jle2NvbnRlbnQ6IlwyYSJ9LmZhLWNoZWNrLXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYxNGEifS5mYS1wZXNldGEtc2lnbjpiZWZvcmV7Y29udGVudDoiXGUyMjEifS5mYS1oZWFkZXI6YmVmb3JlLC5mYS1oZWFkaW5nOmJlZm9yZXtjb250ZW50OiJcZjFkYyJ9LmZhLWdob3N0OmJlZm9yZXtjb250ZW50OiJcZjZlMiJ9LmZhLWxpc3Qtc3F1YXJlczpiZWZvcmUsLmZhLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDNhIn0uZmEtcGhvbmUtc3F1YXJlLWFsdDpiZWZvcmUsLmZhLXNxdWFyZS1waG9uZS1mbGlwOmJlZm9yZXtjb250ZW50OiJcZjg3YiJ9LmZhLWNhcnQtcGx1czpiZWZvcmV7Y29udGVudDoiXGYyMTcifS5mYS1nYW1lcGFkOmJlZm9yZXtjb250ZW50OiJcZjExYiJ9LmZhLWNpcmNsZS1kb3Q6YmVmb3JlLC5mYS1kb3QtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjE5MiJ9LmZhLWRpenp5OmJlZm9yZSwuZmEtZmFjZS1kaXp6eTpiZWZvcmV7Y29udGVudDoiXGY1NjcifS5mYS1lZ2c6YmVmb3Jle2NvbnRlbnQ6IlxmN2ZiIn0uZmEtaG91c2UtbWVkaWNhbC1jaXJjbGUteG1hcms6YmVmb3Jle2NvbnRlbnQ6IlxlNTEzIn0uZmEtY2FtcGdyb3VuZDpiZWZvcmV7Y29udGVudDoiXGY2YmIifS5mYS1mb2xkZXItcGx1czpiZWZvcmV7Y29udGVudDoiXGY2NWUifS5mYS1mdXRib2wtYmFsbDpiZWZvcmUsLmZhLWZ1dGJvbDpiZWZvcmUsLmZhLXNvY2Nlci1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjFlMyJ9LmZhLXBhaW50LWJydXNoOmJlZm9yZSwuZmEtcGFpbnRicnVzaDpiZWZvcmV7Y29udGVudDoiXGYxZmMifS5mYS1sb2NrOmJlZm9yZXtjb250ZW50OiJcZjAyMyJ9LmZhLWdhcy1wdW1wOmJlZm9yZXtjb250ZW50OiJcZjUyZiJ9LmZhLWhvdC10dWItcGVyc29uOmJlZm9yZSwuZmEtaG90LXR1YjpiZWZvcmV7Y29udGVudDoiXGY1OTMifS5mYS1tYXAtbG9jYXRpb246YmVmb3JlLC5mYS1tYXAtbWFya2VkOmJlZm9yZXtjb250ZW50OiJcZjU5ZiJ9LmZhLWhvdXNlLWZsb29kLXdhdGVyOmJlZm9yZXtjb250ZW50OiJcZTUwZSJ9LmZhLXRyZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMWJiIn0uZmEtYnJpZGdlLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxlNGNjIn0uZmEtc2Fjay1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmODFkIn0uZmEtZWRpdDpiZWZvcmUsLmZhLXBlbi10by1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ0In0uZmEtY2FyLXNpZGU6YmVmb3Jle2NvbnRlbnQ6IlxmNWU0In0uZmEtc2hhcmUtYWx0OmJlZm9yZSwuZmEtc2hhcmUtbm9kZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWUwIn0uZmEtaGVhcnQtY2lyY2xlLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZTRmZiJ9LmZhLWhvdXJnbGFzcy0yOmJlZm9yZSwuZmEtaG91cmdsYXNzLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMjUyIn0uZmEtbWljcm9zY29wZTpiZWZvcmV7Y29udGVudDoiXGY2MTAifS5mYS1zaW5rOmJlZm9yZXtjb250ZW50OiJcZTA2ZCJ9LmZhLWJhZy1zaG9wcGluZzpiZWZvcmUsLmZhLXNob3BwaW5nLWJhZzpiZWZvcmV7Y29udGVudDoiXGYyOTAifS5mYS1hcnJvdy1kb3duLXotYTpiZWZvcmUsLmZhLXNvcnQtYWxwaGEtZGVzYzpiZWZvcmUsLmZhLXNvcnQtYWxwaGEtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODgxIn0uZmEtbWl0dGVuOmJlZm9yZXtjb250ZW50OiJcZjdiNSJ9LmZhLXBlcnNvbi1yYXlzOmJlZm9yZXtjb250ZW50OiJcZTU0ZCJ9LmZhLXVzZXJzOmJlZm9yZXtjb250ZW50OiJcZjBjMCJ9LmZhLWV5ZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYwNzAifS5mYS1mbGFzay12aWFsOmJlZm9yZXtjb250ZW50OiJcZTRmMyJ9LmZhLWhhbmQtcGFwZXI6YmVmb3JlLC5mYS1oYW5kOmJlZm9yZXtjb250ZW50OiJcZjI1NiJ9LmZhLW9tOmJlZm9yZXtjb250ZW50OiJcZjY3OSJ9LmZhLXdvcm06YmVmb3Jle2NvbnRlbnQ6IlxlNTk5In0uZmEtaG91c2UtY2lyY2xlLXhtYXJrOmJlZm9yZXtjb250ZW50OiJcZTUwYiJ9LmZhLXBsdWc6YmVmb3Jle2NvbnRlbnQ6IlxmMWU2In0uZmEtY2hldnJvbi11cDpiZWZvcmV7Y29udGVudDoiXGYwNzcifS5mYS1oYW5kLXNwb2NrOmJlZm9yZXtjb250ZW50OiJcZjI1OSJ9LmZhLXN0b3B3YXRjaDpiZWZvcmV7Y29udGVudDoiXGYyZjIifS5mYS1mYWNlLWtpc3M6YmVmb3JlLC5mYS1raXNzOmJlZm9yZXtjb250ZW50OiJcZjU5NiJ9LmZhLWJyaWRnZS1jaXJjbGUteG1hcms6YmVmb3Jle2NvbnRlbnQ6IlxlNGNiIn0uZmEtZmFjZS1ncmluLXRvbmd1ZTpiZWZvcmUsLmZhLWdyaW4tdG9uZ3VlOmJlZm9yZXtjb250ZW50OiJcZjU4OSJ9LmZhLWNoZXNzLWJpc2hvcDpiZWZvcmV7Y29udGVudDoiXGY0M2EifS5mYS1mYWNlLWdyaW4td2luazpiZWZvcmUsLmZhLWdyaW4td2luazpiZWZvcmV7Y29udGVudDoiXGY1OGMifS5mYS1kZWFmOmJlZm9yZSwuZmEtZGVhZm5lc3M6YmVmb3JlLC5mYS1lYXItZGVhZjpiZWZvcmUsLmZhLWhhcmQtb2YtaGVhcmluZzpiZWZvcmV7Y29udGVudDoiXGYyYTQifS5mYS1yb2FkLWNpcmNsZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGU1NjQifS5mYS1kaWNlLWZpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmNTIzIn0uZmEtcnNzLXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1yc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTQzIn0uZmEtbGFuZC1taW5lLW9uOmJlZm9yZXtjb250ZW50OiJcZTUxYiJ9LmZhLWktY3Vyc29yOmJlZm9yZXtjb250ZW50OiJcZjI0NiJ9LmZhLXN0YW1wOmJlZm9yZXtjb250ZW50OiJcZjViZiJ9LmZhLXN0YWlyczpiZWZvcmV7Y29udGVudDoiXGUyODkifS5mYS1pOmJlZm9yZXtjb250ZW50OiJcNDkifS5mYS1ocnl2bmlhLXNpZ246YmVmb3JlLC5mYS1ocnl2bmlhOmJlZm9yZXtjb250ZW50OiJcZjZmMiJ9LmZhLXBpbGxzOmJlZm9yZXtjb250ZW50OiJcZjQ4NCJ9LmZhLWZhY2UtZ3Jpbi13aWRlOmJlZm9yZSwuZmEtZ3Jpbi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTgxIn0uZmEtdG9vdGg6YmVmb3Jle2NvbnRlbnQ6IlxmNWM5In0uZmEtdjpiZWZvcmV7Y29udGVudDoiXDU2In0uZmEtYmFuZ2xhZGVzaGktdGFrYS1zaWduOmJlZm9yZXtjb250ZW50OiJcZTJlNiJ9LmZhLWJpY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjA2In0uZmEtcm9kLWFzY2xlcGl1czpiZWZvcmUsLmZhLXJvZC1zbmFrZTpiZWZvcmUsLmZhLXN0YWZmLWFlc2N1bGFwaXVzOmJlZm9yZSwuZmEtc3RhZmYtc25ha2U6YmVmb3Jle2NvbnRlbnQ6IlxlNTc5In0uZmEtaGVhZC1zaWRlLWNvdWdoLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTA2MiJ9LmZhLWFtYnVsYW5jZTpiZWZvcmUsLmZhLXRydWNrLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMGY5In0uZmEtd2hlYXQtYXduLWNpcmNsZS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGU1OTgifS5mYS1zbm93bWFuOmJlZm9yZXtjb250ZW50OiJcZjdkMCJ9LmZhLW1vcnRhci1wZXN0bGU6YmVmb3Jle2NvbnRlbnQ6IlxmNWE3In0uZmEtcm9hZC1iYXJyaWVyOmJlZm9yZXtjb250ZW50OiJcZTU2MiJ9LmZhLXNjaG9vbDpiZWZvcmV7Y29udGVudDoiXGY1NDkifS5mYS1pZ2xvbzpiZWZvcmV7Y29udGVudDoiXGY3YWUifS5mYS1qb2ludDpiZWZvcmV7Y29udGVudDoiXGY1OTUifS5mYS1hbmdsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDUifS5mYS1ob3JzZTpiZWZvcmV7Y29udGVudDoiXGY2ZjAifS5mYS1xOmJlZm9yZXtjb250ZW50OiJcNTEifS5mYS1nOmJlZm9yZXtjb250ZW50OiJcNDcifS5mYS1ub3Rlcy1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjQ4MSJ9LmZhLXRlbXBlcmF0dXJlLTI6YmVmb3JlLC5mYS10ZW1wZXJhdHVyZS1oYWxmOmJlZm9yZSwuZmEtdGhlcm1vbWV0ZXItMjpiZWZvcmUsLmZhLXRoZXJtb21ldGVyLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMmM5In0uZmEtZG9uZy1zaWduOmJlZm9yZXtjb250ZW50OiJcZTE2OSJ9LmZhLWNhcHN1bGVzOmJlZm9yZXtjb250ZW50OiJcZjQ2YiJ9LmZhLXBvby1ib2x0OmJlZm9yZSwuZmEtcG9vLXN0b3JtOmJlZm9yZXtjb250ZW50OiJcZjc1YSJ9LmZhLWZhY2UtZnJvd24tb3BlbjpiZWZvcmUsLmZhLWZyb3duLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmNTdhIn0uZmEtaGFuZC1wb2ludC11cDpiZWZvcmV7Y29udGVudDoiXGYwYTYifS5mYS1tb25leS1iaWxsOmJlZm9yZXtjb250ZW50OiJcZjBkNiJ9LmZhLWJvb2ttYXJrOmJlZm9yZXtjb250ZW50OiJcZjAyZSJ9LmZhLWFsaWduLWp1c3RpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMDM5In0uZmEtdW1icmVsbGEtYmVhY2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWNhIn0uZmEtaGVsbWV0LXVuOmJlZm9yZXtjb250ZW50OiJcZTUwMyJ9LmZhLWJ1bGxzZXllOmJlZm9yZXtjb250ZW50OiJcZjE0MCJ9LmZhLWJhY29uOmJlZm9yZXtjb250ZW50OiJcZjdlNSJ9LmZhLWhhbmQtcG9pbnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYTcifS5mYS1hcnJvdy11cC1mcm9tLWJyYWNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDlhIn0uZmEtZm9sZGVyLWJsYW5rOmJlZm9yZSwuZmEtZm9sZGVyOmJlZm9yZXtjb250ZW50OiJcZjA3YiJ9LmZhLWZpbGUtbWVkaWNhbC1hbHQ6YmVmb3JlLC5mYS1maWxlLXdhdmVmb3JtOmJlZm9yZXtjb250ZW50OiJcZjQ3OCJ9LmZhLXJhZGlhdGlvbjpiZWZvcmV7Y29udGVudDoiXGY3YjkifS5mYS1jaGFydC1zaW1wbGU6YmVmb3Jle2NvbnRlbnQ6IlxlNDczIn0uZmEtbWFycy1zdHJva2U6YmVmb3Jle2NvbnRlbnQ6IlxmMjI5In0uZmEtdmlhbDpiZWZvcmV7Y29udGVudDoiXGY0OTIifS5mYS1kYXNoYm9hcmQ6YmVmb3JlLC5mYS1nYXVnZS1tZWQ6YmVmb3JlLC5mYS1nYXVnZTpiZWZvcmUsLmZhLXRhY2hvbWV0ZXItYWx0LWF2ZXJhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmNjI0In0uZmEtbWFnaWMtd2FuZC1zcGFya2xlczpiZWZvcmUsLmZhLXdhbmQtbWFnaWMtc3BhcmtsZXM6YmVmb3Jle2NvbnRlbnQ6IlxlMmNhIn0uZmEtZTpiZWZvcmV7Y29udGVudDoiXDQ1In0uZmEtcGVuLWFsdDpiZWZvcmUsLmZhLXBlbi1jbGlwOmJlZm9yZXtjb250ZW50OiJcZjMwNSJ9LmZhLWJyaWRnZS1jaXJjbGUtZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxlNGNhIn0uZmEtdXNlcjpiZWZvcmV7Y29udGVudDoiXGYwMDcifS5mYS1zY2hvb2wtY2lyY2xlLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZTU2YiJ9LmZhLWR1bXBzdGVyOmJlZm9yZXtjb250ZW50OiJcZjc5MyJ9LmZhLXNodXR0bGUtdmFuOmJlZm9yZSwuZmEtdmFuLXNodXR0bGU6YmVmb3Jle2NvbnRlbnQ6IlxmNWI2In0uZmEtYnVpbGRpbmctdXNlcjpiZWZvcmV7Y29udGVudDoiXGU0ZGEifS5mYS1jYXJldC1zcXVhcmUtbGVmdDpiZWZvcmUsLmZhLXNxdWFyZS1jYXJldC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjE5MSJ9LmZhLWhpZ2hsaWdodGVyOmJlZm9yZXtjb250ZW50OiJcZjU5MSJ9LmZhLWtleTpiZWZvcmV7Y29udGVudDoiXGYwODQifS5mYS1idWxsaG9ybjpiZWZvcmV7Y29udGVudDoiXGYwYTEifS5mYS1nbG9iZTpiZWZvcmV7Y29udGVudDoiXGYwYWMifS5mYS1zeW5hZ29ndWU6YmVmb3Jle2NvbnRlbnQ6IlxmNjliIn0uZmEtcGVyc29uLWhhbGYtZHJlc3M6YmVmb3Jle2NvbnRlbnQ6IlxlNTQ4In0uZmEtcm9hZC1icmlkZ2U6YmVmb3Jle2NvbnRlbnQ6IlxlNTYzIn0uZmEtbG9jYXRpb24tYXJyb3c6YmVmb3Jle2NvbnRlbnQ6IlxmMTI0In0uZmEtYzpiZWZvcmV7Y29udGVudDoiXDQzIn0uZmEtdGFibGV0LWJ1dHRvbjpiZWZvcmV7Y29udGVudDoiXGYxMGEifS5mYS1idWlsZGluZy1sb2NrOmJlZm9yZXtjb250ZW50OiJcZTRkNiJ9LmZhLXBpenphLXNsaWNlOmJlZm9yZXtjb250ZW50OiJcZjgxOCJ9LmZhLW1vbmV5LWJpbGwtd2F2ZTpiZWZvcmV7Y29udGVudDoiXGY1M2EifS5mYS1hcmVhLWNoYXJ0OmJlZm9yZSwuZmEtY2hhcnQtYXJlYTpiZWZvcmV7Y29udGVudDoiXGYxZmUifS5mYS1ob3VzZS1mbGFnOmJlZm9yZXtjb250ZW50OiJcZTUwZCJ9LmZhLXBlcnNvbi1jaXJjbGUtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxlNTQwIn0uZmEtYmFuOmJlZm9yZSwuZmEtY2FuY2VsOmJlZm9yZXtjb250ZW50OiJcZjA1ZSJ9LmZhLWNhbWVyYS1yb3RhdGU6YmVmb3Jle2NvbnRlbnQ6IlxlMGQ4In0uZmEtYWlyLWZyZXNoZW5lcjpiZWZvcmUsLmZhLXNwcmF5LWNhbi1zcGFya2xlczpiZWZvcmV7Y29udGVudDoiXGY1ZDAifS5mYS1zdGFyOmJlZm9yZXtjb250ZW50OiJcZjAwNSJ9LmZhLXJlcGVhdDpiZWZvcmV7Y29udGVudDoiXGYzNjMifS5mYS1jcm9zczpiZWZvcmV7Y29udGVudDoiXGY2NTQifS5mYS1ib3g6YmVmb3Jle2NvbnRlbnQ6IlxmNDY2In0uZmEtdmVudXMtbWFyczpiZWZvcmV7Y29udGVudDoiXGYyMjgifS5mYS1hcnJvdy1wb2ludGVyOmJlZm9yZSwuZmEtbW91c2UtcG9pbnRlcjpiZWZvcmV7Y29udGVudDoiXGYyNDUifS5mYS1leHBhbmQtYXJyb3dzLWFsdDpiZWZvcmUsLmZhLW1heGltaXplOmJlZm9yZXtjb250ZW50OiJcZjMxZSJ9LmZhLWNoYXJnaW5nLXN0YXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNWU3In0uZmEtc2hhcGVzOmJlZm9yZSwuZmEtdHJpYW5nbGUtY2lyY2xlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY2MWYifS5mYS1yYW5kb206YmVmb3JlLC5mYS1zaHVmZmxlOmJlZm9yZXtjb250ZW50OiJcZjA3NCJ9LmZhLXBlcnNvbi1ydW5uaW5nOmJlZm9yZSwuZmEtcnVubmluZzpiZWZvcmV7Y29udGVudDoiXGY3MGMifS5mYS1tb2JpbGUtcmV0cm86YmVmb3Jle2NvbnRlbnQ6IlxlNTI3In0uZmEtZ3JpcC1saW5lcy12ZXJ0aWNhbDpiZWZvcmV7Y29udGVudDoiXGY3YTUifS5mYS1zcGlkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNzE3In0uZmEtaGFuZHMtYm91bmQ6YmVmb3Jle2NvbnRlbnQ6IlxlNGY5In0uZmEtZmlsZS1pbnZvaWNlLWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY1NzEifS5mYS1wbGFuZS1jaXJjbGUtZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxlNTU2In0uZmEteC1yYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDk3In0uZmEtc3BlbGwtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmODkxIn0uZmEtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNzE1In0uZmEtY29tcHV0ZXItbW91c2U6YmVmb3JlLC5mYS1tb3VzZTpiZWZvcmV7Y29udGVudDoiXGY4Y2MifS5mYS1hcnJvdy1yaWdodC10by1icmFja2V0OmJlZm9yZSwuZmEtc2lnbi1pbjpiZWZvcmV7Y29udGVudDoiXGYwOTAifS5mYS1zaG9wLXNsYXNoOmJlZm9yZSwuZmEtc3RvcmUtYWx0LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTA3MCJ9LmZhLXNlcnZlcjpiZWZvcmV7Y29udGVudDoiXGYyMzMifS5mYS12aXJ1cy1jb3ZpZC1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGU0YTkifS5mYS1zaG9wLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxlNGE1In0uZmEtaG91cmdsYXNzLTE6YmVmb3JlLC5mYS1ob3VyZ2xhc3Mtc3RhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjUxIn0uZmEtYmxlbmRlci1waG9uZTpiZWZvcmV7Y29udGVudDoiXGY2YjYifS5mYS1idWlsZGluZy13aGVhdDpiZWZvcmV7Y29udGVudDoiXGU0ZGIifS5mYS1wZXJzb24tYnJlYXN0ZmVlZGluZzpiZWZvcmV7Y29udGVudDoiXGU1M2EifS5mYS1yaWdodC10by1icmFja2V0OmJlZm9yZSwuZmEtc2lnbi1pbi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY2In0uZmEtdmVudXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjIxIn0uZmEtcGFzc3BvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNWFiIn0uZmEtaGVhcnQtcHVsc2U6YmVmb3JlLC5mYS1oZWFydGJlYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjFlIn0uZmEtcGVvcGxlLWNhcnJ5LWJveDpiZWZvcmUsLmZhLXBlb3BsZS1jYXJyeTpiZWZvcmV7Y29udGVudDoiXGY0Y2UifS5mYS10ZW1wZXJhdHVyZS1oaWdoOmJlZm9yZXtjb250ZW50OiJcZjc2OSJ9LmZhLW1pY3JvY2hpcDpiZWZvcmV7Y29udGVudDoiXGYyZGIifS5mYS1jcm93bjpiZWZvcmV7Y29udGVudDoiXGY1MjEifS5mYS13ZWlnaHQtaGFuZ2luZzpiZWZvcmV7Y29udGVudDoiXGY1Y2QifS5mYS14bWFya3MtbGluZXM6YmVmb3Jle2NvbnRlbnQ6IlxlNTlhIn0uZmEtZmlsZS1wcmVzY3JpcHRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNTcyIn0uZmEtd2VpZ2h0LXNjYWxlOmJlZm9yZSwuZmEtd2VpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjQ5NiJ9LmZhLXVzZXItZnJpZW5kczpiZWZvcmUsLmZhLXVzZXItZ3JvdXA6YmVmb3Jle2NvbnRlbnQ6IlxmNTAwIn0uZmEtYXJyb3ctdXAtYS16OmJlZm9yZSwuZmEtc29ydC1hbHBoYS11cDpiZWZvcmV7Y29udGVudDoiXGYxNWUifS5mYS1jaGVzcy1rbmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDQxIn0uZmEtZmFjZS1sYXVnaC1zcXVpbnQ6YmVmb3JlLC5mYS1sYXVnaC1zcXVpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTliIn0uZmEtd2hlZWxjaGFpcjpiZWZvcmV7Y29udGVudDoiXGYxOTMifS5mYS1hcnJvdy1jaXJjbGUtdXA6YmVmb3JlLC5mYS1jaXJjbGUtYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGFhIn0uZmEtdG9nZ2xlLW9uOmJlZm9yZXtjb250ZW50OiJcZjIwNSJ9LmZhLXBlcnNvbi13YWxraW5nOmJlZm9yZSwuZmEtd2Fsa2luZzpiZWZvcmV7Y29udGVudDoiXGY1NTQifS5mYS1sOmJlZm9yZXtjb250ZW50OiJcNGMifS5mYS1maXJlOmJlZm9yZXtjb250ZW50OiJcZjA2ZCJ9LmZhLWJlZC1wdWxzZTpiZWZvcmUsLmZhLXByb2NlZHVyZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNDg3In0uZmEtc2h1dHRsZS1zcGFjZTpiZWZvcmUsLmZhLXNwYWNlLXNodXR0bGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk3In0uZmEtZmFjZS1sYXVnaDpiZWZvcmUsLmZhLWxhdWdoOmJlZm9yZXtjb250ZW50OiJcZjU5OSJ9LmZhLWZvbGRlci1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjA3YyJ9LmZhLWhlYXJ0LWNpcmNsZS1wbHVzOmJlZm9yZXtjb250ZW50OiJcZTUwMCJ9LmZhLWNvZGUtZm9yazpiZWZvcmV7Y29udGVudDoiXGUxM2IifS5mYS1jaXR5OmJlZm9yZXtjb250ZW50OiJcZjY0ZiJ9LmZhLW1pY3JvcGhvbmUtYWx0OmJlZm9yZSwuZmEtbWljcm9waG9uZS1saW5lczpiZWZvcmV7Y29udGVudDoiXGYzYzkifS5mYS1wZXBwZXItaG90OmJlZm9yZXtjb250ZW50OiJcZjgxNiJ9LmZhLXVubG9jazpiZWZvcmV7Y29udGVudDoiXGYwOWMifS5mYS1jb2xvbi1zaWduOmJlZm9yZXtjb250ZW50OiJcZTE0MCJ9LmZhLWhlYWRzZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTkwIn0uZmEtc3RvcmUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDcxIn0uZmEtcm9hZC1jaXJjbGUteG1hcms6YmVmb3Jle2NvbnRlbnQ6IlxlNTY2In0uZmEtdXNlci1taW51czpiZWZvcmV7Y29udGVudDoiXGY1MDMifS5mYS1tYXJzLXN0cm9rZS11cDpiZWZvcmUsLmZhLW1hcnMtc3Ryb2tlLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMjJhIn0uZmEtY2hhbXBhZ25lLWdsYXNzZXM6YmVmb3JlLC5mYS1nbGFzcy1jaGVlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmNzlmIn0uZmEtY2xpcGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjMyOCJ9LmZhLWhvdXNlLWNpcmNsZS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGU1MGEifS5mYS1maWxlLWFycm93LXVwOmJlZm9yZSwuZmEtZmlsZS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTc0In0uZmEtd2lmaS0zOmJlZm9yZSwuZmEtd2lmaS1zdHJvbmc6YmVmb3JlLC5mYS13aWZpOmJlZm9yZXtjb250ZW50OiJcZjFlYiJ9LmZhLWJhdGg6YmVmb3JlLC5mYS1iYXRodHViOmJlZm9yZXtjb250ZW50OiJcZjJjZCJ9LmZhLXVuZGVybGluZTpiZWZvcmV7Y29udGVudDoiXGYwY2QifS5mYS11c2VyLWVkaXQ6YmVmb3JlLC5mYS11c2VyLXBlbjpiZWZvcmV7Y29udGVudDoiXGY0ZmYifS5mYS1zaWduYXR1cmU6YmVmb3Jle2NvbnRlbnQ6IlxmNWI3In0uZmEtc3Ryb29wd2FmZWw6YmVmb3Jle2NvbnRlbnQ6IlxmNTUxIn0uZmEtYm9sZDpiZWZvcmV7Y29udGVudDoiXGYwMzIifS5mYS1hbmNob3ItbG9jazpiZWZvcmV7Y29udGVudDoiXGU0YWQifS5mYS1idWlsZGluZy1uZ286YmVmb3Jle2NvbnRlbnQ6IlxlNGQ3In0uZmEtbWFuYXQtc2lnbjpiZWZvcmV7Y29udGVudDoiXGUxZDUifS5mYS1ub3QtZXF1YWw6YmVmb3Jle2NvbnRlbnQ6IlxmNTNlIn0uZmEtYm9yZGVyLXN0eWxlOmJlZm9yZSwuZmEtYm9yZGVyLXRvcC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjg1MyJ9LmZhLW1hcC1sb2NhdGlvbi1kb3Q6YmVmb3JlLC5mYS1tYXAtbWFya2VkLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1YTAifS5mYS1qZWRpOmJlZm9yZXtjb250ZW50OiJcZjY2OSJ9LmZhLXBvbGw6YmVmb3JlLC5mYS1zcXVhcmUtcG9sbC12ZXJ0aWNhbDpiZWZvcmV7Y29udGVudDoiXGY2ODEifS5mYS1tdWctaG90OmJlZm9yZXtjb250ZW50OiJcZjdiNiJ9LmZhLWJhdHRlcnktY2FyOmJlZm9yZSwuZmEtY2FyLWJhdHRlcnk6YmVmb3Jle2NvbnRlbnQ6IlxmNWRmIn0uZmEtZ2lmdDpiZWZvcmV7Y29udGVudDoiXGYwNmIifS5mYS1kaWNlLXR3bzpiZWZvcmV7Y29udGVudDoiXGY1MjgifS5mYS1jaGVzcy1xdWVlbjpiZWZvcmV7Y29udGVudDoiXGY0NDUifS5mYS1nbGFzc2VzOmJlZm9yZXtjb250ZW50OiJcZjUzMCJ9LmZhLWNoZXNzLWJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjQzYyJ9LmZhLWJ1aWxkaW5nLWNpcmNsZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGU0ZDIifS5mYS1wZXJzb24tY2hhbGtib2FyZDpiZWZvcmV7Y29udGVudDoiXGU1M2QifS5mYS1tYXJzLXN0cm9rZS1oOmJlZm9yZSwuZmEtbWFycy1zdHJva2UtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjJiIn0uZmEtaGFuZC1iYWNrLWZpc3Q6YmVmb3JlLC5mYS1oYW5kLXJvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMjU1In0uZmEtY2FyZXQtc3F1YXJlLXVwOmJlZm9yZSwuZmEtc3F1YXJlLWNhcmV0LXVwOmJlZm9yZXtjb250ZW50OiJcZjE1MSJ9LmZhLWNsb3VkLXNob3dlcnMtd2F0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxlNGU0In0uZmEtYmFyLWNoYXJ0OmJlZm9yZSwuZmEtY2hhcnQtYmFyOmJlZm9yZXtjb250ZW50OiJcZjA4MCJ9LmZhLWhhbmRzLWJ1YmJsZXM6YmVmb3JlLC5mYS1oYW5kcy13YXNoOmJlZm9yZXtjb250ZW50OiJcZTA1ZSJ9LmZhLWxlc3MtdGhhbi1lcXVhbDpiZWZvcmV7Y29udGVudDoiXGY1MzcifS5mYS10cmFpbjpiZWZvcmV7Y29udGVudDoiXGYyMzgifS5mYS1leWUtbG93LXZpc2lvbjpiZWZvcmUsLmZhLWxvdy12aXNpb246YmVmb3Jle2NvbnRlbnQ6IlxmMmE4In0uZmEtY3JvdzpiZWZvcmV7Y29udGVudDoiXGY1MjAifS5mYS1zYWlsYm9hdDpiZWZvcmV7Y29udGVudDoiXGU0NDUifS5mYS13aW5kb3ctcmVzdG9yZTpiZWZvcmV7Y29udGVudDoiXGYyZDIifS5mYS1wbHVzLXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjBmZSJ9LmZhLXRvcmlpLWdhdGU6YmVmb3Jle2NvbnRlbnQ6IlxmNmExIn0uZmEtZnJvZzpiZWZvcmV7Y29udGVudDoiXGY1MmUifS5mYS1idWNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxlNGNmIn0uZmEtaW1hZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDNlIn0uZmEtbWljcm9waG9uZTpiZWZvcmV7Y29udGVudDoiXGYxMzAifS5mYS1jb3c6YmVmb3Jle2NvbnRlbnQ6IlxmNmM4In0uZmEtY2FyZXQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ4In0uZmEtc2NyZXdkcml2ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTRhIn0uZmEtZm9sZGVyLWNsb3NlZDpiZWZvcmV7Y29udGVudDoiXGUxODUifS5mYS1ob3VzZS10c3VuYW1pOmJlZm9yZXtjb250ZW50OiJcZTUxNSJ9LmZhLXNxdWFyZS1uZmk6YmVmb3Jle2NvbnRlbnQ6IlxlNTc2In0uZmEtYXJyb3ctdXAtZnJvbS1ncm91bmQtd2F0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxlNGI1In0uZmEtZ2xhc3MtbWFydGluaS1hbHQ6YmVmb3JlLC5mYS1tYXJ0aW5pLWdsYXNzOmJlZm9yZXtjb250ZW50OiJcZjU3YiJ9LmZhLXJvdGF0ZS1iYWNrOmJlZm9yZSwuZmEtcm90YXRlLWJhY2t3YXJkOmJlZm9yZSwuZmEtcm90YXRlLWxlZnQ6YmVmb3JlLC5mYS11bmRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZWEifS5mYS1jb2x1bW5zOmJlZm9yZSwuZmEtdGFibGUtY29sdW1uczpiZWZvcmV7Y29udGVudDoiXGYwZGIifS5mYS1sZW1vbjpiZWZvcmV7Y29udGVudDoiXGYwOTQifS5mYS1oZWFkLXNpZGUtbWFzazpiZWZvcmV7Y29udGVudDoiXGUwNjMifS5mYS1oYW5kc2hha2U6YmVmb3Jle2NvbnRlbnQ6IlxmMmI1In0uZmEtZ2VtOmJlZm9yZXtjb250ZW50OiJcZjNhNSJ9LmZhLWRvbGx5LWJveDpiZWZvcmUsLmZhLWRvbGx5OmJlZm9yZXtjb250ZW50OiJcZjQ3MiJ9LmZhLXNtb2tpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNDhkIn0uZmEtY29tcHJlc3MtYXJyb3dzLWFsdDpiZWZvcmUsLmZhLW1pbmltaXplOmJlZm9yZXtjb250ZW50OiJcZjc4YyJ9LmZhLW1vbnVtZW50OmJlZm9yZXtjb250ZW50OiJcZjVhNiJ9LmZhLXNub3dwbG93OmJlZm9yZXtjb250ZW50OiJcZjdkMiJ9LmZhLWFuZ2xlLWRvdWJsZS1yaWdodDpiZWZvcmUsLmZhLWFuZ2xlcy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDEifS5mYS1jYW5uYWJpczpiZWZvcmV7Y29udGVudDoiXGY1NWYifS5mYS1jaXJjbGUtcGxheTpiZWZvcmUsLmZhLXBsYXktY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjE0NCJ9LmZhLXRhYmxldHM6YmVmb3Jle2NvbnRlbnQ6IlxmNDkwIn0uZmEtZXRoZXJuZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNzk2In0uZmEtZXVyOmJlZm9yZSwuZmEtZXVyby1zaWduOmJlZm9yZSwuZmEtZXVybzpiZWZvcmV7Y29udGVudDoiXGYxNTMifS5mYS1jaGFpcjpiZWZvcmV7Y29udGVudDoiXGY2YzAifS5mYS1jaGVjay1jaXJjbGU6YmVmb3JlLC5mYS1jaXJjbGUtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDU4In0uZmEtY2lyY2xlLXN0b3A6YmVmb3JlLC5mYS1zdG9wLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyOGQifS5mYS1jb21wYXNzLWRyYWZ0aW5nOmJlZm9yZSwuZmEtZHJhZnRpbmctY29tcGFzczpiZWZvcmV7Y29udGVudDoiXGY1NjgifS5mYS1wbGF0ZS13aGVhdDpiZWZvcmV7Y29udGVudDoiXGU1NWEifS5mYS1pY2ljbGVzOmJlZm9yZXtjb250ZW50OiJcZjdhZCJ9LmZhLXBlcnNvbi1zaGVsdGVyOmJlZm9yZXtjb250ZW50OiJcZTU0ZiJ9LmZhLW5ldXRlcjpiZWZvcmV7Y29udGVudDoiXGYyMmMifS5mYS1pZC1iYWRnZTpiZWZvcmV7Y29udGVudDoiXGYyYzEifS5mYS1tYXJrZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWExIn0uZmEtZmFjZS1sYXVnaC1iZWFtOmJlZm9yZSwuZmEtbGF1Z2gtYmVhbTpiZWZvcmV7Y29udGVudDoiXGY1OWEifS5mYS1oZWxpY29wdGVyLXN5bWJvbDpiZWZvcmV7Y29udGVudDoiXGU1MDIifS5mYS11bml2ZXJzYWwtYWNjZXNzOmJlZm9yZXtjb250ZW50OiJcZjI5YSJ9LmZhLWNoZXZyb24tY2lyY2xlLXVwOmJlZm9yZSwuZmEtY2lyY2xlLWNoZXZyb24tdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTM5In0uZmEtbGFyaS1zaWduOmJlZm9yZXtjb250ZW50OiJcZTFjOCJ9LmZhLXZvbGNhbm86YmVmb3Jle2NvbnRlbnQ6IlxmNzcwIn0uZmEtcGVyc29uLXdhbGtpbmctZGFzaGVkLWxpbmUtYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxlNTUzIn0uZmEtZ2JwOmJlZm9yZSwuZmEtcG91bmQtc2lnbjpiZWZvcmUsLmZhLXN0ZXJsaW5nLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU0In0uZmEtdmlydXNlczpiZWZvcmV7Y29udGVudDoiXGUwNzYifS5mYS1zcXVhcmUtcGVyc29uLWNvbmZpbmVkOmJlZm9yZXtjb250ZW50OiJcZTU3NyJ9LmZhLXVzZXItdGllOmJlZm9yZXtjb250ZW50OiJcZjUwOCJ9LmZhLWFycm93LWRvd24tbG9uZzpiZWZvcmUsLmZhLWxvbmctYXJyb3ctZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNzUifS5mYS10ZW50LWFycm93LWRvd24tdG8tbGluZTpiZWZvcmV7Y29udGVudDoiXGU1N2UifS5mYS1jZXJ0aWZpY2F0ZTpiZWZvcmV7Y29udGVudDoiXGYwYTMifS5mYS1tYWlsLXJlcGx5LWFsbDpiZWZvcmUsLmZhLXJlcGx5LWFsbDpiZWZvcmV7Y29udGVudDoiXGYxMjIifS5mYS1zdWl0Y2FzZTpiZWZvcmV7Y29udGVudDoiXGYwZjIifS5mYS1wZXJzb24tc2thdGluZzpiZWZvcmUsLmZhLXNrYXRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmN2M1In0uZmEtZmlsdGVyLWNpcmNsZS1kb2xsYXI6YmVmb3JlLC5mYS1mdW5uZWwtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY2MiJ9LmZhLWNhbWVyYS1yZXRybzpiZWZvcmV7Y29udGVudDoiXGYwODMifS5mYS1hcnJvdy1jaXJjbGUtZG93bjpiZWZvcmUsLmZhLWNpcmNsZS1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBhYiJ9LmZhLWFycm93LXJpZ2h0LXRvLWZpbGU6YmVmb3JlLC5mYS1maWxlLWltcG9ydDpiZWZvcmV7Y29udGVudDoiXGY1NmYifS5mYS1leHRlcm5hbC1saW5rLXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1hcnJvdy11cC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxNGMifS5mYS1ib3gtb3BlbjpiZWZvcmV7Y29udGVudDoiXGY0OWUifS5mYS1zY3JvbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNzBlIn0uZmEtc3BhOmJlZm9yZXtjb250ZW50OiJcZjViYiJ9LmZhLWxvY2F0aW9uLXBpbi1sb2NrOmJlZm9yZXtjb250ZW50OiJcZTUxZiJ9LmZhLXBhdXNlOmJlZm9yZXtjb250ZW50OiJcZjA0YyJ9LmZhLWhpbGwtYXZhbGFuY2hlOmJlZm9yZXtjb250ZW50OiJcZTUwNyJ9LmZhLXRlbXBlcmF0dXJlLTA6YmVmb3JlLC5mYS10ZW1wZXJhdHVyZS1lbXB0eTpiZWZvcmUsLmZhLXRoZXJtb21ldGVyLTA6YmVmb3JlLC5mYS10aGVybW9tZXRlci1lbXB0eTpiZWZvcmV7Y29udGVudDoiXGYyY2IifS5mYS1ib21iOmJlZm9yZXtjb250ZW50OiJcZjFlMiJ9LmZhLXJlZ2lzdGVyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjVkIn0uZmEtYWRkcmVzcy1jYXJkOmJlZm9yZSwuZmEtY29udGFjdC1jYXJkOmJlZm9yZSwuZmEtdmNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmJiIn0uZmEtYmFsYW5jZS1zY2FsZS1yaWdodDpiZWZvcmUsLmZhLXNjYWxlLXVuYmFsYW5jZWQtZmxpcDpiZWZvcmV7Y29udGVudDoiXGY1MTYifS5mYS1zdWJzY3JpcHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTJjIn0uZmEtZGlhbW9uZC10dXJuLXJpZ2h0OmJlZm9yZSwuZmEtZGlyZWN0aW9uczpiZWZvcmV7Y29udGVudDoiXGY1ZWIifS5mYS1idXJzdDpiZWZvcmV7Y29udGVudDoiXGU0ZGMifS5mYS1ob3VzZS1sYXB0b3A6YmVmb3JlLC5mYS1sYXB0b3AtaG91c2U6YmVmb3Jle2NvbnRlbnQ6IlxlMDY2In0uZmEtZmFjZS10aXJlZDpiZWZvcmUsLmZhLXRpcmVkOmJlZm9yZXtjb250ZW50OiJcZjVjOCJ9LmZhLW1vbmV5LWJpbGxzOmJlZm9yZXtjb250ZW50OiJcZTFmMyJ9LmZhLXNtb2c6YmVmb3Jle2NvbnRlbnQ6IlxmNzVmIn0uZmEtY3J1dGNoOmJlZm9yZXtjb250ZW50OiJcZjdmNyJ9LmZhLWNsb3VkLWFycm93LXVwOmJlZm9yZSwuZmEtY2xvdWQtdXBsb2FkLWFsdDpiZWZvcmUsLmZhLWNsb3VkLXVwbG9hZDpiZWZvcmV7Y29udGVudDoiXGYwZWUifS5mYS1wYWxldHRlOmJlZm9yZXtjb250ZW50OiJcZjUzZiJ9LmZhLWFycm93cy10dXJuLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZTRjMCJ9LmZhLXZlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxlMDg1In0uZmEtZmVycnk6YmVmb3Jle2NvbnRlbnQ6IlxlNGVhIn0uZmEtYXJyb3dzLWRvd24tdG8tcGVvcGxlOmJlZm9yZXtjb250ZW50OiJcZTRiOSJ9LmZhLXNlZWRsaW5nOmJlZm9yZSwuZmEtc3Byb3V0OmJlZm9yZXtjb250ZW50OiJcZjRkOCJ9LmZhLWFycm93cy1hbHQtaDpiZWZvcmUsLmZhLWxlZnQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzM3In0uZmEtYm94ZXMtcGFja2luZzpiZWZvcmV7Y29udGVudDoiXGU0YzcifS5mYS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmUsLmZhLWNpcmNsZS1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjBhOCJ9LmZhLWdyb3VwLWFycm93cy1yb3RhdGU6YmVmb3Jle2NvbnRlbnQ6IlxlNGY2In0uZmEtYm93bC1mb29kOmJlZm9yZXtjb250ZW50OiJcZTRjNiJ9LmZhLWNhbmR5LWNhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmNzg2In0uZmEtYXJyb3ctZG93bi13aWRlLXNob3J0OmJlZm9yZSwuZmEtc29ydC1hbW91bnQtYXNjOmJlZm9yZSwuZmEtc29ydC1hbW91bnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjAifS5mYS1jbG91ZC1ib2x0OmJlZm9yZSwuZmEtdGh1bmRlcnN0b3JtOmJlZm9yZXtjb250ZW50OiJcZjc2YyJ9LmZhLXJlbW92ZS1mb3JtYXQ6YmVmb3JlLC5mYS10ZXh0LXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjg3ZCJ9LmZhLWZhY2Utc21pbGUtd2luazpiZWZvcmUsLmZhLXNtaWxlLXdpbms6YmVmb3Jle2NvbnRlbnQ6IlxmNGRhIn0uZmEtZmlsZS13b3JkOmJlZm9yZXtjb250ZW50OiJcZjFjMiJ9LmZhLWZpbGUtcG93ZXJwb2ludDpiZWZvcmV7Y29udGVudDoiXGYxYzQifS5mYS1hcnJvd3MtaDpiZWZvcmUsLmZhLWFycm93cy1sZWZ0LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjA3ZSJ9LmZhLWhvdXNlLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxlNTEwIn0uZmEtY2xvdWQtYXJyb3ctZG93bjpiZWZvcmUsLmZhLWNsb3VkLWRvd25sb2FkLWFsdDpiZWZvcmUsLmZhLWNsb3VkLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjBlZCJ9LmZhLWNoaWxkcmVuOmJlZm9yZXtjb250ZW50OiJcZTRlMSJ9LmZhLWJsYWNrYm9hcmQ6YmVmb3JlLC5mYS1jaGFsa2JvYXJkOmJlZm9yZXtjb250ZW50OiJcZjUxYiJ9LmZhLXVzZXItYWx0LXNsYXNoOmJlZm9yZSwuZmEtdXNlci1sYXJnZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGY0ZmEifS5mYS1lbnZlbG9wZS1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjJiNiJ9LmZhLWhhbmRzaGFrZS1hbHQtc2xhc2g6YmVmb3JlLC5mYS1oYW5kc2hha2Utc2ltcGxlLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTA1ZiJ9LmZhLW1hdHRyZXNzLXBpbGxvdzpiZWZvcmV7Y29udGVudDoiXGU1MjUifS5mYS1ndWFyYW5pLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMTlhIn0uZmEtYXJyb3dzLXJvdGF0ZTpiZWZvcmUsLmZhLXJlZnJlc2g6YmVmb3JlLC5mYS1zeW5jOmJlZm9yZXtjb250ZW50OiJcZjAyMSJ9LmZhLWZpcmUtZXh0aW5ndWlzaGVyOmJlZm9yZXtjb250ZW50OiJcZjEzNCJ9LmZhLWNydXplaXJvLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMTUyIn0uZmEtZ3JlYXRlci10aGFuLWVxdWFsOmJlZm9yZXtjb250ZW50OiJcZjUzMiJ9LmZhLXNoaWVsZC1hbHQ6YmVmb3JlLC5mYS1zaGllbGQtaGFsdmVkOmJlZm9yZXtjb250ZW50OiJcZjNlZCJ9LmZhLWF0bGFzOmJlZm9yZSwuZmEtYm9vay1hdGxhczpiZWZvcmV7Y29udGVudDoiXGY1NTgifS5mYS12aXJ1czpiZWZvcmV7Y29udGVudDoiXGUwNzQifS5mYS1lbnZlbG9wZS1jaXJjbGUtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxlNGU4In0uZmEtbGF5ZXItZ3JvdXA6YmVmb3Jle2NvbnRlbnQ6IlxmNWZkIn0uZmEtYXJyb3dzLXRvLWRvdDpiZWZvcmV7Y29udGVudDoiXGU0YmUifS5mYS1hcmNod2F5OmJlZm9yZXtjb250ZW50OiJcZjU1NyJ9LmZhLWhlYXJ0LWNpcmNsZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGU0ZmQifS5mYS1ob3VzZS1jaGltbmV5LWNyYWNrOmJlZm9yZSwuZmEtaG91c2UtZGFtYWdlOmJlZm9yZXtjb250ZW50OiJcZjZmMSJ9LmZhLWZpbGUtYXJjaGl2ZTpiZWZvcmUsLmZhLWZpbGUtemlwcGVyOmJlZm9yZXtjb250ZW50OiJcZjFjNiJ9LmZhLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwYzgifS5mYS1nbGFzcy1tYXJ0aW5pOmJlZm9yZSwuZmEtbWFydGluaS1nbGFzcy1lbXB0eTpiZWZvcmV7Y29udGVudDoiXGYwMDAifS5mYS1jb3VjaDpiZWZvcmV7Y29udGVudDoiXGY0YjgifS5mYS1jZWRpLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMGRmIn0uZmEtaXRhbGljOmJlZm9yZXtjb250ZW50OiJcZjAzMyJ9LmZhLWNodXJjaDpiZWZvcmV7Y29udGVudDoiXGY1MWQifS5mYS1jb21tZW50cy1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjUzIn0uZmEtZGVtb2NyYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNzQ3In0uZmEtejpiZWZvcmV7Y29udGVudDoiXDVhIn0uZmEtcGVyc29uLXNraWluZzpiZWZvcmUsLmZhLXNraWluZzpiZWZvcmV7Y29udGVudDoiXGY3YzkifS5mYS1yb2FkLWxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxlNTY3In0uZmEtYTpiZWZvcmV7Y29udGVudDoiXDQxIn0uZmEtdGVtcGVyYXR1cmUtYXJyb3ctZG93bjpiZWZvcmUsLmZhLXRlbXBlcmF0dXJlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxlMDNmIn0uZmEtZmVhdGhlci1hbHQ6YmVmb3JlLC5mYS1mZWF0aGVyLXBvaW50ZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTZiIn0uZmEtcDpiZWZvcmV7Y29udGVudDoiXDUwIn0uZmEtc25vd2ZsYWtlOmJlZm9yZXtjb250ZW50OiJcZjJkYyJ9LmZhLW5ld3NwYXBlcjpiZWZvcmV7Y29udGVudDoiXGYxZWEifS5mYS1hZDpiZWZvcmUsLmZhLXJlY3RhbmdsZS1hZDpiZWZvcmV7Y29udGVudDoiXGY2NDEifS5mYS1hcnJvdy1jaXJjbGUtcmlnaHQ6YmVmb3JlLC5mYS1jaXJjbGUtYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE5In0uZmEtZmlsdGVyLWNpcmNsZS14bWFyazpiZWZvcmV7Y29udGVudDoiXGUxN2IifS5mYS1sb2N1c3Q6YmVmb3Jle2NvbnRlbnQ6IlxlNTIwIn0uZmEtc29ydDpiZWZvcmUsLmZhLXVuc29ydGVkOmJlZm9yZXtjb250ZW50OiJcZjBkYyJ9LmZhLWxpc3QtMS0yOmJlZm9yZSwuZmEtbGlzdC1udW1lcmljOmJlZm9yZSwuZmEtbGlzdC1vbDpiZWZvcmV7Y29udGVudDoiXGYwY2IifS5mYS1wZXJzb24tZHJlc3MtYnVyc3Q6YmVmb3Jle2NvbnRlbnQ6IlxlNTQ0In0uZmEtbW9uZXktY2hlY2stYWx0OmJlZm9yZSwuZmEtbW9uZXktY2hlY2stZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjUzZCJ9LmZhLXZlY3Rvci1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNWNiIn0uZmEtYnJlYWQtc2xpY2U6YmVmb3Jle2NvbnRlbnQ6IlxmN2VjIn0uZmEtbGFuZ3VhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWFiIn0uZmEtZmFjZS1raXNzLXdpbmstaGVhcnQ6YmVmb3JlLC5mYS1raXNzLXdpbmstaGVhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTk4In0uZmEtZmlsdGVyOmJlZm9yZXtjb250ZW50OiJcZjBiMCJ9LmZhLXF1ZXN0aW9uOmJlZm9yZXtjb250ZW50OiJcM2YifS5mYS1maWxlLXNpZ25hdHVyZTpiZWZvcmV7Y29udGVudDoiXGY1NzMifS5mYS1hcnJvd3MtYWx0OmJlZm9yZSwuZmEtdXAtZG93bi1sZWZ0LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBiMiJ9LmZhLWhvdXNlLWNoaW1uZXktdXNlcjpiZWZvcmV7Y29udGVudDoiXGUwNjUifS5mYS1oYW5kLWhvbGRpbmctaGVhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNGJlIn0uZmEtcHV6emxlLXBpZWNlOmJlZm9yZXtjb250ZW50OiJcZjEyZSJ9LmZhLW1vbmV5LWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjUzYyJ9LmZhLXN0YXItaGFsZi1hbHQ6YmVmb3JlLC5mYS1zdGFyLWhhbGYtc3Ryb2tlOmJlZm9yZXtjb250ZW50OiJcZjVjMCJ9LmZhLWNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTIxIn0uZmEtZ2xhc3Mtd2hpc2tleTpiZWZvcmUsLmZhLXdoaXNrZXktZ2xhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmN2EwIn0uZmEtYnVpbGRpbmctY2lyY2xlLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZTRkMyJ9LmZhLW1hZ25pZnlpbmctZ2xhc3MtY2hhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxlNTIyIn0uZmEtYXJyb3ctdXAtcmlnaHQtZnJvbS1zcXVhcmU6YmVmb3JlLC5mYS1leHRlcm5hbC1saW5rOmJlZm9yZXtjb250ZW50OiJcZjA4ZSJ9LmZhLWN1YmVzLXN0YWNrZWQ6YmVmb3Jle2NvbnRlbnQ6IlxlNGU2In0uZmEta3J3OmJlZm9yZSwuZmEtd29uLXNpZ246YmVmb3JlLC5mYS13b246YmVmb3Jle2NvbnRlbnQ6IlxmMTU5In0uZmEtdmlydXMtY292aWQ6YmVmb3Jle2NvbnRlbnQ6IlxlNGE4In0uZmEtYXVzdHJhbC1zaWduOmJlZm9yZXtjb250ZW50OiJcZTBhOSJ9LmZhLWY6YmVmb3Jle2NvbnRlbnQ6Ilw0NiJ9LmZhLWxlYWY6YmVmb3Jle2NvbnRlbnQ6IlxmMDZjIn0uZmEtcm9hZDpiZWZvcmV7Y29udGVudDoiXGYwMTgifS5mYS1jYWI6YmVmb3JlLC5mYS10YXhpOmJlZm9yZXtjb250ZW50OiJcZjFiYSJ9LmZhLXBlcnNvbi1jaXJjbGUtcGx1czpiZWZvcmV7Y29udGVudDoiXGU1NDEifS5mYS1jaGFydC1waWU6YmVmb3JlLC5mYS1waWUtY2hhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjAwIn0uZmEtYm9sdC1saWdodG5pbmc6YmVmb3Jle2NvbnRlbnQ6IlxlMGI3In0uZmEtc2Fjay14bWFyazpiZWZvcmV7Y29udGVudDoiXGU1NmEifS5mYS1maWxlLWV4Y2VsOmJlZm9yZXtjb250ZW50OiJcZjFjMyJ9LmZhLWZpbGUtY29udHJhY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNTZjIn0uZmEtZmlzaC1maW5zOmJlZm9yZXtjb250ZW50OiJcZTRmMiJ9LmZhLWJ1aWxkaW5nLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxlNGQ1In0uZmEtZmFjZS1ncmluLWJlYW06YmVmb3JlLC5mYS1ncmluLWJlYW06YmVmb3Jle2NvbnRlbnQ6IlxmNTgyIn0uZmEtb2JqZWN0LXVuZ3JvdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ4In0uZmEtcG9vcDpiZWZvcmV7Y29udGVudDoiXGY2MTkifS5mYS1sb2NhdGlvbi1waW46YmVmb3JlLC5mYS1tYXAtbWFya2VyOmJlZm9yZXtjb250ZW50OiJcZjA0MSJ9LmZhLWthYWJhOmJlZm9yZXtjb250ZW50OiJcZjY2YiJ9LmZhLXRvaWxldC1wYXBlcjpiZWZvcmV7Y29udGVudDoiXGY3MWUifS5mYS1oYXJkLWhhdDpiZWZvcmUsLmZhLWhhdC1oYXJkOmJlZm9yZSwuZmEtaGVsbWV0LXNhZmV0eTpiZWZvcmV7Y29udGVudDoiXGY4MDcifS5mYS1lamVjdDpiZWZvcmV7Y29udGVudDoiXGYwNTIifS5mYS1hcnJvdy1hbHQtY2lyY2xlLXJpZ2h0OmJlZm9yZSwuZmEtY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM1YSJ9LmZhLXBsYW5lLWNpcmNsZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGU1NTUifS5mYS1mYWNlLXJvbGxpbmctZXllczpiZWZvcmUsLmZhLW1laC1yb2xsaW5nLWV5ZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNWE1In0uZmEtb2JqZWN0LWdyb3VwOmJlZm9yZXtjb250ZW50OiJcZjI0NyJ9LmZhLWNoYXJ0LWxpbmU6YmVmb3JlLC5mYS1saW5lLWNoYXJ0OmJlZm9yZXtjb250ZW50OiJcZjIwMSJ9LmZhLW1hc2stdmVudGlsYXRvcjpiZWZvcmV7Y29udGVudDoiXGU1MjQifS5mYS1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwNjEifS5mYS1tYXAtc2lnbnM6YmVmb3JlLC5mYS1zaWducy1wb3N0OmJlZm9yZXtjb250ZW50OiJcZjI3NyJ9LmZhLWNhc2gtcmVnaXN0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNzg4In0uZmEtcGVyc29uLWNpcmNsZS1xdWVzdGlvbjpiZWZvcmV7Y29udGVudDoiXGU1NDIifS5mYS1oOmJlZm9yZXtjb250ZW50OiJcNDgifS5mYS10YXJwOmJlZm9yZXtjb250ZW50OiJcZTU3YiJ9LmZhLXNjcmV3ZHJpdmVyLXdyZW5jaDpiZWZvcmUsLmZhLXRvb2xzOmJlZm9yZXtjb250ZW50OiJcZjdkOSJ9LmZhLWFycm93cy10by1leWU6YmVmb3Jle2NvbnRlbnQ6IlxlNGJmIn0uZmEtcGx1Zy1jaXJjbGUtYm9sdDpiZWZvcmV7Y29udGVudDoiXGU1NWIifS5mYS1oZWFydDpiZWZvcmV7Y29udGVudDoiXGYwMDQifS5mYS1tYXJzLWFuZC12ZW51czpiZWZvcmV7Y29udGVudDoiXGYyMjQifS5mYS1ob21lLXVzZXI6YmVmb3JlLC5mYS1ob3VzZS11c2VyOmJlZm9yZXtjb250ZW50OiJcZTFiMCJ9LmZhLWR1bXBzdGVyLWZpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNzk0In0uZmEtaG91c2UtY3JhY2s6YmVmb3Jle2NvbnRlbnQ6IlxlM2IxIn0uZmEtY29ja3RhaWw6YmVmb3JlLC5mYS1tYXJ0aW5pLWdsYXNzLWNpdHJ1czpiZWZvcmV7Y29udGVudDoiXGY1NjEifS5mYS1mYWNlLXN1cnByaXNlOmJlZm9yZSwuZmEtc3VycHJpc2U6YmVmb3Jle2NvbnRlbnQ6IlxmNWMyIn0uZmEtYm90dGxlLXdhdGVyOmJlZm9yZXtjb250ZW50OiJcZTRjNSJ9LmZhLWNpcmNsZS1wYXVzZTpiZWZvcmUsLmZhLXBhdXNlLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyOGIifS5mYS10b2lsZXQtcGFwZXItc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDcyIn0uZmEtYXBwbGUtYWx0OmJlZm9yZSwuZmEtYXBwbGUtd2hvbGU6YmVmb3Jle2NvbnRlbnQ6IlxmNWQxIn0uZmEta2l0Y2hlbi1zZXQ6YmVmb3Jle2NvbnRlbnQ6IlxlNTFhIn0uZmEtcjpiZWZvcmV7Y29udGVudDoiXDUyIn0uZmEtdGVtcGVyYXR1cmUtMTpiZWZvcmUsLmZhLXRlbXBlcmF0dXJlLXF1YXJ0ZXI6YmVmb3JlLC5mYS10aGVybW9tZXRlci0xOmJlZm9yZSwuZmEtdGhlcm1vbWV0ZXItcXVhcnRlcjpiZWZvcmV7Y29udGVudDoiXGYyY2EifS5mYS1jdWJlOmJlZm9yZXtjb250ZW50OiJcZjFiMiJ9LmZhLWJpdGNvaW4tc2lnbjpiZWZvcmV7Y29udGVudDoiXGUwYjQifS5mYS1zaGllbGQtZG9nOmJlZm9yZXtjb250ZW50OiJcZTU3MyJ9LmZhLXNvbGFyLXBhbmVsOmJlZm9yZXtjb250ZW50OiJcZjViYSJ9LmZhLWxvY2stb3BlbjpiZWZvcmV7Y29udGVudDoiXGYzYzEifS5mYS1lbGV2YXRvcjpiZWZvcmV7Y29udGVudDoiXGUxNmQifS5mYS1tb25leS1iaWxsLXRyYW5zZmVyOmJlZm9yZXtjb250ZW50OiJcZTUyOCJ9LmZhLW1vbmV5LWJpbGwtdHJlbmQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlNTI5In0uZmEtaG91c2UtZmxvb2Qtd2F0ZXItY2lyY2xlLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZTUwZiJ9LmZhLXBvbGwtaDpiZWZvcmUsLmZhLXNxdWFyZS1wb2xsLWhvcml6b250YWw6YmVmb3Jle2NvbnRlbnQ6IlxmNjgyIn0uZmEtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjExMSJ9LmZhLWJhY2t3YXJkLWZhc3Q6YmVmb3JlLC5mYS1mYXN0LWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA0OSJ9LmZhLXJlY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWI4In0uZmEtdXNlci1hc3Ryb25hdXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNGZiIn0uZmEtcGxhbmUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxlMDY5In0uZmEtdHJhZGVtYXJrOmJlZm9yZXtjb250ZW50OiJcZjI1YyJ9LmZhLWJhc2tldGJhbGwtYmFsbDpiZWZvcmUsLmZhLWJhc2tldGJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDM0In0uZmEtc2F0ZWxsaXRlLWRpc2g6YmVmb3Jle2NvbnRlbnQ6IlxmN2MwIn0uZmEtYXJyb3ctYWx0LWNpcmNsZS11cDpiZWZvcmUsLmZhLWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYzNWIifS5mYS1tb2JpbGUtYWx0OmJlZm9yZSwuZmEtbW9iaWxlLXNjcmVlbi1idXR0b246YmVmb3Jle2NvbnRlbnQ6IlxmM2NkIn0uZmEtdm9sdW1lLWhpZ2g6YmVmb3JlLC5mYS12b2x1bWUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDI4In0uZmEtdXNlcnMtcmF5czpiZWZvcmV7Y29udGVudDoiXGU1OTMifS5mYS13YWxsZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTU1In0uZmEtY2xpcGJvYXJkLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjQ2YyJ9LmZhLWZpbGUtYXVkaW86YmVmb3Jle2NvbnRlbnQ6IlxmMWM3In0uZmEtYnVyZ2VyOmJlZm9yZSwuZmEtaGFtYnVyZ2VyOmJlZm9yZXtjb250ZW50OiJcZjgwNSJ9LmZhLXdyZW5jaDpiZWZvcmV7Y29udGVudDoiXGYwYWQifS5mYS1idWdzOmJlZm9yZXtjb250ZW50OiJcZTRkMCJ9LmZhLXJ1cGVlLXNpZ246YmVmb3JlLC5mYS1ydXBlZTpiZWZvcmV7Y29udGVudDoiXGYxNTYifS5mYS1maWxlLWltYWdlOmJlZm9yZXtjb250ZW50OiJcZjFjNSJ9LmZhLWNpcmNsZS1xdWVzdGlvbjpiZWZvcmUsLmZhLXF1ZXN0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTkifS5mYS1wbGFuZS1kZXBhcnR1cmU6YmVmb3Jle2NvbnRlbnQ6IlxmNWIwIn0uZmEtaGFuZHNoYWtlLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTA2MCJ9LmZhLWJvb2stYm9va21hcms6YmVmb3Jle2NvbnRlbnQ6IlxlMGJiIn0uZmEtY29kZS1icmFuY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMTI2In0uZmEtaGF0LWNvd2JveTpiZWZvcmV7Y29udGVudDoiXGY4YzAifS5mYS1icmlkZ2U6YmVmb3Jle2NvbnRlbnQ6IlxlNGM4In0uZmEtcGhvbmUtYWx0OmJlZm9yZSwuZmEtcGhvbmUtZmxpcDpiZWZvcmV7Y29udGVudDoiXGY4NzkifS5mYS10cnVjay1mcm9udDpiZWZvcmV7Y29udGVudDoiXGUyYjcifS5mYS1jYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNmJlIn0uZmEtYW5jaG9yLWNpcmNsZS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGU0YWIifS5mYS10cnVjay1maWVsZDpiZWZvcmV7Y29udGVudDoiXGU1OGQifS5mYS1yb3V0ZTpiZWZvcmV7Y29udGVudDoiXGY0ZDcifS5mYS1jbGlwYm9hcmQtcXVlc3Rpb246YmVmb3Jle2NvbnRlbnQ6IlxlNGUzIn0uZmEtcGFub3JhbWE6YmVmb3Jle2NvbnRlbnQ6IlxlMjA5In0uZmEtY29tbWVudC1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjdmNSJ9LmZhLXRlZXRoLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmNjJmIn0uZmEtZmlsZS1jaXJjbGUtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxlNGVkIn0uZmEtdGFnczpiZWZvcmV7Y29udGVudDoiXGYwMmMifS5mYS13aW5lLWdsYXNzOmJlZm9yZXtjb250ZW50OiJcZjRlMyJ9LmZhLWZhc3QtZm9yd2FyZDpiZWZvcmUsLmZhLWZvcndhcmQtZmFzdDpiZWZvcmV7Y29udGVudDoiXGYwNTAifS5mYS1mYWNlLW1laC1ibGFuazpiZWZvcmUsLmZhLW1laC1ibGFuazpiZWZvcmV7Y29udGVudDoiXGY1YTQifS5mYS1wYXJraW5nOmJlZm9yZSwuZmEtc3F1YXJlLXBhcmtpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNTQwIn0uZmEtaG91c2Utc2lnbmFsOmJlZm9yZXtjb250ZW50OiJcZTAxMiJ9LmZhLWJhcnMtcHJvZ3Jlc3M6YmVmb3JlLC5mYS10YXNrcy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODI4In0uZmEtZmF1Y2V0LWRyaXA6YmVmb3Jle2NvbnRlbnQ6IlxlMDA2In0uZmEtY2FydC1mbGF0YmVkOmJlZm9yZSwuZmEtZG9sbHktZmxhdGJlZDpiZWZvcmV7Y29udGVudDoiXGY0NzQifS5mYS1iYW4tc21va2luZzpiZWZvcmUsLmZhLXNtb2tpbmctYmFuOmJlZm9yZXtjb250ZW50OiJcZjU0ZCJ9LmZhLXRlcm1pbmFsOmJlZm9yZXtjb250ZW50OiJcZjEyMCJ9LmZhLW1vYmlsZS1idXR0b246YmVmb3Jle2NvbnRlbnQ6IlxmMTBiIn0uZmEtaG91c2UtbWVkaWNhbC1mbGFnOmJlZm9yZXtjb250ZW50OiJcZTUxNCJ9LmZhLWJhc2tldC1zaG9wcGluZzpiZWZvcmUsLmZhLXNob3BwaW5nLWJhc2tldDpiZWZvcmV7Y29udGVudDoiXGYyOTEifS5mYS10YXBlOmJlZm9yZXtjb250ZW50OiJcZjRkYiJ9LmZhLWJ1cy1hbHQ6YmVmb3JlLC5mYS1idXMtc2ltcGxlOmJlZm9yZXtjb250ZW50OiJcZjU1ZSJ9LmZhLWV5ZTpiZWZvcmV7Y29udGVudDoiXGYwNmUifS5mYS1mYWNlLXNhZC1jcnk6YmVmb3JlLC5mYS1zYWQtY3J5OmJlZm9yZXtjb250ZW50OiJcZjViMyJ9LmZhLWF1ZGlvLWRlc2NyaXB0aW9uOmJlZm9yZXtjb250ZW50OiJcZjI5ZSJ9LmZhLXBlcnNvbi1taWxpdGFyeS10by1wZXJzb246YmVmb3Jle2NvbnRlbnQ6IlxlNTRjIn0uZmEtZmlsZS1zaGllbGQ6YmVmb3Jle2NvbnRlbnQ6IlxlNGYwIn0uZmEtdXNlci1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGY1MDYifS5mYS1wZW46YmVmb3Jle2NvbnRlbnQ6IlxmMzA0In0uZmEtdG93ZXItb2JzZXJ2YXRpb246YmVmb3Jle2NvbnRlbnQ6IlxlNTg2In0uZmEtZmlsZS1jb2RlOmJlZm9yZXtjb250ZW50OiJcZjFjOSJ9LmZhLXNpZ25hbC01OmJlZm9yZSwuZmEtc2lnbmFsLXBlcmZlY3Q6YmVmb3JlLC5mYS1zaWduYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMDEyIn0uZmEtYnVzOmJlZm9yZXtjb250ZW50OiJcZjIwNyJ9LmZhLWhlYXJ0LWNpcmNsZS14bWFyazpiZWZvcmV7Y29udGVudDoiXGU1MDEifS5mYS1ob21lLWxnOmJlZm9yZSwuZmEtaG91c2UtY2hpbW5leTpiZWZvcmV7Y29udGVudDoiXGUzYWYifS5mYS13aW5kb3ctbWF4aW1pemU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQwIn0uZmEtZmFjZS1mcm93bjpiZWZvcmUsLmZhLWZyb3duOmJlZm9yZXtjb250ZW50OiJcZjExOSJ9LmZhLXByZXNjcmlwdGlvbjpiZWZvcmV7Y29udGVudDoiXGY1YjEifS5mYS1zaG9wOmJlZm9yZSwuZmEtc3RvcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjU0ZiJ9LmZhLWZsb3BweS1kaXNrOmJlZm9yZSwuZmEtc2F2ZTpiZWZvcmV7Y29udGVudDoiXGYwYzcifS5mYS12aWhhcmE6YmVmb3Jle2NvbnRlbnQ6IlxmNmE3In0uZmEtYmFsYW5jZS1zY2FsZS1sZWZ0OmJlZm9yZSwuZmEtc2NhbGUtdW5iYWxhbmNlZDpiZWZvcmV7Y29udGVudDoiXGY1MTUifS5mYS1zb3J0LWFzYzpiZWZvcmUsLmZhLXNvcnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGRlIn0uZmEtY29tbWVudC1kb3RzOmJlZm9yZSwuZmEtY29tbWVudGluZzpiZWZvcmV7Y29udGVudDoiXGY0YWQifS5mYS1wbGFudC13aWx0OmJlZm9yZXtjb250ZW50OiJcZTVhYSJ9LmZhLWRpYW1vbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjE5In0uZmEtZmFjZS1ncmluLXNxdWludDpiZWZvcmUsLmZhLWdyaW4tc3F1aW50OmJlZm9yZXtjb250ZW50OiJcZjU4NSJ9LmZhLWhhbmQtaG9sZGluZy1kb2xsYXI6YmVmb3JlLC5mYS1oYW5kLWhvbGRpbmctdXNkOmJlZm9yZXtjb250ZW50OiJcZjRjMCJ9LmZhLWJhY3Rlcml1bTpiZWZvcmV7Y29udGVudDoiXGUwNWEifS5mYS1oYW5kLXBvaW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjVhIn0uZmEtZHJ1bS1zdGVlbHBhbjpiZWZvcmV7Y29udGVudDoiXGY1NmEifS5mYS1oYW5kLXNjaXNzb3JzOmJlZm9yZXtjb250ZW50OiJcZjI1NyJ9LmZhLWhhbmRzLXByYXlpbmc6YmVmb3JlLC5mYS1wcmF5aW5nLWhhbmRzOmJlZm9yZXtjb250ZW50OiJcZjY4NCJ9LmZhLWFycm93LXJpZ2h0LXJvdGF0ZTpiZWZvcmUsLmZhLWFycm93LXJvdGF0ZS1mb3J3YXJkOmJlZm9yZSwuZmEtYXJyb3ctcm90YXRlLXJpZ2h0OmJlZm9yZSwuZmEtcmVkbzpiZWZvcmV7Y29udGVudDoiXGYwMWUifS5mYS1iaW9oYXphcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNzgwIn0uZmEtbG9jYXRpb24tY3Jvc3NoYWlyczpiZWZvcmUsLmZhLWxvY2F0aW9uOmJlZm9yZXtjb250ZW50OiJcZjYwMSJ9LmZhLW1hcnMtZG91YmxlOmJlZm9yZXtjb250ZW50OiJcZjIyNyJ9LmZhLWNoaWxkLWRyZXNzOmJlZm9yZXtjb250ZW50OiJcZTU5YyJ9LmZhLXVzZXJzLWJldHdlZW4tbGluZXM6YmVmb3Jle2NvbnRlbnQ6IlxlNTkxIn0uZmEtbHVuZ3MtdmlydXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDY3In0uZmEtZmFjZS1ncmluLXRlYXJzOmJlZm9yZSwuZmEtZ3Jpbi10ZWFyczpiZWZvcmV7Y29udGVudDoiXGY1ODgifS5mYS1waG9uZTpiZWZvcmV7Y29udGVudDoiXGYwOTUifS5mYS1jYWxlbmRhci10aW1lczpiZWZvcmUsLmZhLWNhbGVuZGFyLXhtYXJrOmJlZm9yZXtjb250ZW50OiJcZjI3MyJ9LmZhLWNoaWxkLXJlYWNoaW5nOmJlZm9yZXtjb250ZW50OiJcZTU5ZCJ9LmZhLWhlYWQtc2lkZS12aXJ1czpiZWZvcmV7Y29udGVudDoiXGUwNjQifS5mYS11c2VyLWNvZzpiZWZvcmUsLmZhLXVzZXItZ2VhcjpiZWZvcmV7Y29udGVudDoiXGY0ZmUifS5mYS1hcnJvdy11cC0xLTk6YmVmb3JlLC5mYS1zb3J0LW51bWVyaWMtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTYzIn0uZmEtZG9vci1jbG9zZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTJhIn0uZmEtc2hpZWxkLXZpcnVzOmJlZm9yZXtjb250ZW50OiJcZTA2YyJ9LmZhLWRpY2Utc2l4OmJlZm9yZXtjb250ZW50OiJcZjUyNiJ9LmZhLW1vc3F1aXRvLW5ldDpiZWZvcmV7Y29udGVudDoiXGU1MmMifS5mYS1icmlkZ2Utd2F0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxlNGNlIn0uZmEtcGVyc29uLWJvb3RoOmJlZm9yZXtjb250ZW50OiJcZjc1NiJ9LmZhLXRleHQtd2lkdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDM1In0uZmEtaGF0LXdpemFyZDpiZWZvcmV7Y29udGVudDoiXGY2ZTgifS5mYS1wZW4tZmFuY3k6YmVmb3Jle2NvbnRlbnQ6IlxmNWFjIn0uZmEtZGlnZ2luZzpiZWZvcmUsLmZhLXBlcnNvbi1kaWdnaW5nOmJlZm9yZXtjb250ZW50OiJcZjg1ZSJ9LmZhLXRyYXNoOmJlZm9yZXtjb250ZW50OiJcZjFmOCJ9LmZhLWdhdWdlLXNpbXBsZS1tZWQ6YmVmb3JlLC5mYS1nYXVnZS1zaW1wbGU6YmVmb3JlLC5mYS10YWNob21ldGVyLWF2ZXJhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmNjI5In0uZmEtYm9vay1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjdlNiJ9LmZhLXBvbzpiZWZvcmV7Y29udGVudDoiXGYyZmUifS5mYS1xdW90ZS1yaWdodC1hbHQ6YmVmb3JlLC5mYS1xdW90ZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMGUifS5mYS1zaGlydDpiZWZvcmUsLmZhLXQtc2hpcnQ6YmVmb3JlLC5mYS10c2hpcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTUzIn0uZmEtY3ViZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWIzIn0uZmEtZGl2aWRlOmJlZm9yZXtjb250ZW50OiJcZjUyOSJ9LmZhLXRlbmdlLXNpZ246YmVmb3JlLC5mYS10ZW5nZTpiZWZvcmV7Y29udGVudDoiXGY3ZDcifS5mYS1oZWFkcGhvbmVzOmJlZm9yZXtjb250ZW50OiJcZjAyNSJ9LmZhLWhhbmRzLWhvbGRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNGMyIn0uZmEtaGFuZHMtY2xhcHBpbmc6YmVmb3Jle2NvbnRlbnQ6IlxlMWE4In0uZmEtcmVwdWJsaWNhbjpiZWZvcmV7Y29udGVudDoiXGY3NWUifS5mYS1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA2MCJ9LmZhLXBlcnNvbi1jaXJjbGUteG1hcms6YmVmb3Jle2NvbnRlbnQ6IlxlNTQzIn0uZmEtcnVsZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTQ1In0uZmEtYWxpZ24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwMzYifS5mYS1kaWNlLWQ2OmJlZm9yZXtjb250ZW50OiJcZjZkMSJ9LmZhLXJlc3Ryb29tOmJlZm9yZXtjb250ZW50OiJcZjdiZCJ9LmZhLWo6YmVmb3Jle2NvbnRlbnQ6Ilw0YSJ9LmZhLXVzZXJzLXZpZXdmaW5kZXI6YmVmb3Jle2NvbnRlbnQ6IlxlNTk1In0uZmEtZmlsZS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYxYzgifS5mYS1leHRlcm5hbC1saW5rLWFsdDpiZWZvcmUsLmZhLXVwLXJpZ2h0LWZyb20tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjM1ZCJ9LmZhLXRhYmxlLWNlbGxzOmJlZm9yZSwuZmEtdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDBhIn0uZmEtZmlsZS1wZGY6YmVmb3Jle2NvbnRlbnQ6IlxmMWMxIn0uZmEtYmlibGU6YmVmb3JlLC5mYS1ib29rLWJpYmxlOmJlZm9yZXtjb250ZW50OiJcZjY0NyJ9LmZhLW86YmVmb3Jle2NvbnRlbnQ6Ilw0ZiJ9LmZhLW1lZGtpdDpiZWZvcmUsLmZhLXN1aXRjYXNlLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMGZhIn0uZmEtdXNlci1zZWNyZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjFiIn0uZmEtb3R0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNzAwIn0uZmEtZmVtYWxlOmJlZm9yZSwuZmEtcGVyc29uLWRyZXNzOmJlZm9yZXtjb250ZW50OiJcZjE4MiJ9LmZhLWNvbW1lbnQtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY1MSJ9LmZhLWJyaWVmY2FzZS1jbG9jazpiZWZvcmUsLmZhLWJ1c2luZXNzLXRpbWU6YmVmb3Jle2NvbnRlbnQ6IlxmNjRhIn0uZmEtdGFibGUtY2VsbHMtbGFyZ2U6YmVmb3JlLC5mYS10aC1sYXJnZTpiZWZvcmV7Y29udGVudDoiXGYwMDkifS5mYS1ib29rLXRhbmFraDpiZWZvcmUsLmZhLXRhbmFraDpiZWZvcmV7Y29udGVudDoiXGY4MjcifS5mYS1waG9uZS12b2x1bWU6YmVmb3JlLC5mYS12b2x1bWUtY29udHJvbC1waG9uZTpiZWZvcmV7Y29udGVudDoiXGYyYTAifS5mYS1oYXQtY293Ym95LXNpZGU6YmVmb3Jle2NvbnRlbnQ6IlxmOGMxIn0uZmEtY2xpcGJvYXJkLXVzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmN2YzIn0uZmEtY2hpbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWFlIn0uZmEtbGlyYS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE5NSJ9LmZhLXNhdGVsbGl0ZTpiZWZvcmV7Y29udGVudDoiXGY3YmYifS5mYS1wbGFuZS1sb2NrOmJlZm9yZXtjb250ZW50OiJcZTU1OCJ9LmZhLXRhZzpiZWZvcmV7Y29udGVudDoiXGYwMmIifS5mYS1jb21tZW50OmJlZm9yZXtjb250ZW50OiJcZjA3NSJ9LmZhLWJpcnRoZGF5LWNha2U6YmVmb3JlLC5mYS1jYWtlLWNhbmRsZXM6YmVmb3JlLC5mYS1jYWtlOmJlZm9yZXtjb250ZW50OiJcZjFmZCJ9LmZhLWVudmVsb3BlOmJlZm9yZXtjb250ZW50OiJcZjBlMCJ9LmZhLWFuZ2xlLWRvdWJsZS11cDpiZWZvcmUsLmZhLWFuZ2xlcy11cDpiZWZvcmV7Y29udGVudDoiXGYxMDIifS5mYS1wYXBlcmNsaXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGM2In0uZmEtYXJyb3ctcmlnaHQtdG8tY2l0eTpiZWZvcmV7Y29udGVudDoiXGU0YjMifS5mYS1yaWJib246YmVmb3Jle2NvbnRlbnQ6IlxmNGQ2In0uZmEtbHVuZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmNjA0In0uZmEtYXJyb3ctdXAtOS0xOmJlZm9yZSwuZmEtc29ydC1udW1lcmljLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODcifS5mYS1saXRlY29pbi1zaWduOmJlZm9yZXtjb250ZW50OiJcZTFkMyJ9LmZhLWJvcmRlci1ub25lOmJlZm9yZXtjb250ZW50OiJcZjg1MCJ9LmZhLWNpcmNsZS1ub2RlczpiZWZvcmV7Y29udGVudDoiXGU0ZTIifS5mYS1wYXJhY2h1dGUtYm94OmJlZm9yZXtjb250ZW50OiJcZjRjZCJ9LmZhLWluZGVudDpiZWZvcmV7Y29udGVudDoiXGYwM2MifS5mYS10cnVjay1maWVsZC11bjpiZWZvcmV7Y29udGVudDoiXGU1OGUifS5mYS1ob3VyZ2xhc3MtZW1wdHk6YmVmb3JlLC5mYS1ob3VyZ2xhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjU0In0uZmEtbW91bnRhaW46YmVmb3Jle2NvbnRlbnQ6IlxmNmZjIn0uZmEtdXNlci1kb2N0b3I6YmVmb3JlLC5mYS11c2VyLW1kOmJlZm9yZXtjb250ZW50OiJcZjBmMCJ9LmZhLWNpcmNsZS1pbmZvOmJlZm9yZSwuZmEtaW5mby1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDVhIn0uZmEtY2xvdWQtbWVhdGJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNzNiIn0uZmEtY2FtZXJhLWFsdDpiZWZvcmUsLmZhLWNhbWVyYTpiZWZvcmV7Y29udGVudDoiXGYwMzAifS5mYS1zcXVhcmUtdmlydXM6YmVmb3Jle2NvbnRlbnQ6IlxlNTc4In0uZmEtbWV0ZW9yOmJlZm9yZXtjb250ZW50OiJcZjc1MyJ9LmZhLWNhci1vbjpiZWZvcmV7Y29udGVudDoiXGU0ZGQifS5mYS1zbGVpZ2g6YmVmb3Jle2NvbnRlbnQ6IlxmN2NjIn0uZmEtYXJyb3ctZG93bi0xLTk6YmVmb3JlLC5mYS1zb3J0LW51bWVyaWMtYXNjOmJlZm9yZSwuZmEtc29ydC1udW1lcmljLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTYyIn0uZmEtaGFuZC1ob2xkaW5nLWRyb3BsZXQ6YmVmb3JlLC5mYS1oYW5kLWhvbGRpbmctd2F0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNGMxIn0uZmEtd2F0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNzczIn0uZmEtY2FsZW5kYXItY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMjc0In0uZmEtYnJhaWxsZTpiZWZvcmV7Y29udGVudDoiXGYyYTEifS5mYS1wcmVzY3JpcHRpb24tYm90dGxlLWFsdDpiZWZvcmUsLmZhLXByZXNjcmlwdGlvbi1ib3R0bGUtbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGY0ODYifS5mYS1sYW5kbWFyazpiZWZvcmV7Y29udGVudDoiXGY2NmYifS5mYS10cnVjazpiZWZvcmV7Y29udGVudDoiXGYwZDEifS5mYS1jcm9zc2hhaXJzOmJlZm9yZXtjb250ZW50OiJcZjA1YiJ9LmZhLXBlcnNvbi1jYW5lOmJlZm9yZXtjb250ZW50OiJcZTUzYyJ9LmZhLXRlbnQ6YmVmb3Jle2NvbnRlbnQ6IlxlNTdkIn0uZmEtdmVzdC1wYXRjaGVzOmJlZm9yZXtjb250ZW50OiJcZTA4NiJ9LmZhLWNoZWNrLWRvdWJsZTpiZWZvcmV7Y29udGVudDoiXGY1NjAifS5mYS1hcnJvdy1kb3duLWEtejpiZWZvcmUsLmZhLXNvcnQtYWxwaGEtYXNjOmJlZm9yZSwuZmEtc29ydC1hbHBoYS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1ZCJ9LmZhLW1vbmV5LWJpbGwtd2hlYXQ6YmVmb3Jle2NvbnRlbnQ6IlxlNTJhIn0uZmEtY29va2llOmJlZm9yZXtjb250ZW50OiJcZjU2MyJ9LmZhLWFycm93LWxlZnQtcm90YXRlOmJlZm9yZSwuZmEtYXJyb3ctcm90YXRlLWJhY2s6YmVmb3JlLC5mYS1hcnJvdy1yb3RhdGUtYmFja3dhcmQ6YmVmb3JlLC5mYS1hcnJvdy1yb3RhdGUtbGVmdDpiZWZvcmUsLmZhLXVuZG86YmVmb3Jle2NvbnRlbnQ6IlxmMGUyIn0uZmEtaGFyZC1kcml2ZTpiZWZvcmUsLmZhLWhkZDpiZWZvcmV7Y29udGVudDoiXGYwYTAifS5mYS1mYWNlLWdyaW4tc3F1aW50LXRlYXJzOmJlZm9yZSwuZmEtZ3Jpbi1zcXVpbnQtdGVhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmNTg2In0uZmEtZHVtYmJlbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDRiIn0uZmEtbGlzdC1hbHQ6YmVmb3JlLC5mYS1yZWN0YW5nbGUtbGlzdDpiZWZvcmV7Y29udGVudDoiXGYwMjIifS5mYS10YXJwLWRyb3BsZXQ6YmVmb3Jle2NvbnRlbnQ6IlxlNTdjIn0uZmEtaG91c2UtbWVkaWNhbC1jaXJjbGUtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxlNTExIn0uZmEtcGVyc29uLXNraWluZy1ub3JkaWM6YmVmb3JlLC5mYS1za2lpbmctbm9yZGljOmJlZm9yZXtjb250ZW50OiJcZjdjYSJ9LmZhLWNhbGVuZGFyLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjcxIn0uZmEtcGxhbmUtYXJyaXZhbDpiZWZvcmV7Y29udGVudDoiXGY1YWYifS5mYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnQ6YmVmb3JlLC5mYS1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNTkifS5mYS1zdWJ3YXk6YmVmb3JlLC5mYS10cmFpbi1zdWJ3YXk6YmVmb3Jle2NvbnRlbnQ6IlxmMjM5In0uZmEtY2hhcnQtZ2FudHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMGU0In0uZmEtaW5kaWFuLXJ1cGVlLXNpZ246YmVmb3JlLC5mYS1pbmRpYW4tcnVwZWU6YmVmb3JlLC5mYS1pbnI6YmVmb3Jle2NvbnRlbnQ6IlxlMWJjIn0uZmEtY3JvcC1hbHQ6YmVmb3JlLC5mYS1jcm9wLXNpbXBsZTpiZWZvcmV7Y29udGVudDoiXGY1NjUifS5mYS1tb25leS1iaWxsLTE6YmVmb3JlLC5mYS1tb25leS1iaWxsLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzZDEifS5mYS1sZWZ0LWxvbmc6YmVmb3JlLC5mYS1sb25nLWFycm93LWFsdC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMwYSJ9LmZhLWRuYTpiZWZvcmV7Y29udGVudDoiXGY0NzEifS5mYS12aXJ1cy1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGUwNzUifS5mYS1taW51czpiZWZvcmUsLmZhLXN1YnRyYWN0OmJlZm9yZXtjb250ZW50OiJcZjA2OCJ9LmZhLWNoZXNzOmJlZm9yZXtjb250ZW50OiJcZjQzOSJ9LmZhLWFycm93LWxlZnQtbG9uZzpiZWZvcmUsLmZhLWxvbmctYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxNzcifS5mYS1wbHVnLWNpcmNsZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGU1NWMifS5mYS1zdHJlZXQtdmlldzpiZWZvcmV7Y29udGVudDoiXGYyMWQifS5mYS1mcmFuYy1zaWduOmJlZm9yZXtjb250ZW50OiJcZTE4ZiJ9LmZhLXZvbHVtZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxmMDI2In0uZmEtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3JlLC5mYS1hc2wtaW50ZXJwcmV0aW5nOmJlZm9yZSwuZmEtaGFuZHMtYW1lcmljYW4tc2lnbi1sYW5ndWFnZS1pbnRlcnByZXRpbmc6YmVmb3JlLC5mYS1oYW5kcy1hc2wtaW50ZXJwcmV0aW5nOmJlZm9yZXtjb250ZW50OiJcZjJhMyJ9LmZhLWNvZzpiZWZvcmUsLmZhLWdlYXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDEzIn0uZmEtZHJvcGxldC1zbGFzaDpiZWZvcmUsLmZhLXRpbnQtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWM3In0uZmEtbW9zcXVlOmJlZm9yZXtjb250ZW50OiJcZjY3OCJ9LmZhLW1vc3F1aXRvOmJlZm9yZXtjb250ZW50OiJcZTUyYiJ9LmZhLXN0YXItb2YtZGF2aWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNjlhIn0uZmEtcGVyc29uLW1pbGl0YXJ5LXJpZmxlOmJlZm9yZXtjb250ZW50OiJcZTU0YiJ9LmZhLWNhcnQtc2hvcHBpbmc6YmVmb3JlLC5mYS1zaG9wcGluZy1jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjA3YSJ9LmZhLXZpYWxzOmJlZm9yZXtjb250ZW50OiJcZjQ5MyJ9LmZhLXBsdWctY2lyY2xlLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxlNTVmIn0uZmEtcGxhY2Utb2Ytd29yc2hpcDpiZWZvcmV7Y29udGVudDoiXGY2N2YifS5mYS1ncmlwLXZlcnRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjU4ZSJ9LmZhLWFycm93LXR1cm4tdXA6YmVmb3JlLC5mYS1sZXZlbC11cDpiZWZvcmV7Y29udGVudDoiXGYxNDgifS5mYS11OmJlZm9yZXtjb250ZW50OiJcNTUifS5mYS1zcXVhcmUtcm9vdC1hbHQ6YmVmb3JlLC5mYS1zcXVhcmUtcm9vdC12YXJpYWJsZTpiZWZvcmV7Y29udGVudDoiXGY2OTgifS5mYS1jbG9jay1mb3VyOmJlZm9yZSwuZmEtY2xvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDE3In0uZmEtYmFja3dhcmQtc3RlcDpiZWZvcmUsLmZhLXN0ZXAtYmFja3dhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ4In0uZmEtcGFsbGV0OmJlZm9yZXtjb250ZW50OiJcZjQ4MiJ9LmZhLWZhdWNldDpiZWZvcmV7Y29udGVudDoiXGUwMDUifS5mYS1iYXNlYmFsbC1iYXQtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0MzIifS5mYS1zOmJlZm9yZXtjb250ZW50OiJcNTMifS5mYS10aW1lbGluZTpiZWZvcmV7Y29udGVudDoiXGUyOWMifS5mYS1rZXlib2FyZDpiZWZvcmV7Y29udGVudDoiXGYxMWMifS5mYS1jYXJldC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBkNyJ9LmZhLWNsaW5pYy1tZWRpY2FsOmJlZm9yZSwuZmEtaG91c2UtY2hpbW5leS1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjdmMiJ9LmZhLXRlbXBlcmF0dXJlLTM6YmVmb3JlLC5mYS10ZW1wZXJhdHVyZS10aHJlZS1xdWFydGVyczpiZWZvcmUsLmZhLXRoZXJtb21ldGVyLTM6YmVmb3JlLC5mYS10aGVybW9tZXRlci10aHJlZS1xdWFydGVyczpiZWZvcmV7Y29udGVudDoiXGYyYzgifS5mYS1tb2JpbGUtYW5kcm9pZC1hbHQ6YmVmb3JlLC5mYS1tb2JpbGUtc2NyZWVuOmJlZm9yZXtjb250ZW50OiJcZjNjZiJ9LmZhLXBsYW5lLXVwOmJlZm9yZXtjb250ZW50OiJcZTIyZCJ9LmZhLXBpZ2d5LWJhbms6YmVmb3Jle2NvbnRlbnQ6IlxmNGQzIn0uZmEtYmF0dGVyeS0zOmJlZm9yZSwuZmEtYmF0dGVyeS1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjI0MiJ9LmZhLW1vdW50YWluLWNpdHk6YmVmb3Jle2NvbnRlbnQ6IlxlNTJlIn0uZmEtY29pbnM6YmVmb3Jle2NvbnRlbnQ6IlxmNTFlIn0uZmEta2hhbmRhOmJlZm9yZXtjb250ZW50OiJcZjY2ZCJ9LmZhLXNsaWRlcnMtaDpiZWZvcmUsLmZhLXNsaWRlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMWRlIn0uZmEtZm9sZGVyLXRyZWU6YmVmb3Jle2NvbnRlbnQ6IlxmODAyIn0uZmEtbmV0d29yay13aXJlZDpiZWZvcmV7Y29udGVudDoiXGY2ZmYifS5mYS1tYXAtcGluOmJlZm9yZXtjb250ZW50OiJcZjI3NiJ9LmZhLWhhbXNhOmJlZm9yZXtjb250ZW50OiJcZjY2NSJ9LmZhLWNlbnQtc2lnbjpiZWZvcmV7Y29udGVudDoiXGUzZjUifS5mYS1mbGFzazpiZWZvcmV7Y29udGVudDoiXGYwYzMifS5mYS1wZXJzb24tcHJlZ25hbnQ6YmVmb3Jle2NvbnRlbnQ6IlxlMzFlIn0uZmEtd2FuZC1zcGFya2xlczpiZWZvcmV7Y29udGVudDoiXGY3MmIifS5mYS1lbGxpcHNpcy12OmJlZm9yZSwuZmEtZWxsaXBzaXMtdmVydGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMTQyIn0uZmEtdGlja2V0OmJlZm9yZXtjb250ZW50OiJcZjE0NSJ9LmZhLXBvd2VyLW9mZjpiZWZvcmV7Y29udGVudDoiXGYwMTEifS5mYS1sb25nLWFycm93LWFsdC1yaWdodDpiZWZvcmUsLmZhLXJpZ2h0LWxvbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMzBiIn0uZmEtZmxhZy11c2E6YmVmb3Jle2NvbnRlbnQ6IlxmNzRkIn0uZmEtbGFwdG9wLWZpbGU6YmVmb3Jle2NvbnRlbnQ6IlxlNTFkIn0uZmEtdGVsZXR5cGU6YmVmb3JlLC5mYS10dHk6YmVmb3Jle2NvbnRlbnQ6IlxmMWU0In0uZmEtZGlhZ3JhbS1uZXh0OmJlZm9yZXtjb250ZW50OiJcZTQ3NiJ9LmZhLXBlcnNvbi1yaWZsZTpiZWZvcmV7Y29udGVudDoiXGU1NGUifS5mYS1ob3VzZS1tZWRpY2FsLWNpcmNsZS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGU1MTIifS5mYS1jbG9zZWQtY2FwdGlvbmluZzpiZWZvcmV7Y29udGVudDoiXGYyMGEifS5mYS1oaWtpbmc6YmVmb3JlLC5mYS1wZXJzb24taGlraW5nOmJlZm9yZXtjb250ZW50OiJcZjZlYyJ9LmZhLXZlbnVzLWRvdWJsZTpiZWZvcmV7Y29udGVudDoiXGYyMjYifS5mYS1pbWFnZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMzAyIn0uZmEtY2FsY3VsYXRvcjpiZWZvcmV7Y29udGVudDoiXGYxZWMifS5mYS1wZW9wbGUtcHVsbGluZzpiZWZvcmV7Y29udGVudDoiXGU1MzUifS5mYS1uOmJlZm9yZXtjb250ZW50OiJcNGUifS5mYS1jYWJsZS1jYXI6YmVmb3JlLC5mYS10cmFtOmJlZm9yZXtjb250ZW50OiJcZjdkYSJ9LmZhLWNsb3VkLXJhaW46YmVmb3Jle2NvbnRlbnQ6IlxmNzNkIn0uZmEtYnVpbGRpbmctY2lyY2xlLXhtYXJrOmJlZm9yZXtjb250ZW50OiJcZTRkNCJ9LmZhLXNoaXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjFhIn0uZmEtYXJyb3dzLWRvd24tdG8tbGluZTpiZWZvcmV7Y29udGVudDoiXGU0YjgifS5mYS1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGYwMTkifS5mYS1mYWNlLWdyaW46YmVmb3JlLC5mYS1ncmluOmJlZm9yZXtjb250ZW50OiJcZjU4MCJ9LmZhLWJhY2tzcGFjZTpiZWZvcmUsLmZhLWRlbGV0ZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjU1YSJ9LmZhLWV5ZS1kcm9wcGVyLWVtcHR5OmJlZm9yZSwuZmEtZXllLWRyb3BwZXI6YmVmb3JlLC5mYS1leWVkcm9wcGVyOmJlZm9yZXtjb250ZW50OiJcZjFmYiJ9LmZhLWZpbGUtY2lyY2xlLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZTVhMCJ9LmZhLWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDRlIn0uZmEtbW9iaWxlLWFuZHJvaWQ6YmVmb3JlLC5mYS1tb2JpbGUtcGhvbmU6YmVmb3JlLC5mYS1tb2JpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2NlIn0uZmEtZmFjZS1tZWg6YmVmb3JlLC5mYS1tZWg6YmVmb3Jle2NvbnRlbnQ6IlxmMTFhIn0uZmEtYWxpZ24tY2VudGVyOmJlZm9yZXtjb250ZW50OiJcZjAzNyJ9LmZhLWJvb2stZGVhZDpiZWZvcmUsLmZhLWJvb2stc2t1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmNmI3In0uZmEtZHJpdmVycy1saWNlbnNlOmJlZm9yZSwuZmEtaWQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYyYzIifS5mYS1kZWRlbnQ6YmVmb3JlLC5mYS1vdXRkZW50OmJlZm9yZXtjb250ZW50OiJcZjAzYiJ9LmZhLWhlYXJ0LWNpcmNsZS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGU0ZmUifS5mYS1ob21lLWFsdDpiZWZvcmUsLmZhLWhvbWUtbGctYWx0OmJlZm9yZSwuZmEtaG9tZTpiZWZvcmUsLmZhLWhvdXNlOmJlZm9yZXtjb250ZW50OiJcZjAxNSJ9LmZhLWNhbGVuZGFyLXdlZWs6YmVmb3Jle2NvbnRlbnQ6IlxmNzg0In0uZmEtbGFwdG9wLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmODEyIn0uZmEtYjpiZWZvcmV7Y29udGVudDoiXDQyIn0uZmEtZmlsZS1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjQ3NyJ9LmZhLWRpY2Utb25lOmJlZm9yZXtjb250ZW50OiJcZjUyNSJ9LmZhLWtpd2ktYmlyZDpiZWZvcmV7Y29udGVudDoiXGY1MzUifS5mYS1hcnJvdy1yaWdodC1hcnJvdy1sZWZ0OmJlZm9yZSwuZmEtZXhjaGFuZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGVjIn0uZmEtcmVkby1hbHQ6YmVmb3JlLC5mYS1yb3RhdGUtZm9yd2FyZDpiZWZvcmUsLmZhLXJvdGF0ZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYyZjkifS5mYS1jdXRsZXJ5OmJlZm9yZSwuZmEtdXRlbnNpbHM6YmVmb3Jle2NvbnRlbnQ6IlxmMmU3In0uZmEtYXJyb3ctdXAtd2lkZS1zaG9ydDpiZWZvcmUsLmZhLXNvcnQtYW1vdW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MSJ9LmZhLW1pbGwtc2lnbjpiZWZvcmV7Y29udGVudDoiXGUxZWQifS5mYS1ib3dsLXJpY2U6YmVmb3Jle2NvbnRlbnQ6IlxlMmViIn0uZmEtc2t1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmNTRjIn0uZmEtYnJvYWRjYXN0LXRvd2VyOmJlZm9yZSwuZmEtdG93ZXItYnJvYWRjYXN0OmJlZm9yZXtjb250ZW50OiJcZjUxOSJ9LmZhLXRydWNrLXBpY2t1cDpiZWZvcmV7Y29udGVudDoiXGY2M2MifS5mYS1sb25nLWFycm93LWFsdC11cDpiZWZvcmUsLmZhLXVwLWxvbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMzBjIn0uZmEtc3RvcDpiZWZvcmV7Y29udGVudDoiXGYwNGQifS5mYS1jb2RlLW1lcmdlOmJlZm9yZXtjb250ZW50OiJcZjM4NyJ9LmZhLXVwbG9hZDpiZWZvcmV7Y29udGVudDoiXGYwOTMifS5mYS1odXJyaWNhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmNzUxIn0uZmEtbW91bmQ6YmVmb3Jle2NvbnRlbnQ6IlxlNTJkIn0uZmEtdG9pbGV0LXBvcnRhYmxlOmJlZm9yZXtjb250ZW50OiJcZTU4MyJ9LmZhLWNvbXBhY3QtZGlzYzpiZWZvcmV7Y29udGVudDoiXGY1MWYifS5mYS1maWxlLWFycm93LWRvd246YmVmb3JlLC5mYS1maWxlLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjU2ZCJ9LmZhLWNhcmF2YW46YmVmb3Jle2NvbnRlbnQ6IlxmOGZmIn0uZmEtc2hpZWxkLWNhdDpiZWZvcmV7Y29udGVudDoiXGU1NzIifS5mYS1ib2x0OmJlZm9yZSwuZmEtemFwOmJlZm9yZXtjb250ZW50OiJcZjBlNyJ9LmZhLWdsYXNzLXdhdGVyOmJlZm9yZXtjb250ZW50OiJcZTRmNCJ9LmZhLW9pbC13ZWxsOmJlZm9yZXtjb250ZW50OiJcZTUzMiJ9LmZhLXZhdWx0OmJlZm9yZXtjb250ZW50OiJcZTJjNSJ9LmZhLW1hcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjIyIn0uZmEtdG9pbGV0OmJlZm9yZXtjb250ZW50OiJcZjdkOCJ9LmZhLXBsYW5lLWNpcmNsZS14bWFyazpiZWZvcmV7Y29udGVudDoiXGU1NTcifS5mYS1jbnk6YmVmb3JlLC5mYS1qcHk6YmVmb3JlLC5mYS1ybWI6YmVmb3JlLC5mYS15ZW4tc2lnbjpiZWZvcmUsLmZhLXllbjpiZWZvcmV7Y29udGVudDoiXGYxNTcifS5mYS1yb3VibGU6YmVmb3JlLC5mYS1ydWI6YmVmb3JlLC5mYS1ydWJsZS1zaWduOmJlZm9yZSwuZmEtcnVibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTU4In0uZmEtc3VuOmJlZm9yZXtjb250ZW50OiJcZjE4NSJ9LmZhLWd1aXRhcjpiZWZvcmV7Y29udGVudDoiXGY3YTYifS5mYS1mYWNlLWxhdWdoLXdpbms6YmVmb3JlLC5mYS1sYXVnaC13aW5rOmJlZm9yZXtjb250ZW50OiJcZjU5YyJ9LmZhLWhvcnNlLWhlYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmN2FiIn0uZmEtYm9yZS1ob2xlOmJlZm9yZXtjb250ZW50OiJcZTRjMyJ9LmZhLWluZHVzdHJ5OmJlZm9yZXtjb250ZW50OiJcZjI3NSJ9LmZhLWFycm93LWFsdC1jaXJjbGUtZG93bjpiZWZvcmUsLmZhLWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjM1OCJ9LmZhLWFycm93cy10dXJuLXRvLWRvdHM6YmVmb3Jle2NvbnRlbnQ6IlxlNGMxIn0uZmEtZmxvcmluLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMTg0In0uZmEtYXJyb3ctZG93bi1zaG9ydC13aWRlOmJlZm9yZSwuZmEtc29ydC1hbW91bnQtZGVzYzpiZWZvcmUsLmZhLXNvcnQtYW1vdW50LWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4NCJ9LmZhLWxlc3MtdGhhbjpiZWZvcmV7Y29udGVudDoiXDNjIn0uZmEtYW5nbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxMDcifS5mYS1jYXItdHVubmVsOmJlZm9yZXtjb250ZW50OiJcZTRkZSJ9LmZhLWhlYWQtc2lkZS1jb3VnaDpiZWZvcmV7Y29udGVudDoiXGUwNjEifS5mYS1ncmlwLWxpbmVzOmJlZm9yZXtjb250ZW50OiJcZjdhNCJ9LmZhLXRodW1icy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2NSJ9LmZhLXVzZXItbG9jazpiZWZvcmV7Y29udGVudDoiXGY1MDIifS5mYS1hcnJvdy1yaWdodC1sb25nOmJlZm9yZSwuZmEtbG9uZy1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxNzgifS5mYS1hbmNob3ItY2lyY2xlLXhtYXJrOmJlZm9yZXtjb250ZW50OiJcZTRhYyJ9LmZhLWVsbGlwc2lzLWg6YmVmb3JlLC5mYS1lbGxpcHNpczpiZWZvcmV7Y29udGVudDoiXGYxNDEifS5mYS1jaGVzcy1wYXduOmJlZm9yZXtjb250ZW50OiJcZjQ0MyJ9LmZhLWZpcnN0LWFpZDpiZWZvcmUsLmZhLWtpdC1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjQ3OSJ9LmZhLXBlcnNvbi10aHJvdWdoLXdpbmRvdzpiZWZvcmV7Y29udGVudDoiXGU1YTkifS5mYS10b29sYm94OmJlZm9yZXtjb250ZW50OiJcZjU1MiJ9LmZhLWhhbmRzLWhvbGRpbmctY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZTRmYiJ9LmZhLWJ1ZzpiZWZvcmV7Y29udGVudDoiXGYxODgifS5mYS1jcmVkaXQtY2FyZC1hbHQ6YmVmb3JlLC5mYS1jcmVkaXQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYwOWQifS5mYS1hdXRvbW9iaWxlOmJlZm9yZSwuZmEtY2FyOmJlZm9yZXtjb250ZW50OiJcZjFiOSJ9LmZhLWhhbmQtaG9sZGluZy1oYW5kOmJlZm9yZXtjb250ZW50OiJcZTRmNyJ9LmZhLWJvb2stb3Blbi1yZWFkZXI6YmVmb3JlLC5mYS1ib29rLXJlYWRlcjpiZWZvcmV7Y29udGVudDoiXGY1ZGEifS5mYS1tb3VudGFpbi1zdW46YmVmb3Jle2NvbnRlbnQ6IlxlNTJmIn0uZmEtYXJyb3dzLWxlZnQtcmlnaHQtdG8tbGluZTpiZWZvcmV7Y29udGVudDoiXGU0YmEifS5mYS1kaWNlLWQyMDpiZWZvcmV7Y29udGVudDoiXGY2Y2YifS5mYS10cnVjay1kcm9wbGV0OmJlZm9yZXtjb250ZW50OiJcZTU4YyJ9LmZhLWZpbGUtY2lyY2xlLXhtYXJrOmJlZm9yZXtjb250ZW50OiJcZTVhMSJ9LmZhLXRlbXBlcmF0dXJlLWFycm93LXVwOmJlZm9yZSwuZmEtdGVtcGVyYXR1cmUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlMDQwIn0uZmEtbWVkYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNWEyIn0uZmEtYmVkOmJlZm9yZXtjb250ZW50OiJcZjIzNiJ9LmZhLWgtc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMGZkIn0uZmEtcG9kY2FzdDpiZWZvcmV7Y29udGVudDoiXGYyY2UifS5mYS10ZW1wZXJhdHVyZS00OmJlZm9yZSwuZmEtdGVtcGVyYXR1cmUtZnVsbDpiZWZvcmUsLmZhLXRoZXJtb21ldGVyLTQ6YmVmb3JlLC5mYS10aGVybW9tZXRlci1mdWxsOmJlZm9yZXtjb250ZW50OiJcZjJjNyJ9LmZhLWJlbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMGYzIn0uZmEtc3VwZXJzY3JpcHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTJiIn0uZmEtcGx1Zy1jaXJjbGUteG1hcms6YmVmb3Jle2NvbnRlbnQ6IlxlNTYwIn0uZmEtc3Rhci1vZi1saWZlOmJlZm9yZXtjb250ZW50OiJcZjYyMSJ9LmZhLXBob25lLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjNkZCJ9LmZhLXBhaW50LXJvbGxlcjpiZWZvcmV7Y29udGVudDoiXGY1YWEifS5mYS1oYW5kcy1oZWxwaW5nOmJlZm9yZSwuZmEtaGFuZHNoYWtlLWFuZ2xlOmJlZm9yZXtjb250ZW50OiJcZjRjNCJ9LmZhLWxvY2F0aW9uLWRvdDpiZWZvcmUsLmZhLW1hcC1tYXJrZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjNSJ9LmZhLWZpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTViIn0uZmEtZ3JlYXRlci10aGFuOmJlZm9yZXtjb250ZW50OiJcM2UifS5mYS1wZXJzb24tc3dpbW1pbmc6YmVmb3JlLC5mYS1zd2ltbWVyOmJlZm9yZXtjb250ZW50OiJcZjVjNCJ9LmZhLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDYzIn0uZmEtZHJvcGxldDpiZWZvcmUsLmZhLXRpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDQzIn0uZmEtZXJhc2VyOmJlZm9yZXtjb250ZW50OiJcZjEyZCJ9LmZhLWVhcnRoLWFtZXJpY2E6YmVmb3JlLC5mYS1lYXJ0aC1hbWVyaWNhczpiZWZvcmUsLmZhLWVhcnRoOmJlZm9yZSwuZmEtZ2xvYmUtYW1lcmljYXM6YmVmb3Jle2NvbnRlbnQ6IlxmNTdkIn0uZmEtcGVyc29uLWJ1cnN0OmJlZm9yZXtjb250ZW50OiJcZTUzYiJ9LmZhLWRvdmU6YmVmb3Jle2NvbnRlbnQ6IlxmNGJhIn0uZmEtYmF0dGVyeS0wOmJlZm9yZSwuZmEtYmF0dGVyeS1lbXB0eTpiZWZvcmV7Y29udGVudDoiXGYyNDQifS5mYS1zb2NrczpiZWZvcmV7Y29udGVudDoiXGY2OTYifS5mYS1pbmJveDpiZWZvcmV7Y29udGVudDoiXGYwMWMifS5mYS1zZWN0aW9uOmJlZm9yZXtjb250ZW50OiJcZTQ0NyJ9LmZhLWdhdWdlLWhpZ2g6YmVmb3JlLC5mYS10YWNob21ldGVyLWFsdC1mYXN0OmJlZm9yZSwuZmEtdGFjaG9tZXRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNjI1In0uZmEtZW52ZWxvcGUtb3Blbi10ZXh0OmJlZm9yZXtjb250ZW50OiJcZjY1OCJ9LmZhLWhvc3BpdGFsLWFsdDpiZWZvcmUsLmZhLWhvc3BpdGFsLXdpZGU6YmVmb3JlLC5mYS1ob3NwaXRhbDpiZWZvcmV7Y29udGVudDoiXGYwZjgifS5mYS13aW5lLWJvdHRsZTpiZWZvcmV7Y29udGVudDoiXGY3MmYifS5mYS1jaGVzcy1yb29rOmJlZm9yZXtjb250ZW50OiJcZjQ0NyJ9LmZhLWJhcnMtc3RhZ2dlcmVkOmJlZm9yZSwuZmEtcmVvcmRlcjpiZWZvcmUsLmZhLXN0cmVhbTpiZWZvcmV7Y29udGVudDoiXGY1NTAifS5mYS1kaGFybWFjaGFrcmE6YmVmb3Jle2NvbnRlbnQ6IlxmNjU1In0uZmEtaG90ZG9nOmJlZm9yZXtjb250ZW50OiJcZjgwZiJ9LmZhLWJsaW5kOmJlZm9yZSwuZmEtcGVyc29uLXdhbGtpbmctd2l0aC1jYW5lOmJlZm9yZXtjb250ZW50OiJcZjI5ZCJ9LmZhLWRydW06YmVmb3Jle2NvbnRlbnQ6IlxmNTY5In0uZmEtaWNlLWNyZWFtOmJlZm9yZXtjb250ZW50OiJcZjgxMCJ9LmZhLWhlYXJ0LWNpcmNsZS1ib2x0OmJlZm9yZXtjb250ZW50OiJcZTRmYyJ9LmZhLWZheDpiZWZvcmV7Y29udGVudDoiXGYxYWMifS5mYS1wYXJhZ3JhcGg6YmVmb3Jle2NvbnRlbnQ6IlxmMWRkIn0uZmEtY2hlY2stdG8tc2xvdDpiZWZvcmUsLmZhLXZvdGUteWVhOmJlZm9yZXtjb250ZW50OiJcZjc3MiJ9LmZhLXN0YXItaGFsZjpiZWZvcmV7Y29udGVudDoiXGYwODkifS5mYS1ib3hlcy1hbHQ6YmVmb3JlLC5mYS1ib3hlcy1zdGFja2VkOmJlZm9yZSwuZmEtYm94ZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNDY4In0uZmEtY2hhaW46YmVmb3JlLC5mYS1saW5rOmJlZm9yZXtjb250ZW50OiJcZjBjMSJ9LmZhLWFzc2lzdGl2ZS1saXN0ZW5pbmctc3lzdGVtczpiZWZvcmUsLmZhLWVhci1saXN0ZW46YmVmb3Jle2NvbnRlbnQ6IlxmMmEyIn0uZmEtdHJlZS1jaXR5OmJlZm9yZXtjb250ZW50OiJcZTU4NyJ9LmZhLXBsYXk6YmVmb3Jle2NvbnRlbnQ6IlxmMDRiIn0uZmEtZm9udDpiZWZvcmV7Y29udGVudDoiXGYwMzEifS5mYS1ydXBpYWgtc2lnbjpiZWZvcmV7Y29udGVudDoiXGUyM2QifS5mYS1tYWduaWZ5aW5nLWdsYXNzOmJlZm9yZSwuZmEtc2VhcmNoOmJlZm9yZXtjb250ZW50OiJcZjAwMiJ9LmZhLXBpbmctcG9uZy1wYWRkbGUtYmFsbDpiZWZvcmUsLmZhLXRhYmxlLXRlbm5pcy1wYWRkbGUtYmFsbDpiZWZvcmUsLmZhLXRhYmxlLXRlbm5pczpiZWZvcmV7Y29udGVudDoiXGY0NWQifS5mYS1kaWFnbm9zZXM6YmVmb3JlLC5mYS1wZXJzb24tZG90cy1mcm9tLWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmNDcwIn0uZmEtdHJhc2gtY2FuLWFycm93LXVwOmJlZm9yZSwuZmEtdHJhc2gtcmVzdG9yZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODJhIn0uZmEtbmFpcmEtc2lnbjpiZWZvcmV7Y29udGVudDoiXGUxZjYifS5mYS1jYXJ0LWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMjE4In0uZmEtd2Fsa2llLXRhbGtpZTpiZWZvcmV7Y29udGVudDoiXGY4ZWYifS5mYS1maWxlLWVkaXQ6YmVmb3JlLC5mYS1maWxlLXBlbjpiZWZvcmV7Y29udGVudDoiXGYzMWMifS5mYS1yZWNlaXB0OmJlZm9yZXtjb250ZW50OiJcZjU0MyJ9LmZhLXBlbi1zcXVhcmU6YmVmb3JlLC5mYS1wZW5jaWwtc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLXBlbjpiZWZvcmV7Y29udGVudDoiXGYxNGIifS5mYS1zdWl0Y2FzZS1yb2xsaW5nOmJlZm9yZXtjb250ZW50OiJcZjVjMSJ9LmZhLXBlcnNvbi1jaXJjbGUtZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxlNTNmIn0uZmEtY2hldnJvbi1kb3duOmJlZm9yZXtjb250ZW50OiJcZjA3OCJ9LmZhLWJhdHRlcnktNTpiZWZvcmUsLmZhLWJhdHRlcnktZnVsbDpiZWZvcmUsLmZhLWJhdHRlcnk6YmVmb3Jle2NvbnRlbnQ6IlxmMjQwIn0uZmEtc2t1bGwtY3Jvc3Nib25lczpiZWZvcmV7Y29udGVudDoiXGY3MTQifS5mYS1jb2RlLWNvbXBhcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMTNhIn0uZmEtbGlzdC1kb3RzOmJlZm9yZSwuZmEtbGlzdC11bDpiZWZvcmV7Y29udGVudDoiXGYwY2EifS5mYS1zY2hvb2wtbG9jazpiZWZvcmV7Y29udGVudDoiXGU1NmYifS5mYS10b3dlci1jZWxsOmJlZm9yZXtjb250ZW50OiJcZTU4NSJ9LmZhLWRvd24tbG9uZzpiZWZvcmUsLmZhLWxvbmctYXJyb3ctYWx0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzA5In0uZmEtcmFua2luZy1zdGFyOmJlZm9yZXtjb250ZW50OiJcZTU2MSJ9LmZhLWNoZXNzLWtpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNDNmIn0uZmEtcGVyc29uLWhhcmFzc2luZzpiZWZvcmV7Y29udGVudDoiXGU1NDkifS5mYS1icmF6aWxpYW4tcmVhbC1zaWduOmJlZm9yZXtjb250ZW50OiJcZTQ2YyJ9LmZhLWxhbmRtYXJrLWFsdDpiZWZvcmUsLmZhLWxhbmRtYXJrLWRvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmNzUyIn0uZmEtYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDYyIn0uZmEtdGVsZXZpc2lvbjpiZWZvcmUsLmZhLXR2LWFsdDpiZWZvcmUsLmZhLXR2OmJlZm9yZXtjb250ZW50OiJcZjI2YyJ9LmZhLXNocmltcDpiZWZvcmV7Y29udGVudDoiXGU0NDgifS5mYS1saXN0LWNoZWNrOmJlZm9yZSwuZmEtdGFza3M6YmVmb3Jle2NvbnRlbnQ6IlxmMGFlIn0uZmEtanVnLWRldGVyZ2VudDpiZWZvcmV7Y29udGVudDoiXGU1MTkifS5mYS1jaXJjbGUtdXNlcjpiZWZvcmUsLmZhLXVzZXItY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjJiZCJ9LmZhLXVzZXItc2hpZWxkOmJlZm9yZXtjb250ZW50OiJcZjUwNSJ9LmZhLXdpbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNzJlIn0uZmEtY2FyLWJ1cnN0OmJlZm9yZSwuZmEtY2FyLWNyYXNoOmJlZm9yZXtjb250ZW50OiJcZjVlMSJ9LmZhLXk6YmVmb3Jle2NvbnRlbnQ6Ilw1OSJ9LmZhLXBlcnNvbi1zbm93Ym9hcmRpbmc6YmVmb3JlLC5mYS1zbm93Ym9hcmRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmN2NlIn0uZmEtc2hpcHBpbmctZmFzdDpiZWZvcmUsLmZhLXRydWNrLWZhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNDhiIn0uZmEtZmlzaDpiZWZvcmV7Y29udGVudDoiXGY1NzgifS5mYS11c2VyLWdyYWR1YXRlOmJlZm9yZXtjb250ZW50OiJcZjUwMSJ9LmZhLWFkanVzdDpiZWZvcmUsLmZhLWNpcmNsZS1oYWxmLXN0cm9rZTpiZWZvcmV7Y29udGVudDoiXGYwNDIifS5mYS1jbGFwcGVyYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxlMTMxIn0uZmEtY2lyY2xlLXJhZGlhdGlvbjpiZWZvcmUsLmZhLXJhZGlhdGlvbi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmN2JhIn0uZmEtYmFzZWJhbGwtYmFsbDpiZWZvcmUsLmZhLWJhc2ViYWxsOmJlZm9yZXtjb250ZW50OiJcZjQzMyJ9LmZhLWpldC1maWdodGVyLXVwOmJlZm9yZXtjb250ZW50OiJcZTUxOCJ9LmZhLWRpYWdyYW0tcHJvamVjdDpiZWZvcmUsLmZhLXByb2plY3QtZGlhZ3JhbTpiZWZvcmV7Y29udGVudDoiXGY1NDIifS5mYS1jb3B5OmJlZm9yZXtjb250ZW50OiJcZjBjNSJ9LmZhLXZvbHVtZS1tdXRlOmJlZm9yZSwuZmEtdm9sdW1lLXRpbWVzOmJlZm9yZSwuZmEtdm9sdW1lLXhtYXJrOmJlZm9yZXtjb250ZW50OiJcZjZhOSJ9LmZhLWhhbmQtc3BhcmtsZXM6YmVmb3Jle2NvbnRlbnQ6IlxlMDVkIn0uZmEtZ3JpcC1ob3Jpem9udGFsOmJlZm9yZSwuZmEtZ3JpcDpiZWZvcmV7Y29udGVudDoiXGY1OGQifS5mYS1zaGFyZS1mcm9tLXNxdWFyZTpiZWZvcmUsLmZhLXNoYXJlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGQifS5mYS1jaGlsZC1jb21iYXRhbnQ6YmVmb3JlLC5mYS1jaGlsZC1yaWZsZTpiZWZvcmV7Y29udGVudDoiXGU0ZTAifS5mYS1ndW46YmVmb3Jle2NvbnRlbnQ6IlxlMTliIn0uZmEtcGhvbmUtc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLXBob25lOmJlZm9yZXtjb250ZW50OiJcZjA5OCJ9LmZhLWFkZDpiZWZvcmUsLmZhLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlwyYiJ9LmZhLWV4cGFuZDpiZWZvcmV7Y29udGVudDoiXGYwNjUifS5mYS1jb21wdXRlcjpiZWZvcmV7Y29udGVudDoiXGU0ZTUifS5mYS1jbG9zZTpiZWZvcmUsLmZhLW11bHRpcGx5OmJlZm9yZSwuZmEtcmVtb3ZlOmJlZm9yZSwuZmEtdGltZXM6YmVmb3JlLC5mYS14bWFyazpiZWZvcmV7Y29udGVudDoiXGYwMGQifS5mYS1hcnJvd3MtdXAtZG93bi1sZWZ0LXJpZ2h0OmJlZm9yZSwuZmEtYXJyb3dzOmJlZm9yZXtjb250ZW50OiJcZjA0NyJ9LmZhLWNoYWxrYm9hcmQtdGVhY2hlcjpiZWZvcmUsLmZhLWNoYWxrYm9hcmQtdXNlcjpiZWZvcmV7Y29udGVudDoiXGY1MWMifS5mYS1wZXNvLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMjIyIn0uZmEtYnVpbGRpbmctc2hpZWxkOmJlZm9yZXtjb250ZW50OiJcZTRkOCJ9LmZhLWJhYnk6YmVmb3Jle2NvbnRlbnQ6IlxmNzdjIn0uZmEtdXNlcnMtbGluZTpiZWZvcmV7Y29udGVudDoiXGU1OTIifS5mYS1xdW90ZS1sZWZ0LWFsdDpiZWZvcmUsLmZhLXF1b3RlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBkIn0uZmEtdHJhY3RvcjpiZWZvcmV7Y29udGVudDoiXGY3MjIifS5mYS10cmFzaC1hcnJvdy11cDpiZWZvcmUsLmZhLXRyYXNoLXJlc3RvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmODI5In0uZmEtYXJyb3ctZG93bi11cC1sb2NrOmJlZm9yZXtjb250ZW50OiJcZTRiMCJ9LmZhLWxpbmVzLWxlYW5pbmc6YmVmb3Jle2NvbnRlbnQ6IlxlNTFlIn0uZmEtcnVsZXItY29tYmluZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTQ2In0uZmEtY29weXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjFmOSJ9LmZhLWVxdWFsczpiZWZvcmV7Y29udGVudDoiXDNkIn0uZmEtYmxlbmRlcjpiZWZvcmV7Y29udGVudDoiXGY1MTcifS5mYS10ZWV0aDpiZWZvcmV7Y29udGVudDoiXGY2MmUifS5mYS1pbHM6YmVmb3JlLC5mYS1zaGVrZWwtc2lnbjpiZWZvcmUsLmZhLXNoZWtlbDpiZWZvcmUsLmZhLXNoZXFlbC1zaWduOmJlZm9yZSwuZmEtc2hlcWVsOmJlZm9yZXtjb250ZW50OiJcZjIwYiJ9LmZhLW1hcDpiZWZvcmV7Y29udGVudDoiXGYyNzkifS5mYS1yb2NrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTM1In0uZmEtcGhvdG8tZmlsbTpiZWZvcmUsLmZhLXBob3RvLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZjg3YyJ9LmZhLWZvbGRlci1taW51czpiZWZvcmV7Y29udGVudDoiXGY2NWQifS5mYS1zdG9yZTpiZWZvcmV7Y29udGVudDoiXGY1NGUifS5mYS1hcnJvdy10cmVuZC11cDpiZWZvcmV7Y29udGVudDoiXGUwOTgifS5mYS1wbHVnLWNpcmNsZS1taW51czpiZWZvcmV7Y29udGVudDoiXGU1NWUifS5mYS1zaWduLWhhbmdpbmc6YmVmb3JlLC5mYS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjRkOSJ9LmZhLWJlemllci1jdXJ2ZTpiZWZvcmV7Y29udGVudDoiXGY1NWIifS5mYS1iZWxsLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjFmNiJ9LmZhLXRhYmxldC1hbmRyb2lkOmJlZm9yZSwuZmEtdGFibGV0OmJlZm9yZXtjb250ZW50OiJcZjNmYiJ9LmZhLXNjaG9vbC1mbGFnOmJlZm9yZXtjb250ZW50OiJcZTU2ZSJ9LmZhLWZpbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNTc1In0uZmEtYW5nbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTA2In0uZmEtZHJ1bXN0aWNrLWJpdGU6YmVmb3Jle2NvbnRlbnQ6IlxmNmQ3In0uZmEtaG9sbHktYmVycnk6YmVmb3Jle2NvbnRlbnQ6IlxmN2FhIn0uZmEtY2hldnJvbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA1MyJ9LmZhLWJhY3RlcmlhOmJlZm9yZXtjb250ZW50OiJcZTA1OSJ9LmZhLWhhbmQtbGl6YXJkOmJlZm9yZXtjb250ZW50OiJcZjI1OCJ9LmZhLW5vdGRlZjpiZWZvcmV7Y29udGVudDoiXGUxZmUifS5mYS1kaXNlYXNlOmJlZm9yZXtjb250ZW50OiJcZjdmYSJ9LmZhLWJyaWVmY2FzZS1tZWRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjQ2OSJ9LmZhLWdlbmRlcmxlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjJkIn0uZmEtY2hldnJvbi1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwNTQifS5mYS1yZXR3ZWV0OmJlZm9yZXtjb250ZW50OiJcZjA3OSJ9LmZhLWNhci1hbHQ6YmVmb3JlLC5mYS1jYXItcmVhcjpiZWZvcmV7Y29udGVudDoiXGY1ZGUifS5mYS1wdW1wLXNvYXA6YmVmb3Jle2NvbnRlbnQ6IlxlMDZiIn0uZmEtdmlkZW8tc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNGUyIn0uZmEtYmF0dGVyeS0yOmJlZm9yZSwuZmEtYmF0dGVyeS1xdWFydGVyOmJlZm9yZXtjb250ZW50OiJcZjI0MyJ9LmZhLXJhZGlvOmJlZm9yZXtjb250ZW50OiJcZjhkNyJ9LmZhLWJhYnktY2FycmlhZ2U6YmVmb3JlLC5mYS1jYXJyaWFnZS1iYWJ5OmJlZm9yZXtjb250ZW50OiJcZjc3ZCJ9LmZhLXRyYWZmaWMtbGlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNjM3In0uZmEtdGhlcm1vbWV0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDkxIn0uZmEtdnItY2FyZGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjcyOSJ9LmZhLWhhbmQtbWlkZGxlLWZpbmdlcjpiZWZvcmV7Y29udGVudDoiXGY4MDYifS5mYS1wZXJjZW50OmJlZm9yZSwuZmEtcGVyY2VudGFnZTpiZWZvcmV7Y29udGVudDoiXDI1In0uZmEtdHJ1Y2stbW92aW5nOmJlZm9yZXtjb250ZW50OiJcZjRkZiJ9LmZhLWdsYXNzLXdhdGVyLWRyb3BsZXQ6YmVmb3Jle2NvbnRlbnQ6IlxlNGY1In0uZmEtZGlzcGxheTpiZWZvcmV7Y29udGVudDoiXGUxNjMifS5mYS1mYWNlLXNtaWxlOmJlZm9yZSwuZmEtc21pbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTE4In0uZmEtdGh1bWItdGFjazpiZWZvcmUsLmZhLXRodW1idGFjazpiZWZvcmV7Y29udGVudDoiXGYwOGQifS5mYS10cm9waHk6YmVmb3Jle2NvbnRlbnQ6IlxmMDkxIn0uZmEtcGVyc29uLXByYXlpbmc6YmVmb3JlLC5mYS1wcmF5OmJlZm9yZXtjb250ZW50OiJcZjY4MyJ9LmZhLWhhbW1lcjpiZWZvcmV7Y29udGVudDoiXGY2ZTMifS5mYS1oYW5kLXBlYWNlOmJlZm9yZXtjb250ZW50OiJcZjI1YiJ9LmZhLXJvdGF0ZTpiZWZvcmUsLmZhLXN5bmMtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmMSJ9LmZhLXNwaW5uZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTEwIn0uZmEtcm9ib3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNTQ0In0uZmEtcGVhY2U6YmVmb3Jle2NvbnRlbnQ6IlxmNjdjIn0uZmEtY29nczpiZWZvcmUsLmZhLWdlYXJzOmJlZm9yZXtjb250ZW50OiJcZjA4NSJ9LmZhLXdhcmVob3VzZTpiZWZvcmV7Y29udGVudDoiXGY0OTQifS5mYS1hcnJvdy11cC1yaWdodC1kb3RzOmJlZm9yZXtjb250ZW50OiJcZTRiNyJ9LmZhLXNwbG90Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWJjIn0uZmEtZmFjZS1ncmluLWhlYXJ0czpiZWZvcmUsLmZhLWdyaW4taGVhcnRzOmJlZm9yZXtjb250ZW50OiJcZjU4NCJ9LmZhLWRpY2UtZm91cjpiZWZvcmV7Y29udGVudDoiXGY1MjQifS5mYS1zaW0tY2FyZDpiZWZvcmV7Y29udGVudDoiXGY3YzQifS5mYS10cmFuc2dlbmRlci1hbHQ6YmVmb3JlLC5mYS10cmFuc2dlbmRlcjpiZWZvcmV7Y29udGVudDoiXGYyMjUifS5mYS1tZXJjdXJ5OmJlZm9yZXtjb250ZW50OiJcZjIyMyJ9LmZhLWFycm93LXR1cm4tZG93bjpiZWZvcmUsLmZhLWxldmVsLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTQ5In0uZmEtcGVyc29uLWZhbGxpbmctYnVyc3Q6YmVmb3Jle2NvbnRlbnQ6IlxlNTQ3In0uZmEtYXdhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTU5In0uZmEtdGlja2V0LWFsdDpiZWZvcmUsLmZhLXRpY2tldC1zaW1wbGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZmIn0uZmEtYnVpbGRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMWFkIn0uZmEtYW5nbGUtZG91YmxlLWxlZnQ6YmVmb3JlLC5mYS1hbmdsZXMtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDAifS5mYS1xcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDI5In0uZmEtY2xvY2stcm90YXRlLWxlZnQ6YmVmb3JlLC5mYS1oaXN0b3J5OmJlZm9yZXtjb250ZW50OiJcZjFkYSJ9LmZhLWZhY2UtZ3Jpbi1iZWFtLXN3ZWF0OmJlZm9yZSwuZmEtZ3Jpbi1iZWFtLXN3ZWF0OmJlZm9yZXtjb250ZW50OiJcZjU4MyJ9LmZhLWFycm93LXJpZ2h0LWZyb20tZmlsZTpiZWZvcmUsLmZhLWZpbGUtZXhwb3J0OmJlZm9yZXtjb250ZW50OiJcZjU2ZSJ9LmZhLXNoaWVsZC1ibGFuazpiZWZvcmUsLmZhLXNoaWVsZDpiZWZvcmV7Y29udGVudDoiXGYxMzIifS5mYS1hcnJvdy11cC1zaG9ydC13aWRlOmJlZm9yZSwuZmEtc29ydC1hbW91bnQtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4NSJ9LmZhLWhvdXNlLW1lZGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxlM2IyIn0uZmEtZ29sZi1iYWxsLXRlZTpiZWZvcmUsLmZhLWdvbGYtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0NTAifS5mYS1jaGV2cm9uLWNpcmNsZS1sZWZ0OmJlZm9yZSwuZmEtY2lyY2xlLWNoZXZyb24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMzcifS5mYS1ob3VzZS1jaGltbmV5LXdpbmRvdzpiZWZvcmV7Y29udGVudDoiXGUwMGQifS5mYS1wZW4tbmliOmJlZm9yZXtjb250ZW50OiJcZjVhZCJ9LmZhLXRlbnQtYXJyb3ctdHVybi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZTU4MCJ9LmZhLXRlbnRzOmJlZm9yZXtjb250ZW50OiJcZTU4MiJ9LmZhLW1hZ2ljOmJlZm9yZSwuZmEtd2FuZC1tYWdpYzpiZWZvcmV7Y29udGVudDoiXGYwZDAifS5mYS1kb2c6YmVmb3Jle2NvbnRlbnQ6IlxmNmQzIn0uZmEtY2Fycm90OmJlZm9yZXtjb250ZW50OiJcZjc4NyJ9LmZhLW1vb246YmVmb3Jle2NvbnRlbnQ6IlxmMTg2In0uZmEtd2luZS1nbGFzcy1hbHQ6YmVmb3JlLC5mYS13aW5lLWdsYXNzLWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZjVjZSJ9LmZhLWNoZWVzZTpiZWZvcmV7Y29udGVudDoiXGY3ZWYifS5mYS15aW4teWFuZzpiZWZvcmV7Y29udGVudDoiXGY2YWQifS5mYS1tdXNpYzpiZWZvcmV7Y29udGVudDoiXGYwMDEifS5mYS1jb2RlLWNvbW1pdDpiZWZvcmV7Y29udGVudDoiXGYzODYifS5mYS10ZW1wZXJhdHVyZS1sb3c6YmVmb3Jle2NvbnRlbnQ6IlxmNzZiIn0uZmEtYmlraW5nOmJlZm9yZSwuZmEtcGVyc29uLWJpa2luZzpiZWZvcmV7Y29udGVudDoiXGY4NGEifS5mYS1icm9vbTpiZWZvcmV7Y29udGVudDoiXGY1MWEifS5mYS1zaGllbGQtaGVhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxlNTc0In0uZmEtZ29wdXJhbTpiZWZvcmV7Y29udGVudDoiXGY2NjQifS5mYS1lYXJ0aC1vY2VhbmlhOmJlZm9yZSwuZmEtZ2xvYmUtb2NlYW5pYTpiZWZvcmV7Y29udGVudDoiXGU0N2IifS5mYS1zcXVhcmUteG1hcms6YmVmb3JlLC5mYS10aW1lcy1zcXVhcmU6YmVmb3JlLC5mYS14bWFyay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQzIn0uZmEtaGFzaHRhZzpiZWZvcmV7Y29udGVudDoiXDIzIn0uZmEtZXhwYW5kLWFsdDpiZWZvcmUsLmZhLXVwLXJpZ2h0LWFuZC1kb3duLWxlZnQtZnJvbS1jZW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDI0In0uZmEtb2lsLWNhbjpiZWZvcmV7Y29udGVudDoiXGY2MTMifS5mYS10OmJlZm9yZXtjb250ZW50OiJcNTQifS5mYS1oaXBwbzpiZWZvcmV7Y29udGVudDoiXGY2ZWQifS5mYS1jaGFydC1jb2x1bW46YmVmb3Jle2NvbnRlbnQ6IlxlMGUzIn0uZmEtaW5maW5pdHk6YmVmb3Jle2NvbnRlbnQ6IlxmNTM0In0uZmEtdmlhbC1jaXJjbGUtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxlNTk2In0uZmEtcGVyc29uLWFycm93LWRvd24tdG8tbGluZTpiZWZvcmV7Y29udGVudDoiXGU1MzgifS5mYS12b2ljZW1haWw6YmVmb3Jle2NvbnRlbnQ6IlxmODk3In0uZmEtZmFuOmJlZm9yZXtjb250ZW50OiJcZjg2MyJ9LmZhLXBlcnNvbi13YWxraW5nLWx1Z2dhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxlNTU0In0uZmEtYXJyb3dzLWFsdC12OmJlZm9yZSwuZmEtdXAtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzMzgifS5mYS1jbG91ZC1tb29uLXJhaW46YmVmb3Jle2NvbnRlbnQ6IlxmNzNjIn0uZmEtY2FsZW5kYXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTMzIn0uZmEtdHJhaWxlcjpiZWZvcmV7Y29udGVudDoiXGUwNDEifS5mYS1iYWhhaTpiZWZvcmUsLmZhLWhheWthbDpiZWZvcmV7Y29udGVudDoiXGY2NjYifS5mYS1zZC1jYXJkOmJlZm9yZXtjb250ZW50OiJcZjdjMiJ9LmZhLWRyYWdvbjpiZWZvcmV7Y29udGVudDoiXGY2ZDUifS5mYS1zaG9lLXByaW50czpiZWZvcmV7Y29udGVudDoiXGY1NGIifS5mYS1jaXJjbGUtcGx1czpiZWZvcmUsLmZhLXBsdXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NSJ9LmZhLWZhY2UtZ3Jpbi10b25ndWUtd2luazpiZWZvcmUsLmZhLWdyaW4tdG9uZ3VlLXdpbms6YmVmb3Jle2NvbnRlbnQ6IlxmNThiIn0uZmEtaGFuZC1ob2xkaW5nOmJlZm9yZXtjb250ZW50OiJcZjRiZCJ9LmZhLXBsdWctY2lyY2xlLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZTU1ZCJ9LmZhLWNoYWluLWJyb2tlbjpiZWZvcmUsLmZhLWNoYWluLXNsYXNoOmJlZm9yZSwuZmEtbGluay1zbGFzaDpiZWZvcmUsLmZhLXVubGluazpiZWZvcmV7Y29udGVudDoiXGYxMjcifS5mYS1jbG9uZTpiZWZvcmV7Y29udGVudDoiXGYyNGQifS5mYS1wZXJzb24td2Fsa2luZy1hcnJvdy1sb29wLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxlNTUxIn0uZmEtYXJyb3ctdXAtei1hOmJlZm9yZSwuZmEtc29ydC1hbHBoYS11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODgyIn0uZmEtZmlyZS1hbHQ6YmVmb3JlLC5mYS1maXJlLWZsYW1lLWN1cnZlZDpiZWZvcmV7Y29udGVudDoiXGY3ZTQifS5mYS10b3JuYWRvOmJlZm9yZXtjb250ZW50OiJcZjc2ZiJ9LmZhLWZpbGUtY2lyY2xlLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxlNDk0In0uZmEtYm9vay1xdXJhbjpiZWZvcmUsLmZhLXF1cmFuOmJlZm9yZXtjb250ZW50OiJcZjY4NyJ9LmZhLWFuY2hvcjpiZWZvcmV7Y29udGVudDoiXGYxM2QifS5mYS1ib3JkZXItYWxsOmJlZm9yZXtjb250ZW50OiJcZjg0YyJ9LmZhLWFuZ3J5OmJlZm9yZSwuZmEtZmFjZS1hbmdyeTpiZWZvcmV7Y29udGVudDoiXGY1NTYifS5mYS1jb29raWUtYml0ZTpiZWZvcmV7Y29udGVudDoiXGY1NjQifS5mYS1hcnJvdy10cmVuZC1kb3duOmJlZm9yZXtjb250ZW50OiJcZTA5NyJ9LmZhLWZlZWQ6YmVmb3JlLC5mYS1yc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDllIn0uZmEtZHJhdy1wb2x5Z29uOmJlZm9yZXtjb250ZW50OiJcZjVlZSJ9LmZhLWJhbGFuY2Utc2NhbGU6YmVmb3JlLC5mYS1zY2FsZS1iYWxhbmNlZDpiZWZvcmV7Y29udGVudDoiXGYyNGUifS5mYS1nYXVnZS1zaW1wbGUtaGlnaDpiZWZvcmUsLmZhLXRhY2hvbWV0ZXItZmFzdDpiZWZvcmUsLmZhLXRhY2hvbWV0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjJhIn0uZmEtc2hvd2VyOmJlZm9yZXtjb250ZW50OiJcZjJjYyJ9LmZhLWRlc2t0b3AtYWx0OmJlZm9yZSwuZmEtZGVza3RvcDpiZWZvcmV7Y29udGVudDoiXGYzOTAifS5mYS1tOmJlZm9yZXtjb250ZW50OiJcNGQifS5mYS10YWJsZS1saXN0OmJlZm9yZSwuZmEtdGgtbGlzdDpiZWZvcmV7Y29udGVudDoiXGYwMGIifS5mYS1jb21tZW50LXNtczpiZWZvcmUsLmZhLXNtczpiZWZvcmV7Y29udGVudDoiXGY3Y2QifS5mYS1ib29rOmJlZm9yZXtjb250ZW50OiJcZjAyZCJ9LmZhLXVzZXItcGx1czpiZWZvcmV7Y29udGVudDoiXGYyMzQifS5mYS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYwMGMifS5mYS1iYXR0ZXJ5LTQ6YmVmb3JlLC5mYS1iYXR0ZXJ5LXRocmVlLXF1YXJ0ZXJzOmJlZm9yZXtjb250ZW50OiJcZjI0MSJ9LmZhLWhvdXNlLWNpcmNsZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGU1MDkifS5mYS1hbmdsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwNCJ9LmZhLWRpYWdyYW0tc3VjY2Vzc29yOmJlZm9yZXtjb250ZW50OiJcZTQ3YSJ9LmZhLXRydWNrLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZTU4YiJ9LmZhLWFycm93cy1zcGxpdC11cC1hbmQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGU0YmMifS5mYS1maXN0LXJhaXNlZDpiZWZvcmUsLmZhLWhhbmQtZmlzdDpiZWZvcmV7Y29udGVudDoiXGY2ZGUifS5mYS1jbG91ZC1tb29uOmJlZm9yZXtjb250ZW50OiJcZjZjMyJ9LmZhLWJyaWVmY2FzZTpiZWZvcmV7Y29udGVudDoiXGYwYjEifS5mYS1wZXJzb24tZmFsbGluZzpiZWZvcmV7Y29udGVudDoiXGU1NDYifS5mYS1pbWFnZS1wb3J0cmFpdDpiZWZvcmUsLmZhLXBvcnRyYWl0OmJlZm9yZXtjb250ZW50OiJcZjNlMCJ9LmZhLXVzZXItdGFnOmJlZm9yZXtjb250ZW50OiJcZjUwNyJ9LmZhLXJ1ZzpiZWZvcmV7Y29udGVudDoiXGU1NjkifS5mYS1lYXJ0aC1ldXJvcGU6YmVmb3JlLC5mYS1nbG9iZS1ldXJvcGU6YmVmb3Jle2NvbnRlbnQ6IlxmN2EyIn0uZmEtY2FydC1mbGF0YmVkLXN1aXRjYXNlOmJlZm9yZSwuZmEtbHVnZ2FnZS1jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjU5ZCJ9LmZhLXJlY3RhbmdsZS10aW1lczpiZWZvcmUsLmZhLXJlY3RhbmdsZS14bWFyazpiZWZvcmUsLmZhLXRpbWVzLXJlY3RhbmdsZTpiZWZvcmUsLmZhLXdpbmRvdy1jbG9zZTpiZWZvcmV7Y29udGVudDoiXGY0MTAifS5mYS1iYWh0LXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxlMGFjIn0uZmEtYm9vay1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjUxOCJ9LmZhLWJvb2stam91cm5hbC13aGlsbHM6YmVmb3JlLC5mYS1qb3VybmFsLXdoaWxsczpiZWZvcmV7Y29udGVudDoiXGY2NmEifS5mYS1oYW5kY3VmZnM6YmVmb3Jle2NvbnRlbnQ6IlxlNGY4In0uZmEtZXhjbGFtYXRpb24tdHJpYW5nbGU6YmVmb3JlLC5mYS10cmlhbmdsZS1leGNsYW1hdGlvbjpiZWZvcmUsLmZhLXdhcm5pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMDcxIn0uZmEtZGF0YWJhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWMwIn0uZmEtYXJyb3ctdHVybi1yaWdodDpiZWZvcmUsLmZhLW1haWwtZm9yd2FyZDpiZWZvcmUsLmZhLXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjA2NCJ9LmZhLWJvdHRsZS1kcm9wbGV0OmJlZm9yZXtjb250ZW50OiJcZTRjNCJ9LmZhLW1hc2stZmFjZTpiZWZvcmV7Y29udGVudDoiXGUxZDcifS5mYS1oaWxsLXJvY2tzbGlkZTpiZWZvcmV7Y29udGVudDoiXGU1MDgifS5mYS1leGNoYW5nZS1hbHQ6YmVmb3JlLC5mYS1yaWdodC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM2MiJ9LmZhLXBhcGVyLXBsYW5lOmJlZm9yZXtjb250ZW50OiJcZjFkOCJ9LmZhLXJvYWQtY2lyY2xlLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZTU2NSJ9LmZhLWR1bmdlb246YmVmb3Jle2NvbnRlbnQ6IlxmNmQ5In0uZmEtYWxpZ24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDM4In0uZmEtbW9uZXktYmlsbC0xLXdhdmU6YmVmb3JlLC5mYS1tb25leS1iaWxsLXdhdmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjUzYiJ9LmZhLWxpZmUtcmluZzpiZWZvcmV7Y29udGVudDoiXGYxY2QifS5mYS1oYW5kczpiZWZvcmUsLmZhLXNpZ24tbGFuZ3VhZ2U6YmVmb3JlLC5mYS1zaWduaW5nOmJlZm9yZXtjb250ZW50OiJcZjJhNyJ9LmZhLWNhbGVuZGFyLWRheTpiZWZvcmV7Y29udGVudDoiXGY3ODMifS5mYS1sYWRkZXItd2F0ZXI6YmVmb3JlLC5mYS1zd2ltbWluZy1wb29sOmJlZm9yZSwuZmEtd2F0ZXItbGFkZGVyOmJlZm9yZXtjb250ZW50OiJcZjVjNSJ9LmZhLWFycm93cy11cC1kb3duOmJlZm9yZSwuZmEtYXJyb3dzLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMDdkIn0uZmEtZmFjZS1ncmltYWNlOmJlZm9yZSwuZmEtZ3JpbWFjZTpiZWZvcmV7Y29udGVudDoiXGY1N2YifS5mYS13aGVlbGNoYWlyLWFsdDpiZWZvcmUsLmZhLXdoZWVsY2hhaXItbW92ZTpiZWZvcmV7Y29udGVudDoiXGUyY2UifS5mYS1sZXZlbC1kb3duLWFsdDpiZWZvcmUsLmZhLXR1cm4tZG93bjpiZWZvcmV7Y29udGVudDoiXGYzYmUifS5mYS1wZXJzb24td2Fsa2luZy1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGU1NTIifS5mYS1lbnZlbG9wZS1zcXVhcmU6YmVmb3JlLC5mYS1zcXVhcmUtZW52ZWxvcGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk5In0uZmEtZGljZTpiZWZvcmV7Y29udGVudDoiXGY1MjIifS5mYS1ib3dsaW5nLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDM2In0uZmEtYnJhaW46YmVmb3Jle2NvbnRlbnQ6IlxmNWRjIn0uZmEtYmFuZC1haWQ6YmVmb3JlLC5mYS1iYW5kYWdlOmJlZm9yZXtjb250ZW50OiJcZjQ2MiJ9LmZhLWNhbGVuZGFyLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjI3MiJ9LmZhLWNpcmNsZS14bWFyazpiZWZvcmUsLmZhLXRpbWVzLWNpcmNsZTpiZWZvcmUsLmZhLXhtYXJrLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTcifS5mYS1naWZ0czpiZWZvcmV7Y29udGVudDoiXGY3OWMifS5mYS1ob3RlbDpiZWZvcmV7Y29udGVudDoiXGY1OTQifS5mYS1lYXJ0aC1hc2lhOmJlZm9yZSwuZmEtZ2xvYmUtYXNpYTpiZWZvcmV7Y29udGVudDoiXGY1N2UifS5mYS1pZC1jYXJkLWFsdDpiZWZvcmUsLmZhLWlkLWNhcmQtY2xpcDpiZWZvcmV7Y29udGVudDoiXGY0N2YifS5mYS1tYWduaWZ5aW5nLWdsYXNzLXBsdXM6YmVmb3JlLC5mYS1zZWFyY2gtcGx1czpiZWZvcmV7Y29udGVudDoiXGYwMGUifS5mYS10aHVtYnMtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTY0In0uZmEtdXNlci1jbG9jazpiZWZvcmV7Y29udGVudDoiXGY0ZmQifS5mYS1hbGxlcmdpZXM6YmVmb3JlLC5mYS1oYW5kLWRvdHM6YmVmb3Jle2NvbnRlbnQ6IlxmNDYxIn0uZmEtZmlsZS1pbnZvaWNlOmJlZm9yZXtjb250ZW50OiJcZjU3MCJ9LmZhLXdpbmRvdy1taW5pbWl6ZTpiZWZvcmV7Y29udGVudDoiXGYyZDEifS5mYS1jb2ZmZWU6YmVmb3JlLC5mYS1tdWctc2F1Y2VyOmJlZm9yZXtjb250ZW50OiJcZjBmNCJ9LmZhLWJydXNoOmJlZm9yZXtjb250ZW50OiJcZjU1ZCJ9LmZhLW1hc2s6YmVmb3Jle2NvbnRlbnQ6IlxmNmZhIn0uZmEtbWFnbmlmeWluZy1nbGFzcy1taW51czpiZWZvcmUsLmZhLXNlYXJjaC1taW51czpiZWZvcmV7Y29udGVudDoiXGYwMTAifS5mYS1ydWxlci12ZXJ0aWNhbDpiZWZvcmV7Y29udGVudDoiXGY1NDgifS5mYS11c2VyLWFsdDpiZWZvcmUsLmZhLXVzZXItbGFyZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmNDA2In0uZmEtdHJhaW4tdHJhbTpiZWZvcmV7Y29udGVudDoiXGU1YjQifS5mYS11c2VyLW51cnNlOmJlZm9yZXtjb250ZW50OiJcZjgyZiJ9LmZhLXN5cmluZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmNDhlIn0uZmEtY2xvdWQtc3VuOmJlZm9yZXtjb250ZW50OiJcZjZjNCJ9LmZhLXN0b3B3YXRjaC0yMDpiZWZvcmV7Y29udGVudDoiXGUwNmYifS5mYS1zcXVhcmUtZnVsbDpiZWZvcmV7Y29udGVudDoiXGY0NWMifS5mYS1tYWduZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDc2In0uZmEtamFyOmJlZm9yZXtjb250ZW50OiJcZTUxNiJ9LmZhLW5vdGUtc3RpY2t5OmJlZm9yZSwuZmEtc3RpY2t5LW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ5In0uZmEtYnVnLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZTQ5MCJ9LmZhLWFycm93LXVwLWZyb20td2F0ZXItcHVtcDpiZWZvcmV7Y29udGVudDoiXGU0YjYifS5mYS1ib25lOmJlZm9yZXtjb250ZW50OiJcZjVkNyJ9LmZhLXVzZXItaW5qdXJlZDpiZWZvcmV7Y29udGVudDoiXGY3MjgifS5mYS1mYWNlLXNhZC10ZWFyOmJlZm9yZSwuZmEtc2FkLXRlYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWI0In0uZmEtcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDcyIn0uZmEtdGVudC1hcnJvd3MtZG93bjpiZWZvcmV7Y29udGVudDoiXGU1ODEifS5mYS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXDIxIn0uZmEtYXJyb3dzLXNwaW46YmVmb3Jle2NvbnRlbnQ6IlxlNGJiIn0uZmEtcHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDJmIn0uZmEtdHJ5OmJlZm9yZSwuZmEtdHVya2lzaC1saXJhLXNpZ246YmVmb3JlLC5mYS10dXJraXNoLWxpcmE6YmVmb3Jle2NvbnRlbnQ6IlxlMmJiIn0uZmEtZG9sbGFyLXNpZ246YmVmb3JlLC5mYS1kb2xsYXI6YmVmb3JlLC5mYS11c2Q6YmVmb3Jle2NvbnRlbnQ6IlwyNCJ9LmZhLXg6YmVmb3Jle2NvbnRlbnQ6Ilw1OCJ9LmZhLW1hZ25pZnlpbmctZ2xhc3MtZG9sbGFyOmJlZm9yZSwuZmEtc2VhcmNoLWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY2ODgifS5mYS11c2Vycy1jb2c6YmVmb3JlLC5mYS11c2Vycy1nZWFyOmJlZm9yZXtjb250ZW50OiJcZjUwOSJ9LmZhLXBlcnNvbi1taWxpdGFyeS1wb2ludGluZzpiZWZvcmV7Y29udGVudDoiXGU1NGEifS5mYS1iYW5rOmJlZm9yZSwuZmEtYnVpbGRpbmctY29sdW1uczpiZWZvcmUsLmZhLWluc3RpdHV0aW9uOmJlZm9yZSwuZmEtbXVzZXVtOmJlZm9yZSwuZmEtdW5pdmVyc2l0eTpiZWZvcmV7Y29udGVudDoiXGYxOWMifS5mYS11bWJyZWxsYTpiZWZvcmV7Y29udGVudDoiXGYwZTkifS5mYS10cm93ZWw6YmVmb3Jle2NvbnRlbnQ6IlxlNTg5In0uZmEtZDpiZWZvcmV7Y29udGVudDoiXDQ0In0uZmEtc3RhcGxlcjpiZWZvcmV7Y29udGVudDoiXGU1YWYifS5mYS1tYXNrcy10aGVhdGVyOmJlZm9yZSwuZmEtdGhlYXRlci1tYXNrczpiZWZvcmV7Y29udGVudDoiXGY2MzAifS5mYS1raXAtc2lnbjpiZWZvcmV7Y29udGVudDoiXGUxYzQifS5mYS1oYW5kLXBvaW50LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE1In0uZmEtaGFuZHNoYWtlLWFsdDpiZWZvcmUsLmZhLWhhbmRzaGFrZS1zaW1wbGU6YmVmb3Jle2NvbnRlbnQ6IlxmNGM2In0uZmEtZmlnaHRlci1qZXQ6YmVmb3JlLC5mYS1qZXQtZmlnaHRlcjpiZWZvcmV7Y29udGVudDoiXGYwZmIifS5mYS1zaGFyZS1hbHQtc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLXNoYXJlLW5vZGVzOmJlZm9yZXtjb250ZW50OiJcZjFlMSJ9LmZhLWJhcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDJhIn0uZmEtcGx1cy1taW51czpiZWZvcmV7Y29udGVudDoiXGU0M2MifS5mYS12aWRlby1jYW1lcmE6YmVmb3JlLC5mYS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYwM2QifS5mYS1ncmFkdWF0aW9uLWNhcDpiZWZvcmUsLmZhLW1vcnRhci1ib2FyZDpiZWZvcmV7Y29udGVudDoiXGYxOWQifS5mYS1oYW5kLWhvbGRpbmctbWVkaWNhbDpiZWZvcmV7Y29udGVudDoiXGUwNWMifS5mYS1wZXJzb24tY2lyY2xlLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZTUzZSJ9LmZhLWxldmVsLXVwLWFsdDpiZWZvcmUsLmZhLXR1cm4tdXA6YmVmb3Jle2NvbnRlbnQ6IlxmM2JmIn0KLmZhLXNyLW9ubHksLmZhLXNyLW9ubHktZm9jdXNhYmxlOm5vdCg6Zm9jdXMpLC5zci1vbmx5LC5zci1vbmx5LWZvY3VzYWJsZTpub3QoOmZvY3VzKXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDtwYWRkaW5nOjA7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLDAsMCwwKTt3aGl0ZS1zcGFjZTpub3dyYXA7Ym9yZGVyLXdpZHRoOjB9Omhvc3QsOnJvb3R7LS1mYS1zdHlsZS1mYW1pbHktYnJhbmRzOiJGb250IEF3ZXNvbWUgNiBCcmFuZHMiOy0tZmEtZm9udC1icmFuZHM6bm9ybWFsIDQwMCAxZW0vMSAiRm9udCBBd2Vzb21lIDYgQnJhbmRzIn1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNiBCcmFuZHMiO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC4uL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIil9LmZhLWJyYW5kcywuZmFie2ZvbnQtd2VpZ2h0OjQwMH0uZmEtbW9uZXJvOmJlZm9yZXtjb250ZW50OiJcZjNkMCJ9LmZhLWhvb2xpOmJlZm9yZXtjb250ZW50OiJcZjQyNyJ9LmZhLXllbHA6YmVmb3Jle2NvbnRlbnQ6IlxmMWU5In0uZmEtY2MtdmlzYTpiZWZvcmV7Y29udGVudDoiXGYxZjAifS5mYS1sYXN0Zm06YmVmb3Jle2NvbnRlbnQ6IlxmMjAyIn0uZmEtc2hvcHdhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNWI1In0uZmEtY3JlYXRpdmUtY29tbW9ucy1uYzpiZWZvcmV7Y29udGVudDoiXGY0ZTgifS5mYS1hd3M6YmVmb3Jle2NvbnRlbnQ6IlxmMzc1In0uZmEtcmVkaGF0OmJlZm9yZXtjb250ZW50OiJcZjdiYyJ9LmZhLXlvYXN0OmJlZm9yZXtjb250ZW50OiJcZjJiMSJ9LmZhLWNsb3VkZmxhcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDdkIn0uZmEtdXBzOmJlZm9yZXtjb250ZW50OiJcZjdlMCJ9LmZhLXdwZXhwbG9yZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmRlIn0uZmEtZHlhbG9nOmJlZm9yZXtjb250ZW50OiJcZjM5OSJ9LmZhLWJpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdhIn0uZmEtc3RhY2twYXRoOmJlZm9yZXtjb250ZW50OiJcZjg0MiJ9LmZhLWJ1eXNlbGxhZHM6YmVmb3Jle2NvbnRlbnQ6IlxmMjBkIn0uZmEtZmlyc3Qtb3JkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmIwIn0uZmEtbW9keDpiZWZvcmV7Y29udGVudDoiXGYyODUifS5mYS1ndWlsZGVkOmJlZm9yZXtjb250ZW50OiJcZTA3ZSJ9LmZhLXZudjpiZWZvcmV7Y29udGVudDoiXGY0MGIifS5mYS1qcy1zcXVhcmU6YmVmb3JlLC5mYS1zcXVhcmUtanM6YmVmb3Jle2NvbnRlbnQ6IlxmM2I5In0uZmEtbWljcm9zb2Z0OmJlZm9yZXtjb250ZW50OiJcZjNjYSJ9LmZhLXFxOmJlZm9yZXtjb250ZW50OiJcZjFkNiJ9LmZhLW9yY2lkOmJlZm9yZXtjb250ZW50OiJcZjhkMiJ9LmZhLWphdmE6YmVmb3Jle2NvbnRlbnQ6IlxmNGU0In0uZmEtaW52aXNpb246YmVmb3Jle2NvbnRlbnQ6IlxmN2IwIn0uZmEtY3JlYXRpdmUtY29tbW9ucy1wZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNGVkIn0uZmEtY2VudGVyY29kZTpiZWZvcmV7Y29udGVudDoiXGYzODAifS5mYS1nbGlkZS1nOmJlZm9yZXtjb250ZW50OiJcZjJhNiJ9LmZhLWRydXBhbDpiZWZvcmV7Y29udGVudDoiXGYxYTkifS5mYS1oaXJlLWEtaGVscGVyOmJlZm9yZXtjb250ZW50OiJcZjNiMCJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtYnk6YmVmb3Jle2NvbnRlbnQ6IlxmNGU3In0uZmEtdW5pdHk6YmVmb3Jle2NvbnRlbnQ6IlxlMDQ5In0uZmEtd2htY3M6YmVmb3Jle2NvbnRlbnQ6IlxmNDBkIn0uZmEtcm9ja2V0Y2hhdDpiZWZvcmV7Y29udGVudDoiXGYzZTgifS5mYS12azpiZWZvcmV7Y29udGVudDoiXGYxODkifS5mYS11bnRhcHBkOmJlZm9yZXtjb250ZW50OiJcZjQwNSJ9LmZhLW1haWxjaGltcDpiZWZvcmV7Y29udGVudDoiXGY1OWUifS5mYS1jc3MzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzOGIifS5mYS1yZWRkaXQtc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLXJlZGRpdDpiZWZvcmV7Y29udGVudDoiXGYxYTIifS5mYS12aW1lby12OmJlZm9yZXtjb250ZW50OiJcZjI3ZCJ9LmZhLWNvbnRhbzpiZWZvcmV7Y29udGVudDoiXGYyNmQifS5mYS1zcXVhcmUtZm9udC1hd2Vzb21lOmJlZm9yZXtjb250ZW50OiJcZTVhZCJ9LmZhLWRlc2twcm86YmVmb3Jle2NvbnRlbnQ6IlxmMzhmIn0uZmEtc2lzdHJpeDpiZWZvcmV7Y29udGVudDoiXGYzZWUifS5mYS1pbnN0YWdyYW0tc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLWluc3RhZ3JhbTpiZWZvcmV7Y29udGVudDoiXGUwNTUifS5mYS1iYXR0bGUtbmV0OmJlZm9yZXtjb250ZW50OiJcZjgzNSJ9LmZhLXRoZS1yZWQteWV0aTpiZWZvcmV7Y29udGVudDoiXGY2OWQifS5mYS1oYWNrZXItbmV3cy1zcXVhcmU6YmVmb3JlLC5mYS1zcXVhcmUtaGFja2VyLW5ld3M6YmVmb3Jle2NvbnRlbnQ6IlxmM2FmIn0uZmEtZWRnZTpiZWZvcmV7Y29udGVudDoiXGYyODIifS5mYS1uYXBzdGVyOmJlZm9yZXtjb250ZW50OiJcZjNkMiJ9LmZhLXNuYXBjaGF0LXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1zbmFwY2hhdDpiZWZvcmV7Y29udGVudDoiXGYyYWQifS5mYS1nb29nbGUtcGx1cy1nOmJlZm9yZXtjb250ZW50OiJcZjBkNSJ9LmZhLWFydHN0YXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNzdhIn0uZmEtbWFya2Rvd246YmVmb3Jle2NvbnRlbnQ6IlxmNjBmIn0uZmEtc291cmNldHJlZTpiZWZvcmV7Y29udGVudDoiXGY3ZDMifS5mYS1nb29nbGUtcGx1czpiZWZvcmV7Y29udGVudDoiXGYyYjMifS5mYS1kaWFzcG9yYTpiZWZvcmV7Y29udGVudDoiXGY3OTEifS5mYS1mb3Vyc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE4MCJ9LmZhLXN0YWNrLW92ZXJmbG93OmJlZm9yZXtjb250ZW50OiJcZjE2YyJ9LmZhLWdpdGh1Yi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTEzIn0uZmEtcGhvZW5peC1zcXVhZHJvbjpiZWZvcmV7Y29udGVudDoiXGY1MTEifS5mYS1wYWdlbGluZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMThjIn0uZmEtYWxnb2xpYTpiZWZvcmV7Y29udGVudDoiXGYzNmMifS5mYS1yZWQtcml2ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2UzIn0uZmEtY3JlYXRpdmUtY29tbW9ucy1zYTpiZWZvcmV7Y29udGVudDoiXGY0ZWYifS5mYS1zYWZhcmk6YmVmb3Jle2NvbnRlbnQ6IlxmMjY3In0uZmEtZ29vZ2xlOmJlZm9yZXtjb250ZW50OiJcZjFhMCJ9LmZhLWZvbnQtYXdlc29tZS1hbHQ6YmVmb3JlLC5mYS1zcXVhcmUtZm9udC1hd2Vzb21lLXN0cm9rZTpiZWZvcmV7Y29udGVudDoiXGYzNWMifS5mYS1hdGxhc3NpYW46YmVmb3Jle2NvbnRlbnQ6IlxmNzdiIn0uZmEtbGlua2VkaW4taW46YmVmb3Jle2NvbnRlbnQ6IlxmMGUxIn0uZmEtZGlnaXRhbC1vY2VhbjpiZWZvcmV7Y29udGVudDoiXGYzOTEifS5mYS1uaW1ibHI6YmVmb3Jle2NvbnRlbnQ6IlxmNWE4In0uZmEtY2hyb21lY2FzdDpiZWZvcmV7Y29udGVudDoiXGY4MzgifS5mYS1ldmVybm90ZTpiZWZvcmV7Y29udGVudDoiXGY4MzkifS5mYS1oYWNrZXItbmV3czpiZWZvcmV7Y29udGVudDoiXGYxZDQifS5mYS1jcmVhdGl2ZS1jb21tb25zLXNhbXBsaW5nOmJlZm9yZXtjb250ZW50OiJcZjRmMCJ9LmZhLWFkdmVyc2FsOmJlZm9yZXtjb250ZW50OiJcZjM2YSJ9LmZhLWNyZWF0aXZlLWNvbW1vbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjVlIn0uZmEtd2F0Y2htYW4tbW9uaXRvcmluZzpiZWZvcmV7Y29udGVudDoiXGUwODcifS5mYS1mb250aWNvbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjgwIn0uZmEtd2VpeGluOmJlZm9yZXtjb250ZW50OiJcZjFkNyJ9LmZhLXNoaXJ0c2luYnVsazpiZWZvcmV7Y29udGVudDoiXGYyMTQifS5mYS1jb2RlcGVuOmJlZm9yZXtjb250ZW50OiJcZjFjYiJ9LmZhLWdpdC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODQxIn0uZmEtbHlmdDpiZWZvcmV7Y29udGVudDoiXGYzYzMifS5mYS1yZXY6YmVmb3Jle2NvbnRlbnQ6IlxmNWIyIn0uZmEtd2luZG93czpiZWZvcmV7Y29udGVudDoiXGYxN2EifS5mYS13aXphcmRzLW9mLXRoZS1jb2FzdDpiZWZvcmV7Y29udGVudDoiXGY3MzAifS5mYS1zcXVhcmUtdmlhZGVvOmJlZm9yZSwuZmEtdmlhZGVvLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyYWEifS5mYS1tZWV0dXA6YmVmb3Jle2NvbnRlbnQ6IlxmMmUwIn0uZmEtY2VudG9zOmJlZm9yZXtjb250ZW50OiJcZjc4OSJ9LmZhLWFkbjpiZWZvcmV7Y29udGVudDoiXGYxNzAifS5mYS1jbG91ZHNtaXRoOmJlZm9yZXtjb250ZW50OiJcZjM4NCJ9LmZhLXBpZWQtcGlwZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjFhOCJ9LmZhLWRyaWJiYmxlLXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1kcmliYmJsZTpiZWZvcmV7Y29udGVudDoiXGYzOTcifS5mYS1jb2RpZXBpZTpiZWZvcmV7Y29udGVudDoiXGYyODQifS5mYS1ub2RlOmJlZm9yZXtjb250ZW50OiJcZjQxOSJ9LmZhLW1peDpiZWZvcmV7Y29udGVudDoiXGYzY2IifS5mYS1zdGVhbTpiZWZvcmV7Y29udGVudDoiXGYxYjYifS5mYS1jYy1hcHBsZS1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE2In0uZmEtc2NyaWJkOmJlZm9yZXtjb250ZW50OiJcZjI4YSJ9LmZhLW9wZW5pZDpiZWZvcmV7Y29udGVudDoiXGYxOWIifS5mYS1pbnN0YWxvZDpiZWZvcmV7Y29udGVudDoiXGUwODEifS5mYS1leHBlZGl0ZWRzc2w6YmVmb3Jle2NvbnRlbnQ6IlxmMjNlIn0uZmEtc2VsbGNhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMmRhIn0uZmEtc3F1YXJlLXR3aXR0ZXI6YmVmb3JlLC5mYS10d2l0dGVyLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwODEifS5mYS1yLXByb2plY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNGY3In0uZmEtZGVsaWNpb3VzOmJlZm9yZXtjb250ZW50OiJcZjFhNSJ9LmZhLWZyZWVic2Q6YmVmb3Jle2NvbnRlbnQ6IlxmM2E0In0uZmEtdnVlanM6YmVmb3Jle2NvbnRlbnQ6IlxmNDFmIn0uZmEtYWNjdXNvZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzY5In0uZmEtaW94aG9zdDpiZWZvcmV7Y29udGVudDoiXGYyMDgifS5mYS1mb250aWNvbnMtZmk6YmVmb3Jle2NvbnRlbnQ6IlxmM2EyIn0uZmEtYXBwLXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjM2ZiJ9LmZhLWNjLW1hc3RlcmNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWYxIn0uZmEtaXR1bmVzLW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2I1In0uZmEtZ29sYW5nOmJlZm9yZXtjb250ZW50OiJcZTQwZiJ9LmZhLWtpY2tzdGFydGVyOmJlZm9yZXtjb250ZW50OiJcZjNiYiJ9LmZhLWdyYXY6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ2In0uZmEtd2VpYm86YmVmb3Jle2NvbnRlbnQ6IlxmMThhIn0uZmEtdW5jaGFydGVkOmJlZm9yZXtjb250ZW50OiJcZTA4NCJ9LmZhLWZpcnN0ZHJhZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ExIn0uZmEtc3F1YXJlLXlvdXR1YmU6YmVmb3JlLC5mYS15b3V0dWJlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY0MzEifS5mYS13aWtpcGVkaWEtdzpiZWZvcmV7Y29udGVudDoiXGYyNjYifS5mYS1yZW5kYWN0OmJlZm9yZSwuZmEtd3ByZXNzcjpiZWZvcmV7Y29udGVudDoiXGYzZTQifS5mYS1hbmdlbGxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMjA5In0uZmEtZ2FsYWN0aWMtcmVwdWJsaWM6YmVmb3Jle2NvbnRlbnQ6IlxmNTBjIn0uZmEtbmZjLWRpcmVjdGlvbmFsOmJlZm9yZXtjb250ZW50OiJcZTUzMCJ9LmZhLXNreXBlOmJlZm9yZXtjb250ZW50OiJcZjE3ZSJ9LmZhLWpvZ2V0OmJlZm9yZXtjb250ZW50OiJcZjNiNyJ9LmZhLWZlZG9yYTpiZWZvcmV7Y29udGVudDoiXGY3OTgifS5mYS1zdHJpcGUtczpiZWZvcmV7Y29udGVudDoiXGY0MmEifS5mYS1tZXRhOmJlZm9yZXtjb250ZW50OiJcZTQ5YiJ9LmZhLWxhcmF2ZWw6YmVmb3Jle2NvbnRlbnQ6IlxmM2JkIn0uZmEtaG90amFyOmJlZm9yZXtjb250ZW50OiJcZjNiMSJ9LmZhLWJsdWV0b290aC1iOmJlZm9yZXtjb250ZW50OiJcZjI5NCJ9LmZhLXN0aWNrZXItbXVsZTpiZWZvcmV7Y29udGVudDoiXGYzZjcifS5mYS1jcmVhdGl2ZS1jb21tb25zLXplcm86YmVmb3Jle2NvbnRlbnQ6IlxmNGYzIn0uZmEtaGlwczpiZWZvcmV7Y29udGVudDoiXGY0NTIifS5mYS1iZWhhbmNlOmJlZm9yZXtjb250ZW50OiJcZjFiNCJ9LmZhLXJlZGRpdDpiZWZvcmV7Y29udGVudDoiXGYxYTEifS5mYS1kaXNjb3JkOmJlZm9yZXtjb250ZW50OiJcZjM5MiJ9LmZhLWNocm9tZTpiZWZvcmV7Y29udGVudDoiXGYyNjgifS5mYS1hcHAtc3RvcmUtaW9zOmJlZm9yZXtjb250ZW50OiJcZjM3MCJ9LmZhLWNjLWRpc2NvdmVyOmJlZm9yZXtjb250ZW50OiJcZjFmMiJ9LmZhLXdwYmVnaW5uZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjk3In0uZmEtY29uZmx1ZW5jZTpiZWZvcmV7Y29udGVudDoiXGY3OGQifS5mYS1tZGI6YmVmb3Jle2NvbnRlbnQ6IlxmOGNhIn0uZmEtZG9jaHViOmJlZm9yZXtjb250ZW50OiJcZjM5NCJ9LmZhLWFjY2Vzc2libGUtaWNvbjpiZWZvcmV7Y29udGVudDoiXGYzNjgifS5mYS1lYmF5OmJlZm9yZXtjb250ZW50OiJcZjRmNCJ9LmZhLWFtYXpvbjpiZWZvcmV7Y29udGVudDoiXGYyNzAifS5mYS11bnNwbGFzaDpiZWZvcmV7Y29udGVudDoiXGUwN2MifS5mYS15YXJuOmJlZm9yZXtjb250ZW50OiJcZjdlMyJ9LmZhLXNxdWFyZS1zdGVhbTpiZWZvcmUsLmZhLXN0ZWFtLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxYjcifS5mYS01MDBweDpiZWZvcmV7Y29udGVudDoiXGYyNmUifS5mYS1zcXVhcmUtdmltZW86YmVmb3JlLC5mYS12aW1lby1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk0In0uZmEtYXN5bW1ldHJpazpiZWZvcmV7Y29udGVudDoiXGYzNzIifS5mYS1mb250LWF3ZXNvbWUtZmxhZzpiZWZvcmUsLmZhLWZvbnQtYXdlc29tZS1sb2dvLWZ1bGw6YmVmb3JlLC5mYS1mb250LWF3ZXNvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMmI0In0uZmEtZ3JhdGlwYXk6YmVmb3Jle2NvbnRlbnQ6IlxmMTg0In0uZmEtYXBwbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc5In0uZmEtaGl2ZTpiZWZvcmV7Y29udGVudDoiXGUwN2YifS5mYS1naXRrcmFrZW46YmVmb3Jle2NvbnRlbnQ6IlxmM2E2In0uZmEta2V5YmFzZTpiZWZvcmV7Y29udGVudDoiXGY0ZjUifS5mYS1hcHBsZS1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE1In0uZmEtcGFkbGV0OmJlZm9yZXtjb250ZW50OiJcZTRhMCJ9LmZhLWFtYXpvbi1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDJjIn0uZmEtZ2l0aHViLXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1naXRodWI6YmVmb3Jle2NvbnRlbnQ6IlxmMDkyIn0uZmEtc3R1bWJsZXVwb246YmVmb3Jle2NvbnRlbnQ6IlxmMWE0In0uZmEtZmVkZXg6YmVmb3Jle2NvbnRlbnQ6IlxmNzk3In0uZmEtcGhvZW5peC1mcmFtZXdvcms6YmVmb3Jle2NvbnRlbnQ6IlxmM2RjIn0uZmEtc2hvcGlmeTpiZWZvcmV7Y29udGVudDoiXGUwNTcifS5mYS1uZW9zOmJlZm9yZXtjb250ZW50OiJcZjYxMiJ9LmZhLWhhY2tlcnJhbms6YmVmb3Jle2NvbnRlbnQ6IlxmNWY3In0uZmEtcmVzZWFyY2hnYXRlOmJlZm9yZXtjb250ZW50OiJcZjRmOCJ9LmZhLXN3aWZ0OmJlZm9yZXtjb250ZW50OiJcZjhlMSJ9LmZhLWFuZ3VsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDIwIn0uZmEtc3BlYWthcDpiZWZvcmV7Y29udGVudDoiXGYzZjMifS5mYS1hbmdyeWNyZWF0aXZlOmJlZm9yZXtjb250ZW50OiJcZjM2ZSJ9LmZhLXktY29tYmluYXRvcjpiZWZvcmV7Y29udGVudDoiXGYyM2IifS5mYS1lbXBpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQxIn0uZmEtZW52aXJhOmJlZm9yZXtjb250ZW50OiJcZjI5OSJ9LmZhLWdpdGxhYi1zcXVhcmU6YmVmb3JlLC5mYS1zcXVhcmUtZ2l0bGFiOmJlZm9yZXtjb250ZW50OiJcZTVhZSJ9LmZhLXN0dWRpb3ZpbmFyaTpiZWZvcmV7Y29udGVudDoiXGYzZjgifS5mYS1waWVkLXBpcGVyOmJlZm9yZXtjb250ZW50OiJcZjJhZSJ9LmZhLXdvcmRwcmVzczpiZWZvcmV7Y29udGVudDoiXGYxOWEifS5mYS1wcm9kdWN0LWh1bnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjg4In0uZmEtZmlyZWZveDpiZWZvcmV7Y29udGVudDoiXGYyNjkifS5mYS1saW5vZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmI4In0uZmEtZ29vZHJlYWRzOmJlZm9yZXtjb250ZW50OiJcZjNhOCJ9LmZhLW9kbm9rbGFzc25pa2ktc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLW9kbm9rbGFzc25pa2k6YmVmb3Jle2NvbnRlbnQ6IlxmMjY0In0uZmEtanNmaWRkbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWNjIn0uZmEtc2l0aDpiZWZvcmV7Y29udGVudDoiXGY1MTIifS5mYS10aGVtZWlzbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmIyIn0uZmEtcGFnZTQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Q3In0uZmEtaGFzaG5vZGU6YmVmb3Jle2NvbnRlbnQ6IlxlNDk5In0uZmEtcmVhY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNDFiIn0uZmEtY2MtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFmNCJ9LmZhLXNxdWFyZXNwYWNlOmJlZm9yZXtjb250ZW50OiJcZjViZSJ9LmZhLWNjLXN0cmlwZTpiZWZvcmV7Y29udGVudDoiXGYxZjUifS5mYS1jcmVhdGl2ZS1jb21tb25zLXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjRmMiJ9LmZhLWJpdGNvaW46YmVmb3Jle2NvbnRlbnQ6IlxmMzc5In0uZmEta2V5Y2RuOmJlZm9yZXtjb250ZW50OiJcZjNiYSJ9LmZhLW9wZXJhOmJlZm9yZXtjb250ZW50OiJcZjI2YSJ9LmZhLWl0Y2gtaW86YmVmb3Jle2NvbnRlbnQ6IlxmODNhIn0uZmEtdW1icmFjbzpiZWZvcmV7Y29udGVudDoiXGY4ZTgifS5mYS1nYWxhY3RpYy1zZW5hdGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTBkIn0uZmEtdWJ1bnR1OmJlZm9yZXtjb250ZW50OiJcZjdkZiJ9LmZhLWRyYWZ0MmRpZ2l0YWw6YmVmb3Jle2NvbnRlbnQ6IlxmMzk2In0uZmEtc3RyaXBlOmJlZm9yZXtjb250ZW50OiJcZjQyOSJ9LmZhLWhvdXp6OmJlZm9yZXtjb250ZW50OiJcZjI3YyJ9LmZhLWdnOmJlZm9yZXtjb250ZW50OiJcZjI2MCJ9LmZhLWRobDpiZWZvcmV7Y29udGVudDoiXGY3OTAifS5mYS1waW50ZXJlc3Qtc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLXBpbnRlcmVzdDpiZWZvcmV7Y29udGVudDoiXGYwZDMifS5mYS14aW5nOmJlZm9yZXtjb250ZW50OiJcZjE2OCJ9LmZhLWJsYWNrYmVycnk6YmVmb3Jle2NvbnRlbnQ6IlxmMzdiIn0uZmEtY3JlYXRpdmUtY29tbW9ucy1wZDpiZWZvcmV7Y29udGVudDoiXGY0ZWMifS5mYS1wbGF5c3RhdGlvbjpiZWZvcmV7Y29udGVudDoiXGYzZGYifS5mYS1xdWluc2NhcGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDU5In0uZmEtbGVzczpiZWZvcmV7Y29udGVudDoiXGY0MWQifS5mYS1ibG9nZ2VyLWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdkIn0uZmEtb3BlbmNhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjNkIn0uZmEtdmluZTpiZWZvcmV7Y29udGVudDoiXGYxY2EifS5mYS1wYXlwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWVkIn0uZmEtZ2l0bGFiOmJlZm9yZXtjb250ZW50OiJcZjI5NiJ9LmZhLXR5cG8zOmJlZm9yZXtjb250ZW50OiJcZjQyYiJ9LmZhLXJlZGRpdC1hbGllbjpiZWZvcmV7Y29udGVudDoiXGYyODEifS5mYS15YWhvbzpiZWZvcmV7Y29udGVudDoiXGYxOWUifS5mYS1kYWlseW1vdGlvbjpiZWZvcmV7Y29udGVudDoiXGUwNTIifS5mYS1hZmZpbGlhdGV0aGVtZTpiZWZvcmV7Y29udGVudDoiXGYzNmIifS5mYS1waWVkLXBpcGVyLXBwOmJlZm9yZXtjb250ZW50OiJcZjFhNyJ9LmZhLWJvb3RzdHJhcDpiZWZvcmV7Y29udGVudDoiXGY4MzYifS5mYS1vZG5va2xhc3NuaWtpOmJlZm9yZXtjb250ZW50OiJcZjI2MyJ9LmZhLW5mYy1zeW1ib2w6YmVmb3Jle2NvbnRlbnQ6IlxlNTMxIn0uZmEtZXRoZXJldW06YmVmb3Jle2NvbnRlbnQ6IlxmNDJlIn0uZmEtc3BlYWtlci1kZWNrOmJlZm9yZXtjb250ZW50OiJcZjgzYyJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtZXU6YmVmb3Jle2NvbnRlbnQ6IlxmNGU5In0uZmEtcGF0cmVvbjpiZWZvcmV7Y29udGVudDoiXGYzZDkifS5mYS1hdmlhbmV4OmJlZm9yZXtjb250ZW50OiJcZjM3NCJ9LmZhLWVsbG86YmVmb3Jle2NvbnRlbnQ6IlxmNWYxIn0uZmEtZ29mb3JlOmJlZm9yZXtjb250ZW50OiJcZjNhNyJ9LmZhLWJpbW9iamVjdDpiZWZvcmV7Y29udGVudDoiXGYzNzgifS5mYS1mYWNlYm9vay1mOmJlZm9yZXtjb250ZW50OiJcZjM5ZSJ9LmZhLWdvb2dsZS1wbHVzLXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1nb29nbGUtcGx1czpiZWZvcmV7Y29udGVudDoiXGYwZDQifS5mYS1tYW5kYWxvcmlhbjpiZWZvcmV7Y29udGVudDoiXGY1MGYifS5mYS1maXJzdC1vcmRlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTBhIn0uZmEtb3NpOmJlZm9yZXtjb250ZW50OiJcZjQxYSJ9LmZhLWdvb2dsZS13YWxsZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWVlIn0uZmEtZC1hbmQtZC1iZXlvbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNmNhIn0uZmEtcGVyaXNjb3BlOmJlZm9yZXtjb250ZW50OiJcZjNkYSJ9LmZhLWZ1bGNydW06YmVmb3Jle2NvbnRlbnQ6IlxmNTBiIn0uZmEtY2xvdWRzY2FsZTpiZWZvcmV7Y29udGVudDoiXGYzODMifS5mYS1mb3J1bWJlZTpiZWZvcmV7Y29udGVudDoiXGYyMTEifS5mYS1taXp1bmk6YmVmb3Jle2NvbnRlbnQ6IlxmM2NjIn0uZmEtc2NobGl4OmJlZm9yZXtjb250ZW50OiJcZjNlYSJ9LmZhLXNxdWFyZS14aW5nOmJlZm9yZSwuZmEteGluZy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTY5In0uZmEtYmFuZGNhbXA6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ1In0uZmEtd3Bmb3JtczpiZWZvcmV7Y29udGVudDoiXGYyOTgifS5mYS1jbG91ZHZlcnNpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMzg1In0uZmEtdXNwczpiZWZvcmV7Y29udGVudDoiXGY3ZTEifS5mYS1tZWdhcG9ydDpiZWZvcmV7Y29udGVudDoiXGY1YTMifS5mYS1tYWdlbnRvOmJlZm9yZXtjb250ZW50OiJcZjNjNCJ9LmZhLXNwb3RpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMWJjIn0uZmEtb3B0aW4tbW9uc3RlcjpiZWZvcmV7Y29udGVudDoiXGYyM2MifS5mYS1mbHk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE3In0uZmEtYXZpYXRvOmJlZm9yZXtjb250ZW50OiJcZjQyMSJ9LmZhLWl0dW5lczpiZWZvcmV7Y29udGVudDoiXGYzYjQifS5mYS1jdXR0bGVmaXNoOmJlZm9yZXtjb250ZW50OiJcZjM4YyJ9LmZhLWJsb2dnZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdjIn0uZmEtZmxpY2tyOmJlZm9yZXtjb250ZW50OiJcZjE2ZSJ9LmZhLXZpYmVyOmJlZm9yZXtjb250ZW50OiJcZjQwOSJ9LmZhLXNvdW5kY2xvdWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWJlIn0uZmEtZGlnZzpiZWZvcmV7Y29udGVudDoiXGYxYTYifS5mYS10ZW5jZW50LXdlaWJvOmJlZm9yZXtjb250ZW50OiJcZjFkNSJ9LmZhLXN5bWZvbnk6YmVmb3Jle2NvbnRlbnQ6IlxmODNkIn0uZmEtbWF4Y2RuOmJlZm9yZXtjb250ZW50OiJcZjEzNiJ9LmZhLWV0c3k6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ3In0uZmEtZmFjZWJvb2stbWVzc2VuZ2VyOmJlZm9yZXtjb250ZW50OiJcZjM5ZiJ9LmZhLWF1ZGlibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzczIn0uZmEtdGhpbmstcGVha3M6YmVmb3Jle2NvbnRlbnQ6IlxmNzMxIn0uZmEtYmlsaWJpbGk6YmVmb3Jle2NvbnRlbnQ6IlxlM2Q5In0uZmEtZXJsYW5nOmJlZm9yZXtjb250ZW50OiJcZjM5ZCJ9LmZhLWNvdHRvbi1idXJlYXU6YmVmb3Jle2NvbnRlbnQ6IlxmODllIn0uZmEtZGFzaGN1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjEwIn0uZmEtNDItZ3JvdXA6YmVmb3JlLC5mYS1pbm5vc29mdDpiZWZvcmV7Y29udGVudDoiXGUwODAifS5mYS1zdGFjay1leGNoYW5nZTpiZWZvcmV7Y29udGVudDoiXGYxOGQifS5mYS1lbGVtZW50b3I6YmVmb3Jle2NvbnRlbnQ6IlxmNDMwIn0uZmEtcGllZC1waXBlci1zcXVhcmU6YmVmb3JlLC5mYS1zcXVhcmUtcGllZC1waXBlcjpiZWZvcmV7Y29udGVudDoiXGUwMWUifS5mYS1jcmVhdGl2ZS1jb21tb25zLW5kOmJlZm9yZXtjb250ZW50OiJcZjRlYiJ9LmZhLXBhbGZlZDpiZWZvcmV7Y29udGVudDoiXGYzZDgifS5mYS1zdXBlcnBvd2VyczpiZWZvcmV7Y29udGVudDoiXGYyZGQifS5mYS1yZXNvbHZpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmM2U3In0uZmEteGJveDpiZWZvcmV7Y29udGVudDoiXGY0MTIifS5mYS1zZWFyY2hlbmdpbjpiZWZvcmV7Y29udGVudDoiXGYzZWIifS5mYS10aWt0b2s6YmVmb3Jle2NvbnRlbnQ6IlxlMDdiIn0uZmEtZmFjZWJvb2stc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLWZhY2Vib29rOmJlZm9yZXtjb250ZW50OiJcZjA4MiJ9LmZhLXJlbnJlbjpiZWZvcmV7Y29udGVudDoiXGYxOGIifS5mYS1saW51eDpiZWZvcmV7Y29udGVudDoiXGYxN2MifS5mYS1nbGlkZTpiZWZvcmV7Y29udGVudDoiXGYyYTUifS5mYS1saW5rZWRpbjpiZWZvcmV7Y29udGVudDoiXGYwOGMifS5mYS1odWJzcG90OmJlZm9yZXtjb250ZW50OiJcZjNiMiJ9LmZhLWRlcGxveWRvZzpiZWZvcmV7Y29udGVudDoiXGYzOGUifS5mYS10d2l0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWU4In0uZmEtcmF2ZWxyeTpiZWZvcmV7Y29udGVudDoiXGYyZDkifS5mYS1taXhlcjpiZWZvcmV7Y29udGVudDoiXGUwNTYifS5mYS1sYXN0Zm0tc3F1YXJlOmJlZm9yZSwuZmEtc3F1YXJlLWxhc3RmbTpiZWZvcmV7Y29udGVudDoiXGYyMDMifS5mYS12aW1lbzpiZWZvcmV7Y29udGVudDoiXGY0MGEifS5mYS1tZW5kZWxleTpiZWZvcmV7Y29udGVudDoiXGY3YjMifS5mYS11bmlyZWdpc3RyeTpiZWZvcmV7Y29udGVudDoiXGY0MDQifS5mYS1maWdtYTpiZWZvcmV7Y29udGVudDoiXGY3OTkifS5mYS1jcmVhdGl2ZS1jb21tb25zLXJlbWl4OmJlZm9yZXtjb250ZW50OiJcZjRlZSJ9LmZhLWNjLWFtYXpvbi1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDJkIn0uZmEtZHJvcGJveDpiZWZvcmV7Y29udGVudDoiXGYxNmIifS5mYS1pbnN0YWdyYW06YmVmb3Jle2NvbnRlbnQ6IlxmMTZkIn0uZmEtY21wbGlkOmJlZm9yZXtjb250ZW50OiJcZTM2MCJ9LmZhLWZhY2Vib29rOmJlZm9yZXtjb250ZW50OiJcZjA5YSJ9LmZhLWdyaXBmaXJlOmJlZm9yZXtjb250ZW50OiJcZjNhYyJ9LmZhLWplZGktb3JkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTBlIn0uZmEtdWlraXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDAzIn0uZmEtZm9ydC1hd2Vzb21lLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYTMifS5mYS1waGFicmljYXRvcjpiZWZvcmV7Y29udGVudDoiXGYzZGIifS5mYS11c3N1bm5haDpiZWZvcmV7Y29udGVudDoiXGY0MDcifS5mYS1lYXJseWJpcmRzOmJlZm9yZXtjb250ZW50OiJcZjM5YSJ9LmZhLXRyYWRlLWZlZGVyYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmNTEzIn0uZmEtYXV0b3ByZWZpeGVyOmJlZm9yZXtjb250ZW50OiJcZjQxYyJ9LmZhLXdoYXRzYXBwOmJlZm9yZXtjb250ZW50OiJcZjIzMiJ9LmZhLXNsaWRlc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWU3In0uZmEtZ29vZ2xlLXBsYXk6YmVmb3Jle2NvbnRlbnQ6IlxmM2FiIn0uZmEtdmlhZGVvOmJlZm9yZXtjb250ZW50OiJcZjJhOSJ9LmZhLWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2MwIn0uZmEtZ29vZ2xlLWRyaXZlOmJlZm9yZXtjb250ZW50OiJcZjNhYSJ9LmZhLXNlcnZpY2VzdGFjazpiZWZvcmV7Y29udGVudDoiXGYzZWMifS5mYS1zaW1wbHlidWlsdDpiZWZvcmV7Y29udGVudDoiXGYyMTUifS5mYS1iaXRidWNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTcxIn0uZmEtaW1kYjpiZWZvcmV7Y29udGVudDoiXGYyZDgifS5mYS1kZWV6ZXI6YmVmb3Jle2NvbnRlbnQ6IlxlMDc3In0uZmEtcmFzcGJlcnJ5LXBpOmJlZm9yZXtjb250ZW50OiJcZjdiYiJ9LmZhLWppcmE6YmVmb3Jle2NvbnRlbnQ6IlxmN2IxIn0uZmEtZG9ja2VyOmJlZm9yZXtjb250ZW50OiJcZjM5NSJ9LmZhLXNjcmVlbnBhbDpiZWZvcmV7Y29udGVudDoiXGU1NzAifS5mYS1ibHVldG9vdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMjkzIn0uZmEtZ2l0dGVyOmJlZm9yZXtjb250ZW50OiJcZjQyNiJ9LmZhLWQtYW5kLWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzhkIn0uZmEtbWljcm9ibG9nOmJlZm9yZXtjb250ZW50OiJcZTAxYSJ9LmZhLWNjLWRpbmVycy1jbHViOmJlZm9yZXtjb250ZW50OiJcZjI0YyJ9LmZhLWdnLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyNjEifS5mYS1waWVkLXBpcGVyLWhhdDpiZWZvcmV7Y29udGVudDoiXGY0ZTUifS5mYS1raWNrc3RhcnRlci1rOmJlZm9yZXtjb250ZW50OiJcZjNiYyJ9LmZhLXlhbmRleDpiZWZvcmV7Y29udGVudDoiXGY0MTMifS5mYS1yZWFkbWU6YmVmb3Jle2NvbnRlbnQ6IlxmNGQ1In0uZmEtaHRtbDU6YmVmb3Jle2NvbnRlbnQ6IlxmMTNiIn0uZmEtc2VsbHN5OmJlZm9yZXtjb250ZW50OiJcZjIxMyJ9LmZhLXNhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNDFlIn0uZmEtd2lyc2luZGhhbmR3ZXJrOmJlZm9yZSwuZmEtd3NoOmJlZm9yZXtjb250ZW50OiJcZTJkMCJ9LmZhLWJ1cm9tb2JlbGV4cGVydGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzdmIn0uZmEtc2FsZXNmb3JjZTpiZWZvcmV7Y29udGVudDoiXGY4M2IifS5mYS1vY3RvcHVzLWRlcGxveTpiZWZvcmV7Y29udGVudDoiXGUwODIifS5mYS1tZWRhcHBzOmJlZm9yZXtjb250ZW50OiJcZjNjNiJ9LmZhLW5zODpiZWZvcmV7Y29udGVudDoiXGYzZDUifS5mYS1waW50ZXJlc3QtcDpiZWZvcmV7Y29udGVudDoiXGYyMzEifS5mYS1hcHBlcjpiZWZvcmV7Y29udGVudDoiXGYzNzEifS5mYS1mb3J0LWF3ZXNvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjg2In0uZmEtd2F6ZTpiZWZvcmV7Y29udGVudDoiXGY4M2YifS5mYS1jYy1qY2I6YmVmb3Jle2NvbnRlbnQ6IlxmMjRiIn0uZmEtc25hcGNoYXQtZ2hvc3Q6YmVmb3JlLC5mYS1zbmFwY2hhdDpiZWZvcmV7Y29udGVudDoiXGYyYWIifS5mYS1mYW50YXN5LWZsaWdodC1nYW1lczpiZWZvcmV7Y29udGVudDoiXGY2ZGMifS5mYS1ydXN0OmJlZm9yZXtjb250ZW50OiJcZTA3YSJ9LmZhLXdpeDpiZWZvcmV7Y29udGVudDoiXGY1Y2YifS5mYS1iZWhhbmNlLXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1iZWhhbmNlOmJlZm9yZXtjb250ZW50OiJcZjFiNSJ9LmZhLXN1cHBsZTpiZWZvcmV7Y29udGVudDoiXGYzZjkifS5mYS1yZWJlbDpiZWZvcmV7Y29udGVudDoiXGYxZDAifS5mYS1jc3MzOmJlZm9yZXtjb250ZW50OiJcZjEzYyJ9LmZhLXN0YXlsaW5rZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y1In0uZmEta2FnZ2xlOmJlZm9yZXtjb250ZW50OiJcZjVmYSJ9LmZhLXNwYWNlLWF3ZXNvbWU6YmVmb3Jle2NvbnRlbnQ6IlxlNWFjIn0uZmEtZGV2aWFudGFydDpiZWZvcmV7Y29udGVudDoiXGYxYmQifS5mYS1jcGFuZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMzg4In0uZmEtZ29vZHJlYWRzLWc6YmVmb3Jle2NvbnRlbnQ6IlxmM2E5In0uZmEtZ2l0LXNxdWFyZTpiZWZvcmUsLmZhLXNxdWFyZS1naXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWQyIn0uZmEtc3F1YXJlLXR1bWJscjpiZWZvcmUsLmZhLXR1bWJsci1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc0In0uZmEtdHJlbGxvOmJlZm9yZXtjb250ZW50OiJcZjE4MSJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtbmMtanA6YmVmb3Jle2NvbnRlbnQ6IlxmNGVhIn0uZmEtZ2V0LXBvY2tldDpiZWZvcmV7Y29udGVudDoiXGYyNjUifS5mYS1wZXJieXRlOmJlZm9yZXtjb250ZW50OiJcZTA4MyJ9LmZhLWdydW50OmJlZm9yZXtjb250ZW50OiJcZjNhZCJ9LmZhLXdlZWJseTpiZWZvcmV7Y29udGVudDoiXGY1Y2MifS5mYS1jb25uZWN0ZGV2ZWxvcDpiZWZvcmV7Y29udGVudDoiXGYyMGUifS5mYS1sZWFucHViOmJlZm9yZXtjb250ZW50OiJcZjIxMiJ9LmZhLWJsYWNrLXRpZTpiZWZvcmV7Y29udGVudDoiXGYyN2UifS5mYS10aGVtZWNvOmJlZm9yZXtjb250ZW50OiJcZjVjNiJ9LmZhLXB5dGhvbjpiZWZvcmV7Y29udGVudDoiXGYzZTIifS5mYS1hbmRyb2lkOmJlZm9yZXtjb250ZW50OiJcZjE3YiJ9LmZhLWJvdHM6YmVmb3Jle2NvbnRlbnQ6IlxlMzQwIn0uZmEtZnJlZS1jb2RlLWNhbXA6YmVmb3Jle2NvbnRlbnQ6IlxmMmM1In0uZmEtaG9ybmJpbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNTkyIn0uZmEtanM6YmVmb3Jle2NvbnRlbnQ6IlxmM2I4In0uZmEtaWRlYWw6YmVmb3Jle2NvbnRlbnQ6IlxlMDEzIn0uZmEtZ2l0OmJlZm9yZXtjb250ZW50OiJcZjFkMyJ9LmZhLWRldjpiZWZvcmV7Y29udGVudDoiXGY2Y2MifS5mYS1za2V0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmN2M2In0uZmEteWFuZGV4LWludGVybmF0aW9uYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNDE0In0uZmEtY2MtYW1leDpiZWZvcmV7Y29udGVudDoiXGYxZjMifS5mYS11YmVyOmJlZm9yZXtjb250ZW50OiJcZjQwMiJ9LmZhLWdpdGh1YjpiZWZvcmV7Y29udGVudDoiXGYwOWIifS5mYS1waHA6YmVmb3Jle2NvbnRlbnQ6IlxmNDU3In0uZmEtYWxpcGF5OmJlZm9yZXtjb250ZW50OiJcZjY0MiJ9LmZhLXlvdXR1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTY3In0uZmEtc2t5YXRsYXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjE2In0uZmEtZmlyZWZveC1icm93c2VyOmJlZm9yZXtjb250ZW50OiJcZTAwNyJ9LmZhLXJlcGx5ZDpiZWZvcmV7Y29udGVudDoiXGYzZTYifS5mYS1zdXNlOmJlZm9yZXtjb250ZW50OiJcZjdkNiJ9LmZhLWplbmtpbnM6YmVmb3Jle2NvbnRlbnQ6IlxmM2I2In0uZmEtdHdpdHRlcjpiZWZvcmV7Y29udGVudDoiXGYwOTkifS5mYS1yb2Nrcm1zOmJlZm9yZXtjb250ZW50OiJcZjNlOSJ9LmZhLXBpbnRlcmVzdDpiZWZvcmV7Y29udGVudDoiXGYwZDIifS5mYS1idWZmZXI6YmVmb3Jle2NvbnRlbnQ6IlxmODM3In0uZmEtbnBtOmJlZm9yZXtjb250ZW50OiJcZjNkNCJ9LmZhLXlhbW1lcjpiZWZvcmV7Y29udGVudDoiXGY4NDAifS5mYS1idGM6YmVmb3Jle2NvbnRlbnQ6IlxmMTVhIn0uZmEtZHJpYmJibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTdkIn0uZmEtc3R1bWJsZXVwb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjFhMyJ9LmZhLWludGVybmV0LWV4cGxvcmVyOmJlZm9yZXtjb250ZW50OiJcZjI2YiJ9LmZhLXN0dWJiZXI6YmVmb3Jle2NvbnRlbnQ6IlxlNWM3In0uZmEtdGVsZWdyYW0tcGxhbmU6YmVmb3JlLC5mYS10ZWxlZ3JhbTpiZWZvcmV7Y29udGVudDoiXGYyYzYifS5mYS1vbGQtcmVwdWJsaWM6YmVmb3Jle2NvbnRlbnQ6IlxmNTEwIn0uZmEtb2R5c2VlOmJlZm9yZXtjb250ZW50OiJcZTVjNiJ9LmZhLXNxdWFyZS13aGF0c2FwcDpiZWZvcmUsLmZhLXdoYXRzYXBwLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY0MGMifS5mYS1ub2RlLWpzOmJlZm9yZXtjb250ZW50OiJcZjNkMyJ9LmZhLWVkZ2UtbGVnYWN5OmJlZm9yZXtjb250ZW50OiJcZTA3OCJ9LmZhLXNsYWNrLWhhc2g6YmVmb3JlLC5mYS1zbGFjazpiZWZvcmV7Y29udGVudDoiXGYxOTgifS5mYS1tZWRydDpiZWZvcmV7Y29udGVudDoiXGYzYzgifS5mYS11c2I6YmVmb3Jle2NvbnRlbnQ6IlxmMjg3In0uZmEtdHVtYmxyOmJlZm9yZXtjb250ZW50OiJcZjE3MyJ9LmZhLXZhYWRpbjpiZWZvcmV7Y29udGVudDoiXGY0MDgifS5mYS1xdW9yYTpiZWZvcmV7Y29udGVudDoiXGYyYzQifS5mYS1yZWFjdGV1cm9wZTpiZWZvcmV7Y29udGVudDoiXGY3NWQifS5mYS1tZWRpdW0tbTpiZWZvcmUsLmZhLW1lZGl1bTpiZWZvcmV7Y29udGVudDoiXGYyM2EifS5mYS1hbWlsaWE6YmVmb3Jle2NvbnRlbnQ6IlxmMzZkIn0uZmEtbWl4Y2xvdWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjg5In0uZmEtZmxpcGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjQ0ZCJ9LmZhLXZpYWNvaW46YmVmb3Jle2NvbnRlbnQ6IlxmMjM3In0uZmEtY3JpdGljYWwtcm9sZTpiZWZvcmV7Y29udGVudDoiXGY2YzkifS5mYS1zaXRyb3g6YmVmb3Jle2NvbnRlbnQ6IlxlNDRhIn0uZmEtZGlzY291cnNlOmJlZm9yZXtjb250ZW50OiJcZjM5MyJ9LmZhLWpvb21sYTpiZWZvcmV7Y29udGVudDoiXGYxYWEifS5mYS1tYXN0b2RvbjpiZWZvcmV7Y29udGVudDoiXGY0ZjYifS5mYS1haXJibmI6YmVmb3Jle2NvbnRlbnQ6IlxmODM0In0uZmEtd29sZi1wYWNrLWJhdHRhbGlvbjpiZWZvcmV7Y29udGVudDoiXGY1MTQifS5mYS1idXktbi1sYXJnZTpiZWZvcmV7Y29udGVudDoiXGY4YTYifS5mYS1ndWxwOmJlZm9yZXtjb250ZW50OiJcZjNhZSJ9LmZhLWNyZWF0aXZlLWNvbW1vbnMtc2FtcGxpbmctcGx1czpiZWZvcmV7Y29udGVudDoiXGY0ZjEifS5mYS1zdHJhdmE6YmVmb3Jle2NvbnRlbnQ6IlxmNDI4In0uZmEtZW1iZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDIzIn0uZmEtY2FuYWRpYW4tbWFwbGUtbGVhZjpiZWZvcmV7Y29udGVudDoiXGY3ODUifS5mYS10ZWFtc3BlYWs6YmVmb3Jle2NvbnRlbnQ6IlxmNGY5In0uZmEtcHVzaGVkOmJlZm9yZXtjb250ZW50OiJcZjNlMSJ9LmZhLXdvcmRwcmVzcy1zaW1wbGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDExIn0uZmEtbnV0cml0aW9uaXg6YmVmb3Jle2NvbnRlbnQ6IlxmM2Q2In0uZmEtd29kdTpiZWZvcmV7Y29udGVudDoiXGUwODgifS5mYS1nb29nbGUtcGF5OmJlZm9yZXtjb250ZW50OiJcZTA3OSJ9LmZhLWludGVyY29tOmJlZm9yZXtjb250ZW50OiJcZjdhZiJ9LmZhLXpoaWh1OmJlZm9yZXtjb250ZW50OiJcZjYzZiJ9LmZhLWtvcnZ1ZTpiZWZvcmV7Y29udGVudDoiXGY0MmYifS5mYS1waXg6YmVmb3Jle2NvbnRlbnQ6IlxlNDNhIn0uZmEtc3RlYW0tc3ltYm9sOmJlZm9yZXtjb250ZW50OiJcZjNmNiJ9Omhvc3QsOnJvb3R7LS1mYS1mb250LXJlZ3VsYXI6bm9ybWFsIDQwMCAxZW0vMSAiRm9udCBBd2Vzb21lIDYgRnJlZSJ9QGZvbnQtZmFjZXtmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDYgRnJlZSI7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtZGlzcGxheTpibG9jaztzcmM6dXJsKC4uL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC4uL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfS5mYS1yZWd1bGFyLC5mYXJ7Zm9udC13ZWlnaHQ6NDAwfTpob3N0LDpyb290ey0tZmEtc3R5bGUtZmFtaWx5LWNsYXNzaWM6IkZvbnQgQXdlc29tZSA2IEZyZWUiOy0tZmEtZm9udC1zb2xpZDpub3JtYWwgOTAwIDFlbS8xICJGb250IEF3ZXNvbWUgNiBGcmVlIn1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNiBGcmVlIjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo5MDA7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC4uL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX0uZmEtc29saWQsLmZhc3tmb250LXdlaWdodDo5MDB9QGZvbnQtZmFjZXtmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjtmb250LWRpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NDAwO3NyYzp1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IEZyZWUiO2ZvbnQtZGlzcGxheTpibG9jaztmb250LXdlaWdodDo5MDA7c3JjOnVybCguLi93ZWJmb250cy9mYS1zb2xpZC05MDAud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IEZyZWUiO2ZvbnQtZGlzcGxheTpibG9jaztmb250LXdlaWdodDo0MDA7c3JjOnVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJGb250QXdlc29tZSI7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLi4vd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC4uL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJGb250QXdlc29tZSI7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLi4vd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCguLi93ZWJmb250cy9mYS1icmFuZHMtNDAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6IkZvbnRBd2Vzb21lIjtmb250LWRpc3BsYXk6YmxvY2s7c3JjOnVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCguLi93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKTt1bmljb2RlLXJhbmdlOnUrZjAwMyx1K2YwMDYsdStmMDE0LHUrZjAxNi1mMDE3LHUrZjAxYS1mMDFiLHUrZjAxZCx1K2YwMjIsdStmMDNlLHUrZjA0NCx1K2YwNDYsdStmMDVjLWYwNWQsdStmMDZlLHUrZjA3MCx1K2YwODctZjA4OCx1K2YwOGEsdStmMDk0LHUrZjA5Ni1mMDk3LHUrZjA5ZCx1K2YwYTAsdStmMGEyLHUrZjBhNC1mMGE3LHUrZjBjNSx1K2YwYzcsdStmMGU1LWYwZTYsdStmMGViLHUrZjBmNi1mMGY4LHUrZjEwYyx1K2YxMTQtZjExNSx1K2YxMTgtZjExYSx1K2YxMWMtZjExZCx1K2YxMzMsdStmMTQ3LHUrZjE0ZSx1K2YxNTAtZjE1Mix1K2YxODUtZjE4Nix1K2YxOGUsdStmMTkwLWYxOTIsdStmMTk2LHUrZjFjMS1mMWM5LHUrZjFkOSx1K2YxZGIsdStmMWUzLHUrZjFlYSx1K2YxZjcsdStmMWY5LHUrZjIwYSx1K2YyNDctZjI0OCx1K2YyNGEsdStmMjRkLHUrZjI1NS1mMjViLHUrZjI1ZCx1K2YyNzEtZjI3NCx1K2YyNzgsdStmMjdiLHUrZjI4Yyx1K2YyOGUsdStmMjljLHUrZjJiNSx1K2YyYjcsdStmMmJhLHUrZjJiYyx1K2YyYmUsdStmMmMwLWYyYzEsdStmMmMzLHUrZjJkMCx1K2YyZDIsdStmMmQ0LHUrZjJkY31AZm9udC1mYWNle2ZvbnQtZmFtaWx5OiJGb250QXdlc29tZSI7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLi4vd2ViZm9udHMvZmEtdjRjb21wYXRpYmlsaXR5LndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC4uL3dlYmZvbnRzL2ZhLXY0Y29tcGF0aWJpbGl0eS50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKTt1bmljb2RlLXJhbmdlOnUrZjA0MSx1K2YwNDcsdStmMDY1LWYwNjYsdStmMDdkLWYwN2UsdStmMDgwLHUrZjA4Yix1K2YwOGUsdStmMDkwLHUrZjA5YSx1K2YwYWMsdStmMGFlLHUrZjBiMix1K2YwZDAsdStmMGQ2LHUrZjBlNCx1K2YwZWMsdStmMTBhLWYxMGIsdStmMTIzLHUrZjEzZSx1K2YxNDgtZjE0OSx1K2YxNGMsdStmMTU2LHUrZjE1ZSx1K2YxNjAtZjE2MSx1K2YxNjMsdStmMTc1LWYxNzgsdStmMTk1LHUrZjFmOCx1K2YyMTksdStmMjdhfQ=="}},"time_used":3187,"timings":{"blocked":-1,"dns":2,"connect":1,"send":0,"wait":41,"receive":0,"ssl":3142},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Traditional_Food_stall-_Gaza_war_23-25.jpg/640px-Traditional_Food_stall-_Gaza_war_23-25.jpg","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.055Z","timestamp":1785113873055,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /wikipedia/commons/thumb/c/c3/Traditional_Food_stall-_Gaza_war_23-25.jpg/640px-Traditional_Food_stall-_Gaza_war_23-25.jpg HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 400 \r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nserver: Varnish\r\nx-cache: cp3077 int\r\nx-cache-status: int-front\r\nserver-timing: cache;desc=\"int-front\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\ncontent-type: text/html; charset=utf-8\r\ncontent-length: 2010\r\nx-request-id: 583f84cb-a101-4854-b175-19da8239c1b6\r\nx-analytics: \r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"400","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":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/commons/thumb/2/26/World_Health_Organization_Logo.svg/640px-World_Health_Organization_Logo.svg.png","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.072Z","timestamp":1785113873072,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /wikipedia/commons/thumb/2/26/World_Health_Organization_Logo.svg/640px-World_Health_Organization_Logo.svg.png HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 400 \r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nserver: Varnish\r\nx-cache: cp3077 int\r\nx-cache-status: int-front\r\nserver-timing: cache;desc=\"int-front\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\ncontent-type: text/html; charset=utf-8\r\ncontent-length: 2010\r\nx-request-id: 66393301-277b-42d7-bdf2-d1636d4b75b8\r\nx-analytics: \r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"400","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":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"api.web3modal.org/getAnalyticsConfig?projectId=8ae938963e559bebea09b02aeec915c6\u0026st=appkit\u0026sv=react-wagmi-1.7.7","fqdn":"api.web3modal.org","domain":"web3modal.org","tld":"org"},"ip":{"addr":"104.18.18.237","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:58.617Z","timestamp":1785113878617,"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":"web3modal.org","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Fri, 12 Jun 2026 20:58:28 GMT","end":"Thu, 10 Sep 2026 21:58:10 GMT"},"fingerprint":{"sha1":"5A:9F:85:4A:51:F4:8A:04:CC:1C:A1:DE:31:3C:94:C7:C5:F6:F0:FB","sha256":"3A:D7:9D:20:F2:66:99:35:F7:6E:20:B7:CC:CE:F1:C5:DA:4D:43:50:10:EA:CF:1E:B1:2C:71:20:5F:2F:70:C4"}}},"request":{"raw":"GET /getAnalyticsConfig?projectId=8ae938963e559bebea09b02aeec915c6\u0026st=appkit\u0026sv=react-wagmi-1.7.7 HTTP/1.1\r\nHost: api.web3modal.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\nReferer: http://sahnesirince.com/\r\nOrigin: http://sahnesirince.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\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\ndate: Mon, 27 Jul 2026 00:57:58 GMT\r\ncontent-type: application/json; charset=UTF-8\r\naccess-control-allow-origin: *\r\ncache-control: public, max-age=1800, s-maxage=900\r\nx-robots-tag: noindex\r\npriority: u=4,i=?0\r\ncontent-encoding: br\r\nserver: cloudflare\r\ncf-ray: a217b16d5c4aa0f0-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":55,"size_decoded":403,"mime_type":"application/json; charset=UTF-8","magic":"JSON text data","md5":"d624ae72d5da08a9698cf19ed1004a52","sha1":"d2da4fc91b5567dfa523c551f8b8501b43d0384a","sha256":"68df83e68b02e91713d9e5b52a22c297d98ec2d5acda0c37cb47162547cf35db","sha512":"90aa31b4915827753f86420e7b64e4f7685df1bf06908974128eb66b8699e549781120077589005dc68e9fd726c8904fb322695755e997ba1dd28a0b90e77d58","ssdeep":"","tlshash":"9a90020520487596c052c631c21157075d258e732d1460345025090990bb4750841823","first_seen":"2024-07-15T21:15:20Z","last_seen":"2026-07-27T00:59:02.770726Z","times_seen":661,"resource_available":false,"data":"eyJpc0FuYWx5dGljc0VuYWJsZWQiOnRydWUsImlzQXBwS2l0QXV0aEVuYWJsZWQiOmZhbHNlfQ=="}},"time_used":109,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":109,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:58.621Z","timestamp":1785113878621,"http_version":"HTTP/1.1","security_state":"insecure","security_info":null,"request":{"raw":"HEAD / HTTP/1.1\r\nHost: sahnesirince.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nReferer: http://sahnesirince.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"HEAD"},"response":{"raw":"HTTP/1.1 200 OK\r\nConnection: Keep-Alive\r\nKeep-Alive: timeout=5, max=100\r\nX-Powered-By: PHP/8.0.30\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Mon, 27 Jul 2026 00:57:58 GMT\r\nServer: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"PHP:8.0.30","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":0,"size_decoded":197,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":""}},"time_used":362,"timings":{"blocked":78,"dns":0,"connect":0,"send":0,"wait":284,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/commons/thumb/7/70/Ethereum_logo.svg/640px-Ethereum_logo.svg.png","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.064Z","timestamp":1785113873064,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /wikipedia/commons/thumb/7/70/Ethereum_logo.svg/640px-Ethereum_logo.svg.png HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 400 \r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nserver: Varnish\r\nx-cache: cp3077 int\r\nx-cache-status: int-front\r\nserver-timing: cache;desc=\"int-front\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\ncontent-type: text/html; charset=utf-8\r\ncontent-length: 2010\r\nx-request-id: 147bd1c9-ba80-4547-a8a9-de0a201d47b2\r\nx-analytics: \r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"400","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":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"media-cldnry.s-nbcnews.com/image/upload/t_nbcnews-fp-1200-630,f_auto,q_auto:best/rockcms/2025-09/250831-flotilla-cc-0946p-7924f7.jpg","fqdn":"media-cldnry.s-nbcnews.com","domain":"s-nbcnews.com","tld":"com"},"ip":{"addr":"184.26.62.165","port":443,"asn":16625,"as":"AKAMAI-AS","country":"Norway","country_code":"NO"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:56.319Z","timestamp":1785113876319,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384","key_group_name":"P256","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.2","cert":{"subject":{"commonName":"*.s-nbcnews.com","organization":""},"issuer":{"commonName":"DigiCert Global G3 TLS ECC SHA384 2020 CA1","organization":"DigiCert Inc"},"validity":{"start":"Fri, 08 May 2026 00:00:00 GMT","end":"Sun, 22 Nov 2026 23:59:59 GMT"},"fingerprint":{"sha1":"5E:36:9D:5B:C9:45:82:C2:91:E1:D6:C3:BC:0C:D0:9F:6E:10:7E:7B","sha256":"07:D2:31:08:9C:F2:34:E8:A6:EF:01:9F:16:D7:16:B3:F5:D2:9F:C1:DB:96:AE:27:51:3D:E8:41:EE:84:5D:FB"}}},"request":{"raw":"GET /image/upload/t_nbcnews-fp-1200-630,f_auto,q_auto:best/rockcms/2025-09/250831-flotilla-cc-0946p-7924f7.jpg HTTP/1.1\r\nHost: media-cldnry.s-nbcnews.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-length: 130904\r\ncontent-type: image/webp\r\ntiming-allow-origin: *\r\nx-orig-request-id: 8fb9009fc6f3386d1fd7daf95613c9b0\r\nsurrogate-reporting: width=1200,height=630,bytes=130904,format=\"webp\",owidth=2500,oheight=1667,obytes=1100942,oformat=\"jpg\",crt=1756693127,ocrt=1756692754,ef=(1,13,17,21,22,97)\r\ncache-tag: 303846080487710365583322730613646989671,502685259852572472855584767507892950218,7831a46e631c715519da9d0ce0a38b6b\r\ncontent-disposition: inline; filename=\"250831-flotilla-cc-0946p-7924f7.webp\"\r\netag: \"fb375546515a02dcb895b3136ea03c5c\"\r\nlast-modified: Mon, 01 Sep 2025 02:18:48 GMT\r\nserver: cloudinary\r\naccess-control-allow-headers: X-Requested-With\r\naccess-control-allow-origin: *\r\naccept-ranges: bytes\r\nx-served-by: cache-lga21936-LGA\r\nx-cache-hits: 0\r\nx-timer: S1785113876.398559,VS0,VE1\r\ncache-control: public, private, max-age=31557600\r\nexpires: Tue, 27 Jul 2027 06:57:56 GMT\r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nstrict-transport-security: max-age=2628000 ; preload\r\nakamai-grn: 0.164f2417.1785113876.28a6a855\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":130904,"size_decoded":131969,"mime_type":"image/webp","magic":"RIFF (little-endian) data, Web/P image, VP8 encoding, 1200x630, Scaling: [none]x[none], YUV color, decoders should clamp","md5":"fb375546515a02dcb895b3136ea03c5c","sha1":"526a1547d59ed5ba96a062293cca9e58de4369f3","sha256":"0bd505f2336b9d328af766de7e03862425a10abfecdda0ddff35ba070364a2b2","sha512":"c5c9c22d72c91b079b8e8b5c59c535bc7eb5f184493b5fc00dbc9c97de3ae38fb5a197fc72c9128744064070273a5193216f9072ac22c61bd21ebe80699f7556","ssdeep":"3072:zEMas5zCupSyJEFX7lVxDcf6n+aInTTdqDC:Ys5v8HFrlDcf6+PTiC","tlshash":"b8d312481b3c380e0717ad015fe02b26c44ea92ee54bb74f5ec96747a4e539a24b4dbe","first_seen":"2025-10-02T06:51:47.060812Z","last_seen":"2026-07-27T00:59:02.763928Z","times_seen":4,"resource_available":false,"data":"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"}},"time_used":163,"timings":{"blocked":0,"dns":10,"connect":2,"send":0,"wait":114,"receive":24,"ssl":13},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/webfonts/fa-solid-900.woff2","fqdn":"cdnjs.cloudflare.com","domain":"cloudflare.com","tld":"com"},"ip":{"addr":"104.17.24.14","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"font","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:56.474Z","timestamp":1785113876474,"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":"cdnjs.cloudflare.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Fri, 10 Jul 2026 07:07:58 GMT","end":"Thu, 08 Oct 2026 08:07:45 GMT"},"fingerprint":{"sha1":"DF:66:97:F5:13:A2:C0:81:D3:5B:60:C4:B0:7F:CD:78:F5:91:14:D5","sha256":"3C:F2:95:73:83:BA:4D:D9:CC:85:8F:BC:7D:2C:22:CF:F3:49:9A:3A:E4:1D:FC:AE:CB:07:3D:66:89:74:0E:C5"}}},"request":{"raw":"GET /ajax/libs/font-awesome/6.4.0/webfonts/fa-solid-900.woff2 HTTP/1.1\r\nHost: cdnjs.cloudflare.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: http://sahnesirince.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css\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\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\ncontent-type: application/octet-stream; charset=utf-8\r\ncontent-length: 150124\r\ncf-cache-status: BYPASS\r\naccess-control-allow-origin: *\r\ncache-control: no-transform, public, s-maxage=30672000, max-age=30672000, immutable\r\nlast-modified: Mon, 27 Mar 2023 17:46:59 GMT\r\nvary: Accept-Encoding\r\nx-cdnjs-cache: HIT\r\ncross-origin-resource-policy: cross-origin\r\ntiming-allow-origin: *\r\nx-content-type-options: nosniff\r\ncf-cdnjs-via: cfworker/r2\r\nstrict-transport-security: max-age=15780000\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=FOugK55gD6bKUG2jTw2dE5DOzrL57GG8%2F1WS5Ill5eSkeACEd6b6W%2FXtoF%2BPzLjdKaCFZDb9CePDS5jnDDfR2fQPpOx3DxJ0ZvuI2%2Bry8oXRljXEUXaCWbW3Lzuc0jykxblMvpx3\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.01,\"max_age\":604800}\r\npriority: u=5,i=?0\r\nserver: cloudflare\r\ncf-ray: a217b1600cc456ba-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\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":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":150124,"size_decoded":151112,"mime_type":"application/octet-stream; charset=utf-8","magic":"Web Open Font Format (Version 2), TrueType, length 150124, version 772.256","md5":"c64278386c2bbb5e293e11b94ca2f6d1","sha1":"6b99aa650bd12a36caa14e0127435d8f4cd3ba73","sha256":"7152a6933ee3d690ec2af3d09da9d701723d16aa3410a6d80f28ff8866f3b880","sha512":"0ccdc1515510d902c0b4a48b863c48bad86e1f766b1f9c890a64e28d91ee7c6d488241c531fc094d15b29c211da71e092587a987e24ee8e67ef8ea99c284e821","ssdeep":"3072:7sCbk7w0ZXdkN6iMjif3Lr7x7wAtf+D7gDk1feXDLnurWHqrNIuv5n0:7sCbkFZXdC7MaLr9w2mIY1feXXurWyNW","tlshash":"28e3123cf2c6d486735f5aeadb79636894fd0a2e74ecc67d26b982112048f828174d1d","first_seen":"2023-04-09T20:30:06Z","last_seen":"2026-07-27T03:54:06.919015Z","times_seen":43839,"resource_available":false,"data":"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"}},"time_used":52,"timings":{"blocked":-1,"dns":0,"connect":8,"send":0,"wait":40,"receive":4,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/commons/e/ee/Red_Cross_icon.svg","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.068Z","timestamp":1785113873068,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.wikimedia.org","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Fri, 12 Jun 2026 05:24:58 GMT","end":"Thu, 10 Sep 2026 05:24:57 GMT"},"fingerprint":{"sha1":"5B:35:4A:25:C6:4D:17:23:8B:63:A3:F7:CE:52:1B:B7:22:06:BF:1B","sha256":"FE:D1:85:EF:B6:D0:7E:42:4F:F4:62:C9:8C:A3:BA:2C:88:5E:47:EB:9A:03:3D:30:4B:E3:63:FF:11:AD:F6:0D"}}},"request":{"raw":"GET /wikipedia/commons/e/ee/Red_Cross_icon.svg HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, 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\ncontent-type: image/svg+xml\r\nx-object-meta-sha1base36: 06tlocxymr9t5mcoc0j1pe0opuc3f14\r\nlast-modified: Mon, 07 Oct 2013 14:54:28 GMT\r\ndate: Sun, 26 Jul 2026 07:18:56 GMT\r\nx-ratelimit-limit: 10000, 10000;w=1\r\nx-ratelimit-remaining: 9999\r\nx-ratelimit-reset: 1\r\nserver: envoy\r\netag: W/a648316ce53fbafd42546d45c859a366\r\ncontent-encoding: gzip\r\nage: 63540\r\naccept-ranges: bytes\r\nvary: Accept-Encoding\r\nx-cache: cp3077 hit, cp3077 miss\r\nx-cache-status: hit-local\r\nserver-timing: cache;desc=\"hit-local\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\nx-content-type-options: nosniff\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\nreporting-endpoints: csp_endpoint=\"https://commons.wikimedia.org/w/api.php?reportonly=1\u0026source=image\u0026action=cspreport\u0026format=json\"\r\ncontent-security-policy-report-only: default-src 'none'; script-src 'none'; style-src 'unsafe-inline' data:; font-src data:; img-src data: https://upload.wikimedia.org/favicon.ico; connect-src https://upload.wikimedia.org/favicon.ico; media-src data: 'self'; object-src 'none'; worker-src 'none'; manifest-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; report-uri https://commons.wikimedia.org/w/api.php?reportonly=1\u0026source=image\u0026action=cspreport\u0026format=json; report-to csp_endpoint\r\nset-cookie: WMF-Uniq=S6L__bUjug4wCri4hwZBawOqAAAAAFvdziWKfT20tRS-iK4UPVW0kbqjN0SV-AoF;Domain=upload.wikimedia.org;Path=/;HttpOnly;secure;SameSite=None;Expires=Tue, 27 Jul 2027 00:00:00 GMT\r\ncontent-length: 204\r\nx-request-id: f8958b14-18e2-4760-bcfc-8f67effaa03a\r\nx-analytics: \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":"Envoy","description":"Envoy is an open-source edge and service proxy, designed for cloud-native applications.","website":"https://www.envoyproxy.io/","common_platform_enumeration":"cpe:2.3:a:envoyproxy:envoy:*:*:*:*:*:*:*:*","icon":"Envoy.png","categories":["Reverse proxies"]}],"data":{"size":308,"size_decoded":2287,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"a648316ce53fbafd42546d45c859a366","sha1":"019f51e704c409cb4fb327044203c5bb519bc2d8","sha256":"1f72fd10c674814a4c60e39d6f25cf322d2451696bea89ede0b49de2cf900f7e","sha512":"18e80d3c4d8f33fcba1211a925887d3e3555ee26f154f3e5deee015ad51c79c2ed37c1a47b1ce1c0aff48e7593aa5e86f7de9a81e20c0370507dc913ccdeb534","ssdeep":"","tlshash":"94e08667e3099c30b16dc754bbbcd404476d68a2724409899bd91e225e006d7118917e","first_seen":"2025-10-02T06:51:47.065598Z","last_seen":"2026-07-27T00:59:02.766295Z","times_seen":4,"resource_available":false,"data":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMCIgd2lkdGg9IjY2MCIgaGVpZ2h0PSI2NjAiPjxwYXRoIGQ9Im0gMjMwLDAgMCwyMzAgLTIzMCwwIDAsMjAwIDIzMCwwIDAsMjMwIDIwMCwwIDAsLTIzMCAyMzAsMCAwLC0yMDAgLTIzMCwwIDAsLTIzMCAtMjAwLDAgeiIgaWQ9InJlY3Q1IiBzdHlsZT0iZmlsbDojYzAwIi8+PC9zdmc+DQo="}},"time_used":3258,"timings":{"blocked":3148,"dns":0,"connect":23,"send":0,"wait":32,"receive":0,"ssl":53},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T00:57:52.251Z","timestamp":1785113872251,"http_version":"HTTP/1.1","security_state":"insecure","security_info":null,"request":{"raw":"GET / HTTP/1.1\r\nHost: sahnesirince.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\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/1.1 200 OK\r\nConnection: Keep-Alive\r\nKeep-Alive: timeout=5, max=100\r\nX-Powered-By: PHP/8.0.30\r\nContent-Type: text/html; charset=UTF-8\r\nTransfer-Encoding: chunked\r\nContent-Encoding: gzip\r\nVary: Accept-Encoding\r\nDate: Mon, 27 Jul 2026 00:57:52 GMT\r\nServer: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"PHP:8.0.30","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"jsDelivr","description":"JSDelivr is a free public CDN for open-source projects. It can serve web files directly from the npm registry and GitHub repositories without any configuration.","website":"https://www.jsdelivr.com/","common_platform_enumeration":"","icon":"jsdelivr-icon.svg","categories":["CDN"]},{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":23422,"size_decoded":6231,"mime_type":"text/html; charset=UTF-8","magic":"HTML document, ASCII text, with very long lines (310)","md5":"01e37cf7934cbcccaa461a75eb88908c","sha1":"ca704a179ce0f9cc5dce3683511acabe4f1cb37b","sha256":"81b97c44672a1ed9f225cf20283270142892e15799b851ca11431a9cfa393432","sha512":"fd12505dd9cbf0f67c4ac8fddafbfb47f90e2e60d075f8b4ffb286e0a49f9740c55fd8a21da12f1ed64d8043cb9b4576c51d0a0d23f3c4cbc82ffd74edbc0723","ssdeep":"384:u93FbFoMKPyoDw0AupvGrI2xkrUKGuWUw9rBSTBlcZF/:u93FbFoMKPyoDw0AGvG5xkrUKGuWUw9r","tlshash":"a9b2971901f321632957a1b62b77475a7ba0e407d90bce0d3aac97d4df82fa4cca3749","first_seen":"2026-07-27T00:58:32.348131Z","last_seen":"2026-07-27T00:59:02.771448Z","times_seen":2,"resource_available":false,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iaHR0cHM6Ly9nbG9iYWxzdW11ZGZsb3RpbGxhLm9yZy9zdGF0aWMvaWNvbnMvZmF2aWNvbi5pY28iPgogICAgPHRpdGxlPkdsb2JhbCBTdW11ZCBGbG90aWxsYSAtIEh1bWFuaXRhcmlhbiBBaWQgZm9yIEdhemE8L3RpdGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNi40LjAvY3NzL2FsbC5taW4uY3NzIj4KICAgIDxzdHlsZT4KICAgICAgICA6cm9vdCB7CiAgICAgICAgICAgIC0tcHJpbWFyeTogIzFhNWZiNDsKICAgICAgICAgICAgLS1zZWNvbmRhcnk6ICNlMDFiMjQ7CiAgICAgICAgICAgIC0tbGlnaHQ6ICNmOGY5ZmE7CiAgICAgICAgICAgIC0tZGFyazogIzJlMzQzNjsKICAgICAgICAgICAgLS1zdWNjZXNzOiAjMjZhMjY5OwogICAgICAgICAgICAtLXBhbGVzdGluZS1ncmVlbjogIzAwN2EzZDsKICAgICAgICAgICAgLS1wYWxlc3RpbmUtcmVkOiAjY2UxMTI2OwogICAgICAgICAgICAtLXBhbGVzdGluZS1ibGFjazogIzAwMDAwMDsKICAgICAgICAgICAgLS1wYWxlc3RpbmUtd2hpdGU6ICNmZmZmZmY7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICogewogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBUYWhvbWEsIEdlbmV2YSwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1kYXJrKTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaGVhZGVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHJnYmEoMCwgMCwgMCwgMC42KSwgcmdiYSgwLCAwLCAwLCAwLjYpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHVybCgnaHR0cHM6Ly9tZWRpYS1jbGRucnkucy1uYmNuZXdzLmNvbS9pbWFnZS91cGxvYWQvdF9uYmNuZXdzLWZwLTEyMDAtNjMwLGZfYXV0byxxX2F1dG86YmVzdC9yb2NrY21zLzIwMjUtMDkvMjUwODMxLWZsb3RpbGxhLWNjLTA5NDZwLTc5MjRmNy5qcGcnKTsKICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogNHJlbSAycmVtOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wYWxlc3RpbmUtZmxhZyB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiA1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tcGFsZXN0aW5lLWJsYWNrKSAwJSwgdmFyKC0tcGFsZXN0aW5lLWJsYWNrKSAzMy4zMyUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyKC0tcGFsZXN0aW5lLXdoaXRlKSAzMy4zMyUsIHZhcigtLXBhbGVzdGluZS13aGl0ZSkgNjYuNjYlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcigtLXBhbGVzdGluZS1ncmVlbikgNjYuNjYlLCB2YXIoLS1wYWxlc3RpbmUtZ3JlZW4pIDEwMCUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGgxIHsKICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICAgICAgICB0ZXh0LXNoYWRvdzogMnB4IDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBoMiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGgzIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zZWNvbmRhcnkpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc3VidGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2Vjb25kYXJ5KTsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDMwcHg7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjYzQxNjFkOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuYnRuLWRvbmF0ZSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN1Y2Nlc3MpOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAxcmVtOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuYnRuLWRvbmF0ZTpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMxZThjNGU7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHNlY3Rpb24gewogICAgICAgICAgICBwYWRkaW5nOiA0cmVtIDA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jcmlzaXMtc2VjdGlvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY3Jpc2lzLWdyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMwMHB4LCAxZnIpKTsKICAgICAgICAgICAgZ2FwOiAycmVtOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAycmVtOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY3Jpc2lzLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1saWdodCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA1cHggMTVweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jcmlzaXMtY2FyZDpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNyaXNpcy1jYXJkIGltZyB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IDIwMHB4OwogICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNyaXNpcy1jYXJkLWNvbnRlbnQgewogICAgICAgICAgICBwYWRkaW5nOiAxLjVyZW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5sb2dvcy1zZWN0aW9uIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlnaHQpOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5sb2dvcy1jb250YWluZXIgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgICAgICBnYXA6IDJyZW07CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDJyZW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5sb2dvLWl0ZW0gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgICAgICAgcGFkZGluZzogMS41cmVtOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgd2lkdGg6IDE1MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAubG9nby1pdGVtIGltZyB7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwJTsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmRvbmF0aW9uLXNlY3Rpb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmRvbmF0aW9uLWludHJvIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXgtd2lkdGg6IDgwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAzcmVtOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY3J5cHRvLW9wdGlvbnMgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMwMHB4LCAxZnIpKTsKICAgICAgICAgICAgZ2FwOiAycmVtOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAycmVtOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY3J5cHRvLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1saWdodCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgcGFkZGluZzogMnJlbTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDVweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNyeXB0by1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY3J5cHRvLWljb24gewogICAgICAgICAgICB3aWR0aDogODBweDsKICAgICAgICAgICAgaGVpZ2h0OiA4MHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAxcmVtOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNyeXB0by1pY29uIGltZyB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5xci1jb2RlIHsKICAgICAgICAgICAgd2lkdGg6IDE4MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDE4MHB4OwogICAgICAgICAgICBtYXJnaW46IDEuNXJlbSBhdXRvOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDNweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnFyLWNvZGUgc3ZnIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmFkZHJlc3MtY29udGFpbmVyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMXJlbTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmFkZHJlc3MgewogICAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4IDAgMCA1cHg7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNvcHktYnRuIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeSk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBwYWRkaW5nOiAwIDE1cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgNXB4IDVweCAwOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29weS1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMTQ0YjhmOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuY29weS1idG4uY29waWVkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3VjY2Vzcyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvb3RlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRhcmspOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogMnJlbSAwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAudXJnZW50LWFsZXJ0IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2Vjb25kYXJ5KTsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICBhbmltYXRpb246IHB1bHNlIDJzIGluZmluaXRlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuaW1wYWN0LXN0YXRzIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7CiAgICAgICAgICAgIGdhcDogMS41cmVtOwogICAgICAgICAgICBtYXJnaW46IDNyZW0gMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnN0YXQtY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWxpZ2h0KTsKICAgICAgICAgICAgcGFkZGluZzogMS41cmVtOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAzcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5zdGF0LW51bWJlciB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeSk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnN0YXQtbGFiZWwgewogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1kYXJrKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLm1pc3Npb24tc3RhdGVtZW50IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeSk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgcGFkZGluZzogM3JlbSAycmVtOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbjogMnJlbSAwOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgICAgICBoMSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuMnJlbTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaDIgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5jcnlwdG8tb3B0aW9ucyB7CiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8c2NyaXB0PgogIHZhciBfcGFxID0gd2luZG93Ll9wYXEgPSB3aW5kb3cuX3BhcSB8fCBbXTsKICAvKiB0cmFja2VyIG1ldGhvZHMgbGlrZSAic2V0Q3VzdG9tRGltZW5zaW9uIiBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSAidHJhY2tQYWdlVmlldyIgKi8KICBfcGFxLnB1c2goWyd0cmFja1BhZ2VWaWV3J10pOwogIF9wYXEucHVzaChbJ2VuYWJsZUxpbmtUcmFja2luZyddKTsKICAoZnVuY3Rpb24oKSB7CiAgICB2YXIgdT0iaHR0cHM6Ly9kaW9yLm1hdG9tby5jbG91ZC8iOwogICAgX3BhcS5wdXNoKFsnc2V0VHJhY2tlclVybCcsIHUrJ21hdG9tby5waHAnXSk7CiAgICBfcGFxLnB1c2goWydzZXRTaXRlSWQnLCAnMyddKTsKICAgIHZhciBkPWRvY3VtZW50LCBnPWQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHM9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07CiAgICBnLmFzeW5jPXRydWU7IGcuc3JjPSdodHRwczovL2Nkbi5tYXRvbW8uY2xvdWQvZGlvci5tYXRvbW8uY2xvdWQvbWF0b21vLmpzJzsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnLHMpOwogIH0pKCk7Cjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5PgogICAgPHNjcmlwdCBzcmM9Ii4vbWFpbi5qcyI+PC9zY3JpcHQ+CiAgICA8ZGl2IGNsYXNzPSJ1cmdlbnQtYWxlcnQiPgogICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtZXhjbGFtYXRpb24tY2lyY2xlIj48L2k+IFVSR0VOVDogR2F6YSBmYWNlcyBjYXRhc3Ryb3BoaWMgaHVuZ2VyLiBZb3VyIGRvbmF0aW9uIGNhbiBzYXZlIGxpdmVzIHRvZGF5LgogICAgPC9kaXY+CiAgICAKICAgIDxoZWFkZXI+CiAgICAgICAgPGRpdiBjbGFzcz0icGFsZXN0aW5lLWZsYWciPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxoMT5HbG9iYWwgU3VtdWQgRmxvdGlsbGE8L2gxPgogICAgICAgICAgICA8cCBjbGFzcz0ic3VidGl0bGUiPkh1bWFuaXRhcmlhbiBBaWQgZm9yIEdhemE8L3A+CiAgICAgICAgICAgIDxwPkpvaW4gb3VyIG1pc3Npb24gdG8gZGVsaXZlciBlc3NlbnRpYWwgZm9vZCBhbmQgbWVkaWNhbCBzdXBwbGllcyB0byB0aGUgcGVvcGxlIG9mIEdhemE8L3A+CiAgICAgICAgICAgIDxhIGhyZWY9IiNkb25hdGUiIGNsYXNzPSJidG4gYnRuLWRvbmF0ZSI+RG9uYXRlIE5vdzwvYT4KICAgICAgICA8L2Rpdj4KICAgIDwvaGVhZGVyPgogICAgCiAgICA8c2VjdGlvbiBjbGFzcz0iY3Jpc2lzLXNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxoMj5UaGUgSHVtYW5pdGFyaWFuIENyaXNpcyBpbiBHYXphPC9oMj4KICAgICAgICAgICAgPHA+VGhlIHBlb3BsZSBvZiBHYXphIGFyZSBmYWNpbmcgdW5wcmVjZWRlbnRlZCBsZXZlbHMgb2YgZm9vZCBpbnNlY3VyaXR5LCB3aXRoIG92ZXIgMiBtaWxsaW9uIHBlb3BsZSBhdCByaXNrIG9mIHN0YXJ2YXRpb24uIFRoZSBibG9ja2FkZSBoYXMgc2V2ZXJlbHkgcmVzdHJpY3RlZCBhY2Nlc3MgdG8gZXNzZW50aWFsIHN1cHBsaWVzLCBpbmNsdWRpbmcgZm9vZCwgbWVkaWNpbmUsIGFuZCBjbGVhbiB3YXRlci48L3A+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbXBhY3Qtc3RhdHMiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LW51bWJlciI+Mi4yTTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPlBlb3BsZSBpbiBuZWVkIG9mIGh1bWFuaXRhcmlhbiBhaWQ8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LW51bWJlciI+OTAlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+T2YgcG9wdWxhdGlvbiBkaXNwbGFjZWQ8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LW51bWJlciI+NTAwSzwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPkZhY2luZyBjYXRhc3Ryb3BoaWMgaHVuZ2VyPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1udW1iZXIiPjcwJTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPk9mIGhlYWx0aCBmYWNpbGl0aWVzIGRhbWFnZWQgb3IgZGVzdHJveWVkPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcmlzaXMtZ3JpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcmlzaXMtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvYy9jMy9UcmFkaXRpb25hbF9Gb29kX3N0YWxsLV9HYXphX3dhcl8yMy0yNS5qcGcvNjQwcHgtVHJhZGl0aW9uYWxfRm9vZF9zdGFsbC1fR2F6YV93YXJfMjMtMjUuanBnIiBhbHQ9Ikh1bWFuaXRhcmlhbiBhaWQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNyaXNpcy1jYXJkLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+Rm9vZCBJbnNlY3VyaXR5PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+T3ZlciA4MCUgb2YgR2F6YSdzIHBvcHVsYXRpb24gcmVsaWVzIG9uIGh1bWFuaXRhcmlhbiBhc3Npc3RhbmNlIGZvciBiYXNpYyBmb29kIG5lZWRzLiBNYWxudXRyaXRpb24gcmF0ZXMsIGVzcGVjaWFsbHkgYW1vbmcgY2hpbGRyZW4sIGFyZSByaXNpbmcgYXQgYW4gYWxhcm1pbmcgcmF0ZS48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3Jpc2lzLWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iLzIvMmQvRGFtYWdlX2luX0dhemFfU3RyaXBfZHVyaW5nX3RoZV9PY3RvYmVyXzIwMjNfLV80NS5qcGcvNjQwcHgtRGFtYWdlX2luX0dhemFfU3RyaXBfZHVyaW5nX3RoZV9PY3RvYmVyXzIwMjNfLV80NS5qcGciIGFsdD0iTWVkaWNhbCBzdXBwbGllcyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3Jpc2lzLWNhcmQtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5NZWRpY2FsIFNob3J0YWdlczwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPkhvc3BpdGFscyBpbiBHYXphIGFyZSBvcGVyYXRpbmcgd2l0aCBsaW1pdGVkIHN1cHBsaWVzLCBlbGVjdHJpY2l0eSwgYW5kIGVxdWlwbWVudC4gQ3JpdGljYWwgbWVkaWNpbmVzIGFuZCBtZWRpY2FsIGVxdWlwbWVudCBhcmUgaW4gZGVzcGVyYXRlbHkgc2hvcnQgc3VwcGx5LjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcmlzaXMtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvOC84MS9EaXNwbGFjZWRfY2hpbGRyZW5fc2l0X29uX3RoZV9ydWJibGVfb2ZfdGhlaXJfZGVzdHJveWVkX2hvbWVfaW5fTnVzZWlyYXRfY2FtcCUyQ19HYXphX1N0cmlwLmpwZy82NDBweC1EaXNwbGFjZWRfY2hpbGRyZW5fc2l0X29uX3RoZV9ydWJibGVfb2ZfdGhlaXJfZGVzdHJveWVkX2hvbWVfaW5fTnVzZWlyYXRfY2FtcCUyQ19HYXphX1N0cmlwLmpwZyIgYWx0PSJDaGlsZHJlbiBpbiBuZWVkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcmlzaXMtY2FyZC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPkNoaWxkcmVuIGF0IFJpc2s8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8cD5DaGlsZHJlbiBtYWtlIHVwIG5lYXJseSBoYWxmIG9mIEdhemEncyBwb3B1bGF0aW9uIGFuZCBhcmUgdGhlIG1vc3QgdnVsbmVyYWJsZSB0byBtYWxudXRyaXRpb24gYW5kIGRpc2Vhc2UuIFRoZWlyIGZ1dHVyZSBkZXBlbmRzIG9uIGltbWVkaWF0ZSBodW1hbml0YXJpYW4gaW50ZXJ2ZW50aW9uLjwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIAogICAgPHNlY3Rpb24gaWQ9ImRvbmF0ZSIgY2xhc3M9ImRvbmF0aW9uLXNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxoMiBhbGlnbj0iY2VudGVyIj5TdXBwb3J0IE91ciBNaXNzaW9uPC9oMj4gCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pc3Npb24tc3RhdGVtZW50Ij4KICAgICAgICAgICAgICAgIDxoMz5PdXIgQ29tbWl0bWVudDwvaDM+CiAgICAgICAgICAgICAgICA8cD4xMDAlIG9mIHlvdXIgZG9uYXRpb24gZ29lcyBkaXJlY3RseSB0byBodW1hbml0YXJpYW4gYWlkLiBXZSBtYWludGFpbiBjb21wbGV0ZSB0cmFuc3BhcmVuY3kgYW5kIHdpbGwgcHJvdmlkZSByZWd1bGFyIHVwZGF0ZXMgb24gaG93IHlvdXIgY29udHJpYnV0aW9ucyBhcmUgbWFraW5nIGFuIGltcGFjdC48L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPGgzIGFsaWduPSJjZW50ZXIiPjxhIGhyZWY9IiNkb25hdGUiIGNsYXNzPSJidG4gYnRuLWRvbmF0ZSBjb25uZWN0LXdhbGxldCI+Q29ubmVjdCBXYWxsZXQ8L2E+PC9oMz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3J5cHRvLW9wdGlvbnMiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3J5cHRvLWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNyeXB0by1pY29uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvNC80Ni9CaXRjb2luLnN2Zy8yMDQ4cHgtQml0Y29pbi5zdmcucG5nIiBhbHQ9IkJpdGNvaW4iPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMz5CaXRjb2luIChCVEMpPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJxci1jb2RlIiBpZD0iYnRjLXFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBRUiBjb2RlIHdpbGwgYmUgZ2VuZXJhdGVkIGhlcmUgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRkcmVzcy1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZGRyZXNzIiBpZD0iYnRjLWFkZHJlc3MiPmJjMXEycHIzdW42bWpzdGYyZmszc3FocGU3dTUweTduZXprYzR6dm01NzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjb3B5LWJ0biIgZGF0YS1hZGRyZXNzPSJidGMtYWRkcmVzcyI+Q29weTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNyeXB0by1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcnlwdG8taWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iLzcvNzAvRXRoZXJldW1fbG9nby5zdmcvNjQwcHgtRXRoZXJldW1fbG9nby5zdmcucG5nIiBhbHQ9IkV0aGVyZXVtIj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDM+RXRoZXJldW0gLyBCTkIgKEVUSC9CTkIpPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJxci1jb2RlIiBpZD0iZXRoLXFyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBRUiBjb2RlIHdpbGwgYmUgZ2VuZXJhdGVkIGhlcmUgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRkcmVzcy1jb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZGRyZXNzIiBpZD0iZXRoLWFkZHJlc3MiPjB4NTY0ZWI1RjExMkQyMjk5YWFhMjE5MTcyNmQwNDBFZTM5N0FkZjg5ODwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjb3B5LWJ0biIgZGF0YS1hZGRyZXNzPSJldGgtYWRkcmVzcyI+Q29weTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNyeXB0by1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcnlwdG8taWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9lbi9iL2I5L1NvbGFuYV9sb2dvLnBuZyIgYWx0PSJTb2xhbmEiPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMz5Tb2xhbmEgKFNPTCk8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InFyLWNvZGUiIGlkPSJzb2wtcXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFFSIGNvZGUgd2lsbCBiZSBnZW5lcmF0ZWQgaGVyZSAtLT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZGRyZXNzLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkZHJlc3MiIGlkPSJzb2wtYWRkcmVzcyI+Sjk0TDduMXV3WEZ3UUdqUmJrNUdtRzljNUJlTkVOM0w0YnJFYXlNSlU4YXA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY29weS1idG4iIGRhdGEtYWRkcmVzcz0ic29sLWFkZHJlc3MiPkNvcHk8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtaXNzaW9uLXN0YXRlbWVudCI+CiAgICAgICAgICAgICAgICA8cD5UaGUgR2xvYmFsIFN1bXVkIEZsb3RpbGxhIGlzIG9yZ2FuaXppbmcgYSBodW1hbml0YXJpYW4gbWlzc2lvbiB0byBkZWxpdmVyIGVzc2VudGlhbCBzdXBwbGllcyBkaXJlY3RseSB0byB0aGUgcGVvcGxlIG9mIEdhemEuIDxicj5Zb3VyIGNyeXB0b2N1cnJlbmN5IGRvbmF0aW9uIHdpbGwgaGVscCBmdW5kOjwvcD4KICAgICAgICAgICAgICAgIDx1bCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsgbWF4LXdpZHRoOiA1MDBweDsgbWFyZ2luOiAxLjVyZW0gYXV0bzsiPgogICAgICAgICAgICAgICAgICAgIDxsaT5FbWVyZ2VuY3kgZm9vZCBwYWNrYWdlcyBmb3IgZmFtaWxpZXM8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT5NZWRpY2FsIHN1cHBsaWVzIGFuZCBlcXVpcG1lbnQ8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT5DbGVhbiB3YXRlciBwdXJpZmljYXRpb24gc3lzdGVtczwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPkxvZ2lzdGljcyBmb3IgZGVsaXZlcnkgb2YgYWlkPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkV2ZXJ5IGRvbmF0aW9uLCBubyBtYXR0ZXIgdGhlIHNpemUsIG1ha2VzIGEgZGlmZmVyZW5jZS48L3N0cm9uZz48L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0ibG9nb3Mtc2VjdGlvbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5TdXBwb3J0ZWQgYnkgTWFqb3IgSHVtYW5pdGFyaWFuIE9yZ2FuaXphdGlvbnM8L2gyPgogICAgICAgICAgICAgICAgICAgIDxwPk91ciBtaXNzaW9uIGlzIGVuZG9yc2VkIGFuZCBzdXBwb3J0ZWQgYnkgbGVhZGluZyBnbG9iYWwgaHVtYW5pdGFyaWFuIG9yZ2FuaXphdGlvbnM8L3A+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nb3MtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL2UvZWUvUmVkX0Nyb3NzX2ljb24uc3ZnIiBhbHQ9IlJlZCBDcm9zcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2dvLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvZC9kMS9GbGFnX29mX1VOSUNFRi5zdmcvNjQwcHgtRmxhZ19vZl9VTklDRUYuc3ZnLnBuZyIgYWx0PSJVTklDRUYiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2YvZjUvV29ybGRfRm9vZF9Qcm9ncmFtX2xvZ28uc3ZnLzY0MHB4LVdvcmxkX0Zvb2RfUHJvZ3JhbV9sb2dvLnN2Zy5wbmciIGFsdD0iV29ybGQgRm9vZCBQcm9ncmFtbWUiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1pdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iLzIvMjYvV29ybGRfSGVhbHRoX09yZ2FuaXphdGlvbl9Mb2dvLnN2Zy82NDBweC1Xb3JsZF9IZWFsdGhfT3JnYW5pemF0aW9uX0xvZ28uc3ZnLnBuZyIgYWx0PSJXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi8xLzFjL1VuaXRlZF9OYXRpb25zX1JlbGllZl9hbmRfV29ya3NfQWdlbmN5X2Zvcl9QYWxlc3RpbmVfUmVmdWdlZXNfaW5fdGhlX05lYXJfRWFzdF9Mb2dvLnN2Zy82NDBweC1Vbml0ZWRfTmF0aW9uc19SZWxpZWZfYW5kX1dvcmtzX0FnZW5jeV9mb3JfUGFsZXN0aW5lX1JlZnVnZWVzX2luX3RoZV9OZWFyX0Vhc3RfTG9nby5zdmcucG5nIiBhbHQ9IlVOUldBIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ28taXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly91cGxvYWQud2lraW1lZGlhLm9yZy93aWtpcGVkaWEvY29tbW9ucy90aHVtYi84Lzg2L094ZmFtX0ludGVybmF0aW9uYWwuc3ZnLzY0MHB4LU94ZmFtX0ludGVybmF0aW9uYWwuc3ZnLnBuZyIgYWx0PSJPeGZhbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDogM3JlbTsiPgogICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBBbGwgZG9uYXRpb25zIGFyZSBwcm9jZXNzZWQgc2VjdXJlbHkgb24gdGhlIGJsb2NrY2hhaW4uIFdlIHdpbGwgcHJvdmlkZSByZWd1bGFyIHVwZGF0ZXMgb24gaG93IHlvdXIgY29udHJpYnV0aW9ucyBhcmUgbWFraW5nIGFuIGltcGFjdC48L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgCiAgICA8Zm9vdGVyPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxwPkdsb2JhbCBTdW11ZCBGbG90aWxsYSAmY29weTsgMjAyNSB8IEh1bWFuaXRhcmlhbiBBaWQgZm9yIEdhemE8L3A+CiAgICAgICAgICAgIDxwPlRvZ2V0aGVyLCB3ZSBjYW4gbWFrZSBhIGRpZmZlcmVuY2U8L3A+CiAgICAgICAgPC9kaXY+CiAgICA8L2Zvb3Rlcj4KICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcXJjb2RlQDEuNS4wL2J1aWxkL3FyY29kZS5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdD4KICAgICAgICAvLyBHZW5lcmF0ZSBRUiBjb2RlcwogICAgICAgIGZ1bmN0aW9uIGdlbmVyYXRlUVJDb2RlKGVsZW1lbnRJZCwgdGV4dCkgewogICAgICAgICAgICBRUkNvZGUudG9TdHJpbmcodGV4dCwgewogICAgICAgICAgICAgICAgdHlwZTogJ3N2ZycsCiAgICAgICAgICAgICAgICB3aWR0aDogMTgwLAogICAgICAgICAgICAgICAgbWFyZ2luOiAwLAogICAgICAgICAgICAgICAgY29sb3I6IHsKICAgICAgICAgICAgICAgICAgICBkYXJrOiAnIzAwMDAwMCcsCiAgICAgICAgICAgICAgICAgICAgbGlnaHQ6ICcjRkZGRkZGJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCBmdW5jdGlvbihlcnIsIHN2ZykgewogICAgICAgICAgICAgICAgaWYgKGVycikgdGhyb3cgZXJyOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKS5pbm5lckhUTUwgPSBzdmc7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBHZW5lcmF0ZSBRUiBjb2RlcyBmb3IgZWFjaCBjcnlwdG9jdXJyZW5jeQogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgZ2VuZXJhdGVRUkNvZGUoJ2J0Yy1xcicsICdiaXRjb2luOmJjMXF3emczOXZjd3QwZWhqdmx1YzI1amY2c2t4ZTh2bXo2ZzQ1eDNxZCcpOwogICAgICAgICAgICBnZW5lcmF0ZVFSQ29kZSgnZXRoLXFyJywgJ2V0aGVyZXVtOjB4NTE2Zjc2REMxMDRGOTIwQTVkOTU1OWY4QjYyNzZBZTVFMUYyNzQ1ZScpOwogICAgICAgICAgICBnZW5lcmF0ZVFSQ29kZSgnc29sLXFyJywgJ3NvbGFuYTo1dnN6eUV1SFBVWGNWb0d2eTVUZnMxQVRob3FhTGpOSnF4aVBza0NWTkpFRScpOwogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIC8vIENvcHkgYWRkcmVzcyBmdW5jdGlvbmFsaXR5CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNvcHktYnRuJykuZm9yRWFjaChidXR0b24gPT4gewogICAgICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NJZCA9IHRoaXMuZ2V0QXR0cmlidXRlKCdkYXRhLWFkZHJlc3MnKTsKICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWRkcmVzc0lkKTsKICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSBhZGRyZXNzRWxlbWVudC50ZXh0Q29udGVudDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gQ29weSB0byBjbGlwYm9hcmQKICAgICAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGFkZHJlc3MpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgICAgIC8vIFZpc3VhbCBmZWVkYmFjawogICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGV4dCA9IHRoaXMudGV4dENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICdDb3BpZWQhJzsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoJ2NvcGllZCcpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gb3JpZ2luYWxUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5yZW1vdmUoJ2NvcGllZCcpOwogICAgICAgICAgICAgICAgICAgIH0sIDIwMDApOwogICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gY29weTogJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayBmb3Igb2xkZXIgYnJvd3NlcnMKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7CiAgICAgICAgICAgICAgICAgICAgdGV4dEFyZWEudmFsdWUgPSBhZGRyZXNzOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dEFyZWEpOwogICAgICAgICAgICAgICAgICAgIHRleHRBcmVhLnNlbGVjdCgpOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXh0QXJlYSk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gVmlzdWFsIGZlZWRiYWNrCiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxUZXh0ID0gdGhpcy50ZXh0Q29udGVudDsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gJ0NvcGllZCEnOwogICAgICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NMaXN0LmFkZCgnY29waWVkJyk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dENvbnRlbnQgPSBvcmlnaW5hbFRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NMaXN0LnJlbW92ZSgnY29waWVkJyk7CiAgICAgICAgICAgICAgICAgICAgfSwgMjAwMCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgLy8gU21vb3RoIHNjcm9sbGluZyBmb3IgYW5jaG9yIGxpbmtzCiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmXj0iIyJdJykuZm9yRWFjaChhbmNob3IgPT4gewogICAgICAgICAgICBhbmNob3IuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRJZCA9IHRoaXMuZ2V0QXR0cmlidXRlKCdocmVmJyk7CiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0SWQgPT09ICcjJykgcmV0dXJuOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXRJZCk7CiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0RWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogdGFyZ2V0RWxlbWVudC5vZmZzZXRUb3AgLSAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg=="}},"time_used":649,"timings":{"blocked":-1,"dns":3,"connect":64,"send":0,"wait":582,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Damage_in_Gaza_Strip_during_the_October_2023_-_45.jpg/640px-Damage_in_Gaza_Strip_during_the_October_2023_-_45.jpg","fqdn":"upload.wikimedia.org","domain":"wikimedia.org","tld":"org"},"ip":{"addr":"185.15.59.240","port":443,"asn":14907,"as":"WIKIMEDIA","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.057Z","timestamp":1785113873057,"http_version":"HTTP/2","security_state":"","security_info":null,"request":{"raw":"GET /wikipedia/commons/thumb/2/2d/Damage_in_Gaza_Strip_during_the_October_2023_-_45.jpg/640px-Damage_in_Gaza_Strip_during_the_October_2023_-_45.jpg HTTP/1.1\r\nHost: upload.wikimedia.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-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 400 \r\ndate: Mon, 27 Jul 2026 00:57:56 GMT\r\nserver: Varnish\r\nx-cache: cp3077 int\r\nx-cache-status: int-front\r\nserver-timing: cache;desc=\"int-front\", host;desc=\"cp3077\"\r\nstrict-transport-security: max-age=106384710; includeSubDomains; preload\r\nreport-to: { \"group\": \"wm_nel\", \"max_age\": 604800, \"endpoints\": [{ \"url\": \"https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error\u0026schema_uri=/w3c/reportingapi/network_error/1.0.0\" }] }\r\nnel: { \"report_to\": \"wm_nel\", \"max_age\": 604800, \"failure_fraction\": 0.05, \"success_fraction\": 0.0}\r\nx-client-ip: 195.64.118.152\r\naccess-control-allow-origin: *\r\naccess-control-expose-headers: Age, Date, Content-Length, Content-Range, X-Content-Duration, X-Cache\r\ntiming-allow-origin: *\r\ncontent-type: text/html; charset=utf-8\r\ncontent-length: 2010\r\nx-request-id: 1e4046fb-4ef8-4d6a-b383-5078d54b59ea\r\nx-analytics: \r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"400","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":0,"size_decoded":0,"mime_type":"text/html; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"pulse.walletconnect.org/e?projectId=8ae938963e559bebea09b02aeec915c6\u0026st=appkit\u0026sv=react-wagmi-1.7.7","fqdn":"pulse.walletconnect.org","domain":"walletconnect.org","tld":"org"},"ip":{"addr":"104.20.34.30","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:58.452Z","timestamp":1785113878452,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"walletconnect.org","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Mon, 08 Jun 2026 22:00:21 GMT","end":"Sun, 06 Sep 2026 23:00:08 GMT"},"fingerprint":{"sha1":"27:B8:7C:0B:CF:77:D5:0D:0A:B3:4F:D7:38:61:AE:D8:E7:63:4F:1F","sha256":"04:00:B5:75:D9:C7:C6:62:04:D2:5B:C1:7C:57:38:72:C8:FE:89:2F:06:E7:FA:3C:F9:B9:B2:F2:92:33:BB:2F"}}},"request":{"raw":"POST /e?projectId=8ae938963e559bebea09b02aeec915c6\u0026st=appkit\u0026sv=react-wagmi-1.7.7 HTTP/1.1\r\nHost: pulse.walletconnect.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\nReferer: http://sahnesirince.com/\r\nContent-Type: text/plain;charset=UTF-8\r\nContent-Length: 1232\r\nOrigin: http://sahnesirince.com\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"POST"},"response":{"raw":"HTTP/2 202 \r\ndate: Mon, 27 Jul 2026 00:58:05 GMT\r\ncontent-type: text/plain;charset=UTF-8\r\ncontent-length: 0\r\naccess-control-allow-origin: *\r\nserver: cloudflare\r\ncf-ray: a217b1944e7f56b7-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"202","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":0,"size_decoded":2079,"mime_type":"text/plain; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":""}},"time_used":6703,"timings":{"blocked":0,"dns":3,"connect":2,"send":0,"wait":308,"receive":0,"ssl":6390},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:58.012Z","timestamp":1785113878012,"http_version":"HTTP/1.1","security_state":"insecure","security_info":null,"request":{"raw":"HEAD / HTTP/1.1\r\nHost: sahnesirince.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nReferer: http://sahnesirince.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"HEAD"},"response":{"raw":"HTTP/1.1 200 OK\r\nConnection: Keep-Alive\r\nKeep-Alive: timeout=5, max=100\r\nX-Powered-By: PHP/8.0.30\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Mon, 27 Jul 2026 00:57:58 GMT\r\nServer: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"PHP:8.0.30","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]}],"data":{"size":0,"size_decoded":197,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":""}},"time_used":285,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":285,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null}],"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:58.622Z","timestamp":1785113878622,"http_version":"HTTP/1.1","security_state":"insecure","security_info":null,"request":{"raw":"HEAD / HTTP/1.1\r\nHost: sahnesirince.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nReferer: http://sahnesirince.com/\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nPriority: u=4\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"HEAD"},"response":{"raw":"HTTP/1.1 200 OK\r\nConnection: Keep-Alive\r\nKeep-Alive: timeout=5, max=100\r\nX-Powered-By: PHP/8.0.30\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Mon, 27 Jul 2026 00:57:58 GMT\r\nServer: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"PHP:8.0.30","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]}],"data":{"size":0,"size_decoded":197,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":""}},"time_used":364,"timings":{"blocked":77,"dns":0,"connect":0,"send":0,"wait":287,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"sahnesirince.com/","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T00:57:49.199Z","timestamp":1785113869199,"http_version":"","security_state":"insecure","security_info":null,"request":{"raw":"GET / HTTP/1.1\r\nHost: sahnesirince.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\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":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-27T03:50:56.498462Z","times_seen":17555199,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null}],"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/main.js","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"is_navigation_request":false,"resource_type":"script","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:53.040Z","timestamp":1785113873040,"http_version":"HTTP/1.1","security_state":"insecure","security_info":null,"request":{"raw":"GET /main.js HTTP/1.1\r\nHost: sahnesirince.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nConnection: Keep-Alive\r\nKeep-Alive: timeout=5, max=100\r\nCache-Control: public, max-age=604800\r\nExpires: Mon, 03 Aug 2026 00:57:53 GMT\r\nContent-Type: application/javascript\r\nLast-Modified: Wed, 01 Oct 2025 05:48:45 GMT\r\nAccept-Ranges: bytes\r\nContent-Encoding: gzip\r\nVary: Accept-Encoding\r\nContent-Length: 58401\r\nDate: Mon, 27 Jul 2026 00:57:53 GMT\r\nServer: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":271049,"size_decoded":58787,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (65536), with no line terminators","md5":"3b9dbd3c83fc9b835982730923ca46cf","sha1":"84314a3d7c65ae7c5e4e14e2a98a855c4d76f66c","sha256":"ee1b96a4401864bed39e38d02e147e7bc46adc83b547b8a463f1ce07c697317a","sha512":"293a9c1f986cf70855fa22fe4b19df0164da5aae7741f97c1e69aee1d74310749b216f7879474fd819756792e38b808ed5fd3869491aecda16eba8a6c0e87a31","ssdeep":"3072:8bh4BaT7rJmS1pdELgGCbGvy3dg0UME+YcpjztCXeXVtzy:8bhx3rQEGCbGvyNg0nE+YcpjhIeXV5y","tlshash":"38445fdbd54d90048a21cad24da98fdeee04b83f87c33f48a10499aa7c77bdd06d5a17","first_seen":"2026-07-27T00:58:32.34934Z","last_seen":"2026-07-27T00:59:02.761996Z","times_seen":2,"resource_available":true,"data":"RnVuY3Rpb24oIlZFOXdrZiIsInZhciB2N2VCcV9nLGhxRzdKdWwselp4SkVSSixlRk8wWG5NLGJqVTJaZyx4TkpyR3gsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLF9NeEtKcG07ZnVuY3Rpb24gYkRKeFdUKHY3ZUJxX2csaHFHN0p1bCx6WnhKRVJKKXtmb3Ioelp4SkVSSj0weDA7elp4SkVSSjxocUc3SnVsO3paeEpFUkorKyl2N2VCcV9nLnB1c2godjdlQnFfZy5zaGlmdCgpKTtyZXR1cm4gdjdlQnFfZ31jb25zdCBTNHo4QWw9WzB4MCwweDEsMHg4LDB4ZmYsXCJsZW5ndGhcIixcInVuZGVmaW5lZFwiLDB4NjUsMHgzZiwweDYsXCJmcm9tQ29kZVBvaW50XCIsMHg3LDB4YyxcInB1c2hcIixcImFcIiwweDIsXCJlXCIsXCJjXCIsXCJpXCIsXCJnXCIsMHg1YiwweDFmZmYsMHg1OCwweGQsMHhlLDB4NCxcImZcIiwweDMwLDB4NTAsMHg3ZiwweDgwLFwiWlwiLDB4ZGYsITB4MSwweGVmLDB4NmUsMHg2OSwweDksMHgyZSwweDUzLDB4ZWUsMHgxMDAsMHgxMDEsMHgxMDIsMHgxMDMsMHgxMDQsMHgxMDUsMHgxMDgsXCIqJFwiLDB4MTBlLFwiYlwiLDB4MyxcImhcIiwweDUsXCJkXCIsMHgxMTYsMHgxMixcInNcIiwweDExNSwweDExOSwweDExYiwweDExZiwweDExMywweDEyNCwweDEyZSwweDExYywweDExZCwweDExNywweDExOCxcImN5XCIsMHgxMzMsMHgxMjcsMHgxNDMsMHgxM2QsMHgxM2UsMHgxM2YsMHg4OSwweDE0NCwweDkyLFwiU1wiLDB4YTksMHgxNGQsMHgxMjUsMHgxMjYsXCJsc1wiLDB4MTQ1LDB4ZmEsMHgxNmEsMHgxNjgsMHgxNjksMHgxNzgsMHgxMjEsMHgxODUsXCJuXCIsMHgxNjIsMHgxOTIsMHgxOWIsMHgxYWIsMHgxMzgsMHgxMWEsXCJ1bVwiLFwidFwiLDB4MWNkLDB4MWQyLDB4ZmMsMHgxZDcsMHgxZTIsMHgxOWUsXCJvL1wiLDB4MWU4LDB4MTI5LDB4ODIsMHhjNCwweDFmYywweDFlMCwweDIwNSwhMHgwLFwiaWRcIiwweDU2LDB4YzAsMHg0MSwweDQ4LDB4N2QsMHgzMywweDIyZixcIjZcIiwweDIyOCwweDljLDB4YjcsMHgxMywweDMyLDB4ZjgsMHhkOCwweGEyLDB4MzcsMHg2ZCwweDVlLDB4MzUsMHgyNTksMHg3MCwweDk4LDB4OGUsMHgxYiwweDNiLG51bGwsMHhhLDB4MjY5LDB4MjcxLDB4Mjc1LDB4MTYsMHhkMywweGI2LFwiaXBcIiwweDI3YyxcIjpcIiwweDI3ZiwweDI4MCwweDI4MywweDczLDB4OWQsMHhjNSwweDhjLDB4NjgsMHgzOSwweDg2LDB4MjBhLDB4MjBiLDB4MjliLDB4MmFhLFwiMVwiLFwiNVwiLDB4MmE5LDB4MmI3LDB4MmI4LDB4MmJiLDB4MmJjLDB4MmI5LDB4MmJkLDB4MmM1LDB4MmJmLDB4MmJlLDB4NzIsMHgyMSwweGI4LDB4NTcsMHg3OCwweDYzLDB4NmEsXCJ0b1wiLFwiclwiLDB4ZDIsMHg0MywweDllLDB4MmU4LFwidlwiLDB4MmJhLDB4ZGUsMHg0YywweGJkLDB4ZiwweGI1LDB4NzQsMHgyZCwweDJhNCwweGFjLDB4NmYsMHhmMywweDMxNiwweGRjLDB4ZjUsMHgzMmUsMHgzMmEsMHhmOSwweGUzLDB4MzJiLDB4MzJjLDB4MzJkLDB4YzIsMHhjNywweDNlOCwweGJjMTkxMzgwLDB4MzQ4LDB4MzQ3LDB4MzRmLDB4MzViLDB4MzVjLDB4MzVkLDB4MzVlLFwidGFcIiwweDM1NiwweDM1NywweDM1OSwweDM1YSwweDM1ZiwweDM2MSxcIm9uXCIsMHgzNjIsMHgzNzIsMHgzNjMsMHgzNjQsMHgzN2EsMHgzN2IsMHgzN2MsMHgzOGEsMHg0YiwweDM5OSwweDM5YSwweDM5YiwweDNiMSwweDNiNCwweDNhNCwweDNhNywweDM5OCwweDM5YywweDM5ZCwweDM5ZiwweDNiMiwweDNhMCwweDNhMSwweGQwLDB4YWUsMHgyYSwweDNjNCwweDNjNSwweDNjNiwweDNjNywweDkzLDB4YWQsMHhhNiwweDNkOCwweDNkOSxcImVyXCIsMHgzZGYsMHgzZDMsMHgzZTcsMHgzZWIsMHgzZjAsMHgzZjEsMHgzZjIsMHgzZjMsMHgzZWMsMHg0NiwweDQwZCwweDQxMSwweDQxMiwweDQxMywweDQxOCwweDNlYSwweDNlZiwweDQxZSwweDQxZiwweDQyMCxcIjJcIiwweDQyZSwweDQyYywweGM2LDB4MWQsMHhkOSwweDQzNiwweDQzNywweDQzOCwweGUyLDB4YiwweDYxLDB4NDM5LDB4NDQwLDB4NDQ0LDB4NDNkLFwiMHhcIiwweDQ0ZCwweDEwLDB4NDUxLDB4NDU2LFwiZ3NcIiwweDQ1YSwweDQ1YiwweDQ1YywweDQ1ZCwweDQ1ZSwweDQ1ZiwweDQ2MCwweDQ2MywweGIwLDB4NDcwLDB4NDcxLDB4NDcyLDB4NDc3LDB4M2Q0LDB4NDg3LDB4NDg4LDB4NDUsMHg2MixcInhcIiwweDQ5YywweDQ4ZSwweDQ5MywweDQ5NCwweDQ5NSwweDQ5NiwweDQ5NywweDQ5OCwweDQ5OSwweDQ3ZSwweDQ4MCwweDRjMSwweGZhMSwweDQ4YywweDQ4ZCwweGZkLDB4NjQsMHg0ZDUsMHg0ZDIsMHg0ZDMsMHg0YSwweDQ4NixcImVzXCIsMHg0YmUsMHg0ZGMsMHg0YzcsMHg0Y2UsMHg0ZGQsMHg0ZTAsMHgyNDksMHhjYSwweDNkMiwweDRlNiwweDRlYiwweDRlNCwweGVjLDB4NjcsMHg0ZjMsMHg0ZjQsMHg0ZjYsMHg0ZmQsMHg0ZmUsMHg1MDAsMHg1MDMsMHg1MDQsMHg1MDUsXCJWXCIsMHg0ZjIsMHg0ZmYsMHg1MDEsMHg1MDIsMHg0ZjUsMHg0ZjcsMHg1MGEsMHg1MGMsMHg1MTMsMHgzOCwweDUxYiwweDIwMCwweDZjLFwibFwiLDB4NTE0LDB4YTAsMHg1MjYsMHgzZmYsMHg1MjcsMHgxZiwweGUwLDB4ZjAsMHg1MjUsMHhiYiwweDIwLDB4MTgsMHgxOSwweDQwLDB4ZmZmZiwweDUyOCwweDQyYSwweDUzMCwweDUzMSwweDRkNywweDUzMywweDUyZiwweDRiZiwweDIyNSwweDUzMiwweDRkNCwweDRkNixcImtcIiwweDUzYiwweDRmMSwweDU0NSwweDU0MywweDU0NiwweDQ4MywweDU0NCwweDU0MSwweDRlZCwweDUzNCwweDRjOSwweDRjYSwweDU1OSxcIm1cIiwweDUzZiwweDU1ZCwweDU0MiwweDU1NywweDU1OCwweDU1YSwweDU1YywweDU1ZSwweDU1ZixcIi9cIiwweDU2MCwweDU2MSwweDU2NCwweDU2NSwweDU2ZiwweDU3MCxcIm9cIiwweDM2MzYzNjM2LDB4NWM1YzVjNWMsdm9pZCAweDAsMHg1YywweDJiLDB4NmIsMHhkODAwLDB4ZGJmZiwweGRjMDAsMHhkZmZmLDB4MTAwMDAsMHg1NDgsMHg3ZmYsMHgxZmZmZmYsMHgxMSwweDFjLDB4MjIsMHgyNywweDI5LDB4M2QsMHg3OSwweDQyOGEyZjk4LDB4NzEzNzQ0OTEsMHg0YTNmMDQzMSwweDE2NGEyNDViLDB4Mzk1NmMyNWIsMHg1OWYxMTFmMSwweDZkYzA3ZDVjLDB4NTRlM2ExMmIsMHgyN2Y4NTU2OCwweDEyODM1YjAxLDB4MjQzMTg1YmUsMHg1NTBjN2RjMywweDcyYmU1ZDc0LDB4N2YyMTRlMDIsMHg2NDIzZjk1OSwweDNlNjQwZThjLDB4MWI2NDk2M2YsMHgxMDQxYjg3YSwweGZjMTlkYzYsMHgyNDBjYTFjYywweDJkZTkyYzZmLDB4NGE3NDg0YWEsMHg1Y2IwYTlkYywweDc2Zjk4OGRhLDB4NjdjMWFlYWUsMHg1N2NlMzk5MywweDRmZmNkODM4LDB4NDBhNjgwMzksMHgzOTFmZjQwZCwweDJhNTg2ZWI5LDB4NmNhNjM1MSwweDE0MjkyOTY3LDB4MjdiNzBhODUsMHgyZTFiMjEzOCwweDRkMmM2ZGZjLDB4NTMzODBkMTMsMHg2NTBhNzM1NCwweDc2NmEwYWJiLDB4N2UzZDM2ZDIsMHg2ZDhkZDM3YiwweDVkNDAxNzVmLDB4NTdlNTk5YjUsMHgzZGI0NzQ5MCwweDM4OTNhZTVkLDB4MmU2ZDE3ZTcsMHgyOTY2ZjlkYywweGJmMWNhN2IsMHgxMDZhYTA3MCwweDE5YTRjMTE2LDB4MWUzNzZjMDgsMHgyNzQ4Nzc0YywweDM0YjBiY2I1LDB4MzkxYzBjYjMsMHg0ZWQ4YWE0YSwweDViOWNjYTRmLDB4NjgyZTZmZjMsMHg3NDhmODJlZSwweDc4YTU2MzZmLDB4N2IzNzg3ZWMsMHg3MzM4ZmRmOCwweDZmNDEwMDA2LDB4NWJhZjkzMTUsMHg0MTA2NWMwOSwweDM5OGU4NzBlLDB4NmEwOWU2NjcsMHg0NDk4NTE3YiwweDNjNmVmMzcyLDB4NWFiMDBhYzYsMHg1MTBlNTI3ZiwweDY0ZmE5Nzc0LDB4MWY4M2Q5YWIsMHg1YmUwY2QxOSwweDRkMCwweDRkZV07Y202ajdtcyhMYkRVQXYpO2Z1bmN0aW9uIGNtNmo3bXModjdlQnFfZyxocUc3SnVsPVM0ejhBbFsweDFdKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodjdlQnFfZyxTNHo4QWxbMHg0XSx7dmFsdWU6aHFHN0p1bCxjb25maWd1cmFibGU6UzR6OEFsWzB4MjBdfSk7cmV0dXJuIHY3ZUJxX2d9ZnVuY3Rpb24gRTZfS1JaKHY3ZUJxX2cpe3ZhciBocUc3SnVsLHpaeEpFUko7ZnVuY3Rpb24qZUZPMFhuTSh6WnhKRVJKLGVGTzBYbk0sYmpVMlpnLHhOSnJHeD17VE1FQVNSejp7fX0pe3doaWxlKHpaeEpFUkorZUZPMFhuTStialUyWmchPT0tMHhjYyl3aXRoKHhOSnJHeC5JdE5SSl98fHhOSnJHeClzd2l0Y2goelp4SkVSSitlRk8wWG5NK2JqVTJaZyl7Y2FzZSBlRk8wWG5NLTB4MWM6Y2FzZS0weDYzOmNhc2UgMHgxNDpCVU9WTGxpKEhCTDBQSFQucHVzaCgoWlNzdVdvfGxiOXN2amY8PGg0WGpXZCkmUzR6OEFsW2VGTzBYbk0rMHhkM10pLHhOSnJHeC5JdE5SSl89eE5Kckd4LlRNRUFTUnoselp4SkVSSis9LTB4YjYsZUZPMFhuTSs9MHgyMmEsYmpVMlpnKz0weDRjKTticmVhaztjYXNlIGVGTzBYbk0tMHgyOkJVT1ZMbGkoW3hOSnJHeC5UTUVBU1J6LlJnSXg2eWwseE5Kckd4LlRNRUFTUnouTXNuTnVaQyx4TkpyR3guVE1FQVNSei5mcUN2OXdCXT1bMHhmNCwtMHgzOSwtMHgyY10seE5Kckd4Lkl0TlJKXz14TkpyR3guV1RHY2FVUCx6WnhKRVJKKz0tMHgxOGIsZUZPMFhuTSs9MHhmZCxialUyWmcrPTB4ZmUpO2JyZWFrO2Nhc2UgMHg1NTpjYXNlLTB4ZmE6Y2FzZSAweDE1OkJVT1ZMbGkoeE5Kckd4Lkl0TlJKXz14TkpyR3guS2d5cV8zVSx6WnhKRVJKKz0tMHhhOCxlRk8wWG5NKz0weGZkLGJqVTJaZys9MHhmZSk7YnJlYWs7ZGVmYXVsdDpCVU9WTGxpKHhOSnJHeC5UTUVBU1J6LlpTc3VXbz1TNHo4QWxbelp4SkVSSistMHgxNjRdLHhOSnJHeC5UTUVBU1J6Lmg0WGpXZD1TNHo4QWxbMHgwXSx4TkpyR3guVE1FQVNSei5sYjlzdmpmPS1TNHo4QWxbZUZPMFhuTSsweGM0XSk7Zm9yKHhOSnJHeC5UTUVBU1J6LnNkUzdiTD1TNHo4QWxbMHgwXTtzZFM3Ykw8dHhTWXloO3NkUzdiTCsrKXt4TkpyR3guVE1FQVNSei5yWnlOTzViPVNFSjRudW4uaW5kZXhPZihGT2xyaW9wW3NkUzdiTF0pO2lmKHJaeU5PNWI9PT0tUzR6OEFsW3paeEpFUkorLTB4MTYzXSljb250aW51ZTtpZihsYjlzdmpmPFM0ejhBbFsweDBdKXtsYjlzdmpmPXJaeU5PNWJ9ZWxzZXtCVU9WTGxpKGxiOXN2amYrPXJaeU5PNWIqUzR6OEFsWzB4MTNdLFpTc3VXb3w9bGI5c3ZqZjw8aDRYaldkLGg0WGpXZCs9KGxiOXN2amYmUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsW3paeEpFUkorLTB4MTRlXTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoSEJMMFBIVC5wdXNoKFpTc3VXbyZTNHo4QWxbMHgzXSksWlNzdVdvPj49UzR6OEFsWzB4Ml0saDRYaldkLT1TNHo4QWxbelp4SkVSSistMHgxNjJdKX13aGlsZShoNFhqV2Q+UzR6OEFsWzB4YV0pO2xiOXN2amY9LVM0ejhBbFsweDFdfX1pZihsYjlzdmpmPi1TNHo4QWxbZUZPMFhuTSsweGM0XSl7QlVPVkxsaSh4TkpyR3guSXROUkpfPXhOSnJHeC5UTUVBU1J6LHpaeEpFUkorPS0weDE2MyxialUyWmcrPTB4MTI0KTticmVha31lbHNle0JVT1ZMbGkoeE5Kckd4Lkl0TlJKXz14TkpyR3guVE1FQVNSeix6WnhKRVJKKz0tMHgxNjMsZUZPMFhuTSs9MHgyMWQsYmpVMlpnKz0weDFjKTticmVha31jYXNlIHpaeEpFUkotMHgyMzpjYXNlIDB4YmY6cmV0dXJuIGhxRzdKdWw9ITB4MCxHZURTN2ZBKEhCTDBQSFQpO2Nhc2UgMHhkYjpjYXNlIHpaeEpFUkotIC0weGQzOmNhc2UtMHg1OnJldHVybiBocUc3SnVsPSEweDAsR2VEUzdmQShIQkwwUEhUKTtjYXNlIDB4NTk6Y2FzZSAweGEzOkJVT1ZMbGkoW3hOSnJHeC5UTUVBU1J6LlJnSXg2eWwseE5Kckd4LlRNRUFTUnouTXNuTnVaQyx4TkpyR3guVE1FQVNSei5mcUN2OXdCXT1bMHhiNSwtMHhlZCwtMHg2XSxUTUVBU1J6LlNFSjRudW49XCJ4TUFTeVYrWzVPam18PHc7SSQ0cjFeTjdwKX1jMj4qS1QlSEZYOkAoekdkaTkmaFA2YWdEbnFvc35FM2V2dHViWkJRXFxcIkpDUkxdIVksZi5VYFdfL3trI2w/ODA9XCIsVE1FQVNSei5GT2xyaW9wPVwiXCIrKHY3ZUJxX2d8fFwiXCIpLFRNRUFTUnoudHhTWXloPVRNRUFTUnouRk9scmlvcC5sZW5ndGgsVE1FQVNSei5IQkwwUEhUPVtdLHhOSnJHeC5JdE5SSl89eE5Kckd4LlRNRUFTUnoselp4SkVSSis9MHgyMWUsZUZPMFhuTSs9LTB4MWFiLGJqVTJaZys9LTB4Y2UpO2JyZWFrO2Nhc2UtMHg2MjpjYXNlIDB4ODg6Y2FzZS0weDQxOkJVT1ZMbGkoSEJMMFBIVC5wdXNoKChaU3N1V298bGI5c3ZqZjw8aDRYaldkKSZTNHo4QWxbZUZPMFhuTSsweGM2XSkseE5Kckd4Lkl0TlJKXz14TkpyR3guVE1FQVNSeixlRk8wWG5NKz0weDIxZCxialUyWmcrPS0weDEwOCk7YnJlYWs7Y2FzZSB4TkpyR3guVE1FQVNSei5SZ0l4NnlsKzB4YjpjYXNlIDB4ODc6QlVPVkxsaSh4TkpyR3guSXROUkpfPXhOSnJHeC5RSjZ1RGN4LHpaeEpFUkorPS0weDEwYixlRk8wWG5NKz0weDFiLGJqVTJaZys9MHg4OSk7YnJlYWt9fUJVT1ZMbGkoaHFHN0p1bD12b2lkIDB4MCx6WnhKRVJKPWVGTzBYbk0oLTB4YmEsMHhlOCwweDJiKS5uZXh0KCkudmFsdWUpO2lmKGhxRzdKdWwpe3JldHVybiB6WnhKRVJKfX1mdW5jdGlvbiBtVjBkQWlUKHpaeEpFUkope2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpdPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpdPUU2X0tSWihocUc3SnVsW3paeEpFUkpdKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXX1CVU9WTGxpKHY3ZUJxX2c9e30saHFHN0p1bD1iREp4V1QoW1wiV0hucnsjLzk/eXdcIixcIjprUUVLT0VFZThSXCIsXCIpPXVIOWNQKVIzMVwiLFwiW3ZrR3FaXFxcIlxcXCI2bGtcIixcIi44fDBsfHw7UjFBXCIsXCJAR1xcXCI/LEtOUXsjWFwiLFwiMyYvLlFNdyowfnFjOVwiLFwiMyZYKE40YDU7Ti9KRnR8VVFMRTBEXCIsXCJXc3hjUU8pOVwiLFwiLzosPjkvbEhTXCIsXCI+fCpLSXs9V2QxNTNbZ3RGKTtWalwiLFwiRmlENSlcIixcIlQ+cWpDXSs0NjQqQzJTXCIsXCJaKyUqWmhdcEhvOUNkQTcyeyFMZnh2ZTw3My80I3BGKTZpQGZddi9wMDM8SnhcIixcIktPI2c0VUhsZDFcIixcIllKa1ZWdjspLCRZaF5JaXJeejYhdDNHTVltXCIsXCJUaU4yfkhfTX5CflI1e0oqISs/T19uOHx5PFxcXCJGWjtFN0d1UnNtQ2YzeFFCYk9YK1wiLFwiXm8sPi9APXUrWlsqTzZiPi5EM3FlaHQ+a0UseV92YiRcIixcIkl2RSs2M0Q+YU9WOiN2fkh6WU1VbEw6RjAxLDVvPHgkSGl0alVmbEg2XllXSmNCZCNIQVwiLFwifjZAc3ZxRiwpJE1ddy9RNHBNXCIsXCJTeTI+fHt+aCEzVkF4Y1RkP3hcIixcInxUcCFzaEp8OXdsLjZlQSpmbXNPXCIsXCI7OjZhcWJqKlc0QToyY1o3YjZqRGtlV2xpJHckUy9bQFtNXCIsXCI5RHBVTWsmRlpiXSFgUl56Lm1iT1lFLEMmZUNXc1NcIixcImtEbEt6LF9GOUJAUTxYKiQ1Sk9VKEo7W1ZvNDZXO0s6Tjd+YT9Dd1o2NDZ5TVwiLFwiOCh6K1JdPlAmUUk2Y0B1cCZCXFxcIn0mL15QJGIzeUBhVHBYb0B5OVcyNHZxZF5tfTRIT0xNb3dfUm5JfCxcXFwieFwiLFwiSXoscX5oczxZd2NTW31LZEhPYHlrQzxNVWIrSEtnV2NoSFAycyhIVzgzQlEmSTt6XlRMT1wiLFwicHpEcSUje0VPJFJhcXlcIixcIlxcXCJEVmdlSCU+QDNbUDBwSX06RCZbXCIsXCJld3FbbCNnKkFyMTo3QW0xaER0eVI2RT4wQnBmQH1AOnk7VG9yXCIsXCI7YSRERC9saEA8cVEleWF9WDZTVm4zJkZlflE1KmEhclJEcCozaGJHQXJiXkd5P0hcIixcIk4rMWpGVV0zeF5xbih9fHJqTHMhKG9iYnV+Uk1hXUUyN0xWWUtGOHpoNEJNP3c0SGFTU1wiLFwiXTFjXTMuIUVMPEMhdF87Y09iSyFvOj5QIUJPKmkzdDd4dlJLPEVJWHt8OktFcH1HRXhcIixcIjlCUy40e0pKZn5hQ1VBZigzQlZzYTprbkFyKURBVlwiLFwiTnxpVF5nQk08dyRjUEFNNFd+clkzSF1ofUI/UnM7JSppSmVxKiE+UEFydHl9Omx6SD5nVDw2dUFcIixcIkxCdktrQF5QLG1FW213WzpgSGtWJHVRSkh2TjMjcDtjQ0RkLjdANnpWXCIsXCJqYlUybCMyfDozczJgdyg0NDtlNVhvQG41JD42S0FSOmc2WHNoYkViUGIrSmZjckh+NltudXFETVwiLFwiIUpEakVSbjM2cX1qSDowSX4mfFkkQ3FbJG8+MWtQazJcXFwiJksycHomRkR8c1FhXStcIixcIjNlQWMwZkM8fCRlbXB7ZTdcXFwib2dUZFdUQWZtKltMMz4+aUpjPkdGJXJgfEtdcDZiJDs7cCpXZzJ8WjQyXCIsXCJ7Sy5neFg6Q3hRJiEhNks3bjZWW2kvYU1eMzZmbCkhNEl8TG4oLGpsQW9eZl07TkZneFwiLFwiTTR6KllDNTUxPDtKY2ddfTBCQ3NfXyUsVDROS0xALCk3em9uR2EuPixCQ1FUe04ySUxdYS9fMkFcIixcImZLQVREYklBNE8/TXBMYiphTCZbXFxcIkhdfFkxTStfV3ZGOXVXIWxmSG5ZQi8paS9OMkZpTjI/ZVI0PF4yU01cIixcIixlRllhYXp8VEVaV2ovLClhS2RjPnRpLDR2dE0rXyNHXTdNK2drUnBaO19fcV1+ZG1oU1wiLFwieWIzRDksRkMkYmhmQ3BKOkY2P08sRS5DXjwpJDllZnJEb3glWFVcXFwiPjE8P2IudnxyW1QvRD4hfFh1ZXBcIixcIk4+di44big8eEVlUW19Q3JLRVk+dkRnei5lM1JkQXQ3IXc5akB6PHFtMX5cIixcIk5KZz4kbntDYHF2d0g6KUd2MUFcIixcIm42TVRUb1RZWXclSE92fUd+Sn4rfmhgYE9CRVJxPEJYTzpieWQ6PF9lJDpDeFwiLFwiNDtRVDlSUipTXCIsXCIvK0wyY3sycDZebSpbL0YkKk9MYT5QdE1acVNgfntpKD8rNyUvRWVGSHIwWSldb0hcXFwib01cIixcIm18cE9wUHk0OX52Yi9hTjJvJkpLdVkvei9yIVcweVxcXCJwcU9yLnZ2bFcrXCIsXCJDNjMuSG9bW2hReGNtQVE6MTFpPlJgVjwmNXBmMmVcXFwiKitvV2FCYCxbRTNwXCIsXCJURXMycV1BcFF8P1k0fUIqXFxcIm9qPihQcFk+XkAyTHd8XCIsXCImMW5qSFd6elFFMnU8SUkxck1cIixcIjgycCF7JnV8SzsuWEVdKzpyTVwiLFwiQ0RwT3dFaXJmQlpeemNgY0JKRllbdTM0S1EyW2Q6ZWReNyRVNWxrMzx3SSpkPDlATDFwb2gzPzduT1wiLFwiQ2ReS3RxSW4sNXZ3bnt8fX12WGorQztyRnJnV0w7O3oofTlqd1h4XCIsXCJzdSZbQ3F3Wlc0PmYpVn0+XFxcIiZOIXBMMlpUUVNdZDxIcFwiLFwibkhMZkVoRDd9dUZTZjt0ZGp9amN+UjdDXTFPNn1WTSptOiQqTkUzbG8zPltnKTJHczZMMjp6NHAlNFwiLFwiVEQmS0o2QCpaYjg1Y2dOMitMZz4mfmcza3JTXUJhVFhmeFwiLFwiK2EycyZ+VHB2dTkyP0BpKU9GbnF9ZTFZWnY9XFxcIldQK1wiLFwib0xFVGFEI1tZZVI0ajpVejokUm4sQ0tbW3NjUyhBXCIsXCJkQiksUC8/RVRiXXldOyNHTCYkY19APDxGb3QpYi9yR1g6Yk9cIixcInFvJFQ5Ul48TTtGXTM6O2NONyoyamZ6bmg0KV1YXW0pfTpzeTYoZCp+JE1KS2NUcEpPQVwiLFwiT2h1TzksZnx0NDI8M18hKHN4XCIsXCJxUylvT3UzKnxle1JiM31HXnp5Ll9maipRbzU2T0l3KDBIbzJiKFJ8YXx1IU1cIixcInBCOG9YbytwRHZpallfbnpjOms+SWZgRGkkRW5PWDJYOG19XXd1Y3F4fFwiLFwiSDYsfVY2KUYvO3NuSns2Y34xXltSZ0JEczFcIixcInVLdmp4YD8kZG1XKU1cIixcIm4xd3M8WVRaZHUjWWF5NHovMSNndChsaE9qI1xcXCJ8SVE0NTRkXUpISnxBfCxtOklnMjs6U1wiLFwia3dTPnJlTUM2UVMrXl1XfSZ6UltKWXw1OWUqMW9hWylQRGJ5PFhnbDBCUWhKZSN6Vzo8Syl6Q01cIixcIkdFPXFebktyPlFucDJjTVhpN1NcIixcIjViJG9XRUY+T3MqajlQQVh8TVwiLFwiZHprZ3VIWld6MzJbJFhWKS9CNERgZihFNHZiW11lZUZCREFWZUR4XCIsXCJzU0o+P0VFN0leX1JJNk1wL0RWW0VgK1hCRVpieVN6NGdLJls5RihQZ0VqamtGMUhcIixcImYmNEQ/e1kqTXxcIixcIlBFXFxcIlRfZjYzMVpIU1E6OGRaRGE1XCIsXCJzQkpMZH5CNzs0TFFNXCIsXCJldTUqZH5+aEMzZlhNXCIsXCJOTzBvV0xZM1NFQFFwZWh6UEx8c34oPE18XnZRPWF+Rjx2ay5GdCEsK1wiLFwiLytsW1FYP0dWXCIsXCJadSNnPW58QVwiLFwiaytmVjliRDxaNEBDcmU8KD9SZks3TDBHIXc7MWJ3fkc/NipPdjZnbks7UVEjcGMkN01cIixcIiM2S2EvWD18Z0VAIT1SV3pzN1xcXCIuYUQ5M0l8KSQ8NjlAJUVjPi9AZll2dSE+TVwiLFwiUSsuW3gofVcsQlRmRndXejZvYiEuWXhcIixcIm9EJW99emxIQm9aITFMSCpdNmtnT0NUbHlaSlRnOmxJVkxAS1RXeDRsciRTLl01SzF8U1wiLFwiWEp3cytYV3pcXFwiT3MhfX1IKnJoI0tZdjRsajFrKTNDOUAkYmBPXmZzRkUzIVd1Q1FYUHVpWUNxfW4vO1wiLFwibkU0LEFIRjw7YiZwWmNRJEhPR28pQGxoTFpPXTxWUVhVdSZbaVI7ciwxblErX2NHK3xQMnpKPkUrXCIsXCJrIVVLaDN1Km1leTcxO3FIeXZVMnNxMDdnYmZhMUw9ZF9Ea2cxQCpwL295SmNjeDRmZU5zWmhqWE1PXCIsXCJ7OkBbR0ZDRFsxI3xGfTEyaUJxanFiS2IhJElIOjZpKUFvMj5CNnhcIixcIm0+VCFVQHBuTjx0XCIsXCIrN0kqe0VtcTx3S2NydzdGXTZuW05cIixcIj8mci5DXWR6bzMjUkJ2QTR2ZSFEPnRLRjs7STEoM04yOXo9NXlzZ25hNENeSTt2JFwiLFwiTmhrTHsmaXJuPCRja3tIOjlMK1tmZ0U8VlozXCIsXCJufCRvZkNTRzN1Ml04UzI3ZXdkLEAjZU1cIixcIl5FYUR9e0Q3YU9JSixMRylcIixcIk5PTls5OmViMnUoRl1lMWM5RHV5U1k+Yl9PWFNBKSx9dTpEXSY6eFwiLFwicUp4REFfVXoldiVdLH1tXCIsXCJWRjYhaS9VSFg8eylgdyRjQyRpVGlieTNWWiQ8ZlNgejo6YDImRkI8YnZpWzd3Wyk3QlphLFlIbk1PXCIsXCJQT35vO0Vdbl87Nls5TFB9XkpKTFNzSWgkb08sKHdwRm5PSFRnOjZuRyRyNj55Uzp9Si5nQ2B4XCIsXCJ7SD5qO0BNKWp1M1dRQFpwc28yW1wiLFwiUUQoK05nQk1BYmJtM2FtQG5MO2ZoLng0KzxcIixcImRKJW9fJSlHJHxpUSx9ISkqb09EeiFINDU8dFd+O0ljU2EsZ2hhbyo2RXRuVHssfXJEU11iYHRNXCIsXCJ0N2xLQ18jPnYkOWpyQCg0RUJeW1wiLFwiIWV3ZkAvcG4hd3FuVFBXfVwiLFwiOVlMeX0jeGQ8d0dXckxbS1M0QVwiLFwiVSZGXS5mfDUlUTpLZDoqPiV2fiFkYTw8NkUsLmhSQyk9NlUhP0U7X3lcIixcIlNUaixqQ188fjxcIixcIn5TfFk6V0JEPDR3KklQSnBRS2VxXiMsLGFPczJJTCwoQ2RDWThFX0Y2RWVhcFNcIixcImhPP25pV2o1QXx1YjpJW3I4QnZqYExFPk5aajNMUjVcIixcIk5MaE9ELGRadnc2ZmhST0taelQqY3tRfExaTW83d25IWzREXSYuelgxPHwsS314N316fWMjZXhcIixcIlZFOVl+aFQ0O3ZhXl5JXTppeiZLKCx5UkZyWGpiL0I6Mk1cIixcImZIOyUrdTA+I3JxQ1svTnpUO1guZWB7TVwiLFwiRnZiK1JZUE1TXCIsXCJ1MS81eHMmPE07ay53d2d6eEU3T11Ibio4JEopJF1xY3FEQS5yXCIsXCI4ZU9vJkouYHU1dWU8XUY0OXxoc1F2aFpwM0RDd3dIKltvaGZoYnpuX2JlNDFjc0hYU0Q+YSwlPlNcIixcIntkS244QEZQOXUqJEQvWEBGbyZ5aC55MzAzL21NSSYoUHU+czdVSmhxbyVwUy96SzF2Vlt1NiRQX3xEXCIsXCJTRngqU3NFRnQ0LFQ3fU1LbUVZVFVfMEZWajs6PGtCWG5Ca0xcXFwiNltiW3N0KXNSdlgjMj5zRDNkQVwiLFwibkswRDlKKlk0dnkrd3RNOkY6dTJbYEVidjUxLHEpSipkTHEyfi8xWnlaIU09X05HSStHY1t1ZitqMVwiLFwiRm83IXJMPUhDPG9cIixcIjpKZFR4M15yS1E7YDZTRWReTVwiLFwiZjFPRGdKPl97cnN5OWVwZCNLRytcIixcIiZ9LHFic3duVzteK2B9IUA8YUddKEpYKi9FJWAsQDVcIixcIi5gT0pkKTgkOERVaTA2XCIsXCJNWDpFdlwiLFwiMzJuXU5pKVtcIixcIlkyTlFcIixcInZhVmZqan5cXFwiejd5YltvXCIsXCJbQlREOFwiLFwiNzsxLlVffUFcIixcImxgdCxxc1JZXCIsXCJiWyRDdWR+PnNPK1wiLFwiJl5NJCk1ekhcIixcIjVqfnYlejlEXCIsXCIob306fDV5SFwiLFwiM2t5Ml8uZ0F5QTpKRHJcIixcIktNTFxcXCJ8elpIXCIsXCJubkI/WnBLNGRObGFrPC5zXFxcIi8peX1dWFwiLFwiN2sseD1+YEhcIixcInBCJnx5bC9ETj5sXCIsXCJcXFwib34reGl0SFwiLFwiWj59KyglaURcIixcIiNHPCZ6LkJIXCIsXCJXKil5XV1YXCIsXCJdNTN8Rjd6SFwiLFwiOjovOjRlZkRcIixcImB2OXhYaUJeSVwiLFwiMUloMmZcIixcImYxRysoVzVIXCIsXCJwSTp2XyQ3QkV0emU7ZmtcIixcIjZOUj9RR2tEXCIsXCIqWlZ2Y30uRFwiLFwiPFZYeHdUVjRiXCIsXCIkNWZLT058SFwiLFwiIUk9ZWlHT15hXCIsXCJmOjJXcDF0SFwiLFwiQHMpZiR6aURcIixcIn1WenZOfD4wYVwiLFwifFslfF1GQ0RcIixcInUvdkpUTkdEXCIsXCJrTGQkMXM0RFwiLFwieElVSyNcIixcIi5JISspOTtIXCIsXCJZWnhLTnw9RFwiLFwiVDFMXj82Y3pqXCIsXCJLeHhLRjdYXCIsXCJpLy9nZjZsRFwiLFwiXFxcImovNHFXTEdyXCIsXCIybyxXNE5sRFwiLFwiN05aOnVvR0RcIixcImoxcXZZJD5EXCIsXCJ8NSVXOiVfSFwiLFwiaTp8SjhSXyhqXCIsXCIhazp2eSlDRFwiLFwiYVMseEtKP0diXCIsXCJhYUp8dm8qfUM+XCIsXCJlLjtKIzdbSFwiLFwiNG5oMmIkLjQ6bW9lSFwiLFwiK292SjFHNUhcIixcIjRaZTo9XCIsXCJaOix4M1JlYklcIixcIixaVV5IKXlealwiLFwiYGpASmIkckhcIixcImwuQj9paUVfYlwiLFwidEd6JGtxeUhcIixcImtmXzJeXCIsXCJyb3phSlFdU2FcIixcIlU6UnZAfkttRyxpXCIsXCJLd29lX11pRFwiLFwiOEcuZ3F+cExqXCIsXCJ9VFpqLnBgSHJcIixcInRuTXxUZVhcIixcIlp0VXlgVkAkalwiLFwiI25NfFN+cW1mPlwiLFwiVGdAP1RNVUhcIixcIlxcXCJvfj9JLmhIXCIsXCJKQjthLnB8SFwiLFwiYCZfJG1cXFwidVdhXCIsXCJ2Z2lLcHE9RFwiLFwidlp1Sz1cIixcIm9WOFxcXCJobzlEXCIsXCIoeHVLXyQxNGpcIixcImgkN3Y4Sl5ialwiLFwiU2drXFxcInc6a0dhXCIsXCJbL0g0b1Y6RFwiLFwiM2t5MnwudUF5QTpKRHJcIixcIiVUV15kJUAqSVwiLFwiWmZtZ3Z+bERcIixcIjtlUSt5bFBMSVwiLFwiXm40dl16VjROdFwiLFwibitAb2skV19yXCIsXCJQeFJ2fF18YlVBMFlpK2tcIixcIlIhYmdZNj5tYVwiLFwiMGY+fCZvR0RMWyNbbHVmXlwiLFwiJXBUSiFGYEhcIixcInhnSH54eHxIXCIsXCIsbnYmMjlLRFwiLFwiZ3coZSU1XFxcIkhcIixcIkpJciRjPC9EXCIsXCJkd206ey45QGpcIixcIipvWmoyLkxEXCIsXCJEYTZLUHtMRFwiLFwid3dyMlwiLFwieVpaMCZ9XUhcIixcIiFWWGdPKGREXCIsXCIramN4JlIjXWFcIixcInVualxcXCJ2fkdEXCIsXCJIYT58dW9YXCIsXCJLMW4/QW9KRFwiLFwidXc4dk8/M31DPlwiLFwicU09Zy5pSkdyXCIsXCJqZl8yPT9wSmVpV1FjYVwiLFwiZG9+djpRd2JJXCIsXCI9Ok94QVwiLFwiWXdWJn5SVUhcIixcImZ3Pnwqfkc0alwiLFwiO1ZjS2FWZkRcIixcIlxcXCJacjIscT5EXCIsXCJ0R2F8emB+R2FcIixcIkJmbWdtc1ZMTFttfUhcIixcIiNmUiZ0SkJeSVwiLFwiVTozcjh6MURcIixcIm4sR1xcXCIzSmBIXCIsXCJxeEp8d318N2k+OHhvZm1DXCIsXCJGa1YpZzZsMUBcIixcIkcmNUhxSVpPXCIsXCJ2djIxQ3NBcC5baDVuYEZeYU9cIixcIiV2QXNVUWBwXCIsXCIuTSNjYy9QXCIsXCJgN1t6aEgqYThbYzRwZDhcIixcIkx1TnNeTGdBXCIsXCJWSF9yaFFMb1wiLFwiWDZkUC8rVjRLfS9iSVFeWVwiLFwifUE2Vk9cXFwiVG9cIixcInc2fkJcIixcImpRc1ZpXCIsXCJQXyN4VyU0b1wiLFwiLjJ1cl5AcG9cIixcIl9wM3hcIixcImpZSy84bkVvXCIsXCJqWTkjbTBZb1wiLFwiI0RqW0FxfTZcIixcIkI3P35daHc5IWNKa1NMfUh+NmFAVSRbOXQzXWtiXCIsXCJpXTRQNFwiLFwidXBzVlovRW9cIixcImVEP0E9Z01cIixcIjR+JSNYNFYhXCIsXCJvdlI9XCIsXCJma1goVGVPWz8xOnhxY3VmKTZqXFxcIippMComXFxcInRFMmovS0pmT0RaZUt1LGx0U1tgKz0xTTUpPmZSa09EWmVLdSxsdWxmT0JoNWZQR3Qubm41XCIsXCJeZm9yXV5ZdiRcIixcImhMJUgwZUZZZm5cIixcIlp4NGQsaUshXCIsXCJ6elgodDBQb29UXCIsXCJyJjI9KWFCdXtcIixcIjtHMEUlSyope1wiLFwibkwhMUJxQjsue1wiLFwiKnt1I2tNUXV5XFxcInJjOVwiLFwibkwhMUJxeiFcIixcIlxcXCJmYz1zYXYhXCIsXCJ0VTBkQlwiLFwicFRlR1ZefEF7Rl9sS0t5XCIsXCJLQzU9OmpORnpcIixcImhMeFxcXCJQXCIsXCI0X3wxP1wiLFwiYVI7RFwiLFwiX3YsPVReQTUrSCVcIixcInZXX1tvLnIvXCIsXCJqYSh5ZFwiLFwiR197SHQwKEF7XCIsXCJ6YUh6XCIsXCJHX3tIdDBINSVGVlwiLFwiIWsue1wiLFwiIXovLlBqTiFcIixcIml0eyNINEshXCIsXCIheiwuUFwiLFwiIWt+SHcyTiFcIixcIkc0a0d1WnYhXCIsXCImJiVIWWR0V0ROXCIsXCJBUSVIZjJ2IVwiLFwiZmtYKFRlT1tEXFxcIiphMjQmdnkueyNhVzFvSDErSjF6XCIsXCJkdkIwKW9SUU1uRmJET05VRXh6MEJcIixcImZrWChUZU9bPzErSjA4TlVGPUUxdC5GWXVcXFwiXCIsXCJHX3tIdDAjOVwiLFwiemF4XFxcIlwiLFwiMnNIUElhNWVLRitKOVwiLFwiIXovLlBqPW5tTjxNQzQ8dnU5XCIsXCIha35IdzIudSVuXCIsXCImJiVIWWQ2IVwiLFwiQVElSGYyX241XCIsXCJma1goVGVPWz8xOSkqY29LdmtHNHtgVDElRkJjcmM3cE45XCIsXCJma1goVGVPW0RcXFwiXCIsXCJYUS8uWWRUbkxOXCIsXCJHPTFEWmVLdShOXCIsXCJGPUUxdC5GWXVcXFwiXCIsXCJ6YTBEeVwiLFwidnhKR3FaUiFcIixcInZ4Q3tcIixcImZrWChUZU9bPzFRZHJjYHZ3TE4wOmVmWyxseFwiLFwiZmtYKFRlT1s/MWBNZmM6SUY9RTF0LkVZJUZfXCIsXCJ6YSl6eVwiLFwiekRuLmswOiFcIixcIig5aXIpYVEhXCIsXCJQOV4+UWFCIVwiLFwiKDlLSippSyFcIixcIihVbz5cIixcImZrWChUZU9bIVwiLFwiKns4MGpIbzV7XCIsXCJcXFwienQuQjRDMiFcIixcInBEbi5rMEJ1e1wiLFwiRn1FMHVxQFwiLFwiZHZCMClvKTlcIixcInVRejBMMk4hXCIsXCJ1OHooOmVAXCIsXCJma1goVGVPW0RcXFwiUGMsS0N2d1VHNHVaY1khXCIsXCJ6YTR6KlwiLFwiJlVCMHlpUiFcIixcIk42JUIzXCIsXCJma1goVGVQOVwiLFwibH0kKFtXOTlcIixcIilVQjB5aVIhXCIsXCJHX3tIdDA5OVwiLFwiRExtPVwiLFwiZmtYKFRlT1s/MUFsdEs1ZmxHJUhrMHR4R0ZfXCIsXCJ6YX0/eVwiLFwiNUwkLk1jVSFcIixcIm45RHIoaUshXCIsXCJQJlgoXCIsXCI1TCQuTWNuZXtcIixcIjVMRntcIixcImZrWChUZU9bRFxcXCIqYTI0JnZ5LnsjYVcxb3VcXFwiYmI5OmhwI1UkXCIsXCJsfXYwX2Q4IVwiLFwidUxOMFtXNiFcIixcIkdVWGQ8ZCQ5XCIsXCJ6YT5WNlwiLFwiKExuLmpXMEooflBsKE98VVwiLFwiKExuLmpXQFwiLFwiZmtYKFRlT1tEXFxcIiphMjRzVSNVNGROZGgqRE5dZ3lPKlwiLFwiZmtYKFRlT1s/MS9iPTo8dkY9RTF0LisqMytfXCIsXCJ6YXtIeVwiLFwiOCRGPWdhRkBcIixcIiskJUghY0IhXCIsXCJcXFwiOURyKGlLIVwiLFwiZmtYKFRlT1tEXFxcIiQpbSY5cEc9QGc1YFkyM0ZYbHE6QjpQJmEwaFpwRnVcXFwibEooPnlcIixcImZrWChUZU9bRFxcXCIkKW0mOXBHPXNET3w3VzFuT0VnY2hLd1UvLm0uVnVMbFdiNEtPOlwiLFwiemFkMVBcIixcInF4dVBJYTVlS0YrSjlcIixcInpEYTB1WjVle1wiLFwiU21qPlwiLFwiUkdMLmdhUSFcIixcInE2XFxcImd1NFYhXCIsXCJRTEUwRFwiLFwiZmtYKFRlT1s/MXJgWWc6SXImeyN6V3lcXFwiOGxaTX1nQjpQJmEwaFpwRnVcXFwiXCIsXCJ6YVFIQVwiLFwiR197SHQwbDlcIixcIjtmalxcXCJcIixcIjEkRj1oWnAhXCIsXCIka2N7XCIsXCJma1goVGVPW0RcXFwiKmFtJilJZ1VdSGswWVlYbjxGfWdAfVp4VT1cIixcImx9N1xcXCI3ZFIhXCIsXCJeJGxHYVdVIVwiLFwiemFIemxwQFwiLFwiRC5kciswOiFFOzM7cWM4aFA5XCIsXCJma1goVGVPWz8xOSkqY29LdmsxRHcyXjJdYnJjMGM8dm9QYz1cIixcImx9ZVxcXCI9YHYhXCIsXCJaeHwxOC5+IVwiLFwia0d+I3xXOTlcIixcIi5MJnpcIixcInphI3pecUBcIixcImp5Ly4mZXV7aG4yTXlPOGhqJC5QSWE1ZUtGK0o5XCIsXCJqeWpyRTtAXCIsXCJma1goVGVPWz8xWGxqRFRJQSZ1SG0uUnVMbEJjRCo6SWI8RDB+MEwqaSM0L30hNVwiLFwiZmtYKFRlT1s/MXJgWWc6SXImeyM0ZGJBVit1bGhqTzpcIixcInphKD9NV0BcIixcIlt9eC40JXI1UjNCbH1neVwiLFwiW314LlBcIixcIlt9L3JUXCIsXCJ3VXdHOC46IVwiLFwiY2Z+NHVaUSFcIixcImZrWChUZU9bPzFaZ2M0cjpETHguI01SWSYxW01Caj5cIixcInphbmNHdkBcIixcIjd5QT1ZR04hXCIsXCI3bEpHeG9AXCIsXCI3eVV7XCIsXCJma1goVGVPWz8xUWR7TypVTz1HNEg0d281VEQ7MWNgdmNmJFwiLFwiZmtYKFRlT1s/MTlaV2NzVUlEODBdYVRlNVQ2YTUhXCIsXCJ6YUh6KEtYOVwiLFwiank+KCppSyFcIixcInxwPkh0MEshXCIsXCJ6RGEwdVpCIVwiLFwiZmtYKFRlT1tEXFxcIiphMjRoS2F4JC50MFQpNn5QbEQqOklcIixcImx9OzBdYUshXCIsXCI1ZnwxQWRCIVwiLFwidD1+SChpSyFcIixcIm9QQjAsXCIsXCJ6YVo0KUlYOVwiLFwiOCRGPVBkTiFcIixcIlhVZjVcIixcImZrWChUZU9bRFxcXCIqYTI0aEt3VVgodTQhUS5YT1wiLFwibH09LmswViFcIixcIl8mODBdYUshXCIsXCIhYX4jaHFAXCIsXCJ6YUl6R3ZfOVwiLFwiOyRNSE0lKzlcIixcImhEbEd1NFYhXCIsXCI7JFlCOlwiLFwiZmtYKFRlT1tEXFxcIiZvdWd7ZjhmXjF0LmlZOH5fbDwmPmZ3VVdkP1wiLFwibH18SChpNiFcIixcIkY9RTF0LkIhXCIsXCJ6YVtEZXEmOVwiLFwiZyR0LjQlXVE2flBsOVwiLFwibH09LihpSyFcIixcIlAmJSN6VzYhXCIsXCJ1Jkc0TDJBIVwiLFwiZmtYKFRlT1tEXFxcIjxRdU9FVV4kbEdUWmV3dVxcXCJcIixcInphQ2dSSXkhXCIsXCJ6THVIUFwiLFwiZmtYKFRlT1s/MTkpKmNvS3ZrMURxWnV1eVxcXCJ0RTJqVEkzLiRcIixcImZrWChUZU9bPzFGYk84RVVeJGxHQ0pkWSFcIixcInpheFxcXCI6NDohXCIsXCJKeXowSiVyNVIzQmx9Z3lcIixcIkp5TmluXCIsXCJma1goVGVPW0RcXFwiT2JnYzpJWVxcXCJqXFxcInFaZlssbHhcIixcImZrWChUZU9bPzExRVJqMVVeJGxHQ0pkWSFcIixcInpheFxcXCJ7VzU5XCIsXCIueHlIYGU7dSVuUFgoTzZcIixcImZrWChUZU9bRFxcXCIqYTI0JnZ5LnsjYVcxb0gxWk1FJltVdThtPVwiLFwiZmtYKFRlT1s/MVpNRSYxVV4kbEdDSmRZIVwiLFwiemF4XFxcIjZLNiFcIixcIiN+eFxcXCIpYT9ucSt4c250bV88JFBHP1wiLFwiI354XFxcIilhP25xK1ZcIixcIiN+Lz4lXCIsXCJma1goVGVPW0RcXFwiKmEyNCZ2eS57I2FXMW9IMV1kRGdfdnQ9fkhQXCIsXCJDMU4wU2pKKjVcIixcIlE9fDFDSmRZIVwiLFwiemFJZF5xWDlcIixcInlEbi5zYUBcIixcImZrWChUZU9bRFxcXCIqYTI0JEtnVUtIbS5EdWczWHg5XCIsXCJma1goVGVPW0RcXFwiQTsoTyV2Rj1FMXQuRHVnM1h4NSFcIixcInphWjQmNCw5XCIsXCJddjVkZWVAXCIsXCJma1goVGVPW0RcXFwiSX4kS1lVb3hMRClhNWVLRitKJCE/d2R2NGRtLk9XNn5NSlB6NWZvUGM9XCIsXCJma1goVGVPW0RcXFwiSX4kS1lVRj1FMXQuRll1XFxcIlwiLFwiemFJejRXOlEkXCIsXCIvJDRkLlpGQFwiLFwiOCRQRzgwTiFcIixcImZrWChUZU9bRFxcXCIqYTI0MFVoRDxkdC5QMVJYXCIsXCJma1goVGVPW0RcXFwiPiloSzpJRj1FMXQuRll1XFxcIlwiLFwiemFDZ2lLJjkkXCIsXCIuPUUwX2R2IVwiLFwiRj1FMF9kdiFcIixcIm9QYz1cIixcImZrWChUZU9bPzFaZ2NqLEs7RyVIazBlVEdGRmJAXCIsXCJ6YSE/PEtAXCIsXCIsNGgudzJQaEcqXCIsXCIsNHhyVFwiLFwiZmtYKFRlT1tEXFxcIiphMjRrcEhRfDFBZFs1OGxueCQhbH1nTF4xN2RAXCIsXCJma1goVGVPWz8xOVpXY2twSFF8MVRlSjVmbl1neU9POlwiLFwiemEremZmQFwiLFwiekxKR0wye3BkVGtcIixcInpMR0VOXCIsXCJma1goVGVPWz8xRmJmY1hVeit8MTguNiFnM3FicWM+ZiF6JC5gZUllcytsYlRPbXZRRC9cXFwiXCIsXCJma1goVGVPWz8xRmJmY1hVeit8MTguY1kxbkhjbSZpS29QQjAsXCIsXCJ6YSlkQVwiLFwiZnh4XFxcImpldFd7XCIsXCJXeFxcXCJxQXQxOVwiLFwibH1TMVJhOyFcIixcIlxcXCJ6Z0d3TVEhXCIsXCJPPUc0TDJBIVwiLFwiZmtYKFRlT1tEXFxcImVNUHojVV4kbEdhVzFvdVxcXCJcIixcInphRTFnZkBcIixcIkh7KihzMjlufU5cIixcImZrWChUZU9bPzF6YSpjaEtoRGxHdTRyZTVUUGMkIWx9SDlcIixcImZrWChUZU9bPzEuUm9LJXZHVTRHYWMkOVwiLFwiemErekZwQFwiLFwiekxKR05XTiFcIixcImd2SnhOXCIsXCJma1goVGVPWz8xRmJmYyN2fCRrR3dNUSFdVHFiY2o2XCIsXCJsfSgwcVpLIVwiLFwiemFaNClJdXV7XCIsXCJjeXguTSVMOVwiLFwiPCRQRz9cIixcImN5L3I6XCIsXCJBUWExeldMKjZUXCIsXCJHX3tIdDBlVDFuXCIsXCJsfTZIdzI2IVwiLFwiRj1FMXQuOiFcIixcImNmJnpcIixcInphSHo4SVg5XCIsXCJ7NHlIdzIwSih+UGwoT3xVXCIsXCJma1goVGVPW0RcXFwiKmEyNGB2PHt8MTguRVl7XCIsXCJma1goVGVPWz8xbDIxOE5VRj1FMXQuRVl1XFxcIlwiLFwiemFDZzZcIixcInJVNGRmSk1FZm5cIixcImZrWChUZU9bPzE5KSpjb0t2azFEfjBUbnErMztxY1xcXCJJWU4kXCIsXCJma1goVGVPWz8xSGxoS0ZwaERsR3pXTVldfnJjNmpEdzhVWGQ8ZCQ5XCIsXCJ6YSN6TE1AXCIsXCI1TCQuTWNuZSs+eU94TVQ/XCIsXCJma1goVGVPW0RcXFwieU9DNF1LNnhwMG0uRVlYblwiLFwiZmtYKFRlT1tEXFxcInlPQzRdSylzYz1wWzhZS0ZaZ2M0cjpETDYwLFwiLFwiemEvXFxcIipcIixcIlNTR3l+fWF4JFwiLFwiaUhvPlwiLFwiZmtYKFRlT1tEXFxcIiphMjRffUB6OnF3MilfMH5KbTlcIixcImZrWChUZU9bRFxcXCJWflImfmg7VUJIT3xwVTtOOm81IVwiLFwiemEwRCR2QFwiLFwieUw+KGtNMVRIKzM7MHpcIixcImZrWChUZU9bPzFXYiRWQmhHX3tIdDA2aTZ+UGwoT3xVM04xRE5kVClkfk0yY2gmSXBMcS4lVzkxTFRcIixcImZrWChUZU9bPzFXYiRWQmhGPUUxdC4rKjMrX1wiLFwiemFuY3RJQFwiLFwiVyRuLk0lXVE2flBsOVwiLFwiVyRocjpcIixcIih6bi5tLlUhXCIsXCJma1goVGVPW0RcXFwieyk9OkVVXiRsR0NKZFkhXCIsXCJma1goVGVPW0RcXFwiWitgS0ZwVj08ZDguPm57XCIsXCJadFY/M0VNdSkzXCIsXCJqdEtkK1F5IVwiLFwiVmtBPTplQFwiLFwiVFUvLncyYDVdflZcIixcIjM4TjAwZUZZZm4sSFlQW0Iha3BpYGtSUTVUVHhET0VVTjAzXFxcInpXZFl7Rk5cIixcIjM4TjAwZUZZZm5ySlA6aUsqM3wxVUI7QXRUT0VvS2smSXRQRzJlWHJnR05cIixcIjM4TjAwZUZZZm4wayNLTlV8JCRcIixcInUmYT5fZG93NlRkZ3d6JnYuNiRcIixcInImODBfSGRCZzNhSkw7Pm53QFwiLFwiMzhOMDBlRllmbjBrI0tOVXwkdC5Tc30hNmx4ZERnbnlyNmQxSDRmbmk1YmkqY1tVa3RBPyhcIixcIjM4TjAwZUZZZm5HUVt6JVUoK2pcXFwidWFGQSxsRGM1VkIsI0RGPV1ofHYlNVwiLFwiMzhOMDBlRllmbnB6OTo+ZkZfbSRcIixcIjM4TjAwZUZZe1wiLFwibjkzMDgwQnV7XCIsXCJNX2dcXFwiI007dXtcIixcImxHOyQ1alV1e1wiLFwiQjlnLlplbyo1XCIsXCI4RzAhcF41ZXtcIixcImp4fmc3QkBcIixcIjM4TjAwZUZZZm4yRmc4OGhXUGQpJmkjd0Y+T0V2TyVVOEcwIVMySipnM30jaTlcIixcIjM4TjAwZUZZZm42ZDxER1UuTEY9WUJ9dlYrajB8X09oLjh7IzplbHMlTkNNKmNxcHdAXCIsXCJJJEtIIXBgeGdHckUjOyhOKiZ5SHNhK3hBVEdNUjh0aEs0b0RNV1Q5XCIsXCJDeUIwfjBAXCIsXCImJjgwVTJCIV1sfmIwelwiLFwiTSRSPXU0ViFVfkJsKE9ZdkdESkdKJVpZQGIyTX1naCxmNFopXzRvd0tuXCIsXCJ8eFI9XCIsXCJHPUpHOmVAXCIsXCJma1goVGVPW0RcXFwiT0U4amRLWVxcXCI/Li5xVG4xbkJsRWN2cFwiLFwiQnJhaXxzVzlcIixcIih6JC4uNFIhXCIsXCJrVC8xYH5ZaXtcIixcIl8mTjBaZUQhXCIsXCJTWWUuPDZcXFwifEFcIixcIiRicDFvZW0hXCIsXCJ7LyhNdElCKkFcIixcImhnPSZXcndlYFwiLFwiQjgqKERcIixcIkQ4UWcpb3M5XCIsXCJgeEpHcjR+QWo2VlwiLFwiUCZhMGhacEZETlwiLFwiJmdZNHlpbyo+XCIsXCJyNnhcXFwiZWVMKj9OXCIsXCJQJmEwaFpRIVwiLFwiQSYvLkdNNiFcIixcIlQmeFxcXCIjXjt1OH5lUU1nOGhHRHVkQlwiLFwiJjhxY11haHJBVERcIixcIn50QT9kS05RXFxcIlRCXCIsXCJ7YUJITlV9VWVHQVwiLFwiSm03XFxcIkxNNDUyPUJcIixcIkdhJFZZS3szVVRCXCIsXCI8TTZIIXZEdWAxP1wiLFwiO3l4Y0JoRVVrfkJcIixcIj5HVjFdYS9fJD0/Y2tXezNse2pcXFwie1d6M2g9KWdCKSxuU35iMWA0XTZCfmExbEFMbnc0T3pCNEF1Mj1tTXFnOnZXeHJkZ2ZseEY9PmBgaDZcIixcIlNUPlZAY1p2ZDFkaVV6Z3Ylez5WIXYsbjd+VzFsOFduXiQkY0xNXnZgMW1NdSFGM11Udj8vdiNfPSMkYCFNLG5lbXNkQHBkdmg9c2RQZzZcIixcIn1+S2cuYS42WlxcXCJRZDQ0cVRLNFt6bHBXXzo9dzJLO00zaWxAPyN2ZWg9flpNenA/aFh7WTRlcWV4Y1Q3UW0mUnZJVG9cXFwiZEtPXzZ+M1dBentcIixcIlR4Oj9AY3MqKzFfZFRlV25MfiRWaUtycm49d0orJlJ2QXhQY2lLO0FRXFxcIk5XQno/VFtSQD8hdnlRUH5vaSkmJWh7YWE0NnBEdWVHTzBrVzZcIixcImBNZDRvS01FMj1vaX07OVRaLGQxXlcye0AzYy9OcFJ2MWFlXFxcImlLN2h4PTswWkQsblZzc3osS0N2OSt2UjVLW2hzVG1nZXF8djh+TDJDMntcIixcIj5hc3pnSUR1PSNXZ04pOVRfbEtnTE00NV1+TzBUZTJ2KX5eMXNhOW5RXFxcIltWVSkuM2x4UzFMTTpRTFxcXCJjZ3ZnP2hwUnw0cWErXykxbDE4JntcIixcIjRfS0h1NFxcXCJZOH5WXCIsXCIqOGEwP1wiLFwiVCZ4XFxcIiNeO3VETlwiLFwifUwlSFFhX241XCIsXCJ+ZntIJWRAXCIsXCJyJkIwfjBGNjZUJXgqY3FwXCIsXCIuOCZkbjRFIVwiLFwiMyYvLipkcW9vVGFKRT87fXN2NWRUZUg1JUZWXCIsXCJETGxHdTR+QUAxeylNZzhoUDlcIixcIj05RnBcXFwiaiwhLFwiLFwiejpfSEBgNnkzeHhyO1wiLFwiRVNrSERreVFBNlxcXCIjcS53RF5hYlVDXCIsXCIzcHIpS1kxM1YxZXRSIyg/SiRyXCIsXCJnMkxgb1wiLFwiRXl2dzZvRkJtfX1POlwiLFwiI0woKVQwWTxcIixcIlJ6e1UkXCIsXCJIOCZkW1dRIVwiLFwiNHtLSDpqTiFcIixcIkxrKihcIixcIjZyfl0/Wyp2bVwiLFwidnJuZVwiLFwiR0R8dV5cIixcImBhOWlKMGBcIixcIisyMEZ8cHEkekxfKTw+dV41b2NcIixcIjprXmUpXCIsXCJWVntpaVBWTlAody5RR1wiLFwidGUwUkI+Sk9cIixcIjNvXixXPU5CVFwiLFwiWnYmVyglfklcIixcIjZrM1F5d3syYi8lREgrbGlcIixcIllhXyNSd3sycUdALElcIixcIjR4XTB7VjU5XCIsXCI6VVdELFtnMFwiLFwiVXpKVH45OlpCXCIsXCIkKXBzdC4rSGpcIixcIilwJmQ0UXtTKDNWaHtdWjR+dDdePi58d3JPJjFEOFJydkdfRFwiLFwiOmwzZCpcIixcIkhJZ3gpZnVcIixcIjE+eFVSUGNFXCIsXCJsdkNqS21bdVwiLFwiMT54VVJQYjhzXCIsXCIjYFI6KEBxcCZNXCIsXCJPKWY+Y0F1XCIsXCJwZ1JYdGd1XCIsXCI/KXcqPT80SFwiLFwiaEd8bUBeUEVcIixcInBad0RLZnVcIixcIj8pdyo9PzshSlwiLFwiVGxeZVBmXFxcIkVcIixcIiFecHNkdGNFXCIsXCIhbDBERiRzQ2U0cFwiLFwiaT5bM0V2Q34pVDFcIixcInVJfXh8PzhGZU9wXCIsXCIyWjBtK1FyRVwiLFwiVVpBRFwiLFwiY3ZyZjxlNjtQaDVrK1BZXCIsXCJ0X35JIWlTQW9cIixcIi9PUklVYDFcIixcIkNhPSVLYTFcIixcImVPWnQrZTdqR1wiLFwiJnJcXFwibDRYRXNcIixcIkMpWk5bUjFcIixcIllIWC5FUndzXCIsXCJqWENvbUtVc1wiLFwiakhmTn5ebyguekNcIixcIn1JZ11zOihkT1lCXCIsXCIxSlZrXFxcImU5fi4vQ1wiLFwiIylmbDBBRFEyVXdcIixcIlU6X1I7Lmk3RSZ4fDBFM1wiLFwiT3pyNXtNeWZrMUlcIixcIlFSeiRyeDwpXCIsXCJ8UlNeXCIsXCJKWTxEZ3QybmJwVypyYj1cIixcIjwjWUBgXCIsXCJ9ZmFfamVLZW41XCIsXCI4TilBb20zUFwiLFwiL3h7SHQwTDlcIixcIjJESDVjXCIsXCJIJiooVmd0Vz5uPFEsSypcIixcIjpsTEVMXCIsXCJtNVVFXlwiLFwifUs2NFQ3aSU+VnE6M1wiLFwiSCYqKDFtTiFcIixcIm9mQT0zZUBcIixcImVdQix5IVpXXCIsXCJzVXtkXCIsXCI+VHwpKTt+YGJWMUJjRGlJSTVyRHVcXFwieW8pdm5mZSFneSR4cmE1WllHK2VecSpJYm0kc0U0NVxcXCJsbyVDUiVvZl9dNSt9cEN7K30rRl12XjVDYmw1X0RtSVZ3KHZ4OWsjKkkwSmokeCVFR0VVUChga3NKdTUuKCNAVWtofHdYOXhjXTl1MjdZWng0V1wiLFwieytJKDFzP1dcIixcIls1R1UjOzNcIixcImVdQix5ITBDaXZbXCIsXCI+VHwpKTt+YGJWMUJjRGlJSTVyRHVcXFwieW8oZVwiLFwiRnUpVyxBIUcqZTp2VFBROEI5LihlOzRlXFxcIlZcIixcIlhdai95IUwzPCwrKTxvLFV6WFN7Kkk/eDZLXCIsXCIuKyR1ITtNPTJVfHFEckNiNHQ2S2t9KGByVlwiLFwieEsyVW5BT2orZXdYQCMqSWZPKDpHL2NtL01cIixcIi94VClROGNtJUMzMi9bXjhGdWJwTCE2M1wiLFwiMC9bOTNZdz1LXCIsXCIhSnopbCEzXCIsXCI/UGklVC5qV1wiLFwiYmxYYVwiLFwiXyZ+VVgha1YmfFwiLFwiV3BtLCRcIixcIjZLTyliPDNcIixcImtZek14IVRmXCIsXCJIWVQ3ZzddZlwiLFwiYV1jUSksY2ZcIixcIjhke3RiXCIsXCJueHEpPyVWO2hcIixcInpUcmFHKEhgclwiLFwiXl15dW5BODtoXCIsXCIuXWgvanRScUtcIixcIlxcXCJLMlVqdFtXXCIsXCJSOUkvKTt8V1wiLFwiRkt+VS9BQFdcIixcIm54cSk/JV1XXCIsXCJ1d2gvKylhR2hcIixcIm54OSxXZlE0SX50cGJmX11ocEJkPVwiLFwiYD85LG8lW1dcIixcIi9sMlV6dHNXXCIsXCJTdDgsJFwiLFwiPVAoNC90MldcIixcIiRzRTQ1XFxcImxvQ1wiLFwiYmx8KVF0M1wiLFwiU0R+VWk4RUpLXCIsXCI1TzgsJiFUV1wiLFwiU0R+VWk4eGtcIixcIipKcClne1JHaFwiLFwiJGxmVVFcIixcIkVGVix5ITNcIixcIj1QKDQvdGJWQ1wiLFwiYXBLLCx0M1wiLFwieHg5ZE0oQzsqZVwiLFwiMSNWNS9gfVxcXCJcIixcIk97SVMxYCkhXlwiLFwid31hU1dqI11eXCIsXCIpIyosTGAwXCIsXCJXZEVYdnJDXFxcIlwiLFwiQEt4LDQ4fFlGXCIsXCJzN2BJZixrbGBvTXlEPGFKRjpcIixcIjhBUUk2fTxcXFwiXCIsXCJOV1k1JHAwXCIsXCJ3fShYPXB2bCRjXFxcIjlLaDtKPjpcIixcIm15TFhMXCIsXCI4KFVYWVwiLFwic0pESVdqVEVCKkliZyQkaXZ7TlpiZDBcIixcInxFNXB1YVFMXCIsXCJPbHlmaFNDSyFcIixcIkA8eCpkJTBcIixcIlhndzt5UT9mXCIsXCJCXkA7czV9Um9cIixcIkRoSioqUTBcIixcImhZR1VHLjBIMGVHVUcuMEgwZUdVRy4wSDBlR1VHLjBIMGVHVUcuMEgwZUdVRy4wSDBlR1VHLjBIMGVHVUcuMEgwZUdVRy4wSDBlR1VHLjBIYUdcIixcIl19SXYkUTBcIixcInJyVEwrd2xmXCIsXCImVVF3XFxcInZbcVE0dFRWQUBOcEdcIixcIl97TXcxXkFmXCIsXCJDc2BGaiEwXCIsXCJCXkoqeiE4cWplZmIpOShOREdcIixcIlBUJCokXCIsXCI1R2pcXFwiKlwiLFwiIVtsS0NMJU15VEssWmBgYUl2UWMsUEVcIixcIi4vZFxcXCI/blFvXCIsXCJydktITz5oMilcIixcInFQUmdSWEUrRXdSZ1JYRStFd1JnUlhFK0V3ZFwiLFwiRXdSZ1JYRStFd1JnUlhFK0V3UmdSWEUrRXdkXCIsXCJkTn5MVnEjR1wiLFwiIzYxaTtFfUdcIixcInJlXm0ycXpHXCIsXCJIWWBGP1xcXCJxXmtcIixcIngkO2xLKSpbZVwiLFwicipMaUQlR1wiLFwiSzpRQFxcXCJuLkNcIixcIns1Z2l6TUxDXCIsXCJ8eSVTWGlfZCUmdihVUDs2cDBcIixcIk1PPVN3JFBDXCIsXCJtS1doLyxHXCIsXCJ4JEJANyx7MFwiLFwiaUxeQGksZENcIixcIkgoREBEXCIsXCJNQnRAV1wiLFwidXc0M1F2SkZcIixcIjJ6SjIyZVxcXCJGXCIsXCJFd1RcXFwiMmVERlwiLFwiKiYje3MuQEZcIixcIn5EMzdyL3w/dFwiLFwifHNLPWZKW1dcIixcIiNsdnpBSVg4clwiLFwiKHFyQWsycFwiLFwiRj4kdlZnKW1cIixcIm8uKHZhQ14jM1wiLFwieVNIQUFncFwiLFwiU25QV1B+cFhwS1BXUH5wWHBLUFdQfnBYcEtQV1B+cFhwS1BXUH5wWHBLUFdQfnBYcEtQV1B+cFhwS1BXUH5wWHBLUFdQfnBYcEtQV1B+cFhRUFwiLFwiTl4sQFJncFwiLFwiWVkmZHgkMzowO1wiLFwiPFdnJDlAWjRnTTsmd3MoNkxQXCIsXCJfZUUkaS5zbVwiLFwiSWFsVFU6cFwiLFwiby5IQSs6WzRVS20/MUpqNnlQXCIsXCJqb0BZQFwiLFwicShyWXVcIixcInlJcGd8UjsvTGhndEUsLGkme1VYdCNEXCIsXCJAQ29ZbGVVJFwiLFwiV3tnfXYxVj1bXCIsXCI4I18rXz9EfkQwXytfP0R+RDBfK18/RH5EMF8rXz9EfkQwXytfP0R+RDBfK18/RH5EMF8rXz9EfkQwXytfP0R+RDBfK18/RH5EMF8rXz9EfiFfXCIsXCJ0dlpTTXRbV1wiLFwiKkoyVVwiLFwiVXFZbGdcIixcIjpPZUZ8NUt4dWl9XCIsXCJ5NSs4Vyp6XCIsXCJJKEE4bF5SalwiLFwiPXhvYXpcIixcIkNEaHFhSWpQYSshXFxcInIjX11cIixcIlN0OCw/OzNcIixcIlFsbSxhJUlXXCIsXCJ7S0dVd3RzV1wiLFwiOkRaUyRBO2tcIixcInVZRS8vfDw6XCIsXCJHJnMvbGRbXCIsXCJMUXcvMD48OlwiLFwiQ0RocWFJQ2tcIixcIjlYezRMKHpXXCIsXCJUXWZ1R3RzV1wiLFwiY358K11cIixcIlxcXCJ3T3N9PTFcIixcIl05ZnNvPjRJXCIsXCJVREY9dDsrd0tGT0o4P09oQTlcIixcIjVRZUd2WmJ1e1wiLFwiKHt+Mk41IUpRZFwiLFwiKHt+Mk41IUpRZDZ3aHhYXCIsXCJTRVhRW1xcXCI8Lm1DLHxJSFhcIixcIlV5WFFHXCIsXCIue24wblwiLFwiKGo9MGJcIixcIiVSUCpfd1dpTWQqXFxcImtOTllxdFtGXFxcIjtBXCIsXCJcXFwiUjsyUyNyQ3U0bzRjKF46OlJvU0JcIixcIlY7cmxyPkFdQWFybHI+QV1BYXJscj5BXUFhcmxyPkFdQWFybHI+QV1BYXJscj5BXUFhcmxyPkFdQWFybHI+QV1BYXJscj5BXUFhcmxyPkFdSXJcIixcIlxcXCJSOzJTI3REXCIsXCJWPXRYKFc6Q1wiLFwiYTRsSVtcIixcIkR0WjlaVTZFNkBaOVpVNkU2QFo5WlU2RTZAWjlaVTZFNkBaOVpVNkU2QFo5WlU2RTZAWjlaVTZFNkBaOVpVNkU2QFo5WlU2RTZAWjlaVTZFflpcIixcIilRdGt3NVozeS5XT1FbKnNhRDwwXCIsXCJea2Q1aFEweFwiLFwiVVBkflhfSHhcIixcIiF5bWNTXCIsXCJWaWF7MH4qfGdcIixcIjNdOWQqa2piXCIsXCIjNG9wSyNbRFwiLFwidiFjWlwiLFwiU0VYUTJNKVhQKzYvZm1cIixcIm5FezBYJFtEXCIsXCIjbHwxe300XCIsXCJZeXguKmlWIVwiLFwiYntrK2V1bUJcIixcIkN7WHlcIixcIn10Ok9sak1BXCIsXCIqNEYrWSpsXCIsXCI8PXJ1RyRQQlwiLFwiMVk3eVwiLFwidFkscEZKXkJcIixcIkNeNTl2W05CXCIsXCIxWU4rXFxcIkpsXCIsXCJ2a1dgaCpHQlwiLFwiPjRJKyUyU21lXCIsXCI1YzZgaSpsXCIsXCJ5SUVgYEpsXCIsXCJJa0EwQWFsZGxiQTBBYWxkbGJBMEFhbGRsYkEwQWFsZGxiQTBBYWxkbGJBMEFhbGRsYkEwQWFsZGxiQTBBYWxkbGJBMEFhbGRsYkEwQWFsZE1BXCIsXCJ7e096ZlUpXT5MXCIsXCJ8e1F5RlwiLFwiKUhlO3kmUD15WipbWFZ+RFwiLFwiKUhlO3kmUD15WipbWFZ+RFhZcFBpKns5OTZUXCIsXCIyRW1weEpaPixialwiLFwiMkVtcHhKXkJcIixcIndIb1RDUl1BXCIsXCJrT1pgYFImQlwiLFwiJlpPcFcsYEkzOkVYS1wiLFwiQVkjcXk2bCtVR1wiLFwiaUhScVwiLFwiLlkwYjcoOERcIixcIlYxWjcqPGNEXCIsXCJEU0A3P1wiLFwifXppNz9cIixcIiVfT3BXLHVcIixcIjJIVGJcXFwia3VcIixcIjZVJjc/XCIsXCI7NWxRQjtWZnJcIixcImlIfHAsNGpEXCIsXCJ6Wk42P1wiLFwidFUmUlk8eERcIixcIllbKmJpKEpBQC9ET0tcIixcImlIUnFBbVxcXCJEXCIsXCI+Wkw3Tz5jRFwiLFwiOSV6XnssLEtcIixcInAyKVJxSjNEXCIsXCJMSEA3YjwkRFwiLFwifXppNzE0dVwiLFwicFtfXkx6SkRcIixcIjZVcSVQSTpBMy92T1xcXCIhLmYpZipiXCIsXCI2VXElUEk6QTMvY1wiLFwiLllbLEpJeEFPXCIsXCJMWVo3KjxUP2toVFB7ITZDXCIsXCI/W0pxWTxrc1R3JVwiLFwiOzVsUUI7aEtcIixcIns1TDc6LGNEXCIsXCIzT2V0Wislaz1uX2FBXCIsXCJQezhwUzk+aUhOXCIsXCJXWXpwXCIsXCJte2Z5YFJiQlwiLFwiIzxPYFF1OkJcIixcIkJJTWBDXCIsXCI1QD5KVVwiLFwiUHNfSlVcIixcIix1KGY9cjRcIixcIi9CMCRUNzRcIixcIjo8SEpVXCIsXCIjP312UiNsNjhcIixcIl9CUWZyLkZsPylcIixcInMqQTpVXCIsXCJdPEgzTFhqNVwiLFwiTCtlJF9wfFM+STUoMVwiLFwiX0IzXFxcIlMhLFMoXCIsXCJ2THBmIzJ7NVwiLFwibGkqSmVYezVcIixcIiYmUUhWXjJBKW1xY31neVwiLFwianhFMTpldnUoTlwiLFwiZ1VhMUg0NiFcIixcInUmYT5fZFUhXCIsXCJ+VlIkJmBFXCIsXCJBeVFeW2B4dVwiLFwiK3xRaCEweXVcIixcIkF5UV5bYFlCJDIpZXkmcSpTVj5nXCIsXCJWcURTWmA7ZlwiLFwiQjJESFdGMGZcIixcImtbJV19XCIsXCJ6MVhlO0pMKk5cIixcInoxWGU7SmVGXCIsXCJlWHZbciRiUXgyV31ZXCIsXCIrfGtnVV4vO0xSXCIsXCJjZHdnXCIsXCJUfERTJUY9dVwiLFwidVZ+JTlcIixcIjh6O1BmXCIsXCJKRGdQZlwiLFwiV2EmZG9xMFwiLFwiOS4vaCheMFwiLFwiQmp1UGZcIixcIjJBVkhzMmtGW1wiLFwiZy49ZHEzN2tBT1wiLFwiRGNVQmZcIixcIiNqdXlZS2w4XCIsXCJZMSxoZzY1JTt2OCZ+XCIsXCJnLnkqJSEoOFwiLFwie2NYUCZ7eDhcIixcInVjJmRvcW5tTHddYH5cIixcIntjXldZSyUlaHBcIixcIkhZLlBQRFtmX1wiLFwiUlk/aFA2ZThcIixcIkZ9XFxcIjxMM3A4XCIsXCIoTHJANW0+OFwiLFwiX3p1eVlLdDhcIixcInp6Y1BVPDU4XCIsXCJITDxCZEQ1OFwiLFwiU1t1UFJcIixcInx0YTx9R3A4XCIsXCJxb3BxcTNFOFwiLFwiSnRRRXEzTDhcIixcIlNjQEIpM0YlaHBcIixcIk1BWFB3cXg4XCIsXCJ6bX5XfmAwbDBlY1wiLFwiMGV+V35gMGwwZWNcIixcIjBlMCpcIixcIjRjWFBYXCIsXCIlWTcqYkJWJGpwXCIsXCJkMWE8WERBT19cIixcImBte0UsM2o4XCIsXCJmMTUqWUspOFwiLFwiVkY1KlwiLFwiZy49ZHEzRThcIixcIlxcXCIzeC9dJExiPVwiLFwiYjMldlwiLFwiY2ElJFZcXFwiaEhcIixcIjA6TVxcXCJPXCIsXCJ9S2RVLCZGcDNeXCIsXCIpaDFVXCIsXCIrSyE0QFl+WFwiLFwiWDpmQFdcIixcIlNnKUBXXCIsXCJdYiUkVlxcXCIwXCIsXCI4aHY0ZWswXCIsXCImM2NAV1wiLFwiNT1GdSg1bkhcIixcIilobCRcXFwiN2Q7PXRcIixcImdhUCZXXCIsXCJaM2MxSzIqWFwiLFwiS01fNClZeX1melglSFwiLFwiKWgxVX17XX0lXCIsXCJ1S1kkNTY5WFwiLFwiS0s4JDk1aVhcIixcIjE6VlxcXCIkZzlYXCIsXCIpR3QuWmVAXCIsXCIveHtIdDBTYTZ+cWM5XCIsXCJtRC9cXFwiJmkhXFxcImtUMk1uS0dVXCIsXCJgeEpHJml1dSxsa1wiLFwiISYmZHBtUSFcIixcInVsRChcXFwiRy83XCIsXCI1Z15ud2hZMyxCbVs7XCIsXCJ4Z0tqZHJ9N1wiLFwiKmtXKHdBXFxcIjdcIixcInAqZ3pNVi83XCIsXCJJLF80bkdzVSVcIixcImBTfWcwPF8vJVwiLFwianZebndoOlwiLFwiaWRnMClyPzdcIixcIlIkZzApcj83XCIsXCJkZC9uP1ZDRHBPbVt+ZSRcIixcImw0KHxeU1RUT1hcIixcInReaFlZZSNFSlwiLFwiMl4zT1lIR2NcIixcIkFNIT8hXFxcIkZ4JVJEcE1qWlwiLFwiOSlHNFlheUZcIixcInA8RFlvej1jXCIsXCJqO14uXVs6LzlcIixcIk5xdlNSJHNGXCIsXCIqaG9dSCxtKWJcIixcIlU0fThWejByWm8uXFxcIkZcIixcInU3VV9eUyRjXCIsXCJrbj9zOGUrY1wiLFwiVF5XMWlzd2NcIixcIiloXzFcIixcImM5bllFXCIsXCI6ZSlZRVwiLFwifDt9OFZ6TFwiLFwicWhiT2YoTFwiLFwiczdVWUVcIixcIj48eXQ1PlBBI1wiLFwiKWh7OHpkV1A8eFwiLFwiZTRCc0VcIixcIl5qJU8pSCRjXCIsXCJyNCZ9TlwiLFwiKWhfMVRRfFR9XCIsXCJsNERZfWw9Y1wiLFwiKy4vNEpJUVFUVlwiLFwifkpdQ0N0SHU7XCIsXCJ5SnpUQzoxY1wiLFwie3JfJHZzWEw5RDxoPHRTbVdmNkNDOkZjXCIsXCJbWy5DXiRnY1wiLFwiPS5lQ2VcIixcIktINkN5XCIsXCJSbTAkcmhWY1wiLFwiNzlWNzdzfWNcIixcIkFta303c3ZjXCIsXCJSe3F8bCQ/XCIsXCJUW0hDQ3Q/XCIsXCJdXVE7Ukw7cyExXCIsXCI2LnF8OTddYlwiLFwiP1smN31cIixcIlFKOGZwU1VOeFZcIixcInwmMCRldGdjXCIsXCJjW1pDdVwiLFwiPG8rfWlzeGNcIixcInUmZ2ZKSSFjXCIsXCJVe2dmXCIsXCJBdFxcXCJDdVwiLFwiNDBxfDk3P1wiLFwiV113VE0vP1wiLFwiU3g2Q3VcIixcIig1VX4+KERiXCIsXCJcXFwiXTN8N3M4bDVgXCIsXCJ0Ll5TdVwiLFwiLDVlQ1A3RWNcIixcImF4Nk9KSW5jXCIsXCJKJmlUXFxcIjpnUVoyY3FiXCIsXCJ6eChGXCIsXCJUXlcxaXN5JjdYXCIsXCJic0MrRlwiLFwiUF1ZK0ZcIixcIiopa1QzdzBcIixcIi9mUWpFTjBcIixcIk0uNCtGXCIsXCIycHl8VjJkOmNcIixcIllmYVR3aWBkcCVcIixcIl0oU01GXCIsXCIkLjRnT354YlwiLFwiT0x0allSSURDO2JrQVwiLFwiWWZnR0Q2KkRrXCIsXCJ8T1JUMnVLYlwiLFwiYnM0K0ZfWGJcIixcIklEcDBvSz45XCIsXCJ6YV96XCIsXCJFX009eit9aVwiLFwie0FDV3ZcIixcIk9BQ1d7I0ZcIixcImwxSSx6K1hpXCIsXCJISmAvV1wiLFwiRkRaL1dMdW9cIixcImNAQy82VWlvXCIsXCIsS1FZXiVCKltcIixcIl5lcEtFdzpyXCIsXCJeZXBLRXdTNFFcIixcInIvemZFMDhJR1wiLFwialkpKmk/UUJcIixcIjk0diZ1RHlmSlwiLFwiOTR2JnVEZEFcIixcIkhjL0pOT01zdVwiLFwiJTFzRm9cIixcIjZSYUZOKUVcIixcIjQqeUdlMTVQK1wiLFwiKFFYRm1cIixcIk1CU3k9bHFMXCIsXCIsYXEsLClKTFwiLFwiJUJBSiwpKkxcIixcIihLOEdIKVZrP3FcIixcInc1JEYvLHBMXCIsXCJKLmQ/YlwiLFwidURsdVwiLFwiPFtxR05pZmQuMFQpQVwiLFwia1tvUlMheHhCJFwiLFwiNFNwRkZLSF4xXCIsXCImU0xCRlxcXCJKeVwiLFwiN11se2wpLnlcIixcIl4sM0Y4JSR5XCIsXCI/PUpbRmB7LDFcIixcIl9TJGlcXFwiOSN5XCIsXCJwcHgxMmpNeVwiLFwiYj48Y2EqeHgjJFwiLFwiP2RfP1wiLFwicEd0V1hcIixcIld1Yj09ZkZcIixcIihiJD1eXCIsXCJncWxaa2U4KlJJWlUwMjI5ezU3TlVERlwiLFwiQHFVakR9UjRCdGBvVlwiLFwiJGpQS00sfEQ1UzApVlwiLFwiUlgkTjFoaU5reTRlO21fcVwiLFwiQDFuc1kzcWlcIixcIipBTnNcIixcIj9mKj0hXCIsXCJfbFBLTSxGXCIsXCIzWCQ9IVwiLFwiYXdRdmBhJTZiXCIsXCIqQVtLLCtuJXc7XCIsXCJmamMzIVwiLFwiUlgkTjFoVGlcIixcIjFHdFcqen1ASExpUFZcIixcIml1JD0hKEF0c3lWRT9tTSpcIixcIipBTnNAZF9AUFwiLFwiPmovPVA+N2lcIixcIkAxbnMjfXBpcl9oJC5pXCIsXCIxR3RXKnpUaVwiLFwiRGpcXFwiUHlcIixcIml1JD0hKElpXCIsXCJVYmI9aywyaVwiLFwidjF6S2FyN2lcIixcIiRqUEtNLEFWXCIsXCI8ZDYrSFwiLFwiWXN2dEAzam9cIixcIjc2Z2shTCNvXCIsXCJSNiN0c3I4SWE5KlwiLFwiVExWe1JcIixcIipnQTdNKzxcIixcIk54YT1mODxcIixcIjNaR3tSXCIsXCJ9bjVpLH0vJVdcIixcIlZ4XFxcIjcreXYvbjlcIixcIkw0RTNSXCIsXCIpKk17MHkjb1wiLFwiPlpHU3NyRG9cIixcInM2bT1WMCNZbF5vQWhcIixcIm9kR3tSJHhtdHBoKVQ7TVZcIixcInUmRj1KUkIhV0dpLzMhXCIsXCJgeEpHJmkzIVwiLFwiciZMLi40UiFcIixcIkEmWCguWjMhXCIsXCIselI9dTRZWURsX2wmSzN2WXYqKFwiLFwienp4LnxkUiFcIixcInEmRTB5aW5le1wiLFwiW0klZzJxQFwiLFwiV3g/Lj9cIixcInVrPy4qaUkqb34mbzY/T2g9OVwiLFwiXiRSPTplQFwiLFwiOkx+QlpLc2g+XCIsXCJoTFxcXCI9XCIsXCJ1JkY9YjFvd0ROXCIsXCJ1JkY9SlJCIVwiLFwiW2wwej9oQFwiLFwicjZIZHJKTUVmblwiLFwibUQvXFxcIiZpcCFcIixcIkMsZDFINFIhXCIsXCI3c0pyXCIsXCI5JFF3IVZFP1wiLFwiI3JlITp9RT9cIixcIjk5VUhranA/XCIsXCJicmUhOn1FP1wiLFwiKDdXdkhATFAqXCIsXCJgJUFKOX1NP1wiLFwiOSR4OjdYeVs4Iz9RQ1wiLFwiNCVBSFRcIixcImR0JjNoZElLKVwiLFwiN3NGIUd6bUl0dVwiLFwiVnYsNFRcIixcIjdzSnJbZms/XCIsXCJ7djJIUXs8dSErVzZHKFwiLFwiQXZRIVVHcVk+TztdQ1wiLFwie3YvbDl9W1s6cFwiLFwiMzlzSEhWKVQqXCIsXCJeOT06SFhXP1wiLFwiOCh5cltWMT9cIixcIlgpJkoveTE/XCIsXCJGdGJYYilseVwiLFwiWix+V1lmSVwiLFwiMTFiWHAqQHlcIixcIjFVO2JYOipgOVwiLFwidmJ+V1lmfFI8JitfNVwiLFwiNHRyalZba3lcIixcIlU3ZGpcIixcInRCfnpXXnBTfS98YFBfUFwiLFwidHRZWDJzVlNmL3xgUF9QXCIsXCIxVTtiWDppNVwiLFwiTTN2ZHRObHlcIixcInRCUD9VfUA0L2N5fjVcIixcIlszdlhdXCIsXCIpaGlhcSlHJHtcIixcIlU3WldmbXJHaEZcIixcIl5icFtdXCIsXCJVN2RqNEo2NH5cIixcIjYsOlt2X1ZTZi98YFBfUFwiLFwiJXNbIVRcIixcImxcXFwiUSFVR3dDXCIsXCJbOW1yQjQmbiVwXCIsXCI5JFF3IVYsXlg4cVB4XXhcIixcIjk5VUhrakJeRzhxUHhdeFwiLFwiN3NKcltmbFtRXCIsXCIzOVghZFJPWyRPNWB5OSZFXCIsXCIzPiFMMy9OQHR1XCIsXCJHX0UxL2NOIVwiLFwiJV97SHQwQFwiLFwiYHhKRyZpdXUoTlwiLFwiciZMLi40JFA1XCIsXCIselI9dTRZWURscjtgS0ZwIWt+SHcyLnVfRmttUiZvS1wiLFwiREx1SFBcIixcInI2SGRySjYhXCIsXCImOHsjSDRLIVwiLFwibD1PSChpSyFcIixcIiYmdC59Mk4hXCIsXCJnPU9IKGlLIVwiLFwiemgzeC5FZFE1XCIsXCImOCooaFpSdSxsIXs5XCIsXCIxRC8uUFwiLFwiNHh8MVBcIixcImhMXFxcIj11W30hXCIsXCJyJlpIXldWIVwiLFwicTZ8PlFhQiFcIixcIkdfRTEvYz1uSCszOzB6XCIsXCIzJmEwd2FlV29UKl9jajt3ZjZ8MUJcIixcIkpSPEVQW2w5XCIsXCIkZyxpLkVqYHpcIixcImBIVnhAO19yJFwiLFwiYEhWeEA7LDlcIixcImY4NnJkals5XCIsXCIoNDNvdXRtIVwiLFwiZjg2cmRqd1d7XCIsXCJnJCQuazA6IVwiLFwiZ1VBPXJcIixcImdVQT0maTkxUmJQbGd6bmh7elBHdTRRIVwiLFwiMyYvLj5lOHVMbGtcIixcIi94e0h0MEBcIixcIi94e0h0MFIhXCIsXCJHX3tIdDBAXCIsXCJHX3tIdDAoQXpcIixcInE4ciMqcCM5XCIsXCJtRC9cXFwiJml0Kj1UOSkjS3RoQTlcIixcIlA4Uj0maUo1Pm5pemZjW1V7ei9cXFwiM2VAXCIsXCJLRCooczJ4KjtOYWI0SyxJTGt4LmVXSW41XCIsXCJgeD8ue2BUMUtGeFwiLFwiW3kzeEFaYDlcIixcIjVRZUd2WmJ1JUZfbHZPVUlYUXIoQlwiLFwiIzRoLlBcIixcIiZHdC5aZUBcIixcIlpORmd9TVxcXCIhXCIsXCIuYTYjMFdlaz5cIixcIk8kLy5Qak4hXCIsXCJJRHAwb0tCNiRcIixcIi94e0h0MGRCZm5HRWZ6XCIsXCIzJmEwd2FlV29UPypxYyZJXCIsXCJHPUpHP1wiLFwiYXhFMEwyQFwiLFwiS0Q4MHVaVGVkfn5KOVwiLFwiMyZYKHEyTUVmblxcXCI7NVZ5XCIsXCJOfDc1MSpkcVwiLFwidVhOZTl5MSZBYSVgWyQxNH4lXCIsXCJgVzFTSytkcVwiLFwiKDlMKksrWHFcIixcIlcoNzUxKnhcIixcIkdHaHldQ0cmOHV+QEVfXCIsXCJ0WF4qMCQ+aXlwXW0mQEZZXCIsXCI0JiFDKlwiLFwiKzo/Rkcpck5kXCIsXCI3QXNaRTJUXCIsXCIzXVNDayN4UVwiLFwiXS5uTFNGVFwiLFwibUd2UH1seFwiLFwiPmomUFhcIixcInFfcFNzXCIsXCJbejRTc1wiLFwiOVcxU0sreFwiLFwiKWlmRjV6M2NCXCIsXCJiMztTIypNcVwiLFwiYmQoZjI0byV3XCIsXCJcXFwiRyM+SyROJVwiLFwiK3d3U1QqPj1YTFwiLFwiK3d3U1QqXFxcInFcIixcInFfTlNzQ0cmQWElYFskMTR+JVwiLFwidFheKjAkdiVcIixcIl1lNjVQeSRxXCIsXCI2d05Tc0NMcVwiLFwiUG11QVBqcWI3XCIsXCJEZS87YDBeZ2FIcXxfajAmbWExZHJHQjREV1JNQ3FmWDczQEF8L209PWUrPzw2JlwiLFwiNHkyNSMqI35Nbj4scSY+R1BfdlA+ZzUwd1wiLFwiKWkzTWV7bTdqIy4/eyZsTHdWdlg5MX5pQlwiLFwibSgsU0E4dXJ4VldtRmpkaClpdlg7NHt8cVwiLFwiKTlOU1pEJHE6MUlRPzNpU1soR1hMWSt8NDY3ZHN+clxcXCIvc249fU8yXjc2Li5zflY8dCN+O3I+b25FI35ARV9GKUp9TTB+SjdKRyNpfHdiWGFPP3BYWj1jYHIuVCpRJntTeChoZjl7bTdqRjpUU2pwPF8qeWV7NSx8N1slRUgmdmNEc3BYWj1+PUFCbHU5YHZjP3NhZThVX3l7UGx1NnszY2pPbGV7NU9hMkZsK11tVjwpZEZfOj54XCIsXCJ9R3ZQKVwiLFwiODVNfHhiKCl3XCIsXCIlX0ZQXCIsXCJ0WF4qMCQ+aXdcIixcIik5PTVye0xxXCIsXCJvZGRsfGI0VEJcIixcIm43TmVcIixcIit3OF91IVlpeFZ7RiEmRCFhOXxlWyE/N1xcXCJBL00samg0aTlZUTs0IWltZXhAVCZcXFwiISs/fjt5JGY3QVtVZE0mclxcXCJ4Vlg7OHpBJTJGeXlzUWlcIixcIjNqaSlmQ0V7N1wiLFwiTFM3ZksrMClCXCIsXCJTZFJ6Sl5SIUpBMkRVczEoeTxcXFwiN1wiLFwiU2RSekpeOSVcIixcIjssWTshZzxxXCIsXCI1aVJGc1wiLFwiNTdDdixkUlksVH08KWRcXFwiO3ZHdkJcIixcIlUpYVJRJE1LKyRyLkQqZXBubjJ1XCIsXCJXd003KzUjNWtBdkBbQzdkLCQuX1wiLFwiNUA6T2NwO34ydUIwMUZKZ1ohMVBcIixcIjNqaSlmQ28lXCIsXCI4NU18eGJwJVwiLFwiZHdrUVJNTyVcIixcIlxcXCJHIz5LJFo0dlwiLFwiNEdlQVwiLFwiTnw3NTEqTGdRbj9sNmlGWWxGQ2UpXCIsXCJOfDc1MSp4XCIsXCIzJi8uJGl9IVwiLFwiQmwlZ18pRCFcIixcImhETjBCXCIsXCJTXFxcIk9IKGlLIVwiLFwiZSQkLmswQnVETlwiLFwiTExYaVNqTCpgbUFjd3pcIixcIklEcDBvS0I2aSxTUSpjMVVcIixcIilHdC5aZVIhXCIsXCIselI9dTRWIVwiLFwiL05qXFxcIlUpNiFcIixcInp6eUglZEIhXCIsXCJHRElkQlwiLFwiJSZUWkJcIixcIl4kYTBmSkBcIixcIltKVzVcXFwiYE02NVwiLFwidWs/LippOiFcIixcInImeFxcXCJ2W0BcIixcIkg4Mj12WjlQZFRWXCIsXCJnVUE9Jmk5MVJiVHh+az5mW2wwej9oMVRxKzM7I0t5XCIsXCJzVWExZltDQWs7RGNyOi5weEckXCIsXCJGeDk/SWY7IVwiLFwiXTRaSEcrTDUkXCIsXCJSa3gudDBeRTkrOFwiLFwiQjg+KEFkcW9kfnFjemp0aFwiLFwibFU5dTR+RyE+XCIsXCJzVV9ka01OIVwiLFwiVFF6MFdgWlF6XCIsXCJIPTsuTXBBIVwiLFwiUiRDZ3xWPDlcIixcIld4Py5LKWo1LGxMYk84NlwiLFwiJiZhMWZbfSFcIixcIjBmS2RUZTYhXCIsXCIzJiooXCIsXCJnNEhFOFFzOVwiLFwiR19FMUkpWUFkfnNKOVwiLFwiVFF6MFdgMDlcIixcIik0Mkcwc30zPlwiLFwiJiZfZGtNTiFcIixcInp6RTBINEBcIixcIjMmLy4+ZVIhXCIsXCJ2ayooXCIsXCJyNmQxSDRmbjVcIixcImdVKWQ/XCIsXCJ2a209XCIsXCJ5Nl1pOEl1IVwiLFwiZkxzKFwiLFwibUQvXFxcIiZpJDFobk9iOVwiLFwiZ3t3eEJLUSFcIixcIjJma3tSTWA5PlwiLFwiTmx4XFxcIl9kYkE1XCIsXCJma1goPXdJWyFcIixcIkhMKih+MFBvb1RcIixcIjVMcjVYXCIsXCJQTHVIdVwiLFwiXTRaSEcrMDlcIixcIm4meFxcXCJCNGhuNVwiLFwiW31GPS40fEFTNTsyM082XCIsXCI1UTI9KmlKNUxsfmJtanVmfUxGPVwiLFwiJiZhMWZbQ0FrO0RjcjoucHhHJFwiLFwibUdKRz9cIixcIjpMfkJaSy85XCIsXCI3eXsjLjRRITVsRGNGam9LJiZvXFxcIjRqaUFxM1wiLFwiWFF8MVJhVDExbm1zYGo6STo5OVwiLFwiZ3t3eEJLUGV6XCIsXCIzJi8uJGkwd0Y9R01ZIV92Z1UqKFwiLFwiXmZvcl1eVDlcIixcIm4meFxcXCJCNFEhXCIsXCIzJmEwd2F2IVwiLFwiXyYvLngwJSFcIixcIkhmVyN0YCw5XCIsXCIrey9cXFwiXCIsXCJlJGB6bXZVNkAzVzF2KjJ2VCZ4XFxcIiN2TXs6PV5WbDhYaDYmVWc/aHY2UVxcXCJAY2sqOnZlTUE/aUtkez0jcVJWKlk6QDNEP2A0PTldMWlpUGc2XCIsXCJOLntkWmVvcjVcIixcIi5SfDRGcHx2Rj1dMnFQdF9peTp7XCIsXCIuUnw0RnB8dkY9XTJNRFl2JiZAPVwiLFwiSHtqPmxSfFVsa3BcIl0sMHhjKSk7ZnVuY3Rpb24geUlSbDEzKCl7dmFyIHY3ZUJxX2c9W2Z1bmN0aW9uKCl7cmV0dXJuIGdsb2JhbFRoaXN9LGZ1bmN0aW9uKCl7cmV0dXJuIFZFOXdrZltcImNtVThZN1wiXX0sZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93fSxmdW5jdGlvbigpe3JldHVybiBuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfV0saHFHN0p1bCx6WnhKRVJKLGVGTzBYbk07QlVPVkxsaShocUc3SnVsPXZvaWQgMHgwLHpaeEpFUko9W10pO3RyeXtCVU9WTGxpKGhxRzdKdWw9T2JqZWN0LHpaeEpFUkpbUzR6OEFsWzB4Y11dKFwiXCIuX19wcm90b19fLmNvbnN0cnVjdG9yLm5hbWUpKX1jYXRjaChialUyWmcpe31kaFVBSGRmOmZvcihlRk8wWG5NPVM0ejhBbFsweDBdO2VGTzBYbk08djdlQnFfZ1tTNHo4QWxbMHg0XV07ZUZPMFhuTSsrKXRyeXt2YXIgeE5Kckd4O2hxRzdKdWw9djdlQnFfZ1tlRk8wWG5NXSgpO2Zvcih4TkpyR3g9UzR6OEFsWzB4MF07eE5Kckd4PHpaeEpFUkpbUzR6OEFsWzB4NF1dO3hOSnJHeCsrKWlmKHR5cGVvZiBocUc3SnVsW3paeEpFUkpbeE5Kckd4XV09PT1TNHo4QWxbMHg1XSljb250aW51ZSBkaFVBSGRmO3JldHVybiBocUc3SnVsfWNhdGNoKGJqVTJaZyl7fXJldHVybiBocUc3SnVsfHx0aGlzfUJVT1ZMbGkoelp4SkVSSj15SVJsMTMoKXx8e30sZUZPMFhuTT16WnhKRVJKLlRleHREZWNvZGVyLGJqVTJaZz16WnhKRVJKLlVpbnQ4QXJyYXkseE5Kckd4PXpaeEpFUkouQnVmZmVyLE93clY2ZT16WnhKRVJKLlN0cmluZ3x8U3RyaW5nLFU2bGg0Zj16WnhKRVJKLkFycmF5fHxBcnJheSxQNkNQMUJmPWZ1bmN0aW9uKC4uLnY3ZUJxX2cpe3ZhciBocUc3SnVsLHpaeEpFUko7ZnVuY3Rpb24qZUZPMFhuTSh6WnhKRVJKLGVGTzBYbk0sYmpVMlpnLHhOSnJHeCxQNkNQMUJmPXtnN1hiVWRvOnt9fSl7d2hpbGUoelp4SkVSSitlRk8wWG5NK2JqVTJaZyt4TkpyR3ghPT0weGJkKXdpdGgoUDZDUDFCZi54RDJDZ1hOfHxQNkNQMUJmKXN3aXRjaCh6WnhKRVJKK2VGTzBYbk0rYmpVMlpnK3hOSnJHeCl7Y2FzZSBialUyWmctIC0weDEwNTpjYXNlLTB4YTk6QlVPVkxsaSh2N2VCcV9nW1M0ejhBbFt6WnhKRVJKKy0weDgxXV09T3dyVjZlW1M0ejhBbFsweDldXXx8T3dyVjZlLmZyb21DaGFyQ29kZSx2N2VCcV9nWy1TNHo4QWxbMHg2XV09W10pO3JldHVybiBocUc3SnVsPSEweDAsZnVuY3Rpb24oelp4SkVSSil7dmFyIGVGTzBYbk0sYmpVMlpnLHhOSnJHeCxQNkNQMUJmO0JVT1ZMbGkoYmpVMlpnPXZvaWQgMHgwLHhOSnJHeD16WnhKRVJKW1M0ejhBbFsweDRdXSx2N2VCcV9nWy1TNHo4QWxbMHg2XV1bUzR6OEFsWzB4NF1dPVM0ejhBbFsweDBdKTtmb3IoUDZDUDFCZj1TNHo4QWxbMHgwXTtQNkNQMUJmPHhOSnJHeDspe0JVT1ZMbGkoYmpVMlpnPXpaeEpFUkpbUDZDUDFCZisrXSxialUyWmc8PVM0ejhBbFsweDFjXT9lRk8wWG5NPWJqVTJaZzpialUyWmc8PVM0ejhBbFsweDFmXT9lRk8wWG5NPShialUyWmcmUzR6OEFsWzB4MThlXSk8PFM0ejhBbFsweDhdfHpaeEpFUkpbUDZDUDFCZisrXSZTNHo4QWxbMHg3XTpialUyWmc8PVM0ejhBbFsweDIxXT9lRk8wWG5NPShialUyWmcmUzR6OEFsWzB4YzZdKTw8UzR6OEFsWzB4Yl18KHpaeEpFUkpbUDZDUDFCZisrXSZTNHo4QWxbMHg3XSk8PFM0ejhBbFsweDhdfHpaeEpFUkpbUDZDUDFCZisrXSZTNHo4QWxbMHg3XTpPd3JWNmVbUzR6OEFsWzB4OV1dP2VGTzBYbk09KGJqVTJaZyZTNHo4QWxbMHhhXSk8PFM0ejhBbFsweDM3XXwoelp4SkVSSltQNkNQMUJmKytdJlM0ejhBbFsweDddKTw8UzR6OEFsWzB4Yl18KHpaeEpFUkpbUDZDUDFCZisrXSZTNHo4QWxbMHg3XSk8PFM0ejhBbFsweDhdfHpaeEpFUkpbUDZDUDFCZisrXSZTNHo4QWxbMHg3XTooZUZPMFhuTT1TNHo4QWxbMHg3XSxQNkNQMUJmKz1TNHo4QWxbMHgzMl0pLHY3ZUJxX2dbLVM0ejhBbFsweDZdXVtTNHo4QWxbMHhjXV0odjdlQnFfZ1tTNHo4QWxbMHhkXV1bZUZPMFhuTV18fCh2N2VCcV9nW1M0ejhBbFsweGRdXVtlRk8wWG5NXT12N2VCcV9nW1M0ejhBbFsweDFdXShlRk8wWG5NKSkpKX1yZXR1cm4gdjdlQnFfZ1stUzR6OEFsWzB4Nl1dLmpvaW4oXCJcIil9O2Nhc2UtMHgyNjpCVU9WTGxpKHY3ZUJxX2dbUzR6OEFsWzB4MV1dPU93clY2ZVtTNHo4QWxbZUZPMFhuTSstMHg3YV1dfHxPd3JWNmUuZnJvbUNoYXJDb2RlLHY3ZUJxX2dbLVM0ejhBbFsweDZdXT1bXSk7cmV0dXJuIGhxRzdKdWw9ITB4MCxmdW5jdGlvbih6WnhKRVJKKXt2YXIgZUZPMFhuTSxialUyWmcseE5Kckd4LFA2Q1AxQmY7QlVPVkxsaShialUyWmc9dm9pZCAweDAseE5Kckd4PXpaeEpFUkpbUzR6OEFsWzB4NF1dLHY3ZUJxX2dbLVM0ejhBbFsweDZdXVtTNHo4QWxbMHg0XV09UzR6OEFsWzB4MF0pO2ZvcihQNkNQMUJmPVM0ejhBbFsweDBdO1A2Q1AxQmY8eE5Kckd4Oyl7QlVPVkxsaShialUyWmc9elp4SkVSSltQNkNQMUJmKytdLGJqVTJaZzw9UzR6OEFsWzB4MWNdP2VGTzBYbk09YmpVMlpnOmJqVTJaZzw9UzR6OEFsWzB4MWZdP2VGTzBYbk09KGJqVTJaZyZTNHo4QWxbMHgxOGVdKTw8UzR6OEFsWzB4OF18elp4SkVSSltQNkNQMUJmKytdJlM0ejhBbFsweDddOmJqVTJaZzw9UzR6OEFsWzB4MjFdP2VGTzBYbk09KGJqVTJaZyZTNHo4QWxbMHhjNl0pPDxTNHo4QWxbMHhiXXwoelp4SkVSSltQNkNQMUJmKytdJlM0ejhBbFsweDddKTw8UzR6OEFsWzB4OF18elp4SkVSSltQNkNQMUJmKytdJlM0ejhBbFsweDddOk93clY2ZVtTNHo4QWxbMHg5XV0/ZUZPMFhuTT0oYmpVMlpnJlM0ejhBbFsweGFdKTw8UzR6OEFsWzB4MzddfCh6WnhKRVJKW1A2Q1AxQmYrK10mUzR6OEFsWzB4N10pPDxTNHo4QWxbMHhiXXwoelp4SkVSSltQNkNQMUJmKytdJlM0ejhBbFsweDddKTw8UzR6OEFsWzB4OF18elp4SkVSSltQNkNQMUJmKytdJlM0ejhBbFsweDddOihlRk8wWG5NPVM0ejhBbFsweDddLFA2Q1AxQmYrPVM0ejhBbFsweDMyXSksdjdlQnFfZ1stUzR6OEFsWzB4Nl1dW1M0ejhBbFsweGNdXSh2N2VCcV9nW1M0ejhBbFsweGRdXVtlRk8wWG5NXXx8KHY3ZUJxX2dbUzR6OEFsWzB4ZF1dW2VGTzBYbk1dPXY3ZUJxX2dbUzR6OEFsWzB4MV1dKGVGTzBYbk0pKSkpfXJldHVybiB2N2VCcV9nWy1TNHo4QWxbMHg2XV0uam9pbihcIlwiKX07Y2FzZS0weDdjOmNhc2UgMHg1OkJVT1ZMbGkoW1A2Q1AxQmYuZzdYYlVkby5peGc5SHRiLFA2Q1AxQmYuZzdYYlVkby5WdGlLM01JLFA2Q1AxQmYuZzdYYlVkby5icExRbmtdPVstMHgyNSwtMHg5OCwweDRiXSx2N2VCcV9nW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgwXSx2N2VCcV9nW1M0ejhBbFsweGRdXT1uZXcgVTZsaDRmKFM0ejhBbFsweDFkXSksUDZDUDFCZi54RDJDZ1hOPVA2Q1AxQmYuZzdYYlVkbyx6WnhKRVJKKz0weGJmLGVGTzBYbk0rPTB4YjgsYmpVMlpnKz0tMHg0NSx4TkpyR3grPS0weDg1KTticmVhaztjYXNlIDB4ZWQ6Y2FzZSB6WnhKRVJKLSAtMHg3YjpCVU9WTGxpKFA2Q1AxQmYueEQyQ2dYTj1QNkNQMUJmLmc3WGJVZG8selp4SkVSSis9MHgxNDMsZUZPMFhuTSs9LTB4MWUwLGJqVTJaZys9MHg3Mix4TkpyR3grPTB4ZjYpO2JyZWFrO2Nhc2UtMHg4MDpjYXNlIDB4Mjk6QlVPVkxsaShbUDZDUDFCZi5nN1hiVWRvLml4ZzlIdGIsUDZDUDFCZi5nN1hiVWRvLlZ0aUszTUksUDZDUDFCZi5nN1hiVWRvLmJwTFFua109WzB4NjIsLTB4MjMsMHhkMF0sUDZDUDFCZi54RDJDZ1hOPVA2Q1AxQmYuZzdYYlVkbyx6WnhKRVJKKz0weDE0MyxlRk8wWG5NKz0tMHgxZTAseE5Kckd4Kz0weGY2KTticmVhaztjYXNlIGVGTzBYbk0tIC0weGFiOmNhc2UtMHhiMjpjYXNlIDB4YjE6QlVPVkxsaShQNkNQMUJmLnhEMkNnWE49UDZDUDFCZi5nN1hiVWRvLHpaeEpFUkorPTB4MyxlRk8wWG5NKz0weGM2LGJqVTJaZys9LTB4YWUseE5Kckd4Kz0tMHg2Yyk7YnJlYWs7Y2FzZSBQNkNQMUJmLmc3WGJVZG8uaXhnOUh0YistMHgxODpkZWZhdWx0OkJVT1ZMbGkoUDZDUDFCZi54RDJDZ1hOPVA2Q1AxQmYuZzdYYlVkbyx6WnhKRVJKKz0weDE0NixlRk8wWG5NKz0weGM2LGJqVTJaZys9LTB4YWUseE5Kckd4Kz0tMHhmMCk7YnJlYWt9fUJVT1ZMbGkoaHFHN0p1bD12b2lkIDB4MCx6WnhKRVJKPWVGTzBYbk0oLTB4M2QsLTB4MWIsLTB4OGYsMHg2YikubmV4dCgpLnZhbHVlKTtpZihocUc3SnVsKXtyZXR1cm4gelp4SkVSSn19KCkpO2Z1bmN0aW9uIEdlRFM3ZkEodjdlQnFfZyl7cmV0dXJuIHR5cGVvZiBlRk8wWG5NIT09UzR6OEFsWzB4NV0mJmVGTzBYbk0/bmV3IGVGTzBYbk0oKS5kZWNvZGUobmV3IGJqVTJaZyh2N2VCcV9nKSk6dHlwZW9mIHhOSnJHeCE9PVM0ejhBbFsweDVdJiZ4TkpyR3g/eE5Kckd4LmZyb20odjdlQnFfZykudG9TdHJpbmcoXCJ1dGYtOFwiKTpQNkNQMUJmKHY3ZUJxX2cpfV9NeEtKcG09ZFF4UVpSaygpO2Z1bmN0aW9uIGRReFFaUmsoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweGZdXT1bZnVuY3Rpb24oKXtyZXR1cm4gZ2xvYmFsVGhpc30sZnVuY3Rpb24oKXtyZXR1cm4gVkU5d2tmW1wiY21VOFk3XCJdfSxmdW5jdGlvbigpe3JldHVybiB3aW5kb3d9LGZ1bmN0aW9uKCl7Y202ajdtcyh6WnhKRVJKKTtmdW5jdGlvbiB6WnhKRVJKKC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0selp4SkVSSltTNHo4QWxbMHgxXV09XCJXdSR2PDYweHo0fSF8LHdgOStIMURrVTpGPjNNVC5ZPUpiZmhLXFxcIjhzWGVSJW5kXlZDcWwmZ1A3YUJRaS8qR0lAKEVtTzJwQWpMeVtdUztOeylfI29yYz90WjV+XCIselp4SkVSSltTNHo4QWxbMHhlXV09XCJcIisoelp4SkVSSltTNHo4QWxbMHgwXV18fFwiXCIpLHpaeEpFUkpbUzR6OEFsWzB4MTBdXT16WnhKRVJKW1M0ejhBbFsweGVdXS5sZW5ndGgselp4SkVSSltTNHo4QWxbMHgxOF1dPVtdLHpaeEpFUkpbUzR6OEFsWzB4Zl1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4OF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4MTJdXT0tUzR6OEFsWzB4MV0pO2Zvcih6WnhKRVJKW1M0ejhBbFsweDJdXT1TNHo4QWxbMHgwXTt6WnhKRVJKW1M0ejhBbFsweDJdXTx6WnhKRVJKW1M0ejhBbFsweDEwXV07elp4SkVSSltTNHo4QWxbMHgyXV0rKyl7elp4SkVSSltTNHo4QWxbMHgxMV1dPXpaeEpFUkpbUzR6OEFsWzB4MV1dLmluZGV4T2Yoelp4SkVSSltTNHo4QWxbMHhlXV1belp4SkVSSltTNHo4QWxbMHgyXV1dKTtpZih6WnhKRVJKW1M0ejhBbFsweDExXV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSltTNHo4QWxbMHgxMl1dPFM0ejhBbFsweDBdKXt6WnhKRVJKW1M0ejhBbFsweDEyXV09elp4SkVSSltTNHo4QWxbMHgxMV1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDEyXV0rPXpaeEpFUkpbUzR6OEFsWzB4MTFdXSpTNHo4QWxbMHgxM10selp4SkVSSltTNHo4QWxbMHhmXV18PXpaeEpFUkpbUzR6OEFsWzB4MTJdXTw8elp4SkVSSltTNHo4QWxbMHg4XV0selp4SkVSSltTNHo4QWxbMHg4XV0rPSh6WnhKRVJKW1M0ejhBbFsweDEyXV0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDE4XV0ucHVzaCh6WnhKRVJKW1M0ejhBbFsweGZdXSZTNHo4QWxbMHgzXSkselp4SkVSSltTNHo4QWxbMHhmXV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKW1M0ejhBbFsweDhdXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4OF1dPlM0ejhBbFsweGFdKTt6WnhKRVJKW1M0ejhBbFsweDEyXV09LVM0ejhBbFsweDFdfX1pZih6WnhKRVJKW1M0ejhBbFsweDEyXV0+LVM0ejhBbFsweDFdKXt6WnhKRVJKW1M0ejhBbFsweDE4XV0ucHVzaCgoelp4SkVSSltTNHo4QWxbMHhmXV18elp4SkVSSltTNHo4QWxbMHgxMl1dPDx6WnhKRVJKW1M0ejhBbFsweDhdXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKHpaeEpFUkpbUzR6OEFsWzB4MThdXSl9ZnVuY3Rpb24gZUZPMFhuTShlRk8wWG5NKXtpZih0eXBlb2YgdjdlQnFfZ1tlRk8wWG5NXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1tlRk8wWG5NXT16WnhKRVJKKGhxRzdKdWxbZUZPMFhuTV0pfXJldHVybiB2N2VCcV9nW2VGTzBYbk1dfXJldHVybiBuZXcgRnVuY3Rpb24oZUZPMFhuTShTNHo4QWxbMHgyMl0pKSgpfV0selp4SkVSSltTNHo4QWxbMHgxOV1dPVM0ejhBbFsweDFjNl0selp4SkVSSltTNHo4QWxbMHhlXV09W10pO3RyeXtmdW5jdGlvbiBlRk8wWG5NKHpaeEpFUkope3ZhciBlRk8wWG5NPVwiZEFbT0JvS3BRR0VUdTo2O0M3PCFWLDEzPjh2Uk1lXFxcIntEdE4qQFUlWS9GaGF6NC5MU3MpbEheXXJ3K34mWD14X2dKYkl5I3FaJGNgbXxmaX1uaj8wUGs5VzI1KFwiLGJqVTJaZyx4TkpyR3gsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLF9NeEtKcG0sdjdlQnFfZztCVU9WTGxpKGJqVTJaZz1cIlwiKyh6WnhKRVJKfHxcIlwiKSx4TkpyR3g9YmpVMlpnLmxlbmd0aCxPd3JWNmU9W10sVTZsaDRmPVM0ejhBbFsweDBdLFA2Q1AxQmY9UzR6OEFsWzB4MF0sX014S0pwbT0tUzR6OEFsWzB4MV0pO2Zvcih2N2VCcV9nPVM0ejhBbFsweDBdO3Y3ZUJxX2c8eE5Kckd4O3Y3ZUJxX2crKyl7dmFyIGhxRzdKdWw9ZUZPMFhuTS5pbmRleE9mKGJqVTJaZ1t2N2VCcV9nXSk7aWYoaHFHN0p1bD09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZihfTXhLSnBtPFM0ejhBbFsweDBdKXtfTXhLSnBtPWhxRzdKdWx9ZWxzZXtCVU9WTGxpKF9NeEtKcG0rPWhxRzdKdWwqUzR6OEFsWzB4MTNdLFU2bGg0Znw9X014S0pwbTw8UDZDUDFCZixQNkNQMUJmKz0oX014S0pwbSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKE93clY2ZS5wdXNoKFU2bGg0ZiZTNHo4QWxbMHgzXSksVTZsaDRmPj49UzR6OEFsWzB4Ml0sUDZDUDFCZi09UzR6OEFsWzB4Ml0pfXdoaWxlKFA2Q1AxQmY+UzR6OEFsWzB4YV0pO19NeEtKcG09LVM0ejhBbFsweDFdfX1pZihfTXhLSnBtPi1TNHo4QWxbMHgxXSl7T3dyVjZlLnB1c2goKFU2bGg0ZnxfTXhLSnBtPDxQNkNQMUJmKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoT3dyVjZlKX1mdW5jdGlvbiBialUyWmcoelp4SkVSSil7aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSl09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl09ZUZPMFhuTShocUc3SnVsW3paeEpFUkpdKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXX1CVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MTldXT1PYmplY3Qselp4SkVSSltTNHo4QWxbMHhlXV1bYmpVMlpnKFM0ejhBbFsweGNjXSldKFwiXCJbYmpVMlpnKFM0ejhBbFsweDhhXSkrYmpVMlpnKDB4NzEpXVtialUyWmcoUzR6OEFsWzB4YjRdKV1bYmpVMlpnKFM0ejhBbFsweDlkXSldKSl9Y2F0Y2goeE5Kckd4KXt9Q1BWenZ6OmZvcih6WnhKRVJKW1M0ejhBbFsweDFhXV09UzR6OEFsWzB4MF07elp4SkVSSltTNHo4QWxbMHgxYV1dPHpaeEpFUkpbUzR6OEFsWzB4Zl1dW21WMGRBaVQoUzR6OEFsWzB4YzhdKV07elp4SkVSSltTNHo4QWxbMHgxYV1dKyspdHJ5e2NtNmo3bXMoVTZsaDRmKTtmdW5jdGlvbiBPd3JWNmUoelp4SkVSSil7dmFyIGVGTzBYbk09XCJQY1k3dW0pQC5qMTNhL35gXFxcIkUwP3Q9U2xEOlI8WGRyVVt5Tl0kTHt2QyFpd294JmdwSzJmX0JKbiVBRlpUfU1rKEg+SXpRVmI7XjlHZSxxV2hzIzU4fDQrNk8qXCIsYmpVMlpnLHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsX014S0pwbSx2N2VCcV9nO0JVT1ZMbGkoYmpVMlpnPVwiXCIrKHpaeEpFUkp8fFwiXCIpLHhOSnJHeD1ialUyWmcubGVuZ3RoLE93clY2ZT1bXSxVNmxoNGY9UzR6OEFsWzB4MF0sUDZDUDFCZj1TNHo4QWxbMHgwXSxfTXhLSnBtPS1TNHo4QWxbMHgxXSk7Zm9yKHY3ZUJxX2c9UzR6OEFsWzB4MF07djdlQnFfZzx4TkpyR3g7djdlQnFfZysrKXt2YXIgaHFHN0p1bD1lRk8wWG5NLmluZGV4T2YoYmpVMlpnW3Y3ZUJxX2ddKTtpZihocUc3SnVsPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKF9NeEtKcG08UzR6OEFsWzB4MF0pe19NeEtKcG09aHFHN0p1bH1lbHNle0JVT1ZMbGkoX014S0pwbSs9aHFHN0p1bCpTNHo4QWxbMHgxM10sVTZsaDRmfD1fTXhLSnBtPDxQNkNQMUJmLFA2Q1AxQmYrPShfTXhLSnBtJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoT3dyVjZlLnB1c2goVTZsaDRmJlM0ejhBbFsweDNdKSxVNmxoNGY+Pj1TNHo4QWxbMHgyXSxQNkNQMUJmLT1TNHo4QWxbMHgyXSl9d2hpbGUoUDZDUDFCZj5TNHo4QWxbMHhhXSk7X014S0pwbT0tUzR6OEFsWzB4MV19fWlmKF9NeEtKcG0+LVM0ejhBbFsweDFdKXtPd3JWNmUucHVzaCgoVTZsaDRmfF9NeEtKcG08PFA2Q1AxQmYpJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQShPd3JWNmUpfWZ1bmN0aW9uIFU2bGg0ZiguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPU93clY2ZShocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfXpaeEpFUkpbUzR6OEFsWzB4MTldXT16WnhKRVJKW1M0ejhBbFsweGZdXVt6WnhKRVJKW1M0ejhBbFsweDFhXV1dKCk7Zm9yKHpaeEpFUkpbUzR6OEFsWzB4MWJdXT1TNHo4QWxbMHgwXTt6WnhKRVJKW1M0ejhBbFsweDFiXV08elp4SkVSSltTNHo4QWxbMHhlXV1bVTZsaDRmKDB4NzUpXTt6WnhKRVJKW1M0ejhBbFsweDFiXV0rKyl7Y202ajdtcyhfTXhLSnBtKTtmdW5jdGlvbiBQNkNQMUJmKHpaeEpFUkope3ZhciBlRk8wWG5NPVwiVHU0QE0wM34hbSpyLEF2eEJPcXtnZWFESWZdfSM6JENuSjxLelxcXCJed1suRWxMeXRVNzkrUUYyUztZSCkxaGI/YG81JShOWi9qZFBSc19pa1dwPjZ8Rz0mVlhjOFwiLGJqVTJaZyx4TkpyR3gsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLF9NeEtKcG0sdjdlQnFfZztCVU9WTGxpKGJqVTJaZz1cIlwiKyh6WnhKRVJKfHxcIlwiKSx4TkpyR3g9YmpVMlpnLmxlbmd0aCxPd3JWNmU9W10sVTZsaDRmPVM0ejhBbFsweDBdLFA2Q1AxQmY9UzR6OEFsWzB4MF0sX014S0pwbT0tUzR6OEFsWzB4MV0pO2Zvcih2N2VCcV9nPVM0ejhBbFsweDBdO3Y3ZUJxX2c8eE5Kckd4O3Y3ZUJxX2crKyl7dmFyIGhxRzdKdWw9ZUZPMFhuTS5pbmRleE9mKGJqVTJaZ1t2N2VCcV9nXSk7aWYoaHFHN0p1bD09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZihfTXhLSnBtPFM0ejhBbFsweDBdKXtfTXhLSnBtPWhxRzdKdWx9ZWxzZXtCVU9WTGxpKF9NeEtKcG0rPWhxRzdKdWwqUzR6OEFsWzB4MTNdLFU2bGg0Znw9X014S0pwbTw8UDZDUDFCZixQNkNQMUJmKz0oX014S0pwbSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKE93clY2ZS5wdXNoKFU2bGg0ZiZTNHo4QWxbMHgzXSksVTZsaDRmPj49UzR6OEFsWzB4Ml0sUDZDUDFCZi09UzR6OEFsWzB4Ml0pfXdoaWxlKFA2Q1AxQmY+UzR6OEFsWzB4YV0pO19NeEtKcG09LVM0ejhBbFsweDFdfX1pZihfTXhLSnBtPi1TNHo4QWxbMHgxXSl7T3dyVjZlLnB1c2goKFU2bGg0ZnxfTXhLSnBtPDxQNkNQMUJmKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoT3dyVjZlKX1mdW5jdGlvbiBfTXhLSnBtKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09UDZDUDFCZihocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfWlmKHR5cGVvZiB6WnhKRVJKW1M0ejhBbFsweDE5XV1belp4SkVSSltTNHo4QWxbMHhlXV1belp4SkVSSltTNHo4QWxbMHgxYl1dXV09PT1fTXhLSnBtKDB4NzYpKWNvbnRpbnVlIENQVnp2en1yZXR1cm4gelp4SkVSSltTNHo4QWxbMHgxOV1dfWNhdGNoKHhOSnJHeCl7fXJldHVybiB6WnhKRVJKW1M0ejhBbFsweDE5XV18fHRoaXN9ZnVuY3Rpb24gTGJEVUF2KC4uLnpaeEpFUkope3ZhciBlRk8wWG5NLGJqVTJaZztmdW5jdGlvbip4TkpyR3goYmpVMlpnLE93clY2ZSxVNmxoNGYsUDZDUDFCZixiREp4V1Q9e21mTWNmMjp7fX0sRTZfS1JaKXt3aGlsZShialUyWmcrT3dyVjZlK1U2bGg0ZitQNkNQMUJmIT09MHg0ZSl3aXRoKGJESnhXVC5pSXV3Rll8fGJESnhXVClzd2l0Y2goYmpVMlpnK093clY2ZStVNmxoNGYrUDZDUDFCZil7Y2FzZSAweDQ0OkJVT1ZMbGkoYkRKeFdULm1mTWNmMi5BMUVKSGV3PTB4NmMsbWZNY2YyLmtWWVcxaj1mdW5jdGlvbiguLi5ialUyWmcpe3JldHVybiB4TkpyR3goLTB4M2YsLTB4ZjAsLTB4NzIsMHgxODYse21mTWNmMjpiREp4V1QubWZNY2YyLHVZeFRxZjp7fX0sYmpVMlpnKS5uZXh0KCkudmFsdWV9LG1mTWNmMi56eGxEUFo9ZnVuY3Rpb24oLi4uYmpVMlpnKXtyZXR1cm4geE5Kckd4KDB4MjVkLC0weGYwLC0weGY3LDB4MTgse21mTWNmMjpiREp4V1QubWZNY2YyLEFJazBmRzp7fX0sYmpVMlpnKS5uZXh0KCkudmFsdWV9LHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLGNtNmo3bXMobWZNY2YyLmtWWVcxaiksYkRKeFdULmlJdXdGWT1iREp4V1QubWZNY2YyLGJqVTJaZys9LTB4MTcxLE93clY2ZSs9MHgxNDYsVTZsaDRmKz0tMHgxMWUsUDZDUDFCZis9MHgxMDMpO2JyZWFrO2Nhc2UgT3dyVjZlLSAtMHhlOTpyZXR1cm4gR2VEUzdmQShzU3NQb3QwKTtjYXNlLTB4Mjpzd2l0Y2goelp4SkVSSltTNHo4QWxbVTZsaDRmKzB4ODBdXSl7Y2FzZSgweDEsa1ZZVzFqKShPd3JWNmUrMHgxZik6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKShTNHo4QWxbMHhiOF0pXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFsweDFkOF0pK1M0ejhBbFtialUyWmcrMHhhNF06cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweDdhKV07Y2FzZSgweDEsa1ZZVzFqKShVNmxoNGYrMHhmYikrUzR6OEFsWzB4MWVdOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoVTZsaDRmKzB4ZmMpXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFtVNmxoNGYrMHhmOV0pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoMHg3ZSldO2Nhc2UoMHgxLGtWWVcxaikoUzR6OEFsW093clY2ZSstMHgzY10pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4MWRdKStcIktcIl07Y2FzZSgweDEsa1ZZVzFqKSgweDgxKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFtVNmxoNGYrMHhlZV0pXTtjYXNlKDB4MSxrVllXMWopKDB4ODMpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoMHg4NCldO2Nhc2UoMHgxLGtWWVcxaikoVTZsaDRmKzB4MTA1KTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweGEzXSldO2Nhc2UoMHgxLGtWWVcxaikoT3dyVjZlKzB4MmYpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoVTZsaDRmKzB4MTA4KV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHg0Yl0pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoVTZsaDRmKzB4MTBhKV07Y2FzZSgweDEsa1ZZVzFqKSgweDhiKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFtialUyWmcrMHhmNl0pXTtjYXNlKDB4MSxrVllXMWopKE93clY2ZSsweDM1KTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDhjXSldO2Nhc2UoMHgxLGtWWVcxaikoT3dyVjZlKzB4MzcpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoMHg5MCldO2Nhc2UoMHgxLGtWWVcxaikoT3dyVjZlKzB4MzkpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsW2JqVTJaZysweGEzXSkrUzR6OEFsWzB4MzFdXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFtPd3JWNmUrMHhiMV0pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoMHg5NCldO2Nhc2UoMHgxLGtWWVcxaikoMHg5NSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKShVNmxoNGYrMHgxMTYpXTtjYXNlKDB4MSxrVllXMWopKDB4OTcpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4OGJdKV07Y2FzZSgweDEsa1ZZVzFqKSgweDk5KTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4OWEpXTtjYXNlKDB4MSxrVllXMWopKDB4OWIpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4N2VdKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHg5ZV0pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4YmZdKV07Y2FzZSgweDEsa1ZZVzFqKSgweDlmKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDE4YV0pXTtjYXNlKDB4MSxrVllXMWopKDB4YTEpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4ODRdKV07Y2FzZSgweDEsa1ZZVzFqKSgweGEzKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4YTQpXTtjYXNlKDB4MSxrVllXMWopKDB4YTUpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4MTBiXSldO2Nhc2UoMHgxLGtWWVcxaikoMHhhNyk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGE4KV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHg0Zl0pK1M0ejhBbFsweDFlXTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4YWEpXTtjYXNlKDB4MSxrVllXMWopKDB4YWIpK1M0ejhBbFsweDdjXTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFtialUyWmcrMHgxMjFdKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHgxMGFdKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDEwM10pXTtjYXNlKDB4MSxrVllXMWopKGJqVTJaZysweDEwNSkrUzR6OEFsWzB4MzhdOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsW2JqVTJaZysweDE5N10pXTtjYXNlKDB4MSxrVllXMWopKGJqVTJaZysweDEwNyk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGIyKV07Y2FzZSgweDEsa1ZZVzFqKSgweGIzKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4YjQpXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFsweGM3XSkrUzR6OEFsWzB4NjRdOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4OTZdKStcInBcIl07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbT3dyVjZlKzB4MjddKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweGI2XSldO2Nhc2UoMHgxLGtWWVcxaikoMHhiOSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGJhKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHgxOTJdKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4YmMpXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFsweGM1XSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGJlKV07Y2FzZSgweDEsa1ZZVzFqKShialUyWmcrMHgxMTUpK1wiUFwiOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4NzZdKV07Y2FzZSgweDEsa1ZZVzFqKSgweGMxKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweGQ4XSldO2Nhc2UoMHgxLGtWWVcxaikoMHhjMyk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKShTNHo4QWxbMHg2Zl0pXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFtVNmxoNGYrMHgxMWZdKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDEyNl0pXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFsweGQ5XSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGM4KV07Y2FzZSgweDEsa1ZZVzFqKSgweGM5KTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDE2YV0pXTtjYXNlKDB4MSxrVllXMWopKDB4Y2IpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoMHhjYyldO2Nhc2UoMHgxLGtWWVcxaikoMHhjZCk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGNlKV07Y2FzZSgweDEsa1ZZVzFqKSgweGNmKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDEwMl0pKygweDEsa1ZZVzFqKSgweGQxKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHhiZF0pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4OTVdKV07Y2FzZSgweDEsa1ZZVzFqKSgweGQ0KTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4ZDUpKygweDEsa1ZZVzFqKSgweGQ2KV07Y2FzZSgweDEsa1ZZVzFqKShialUyWmcrMHgxMmQpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4ODNdKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHgxMjhdKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4ZGEpXTtjYXNlKDB4MSxrVllXMWopKDB4ZGIpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4Y2ZdKV07Y2FzZSgweDEsa1ZZVzFqKSgweGRkKStTNHo4QWxbMHgxN2FdOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4YzNdKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHgxZl0pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4MThmXSldO2Nhc2UoMHgxLGtWWVcxaikoMHhlMSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKShTNHo4QWxbMHgxMmNdKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHhkNF0pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoMHhlNCldO2Nhc2UoMHgxLGtWWVcxaikoMHhlNSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGU2KV19QlVPVkxsaShiREp4V1QuaUl1d0ZZPWJESnhXVC5tT2I4WU0sYmpVMlpnKz0weGUyLE93clY2ZSs9LTB4ZTQsUDZDUDFCZis9MHg1Mik7YnJlYWs7Y2FzZSAweDMwOmNhc2UtMHg5YjpjYXNlIGJESnhXVC5tZk1jZjIuQTFFSkhldysweDIyOkJVT1ZMbGkoW0FJazBmRy5BWkxPRTdWXT1FNl9LUlosQUlrMGZHLlRpZGplXzc9XCJYSERJYXJqYjBnMkVMX2tuWXQsQT5oOEI9I2Z1Jl40dktGKlNxVFJzL2NDd2Q1RyguKzl4Snk6XFxcImxaaU4xPFZRbVtQVU16cG97ZSRXP3x+YH1dJTYpN0A7IU8zXCIsQUlrMGZHLnJId3pINj1cIlwiKyhBSWswZkcuQVpMT0U3Vnx8XCJcIiksQUlrMGZHLllDUVNqTj1BSWswZkcuckh3ekg2Lmxlbmd0aCxBSWswZkcuc1NzUG90MD1bXSxiREp4V1QuaUl1d0ZZPWJESnhXVC5BSWswZkcsYmpVMlpnKz0tMHgzYWQsVTZsaDRmKz0weDE4YSxQNkNQMUJmKz0weGIzKTticmVhaztjYXNlIFU2bGg0Zi0weDE3NTpCVU9WTGxpKGJESnhXVC5BSWswZkcuSDljRk9oPVM0ejhBbFsweDBdLGJESnhXVC5BSWswZkcuR1FNejFmUj1TNHo4QWxbT3dyVjZlKzB4ZjBdLGJESnhXVC5pSXV3Rlk9YkRKeFdULkFJazBmRyxialUyWmcrPTB4MWMxLFU2bGg0Zis9LTB4NDkpO2JyZWFrO2RlZmF1bHQ6QlVPVkxsaShzU3NQb3QwLnB1c2goKEg5Y0ZPaHxudHExeVA8PEdRTXoxZlIpJlM0ejhBbFsweDNdKSxiREp4V1QuaUl1d0ZZPWJESnhXVC5BSWswZkcsYmpVMlpnKz0tMHgxYjYsUDZDUDFCZis9MHgyMGMpO2JyZWFrO2Nhc2UgYmpVMlpnLTB4NzE6YkRKeFdULm1mTWNmMi5BMUVKSGV3PS0weDFmO3N3aXRjaCh6WnhKRVJKW1M0ejhBbFsweDBdXSl7Y2FzZSgweDEsa1ZZVzFqKSgweDc3KTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweGI4XSldO2Nhc2UoMHgxLGtWWVcxaikoUzR6OEFsWzB4MWQ4XSkrUzR6OEFsWzB4NGVdOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoMHg3YSldO2Nhc2UoMHgxLGtWWVcxaikoMHg3YikrUzR6OEFsWzB4MWVdOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoMHg3YyldO2Nhc2UoMHgxLGtWWVcxaikoUzR6OEFsWzB4NzldKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4N2UpXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFsweDFjXSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKShTNHo4QWxbMHgxZF0pK1wiS1wiXTtjYXNlKDB4MSxrVllXMWopKDB4ODEpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4NmVdKV07Y2FzZSgweDEsa1ZZVzFqKSgweDgzKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4ODQpXTtjYXNlKDB4MSxrVllXMWopKDB4ODUpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4YTNdKV07Y2FzZSgweDEsa1ZZVzFqKSgweDg3KTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4ODgpXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFtVNmxoNGYrMHhmZV0pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoYmpVMlpnKzB4YTEpXTtjYXNlKDB4MSxrVllXMWopKDB4OGIpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4YTBdKV07Y2FzZSgweDEsa1ZZVzFqKShPd3JWNmUrMHgxMTkpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4OGNdKV07Y2FzZSgweDEsa1ZZVzFqKSgweDhmKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4OTApXTtjYXNlKDB4MSxrVllXMWopKDB4OTEpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4NGRdKStTNHo4QWxbMHgzMV1dO2Nhc2UoMHgxLGtWWVcxaikoUzR6OEFsWzB4MTA5XSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweDk0KV07Y2FzZSgweDEsa1ZZVzFqKSgweDk1KTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4OTYpXTtjYXNlKDB4MSxrVllXMWopKDB4OTcpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4OGJdKV07Y2FzZSgweDEsa1ZZVzFqKSgweDk5KTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4OWEpXTtjYXNlKDB4MSxrVllXMWopKDB4OWIpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4N2VdKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHg5ZV0pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4YmZdKV07Y2FzZSgweDEsa1ZZVzFqKSgweDlmKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDE4YV0pXTtjYXNlKDB4MSxrVllXMWopKDB4YTEpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4ODRdKV07Y2FzZSgweDEsa1ZZVzFqKSgweGEzKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4YTQpXTtjYXNlKDB4MSxrVllXMWopKDB4YTUpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4MTBiXSldO2Nhc2UoMHgxLGtWWVcxaikoMHhhNyk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGE4KV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHg0Zl0pK1M0ejhBbFsweDFlXTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4YWEpXTtjYXNlKDB4MSxrVllXMWopKDB4YWIpK1M0ejhBbFtPd3JWNmUrMHgxMDhdOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4Y2JdKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHgxMGFdKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDEwM10pXTtjYXNlKDB4MSxrVllXMWopKDB4YWYpK1M0ejhBbFsweDM4XTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDE0MV0pXTtjYXNlKDB4MSxrVllXMWopKDB4YjEpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoMHhiMildO2Nhc2UoMHgxLGtWWVcxaikoMHhiMyk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGI0KV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHhjN10pK1M0ejhBbFsweDY0XTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDk2XSkrXCJwXCJdO2Nhc2UoMHgxLGtWWVcxaikoUzR6OEFsWzB4N2ZdKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweGI2XSldO2Nhc2UoMHgxLGtWWVcxaikoMHhiOSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGJhKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHgxOTJdKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4YmMpXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFsweGM1XSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGJlKV07Y2FzZSgweDEsa1ZZVzFqKSgweGJmKStcIlBcIjpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDc2XSldO2Nhc2UoMHgxLGtWWVcxaikoMHhjMSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKShTNHo4QWxbMHhkOF0pXTtjYXNlKDB4MSxrVllXMWopKDB4YzMpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4NmZdKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbMHg5Zl0pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4MTI2XSldO2Nhc2UoMHgxLGtWWVcxaikoUzR6OEFsWzB4ZDldKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKDB4YzgpXTtjYXNlKDB4MSxrVllXMWopKDB4YzkpOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoUzR6OEFsWzB4MTZhXSldO2Nhc2UoMHgxLGtWWVcxaikoMHhjYik6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGNjKV07Y2FzZSgweDEsa1ZZVzFqKShialUyWmcrMHhlNCk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGNlKV07Y2FzZSgweDEsa1ZZVzFqKSgweGNmKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDEwMl0pKygweDEsa1ZZVzFqKSgweGQxKV07Y2FzZSgweDEsa1ZZVzFqKShTNHo4QWxbYmpVMlpnKzB4ZDRdKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDk1XSldO2Nhc2UoMHgxLGtWWVcxaikoMHhkNCk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGQ1KSsoMHgxLGtWWVcxaikoMHhkNildO2Nhc2UoMHgxLGtWWVcxaikoMHhkNyk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKShTNHo4QWxbMHg4M10pXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFsweDEyOF0pOnJldHVybiBlRk8wWG5NPSEweDAsX014S0pwbVsoMHgxLGtWWVcxaikoMHhkYSldO2Nhc2UoMHgxLGtWWVcxaikoMHhkYik6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKShTNHo4QWxbMHhjZl0pXTtjYXNlKDB4MSxrVllXMWopKDB4ZGQpK1M0ejhBbFsweDE3YV06cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKShTNHo4QWxbMHhjM10pXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFsweDFmXSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKShTNHo4QWxbMHgxOGZdKV07Y2FzZSgweDEsa1ZZVzFqKSgweGUxKTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFM0ejhBbFsweDEyY10pXTtjYXNlKDB4MSxrVllXMWopKFM0ejhBbFsweGQ0XSk6cmV0dXJuIGVGTzBYbk09ITB4MCxfTXhLSnBtWygweDEsa1ZZVzFqKSgweGU0KV07Y2FzZSgweDEsa1ZZVzFqKSgweGU1KTpyZXR1cm4gZUZPMFhuTT0hMHgwLF9NeEtKcG1bKDB4MSxrVllXMWopKFU2bGg0ZisweDE5OSldfUJVT1ZMbGkoYkRKeFdULmlJdXdGWT1iREp4V1QuSkpPdThqLGJqVTJaZys9MHhhMyxVNmxoNGYrPTB4MzMpO2JyZWFrO2Nhc2UtMHgxNTpyZXR1cm4gdjdlQnFfZ1t4amRwVFYzW1M0ejhBbFtPd3JWNmUrMHhmMF1dXT0oMHgxLGJESnhXVC5tZk1jZjIuenhsRFBaKShocUc3SnVsW3hqZHBUVjNbUzR6OEFsWzB4MF1dXSk7Y2FzZSBialUyWmctIC0weGY1OnJldHVybiB2N2VCcV9nW3hqZHBUVjNbUzR6OEFsWzB4MF1dXT0oMHgxLGJESnhXVC5tZk1jZjIuenhsRFBaKShocUc3SnVsW3hqZHBUVjNbUzR6OEFsWzB4MF1dXSk7Y2FzZSAweDk2OmNhc2UgMHg5MDpiREp4V1QuQUlrMGZHLm50cTF5UD0tUzR6OEFsW2JqVTJaZystMHg3MF07Zm9yKGJESnhXVC5BSWswZkcuU19FQzE2PVM0ejhBbFtVNmxoNGYrLTB4NGFdO1NfRUMxNjxZQ1FTak47U19FQzE2Kyspe2JESnhXVC5BSWswZkcubGVXaDVMPVRpZGplXzcuaW5kZXhPZihySHd6SDZbU19FQzE2XSk7aWYobGVXaDVMPT09LVM0ejhBbFtialUyWmcrLTB4NzBdKWNvbnRpbnVlO2lmKG50cTF5UDxTNHo4QWxbVTZsaDRmKy0weDRhXSl7bnRxMXlQPWxlV2g1TH1lbHNle0JVT1ZMbGkobnRxMXlQKz1sZVdoNUwqUzR6OEFsWzB4MTNdLEg5Y0ZPaHw9bnRxMXlQPDxHUU16MWZSLEdRTXoxZlIrPShudHExeVAmUzR6OEFsWzB4MTRdKT5TNHo4QWxbYmpVMlpnKy0weDVjXT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKHNTc1BvdDAucHVzaChIOWNGT2gmUzR6OEFsWzB4M10pLEg5Y0ZPaD4+PVM0ejhBbFtPd3JWNmUrMHhmMl0sR1FNejFmUi09UzR6OEFsWzB4Ml0pfXdoaWxlKEdRTXoxZlI+UzR6OEFsW2JqVTJaZystMHg2N10pO250cTF5UD0tUzR6OEFsWzB4MV19fWlmKG50cTF5UD4tUzR6OEFsW2JqVTJaZystMHg3MF0pe0JVT1ZMbGkoYkRKeFdULmlJdXdGWT1iREp4V1QuQUlrMGZHLGJqVTJaZys9MHgxMDYsVTZsaDRmKz0tMHhiYyxQNkNQMUJmKz0tMHgxM2QpO2JyZWFrfWVsc2V7QlVPVkxsaShiREp4V1QuaUl1d0ZZPWJESnhXVC5BSWswZkcsYmpVMlpnKz0tMHhiMCxVNmxoNGYrPS0weGJjLFA2Q1AxQmYrPTB4Y2YpO2JyZWFrfWNhc2UgYmpVMlpnLSAtMHgyNDpCVU9WTGxpKFsuLi51WXhUcWYueGpkcFRWM109RTZfS1JaLHVZeFRxZi54amRwVFYzW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSk7aWYodHlwZW9mIHY3ZUJxX2dbdVl4VHFmLnhqZHBUVjNbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtCVU9WTGxpKGJESnhXVC5pSXV3Rlk9YkRKeFdULnVZeFRxZixVNmxoNGYrPTB4MWU3LFA2Q1AxQmYrPS0weDFlMSk7YnJlYWt9ZWxzZXtCVU9WTGxpKGJESnhXVC5pSXV3Rlk9YkRKeFdULnVZeFRxZixPd3JWNmUrPTB4NDYsVTZsaDRmKz0weDE2MixQNkNQMUJmKz0tMHgxNzcpO2JyZWFrfWNhc2UgT3dyVjZlLTB4ZDg6YkRKeFdULm1mTWNmMi5BMUVKSGV3PTB4OWM7cmV0dXJuIHY3ZUJxX2dbeGpkcFRWM1tTNHo4QWxbMHgwXV1dPSgweDEsYkRKeFdULm1mTWNmMi56eGxEUFopKGhxRzdKdWxbeGpkcFRWM1tTNHo4QWxbMHgwXV1dKTtjYXNlIDB4Zjk6Y2FzZSAweDUwOkJVT1ZMbGkoYkRKeFdULmlJdXdGWT1iREp4V1QuQUlrMGZHLGJqVTJaZys9LTB4Y2IsT3dyVjZlKz0tMHg2NCxVNmxoNGYrPS0weDlkLFA2Q1AxQmYrPTB4Y2MpO2JyZWFrO2Nhc2UgVTZsaDRmLTB4ZGE6Y2FzZS0weDVjOnJldHVybiB2N2VCcV9nW3hqZHBUVjNbUzR6OEFsWzB4MF1dXX19QlVPVkxsaShlRk8wWG5NPXZvaWQgMHgwLGJqVTJaZz14TkpyR3goMHgxMWIsLTB4ZWUsMHg5ZSwtMHg4NykubmV4dCgpLnZhbHVlKTtpZihlRk8wWG5NKXtyZXR1cm4gYmpVMlpnfX1mdW5jdGlvbiBxc1k2d0Yoelp4SkVSSixlRk8wWG5NLGJqVTJaZyl7Y202ajdtcyhPd3JWNmUpO2Z1bmN0aW9uIHhOSnJHeCh6WnhKRVJKKXt2YXIgZUZPMFhuTT1cIllDeEFcXFwiUFZASkJebjp1OzNfckd5Rk5VVy8yaHY3MStdaz1ULj5mUUVLYiNjSHwkfk9JcERzd01taixpWG90Kjl6UlswWlM0YUx7cWwpfWc8ZDYhPyU1KGAmOGVcIix4TkpyR3gsT3dyVjZlLHY3ZUJxX2csaHFHN0p1bCxVNmxoNGYsUDZDUDFCZixfTXhLSnBtO0JVT1ZMbGkoeE5Kckd4PVwiXCIrKHpaeEpFUkp8fFwiXCIpLE93clY2ZT14TkpyR3gubGVuZ3RoLHY3ZUJxX2c9W10saHFHN0p1bD1TNHo4QWxbMHgwXSxVNmxoNGY9UzR6OEFsWzB4MF0sUDZDUDFCZj0tUzR6OEFsWzB4MV0pO2ZvcihfTXhLSnBtPVM0ejhBbFsweDBdO19NeEtKcG08T3dyVjZlO19NeEtKcG0rKyl7dmFyIGJESnhXVD1lRk8wWG5NLmluZGV4T2YoeE5Kckd4W19NeEtKcG1dKTtpZihiREp4V1Q9PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoUDZDUDFCZjxTNHo4QWxbMHgwXSl7UDZDUDFCZj1iREp4V1R9ZWxzZXtCVU9WTGxpKFA2Q1AxQmYrPWJESnhXVCpTNHo4QWxbMHgxM10saHFHN0p1bHw9UDZDUDFCZjw8VTZsaDRmLFU2bGg0Zis9KFA2Q1AxQmYmUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaSh2N2VCcV9nLnB1c2goaHFHN0p1bCZTNHo4QWxbMHgzXSksaHFHN0p1bD4+PVM0ejhBbFsweDJdLFU2bGg0Zi09UzR6OEFsWzB4Ml0pfXdoaWxlKFU2bGg0Zj5TNHo4QWxbMHhhXSk7UDZDUDFCZj0tUzR6OEFsWzB4MV19fWlmKFA2Q1AxQmY+LVM0ejhBbFsweDFdKXt2N2VCcV9nLnB1c2goKGhxRzdKdWx8UDZDUDFCZjw8VTZsaDRmKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEodjdlQnFfZyl9ZnVuY3Rpb24gT3dyVjZlKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09eE5Kckd4KGhxRzdKdWxbelp4SkVSSltTNHo4QWxbMHgwXV1dKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV19c3dpdGNoKHpaeEpFUkope2Nhc2UgT3dyVjZlKDB4ZTcpOnJldHVybiBlRk8wWG5NK2JqVTJaZ319ZnVuY3Rpb24gWUZKek1XKCl7fWZ1bmN0aW9uIHBNT2lKYUMoelp4SkVSSixlRk8wWG5NPVM0ejhBbFsweDFdKXt2YXIgYmpVMlpnLHhOSnJHeDtmdW5jdGlvbipPd3JWNmUoeE5Kckd4LFU2bGg0ZixQNkNQMUJmPXtiVGhsTVQ6e319LF9NeEtKcG0pe3doaWxlKHhOSnJHeCtVNmxoNGYhPT0tMHgxNSl3aXRoKFA2Q1AxQmYuYkNLRTY4fHxQNkNQMUJmKXN3aXRjaCh4TkpyR3grVTZsaDRmKXtjYXNlIFU2bGg0Zi0gLTB4ZjI6QlVPVkxsaShbdG9nU2RmLng0S29WUF09X014S0pwbSx0b2dTZGYuQmhFVVdyPVwiUE9wI01KdTB5fi5oOFJEdkwhd3tBM1glTkBgXFxcIkcmYTFjajxlKnRrRV4+WTdiSTI7NHhCPWc2eiRtOX1DfGQoV1RbXWw1Wj8vOnJIKStzVV9LUVZTcWZGbm9pLFwiLHRvZ1NkZi5lU3dyVDA9XCJcIisodG9nU2RmLng0S29WUHx8XCJcIiksUDZDUDFCZi5iQ0tFNjg9UDZDUDFCZi50b2dTZGYseE5Kckd4Kz0tMHhiYyxVNmxoNGYrPTB4MTAwKTticmVhaztjYXNlLTB4YjQ6Y2FzZS0weDY5OmNhc2UtMHg0OTpyZXR1cm4gdjdlQnFfZ1tnMURCOWRdO2Nhc2UtMHg5ODpjYXNlIFA2Q1AxQmYuYlRobE1ULmI3R0psQSstMHhiMzpjYXNlIDB4Mjg6cmV0dXJuIEdlRFM3ZkEoanVzVUN6UCk7Y2FzZS0weDEyOmNhc2UtMHhjODpjYXNlIFU2bGg0ZiE9LTB4Y2QmJlU2bGg0ZiE9LTB4MmMmJlU2bGg0Zi0gLTB4ZGI6W3lMZTZHbkwuZzFEQjlkXT1fTXhLSnBtO2lmKHR5cGVvZiB2N2VCcV9nW3lMZTZHbkwuZzFEQjlkXT09PVM0ejhBbFt4TkpyR3grLTB4ZDZdKXtCVU9WTGxpKFA2Q1AxQmYuYkNLRTY4PVA2Q1AxQmYueUxlNkduTCx4TkpyR3grPS0weDE5YyxVNmxoNGYrPTB4MTllKTticmVha31lbHNle0JVT1ZMbGkoUDZDUDFCZi5iQ0tFNjg9UDZDUDFCZi55TGU2R25MLHhOSnJHeCs9LTB4MWRjLFU2bGg0Zis9MHgxOWUpO2JyZWFrfWNhc2UgUDZDUDFCZi5iVGhsTVQuamwzRXJkKy0weDEyMDpCVU9WTGxpKFA2Q1AxQmYudG9nU2RmLlp0d2JjSz1TNHo4QWxbMHgwXSxQNkNQMUJmLnRvZ1NkZi5scjJzMXc9UzR6OEFsW3hOSnJHeCstMHhmNV0sUDZDUDFCZi50b2dTZGYuTHNPMGdqPS1TNHo4QWxbMHgxXSxQNkNQMUJmLmJDS0U2OD1QNkNQMUJmLnRvZ1NkZix4TkpyR3grPS0weDExYSxVNmxoNGYrPTB4MTVmKTticmVhaztkZWZhdWx0OmNhc2UtMHg0NjpyZXR1cm4gdjdlQnFfZ1tnMURCOWRdO2Nhc2UgUDZDUDFCZi5iVGhsTVQuQVFfYVhEKy0weGIyOkJVT1ZMbGkoUDZDUDFCZi50b2dTZGYuYW1jdFc1eT1lU3dyVDAubGVuZ3RoLFA2Q1AxQmYudG9nU2RmLmp1c1VDelA9W10sUDZDUDFCZi5iQ0tFNjg9UDZDUDFCZi50b2dTZGYseE5Kckd4Kz0weGJmLFU2bGg0Zis9LTB4MTEzKTticmVhaztjYXNlIHhOSnJHeCE9MHhkYiYmeE5Kckd4LTB4MmM6Zm9yKFA2Q1AxQmYudG9nU2RmLnpmQVFvQT1TNHo4QWxbeE5Kckd4KzB4MjVdO3pmQVFvQTxhbWN0VzV5O3pmQVFvQSsrKXtQNkNQMUJmLnRvZ1NkZi5neHJEWHVFPUJoRVVXci5pbmRleE9mKGVTd3JUMFt6ZkFRb0FdKTtpZihneHJEWHVFPT09LVM0ejhBbFt4TkpyR3grMHgyNl0pY29udGludWU7aWYoTHNPMGdqPFM0ejhBbFsweDBdKXtMc08wZ2o9Z3hyRFh1RX1lbHNle0JVT1ZMbGkoTHNPMGdqKz1neHJEWHVFKlM0ejhBbFt4TkpyR3grMHgzOF0sWnR3YmNLfD1Mc08wZ2o8PGxyMnMxdyxscjJzMXcrPShMc08wZ2omUzR6OEFsW3hOSnJHeCsweDM5XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFt4TkpyR3grMHgzYl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKGp1c1VDelAucHVzaChadHdiY0smUzR6OEFsW3hOSnJHeCsweDI4XSksWnR3YmNLPj49UzR6OEFsWzB4Ml0sbHIyczF3LT1TNHo4QWxbeE5Kckd4KzB4MjddKX13aGlsZShscjJzMXc+UzR6OEFsW3hOSnJHeCsweDJmXSk7THNPMGdqPS1TNHo4QWxbeE5Kckd4KzB4MjZdfX1pZihMc08wZ2o+LVM0ejhBbFsweDFdKXtCVU9WTGxpKFA2Q1AxQmYuYkNLRTY4PVA2Q1AxQmYudG9nU2RmLHhOSnJHeCs9MHgxMDApO2JyZWFrfWVsc2V7QlVPVkxsaShQNkNQMUJmLmJDS0U2OD1QNkNQMUJmLnRvZ1NkZix4TkpyR3grPTB4MTAwLFU2bGg0Zis9LTB4YTEpO2JyZWFrfWNhc2UgMHgxZTpjYXNlLTB4N2U6Y2FzZSAweDk0OkJVT1ZMbGkoW1A2Q1AxQmYuYlRobE1ULkFRX2FYRCxQNkNQMUJmLmJUaGxNVC5qbDNFcmQsUDZDUDFCZi5iVGhsTVQuYjdHSmxBXT1bMHg3MCwweDhhLDB4YzFdLGJUaGxNVC5XaW5hS1ozPWZ1bmN0aW9uKC4uLnhOSnJHeCl7cmV0dXJuIE93clY2ZSgweGRiLC0weDE1MSx7YlRobE1UOlA2Q1AxQmYuYlRobE1ULHlMZTZHbkw6e319LHhOSnJHeCkubmV4dCgpLnZhbHVlfSxiVGhsTVQuVElTVDZuPWZ1bmN0aW9uKC4uLnhOSnJHeCl7cmV0dXJuIE93clY2ZSgweGYyLC0weDE3OCx7YlRobE1UOlA2Q1AxQmYuYlRobE1ULHRvZ1NkZjp7fX0seE5Kckd4KS5uZXh0KCkudmFsdWV9LExiRFVBdigoMHgxLGJUaGxNVC5XaW5hS1ozKSgweGU4KSlbKDB4MSxiVGhsTVQuV2luYUtaMykoeE5Kckd4KzB4ZmYpXSh6WnhKRVJKLCgweDEsYlRobE1ULldpbmFLWjMpKDB4ZWEpLHtbKDB4MSxiVGhsTVQuV2luYUtaMykoeE5Kckd4KzB4MTAxKV06ZUZPMFhuTSxbKDB4MSxiVGhsTVQuV2luYUtaMykoUzR6OEFsWzB4MTZmXSldOlM0ejhBbFsweDIwXX0pLFA2Q1AxQmYuYkNLRTY4PVA2Q1AxQmYuYlRobE1ULHhOSnJHeCs9LTB4ZWIsVTZsaDRmKz0tMHg3Nyk7YnJlYWs7Y2FzZS0weGRkOmNhc2UgVTZsaDRmIT0weDhlJiZVNmxoNGYhPS0weDc3JiZVNmxoNGYhPTB4MzMmJlU2bGg0Zi0weDQ4OkJVT1ZMbGkoW1A2Q1AxQmYuYlRobE1ULkFRX2FYRCxQNkNQMUJmLmJUaGxNVC5qbDNFcmQsUDZDUDFCZi5iVGhsTVQuYjdHSmxBXT1bMHhiYiwweDhmLDB4OGZdLFA2Q1AxQmYuYkNLRTY4PVA2Q1AxQmYudG9nU2RmLHhOSnJHeCs9MHgxMjMsVTZsaDRmKz0tMHg4ZCk7YnJlYWs7Y2FzZSBQNkNQMUJmLmJUaGxNVC5iN0dKbEErLTB4MThmOnJldHVybiBialUyWmc9ITB4MCx6WnhKRVJKO2Nhc2UtMHhjOTpjYXNlLTB4NzQ6cmV0dXJuIHY3ZUJxX2dbZzFEQjlkXT0oMHgxLFA2Q1AxQmYuYlRobE1ULlRJU1Q2bikoaHFHN0p1bFtnMURCOWRdKTtjYXNlIFA2Q1AxQmYuYlRobE1ULmpsM0VyZCsweDI1OkJVT1ZMbGkoanVzVUN6UC5wdXNoKChadHdiY0t8THNPMGdqPDxscjJzMXcpJlM0ejhBbFt4TkpyR3grLTB4ZDhdKSxQNkNQMUJmLmJDS0U2OD1QNkNQMUJmLnRvZ1NkZixVNmxoNGYrPS0weGExKTticmVhaztjYXNlIFU2bGg0ZiE9LTB4NDAmJlU2bGg0ZiE9LTB4NzcmJlU2bGg0ZiE9MHgzMyYmVTZsaDRmLTB4NDg6Y2FzZS0weDExOkJVT1ZMbGkoW1A2Q1AxQmYuYlRobE1ULkFRX2FYRCxQNkNQMUJmLmJUaGxNVC5qbDNFcmQsUDZDUDFCZi5iVGhsTVQuYjdHSmxBXT1bLTB4ZGUsMHhlMiwweDRiXSxQNkNQMUJmLmJDS0U2OD1QNkNQMUJmLmtycWdZdzIseE5Kckd4Kz0weDEzYSxVNmxoNGYrPS0weDIwNik7YnJlYWs7Y2FzZS0weDlhOmNhc2UgMHgyNzpjYXNlLTB4YmY6QlVPVkxsaShQNkNQMUJmLmJDS0U2OD1QNkNQMUJmLnRvZ1NkZix4TkpyR3grPTB4MTNkLFU2bGg0Zis9LTB4MTE0KTticmVha319QlVPVkxsaShialUyWmc9dm9pZCAweDAseE5Kckd4PU93clY2ZSgtMHgxNiwweGFhKS5uZXh0KCkudmFsdWUpO2lmKGJqVTJaZyl7cmV0dXJuIHhOSnJHeH19YXN5bmMgZnVuY3Rpb24gcW5KUXBGVih6WnhKRVJKKXtyZXR1cm4gbmV3KExiRFVBdihtVjBkQWlUKDB4ZWQpKSkoKGVGTzBYbk0sYmpVMlpnKT0+e2Z1bmN0aW9uIHhOSnJHeChlRk8wWG5NKXt2YXIgYmpVMlpnPVwiTWZvQ0tPKXVCQXghbHx0X05xRWh2M2VEP2kxPmtGNFBWJVdzVUpkLFk7N11tUnA4YXlUNkwjOmp6PVokSHsyYn1HWH5uQGdRYypTYHIvPFxcXCIwK3coOV5bLkkmNVwiLHhOSnJHeCxPd3JWNmUsVTZsaDRmLHpaeEpFUkosdjdlQnFfZyxocUc3SnVsLFA2Q1AxQmY7QlVPVkxsaSh4TkpyR3g9XCJcIisoZUZPMFhuTXx8XCJcIiksT3dyVjZlPXhOSnJHeC5sZW5ndGgsVTZsaDRmPVtdLHpaeEpFUko9UzR6OEFsWzB4MF0sdjdlQnFfZz1TNHo4QWxbMHgwXSxocUc3SnVsPS1TNHo4QWxbMHgxXSk7Zm9yKFA2Q1AxQmY9UzR6OEFsWzB4MF07UDZDUDFCZjxPd3JWNmU7UDZDUDFCZisrKXt2YXIgX014S0pwbT1ialUyWmcuaW5kZXhPZih4TkpyR3hbUDZDUDFCZl0pO2lmKF9NeEtKcG09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoaHFHN0p1bDxTNHo4QWxbMHgwXSl7aHFHN0p1bD1fTXhLSnBtfWVsc2V7QlVPVkxsaShocUc3SnVsKz1fTXhLSnBtKlM0ejhBbFsweDEzXSx6WnhKRVJKfD1ocUc3SnVsPDx2N2VCcV9nLHY3ZUJxX2crPShocUc3SnVsJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoVTZsaDRmLnB1c2goelp4SkVSSiZTNHo4QWxbMHgzXSkselp4SkVSSj4+PVM0ejhBbFsweDJdLHY3ZUJxX2ctPVM0ejhBbFsweDJdKX13aGlsZSh2N2VCcV9nPlM0ejhBbFsweGFdKTtocUc3SnVsPS1TNHo4QWxbMHgxXX19aWYoaHFHN0p1bD4tUzR6OEFsWzB4MV0pe1U2bGg0Zi5wdXNoKCh6WnhKRVJKfGhxRzdKdWw8PHY3ZUJxX2cpJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQShVNmxoNGYpfWZ1bmN0aW9uIE93clY2ZShlRk8wWG5NKXtpZih0eXBlb2YgdjdlQnFfZ1tlRk8wWG5NXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1tlRk8wWG5NXT14TkpyR3goaHFHN0p1bFtlRk8wWG5NXSl9cmV0dXJuIHY3ZUJxX2dbZUZPMFhuTV19Y29uc3QgVTZsaDRmPUxiRFVBdihPd3JWNmUoUzR6OEFsWzB4MjddKSlbT3dyVjZlKFM0ejhBbFsweDIxXSldKE93clY2ZShTNHo4QWxbMHgxOTBdKSk7QlVPVkxsaShVNmxoNGZbT3dyVjZlKDB4ZjEpXT16WnhKRVJKLFU2bGg0ZltPd3JWNmUoMHhmMildPU93clY2ZShTNHo4QWxbMHhjZF0pK093clY2ZSgweGY0KStPd3JWNmUoUzR6OEFsWzB4ZDBdKSxVNmxoNGZbT3dyVjZlKDB4ZjYpXT0oKT0+e3JldHVybiBlRk8wWG5NKFU2bGg0Zil9LFU2bGg0ZltPd3JWNmUoMHhmNykrUzR6OEFsWzB4YmNdXT0oLi4uZUZPMFhuTSk9Pnt2YXIgeE5Kckd4LE93clY2ZTtmdW5jdGlvbipVNmxoNGYoT3dyVjZlLFA2Q1AxQmYsX014S0pwbT17djdRYjVCOnt9fSxiREp4V1Qpe3doaWxlKE93clY2ZStQNkNQMUJmIT09LTB4NjYpd2l0aChfTXhLSnBtLlJmMXlNbXx8X014S0pwbSlzd2l0Y2goT3dyVjZlK1A2Q1AxQmYpe2Nhc2UgUDZDUDFCZiE9LTB4N2QmJlA2Q1AxQmYtMHgyYjpCVU9WTGxpKExkemF5cVtTNHo4QWxbMHgyMl1dPVM0ejhBbFsweDBdLExkemF5cVtTNHo4QWxbMHgyNV1dPS1TNHo4QWxbT3dyVjZlKzB4MmNdLF9NeEtKcG0uUmYxeU1tPV9NeEtKcG0uRU9Zbkx1QixPd3JWNmUrPTB4Y2IsUDZDUDFCZis9LTB4YWYpO2JyZWFrO2Nhc2UgUDZDUDFCZiE9MHg3YyYmUDZDUDFCZi0weDJiOkJVT1ZMbGkoTGR6YXlxW1M0ejhBbFsweDEwXV09TGR6YXlxW1M0ejhBbFsweGVdXS5sZW5ndGgsTGR6YXlxW1M0ejhBbFsweDE4XV09W10sTGR6YXlxW1M0ejhBbFsweDI2XV09UzR6OEFsW093clY2ZSsweDJiXSxfTXhLSnBtLlJmMXlNbT1fTXhLSnBtLkVPWW5MdUIsUDZDUDFCZis9MHhmOSk7YnJlYWs7Y2FzZS0weGI0OmNhc2UgX014S0pwbS52N1FiNUIuWlQ2S043TysweGY4OkJVT1ZMbGkoWy4uLkVPWW5MdUIuTGR6YXlxXT1iREp4V1QsRU9Zbkx1Qi5MZHpheXFbUzR6OEFsW093clY2ZSstMHhhNV1dPVM0ejhBbFsweDFdLEVPWW5MdUIuTGR6YXlxW1M0ejhBbFsweDIzXV09XCJiNjk3eTQoMDJ+eF4qeitcXFwie193YDMsOH0/IzU6WztdJXYpSHw+RjwhVW5FdGVrRFNxaVFDb0JyVkpYYUdPalJwZmNOUFRBZGhtV1pJc0AvSyQuPUxsMU1ZZ3UmXCIsRU9Zbkx1Qi5MZHpheXFbUzR6OEFsWzB4ZV1dPVwiXCIrKEVPWW5MdUIuTGR6YXlxW1M0ejhBbFtPd3JWNmUrLTB4YTldXXx8XCJcIiksX014S0pwbS5SZjF5TW09X014S0pwbS5FT1luTHVCLE93clY2ZSs9LTB4ZDQsUDZDUDFCZis9LTB4ODkpO2JyZWFrO2Nhc2UgX014S0pwbS52N1FiNUIuWlQ2S043TysweDNkOmNhc2UtMHg1NzpCVU9WTGxpKF9NeEtKcG0uUmYxeU1tPV9NeEtKcG0uRU9Zbkx1QixPd3JWNmUrPTB4ZGEsUDZDUDFCZis9LTB4MmYpO2JyZWFrO2Nhc2UgT3dyVjZlLTB4Y2U6Y2FzZS0weGJhOnJldHVybiB2N2VCcV9nW2JsUDFYSF07Y2FzZSBfTXhLSnBtLnY3UWI1Qi5aVDZLTjdPKzB4YjA6Zm9yKExkemF5cVtTNHo4QWxbT3dyVjZlKy0weDllXV09UzR6OEFsW093clY2ZSstMHhhMF07TGR6YXlxW1M0ejhBbFsweDJdXTxMZHpheXFbUzR6OEFsWzB4MTBdXTtMZHpheXFbUzR6OEFsWzB4Ml1dKyspe0xkemF5cVtTNHo4QWxbMHgyNF1dPUxkemF5cVtTNHo4QWxbT3dyVjZlKy0weDdkXV0uaW5kZXhPZihMZHpheXFbUzR6OEFsWzB4ZV1dW0xkemF5cVtTNHo4QWxbMHgyXV1dKTtpZihMZHpheXFbUzR6OEFsW093clY2ZSstMHg3Y11dPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKExkemF5cVtTNHo4QWxbMHgyNV1dPFM0ejhBbFsweDBdKXtMZHpheXFbUzR6OEFsWzB4MjVdXT1MZHpheXFbUzR6OEFsW093clY2ZSstMHg3Y11dfWVsc2V7QlVPVkxsaShMZHpheXFbUzR6OEFsW093clY2ZSstMHg3Yl1dKz1MZHpheXFbUzR6OEFsWzB4MjRdXSpTNHo4QWxbMHgxM10sTGR6YXlxW1M0ejhBbFsweDI2XV18PUxkemF5cVtTNHo4QWxbT3dyVjZlKy0weDdiXV08PExkemF5cVtTNHo4QWxbT3dyVjZlKy0weDdlXV0sTGR6YXlxW1M0ejhBbFsweDIyXV0rPShMZHpheXFbUzR6OEFsW093clY2ZSstMHg3Yl1dJlM0ejhBbFtPd3JWNmUrLTB4OGNdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShMZHpheXFbUzR6OEFsW093clY2ZSstMHg4OF1dLnB1c2goTGR6YXlxW1M0ejhBbFsweDI2XV0mUzR6OEFsWzB4M10pLExkemF5cVtTNHo4QWxbT3dyVjZlKy0weDdhXV0+Pj1TNHo4QWxbT3dyVjZlKy0weDllXSxMZHpheXFbUzR6OEFsW093clY2ZSstMHg3ZV1dLT1TNHo4QWxbMHgyXSl9d2hpbGUoTGR6YXlxW1M0ejhBbFtPd3JWNmUrLTB4N2VdXT5TNHo4QWxbMHhhXSk7TGR6YXlxW1M0ejhBbFsweDI1XV09LVM0ejhBbFsweDFdfX1pZihMZHpheXFbUzR6OEFsWzB4MjVdXT4tUzR6OEFsWzB4MV0pe0JVT1ZMbGkoX014S0pwbS5SZjF5TW09X014S0pwbS5FT1luTHVCLFA2Q1AxQmYrPTB4MzgpO2JyZWFrfWVsc2V7QlVPVkxsaShfTXhLSnBtLlJmMXlNbT1fTXhLSnBtLkVPWW5MdUIsT3dyVjZlKz0tMHg1MSxQNkNQMUJmKz0weDU1KTticmVha31jYXNlIDB4NTY6Y2FzZSAweGZhOmNhc2UgT3dyVjZlLSAtMHhmZDpCVU9WTGxpKF9NeEtKcG0uUmYxeU1tPV9NeEtKcG0udjdRYjVCLFA2Q1AxQmYrPS0weGM5KTticmVhaztkZWZhdWx0OmNhc2UgMHgzNDpCVU9WTGxpKExkemF5cVtTNHo4QWxbT3dyVjZlKy0weDY2XV09TGR6YXlxW1M0ejhBbFsweGVdXS5sZW5ndGgsTGR6YXlxW1M0ejhBbFtPd3JWNmUrLTB4NWVdXT1bXSxMZHpheXFbUzR6OEFsWzB4MjZdXT1TNHo4QWxbMHgwXSxfTXhLSnBtLlJmMXlNbT1fTXhLSnBtLkVPWW5MdUIsT3dyVjZlKz0tMHhhMSxQNkNQMUJmKz0weDMyKTticmVhaztjYXNlLTB4ZGI6Y2FzZSAweDcxOmNhc2UgMHg5YzpyZXR1cm4gR2VEUzdmQShMZHpheXFbUzR6OEFsWzB4MThdXSk7Y2FzZSBPd3JWNmUtMHgxYjU6W2hBMlJBaWUuYmxQMVhIXT1iREp4V1Q7aWYodHlwZW9mIHY3ZUJxX2dbaEEyUkFpZS5ibFAxWEhdPT09UzR6OEFsW093clY2ZSstMHhjMF0pe0JVT1ZMbGkoX014S0pwbS5SZjF5TW09X014S0pwbS5oQTJSQWllLFA2Q1AxQmYrPTB4MjUpO2JyZWFrfWVsc2V7QlVPVkxsaShfTXhLSnBtLlJmMXlNbT1fTXhLSnBtLmhBMlJBaWUsT3dyVjZlKz0tMHgzNSxQNkNQMUJmKz0weGU3KTticmVha31jYXNlIF9NeEtKcG0udjdRYjVCLlpUNktON08rMHg0YTpbX014S0pwbS52N1FiNUIuWlQ2S043TyxfTXhLSnBtLnY3UWI1Qi5tNlhFT2FEXT1bMHgyNiwtMHhjXTtyZXR1cm4gR2VEUzdmQShMZHpheXFbUzR6OEFsWzB4MThdXSk7Y2FzZS0weGNiOnJldHVybiB2N2VCcV9nW2JsUDFYSF09KDB4MSxfTXhLSnBtLnY3UWI1Qi50WUFiWXgpKGhxRzdKdWxbYmxQMVhIXSk7Y2FzZS0weDU6QlVPVkxsaShMZHpheXFbUzR6OEFsWzB4MTBdXT1MZHpheXFbUzR6OEFsW093clY2ZSsweDVkXV0ubGVuZ3RoLExkemF5cVtTNHo4QWxbMHgxOF1dPVtdLExkemF5cVtTNHo4QWxbMHgyNl1dPVM0ejhBbFsweDBdLF9NeEtKcG0uUmYxeU1tPV9NeEtKcG0uRU9Zbkx1QixPd3JWNmUrPTB4MjQsUDZDUDFCZis9MHgzMik7YnJlYWs7Y2FzZS0weGY6Y2FzZS0weGI6Y2FzZSAweDQzOkJVT1ZMbGkoW19NeEtKcG0udjdRYjVCLlpUNktON08sX014S0pwbS52N1FiNUIubTZYRU9hRF09Wy0weDQzLC0weGY5XSx2N1FiNUIuSktYc3psSj1mdW5jdGlvbiguLi5Pd3JWNmUpe3JldHVybiBVNmxoNGYoMHhjNSwtMHgxYjUse3Y3UWI1QjpfTXhLSnBtLnY3UWI1QixoQTJSQWllOnt9fSxPd3JWNmUpLm5leHQoKS52YWx1ZX0sdjdRYjVCLnRZQWJZeD1mdW5jdGlvbiguLi5Pd3JWNmUpe3JldHVybiBVNmxoNGYoMHhhOSwweGMse3Y3UWI1QjpfTXhLSnBtLnY3UWI1QixFT1luTHVCOnt9fSxPd3JWNmUpLm5leHQoKS52YWx1ZX0sZUZPMFhuTVtTNHo4QWxbT3dyVjZlKzB4ODRdXT1TNHo4QWxbT3dyVjZlKzB4ODBdLGNtNmo3bXModjdRYjVCLnRZQWJZeCkpO3JldHVybiB4TkpyR3g9ITB4MCxialUyWmcoTGJEVUF2KCgweDEsdjdRYjVCLkpLWHN6bEopKFM0ejhBbFsweDgyXSkpKCgweDEsdjdRYjVCLkpLWHN6bEopKFM0ejhBbFsweGQzXSkrelp4SkVSSikpO2Nhc2UtMHhlOTpjYXNlIDB4ZDpjYXNlIE93clY2ZS0gLTB4NTpCVU9WTGxpKExkemF5cVtTNHo4QWxbMHgxOF1dLnB1c2goKExkemF5cVtTNHo4QWxbMHgyNl1dfExkemF5cVtTNHo4QWxbMHgyNV1dPDxMZHpheXFbUzR6OEFsWzB4MjJdXSkmUzR6OEFsWzB4M10pLF9NeEtKcG0uUmYxeU1tPV9NeEtKcG0uRU9Zbkx1QixPd3JWNmUrPS0weDUxLFA2Q1AxQmYrPTB4MWQpO2JyZWFrO2Nhc2UgT3dyVjZlIT0tMHg0ZiYmT3dyVjZlIT0weDc2JiZPd3JWNmUtIC0weDRhOkJVT1ZMbGkoX014S0pwbS5SZjF5TW09X014S0pwbS5oQTJSQWllLE93clY2ZSs9MHgxOWQsUDZDUDFCZis9LTB4MTE4KTticmVhaztjYXNlIF9NeEtKcG0udjdRYjVCLlpUNktON08rLTB4NDU6QlVPVkxsaShfTXhLSnBtLlJmMXlNbT1fTXhLSnBtLmhBMlJBaWUsT3dyVjZlKz0weGZmLFA2Q1AxQmYrPS0weDE0Mik7YnJlYWt9fUJVT1ZMbGkoeE5Kckd4PXZvaWQgMHgwLE93clY2ZT1VNmxoNGYoLTB4ODAsMHg3MSkubmV4dCgpLnZhbHVlKTtpZih4TkpyR3gpe3JldHVybiBPd3JWNmV9fSxMYkRVQXYoT3dyVjZlKFM0ejhBbFsweDI3XSkpW093clY2ZShTNHo4QWxbMHg1NV0pXVtPd3JWNmUoMHhmYikrT3dyVjZlKFM0ejhBbFsweDY3XSldKFU2bGg0ZikpfSl9YXN5bmMgZnVuY3Rpb24gTjFsN0NuUSgpe2NtNmo3bXMoZUZPMFhuTSk7ZnVuY3Rpb24gelp4SkVSSih6WnhKRVJKKXt2YXIgZUZPMFhuTSxialUyWmc7ZnVuY3Rpb24qeE5Kckd4KGJqVTJaZyx4TkpyR3gsT3dyVjZlPXtkd2tuamQ6e319KXt3aGlsZShialUyWmcreE5Kckd4IT09LTB4MjQpd2l0aChPd3JWNmUuQmlsSnRDfHxPd3JWNmUpc3dpdGNoKGJqVTJaZyt4TkpyR3gpe2Nhc2UgMHg5ZDpCVU9WTGxpKE93clY2ZS5kd2tuamQuWVdEeTlRcT1TNHo4QWxbYmpVMlpnKy0oYmpVMlpnKzB4MCldLE93clY2ZS5kd2tuamQubXJoSDFFOD0tUzR6OEFsWzB4MV0sT3dyVjZlLkJpbEp0Qz1Pd3JWNmUuZHdrbmpkLGJqVTJaZys9LTB4MWQpO2JyZWFrO2Nhc2UgMHgzMTpCVU9WTGxpKE93clY2ZS5kd2tuamQubVJTODAzTj1bXSxPd3JWNmUuZHdrbmpkLnhjVUZFYzA9UzR6OEFsW2JqVTJaZystMHg4N10sT3dyVjZlLkJpbEp0Qz1Pd3JWNmUuZHdrbmpkLHhOSnJHeCs9MHg2Yyk7YnJlYWs7Y2FzZSBialUyWmctIC0weDZmOkJVT1ZMbGkobVJTODAzTi5wdXNoKCh4Y1VGRWMwfG1yaEgxRTg8PFlXRHk5UXEpJlM0ejhBbFtialUyWmcrLTB4NjddKSxPd3JWNmUuQmlsSnRDPU93clY2ZS5kd2tuamQsYmpVMlpnKz0tMHgxMzMseE5Kckd4Kz0weDhhKTticmVhaztjYXNlLTB4ZGM6Y2FzZSB4TkpyR3ghPTB4OWEmJnhOSnJHeC0weDQwOkJVT1ZMbGkobVJTODAzTi5wdXNoKCh4Y1VGRWMwfG1yaEgxRTg8PFlXRHk5UXEpJlM0ejhBbFtialUyWmcrMHg0M10pLE93clY2ZS5CaWxKdEM9T3dyVjZlLmR3a25qZCxialUyWmcrPS0weDg5LHhOSnJHeCs9MHhkYyk7YnJlYWs7Y2FzZS0weGQwOkJVT1ZMbGkoW093clY2ZS5kd2tuamQuZmlfSjRJMSxPd3JWNmUuZHdrbmpkLm5DVzdiZjZdPVstMHgxNiwweGFdLGR3a25qZC5KQTdPY1RyPVwiQDkhJHo+ezVcXFwiPSgsNip5JjpUM25OWCVfQVBEP0JydUgucXZocGZLSVV3fUxdc1EpUmdWeEUxRyNtazt0OE9+K0ZsYi9hV000Y0ppb2QwWmAyZV5qfFtZPEM3U1wiLGR3a25qZC5YWkNXQVg9XCJcIisoelp4SkVSSnx8XCJcIiksZHdrbmpkLlZGUzQ4aXo9ZHdrbmpkLlhaQ1dBWC5sZW5ndGgsT3dyVjZlLkJpbEp0Qz1Pd3JWNmUuZHdrbmpkLGJqVTJaZys9MHg2OCx4TkpyR3grPTB4OTkpO2JyZWFrO2Nhc2UgMHg4MDpmb3IoT3dyVjZlLmR3a25qZC5la1BWRF9IPVM0ejhBbFtialUyWmcrLShialUyWmcrMHgwKV07ZWtQVkRfSDxWRlM0OGl6O2VrUFZEX0grKyl7T3dyVjZlLmR3a25qZC5yTGRQd2E9SkE3T2NUci5pbmRleE9mKFhaQ1dBWFtla1BWRF9IXSk7aWYockxkUHdhPT09LVM0ejhBbFtialUyWmcrLTB4NjldKWNvbnRpbnVlO2lmKG1yaEgxRTg8UzR6OEFsW2JqVTJaZystMHg2YV0pe21yaEgxRTg9ckxkUHdhfWVsc2V7QlVPVkxsaShtcmhIMUU4Kz1yTGRQd2EqUzR6OEFsWzB4MTNdLHhjVUZFYzB8PW1yaEgxRTg8PFlXRHk5UXEsWVdEeTlRcSs9KG1yaEgxRTgmUzR6OEFsW2JqVTJaZystMHg1Nl0pPlM0ejhBbFtialUyWmcrLTB4NTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbYmpVMlpnKy0weDUzXSk7ZG97QlVPVkxsaShtUlM4MDNOLnB1c2goeGNVRkVjMCZTNHo4QWxbMHgzXSkseGNVRkVjMD4+PVM0ejhBbFsweDJdLFlXRHk5UXEtPVM0ejhBbFtialUyWmcrLTB4NjhdKX13aGlsZShZV0R5OVFxPlM0ejhBbFsweGFdKTttcmhIMUU4PS1TNHo4QWxbMHgxXX19aWYobXJoSDFFOD4tUzR6OEFsWzB4MV0pe0JVT1ZMbGkoT3dyVjZlLkJpbEp0Qz1Pd3JWNmUuZHdrbmpkLHhOSnJHeCs9MHg1OSk7YnJlYWt9ZWxzZXtCVU9WTGxpKE93clY2ZS5CaWxKdEM9T3dyVjZlLmR3a25qZCxialUyWmcrPS0weDEzMyx4TkpyR3grPTB4ZTMpO2JyZWFrfWRlZmF1bHQ6QlVPVkxsaShbT3dyVjZlLmR3a25qZC5maV9KNEkxLE93clY2ZS5kd2tuamQubkNXN2JmNl09WzB4YzYsMHhiZV0sT3dyVjZlLkJpbEp0Qz1Pd3JWNmUuZHdrbmpkLGJqVTJaZys9MHhhYSx4TkpyR3grPS0weDg0KTticmVhaztjYXNlIHhOSnJHeCE9MHhhNSYmeE5Kckd4LTB4Yzk6cmV0dXJuIGVGTzBYbk09ITB4MCxHZURTN2ZBKG1SUzgwM04pfX1CVU9WTGxpKGVGTzBYbk09dm9pZCAweDAsYmpVMlpnPXhOSnJHeCgweDFmLC0weGVmKS5uZXh0KCkudmFsdWUpO2lmKGVGTzBYbk0pe3JldHVybiBialUyWmd9fWZ1bmN0aW9uIGVGTzBYbk0oLi4uZUZPMFhuTSl7ZUZPMFhuTVtTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbZUZPMFhuTVtTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW2VGTzBYbk1bUzR6OEFsWzB4MF1dXT16WnhKRVJKKGhxRzdKdWxbZUZPMFhuTVtTNHo4QWxbMHgwXV1dKX1yZXR1cm4gdjdlQnFfZ1tlRk8wWG5NW1M0ejhBbFsweDBdXV19YXdhaXQgTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTViXSkpW2VGTzBYbk0oMHhmZSldKFtxbkpRcEZWKGVGTzBYbk0oUzR6OEFsWzB4M10pKSxxbkpRcEZWKFwiXCIrKExiRFVBdihlRk8wWG5NKFM0ejhBbFsweDI4XSkpW2VGTzBYbk0oUzR6OEFsWzB4MjldKV1bZUZPMFhuTShTNHo4QWxbMHgyYV0pXStMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgyOF0pKVtlRk8wWG5NKFM0ejhBbFsweDI5XSldW2VGTzBYbk0oUzR6OEFsWzB4MmJdKV1bZUZPMFhuTShTNHo4QWxbMHgyY10pXShuZXcoTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MmRdKSkpKGVGTzBYbk0oMHgxMDYpLFwiXCIpLFwiXCIpKStlRk8wWG5NKDB4MTA3KSkscW5KUXBGVihcIlwiKyhMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgyOF0pKVtlRk8wWG5NKFM0ejhBbFsweDI5XSldW2VGTzBYbk0oUzR6OEFsWzB4MmFdKV0rTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MjhdKSlbZUZPMFhuTShTNHo4QWxbMHgyOV0pXVtlRk8wWG5NKFM0ejhBbFsweDJiXSldW2VGTzBYbk0oUzR6OEFsWzB4MmNdKV0obmV3KExiRFVBdihlRk8wWG5NKFM0ejhBbFsweDJkXSkpKShlRk8wWG5NKFM0ejhBbFsweDJlXSkrUzR6OEFsWzB4MmZdLFwiXCIpLFwiXCIpKSsoZUZPMFhuTSgweDEwOSkrZUZPMFhuTSgweDEwYSkpKSxxbkpRcEZWKFwiXCIrKExiRFVBdihlRk8wWG5NKFM0ejhBbFsweDI4XSkpW2VGTzBYbk0oUzR6OEFsWzB4MjldKV1bZUZPMFhuTShTNHo4QWxbMHgyYV0pXStMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgyOF0pKVtlRk8wWG5NKFM0ejhBbFsweDI5XSldW2VGTzBYbk0oUzR6OEFsWzB4MmJdKV1bZUZPMFhuTShTNHo4QWxbMHgyY10pXShuZXcoTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MmRdKSkpKGVGTzBYbk0oUzR6OEFsWzB4MmVdKStTNHo4QWxbMHgyZl0sXCJcIiksXCJcIikpK2VGTzBYbk0oMHgxMGIpKV0pO2NvbnN0IGJqVTJaZz1MYkRVQXYoZUZPMFhuTSgweDEwYykpW2VGTzBYbk0oMHgxMGQpXSgpO2xldCB4TkpyR3gsT3dyVjZlO2JqVTJaZ1tlRk8wWG5NKFM0ejhBbFsweDMwXSldKHpaeEpFUko9Pnt2YXIgZUZPMFhuTSxialUyWmc7ZnVuY3Rpb24qeE5Kckd4KGJqVTJaZyxPd3JWNmUsVTZsaDRmLFA2Q1AxQmY9e2pJalo4ZlM6e319LF9NeEtKcG0pe3doaWxlKGJqVTJaZytPd3JWNmUrVTZsaDRmIT09MHgxNil3aXRoKFA2Q1AxQmYuUDIxcHMxYXx8UDZDUDFCZilzd2l0Y2goYmpVMlpnK093clY2ZStVNmxoNGYpe2Nhc2UgUDZDUDFCZi5qSWpaOGZTLkxZYlhBZlcrMHhkMjpmb3IoUDZDUDFCZi5pSGJsbzUuazJCcGpIWT1TNHo4QWxbMHgwXTtrMkJwakhZPGFXdnEzQTtrMkJwakhZKyspe1A2Q1AxQmYuaUhibG81LlpZN2J4aj1Fb0lFb1MuaW5kZXhPZihJNGVadXNbazJCcGpIWV0pO2lmKFpZN2J4aj09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZihVQXlkN208UzR6OEFsWzB4MF0pe1VBeWQ3bT1aWTdieGp9ZWxzZXtCVU9WTGxpKFVBeWQ3bSs9Wlk3YnhqKlM0ejhBbFtPd3JWNmUrLTB4OWNdLHhJY1NwWnw9VUF5ZDdtPDxwYnd6MzM0LHBid3ozMzQrPShVQXlkN20mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsW093clY2ZSstMHg5OV06UzR6OEFsW2JqVTJaZystMHg5XSk7ZG97QlVPVkxsaShPY242aTNwLnB1c2goeEljU3BaJlM0ejhBbFtialUyWmcrLTB4MWRdKSx4SWNTcFo+Pj1TNHo4QWxbMHgyXSxwYnd6MzM0LT1TNHo4QWxbMHgyXSl9d2hpbGUocGJ3ejMzND5TNHo4QWxbT3dyVjZlKy0weGE1XSk7VUF5ZDdtPS1TNHo4QWxbMHgxXX19aWYoVUF5ZDdtPi1TNHo4QWxbMHgxXSl7QlVPVkxsaShQNkNQMUJmLlAyMXBzMWE9UDZDUDFCZi5pSGJsbzUsT3dyVjZlKz0tMHgxMDUpO2JyZWFrfWVsc2V7QlVPVkxsaShQNkNQMUJmLlAyMXBzMWE9UDZDUDFCZi5pSGJsbzUsT3dyVjZlKz0tMHgxMDUsVTZsaDRmKz0weDg1KTticmVha31jYXNlIFA2Q1AxQmYuaklqWjhmUy5MWWJYQWZXKy0weDc6Zm9yKGsyQnBqSFk9UzR6OEFsW093clY2ZSsweGYzXTtrMkJwakhZPGFXdnEzQTtrMkJwakhZKyspe1pZN2J4aj1Fb0lFb1MuaW5kZXhPZihJNGVadXNbazJCcGpIWV0pO2lmKFpZN2J4aj09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZihVQXlkN208UzR6OEFsWzB4MF0pe1VBeWQ3bT1aWTdieGp9ZWxzZXtCVU9WTGxpKFVBeWQ3bSs9Wlk3YnhqKlM0ejhBbFtialUyWmcrLTB4ODldLHhJY1NwWnw9VUF5ZDdtPDxwYnd6MzM0LHBid3ozMzQrPShVQXlkN20mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShPY242aTNwLnB1c2goeEljU3BaJlM0ejhBbFsweDNdKSx4SWNTcFo+Pj1TNHo4QWxbT3dyVjZlKzB4ZjVdLHBid3ozMzQtPVM0ejhBbFsweDJdKX13aGlsZShwYnd6MzM0PlM0ejhBbFsweGFdKTtVQXlkN209LVM0ejhBbFsweDFdfX1pZihVQXlkN20+LVM0ejhBbFtialUyWmcrLTB4OWJdKXtCVU9WTGxpKFA2Q1AxQmYuUDIxcHMxYT1QNkNQMUJmLmlIYmxvNSxialUyWmcrPS0weDdjLE93clY2ZSs9MHg5ZCxVNmxoNGYrPS0weDRkKTticmVha31lbHNle0JVT1ZMbGkoUDZDUDFCZi5QMjFwczFhPVA2Q1AxQmYuaUhibG81LGJqVTJaZys9LTB4N2MsT3dyVjZlKz0weDlkLFU2bGg0Zis9MHgzOCk7YnJlYWt9Y2FzZSBVNmxoNGYtMHg2NDpyZXR1cm47Y2FzZSBVNmxoNGYtMHgxYjpCVU9WTGxpKFA2Q1AxQmYuUDIxcHMxYT1QNkNQMUJmLmlIYmxvNSxialUyWmcrPTB4MTE4LE93clY2ZSs9LTB4MmUsVTZsaDRmKz0tMHhjNSk7YnJlYWs7Y2FzZSBPd3JWNmUtIC0weDE2NTpCVU9WTGxpKFA2Q1AxQmYuaUhibG81LnhJY1NwWj1TNHo4QWxbT3dyVjZlKzB4YWJdLFA2Q1AxQmYuaUhibG81LnBid3ozMzQ9UzR6OEFsW2JqVTJaZystKGJqVTJaZysweDApXSxQNkNQMUJmLmlIYmxvNS5VQXlkN209LVM0ejhBbFtialUyWmcrLTB4MWZdLFA2Q1AxQmYuUDIxcHMxYT1QNkNQMUJmLmlIYmxvNSxPd3JWNmUrPTB4MTVhLFU2bGg0Zis9LTB4MTU3KTticmVhaztjYXNlIGJqVTJaZy0weDE4ZTpCVU9WTGxpKE9jbjZpM3AucHVzaCgoeEljU3BafFVBeWQ3bTw8cGJ3ejMzNCkmUzR6OEFsWzB4M10pLFA2Q1AxQmYuUDIxcHMxYT1QNkNQMUJmLmlIYmxvNSxialUyWmcrPS0weDdjLE93clY2ZSs9MHg4NSxVNmxoNGYrPTB4MTI2KTticmVhaztjYXNlIGJqVTJaZy0gLTB4MWQ6cmV0dXJuIEdlRFM3ZkEoT2NuNmkzcCk7Y2FzZSAweDY6Y2FzZSBQNkNQMUJmLmpJalo4ZlMuTFliWEFmVystMHg4ZTpjYXNlLTB4MzU6QlVPVkxsaShbaUhibG81LklQREhIcl09X014S0pwbSxpSGJsbzUuRW9JRW9TPVwiYlE9c3U/WCpuekRbfT5dUmNJYSRLO3A4UHJlLE9najVcXFwiVGAzTXgyayEmQH5TNkptN3ZVeyUvOSsxXnlvV0JFOnQ8R0hocShfaUwuRncjWjBmfClDZDRsQVlOVlwiLGlIYmxvNS5JNGVadXM9XCJcIisoaUhibG81LklQREhIcnx8XCJcIiksaUhibG81LmFXdnEzQT1pSGJsbzUuSTRlWnVzLmxlbmd0aCxpSGJsbzUuT2NuNmkzcD1bXSxQNkNQMUJmLlAyMXBzMWE9UDZDUDFCZi5pSGJsbzUsYmpVMlpnKz0tMHg2MSxPd3JWNmUrPTB4ZWEsVTZsaDRmKz0weGQ0KTticmVhaztjYXNlIFA2Q1AxQmYuaklqWjhmUy5MWWJYQWZXKzB4NTA6Y2FzZSAweGVhOmNhc2UgMHhkNjpCVU9WTGxpKFtQNkNQMUJmLmpJalo4ZlMucTMxRXhVZCxQNkNQMUJmLmpJalo4ZlMuRmN4S0tWLFA2Q1AxQmYuaklqWjhmUy5MWWJYQWZXXT1bLTB4ZWYsMHg3OCwweDlkXSxQNkNQMUJmLlAyMXBzMWE9UDZDUDFCZi5xYWFiWVosYmpVMlpnKz0tMHgxMCxPd3JWNmUrPTB4YjQpO2JyZWFrO2Nhc2UgVTZsaDRmLSAtMHgxNjpCVU9WTGxpKFtQNkNQMUJmLmpJalo4ZlMucTMxRXhVZCxQNkNQMUJmLmpJalo4ZlMuRmN4S0tWLFA2Q1AxQmYuaklqWjhmUy5MWWJYQWZXXT1bLTB4YTQsMHg3MywtMHgxNV0saklqWjhmUy5hQzZCN1k9ZnVuY3Rpb24oLi4uYmpVMlpnKXtyZXR1cm4geE5Kckd4KC0weDY4LDB4ZWYsMHg3Myx7aklqWjhmUzpQNkNQMUJmLmpJalo4ZlMscWFhYllaOnt9fSxialUyWmcpLm5leHQoKS52YWx1ZX0saklqWjhmUy5JcGFYdU5vPWZ1bmN0aW9uKC4uLmJqVTJaZyl7cmV0dXJuIHhOSnJHeCgweDgxLC0weDE5NSwweDcxLHtqSWpaOGZTOlA2Q1AxQmYuaklqWjhmUyxpSGJsbzU6e319LGJqVTJaZykubmV4dCgpLnZhbHVlfSxjbTZqN21zKGpJalo4ZlMuYUM2QjdZKSk7cmV0dXJuIGVGTzBYbk09ITB4MCx6WnhKRVJKWygweDEsaklqWjhmUy5hQzZCN1kpKE93clY2ZSsweDE1NyldKCk7Y2FzZS0weDNkOmNhc2UtMHg0ODpjYXNlLTB4NDI6QlVPVkxsaShPY242aTNwLnB1c2goKHhJY1NwWnxVQXlkN208PHBid3ozMzQpJlM0ejhBbFsweDNdKSxQNkNQMUJmLlAyMXBzMWE9UDZDUDFCZi5pSGJsbzUsVTZsaDRmKz0weDg1KTticmVhaztjYXNlIGJqVTJaZyE9LTB4ZjgmJmJqVTJaZyE9LTB4NjgmJmJqVTJaZy0gLTB4MTQ3OmNhc2UtMHhiZTpjYXNlLTB4YTY6cmV0dXJuIGJmTk80QTtjYXNlIDB4YTc6Y2FzZSBQNkNQMUJmLmpJalo4ZlMucTMxRXhVZCsweDE5ZTpCVU9WTGxpKFsuLi5xYWFiWVouS0MyWmRqNV09X014S0pwbSxxYWFiWVoucWFQVDMwTT1mdW5jdGlvbipialUyWmcoT3dyVjZlLFU2bGg0ZixQNkNQMUJmPXt3TmFwRVU6e319KXt3aGlsZShPd3JWNmUrVTZsaDRmIT09LTB4NDYpd2l0aChQNkNQMUJmLmpsRjFQeXx8UDZDUDFCZilzd2l0Y2goT3dyVjZlK1U2bGg0Zil7Y2FzZSAweGRkOmNhc2UgMHgzNzpQNkNQMUJmLndOYXBFVS5rQ2owNk9xPTB4NDc7cmV0dXJuIHFhYWJZWi5kaFBfb2RuPSEweDAsdjdlQnFfZ1txYWFiWVouS0MyWmRqNVtTNHo4QWxbT3dyVjZlKy0weDEzXV1dO2Nhc2UtMHg3OmNhc2UtMHgyODpCVU9WTGxpKFA2Q1AxQmYud05hcEVVLmtDajA2T3E9LTB4YmEscWFhYllaLktDMlpkajVbUzR6OEFsWzB4NF1dPVM0ejhBbFtPd3JWNmUrMHg0NF0pO2lmKHR5cGVvZiB2N2VCcV9nW3FhYWJZWi5LQzJaZGo1W1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7QlVPVkxsaShQNkNQMUJmLmpsRjFQeT1QNkNQMUJmLndOYXBFVSxPd3JWNmUrPS0weDRkLFU2bGg0Zis9MHg3Yik7YnJlYWt9ZWxzZXtCVU9WTGxpKFA2Q1AxQmYuamxGMVB5PVA2Q1AxQmYud05hcEVVLE93clY2ZSs9LTB4NGQsVTZsaDRmKz0weGQ0KTticmVha31kZWZhdWx0OnJldHVybiBxYWFiWVouZGhQX29kbj0hMHgwLHY3ZUJxX2dbcWFhYllaLktDMlpkajVbUzR6OEFsWzB4MF1dXT0oMHgxLGpJalo4ZlMuSXBhWHVObykoaHFHN0p1bFtxYWFiWVouS0MyWmRqNVtTNHo4QWxbT3dyVjZlKzB4OTBdXV0pO2Nhc2UgMHgxMzpjYXNlLTB4NjQ6Y2FzZSBVNmxoNGYtIC0weDNjOkJVT1ZMbGkoUDZDUDFCZi5qbEYxUHk9UDZDUDFCZi53TmFwRVUsT3dyVjZlKz0tMHhjYyxVNmxoNGYrPTB4NTkpO2JyZWFrO2Nhc2UgVTZsaDRmIT0weDk2JiZVNmxoNGYtMHg5MDpyZXR1cm4gcWFhYllaLmRoUF9vZG49ITB4MCx2N2VCcV9nW3FhYWJZWi5LQzJaZGo1W1M0ejhBbFsweDBdXV07Y2FzZSBQNkNQMUJmLndOYXBFVS5rQ2owNk9xKzB4NGU6cWFhYllaLktDMlpkajVbUzR6OEFsW093clY2ZSsweGFdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1txYWFiWVouS0MyWmRqNVtTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe0JVT1ZMbGkoUDZDUDFCZi5qbEYxUHk9UDZDUDFCZi53TmFwRVUsT3dyVjZlKz0tMHg4YSxVNmxoNGYrPTB4ZmMpO2JyZWFrfWVsc2V7QlVPVkxsaShQNkNQMUJmLmpsRjFQeT1QNkNQMUJmLndOYXBFVSxPd3JWNmUrPS0weDhhLFU2bGg0Zis9MHgxNTUpO2JyZWFrfWNhc2UgT3dyVjZlLSAtMHhkNDpjYXNlIDB4NTI6QlVPVkxsaShQNkNQMUJmLndOYXBFVS5rQ2owNk9xPTB4YyxxYWFiWVouS0MyWmRqNVtTNHo4QWxbMHg0XV09UzR6OEFsW093clY2ZSsweDddKTtpZih0eXBlb2YgdjdlQnFfZ1txYWFiWVouS0MyWmRqNVtTNHo4QWxbMHgwXV1dPT09UzR6OEFsW093clY2ZSsweGJdKXtCVU9WTGxpKFA2Q1AxQmYuamxGMVB5PVA2Q1AxQmYud05hcEVVLE93clY2ZSs9LTB4OGEsVTZsaDRmKz0tMHgzZSk7YnJlYWt9ZWxzZXtCVU9WTGxpKFA2Q1AxQmYuamxGMVB5PVA2Q1AxQmYud05hcEVVLE93clY2ZSs9LTB4OGEsVTZsaDRmKz0weDFiKTticmVha31jYXNlIFA2Q1AxQmYud05hcEVVLmtDajA2T3ErMHgxN2E6QlVPVkxsaShQNkNQMUJmLmpsRjFQeT1QNkNQMUJmLndOYXBFVSxPd3JWNmUrPS0weDEwNixVNmxoNGYrPTB4YTUpO2JyZWFrO2Nhc2UgUDZDUDFCZi53TmFwRVUua0NqMDZPcSsweDExZjpCVU9WTGxpKFA2Q1AxQmYuamxGMVB5PVA2Q1AxQmYud05hcEVVLE93clY2ZSs9LTB4MTA2LFU2bGg0Zis9MHhhNyk7YnJlYWt9fSxxYWFiWVouZGhQX29kbj12b2lkIDB4MCxQNkNQMUJmLlAyMXBzMWE9UDZDUDFCZi5xYWFiWVosT3dyVjZlKz0tMHg1YixVNmxoNGYrPTB4NDApO2JyZWFrO2Nhc2UtMHhlODpyZXR1cm47Y2FzZSBVNmxoNGYtIC0weDJjOmNhc2UtMHg0MTpQNkNQMUJmLnFhYWJZWi5iZk5PNEE9KDB4MSxxYVBUMzBNKSgtKE93clY2ZSstMHg1MSksMHgxYikubmV4dCgpLnZhbHVlO2lmKGRoUF9vZG4pe0JVT1ZMbGkoUDZDUDFCZi5QMjFwczFhPVA2Q1AxQmYucWFhYllaLGJqVTJaZys9LTB4MWMyKTticmVha31lbHNle0JVT1ZMbGkoUDZDUDFCZi5QMjFwczFhPVA2Q1AxQmYucWFhYllaLGJqVTJaZys9LTB4OTApO2JyZWFrfWRlZmF1bHQ6Y2FzZS0weDc6Y2FzZSBialUyWmctIC0weDFiZjpCVU9WTGxpKFA2Q1AxQmYuUDIxcHMxYT1QNkNQMUJmLmpJalo4ZlMsT3dyVjZlKz0tMHgyZik7YnJlYWs7Y2FzZSBialUyWmctIC0weDY0OkJVT1ZMbGkoUDZDUDFCZi5QMjFwczFhPVA2Q1AxQmYuaUhibG81LGJqVTJaZys9MHg5ZCxPd3JWNmUrPTB4MTlmLFU2bGg0Zis9LTB4MTY2KTticmVha319QlVPVkxsaShlRk8wWG5NPXZvaWQgMHgwLGJqVTJaZz14TkpyR3goMHg1ZSwtMHg0OCwweGFmKS5uZXh0KCkudmFsdWUpO2lmKGVGTzBYbk0pe3JldHVybiBialUyWmd9fSlbZUZPMFhuTShTNHo4QWxbMHgzMF0pXShjbTZqN21zKCguLi56WnhKRVJKKT0+e0JVT1ZMbGkoY202ajdtcyhlRk8wWG5NKSx6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSxjbTZqN21zKGJqVTJaZykpO2Z1bmN0aW9uIGVGTzBYbk0oLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweDFdXT1cIkVuL1E3R0lcXFwiXVtZJEg1RGgjd0MpUDZWWn5MdiZkbEJGPUtvcz5nciFhOjRXQGppPFNgJXAqZlhOX3xNLGJ1Y0FKa1J4KDltcTN7dE9VeS5UOF4yK3o/MTB9ZTtcIix6WnhKRVJKW1M0ejhBbFsweDMxXV09XCJcIisoelp4SkVSSltTNHo4QWxbMHgwXV18fFwiXCIpLHpaeEpFUkpbUzR6OEFsWzB4MzJdXT16WnhKRVJKW1M0ejhBbFsweDMxXV0ubGVuZ3RoLHpaeEpFUkpbUzR6OEFsWzB4MzVdXT1bXSx6WnhKRVJKW1M0ejhBbFsweDM0XV09UzR6OEFsWzB4MF0selp4SkVSSlstUzR6OEFsWzB4MWJdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweGFdXT0tUzR6OEFsWzB4MV0pO2Zvcih6WnhKRVJKW1M0ejhBbFsweDMzXV09UzR6OEFsWzB4MF07elp4SkVSSltTNHo4QWxbMHgzM11dPHpaeEpFUkpbUzR6OEFsWzB4MzJdXTt6WnhKRVJKW1M0ejhBbFsweDMzXV0rKyl7elp4SkVSSltTNHo4QWxbMHgxMV1dPXpaeEpFUkpbUzR6OEFsWzB4MV1dLmluZGV4T2Yoelp4SkVSSltTNHo4QWxbMHgzMV1dW3paeEpFUkpbUzR6OEFsWzB4MzNdXV0pO2lmKHpaeEpFUkpbUzR6OEFsWzB4MTFdXT09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih6WnhKRVJKW1M0ejhBbFsweGFdXTxTNHo4QWxbMHgwXSl7elp4SkVSSltTNHo4QWxbMHhhXV09elp4SkVSSltTNHo4QWxbMHgxMV1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweGFdXSs9elp4SkVSSltTNHo4QWxbMHgxMV1dKlM0ejhBbFsweDEzXSx6WnhKRVJKW1M0ejhBbFsweDM0XV18PXpaeEpFUkpbUzR6OEFsWzB4YV1dPDx6WnhKRVJKWy1TNHo4QWxbMHgxYl1dLHpaeEpFUkpbLVM0ejhBbFsweDFiXV0rPSh6WnhKRVJKW1M0ejhBbFsweGFdXSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MzVdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4MzRdXSZTNHo4QWxbMHgzXSkselp4SkVSSltTNHo4QWxbMHgzNF1dPj49UzR6OEFsWzB4Ml0selp4SkVSSlstUzR6OEFsWzB4MWJdXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbLVM0ejhBbFsweDFiXV0+UzR6OEFsWzB4YV0pO3paeEpFUkpbUzR6OEFsWzB4YV1dPS1TNHo4QWxbMHgxXX19aWYoelp4SkVSSltTNHo4QWxbMHhhXV0+LVM0ejhBbFsweDFdKXt6WnhKRVJKW1M0ejhBbFsweDM1XV0ucHVzaCgoelp4SkVSSltTNHo4QWxbMHgzNF1dfHpaeEpFUkpbUzR6OEFsWzB4YV1dPDx6WnhKRVJKWy1TNHo4QWxbMHgxYl1dKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoelp4SkVSSltTNHo4QWxbMHgzNV1dKX1mdW5jdGlvbiBialUyWmcoLi4uelp4SkVSSil7elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT1lRk8wWG5NKGhxRzdKdWxbelp4SkVSSltTNHo4QWxbMHgwXV1dKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV19QlVPVkxsaSh4TkpyR3g9elp4SkVSSltTNHo4QWxbMHgwXV1bYmpVMlpnKDB4MTEwKV0sT3dyVjZlPXpaeEpFUkpbUzR6OEFsWzB4MF1dW2JqVTJaZygweDExMSkrYmpVMlpnKDB4MTEyKV0pfSkpO2NvbnN0IFU2bGg0Zj17W1M0ejhBbFsweDFdXTp7W2VGTzBYbk0oUzR6OEFsWzB4M2RdKV06ZUZPMFhuTSgweDExNCksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTShTNHo4QWxbMHgzNl0pLFtlRk8wWG5NKFM0ejhBbFsweDQyXSkrZUZPMFhuTShTNHo4QWxbMHg0M10pK1M0ejhBbFsweDQ0XV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NjJdKStTNHo4QWxbMHg2M10sW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHgzNl0pLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDFdKStTNHo4QWxbMHgzOF1dOltlRk8wWG5NKDB4MTFlKV0sW2VGTzBYbk0oUzR6OEFsWzB4M2NdKV06W2VGTzBYbk0oMHgxMjApXX0sW1M0ejhBbFsweDkwXV06e1tlRk8wWG5NKFM0ejhBbFsweDVhXSkrUzR6OEFsWzB4MzVdXTplRk8wWG5NKDB4MTIyKSxbZUZPMFhuTShTNHo4QWxbMHgzOV0pXTplRk8wWG5NKDB4MTIzKSxbZUZPMFhuTShTNHo4QWxbMHgzZV0pXTp7W2VGTzBYbk0oUzR6OEFsWzB4M2FdKV06ZUZPMFhuTShTNHo4QWxbMHg1MV0pLFtlRk8wWG5NKFM0ejhBbFsweDNiXSldOmVGTzBYbk0oUzR6OEFsWzB4MzZdKSxbZUZPMFhuTShTNHo4QWxbMHg1Ml0pK1M0ejhBbFsweDUzXV06UzR6OEFsWzB4MzddfSxbZUZPMFhuTShTNHo4QWxbMHg0Nl0pXTpbZUZPMFhuTSgweDEyOCldLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKFM0ejhBbFsweDZkXSkrZUZPMFhuTSgweDEyYSkrZUZPMFhuTSgweDEyYikrZUZPMFhuTSgweDEyYyldfSxbUzR6OEFsWzB4MTk1XV06e1tlRk8wWG5NKFM0ejhBbFsweDNkXSldOmVGTzBYbk0oMHgxMmQpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oUzR6OEFsWzB4M2ZdKSxbZUZPMFhuTShTNHo4QWxbMHgzZV0pXTp7W2VGTzBYbk0oUzR6OEFsWzB4M2FdKV06ZUZPMFhuTShTNHo4QWxbMHgzZl0pLFtlRk8wWG5NKFM0ejhBbFsweDNiXSldOmVGTzBYbk0oMHgxMmYpLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDFdKStTNHo4QWxbMHgzOF1dOltlRk8wWG5NKDB4MTMwKV0sW2VGTzBYbk0oUzR6OEFsWzB4M2NdKV06W2VGTzBYbk0oMHgxMzEpXX0sW1M0ejhBbFsweDE4NF1dOntbZUZPMFhuTShTNHo4QWxbMHgzZF0pXTplRk8wWG5NKDB4MTMyKSxbZUZPMFhuTShTNHo4QWxbMHgzOV0pXTplRk8wWG5NKFM0ejhBbFsweDQ1XSkrZUZPMFhuTSgweDEzNCkrZUZPMFhuTSgweDEzNSkrUzR6OEFsWzB4NWNdLFtlRk8wWG5NKFM0ejhBbFsweDQyXSkrZUZPMFhuTShTNHo4QWxbMHg0M10pK1M0ejhBbFsweDQ0XV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NDVdKStlRk8wWG5NKDB4MTM2KSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKDB4MTM3KSxbZUZPMFhuTShTNHo4QWxbMHg0MF0pXTpTNHo4QWxbMHgzN119LFtlRk8wWG5NKFM0ejhBbFsweDQ2XSldOltlRk8wWG5NKFM0ejhBbFsweDYxXSkrZUZPMFhuTSgweDEzOSkrZUZPMFhuTSgweDEzYSkrZUZPMFhuTSgweDEzYikrZUZPMFhuTSgweDEzYyldLFtlRk8wWG5NKFM0ejhBbFsweDQ4XSkrZUZPMFhuTShTNHo4QWxbMHg0OV0pK2VGTzBYbk0oUzR6OEFsWzB4NGFdKV06W2VGTzBYbk0oMHgxNDApXX0sW1M0ejhBbFsweDE1Y11dOntbZUZPMFhuTShTNHo4QWxbMHgzZF0pXTplRk8wWG5NKDB4MTQxKSxbZUZPMFhuTShTNHo4QWxbMHgzOV0pXTplRk8wWG5NKDB4MTQyKSxbZUZPMFhuTShTNHo4QWxbMHgzZV0pXTp7W2VGTzBYbk0oUzR6OEFsWzB4M2FdKV06ZUZPMFhuTShTNHo4QWxbMHg0N10pLFtlRk8wWG5NKFM0ejhBbFsweDNiXSldOmVGTzBYbk0oUzR6OEFsWzB4NDddKSxbZUZPMFhuTShTNHo4QWxbMHg0MF0pXTpTNHo4QWxbMHgzN119LFtlRk8wWG5NKFM0ejhBbFsweDQ2XSldOltlRk8wWG5NKFM0ejhBbFsweDRjXSkrZUZPMFhuTShTNHo4QWxbMHg1NF0pK2VGTzBYbk0oMHgxNDYpK2VGTzBYbk0oMHgxNDcpK2VGTzBYbk0oMHgxNDgpXSxbZUZPMFhuTShTNHo4QWxbMHg0OF0pK2VGTzBYbk0oUzR6OEFsWzB4NDldKStlRk8wWG5NKFM0ejhBbFsweDRhXSldOltlRk8wWG5NKDB4MTQ5KV19LFtTNHo4QWxbMHg0Yl1dOntbZUZPMFhuTShTNHo4QWxbMHgzZF0pXTplRk8wWG5NKDB4MTRhKSxbZUZPMFhuTShTNHo4QWxbMHgzOV0pXTplRk8wWG5NKDB4MTRiKStlRk8wWG5NKDB4MTRjKStlRk8wWG5NKFM0ejhBbFsweDUwXSksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oMHgxNGUpLFtlRk8wWG5NKFM0ejhBbFsweDNiXSldOmVGTzBYbk0oMHgxNGYpLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oMHgxNTApXSxbZUZPMFhuTShTNHo4QWxbMHgzY10pXTpbZUZPMFhuTShTNHo4QWxbMHg0Y10pK2VGTzBYbk0oMHgxNTEpK2VGTzBYbk0oMHgxNTIpK2VGTzBYbk0oMHgxNTMpXX0sW1M0ejhBbFsweDRkXV06e1tlRk8wWG5NKFM0ejhBbFsweDNkXSldOmVGTzBYbk0oMHgxNTQpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oMHgxNTUpLFtlRk8wWG5NKFM0ejhBbFsweDNlXSldOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKDB4MTU2KSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTpTNHo4QWxbMHg0ZV0sW2VGTzBYbk0oUzR6OEFsWzB4NDBdKV06UzR6OEFsWzB4MzddfSxbZUZPMFhuTShTNHo4QWxbMHg0Nl0pXTpbZUZPMFhuTSgweDE1NyldLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKDB4MTU4KV19LFtTNHo4QWxbMHg0Zl1dOntbZUZPMFhuTShTNHo4QWxbMHgzZF0pXTplRk8wWG5NKDB4MTU5KSxbZUZPMFhuTShTNHo4QWxbMHgzOV0pXTplRk8wWG5NKDB4MTVhKStlRk8wWG5NKDB4MTViKStlRk8wWG5NKDB4MTVjKStlRk8wWG5NKFM0ejhBbFsweDUwXSksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NTFdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDM2XSksW2VGTzBYbk0oUzR6OEFsWzB4NTJdKStTNHo4QWxbMHg1M11dOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oMHgxNWQpXSxbZUZPMFhuTShTNHo4QWxbMHg0OF0pK2VGTzBYbk0oUzR6OEFsWzB4NDldKStlRk8wWG5NKFM0ejhBbFsweDRhXSldOltlRk8wWG5NKDB4MTVlKV19LFtTNHo4QWxbMHgxZl1dOntbZUZPMFhuTShTNHo4QWxbMHgzZF0pXTplRk8wWG5NKDB4MTVmKSxbZUZPMFhuTShTNHo4QWxbMHgzOV0pXTplRk8wWG5NKDB4MTYwKSxbZUZPMFhuTShTNHo4QWxbMHgzZV0pXTp7W2VGTzBYbk0oUzR6OEFsWzB4M2FdKV06ZUZPMFhuTSgweDE2MSksW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHg1ZF0pLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oUzR6OEFsWzB4NGNdKStlRk8wWG5NKFM0ejhBbFsweDU0XSkrZUZPMFhuTSgweDE2MykrZUZPMFhuTSgweDE2NCkrZUZPMFhuTSgweDE2NSldLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKDB4MTY2KV19LFtTNHo4QWxbMHg1NV1dOntbZUZPMFhuTShTNHo4QWxbMHgzZF0pXTplRk8wWG5NKDB4MTY3KSxbZUZPMFhuTShTNHo4QWxbMHg1N10pK2VGTzBYbk0oUzR6OEFsWzB4NThdKV06ZUZPMFhuTShTNHo4QWxbMHg1Nl0pLFtlRk8wWG5NKFM0ejhBbFsweDNlXSldOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKFM0ejhBbFsweDU2XSksW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTSgweDE2YiksW2VGTzBYbk0oUzR6OEFsWzB4NTJdKStTNHo4QWxbMHg1M11dOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oMHgxNmMpXSxbZUZPMFhuTShTNHo4QWxbMHgzY10pXTpbZUZPMFhuTShTNHo4QWxbMHg0Y10pK2VGTzBYbk0oMHgxNmQpK2VGTzBYbk0oMHgxNmUpK1wibS9cIl19LFtTNHo4QWxbMHg0Y11dOntbZUZPMFhuTShTNHo4QWxbMHgzZF0pXTplRk8wWG5NKDB4MTZmKSxbZUZPMFhuTShTNHo4QWxbMHg1N10pK2VGTzBYbk0oUzR6OEFsWzB4NThdKV06ZUZPMFhuTSgweDE3MCksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NTFdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDM2XSksW2VGTzBYbk0oUzR6OEFsWzB4NDBdKV06UzR6OEFsWzB4MzddfSxbZUZPMFhuTShTNHo4QWxbMHg0Nl0pXTpbZUZPMFhuTSgweDE3MSldLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKFM0ejhBbFsweDRjXSkrZUZPMFhuTSgweDE3MikrZUZPMFhuTSgweDE3MykrZUZPMFhuTSgweDE3NCkrZUZPMFhuTSgweDE3NSldfSxbUzR6OEFsWzB4MTMwXV06e1tlRk8wWG5NKFM0ejhBbFsweDNkXSldOmVGTzBYbk0oMHgxNzYpLFtlRk8wWG5NKFM0ejhBbFsweDU3XSkrZUZPMFhuTShTNHo4QWxbMHg1OF0pXTplRk8wWG5NKDB4MTc3KSxbZUZPMFhuTShTNHo4QWxbMHgzZV0pXTp7W2VGTzBYbk0oUzR6OEFsWzB4M2FdKV06ZUZPMFhuTShTNHo4QWxbMHg1OV0pLFtlRk8wWG5NKFM0ejhBbFsweDNiXSldOmVGTzBYbk0oUzR6OEFsWzB4NTldKSxbZUZPMFhuTShTNHo4QWxbMHg0MF0pXTpTNHo4QWxbMHgzN119LFtlRk8wWG5NKFM0ejhBbFsweDQxXSkrUzR6OEFsWzB4MzhdXTpbZUZPMFhuTSgweDE3OSldLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKDB4MTdhKV19LFtTNHo4QWxbMHgxM2JdXTp7W2VGTzBYbk0oUzR6OEFsWzB4NWFdKStTNHo4QWxbMHgzNV1dOmVGTzBYbk0oMHgxN2IpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oMHgxN2MpLFtlRk8wWG5NKFM0ejhBbFsweDQyXSkrZUZPMFhuTShTNHo4QWxbMHg0M10pK1M0ejhBbFsweDQ0XV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oMHgxN2QpLFtlRk8wWG5NKFM0ejhBbFsweDNiXSldOmVGTzBYbk0oMHgxN2UpLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDFdKStTNHo4QWxbMHgzOF1dOltlRk8wWG5NKFM0ejhBbFsweDRjXSkrZUZPMFhuTShTNHo4QWxbMHg1NF0pK2VGTzBYbk0oMHgxN2YpK2VGTzBYbk0oMHgxODApK1M0ejhBbFsweGZdXSxbZUZPMFhuTShTNHo4QWxbMHgzY10pXTpbZUZPMFhuTSgweDE4MSldfSxbUzR6OEFsWzB4MTliXV06e1tlRk8wWG5NKFM0ejhBbFsweDNkXSldOmVGTzBYbk0oMHgxODIpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oMHgxODMpK2VGTzBYbk0oMHgxODQpLFtlRk8wWG5NKFM0ejhBbFsweDQyXSkrZUZPMFhuTShTNHo4QWxbMHg0M10pK1M0ejhBbFsweDQ0XV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NWJdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDViXSksW2VGTzBYbk0oUzR6OEFsWzB4NDBdKV06UzR6OEFsWzB4MzddfSxbZUZPMFhuTShTNHo4QWxbMHg0Nl0pXTpbZUZPMFhuTSgweDE4NildLFtlRk8wWG5NKFM0ejhBbFsweDQ4XSkrZUZPMFhuTShTNHo4QWxbMHg0OV0pK2VGTzBYbk0oUzR6OEFsWzB4NGFdKV06W2VGTzBYbk0oMHgxODcpXX0sMHgxMDY4OntbZUZPMFhuTShTNHo4QWxbMHg1YV0pK1M0ejhBbFsweDM1XV06ZUZPMFhuTSgweDE4OCksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTSgweDE4OSkrZUZPMFhuTSgweDE4YSkrXCJldFwiLFtlRk8wWG5NKFM0ejhBbFsweDNlXSldOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKDB4MThiKStTNHo4QWxbMHg1Y10sW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHg1ZF0pLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDFdKStTNHo4QWxbMHgzOF1dOltlRk8wWG5NKDB4MThjKV0sW2VGTzBYbk0oUzR6OEFsWzB4M2NdKV06W2VGTzBYbk0oUzR6OEFsWzB4NGNdKStlRk8wWG5NKDB4MThkKStlRk8wWG5NKDB4MThlKStlRk8wWG5NKDB4MThmKStlRk8wWG5NKDB4MTkwKV19LDB4MTM4ODp7W2VGTzBYbk0oUzR6OEFsWzB4M2RdKV06ZUZPMFhuTSgweDE5MSksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTShTNHo4QWxbMHg1ZV0pLFtlRk8wWG5NKFM0ejhBbFsweDNlXSldOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKFM0ejhBbFsweDVlXSksW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTSgweDE5MyksW2VGTzBYbk0oUzR6OEFsWzB4NDBdKV06UzR6OEFsWzB4MzddfSxbZUZPMFhuTShTNHo4QWxbMHg0Nl0pXTpbZUZPMFhuTSgweDE5NCldLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKFM0ejhBbFsweDRjXSkrZUZPMFhuTSgweDE5NSkrZUZPMFhuTSgweDE5NikrZUZPMFhuTSgweDE5NyldfSwweDIwMTk6e1tlRk8wWG5NKFM0ejhBbFsweDNkXSldOmVGTzBYbk0oMHgxOTgpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oMHgxOTkpK2VGTzBYbk0oMHgxOWEpLFtlRk8wWG5NKFM0ejhBbFsweDQyXSkrZUZPMFhuTShTNHo4QWxbMHg0M10pK1M0ejhBbFsweDQ0XV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NWZdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDVmXSksW2VGTzBYbk0oUzR6OEFsWzB4NDBdKV06UzR6OEFsWzB4MzddfSxbZUZPMFhuTShTNHo4QWxbMHg0Nl0pXTpbZUZPMFhuTSgweDE5YyldLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKFM0ejhBbFsweDRjXSkrZUZPMFhuTSgweDE5ZCkrZUZPMFhuTShTNHo4QWxbMHg2YV0pK1M0ejhBbFsweDZiXV19LDB4MjEwNTp7W2VGTzBYbk0oUzR6OEFsWzB4M2RdKV06ZUZPMFhuTSgweDE5ZiksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTSgweDFhMCksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NTFdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDM2XSksW2VGTzBYbk0oUzR6OEFsWzB4NTJdKStTNHo4QWxbMHg1M11dOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDFdKStTNHo4QWxbMHgzOF1dOltlRk8wWG5NKFM0ejhBbFsweDRjXSkrZUZPMFhuTSgweDFhMSkrZUZPMFhuTSgweDFhMikrZUZPMFhuTSgweDFhMyldLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKDB4MWE0KV19LDB4ODY4Yjp7W2VGTzBYbk0oUzR6OEFsWzB4M2RdKV06ZUZPMFhuTSgweDFhNSksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTSgweDFhNiksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NTFdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDM2XSksW2VGTzBYbk0oUzR6OEFsWzB4NTJdKStTNHo4QWxbMHg1M11dOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oMHgxYTcpXSxbZUZPMFhuTShTNHo4QWxbMHg0OF0pK2VGTzBYbk0oUzR6OEFsWzB4NDldKStlRk8wWG5NKFM0ejhBbFsweDRhXSldOltlRk8wWG5NKDB4MWE4KV19LDB4YTRlYzp7W2VGTzBYbk0oUzR6OEFsWzB4NWFdKStTNHo4QWxbMHgzNV1dOmVGTzBYbk0oMHgxYTkpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oMHgxYWEpLFtlRk8wWG5NKFM0ejhBbFsweDNlXSldOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKFM0ejhBbFsweDYwXSksW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHg2MF0pLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oMHgxYWMpXSxbZUZPMFhuTShTNHo4QWxbMHgzY10pXTpbZUZPMFhuTSgweDFhZCldfSwweGE0YjE6e1tlRk8wWG5NKFM0ejhBbFsweDNkXSldOmVGTzBYbk0oMHgxYWUpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oMHgxYWYpLFtlRk8wWG5NKFM0ejhBbFsweDNlXSldOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKFM0ejhBbFsweDUxXSksW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHgzNl0pLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oMHgxYjApXSxbZUZPMFhuTShTNHo4QWxbMHgzY10pXTpbZUZPMFhuTSgweDFiMSldfSwweGE4NmE6e1tlRk8wWG5NKFM0ejhBbFsweDNkXSldOmVGTzBYbk0oMHgxYjIpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oMHgxYjMpLFtlRk8wWG5NKFM0ejhBbFsweDNlXSldOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKDB4MWI0KSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKDB4MWI1KSxbZUZPMFhuTShTNHo4QWxbMHg0MF0pXTpTNHo4QWxbMHgzN119LFtlRk8wWG5NKFM0ejhBbFsweDQ2XSldOltlRk8wWG5NKDB4MWI2KV0sW2VGTzBYbk0oUzR6OEFsWzB4M2NdKV06W2VGTzBYbk0oUzR6OEFsWzB4NjFdKStlRk8wWG5NKDB4MWI3KStlRk8wWG5NKDB4MWI4KV19LDB4ZTcwODp7W2VGTzBYbk0oUzR6OEFsWzB4M2RdKV06ZUZPMFhuTSgweDFiOSksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTSgweDFiYSksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NjJdKStTNHo4QWxbMHg2M10sW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHgzNl0pLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oMHgxYmIpXSxbZUZPMFhuTShTNHo4QWxbMHgzY10pXTpbZUZPMFhuTSgweDFiYyldfSwweDEzZTMxOntbZUZPMFhuTShTNHo4QWxbMHgzZF0pXTplRk8wWG5NKDB4MWJkKStTNHo4QWxbMHhhOF0sW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTSgweDFiZSksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NTFdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDM2XSksW2VGTzBYbk0oUzR6OEFsWzB4NDBdKV06UzR6OEFsWzB4MzddfSxbZUZPMFhuTShTNHo4QWxbMHg0Nl0pXTpbZUZPMFhuTSgweDFiZildLFtlRk8wWG5NKFM0ejhBbFsweDQ4XSkrZUZPMFhuTShTNHo4QWxbMHg0OV0pK2VGTzBYbk0oUzR6OEFsWzB4NGFdKV06W2VGTzBYbk0oMHgxYzApXX0sMHgyOGM1ODp7W2VGTzBYbk0oUzR6OEFsWzB4NWFdKStTNHo4QWxbMHgzNV1dOmVGTzBYbk0oMHgxYzEpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oMHgxYzIpK2VGTzBYbk0oMHgxYzMpK1M0ejhBbFsweDY0XSxbZUZPMFhuTShTNHo4QWxbMHg0Ml0pK2VGTzBYbk0oUzR6OEFsWzB4NDNdKStTNHo4QWxbMHg0NF1dOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKFM0ejhBbFsweDUxXSksW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHgzNl0pLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDFdKStTNHo4QWxbMHgzOF1dOltlRk8wWG5NKDB4MWM0KV0sW2VGTzBYbk0oUzR6OEFsWzB4M2NdKV06W2VGTzBYbk0oMHgxYzUpXX0sMHg4Mjc1MDp7W2VGTzBYbk0oUzR6OEFsWzB4M2RdKV06ZUZPMFhuTSgweDFjNiksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTSgweDFjNyksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NTFdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDM2XSksW2VGTzBYbk0oUzR6OEFsWzB4NTJdKStTNHo4QWxbMHg1M11dOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oUzR6OEFsWzB4NGNdKStlRk8wWG5NKFM0ejhBbFsweDU0XSkrZUZPMFhuTSgweDFjOCkrZUZPMFhuTSgweDFjOSldLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKDB4MWNhKV19LFtTNHo4QWxbMHgxMTFdXTp7W2VGTzBYbk0oUzR6OEFsWzB4NWFdKStTNHo4QWxbMHgzNV1dOmVGTzBYbk0oMHgxY2IpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oMHgxY2MpLFtlRk8wWG5NKFM0ejhBbFsweDNlXSldOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKFM0ejhBbFsweDY1XSksW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHg2NV0pLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oMHgxY2UpXSxbZUZPMFhuTShTNHo4QWxbMHg0OF0pK2VGTzBYbk0oUzR6OEFsWzB4NDldKStlRk8wWG5NKFM0ejhBbFsweDRhXSldOltlRk8wWG5NKDB4MWNmKV19LFtTNHo4QWxbMHgxNzldXTp7W2VGTzBYbk0oUzR6OEFsWzB4M2RdKV06ZUZPMFhuTSgweDFkMCksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTSgweDFkMSksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NjZdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDY2XSksW2VGTzBYbk0oUzR6OEFsWzB4NTJdKStTNHo4QWxbMHg1M11dOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oMHgxZDMpXSxbZUZPMFhuTShTNHo4QWxbMHg0OF0pK2VGTzBYbk0oUzR6OEFsWzB4NDldKStlRk8wWG5NKFM0ejhBbFsweDRhXSldOltlRk8wWG5NKDB4MWQ0KV19LFtTNHo4QWxbMHg2N11dOntbZUZPMFhuTShTNHo4QWxbMHg1YV0pK1M0ejhBbFsweDM1XV06ZUZPMFhuTSgweDFkNSksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTSgweDFkNiksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NjhdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDY4XSksW2VGTzBYbk0oUzR6OEFsWzB4NTJdKStTNHo4QWxbMHg1M11dOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oUzR6OEFsWzB4NGNdKStlRk8wWG5NKDB4MWQ4KStlRk8wWG5NKDB4MWQ5KStlRk8wWG5NKDB4MWRhKV0sW2VGTzBYbk0oUzR6OEFsWzB4M2NdKV06W2VGTzBYbk0oMHgxZGIpXX0sMHhhYjU6e1tlRk8wWG5NKFM0ejhBbFsweDNkXSldOmVGTzBYbk0oMHgxZGMpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oMHgxZGQpLFtlRk8wWG5NKFM0ejhBbFsweDNlXSldOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKFM0ejhBbFsweDM2XSksW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHgzNl0pLFtlRk8wWG5NKFM0ejhBbFsweDQwXSldOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDZdKV06W2VGTzBYbk0oMHgxZGUpXSxbZUZPMFhuTShTNHo4QWxbMHgzY10pXTpbZUZPMFhuTSgweDFkZildfSxbUzR6OEFsWzB4MTc4XV06e1tlRk8wWG5NKFM0ejhBbFsweDVhXSkrUzR6OEFsWzB4MzVdXTplRk8wWG5NKFM0ejhBbFsweDcxXSksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTSgweDFlMSkrXCJhbVwiLFtlRk8wWG5NKFM0ejhBbFsweDNlXSldOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKFM0ejhBbFsweDY5XSksW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHg2OV0pLFtlRk8wWG5NKFM0ejhBbFsweDUyXSkrUzR6OEFsWzB4NTNdXTpTNHo4QWxbMHgzN119LFtlRk8wWG5NKFM0ejhBbFsweDQ2XSldOltlRk8wWG5NKDB4MWUzKV0sW2VGTzBYbk0oUzR6OEFsWzB4NDhdKStlRk8wWG5NKFM0ejhBbFsweDQ5XSkrZUZPMFhuTShTNHo4QWxbMHg0YV0pXTpbZUZPMFhuTShTNHo4QWxbMHg0Y10pK2VGTzBYbk0oMHgxZTQpK2VGTzBYbk0oUzR6OEFsWzB4NmFdKStTNHo4QWxbMHg2Yl1dfSwweDEzOGRlOntbZUZPMFhuTShTNHo4QWxbMHgzZF0pXTplRk8wWG5NKDB4MWU1KSxbZUZPMFhuTShTNHo4QWxbMHg1N10pK2VGTzBYbk0oUzR6OEFsWzB4NThdKV06ZUZPMFhuTSgweDFlNikrZUZPMFhuTSgweDFlNyksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NmNdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDZjXSksW2VGTzBYbk0oUzR6OEFsWzB4NTJdKStTNHo4QWxbMHg1M11dOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDFdKStTNHo4QWxbMHgzOF1dOltlRk8wWG5NKFM0ejhBbFsweDZkXSkrZUZPMFhuTSgweDFlOSkrZUZPMFhuTSgweDFlYSkrUzR6OEFsWzB4MWIyXV0sW2VGTzBYbk0oUzR6OEFsWzB4M2NdKV06W2VGTzBYbk0oUzR6OEFsWzB4NGNdKStlRk8wWG5NKDB4MWViKStlRk8wWG5NKDB4MWVjKStlRk8wWG5NKDB4MWVkKV19LDB4MWQ4ODp7W2VGTzBYbk0oUzR6OEFsWzB4M2RdKV06ZUZPMFhuTSgweDFlZSksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTSgweDFlZiksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NTFdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDM2XSksW2VGTzBYbk0oUzR6OEFsWzB4NTJdKStTNHo4QWxbMHg1M11dOlM0ejhBbFsweDM3XX0sW2VGTzBYbk0oUzR6OEFsWzB4NDFdKStTNHo4QWxbMHgzOF1dOltlRk8wWG5NKDB4MWYwKV0sW2VGTzBYbk0oUzR6OEFsWzB4M2NdKV06W2VGTzBYbk0oMHgxZjEpXX0sW1M0ejhBbFsweDZlXV06e1tlRk8wWG5NKFM0ejhBbFsweDVhXSkrUzR6OEFsWzB4MzVdXTplRk8wWG5NKDB4MWYyKSxbZUZPMFhuTShTNHo4QWxbMHg1N10pK2VGTzBYbk0oUzR6OEFsWzB4NThdKV06ZUZPMFhuTSgweDFmMyksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NjJdKStTNHo4QWxbMHg2M10sW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHgzNl0pLFtlRk8wWG5NKFM0ejhBbFsweDUyXSkrUzR6OEFsWzB4NTNdXTpTNHo4QWxbMHgzN119LFtlRk8wWG5NKFM0ejhBbFsweDQ2XSldOltlRk8wWG5NKDB4MWY0KV0sW2VGTzBYbk0oUzR6OEFsWzB4M2NdKV06W2VGTzBYbk0oMHgxZjUpXX0sW1M0ejhBbFsweDEzNF1dOntbZUZPMFhuTShTNHo4QWxbMHg1YV0pK1M0ejhBbFsweDM1XV06ZUZPMFhuTSgweDFmNiksW2VGTzBYbk0oUzR6OEFsWzB4MzldKV06ZUZPMFhuTSgweDFmNyksW2VGTzBYbk0oUzR6OEFsWzB4M2VdKV06e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oUzR6OEFsWzB4NTFdKSxbZUZPMFhuTShTNHo4QWxbMHgzYl0pXTplRk8wWG5NKFM0ejhBbFsweDM2XSksW2VGTzBYbk0oUzR6OEFsWzB4NDBdKV06UzR6OEFsWzB4MzddfSxbZUZPMFhuTShTNHo4QWxbMHg0Nl0pXTpbZUZPMFhuTSgweDFmOCldLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKDB4MWY5KV19LFtTNHo4QWxbMHg2Zl1dOntbZUZPMFhuTShTNHo4QWxbMHgzZF0pXTplRk8wWG5NKDB4MWZhKSxbZUZPMFhuTShTNHo4QWxbMHgzOV0pXTplRk8wWG5NKDB4MWZiKSxbZUZPMFhuTShTNHo4QWxbMHgzZV0pXTp7W2VGTzBYbk0oUzR6OEFsWzB4M2FdKV06ZUZPMFhuTShTNHo4QWxbMHg3MF0pLFtlRk8wWG5NKFM0ejhBbFsweDNiXSldOmVGTzBYbk0oUzR6OEFsWzB4NzBdKSxbZUZPMFhuTShTNHo4QWxbMHg0MF0pXTpTNHo4QWxbMHgzN119LFtlRk8wWG5NKFM0ejhBbFsweDQ2XSldOltlRk8wWG5NKDB4MWZkKV0sW2VGTzBYbk0oUzR6OEFsWzB4M2NdKV06W2VGTzBYbk0oMHgxZmUpXX0sW1M0ejhBbFsweDcxXV06e1tlRk8wWG5NKFM0ejhBbFsweDNkXSldOmVGTzBYbk0oMHgxZmYpLFtlRk8wWG5NKFM0ejhBbFsweDM5XSldOmVGTzBYbk0oUzR6OEFsWzB4MTg2XSksW2VGTzBYbk0oUzR6OEFsWzB4NDJdKStlRk8wWG5NKFM0ejhBbFsweDQzXSkrUzR6OEFsWzB4NDRdXTp7W2VGTzBYbk0oUzR6OEFsWzB4M2FdKV06ZUZPMFhuTShTNHo4QWxbMHg1MV0pLFtlRk8wWG5NKFM0ejhBbFsweDNiXSldOmVGTzBYbk0oUzR6OEFsWzB4MzZdKSxbZUZPMFhuTShTNHo4QWxbMHg1Ml0pK1M0ejhBbFsweDUzXV06UzR6OEFsWzB4MzddfSxbZUZPMFhuTShTNHo4QWxbMHg0Nl0pXTpbZUZPMFhuTSgweDIwMSldLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKDB4MjAyKV19LDB4NWM4OntbZUZPMFhuTShTNHo4QWxbMHgzZF0pXTplRk8wWG5NKDB4MjAzKSxbZUZPMFhuTShTNHo4QWxbMHgzOV0pXTplRk8wWG5NKDB4MjA0KSxbZUZPMFhuTShTNHo4QWxbMHg0Ml0pK2VGTzBYbk0oUzR6OEFsWzB4NDNdKStTNHo4QWxbMHg0NF1dOntbZUZPMFhuTShTNHo4QWxbMHgzYV0pXTplRk8wWG5NKFM0ejhBbFsweDcyXSksW2VGTzBYbk0oUzR6OEFsWzB4M2JdKV06ZUZPMFhuTShTNHo4QWxbMHg3Ml0pLFtlRk8wWG5NKFM0ejhBbFsweDUyXSkrUzR6OEFsWzB4NTNdXTpTNHo4QWxbMHgzN119LFtlRk8wWG5NKFM0ejhBbFsweDQxXSkrUzR6OEFsWzB4MzhdXTpbZUZPMFhuTShTNHo4QWxbMHg0Y10pK2VGTzBYbk0oUzR6OEFsWzB4NTRdKStlRk8wWG5NKDB4MjA2KStcInJnXCJdLFtlRk8wWG5NKFM0ejhBbFsweDNjXSldOltlRk8wWG5NKDB4MjA3KV19fSxQNkNQMUJmPWVGTzBYbk0oMHgyMDgpO2xldCBfTXhLSnBtPWVGTzBYbk0oMHgyMDkpO2NvbnN0IGJESnhXVD1TNHo4QWxbMHg3M10sRTZfS1JaPVM0ejhBbFsweDczXTtpZihFNl9LUlope31jb25zdCBtVjBkQWlUPW5ldyhMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHhhNF0pKVtlRk8wWG5NKFM0ejhBbFsweGE1XSldW2VGTzBYbk0oMHgyMGMpXSkoW2VGTzBYbk0oMHgyMGQpLGVGTzBYbk0oMHgyMGUpLGVGTzBYbk0oMHgyMGYpK2VGTzBYbk0oMHgyMTApK2VGTzBYbk0oMHgyMTEpLGVGTzBYbk0oMHgyMTIpLGVGTzBYbk0oMHgyMTMpLGVGTzBYbk0oMHgyMTQpLGVGTzBYbk0oMHgyMTUpK2VGTzBYbk0oMHgyMTYpK2VGTzBYbk0oMHgyMTcpK2VGTzBYbk0oMHgyMTgpK2VGTzBYbk0oMHgyMTkpK2VGTzBYbk0oMHgyMWEpK2VGTzBYbk0oMHgyMWIpLGVGTzBYbk0oMHgyMWMpLGVGTzBYbk0oMHgyMWQpXSkseUlSbDEzPWVGTzBYbk0oMHgyMWUpLGRReFFaUms9e1tlRk8wWG5NKFM0ejhBbFsweDNhXSldOmVGTzBYbk0oMHgyMWYpLFtlRk8wWG5NKDB4MjIwKV06ZUZPMFhuTSgweDIyMSksW2VGTzBYbk0oMHgyMjIpXTpMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgyOF0pKVtlRk8wWG5NKFM0ejhBbFsweDI5XSldW2VGTzBYbk0oUzR6OEFsWzB4MmFdKV0sW2VGTzBYbk0oMHgyMjMpXTpbZUZPMFhuTSgweDIyNCldfSxwTU9pSmFDPVtdLE4xbDdDblE9TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MWEwXSkpW2VGTzBYbk0oMHgyMjYpXShMYkRVQXYoZUZPMFhuTSgweDIyNykpKTtmb3IobGV0IEU0YUltZmw9UzR6OEFsWzB4MF07RTRhSW1mbDxOMWw3Q25RW2VGTzBYbk0oUzR6OEFsWzB4N2RdKV07RTRhSW1mbCsrKXtjb25zdCB1RVBQT1c9TjFsN0NuUVtFNGFJbWZsXTtpZihVNmxoNGZbdUVQUE9XW1M0ejhBbFsweDc0XV1dKXtpZih1RVBQT1dbUzR6OEFsWzB4NzRdXT09PVM0ejhBbFsweDFdKXtjbTZqN21zKE5NR0ZnYTUpO2Z1bmN0aW9uIGtBaUJMOCh6WnhKRVJKKXt2YXIgZUZPMFhuTT1cIkBNbFYwRSVBW3YuSDxlM3F9Y05MUlQ7P3w+e35kWiRGPTlmKHRKVXlZejF4N2tCT2gqWDVvdWkjS0dDYW5TREkhLzpQXFxcInNyYGJXNixRODRebXBqZ18pXXcrJjJcIixialUyWmcseE5Kckd4LE93clY2ZSxVNmxoNGYsUDZDUDFCZixfTXhLSnBtLGJESnhXVDtCVU9WTGxpKGJqVTJaZz1cIlwiKyh6WnhKRVJKfHxcIlwiKSx4TkpyR3g9YmpVMlpnLmxlbmd0aCxPd3JWNmU9W10sVTZsaDRmPVM0ejhBbFsweDBdLFA2Q1AxQmY9UzR6OEFsWzB4MF0sX014S0pwbT0tUzR6OEFsWzB4MV0pO2ZvcihiREp4V1Q9UzR6OEFsWzB4MF07YkRKeFdUPHhOSnJHeDtiREp4V1QrKyl7dmFyIEU2X0tSWj1lRk8wWG5NLmluZGV4T2YoYmpVMlpnW2JESnhXVF0pO2lmKEU2X0tSWj09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZihfTXhLSnBtPFM0ejhBbFsweDBdKXtfTXhLSnBtPUU2X0tSWn1lbHNle0JVT1ZMbGkoX014S0pwbSs9RTZfS1JaKlM0ejhBbFsweDEzXSxVNmxoNGZ8PV9NeEtKcG08PFA2Q1AxQmYsUDZDUDFCZis9KF9NeEtKcG0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShPd3JWNmUucHVzaChVNmxoNGYmUzR6OEFsWzB4M10pLFU2bGg0Zj4+PVM0ejhBbFsweDJdLFA2Q1AxQmYtPVM0ejhBbFsweDJdKX13aGlsZShQNkNQMUJmPlM0ejhBbFsweGFdKTtfTXhLSnBtPS1TNHo4QWxbMHgxXX19aWYoX014S0pwbT4tUzR6OEFsWzB4MV0pe093clY2ZS5wdXNoKChVNmxoNGZ8X014S0pwbTw8UDZDUDFCZikmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKE93clY2ZSl9ZnVuY3Rpb24gTk1HRmdhNSguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPWtBaUJMOChocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfXBNT2lKYUNbTk1HRmdhNSgweDIyOSldKHVFUFBPVyl9ZWxzZXtpZihlRk8wWG5NKDB4MjJhKWluIFlGSnpNVyl7cllmOHF5TygpfWZ1bmN0aW9uIHJZZjhxeU8oLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgwXSxjbTZqN21zKGVGTzBYbk0pKTtmdW5jdGlvbiBlRk8wWG5NKC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0selp4SkVSSltTNHo4QWxbMHhkXV09XCJaMV1wUGAlbV91fk43bGlUaEViQU92L1h5RiFRJjJJIzVNQ2VeTHJhRD47Zzl3Vm5TK0hSMGZ7dDpjQnhzRz16QD9cXFwiNn0zKmpxLDQkZHxXKGtKKVVLPG9bWS44XCIselp4SkVSSltTNHo4QWxbMHg3NV1dPVwiXCIrKHpaeEpFUkpbUzR6OEFsWzB4MF1dfHxcIlwiKSx6WnhKRVJKW1M0ejhBbFsweDEwXV09elp4SkVSSltTNHo4QWxbMHg3NV1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDM1XV09W10selp4SkVSSltTNHo4QWxbMHgzNF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4OF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4NzddXT0tUzR6OEFsWzB4MV0pO2Zvcih6WnhKRVJKW1M0ejhBbFsweDJdXT1TNHo4QWxbMHgwXTt6WnhKRVJKW1M0ejhBbFsweDJdXTx6WnhKRVJKW1M0ejhBbFsweDEwXV07elp4SkVSSltTNHo4QWxbMHgyXV0rKyl7elp4SkVSSlstUzR6OEFsWzB4NzZdXT16WnhKRVJKW1M0ejhBbFsweGRdXS5pbmRleE9mKHpaeEpFUkpbUzR6OEFsWzB4NzVdXVt6WnhKRVJKW1M0ejhBbFsweDJdXV0pO2lmKHpaeEpFUkpbLVM0ejhBbFsweDc2XV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSltTNHo4QWxbMHg3N11dPFM0ejhBbFsweDBdKXt6WnhKRVJKW1M0ejhBbFsweDc3XV09elp4SkVSSlstUzR6OEFsWzB4NzZdXX1lbHNle0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg3N11dKz16WnhKRVJKWy1TNHo4QWxbMHg3Nl1dKlM0ejhBbFsweDEzXSx6WnhKRVJKW1M0ejhBbFsweDM0XV18PXpaeEpFUkpbUzR6OEFsWzB4NzddXTw8elp4SkVSSltTNHo4QWxbMHg4XV0selp4SkVSSltTNHo4QWxbMHg4XV0rPSh6WnhKRVJKW1M0ejhBbFsweDc3XV0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDM1XV0ucHVzaCh6WnhKRVJKW1M0ejhBbFsweDM0XV0mUzR6OEFsWzB4M10pLHpaeEpFUkpbUzR6OEFsWzB4MzRdXT4+PVM0ejhBbFsweDJdLHpaeEpFUkpbUzR6OEFsWzB4OF1dLT1TNHo4QWxbMHgyXSl9d2hpbGUoelp4SkVSSltTNHo4QWxbMHg4XV0+UzR6OEFsWzB4YV0pO3paeEpFUkpbUzR6OEFsWzB4NzddXT0tUzR6OEFsWzB4MV19fWlmKHpaeEpFUkpbUzR6OEFsWzB4NzddXT4tUzR6OEFsWzB4MV0pe3paeEpFUkpbUzR6OEFsWzB4MzVdXS5wdXNoKCh6WnhKRVJKW1M0ejhBbFsweDM0XV18elp4SkVSSltTNHo4QWxbMHg3N11dPDx6WnhKRVJKW1M0ejhBbFsweDhdXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKHpaeEpFUkpbUzR6OEFsWzB4MzVdXSl9ZnVuY3Rpb24gYmpVMlpnKHpaeEpFUkope2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpdPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpdPWVGTzBYbk0oaHFHN0p1bFt6WnhKRVJKXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl19QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweGRdXT1mdW5jdGlvbih6WnhKRVJKKXt2YXIgZUZPMFhuTT16WnhKRVJKLmxlbmd0aCxialUyWmcseE5Kckd4LE93clY2ZSxVNmxoNGY7QlVPVkxsaShialUyWmc9W10seE5Kckd4PVM0ejhBbFsweDBdKTtmb3IoT3dyVjZlPVM0ejhBbFsweDBdO093clY2ZTxlRk8wWG5NO093clY2ZSsrKWJqVTJaZy5wdXNoKE93clY2ZSE9PVM0ejhBbFsweDBdJiZ6WnhKRVJKW093clY2ZV0+elp4SkVSSltPd3JWNmUtUzR6OEFsWzB4MV1dP2JqVTJaZ1tPd3JWNmUtUzR6OEFsWzB4MV1dK1M0ejhBbFsweDFdOlM0ejhBbFsweDFdKTtmb3IoVTZsaDRmPWVGTzBYbk0tUzR6OEFsWzB4MV07VTZsaDRmPj1TNHo4QWxbMHgwXTtVNmxoNGYtLSl7QlVPVkxsaShjbTZqN21zKF9NeEtKcG0pLGNtNmo3bXMoUDZDUDFCZikpO2Z1bmN0aW9uIFA2Q1AxQmYoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweDFdXT1cInQhRkFXZzAkaSlWemMjQFlkVWZzPixPQl55eDw9KlsvXTpsRUpITi43XFxcIjs/JStacmttKE13X2BTNjhJNWVDYVF+S28mbmp8VDJHfXBxNEx7WHZoMWJSRDlQM3VcIix6WnhKRVJKW1M0ejhBbFsweDc4XV09XCJcIisoelp4SkVSSltTNHo4QWxbMHgwXV18fFwiXCIpLHpaeEpFUkpbUzR6OEFsWzB4N2FdXT16WnhKRVJKW1M0ejhBbFsweDc4XV0ubGVuZ3RoLHpaeEpFUkpbUzR6OEFsWzB4MzVdXT1bXSx6WnhKRVJKWy1TNHo4QWxbMHg3OV1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4OF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4YV1dPS1TNHo4QWxbMHgxXSk7Zm9yKHpaeEpFUkpbUzR6OEFsWzB4Ml1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4Ml1dPHpaeEpFUkpbUzR6OEFsWzB4N2FdXTt6WnhKRVJKW1M0ejhBbFsweDJdXSsrKXt6WnhKRVJKW1M0ejhBbFsweDExXV09elp4SkVSSltTNHo4QWxbMHgxXV0uaW5kZXhPZih6WnhKRVJKW1M0ejhBbFsweDc4XV1belp4SkVSSltTNHo4QWxbMHgyXV1dKTtpZih6WnhKRVJKW1M0ejhBbFsweDExXV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSltTNHo4QWxbMHhhXV08UzR6OEFsWzB4MF0pe3paeEpFUkpbUzR6OEFsWzB4YV1dPXpaeEpFUkpbUzR6OEFsWzB4MTFdXX1lbHNle0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHhhXV0rPXpaeEpFUkpbUzR6OEFsWzB4MTFdXSpTNHo4QWxbMHgxM10selp4SkVSSlstUzR6OEFsWzB4NzldXXw9elp4SkVSSltTNHo4QWxbMHhhXV08PHpaeEpFUkpbUzR6OEFsWzB4OF1dLHpaeEpFUkpbUzR6OEFsWzB4OF1dKz0oelp4SkVSSltTNHo4QWxbMHhhXV0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDM1XV0ucHVzaCh6WnhKRVJKWy1TNHo4QWxbMHg3OV1dJlM0ejhBbFsweDNdKSx6WnhKRVJKWy1TNHo4QWxbMHg3OV1dPj49UzR6OEFsWzB4Ml0selp4SkVSSltTNHo4QWxbMHg4XV0tPVM0ejhBbFsweDJdKX13aGlsZSh6WnhKRVJKW1M0ejhBbFsweDhdXT5TNHo4QWxbMHhhXSk7elp4SkVSSltTNHo4QWxbMHhhXV09LVM0ejhBbFsweDFdfX1pZih6WnhKRVJKW1M0ejhBbFsweGFdXT4tUzR6OEFsWzB4MV0pe3paeEpFUkpbUzR6OEFsWzB4MzVdXS5wdXNoKCh6WnhKRVJKWy1TNHo4QWxbMHg3OV1dfHpaeEpFUkpbUzR6OEFsWzB4YV1dPDx6WnhKRVJKW1M0ejhBbFsweDhdXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKHpaeEpFUkpbUzR6OEFsWzB4MzVdXSl9ZnVuY3Rpb24gX014S0pwbSguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPVA2Q1AxQmYoaHFHN0p1bFt6WnhKRVJKW1M0ejhBbFsweDBdXV0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXX1pZihVNmxoNGYhPT1lRk8wWG5NLVM0ejhBbFsweDFdJiZ6WnhKRVJKW1U2bGg0Zl0+elp4SkVSSltVNmxoNGYrUzR6OEFsWzB4MV1dKWJqVTJaZ1tVNmxoNGZdPUxiRFVBdihfTXhLSnBtKDB4MjJiKSkubWF4KGJqVTJaZ1tVNmxoNGZdLGJqVTJaZ1tVNmxoNGYrUzR6OEFsWzB4MV1dK1M0ejhBbFsweDFdKTt4TkpyR3grPWJqVTJaZ1tVNmxoNGZdfXJldHVybiB4TkpyR3h9LExiRFVBdihialUyWmcoMHgyMmMpKS5sb2coelp4SkVSSltTNHo4QWxbMHhkXV0pKX1wTU9pSmFDW2VGTzBYbk0oMHgyMmQpXSh1RVBQT1cpfX19Y29uc3QgeDRPSU9pPW5ldyhMYkRVQXYoZUZPMFhuTSgweDIyZSkpKSh7W2VGTzBYbk0oUzR6OEFsWzB4N2JdKV06eUlSbDEzLFtlRk8wWG5NKDB4MjMwKV06cE1PaUphQ30pLHRKWDZoQU89TGJEVUF2KGVGTzBYbk0oMHgyMzEpKSh7W2VGTzBYbk0oMHgyMzIpXTpbeDRPSU9pXSxbZUZPMFhuTShTNHo4QWxbMHg3Yl0pXTp5SVJsMTMsW2VGTzBYbk0oMHgyMzMpK1wia3NcIl06cE1PaUphQyxbZUZPMFhuTSgweDIzNCkrUzR6OEFsWzB4ZTNdXTpkUXhRWlJrLFtlRk8wWG5NKDB4MjM1KV06W2VGTzBYbk0oMHgyMzYpK2VGTzBYbk0oMHgyMzcpK2VGTzBYbk0oMHgyMzgpK2VGTzBYbk0oMHgyMzkpK2VGTzBYbk0oMHgyM2EpK2VGTzBYbk0oMHgyM2IpK2VGTzBYbk0oMHgyM2MpK1M0ejhBbFsweDdjXSxlRk8wWG5NKDB4MjNkKSxlRk8wWG5NKDB4MjNlKSxlRk8wWG5NKDB4MjNmKSxlRk8wWG5NKDB4MjQwKSxlRk8wWG5NKDB4MjQxKSxlRk8wWG5NKDB4MjQyKV0sW2VGTzBYbk0oMHgyNDMpXTplRk8wWG5NKDB4MjQ0KSxbZUZPMFhuTSgweDI0NSldOntbZUZPMFhuTSgweDI0NildOlM0ejhBbFsweDIwXSxbZUZPMFhuTSgweDI0NyldOlM0ejhBbFsweDIwXSxbZUZPMFhuTSgweDI0OCldOlM0ejhBbFsweDIwXX19KSxCaGpZUE09TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTY5XSkpW2VGTzBYbk0oMHgyNGEpXShlRk8wWG5NKDB4MjRiKSk7bGV0IENvWVZKT1o9UzR6OEFsWzB4MjBdO2ZvcihsZXQgRTRhSW1mbD1TNHo4QWxbMHgwXTtFNGFJbWZsPEJoallQTVtlRk8wWG5NKFM0ejhBbFsweDdkXSldO0U0YUltZmwrKyl7QlVPVkxsaShjbTZqN21zKHFpczVFYiksY202ajdtcyhxc3pRUmtNKSk7ZnVuY3Rpb24gcXN6UVJrTSguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbUzR6OEFsWzB4MV1dPVwibTswY0pNLChwc3VHYVxcXCJOU242RXsxLyojdGY6fEM8QFBCNXZaN156VDlEfSt+Vz5SJVtvZV1VST0/aHdZXzR4JiE4WEZrUUwkcXJqQTNIYGcyeSkuYmlLVmxPZFwiLHpaeEpFUkpbUzR6OEFsWzB4ZV1dPVwiXCIrKHpaeEpFUkpbUzR6OEFsWzB4MF1dfHxcIlwiKSx6WnhKRVJKW1M0ejhBbFsweDMyXV09elp4SkVSSltTNHo4QWxbMHhlXV0ubGVuZ3RoLHpaeEpFUkpbLVM0ejhBbFsweDdlXV09W10selp4SkVSSlstUzR6OEFsWzB4ODFdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweDhdXT1TNHo4QWxbMHgwXSx6WnhKRVJKWy1TNHo4QWxbMHg4MF1dPS1TNHo4QWxbMHgxXSk7Zm9yKHpaeEpFUkpbUzR6OEFsWzB4N2ZdXT1TNHo4QWxbMHgwXTt6WnhKRVJKW1M0ejhBbFsweDdmXV08elp4SkVSSltTNHo4QWxbMHgzMl1dO3paeEpFUkpbUzR6OEFsWzB4N2ZdXSsrKXt6WnhKRVJKW1M0ejhBbFsweDI0XV09elp4SkVSSltTNHo4QWxbMHgxXV0uaW5kZXhPZih6WnhKRVJKW1M0ejhBbFsweGVdXVt6WnhKRVJKW1M0ejhBbFsweDdmXV1dKTtpZih6WnhKRVJKW1M0ejhBbFsweDI0XV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSlstUzR6OEFsWzB4ODBdXTxTNHo4QWxbMHgwXSl7elp4SkVSSlstUzR6OEFsWzB4ODBdXT16WnhKRVJKW1M0ejhBbFsweDI0XV19ZWxzZXtCVU9WTGxpKHpaeEpFUkpbLVM0ejhBbFsweDgwXV0rPXpaeEpFUkpbUzR6OEFsWzB4MjRdXSpTNHo4QWxbMHgxM10selp4SkVSSlstUzR6OEFsWzB4ODFdXXw9elp4SkVSSlstUzR6OEFsWzB4ODBdXTw8elp4SkVSSltTNHo4QWxbMHg4XV0selp4SkVSSltTNHo4QWxbMHg4XV0rPSh6WnhKRVJKWy1TNHo4QWxbMHg4MF1dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSlstUzR6OEFsWzB4N2VdXS5wdXNoKHpaeEpFUkpbLVM0ejhBbFsweDgxXV0mUzR6OEFsWzB4M10pLHpaeEpFUkpbLVM0ejhBbFsweDgxXV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKW1M0ejhBbFsweDhdXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4OF1dPlM0ejhBbFsweGFdKTt6WnhKRVJKWy1TNHo4QWxbMHg4MF1dPS1TNHo4QWxbMHgxXX19aWYoelp4SkVSSlstUzR6OEFsWzB4ODBdXT4tUzR6OEFsWzB4MV0pe3paeEpFUkpbLVM0ejhBbFsweDdlXV0ucHVzaCgoelp4SkVSSlstUzR6OEFsWzB4ODFdXXx6WnhKRVJKWy1TNHo4QWxbMHg4MF1dPDx6WnhKRVJKW1M0ejhBbFsweDhdXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKHpaeEpFUkpbLVM0ejhBbFsweDdlXV0pfWZ1bmN0aW9uIHFpczVFYiguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPXFzelFSa00oaHFHN0p1bFt6WnhKRVJKW1M0ejhBbFsweDBdXV0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXX1CaGpZUE1bRTRhSW1mbF1bcWlzNUViKDB4MjRjKV09YXN5bmMgZnVuY3Rpb24oKXtCVU9WTGxpKGNtNmo3bXMoZUZPMFhuTSksY202ajdtcyh6WnhKRVJKKSk7ZnVuY3Rpb24gelp4SkVSSiguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbLVM0ejhBbFsweDgyXV09XCJ5RGFyUFhrQ09pN25TQHhwSTlmfiV7Pkh3RyMsMGMzTSk9Oj9nKzheJjQual9zdnxtMnRBPCEkYmRaXFxcIjVWKDF6cUpCdUxZTkUvb0Y2UVRVKmxoS1JgW1ddfTtlXCIselp4SkVSSltTNHo4QWxbMHgzMV1dPVwiXCIrKHpaeEpFUkpbUzR6OEFsWzB4MF1dfHxcIlwiKSx6WnhKRVJKWy1TNHo4QWxbMHg4MV1dPXpaeEpFUkpbUzR6OEFsWzB4MzFdXS5sZW5ndGgselp4SkVSSltTNHo4QWxbMHgzNV1dPVtdLHpaeEpFUkpbUzR6OEFsWzB4Zl1dPVM0ejhBbFsweDBdLHpaeEpFUkpbLVM0ejhBbFsweDgzXV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHhhXV09LVM0ejhBbFsweDFdKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgzM11dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MzNdXTx6WnhKRVJKWy1TNHo4QWxbMHg4MV1dO3paeEpFUkpbUzR6OEFsWzB4MzNdXSsrKXt6WnhKRVJKW1M0ejhBbFsweDExXV09elp4SkVSSlstUzR6OEFsWzB4ODJdXS5pbmRleE9mKHpaeEpFUkpbUzR6OEFsWzB4MzFdXVt6WnhKRVJKW1M0ejhBbFsweDMzXV1dKTtpZih6WnhKRVJKW1M0ejhBbFsweDExXV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSltTNHo4QWxbMHhhXV08UzR6OEFsWzB4MF0pe3paeEpFUkpbUzR6OEFsWzB4YV1dPXpaeEpFUkpbUzR6OEFsWzB4MTFdXX1lbHNle0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHhhXV0rPXpaeEpFUkpbUzR6OEFsWzB4MTFdXSpTNHo4QWxbMHgxM10selp4SkVSSltTNHo4QWxbMHhmXV18PXpaeEpFUkpbUzR6OEFsWzB4YV1dPDx6WnhKRVJKWy1TNHo4QWxbMHg4M11dLHpaeEpFUkpbLVM0ejhBbFsweDgzXV0rPSh6WnhKRVJKW1M0ejhBbFsweGFdXSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MzVdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4Zl1dJlM0ejhBbFsweDNdKSx6WnhKRVJKW1M0ejhBbFsweGZdXT4+PVM0ejhBbFsweDJdLHpaeEpFUkpbLVM0ejhBbFsweDgzXV0tPVM0ejhBbFsweDJdKX13aGlsZSh6WnhKRVJKWy1TNHo4QWxbMHg4M11dPlM0ejhBbFsweGFdKTt6WnhKRVJKW1M0ejhBbFsweGFdXT0tUzR6OEFsWzB4MV19fWlmKHpaeEpFUkpbUzR6OEFsWzB4YV1dPi1TNHo4QWxbMHgxXSl7elp4SkVSSltTNHo4QWxbMHgzNV1dLnB1c2goKHpaeEpFUkpbUzR6OEFsWzB4Zl1dfHpaeEpFUkpbUzR6OEFsWzB4YV1dPDx6WnhKRVJKWy1TNHo4QWxbMHg4M11dKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoelp4SkVSSltTNHo4QWxbMHgzNV1dKX1mdW5jdGlvbiBlRk8wWG5NKC4uLmVGTzBYbk0pe2VGTzBYbk1bUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW2VGTzBYbk1bUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1tlRk8wWG5NW1M0ejhBbFsweDBdXV09elp4SkVSSihocUc3SnVsW2VGTzBYbk1bUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbZUZPMFhuTVtTNHo4QWxbMHgwXV1dfWlmKENvWVZKT1ope3JldHVybn1hd2FpdCB0Slg2aEFPW3FpczVFYigweDI0ZCldKCk7Y29uc3QgYmpVMlpnPXRKWDZoQU9bcWlzNUViKDB4MjRlKV0oKTtpZihialUyWmcmJmJqVTJaZ1tlRk8wWG5NKDB4MjRmKV0pe2NtNmo3bXMoT3dyVjZlKTtmdW5jdGlvbiB4TkpyR3goelp4SkVSSil7dmFyIGVGTzBYbk09XCJcXFwiUHAmR1UuOFpgVF0hTlE9czRqPDo/MDlMWW0lSG9xdmI7V1NNS3J1Mls1aSNKbklrZ2F4Xih8ZFZ3WCt5eil+Y0F9RS8zdEI3PkNELFJAKjFmJE82e2xfaEZlXCIsYmpVMlpnLHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsX014S0pwbSxiREp4V1Q7QlVPVkxsaShialUyWmc9XCJcIisoelp4SkVSSnx8XCJcIikseE5Kckd4PWJqVTJaZy5sZW5ndGgsT3dyVjZlPVtdLFU2bGg0Zj1TNHo4QWxbMHgwXSxQNkNQMUJmPVM0ejhBbFsweDBdLF9NeEtKcG09LVM0ejhBbFsweDFdKTtmb3IoYkRKeFdUPVM0ejhBbFsweDBdO2JESnhXVDx4TkpyR3g7YkRKeFdUKyspe3ZhciBFNl9LUlo9ZUZPMFhuTS5pbmRleE9mKGJqVTJaZ1tiREp4V1RdKTtpZihFNl9LUlo9PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoX014S0pwbTxTNHo4QWxbMHgwXSl7X014S0pwbT1FNl9LUlp9ZWxzZXtCVU9WTGxpKF9NeEtKcG0rPUU2X0tSWipTNHo4QWxbMHgxM10sVTZsaDRmfD1fTXhLSnBtPDxQNkNQMUJmLFA2Q1AxQmYrPShfTXhLSnBtJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoT3dyVjZlLnB1c2goVTZsaDRmJlM0ejhBbFsweDNdKSxVNmxoNGY+Pj1TNHo4QWxbMHgyXSxQNkNQMUJmLT1TNHo4QWxbMHgyXSl9d2hpbGUoUDZDUDFCZj5TNHo4QWxbMHhhXSk7X014S0pwbT0tUzR6OEFsWzB4MV19fWlmKF9NeEtKcG0+LVM0ejhBbFsweDFdKXtPd3JWNmUucHVzaCgoVTZsaDRmfF9NeEtKcG08PFA2Q1AxQmYpJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQShPd3JWNmUpfWZ1bmN0aW9uIE93clY2ZSguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPXhOSnJHeChocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfUp0WmRjTFtPd3JWNmUoMHgyNTApXSgpfWVsc2V7Y202ajdtcyhVNmxoNGYpO2Z1bmN0aW9uIFU2bGg0ZiguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbUzR6OEFsWzB4MV1dPVwiODo8XSkjdUglWEc7WXNNMytGPjl+UjEvWkt5JGgqNmQuUFFgcV9FZW5iazJWfHpheEosaVRVbDROdF4mdld9MD83W0lyKFxcXCJMIU9jRG13bz1DQnBAe2ZBZzVTalwiLHpaeEpFUkpbUzR6OEFsWzB4MzFdXT1cIlwiKyh6WnhKRVJKW1M0ejhBbFsweDBdXXx8XCJcIikselp4SkVSSltTNHo4QWxbMHgxMF1dPXpaeEpFUkpbUzR6OEFsWzB4MzFdXS5sZW5ndGgselp4SkVSSltTNHo4QWxbMHgxOF1dPVtdLHpaeEpFUkpbUzR6OEFsWzB4ODRdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweDE5XV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHg4N11dPS1TNHo4QWxbMHgxXSk7Zm9yKHpaeEpFUkpbUzR6OEFsWzB4ODVdXT1TNHo4QWxbMHgwXTt6WnhKRVJKW1M0ejhBbFsweDg1XV08elp4SkVSSltTNHo4QWxbMHgxMF1dO3paeEpFUkpbUzR6OEFsWzB4ODVdXSsrKXt6WnhKRVJKW1M0ejhBbFsweDg2XV09elp4SkVSSltTNHo4QWxbMHgxXV0uaW5kZXhPZih6WnhKRVJKW1M0ejhBbFsweDMxXV1belp4SkVSSltTNHo4QWxbMHg4NV1dXSk7aWYoelp4SkVSSltTNHo4QWxbMHg4Nl1dPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHpaeEpFUkpbUzR6OEFsWzB4ODddXTxTNHo4QWxbMHgwXSl7elp4SkVSSltTNHo4QWxbMHg4N11dPXpaeEpFUkpbUzR6OEFsWzB4ODZdXX1lbHNle0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg4N11dKz16WnhKRVJKW1M0ejhBbFsweDg2XV0qUzR6OEFsWzB4MTNdLHpaeEpFUkpbUzR6OEFsWzB4ODRdXXw9elp4SkVSSltTNHo4QWxbMHg4N11dPDx6WnhKRVJKW1M0ejhBbFsweDE5XV0selp4SkVSSltTNHo4QWxbMHgxOV1dKz0oelp4SkVSSltTNHo4QWxbMHg4N11dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHgxOF1dLnB1c2goelp4SkVSSltTNHo4QWxbMHg4NF1dJlM0ejhBbFsweDNdKSx6WnhKRVJKW1M0ejhBbFsweDg0XV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKW1M0ejhBbFsweDE5XV0tPVM0ejhBbFsweDJdKX13aGlsZSh6WnhKRVJKW1M0ejhBbFsweDE5XV0+UzR6OEFsWzB4YV0pO3paeEpFUkpbUzR6OEFsWzB4ODddXT0tUzR6OEFsWzB4MV19fWlmKHpaeEpFUkpbUzR6OEFsWzB4ODddXT4tUzR6OEFsWzB4MV0pe3paeEpFUkpbUzR6OEFsWzB4MThdXS5wdXNoKCh6WnhKRVJKW1M0ejhBbFsweDg0XV18elp4SkVSSltTNHo4QWxbMHg4N11dPDx6WnhKRVJKW1M0ejhBbFsweDE5XV0pJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQSh6WnhKRVJKW1M0ejhBbFsweDE4XV0pfWZ1bmN0aW9uIFA2Q1AxQmYoelp4SkVSSil7aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSl09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl09VTZsaDRmKGhxRzdKdWxbelp4SkVSSl0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpdfUJVT1ZMbGkoYXdhaXQgdEpYNmhBT1tQNkNQMUJmKDB4MjUxKV0oKSxMYkRVQXYoUDZDUDFCZigweDI1MikrXCJGXCIpKClbUDZDUDFCZigweDI1MyldKCkpfX19dEpYNmhBT1tlRk8wWG5NKDB4MjU0KStlRk8wWG5NKDB4MjU1KStlRk8wWG5NKDB4MjU2KV0oYXN5bmMgelp4SkVSSj0+e0JVT1ZMbGkoY202ajdtcyhialUyWmcpLGNtNmo3bXMoZUZPMFhuTSkpO2Z1bmN0aW9uIGVGTzBYbk0oLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweDFdXT1cImBDY0RFbVRkbmVQTVpXdEs2SXloQVZ4JF49N2JdKU8xdTVOdj5ZW0BrWDJyKCpCe3A6bEYmaW9VOHcsO3NMfmF9PFxcXCJ8ZiV6UVI0akhTIT8vSjAjRzkrM2cucV9cIix6WnhKRVJKW1M0ejhBbFsweDMxXV09XCJcIisoelp4SkVSSltTNHo4QWxbMHgwXV18fFwiXCIpLHpaeEpFUkpbUzR6OEFsWzB4MzJdXT16WnhKRVJKW1M0ejhBbFsweDMxXV0ubGVuZ3RoLHpaeEpFUkpbUzR6OEFsWzB4MzVdXT1bXSx6WnhKRVJKW1M0ejhBbFsweDM0XV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHgxOV1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4ODhdXT0tUzR6OEFsWzB4MV0pO2Zvcih6WnhKRVJKW1M0ejhBbFsweDMzXV09UzR6OEFsWzB4MF07elp4SkVSSltTNHo4QWxbMHgzM11dPHpaeEpFUkpbUzR6OEFsWzB4MzJdXTt6WnhKRVJKW1M0ejhBbFsweDMzXV0rKyl7elp4SkVSSltTNHo4QWxbMHgyNF1dPXpaeEpFUkpbUzR6OEFsWzB4MV1dLmluZGV4T2Yoelp4SkVSSltTNHo4QWxbMHgzMV1dW3paeEpFUkpbUzR6OEFsWzB4MzNdXV0pO2lmKHpaeEpFUkpbUzR6OEFsWzB4MjRdXT09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih6WnhKRVJKW1M0ejhBbFsweDg4XV08UzR6OEFsWzB4MF0pe3paeEpFUkpbUzR6OEFsWzB4ODhdXT16WnhKRVJKW1M0ejhBbFsweDI0XV19ZWxzZXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4ODhdXSs9elp4SkVSSltTNHo4QWxbMHgyNF1dKlM0ejhBbFsweDEzXSx6WnhKRVJKW1M0ejhBbFsweDM0XV18PXpaeEpFUkpbUzR6OEFsWzB4ODhdXTw8elp4SkVSSltTNHo4QWxbMHgxOV1dLHpaeEpFUkpbUzR6OEFsWzB4MTldXSs9KHpaeEpFUkpbUzR6OEFsWzB4ODhdXSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MzVdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4MzRdXSZTNHo4QWxbMHgzXSkselp4SkVSSltTNHo4QWxbMHgzNF1dPj49UzR6OEFsWzB4Ml0selp4SkVSSltTNHo4QWxbMHgxOV1dLT1TNHo4QWxbMHgyXSl9d2hpbGUoelp4SkVSSltTNHo4QWxbMHgxOV1dPlM0ejhBbFsweGFdKTt6WnhKRVJKW1M0ejhBbFsweDg4XV09LVM0ejhBbFsweDFdfX1pZih6WnhKRVJKW1M0ejhBbFsweDg4XV0+LVM0ejhBbFsweDFdKXt6WnhKRVJKW1M0ejhBbFsweDM1XV0ucHVzaCgoelp4SkVSSltTNHo4QWxbMHgzNF1dfHpaeEpFUkpbUzR6OEFsWzB4ODhdXTw8elp4SkVSSltTNHo4QWxbMHgxOV1dKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoelp4SkVSSltTNHo4QWxbMHgzNV1dKX1mdW5jdGlvbiBialUyWmcoLi4uelp4SkVSSil7dmFyIGJqVTJaZyx4TkpyR3g7ZnVuY3Rpb24qT3dyVjZlKHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsX014S0pwbT17Y1haY01kOnt9fSl7d2hpbGUoeE5Kckd4K093clY2ZStVNmxoNGYrUDZDUDFCZiE9PTB4MzYpd2l0aChfTXhLSnBtLlhLNGJWVGx8fF9NeEtKcG0pc3dpdGNoKHhOSnJHeCtPd3JWNmUrVTZsaDRmK1A2Q1AxQmYpe2Nhc2UgeE5Kckd4LTB4MTg3OmNhc2UgMHgzNTpCVU9WTGxpKFtfTXhLSnBtLmNYWmNNZC5aS0hYTU5qLF9NeEtKcG0uY1haY01kLmtnV1dTTyxfTXhLSnBtLmNYWmNNZC5Ba3lMWDRdPVsweDFlLC0weDY4LDB4NF0sX014S0pwbS5YSzRiVlRsPV9NeEtKcG0uY1haY01kLHhOSnJHeCs9LTB4YjUsT3dyVjZlKz0tMHgzYzEsVTZsaDRmKz0weDNkZSxQNkNQMUJmKz0weDJmKTticmVhaztjYXNlLTB4Njk6Y2FzZSB4TkpyR3gtMHgyNTp6WnhKRVJKW1M0ejhBbFt4TkpyR3grLTB4ZTJdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7QlVPVkxsaShfTXhLSnBtLlhLNGJWVGw9X014S0pwbS5jWFpjTWQseE5Kckd4Kz0tMHgyNCxPd3JWNmUrPS0weDI1YyxVNmxoNGYrPTB4MTE3LFA2Q1AxQmYrPTB4MmYpO2JyZWFrfWVsc2V7QlVPVkxsaShfTXhLSnBtLlhLNGJWVGw9X014S0pwbS5jWFpjTWQseE5Kckd4Kz0tMHgxMixPd3JWNmUrPS0weDI1YyxVNmxoNGYrPTB4ZDcsUDZDUDFCZis9MHgyZik7YnJlYWt9ZGVmYXVsdDpyZXR1cm4gYmpVMlpnPSEweDAsdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV07Y2FzZSBVNmxoNGYtMHgxNTY6cmV0dXJuIGJqVTJaZz0hMHgwLHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPWVGTzBYbk0oaHFHN0p1bFt6WnhKRVJKW1M0ejhBbFsweDBdXV0pO2Nhc2UtMHgxMjpjYXNlIFA2Q1AxQmYtIC0weDVjOkJVT1ZMbGkoX014S0pwbS5YSzRiVlRsPV9NeEtKcG0uY1haY01kLHhOSnJHeCs9LTB4YTMsT3dyVjZlKz0tMHgyNTksVTZsaDRmKz0weDExZSxQNkNQMUJmKz0weDNmKTticmVhaztjYXNlIDB4MjM6Y2FzZSAweDU5OmNhc2UgUDZDUDFCZi0gLTB4MTQxOkJVT1ZMbGkoX014S0pwbS5YSzRiVlRsPV9NeEtKcG0udFIzVzVHRSx4TkpyR3grPS0weDhhLE93clY2ZSs9MHg3MSxVNmxoNGYrPS0weDI0ZSxQNkNQMUJmKz0weDc4KTticmVhaztjYXNlIFU2bGg0Zi0gLTB4ZjE6Y2FzZSAweDYyOmNhc2UtMHg4MzpCVU9WTGxpKFtfTXhLSnBtLmNYWmNNZC5aS0hYTU5qLF9NeEtKcG0uY1haY01kLmtnV1dTTyxfTXhLSnBtLmNYWmNNZC5Ba3lMWDRdPVstMHhjZSwweDVkLDB4Y10selp4SkVSSltTNHo4QWxbeE5Kckd4Ky0weGU5XV09UzR6OEFsW093clY2ZSsweDJhXSk7aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe0JVT1ZMbGkoX014S0pwbS5YSzRiVlRsPV9NeEtKcG0uY1haY01kLHhOSnJHeCs9LTB4MmIsT3dyVjZlKz0tMHgyY2EsVTZsaDRmKz0weDJjNyxQNkNQMUJmKz0weGFlKTticmVha31lbHNle0JVT1ZMbGkoX014S0pwbS5YSzRiVlRsPV9NeEtKcG0uY1haY01kLHhOSnJHeCs9LTB4MTksT3dyVjZlKz0tMHgyY2EsVTZsaDRmKz0weDI4NyxQNkNQMUJmKz0weGFlKTticmVha31jYXNlIF9NeEtKcG0uY1haY01kLmtnV1dTTysweDkxOkJVT1ZMbGkoX014S0pwbS5YSzRiVlRsPV9NeEtKcG0uY1haY01kLE93clY2ZSs9MHgxYSxQNkNQMUJmKz0tMHgxMCk7YnJlYWt9fUJVT1ZMbGkoYmpVMlpnPXZvaWQgMHgwLHhOSnJHeD1Pd3JWNmUoMHhlZCwtMHgyOSwtMHgxZWEsMHgyZCkubmV4dCgpLnZhbHVlKTtpZihialUyWmcpe3JldHVybiB4TkpyR3h9fUxiRFVBdihialUyWmcoMHgyNTcpKVtialUyWmcoMHgyNTgpXSh6WnhKRVJKW2JqVTJaZyhTNHo4QWxbMHg4OV0pXSk7aWYoelp4SkVSSltialUyWmcoUzR6OEFsWzB4ODldKV1bYmpVMlpnKDB4MjVhKV09PT1ialUyWmcoMHgyNWIpKXtKdFpkY0xbYmpVMlpnKDB4MjVjKV0oKX19KTtmdW5jdGlvbiBwUjg2eTEoelp4SkVSSixlRk8wWG5NLGJqVTJaZyx4TkpyR3gpe2lmKCFlRk8wWG5NKXtlRk8wWG5NPWZ1bmN0aW9uKih4TkpyR3gsT3dyVjZlLFU2bGg0Zj17dm5vSU9MOnt9fSxQNkNQMUJmKXt3aGlsZSh4TkpyR3grT3dyVjZlIT09MHhhKXdpdGgoVTZsaDRmLmhXS2VPaHx8VTZsaDRmKXN3aXRjaCh4TkpyR3grT3dyVjZlKXtjYXNlIDB4ODY6Y2FzZSBPd3JWNmUtMHg2ZTpCVU9WTGxpKFtVNmxoNGYudm5vSU9MLnlnMnNNSixVNmxoNGYudm5vSU9MLlVsTVZVbixVNmxoNGYudm5vSU9MLmdCSVJ2SjhdPVsweGE4LC0weDk3LDB4OThdLHZub0lPTC5uWkpSWXlwPWZ1bmN0aW9uKC4uLnhOSnJHeCl7cmV0dXJuIGVGTzBYbk0oMHgyYiwtMHg4Mix7dm5vSU9MOlU2bGg0Zi52bm9JT0wsaUNyeUxPODp7fX0seE5Kckd4KS5uZXh0KCkudmFsdWV9LHZub0lPTC5WV20xWjUxPWZ1bmN0aW9uKC4uLnhOSnJHeCl7cmV0dXJuIGVGTzBYbk0oLTB4NDUsMHgxNSx7dm5vSU9MOlU2bGg0Zi52bm9JT0wscnR5VG0zOnt9fSx4TkpyR3gpLm5leHQoKS52YWx1ZX0pO3JldHVybiBialUyWmc9ITB4MCx6WnhKRVJKWygweDEsdm5vSU9MLm5aSlJZeXApKDB4MjVkKV0oKVsoMHgxLHZub0lPTC5uWkpSWXlwKSgweDI1ZSkrUzR6OEFsWzB4Zl1dKG5ldyhMYkRVQXYoKDB4MSx2bm9JT0wublpKUll5cCkoeE5Kckd4KzB4MmNkKSkpKFwiLlwiLFM0ejhBbFsweDEyXSksY202ajdtcygoLi4ueE5Kckd4KT0+e0JVT1ZMbGkoY202ajdtcyhPd3JWNmUpLHhOSnJHeFtTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0sY202ajdtcyhVNmxoNGYpKTtmdW5jdGlvbiBPd3JWNmUoLi4ueE5Kckd4KXtCVU9WTGxpKHhOSnJHeFtTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0seE5Kckd4W1M0ejhBbFsweDFdXT1cIktJcnZvKkU8Z09wQ2pIZnhoL303PzptYTIhMTMpXT4wUWVjQlxcXCJOeVJpPXRKNUBYd1pXJWtfI1lNWyRzXlBVR2R1LkQ7VjY0QSssTGJxU0ZgfHpuOShse34mOFRcIix4TkpyR3hbUzR6OEFsWzB4MzFdXT1cIlwiKyh4TkpyR3hbUzR6OEFsWzB4MF1dfHxcIlwiKSx4TkpyR3hbUzR6OEFsWzB4MzJdXT14TkpyR3hbUzR6OEFsWzB4MzFdXS5sZW5ndGgseE5Kckd4W1M0ejhBbFsweDM1XV09W10seE5Kckd4W1M0ejhBbFsweDM0XV09UzR6OEFsWzB4MF0seE5Kckd4W1M0ejhBbFsweDhhXV09UzR6OEFsWzB4MF0seE5Kckd4W1M0ejhBbFsweGFdXT0tUzR6OEFsWzB4MV0pO2Zvcih4TkpyR3hbUzR6OEFsWzB4Ml1dPVM0ejhBbFsweDBdO3hOSnJHeFtTNHo4QWxbMHgyXV08eE5Kckd4W1M0ejhBbFsweDMyXV07eE5Kckd4W1M0ejhBbFsweDJdXSsrKXt4TkpyR3hbUzR6OEFsWzB4MjRdXT14TkpyR3hbUzR6OEFsWzB4MV1dLmluZGV4T2YoeE5Kckd4W1M0ejhBbFsweDMxXV1beE5Kckd4W1M0ejhBbFsweDJdXV0pO2lmKHhOSnJHeFtTNHo4QWxbMHgyNF1dPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHhOSnJHeFtTNHo4QWxbMHhhXV08UzR6OEFsWzB4MF0pe3hOSnJHeFtTNHo4QWxbMHhhXV09eE5Kckd4W1M0ejhBbFsweDI0XV19ZWxzZXtCVU9WTGxpKHhOSnJHeFtTNHo4QWxbMHhhXV0rPXhOSnJHeFtTNHo4QWxbMHgyNF1dKlM0ejhBbFsweDEzXSx4TkpyR3hbUzR6OEFsWzB4MzRdXXw9eE5Kckd4W1M0ejhBbFsweGFdXTw8eE5Kckd4W1M0ejhBbFsweDhhXV0seE5Kckd4W1M0ejhBbFsweDhhXV0rPSh4TkpyR3hbUzR6OEFsWzB4YV1dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoeE5Kckd4W1M0ejhBbFsweDM1XV0ucHVzaCh4TkpyR3hbUzR6OEFsWzB4MzRdXSZTNHo4QWxbMHgzXSkseE5Kckd4W1M0ejhBbFsweDM0XV0+Pj1TNHo4QWxbMHgyXSx4TkpyR3hbUzR6OEFsWzB4OGFdXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHhOSnJHeFtTNHo4QWxbMHg4YV1dPlM0ejhBbFsweGFdKTt4TkpyR3hbUzR6OEFsWzB4YV1dPS1TNHo4QWxbMHgxXX19aWYoeE5Kckd4W1M0ejhBbFsweGFdXT4tUzR6OEFsWzB4MV0pe3hOSnJHeFtTNHo4QWxbMHgzNV1dLnB1c2goKHhOSnJHeFtTNHo4QWxbMHgzNF1dfHhOSnJHeFtTNHo4QWxbMHhhXV08PHhOSnJHeFtTNHo4QWxbMHg4YV1dKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoeE5Kckd4W1M0ejhBbFsweDM1XV0pfWZ1bmN0aW9uIFU2bGg0ZiguLi54TkpyR3gpe3hOSnJHeFtTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbeE5Kckd4W1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbeE5Kckd4W1M0ejhBbFsweDBdXV09T3dyVjZlKGhxRzdKdWxbeE5Kckd4W1M0ejhBbFsweDBdXV0pfXJldHVybiB2N2VCcV9nW3hOSnJHeFtTNHo4QWxbMHgwXV1dfXJldHVybiBMYkRVQXYoVTZsaDRmKDB4MjYwKSlbVTZsaDRmKDB4MjYxKV0oMHgxZjFhNSt4TkpyR3hbUzR6OEFsWzB4MF1dW1U2bGg0ZigweDI2MildKCkpfSkpO2Nhc2UgMHhlNDpjYXNlIHhOSnJHeC0weGNjOnJldHVybiBHZURTN2ZBKHduSUhvaik7Y2FzZS0weGRmOmNhc2UgVTZsaDRmLnZub0lPTC5VbE1WVW4rLTB4MTk6Y2FzZSAweDU4OnJldHVybiB2N2VCcV9nW3M0QVF1RV07Y2FzZSAweDNjOmNhc2UgMHgyMzpyZXR1cm4gR2VEUzdmQSh3bklIb2opO2Nhc2UgVTZsaDRmLnZub0lPTC5VbE1WVW4rMHgxM2U6QlVPVkxsaSh3bklIb2oucHVzaCgoaU05dTNpa3x3a29FWTM8PHNkRXRIb2kpJlM0ejhBbFsweDNdKSxVNmxoNGYuaFdLZU9oPVU2bGg0Zi5ydHlUbTMsT3dyVjZlKz0tMHgxNDgpO2JyZWFrO2RlZmF1bHQ6QlVPVkxsaShbcnR5VG0zLmJ5dG91YWVdPVA2Q1AxQmYscnR5VG0zLkVjOTVTUz1cIiFZT1NHbVRpclJVcUROY2VKaEgxXUFXfnduYCl2dDlmX007Lys6PXp4UWFWZzV7QnlARTYsS28kKCYzYn1cXFwibHA3I0lkPjg8fC5zP1trXlhQMHUqQyUyalo0RkxcIixydHlUbTMuRmdvYXNkPVwiXCIrKHJ0eVRtMy5ieXRvdWFlfHxcIlwiKSxVNmxoNGYuaFdLZU9oPVU2bGg0Zi5ydHlUbTMseE5Kckd4Kz0tMHg1LE93clY2ZSs9MHgzYyk7YnJlYWs7Y2FzZSB4TkpyR3ghPS0weDdkJiZ4TkpyR3gtMHg0MTpyZXR1cm4gdjdlQnFfZ1tzNEFRdUVdO2Nhc2UgMHg5MDpjYXNlIHhOSnJHeC0weGM3OnJldHVybiB2N2VCcV9nW3M0QVF1RV09KDB4MSxVNmxoNGYudm5vSU9MLlZXbTFaNTEpKGhxRzdKdWxbczRBUXVFXSk7Y2FzZSBVNmxoNGYudm5vSU9MLmdCSVJ2SjgrLTB4ZTk6Y2FzZSAweDIxOkJVT1ZMbGkoW1U2bGg0Zi52bm9JT0wueWcyc01KLFU2bGg0Zi52bm9JT0wuVWxNVlVuLFU2bGg0Zi52bm9JT0wuZ0JJUnZKOF09Wy0weGMzLDB4ODQsLTB4ZTVdLFU2bGg0Zi5oV0tlT2g9VTZsaDRmLnJ0eVRtMyx4TkpyR3grPS0weDgzLE93clY2ZSs9MHgzMyk7YnJlYWs7Y2FzZSBVNmxoNGYudm5vSU9MLmdCSVJ2SjgrMHg1NzpCVU9WTGxpKFU2bGg0Zi5oV0tlT2g9VTZsaDRmLnZub0lPTCx4TkpyR3grPS0weDFlNSk7YnJlYWs7Y2FzZSAweDY1OmNhc2UgMHg3OkJVT1ZMbGkoVTZsaDRmLnJ0eVRtMy5WUTl4S0pCPUZnb2FzZC5sZW5ndGgsVTZsaDRmLnJ0eVRtMy53bklIb2o9W10sVTZsaDRmLnJ0eVRtMy5pTTl1M2lrPVM0ejhBbFt4TkpyR3grMHg0YV0sVTZsaDRmLmhXS2VPaD1VNmxoNGYucnR5VG0zLE93clY2ZSs9MHgyYik7YnJlYWs7Y2FzZSBVNmxoNGYudm5vSU9MLnlnMnNNSistMHhmZjpjYXNlIDB4ZDg6W2lDcnlMTzguczRBUXVFXT1QNkNQMUJmO2lmKHR5cGVvZiB2N2VCcV9nW2lDcnlMTzguczRBUXVFXT09PVM0ejhBbFsweDVdKXtCVU9WTGxpKFU2bGg0Zi5oV0tlT2g9VTZsaDRmLmlDcnlMTzgsT3dyVjZlKz0tMHg0NSk7YnJlYWt9ZWxzZXtCVU9WTGxpKFU2bGg0Zi5oV0tlT2g9VTZsaDRmLmlDcnlMTzgsT3dyVjZlKz0tMHg1OSk7YnJlYWt9Y2FzZSBVNmxoNGYudm5vSU9MLlVsTVZVbistMHg1ZjpCVU9WTGxpKFtVNmxoNGYudm5vSU9MLnlnMnNNSixVNmxoNGYudm5vSU9MLlVsTVZVbixVNmxoNGYudm5vSU9MLmdCSVJ2SjhdPVstMHgxNywtMHhjNiwtMHg1NV0sVTZsaDRmLmhXS2VPaD1VNmxoNGYucnR5VG0zLHhOSnJHeCs9LTB4NTMsT3dyVjZlKz0weDE1MCk7YnJlYWs7Y2FzZS0weDlkOkJVT1ZMbGkoVTZsaDRmLmhXS2VPaD1VNmxoNGYucnR5VG0zLHhOSnJHeCs9LTB4NTMsT3dyVjZlKz0weDEyMik7YnJlYWs7Y2FzZSBPd3JWNmUtMHg3ZDpyZXR1cm4gdjdlQnFfZ1tzNEFRdUVdO2Nhc2UgMHgzMjpjYXNlLTB4MmU6QlVPVkxsaShVNmxoNGYucnR5VG0zLnNkRXRIb2k9UzR6OEFsWzB4MF0sVTZsaDRmLnJ0eVRtMy53a29FWTM9LVM0ejhBbFt4TkpyR3grMHg0Yl0pO2ZvcihVNmxoNGYucnR5VG0zLnZJcXd2Vz1TNHo4QWxbeE5Kckd4KzB4NGFdO3ZJcXd2VzxWUTl4S0pCO3ZJcXd2VysrKXtVNmxoNGYucnR5VG0zLldCV3FWWT1FYzk1U1MuaW5kZXhPZihGZ29hc2Rbdklxd3ZXXSk7aWYoV0JXcVZZPT09LVM0ejhBbFt4TkpyR3grMHg0Yl0pY29udGludWU7aWYod2tvRVkzPFM0ejhBbFt4TkpyR3grMHg0YV0pe3drb0VZMz1XQldxVll9ZWxzZXtCVU9WTGxpKHdrb0VZMys9V0JXcVZZKlM0ejhBbFsweDEzXSxpTTl1M2lrfD13a29FWTM8PHNkRXRIb2ksc2RFdEhvaSs9KHdrb0VZMyZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbeE5Kckd4KzB4NjBdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaSh3bklIb2oucHVzaChpTTl1M2lrJlM0ejhBbFt4TkpyR3grMHg0ZF0pLGlNOXUzaWs+Pj1TNHo4QWxbMHgyXSxzZEV0SG9pLT1TNHo4QWxbeE5Kckd4KzB4NGNdKX13aGlsZShzZEV0SG9pPlM0ejhBbFsweGFdKTt3a29FWTM9LVM0ejhBbFt4TkpyR3grMHg0Yl19fWlmKHdrb0VZMz4tUzR6OEFsWzB4MV0pe0JVT1ZMbGkoVTZsaDRmLmhXS2VPaD1VNmxoNGYucnR5VG0zLHhOSnJHeCs9MHg3NSk7YnJlYWt9ZWxzZXtCVU9WTGxpKFU2bGg0Zi5oV0tlT2g9VTZsaDRmLnJ0eVRtMyx4TkpyR3grPTB4NzUsT3dyVjZlKz0tMHgxNDgpO2JyZWFrfWNhc2UtMHg3NDpjYXNlIE93clY2ZS0gLTB4NDpyZXR1cm4gdjdlQnFfZ1tzNEFRdUVdfX19QlVPVkxsaShialUyWmc9dm9pZCAweDAseE5Kckd4PWVGTzBYbk0oLTB4NmUsLTB4N2QpLm5leHQoKS52YWx1ZSk7aWYoYmpVMlpnKXtyZXR1cm4geE5Kckd4fX1sZXQgcXNLVlNCVDthc3luYyBmdW5jdGlvbiBjZklabUIoelp4SkVSSixVNmxoNGYpe2lmKCFVNmxoNGYpe1U2bGg0Zj1mdW5jdGlvbiguLi5VNmxoNGYpe1U2bGg0ZltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbVTZsaDRmW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbVTZsaDRmW1M0ejhBbFsweDBdXV09elp4SkVSSihocUc3SnVsW1U2bGg0ZltTNHo4QWxbMHgwXV1dKX1yZXR1cm4gdjdlQnFfZ1tVNmxoNGZbUzR6OEFsWzB4MF1dXX19aWYoIXpaeEpFUkope3paeEpFUko9ZnVuY3Rpb24oelp4SkVSSil7dmFyIFU2bGg0Zj1cIkMmUDc+VXAuaClpdTFmMCtUQFMlUiNuMnFLeiosYlFONTQkL1xcXCJMZ2F2XUJGc2p3Wko4STlbbWN8T0g2cl4zX3lXVkdvPDt+WUEhYH06Pz17eE0oa2xkZVhEdEVcIixQNkNQMUJmLF9NeEtKcG0sYkRKeFdULEU2X0tSWixtVjBkQWlULHlJUmwxMyxkUXhRWlJrO0JVT1ZMbGkoUDZDUDFCZj1cIlwiKyh6WnhKRVJKfHxcIlwiKSxfTXhLSnBtPVA2Q1AxQmYubGVuZ3RoLGJESnhXVD1bXSxFNl9LUlo9UzR6OEFsWzB4MF0sbVYwZEFpVD1TNHo4QWxbMHgwXSx5SVJsMTM9LVM0ejhBbFsweDFdKTtmb3IoZFF4UVpSaz1TNHo4QWxbMHgwXTtkUXhRWlJrPF9NeEtKcG07ZFF4UVpSaysrKXt2YXIgcE1PaUphQz1VNmxoNGYuaW5kZXhPZihQNkNQMUJmW2RReFFaUmtdKTtpZihwTU9pSmFDPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHlJUmwxMzxTNHo4QWxbMHgwXSl7eUlSbDEzPXBNT2lKYUN9ZWxzZXtCVU9WTGxpKHlJUmwxMys9cE1PaUphQypTNHo4QWxbMHgxM10sRTZfS1JafD15SVJsMTM8PG1WMGRBaVQsbVYwZEFpVCs9KHlJUmwxMyZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKGJESnhXVC5wdXNoKEU2X0tSWiZTNHo4QWxbMHgzXSksRTZfS1JaPj49UzR6OEFsWzB4Ml0sbVYwZEFpVC09UzR6OEFsWzB4Ml0pfXdoaWxlKG1WMGRBaVQ+UzR6OEFsWzB4YV0pO3lJUmwxMz0tUzR6OEFsWzB4MV19fWlmKHlJUmwxMz4tUzR6OEFsWzB4MV0pe2JESnhXVC5wdXNoKChFNl9LUlp8eUlSbDEzPDxtVjBkQWlUKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoYkRKeFdUKX19Y202ajdtcyhVNmxoNGYpO2lmKHFzS1ZTQlQpe2lmKGVGTzBYbk0oMHgyNjMpaW4gWUZKek1XKXtQNkNQMUJmKCl9ZnVuY3Rpb24gUDZDUDFCZigpe3ZhciB6WnhKRVJKO0JVT1ZMbGkoY202ajdtcyhQNkNQMUJmKSxjbTZqN21zKFU2bGg0ZikpO2Z1bmN0aW9uIFU2bGg0ZiguLi56WnhKRVJKKXt2YXIgVTZsaDRmLFA2Q1AxQmY7ZnVuY3Rpb24qX014S0pwbShQNkNQMUJmLF9NeEtKcG0sYkRKeFdULEU2X0tSWj17WEJ2NG1Kbjp7fX0pe3doaWxlKFA2Q1AxQmYrX014S0pwbStiREp4V1QhPT0weGYwKXdpdGgoRTZfS1JaLkE0X2RoMjd8fEU2X0tSWilzd2l0Y2goUDZDUDFCZitfTXhLSnBtK2JESnhXVCl7Y2FzZS0weDIzOmNhc2UgRTZfS1JaLlhCdjRtSm4uT0N4SENFKy0weDRlOkJVT1ZMbGkoRTZfS1JaLlhCdjRtSm4uT0N4SENFPTB4NTksRTZfS1JaLkE0X2RoMjc9RTZfS1JaLm9kT2ozZGcsUDZDUDFCZis9LTB4MTI4LGJESnhXVCs9MHgyNGEpO2JyZWFrO2Nhc2UgMHhhZTp6WnhKRVJKW1M0ejhBbFsweGFdXT0tUzR6OEFsW19NeEtKcG0rMHhiN107Zm9yKHpaeEpFUkpbUzR6OEFsW1A2Q1AxQmYrMHgwXV09UzR6OEFsW19NeEtKcG0rMHhiNl07elp4SkVSSltTNHo4QWxbMHg4Y11dPHpaeEpFUkpbUzR6OEFsW19NeEtKcG0rMHhlOF1dO3paeEpFUkpbUzR6OEFsWzB4OGNdXSsrKXt6WnhKRVJKWy1TNHo4QWxbMHg4ZF1dPXpaeEpFUkpbUzR6OEFsWzB4OGJdXS5pbmRleE9mKHpaeEpFUkpbUzR6OEFsWzB4ZV1dW3paeEpFUkpbUzR6OEFsW19NeEtKcG0rMHgxNDJdXV0pO2lmKHpaeEpFUkpbLVM0ejhBbFsweDhkXV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSltTNHo4QWxbX014S0pwbSsweGMwXV08UzR6OEFsW1A2Q1AxQmYrLTB4OGNdKXt6WnhKRVJKW1M0ejhBbFsweGFdXT16WnhKRVJKWy1TNHo4QWxbMHg4ZF1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweGFdXSs9elp4SkVSSlstUzR6OEFsWzB4OGRdXSpTNHo4QWxbX014S0pwbSsweGM5XSx6WnhKRVJKW1M0ejhBbFsweDM0XV18PXpaeEpFUkpbUzR6OEFsWzB4YV1dPDx6WnhKRVJKW1M0ejhBbFsweDE5XV0selp4SkVSSltTNHo4QWxbMHgxOV1dKz0oelp4SkVSSltTNHo4QWxbMHhhXV0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsW19NeEtKcG0rMHhjY106UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4OGVdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4MzRdXSZTNHo4QWxbMHgzXSkselp4SkVSSltTNHo4QWxbMHgzNF1dPj49UzR6OEFsWzB4Ml0selp4SkVSSltTNHo4QWxbX014S0pwbSsweGNmXV0tPVM0ejhBbFsweDJdKX13aGlsZSh6WnhKRVJKW1M0ejhBbFsweDE5XV0+UzR6OEFsWzB4YV0pO3paeEpFUkpbUzR6OEFsWzB4YV1dPS1TNHo4QWxbX014S0pwbSsweGI3XX19aWYoelp4SkVSSltTNHo4QWxbMHhhXV0+LVM0ejhBbFtQNkNQMUJmKy0weDhiXSl7QlVPVkxsaShFNl9LUlouQTRfZGgyNz1FNl9LUlouWEJ2NG1KbixQNkNQMUJmKz0tMHhhNSxiREp4V1QrPS0weGE5KTticmVha31lbHNle0JVT1ZMbGkoRTZfS1JaLkE0X2RoMjc9RTZfS1JaLlhCdjRtSm4sUDZDUDFCZis9LTB4YTUsX014S0pwbSs9MHhiZSxiREp4V1QrPS0weGE5KTticmVha31jYXNlIGJESnhXVC0weDQ4OmNhc2UtMHhlNzpCVU9WTGxpKEU2X0tSWi5YQnY0bUpuLk9DeEhDRT0weDFjLHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbUzR6OEFsWzB4OGJdXT1cIjtZZEFtQmtjPTQkTHV8cGJVRzVldEklQE1DMWdUIXN7M1JoWnlPOW9hakt6YDo4fVA+RlxcXCJTZlhFPD94LmlsSkheMi9RV3ZyWyMwKihuRH53X042cTcrJixWXSlcIixFNl9LUlouQTRfZGgyNz1FNl9LUlouWEJ2NG1KbixQNkNQMUJmKz0tMHhkYixfTXhLSnBtKz0weDcsYkRKeFdUKz0weDc5KTticmVhaztjYXNlIGJESnhXVC0weDU1OkJVT1ZMbGkoRTZfS1JaLkE0X2RoMjc9RTZfS1JaLlhCdjRtSm4sUDZDUDFCZis9MHgxNixfTXhLSnBtKz0weGE3LGJESnhXVCs9LTB4MjkpO2JyZWFrO2Nhc2UtMHg2YjpCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4OGVdXT1bXSx6WnhKRVJKW1M0ejhBbFsweDM0XV09UzR6OEFsW19NeEtKcG0rMHhkNF0selp4SkVSSltTNHo4QWxbMHgxOV1dPVM0ejhBbFtQNkNQMUJmKzB4ODVdLEU2X0tSWi5BNF9kaDI3PUU2X0tSWi5YQnY0bUpuLFA2Q1AxQmYrPTB4MTExLF9NeEtKcG0rPTB4MWUsYkRKeFdUKz0tMHgxNik7YnJlYWs7Y2FzZSBiREp4V1QtMHg2YzpjYXNlLTB4NjI6QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDhlXV09W10selp4SkVSSltTNHo4QWxbUDZDUDFCZisweDE4Zl1dPVM0ejhBbFtfTXhLSnBtKy0weGVmXSx6WnhKRVJKW1M0ejhBbFtfTXhLSnBtKy0weGQ2XV09UzR6OEFsW19NeEtKcG0rLTB4ZWZdLEU2X0tSWi5BNF9kaDI3PUU2X0tSWi5YQnY0bUpuLFA2Q1AxQmYrPTB4MWU3LF9NeEtKcG0rPS0weDFhNSxiREp4V1QrPTB4MTQ5KTticmVhaztjYXNlIDB4ZGU6QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFtQNkNQMUJmKzB4ZDddXT1bXSx6WnhKRVJKW1M0ejhBbFsweDM0XV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHgxOV1dPVM0ejhBbFsweDBdLEU2X0tSWi5BNF9kaDI3PUU2X0tSWi5YQnY0bUpuLFA2Q1AxQmYrPTB4ZDUsX014S0pwbSs9LTB4MWE1LGJESnhXVCs9MHhhMCk7YnJlYWs7Y2FzZSBFNl9LUlouWEJ2NG1Kbi5PQ3hIQ0UrMHg5ZjpCVU9WTGxpKEU2X0tSWi5BNF9kaDI3PUU2X0tSWi5YQnY0bUpuLFA2Q1AxQmYrPTB4NTksX014S0pwbSs9LTB4MTM5LGJESnhXVCs9LTB4ZCk7YnJlYWs7Y2FzZSBQNkNQMUJmLSAtMHgzNzpjYXNlIDB4M2Y6cmV0dXJuIFU2bGg0Zj0hMHgwLEdlRFM3ZkEoelp4SkVSSltTNHo4QWxbMHg4ZV1dKTtjYXNlLTB4YTA6QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFtQNkNQMUJmKzB4YTddXS5wdXNoKCh6WnhKRVJKW1M0ejhBbFsweDM0XV18elp4SkVSSltTNHo4QWxbMHhhXV08PHpaeEpFUkpbUzR6OEFsWzB4MTldXSkmUzR6OEFsW1A2Q1AxQmYrMHgxY10pLEU2X0tSWi5BNF9kaDI3PUU2X0tSWi5YQnY0bUpuLF9NeEtKcG0rPTB4YmUpO2JyZWFrO2Nhc2UgYkRKeFdULTB4MTFjOkJVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHhlXV09XCJcIisoelp4SkVSSltTNHo4QWxbUDZDUDFCZisweDkyXV18fFwiXCIpLHpaeEpFUkpbUzR6OEFsWzB4MzJdXT16WnhKRVJKW1M0ejhBbFsweGVdXS5sZW5ndGgsRTZfS1JaLkE0X2RoMjc9RTZfS1JaLlhCdjRtSm4sUDZDUDFCZis9MHhkLF9NeEtKcG0rPS0weDRhKTticmVhaztkZWZhdWx0OkJVT1ZMbGkoRTZfS1JaLkE0X2RoMjc9RTZfS1JaLlhCdjRtSm4sUDZDUDFCZis9LTB4ZTcsX014S0pwbSs9MHg5OCxiREp4V1QrPTB4MTQ5KTticmVha319QlVPVkxsaShVNmxoNGY9dm9pZCAweDAsUDZDUDFCZj1fTXhLSnBtKDB4NDksLTB4OTEsMHg3NSkubmV4dCgpLnZhbHVlKTtpZihVNmxoNGYpe3JldHVybiBQNkNQMUJmfX1mdW5jdGlvbiBQNkNQMUJmKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09VTZsaDRmKGhxRzdKdWxbelp4SkVSSltTNHo4QWxbMHgwXV1dKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV19ZnVuY3Rpb24gX014S0pwbSgpe31CVU9WTGxpKHpaeEpFUko9ZnVuY3Rpb24oelp4SkVSSixVNmxoNGYpe3ZhciBQNkNQMUJmLGJESnhXVDtmdW5jdGlvbipFNl9LUlooYkRKeFdULEU2X0tSWixtVjBkQWlUPXtWd2FhbV86e319KXt3aGlsZShiREp4V1QrRTZfS1JaIT09MHg3NSl3aXRoKG1WMGRBaVQuZndnYTZCSHx8bVYwZEFpVClzd2l0Y2goYkRKeFdUK0U2X0tSWil7Y2FzZS0weGJiOmNhc2UgMHhhNjpCVU9WTGxpKG1WMGRBaVQuVndhYW1fLnRxYWg3ZGk9MHhmNixWd2FhbV8uYWxkcVlnMj1TNHo4QWxbYkRKeFdUKzB4NjFdLFZ3YWFtXy5tbmZBS3ZSPVM0ejhBbFtiREp4V1QrMHg2MV0sVndhYW1fLl9jazd1WD1uZXcgX014S0pwbShTNHo4QWxbYkRKeFdUKzB4NjFdKSxWd2FhbV8uRHVybHVQPVZ3YWFtXy5fY2s3dVgsbVYwZEFpVC5md2dhNkJIPW1WMGRBaVQuVndhYW1fLGJESnhXVCs9LTB4NGMsRTZfS1JaKz0weGRmKTticmVhaztkZWZhdWx0OkJVT1ZMbGkobVYwZEFpVC5Wd2FhbV8uZDdmTldmbj16WnhKRVJKLG1WMGRBaVQuVndhYW1fLlBqY2ZaSWs9VTZsaDRmLG1WMGRBaVQuZndnYTZCSD1tVjBkQWlULlZ3YWFtXyxiREp4V1QrPTB4OTIsRTZfS1JaKz0tMHg2Yyk7YnJlYWs7Y2FzZSBiREp4V1QhPS0weDYwJiZiREp4V1QhPS0weDhjJiZiREp4V1QhPTB4NWMmJmJESnhXVC0gLTB4MTk6Y2FzZS0weDdhOmNhc2UgMHg4ZDp3aGlsZShkN2ZOV2ZuIT09UzR6OEFsWzB4OGZdfHxQamNmWklrIT09UzR6OEFsWzB4OGZdKXtjbTZqN21zKHlJUmwxMyk7ZnVuY3Rpb24geUlSbDEzKC4uLmJESnhXVCl7QlVPVkxsaShiREp4V1RbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLGJESnhXVFtTNHo4QWxbMHhkXV09XCIsMDMrXUUheTlYfGd9SH5SaklUNkE9X0I7aE1AYjclVXdxJlxcXCIxUz5yKns/aSg1Tnp0a1dEOHguL0NGW2E8VkpkWlB2NHUpS1ljcE9MIzJsOmZHXiRuUWVvc21gXCIsYkRKeFdUW1M0ejhBbFsweDMxXV09XCJcIisoYkRKeFdUW1M0ejhBbFsweDBdXXx8XCJcIiksYkRKeFdUW1M0ejhBbFsweDEwXV09YkRKeFdUW1M0ejhBbFsweDMxXV0ubGVuZ3RoLGJESnhXVFtTNHo4QWxbMHgyMl1dPVtdLGJESnhXVFtTNHo4QWxbMHg4Ml1dPVM0ejhBbFsweDBdLGJESnhXVFtTNHo4QWxbMHgxOV1dPVM0ejhBbFsweDBdLGJESnhXVFtTNHo4QWxbMHhhXV09LVM0ejhBbFsweDFdKTtmb3IoYkRKeFdUWy1TNHo4QWxbMHg4ZF1dPVM0ejhBbFsweDBdO2JESnhXVFstUzR6OEFsWzB4OGRdXTxiREp4V1RbUzR6OEFsWzB4MTBdXTtiREp4V1RbLVM0ejhBbFsweDhkXV0rKyl7YkRKeFdUWy1TNHo4QWxbMHg4OF1dPWJESnhXVFtTNHo4QWxbMHhkXV0uaW5kZXhPZihiREp4V1RbUzR6OEFsWzB4MzFdXVtiREp4V1RbLVM0ejhBbFsweDhkXV1dKTtpZihiREp4V1RbLVM0ejhBbFsweDg4XV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoYkRKeFdUW1M0ejhBbFsweGFdXTxTNHo4QWxbMHgwXSl7YkRKeFdUW1M0ejhBbFsweGFdXT1iREp4V1RbLVM0ejhBbFsweDg4XV19ZWxzZXtCVU9WTGxpKGJESnhXVFtTNHo4QWxbMHhhXV0rPWJESnhXVFstUzR6OEFsWzB4ODhdXSpTNHo4QWxbMHgxM10sYkRKeFdUW1M0ejhBbFsweDgyXV18PWJESnhXVFtTNHo4QWxbMHhhXV08PGJESnhXVFtTNHo4QWxbMHgxOV1dLGJESnhXVFtTNHo4QWxbMHgxOV1dKz0oYkRKeFdUW1M0ejhBbFsweGFdXSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKGJESnhXVFtTNHo4QWxbMHgyMl1dLnB1c2goYkRKeFdUW1M0ejhBbFsweDgyXV0mUzR6OEFsWzB4M10pLGJESnhXVFtTNHo4QWxbMHg4Ml1dPj49UzR6OEFsWzB4Ml0sYkRKeFdUW1M0ejhBbFsweDE5XV0tPVM0ejhBbFsweDJdKX13aGlsZShiREp4V1RbUzR6OEFsWzB4MTldXT5TNHo4QWxbMHhhXSk7YkRKeFdUW1M0ejhBbFsweGFdXT0tUzR6OEFsWzB4MV19fWlmKGJESnhXVFtTNHo4QWxbMHhhXV0+LVM0ejhBbFsweDFdKXtiREp4V1RbUzR6OEFsWzB4MjJdXS5wdXNoKChiREp4V1RbUzR6OEFsWzB4ODJdXXxiREp4V1RbUzR6OEFsWzB4YV1dPDxiREp4V1RbUzR6OEFsWzB4MTldXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKGJESnhXVFtTNHo4QWxbMHgyMl1dKX1mdW5jdGlvbiBkUXhRWlJrKGJESnhXVCl7aWYodHlwZW9mIHY3ZUJxX2dbYkRKeFdUXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1tiREp4V1RdPXlJUmwxMyhocUc3SnVsW2JESnhXVF0pfXJldHVybiB2N2VCcV9nW2JESnhXVF19QlVPVkxsaShtbmZBS3ZSPShkN2ZOV2ZuP2Q3Zk5XZm4udmFsOlM0ejhBbFsweDBdKSsoUGpjZlpJaz9QamNmWklrLnZhbDpTNHo4QWxbYkRKeFdUKzB4MWJdKSthbGRxWWcyLGFsZHFZZzI9TGJEVUF2KGRReFFaUmsoMHgyNjQpK1M0ejhBbFsweGE5XSkuZmxvb3IobW5mQUt2Ui9TNHo4QWxbMHg5MF0pLER1cmx1UC5uZXh0PW5ldyBfTXhLSnBtKG1uZkFLdlIlUzR6OEFsW2JESnhXVCsweGFiXSksRHVybHVQPUR1cmx1UC5uZXh0LGQ3Zk5XZm49ZDdmTldmbj9kN2ZOV2ZuLm5leHQ6UzR6OEFsW2JESnhXVCsweGFhXSxQamNmWklrPVBqY2ZaSWs/UGpjZlpJay5uZXh0OlM0ejhBbFsweDhmXSl9aWYoYWxkcVlnMilEdXJsdVAubmV4dD1uZXcgX014S0pwbShhbGRxWWcyKTtyZXR1cm4gUDZDUDFCZj0hMHgwLF9jazd1WC5uZXh0O2Nhc2UgRTZfS1JaLTB4OGM6QlVPVkxsaShtVjBkQWlULlZ3YWFtXy50cWFoN2RpPS0weGViLG1WMGRBaVQuZndnYTZCSD1tVjBkQWlULlZ3YWFtXyxiREp4V1QrPTB4NzEpO2JyZWFrO2Nhc2UtMHg0NzpCVU9WTGxpKG1WMGRBaVQuVndhYW1fLnRxYWg3ZGk9MHg2YyxtVjBkQWlULmZ3Z2E2Qkg9bVYwZEFpVC5lUVgxOV9HLGJESnhXVCs9LTB4MSxFNl9LUlorPS0weDczKTticmVha319QlVPVkxsaShQNkNQMUJmPXZvaWQgMHgwLGJESnhXVD1FNl9LUlooLTB4NjEsLTB4NWEpLm5leHQoKS52YWx1ZSk7aWYoUDZDUDFCZil7cmV0dXJuIGJESnhXVH19LExiRFVBdihQNkNQMUJmKDB4MjY1KSkubG9nKHpaeEpFUkopKX1yZXR1cm4gcXNLVlNCVH10cnl7Y202ajdtcyhiREp4V1QpO2Z1bmN0aW9uIF9NeEtKcG0oelp4SkVSSil7dmFyIFU2bGg0ZixQNkNQMUJmO2Z1bmN0aW9uKl9NeEtKcG0oUDZDUDFCZixfTXhLSnBtLGJESnhXVD17ajFKOWRUMTp7fX0pe3doaWxlKFA2Q1AxQmYrX014S0pwbSE9PS0weGRjKXdpdGgoYkRKeFdULmhGQVRLTkx8fGJESnhXVClzd2l0Y2goUDZDUDFCZitfTXhLSnBtKXtjYXNlIDB4M2E6Y2FzZSBQNkNQMUJmLSAtMHgxOTg6cmV0dXJuIFU2bGg0Zj0hMHgwLEdlRFM3ZkEoSEtKcWtYKTtjYXNlIDB4MjU6QlVPVkxsaShbYkRKeFdULmoxSjlkVDEuRmoyM3JkZSxiREp4V1QuajFKOWRUMS5lRDhJcGRvLGJESnhXVC5qMUo5ZFQxLkpZRnEwU109Wy0weDM5LDB4MWUsMHhiZV0sajFKOWRUMS5Gelpoa2dRPVwidUhFSklqc01ER2RMY2JZbG80blR9JlI1OXFaKEAqfjpteiEjQylQYXJGS2A9JXY4dFdcXFwifFUzPlgycDEwN3tPQmhreWlnXS5eLGZBd2V4NiskUT9fW1M7PFYvTlwiLGoxSjlkVDEueDZzTzBpZz1cIlwiKyh6WnhKRVJKfHxcIlwiKSxqMUo5ZFQxLm5LZ0Y2ej1qMUo5ZFQxLng2c08waWcubGVuZ3RoLGJESnhXVC5oRkFUS05MPWJESnhXVC5qMUo5ZFQxLFA2Q1AxQmYrPS0weDQ4LF9NeEtKcG0rPS0weGFkKTticmVhaztjYXNlIF9NeEtKcG0tMHgyMmY6QlVPVkxsaShbYkRKeFdULmoxSjlkVDEuRmoyM3JkZSxiREp4V1QuajFKOWRUMS5lRDhJcGRvLGJESnhXVC5qMUo5ZFQxLkpZRnEwU109WzB4YTAsMHgzNSwweGMzXSxiREp4V1QuaEZBVEtOTD1iREp4V1QuRlJ4aEpGLFA2Q1AxQmYrPTB4NjgsX014S0pwbSs9LTB4NTIpO2JyZWFrO2Nhc2UtMHhmNDpjYXNlIDB4ZGI6QlVPVkxsaShbYkRKeFdULmoxSjlkVDEuRmoyM3JkZSxiREp4V1QuajFKOWRUMS5lRDhJcGRvLGJESnhXVC5qMUo5ZFQxLkpZRnEwU109Wy0weDYwLC0weDMzLDB4Y2VdLGJESnhXVC5oRkFUS05MPWJESnhXVC5qMUo5ZFQxLFA2Q1AxQmYrPTB4MWYsX014S0pwbSs9LTB4NTIpO2JyZWFrO2RlZmF1bHQ6QlVPVkxsaShiREp4V1QuajFKOWRUMS5IS0pxa1g9W10sYkRKeFdULmoxSjlkVDEucUtGMnJDbj1TNHo4QWxbUDZDUDFCZisweGFhXSxiREp4V1QuajFKOWRUMS5peHdzU3E9UzR6OEFsWzB4MF0sYkRKeFdULmoxSjlkVDEudTRNUnhGZD0tUzR6OEFsW1A2Q1AxQmYrMHhhYl0sYkRKeFdULmhGQVRLTkw9YkRKeFdULmoxSjlkVDEsX014S0pwbSs9MHgxMzYpO2JyZWFrO2Nhc2UgYkRKeFdULmoxSjlkVDEuRmoyM3JkZSstMHg3ZTpCVU9WTGxpKEhLSnFrWC5wdXNoKChxS0YyckNufHU0TVJ4RmQ8PGl4d3NTcSkmUzR6OEFsW1A2Q1AxQmYrMHgxY2FdKSxiREp4V1QuaEZBVEtOTD1iREp4V1QuajFKOWRUMSxfTXhLSnBtKz0weDg4KTticmVhaztjYXNlIGJESnhXVC5qMUo5ZFQxLkZqMjNyZGUrMHg2OkJVT1ZMbGkoYkRKeFdULmhGQVRLTkw9YkRKeFdULmoxSjlkVDEsUDZDUDFCZis9LTB4MTY1LF9NeEtKcG0rPTB4MTY5KTticmVhaztjYXNlLTB4NjY6Y2FzZSAweDY2OmZvcihiREp4V1QuajFKOWRUMS5ib2hVcU89UzR6OEFsW1A2Q1AxQmYrMHhhYV07Ym9oVXFPPG5LZ0Y2ejtib2hVcU8rKyl7YkRKeFdULmoxSjlkVDEuTVEzV0w4RD1Gelpoa2dRLmluZGV4T2YoeDZzTzBpZ1tib2hVcU9dKTtpZihNUTNXTDhEPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHU0TVJ4RmQ8UzR6OEFsW1A2Q1AxQmYrMHhhYV0pe3U0TVJ4RmQ9TVEzV0w4RH1lbHNle0JVT1ZMbGkodTRNUnhGZCs9TVEzV0w4RCpTNHo4QWxbUDZDUDFCZisweGJkXSxxS0YyckNufD11NE1SeEZkPDxpeHdzU3EsaXh3c1NxKz0odTRNUnhGZCZTNHo4QWxbUDZDUDFCZisweGJlXSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoSEtKcWtYLnB1c2gocUtGMnJDbiZTNHo4QWxbMHgzXSkscUtGMnJDbj4+PVM0ejhBbFsweDJdLGl4d3NTcS09UzR6OEFsWzB4Ml0pfXdoaWxlKGl4d3NTcT5TNHo4QWxbUDZDUDFCZisweGI0XSk7dTRNUnhGZD0tUzR6OEFsWzB4MV19fWlmKHU0TVJ4RmQ+LVM0ejhBbFsweDFdKXtCVU9WTGxpKGJESnhXVC5oRkFUS05MPWJESnhXVC5qMUo5ZFQxLFA2Q1AxQmYrPS0weDExZCk7YnJlYWt9ZWxzZXtCVU9WTGxpKGJESnhXVC5oRkFUS05MPWJESnhXVC5qMUo5ZFQxLFA2Q1AxQmYrPS0weDExZCxfTXhLSnBtKz0weDg4KTticmVha31jYXNlIDB4NTg6Y2FzZSBQNkNQMUJmIT0tMHgxYzcmJlA2Q1AxQmYtIC0weGViOmNhc2UtMHg3MTpCVU9WTGxpKGJESnhXVC5oRkFUS05MPWJESnhXVC5RbUszakwsUDZDUDFCZis9LTB4MTg0KTticmVha319QlVPVkxsaShVNmxoNGY9dm9pZCAweDAsUDZDUDFCZj1fTXhLSnBtKC0weDYyLDB4ODcpLm5leHQoKS52YWx1ZSk7aWYoVTZsaDRmKXtyZXR1cm4gUDZDUDFCZn19ZnVuY3Rpb24gYkRKeFdUKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09X014S0pwbShocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfWNvbnN0IEU2X0tSWj1hd2FpdCBMYkRVQXYoYkRKeFdUKDB4MjY2KSkoYkRKeFdUKDB4MjY3KSksbVYwZEFpVD1hd2FpdCBFNl9LUlpbYkRKeFdUKDB4MjY4KV0oKTtsZXQgeUlSbDEzPW1WMGRBaVRbYkRKeFdUKFM0ejhBbFsweDkxXSldKG5ldyhMYkRVQXYoYkRKeFdUKDB4MjZhKStTNHo4QWxbMHgzM10pKShiREp4V1QoMHgyNmIpK1wiKVwiLFwiXCIpKVtTNHo4QWxbMHgxXV0sZFF4UVpSaz1tVjBkQWlUW2JESnhXVChTNHo4QWxbMHg5MV0pXShuZXcoTGJEVUF2KGJESnhXVCgweDI2YykpKShiREp4V1QoMHgyNmQpLFwiXCIpKVtTNHo4QWxbMHgxXV07cXNLVlNCVD17W1M0ejhBbFsweDk3XV06eUlSbDEzLFtiREp4V1QoMHgyNmUpXTpwUjg2eTEoZFF4UVpSayksW2JESnhXVCgweDI2ZildOltMYkRVQXYoYkRKeFdUKDB4MjcwKStTNHo4QWxbMHg3Y10pW2JESnhXVChTNHo4QWxbMHg5Ml0pXVtiREp4V1QoMHgyNzIpXStTNHo4QWxbMHg5OV0rTGJEVUF2KGJESnhXVCgweDI3MykpW2JESnhXVChTNHo4QWxbMHg5Ml0pXVtiREp4V1QoMHgyNzQpXSxMYkRVQXYoYkRKeFdUKFM0ejhBbFsweDkzXSkpW2JESnhXVCgweDI3NildLExiRFVBdihiREp4V1QoUzR6OEFsWzB4OTNdKSlbYkRKeFdUKDB4Mjc3KV0sTGJEVUF2KGJESnhXVChTNHo4QWxbMHg5M10pKVtiREp4V1QoMHgyNzgpXV0sW2JESnhXVCgweDI3OSkrYkRKeFdUKDB4MjdhKV06eE5Kckd4LFtiREp4V1QoMHgyN2IpXTpPd3JWNmV9fWNhdGNoKHBNT2lKYUMpe0JVT1ZMbGkoY202ajdtcyh1RVBQT1cpLGNtNmo3bXMoTjFsN0NuUSkpO2Z1bmN0aW9uIE4xbDdDblEoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweGRdXT1cIjFjc0dKUG9oTnJtTFVRM0g1ej5ZVnU9eFQ2KT80dGQ4bCFqUyhPRWJffltuKyo6OUt5d1xcXCI8XUklI0NCZldAL0QmfHZ9YXAkWE1SYFoua2kwXkFlMmdGNzt7cSxcIix6WnhKRVJKW1M0ejhBbFsweDk0XV09XCJcIisoelp4SkVSSltTNHo4QWxbMHgwXV18fFwiXCIpLHpaeEpFUkpbUzR6OEFsWzB4N2FdXT16WnhKRVJKW1M0ejhBbFsweDk0XV0ubGVuZ3RoLHpaeEpFUkpbLVM0ejhBbFsweDdmXV09W10selp4SkVSSltTNHo4QWxbMHg5NV1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4MTldXT1TNHo4QWxbMHgwXSx6WnhKRVJKWy1TNHo4QWxbMHgxNl1dPS1TNHo4QWxbMHgxXSk7Zm9yKHpaeEpFUkpbUzR6OEFsWzB4OTZdXT1TNHo4QWxbMHgwXTt6WnhKRVJKW1M0ejhBbFsweDk2XV08elp4SkVSSltTNHo4QWxbMHg3YV1dO3paeEpFUkpbUzR6OEFsWzB4OTZdXSsrKXt6WnhKRVJKWy1TNHo4QWxbMHg2Zl1dPXpaeEpFUkpbUzR6OEFsWzB4ZF1dLmluZGV4T2Yoelp4SkVSSltTNHo4QWxbMHg5NF1dW3paeEpFUkpbUzR6OEFsWzB4OTZdXV0pO2lmKHpaeEpFUkpbLVM0ejhBbFsweDZmXV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSlstUzR6OEFsWzB4MTZdXTxTNHo4QWxbMHgwXSl7elp4SkVSSlstUzR6OEFsWzB4MTZdXT16WnhKRVJKWy1TNHo4QWxbMHg2Zl1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKWy1TNHo4QWxbMHgxNl1dKz16WnhKRVJKWy1TNHo4QWxbMHg2Zl1dKlM0ejhBbFsweDEzXSx6WnhKRVJKW1M0ejhBbFsweDk1XV18PXpaeEpFUkpbLVM0ejhBbFsweDE2XV08PHpaeEpFUkpbUzR6OEFsWzB4MTldXSx6WnhKRVJKW1M0ejhBbFsweDE5XV0rPSh6WnhKRVJKWy1TNHo4QWxbMHgxNl1dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSlstUzR6OEFsWzB4N2ZdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4OTVdXSZTNHo4QWxbMHgzXSkselp4SkVSSltTNHo4QWxbMHg5NV1dPj49UzR6OEFsWzB4Ml0selp4SkVSSltTNHo4QWxbMHgxOV1dLT1TNHo4QWxbMHgyXSl9d2hpbGUoelp4SkVSSltTNHo4QWxbMHgxOV1dPlM0ejhBbFsweGFdKTt6WnhKRVJKWy1TNHo4QWxbMHgxNl1dPS1TNHo4QWxbMHgxXX19aWYoelp4SkVSSlstUzR6OEFsWzB4MTZdXT4tUzR6OEFsWzB4MV0pe3paeEpFUkpbLVM0ejhBbFsweDdmXV0ucHVzaCgoelp4SkVSSltTNHo4QWxbMHg5NV1dfHpaeEpFUkpbLVM0ejhBbFsweDE2XV08PHpaeEpFUkpbUzR6OEFsWzB4MTldXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKHpaeEpFUkpbLVM0ejhBbFsweDdmXV0pfWZ1bmN0aW9uIHVFUFBPVyguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPU4xbDdDblEoaHFHN0p1bFt6WnhKRVJKW1M0ejhBbFsweDBdXV0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXX1xc0tWU0JUPXtbUzR6OEFsWzB4OTddXTp1RVBQT1coUzR6OEFsWzB4OThdKSxbdUVQUE9XKDB4MjdkKV06dUVQUE9XKFM0ejhBbFsweDk4XSksW3VFUFBPVygweDI3ZSldOltMYkRVQXYodUVQUE9XKFM0ejhBbFsweDlhXSkpW3VFUFBPVyhTNHo4QWxbMHg5Yl0pXVt1RVBQT1coMHgyODEpXStTNHo4QWxbMHg5OV0rTGJEVUF2KHVFUFBPVyhTNHo4QWxbMHg5YV0pKVt1RVBQT1coUzR6OEFsWzB4OWJdKV1bdUVQUE9XKDB4MjgyKV0sTGJEVUF2KHVFUFBPVyhTNHo4QWxbMHg5Y10pKVt1RVBQT1coMHgyODQpXSxMYkRVQXYodUVQUE9XKFM0ejhBbFsweDljXSkpW3VFUFBPVygweDI4NSldLExiRFVBdih1RVBQT1coUzR6OEFsWzB4OWNdKSlbdUVQUE9XKDB4Mjg2KV1dLFt1RVBQT1coMHgyODcpXTp4TkpyR3gsW3VFUFBPVygweDI4OCldOk93clY2ZX19aWYoIXFzS1ZTQlRbVTZsaDRmKDB4Mjg5KV0pe2NtNmo3bXMoa0FpQkw4KTtmdW5jdGlvbiBrQWlCTDgoLi4uelp4SkVSSil7dmFyIFU2bGg0ZixQNkNQMUJmO2Z1bmN0aW9uKl9NeEtKcG0oUDZDUDFCZixfTXhLSnBtLGJESnhXVCxFNl9LUlosbVYwZEFpVD17RjZQQ2drZDp7fX0pe3doaWxlKFA2Q1AxQmYrX014S0pwbStiREp4V1QrRTZfS1JaIT09LTB4MmIpd2l0aChtVjBkQWlULkNLRUVJc0t8fG1WMGRBaVQpc3dpdGNoKFA2Q1AxQmYrX014S0pwbStiREp4V1QrRTZfS1JaKXtjYXNlIDB4YWI6Y2FzZS0weDUwOnJldHVybiBVNmxoNGY9ITB4MCxHZURTN2ZBKHpaeEpFUkpbUzR6OEFsW2JESnhXVCstMHgxNGJdXSk7ZGVmYXVsdDpjYXNlIDB4YzY6Y2FzZSAweGZhOkJVT1ZMbGkoelp4SkVSSltTNHo4QWxbX014S0pwbSstMHgzOF1dPVtdLHpaeEpFUkpbLVM0ejhBbFsweGEwXV09UzR6OEFsWzB4MF0sbVYwZEFpVC5DS0VFSXNLPW1WMGRBaVQuRjZQQ2drZCxQNkNQMUJmKz0weDIxMixfTXhLSnBtKz0tMHgxNmIsYkRKeFdUKz0weDM0LEU2X0tSWis9LTB4YzcpO2JyZWFrO2Nhc2UgRTZfS1JaLTB4MWFlOkJVT1ZMbGkobVYwZEFpVC5DS0VFSXNLPW1WMGRBaVQuRjZQQ2drZCxQNkNQMUJmKz0weDIzMSxfTXhLSnBtKz0tMHgxYjcsYkRKeFdUKz0tMHg0MSxFNl9LUlorPS0weDIyKTticmVhaztjYXNlIF9NeEtKcG0tIC0weDYyOmNhc2UgMHhjMTpjYXNlIDB4OTU6QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDlmXV0ucHVzaCgoelp4SkVSSlstUzR6OEFsWzB4YTBdXXx6WnhKRVJKW1M0ejhBbFsweGFdXTw8elp4SkVSSlstUzR6OEFsWzB4YTJdXSkmUzR6OEFsW19NeEtKcG0rMHgxYl0pLG1WMGRBaVQuQ0tFRUlzSz1tVjBkQWlULkY2UENna2QsUDZDUDFCZis9LTB4MWJhLEU2X0tSWis9MHgyMWIpO2JyZWFrO2Nhc2UgYkRKeFdULTB4MTQwOmZvcih6WnhKRVJKWy1TNHo4QWxbX014S0pwbSsweDU5XV09UzR6OEFsW19NeEtKcG0rLTB4NDhdO3paeEpFUkpbLVM0ejhBbFtQNkNQMUJmKzB4ZmFdXTx6WnhKRVJKWy1TNHo4QWxbMHg5ZV1dO3paeEpFUkpbLVM0ejhBbFsweGExXV0rKyl7elp4SkVSSltTNHo4QWxbMHgxMV1dPXpaeEpFUkpbUzR6OEFsWzB4MV1dLmluZGV4T2Yoelp4SkVSSlstUzR6OEFsW1A2Q1AxQmYrMHhmNl1dW3paeEpFUkpbLVM0ejhBbFsweGExXV1dKTtpZih6WnhKRVJKW1M0ejhBbFsweDExXV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSltTNHo4QWxbMHhhXV08UzR6OEFsWzB4MF0pe3paeEpFUkpbUzR6OEFsWzB4YV1dPXpaeEpFUkpbUzR6OEFsWzB4MTFdXX1lbHNle0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHhhXV0rPXpaeEpFUkpbUzR6OEFsW19NeEtKcG0rLTB4MzddXSpTNHo4QWxbYkRKeFdUKy0weDQ1XSx6WnhKRVJKWy1TNHo4QWxbYkRKeFdUKzB4NDhdXXw9elp4SkVSSltTNHo4QWxbYkRKeFdUKy0weDRlXV08PHpaeEpFUkpbLVM0ejhBbFtQNkNQMUJmKzB4ZmJdXSx6WnhKRVJKWy1TNHo4QWxbMHhhMl1dKz0oelp4SkVSSltTNHo4QWxbUDZDUDFCZisweDYzXV0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbUDZDUDFCZisweDZlXT9TNHo4QWxbUDZDUDFCZisweDZmXTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg5Zl1dLnB1c2goelp4SkVSSlstUzR6OEFsWzB4YTBdXSZTNHo4QWxbMHgzXSkselp4SkVSSlstUzR6OEFsWzB4YTBdXT4+PVM0ejhBbFsweDJdLHpaeEpFUkpbLVM0ejhBbFtiREp4V1QrMHg0YV1dLT1TNHo4QWxbX014S0pwbSstMHg0Nl0pfXdoaWxlKHpaeEpFUkpbLVM0ejhBbFsweGEyXV0+UzR6OEFsWzB4YV0pO3paeEpFUkpbUzR6OEFsWzB4YV1dPS1TNHo4QWxbMHgxXX19aWYoelp4SkVSSltTNHo4QWxbMHhhXV0+LVM0ejhBbFtfTXhLSnBtKy0weDQ3XSl7QlVPVkxsaShtVjBkQWlULkNLRUVJc0s9bVYwZEFpVC5GNlBDZ2tkLF9NeEtKcG0rPS0weDYwLGJESnhXVCs9MHgxOTIpO2JyZWFrfWVsc2V7QlVPVkxsaShtVjBkQWlULkNLRUVJc0s9bVYwZEFpVC5GNlBDZ2tkLFA2Q1AxQmYrPS0weDFiYSxfTXhLSnBtKz0tMHg2MCxiREp4V1QrPTB4MTkyLEU2X0tSWis9MHgyMWIpO2JyZWFrfWNhc2UgYkRKeFdULTB4YjI6QlVPVkxsaShbbVYwZEFpVC5GNlBDZ2tkLk42YWdEMjYsbVYwZEFpVC5GNlBDZ2tkLmoxRG9JX109WzB4Y2UsLTB4ZTddLG1WMGRBaVQuQ0tFRUlzSz1tVjBkQWlULkY2UENna2QsUDZDUDFCZis9MHgyMjIsX014S0pwbSs9MHg0MSxiREp4V1QrPS0weDMwLEU2X0tSWis9LTB4MjFiKTticmVhaztjYXNlLTB4Nzk6QlVPVkxsaShbbVYwZEFpVC5GNlBDZ2tkLk42YWdEMjYsbVYwZEFpVC5GNlBDZ2tkLmoxRG9JX109Wy0weGRkLDB4ZjBdLHpaeEpFUkpbLVM0ejhBbFsweGEyXV09UzR6OEFsW1A2Q1AxQmYrMHhiOV0selp4SkVSSltTNHo4QWxbX014S0pwbSstMHgxOV1dPS1TNHo4QWxbX014S0pwbSstMHgyMl0sbVYwZEFpVC5DS0VFSXNLPW1WMGRBaVQuRjZQQ2drZCxQNkNQMUJmKz0weDYwLF9NeEtKcG0rPTB4MjUsYkRKeFdUKz0tMHgyZCxFNl9LUlorPS0weGM3KTticmVhaztjYXNlIGJESnhXVC0weDZhOmNhc2UtMHgzZDpjYXNlLTB4ZWE6QlVPVkxsaSh6WnhKRVJKWy1TNHo4QWxbMHhhMl1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsW2JESnhXVCstMHg0ZV1dPS1TNHo4QWxbUDZDUDFCZistMHgxNThdLG1WMGRBaVQuQ0tFRUlzSz1tVjBkQWlULkY2UENna2QsUDZDUDFCZis9LTB4MWIyLF9NeEtKcG0rPTB4ZGMpO2JyZWFrO2Nhc2UgbVYwZEFpVC5GNlBDZ2tkLmoxRG9JXystMHgxMjY6QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDlmXV09W10selp4SkVSSlstUzR6OEFsWzB4YTBdXT1TNHo4QWxbMHgwXSxtVjBkQWlULkNLRUVJc0s9bVYwZEFpVC5GNlBDZ2tkLF9NeEtKcG0rPTB4MWY4LGJESnhXVCs9MHg5YSxFNl9LUlorPS0weDFmOSk7YnJlYWs7Y2FzZS0weGNjOkJVT1ZMbGkoelp4SkVSSlstUzR6OEFsWzB4OWRdXT1cIlwiKyh6WnhKRVJKW1M0ejhBbFsweDBdXXx8XCJcIikselp4SkVSSlstUzR6OEFsW19NeEtKcG0rMHgzMmFdXT16WnhKRVJKWy1TNHo4QWxbMHg5ZF1dLmxlbmd0aCxtVjBkQWlULkNLRUVJc0s9bVYwZEFpVC5GNlBDZ2tkLFA2Q1AxQmYrPTB4MTJlLGJESnhXVCs9LTB4MTBkKTticmVhaztjYXNlIDB4Yjc6QlVPVkxsaShbbVYwZEFpVC5GNlBDZ2tkLk42YWdEMjYsbVYwZEFpVC5GNlBDZ2tkLmoxRG9JX109WzB4ZWMsMHg3Yl0selp4SkVSSltTNHo4QWxbUDZDUDFCZisweGRhXV09UzR6OEFsW1A2Q1AxQmYrMHhkN10selp4SkVSSltTNHo4QWxbMHgxXV09XCJ2ISlbJSMrMV5AYVRKOT1sR0w0T35dVVdxalJGWDB7MyR1Q1p5NWI2PGA6QWVoWUg3SUJNfCZzOFFFY3osVm93cCppZjsofWQvRFNOdC4ycmt4S20+X25nUD9cXFwiXCIsbVYwZEFpVC5DS0VFSXNLPW1WMGRBaVQuRjZQQ2drZCxQNkNQMUJmKz0weDEwMSxfTXhLSnBtKz0tMHgzNGYsYkRKeFdUKz0weDNlLEU2X0tSWis9MHg4ZCk7YnJlYWt9fUJVT1ZMbGkoVTZsaDRmPXZvaWQgMHgwLFA2Q1AxQmY9X014S0pwbSgtMHhkNiwweGMzLDB4OGQsMHgzZCkubmV4dCgpLnZhbHVlKTtpZihVNmxoNGYpe3JldHVybiBQNkNQMUJmfX1mdW5jdGlvbiBOTUdGZ2E1KHpaeEpFUkope2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpdPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpdPWtBaUJMOChocUc3SnVsW3paeEpFUkpdKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXX1jb25zdCByWWY4cXlPPWF3YWl0IHJZZjhxeU8oKTtCVU9WTGxpKHhOSnJHeD1yWWY4cXlPW05NR0ZnYTUoMHgyOGEpK05NR0ZnYTUoMHgyOGIpXSxPd3JWNmU9cllmOHF5T1tOTUdGZ2E1KDB4MjhjKV0pfXJldHVybiBxc0tWU0JUfWNmSVptQigpO2FzeW5jIGZ1bmN0aW9uIG16OHhtZE8oelp4SkVSSixlRk8wWG5NLGJqVTJaZyx4TkpyR3gpe2lmKCF4TkpyR3gpe3hOSnJHeD1mdW5jdGlvbiguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPWJqVTJaZyhocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfX1pZighYmpVMlpnKXtialUyWmc9ZnVuY3Rpb24oelp4SkVSSil7dmFyIGVGTzBYbk09XCI4R1BpTm5scStAVEI5LG8jdS43NU9zOzR2YEldfkw8V0FSfT46VS93ZHt6aEZiPyYwQzNbdDYqWFZmXksheERhWXwyKWNleXJFWlNKX3BNJWptSFxcXCIxPVEkZyhrXCIsYmpVMlpnLHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsX014S0pwbSxiREp4V1Q7QlVPVkxsaShialUyWmc9XCJcIisoelp4SkVSSnx8XCJcIikseE5Kckd4PWJqVTJaZy5sZW5ndGgsT3dyVjZlPVtdLFU2bGg0Zj1TNHo4QWxbMHgwXSxQNkNQMUJmPVM0ejhBbFsweDBdLF9NeEtKcG09LVM0ejhBbFsweDFdKTtmb3IoYkRKeFdUPVM0ejhBbFsweDBdO2JESnhXVDx4TkpyR3g7YkRKeFdUKyspe3ZhciBFNl9LUlo9ZUZPMFhuTS5pbmRleE9mKGJqVTJaZ1tiREp4V1RdKTtpZihFNl9LUlo9PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoX014S0pwbTxTNHo4QWxbMHgwXSl7X014S0pwbT1FNl9LUlp9ZWxzZXtCVU9WTGxpKF9NeEtKcG0rPUU2X0tSWipTNHo4QWxbMHgxM10sVTZsaDRmfD1fTXhLSnBtPDxQNkNQMUJmLFA2Q1AxQmYrPShfTXhLSnBtJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoT3dyVjZlLnB1c2goVTZsaDRmJlM0ejhBbFsweDNdKSxVNmxoNGY+Pj1TNHo4QWxbMHgyXSxQNkNQMUJmLT1TNHo4QWxbMHgyXSl9d2hpbGUoUDZDUDFCZj5TNHo4QWxbMHhhXSk7X014S0pwbT0tUzR6OEFsWzB4MV19fWlmKF9NeEtKcG0+LVM0ejhBbFsweDFdKXtPd3JWNmUucHVzaCgoVTZsaDRmfF9NeEtKcG08PFA2Q1AxQmYpJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQShPd3JWNmUpfX1jbTZqN21zKHhOSnJHeCk7cmV0dXJuIGF3YWl0IGVGTzBYbk1beE5Kckd4KDB4MjhkKV0oeE5Kckd4KDB4MjhlKSxbelp4SkVSSix4TkpyR3goMHgyOGYpXSl9Y2xhc3MgeTZXTUQ4e2NvbnN0cnVjdG9yKHpaeEpFUkope2NtNmo3bXMoYmpVMlpnKTtmdW5jdGlvbiBialUyWmcoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweDFdXT1cIjIhTFhER34xUXI9M3VafDZWbkNUJjBtYUZ5WWVjZmd6XFxcIjlsQF8kLz9FNyVxXk9iWzs4eE1XdEJJUCx7KEhdOlJrZHNgKjw+cCk0K0F3NSNKVWpLb3ZTfWhpTi5cIix6WnhKRVJKW1M0ejhBbFsweGVdXT1cIlwiKyh6WnhKRVJKW1M0ejhBbFsweDBdXXx8XCJcIikselp4SkVSSlstUzR6OEFsWzB4OWRdXT16WnhKRVJKW1M0ejhBbFsweGVdXS5sZW5ndGgselp4SkVSSltTNHo4QWxbMHgxOF1dPVtdLHpaeEpFUkpbUzR6OEFsWzB4MzRdXT1TNHo4QWxbMHgwXSx6WnhKRVJKWy1TNHo4QWxbMHg4N11dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4YV1dPS1TNHo4QWxbMHgxXSk7Zm9yKHpaeEpFUkpbUzR6OEFsWzB4MzNdXT1TNHo4QWxbMHgwXTt6WnhKRVJKW1M0ejhBbFsweDMzXV08elp4SkVSSlstUzR6OEFsWzB4OWRdXTt6WnhKRVJKW1M0ejhBbFsweDMzXV0rKyl7elp4SkVSSlstUzR6OEFsWzB4YTNdXT16WnhKRVJKW1M0ejhBbFsweDFdXS5pbmRleE9mKHpaeEpFUkpbUzR6OEFsWzB4ZV1dW3paeEpFUkpbUzR6OEFsWzB4MzNdXV0pO2lmKHpaeEpFUkpbLVM0ejhBbFsweGEzXV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSltTNHo4QWxbMHhhXV08UzR6OEFsWzB4MF0pe3paeEpFUkpbUzR6OEFsWzB4YV1dPXpaeEpFUkpbLVM0ejhBbFsweGEzXV19ZWxzZXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4YV1dKz16WnhKRVJKWy1TNHo4QWxbMHhhM11dKlM0ejhBbFsweDEzXSx6WnhKRVJKW1M0ejhBbFsweDM0XV18PXpaeEpFUkpbUzR6OEFsWzB4YV1dPDx6WnhKRVJKWy1TNHo4QWxbMHg4N11dLHpaeEpFUkpbLVM0ejhBbFsweDg3XV0rPSh6WnhKRVJKW1M0ejhBbFsweGFdXSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MThdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4MzRdXSZTNHo4QWxbMHgzXSkselp4SkVSSltTNHo4QWxbMHgzNF1dPj49UzR6OEFsWzB4Ml0selp4SkVSSlstUzR6OEFsWzB4ODddXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbLVM0ejhBbFsweDg3XV0+UzR6OEFsWzB4YV0pO3paeEpFUkpbUzR6OEFsWzB4YV1dPS1TNHo4QWxbMHgxXX19aWYoelp4SkVSSltTNHo4QWxbMHhhXV0+LVM0ejhBbFsweDFdKXt6WnhKRVJKW1M0ejhBbFsweDE4XV0ucHVzaCgoelp4SkVSSltTNHo4QWxbMHgzNF1dfHpaeEpFUkpbUzR6OEFsWzB4YV1dPDx6WnhKRVJKWy1TNHo4QWxbMHg4N11dKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoelp4SkVSSltTNHo4QWxbMHgxOF1dKX1mdW5jdGlvbiB4TkpyR3goelp4SkVSSil7aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSl09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl09YmpVMlpnKGhxRzdKdWxbelp4SkVSSl0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpdfXRoaXNbZUZPMFhuTSgweDI5MCkreE5Kckd4KDB4MjkxKV09elp4SkVSSn1hc3luY1tlRk8wWG5NKDB4MjkyKV0oelp4SkVSSixialUyWmcseE5Kckd4KXt0cnl7ZnVuY3Rpb24gT3dyVjZlKHpaeEpFUkope3ZhciBialUyWmc9XCIzMSk1fSslPyp2IUFCblpAZHFjZ1l+cjheazRMdUlDJEU9N3l8d08yRkROeDlcXFwiZjt7eiZsX1ZUXSM8UUc+LGAwaWhlVUs6KE1vL2JhajZILlJTdG1Kc1twWFdQXCIseE5Kckd4LE93clY2ZSxVNmxoNGYsUDZDUDFCZixlRk8wWG5NLF9NeEtKcG0sYkRKeFdUO0JVT1ZMbGkoeE5Kckd4PVwiXCIrKHpaeEpFUkp8fFwiXCIpLE93clY2ZT14TkpyR3gubGVuZ3RoLFU2bGg0Zj1bXSxQNkNQMUJmPVM0ejhBbFsweDBdLGVGTzBYbk09UzR6OEFsWzB4MF0sX014S0pwbT0tUzR6OEFsWzB4MV0pO2ZvcihiREp4V1Q9UzR6OEFsWzB4MF07YkRKeFdUPE93clY2ZTtiREp4V1QrKyl7dmFyIEU2X0tSWj1ialUyWmcuaW5kZXhPZih4TkpyR3hbYkRKeFdUXSk7aWYoRTZfS1JaPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKF9NeEtKcG08UzR6OEFsWzB4MF0pe19NeEtKcG09RTZfS1JafWVsc2V7QlVPVkxsaShfTXhLSnBtKz1FNl9LUloqUzR6OEFsWzB4MTNdLFA2Q1AxQmZ8PV9NeEtKcG08PGVGTzBYbk0sZUZPMFhuTSs9KF9NeEtKcG0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShVNmxoNGYucHVzaChQNkNQMUJmJlM0ejhBbFsweDNdKSxQNkNQMUJmPj49UzR6OEFsWzB4Ml0sZUZPMFhuTS09UzR6OEFsWzB4Ml0pfXdoaWxlKGVGTzBYbk0+UzR6OEFsWzB4YV0pO19NeEtKcG09LVM0ejhBbFsweDFdfX1pZihfTXhLSnBtPi1TNHo4QWxbMHgxXSl7VTZsaDRmLnB1c2goKFA2Q1AxQmZ8X014S0pwbTw8ZUZPMFhuTSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKFU2bGg0Zil9ZnVuY3Rpb24gVTZsaDRmKHpaeEpFUkope2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpdPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpdPU93clY2ZShocUc3SnVsW3paeEpFUkpdKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXX1hd2FpdCBtejh4bWRPKHtbUzR6OEFsWzB4YmJdXTpialUyWmcsW1U2bGg0ZigweDI5MyldOnpaeEpFUkosW1U2bGg0ZigweDI5NCldOlU2bGg0ZigweDI5NSl9LHhOSnJHeCk7cmV0dXJuIFM0ejhBbFsweDczXX1jYXRjaChQNkNQMUJmKXtyZXR1cm4gUzR6OEFsWzB4MjBdfX1hc3luY1tlRk8wWG5NKDB4Mjk2KStlRk8wWG5NKDB4Mjk3KV0oelp4SkVSSixialUyWmcseE5Kckd4LE93clY2ZSl7Y202ajdtcyhQNkNQMUJmKTtmdW5jdGlvbiBVNmxoNGYoelp4SkVSSil7dmFyIGJqVTJaZz1cIjNrV0twcmhDZFVhbVBvP3gjZT5WfE1ad0ckRFF6PWovLG5KOEBiSS5deSZsaVhzOjI3WzlxNHVTSDVZK1RedjF+RlJCT31cXFwidGY8JSooKUEwITs2e0VfYGNMTmdcIix4TkpyR3gsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLF9NeEtKcG0sYkRKeFdULEU2X0tSWjtCVU9WTGxpKHhOSnJHeD1cIlwiKyh6WnhKRVJKfHxcIlwiKSxPd3JWNmU9eE5Kckd4Lmxlbmd0aCxVNmxoNGY9W10sUDZDUDFCZj1TNHo4QWxbMHgwXSxfTXhLSnBtPVM0ejhBbFsweDBdLGJESnhXVD0tUzR6OEFsWzB4MV0pO2ZvcihFNl9LUlo9UzR6OEFsWzB4MF07RTZfS1JaPE93clY2ZTtFNl9LUlorKyl7dmFyIHlJUmwxMz1ialUyWmcuaW5kZXhPZih4TkpyR3hbRTZfS1JaXSk7aWYoeUlSbDEzPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKGJESnhXVDxTNHo4QWxbMHgwXSl7YkRKeFdUPXlJUmwxM31lbHNle0JVT1ZMbGkoYkRKeFdUKz15SVJsMTMqUzR6OEFsWzB4MTNdLFA2Q1AxQmZ8PWJESnhXVDw8X014S0pwbSxfTXhLSnBtKz0oYkRKeFdUJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoVTZsaDRmLnB1c2goUDZDUDFCZiZTNHo4QWxbMHgzXSksUDZDUDFCZj4+PVM0ejhBbFsweDJdLF9NeEtKcG0tPVM0ejhBbFsweDJdKX13aGlsZShfTXhLSnBtPlM0ejhBbFsweGFdKTtiREp4V1Q9LVM0ejhBbFsweDFdfX1pZihiREp4V1Q+LVM0ejhBbFsweDFdKXtVNmxoNGYucHVzaCgoUDZDUDFCZnxiREp4V1Q8PF9NeEtKcG0pJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQShVNmxoNGYpfWZ1bmN0aW9uIFA2Q1AxQmYoLi4uelp4SkVSSil7elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT1VNmxoNGYoaHFHN0p1bFt6WnhKRVJKW1M0ejhBbFsweDBdXV0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXX1jb25zdCBfTXhLSnBtPW5ldyhMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHhhNF0pKVtlRk8wWG5NKFM0ejhBbFsweGE1XSldW1A2Q1AxQmYoMHgyOTgpK1A2Q1AxQmYoMHgyOTkpXSkoW1A2Q1AxQmYoMHgyOWEpXSksYkRKeFdUPW5ldyhMYkRVQXYoUDZDUDFCZihTNHo4QWxbMHhhNl0pKVtQNkNQMUJmKDB4MjljKV1bUDZDUDFCZigweDI5ZCldKShbUDZDUDFCZigweDI5ZSkrUDZDUDFCZigweDI5ZikrUDZDUDFCZigweDJhMCkrUDZDUDFCZigweDJhMSkrUDZDUDFCZigweDJhMikrUDZDUDFCZigweDJhMyldKSxFNl9LUlo9elp4SkVSSix5SVJsMTM9TGJEVUF2KFA2Q1AxQmYoUzR6OEFsWzB4Y2FdKSlbUDZDUDFCZigweDJhNSldKExiRFVBdihQNkNQMUJmKDB4MmE2KSlbUDZDUDFCZigweDJhNyldKCkvUzR6OEFsWzB4ZGFdKStTNHo4QWxbMHhkYl0sZFF4UVpSaz1uZXcoTGJEVUF2KFA2Q1AxQmYoUzR6OEFsWzB4YTZdKSlbUDZDUDFCZigweDJhOCldKSh4TkpyR3gsbVYwZEFpVCxPd3JWNmUpLHBNT2lKYUM9YXdhaXQgZFF4UVpSa1tQNkNQMUJmKFM0ejhBbFsweGFhXSldKClbUDZDUDFCZihTNHo4QWxbMHhhN10pXSgoKT0+e2NtNmo3bXMoYmpVMlpnKTtmdW5jdGlvbiB6WnhKRVJKKHpaeEpFUkope3ZhciBialUyWmc9XCJWUmZTMnptUEE1TUg2YiUzLkNLfFRJQD94MHB0azhgXFxcIl91RjljRyhXXUV+OnN9Lyk+e0p2eVF3RHI7T2dZJj1hQm9xWCwxbCs0WmgjITdeWzxuaiokZUxVZGlOXCIseE5Kckd4LE93clY2ZSxVNmxoNGYsUDZDUDFCZixfTXhLSnBtLGJESnhXVCxFNl9LUlo7QlVPVkxsaSh4TkpyR3g9XCJcIisoelp4SkVSSnx8XCJcIiksT3dyVjZlPXhOSnJHeC5sZW5ndGgsVTZsaDRmPVtdLFA2Q1AxQmY9UzR6OEFsWzB4MF0sX014S0pwbT1TNHo4QWxbMHgwXSxiREp4V1Q9LVM0ejhBbFsweDFdKTtmb3IoRTZfS1JaPVM0ejhBbFsweDBdO0U2X0tSWjxPd3JWNmU7RTZfS1JaKyspe3ZhciB5SVJsMTM9YmpVMlpnLmluZGV4T2YoeE5Kckd4W0U2X0tSWl0pO2lmKHlJUmwxMz09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZihiREp4V1Q8UzR6OEFsWzB4MF0pe2JESnhXVD15SVJsMTN9ZWxzZXtCVU9WTGxpKGJESnhXVCs9eUlSbDEzKlM0ejhBbFsweDEzXSxQNkNQMUJmfD1iREp4V1Q8PF9NeEtKcG0sX014S0pwbSs9KGJESnhXVCZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKFU2bGg0Zi5wdXNoKFA2Q1AxQmYmUzR6OEFsWzB4M10pLFA2Q1AxQmY+Pj1TNHo4QWxbMHgyXSxfTXhLSnBtLT1TNHo4QWxbMHgyXSl9d2hpbGUoX014S0pwbT5TNHo4QWxbMHhhXSk7YkRKeFdUPS1TNHo4QWxbMHgxXX19aWYoYkRKeFdUPi1TNHo4QWxbMHgxXSl7VTZsaDRmLnB1c2goKFA2Q1AxQmZ8YkRKeFdUPDxfTXhLSnBtKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoVTZsaDRmKX1mdW5jdGlvbiBialUyWmcoLi4uYmpVMlpnKXtialUyWmdbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW2JqVTJaZ1tTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW2JqVTJaZ1tTNHo4QWxbMHgwXV1dPXpaeEpFUkooaHFHN0p1bFtialUyWmdbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbYmpVMlpnW1M0ejhBbFsweDBdXV19cmV0dXJuIGJqVTJaZygweDJhYikrYmpVMlpnKDB4MmFjKStialUyWmcoMHgyYWQpK2JqVTJaZygweDJhZSl9KSxOMWw3Q25RPWF3YWl0IGRReFFaUmtbUDZDUDFCZigweDJhZildKClbUDZDUDFCZihTNHo4QWxbMHhhN10pXSgoKT0+e3JldHVybiBTNHo4QWxbMHhhOF19KTtpZihwTU9pSmFDPT09UDZDUDFCZigweDJiMCkrUDZDUDFCZigweDJiMSkrUDZDUDFCZigweDJiMikrUzR6OEFsWzB4YTldKXtyZXR1cm59Y29uc3QgdUVQUE9XPUxiRFVBdihQNkNQMUJmKFM0ejhBbFsweGE2XSkpW1A2Q1AxQmYoMHgyYjMpXVtQNkNQMUJmKDB4MmI0KStQNkNQMUJmKDB4MmI1KV0oKSxrQWlCTDg9UzR6OEFsWzB4MF0sTk1HRmdhNT17W1A2Q1AxQmYoUzR6OEFsWzB4YWFdKV06cE1PaUphQyxbUDZDUDFCZigweDJiNikrUzR6OEFsWzB4NWNdXTpOMWw3Q25RLFtQNkNQMUJmKFM0ejhBbFsweGFiXSldOmJqVTJaZyxbUDZDUDFCZihTNHo4QWxbMHhhY10pXTp4TkpyR3h9LHJZZjhxeU89e1tQNkNQMUJmKFM0ejhBbFsweGFhXSldOnBNT2lKYUMsW1A2Q1AxQmYoUzR6OEFsWzB4YWJdKV06YmpVMlpnLFtQNkNQMUJmKFM0ejhBbFsweGFjXSldOnhOSnJHeH0seDRPSU9pPXtbUDZDUDFCZihTNHo4QWxbMHhhZl0pXTpbe1tQNkNQMUJmKFM0ejhBbFsweGFhXSldOlA2Q1AxQmYoUzR6OEFsWzB4YzJdKSxbUDZDUDFCZihTNHo4QWxbMHhhZF0pXTpQNkNQMUJmKFM0ejhBbFsweGFlXSkrUzR6OEFsWzB4MzhdfSx7W1A2Q1AxQmYoUzR6OEFsWzB4YWFdKV06UDZDUDFCZihTNHo4QWxbMHhiMF0pLFtQNkNQMUJmKFM0ejhBbFsweGFkXSldOlA2Q1AxQmYoUzR6OEFsWzB4YWVdKStTNHo4QWxbMHgzOF19LHtbUDZDUDFCZihTNHo4QWxbMHhhYV0pXTpQNkNQMUJmKFM0ejhBbFsweGIzXSksW1A2Q1AxQmYoUzR6OEFsWzB4YWRdKV06UDZDUDFCZihTNHo4QWxbMHhiMl0pfSx7W1A2Q1AxQmYoUzR6OEFsWzB4YWFdKV06UDZDUDFCZigweDJjMCksW1A2Q1AxQmYoUzR6OEFsWzB4YWRdKV06UDZDUDFCZigweDJjMSkrUzR6OEFsWzB4N2NdfSx7W1A2Q1AxQmYoUzR6OEFsWzB4YWFdKV06UDZDUDFCZigweDJjMiksW1A2Q1AxQmYoUzR6OEFsWzB4YWRdKV06UDZDUDFCZigweDJjMyl9XX0sdEpYNmhBTz17W1A2Q1AxQmYoUzR6OEFsWzB4YWZdKV06W3tbUDZDUDFCZihTNHo4QWxbMHhhYV0pXTpQNkNQMUJmKDB4MmM0KSxbUDZDUDFCZihTNHo4QWxbMHhhZF0pXTpQNkNQMUJmKFM0ejhBbFsweGIxXSl9LHtbUDZDUDFCZihTNHo4QWxbMHhhYV0pXTpQNkNQMUJmKFM0ejhBbFsweGIwXSksW1A2Q1AxQmYoUzR6OEFsWzB4YWRdKV06UDZDUDFCZihTNHo4QWxbMHhiMV0pfSx7W1A2Q1AxQmYoUzR6OEFsWzB4YWFdKV06UDZDUDFCZigweDJjNiksW1A2Q1AxQmYoUzR6OEFsWzB4YWRdKV06UDZDUDFCZihTNHo4QWxbMHhiMl0pfSx7W1A2Q1AxQmYoUzR6OEFsWzB4YWFdKV06UDZDUDFCZihTNHo4QWxbMHhiM10pLFtQNkNQMUJmKFM0ejhBbFsweGFkXSldOlA2Q1AxQmYoUzR6OEFsWzB4YjJdKX0se1tQNkNQMUJmKFM0ejhBbFsweGFhXSldOlA2Q1AxQmYoMHgyYzcpLFtQNkNQMUJmKFM0ejhBbFsweGFkXSldOlA2Q1AxQmYoUzR6OEFsWzB4YjJdKX1dfSxCaGpZUE09KGFzeW5jKCk9PntCVU9WTGxpKGNtNmo3bXMoYmpVMlpnKSxjbTZqN21zKHpaeEpFUkopKTtmdW5jdGlvbiB6WnhKRVJKKC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0selp4SkVSSltTNHo4QWxbMHhkXV09XCIwOlxcXCIoeH5GXlo1PmV7XTxuJE1jISpSO0RZd1tML096MVhnS0VfKVFpSiZ2I2tzfTlWYk55bFM3M0JXZkFDaHU2bzJ8VWRtamAlP3FASSxQPXJwKzhhSC50R1Q0XCIselp4SkVSSltTNHo4QWxbMHhiNF1dPVwiXCIrKHpaeEpFUkpbUzR6OEFsWzB4MF1dfHxcIlwiKSx6WnhKRVJKW1M0ejhBbFsweDEwXV09elp4SkVSSltTNHo4QWxbMHhiNF1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDM1XV09W10selp4SkVSSltTNHo4QWxbMHgzNF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4OF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4MTJdXT0tUzR6OEFsWzB4MV0pO2Zvcih6WnhKRVJKW1M0ejhBbFsweDMzXV09UzR6OEFsWzB4MF07elp4SkVSSltTNHo4QWxbMHgzM11dPHpaeEpFUkpbUzR6OEFsWzB4MTBdXTt6WnhKRVJKW1M0ejhBbFsweDMzXV0rKyl7elp4SkVSSlstUzR6OEFsWzB4YjVdXT16WnhKRVJKW1M0ejhBbFsweGRdXS5pbmRleE9mKHpaeEpFUkpbUzR6OEFsWzB4YjRdXVt6WnhKRVJKW1M0ejhBbFsweDMzXV1dKTtpZih6WnhKRVJKWy1TNHo4QWxbMHhiNV1dPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHpaeEpFUkpbUzR6OEFsWzB4MTJdXTxTNHo4QWxbMHgwXSl7elp4SkVSSltTNHo4QWxbMHgxMl1dPXpaeEpFUkpbLVM0ejhBbFsweGI1XV19ZWxzZXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MTJdXSs9elp4SkVSSlstUzR6OEFsWzB4YjVdXSpTNHo4QWxbMHgxM10selp4SkVSSltTNHo4QWxbMHgzNF1dfD16WnhKRVJKW1M0ejhBbFsweDEyXV08PHpaeEpFUkpbUzR6OEFsWzB4OF1dLHpaeEpFUkpbUzR6OEFsWzB4OF1dKz0oelp4SkVSSltTNHo4QWxbMHgxMl1dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHgzNV1dLnB1c2goelp4SkVSSltTNHo4QWxbMHgzNF1dJlM0ejhBbFsweDNdKSx6WnhKRVJKW1M0ejhBbFsweDM0XV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKW1M0ejhBbFsweDhdXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4OF1dPlM0ejhBbFsweGFdKTt6WnhKRVJKW1M0ejhBbFsweDEyXV09LVM0ejhBbFsweDFdfX1pZih6WnhKRVJKW1M0ejhBbFsweDEyXV0+LVM0ejhBbFsweDFdKXt6WnhKRVJKW1M0ejhBbFsweDM1XV0ucHVzaCgoelp4SkVSSltTNHo4QWxbMHgzNF1dfHpaeEpFUkpbUzR6OEFsWzB4MTJdXTw8elp4SkVSSltTNHo4QWxbMHg4XV0pJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQSh6WnhKRVJKW1M0ejhBbFsweDM1XV0pfWZ1bmN0aW9uIGJqVTJaZyguLi5ialUyWmcpe2JqVTJaZ1tTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbYmpVMlpnW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbYmpVMlpnW1M0ejhBbFsweDBdXV09elp4SkVSSihocUc3SnVsW2JqVTJaZ1tTNHo4QWxbMHgwXV1dKX1yZXR1cm4gdjdlQnFfZ1tialUyWmdbUzR6OEFsWzB4MF1dXX1jb25zdCBVNmxoNGY9e1tialUyWmcoMHgyYzgpXTp1RVBQT1dbYmpVMlpnKDB4MmM5KV0sW2JqVTJaZygweDJjYSldOkU2X0tSWixbYmpVMlpnKDB4MmNiKV06a0FpQkw4LFtialUyWmcoMHgyY2MpXTp5SVJsMTMsW2JqVTJaZygweDJjZCldOlM0ejhBbFsweDczXX0sUDZDUDFCZj1hd2FpdCB1RVBQT1dbYmpVMlpnKDB4MmNlKV0oTk1HRmdhNSx4NE9JT2ksVTZsaDRmKSxfTXhLSnBtPUxiRFVBdihialUyWmcoMHgyY2YpKVtialUyWmcoMHgyZDApXVtialUyWmcoMHgyZDEpXShQNkNQMUJmKTt0cnl7QlVPVkxsaShjbTZqN21zKHBNT2lKYUMpLGNtNmo3bXMoZFF4UVpSaykpO2Z1bmN0aW9uIGRReFFaUmsoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKWy1TNHo4QWxbMHhiNl1dPVwiYy9Mfm13WyE/XmlGbHUyRWddcUtgdEQrJDhSfCxPc2hwVz0pNkM0VDNIR1xcXCJqOWsoLlpRNXZmXz5ZI1U6VjxKJXpCZFgqMHtTQTFhN3lJUGJOeEByOyZ9b01lblwiLHpaeEpFUkpbUzR6OEFsWzB4YjddXT1cIlwiKyh6WnhKRVJKW1M0ejhBbFsweDBdXXx8XCJcIikselp4SkVSSltTNHo4QWxbMHgzMl1dPXpaeEpFUkpbUzR6OEFsWzB4YjddXS5sZW5ndGgselp4SkVSSltTNHo4QWxbMHgxOF1dPVtdLHpaeEpFUkpbUzR6OEFsWzB4Zl1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4YmFdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweGI4XV09LVM0ejhBbFsweDFdKTtmb3Ioelp4SkVSSlstUzR6OEFsWzB4YjldXT1TNHo4QWxbMHgwXTt6WnhKRVJKWy1TNHo4QWxbMHhiOV1dPHpaeEpFUkpbUzR6OEFsWzB4MzJdXTt6WnhKRVJKWy1TNHo4QWxbMHhiOV1dKyspe3paeEpFUkpbUzR6OEFsWzB4NzldXT16WnhKRVJKWy1TNHo4QWxbMHhiNl1dLmluZGV4T2Yoelp4SkVSSltTNHo4QWxbMHhiN11dW3paeEpFUkpbLVM0ejhBbFsweGI5XV1dKTtpZih6WnhKRVJKW1M0ejhBbFsweDc5XV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSltTNHo4QWxbMHhiOF1dPFM0ejhBbFsweDBdKXt6WnhKRVJKW1M0ejhBbFsweGI4XV09elp4SkVSSltTNHo4QWxbMHg3OV1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweGI4XV0rPXpaeEpFUkpbUzR6OEFsWzB4NzldXSpTNHo4QWxbMHgxM10selp4SkVSSltTNHo4QWxbMHhmXV18PXpaeEpFUkpbUzR6OEFsWzB4YjhdXTw8elp4SkVSSltTNHo4QWxbMHhiYV1dLHpaeEpFUkpbUzR6OEFsWzB4YmFdXSs9KHpaeEpFUkpbUzR6OEFsWzB4YjhdXSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MThdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4Zl1dJlM0ejhBbFsweDNdKSx6WnhKRVJKW1M0ejhBbFsweGZdXT4+PVM0ejhBbFsweDJdLHpaeEpFUkpbUzR6OEFsWzB4YmFdXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4YmFdXT5TNHo4QWxbMHhhXSk7elp4SkVSSltTNHo4QWxbMHhiOF1dPS1TNHo4QWxbMHgxXX19aWYoelp4SkVSSltTNHo4QWxbMHhiOF1dPi1TNHo4QWxbMHgxXSl7elp4SkVSSltTNHo4QWxbMHgxOF1dLnB1c2goKHpaeEpFUkpbUzR6OEFsWzB4Zl1dfHpaeEpFUkpbUzR6OEFsWzB4YjhdXTw8elp4SkVSSltTNHo4QWxbMHhiYV1dKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoelp4SkVSSltTNHo4QWxbMHgxOF1dKX1mdW5jdGlvbiBwTU9pSmFDKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09ZFF4UVpSayhocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfWF3YWl0IG16OHhtZE8oe1tTNHo4QWxbMHhiYl1dOnhOSnJHeCxbYmpVMlpnKDB4MmQyKV06RTZfS1JaLFtialUyWmcoMHgyZDMpXTpiREp4V1RbYmpVMlpnKDB4MmQ0KV0ocE1PaUphQygweDJkNSksW3VFUFBPV1twTU9pSmFDKDB4MmQ2KV0sRTZfS1JaLGtBaUJMOCx5SVJsMTMsUzR6OEFsWzB4NzNdLF9NeEtKcG1bUzR6OEFsWzB4YzFdXSxfTXhLSnBtW1M0ejhBbFsweGJjXV0sX014S0pwbVtTNHo4QWxbMHgzOF1dXSl9LE93clY2ZSk7cmV0dXJuIFM0ejhBbFsweDczXX1jYXRjaChOMWw3Q25RKXtyZXR1cm4gUzR6OEFsWzB4MjBdfX0pKCksQ29ZVkpPWj0oYXN5bmMoKT0+e2NtNmo3bXMoelp4SkVSSik7ZnVuY3Rpb24gelp4SkVSSiguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbUzR6OEFsWzB4MjNdXT1cIjBHZkpoa3BvTEZEYWdSQXJqdGV4SSsoVmBCfCRsWDp5KkspPkhdTT1OZDh9WyZeYj9pQ1RxO1VtRXNcXFwie1M5WjE0PGMsWVA1US42bld3djd6JSF+X0B1MyMvTzJcIix6WnhKRVJKW1M0ejhBbFsweGEwXV09XCJcIisoelp4SkVSSltTNHo4QWxbMHgwXV18fFwiXCIpLHpaeEpFUkpbUzR6OEFsWzB4MTBdXT16WnhKRVJKW1M0ejhBbFsweGEwXV0ubGVuZ3RoLHpaeEpFUkpbUzR6OEFsWzB4MThdXT1bXSx6WnhKRVJKW1M0ejhBbFsweDM0XV09UzR6OEFsWzB4MF0selp4SkVSSlstUzR6OEFsWzB4YmVdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweDEyXV09LVM0ejhBbFsweDFdKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgyN11dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MjddXTx6WnhKRVJKW1M0ejhBbFsweDEwXV07elp4SkVSSltTNHo4QWxbMHgyN11dKyspe3paeEpFUkpbUzR6OEFsWzB4YmRdXT16WnhKRVJKW1M0ejhBbFsweDIzXV0uaW5kZXhPZih6WnhKRVJKW1M0ejhBbFsweGEwXV1belp4SkVSSltTNHo4QWxbMHgyN11dXSk7aWYoelp4SkVSSltTNHo4QWxbMHhiZF1dPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHpaeEpFUkpbUzR6OEFsWzB4MTJdXTxTNHo4QWxbMHgwXSl7elp4SkVSSltTNHo4QWxbMHgxMl1dPXpaeEpFUkpbUzR6OEFsWzB4YmRdXX1lbHNle0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHgxMl1dKz16WnhKRVJKW1M0ejhBbFsweGJkXV0qUzR6OEFsWzB4MTNdLHpaeEpFUkpbUzR6OEFsWzB4MzRdXXw9elp4SkVSSltTNHo4QWxbMHgxMl1dPDx6WnhKRVJKWy1TNHo4QWxbMHhiZV1dLHpaeEpFUkpbLVM0ejhBbFsweGJlXV0rPSh6WnhKRVJKW1M0ejhBbFsweDEyXV0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDE4XV0ucHVzaCh6WnhKRVJKW1M0ejhBbFsweDM0XV0mUzR6OEFsWzB4M10pLHpaeEpFUkpbUzR6OEFsWzB4MzRdXT4+PVM0ejhBbFsweDJdLHpaeEpFUkpbLVM0ejhBbFsweGJlXV0tPVM0ejhBbFsweDJdKX13aGlsZSh6WnhKRVJKWy1TNHo4QWxbMHhiZV1dPlM0ejhBbFsweGFdKTt6WnhKRVJKW1M0ejhBbFsweDEyXV09LVM0ejhBbFsweDFdfX1pZih6WnhKRVJKW1M0ejhBbFsweDEyXV0+LVM0ejhBbFsweDFdKXt6WnhKRVJKW1M0ejhBbFsweDE4XV0ucHVzaCgoelp4SkVSSltTNHo4QWxbMHgzNF1dfHpaeEpFUkpbUzR6OEFsWzB4MTJdXTw8elp4SkVSSlstUzR6OEFsWzB4YmVdXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKHpaeEpFUkpbUzR6OEFsWzB4MThdXSl9ZnVuY3Rpb24gYmpVMlpnKGJqVTJaZyl7aWYodHlwZW9mIHY3ZUJxX2dbYmpVMlpnXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1tialUyWmddPXpaeEpFUkooaHFHN0p1bFtialUyWmddKX1yZXR1cm4gdjdlQnFfZ1tialUyWmddfWNvbnN0IFU2bGg0Zj17W2JqVTJaZygweDJkNyldOnVFUFBPV1tialUyWmcoMHgyZDgpK1M0ejhBbFsweDM4XV0sW2JqVTJaZygweDJkOSldOkU2X0tSWixbYmpVMlpnKDB4MmRhKV06YmpVMlpnKDB4MmRiKSxbYmpVMlpnKDB4MmRjKV06a0FpQkw4LFtialUyWmcoMHgyZGQpK1wibmVcIl06eUlSbDEzfSxQNkNQMUJmPWF3YWl0IHVFUFBPV1tialUyWmcoMHgyZGUpXShOTUdGZ2E1LHRKWDZoQU8sVTZsaDRmKSxiREp4V1Q9TGJEVUF2KGJqVTJaZygweDJkZikpW2JqVTJaZygweDJlMCldW2JqVTJaZygweDJlMSldKFA2Q1AxQmYpO3RyeXtCVU9WTGxpKGNtNmo3bXMocE1PaUphQyksY202ajdtcyhkUXhRWlJrKSk7ZnVuY3Rpb24gZFF4UVpSayguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbUzR6OEFsWzB4MV1dPVwiRVJvR3EzXyljZXVZdj8jL2BzdzJUXjZsKjdALmZyVk9cXFwiWnxNK2hpYVsmSU5dIThrRCxRZFNIZ215Q0IoQX5XJHRwYmpQSkw+WDFue0s6VTswPTk1NHh6PH0lRlwiLHpaeEpFUkpbUzR6OEFsWzB4ZV1dPVwiXCIrKHpaeEpFUkpbUzR6OEFsWzB4MF1dfHxcIlwiKSx6WnhKRVJKW1M0ejhBbFsweDMyXV09elp4SkVSSltTNHo4QWxbMHhlXV0ubGVuZ3RoLHpaeEpFUkpbUzR6OEFsWzB4MzVdXT1bXSx6WnhKRVJKW1M0ejhBbFsweGZdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweDE5XV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHhhXV09LVM0ejhBbFsweDFdKTtmb3Ioelp4SkVSSltTNHo4QWxbMHhiZl1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4YmZdXTx6WnhKRVJKW1M0ejhBbFsweDMyXV07elp4SkVSSltTNHo4QWxbMHhiZl1dKyspe3paeEpFUkpbUzR6OEFsWzB4MjRdXT16WnhKRVJKW1M0ejhBbFsweDFdXS5pbmRleE9mKHpaeEpFUkpbUzR6OEFsWzB4ZV1dW3paeEpFUkpbUzR6OEFsWzB4YmZdXV0pO2lmKHpaeEpFUkpbUzR6OEFsWzB4MjRdXT09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih6WnhKRVJKW1M0ejhBbFsweGFdXTxTNHo4QWxbMHgwXSl7elp4SkVSSltTNHo4QWxbMHhhXV09elp4SkVSSltTNHo4QWxbMHgyNF1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweGFdXSs9elp4SkVSSltTNHo4QWxbMHgyNF1dKlM0ejhBbFsweDEzXSx6WnhKRVJKW1M0ejhBbFsweGZdXXw9elp4SkVSSltTNHo4QWxbMHhhXV08PHpaeEpFUkpbUzR6OEFsWzB4MTldXSx6WnhKRVJKW1M0ejhBbFsweDE5XV0rPSh6WnhKRVJKW1M0ejhBbFsweGFdXSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MzVdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4Zl1dJlM0ejhBbFsweDNdKSx6WnhKRVJKW1M0ejhBbFsweGZdXT4+PVM0ejhBbFsweDJdLHpaeEpFUkpbUzR6OEFsWzB4MTldXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4MTldXT5TNHo4QWxbMHhhXSk7elp4SkVSSltTNHo4QWxbMHhhXV09LVM0ejhBbFsweDFdfX1pZih6WnhKRVJKW1M0ejhBbFsweGFdXT4tUzR6OEFsWzB4MV0pe3paeEpFUkpbUzR6OEFsWzB4MzVdXS5wdXNoKCh6WnhKRVJKW1M0ejhBbFsweGZdXXx6WnhKRVJKW1M0ejhBbFsweGFdXTw8elp4SkVSSltTNHo4QWxbMHgxOV1dKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoelp4SkVSSltTNHo4QWxbMHgzNV1dKX1mdW5jdGlvbiBwTU9pSmFDKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09ZFF4UVpSayhocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfWF3YWl0IG16OHhtZE8oe1tTNHo4QWxbMHhiYl1dOnhOSnJHeCxbYmpVMlpnKDB4MmUyKV06RTZfS1JaLFtwTU9pSmFDKDB4MmUzKV06X014S0pwbVtwTU9pSmFDKDB4MmU0KV0ocE1PaUphQygweDJlNSksW3VFUFBPV1twTU9pSmFDKDB4MmU2KV0sRTZfS1JaLHBNT2lKYUMoMHgyZTcpK3BNT2lKYUMoUzR6OEFsWzB4YzBdKStwTU9pSmFDKFM0ejhBbFsweGMwXSkseUlSbDEzLGJESnhXVFtTNHo4QWxbMHhjMV1dLGJESnhXVFtTNHo4QWxbMHhiY11dLGJESnhXVFtTNHo4QWxbMHgzOF1dXSl9LE93clY2ZSk7cmV0dXJuIFM0ejhBbFsweDczXX1jYXRjaChOMWw3Q25RKXtpZihialUyWmcoMHgyZTkpaW4gWUZKek1XKXtyWWY4cXlPKCl9ZnVuY3Rpb24gcllmOHF5TyguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgwXX1yZXR1cm4gUzR6OEFsWzB4MjBdfX0pKCkscXN6UVJrTT0oYXN5bmMoKT0+e2Z1bmN0aW9uIHpaeEpFUkooelp4SkVSSil7dmFyIGJqVTJaZz1cIkcwQ0JnY3BlYWhFVE5bUHEvdkFeTCt1VVd4MURGYH1KQGo1UV1yPT42OFxcXCIqX3wkIT9zbShkbHkzWUtYTy5aVncmfjl0OkgpJSM8SXtTaWs3bixSTTsyNGZib3pcIixVNmxoNGYsX014S0pwbSxkUXhRWlJrLHBNT2lKYUMsTjFsN0NuUSxOTUdGZ2E1LHhOSnJHeDtCVU9WTGxpKFU2bGg0Zj1cIlwiKyh6WnhKRVJKfHxcIlwiKSxfTXhLSnBtPVU2bGg0Zi5sZW5ndGgsZFF4UVpSaz1bXSxwTU9pSmFDPVM0ejhBbFsweDBdLE4xbDdDblE9UzR6OEFsWzB4MF0sTk1HRmdhNT0tUzR6OEFsWzB4MV0pO2Zvcih4TkpyR3g9UzR6OEFsWzB4MF07eE5Kckd4PF9NeEtKcG07eE5Kckd4Kyspe3ZhciBPd3JWNmU9YmpVMlpnLmluZGV4T2YoVTZsaDRmW3hOSnJHeF0pO2lmKE93clY2ZT09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZihOTUdGZ2E1PFM0ejhBbFsweDBdKXtOTUdGZ2E1PU93clY2ZX1lbHNle0JVT1ZMbGkoTk1HRmdhNSs9T3dyVjZlKlM0ejhBbFsweDEzXSxwTU9pSmFDfD1OTUdGZ2E1PDxOMWw3Q25RLE4xbDdDblErPShOTUdGZ2E1JlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoZFF4UVpSay5wdXNoKHBNT2lKYUMmUzR6OEFsWzB4M10pLHBNT2lKYUM+Pj1TNHo4QWxbMHgyXSxOMWw3Q25RLT1TNHo4QWxbMHgyXSl9d2hpbGUoTjFsN0NuUT5TNHo4QWxbMHhhXSk7Tk1HRmdhNT0tUzR6OEFsWzB4MV19fWlmKE5NR0ZnYTU+LVM0ejhBbFsweDFdKXtkUXhRWlJrLnB1c2goKHBNT2lKYUN8Tk1HRmdhNTw8TjFsN0NuUSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKGRReFFaUmspfWZ1bmN0aW9uIGJqVTJaZyhialUyWmcpe2lmKHR5cGVvZiB2N2VCcV9nW2JqVTJaZ109PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbYmpVMlpnXT16WnhKRVJKKGhxRzdKdWxbYmpVMlpnXSl9cmV0dXJuIHY3ZUJxX2dbYmpVMlpnXX1jb25zdCBVNmxoNGY9e1tQNkNQMUJmKFM0ejhBbFsweGMyXSldOnVFUFBPV1tQNkNQMUJmKFM0ejhBbFsweGIxXSldLFtialUyWmcoMHgyZWQpXTpFNl9LUlosW2JqVTJaZygweDJlZSldOmtBaUJMOCxbYmpVMlpnKDB4MmVmKV06eUlSbDEzLFtialUyWmcoMHgyZjApK1M0ejhBbFsweDM1XV06UzR6OEFsWzB4NzNdfSxfTXhLSnBtPWF3YWl0IHVFUFBPV1tialUyWmcoMHgyZjEpXShyWWY4cXlPLHg0T0lPaSxVNmxoNGYpLGRReFFaUms9TGJEVUF2KGJqVTJaZygweDJmMikpW2JqVTJaZygweDJmMyldW2JqVTJaZygweDJmNCkrYmpVMlpnKDB4MmY1KStcInJlXCJdKF9NeEtKcG0pO3RyeXtjbTZqN21zKHBNT2lKYUMpO2Z1bmN0aW9uIHBNT2lKYUMoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweGRdXT1cIjxQRlpYUld0YmtuU0RzQiZnQzE/Snl9NEwsTSpcXFwifjZye0EhaSR8SUh3OVVhXnVgVCVdQCNxN2xFPlFLem9jaihHX1k9eDV2L2QpLjgzMk9wOmVtW04rO1ZoMGZcIix6WnhKRVJKW1M0ejhBbFsweDMxXV09XCJcIisoelp4SkVSSltTNHo4QWxbMHgwXV18fFwiXCIpLHpaeEpFUkpbLVM0ejhBbFsweGM0XV09elp4SkVSSltTNHo4QWxbMHgzMV1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDE4XV09W10selp4SkVSSltTNHo4QWxbMHgzNF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbLVM0ejhBbFsweGMzXV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHhhXV09LVM0ejhBbFsweDFdKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgzM11dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MzNdXTx6WnhKRVJKWy1TNHo4QWxbMHhjNF1dO3paeEpFUkpbUzR6OEFsWzB4MzNdXSsrKXt6WnhKRVJKW1M0ejhBbFsweDI0XV09elp4SkVSSltTNHo4QWxbMHhkXV0uaW5kZXhPZih6WnhKRVJKW1M0ejhBbFsweDMxXV1belp4SkVSSltTNHo4QWxbMHgzM11dXSk7aWYoelp4SkVSSltTNHo4QWxbMHgyNF1dPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHpaeEpFUkpbUzR6OEFsWzB4YV1dPFM0ejhBbFsweDBdKXt6WnhKRVJKW1M0ejhBbFsweGFdXT16WnhKRVJKW1M0ejhBbFsweDI0XV19ZWxzZXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4YV1dKz16WnhKRVJKW1M0ejhBbFsweDI0XV0qUzR6OEFsWzB4MTNdLHpaeEpFUkpbUzR6OEFsWzB4MzRdXXw9elp4SkVSSltTNHo4QWxbMHhhXV08PHpaeEpFUkpbLVM0ejhBbFsweGMzXV0selp4SkVSSlstUzR6OEFsWzB4YzNdXSs9KHpaeEpFUkpbUzR6OEFsWzB4YV1dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHgxOF1dLnB1c2goelp4SkVSSltTNHo4QWxbMHgzNF1dJlM0ejhBbFsweDNdKSx6WnhKRVJKW1M0ejhBbFsweDM0XV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKWy1TNHo4QWxbMHhjM11dLT1TNHo4QWxbMHgyXSl9d2hpbGUoelp4SkVSSlstUzR6OEFsWzB4YzNdXT5TNHo4QWxbMHhhXSk7elp4SkVSSltTNHo4QWxbMHhhXV09LVM0ejhBbFsweDFdfX1pZih6WnhKRVJKW1M0ejhBbFsweGFdXT4tUzR6OEFsWzB4MV0pe3paeEpFUkpbUzR6OEFsWzB4MThdXS5wdXNoKCh6WnhKRVJKW1M0ejhBbFsweDM0XV18elp4SkVSSltTNHo4QWxbMHhhXV08PHpaeEpFUkpbLVM0ejhBbFsweGMzXV0pJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQSh6WnhKRVJKW1M0ejhBbFsweDE4XV0pfWZ1bmN0aW9uIE4xbDdDblEoelp4SkVSSil7aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSl09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl09cE1PaUphQyhocUc3SnVsW3paeEpFUkpdKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXX1hd2FpdCBtejh4bWRPKHtbUzR6OEFsWzB4YmJdXTp4TkpyR3gsW2JqVTJaZygweDJmNildOkU2X0tSWixbYmpVMlpnKDB4MmY3KV06YkRKeFdUW04xbDdDblEoMHgyZjgpK04xbDdDblEoMHgyZjkpK04xbDdDblEoMHgyZmEpXShOMWw3Q25RKDB4MmZiKSxbdUVQUE9XW04xbDdDblEoMHgyZmMpXSxFNl9LUlosa0FpQkw4LHlJUmwxMyxTNHo4QWxbMHg3M10sZFF4UVpSa1tTNHo4QWxbMHhjMV1dLGRReFFaUmtbUzR6OEFsWzB4YmNdXSxkUXhRWlJrW1M0ejhBbFsweDM4XV1dKX0sT3dyVjZlKTtyZXR1cm4gUzR6OEFsWzB4NzNdfWNhdGNoKE5NR0ZnYTUpe3JldHVybiBTNHo4QWxbMHgyMF19fSkoKSxxaXM1RWI9KGFzeW5jKCk9PntjbTZqN21zKHpaeEpFUkopO2Z1bmN0aW9uIHpaeEpFUkooLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweGRdXT1cInBQbUhTREwzZFR5UT4jc1lVO0tyLHhqd2xvaFJCRi9WQWMxdFhORXw2a1teWjwuPyklSSY0dld1R2E5ZWJKIWlNcVxcXCI1bjdDZ35mejAkQCorMjp9Xyg9YHtdOE9cIix6WnhKRVJKW1M0ejhBbFsweGVdXT1cIlwiKyh6WnhKRVJKW1M0ejhBbFsweDBdXXx8XCJcIikselp4SkVSSltTNHo4QWxbMHgzMl1dPXpaeEpFUkpbUzR6OEFsWzB4ZV1dLmxlbmd0aCx6WnhKRVJKWy1TNHo4QWxbMHhjNV1dPVtdLHpaeEpFUkpbUzR6OEFsWzB4MzRdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweDhdXT1TNHo4QWxbMHgwXSx6WnhKRVJKWy1TNHo4QWxbMHhjNl1dPS1TNHo4QWxbMHgxXSk7Zm9yKHpaeEpFUkpbUzR6OEFsWzB4MzNdXT1TNHo4QWxbMHgwXTt6WnhKRVJKW1M0ejhBbFsweDMzXV08elp4SkVSSltTNHo4QWxbMHgzMl1dO3paeEpFUkpbUzR6OEFsWzB4MzNdXSsrKXt6WnhKRVJKWy1TNHo4QWxbMHhjN11dPXpaeEpFUkpbUzR6OEFsWzB4ZF1dLmluZGV4T2Yoelp4SkVSSltTNHo4QWxbMHhlXV1belp4SkVSSltTNHo4QWxbMHgzM11dXSk7aWYoelp4SkVSSlstUzR6OEFsWzB4YzddXT09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih6WnhKRVJKWy1TNHo4QWxbMHhjNl1dPFM0ejhBbFsweDBdKXt6WnhKRVJKWy1TNHo4QWxbMHhjNl1dPXpaeEpFUkpbLVM0ejhBbFsweGM3XV19ZWxzZXtCVU9WTGxpKHpaeEpFUkpbLVM0ejhBbFsweGM2XV0rPXpaeEpFUkpbLVM0ejhBbFsweGM3XV0qUzR6OEFsWzB4MTNdLHpaeEpFUkpbUzR6OEFsWzB4MzRdXXw9elp4SkVSSlstUzR6OEFsWzB4YzZdXTw8elp4SkVSSltTNHo4QWxbMHg4XV0selp4SkVSSltTNHo4QWxbMHg4XV0rPSh6WnhKRVJKWy1TNHo4QWxbMHhjNl1dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSlstUzR6OEFsWzB4YzVdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4MzRdXSZTNHo4QWxbMHgzXSkselp4SkVSSltTNHo4QWxbMHgzNF1dPj49UzR6OEFsWzB4Ml0selp4SkVSSltTNHo4QWxbMHg4XV0tPVM0ejhBbFsweDJdKX13aGlsZSh6WnhKRVJKW1M0ejhBbFsweDhdXT5TNHo4QWxbMHhhXSk7elp4SkVSSlstUzR6OEFsWzB4YzZdXT0tUzR6OEFsWzB4MV19fWlmKHpaeEpFUkpbLVM0ejhBbFsweGM2XV0+LVM0ejhBbFsweDFdKXt6WnhKRVJKWy1TNHo4QWxbMHhjNV1dLnB1c2goKHpaeEpFUkpbUzR6OEFsWzB4MzRdXXx6WnhKRVJKWy1TNHo4QWxbMHhjNl1dPDx6WnhKRVJKW1M0ejhBbFsweDhdXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKHpaeEpFUkpbLVM0ejhBbFsweGM1XV0pfWZ1bmN0aW9uIGJqVTJaZyhialUyWmcpe2lmKHR5cGVvZiB2N2VCcV9nW2JqVTJaZ109PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbYmpVMlpnXT16WnhKRVJKKGhxRzdKdWxbYmpVMlpnXSl9cmV0dXJuIHY3ZUJxX2dbYmpVMlpnXX1pZihQNkNQMUJmKDB4MmZkKWluIFlGSnpNVyl7VTZsaDRmKCl9ZnVuY3Rpb24gVTZsaDRmKCl7dmFyIHpaeEpFUko7ZnVuY3Rpb24gYmpVMlpnKCl7fUJVT1ZMbGkoelp4SkVSSj1jbTZqN21zKGZ1bmN0aW9uKC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4ZV0selp4SkVSSltTNHo4QWxbMHhlXV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHhjOV1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4YzhdXT1uZXcgYmpVMlpnKFM0ejhBbFsweDBdKSx6WnhKRVJKW1M0ejhBbFsweDM0XV09elp4SkVSSltTNHo4QWxbMHhjOF1dLHpaeEpFUkpbUzR6OEFsWzB4OF1dPXpaeEpFUkpbUzR6OEFsWzB4MF1dLHpaeEpFUkpbLVM0ejhBbFsweDg1XV09elp4SkVSSltTNHo4QWxbMHgxXV0pO3doaWxlKHpaeEpFUkpbUzR6OEFsWzB4OF1dIT09UzR6OEFsWzB4OGZdfHx6WnhKRVJKWy1TNHo4QWxbMHg4NV1dIT09UzR6OEFsWzB4OGZdKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4YzldXT0oelp4SkVSSltTNHo4QWxbMHg4XV0/elp4SkVSSltTNHo4QWxbMHg4XV0udmFsOlM0ejhBbFsweDBdKSsoelp4SkVSSlstUzR6OEFsWzB4ODVdXT96WnhKRVJKWy1TNHo4QWxbMHg4NV1dLnZhbDpTNHo4QWxbMHgwXSkrelp4SkVSSltTNHo4QWxbMHhlXV0selp4SkVSSltTNHo4QWxbMHhlXV09TGJEVUF2KFA2Q1AxQmYoUzR6OEFsWzB4Y2FdKSkuZmxvb3Ioelp4SkVSSltTNHo4QWxbMHhjOV1dL1M0ejhBbFsweDkwXSkselp4SkVSSltTNHo4QWxbMHgzNF1dLm5leHQ9bmV3IGJqVTJaZyh6WnhKRVJKW1M0ejhBbFsweGM5XV0lUzR6OEFsWzB4OTBdKSx6WnhKRVJKW1M0ejhBbFsweDM0XV09elp4SkVSSltTNHo4QWxbMHgzNF1dLm5leHQselp4SkVSSltTNHo4QWxbMHg4XV09elp4SkVSSltTNHo4QWxbMHg4XV0/elp4SkVSSltTNHo4QWxbMHg4XV0ubmV4dDpTNHo4QWxbMHg4Zl0selp4SkVSSlstUzR6OEFsWzB4ODVdXT16WnhKRVJKWy1TNHo4QWxbMHg4NV1dP3paeEpFUkpbLVM0ejhBbFsweDg1XV0ubmV4dDpTNHo4QWxbMHg4Zl0pfWlmKHpaeEpFUkpbUzR6OEFsWzB4ZV1dKXpaeEpFUkpbUzR6OEFsWzB4MzRdXS5uZXh0PW5ldyBialUyWmcoelp4SkVSSltTNHo4QWxbMHhlXV0pO3JldHVybiB6WnhKRVJKW1M0ejhBbFsweGM4XV0ubmV4dH0sUzR6OEFsWzB4ZV0pLExiRFVBdihQNkNQMUJmKDB4MmZlKSkubG9nKHpaeEpFUkopKX1jb25zdCBiREp4V1Q9e1tialUyWmcoMHgyZmYpXTp1RVBQT1dbYmpVMlpnKDB4MzAwKStTNHo4QWxbMHgzOF1dLFtialUyWmcoMHgzMDEpXTpFNl9LUlosW2JqVTJaZygweDMwMildOmJqVTJaZygweDMwMyksW2JqVTJaZygweDMwNCldOmtBaUJMOCxbYmpVMlpnKDB4MzA1KV06eUlSbDEzfSxkUXhRWlJrPWF3YWl0IHVFUFBPV1tialUyWmcoMHgzMDYpXShyWWY4cXlPLHRKWDZoQU8sYkRKeFdUKSxwTU9pSmFDPUxiRFVBdihialUyWmcoMHgzMDcpKVtialUyWmcoMHgzMDgpXVtialUyWmcoMHgzMDkpXShkUXhRWlJrKTt0cnl7QlVPVkxsaShjbTZqN21zKE5NR0ZnYTUpLGNtNmo3bXMoTjFsN0NuUSkpO2Z1bmN0aW9uIE4xbDdDblEoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweGRdXT1cIkRfJCg4LjVbWCpcXFwiIXtsXkMsJTA9aHNjcHU5YkBLV092WUVhL35WRmlJUyZOOnl3Znp0VW9tfStBTHxCM2A8VClkUXhyI2pSMT80ZVBnWkdITW5KcWsyPjc2O11cIix6WnhKRVJKW1M0ejhBbFsweGNiXV09XCJcIisoelp4SkVSSltTNHo4QWxbMHgwXV18fFwiXCIpLHpaeEpFUkpbUzR6OEFsWzB4MzJdXT16WnhKRVJKW1M0ejhBbFsweGNiXV0ubGVuZ3RoLHpaeEpFUkpbUzR6OEFsWzB4MzVdXT1bXSx6WnhKRVJKW1M0ejhBbFsweGNjXV09UzR6OEFsWzB4MF0selp4SkVSSlstUzR6OEFsWzB4Y2RdXT1TNHo4QWxbMHgwXSx6WnhKRVJKWy1TNHo4QWxbMHg4NV1dPS1TNHo4QWxbMHgxXSk7Zm9yKHpaeEpFUkpbUzR6OEFsWzB4Ml1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4Ml1dPHpaeEpFUkpbUzR6OEFsWzB4MzJdXTt6WnhKRVJKW1M0ejhBbFsweDJdXSsrKXt6WnhKRVJKW1M0ejhBbFsweDg3XV09elp4SkVSSltTNHo4QWxbMHhkXV0uaW5kZXhPZih6WnhKRVJKW1M0ejhBbFsweGNiXV1belp4SkVSSltTNHo4QWxbMHgyXV1dKTtpZih6WnhKRVJKW1M0ejhBbFsweDg3XV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSlstUzR6OEFsWzB4ODVdXTxTNHo4QWxbMHgwXSl7elp4SkVSSlstUzR6OEFsWzB4ODVdXT16WnhKRVJKW1M0ejhBbFsweDg3XV19ZWxzZXtCVU9WTGxpKHpaeEpFUkpbLVM0ejhBbFsweDg1XV0rPXpaeEpFUkpbUzR6OEFsWzB4ODddXSpTNHo4QWxbMHgxM10selp4SkVSSltTNHo4QWxbMHhjY11dfD16WnhKRVJKWy1TNHo4QWxbMHg4NV1dPDx6WnhKRVJKWy1TNHo4QWxbMHhjZF1dLHpaeEpFUkpbLVM0ejhBbFsweGNkXV0rPSh6WnhKRVJKWy1TNHo4QWxbMHg4NV1dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHgzNV1dLnB1c2goelp4SkVSSltTNHo4QWxbMHhjY11dJlM0ejhBbFsweDNdKSx6WnhKRVJKW1M0ejhBbFsweGNjXV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKWy1TNHo4QWxbMHhjZF1dLT1TNHo4QWxbMHgyXSl9d2hpbGUoelp4SkVSSlstUzR6OEFsWzB4Y2RdXT5TNHo4QWxbMHhhXSk7elp4SkVSSlstUzR6OEFsWzB4ODVdXT0tUzR6OEFsWzB4MV19fWlmKHpaeEpFUkpbLVM0ejhBbFsweDg1XV0+LVM0ejhBbFsweDFdKXt6WnhKRVJKW1M0ejhBbFsweDM1XV0ucHVzaCgoelp4SkVSSltTNHo4QWxbMHhjY11dfHpaeEpFUkpbLVM0ejhBbFsweDg1XV08PHpaeEpFUkpbLVM0ejhBbFsweGNkXV0pJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQSh6WnhKRVJKW1M0ejhBbFsweDM1XV0pfWZ1bmN0aW9uIE5NR0ZnYTUoLi4uelp4SkVSSil7elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT1OMWw3Q25RKGhxRzdKdWxbelp4SkVSSltTNHo4QWxbMHgwXV1dKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV19YXdhaXQgbXo4eG1kTyh7W1M0ejhBbFsweGJiXV06eE5Kckd4LFtOTUdGZ2E1KDB4MzBhKV06RTZfS1JaLFtOTUdGZ2E1KDB4MzBiKV06X014S0pwbVtOTUdGZ2E1KDB4MzBjKV0oTk1HRmdhNSgweDMwZCksW3VFUFBPV1tOTUdGZ2E1KDB4MzBlKV0sRTZfS1JaLE5NR0ZnYTUoMHgzMGYpLHlJUmwxMyxwTU9pSmFDW1M0ejhBbFsweGMxXV0scE1PaUphQ1tTNHo4QWxbMHhiY11dLHBNT2lKYUNbUzR6OEFsWzB4MzhdXV0pfSxPd3JWNmUpO3JldHVybiBTNHo4QWxbMHg3M119Y2F0Y2goeDRPSU9pKXtyZXR1cm4gUzR6OEFsWzB4MjBdfX0pKCksW3BSODZ5MSxxc0tWU0JULGNmSVptQix5NldNRDhdPWF3YWl0IExiRFVBdihQNkNQMUJmKDB4MzEwKSlbUDZDUDFCZigweDMxMSldKFtCaGpZUE0sQ29ZVkpPWixxc3pRUmtNLHFpczVFYl0pO2lmKHBSODZ5MSl7ZnVuY3Rpb24gbTFKaENIUCh6WnhKRVJKKXt2YXIgYmpVMlpnPVwiek5qT2ZrdGFWRmxBRFlXcVFCaXMjQ0V8ZVBoSWdVXWQ4Sl8rYj5ScFNvJSg9ND87dSxgMTwpdnlbe31LbVRNTEdaYy8kbiE1cndeeCZYXFxcIkgyKn46Mzk2LjdAMFwiLHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsX014S0pwbSxiREp4V1QsRTZfS1JaO0JVT1ZMbGkoeE5Kckd4PVwiXCIrKHpaeEpFUkp8fFwiXCIpLE93clY2ZT14TkpyR3gubGVuZ3RoLFU2bGg0Zj1bXSxQNkNQMUJmPVM0ejhBbFsweDBdLF9NeEtKcG09UzR6OEFsWzB4MF0sYkRKeFdUPS1TNHo4QWxbMHgxXSk7Zm9yKEU2X0tSWj1TNHo4QWxbMHgwXTtFNl9LUlo8T3dyVjZlO0U2X0tSWisrKXt2YXIgeUlSbDEzPWJqVTJaZy5pbmRleE9mKHhOSnJHeFtFNl9LUlpdKTtpZih5SVJsMTM9PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoYkRKeFdUPFM0ejhBbFsweDBdKXtiREp4V1Q9eUlSbDEzfWVsc2V7QlVPVkxsaShiREp4V1QrPXlJUmwxMypTNHo4QWxbMHgxM10sUDZDUDFCZnw9YkRKeFdUPDxfTXhLSnBtLF9NeEtKcG0rPShiREp4V1QmUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShVNmxoNGYucHVzaChQNkNQMUJmJlM0ejhBbFsweDNdKSxQNkNQMUJmPj49UzR6OEFsWzB4Ml0sX014S0pwbS09UzR6OEFsWzB4Ml0pfXdoaWxlKF9NeEtKcG0+UzR6OEFsWzB4YV0pO2JESnhXVD0tUzR6OEFsWzB4MV19fWlmKGJESnhXVD4tUzR6OEFsWzB4MV0pe1U2bGg0Zi5wdXNoKChQNkNQMUJmfGJESnhXVDw8X014S0pwbSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKFU2bGg0Zil9ZnVuY3Rpb24gQXFkQ3RsdCh6WnhKRVJKKXtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXT1tMUpoQ0hQKGhxRzdKdWxbelp4SkVSSl0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpdfXJldHVybntbQXFkQ3RsdCgweDMxMildOkFxZEN0bHQoMHgzMTMpLFtBcWRDdGx0KDB4MzE0KV06eDRPSU9pLFtBcWRDdGx0KDB4MzE1KV06Tk1HRmdhNX19aWYocXNLVlNCVCl7cmV0dXJue1tQNkNQMUJmKFM0ejhBbFsweGNlXSldOlA2Q1AxQmYoMHgzMTcpLFtQNkNQMUJmKDB4MzE4KV06dEpYNmhBTyxbUDZDUDFCZigweDMxOSldOk5NR0ZnYTV9fWlmKGNmSVptQil7Y202ajdtcyhXcVRlU0spO2Z1bmN0aW9uIEp0WmRjTCh6WnhKRVJKKXt2YXIgYmpVMlpnPVwiW1M6OWk4a3hybjB3PytsNTN0UktEJHFhKWVwTENtVyMvRklze1xcXCI8MjRfQVExb1Z9N3pdWVpmQkdjeUpFLlROYnZQKGB1O14mPSw+QE9nfE1oZCFIaiolNn5YVVwiLHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsX014S0pwbSxiREp4V1QsRTZfS1JaO0JVT1ZMbGkoeE5Kckd4PVwiXCIrKHpaeEpFUkp8fFwiXCIpLE93clY2ZT14TkpyR3gubGVuZ3RoLFU2bGg0Zj1bXSxQNkNQMUJmPVM0ejhBbFsweDBdLF9NeEtKcG09UzR6OEFsWzB4MF0sYkRKeFdUPS1TNHo4QWxbMHgxXSk7Zm9yKEU2X0tSWj1TNHo4QWxbMHgwXTtFNl9LUlo8T3dyVjZlO0U2X0tSWisrKXt2YXIgeUlSbDEzPWJqVTJaZy5pbmRleE9mKHhOSnJHeFtFNl9LUlpdKTtpZih5SVJsMTM9PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoYkRKeFdUPFM0ejhBbFsweDBdKXtiREp4V1Q9eUlSbDEzfWVsc2V7QlVPVkxsaShiREp4V1QrPXlJUmwxMypTNHo4QWxbMHgxM10sUDZDUDFCZnw9YkRKeFdUPDxfTXhLSnBtLF9NeEtKcG0rPShiREp4V1QmUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShVNmxoNGYucHVzaChQNkNQMUJmJlM0ejhBbFsweDNdKSxQNkNQMUJmPj49UzR6OEFsWzB4Ml0sX014S0pwbS09UzR6OEFsWzB4Ml0pfXdoaWxlKF9NeEtKcG0+UzR6OEFsWzB4YV0pO2JESnhXVD0tUzR6OEFsWzB4MV19fWlmKGJESnhXVD4tUzR6OEFsWzB4MV0pe1U2bGg0Zi5wdXNoKChQNkNQMUJmfGJESnhXVDw8X014S0pwbSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKFU2bGg0Zil9ZnVuY3Rpb24gV3FUZVNLKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09SnRaZGNMKGhxRzdKdWxbelp4SkVSSltTNHo4QWxbMHgwXV1dKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV19cmV0dXJue1tQNkNQMUJmKFM0ejhBbFsweGNlXSldOlA2Q1AxQmYoMHgzMWEpK1A2Q1AxQmYoMHgzMWIpK1dxVGVTSygweDMxYyksW1dxVGVTSygweDMxZCldOng0T0lPaSxbV3FUZVNLKDB4MzFlKV06cllmOHF5T319aWYoeTZXTUQ4KXtjbTZqN21zKHFuSlFwRlYpO2Z1bmN0aW9uIHFzWTZ3Rih6WnhKRVJKKXt2YXIgYmpVMlpnPVwiMUJJcFlIZFpRQW9mdFZ9OmJgN0ZpSlJecXt+XSM1Jj9zTkRPQzw0U25nITlsTHoqeVA4O2FjK1xcXCIzWHhVbSwuTVRASy8wJEd3KHw+dmtydWgyPV9FNmolW2VXKVwiLHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsX014S0pwbSxiREp4V1QsRTZfS1JaO0JVT1ZMbGkoeE5Kckd4PVwiXCIrKHpaeEpFUkp8fFwiXCIpLE93clY2ZT14TkpyR3gubGVuZ3RoLFU2bGg0Zj1bXSxQNkNQMUJmPVM0ejhBbFsweDBdLF9NeEtKcG09UzR6OEFsWzB4MF0sYkRKeFdUPS1TNHo4QWxbMHgxXSk7Zm9yKEU2X0tSWj1TNHo4QWxbMHgwXTtFNl9LUlo8T3dyVjZlO0U2X0tSWisrKXt2YXIgeUlSbDEzPWJqVTJaZy5pbmRleE9mKHhOSnJHeFtFNl9LUlpdKTtpZih5SVJsMTM9PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoYkRKeFdUPFM0ejhBbFsweDBdKXtiREp4V1Q9eUlSbDEzfWVsc2V7QlVPVkxsaShiREp4V1QrPXlJUmwxMypTNHo4QWxbMHgxM10sUDZDUDFCZnw9YkRKeFdUPDxfTXhLSnBtLF9NeEtKcG0rPShiREp4V1QmUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShVNmxoNGYucHVzaChQNkNQMUJmJlM0ejhBbFsweDNdKSxQNkNQMUJmPj49UzR6OEFsWzB4Ml0sX014S0pwbS09UzR6OEFsWzB4Ml0pfXdoaWxlKF9NeEtKcG0+UzR6OEFsWzB4YV0pO2JESnhXVD0tUzR6OEFsWzB4MV19fWlmKGJESnhXVD4tUzR6OEFsWzB4MV0pe1U2bGg0Zi5wdXNoKChQNkNQMUJmfGJESnhXVDw8X014S0pwbSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKFU2bGg0Zil9ZnVuY3Rpb24gcW5KUXBGViguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPXFzWTZ3RihocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfXJldHVybntbUDZDUDFCZihTNHo4QWxbMHhjZV0pXTpQNkNQMUJmKDB4MzFmKStQNkNQMUJmKDB4MzIwKStQNkNQMUJmKDB4MzIxKStxbkpRcEZWKDB4MzIyKSxbcW5KUXBGVigweDMyMyldOnRKWDZoQU8sW3FuSlFwRlYoMHgzMjQpXTpyWWY4cXlPfX19YXN5bmNbZUZPMFhuTSgweDMyNSldKHpaeEpFUkosYmpVMlpnLHhOSnJHeCxPd3JWNmUsVTZsaDRmKXtjbTZqN21zKFA2Q1AxQmYpO2Z1bmN0aW9uIFA2Q1AxQmYoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweDFdXT1cIkFyRGpWbWZnRlpRSXRYaEVOZWFDZEtvUGJCR25Vc0pTMGshaV1MSFlSOnEpTyV8VGNcXFwiW3t+MmxwTV96PHl4NGArNjE9Oy53Iz4vJHYqdTc5MzUmKDg/QCx9V15cIix6WnhKRVJKW1M0ejhBbFsweGVdXT1cIlwiKyh6WnhKRVJKW1M0ejhBbFsweDBdXXx8XCJcIikselp4SkVSSltTNHo4QWxbMHgxMF1dPXpaeEpFUkpbUzR6OEFsWzB4ZV1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDE4XV09W10selp4SkVSSltTNHo4QWxbMHhjZl1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4OF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4YV1dPS1TNHo4QWxbMHgxXSk7Zm9yKHpaeEpFUkpbUzR6OEFsWzB4Ml1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4Ml1dPHpaeEpFUkpbUzR6OEFsWzB4MTBdXTt6WnhKRVJKW1M0ejhBbFsweDJdXSsrKXt6WnhKRVJKWy1TNHo4QWxbMHhkMF1dPXpaeEpFUkpbUzR6OEFsWzB4MV1dLmluZGV4T2Yoelp4SkVSSltTNHo4QWxbMHhlXV1belp4SkVSSltTNHo4QWxbMHgyXV1dKTtpZih6WnhKRVJKWy1TNHo4QWxbMHhkMF1dPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHpaeEpFUkpbUzR6OEFsWzB4YV1dPFM0ejhBbFsweDBdKXt6WnhKRVJKW1M0ejhBbFsweGFdXT16WnhKRVJKWy1TNHo4QWxbMHhkMF1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweGFdXSs9elp4SkVSSlstUzR6OEFsWzB4ZDBdXSpTNHo4QWxbMHgxM10selp4SkVSSltTNHo4QWxbMHhjZl1dfD16WnhKRVJKW1M0ejhBbFsweGFdXTw8elp4SkVSSltTNHo4QWxbMHg4XV0selp4SkVSSltTNHo4QWxbMHg4XV0rPSh6WnhKRVJKW1M0ejhBbFsweGFdXSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MThdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4Y2ZdXSZTNHo4QWxbMHgzXSkselp4SkVSSltTNHo4QWxbMHhjZl1dPj49UzR6OEFsWzB4Ml0selp4SkVSSltTNHo4QWxbMHg4XV0tPVM0ejhBbFsweDJdKX13aGlsZSh6WnhKRVJKW1M0ejhBbFsweDhdXT5TNHo4QWxbMHhhXSk7elp4SkVSSltTNHo4QWxbMHhhXV09LVM0ejhBbFsweDFdfX1pZih6WnhKRVJKW1M0ejhBbFsweGFdXT4tUzR6OEFsWzB4MV0pe3paeEpFUkpbUzR6OEFsWzB4MThdXS5wdXNoKCh6WnhKRVJKW1M0ejhBbFsweGNmXV18elp4SkVSSltTNHo4QWxbMHhhXV08PHpaeEpFUkpbUzR6OEFsWzB4OF1dKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoelp4SkVSSltTNHo4QWxbMHgxOF1dKX1mdW5jdGlvbiBfTXhLSnBtKHpaeEpFUkope2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpdPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpdPVA2Q1AxQmYoaHFHN0p1bFt6WnhKRVJKXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl19Y29uc3QgYkRKeFdUPXtbZUZPMFhuTSgweDMyNildOlM0ejhBbFsweDczXSxbX014S0pwbSgweDMyNyldOlM0ejhBbFsweDczXSxbX014S0pwbSgweDMyOCldOlM0ejhBbFsweDczXX0sRTZfS1JaPWF3YWl0IHRoaXNbX014S0pwbSgweDMyOSldKGJqVTJaZyx6WnhKRVJKLFU2bGg0Zik7aWYoRTZfS1JaKXtyZXR1cm4gYkRKeFdUfWNvbnN0IHlJUmwxMz1bXTtsZXQgZFF4UVpSaz0tUzR6OEFsWzB4MV07QlVPVkxsaSh5SVJsMTNbX014S0pwbShTNHo4QWxbMHhkMl0pXSgoYXN5bmMoKT0+e3RyeXtCVU9WTGxpKGF3YWl0IG16OHhtZE8oe1tTNHo4QWxbMHhiYl1dOnpaeEpFUkosW19NeEtKcG0oUzR6OEFsWzB4ZDVdKV06YmpVMlpnLFtfTXhLSnBtKFM0ejhBbFsweGQ2XSldOm1WMGRBaVRbX014S0pwbShTNHo4QWxbMHhkN10pXShfTXhLSnBtKFM0ejhBbFsweGQxXSksW3hOSnJHeCxfTXhLSnBtKDB4MzJmKV0pfSxVNmxoNGYpLGJESnhXVFtfTXhLSnBtKFM0ejhBbFsweGQxXSldPVM0ejhBbFsweDczXSl9Y2F0Y2goT3dyVjZlKXtiREp4V1RbX014S0pwbShTNHo4QWxbMHhkMV0pXT1TNHo4QWxbMHgyMF19fSkoKSkseUlSbDEzW19NeEtKcG0oUzR6OEFsWzB4ZDJdKV0oKGFzeW5jKCk9Pnt0cnl7QlVPVkxsaShjbTZqN21zKFA2Q1AxQmYpLGNtNmo3bXMoT3dyVjZlKSk7ZnVuY3Rpb24gT3dyVjZlKC4uLk93clY2ZSl7QlVPVkxsaShPd3JWNmVbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLE93clY2ZVtTNHo4QWxbMHgxXV09XCI2WkNyRFhGKEkwYX5MJnU9YCpAMz5uU1B2SiNbO21Wd0hOSzdFZ01zUWI/QmZ6Ons8KW9saWs5ITErJUEyJC40aH1wT3RdVDVVeCxeUnk4V2pxfGNHXFxcIl9kWS9lXCIsT3dyVjZlW1M0ejhBbFsweGVdXT1cIlwiKyhPd3JWNmVbUzR6OEFsWzB4MF1dfHxcIlwiKSxPd3JWNmVbUzR6OEFsWzB4ZDNdXT1Pd3JWNmVbUzR6OEFsWzB4ZV1dLmxlbmd0aCxPd3JWNmVbUzR6OEFsWzB4MzVdXT1bXSxPd3JWNmVbUzR6OEFsWzB4Zl1dPVM0ejhBbFsweDBdLE93clY2ZVtTNHo4QWxbMHgxOV1dPVM0ejhBbFsweDBdLE93clY2ZVtTNHo4QWxbMHgxMl1dPS1TNHo4QWxbMHgxXSk7Zm9yKE93clY2ZVtTNHo4QWxbMHhkNF1dPVM0ejhBbFsweDBdO093clY2ZVtTNHo4QWxbMHhkNF1dPE93clY2ZVtTNHo4QWxbMHhkM11dO093clY2ZVtTNHo4QWxbMHhkNF1dKyspe093clY2ZVtTNHo4QWxbMHgyNF1dPU93clY2ZVtTNHo4QWxbMHgxXV0uaW5kZXhPZihPd3JWNmVbUzR6OEFsWzB4ZV1dW093clY2ZVtTNHo4QWxbMHhkNF1dXSk7aWYoT3dyVjZlW1M0ejhBbFsweDI0XV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoT3dyVjZlW1M0ejhBbFsweDEyXV08UzR6OEFsWzB4MF0pe093clY2ZVtTNHo4QWxbMHgxMl1dPU93clY2ZVtTNHo4QWxbMHgyNF1dfWVsc2V7QlVPVkxsaShPd3JWNmVbUzR6OEFsWzB4MTJdXSs9T3dyVjZlW1M0ejhBbFsweDI0XV0qUzR6OEFsWzB4MTNdLE93clY2ZVtTNHo4QWxbMHhmXV18PU93clY2ZVtTNHo4QWxbMHgxMl1dPDxPd3JWNmVbUzR6OEFsWzB4MTldXSxPd3JWNmVbUzR6OEFsWzB4MTldXSs9KE93clY2ZVtTNHo4QWxbMHgxMl1dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoT3dyVjZlW1M0ejhBbFsweDM1XV0ucHVzaChPd3JWNmVbUzR6OEFsWzB4Zl1dJlM0ejhBbFsweDNdKSxPd3JWNmVbUzR6OEFsWzB4Zl1dPj49UzR6OEFsWzB4Ml0sT3dyVjZlW1M0ejhBbFsweDE5XV0tPVM0ejhBbFsweDJdKX13aGlsZShPd3JWNmVbUzR6OEFsWzB4MTldXT5TNHo4QWxbMHhhXSk7T3dyVjZlW1M0ejhBbFsweDEyXV09LVM0ejhBbFsweDFdfX1pZihPd3JWNmVbUzR6OEFsWzB4MTJdXT4tUzR6OEFsWzB4MV0pe093clY2ZVtTNHo4QWxbMHgzNV1dLnB1c2goKE93clY2ZVtTNHo4QWxbMHhmXV18T3dyVjZlW1M0ejhBbFsweDEyXV08PE93clY2ZVtTNHo4QWxbMHgxOV1dKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoT3dyVjZlW1M0ejhBbFsweDM1XV0pfWZ1bmN0aW9uIFA2Q1AxQmYoLi4uUDZDUDFCZil7UDZDUDFCZltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbUDZDUDFCZltTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW1A2Q1AxQmZbUzR6OEFsWzB4MF1dXT1Pd3JWNmUoaHFHN0p1bFtQNkNQMUJmW1M0ejhBbFsweDBdXV0pfXJldHVybiB2N2VCcV9nW1A2Q1AxQmZbUzR6OEFsWzB4MF1dXX1CVU9WTGxpKGF3YWl0IG16OHhtZE8oe1tTNHo4QWxbMHhiYl1dOnpaeEpFUkosW19NeEtKcG0oUzR6OEFsWzB4ZDVdKV06YmpVMlpnLFtfTXhLSnBtKFM0ejhBbFsweGQ2XSldOm1WMGRBaVRbX014S0pwbShTNHo4QWxbMHhkN10pXShfTXhLSnBtKDB4MzMwKStQNkNQMUJmKDB4MzMxKStQNkNQMUJmKDB4MzMyKSxbeE5Kckd4LFA2Q1AxQmYoMHgzMzMpXSl9LFU2bGg0ZiksYkRKeFdUW1A2Q1AxQmYoMHgzMzQpXT1TNHo4QWxbMHg3M10pfWNhdGNoKEU2X0tSWil7QlVPVkxsaShjbTZqN21zKGRReFFaUmspLGNtNmo3bXMoeUlSbDEzKSk7ZnVuY3Rpb24geUlSbDEzKC4uLk93clY2ZSl7QlVPVkxsaShPd3JWNmVbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLE93clY2ZVtTNHo4QWxbMHhkXV09XCJDVHg3P353WGNsIUcwQjZQMVxcXCJvLjRzOllnPWVTfGZVaCkrT0FMRDlya007bkphSGJaXlJtdjVwQCVWSWBpPCR5Rk57LGQqelEjS0U4ai9bX3FXdXQmMz5dMih9XCIsT3dyVjZlWy1TNHo4QWxbMHhkOF1dPVwiXCIrKE93clY2ZVtTNHo4QWxbMHgwXV18fFwiXCIpLE93clY2ZVtTNHo4QWxbMHgzMl1dPU93clY2ZVstUzR6OEFsWzB4ZDhdXS5sZW5ndGgsT3dyVjZlW1M0ejhBbFsweDE4XV09W10sT3dyVjZlWy1TNHo4QWxbMHhkOV1dPVM0ejhBbFsweDBdLE93clY2ZVtTNHo4QWxbMHgxOV1dPVM0ejhBbFsweDBdLE93clY2ZVtTNHo4QWxbMHgxMl1dPS1TNHo4QWxbMHgxXSk7Zm9yKE93clY2ZVtTNHo4QWxbMHhjY11dPVM0ejhBbFsweDBdO093clY2ZVtTNHo4QWxbMHhjY11dPE93clY2ZVtTNHo4QWxbMHgzMl1dO093clY2ZVtTNHo4QWxbMHhjY11dKyspe093clY2ZVstUzR6OEFsWzB4MTddXT1Pd3JWNmVbUzR6OEFsWzB4ZF1dLmluZGV4T2YoT3dyVjZlWy1TNHo4QWxbMHhkOF1dW093clY2ZVtTNHo4QWxbMHhjY11dXSk7aWYoT3dyVjZlWy1TNHo4QWxbMHgxN11dPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKE93clY2ZVtTNHo4QWxbMHgxMl1dPFM0ejhBbFsweDBdKXtPd3JWNmVbUzR6OEFsWzB4MTJdXT1Pd3JWNmVbLVM0ejhBbFsweDE3XV19ZWxzZXtCVU9WTGxpKE93clY2ZVtTNHo4QWxbMHgxMl1dKz1Pd3JWNmVbLVM0ejhBbFsweDE3XV0qUzR6OEFsWzB4MTNdLE93clY2ZVstUzR6OEFsWzB4ZDldXXw9T3dyVjZlW1M0ejhBbFsweDEyXV08PE93clY2ZVtTNHo4QWxbMHgxOV1dLE93clY2ZVtTNHo4QWxbMHgxOV1dKz0oT3dyVjZlW1M0ejhBbFsweDEyXV0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShPd3JWNmVbUzR6OEFsWzB4MThdXS5wdXNoKE93clY2ZVstUzR6OEFsWzB4ZDldXSZTNHo4QWxbMHgzXSksT3dyVjZlWy1TNHo4QWxbMHhkOV1dPj49UzR6OEFsWzB4Ml0sT3dyVjZlW1M0ejhBbFsweDE5XV0tPVM0ejhBbFsweDJdKX13aGlsZShPd3JWNmVbUzR6OEFsWzB4MTldXT5TNHo4QWxbMHhhXSk7T3dyVjZlW1M0ejhBbFsweDEyXV09LVM0ejhBbFsweDFdfX1pZihPd3JWNmVbUzR6OEFsWzB4MTJdXT4tUzR6OEFsWzB4MV0pe093clY2ZVtTNHo4QWxbMHgxOF1dLnB1c2goKE93clY2ZVstUzR6OEFsWzB4ZDldXXxPd3JWNmVbUzR6OEFsWzB4MTJdXTw8T3dyVjZlW1M0ejhBbFsweDE5XV0pJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQShPd3JWNmVbUzR6OEFsWzB4MThdXSl9ZnVuY3Rpb24gZFF4UVpSayguLi5Pd3JWNmUpe093clY2ZVtTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbT3dyVjZlW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbT3dyVjZlW1M0ejhBbFsweDBdXV09eUlSbDEzKGhxRzdKdWxbT3dyVjZlW1M0ejhBbFsweDBdXV0pfXJldHVybiB2N2VCcV9nW093clY2ZVtTNHo4QWxbMHgwXV1dfWJESnhXVFtkUXhRWlJrKDB4MzM1KStkUXhRWlJrKDB4MzM2KStkUXhRWlJrKDB4MzM3KV09UzR6OEFsWzB4MjBdfX0pKCkpLHlJUmwxM1tfTXhLSnBtKFM0ejhBbFsweGQyXSldKChhc3luYygpPT57dHJ5e2NtNmo3bXMoT3dyVjZlKTtmdW5jdGlvbiB4TkpyR3goeE5Kckd4KXt2YXIgT3dyVjZlPVwiQVpicW9yUTFLQlRDXFxcIkw9Y3A+K0k5fjVWPzZNKmVAXy91RyFENzMobCVYaF08SCZmam5hOjB3RSxSaVMjLlVZc200dmckT3xrSnlQO05kOHh7MkZbV15gKXR6fVwiLFA2Q1AxQmYselp4SkVSSixialUyWmcsVTZsaDRmLF9NeEtKcG0sYkRKeFdULEU2X0tSWjtCVU9WTGxpKFA2Q1AxQmY9XCJcIisoeE5Kckd4fHxcIlwiKSx6WnhKRVJKPVA2Q1AxQmYubGVuZ3RoLGJqVTJaZz1bXSxVNmxoNGY9UzR6OEFsWzB4MF0sX014S0pwbT1TNHo4QWxbMHgwXSxiREp4V1Q9LVM0ejhBbFsweDFdKTtmb3IoRTZfS1JaPVM0ejhBbFsweDBdO0U2X0tSWjx6WnhKRVJKO0U2X0tSWisrKXt2YXIgeUlSbDEzPU93clY2ZS5pbmRleE9mKFA2Q1AxQmZbRTZfS1JaXSk7aWYoeUlSbDEzPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKGJESnhXVDxTNHo4QWxbMHgwXSl7YkRKeFdUPXlJUmwxM31lbHNle0JVT1ZMbGkoYkRKeFdUKz15SVJsMTMqUzR6OEFsWzB4MTNdLFU2bGg0Znw9YkRKeFdUPDxfTXhLSnBtLF9NeEtKcG0rPShiREp4V1QmUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShialUyWmcucHVzaChVNmxoNGYmUzR6OEFsWzB4M10pLFU2bGg0Zj4+PVM0ejhBbFsweDJdLF9NeEtKcG0tPVM0ejhBbFsweDJdKX13aGlsZShfTXhLSnBtPlM0ejhBbFsweGFdKTtiREp4V1Q9LVM0ejhBbFsweDFdfX1pZihiREp4V1Q+LVM0ejhBbFsweDFdKXtialUyWmcucHVzaCgoVTZsaDRmfGJESnhXVDw8X014S0pwbSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKGJqVTJaZyl9ZnVuY3Rpb24gT3dyVjZlKC4uLk93clY2ZSl7T3dyVjZlW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1tPd3JWNmVbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1tPd3JWNmVbUzR6OEFsWzB4MF1dXT14TkpyR3goaHFHN0p1bFtPd3JWNmVbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbT3dyVjZlW1M0ejhBbFsweDBdXV19ZFF4UVpSaz1MYkRVQXYoX014S0pwbSgweDMzOCkpKGF3YWl0IG16OHhtZE8oe1tTNHo4QWxbMHhiYl1dOnpaeEpFUkosW19NeEtKcG0oUzR6OEFsWzB4ZDVdKV06YmpVMlpnLFtfTXhLSnBtKFM0ejhBbFsweGQ2XSldOm1WMGRBaVRbX014S0pwbShTNHo4QWxbMHhkN10pXShPd3JWNmUoMHgzMzkpLFtialUyWmddKX0sVTZsaDRmKSl9Y2F0Y2goUDZDUDFCZil7fX0pKCkpLGF3YWl0IExiRFVBdihfTXhLSnBtKDB4MzNhKSlbX014S0pwbSgweDMzYildKHlJUmwxMykpO2lmKGRReFFaUmshPT0tUzR6OEFsWzB4MV0pe2NvbnN0IHBNT2lKYUM9YXdhaXQgdGhpc1tfTXhLSnBtKDB4MzNjKV0oeE5Kckd4LE93clY2ZSx6WnhKRVJKLFU2bGg0Zik7aWYocE1PaUphQyl7Y202ajdtcyh1RVBQT1cpO2Z1bmN0aW9uIE4xbDdDblEoelp4SkVSSil7dmFyIGJqVTJaZz1cIjQ9eSFGKUdaUUQlcE0+cUNVXFxcIltffCpBXTgueHtYU2A5OkVUfmkjUjx1ZmRsbXJ2UG8wNzZiYzJnQksvTmh3SXpuWXRhQFdWfTM1a0plMUwoJF4sOz8mak9IK3NcIix4TkpyR3gsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLF9NeEtKcG0sYkRKeFdULEU2X0tSWjtCVU9WTGxpKHhOSnJHeD1cIlwiKyh6WnhKRVJKfHxcIlwiKSxPd3JWNmU9eE5Kckd4Lmxlbmd0aCxVNmxoNGY9W10sUDZDUDFCZj1TNHo4QWxbMHgwXSxfTXhLSnBtPVM0ejhBbFsweDBdLGJESnhXVD0tUzR6OEFsWzB4MV0pO2ZvcihFNl9LUlo9UzR6OEFsWzB4MF07RTZfS1JaPE93clY2ZTtFNl9LUlorKyl7dmFyIHlJUmwxMz1ialUyWmcuaW5kZXhPZih4TkpyR3hbRTZfS1JaXSk7aWYoeUlSbDEzPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKGJESnhXVDxTNHo4QWxbMHgwXSl7YkRKeFdUPXlJUmwxM31lbHNle0JVT1ZMbGkoYkRKeFdUKz15SVJsMTMqUzR6OEFsWzB4MTNdLFA2Q1AxQmZ8PWJESnhXVDw8X014S0pwbSxfTXhLSnBtKz0oYkRKeFdUJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoVTZsaDRmLnB1c2goUDZDUDFCZiZTNHo4QWxbMHgzXSksUDZDUDFCZj4+PVM0ejhBbFsweDJdLF9NeEtKcG0tPVM0ejhBbFsweDJdKX13aGlsZShfTXhLSnBtPlM0ejhBbFsweGFdKTtiREp4V1Q9LVM0ejhBbFsweDFdfX1pZihiREp4V1Q+LVM0ejhBbFsweDFdKXtVNmxoNGYucHVzaCgoUDZDUDFCZnxiREp4V1Q8PF9NeEtKcG0pJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQShVNmxoNGYpfWZ1bmN0aW9uIHVFUFBPVyguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPU4xbDdDblEoaHFHN0p1bFt6WnhKRVJKW1M0ejhBbFsweDBdXV0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXX1CVU9WTGxpKGJESnhXVFtfTXhLSnBtKDB4MzNkKV09cE1PaUphQyxwTU9pSmFDW3VFUFBPVygweDMzZSldPWRReFFaUmspfX1yZXR1cm4gYkRKeFdUfWFzeW5jW2VGTzBYbk0oMHgzM2YpXSh6WnhKRVJKLGJqVTJaZyx4TkpyR3gsT3dyVjZlLFU2bGg0Zil7Y202ajdtcyhiREp4V1QpO2Z1bmN0aW9uIFA2Q1AxQmYoelp4SkVSSil7dmFyIGJqVTJaZz1cImxBQkVJWGUpenB5TT1RPHtWTGI2TmZveG1DSFxcXCJGfFB0YF80V2QxJiREaWhZcjdedywuOk87OTBUZ3ZqWkdLbig4Y1Mza3NbSmE/dT5VK1J9Kl0hMjV+I0AvcSVcIix4TkpyR3gsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLGJESnhXVCxFNl9LUlosbVYwZEFpVDtCVU9WTGxpKHhOSnJHeD1cIlwiKyh6WnhKRVJKfHxcIlwiKSxPd3JWNmU9eE5Kckd4Lmxlbmd0aCxVNmxoNGY9W10sUDZDUDFCZj1TNHo4QWxbMHgwXSxiREp4V1Q9UzR6OEFsWzB4MF0sRTZfS1JaPS1TNHo4QWxbMHgxXSk7Zm9yKG1WMGRBaVQ9UzR6OEFsWzB4MF07bVYwZEFpVDxPd3JWNmU7bVYwZEFpVCsrKXt2YXIgeUlSbDEzPWJqVTJaZy5pbmRleE9mKHhOSnJHeFttVjBkQWlUXSk7aWYoeUlSbDEzPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKEU2X0tSWjxTNHo4QWxbMHgwXSl7RTZfS1JaPXlJUmwxM31lbHNle0JVT1ZMbGkoRTZfS1JaKz15SVJsMTMqUzR6OEFsWzB4MTNdLFA2Q1AxQmZ8PUU2X0tSWjw8YkRKeFdULGJESnhXVCs9KEU2X0tSWiZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKFU2bGg0Zi5wdXNoKFA2Q1AxQmYmUzR6OEFsWzB4M10pLFA2Q1AxQmY+Pj1TNHo4QWxbMHgyXSxiREp4V1QtPVM0ejhBbFsweDJdKX13aGlsZShiREp4V1Q+UzR6OEFsWzB4YV0pO0U2X0tSWj0tUzR6OEFsWzB4MV19fWlmKEU2X0tSWj4tUzR6OEFsWzB4MV0pe1U2bGg0Zi5wdXNoKChQNkNQMUJmfEU2X0tSWjw8YkRKeFdUKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoVTZsaDRmKX1mdW5jdGlvbiBiREp4V1QoLi4uelp4SkVSSil7elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT1QNkNQMUJmKGhxRzdKdWxbelp4SkVSSltTNHo4QWxbMHgwXV1dKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV19Y29uc3QgRTZfS1JaPWJqVTJaZ1tiREp4V1QoMHgzNDApK2JESnhXVCgweDM0MSldKCksbVYwZEFpVD1MYkRVQXYoYkRKeFdUKDB4MzQyKStTNHo4QWxbMHhhOV0pW2JESnhXVCgweDM0MyldKExiRFVBdihiREp4V1QoMHgzNDQpKVtiREp4V1QoMHgzNDUpXSgpL1M0ejhBbFsweGRhXSkrUzR6OEFsWzB4ZGJdLHlJUmwxMz17W2JESnhXVCgweDM0NildOnhOSnJHeCxbYkRKeFdUKFM0ejhBbFsweGRkXSkrUzR6OEFsWzB4YmNdXTpPd3JWNmUsW2JESnhXVChTNHo4QWxbMHhkY10pXTp6WnhKRVJKW2JESnhXVChTNHo4QWxbMHhkY10pXSxbYkRKeFdUKDB4MzQ5KV06bVYwZEFpVCxbYkRKeFdUKDB4MzRhKV06UzR6OEFsWzB4NzNdfSxkUXhRWlJrPXtbYkRKeFdUKDB4MzRiKV06eE5Kckd4LFtiREp4V1QoUzR6OEFsWzB4ZGRdKStTNHo4QWxbMHhiY11dOk93clY2ZSxbYkRKeFdUKDB4MzRjKV06YkRKeFdUKDB4MzRkKSxbYkRKeFdUKFM0ejhBbFsweGRjXSldOnpaeEpFUkpbYkRKeFdUKFM0ejhBbFsweGRjXSldLFtiREp4V1QoMHgzNGUpXTptVjBkQWlUfTtsZXQgcE1PaUphQztpZih6WnhKRVJKW2JESnhXVChTNHo4QWxbMHhkZV0pXT09PWJESnhXVCgweDM1MCkpe3BNT2lKYUM9ZFF4UVpSa31pZih6WnhKRVJKW2JESnhXVChTNHo4QWxbMHhkZV0pXT09PWJESnhXVCgweDM1MSkpe3BNT2lKYUM9ZFF4UVpSa31pZih6WnhKRVJKW2JESnhXVChTNHo4QWxbMHhkZV0pXT09PWJESnhXVCgweDM1Mikpe3BNT2lKYUM9eUlSbDEzfWlmKHpaeEpFUkpbYkRKeFdUKFM0ejhBbFsweGRlXSldPT09YkRKeFdUKDB4MzUzKStiREp4V1QoMHgzNTQpK2JESnhXVCgweDM1NSkpe3BNT2lKYUM9eUlSbDEzfXRyeXtjbTZqN21zKHVFUFBPVyk7ZnVuY3Rpb24gTjFsN0NuUSh6WnhKRVJKKXt2YXIgYmpVMlpnPVwidUtEclNUT3NScWJAMyoxWXZoOHdHMHxfLj9VTGpRQXA3RWZpeDUkbkMrXFxcIkhCOTJQSiFjWmU2JX10XXtXW286RiMveSZJZ2R6WGs8bF4sKD5NNDspTm1WPX5hYFwiLHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsYkRKeFdULEU2X0tSWixtVjBkQWlUO0JVT1ZMbGkoeE5Kckd4PVwiXCIrKHpaeEpFUkp8fFwiXCIpLE93clY2ZT14TkpyR3gubGVuZ3RoLFU2bGg0Zj1bXSxQNkNQMUJmPVM0ejhBbFsweDBdLGJESnhXVD1TNHo4QWxbMHgwXSxFNl9LUlo9LVM0ejhBbFsweDFdKTtmb3IobVYwZEFpVD1TNHo4QWxbMHgwXTttVjBkQWlUPE93clY2ZTttVjBkQWlUKyspe3ZhciB5SVJsMTM9YmpVMlpnLmluZGV4T2YoeE5Kckd4W21WMGRBaVRdKTtpZih5SVJsMTM9PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoRTZfS1JaPFM0ejhBbFsweDBdKXtFNl9LUlo9eUlSbDEzfWVsc2V7QlVPVkxsaShFNl9LUlorPXlJUmwxMypTNHo4QWxbMHgxM10sUDZDUDFCZnw9RTZfS1JaPDxiREp4V1QsYkRKeFdUKz0oRTZfS1JaJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoVTZsaDRmLnB1c2goUDZDUDFCZiZTNHo4QWxbMHgzXSksUDZDUDFCZj4+PVM0ejhBbFsweDJdLGJESnhXVC09UzR6OEFsWzB4Ml0pfXdoaWxlKGJESnhXVD5TNHo4QWxbMHhhXSk7RTZfS1JaPS1TNHo4QWxbMHgxXX19aWYoRTZfS1JaPi1TNHo4QWxbMHgxXSl7VTZsaDRmLnB1c2goKFA2Q1AxQmZ8RTZfS1JaPDxiREp4V1QpJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQShVNmxoNGYpfWZ1bmN0aW9uIHVFUFBPVyguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPU4xbDdDblEoaHFHN0p1bFt6WnhKRVJKW1M0ejhBbFsweDBdXV0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXX10aGlzW3VFUFBPVyhTNHo4QWxbMHhlNF0pXVt1RVBQT1coUzR6OEFsWzB4ZTVdKV0odUVQUE9XKDB4MzU4KSx7W3VFUFBPVyhTNHo4QWxbMHhlNl0pXTp1RVBQT1coUzR6OEFsWzB4ZTddKSxbdUVQUE9XKFM0ejhBbFsweGRmXSldOlU2bGg0Zlt1RVBQT1coUzR6OEFsWzB4ZGZdKV0sW3VFUFBPVyhTNHo4QWxbMHhlMF0pXTpVNmxoNGZbdUVQUE9XKFM0ejhBbFsweGUwXSldLFt1RVBQT1coUzR6OEFsWzB4ZTFdKV06VTZsaDRmW3VFUFBPVyhTNHo4QWxbMHhlMV0pXSxbdUVQUE9XKFM0ejhBbFsweGUyXSldOlU2bGg0Zlt1RVBQT1coUzR6OEFsWzB4ZTJdKV0sW3VFUFBPVyhTNHo4QWxbMHhlOF0pXTpMYkRVQXYodUVQUE9XKDB4MzYwKSlbdUVQUE9XKFM0ejhBbFsweGU5XSkrUzR6OEFsWzB4ZWFdXVt1RVBQT1coUzR6OEFsWzB4ZWJdKV0sW3VFUFBPVyhTNHo4QWxbMHhlZF0pXTp4TkpyR3gsW3VFUFBPVyhTNHo4QWxbMHhlZV0pXTpfTXhLSnBtLFt1RVBQT1coMHgzNjUpK1M0ejhBbFsweGZdXTp1RVBQT1coMHgzNjYpfSk7Y29uc3Qga0FpQkw4PWF3YWl0IEU2X0tSWlt1RVBQT1coMHgzNjcpK3VFUFBPVygweDM2OCkrUzR6OEFsWzB4ZTNdXSh6WnhKRVJKW3VFUFBPVygweDM2OSldLHpaeEpFUkpbdUVQUE9XKDB4MzZhKV0scE1PaUphQyk7dGhpc1t1RVBQT1coUzR6OEFsWzB4ZTRdKV1bdUVQUE9XKFM0ejhBbFsweGU1XSldKHVFUFBPVygweDM2YikrUzR6OEFsWzB4MzhdLHtbdUVQUE9XKFM0ejhBbFsweGU2XSldOnVFUFBPVyhTNHo4QWxbMHhlN10pLFt1RVBQT1coUzR6OEFsWzB4ZGZdKV06VTZsaDRmW3VFUFBPVyhTNHo4QWxbMHhkZl0pXSxbdUVQUE9XKDB4MzZjKV06e1t1RVBQT1coMHgzNmQpXTprQWlCTDgsW3VFUFBPVygweDM2ZSldOnBNT2lKYUMsW3VFUFBPVygweDM2ZildOnpaeEpFUkp9LFt1RVBQT1coMHgzNzApXTpPd3JWNmUsW3VFUFBPVyhTNHo4QWxbMHhlMF0pXTpVNmxoNGZbdUVQUE9XKFM0ejhBbFsweGUwXSldLFt1RVBQT1coUzR6OEFsWzB4ZTFdKV06VTZsaDRmW3VFUFBPVyhTNHo4QWxbMHhlMV0pXSxbdUVQUE9XKFM0ejhBbFsweGUyXSldOlU2bGg0Zlt1RVBQT1coUzR6OEFsWzB4ZTJdKV0sW3VFUFBPVyhTNHo4QWxbMHhlOF0pXTpMYkRVQXYodUVQUE9XKDB4MzcxKStTNHo4QWxbMHg3Y10pW3VFUFBPVyhTNHo4QWxbMHhlOV0pK1M0ejhBbFsweGVhXV1bdUVQUE9XKFM0ejhBbFsweGViXSldLFt1RVBQT1coUzR6OEFsWzB4ZWNdKV06VTZsaDRmW3VFUFBPVyhTNHo4QWxbMHhlY10pXSxbdUVQUE9XKFM0ejhBbFsweGVkXSldOnhOSnJHeCxbdUVQUE9XKFM0ejhBbFsweGVlXSldOl9NeEtKcG19KX1jYXRjaChOTUdGZ2E1KXtmdW5jdGlvbiByWWY4cXlPKHpaeEpFUkope3ZhciBialUyWmc9XCI0MTU4QDAoeTNcXFwiJD5jZWlMWUNiKUdeUXVEVTxxdHZTZkp4Nl9qP2tNO35UQlJWL2B8V3sqRTosUF16bj0rZE5tRkkmSG8yJXNPN1h9YXJwOVsuI2hBIWx3S2daXCIseE5Kckd4LE93clY2ZSxVNmxoNGYsUDZDUDFCZixiREp4V1QsRTZfS1JaLG1WMGRBaVQ7QlVPVkxsaSh4TkpyR3g9XCJcIisoelp4SkVSSnx8XCJcIiksT3dyVjZlPXhOSnJHeC5sZW5ndGgsVTZsaDRmPVtdLFA2Q1AxQmY9UzR6OEFsWzB4MF0sYkRKeFdUPVM0ejhBbFsweDBdLEU2X0tSWj0tUzR6OEFsWzB4MV0pO2ZvcihtVjBkQWlUPVM0ejhBbFsweDBdO21WMGRBaVQ8T3dyVjZlO21WMGRBaVQrKyl7dmFyIHlJUmwxMz1ialUyWmcuaW5kZXhPZih4TkpyR3hbbVYwZEFpVF0pO2lmKHlJUmwxMz09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZihFNl9LUlo8UzR6OEFsWzB4MF0pe0U2X0tSWj15SVJsMTN9ZWxzZXtCVU9WTGxpKEU2X0tSWis9eUlSbDEzKlM0ejhBbFsweDEzXSxQNkNQMUJmfD1FNl9LUlo8PGJESnhXVCxiREp4V1QrPShFNl9LUlomUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShVNmxoNGYucHVzaChQNkNQMUJmJlM0ejhBbFsweDNdKSxQNkNQMUJmPj49UzR6OEFsWzB4Ml0sYkRKeFdULT1TNHo4QWxbMHgyXSl9d2hpbGUoYkRKeFdUPlM0ejhBbFsweGFdKTtFNl9LUlo9LVM0ejhBbFsweDFdfX1pZihFNl9LUlo+LVM0ejhBbFsweDFdKXtVNmxoNGYucHVzaCgoUDZDUDFCZnxFNl9LUlo8PGJESnhXVCkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKFU2bGg0Zil9ZnVuY3Rpb24geDRPSU9pKHpaeEpFUkope2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpdPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpdPXJZZjhxeU8oaHFHN0p1bFt6WnhKRVJKXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl19QlVPVkxsaSh0aGlzW2JESnhXVCgweDM3MyldW2JESnhXVCgweDM3NCldKGJESnhXVCgweDM3NSkse1tiREp4V1QoMHgzNzYpXTpiREp4V1QoMHgzNzcpLFtiREp4V1QoMHgzNzgpXTpVNmxoNGZbeDRPSU9pKDB4Mzc5KV0sW3g0T0lPaShTNHo4QWxbMHhlZl0pXTpVNmxoNGZbeDRPSU9pKFM0ejhBbFsweGVmXSldLFt4NE9JT2koUzR6OEFsWzB4ZjBdKV06VTZsaDRmW3g0T0lPaShTNHo4QWxbMHhmMF0pXSxbeDRPSU9pKFM0ejhBbFsweGYxXSldOlU2bGg0Zlt4NE9JT2koUzR6OEFsWzB4ZjFdKV0sW3g0T0lPaSgweDM3ZCldOkxiRFVBdih4NE9JT2koMHgzN2UpKVt4NE9JT2koMHgzN2YpXVt4NE9JT2koMHgzODApXSxbeDRPSU9pKDB4MzgxKV06eE5Kckd4LFt4NE9JT2koMHgzODIpXTpfTXhLSnBtLFt4NE9JT2koMHgzODMpXTp4NE9JT2koMHgzODQpfSksYXdhaXQgdGhpc1t4NE9JT2koMHgzODUpXSh6WnhKRVJKLGJqVTJaZyx4TkpyR3gsT3dyVjZlLFU2bGg0ZikpfX1hc3luY1tlRk8wWG5NKDB4Mzg2KV0oelp4SkVSSixialUyWmcseE5Kckd4LE93clY2ZSxVNmxoNGYpe2NtNmo3bXMoYkRKeFdUKTtmdW5jdGlvbiBQNkNQMUJmKHpaeEpFUkope3ZhciBialUyWmc9XCJFWXVDVmh2PHdnU354T0l8NXE9QlJEbiFUOUwmNzorWyVXbWNObHAqeTt7ZCNIM0o+QVxcXCJYYV4xdFp6XXJvaTJAazRVZVFQc2B9TTYvMCRGKSg/X0dLZmo4LC5iXCIseE5Kckd4LE93clY2ZSxVNmxoNGYsUDZDUDFCZixiREp4V1QseUlSbDEzLGRReFFaUms7QlVPVkxsaSh4TkpyR3g9XCJcIisoelp4SkVSSnx8XCJcIiksT3dyVjZlPXhOSnJHeC5sZW5ndGgsVTZsaDRmPVtdLFA2Q1AxQmY9UzR6OEFsWzB4MF0sYkRKeFdUPVM0ejhBbFsweDBdLHlJUmwxMz0tUzR6OEFsWzB4MV0pO2ZvcihkUXhRWlJrPVM0ejhBbFsweDBdO2RReFFaUms8T3dyVjZlO2RReFFaUmsrKyl7dmFyIHBNT2lKYUM9YmpVMlpnLmluZGV4T2YoeE5Kckd4W2RReFFaUmtdKTtpZihwTU9pSmFDPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHlJUmwxMzxTNHo4QWxbMHgwXSl7eUlSbDEzPXBNT2lKYUN9ZWxzZXtCVU9WTGxpKHlJUmwxMys9cE1PaUphQypTNHo4QWxbMHgxM10sUDZDUDFCZnw9eUlSbDEzPDxiREp4V1QsYkRKeFdUKz0oeUlSbDEzJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoVTZsaDRmLnB1c2goUDZDUDFCZiZTNHo4QWxbMHgzXSksUDZDUDFCZj4+PVM0ejhBbFsweDJdLGJESnhXVC09UzR6OEFsWzB4Ml0pfXdoaWxlKGJESnhXVD5TNHo4QWxbMHhhXSk7eUlSbDEzPS1TNHo4QWxbMHgxXX19aWYoeUlSbDEzPi1TNHo4QWxbMHgxXSl7VTZsaDRmLnB1c2goKFA2Q1AxQmZ8eUlSbDEzPDxiREp4V1QpJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQShVNmxoNGYpfWZ1bmN0aW9uIGJESnhXVCguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPVA2Q1AxQmYoaHFHN0p1bFt6WnhKRVJKW1M0ejhBbFsweDBdXV0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXX1sZXQgeUlSbDEzPWVGTzBYbk0oMHgzODcpO2lmKFU2bGg0ZltlRk8wWG5NKDB4Mzg4KStlRk8wWG5NKDB4Mzg5KStiREp4V1QoUzR6OEFsWzB4ZjJdKV0pe3lJUmwxMz1iREp4V1QoMHgzOGIpK2JESnhXVCgweDM4YykrYkRKeFdUKFM0ejhBbFsweGYyXSl9ZWxzZXtpZihVNmxoNGZbYkRKeFdUKDB4MzhkKV0pe2NtNmo3bXMocE1PaUphQyk7ZnVuY3Rpb24gZFF4UVpSayh6WnhKRVJKKXt2YXIgYmpVMlpnPVwiS3BmZyhIJlddX2t5O1gxMmx7ZS9Vd0NyPVkzfXRuQlp2NnpQSm9HOHFpTE1FSTAjKVY+JU9TPEFoc3hqIWQuWz9iUnVEUStgfm1OJDVUN0ZAYTReKlxcXCJ8OSw6Y1wiLHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsYkRKeFdULHlJUmwxMyxkUXhRWlJrO0JVT1ZMbGkoeE5Kckd4PVwiXCIrKHpaeEpFUkp8fFwiXCIpLE93clY2ZT14TkpyR3gubGVuZ3RoLFU2bGg0Zj1bXSxQNkNQMUJmPVM0ejhBbFsweDBdLGJESnhXVD1TNHo4QWxbMHgwXSx5SVJsMTM9LVM0ejhBbFsweDFdKTtmb3IoZFF4UVpSaz1TNHo4QWxbMHgwXTtkUXhRWlJrPE93clY2ZTtkUXhRWlJrKyspe3ZhciBwTU9pSmFDPWJqVTJaZy5pbmRleE9mKHhOSnJHeFtkUXhRWlJrXSk7aWYocE1PaUphQz09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih5SVJsMTM8UzR6OEFsWzB4MF0pe3lJUmwxMz1wTU9pSmFDfWVsc2V7QlVPVkxsaSh5SVJsMTMrPXBNT2lKYUMqUzR6OEFsWzB4MTNdLFA2Q1AxQmZ8PXlJUmwxMzw8YkRKeFdULGJESnhXVCs9KHlJUmwxMyZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKFU2bGg0Zi5wdXNoKFA2Q1AxQmYmUzR6OEFsWzB4M10pLFA2Q1AxQmY+Pj1TNHo4QWxbMHgyXSxiREp4V1QtPVM0ejhBbFsweDJdKX13aGlsZShiREp4V1Q+UzR6OEFsWzB4YV0pO3lJUmwxMz0tUzR6OEFsWzB4MV19fWlmKHlJUmwxMz4tUzR6OEFsWzB4MV0pe1U2bGg0Zi5wdXNoKChQNkNQMUJmfHlJUmwxMzw8YkRKeFdUKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoVTZsaDRmKX1mdW5jdGlvbiBwTU9pSmFDKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09ZFF4UVpSayhocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfXlJUmwxMz1wTU9pSmFDKDB4MzhlKStwTU9pSmFDKDB4MzhmKStwTU9pSmFDKDB4MzkwKX1lbHNle2Z1bmN0aW9uIE4xbDdDblEoelp4SkVSSil7dmFyIGJqVTJaZz1cIjZyRklQU056Vmo9ZFp1aDlFTTRxK1EsYUE6aSMzISp2YEc7XFxcIjxZQkB3PkN9Zl0xVDhsbVtiZ2V4UkRzcCReKUhLJUx0fjU3ezJ5ay5uMEpVKFgvJmNvT3w/X1dcIix4TkpyR3gsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLGJESnhXVCx5SVJsMTMsZFF4UVpSaztCVU9WTGxpKHhOSnJHeD1cIlwiKyh6WnhKRVJKfHxcIlwiKSxPd3JWNmU9eE5Kckd4Lmxlbmd0aCxVNmxoNGY9W10sUDZDUDFCZj1TNHo4QWxbMHgwXSxiREp4V1Q9UzR6OEFsWzB4MF0seUlSbDEzPS1TNHo4QWxbMHgxXSk7Zm9yKGRReFFaUms9UzR6OEFsWzB4MF07ZFF4UVpSazxPd3JWNmU7ZFF4UVpSaysrKXt2YXIgcE1PaUphQz1ialUyWmcuaW5kZXhPZih4TkpyR3hbZFF4UVpSa10pO2lmKHBNT2lKYUM9PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoeUlSbDEzPFM0ejhBbFsweDBdKXt5SVJsMTM9cE1PaUphQ31lbHNle0JVT1ZMbGkoeUlSbDEzKz1wTU9pSmFDKlM0ejhBbFsweDEzXSxQNkNQMUJmfD15SVJsMTM8PGJESnhXVCxiREp4V1QrPSh5SVJsMTMmUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShVNmxoNGYucHVzaChQNkNQMUJmJlM0ejhBbFsweDNdKSxQNkNQMUJmPj49UzR6OEFsWzB4Ml0sYkRKeFdULT1TNHo4QWxbMHgyXSl9d2hpbGUoYkRKeFdUPlM0ejhBbFsweGFdKTt5SVJsMTM9LVM0ejhBbFsweDFdfX1pZih5SVJsMTM+LVM0ejhBbFsweDFdKXtVNmxoNGYucHVzaCgoUDZDUDFCZnx5SVJsMTM8PGJESnhXVCkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKFU2bGg0Zil9ZnVuY3Rpb24gdUVQUE9XKHpaeEpFUkope2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpdPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpdPU4xbDdDblEoaHFHN0p1bFt6WnhKRVJKXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl19aWYoVTZsaDRmW3VFUFBPVygweDM5MSldKXt5SVJsMTM9dUVQUE9XKDB4MzkyKStTNHo4QWxbMHhmXX19fXRyeXtjbTZqN21zKGtBaUJMOCk7ZnVuY3Rpb24ga0FpQkw4KC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0selp4SkVSSltTNHo4QWxbMHgxXV09XCIwfjhbei8mX3kqaDtMLENZKVRlT3A/PWFSZmpYRUglZFBdRmdsQT5ydCQoLnN8OVE1WnhjQEJXSiN9TW8xOndcXFwiN3ZidW00R0RgXktWPHE2eyszMlNVIWtpSU5uXCIselp4SkVSSltTNHo4QWxbMHgzMV1dPVwiXCIrKHpaeEpFUkpbUzR6OEFsWzB4MF1dfHxcIlwiKSx6WnhKRVJKW1M0ejhBbFsweDEwXV09elp4SkVSSltTNHo4QWxbMHgzMV1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDE4XV09W10selp4SkVSSltTNHo4QWxbMHhmXV09UzR6OEFsWzB4MF0selp4SkVSSlstUzR6OEFsWzB4ZjNdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweDEyXV09LVM0ejhBbFsweDFdKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgyXV09UzR6OEFsWzB4MF07elp4SkVSSltTNHo4QWxbMHgyXV08elp4SkVSSltTNHo4QWxbMHgxMF1dO3paeEpFUkpbUzR6OEFsWzB4Ml1dKyspe3paeEpFUkpbUzR6OEFsWzB4MTFdXT16WnhKRVJKW1M0ejhBbFsweDFdXS5pbmRleE9mKHpaeEpFUkpbUzR6OEFsWzB4MzFdXVt6WnhKRVJKW1M0ejhBbFsweDJdXV0pO2lmKHpaeEpFUkpbUzR6OEFsWzB4MTFdXT09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih6WnhKRVJKW1M0ejhBbFsweDEyXV08UzR6OEFsWzB4MF0pe3paeEpFUkpbUzR6OEFsWzB4MTJdXT16WnhKRVJKW1M0ejhBbFsweDExXV19ZWxzZXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MTJdXSs9elp4SkVSSltTNHo4QWxbMHgxMV1dKlM0ejhBbFsweDEzXSx6WnhKRVJKW1M0ejhBbFsweGZdXXw9elp4SkVSSltTNHo4QWxbMHgxMl1dPDx6WnhKRVJKWy1TNHo4QWxbMHhmM11dLHpaeEpFUkpbLVM0ejhBbFsweGYzXV0rPSh6WnhKRVJKW1M0ejhBbFsweDEyXV0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDE4XV0ucHVzaCh6WnhKRVJKW1M0ejhBbFsweGZdXSZTNHo4QWxbMHgzXSkselp4SkVSSltTNHo4QWxbMHhmXV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKWy1TNHo4QWxbMHhmM11dLT1TNHo4QWxbMHgyXSl9d2hpbGUoelp4SkVSSlstUzR6OEFsWzB4ZjNdXT5TNHo4QWxbMHhhXSk7elp4SkVSSltTNHo4QWxbMHgxMl1dPS1TNHo4QWxbMHgxXX19aWYoelp4SkVSSltTNHo4QWxbMHgxMl1dPi1TNHo4QWxbMHgxXSl7elp4SkVSSltTNHo4QWxbMHgxOF1dLnB1c2goKHpaeEpFUkpbUzR6OEFsWzB4Zl1dfHpaeEpFUkpbUzR6OEFsWzB4MTJdXTw8elp4SkVSSlstUzR6OEFsWzB4ZjNdXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKHpaeEpFUkpbUzR6OEFsWzB4MThdXSl9ZnVuY3Rpb24gTk1HRmdhNSh6WnhKRVJKKXtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXT1rQWlCTDgoaHFHN0p1bFt6WnhKRVJKXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl19dGhpc1tiREp4V1QoMHgzOTMpXVtiREp4V1QoMHgzOTQpXShiREp4V1QoMHgzOTUpLHtbYkRKeFdUKDB4Mzk2KV06eUlSbDEzLFtiREp4V1QoMHgzOTcpXTp6WnhKRVJKW05NR0ZnYTUoUzR6OEFsWzB4ZmJdKV0sW05NR0ZnYTUoUzR6OEFsWzB4ZjRdKV06elp4SkVSSltOTUdGZ2E1KFM0ejhBbFsweGY0XSldLFtOTUdGZ2E1KFM0ejhBbFsweGY1XSldOnpaeEpFUkpbTk1HRmdhNShTNHo4QWxbMHhmNV0pXSxbTk1HRmdhNShTNHo4QWxbMHhmNl0pXTp6WnhKRVJKW05NR0ZnYTUoUzR6OEFsWzB4ZjZdKV0sW05NR0ZnYTUoUzR6OEFsWzB4ZmNdKV06TGJEVUF2KE5NR0ZnYTUoUzR6OEFsWzB4ZmRdKSlbTk1HRmdhNSgweDM5ZSldW05NR0ZnYTUoUzR6OEFsWzB4ZmVdKV0sW05NR0ZnYTUoUzR6OEFsWzB4MTAwXSldOk93clY2ZSxbTk1HRmdhNShTNHo4QWxbMHgxMDFdKV06X014S0pwbSxbTk1HRmdhNSgweDNhMikrUzR6OEFsWzB4Zl1dOk5NR0ZnYTUoMHgzYTMpfSk7Y29uc3QgcllmOHF5Tz1hd2FpdCB0aGlzW05NR0ZnYTUoUzR6OEFsWzB4ZjldKV1bTk1HRmdhNSgweDNhNSldW05NR0ZnYTUoMHgzYTYpXSh7W05NR0ZnYTUoUzR6OEFsWzB4ZmFdKV06Tk1HRmdhNSgweDNhOCkrTk1HRmdhNSgweDNhOSkrTk1HRmdhNSgweDNhYSkrUzR6OEFsWzB4NWNdLFtOTUdGZ2E1KDB4M2FiKV06W3tbUzR6OEFsWzB4YmJdXTp6WnhKRVJKW05NR0ZnYTUoMHgzYWMpK1M0ejhBbFsweDM4XV0sW05NR0ZnYTUoMHgzYWQpXTptVjBkQWlUW05NR0ZnYTUoMHgzYWUpK05NR0ZnYTUoMHgzYWYpK05NR0ZnYTUoMHgzYjApXSh5SVJsMTMsW3lJUmwxMz09PU5NR0ZnYTUoUzR6OEFsWzB4ZjddKT94TkpyR3g6YmpVMlpnLHlJUmwxMz09PU5NR0ZnYTUoUzR6OEFsWzB4ZjddKT96WnhKRVJKW05NR0ZnYTUoUzR6OEFsWzB4ZmZdKV06Tk1HRmdhNSgweDNiMykrTk1HRmdhNShTNHo4QWxbMHhmOF0pK05NR0ZnYTUoUzR6OEFsWzB4ZjhdKStOTUdGZ2E1KFM0ejhBbFsweGY4XSkrTk1HRmdhNShTNHo4QWxbMHhmOF0pK05NR0ZnYTUoUzR6OEFsWzB4ZjhdKStOTUdGZ2E1KFM0ejhBbFsweGY4XSkrTk1HRmdhNSgweDNiNSldKSxbTk1HRmdhNSgweDNiNildOk93clY2ZX1dfSk7dGhpc1tOTUdGZ2E1KFM0ejhBbFsweGY5XSldW05NR0ZnYTUoMHgzYjcpXShOTUdGZ2E1KDB4M2I4KSx7W05NR0ZnYTUoUzR6OEFsWzB4ZmFdKV06eUlSbDEzLFtOTUdGZ2E1KFM0ejhBbFsweGZiXSldOnpaeEpFUkpbTk1HRmdhNShTNHo4QWxbMHhmYl0pXSxbTk1HRmdhNSgweDNiOSldOnJZZjhxeU8sW05NR0ZnYTUoMHgzYmEpK05NR0ZnYTUoMHgzYmIpXTpialUyWmcsW05NR0ZnYTUoUzR6OEFsWzB4ZjRdKV06elp4SkVSSltOTUdGZ2E1KFM0ejhBbFsweGY0XSldLFtOTUdGZ2E1KFM0ejhBbFsweGY1XSldOnpaeEpFUkpbTk1HRmdhNShTNHo4QWxbMHhmNV0pXSxbTk1HRmdhNShTNHo4QWxbMHhmNl0pXTp6WnhKRVJKW05NR0ZnYTUoUzR6OEFsWzB4ZjZdKV0sW05NR0ZnYTUoUzR6OEFsWzB4ZmNdKV06TGJEVUF2KE5NR0ZnYTUoUzR6OEFsWzB4ZmRdKSlbTk1HRmdhNSgweDNiYykrUzR6OEFsWzB4ZWFdXVtOTUdGZ2E1KFM0ejhBbFsweGZlXSldLFtOTUdGZ2E1KFM0ejhBbFsweGZmXSldOnpaeEpFUkpbTk1HRmdhNShTNHo4QWxbMHhmZl0pXSxbTk1HRmdhNShTNHo4QWxbMHgxMDBdKV06T3dyVjZlLFtOTUdGZ2E1KFM0ejhBbFsweDEwMV0pXTpfTXhLSnBtfSl9Y2F0Y2goeDRPSU9pKXtjbTZqN21zKEJoallQTSk7ZnVuY3Rpb24gdEpYNmhBTyh6WnhKRVJKKXt2YXIgYmpVMlpnPVwiMEhYRDp2JSMxVTRmUl9DS0JufnReIWxiK1czbU91fSRAc2kpKj1gW3xwZWgobzhxeUw5YXcmXVNaeD5WTU4vSmR6LGNBNi5nSWsyRkdcXFwiWUVqNzU/UHs7clFUPFwiLHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsYkRKeFdULHlJUmwxMyxkUXhRWlJrO0JVT1ZMbGkoeE5Kckd4PVwiXCIrKHpaeEpFUkp8fFwiXCIpLE93clY2ZT14TkpyR3gubGVuZ3RoLFU2bGg0Zj1bXSxQNkNQMUJmPVM0ejhBbFsweDBdLGJESnhXVD1TNHo4QWxbMHgwXSx5SVJsMTM9LVM0ejhBbFsweDFdKTtmb3IoZFF4UVpSaz1TNHo4QWxbMHgwXTtkUXhRWlJrPE93clY2ZTtkUXhRWlJrKyspe3ZhciBwTU9pSmFDPWJqVTJaZy5pbmRleE9mKHhOSnJHeFtkUXhRWlJrXSk7aWYocE1PaUphQz09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih5SVJsMTM8UzR6OEFsWzB4MF0pe3lJUmwxMz1wTU9pSmFDfWVsc2V7QlVPVkxsaSh5SVJsMTMrPXBNT2lKYUMqUzR6OEFsWzB4MTNdLFA2Q1AxQmZ8PXlJUmwxMzw8YkRKeFdULGJESnhXVCs9KHlJUmwxMyZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKFU2bGg0Zi5wdXNoKFA2Q1AxQmYmUzR6OEFsWzB4M10pLFA2Q1AxQmY+Pj1TNHo4QWxbMHgyXSxiREp4V1QtPVM0ejhBbFsweDJdKX13aGlsZShiREp4V1Q+UzR6OEFsWzB4YV0pO3lJUmwxMz0tUzR6OEFsWzB4MV19fWlmKHlJUmwxMz4tUzR6OEFsWzB4MV0pe1U2bGg0Zi5wdXNoKChQNkNQMUJmfHlJUmwxMzw8YkRKeFdUKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoVTZsaDRmKX1mdW5jdGlvbiBCaGpZUE0oLi4uelp4SkVSSil7elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT10Slg2aEFPKGhxRzdKdWxbelp4SkVSSltTNHo4QWxbMHgwXV1dKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV19aWYoIUU2X0tSWil7Y202ajdtcyhDb1lWSk9aKTtmdW5jdGlvbiBDb1lWSk9aKC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0selp4SkVSSltTNHo4QWxbMHgxXV09XCI0NjEuPD1kRCV2dXR6N1BJXFxcImpHKUYwayZgWGxTL1JnQCpVO2JvLCR5cHcrM0pMVkNeWiFjT0I1fShfezlXTXgjQW58ZUUyc2g+YVFmVD9dSzhbWUhtTn5yOnFpXCIselp4SkVSSltTNHo4QWxbMHgzMV1dPVwiXCIrKHpaeEpFUkpbUzR6OEFsWzB4MF1dfHxcIlwiKSx6WnhKRVJKW1M0ejhBbFsweDMyXV09elp4SkVSSltTNHo4QWxbMHgzMV1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDM1XV09W10selp4SkVSSlstUzR6OEFsWzB4MTAyXV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHg4XV09UzR6OEFsWzB4MF0selp4SkVSSlstUzR6OEFsWzB4MTA0XV09LVM0ejhBbFsweDFdKTtmb3Ioelp4SkVSSlstUzR6OEFsWzB4MTAzXV09UzR6OEFsWzB4MF07elp4SkVSSlstUzR6OEFsWzB4MTAzXV08elp4SkVSSltTNHo4QWxbMHgzMl1dO3paeEpFUkpbLVM0ejhBbFsweDEwM11dKyspe3paeEpFUkpbUzR6OEFsWzB4N2VdXT16WnhKRVJKW1M0ejhBbFsweDFdXS5pbmRleE9mKHpaeEpFUkpbUzR6OEFsWzB4MzFdXVt6WnhKRVJKWy1TNHo4QWxbMHgxMDNdXV0pO2lmKHpaeEpFUkpbUzR6OEFsWzB4N2VdXT09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih6WnhKRVJKWy1TNHo4QWxbMHgxMDRdXTxTNHo4QWxbMHgwXSl7elp4SkVSSlstUzR6OEFsWzB4MTA0XV09elp4SkVSSltTNHo4QWxbMHg3ZV1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKWy1TNHo4QWxbMHgxMDRdXSs9elp4SkVSSltTNHo4QWxbMHg3ZV1dKlM0ejhBbFsweDEzXSx6WnhKRVJKWy1TNHo4QWxbMHgxMDJdXXw9elp4SkVSSlstUzR6OEFsWzB4MTA0XV08PHpaeEpFUkpbUzR6OEFsWzB4OF1dLHpaeEpFUkpbUzR6OEFsWzB4OF1dKz0oelp4SkVSSlstUzR6OEFsWzB4MTA0XV0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDM1XV0ucHVzaCh6WnhKRVJKWy1TNHo4QWxbMHgxMDJdXSZTNHo4QWxbMHgzXSkselp4SkVSSlstUzR6OEFsWzB4MTAyXV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKW1M0ejhBbFsweDhdXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4OF1dPlM0ejhBbFsweGFdKTt6WnhKRVJKWy1TNHo4QWxbMHgxMDRdXT0tUzR6OEFsWzB4MV19fWlmKHpaeEpFUkpbLVM0ejhBbFsweDEwNF1dPi1TNHo4QWxbMHgxXSl7elp4SkVSSltTNHo4QWxbMHgzNV1dLnB1c2goKHpaeEpFUkpbLVM0ejhBbFsweDEwMl1dfHpaeEpFUkpbLVM0ejhBbFsweDEwNF1dPDx6WnhKRVJKW1M0ejhBbFsweDhdXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKHpaeEpFUkpbUzR6OEFsWzB4MzVdXSl9ZnVuY3Rpb24gcXN6UVJrTSh6WnhKRVJKKXtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXT1Db1lWSk9aKGhxRzdKdWxbelp4SkVSSl0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpdfUxiRFVBdihxc3pRUmtNKDB4M2JkKSlbcXN6UVJrTSgweDNiZSldKHg0T0lPaSl9dGhpc1tCaGpZUE0oMHgzYmYpK0JoallQTSgweDNjMCldW0JoallQTSgweDNjMSldKEJoallQTSgweDNjMikse1tCaGpZUE0oMHgzYzMpXTp5SVJsMTMsW0JoallQTShTNHo4QWxbMHgxMDVdKV06elp4SkVSSltCaGpZUE0oUzR6OEFsWzB4MTA1XSldLFtCaGpZUE0oUzR6OEFsWzB4MTA2XSldOnpaeEpFUkpbQmhqWVBNKFM0ejhBbFsweDEwNl0pXSxbQmhqWVBNKFM0ejhBbFsweDEwN10pXTp6WnhKRVJKW0JoallQTShTNHo4QWxbMHgxMDddKV0sW0JoallQTShTNHo4QWxbMHgxMDhdKV06elp4SkVSSltCaGpZUE0oUzR6OEFsWzB4MTA4XSldLFtCaGpZUE0oMHgzYzgpXTpMYkRVQXYoQmhqWVBNKDB4M2M5KStTNHo4QWxbMHg3Y10pW0JoallQTSgweDNjYSldW0JoallQTSgweDNjYildLFtCaGpZUE0oMHgzY2MpXTpPd3JWNmUsW0JoallQTSgweDNjZCldOl9NeEtKcG0sW0JoallQTSgweDNjZSldOkJoallQTSgweDNjZil9KTtyZXR1cm4gYXdhaXQgdGhpc1tCaGpZUE0oMHgzZDApK0JoallQTSgweDNkMSldKHpaeEpFUkosYmpVMlpnLHhOSnJHeCxPd3JWNmUsVTZsaDRmKX19YXN5bmNbZUZPMFhuTShTNHo4QWxbMHgxNmJdKV0oelp4SkVSSixialUyWmcseE5Kckd4KXtCVU9WTGxpKGNtNmo3bXMoVTZsaDRmKSxjbTZqN21zKE93clY2ZSkpO2Z1bmN0aW9uIE93clY2ZSguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbUzR6OEFsWzB4MTA5XV09XCI6OzcmYDleJXoodTIsKSRkPTF9VVp0SHZEOGtpXFxcIkk+bjBtSlNAc2ZYKkx+cSE2L3AuZT9nPDRqTU9OQXdifEJsV3sjNTNvUUdbS3JQX2hjeENdVkZFYVJ5K1RZXCIselp4SkVSSltTNHo4QWxbMHgzMV1dPVwiXCIrKHpaeEpFUkpbUzR6OEFsWzB4MF1dfHxcIlwiKSx6WnhKRVJKW1M0ejhBbFsweDMyXV09elp4SkVSSltTNHo4QWxbMHgzMV1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDE4XV09W10selp4SkVSSltTNHo4QWxbMHgxMGFdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweDE5XV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHgxMGJdXT0tUzR6OEFsWzB4MV0pO2Zvcih6WnhKRVJKW1M0ejhBbFsweDMzXV09UzR6OEFsWzB4MF07elp4SkVSSltTNHo4QWxbMHgzM11dPHpaeEpFUkpbUzR6OEFsWzB4MzJdXTt6WnhKRVJKW1M0ejhBbFsweDMzXV0rKyl7elp4SkVSSltTNHo4QWxbMHgxMV1dPXpaeEpFUkpbUzR6OEFsWzB4MTA5XV0uaW5kZXhPZih6WnhKRVJKW1M0ejhBbFsweDMxXV1belp4SkVSSltTNHo4QWxbMHgzM11dXSk7aWYoelp4SkVSSltTNHo4QWxbMHgxMV1dPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHpaeEpFUkpbUzR6OEFsWzB4MTBiXV08UzR6OEFsWzB4MF0pe3paeEpFUkpbUzR6OEFsWzB4MTBiXV09elp4SkVSSltTNHo4QWxbMHgxMV1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDEwYl1dKz16WnhKRVJKW1M0ejhBbFsweDExXV0qUzR6OEFsWzB4MTNdLHpaeEpFUkpbUzR6OEFsWzB4MTBhXV18PXpaeEpFUkpbUzR6OEFsWzB4MTBiXV08PHpaeEpFUkpbUzR6OEFsWzB4MTldXSx6WnhKRVJKW1M0ejhBbFsweDE5XV0rPSh6WnhKRVJKW1M0ejhBbFsweDEwYl1dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHgxOF1dLnB1c2goelp4SkVSSltTNHo4QWxbMHgxMGFdXSZTNHo4QWxbMHgzXSkselp4SkVSSltTNHo4QWxbMHgxMGFdXT4+PVM0ejhBbFsweDJdLHpaeEpFUkpbUzR6OEFsWzB4MTldXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4MTldXT5TNHo4QWxbMHhhXSk7elp4SkVSSltTNHo4QWxbMHgxMGJdXT0tUzR6OEFsWzB4MV19fWlmKHpaeEpFUkpbUzR6OEFsWzB4MTBiXV0+LVM0ejhBbFsweDFdKXt6WnhKRVJKW1M0ejhBbFsweDE4XV0ucHVzaCgoelp4SkVSSltTNHo4QWxbMHgxMGFdXXx6WnhKRVJKW1M0ejhBbFsweDEwYl1dPDx6WnhKRVJKW1M0ejhBbFsweDE5XV0pJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQSh6WnhKRVJKW1M0ejhBbFsweDE4XV0pfWZ1bmN0aW9uIFU2bGg0ZiguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPU93clY2ZShocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfWNvbnN0IFA2Q1AxQmY9YXdhaXQgdGhpc1tlRk8wWG5NKFM0ejhBbFsweDExMF0pXVtlRk8wWG5NKFM0ejhBbFsweDE0Nl0pXSgpLF9NeEtKcG09bmV3KExiRFVBdihlRk8wWG5NKFM0ejhBbFsweGE0XSkpW2VGTzBYbk0oMHgzZDUpXVtlRk8wWG5NKDB4M2Q2KStVNmxoNGYoMHgzZDcpXSkodGhpc1tVNmxoNGYoUzR6OEFsWzB4MTBjXSldW1U2bGg0ZihTNHo4QWxbMHgxMGRdKStTNHo4QWxbMHgxMGVdXXx8dGhpc1tVNmxoNGYoUzR6OEFsWzB4MTBjXSldW1U2bGg0ZihTNHo4QWxbMHgxMGRdKStTNHo4QWxbMHgxMGVdXVtVNmxoNGYoUzR6OEFsWzB4MTBkXSkrUzR6OEFsWzB4MTBlXV0pLGJESnhXVD1hd2FpdCB0aGlzW1U2bGg0ZigweDNkYSkrVTZsaDRmKDB4M2RiKStTNHo4QWxbMHgxNjJdXSh6WnhKRVJKW1U2bGg0ZigweDNkYyldLFA2Q1AxQmYsYmpVMlpnLExiRFVBdihVNmxoNGYoMHgzZGQpKSh6WnhKRVJKW1U2bGg0ZigweDNkZSldKSxfTXhLSnBtKTtiREp4V1RbVTZsaDRmKFM0ejhBbFsweDEwZl0pXT9hd2FpdCB0aGlzW1U2bGg0ZigweDNlMCldKGJESnhXVFtVNmxoNGYoUzR6OEFsWzB4MTBmXSldLF9NeEtKcG0sUDZDUDFCZixialUyWmcselp4SkVSSik6YXdhaXQgdGhpc1tVNmxoNGYoMHgzZTEpXSh6WnhKRVJKLGJqVTJaZyx4TkpyR3gsUDZDUDFCZixiREp4V1QpfWFzeW5jW2VGTzBYbk0oUzR6OEFsWzB4NDJdKV0oelp4SkVSSixialUyWmcseE5Kckd4KXtjbTZqN21zKFU2bGg0Zik7ZnVuY3Rpb24gT3dyVjZlKHpaeEpFUkope3ZhciBialUyWmc9XCJMRmMjOWJ9Sl8xT25aJVJeKk5HeFgzezsyRTdEXXRUOFkuQSkkPCxJdyZmaDVtcS8rNj00YXN8OnVNcFZqQ28hV2BpVXJ2S2VcXFwiKFN5P3pIbFtkPn5CUVBAa2cwXCIseE5Kckd4LE93clY2ZSxVNmxoNGYsUDZDUDFCZixiREp4V1QseUlSbDEzLGRReFFaUms7QlVPVkxsaSh4TkpyR3g9XCJcIisoelp4SkVSSnx8XCJcIiksT3dyVjZlPXhOSnJHeC5sZW5ndGgsVTZsaDRmPVtdLFA2Q1AxQmY9UzR6OEFsWzB4MF0sYkRKeFdUPVM0ejhBbFsweDBdLHlJUmwxMz0tUzR6OEFsWzB4MV0pO2ZvcihkUXhRWlJrPVM0ejhBbFsweDBdO2RReFFaUms8T3dyVjZlO2RReFFaUmsrKyl7dmFyIHBNT2lKYUM9YmpVMlpnLmluZGV4T2YoeE5Kckd4W2RReFFaUmtdKTtpZihwTU9pSmFDPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHlJUmwxMzxTNHo4QWxbMHgwXSl7eUlSbDEzPXBNT2lKYUN9ZWxzZXtCVU9WTGxpKHlJUmwxMys9cE1PaUphQypTNHo4QWxbMHgxM10sUDZDUDFCZnw9eUlSbDEzPDxiREp4V1QsYkRKeFdUKz0oeUlSbDEzJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoVTZsaDRmLnB1c2goUDZDUDFCZiZTNHo4QWxbMHgzXSksUDZDUDFCZj4+PVM0ejhBbFsweDJdLGJESnhXVC09UzR6OEFsWzB4Ml0pfXdoaWxlKGJESnhXVD5TNHo4QWxbMHhhXSk7eUlSbDEzPS1TNHo4QWxbMHgxXX19aWYoeUlSbDEzPi1TNHo4QWxbMHgxXSl7VTZsaDRmLnB1c2goKFA2Q1AxQmZ8eUlSbDEzPDxiREp4V1QpJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQShVNmxoNGYpfWZ1bmN0aW9uIFU2bGg0ZiguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPU93clY2ZShocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfWNvbnN0IFA2Q1AxQmY9YXdhaXQgdGhpc1tlRk8wWG5NKFM0ejhBbFsweDExMF0pXVtVNmxoNGYoMHgzZTIpXVtVNmxoNGYoMHgzZTMpXSh7W1U2bGg0ZigweDNlNCldOlU2bGg0ZigweDNlNSl9KSxiREp4V1Q9TGJEVUF2KFU2bGg0ZigweDNlNikrUzR6OEFsWzB4MTRiXSkoelp4SkVSSltVNmxoNGYoUzR6OEFsWzB4MTExXSldKS1QNkNQMUJmKlM0ejhBbFsweDMyXSooeE5Kckd4KjB4MWZiZDArMHgxMjRmOCk7aWYoYkRKeFdUPFM0ejhBbFsweDBdKXtpZihVNmxoNGYoUzR6OEFsWzB4ZGFdKWluIFlGSnpNVyl7eUlSbDEzKCl9ZnVuY3Rpb24geUlSbDEzKCl7dmFyIHpaeEpFUko9ZnVuY3Rpb24oelp4SkVSSil7QlVPVkxsaSh0aGlzLmNhcGFjaXR5PXpaeEpFUkosdGhpcy5sZW5ndGg9UzR6OEFsWzB4MF0sdGhpcy5tYXA9e30sdGhpcy5oZWFkPVM0ejhBbFsweDhmXSx0aGlzLnRhaWw9UzR6OEFsWzB4OGZdKX07QlVPVkxsaSh6WnhKRVJKLnByb3RvdHlwZS5nZXQ9Y202ajdtcyhmdW5jdGlvbiguLi56WnhKRVJKKXt2YXIgYmpVMlpnO0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0sYmpVMlpnPXRoaXMubWFwW3paeEpFUkpbUzR6OEFsWzB4MF1dXSk7cmV0dXJuIGJqVTJaZz8odGhpcy5yZW1vdmUoYmpVMlpnKSx0aGlzLmluc2VydChialUyWmcua2V5LGJqVTJaZy52YWwpLGJqVTJaZy52YWwpOi1TNHo4QWxbMHgxXX0pLHpaeEpFUkoucHJvdG90eXBlLnB1dD1mdW5jdGlvbih6WnhKRVJKLGJqVTJaZyl7dGhpcy5tYXBbelp4SkVSSl0/KHRoaXMucmVtb3ZlKHRoaXMubWFwW3paeEpFUkpdKSx0aGlzLmluc2VydCh6WnhKRVJKLGJqVTJaZykpOnRoaXMubGVuZ3RoPT09dGhpcy5jYXBhY2l0eT8odGhpcy5yZW1vdmUodGhpcy5oZWFkKSx0aGlzLmluc2VydCh6WnhKRVJKLGJqVTJaZykpOih0aGlzLmluc2VydCh6WnhKRVJKLGJqVTJaZyksdGhpcy5sZW5ndGgrKyl9LHpaeEpFUkoucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih6WnhKRVJKKXt2YXIgYmpVMlpnPXpaeEpFUkoucHJldix4TkpyR3g7eE5Kckd4PXpaeEpFUkoubmV4dDtpZih4TkpyR3gpeE5Kckd4LnByZXY9YmpVMlpnO2lmKGJqVTJaZylialUyWmcubmV4dD14TkpyR3g7aWYodGhpcy5oZWFkPT09elp4SkVSSil0aGlzLmhlYWQ9eE5Kckd4O2lmKHRoaXMudGFpbD09PXpaeEpFUkopdGhpcy50YWlsPWJqVTJaZztkZWxldGUgdGhpcy5tYXBbelp4SkVSSi5rZXldfSx6WnhKRVJKLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24oelp4SkVSSixialUyWmcpe3ZhciB4TkpyR3g9bmV3KExiRFVBdihVNmxoNGYoMHgzZTkpK1M0ejhBbFsweDdjXSkpKHpaeEpFUkosYmpVMlpnKTtCVU9WTGxpKCF0aGlzLnRhaWw/KHRoaXMudGFpbD14TkpyR3gsdGhpcy5oZWFkPXhOSnJHeCk6KHRoaXMudGFpbC5uZXh0PXhOSnJHeCx4TkpyR3gucHJldj10aGlzLnRhaWwsdGhpcy50YWlsPXhOSnJHeCksdGhpcy5tYXBbelp4SkVSSl09eE5Kckd4KX0sTGJEVUF2KFU2bGg0ZihTNHo4QWxbMHgxMWVdKSkubG9nKHpaeEpFUkopKX1yZXR1cm4gUzR6OEFsWzB4MjBdfWNvbnN0IGRReFFaUms9YXdhaXQgdGhpc1tVNmxoNGYoUzR6OEFsWzB4MTEyXSldW1U2bGg0ZihTNHo4QWxbMHgxMTddKStVNmxoNGYoMHgzZWQpK1M0ejhBbFsweDM4XV0oKTt0aGlzW1U2bGg0ZihTNHo4QWxbMHgxMTJdKV1bVTZsaDRmKDB4M2VlKStTNHo4QWxbMHgxMzhdXShVNmxoNGYoUzR6OEFsWzB4MTFmXSkse1tVNmxoNGYoUzR6OEFsWzB4MTEzXSldOnpaeEpFUkpbVTZsaDRmKFM0ejhBbFsweDExM10pXSxbVTZsaDRmKFM0ejhBbFsweDExNF0pXTp6WnhKRVJKW1U2bGg0ZihTNHo4QWxbMHgxMTRdKV0sW1U2bGg0ZihTNHo4QWxbMHgxMTVdKV06elp4SkVSSltVNmxoNGYoUzR6OEFsWzB4MTE1XSldLFtVNmxoNGYoUzR6OEFsWzB4MTE2XSldOnpaeEpFUkpbVTZsaDRmKFM0ejhBbFsweDExNl0pXSxbVTZsaDRmKDB4M2Y0KV06TGJEVUF2KFU2bGg0ZigweDNmNSkpW1U2bGg0ZigweDNmNildW1U2bGg0ZigweDNmNyldLFtVNmxoNGYoUzR6OEFsWzB4MTE3XSldOmRReFFaUmssW1U2bGg0ZigweDNmOCkrVTZsaDRmKDB4M2Y5KV06X014S0pwbSxbVTZsaDRmKDB4M2ZhKV06VTZsaDRmKDB4M2ZiKX0pO3RyeXtjbTZqN21zKHBNT2lKYUMpO2Z1bmN0aW9uIHBNT2lKYUMoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKWy1TNHo4QWxbMHgxMThdXT1cIj9iY0hbd3E7T2ZUWnZpKUohRDFgVnozMHl1eGV9flF8Q0J7XFxcIm41RlltTk1dPlJXa2dkRS5qUzRBYXIsOSYjUF84MnA2bz1odDwvSVUkNzorTHMoS15AbCUqR1hcIix6WnhKRVJKW1M0ejhBbFsweGVdXT1cIlwiKyh6WnhKRVJKW1M0ejhBbFsweDBdXXx8XCJcIikselp4SkVSSltTNHo4QWxbMHgzMl1dPXpaeEpFUkpbUzR6OEFsWzB4ZV1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDM1XV09W10selp4SkVSSltTNHo4QWxbMHhmXV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHg4XV09UzR6OEFsWzB4MF0selp4SkVSSlstUzR6OEFsWzB4ODFdXT0tUzR6OEFsWzB4MV0pO2Zvcih6WnhKRVJKW1M0ejhBbFsweDMzXV09UzR6OEFsWzB4MF07elp4SkVSSltTNHo4QWxbMHgzM11dPHpaeEpFUkpbUzR6OEFsWzB4MzJdXTt6WnhKRVJKW1M0ejhBbFsweDMzXV0rKyl7elp4SkVSSltTNHo4QWxbMHgxMV1dPXpaeEpFUkpbLVM0ejhBbFsweDExOF1dLmluZGV4T2Yoelp4SkVSSltTNHo4QWxbMHhlXV1belp4SkVSSltTNHo4QWxbMHgzM11dXSk7aWYoelp4SkVSSltTNHo4QWxbMHgxMV1dPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHpaeEpFUkpbLVM0ejhBbFsweDgxXV08UzR6OEFsWzB4MF0pe3paeEpFUkpbLVM0ejhBbFsweDgxXV09elp4SkVSSltTNHo4QWxbMHgxMV1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKWy1TNHo4QWxbMHg4MV1dKz16WnhKRVJKW1M0ejhBbFsweDExXV0qUzR6OEFsWzB4MTNdLHpaeEpFUkpbUzR6OEFsWzB4Zl1dfD16WnhKRVJKWy1TNHo4QWxbMHg4MV1dPDx6WnhKRVJKW1M0ejhBbFsweDhdXSx6WnhKRVJKW1M0ejhBbFsweDhdXSs9KHpaeEpFUkpbLVM0ejhBbFsweDgxXV0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDM1XV0ucHVzaCh6WnhKRVJKW1M0ejhBbFsweGZdXSZTNHo4QWxbMHgzXSkselp4SkVSSltTNHo4QWxbMHhmXV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKW1M0ejhBbFsweDhdXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4OF1dPlM0ejhBbFsweGFdKTt6WnhKRVJKWy1TNHo4QWxbMHg4MV1dPS1TNHo4QWxbMHgxXX19aWYoelp4SkVSSlstUzR6OEFsWzB4ODFdXT4tUzR6OEFsWzB4MV0pe3paeEpFUkpbUzR6OEFsWzB4MzVdXS5wdXNoKCh6WnhKRVJKW1M0ejhBbFsweGZdXXx6WnhKRVJKWy1TNHo4QWxbMHg4MV1dPDx6WnhKRVJKW1M0ejhBbFsweDhdXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKHpaeEpFUkpbUzR6OEFsWzB4MzVdXSl9ZnVuY3Rpb24gTjFsN0NuUSh6WnhKRVJKKXtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXT1wTU9pSmFDKGhxRzdKdWxbelp4SkVSSl0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpdfWNvbnN0IHVFUFBPVz1hd2FpdCB0aGlzW1U2bGg0ZihTNHo4QWxbMHgxMTJdKV1bTjFsN0NuUSgweDNmYyldW04xbDdDblEoMHgzZmQpXSh7W04xbDdDblEoMHgzZmUpXTpOMWw3Q25RKFM0ejhBbFsweDE4Y10pLFtOMWw3Q25RKDB4NDAwKV06W3tbTjFsN0NuUSgweDQwMSldOmRReFFaUmssW1M0ejhBbFsweGJiXV06YmpVMlpnLFtOMWw3Q25RKDB4NDAyKV06bVYwZEFpVFtOMWw3Q25RKDB4NDAzKStOMWw3Q25RKDB4NDA0KStOMWw3Q25RKDB4NDA1KV0oTjFsN0NuUSgweDQwNikpLFtOMWw3Q25RKDB4NDA3KV06UzR6OEFsWzB4MTMzXStiREp4V1RbTjFsN0NuUSgweDQwOCldKFM0ejhBbFsweDEzNV0pfV19KTt0aGlzW04xbDdDblEoMHg0MDkpK04xbDdDblEoMHg0MGEpXVtOMWw3Q25RKDB4NDBiKV0oTjFsN0NuUSgweDQwYykrUzR6OEFsWzB4MzhdLHtbTjFsN0NuUShTNHo4QWxbMHgxMTldKV06elp4SkVSSltOMWw3Q25RKFM0ejhBbFsweDExOV0pXSxbTjFsN0NuUSgweDQwZSldOnVFUFBPVyxbTjFsN0NuUSgweDQwZikrTjFsN0NuUSgweDQxMCldOmJqVTJaZyxbTjFsN0NuUShTNHo4QWxbMHgxMWFdKV06elp4SkVSSltOMWw3Q25RKFM0ejhBbFsweDExYV0pXSxbTjFsN0NuUShTNHo4QWxbMHgxMWJdKV06elp4SkVSSltOMWw3Q25RKFM0ejhBbFsweDExYl0pXSxbTjFsN0NuUShTNHo4QWxbMHgxMWNdKV06elp4SkVSSltOMWw3Q25RKFM0ejhBbFsweDExY10pXSxbTjFsN0NuUSgweDQxNCldOkxiRFVBdihOMWw3Q25RKDB4NDE1KStTNHo4QWxbMHg3Y10pW04xbDdDblEoMHg0MTYpXVtOMWw3Q25RKDB4NDE3KV0sW04xbDdDblEoUzR6OEFsWzB4MTFkXSldOnpaeEpFUkpbTjFsN0NuUShTNHo4QWxbMHgxMWRdKV0sW04xbDdDblEoMHg0MTkpXTpkUXhRWlJrLFtOMWw3Q25RKDB4NDFhKV06X014S0pwbX0pfWNhdGNoKGtBaUJMOCl7ZnVuY3Rpb24gTk1HRmdhNSh6WnhKRVJKKXt2YXIgYmpVMlpnPVwiMEFiY3NRa0JnR2pDbnRXTzFKbSVYLGEpQEYuNVp8RFQrdjpZeHA4Pmg5RWZWey9ISWxLKHJNKlAkWyMzTFU3JmA7XjR6dSFdP05+eTx3UnF9aTJfUzZkb1xcXCJlPVwiLHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsYkRKeFdULHlJUmwxMyxkUXhRWlJrO0JVT1ZMbGkoeE5Kckd4PVwiXCIrKHpaeEpFUkp8fFwiXCIpLE93clY2ZT14TkpyR3gubGVuZ3RoLFU2bGg0Zj1bXSxQNkNQMUJmPVM0ejhBbFsweDBdLGJESnhXVD1TNHo4QWxbMHgwXSx5SVJsMTM9LVM0ejhBbFsweDFdKTtmb3IoZFF4UVpSaz1TNHo4QWxbMHgwXTtkUXhRWlJrPE93clY2ZTtkUXhRWlJrKyspe3ZhciBwTU9pSmFDPWJqVTJaZy5pbmRleE9mKHhOSnJHeFtkUXhRWlJrXSk7aWYocE1PaUphQz09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih5SVJsMTM8UzR6OEFsWzB4MF0pe3lJUmwxMz1wTU9pSmFDfWVsc2V7QlVPVkxsaSh5SVJsMTMrPXBNT2lKYUMqUzR6OEFsWzB4MTNdLFA2Q1AxQmZ8PXlJUmwxMzw8YkRKeFdULGJESnhXVCs9KHlJUmwxMyZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKFU2bGg0Zi5wdXNoKFA2Q1AxQmYmUzR6OEFsWzB4M10pLFA2Q1AxQmY+Pj1TNHo4QWxbMHgyXSxiREp4V1QtPVM0ejhBbFsweDJdKX13aGlsZShiREp4V1Q+UzR6OEFsWzB4YV0pO3lJUmwxMz0tUzR6OEFsWzB4MV19fWlmKHlJUmwxMz4tUzR6OEFsWzB4MV0pe1U2bGg0Zi5wdXNoKChQNkNQMUJmfHlJUmwxMzw8YkRKeFdUKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoVTZsaDRmKX1mdW5jdGlvbiByWWY4cXlPKHpaeEpFUkope2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpdPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpdPU5NR0ZnYTUoaHFHN0p1bFt6WnhKRVJKXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl19aWYoIUU2X0tSWil7Y202ajdtcyh0Slg2aEFPKTtmdW5jdGlvbiB4NE9JT2koelp4SkVSSil7dmFyIGJqVTJaZz1cInVBMkJcXFwiNHkxKEZKNWVHUF5sUT9pb01WWTwkbTMjVTlOY2BaenJAVGZJT1h4PWpDNn0raCpXS3wlfjt2YmdfLGtkOlIuWy9EczBhN1MhSHtMd3A4bj5FXSl0cSZcIix4TkpyR3gsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLGJESnhXVCx5SVJsMTMsZFF4UVpSaztCVU9WTGxpKHhOSnJHeD1cIlwiKyh6WnhKRVJKfHxcIlwiKSxPd3JWNmU9eE5Kckd4Lmxlbmd0aCxVNmxoNGY9W10sUDZDUDFCZj1TNHo4QWxbMHgwXSxiREp4V1Q9UzR6OEFsWzB4MF0seUlSbDEzPS1TNHo4QWxbMHgxXSk7Zm9yKGRReFFaUms9UzR6OEFsWzB4MF07ZFF4UVpSazxPd3JWNmU7ZFF4UVpSaysrKXt2YXIgcE1PaUphQz1ialUyWmcuaW5kZXhPZih4TkpyR3hbZFF4UVpSa10pO2lmKHBNT2lKYUM9PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoeUlSbDEzPFM0ejhBbFsweDBdKXt5SVJsMTM9cE1PaUphQ31lbHNle0JVT1ZMbGkoeUlSbDEzKz1wTU9pSmFDKlM0ejhBbFsweDEzXSxQNkNQMUJmfD15SVJsMTM8PGJESnhXVCxiREp4V1QrPSh5SVJsMTMmUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShVNmxoNGYucHVzaChQNkNQMUJmJlM0ejhBbFsweDNdKSxQNkNQMUJmPj49UzR6OEFsWzB4Ml0sYkRKeFdULT1TNHo4QWxbMHgyXSl9d2hpbGUoYkRKeFdUPlM0ejhBbFsweGFdKTt5SVJsMTM9LVM0ejhBbFsweDFdfX1pZih5SVJsMTM+LVM0ejhBbFsweDFdKXtVNmxoNGYucHVzaCgoUDZDUDFCZnx5SVJsMTM8PGJESnhXVCkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKFU2bGg0Zil9ZnVuY3Rpb24gdEpYNmhBTyguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPXg0T0lPaShocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfUxiRFVBdihVNmxoNGYoUzR6OEFsWzB4MTFlXSkpW3RKWDZoQU8oMHg0MWIpXShrQWlCTDgpfXRoaXNbVTZsaDRmKFM0ejhBbFsweDExMl0pXVtVNmxoNGYoMHg0MWMpXShVNmxoNGYoUzR6OEFsWzB4MTFmXSkse1tVNmxoNGYoUzR6OEFsWzB4MTEzXSldOnpaeEpFUkpbcllmOHF5TygweDQxZCldLFtyWWY4cXlPKFM0ejhBbFsweDEyMF0pXTp6WnhKRVJKW3JZZjhxeU8oUzR6OEFsWzB4MTIwXSldLFtyWWY4cXlPKFM0ejhBbFsweDEyMV0pXTp6WnhKRVJKW3JZZjhxeU8oUzR6OEFsWzB4MTIxXSldLFtyWWY4cXlPKFM0ejhBbFsweDEyMl0pXTp6WnhKRVJKW3JZZjhxeU8oUzR6OEFsWzB4MTIyXSldLFtyWWY4cXlPKDB4NDIxKV06TGJEVUF2KHJZZjhxeU8oMHg0MjIpKVtyWWY4cXlPKDB4NDIzKV1bcllmOHF5TygweDQyNCldLFtyWWY4cXlPKDB4NDI1KV06ZFF4UVpSayxbcllmOHF5TygweDQyNildOl9NeEtKcG0sW3JZZjhxeU8oMHg0MjcpXTpyWWY4cXlPKDB4NDI4KX0pO3JldHVybiBhd2FpdCB0aGlzW3JZZjhxeU8oMHg0MjkpXSh6WnhKRVJKLGJqVTJaZyx4TkpyR3gpfX1hc3luY1tlRk8wWG5NKFM0ejhBbFsweDE5OV0pK1M0ejhBbFsweDEyM11dKHpaeEpFUkosYmpVMlpnKXtjbTZqN21zKHhOSnJHeCk7ZnVuY3Rpb24geE5Kckd4KC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0selp4SkVSSltTNHo4QWxbMHgxXV09XCJGVmlidUNQb05zV0g1dCYxMnkuO0lCW2xeIVgvcHZASz0wNipUd205cVxcXCJ7QWBnT0V9VTdqXTNfP1JrSk1HeFM8bkxZJERyZWYpI2hRWix6PjQrYShjZCU6fjh8XCIselp4SkVSSltTNHo4QWxbMHg3NV1dPVwiXCIrKHpaeEpFUkpbUzR6OEFsWzB4MF1dfHxcIlwiKSx6WnhKRVJKW1M0ejhBbFsweDMyXV09elp4SkVSSltTNHo4QWxbMHg3NV1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDM1XV09W10selp4SkVSSltTNHo4QWxbMHhmXV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHgxOV1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4MTJdXT0tUzR6OEFsWzB4MV0pO2Zvcih6WnhKRVJKWy1TNHo4QWxbMHhkMF1dPVM0ejhBbFsweDBdO3paeEpFUkpbLVM0ejhBbFsweGQwXV08elp4SkVSSltTNHo4QWxbMHgzMl1dO3paeEpFUkpbLVM0ejhBbFsweGQwXV0rKyl7elp4SkVSSltTNHo4QWxbMHgyNF1dPXpaeEpFUkpbUzR6OEFsWzB4MV1dLmluZGV4T2Yoelp4SkVSSltTNHo4QWxbMHg3NV1dW3paeEpFUkpbLVM0ejhBbFsweGQwXV1dKTtpZih6WnhKRVJKW1M0ejhBbFsweDI0XV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSltTNHo4QWxbMHgxMl1dPFM0ejhBbFsweDBdKXt6WnhKRVJKW1M0ejhBbFsweDEyXV09elp4SkVSSltTNHo4QWxbMHgyNF1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDEyXV0rPXpaeEpFUkpbUzR6OEFsWzB4MjRdXSpTNHo4QWxbMHgxM10selp4SkVSSltTNHo4QWxbMHhmXV18PXpaeEpFUkpbUzR6OEFsWzB4MTJdXTw8elp4SkVSSltTNHo4QWxbMHgxOV1dLHpaeEpFUkpbUzR6OEFsWzB4MTldXSs9KHpaeEpFUkpbUzR6OEFsWzB4MTJdXSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MzVdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4Zl1dJlM0ejhBbFsweDNdKSx6WnhKRVJKW1M0ejhBbFsweGZdXT4+PVM0ejhBbFsweDJdLHpaeEpFUkpbUzR6OEFsWzB4MTldXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4MTldXT5TNHo4QWxbMHhhXSk7elp4SkVSSltTNHo4QWxbMHgxMl1dPS1TNHo4QWxbMHgxXX19aWYoelp4SkVSSltTNHo4QWxbMHgxMl1dPi1TNHo4QWxbMHgxXSl7elp4SkVSSltTNHo4QWxbMHgzNV1dLnB1c2goKHpaeEpFUkpbUzR6OEFsWzB4Zl1dfHpaeEpFUkpbUzR6OEFsWzB4MTJdXTw8elp4SkVSSltTNHo4QWxbMHgxOV1dKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoelp4SkVSSltTNHo4QWxbMHgzNV1dKX1mdW5jdGlvbiBPd3JWNmUoelp4SkVSSil7aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSl09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl09eE5Kckd4KGhxRzdKdWxbelp4SkVSSl0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpdfWNvbnN0IFU2bGg0Zj1bXSxQNkNQMUJmPVtdO2xldCBiREp4V1Q9ZUZPMFhuTSgweDQyYik7elp4SkVSSltPd3JWNmUoUzR6OEFsWzB4MTI1XSldW093clY2ZSgweDQyZCldKGNtNmo3bXMoKC4uLnpaeEpFUkopPT57elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4ZV07cmV0dXJuIHpaeEpFUkpbUzR6OEFsWzB4MV1dW093clY2ZShTNHo4QWxbMHgxMjRdKV0telp4SkVSSltTNHo4QWxbMHgwXV1bT3dyVjZlKFM0ejhBbFsweDEyNF0pXX0sUzR6OEFsWzB4ZV0pKTtmb3IobGV0IEU2X0tSWj1TNHo4QWxbMHgwXTtFNl9LUlo8elp4SkVSSltPd3JWNmUoUzR6OEFsWzB4MTI1XSldW093clY2ZSgweDQyZildO0U2X0tSWisrKXtjbTZqN21zKHlJUmwxMyk7ZnVuY3Rpb24geUlSbDEzKC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0selp4SkVSSltTNHo4QWxbMHhkXV09XCJ4am9EbmxJQVhkc3k0Ky52WTpOQnUyT1MkVzNDej9tfS97dGBFQCVrOU0jcWI4Nyk7NWk9R15wSFxcXCJhY3xRRjZQPlJ3WnIhJkoqaFRdS1UoZlswMUxlLF9nVn48XCIselp4SkVSSltTNHo4QWxbMHhlXV09XCJcIisoelp4SkVSSltTNHo4QWxbMHgwXV18fFwiXCIpLHpaeEpFUkpbLVM0ejhBbFsweDEyNl1dPXpaeEpFUkpbUzR6OEFsWzB4ZV1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDM1XV09W10selp4SkVSSltTNHo4QWxbMHgzNF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4OF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4YV1dPS1TNHo4QWxbMHgxXSk7Zm9yKHpaeEpFUkpbLVM0ejhBbFsweDddXT1TNHo4QWxbMHgwXTt6WnhKRVJKWy1TNHo4QWxbMHg3XV08elp4SkVSSlstUzR6OEFsWzB4MTI2XV07elp4SkVSSlstUzR6OEFsWzB4N11dKyspe3paeEpFUkpbUzR6OEFsWzB4MjRdXT16WnhKRVJKW1M0ejhBbFsweGRdXS5pbmRleE9mKHpaeEpFUkpbUzR6OEFsWzB4ZV1dW3paeEpFUkpbLVM0ejhBbFsweDddXV0pO2lmKHpaeEpFUkpbUzR6OEFsWzB4MjRdXT09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih6WnhKRVJKW1M0ejhBbFsweGFdXTxTNHo4QWxbMHgwXSl7elp4SkVSSltTNHo4QWxbMHhhXV09elp4SkVSSltTNHo4QWxbMHgyNF1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweGFdXSs9elp4SkVSSltTNHo4QWxbMHgyNF1dKlM0ejhBbFsweDEzXSx6WnhKRVJKW1M0ejhBbFsweDM0XV18PXpaeEpFUkpbUzR6OEFsWzB4YV1dPDx6WnhKRVJKW1M0ejhBbFsweDhdXSx6WnhKRVJKW1M0ejhBbFsweDhdXSs9KHpaeEpFUkpbUzR6OEFsWzB4YV1dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHgzNV1dLnB1c2goelp4SkVSSltTNHo4QWxbMHgzNF1dJlM0ejhBbFsweDNdKSx6WnhKRVJKW1M0ejhBbFsweDM0XV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKW1M0ejhBbFsweDhdXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4OF1dPlM0ejhBbFsweGFdKTt6WnhKRVJKW1M0ejhBbFsweGFdXT0tUzR6OEFsWzB4MV19fWlmKHpaeEpFUkpbUzR6OEFsWzB4YV1dPi1TNHo4QWxbMHgxXSl7elp4SkVSSltTNHo4QWxbMHgzNV1dLnB1c2goKHpaeEpFUkpbUzR6OEFsWzB4MzRdXXx6WnhKRVJKW1M0ejhBbFsweGFdXTw8elp4SkVSSltTNHo4QWxbMHg4XV0pJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQSh6WnhKRVJKW1M0ejhBbFsweDM1XV0pfWZ1bmN0aW9uIGRReFFaUmsoelp4SkVSSil7aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSl09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl09eUlSbDEzKGhxRzdKdWxbelp4SkVSSl0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpdfWNvbnN0IHBNT2lKYUM9elp4SkVSSltPd3JWNmUoUzR6OEFsWzB4MTI1XSldW0U2X0tSWl07aWYocE1PaUphQ1tkUXhRWlJrKDB4NDMwKV09PT1kUXhRWlJrKDB4NDMxKSl7YkRKeFdUPXBNT2lKYUNbZFF4UVpSaygweDQzMildfWVsc2V7Y202ajdtcyh1RVBQT1cpO2Z1bmN0aW9uIE4xbDdDblEoelp4SkVSSil7dmFyIGJqVTJaZz1cIkVyTFFbdV0reDw/OipkaDZIal9QcW5EU21vYiRKNGtlRkNWczM1T3tCfkBjI00+QVVncEs4R1IlVD13YS50LzBpZlpYeiFsMVlJV3Z5LE5eOylgKCYyXFxcInw5fTdcIix4TkpyR3gsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLGJESnhXVCx5SVJsMTMsZFF4UVpSaztCVU9WTGxpKHhOSnJHeD1cIlwiKyh6WnhKRVJKfHxcIlwiKSxPd3JWNmU9eE5Kckd4Lmxlbmd0aCxVNmxoNGY9W10sUDZDUDFCZj1TNHo4QWxbMHgwXSxiREp4V1Q9UzR6OEFsWzB4MF0seUlSbDEzPS1TNHo4QWxbMHgxXSk7Zm9yKGRReFFaUms9UzR6OEFsWzB4MF07ZFF4UVpSazxPd3JWNmU7ZFF4UVpSaysrKXt2YXIgcE1PaUphQz1ialUyWmcuaW5kZXhPZih4TkpyR3hbZFF4UVpSa10pO2lmKHBNT2lKYUM9PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoeUlSbDEzPFM0ejhBbFsweDBdKXt5SVJsMTM9cE1PaUphQ31lbHNle0JVT1ZMbGkoeUlSbDEzKz1wTU9pSmFDKlM0ejhBbFsweDEzXSxQNkNQMUJmfD15SVJsMTM8PGJESnhXVCxiREp4V1QrPSh5SVJsMTMmUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShVNmxoNGYucHVzaChQNkNQMUJmJlM0ejhBbFsweDNdKSxQNkNQMUJmPj49UzR6OEFsWzB4Ml0sYkRKeFdULT1TNHo4QWxbMHgyXSl9d2hpbGUoYkRKeFdUPlM0ejhBbFsweGFdKTt5SVJsMTM9LVM0ejhBbFsweDFdfX1pZih5SVJsMTM+LVM0ejhBbFsweDFdKXtVNmxoNGYucHVzaCgoUDZDUDFCZnx5SVJsMTM8PGJESnhXVCkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKFU2bGg0Zil9ZnVuY3Rpb24gdUVQUE9XKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09TjFsN0NuUShocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfWlmKHVFUFBPVygweDQzMylpbiBZRkp6TVcpe2tBaUJMOCgpfWZ1bmN0aW9uIGtBaUJMOCguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4MzFdXT1jbTZqN21zKGZ1bmN0aW9uKC4uLnpaeEpFUkope0JVT1ZMbGkoY202ajdtcyh4TkpyR3gpLHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLGNtNmo3bXMoYmpVMlpnKSk7ZnVuY3Rpb24gYmpVMlpnKC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0selp4SkVSSltTNHo4QWxbMHgxXV09XCJ1QUJKcVRHZVVwamR6JUM+PW8pd11bc3lafCtseGZpNCN+UntncjYyLjhfT2t0XiFASHYmNzpTM1EoRD8vTjskUG59S2hJbVksNWEqRUwxOUZYTTA8YGJXY1xcXCJWXCIselp4SkVSSltTNHo4QWxbMHhlXV09XCJcIisoelp4SkVSSltTNHo4QWxbMHgwXV18fFwiXCIpLHpaeEpFUkpbUzR6OEFsWzB4MzJdXT16WnhKRVJKW1M0ejhBbFsweGVdXS5sZW5ndGgselp4SkVSSltTNHo4QWxbMHgyNF1dPVtdLHpaeEpFUkpbUzR6OEFsWzB4MTI3XV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHg4XV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHhhXV09LVM0ejhBbFsweDFdKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgzM11dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MzNdXTx6WnhKRVJKW1M0ejhBbFsweDMyXV07elp4SkVSSltTNHo4QWxbMHgzM11dKyspe3paeEpFUkpbUzR6OEFsWzB4MTFdXT16WnhKRVJKW1M0ejhBbFsweDFdXS5pbmRleE9mKHpaeEpFUkpbUzR6OEFsWzB4ZV1dW3paeEpFUkpbUzR6OEFsWzB4MzNdXV0pO2lmKHpaeEpFUkpbUzR6OEFsWzB4MTFdXT09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih6WnhKRVJKW1M0ejhBbFsweGFdXTxTNHo4QWxbMHgwXSl7elp4SkVSSltTNHo4QWxbMHhhXV09elp4SkVSSltTNHo4QWxbMHgxMV1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweGFdXSs9elp4SkVSSltTNHo4QWxbMHgxMV1dKlM0ejhBbFsweDEzXSx6WnhKRVJKW1M0ejhBbFsweDEyN11dfD16WnhKRVJKW1M0ejhBbFsweGFdXTw8elp4SkVSSltTNHo4QWxbMHg4XV0selp4SkVSSltTNHo4QWxbMHg4XV0rPSh6WnhKRVJKW1M0ejhBbFsweGFdXSZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MjRdXS5wdXNoKHpaeEpFUkpbUzR6OEFsWzB4MTI3XV0mUzR6OEFsWzB4M10pLHpaeEpFUkpbUzR6OEFsWzB4MTI3XV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKW1M0ejhBbFsweDhdXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4OF1dPlM0ejhBbFsweGFdKTt6WnhKRVJKW1M0ejhBbFsweGFdXT0tUzR6OEFsWzB4MV19fWlmKHpaeEpFUkpbUzR6OEFsWzB4YV1dPi1TNHo4QWxbMHgxXSl7elp4SkVSSltTNHo4QWxbMHgyNF1dLnB1c2goKHpaeEpFUkpbUzR6OEFsWzB4MTI3XV18elp4SkVSSltTNHo4QWxbMHhhXV08PHpaeEpFUkpbUzR6OEFsWzB4OF1dKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoelp4SkVSSltTNHo4QWxbMHgyNF1dKX1mdW5jdGlvbiB4TkpyR3goLi4uelp4SkVSSil7elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT1ialUyWmcoaHFHN0p1bFt6WnhKRVJKW1M0ejhBbFsweDBdXV0pfXJldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXX16WnhKRVJKW1M0ejhBbFsweGRdXT16WnhKRVJKW1M0ejhBbFsweDBdXS5sZW5ndGg7aWYoelp4SkVSSltTNHo4QWxbMHhkXV08UzR6OEFsWzB4ZV0pcmV0dXJuIFM0ejhBbFsweDBdO0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHgzMV1dPUxiRFVBdih1RVBQT1coMHg0MzQpK1M0ejhBbFsweGE5XSkubWF4KC4uLnpaeEpFUkpbUzR6OEFsWzB4MF1dKSx6WnhKRVJKW1M0ejhBbFsweDEwXV09TGJEVUF2KHVFUFBPVygweDQzNSkpLm1pbiguLi56WnhKRVJKW1M0ejhBbFsweDBdXSkpO2lmKHpaeEpFUkpbUzR6OEFsWzB4MzFdXT09PXpaeEpFUkpbUzR6OEFsWzB4MTBdXSlyZXR1cm4gUzR6OEFsWzB4MF07QlVPVkxsaSh6WnhKRVJKWy1TNHo4QWxbMHgxMjhdXT1MYkRVQXYoeE5Kckd4KFM0ejhBbFsweDEyOV0pKSh6WnhKRVJKW1M0ejhBbFsweGRdXS1TNHo4QWxbMHgxXSkuZmlsbChMYkRVQXYoeE5Kckd4KFM0ejhBbFsweDEyYV0pKS5NQVhfU0FGRV9JTlRFR0VSKSx6WnhKRVJKW1M0ejhBbFsweDM0XV09TGJEVUF2KHhOSnJHeChTNHo4QWxbMHgxMjldKSkoelp4SkVSSltTNHo4QWxbMHhkXV0tUzR6OEFsWzB4MV0pLmZpbGwoTGJEVUF2KHhOSnJHeChTNHo4QWxbMHgxMmFdKSkuTUlOX1NBRkVfSU5URUdFUikselp4SkVSSltTNHo4QWxbMHg4XV09TGJEVUF2KHhOSnJHeChTNHo4QWxbMHgxMmJdKSkuY2VpbCgoelp4SkVSSltTNHo4QWxbMHgzMV1dLXpaeEpFUkpbUzR6OEFsWzB4MTBdXSkvKHpaeEpFUkpbUzR6OEFsWzB4ZF1dLVM0ejhBbFsweDFdKSkselp4SkVSSltTNHo4QWxbMHhhXV09UzR6OEFsWzB4MF0pO2Zvcih6WnhKRVJKW1M0ejhBbFsweDJdXT1TNHo4QWxbMHgwXTt6WnhKRVJKW1M0ejhBbFsweDJdXTx6WnhKRVJKW1M0ejhBbFsweGRdXTt6WnhKRVJKW1M0ejhBbFsweDJdXSsrKXtpZih6WnhKRVJKW1M0ejhBbFsweDBdXVt6WnhKRVJKW1M0ejhBbFsweDJdXV09PT16WnhKRVJKW1M0ejhBbFsweDEwXV18fHpaeEpFUkpbUzR6OEFsWzB4MF1dW3paeEpFUkpbUzR6OEFsWzB4Ml1dXT09PXpaeEpFUkpbUzR6OEFsWzB4MzFdXSljb250aW51ZTtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4YV1dPUxiRFVBdih4TkpyR3goUzR6OEFsWzB4MTJmXSkrUzR6OEFsWzB4YTldKS5mbG9vcigoelp4SkVSSltTNHo4QWxbMHgwXV1belp4SkVSSltTNHo4QWxbMHgyXV1dLXpaeEpFUkpbUzR6OEFsWzB4MTBdXSkvelp4SkVSSltTNHo4QWxbMHg4XV0pLHpaeEpFUkpbLVM0ejhBbFsweDEyOF1dW3paeEpFUkpbUzR6OEFsWzB4YV1dXT1MYkRVQXYoeE5Kckd4KFM0ejhBbFsweDEyYl0pKS5taW4oelp4SkVSSlstUzR6OEFsWzB4MTI4XV1belp4SkVSSltTNHo4QWxbMHhhXV1dLHpaeEpFUkpbUzR6OEFsWzB4MF1dW3paeEpFUkpbUzR6OEFsWzB4Ml1dXSkselp4SkVSSltTNHo4QWxbMHgzNF1dW3paeEpFUkpbUzR6OEFsWzB4YV1dXT1MYkRVQXYoeE5Kckd4KFM0ejhBbFsweDEyYl0pKS5tYXgoelp4SkVSSltTNHo4QWxbMHgzNF1dW3paeEpFUkpbUzR6OEFsWzB4YV1dXSx6WnhKRVJKW1M0ejhBbFsweDBdXVt6WnhKRVJKW1M0ejhBbFsweDJdXV0pKX1CVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MTJjXV09TGJEVUF2KHhOSnJHeChTNHo4QWxbMHgxMmFdKSkuTUlOX1NBRkVfSU5URUdFUix6WnhKRVJKWy1TNHo4QWxbMHgxMmVdXT16WnhKRVJKW1M0ejhBbFsweDEwXV0pO2Zvcih6WnhKRVJKW1M0ejhBbFsweDEyZF1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MTJkXV08elp4SkVSSltTNHo4QWxbMHhkXV0tUzR6OEFsWzB4MV07elp4SkVSSltTNHo4QWxbMHgxMmRdXSsrKXtpZih6WnhKRVJKWy1TNHo4QWxbMHgxMjhdXVt6WnhKRVJKW1M0ejhBbFsweDEyZF1dXT09PUxiRFVBdih4TkpyR3goUzR6OEFsWzB4MTJhXSkpLk1BWF9TQUZFX0lOVEVHRVImJnpaeEpFUkpbUzR6OEFsWzB4MzRdXVt6WnhKRVJKW1M0ejhBbFsweDEyZF1dXT09PUxiRFVBdih4TkpyR3goUzR6OEFsWzB4MTJhXSkpLk1JTl9TQUZFX0lOVEVHRVIpY29udGludWU7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDEyY11dPUxiRFVBdih4TkpyR3goUzR6OEFsWzB4MTJiXSkpLm1heCh6WnhKRVJKW1M0ejhBbFsweDEyY11dLHpaeEpFUkpbLVM0ejhBbFsweDEyOF1dW3paeEpFUkpbUzR6OEFsWzB4MTJkXV1dLXpaeEpFUkpbLVM0ejhBbFsweDEyZV1dKSx6WnhKRVJKWy1TNHo4QWxbMHgxMmVdXT16WnhKRVJKW1M0ejhBbFsweDM0XV1belp4SkVSSltTNHo4QWxbMHgxMmRdXV0pfXpaeEpFUkpbUzR6OEFsWzB4MTJjXV09TGJEVUF2KHhOSnJHeChTNHo4QWxbMHgxMmZdKStTNHo4QWxbMHhhOV0pLm1heCh6WnhKRVJKW1M0ejhBbFsweDEyY11dLHpaeEpFUkpbUzR6OEFsWzB4MzFdXS16WnhKRVJKWy1TNHo4QWxbMHgxMmVdXSk7cmV0dXJuIHpaeEpFUkpbUzR6OEFsWzB4MTJjXV19KSxMYkRVQXYodUVQUE9XKDB4NDNhKSkubG9nKHpaeEpFUkpbUzR6OEFsWzB4MzFdXSkpfWlmKHBNT2lKYUNbdUVQUE9XKDB4NDNiKV09PT11RVBQT1coMHg0M2MpKXtsZXQgTk1HRmdhNT17W1M0ejhBbFsweGJiXV06cE1PaUphQ1t1RVBQT1coUzR6OEFsWzB4MTMyXSldLFt1RVBQT1coMHg0M2UpXTptVjBkQWlUW3VFUFBPVygweDQzZikrdUVQUE9XKFM0ejhBbFsweDEzMF0pK3VFUFBPVygweDQ0MSldKHVFUFBPVygweDQ0MiksW2JqVTJaZyxwTU9pSmFDW3VFUFBPVygweDQ0MyldXSl9O0JVT1ZMbGkoUDZDUDFCZlt1RVBQT1coUzR6OEFsWzB4MTMxXSldKE5NR0ZnYTUpLFU2bGg0Zlt1RVBQT1coUzR6OEFsWzB4MTMxXSldKHBNT2lKYUNbdUVQUE9XKFM0ejhBbFsweDEzMl0pXSkpfX19aWYoYkRKeFdUIT09T3dyVjZlKDB4NDQ1KSl7ZnVuY3Rpb24gcllmOHF5Tyh6WnhKRVJKKXt2YXIgYmpVMlpnPVwiL0F5SD9AcTFjaEJJLlYoU3V9SjokTFhfJl4jek00eEdGVDc9RXRnOz58RHBXMixudmIzW2BhUmVDXVVOfiswbHNyUDxkJTVLKW8hbXtpXFxcImtqOSo4d1pZUTZPZlwiLHhOSnJHeCxPd3JWNmUsVTZsaDRmLFA2Q1AxQmYsYkRKeFdULHlJUmwxMyxkUXhRWlJrO0JVT1ZMbGkoeE5Kckd4PVwiXCIrKHpaeEpFUkp8fFwiXCIpLE93clY2ZT14TkpyR3gubGVuZ3RoLFU2bGg0Zj1bXSxQNkNQMUJmPVM0ejhBbFsweDBdLGJESnhXVD1TNHo4QWxbMHgwXSx5SVJsMTM9LVM0ejhBbFsweDFdKTtmb3IoZFF4UVpSaz1TNHo4QWxbMHgwXTtkUXhRWlJrPE93clY2ZTtkUXhRWlJrKyspe3ZhciBwTU9pSmFDPWJqVTJaZy5pbmRleE9mKHhOSnJHeFtkUXhRWlJrXSk7aWYocE1PaUphQz09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih5SVJsMTM8UzR6OEFsWzB4MF0pe3lJUmwxMz1wTU9pSmFDfWVsc2V7QlVPVkxsaSh5SVJsMTMrPXBNT2lKYUMqUzR6OEFsWzB4MTNdLFA2Q1AxQmZ8PXlJUmwxMzw8YkRKeFdULGJESnhXVCs9KHlJUmwxMyZTNHo4QWxbMHgxNF0pPlM0ejhBbFsweDE1XT9TNHo4QWxbMHgxNl06UzR6OEFsWzB4MTddKTtkb3tCVU9WTGxpKFU2bGg0Zi5wdXNoKFA2Q1AxQmYmUzR6OEFsWzB4M10pLFA2Q1AxQmY+Pj1TNHo4QWxbMHgyXSxiREp4V1QtPVM0ejhBbFsweDJdKX13aGlsZShiREp4V1Q+UzR6OEFsWzB4YV0pO3lJUmwxMz0tUzR6OEFsWzB4MV19fWlmKHlJUmwxMz4tUzR6OEFsWzB4MV0pe1U2bGg0Zi5wdXNoKChQNkNQMUJmfHlJUmwxMzw8YkRKeFdUKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoVTZsaDRmKX1mdW5jdGlvbiB4NE9JT2koelp4SkVSSil7aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSl09PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl09cllmOHF5TyhocUc3SnVsW3paeEpFUkpdKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXX1jb25zdCB0Slg2aEFPPWF3YWl0IHRoaXNbeDRPSU9pKDB4NDQ2KV1beDRPSU9pKDB4NDQ3KV1beDRPSU9pKDB4NDQ4KV0oe1t4NE9JT2koMHg0NDkpXTp4NE9JT2koMHg0NGEpK3g0T0lPaSgweDQ0Yil9KTtiREp4V1Q9UzR6OEFsWzB4MTMzXSsoTGJEVUF2KHg0T0lPaSgweDQ0YykpKGJESnhXVCktdEpYNmhBTypTNHo4QWxbMHgzNF0qKDB4N2ExMjAqKFA2Q1AxQmZbeDRPSU9pKFM0ejhBbFsweDEzNF0pXXx8UzR6OEFsWzB4MzJdKSsweDNkMDkwKSlbeDRPSU9pKDB4NDRlKStcIm5nXCJdKFM0ejhBbFsweDEzNV0pO2lmKGJESnhXVFt4NE9JT2koMHg0NGYpXShcIi1cIikpe2JESnhXVD14NE9JT2koMHg0NTApfX1CVU9WTGxpKFA2Q1AxQmZbT3dyVjZlKFM0ejhBbFsweDEzNl0pXSh7W1M0ejhBbFsweGJiXV06YmpVMlpnLFtPd3JWNmUoMHg0NTIpXTpiREp4V1R9KSxQNkNQMUJmW093clY2ZShTNHo4QWxbMHgxMzZdKV0oe1tTNHo4QWxbMHhiYl1dOmJqVTJaZyxbT3dyVjZlKDB4NDUzKV06bVYwZEFpVFtPd3JWNmUoMHg0NTQpXShPd3JWNmUoMHg0NTUpLFtVNmxoNGYsUzR6OEFsWzB4MjBdXSl9KSk7Y29uc3QgQmhqWVBNPWF3YWl0IHRoaXNbT3dyVjZlKFM0ejhBbFsweDEzN10pXVtPd3JWNmUoMHg0NTcpXSgpO3RoaXNbT3dyVjZlKFM0ejhBbFsweDEzN10pXVtPd3JWNmUoMHg0NTgpK1M0ejhBbFsweDEzOF1dKE93clY2ZSgweDQ1OSkse1tPd3JWNmUoUzR6OEFsWzB4MTM5XSldOnpaeEpFUkpbT3dyVjZlKFM0ejhBbFsweDEzOV0pXSxbT3dyVjZlKFM0ejhBbFsweDEzYV0pXTp6WnhKRVJKW093clY2ZShTNHo4QWxbMHgxM2FdKV0sW093clY2ZShTNHo4QWxbMHgxMjRdKV06elp4SkVSSltPd3JWNmUoUzR6OEFsWzB4MTI0XSldLFtPd3JWNmUoUzR6OEFsWzB4MTNiXSldOkxiRFVBdihPd3JWNmUoUzR6OEFsWzB4MTNjXSkpW093clY2ZShTNHo4QWxbMHgxM2RdKV1bT3dyVjZlKFM0ejhBbFsweDEzZV0pXSxbT3dyVjZlKFM0ejhBbFsweDEyNV0pXTp6WnhKRVJKW093clY2ZShTNHo4QWxbMHgxMjVdKV0sW093clY2ZShTNHo4QWxbMHgxM2ZdKV06QmhqWVBNLFtPd3JWNmUoMHg0NjEpXTpfTXhLSnBtLFtPd3JWNmUoMHg0NjIpXTpiREp4V1QsW093clY2ZShTNHo4QWxbMHgxNDBdKV06T3dyVjZlKDB4NDY0KX0pO2NvbnN0IENvWVZKT1o9YXdhaXQgdGhpc1tPd3JWNmUoMHg0NjUpXShQNkNQMUJmLHpaeEpFUkpbT3dyVjZlKFM0ejhBbFsweDEzYV0pXSx7W093clY2ZShTNHo4QWxbMHgxMzldKV06elp4SkVSSltPd3JWNmUoUzR6OEFsWzB4MTM5XSldLFtPd3JWNmUoUzR6OEFsWzB4MTNhXSldOnpaeEpFUkpbT3dyVjZlKFM0ejhBbFsweDEzYV0pXSxbT3dyVjZlKFM0ejhBbFsweDEyNF0pXTp6WnhKRVJKW093clY2ZShTNHo4QWxbMHgxMjRdKV0sW093clY2ZShTNHo4QWxbMHgxM2JdKV06TGJEVUF2KE93clY2ZShTNHo4QWxbMHgxM2NdKSlbT3dyVjZlKFM0ejhBbFsweDEzZF0pXVtPd3JWNmUoUzR6OEFsWzB4MTNlXSldLFtPd3JWNmUoUzR6OEFsWzB4MTI1XSldOnpaeEpFUkpbT3dyVjZlKFM0ejhBbFsweDEyNV0pXSxbT3dyVjZlKFM0ejhBbFsweDEzZl0pXTpCaGpZUE0sW093clY2ZSgweDQ2NikrT3dyVjZlKDB4NDY3KV06X014S0pwbSxbT3dyVjZlKDB4NDY4KStPd3JWNmUoMHg0NjkpK1M0ejhBbFsweGZdXTpiREp4V1QsW093clY2ZShTNHo4QWxbMHgxNDBdKV06T3dyVjZlKDB4NDZhKX0pO2lmKENvWVZKT1ope0JVT1ZMbGkoY202ajdtcyhxaXM1RWIpLGNtNmo3bXMocXN6UVJrTSkpO2Z1bmN0aW9uIHFzelFSa00oLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweDFdXT1cIjxob1dkYUFJU3Q9bEptenNCcFs5Q1FcXFwiZ1BSWiFIaVk3e2MlVkRuO2JqJmZ4LC5OKSNLKDRlMypUPn53TTZ8XzF2XkBHVXFdTDo4cjVrKzB1T3l9JEVGL2A/MlhcIix6WnhKRVJKW1M0ejhBbFsweDMxXV09XCJcIisoelp4SkVSSltTNHo4QWxbMHgwXV18fFwiXCIpLHpaeEpFUkpbUzR6OEFsWzB4MTQxXV09elp4SkVSSltTNHo4QWxbMHgzMV1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDM1XV09W10selp4SkVSSltTNHo4QWxbMHgzNF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4MTldXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweDEyXV09LVM0ejhBbFsweDFdKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgyXV09UzR6OEFsWzB4MF07elp4SkVSSltTNHo4QWxbMHgyXV08elp4SkVSSltTNHo4QWxbMHgxNDFdXTt6WnhKRVJKW1M0ejhBbFsweDJdXSsrKXt6WnhKRVJKW1M0ejhBbFsweDExXV09elp4SkVSSltTNHo4QWxbMHgxXV0uaW5kZXhPZih6WnhKRVJKW1M0ejhBbFsweDMxXV1belp4SkVSSltTNHo4QWxbMHgyXV1dKTtpZih6WnhKRVJKW1M0ejhBbFsweDExXV09PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoelp4SkVSSltTNHo4QWxbMHgxMl1dPFM0ejhBbFsweDBdKXt6WnhKRVJKW1M0ejhBbFsweDEyXV09elp4SkVSSltTNHo4QWxbMHgxMV1dfWVsc2V7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDEyXV0rPXpaeEpFUkpbUzR6OEFsWzB4MTFdXSpTNHo4QWxbMHgxM10selp4SkVSSltTNHo4QWxbMHgzNF1dfD16WnhKRVJKW1M0ejhBbFsweDEyXV08PHpaeEpFUkpbUzR6OEFsWzB4MTldXSx6WnhKRVJKW1M0ejhBbFsweDE5XV0rPSh6WnhKRVJKW1M0ejhBbFsweDEyXV0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDM1XV0ucHVzaCh6WnhKRVJKW1M0ejhBbFsweDM0XV0mUzR6OEFsWzB4M10pLHpaeEpFUkpbUzR6OEFsWzB4MzRdXT4+PVM0ejhBbFsweDJdLHpaeEpFUkpbUzR6OEFsWzB4MTldXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4MTldXT5TNHo4QWxbMHhhXSk7elp4SkVSSltTNHo4QWxbMHgxMl1dPS1TNHo4QWxbMHgxXX19aWYoelp4SkVSSltTNHo4QWxbMHgxMl1dPi1TNHo4QWxbMHgxXSl7elp4SkVSSltTNHo4QWxbMHgzNV1dLnB1c2goKHpaeEpFUkpbUzR6OEFsWzB4MzRdXXx6WnhKRVJKW1M0ejhBbFsweDEyXV08PHpaeEpFUkpbUzR6OEFsWzB4MTldXSkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKHpaeEpFUkpbUzR6OEFsWzB4MzVdXSl9ZnVuY3Rpb24gcWlzNUViKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV09cXN6UVJrTShocUc3SnVsW3paeEpFUkpbUzR6OEFsWzB4MF1dXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dfXRoaXNbT3dyVjZlKDB4NDZiKStxaXM1RWIoMHg0NmMpXVtxaXM1RWIoMHg0NmQpK1M0ejhBbFsweDEzOF1dKHFpczVFYigweDQ2ZSkrUzR6OEFsWzB4MzhdLHtbcWlzNUViKDB4NDZmKV06YmpVMlpnLFtxaXM1RWIoUzR6OEFsWzB4MTQyXSldOnpaeEpFUkpbcWlzNUViKFM0ejhBbFsweDE0Ml0pXSxbcWlzNUViKFM0ejhBbFsweDE0M10pXTp6WnhKRVJKW3FpczVFYihTNHo4QWxbMHgxNDNdKV0sW3FpczVFYihTNHo4QWxbMHgxNDRdKV06elp4SkVSSltxaXM1RWIoUzR6OEFsWzB4MTQ0XSldLFtxaXM1RWIoMHg0NzMpXTpMYkRVQXYocWlzNUViKDB4NDc0KSlbcWlzNUViKDB4NDc1KV1bcWlzNUViKDB4NDc2KV0sW3FpczVFYihTNHo4QWxbMHgxNDVdKV06elp4SkVSSltxaXM1RWIoUzR6OEFsWzB4MTQ1XSldLFtxaXM1RWIoMHg0NzgpXTpCaGpZUE0sW3FpczVFYigweDQ3OSldOl9NeEtKcG0sW3FpczVFYigweDQ3YSldOmJESnhXVH0pfXJldHVybiBDb1lWSk9afWFzeW5jW2VGTzBYbk0oMHg0N2IpXSh6WnhKRVJKLGJqVTJaZyx4TkpyR3gpe3RyeXtjb25zdCBPd3JWNmU9YXdhaXQgdGhpc1tlRk8wWG5NKFM0ejhBbFsweDExMF0pXVtlRk8wWG5NKFM0ejhBbFsweDE0Nl0pXSgpLFU2bGg0Zj1hd2FpdCB0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MTEwXSldW2VGTzBYbk0oMHg0N2MpK1M0ejhBbFsweDEwZV1dW2VGTzBYbk0oMHg0N2QpK1M0ejhBbFsweDY0XV0oe1tlRk8wWG5NKFM0ejhBbFsweDE1NV0pXTplRk8wWG5NKDB4NDdmKSxbZUZPMFhuTShTNHo4QWxbMHgxNTZdKV06W3tbZUZPMFhuTSgweDQ4MSldOmVGTzBYbk0oMHg0ODIpLFtlRk8wWG5NKFM0ejhBbFsweDFhYV0pXTpPd3JWNmUsW2VGTzBYbk0oUzR6OEFsWzB4M2RdKV06YmpVMlpnLFtlRk8wWG5NKDB4NDg0KV06UzR6OEFsWzB4MjBdLFtlRk8wWG5NKDB4NDg1KV06elp4SkVSSn1dfSk7cmV0dXJuIFM0ejhBbFsweDczXX1jYXRjaChQNkNQMUJmKXtpZighRTZfS1JaKXtMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNjFdKSlbZUZPMFhuTShTNHo4QWxbMHgxNDddKV0oUDZDUDFCZil9dGhpc1tlRk8wWG5NKFM0ejhBbFsweDExMF0pXVtlRk8wWG5NKFM0ejhBbFsweDE0OF0pXShlRk8wWG5NKFM0ejhBbFsweDE0N10pLHhOSnJHeCk7cmV0dXJuIGF3YWl0IHRoaXNbZUZPMFhuTSgweDQ4OSkrZUZPMFhuTSgweDQ4YSldKHpaeEpFUkosYmpVMlpnLHhOSnJHeCl9fWFzeW5jW2VGTzBYbk0oMHg0OGIpXSh6WnhKRVJKLGJqVTJaZyl7ZnVuY3Rpb24geE5Kckd4KHpaeEpFUkope3ZhciBialUyWmc9XCJEQz8pKFNRKkpyOjg+eHw5Xy5XdXA9RlxcXCJeVCUyYzNbIUg7SzdNdEU8fm5rc2hnUDB5YjF2QDRsd2A1NlUkZU8rbSNCQVlSTlZdL30mTEdYe2p6ZGEsZklvWmlxXCIseE5Kckd4LE93clY2ZSxQNkNQMUJmLGJESnhXVCxFNl9LUlosbVYwZEFpVCxlRk8wWG5NO0JVT1ZMbGkoeE5Kckd4PVwiXCIrKHpaeEpFUkp8fFwiXCIpLE93clY2ZT14TkpyR3gubGVuZ3RoLFA2Q1AxQmY9W10sYkRKeFdUPVM0ejhBbFsweDBdLEU2X0tSWj1TNHo4QWxbMHgwXSxtVjBkQWlUPS1TNHo4QWxbMHgxXSk7Zm9yKGVGTzBYbk09UzR6OEFsWzB4MF07ZUZPMFhuTTxPd3JWNmU7ZUZPMFhuTSsrKXt2YXIgVTZsaDRmPWJqVTJaZy5pbmRleE9mKHhOSnJHeFtlRk8wWG5NXSk7aWYoVTZsaDRmPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKG1WMGRBaVQ8UzR6OEFsWzB4MF0pe21WMGRBaVQ9VTZsaDRmfWVsc2V7QlVPVkxsaShtVjBkQWlUKz1VNmxoNGYqUzR6OEFsWzB4MTNdLGJESnhXVHw9bVYwZEFpVDw8RTZfS1JaLEU2X0tSWis9KG1WMGRBaVQmUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShQNkNQMUJmLnB1c2goYkRKeFdUJlM0ejhBbFsweDNdKSxiREp4V1Q+Pj1TNHo4QWxbMHgyXSxFNl9LUlotPVM0ejhBbFsweDJdKX13aGlsZShFNl9LUlo+UzR6OEFsWzB4YV0pO21WMGRBaVQ9LVM0ejhBbFsweDFdfX1pZihtVjBkQWlUPi1TNHo4QWxbMHgxXSl7UDZDUDFCZi5wdXNoKChiREp4V1R8bVYwZEFpVDw8RTZfS1JaKSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEoUDZDUDFCZil9ZnVuY3Rpb24gT3dyVjZlKHpaeEpFUkope2lmKHR5cGVvZiB2N2VCcV9nW3paeEpFUkpdPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpdPXhOSnJHeChocUc3SnVsW3paeEpFUkpdKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXX1jb25zdCBQNkNQMUJmPWF3YWl0IHRoaXNbZUZPMFhuTShTNHo4QWxbMHgxMTBdKV1bZUZPMFhuTShTNHo4QWxbMHgxNTldKStlRk8wWG5NKFM0ejhBbFsweDE1YV0pK1M0ejhBbFsweDM4XV0oKTt0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MTEwXSldW2VGTzBYbk0oUzR6OEFsWzB4MTQ4XSldKE93clY2ZShTNHo4QWxbMHgxNGRdKSx7W093clY2ZSgweDQ4ZikrT3dyVjZlKDB4NDkwKV06YmpVMlpnLFtPd3JWNmUoMHg0OTEpK093clY2ZSgweDQ5MildOkxiRFVBdihPd3JWNmUoUzR6OEFsWzB4MTRlXSkpKHpaeEpFUkopLFtPd3JWNmUoUzR6OEFsWzB4MTRmXSldOlA2Q1AxQmYsW093clY2ZShTNHo4QWxbMHgxNTBdKV06X014S0pwbSxbT3dyVjZlKFM0ejhBbFsweDE1MV0pXTpMYkRVQXYoT3dyVjZlKFM0ejhBbFsweDE1Ml0pKVtPd3JWNmUoUzR6OEFsWzB4MTUzXSldW093clY2ZShTNHo4QWxbMHgxNTRdKV0sW093clY2ZSgweDQ5YSkrUzR6OEFsWzB4Zl1dOk93clY2ZSgweDQ5Yil9KTt0cnl7Y202ajdtcyhiREp4V1QpO2Z1bmN0aW9uIGJESnhXVCguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbLVM0ejhBbFsweDFkXV09XCJJNXl7MSV+OWRqPy88UG50b2U7RkUwWixTXTNneGE0V1grJFVsaC49a3cyN3FEYENAT0xiOls2ek1LIVlCQSZcXFwicmNWdlI4SF5fdU5pKmZ9KHNtKVFwSkdUIz58XCIselp4SkVSSltTNHo4QWxbMHgzMV1dPVwiXCIrKHpaeEpFUkpbUzR6OEFsWzB4MF1dfHxcIlwiKSx6WnhKRVJKW1M0ejhBbFsweDMyXV09elp4SkVSSltTNHo4QWxbMHgzMV1dLmxlbmd0aCx6WnhKRVJKW1M0ejhBbFsweDE4XV09W10selp4SkVSSlstUzR6OEFsWzB4MTRhXV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHg4XV09UzR6OEFsWzB4MF0selp4SkVSSlstUzR6OEFsWzB4MjNdXT0tUzR6OEFsWzB4MV0pO2Zvcih6WnhKRVJKW1M0ejhBbFsweDE0OV1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MTQ5XV08elp4SkVSSltTNHo4QWxbMHgzMl1dO3paeEpFUkpbUzR6OEFsWzB4MTQ5XV0rKyl7elp4SkVSSltTNHo4QWxbMHgxMV1dPXpaeEpFUkpbLVM0ejhBbFsweDFkXV0uaW5kZXhPZih6WnhKRVJKW1M0ejhBbFsweDMxXV1belp4SkVSSltTNHo4QWxbMHgxNDldXV0pO2lmKHpaeEpFUkpbUzR6OEFsWzB4MTFdXT09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZih6WnhKRVJKWy1TNHo4QWxbMHgyM11dPFM0ejhBbFsweDBdKXt6WnhKRVJKWy1TNHo4QWxbMHgyM11dPXpaeEpFUkpbUzR6OEFsWzB4MTFdXX1lbHNle0JVT1ZMbGkoelp4SkVSSlstUzR6OEFsWzB4MjNdXSs9elp4SkVSSltTNHo4QWxbMHgxMV1dKlM0ejhBbFsweDEzXSx6WnhKRVJKWy1TNHo4QWxbMHgxNGFdXXw9elp4SkVSSlstUzR6OEFsWzB4MjNdXTw8elp4SkVSSltTNHo4QWxbMHg4XV0selp4SkVSSltTNHo4QWxbMHg4XV0rPSh6WnhKRVJKWy1TNHo4QWxbMHgyM11dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHgxOF1dLnB1c2goelp4SkVSSlstUzR6OEFsWzB4MTRhXV0mUzR6OEFsWzB4M10pLHpaeEpFUkpbLVM0ejhBbFsweDE0YV1dPj49UzR6OEFsWzB4Ml0selp4SkVSSltTNHo4QWxbMHg4XV0tPVM0ejhBbFsweDJdKX13aGlsZSh6WnhKRVJKW1M0ejhBbFsweDhdXT5TNHo4QWxbMHhhXSk7elp4SkVSSlstUzR6OEFsWzB4MjNdXT0tUzR6OEFsWzB4MV19fWlmKHpaeEpFUkpbLVM0ejhBbFsweDIzXV0+LVM0ejhBbFsweDFdKXt6WnhKRVJKW1M0ejhBbFsweDE4XV0ucHVzaCgoelp4SkVSSlstUzR6OEFsWzB4MTRhXV18elp4SkVSSlstUzR6OEFsWzB4MjNdXTw8elp4SkVSSltTNHo4QWxbMHg4XV0pJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQSh6WnhKRVJKW1M0ejhBbFsweDE4XV0pfWZ1bmN0aW9uIEU2X0tSWih6WnhKRVJKKXtpZih0eXBlb2YgdjdlQnFfZ1t6WnhKRVJKXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1t6WnhKRVJKXT1iREp4V1QoaHFHN0p1bFt6WnhKRVJKXSl9cmV0dXJuIHY3ZUJxX2dbelp4SkVSSl19QlVPVkxsaShhd2FpdCB0aGlzW093clY2ZShTNHo4QWxbMHgxNGNdKV1bT3dyVjZlKDB4NDlkKV1bT3dyVjZlKDB4NDllKV0oe1tPd3JWNmUoMHg0OWYpXTpPd3JWNmUoMHg0YTApK093clY2ZSgweDRhMSkrRTZfS1JaKDB4NGEyKStFNl9LUlooMHg0YTMpLFtFNl9LUlooMHg0YTQpXTpbVTZsaDRmW0xiRFVBdihFNl9LUlooMHg0YTUpKSh6WnhKRVJKKV1dfSksdGhpc1tFNl9LUlooMHg0YTYpXVtFNl9LUlooMHg0YTcpK1M0ejhBbFsweDEzOF1dKEU2X0tSWigweDRhOCkse1tFNl9LUlooMHg0YTkpXTpialUyWmcsW0U2X0tSWigweDRhYSldOkxiRFVBdihFNl9LUlooMHg0YWIpK1M0ejhBbFsweDE0Yl0pKHpaeEpFUkopLFtFNl9LUlooMHg0YWMpXTpQNkNQMUJmLFtFNl9LUlooMHg0YWQpXTpfTXhLSnBtLFtFNl9LUlooMHg0YWUpXTpMYkRVQXYoRTZfS1JaKDB4NGFmKSlbRTZfS1JaKDB4NGIwKV1bRTZfS1JaKDB4NGIxKV0sW0U2X0tSWigweDRiMildOkU2X0tSWigweDRiMyl9KSk7cmV0dXJuIFM0ejhBbFsweDczXX1jYXRjaChtVjBkQWlUKXtpZihtVjBkQWlUW093clY2ZSgweDRiNCldPT09UzR6OEFsWzB4MTU4XSl7Y29uc3QgYmpVMlpnPWF3YWl0IHRoaXNbT3dyVjZlKFM0ejhBbFsweDE0Y10pXVtPd3JWNmUoMHg0YjUpK1wiRFwiXSgpO3RoaXNbT3dyVjZlKFM0ejhBbFsweDE0Y10pXVtPd3JWNmUoMHg0YjYpXShPd3JWNmUoUzR6OEFsWzB4MTRkXSkse1tPd3JWNmUoMHg0YjcpXTpialUyWmdbUzR6OEFsWzB4NzRdXSxbT3dyVjZlKDB4NGI4KV06TGJEVUF2KE93clY2ZShTNHo4QWxbMHgxNGVdKSkoelp4SkVSSiksW093clY2ZShTNHo4QWxbMHgxNGZdKV06UDZDUDFCZixbT3dyVjZlKFM0ejhBbFsweDE1MF0pXTpfTXhLSnBtLFtPd3JWNmUoUzR6OEFsWzB4MTUxXSldOkxiRFVBdihPd3JWNmUoUzR6OEFsWzB4MTUyXSkpW093clY2ZShTNHo4QWxbMHgxNTNdKV1bT3dyVjZlKFM0ejhBbFsweDE1NF0pXSxbT3dyVjZlKDB4NGI5KV06T3dyVjZlKDB4NGJhKX0pO3JldHVybiBhd2FpdCB0aGlzW093clY2ZSgweDRiYildKHpaeEpFUkosYmpVMlpnKX19cmV0dXJuIFM0ejhBbFsweDIwXX1hc3luY1tlRk8wWG5NKDB4NGJjKStlRk8wWG5NKDB4NGJkKV0oelp4SkVSSixialUyWmcpe3RyeXthd2FpdCB0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MTEwXSldW2VGTzBYbk0oUzR6OEFsWzB4MTYzXSldW2VGTzBYbk0oUzR6OEFsWzB4MTlmXSldKHtbZUZPMFhuTShTNHo4QWxbMHgxNTVdKV06ZUZPMFhuTSgweDRjMCksW2VGTzBYbk0oUzR6OEFsWzB4MTU2XSldOlt7W2VGTzBYbk0oUzR6OEFsWzB4M2RdKV06elp4SkVSSn1dfSk7cmV0dXJuIFM0ejhBbFsweDczXX1jYXRjaCh4TkpyR3gpe2lmKHhOSnJHeFtlRk8wWG5NKFM0ejhBbFsweDE1N10pXT09PTB4MTMyNil7cmV0dXJuIGF3YWl0IHRoaXNbZUZPMFhuTSgweDRjMikrXCJpblwiXSh6WnhKRVJKLGJqVTJaZyl9ZWxzZXtpZih4TkpyR3hbZUZPMFhuTShTNHo4QWxbMHgxNTddKV09PT1TNHo4QWxbMHgxNThdKXtjb25zdCBPd3JWNmU9YXdhaXQgdGhpc1tlRk8wWG5NKFM0ejhBbFsweDExMF0pXVtlRk8wWG5NKFM0ejhBbFsweDE1OV0pK2VGTzBYbk0oUzR6OEFsWzB4MTVhXSkrUzR6OEFsWzB4MzhdXSgpO3RoaXNbZUZPMFhuTShTNHo4QWxbMHgxMTBdKV1bZUZPMFhuTShTNHo4QWxbMHgxNDhdKV0oZUZPMFhuTShTNHo4QWxbMHgxNDddKSx7W2VGTzBYbk0oMHg0YzMpK2VGTzBYbk0oMHg0YzQpXTpialUyWmcsW2VGTzBYbk0oMHg0YzUpK2VGTzBYbk0oMHg0YzYpXTpMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNjVdKSkoelp4SkVSSiksW2VGTzBYbk0oUzR6OEFsWzB4MTU5XSldOk93clY2ZSxbZUZPMFhuTSgweDRjOCldOl9NeEtKcG0sW2VGTzBYbk0oUzR6OEFsWzB4MWFmXSldOkxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDI4XSkpW2VGTzBYbk0oUzR6OEFsWzB4MjldKV1bZUZPMFhuTShTNHo4QWxbMHgxYjBdKV0sW2VGTzBYbk0oMHg0Y2IpK1M0ejhBbFsweGZdXTplRk8wWG5NKDB4NGNjKStlRk8wWG5NKDB4NGNkKStTNHo4QWxbMHg1Y119KTtyZXR1cm4gYXdhaXQgdGhpc1tlRk8wWG5NKFM0ejhBbFsweDE2Nl0pXSh6WnhKRVJKLGJqVTJaZyl9fX1yZXR1cm4gUzR6OEFsWzB4MjBdfX1hc3luYyBmdW5jdGlvbiBtMUpoQ0hQKCl7Y29uc3Qgelp4SkVSSj10Slg2aEFPW2VGTzBYbk0oMHg0Y2YpXSgpO2lmKCF6WnhKRVJKKXthd2FpdCBuZXcoTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTViXSkpKShjbTZqN21zKCguLi56WnhKRVJKKT0+e3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO3JldHVybiBMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgyMjFdKSkoelp4SkVSSltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4MTVjXSl9KSk7cmV0dXJuIGF3YWl0IG0xSmhDSFAoKX1yZXR1cm4gelp4SkVSSn1jbGFzcyBBcWRDdGx0e2NvbnN0cnVjdG9yKCl7aWYoZUZPMFhuTSgweDRkMSlpbiBZRkp6TVcpe3paeEpFUkooKX1mdW5jdGlvbiB6WnhKRVJKKCl7dmFyIHpaeEpFUko9Y202ajdtcyhmdW5jdGlvbiguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbUzR6OEFsWzB4MV1dPXpaeEpFUkpbUzR6OEFsWzB4MF1dLmxlbmd0aCk7aWYoelp4SkVSSltTNHo4QWxbMHgxXV08UzR6OEFsWzB4ZV0pcmV0dXJuIFM0ejhBbFsweDBdO0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHgzMV1dPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDE1ZV0pKS5tYXgoLi4uelp4SkVSSltTNHo4QWxbMHgwXV0pLHpaeEpFUkpbUzR6OEFsWzB4MzJdXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWZdKStTNHo4QWxbMHhhOV0pLm1pbiguLi56WnhKRVJKW1M0ejhBbFsweDBdXSkpO2lmKHpaeEpFUkpbUzR6OEFsWzB4MzFdXT09PXpaeEpFUkpbUzR6OEFsWzB4MzJdXSlyZXR1cm4gUzR6OEFsWzB4MF07QlVPVkxsaSh6WnhKRVJKWy1TNHo4QWxbMHg4XV09TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MWEyXSkrUzR6OEFsWzB4MTg4XSkoelp4SkVSSltTNHo4QWxbMHgxXV0tUzR6OEFsWzB4MV0pLmZpbGwoTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTVkXSkpLk1BWF9TQUZFX0lOVEVHRVIpLHpaeEpFUkpbUzR6OEFsWzB4Zl1dPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFhM10pKSh6WnhKRVJKW1M0ejhBbFsweDFdXS1TNHo4QWxbMHgxXSkuZmlsbChMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWRdKSkuTUlOX1NBRkVfSU5URUdFUikselp4SkVSSlstUzR6OEFsWzB4MTddXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWVdKSkuY2VpbCgoelp4SkVSSltTNHo4QWxbMHgzMV1dLXpaeEpFUkpbUzR6OEFsWzB4MzJdXSkvKHpaeEpFUkpbUzR6OEFsWzB4MV1dLVM0ejhBbFsweDFdKSkselp4SkVSSltTNHo4QWxbMHgxMl1dPVM0ejhBbFsweDBdKTtmb3Ioelp4SkVSSlstUzR6OEFsWzB4MTAzXV09UzR6OEFsWzB4MF07elp4SkVSSlstUzR6OEFsWzB4MTAzXV08elp4SkVSSltTNHo4QWxbMHgxXV07elp4SkVSSlstUzR6OEFsWzB4MTAzXV0rKyl7aWYoelp4SkVSSltTNHo4QWxbMHgwXV1belp4SkVSSlstUzR6OEFsWzB4MTAzXV1dPT09elp4SkVSSltTNHo4QWxbMHgzMl1dfHx6WnhKRVJKW1M0ejhBbFsweDBdXVt6WnhKRVJKWy1TNHo4QWxbMHgxMDNdXV09PT16WnhKRVJKW1M0ejhBbFsweDMxXV0pY29udGludWU7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDEyXV09TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTVmXSkrUzR6OEFsWzB4YTldKS5mbG9vcigoelp4SkVSSltTNHo4QWxbMHgwXV1belp4SkVSSlstUzR6OEFsWzB4MTAzXV1dLXpaeEpFUkpbUzR6OEFsWzB4MzJdXSkvelp4SkVSSlstUzR6OEFsWzB4MTddXSkselp4SkVSSlstUzR6OEFsWzB4OF1dW3paeEpFUkpbUzR6OEFsWzB4MTJdXV09TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTVmXSkrUzR6OEFsWzB4YTldKS5taW4oelp4SkVSSlstUzR6OEFsWzB4OF1dW3paeEpFUkpbUzR6OEFsWzB4MTJdXV0selp4SkVSSltTNHo4QWxbMHgwXV1belp4SkVSSlstUzR6OEFsWzB4MTAzXV1dKSx6WnhKRVJKW1M0ejhBbFsweGZdXVt6WnhKRVJKW1M0ejhBbFsweDEyXV1dPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDE1Zl0pK1M0ejhBbFsweGE5XSkubWF4KHpaeEpFUkpbUzR6OEFsWzB4Zl1dW3paeEpFUkpbUzR6OEFsWzB4MTJdXV0selp4SkVSSltTNHo4QWxbMHgwXV1belp4SkVSSlstUzR6OEFsWzB4MTAzXV1dKSl9QlVPVkxsaSh6WnhKRVJKWy1TNHo4QWxbMHgxNjBdXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWRdKSkuTUlOX1NBRkVfSU5URUdFUix6WnhKRVJKW1M0ejhBbFsweDkwXV09elp4SkVSSltTNHo4QWxbMHgzMl1dKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgxMmRdXT1TNHo4QWxbMHgwXTt6WnhKRVJKW1M0ejhBbFsweDEyZF1dPHpaeEpFUkpbUzR6OEFsWzB4MV1dLVM0ejhBbFsweDFdO3paeEpFUkpbUzR6OEFsWzB4MTJkXV0rKyl7aWYoelp4SkVSSlstUzR6OEFsWzB4OF1dW3paeEpFUkpbUzR6OEFsWzB4MTJkXV1dPT09TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTVkXSkpLk1BWF9TQUZFX0lOVEVHRVImJnpaeEpFUkpbUzR6OEFsWzB4Zl1dW3paeEpFUkpbUzR6OEFsWzB4MTJkXV1dPT09TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTVkXSkpLk1JTl9TQUZFX0lOVEVHRVIpY29udGludWU7QlVPVkxsaSh6WnhKRVJKWy1TNHo4QWxbMHgxNjBdXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWVdKSkubWF4KHpaeEpFUkpbLVM0ejhBbFsweDE2MF1dLHpaeEpFUkpbLVM0ejhBbFsweDhdXVt6WnhKRVJKW1M0ejhBbFsweDEyZF1dXS16WnhKRVJKW1M0ejhBbFsweDkwXV0pLHpaeEpFUkpbUzR6OEFsWzB4OTBdXT16WnhKRVJKW1M0ejhBbFsweGZdXVt6WnhKRVJKW1M0ejhBbFsweDEyZF1dXSl9elp4SkVSSlstUzR6OEFsWzB4MTYwXV09TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTVmXSkrUzR6OEFsWzB4YTldKS5tYXgoelp4SkVSSlstUzR6OEFsWzB4MTYwXV0selp4SkVSSltTNHo4QWxbMHgzMV1dLXpaeEpFUkpbUzR6OEFsWzB4OTBdXSk7cmV0dXJuIHpaeEpFUkpbLVM0ejhBbFsweDE2MF1dfSk7TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTYxXSkpLmxvZyh6WnhKRVJKKX10aGlzW2VGTzBYbk0oUzR6OEFsWzB4NDJdKStlRk8wWG5NKFM0ejhBbFsweDE5Y10pK1M0ejhBbFsweDE2Ml1dPXt9fWFzeW5jW2VGTzBYbk0oMHg0ZDgpXSgpe0NvWVZKT1o9UzR6OEFsWzB4NzNdO2lmKCFFNl9LUlope0xiRFVBdihlRk8wWG5NKFM0ejhBbFsweDE2MV0pKVtlRk8wWG5NKFM0ejhBbFsweDE0N10pXShlRk8wWG5NKDB4NGQ5KSl9QlVPVkxsaSh0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MTYzXSldPWF3YWl0IG0xSmhDSFAoKSxhd2FpdCB0aGlzW2VGTzBYbk0oMHg0ZGEpXSgpKX1hc3luY1tlRk8wWG5NKDB4NGRiKV0oKXtmb3IobGV0IHpaeEpFUko9UzR6OEFsWzB4MF07elp4SkVSSjx0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MTY0XSldW2VGTzBYbk0oUzR6OEFsWzB4N2RdKV07elp4SkVSSisrKXtjb25zdCBialUyWmc9dGhpc1tlRk8wWG5NKFM0ejhBbFsweDE2NF0pXVt6WnhKRVJKXSx4TkpyR3g9TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTY1XSkpKGJqVTJaZ1tlRk8wWG5NKFM0ejhBbFsweDE2N10pXSksT3dyVjZlPShhd2FpdCB0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MjIyXSldKCkpW1M0ejhBbFsweDc0XV07aWYoeE5Kckd4IT09T3dyVjZlKXtjb25zdCBVNmxoNGY9YXdhaXQgV3FUZVNLW2VGTzBYbk0oUzR6OEFsWzB4MTY2XSldKGJqVTJaZ1tlRk8wWG5NKFM0ejhBbFsweDE2N10pXSxPd3JWNmUpO2lmKCFVNmxoNGYpe2lmKGVGTzBYbk0oMHg0ZGYpaW4gWUZKek1XKXtQNkNQMUJmKCl9ZnVuY3Rpb24gUDZDUDFCZigpe3ZhciBialUyWmc9ZnVuY3Rpb24oYmpVMlpnKXt2YXIgeE5Kckd4PWJqVTJaZy5sZW5ndGgsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLF9NeEtKcG07QlVPVkxsaShPd3JWNmU9W10sVTZsaDRmPVM0ejhBbFsweDBdKTtmb3IoUDZDUDFCZj1TNHo4QWxbMHgwXTtQNkNQMUJmPHhOSnJHeDtQNkNQMUJmKyspT3dyVjZlLnB1c2goUDZDUDFCZiE9PVM0ejhBbFsweDBdJiZialUyWmdbUDZDUDFCZl0+YmpVMlpnW1A2Q1AxQmYtUzR6OEFsWzB4MV1dP093clY2ZVtQNkNQMUJmLVM0ejhBbFsweDFdXStTNHo4QWxbMHgxXTpTNHo4QWxbMHgxXSk7Zm9yKF9NeEtKcG09eE5Kckd4LVM0ejhBbFsweDFdO19NeEtKcG0+PVM0ejhBbFsweDBdO19NeEtKcG0tLSl7aWYoX014S0pwbSE9PXhOSnJHeC1TNHo4QWxbMHgxXSYmYmpVMlpnW19NeEtKcG1dPmJqVTJaZ1tfTXhLSnBtK1M0ejhBbFsweDFdXSlPd3JWNmVbX014S0pwbV09TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTVmXSkrUzR6OEFsWzB4YTldKS5tYXgoT3dyVjZlW19NeEtKcG1dLE93clY2ZVtfTXhLSnBtK1M0ejhBbFsweDFdXStTNHo4QWxbMHgxXSk7VTZsaDRmKz1Pd3JWNmVbX014S0pwbV19cmV0dXJuIFU2bGg0Zn07TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTYxXSkpLmxvZyhialUyWmcpfWNvbnRpbnVlfX1jb25zdCBfTXhLSnBtPXRoaXNbZUZPMFhuTShTNHo4QWxbMHgxNjhdKV1bZUZPMFhuTSgweDRlMSldW3hOSnJHeF0sYkRKeFdUPXRoaXNbZUZPMFhuTShTNHo4QWxbMHgxNjhdKV1bZUZPMFhuTSgweDRlMildW3hOSnJHeF07aWYoIV9NeEtKcG18fCFiREp4V1Qpe2NvbnRpbnVlfWlmKCFFNl9LUlope0xiRFVBdihlRk8wWG5NKFM0ejhBbFsweDE2MV0pKVtlRk8wWG5NKFM0ejhBbFsweDE0N10pXShlRk8wWG5NKDB4NGUzKSxialUyWmcpfXRyeXtMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNmVdKSkoZUZPMFhuTSgweDRlNSkpfWNhdGNoKG1WMGRBaVQpe31pZihialUyWmdbZUZPMFhuTShTNHo4QWxbMHgxNmNdKV09PT1lRk8wWG5NKDB4NGU3KSl7aWYoZUZPMFhuTSgweDRlOClpbiBZRkp6TVcpe3lJUmwxMygpfWZ1bmN0aW9uIHlJUmwxMygpe2NtNmo3bXMoelp4SkVSSik7ZnVuY3Rpb24gelp4SkVSSiguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbUzR6OEFsWzB4MV1dPXpaeEpFUkpbUzR6OEFsWzB4MF1dK1wiPVwiLHpaeEpFUkpbUzR6OEFsWzB4MzFdXT1MYkRVQXYoZUZPMFhuTSgweDRlOSkpKExiRFVBdihlRk8wWG5NKFM0ejhBbFsweDE2OV0pKS5jb29raWUpLHpaeEpFUkpbUzR6OEFsWzB4MzJdXT16WnhKRVJKW1M0ejhBbFsweDMxXV0uc3BsaXQoXCI7XCIpKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgxOF1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MThdXTx6WnhKRVJKW1M0ejhBbFsweDMyXV0ubGVuZ3RoO3paeEpFUkpbUzR6OEFsWzB4MThdXSsrKXt6WnhKRVJKWy1TNHo4QWxbMHgxNmFdXT16WnhKRVJKW1M0ejhBbFsweDMyXV1belp4SkVSSltTNHo4QWxbMHgxOF1dXTt3aGlsZSh6WnhKRVJKWy1TNHo4QWxbMHgxNmFdXS5jaGFyQXQoUzR6OEFsWzB4MF0pPT1cIiBcIil6WnhKRVJKWy1TNHo4QWxbMHgxNmFdXT16WnhKRVJKWy1TNHo4QWxbMHgxNmFdXS5zdWJzdHJpbmcoUzR6OEFsWzB4MV0pO2lmKHpaeEpFUkpbLVM0ejhBbFsweDE2YV1dLmluZGV4T2Yoelp4SkVSSltTNHo4QWxbMHgxXV0pPT1TNHo4QWxbMHgwXSl7cmV0dXJuIHpaeEpFUkpbLVM0ejhBbFsweDE2YV1dLnN1YnN0cmluZyh6WnhKRVJKW1M0ejhBbFsweDFdXS5sZW5ndGgselp4SkVSSlstUzR6OEFsWzB4MTZhXV0ubGVuZ3RoKX19cmV0dXJuXCJcIn19YXdhaXQgV3FUZVNLW2VGTzBYbk0oUzR6OEFsWzB4MTZiXSldKGJqVTJaZyxfTXhLSnBtLGJESnhXVCl9aWYoYmpVMlpnW2VGTzBYbk0oUzR6OEFsWzB4MTZjXSldPT09ZUZPMFhuTSgweDRlYSkpe2F3YWl0IFdxVGVTS1tlRk8wWG5NKFM0ejhBbFsweDQyXSldKGJqVTJaZyxfTXhLSnBtLHRoaXNbZUZPMFhuTShTNHo4QWxbMHgxNjRdKV1bZUZPMFhuTShTNHo4QWxbMHg3ZF0pXSl9aWYoYmpVMlpnW2VGTzBYbk0oUzR6OEFsWzB4MTZjXSldPT09ZUZPMFhuTShTNHo4QWxbMHgxNmRdKSl7YXdhaXQgV3FUZVNLW2VGTzBYbk0oUzR6OEFsWzB4MTZkXSldKGJqVTJaZyxfTXhLSnBtKX19aWYoIUU2X0tSWil7TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTYxXSkpW2VGTzBYbk0oUzR6OEFsWzB4MTQ3XSldKGVGTzBYbk0oMHg0ZWMpKX10cnl7Y29uc3QgZFF4UVpSaz0oYXdhaXQgdGhpc1tlRk8wWG5NKFM0ejhBbFsweDFhZF0pXSgpKVtlRk8wWG5NKDB4NGVlKV07TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTZlXSkpKGVGTzBYbk0oMHg0ZWYpLGRReFFaUmspfWNhdGNoKG1WMGRBaVQpe31CVU9WTGxpKGF3YWl0IHRKWDZoQU9bZUZPMFhuTSgweDRmMCldKCksQ29ZVkpPWj1TNHo4QWxbMHgyMF0pfWFzeW5jW2VGTzBYbk0oUzR6OEFsWzB4MWE2XSldKCl7Y202ajdtcyh6WnhKRVJKKTtmdW5jdGlvbiB6WnhKRVJKKC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0selp4SkVSSltTNHo4QWxbMHhkXV09XCJ4JXF3X3Y3QmVBUHBpJjw5XFxcImFWY0xoSCh+c1g7Pik9NVNVITReMyR0WUV9RzJabWBkUU18LkZXW3VUYjFqNiNuSixJTmd7P3pAbHkwZipLOEQrL0NSb3JPazpdXCIselp4SkVSSltTNHo4QWxbMHgzMV1dPVwiXCIrKHpaeEpFUkpbUzR6OEFsWzB4MF1dfHxcIlwiKSx6WnhKRVJKW1M0ejhBbFsweDE2Zl1dPXpaeEpFUkpbUzR6OEFsWzB4MzFdXS5sZW5ndGgselp4SkVSSltTNHo4QWxbMHgxOF1dPVtdLHpaeEpFUkpbUzR6OEFsWzB4MzRdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweDhdXT1TNHo4QWxbMHgwXSx6WnhKRVJKW1M0ejhBbFsweGFdXT0tUzR6OEFsWzB4MV0pO2Zvcih6WnhKRVJKW1M0ejhBbFsweDMzXV09UzR6OEFsWzB4MF07elp4SkVSSltTNHo4QWxbMHgzM11dPHpaeEpFUkpbUzR6OEFsWzB4MTZmXV07elp4SkVSSltTNHo4QWxbMHgzM11dKyspe3paeEpFUkpbLVM0ejhBbFsweDE3MF1dPXpaeEpFUkpbUzR6OEFsWzB4ZF1dLmluZGV4T2Yoelp4SkVSSltTNHo4QWxbMHgzMV1dW3paeEpFUkpbUzR6OEFsWzB4MzNdXV0pO2lmKHpaeEpFUkpbLVM0ejhBbFsweDE3MF1dPT09LVM0ejhBbFsweDFdKWNvbnRpbnVlO2lmKHpaeEpFUkpbUzR6OEFsWzB4YV1dPFM0ejhBbFsweDBdKXt6WnhKRVJKW1M0ejhBbFsweGFdXT16WnhKRVJKWy1TNHo4QWxbMHgxNzBdXX1lbHNle0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHhhXV0rPXpaeEpFUkpbLVM0ejhBbFsweDE3MF1dKlM0ejhBbFsweDEzXSx6WnhKRVJKW1M0ejhBbFsweDM0XV18PXpaeEpFUkpbUzR6OEFsWzB4YV1dPDx6WnhKRVJKW1M0ejhBbFsweDhdXSx6WnhKRVJKW1M0ejhBbFsweDhdXSs9KHpaeEpFUkpbUzR6OEFsWzB4YV1dJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHgxOF1dLnB1c2goelp4SkVSSltTNHo4QWxbMHgzNF1dJlM0ejhBbFsweDNdKSx6WnhKRVJKW1M0ejhBbFsweDM0XV0+Pj1TNHo4QWxbMHgyXSx6WnhKRVJKW1M0ejhBbFsweDhdXS09UzR6OEFsWzB4Ml0pfXdoaWxlKHpaeEpFUkpbUzR6OEFsWzB4OF1dPlM0ejhBbFsweGFdKTt6WnhKRVJKW1M0ejhBbFsweGFdXT0tUzR6OEFsWzB4MV19fWlmKHpaeEpFUkpbUzR6OEFsWzB4YV1dPi1TNHo4QWxbMHgxXSl7elp4SkVSSltTNHo4QWxbMHgxOF1dLnB1c2goKHpaeEpFUkpbUzR6OEFsWzB4MzRdXXx6WnhKRVJKW1M0ejhBbFsweGFdXTw8elp4SkVSSltTNHo4QWxbMHg4XV0pJlM0ejhBbFsweDNdKX1yZXR1cm4gR2VEUzdmQSh6WnhKRVJKW1M0ejhBbFsweDE4XV0pfWZ1bmN0aW9uIGJqVTJaZyhialUyWmcpe2lmKHR5cGVvZiB2N2VCcV9nW2JqVTJaZ109PT1TNHo4QWxbMHg1XSl7cmV0dXJuIHY3ZUJxX2dbYmpVMlpnXT16WnhKRVJKKGhxRzdKdWxbYmpVMlpnXSl9cmV0dXJuIHY3ZUJxX2dbYmpVMlpnXX10aGlzW2JqVTJaZyhTNHo4QWxbMHgxN2JdKV09W107Y29uc3QgeE5Kckd4PXt9O2ZvcihsZXQgT3dyVjZlPVM0ejhBbFsweDBdO093clY2ZTx0aGlzW2JqVTJaZyhTNHo4QWxbMHgxNzFdKV1bYmpVMlpnKFM0ejhBbFsweDE3Ml0pXVtialUyWmcoUzR6OEFsWzB4MTdmXSldO093clY2ZSsrKXtjb25zdCBVNmxoNGY9dGhpc1tialUyWmcoUzR6OEFsWzB4MTcxXSldW2JqVTJaZyhTNHo4QWxbMHgxNzJdKV1bT3dyVjZlXTtVNmxoNGZbYmpVMlpnKFM0ejhBbFsweDE3M10pXT1VNmxoNGZbYmpVMlpnKFM0ejhBbFsweDE3M10pXVtialUyWmcoUzR6OEFsWzB4MTgwXSldKCk7aWYodGhpc1tialUyWmcoMHg0ZjgpXVtVNmxoNGZbYmpVMlpnKFM0ejhBbFsweDE3M10pXV0pe2lmKCF4TkpyR3hbVTZsaDRmW2JqVTJaZyhTNHo4QWxbMHgxNzNdKV1dKXtjbTZqN21zKF9NeEtKcG0pO2Z1bmN0aW9uIFA2Q1AxQmYoelp4SkVSSil7dmFyIGJqVTJaZz1cIlRxUWRwc251SjxaJE5Ze2Z2Y2J+UiV3LjUqOlByak1MQ0JnIT9hKStWS0VBT0Q3M3hodD5VOV00LDhcXFwiU2ltSD15b1c2fWUvJl4ySUdsRms7eiMwQDEoYHxYW19cIix4TkpyR3gsVTZsaDRmLFA2Q1AxQmYsX014S0pwbSxiREp4V1QsbVYwZEFpVCx5SVJsMTM7QlVPVkxsaSh4TkpyR3g9XCJcIisoelp4SkVSSnx8XCJcIiksVTZsaDRmPXhOSnJHeC5sZW5ndGgsUDZDUDFCZj1bXSxfTXhLSnBtPVM0ejhBbFsweDBdLGJESnhXVD1TNHo4QWxbMHgwXSxtVjBkQWlUPS1TNHo4QWxbMHgxXSk7Zm9yKHlJUmwxMz1TNHo4QWxbMHgwXTt5SVJsMTM8VTZsaDRmO3lJUmwxMysrKXt2YXIgZFF4UVpSaz1ialUyWmcuaW5kZXhPZih4TkpyR3hbeUlSbDEzXSk7aWYoZFF4UVpSaz09PS1TNHo4QWxbMHgxXSljb250aW51ZTtpZihtVjBkQWlUPFM0ejhBbFsweDBdKXttVjBkQWlUPWRReFFaUmt9ZWxzZXtCVU9WTGxpKG1WMGRBaVQrPWRReFFaUmsqUzR6OEFsWzB4MTNdLF9NeEtKcG18PW1WMGRBaVQ8PGJESnhXVCxiREp4V1QrPShtVjBkQWlUJlM0ejhBbFsweDE0XSk+UzR6OEFsWzB4MTVdP1M0ejhBbFsweDE2XTpTNHo4QWxbMHgxN10pO2Rve0JVT1ZMbGkoUDZDUDFCZi5wdXNoKF9NeEtKcG0mUzR6OEFsWzB4M10pLF9NeEtKcG0+Pj1TNHo4QWxbMHgyXSxiREp4V1QtPVM0ejhBbFsweDJdKX13aGlsZShiREp4V1Q+UzR6OEFsWzB4YV0pO21WMGRBaVQ9LVM0ejhBbFsweDFdfX1pZihtVjBkQWlUPi1TNHo4QWxbMHgxXSl7UDZDUDFCZi5wdXNoKChfTXhLSnBtfG1WMGRBaVQ8PGJESnhXVCkmUzR6OEFsWzB4M10pfXJldHVybiBHZURTN2ZBKFA2Q1AxQmYpfWZ1bmN0aW9uIF9NeEtKcG0oLi4uelp4SkVSSil7elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07aWYodHlwZW9mIHY3ZUJxX2dbelp4SkVSSltTNHo4QWxbMHgwXV1dPT09UzR6OEFsWzB4NV0pe3JldHVybiB2N2VCcV9nW3paeEpFUkpbUzR6OEFsWzB4MF1dXT1QNkNQMUJmKGhxRzdKdWxbelp4SkVSSltTNHo4QWxbMHgwXV1dKX1yZXR1cm4gdjdlQnFfZ1t6WnhKRVJKW1M0ejhBbFsweDBdXV19eE5Kckd4W1U2bGg0ZltialUyWmcoUzR6OEFsWzB4MTczXSldXT17W19NeEtKcG0oMHg0ZjkpXTpfTXhLSnBtKDB4NGZhKSxbX014S0pwbSgweDRmYildOlM0ejhBbFsweDBdLFtfTXhLSnBtKDB4NGZjKV06W10sW19NeEtKcG0oUzR6OEFsWzB4MTc0XSldOlU2bGg0ZltfTXhLSnBtKFM0ejhBbFsweDE3NF0pXX19QlVPVkxsaSh4TkpyR3hbVTZsaDRmW2JqVTJaZyhTNHo4QWxbMHgxNzNdKV1dW2JqVTJaZyhTNHo4QWxbMHgxNzVdKV0rPVU2bGg0ZltialUyWmcoUzR6OEFsWzB4MTc1XSldLHhOSnJHeFtVNmxoNGZbYmpVMlpnKFM0ejhBbFsweDE3M10pXV1bYmpVMlpnKFM0ejhBbFsweDE3Ml0pXVtialUyWmcoUzR6OEFsWzB4MTdjXSldKHtbYmpVMlpnKFM0ejhBbFsweDE3Nl0pXTpVNmxoNGZbYmpVMlpnKFM0ejhBbFsweDE3Nl0pXSxbYmpVMlpnKFM0ejhBbFsweDE3ZF0pXTpialUyWmcoUzR6OEFsWzB4MTdlXSksW2JqVTJaZyhTNHo4QWxbMHgxNzddKV06VTZsaDRmW2JqVTJaZyhTNHo4QWxbMHgxNzddKV0sW2JqVTJaZyhTNHo4QWxbMHgxNzhdKV06VTZsaDRmW2JqVTJaZyhTNHo4QWxbMHgxNzhdKV0sW2JqVTJaZyhTNHo4QWxbMHgxNzVdKV06VTZsaDRmW2JqVTJaZyhTNHo4QWxbMHgxNzVdKV19KSl9ZWxzZXtpZihialUyWmcoUzR6OEFsWzB4MTc5XSlpbiBZRkp6TVcpe2JESnhXVCgpfWZ1bmN0aW9uIGJESnhXVCgpe3ZhciB6WnhKRVJKPWZ1bmN0aW9uKHpaeEpFUkope3ZhciBialUyWmc9elp4SkVSSi5sZW5ndGgseE5Kckd4LFU2bGg0ZixQNkNQMUJmLF9NeEtKcG07QlVPVkxsaSh4TkpyR3g9W10sVTZsaDRmPVM0ejhBbFsweDBdLFA2Q1AxQmY9UzR6OEFsWzB4MF0selp4SkVSSi5zb3J0KCh6WnhKRVJKLGJqVTJaZyk9PnpaeEpFUkotYmpVMlpnKSk7Zm9yKF9NeEtKcG09UzR6OEFsWzB4MF07X014S0pwbTxialUyWmc7X014S0pwbSsrKXtpZihfTXhLSnBtPlM0ejhBbFsweDBdJiZ6WnhKRVJKW19NeEtKcG1dPT09elp4SkVSSltfTXhLSnBtLVM0ejhBbFsweDFdXSljb250aW51ZTtCVU9WTGxpKFU2bGg0Zj1fTXhLSnBtK1M0ejhBbFsweDFdLFA2Q1AxQmY9YmpVMlpnLVM0ejhBbFsweDFdKTt3aGlsZShVNmxoNGY8UDZDUDFCZilpZih6WnhKRVJKW19NeEtKcG1dK3paeEpFUkpbVTZsaDRmXSt6WnhKRVJKW1A2Q1AxQmZdPFM0ejhBbFsweDBdKXtVNmxoNGYrK31lbHNlIGlmKHpaeEpFUkpbX014S0pwbV0relp4SkVSSltVNmxoNGZdK3paeEpFUkpbUDZDUDFCZl0+UzR6OEFsWzB4MF0pe1A2Q1AxQmYtLX1lbHNle3hOSnJHeC5wdXNoKFt6WnhKRVJKW19NeEtKcG1dLHpaeEpFUkpbVTZsaDRmXSx6WnhKRVJKW1A2Q1AxQmZdXSk7d2hpbGUoVTZsaDRmPFA2Q1AxQmYmJnpaeEpFUkpbVTZsaDRmXT09PXpaeEpFUkpbVTZsaDRmK1M0ejhBbFsweDFdXSlVNmxoNGYrKzt3aGlsZShVNmxoNGY8UDZDUDFCZiYmelp4SkVSSltQNkNQMUJmXT09PXpaeEpFUkpbUDZDUDFCZi1TNHo4QWxbMHgxXV0pUDZDUDFCZi0tO0JVT1ZMbGkoVTZsaDRmKyssUDZDUDFCZi0tKX19cmV0dXJuIHhOSnJHeH07TGJEVUF2KGJqVTJaZygweDUwNikrUzR6OEFsWzB4MTdhXSkubG9nKHpaeEpFUkopfXRoaXNbYmpVMlpnKFM0ejhBbFsweDE3Yl0pXVtialUyWmcoUzR6OEFsWzB4MTdjXSldKHtbYmpVMlpnKFM0ejhBbFsweDE3Nl0pXTpVNmxoNGZbYmpVMlpnKFM0ejhBbFsweDE3Nl0pXSxbYmpVMlpnKFM0ejhBbFsweDE3ZF0pXTpialUyWmcoUzR6OEFsWzB4MTdlXSksW2JqVTJaZyhTNHo4QWxbMHgxNzddKV06VTZsaDRmW2JqVTJaZyhTNHo4QWxbMHgxNzddKV0sW2JqVTJaZyhTNHo4QWxbMHgxNzhdKV06VTZsaDRmW2JqVTJaZyhTNHo4QWxbMHgxNzhdKV0sW2JqVTJaZyhTNHo4QWxbMHgxNzVdKV06VTZsaDRmW2JqVTJaZyhTNHo4QWxbMHgxNzVdKV0sW2JqVTJaZyhTNHo4QWxbMHgxNzNdKV06VTZsaDRmW2JqVTJaZyhTNHo4QWxbMHgxNzNdKV19KX19Zm9yKGxldCBPd3JWNmU9UzR6OEFsWzB4MF07T3dyVjZlPHRoaXNbYmpVMlpnKFM0ejhBbFsweDE3MV0pXVtialUyWmcoMHg1MDcpXVtialUyWmcoUzR6OEFsWzB4MTdmXSldO093clY2ZSsrKXtjb25zdCBtVjBkQWlUPXRoaXNbYmpVMlpnKFM0ejhBbFsweDE3MV0pXVtialUyWmcoMHg1MDgpK1M0ejhBbFsweDE2Ml1dW093clY2ZV07QlVPVkxsaShtVjBkQWlUW2JqVTJaZyhTNHo4QWxbMHgxNzNdKV09bVYwZEFpVFtialUyWmcoUzR6OEFsWzB4MTczXSldW2JqVTJaZyhTNHo4QWxbMHgxODBdKV0oKSx0aGlzW2JqVTJaZygweDUwOSldW21WMGRBaVRbYmpVMlpnKFM0ejhBbFsweDE3M10pXV09bVYwZEFpVCk7aWYodGhpc1tialUyWmcoUzR6OEFsWzB4MTgxXSkrYmpVMlpnKDB4NTBiKStTNHo4QWxbMHgzOF1dW21WMGRBaVRbYmpVMlpnKFM0ejhBbFsweDE3M10pXV0pe2lmKCF4TkpyR3hbbVYwZEFpVFtialUyWmcoUzR6OEFsWzB4MTczXSldXSl7eE5Kckd4W21WMGRBaVRbYmpVMlpnKFM0ejhBbFsweDE3M10pXV09e1tialUyWmcoUzR6OEFsWzB4MTdkXSldOmJqVTJaZyhTNHo4QWxbMHgxODFdKStTNHo4QWxbMHgxMjNdLFtialUyWmcoUzR6OEFsWzB4MTc1XSldOlM0ejhBbFsweDBdLFtialUyWmcoUzR6OEFsWzB4MTcyXSldOltdLFtialUyWmcoUzR6OEFsWzB4MTczXSldOm1WMGRBaVRbYmpVMlpnKFM0ejhBbFsweDE3M10pXX19QlVPVkxsaSh4TkpyR3hbbVYwZEFpVFtialUyWmcoUzR6OEFsWzB4MTczXSldXVtialUyWmcoUzR6OEFsWzB4MTc1XSldKz1tVjBkQWlUW2JqVTJaZyhTNHo4QWxbMHgxNzVdKV0seE5Kckd4W21WMGRBaVRbYmpVMlpnKFM0ejhBbFsweDE3M10pXV1bYmpVMlpnKFM0ejhBbFsweDE3Ml0pXVtialUyWmcoUzR6OEFsWzB4MTdjXSldKHtbYmpVMlpnKFM0ejhBbFsweDE3Nl0pXTptVjBkQWlUW2JqVTJaZyhTNHo4QWxbMHgxNzZdKV0sW2JqVTJaZyhTNHo4QWxbMHgxN2RdKV06YmpVMlpnKFM0ejhBbFsweDE4Ml0pLFtialUyWmcoUzR6OEFsWzB4MTc4XSldOm1WMGRBaVRbYmpVMlpnKFM0ejhBbFsweDE3OF0pXSxbYmpVMlpnKFM0ejhBbFsweDE3NV0pXTptVjBkQWlUW2JqVTJaZyhTNHo4QWxbMHgxNzVdKV19KSl9ZWxzZXt0aGlzW2JqVTJaZyhTNHo4QWxbMHgxN2JdKV1bYmpVMlpnKFM0ejhBbFsweDE3Y10pXSh7W2JqVTJaZyhTNHo4QWxbMHgxNzZdKV06bVYwZEFpVFtialUyWmcoUzR6OEFsWzB4MTc2XSldLFtialUyWmcoUzR6OEFsWzB4MTdkXSldOmJqVTJaZyhTNHo4QWxbMHgxODJdKSxbYmpVMlpnKFM0ejhBbFsweDE3OF0pXTptVjBkQWlUW2JqVTJaZyhTNHo4QWxbMHgxNzhdKV0sW2JqVTJaZyhTNHo4QWxbMHgxNzVdKV06bVYwZEFpVFtialUyWmcoUzR6OEFsWzB4MTc1XSldLFtialUyWmcoUzR6OEFsWzB4MTczXSldOm1WMGRBaVRbYmpVMlpnKFM0ejhBbFsweDE3M10pXX0pfX1mb3IoY29uc3QgeUlSbDEzIGluIHhOSnJHeCl7aWYoYmpVMlpnKDB4NTBkKWluIFlGSnpNVyl7ZFF4UVpSaygpfWZ1bmN0aW9uIGRReFFaUmsoKXt2YXIgelp4SkVSSj1ialUyWmcoMHg1MGUpLHhOSnJHeCxPd3JWNmU7QlVPVkxsaSh4TkpyR3g9YmpVMlpnKDB4NTBmKStialUyWmcoMHg1MTApK2JqVTJaZygweDUxMSkrXCI/XCIsT3dyVjZlPWJqVTJaZygweDUxMikselp4SkVSSi5tYXRjaCh4TkpyR3grT3dyVjZlKSl9eE5Kckd4W3lJUmwxM11bYmpVMlpnKFM0ejhBbFsweDE3Ml0pXVtialUyWmcoUzR6OEFsWzB4MTgzXSldKCh6WnhKRVJKLHhOSnJHeCk9PntyZXR1cm4geE5Kckd4W2JqVTJaZyhTNHo4QWxbMHgxNzVdKV0telp4SkVSSltialUyWmcoUzR6OEFsWzB4MTc1XSldfSk7bGV0IHBNT2lKYUM9W1tdXSxOMWw3Q25RO2ZvcihsZXQgT3dyVjZlPVM0ejhBbFsweDBdO093clY2ZTx4TkpyR3hbeUlSbDEzXVtialUyWmcoUzR6OEFsWzB4MTcyXSldW2JqVTJaZyhTNHo4QWxbMHgxN2ZdKV07T3dyVjZlKyspe2NvbnN0IHVFUFBPVz1MYkRVQXYoYmpVMlpnKFM0ejhBbFsweDE4OV0pKVtialUyWmcoMHg1MTUpXShwTU9pSmFDW2JqVTJaZyhTNHo4QWxbMHgxN2ZdKV0tUzR6OEFsWzB4MV0sUzR6OEFsWzB4MF0pLGtBaUJMOD1wTU9pSmFDW3VFUFBPV11bYmpVMlpnKFM0ejhBbFsweDE3Zl0pXTtpZih4TkpyR3hbeUlSbDEzXVtialUyWmcoUzR6OEFsWzB4MTcyXSldW093clY2ZV1bYmpVMlpnKFM0ejhBbFsweDE3ZF0pXT09PWJqVTJaZyhTNHo4QWxbMHgxODJdKSl7TjFsN0NuUT14TkpyR3hbeUlSbDEzXVtialUyWmcoUzR6OEFsWzB4MTcyXSldW093clY2ZV07Y29udGludWV9a0FpQkw4PFM0ejhBbFsweDJdP3BNT2lKYUNbdUVQUE9XXVtialUyWmcoUzR6OEFsWzB4MTdjXSldKHhOSnJHeFt5SVJsMTNdW2JqVTJaZyhTNHo4QWxbMHgxNzJdKV1bT3dyVjZlXSk6cE1PaUphQ1tialUyWmcoUzR6OEFsWzB4MTdjXSldKFtdKX1pZihOMWw3Q25RKXtwTU9pSmFDW1M0ejhBbFsweDBdXVtialUyWmcoUzR6OEFsWzB4MTdjXSldKE4xbDdDblEpfWZvcihsZXQgT3dyVjZlPVM0ejhBbFsweDBdO093clY2ZTxwTU9pSmFDW2JqVTJaZyhTNHo4QWxbMHgxN2ZdKV07T3dyVjZlKyspdGhpc1tialUyWmcoUzR6OEFsWzB4MTdiXSldW2JqVTJaZyhTNHo4QWxbMHgxN2NdKV0oe1tialUyWmcoUzR6OEFsWzB4MTdkXSldOmJqVTJaZygweDUxNiksW2JqVTJaZyhTNHo4QWxbMHgxNzJdKV06cE1PaUphQ1tPd3JWNmVdLFtialUyWmcoUzR6OEFsWzB4MTc1XSldOnBNT2lKYUNbT3dyVjZlXVtialUyWmcoMHg1MTcpXSgoelp4SkVSSix4TkpyR3gpPT57cmV0dXJuIHpaeEpFUkoreE5Kckd4W2JqVTJaZyhTNHo4QWxbMHgxNzVdKV19LFM0ejhBbFsweDBdKSxbYmpVMlpnKFM0ejhBbFsweDE3M10pXTp5SVJsMTN9KX10aGlzW2JqVTJaZyhTNHo4QWxbMHgxN2JdKV1bYmpVMlpnKFM0ejhBbFsweDE4M10pXSgoelp4SkVSSix4TkpyR3gpPT57aWYoYmpVMlpnKDB4NTE4KWluIFlGSnpNVyl7VTZsaDRmKCl9ZnVuY3Rpb24gVTZsaDRmKC4uLlU2bGg0Zil7QlVPVkxsaShVNmxoNGZbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDBdLFU2bGg0ZltTNHo4QWxbMHgxODRdXT1mdW5jdGlvbiguLi5VNmxoNGYpe0JVT1ZMbGkoVTZsaDRmW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgwXSxjbTZqN21zKEp0WmRjTCxTNHo4QWxbMHhlXSksY202ajdtcyhtMUpoQ0hQKSxjbTZqN21zKHk2V01EOCksY202ajdtcyhtejh4bWRPKSxjbTZqN21zKHBSODZ5MSksY202ajdtcyhxaXM1RWIpLGNtNmo3bXMocXN6UVJrTSxTNHo4QWxbMHgzMl0pLGNtNmo3bXMoQ29ZVkpPWixTNHo4QWxbMHgzMl0pLGNtNmo3bXMoQmhqWVBNLFM0ejhBbFsweGVdKSxjbTZqN21zKHg0T0lPaSksY202ajdtcyhyWWY4cXlPKSxjbTZqN21zKE5NR0ZnYTUpLGNtNmo3bXMoRTZfS1JaLFM0ejhBbFsweGVdKSxjbTZqN21zKE4xbDdDblEsUzR6OEFsWzB4ZV0pLGNtNmo3bXMoZFF4UVpSayxTNHo4QWxbMHgzMl0pLGNtNmo3bXMoeUlSbDEzLFM0ejhBbFsweGVdKSxjbTZqN21zKG1WMGRBaVQsUzR6OEFsWzB4ZV0pLGNtNmo3bXMoYkRKeFdULFM0ejhBbFsweGVdKSxjbTZqN21zKF9NeEtKcG0pLFU2bGg0ZlstUzR6OEFsWzB4MTRhXV09UzR6OEFsWzB4MF0sVTZsaDRmW1M0ejhBbFsweDFdXT1cIlwiKTtmdW5jdGlvbiBQNkNQMUJmKFU2bGg0Zil7cmV0dXJuIGtBaUJMOChwTU9pSmFDKE5NR0ZnYTUoVTZsaDRmKSkpfWZ1bmN0aW9uIF9NeEtKcG0oLi4uVTZsaDRmKXtVNmxoNGZbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO3JldHVybiBlRk8wWG5NKHBNT2lKYUMoTk1HRmdhNShVNmxoNGZbUzR6OEFsWzB4MF1dKSkpfWZ1bmN0aW9uIGJESnhXVCguLi5VNmxoNGYpe1U2bGg0ZltTNHo4QWxbMHg0XV09UzR6OEFsWzB4ZV07cmV0dXJuIEU2X0tSWihwTU9pSmFDKE5NR0ZnYTUoVTZsaDRmW1M0ejhBbFsweDBdXSkpLFU2bGg0ZltTNHo4QWxbMHgxXV0pfWZ1bmN0aW9uIG1WMGRBaVQoLi4uVTZsaDRmKXtVNmxoNGZbUzR6OEFsWzB4NF1dPVM0ejhBbFsweGVdO3JldHVybiBrQWlCTDgoTjFsN0NuUShOTUdGZ2E1KFU2bGg0ZltTNHo4QWxbMHgwXV0pLE5NR0ZnYTUoVTZsaDRmW1M0ejhBbFsweDFdXSkpKX1mdW5jdGlvbiB5SVJsMTMoLi4uVTZsaDRmKXtVNmxoNGZbUzR6OEFsWzB4NF1dPVM0ejhBbFsweGVdO3JldHVybiBlRk8wWG5NKE4xbDdDblEoTk1HRmdhNShVNmxoNGZbUzR6OEFsWzB4MF1dKSxOTUdGZ2E1KFU2bGg0ZltTNHo4QWxbMHgxXV0pKSl9ZnVuY3Rpb24gZFF4UVpSayguLi5VNmxoNGYpe1U2bGg0ZltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MzJdO3JldHVybiBFNl9LUlooTjFsN0NuUShOTUdGZ2E1KFU2bGg0ZltTNHo4QWxbMHgwXV0pLE5NR0ZnYTUoVTZsaDRmW1M0ejhBbFsweDFdXSkpLFU2bGg0ZltTNHo4QWxbMHhlXV0pfWZ1bmN0aW9uIHBNT2lKYUMoVTZsaDRmKXtyZXR1cm4geDRPSU9pKEFxZEN0bHQocllmOHF5TyhVNmxoNGYpLFU2bGg0Zi5sZW5ndGgqUzR6OEFsWzB4Ml0pKX1mdW5jdGlvbiBOMWw3Q25RKC4uLlU2bGg0Zil7QlVPVkxsaShVNmxoNGZbUzR6OEFsWzB4NF1dPVM0ejhBbFsweGVdLFU2bGg0ZltTNHo4QWxbMHhlXV09cllmOHF5TyhVNmxoNGZbUzR6OEFsWzB4MF1dKSk7aWYoVTZsaDRmW1M0ejhBbFsweGVdXS5sZW5ndGg+UzR6OEFsWzB4MTM1XSlVNmxoNGZbUzR6OEFsWzB4ZV1dPUFxZEN0bHQoVTZsaDRmW1M0ejhBbFsweGVdXSxVNmxoNGZbUzR6OEFsWzB4MF1dLmxlbmd0aCpTNHo4QWxbMHgyXSk7dmFyIFA2Q1AxQmY9TGJEVUF2KGJqVTJaZyhTNHo4QWxbMHgxODVdKSkoUzR6OEFsWzB4MTM1XSksX014S0pwbT1MYkRVQXYoYmpVMlpnKFM0ejhBbFsweDE4NV0pKShTNHo4QWxbMHgxMzVdKTtmb3IoVTZsaDRmW1M0ejhBbFsweDMxXV09UzR6OEFsWzB4MF07VTZsaDRmW1M0ejhBbFsweDMxXV08UzR6OEFsWzB4MTM1XTtVNmxoNGZbUzR6OEFsWzB4MzFdXSsrKXtCVU9WTGxpKFA2Q1AxQmZbVTZsaDRmW1M0ejhBbFsweDMxXV1dPVU2bGg0ZltTNHo4QWxbMHhlXV1bVTZsaDRmW1M0ejhBbFsweDMxXV1dXlM0ejhBbFsweDFjNF0sX014S0pwbVtVNmxoNGZbUzR6OEFsWzB4MzFdXV09VTZsaDRmW1M0ejhBbFsweGVdXVtVNmxoNGZbUzR6OEFsWzB4MzFdXV1eUzR6OEFsWzB4MWM1XSl9VTZsaDRmWy1TNHo4QWxbMHgxODddXT1BcWRDdGx0KFA2Q1AxQmYuY29uY2F0KHJZZjhxeU8oVTZsaDRmW1M0ejhBbFsweDFdXSkpLFM0ejhBbFsweDE4Nl0rVTZsaDRmW1M0ejhBbFsweDFdXS5sZW5ndGgqUzR6OEFsWzB4Ml0pO3JldHVybiB4NE9JT2koQXFkQ3RsdChfTXhLSnBtLmNvbmNhdChVNmxoNGZbLVM0ejhBbFsweDE4N11dKSxxc1k2d0YoYmpVMlpnKDB4NTFjKSxTNHo4QWxbMHgxODZdLFM0ejhBbFsweDI4XSkpKX1mdW5jdGlvbiBrQWlCTDgoUDZDUDFCZil7dmFyIF9NeEtKcG0sYkRKeFdULG1WMGRBaVQseUlSbDEzO3RyeXtVNmxoNGZbLVM0ejhBbFsweDE0YV1dfWNhdGNoKGRReFFaUmspe1U2bGg0ZlstUzR6OEFsWzB4MTRhXV09UzR6OEFsWzB4MF19QlVPVkxsaShfTXhLSnBtPVU2bGg0ZlstUzR6OEFsWzB4MTRhXV0/YmpVMlpnKDB4NTFkKTpialUyWmcoMHg1MWUpK2JqVTJaZygweDUxZikrYmpVMlpnKDB4NTIwKSxiREp4V1Q9XCJcIixtVjBkQWlUPXZvaWQgMHgwKTtmb3IoeUlSbDEzPVM0ejhBbFsweDBdO3lJUmwxMzxQNkNQMUJmLmxlbmd0aDt5SVJsMTMrKyl7QlVPVkxsaShtVjBkQWlUPVA2Q1AxQmYuY2hhckNvZGVBdCh5SVJsMTMpLGJESnhXVCs9X014S0pwbS5jaGFyQXQobVYwZEFpVD4+PlM0ejhBbFsweDE4XSZTNHo4QWxbMHhjNl0pK19NeEtKcG0uY2hhckF0KG1WMGRBaVQmUzR6OEFsWzB4YzZdKSl9cmV0dXJuIGJESnhXVH1mdW5jdGlvbiBlRk8wWG5NKFA2Q1AxQmYpe3ZhciBfTXhLSnBtLGJESnhXVCxtVjBkQWlULHlJUmwxMztmdW5jdGlvbiBkUXhRWlJrKFA2Q1AxQmYpe3ZhciBfTXhLSnBtPVwiMlFJWVByU1JjdV92fjFebl0/fWc4NC93PU0qQ2hhOyEsaXBWdC5rTmRLKG9bOTMjVStUKVpHN09mcVd4JGA6JkFsRXlASnpETDYwNUJIans8RnNtWHxlJWI+XFxcIlwiLGJESnhXVCxkUXhRWlJrLHBNT2lKYUMsTjFsN0NuUSxrQWlCTDgsZUZPMFhuTSxVNmxoNGY7QlVPVkxsaShiREp4V1Q9XCJcIisoUDZDUDFCZnx8XCJcIiksZFF4UVpSaz1iREp4V1QubGVuZ3RoLHBNT2lKYUM9W10sTjFsN0NuUT1TNHo4QWxbMHgwXSxrQWlCTDg9UzR6OEFsWzB4MF0sZUZPMFhuTT0tUzR6OEFsWzB4MV0pO2ZvcihVNmxoNGY9UzR6OEFsWzB4MF07VTZsaDRmPGRReFFaUms7VTZsaDRmKyspe3ZhciBFNl9LUlo9X014S0pwbS5pbmRleE9mKGJESnhXVFtVNmxoNGZdKTtpZihFNl9LUlo9PT0tUzR6OEFsWzB4MV0pY29udGludWU7aWYoZUZPMFhuTTxTNHo4QWxbMHgwXSl7ZUZPMFhuTT1FNl9LUlp9ZWxzZXtCVU9WTGxpKGVGTzBYbk0rPUU2X0tSWipTNHo4QWxbMHgxM10sTjFsN0NuUXw9ZUZPMFhuTTw8a0FpQkw4LGtBaUJMOCs9KGVGTzBYbk0mUzR6OEFsWzB4MTRdKT5TNHo4QWxbMHgxNV0/UzR6OEFsWzB4MTZdOlM0ejhBbFsweDE3XSk7ZG97QlVPVkxsaShwTU9pSmFDLnB1c2goTjFsN0NuUSZTNHo4QWxbMHgzXSksTjFsN0NuUT4+PVM0ejhBbFsweDJdLGtBaUJMOC09UzR6OEFsWzB4Ml0pfXdoaWxlKGtBaUJMOD5TNHo4QWxbMHhhXSk7ZUZPMFhuTT0tUzR6OEFsWzB4MV19fWlmKGVGTzBYbk0+LVM0ejhBbFsweDFdKXtwTU9pSmFDLnB1c2goKE4xbDdDblF8ZUZPMFhuTTw8a0FpQkw4KSZTNHo4QWxbMHgzXSl9cmV0dXJuIEdlRFM3ZkEocE1PaUphQyl9ZnVuY3Rpb24gcE1PaUphQyhQNkNQMUJmKXtpZih0eXBlb2YgdjdlQnFfZ1tQNkNQMUJmXT09PVM0ejhBbFsweDVdKXtyZXR1cm4gdjdlQnFfZ1tQNkNQMUJmXT1kUXhRWlJrKGhxRzdKdWxbUDZDUDFCZl0pfXJldHVybiB2N2VCcV9nW1A2Q1AxQmZdfXRyeXtVNmxoNGZbUzR6OEFsWzB4MV1dfWNhdGNoKE4xbDdDblEpe1U2bGg0ZltTNHo4QWxbMHgxXV09XCJcIn1CVU9WTGxpKF9NeEtKcG09YmpVMlpnKDB4NTIxKStwTU9pSmFDKDB4NTIyKStwTU9pSmFDKDB4NTIzKStwTU9pSmFDKDB4NTI0KSxiREp4V1Q9XCJcIixtVjBkQWlUPVA2Q1AxQmYubGVuZ3RoKTtmb3IoeUlSbDEzPVM0ejhBbFsweDBdO3lJUmwxMzxtVjBkQWlUO3lJUmwxMys9UzR6OEFsWzB4MzJdKXt2YXIga0FpQkw4PVA2Q1AxQmYuY2hhckNvZGVBdCh5SVJsMTMpPDxTNHo4QWxbMHgxMzVdfCh5SVJsMTMrUzR6OEFsWzB4MV08bVYwZEFpVD9QNkNQMUJmLmNoYXJDb2RlQXQoeUlSbDEzK1M0ejhBbFsweDFdKTw8UzR6OEFsWzB4Ml06UzR6OEFsWzB4MF0pfCh5SVJsMTMrUzR6OEFsWzB4ZV08bVYwZEFpVD9QNkNQMUJmLmNoYXJDb2RlQXQoeUlSbDEzK1M0ejhBbFsweGVdKTpTNHo4QWxbMHgwXSksZUZPMFhuTTtmb3IoZUZPMFhuTT1TNHo4QWxbMHgwXTtlRk8wWG5NPFM0ejhBbFsweDE4XTtlRk8wWG5NKyspeUlSbDEzKlM0ejhBbFsweDJdK2VGTzBYbk0qUzR6OEFsWzB4OF0+UDZDUDFCZi5sZW5ndGgqUzR6OEFsWzB4Ml0/YkRKeFdUKz1VNmxoNGZbUzR6OEFsWzB4MV1dOmJESnhXVCs9X014S0pwbS5jaGFyQXQoa0FpQkw4Pj4+UzR6OEFsWzB4OF0qKFM0ejhBbFsweDMyXS1lRk8wWG5NKSZTNHo4QWxbMHg3XSl9cmV0dXJuIGJESnhXVH1mdW5jdGlvbiBFNl9LUlooLi4uVTZsaDRmKXtCVU9WTGxpKFU2bGg0ZltTNHo4QWxbMHg0XV09UzR6OEFsWzB4ZV0sVTZsaDRmWy1TNHo4QWxbMHg5ZV1dPVU2bGg0ZltTNHo4QWxbMHgxXV0ubGVuZ3RoLFU2bGg0ZltTNHo4QWxbMHgzMV1dPUxiRFVBdihialUyWmcoUzR6OEFsWzB4MTg1XSkpKCkpO3ZhciBQNkNQMUJmLF9NeEtKcG0sYkRKeFdULG1WMGRBaVQ7VTZsaDRmW1M0ejhBbFsweDE4XV09TGJEVUF2KGJqVTJaZyhTNHo4QWxbMHgxOTFdKStTNHo4QWxbMHgxODhdKShMYkRVQXYoYmpVMlpnKFM0ejhBbFsweDE4OV0pKS5jZWlsKFU2bGg0ZltTNHo4QWxbMHgwXV0ubGVuZ3RoL1M0ejhBbFsweGVdKSk7Zm9yKFA2Q1AxQmY9UzR6OEFsWzB4MF07UDZDUDFCZjxVNmxoNGZbUzR6OEFsWzB4MThdXS5sZW5ndGg7UDZDUDFCZisrKVU2bGg0ZltTNHo4QWxbMHgxOF1dW1A2Q1AxQmZdPVU2bGg0ZltTNHo4QWxbMHgwXV0uY2hhckNvZGVBdChQNkNQMUJmKlM0ejhBbFsweGVdKTw8UzR6OEFsWzB4Ml18VTZsaDRmW1M0ejhBbFsweDBdXS5jaGFyQ29kZUF0KFA2Q1AxQmYqUzR6OEFsWzB4ZV0rUzR6OEFsWzB4MV0pO3doaWxlKFU2bGg0ZltTNHo4QWxbMHgxOF1dLmxlbmd0aD5TNHo4QWxbMHgwXSl7QlVPVkxsaShtVjBkQWlUPUxiRFVBdihialUyWmcoUzR6OEFsWzB4MTg1XSkpKCksYkRKeFdUPVM0ejhBbFsweDBdKTtmb3IoUDZDUDFCZj1TNHo4QWxbMHgwXTtQNkNQMUJmPFU2bGg0ZltTNHo4QWxbMHgxOF1dLmxlbmd0aDtQNkNQMUJmKyspe0JVT1ZMbGkoYkRKeFdUPShiREp4V1Q8PFM0ejhBbFsweDEzNV0pK1U2bGg0ZltTNHo4QWxbMHgxOF1dW1A2Q1AxQmZdLF9NeEtKcG09TGJEVUF2KGJqVTJaZyhTNHo4QWxbMHgxODldKSkuZmxvb3IoYkRKeFdUL1U2bGg0ZlstUzR6OEFsWzB4OWVdXSksYkRKeFdULT1fTXhLSnBtKlU2bGg0ZlstUzR6OEFsWzB4OWVdXSk7aWYobVYwZEFpVC5sZW5ndGg+UzR6OEFsWzB4MF18fF9NeEtKcG0+UzR6OEFsWzB4MF0pbVYwZEFpVFttVjBkQWlULmxlbmd0aF09X014S0pwbX1CVU9WTGxpKFU2bGg0ZltTNHo4QWxbMHgzMV1dW1U2bGg0ZltTNHo4QWxbMHgzMV1dLmxlbmd0aF09YkRKeFdULFU2bGg0ZltTNHo4QWxbMHgxOF1dPW1WMGRBaVQpfVU2bGg0ZltTNHo4QWxbMHgzNV1dPVwiXCI7Zm9yKFA2Q1AxQmY9VTZsaDRmW1M0ejhBbFsweDMxXV0ubGVuZ3RoLVM0ejhBbFsweDFdO1A2Q1AxQmY+PVM0ejhBbFsweDBdO1A2Q1AxQmYtLSlVNmxoNGZbUzR6OEFsWzB4MzVdXSs9VTZsaDRmW1M0ejhBbFsweDFdXS5jaGFyQXQoVTZsaDRmW1M0ejhBbFsweDMxXV1bUDZDUDFCZl0pO1U2bGg0ZltTNHo4QWxbMHgxOGFdXT1MYkRVQXYoYmpVMlpnKFM0ejhBbFsweDE4OV0pKS5jZWlsKFU2bGg0ZltTNHo4QWxbMHgwXV0ubGVuZ3RoKlM0ejhBbFsweDJdLyhMYkRVQXYoYmpVMlpnKFM0ejhBbFsweDE4Yl0pK1M0ejhBbFsweGE5XSkubG9nKFU2bGg0ZltTNHo4QWxbMHgxXV0ubGVuZ3RoKS9MYkRVQXYoYmpVMlpnKFM0ejhBbFsweDE4Yl0pK1M0ejhBbFsweGE5XSkubG9nKFM0ejhBbFsweGVdKSkpO2ZvcihQNkNQMUJmPVU2bGg0ZltTNHo4QWxbMHgzNV1dLmxlbmd0aDtQNkNQMUJmPFU2bGg0ZltTNHo4QWxbMHgxOGFdXTtQNkNQMUJmKyspVTZsaDRmW1M0ejhBbFsweDM1XV09VTZsaDRmW1M0ejhBbFsweDFdXVtTNHo4QWxbMHgwXV0rVTZsaDRmW1M0ejhBbFsweDM1XV07cmV0dXJuIFU2bGg0ZltTNHo4QWxbMHgzNV1dfWZ1bmN0aW9uIE5NR0ZnYTUoLi4uVTZsaDRmKXtCVU9WTGxpKFU2bGg0ZltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0sVTZsaDRmW1M0ejhBbFsweGRdXT1cIlwiLFU2bGg0ZlstUzR6OEFsWzB4YmFdXT0tUzR6OEFsWzB4MV0pO3ZhciBQNkNQMUJmLF9NeEtKcG07d2hpbGUoKytVNmxoNGZbLVM0ejhBbFsweGJhXV08VTZsaDRmW1M0ejhBbFsweDBdXS5sZW5ndGgpe0JVT1ZMbGkoUDZDUDFCZj1VNmxoNGZbUzR6OEFsWzB4MF1dLmNoYXJDb2RlQXQoVTZsaDRmWy1TNHo4QWxbMHhiYV1dKSxfTXhLSnBtPVU2bGg0ZlstUzR6OEFsWzB4YmFdXStTNHo4QWxbMHgxXTxVNmxoNGZbUzR6OEFsWzB4MF1dLmxlbmd0aD9VNmxoNGZbUzR6OEFsWzB4MF1dLmNoYXJDb2RlQXQoVTZsaDRmWy1TNHo4QWxbMHhiYV1dK1M0ejhBbFsweDFdKTpTNHo4QWxbMHgwXSk7aWYoUzR6OEFsWzB4MWNhXTw9UDZDUDFCZiYmUDZDUDFCZjw9UzR6OEFsWzB4MWNiXSYmUzR6OEFsWzB4MWNjXTw9X014S0pwbSYmX014S0pwbTw9UzR6OEFsWzB4MWNkXSl7QlVPVkxsaShQNkNQMUJmPVM0ejhBbFsweDFjZV0rKChQNkNQMUJmJlM0ejhBbFsweDE4Y10pPDxTNHo4QWxbMHg5MF0pKyhfTXhLSnBtJlM0ejhBbFsweDE4Y10pLFU2bGg0ZlstUzR6OEFsWzB4YmFdXSsrKX1pZihQNkNQMUJmPD1TNHo4QWxbMHgxY10pVTZsaDRmW1M0ejhBbFsweGRdXSs9TGJEVUF2KGJqVTJaZyhTNHo4QWxbMHgxOGRdKSkuZnJvbUNoYXJDb2RlKFA2Q1AxQmYpO2Vsc2UgaWYoUDZDUDFCZjw9UzR6OEFsWzB4MWQwXSlVNmxoNGZbUzR6OEFsWzB4ZF1dKz1MYkRVQXYoYmpVMlpnKFM0ejhBbFsweDE4ZF0pKS5mcm9tQ2hhckNvZGUoUzR6OEFsWzB4NzZdfFA2Q1AxQmY+Pj5TNHo4QWxbMHg4XSZTNHo4QWxbMHgxOGVdLFM0ejhBbFsweDFkXXxQNkNQMUJmJlM0ejhBbFsweDddKTtlbHNlIGlmKFA2Q1AxQmY8PVM0ejhBbFsweDE5N10pVTZsaDRmW1M0ejhBbFsweGRdXSs9TGJEVUF2KGJqVTJaZyhTNHo4QWxbMHgxOGRdKSkuZnJvbUNoYXJDb2RlKFM0ejhBbFsweDE4Zl18UDZDUDFCZj4+PlM0ejhBbFsweGJdJlM0ejhBbFsweGM2XSxTNHo4QWxbMHgxZF18UDZDUDFCZj4+PlM0ejhBbFsweDhdJlM0ejhBbFsweDddLFM0ejhBbFsweDFkXXxQNkNQMUJmJlM0ejhBbFsweDddKTtlbHNlIGlmKFA2Q1AxQmY8PVM0ejhBbFsweDFkMV0pVTZsaDRmW1M0ejhBbFsweGRdXSs9TGJEVUF2KGJqVTJaZyhTNHo4QWxbMHgxOGRdKSkuZnJvbUNoYXJDb2RlKFM0ejhBbFsweDE5MF18UDZDUDFCZj4+PlM0ejhBbFsweDM3XSZTNHo4QWxbMHhhXSxTNHo4QWxbMHgxZF18UDZDUDFCZj4+PlM0ejhBbFsweGJdJlM0ejhBbFsweDddLFM0ejhBbFsweDFkXXxQNkNQMUJmPj4+UzR6OEFsWzB4OF0mUzR6OEFsWzB4N10sUzR6OEFsWzB4MWRdfFA2Q1AxQmYmUzR6OEFsWzB4N10pfXJldHVybiBVNmxoNGZbUzR6OEFsWzB4ZF1dfWZ1bmN0aW9uIHJZZjhxeU8oLi4uVTZsaDRmKXtCVU9WTGxpKFU2bGg0ZltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0sVTZsaDRmW1M0ejhBbFsweDFdXT1MYkRVQXYoYmpVMlpnKFM0ejhBbFsweDE5MV0pK1M0ejhBbFsweDE4OF0pKFU2bGg0ZltTNHo4QWxbMHgwXV0ubGVuZ3RoPj5TNHo4QWxbMHhlXSkpO2ZvcihVNmxoNGZbUzR6OEFsWzB4MzFdXT1TNHo4QWxbMHgwXTtVNmxoNGZbUzR6OEFsWzB4MzFdXTxVNmxoNGZbUzR6OEFsWzB4MV1dLmxlbmd0aDtVNmxoNGZbUzR6OEFsWzB4MzFdXSsrKVU2bGg0ZltTNHo4QWxbMHgxXV1bVTZsaDRmW1M0ejhBbFsweDMxXV1dPVM0ejhBbFsweDBdO2ZvcihVNmxoNGZbUzR6OEFsWzB4MzFdXT1TNHo4QWxbMHgwXTtVNmxoNGZbUzR6OEFsWzB4MzFdXTxVNmxoNGZbUzR6OEFsWzB4MF1dLmxlbmd0aCpTNHo4QWxbMHgyXTtVNmxoNGZbUzR6OEFsWzB4MzFdXSs9UzR6OEFsWzB4Ml0pVTZsaDRmW1M0ejhBbFsweDFdXVtVNmxoNGZbUzR6OEFsWzB4MzFdXT4+UzR6OEFsWzB4MzRdXXw9KFU2bGg0ZltTNHo4QWxbMHgwXV0uY2hhckNvZGVBdChVNmxoNGZbUzR6OEFsWzB4MzFdXS9TNHo4QWxbMHgyXSkmUzR6OEFsWzB4M10pPDxTNHo4QWxbMHgxOTRdLVU2bGg0ZltTNHo4QWxbMHgzMV1dJVM0ejhBbFsweDE5M107cmV0dXJuIFU2bGg0ZltTNHo4QWxbMHgxXV19ZnVuY3Rpb24geDRPSU9pKC4uLlU2bGg0Zil7QlVPVkxsaShVNmxoNGZbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLFU2bGg0ZlstUzR6OEFsWzB4MTkyXV09XCJcIik7Zm9yKFU2bGg0ZltTNHo4QWxbMHgzMV1dPVM0ejhBbFsweDBdO1U2bGg0ZltTNHo4QWxbMHgzMV1dPFU2bGg0ZltTNHo4QWxbMHgwXV0ubGVuZ3RoKlM0ejhBbFsweDE5M107VTZsaDRmW1M0ejhBbFsweDMxXV0rPVM0ejhBbFsweDJdKVU2bGg0ZlstUzR6OEFsWzB4MTkyXV0rPUxiRFVBdihialUyWmcoUzR6OEFsWzB4MThkXSkpLmZyb21DaGFyQ29kZShVNmxoNGZbUzR6OEFsWzB4MF1dW1U2bGg0ZltTNHo4QWxbMHgzMV1dPj5TNHo4QWxbMHgzNF1dPj4+UzR6OEFsWzB4MTk0XS1VNmxoNGZbUzR6OEFsWzB4MzFdXSVTNHo4QWxbMHgxOTNdJlM0ejhBbFsweDNdKTtyZXR1cm4gVTZsaDRmWy1TNHo4QWxbMHgxOTJdXX1mdW5jdGlvbiB0Slg2aEFPKFU2bGg0ZixQNkNQMUJmKXtyZXR1cm4gVTZsaDRmPj4+UDZDUDFCZnxVNmxoNGY8PFM0ejhBbFsweDE5M10tUDZDUDFCZn1mdW5jdGlvbiBCaGpZUE0oLi4uVTZsaDRmKXtVNmxoNGZbUzR6OEFsWzB4NF1dPVM0ejhBbFsweGVdO3JldHVybiBVNmxoNGZbUzR6OEFsWzB4MF1dPj4+VTZsaDRmW1M0ejhBbFsweDFdXX1mdW5jdGlvbiBDb1lWSk9aKC4uLlU2bGg0Zil7VTZsaDRmW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgzMl07cmV0dXJuIFU2bGg0ZltTNHo4QWxbMHgwXV0mVTZsaDRmW1M0ejhBbFsweDFdXV5+VTZsaDRmW1M0ejhBbFsweDBdXSZVNmxoNGZbUzR6OEFsWzB4ZV1dfWZ1bmN0aW9uIHFzelFSa00oLi4uVTZsaDRmKXtVNmxoNGZbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDMyXTtyZXR1cm4gVTZsaDRmW1M0ejhBbFsweDBdXSZVNmxoNGZbUzR6OEFsWzB4MV1dXlU2bGg0ZltTNHo4QWxbMHgwXV0mVTZsaDRmW1M0ejhBbFsweGVdXV5VNmxoNGZbUzR6OEFsWzB4MV1dJlU2bGg0ZltTNHo4QWxbMHhlXV19ZnVuY3Rpb24gcWlzNUViKC4uLlU2bGg0Zil7VTZsaDRmW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtyZXR1cm4gdEpYNmhBTyhVNmxoNGZbUzR6OEFsWzB4MF1dLFM0ejhBbFsweGVdKV50Slg2aEFPKFU2bGg0ZltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4MTZdKV50Slg2aEFPKFU2bGg0ZltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4OTRdKX1mdW5jdGlvbiBwUjg2eTEoLi4uVTZsaDRmKXtVNmxoNGZbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO3JldHVybiB0Slg2aEFPKFU2bGg0ZltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4OF0pXnRKWDZoQU8oVTZsaDRmW1M0ejhBbFsweDBdXSxTNHo4QWxbMHgxMmRdKV50Slg2aEFPKFU2bGg0ZltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4MTk1XSl9ZnVuY3Rpb24gcXNLVlNCVChVNmxoNGYpe3JldHVybiB0Slg2aEFPKFU2bGg0ZixTNHo4QWxbMHhhXSledEpYNmhBTyhVNmxoNGYsUzR6OEFsWzB4MzddKV5CaGpZUE0oVTZsaDRmLFM0ejhBbFsweDMyXSl9ZnVuY3Rpb24gY2ZJWm1CKFU2bGg0Zil7cmV0dXJuIHRKWDZoQU8oVTZsaDRmLFM0ejhBbFsweDFkMl0pXnRKWDZoQU8oVTZsaDRmLFM0ejhBbFsweDgwXSleQmhqWVBNKFU2bGg0ZixTNHo4QWxbMHg5MF0pfWZ1bmN0aW9uIG16OHhtZE8oLi4uVTZsaDRmKXtVNmxoNGZbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO3JldHVybiB0Slg2aEFPKFU2bGg0ZltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4MTddKV50Slg2aEFPKFU2bGg0ZltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4MzddKV50Slg2aEFPKFU2bGg0ZltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4MWQ2XSl9ZnVuY3Rpb24geTZXTUQ4KC4uLlU2bGg0Zil7VTZsaDRmW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtyZXR1cm4gdEpYNmhBTyhVNmxoNGZbUzR6OEFsWzB4MF1dLFM0ejhBbFsweDFdKV50Slg2aEFPKFU2bGg0ZltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4Ml0pXkJoallQTShVNmxoNGZbUzR6OEFsWzB4MF1dLFM0ejhBbFsweGFdKX1mdW5jdGlvbiBtMUpoQ0hQKC4uLlU2bGg0Zil7VTZsaDRmW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtyZXR1cm4gdEpYNmhBTyhVNmxoNGZbUzR6OEFsWzB4MF1dLFM0ejhBbFsweDgwXSledEpYNmhBTyhVNmxoNGZbUzR6OEFsWzB4MF1dLFM0ejhBbFsweDFkN10pXkJoallQTShVNmxoNGZbUzR6OEFsWzB4MF1dLFM0ejhBbFsweDhdKX1VNmxoNGZbUzR6OEFsWzB4Zl1dPW5ldyhMYkRVQXYoYmpVMlpnKFM0ejhBbFsweDE4NV0pKSkoUzR6OEFsWzB4MWQ5XSxTNHo4QWxbMHgxZGFdLC1TNHo4QWxbMHgxZGJdLC1TNHo4QWxbMHgxZGNdLFM0ejhBbFsweDFkZF0sUzR6OEFsWzB4MWRlXSwtUzR6OEFsWzB4MWRmXSwtUzR6OEFsWzB4MWUwXSwtUzR6OEFsWzB4MWUxXSxTNHo4QWxbMHgxZTJdLFM0ejhBbFsweDFlM10sUzR6OEFsWzB4MWU0XSxTNHo4QWxbMHgxZTVdLC1TNHo4QWxbMHgxZTZdLC1TNHo4QWxbMHgxZTddLC1TNHo4QWxbMHgxZThdLC1TNHo4QWxbMHgxZTldLC1TNHo4QWxbMHgxZWFdLFM0ejhBbFsweDFlYl0sUzR6OEFsWzB4MWVjXSxTNHo4QWxbMHgxZWRdLFM0ejhBbFsweDFlZV0sUzR6OEFsWzB4MWVmXSxTNHo4QWxbMHgxZjBdLC1TNHo4QWxbMHgxZjFdLC1TNHo4QWxbMHgxZjJdLC1TNHo4QWxbMHgxZjNdLC1TNHo4QWxbMHgxZjRdLC1TNHo4QWxbMHgxZjVdLC1TNHo4QWxbMHgxZjZdLFM0ejhBbFsweDFmN10sUzR6OEFsWzB4MWY4XSxTNHo4QWxbMHgxZjldLFM0ejhBbFsweDFmYV0sUzR6OEFsWzB4MWZiXSxTNHo4QWxbMHgxZmNdLFM0ejhBbFsweDFmZF0sUzR6OEFsWzB4MWZlXSwtUzR6OEFsWzB4MWZmXSwtUzR6OEFsWzB4MjAwXSwtUzR6OEFsWzB4MjAxXSwtUzR6OEFsWzB4MjAyXSwtUzR6OEFsWzB4MjAzXSwtUzR6OEFsWzB4MjA0XSwtUzR6OEFsWzB4MjA1XSwtUzR6OEFsWzB4MjA2XSwtUzR6OEFsWzB4MjA3XSxTNHo4QWxbMHgyMDhdLFM0ejhBbFsweDIwOV0sUzR6OEFsWzB4MjBhXSxTNHo4QWxbMHgyMGJdLFM0ejhBbFsweDIwY10sUzR6OEFsWzB4MjBkXSxTNHo4QWxbMHgyMGVdLFM0ejhBbFsweDIwZl0sUzR6OEFsWzB4MjEwXSxTNHo4QWxbMHgyMTFdLFM0ejhBbFsweDIxMl0sLVM0ejhBbFsweDIxM10sLVM0ejhBbFsweDIxNF0sLVM0ejhBbFsweDIxNV0sLVM0ejhBbFsweDIxNl0sLVM0ejhBbFsweDIxN10sLVM0ejhBbFsweDIxOF0pO2Z1bmN0aW9uIEFxZEN0bHQoUDZDUDFCZixfTXhLSnBtKXt2YXIgYkRKeFdUPW5ldyhMYkRVQXYoYmpVMlpnKFM0ejhBbFsweDE4NV0pKSkoUzR6OEFsWzB4MjE5XSwtUzR6OEFsWzB4MjFhXSxTNHo4QWxbMHgyMWJdLC1TNHo4QWxbMHgyMWNdLFM0ejhBbFsweDIxZF0sLVM0ejhBbFsweDIxZV0sUzR6OEFsWzB4MjFmXSxTNHo4QWxbMHgyMjBdKSxtVjBkQWlUO21WMGRBaVQ9bmV3KExiRFVBdihialUyWmcoUzR6OEFsWzB4MTkxXSkrUzR6OEFsWzB4MTg4XSkpKFM0ejhBbFsweDE5Nl0pO3ZhciB5SVJsMTMsZFF4UVpSayxwTU9pSmFDLE4xbDdDblEsa0FpQkw4LGVGTzBYbk0sRTZfS1JaLE5NR0ZnYTUscllmOHF5Tyx4NE9JT2ksdEpYNmhBTyxCaGpZUE07QlVPVkxsaShQNkNQMUJmW19NeEtKcG0+PlM0ejhBbFsweDM0XV18PVM0ejhBbFsweDFkXTw8UzR6OEFsWzB4MTk0XS1fTXhLSnBtJVM0ejhBbFsweDE5M10sUDZDUDFCZlsoX014S0pwbStTNHo4QWxbMHgxOTZdPj5TNHo4QWxbMHgyNF08PFM0ejhBbFsweDE4XSkrUzR6OEFsWzB4YzZdXT1fTXhLSnBtKTtmb3IocllmOHF5Tz1TNHo4QWxbMHgwXTtyWWY4cXlPPFA2Q1AxQmYubGVuZ3RoO3JZZjhxeU8rPVM0ejhBbFsweDEzNV0pe0JVT1ZMbGkoeUlSbDEzPWJESnhXVFtTNHo4QWxbMHgwXV0sZFF4UVpSaz1iREp4V1RbUzR6OEFsWzB4MV1dLHBNT2lKYUM9YkRKeFdUW1M0ejhBbFsweGVdXSxOMWw3Q25RPWJESnhXVFtTNHo4QWxbMHgzMl1dLGtBaUJMOD1iREp4V1RbUzR6OEFsWzB4MThdXSxlRk8wWG5NPWJESnhXVFtTNHo4QWxbMHgzNF1dLEU2X0tSWj1iREp4V1RbUzR6OEFsWzB4OF1dLE5NR0ZnYTU9YkRKeFdUW1M0ejhBbFsweGFdXSk7Zm9yKHg0T0lPaT1TNHo4QWxbMHgwXTt4NE9JT2k8UzR6OEFsWzB4MTk2XTt4NE9JT2krKyl7QlVPVkxsaSh4NE9JT2k8UzR6OEFsWzB4MTM1XT9tVjBkQWlUW3g0T0lPaV09UDZDUDFCZlt4NE9JT2krcllmOHF5T106bVYwZEFpVFt4NE9JT2ldPUp0WmRjTChKdFpkY0woSnRaZGNMKGNmSVptQihtVjBkQWlUW3g0T0lPaS1TNHo4QWxbMHhlXV0pLG1WMGRBaVRbeDRPSU9pLVM0ejhBbFsweGFdXSkscXNLVlNCVChtVjBkQWlUW3g0T0lPaS1TNHo4QWxbMHhjNl1dKSksbVYwZEFpVFt4NE9JT2ktUzR6OEFsWzB4MTM1XV0pLHRKWDZoQU89SnRaZGNMKEp0WmRjTChKdFpkY0woSnRaZGNMKE5NR0ZnYTUscFI4NnkxKGtBaUJMOCkpLENvWVZKT1ooa0FpQkw4LGVGTzBYbk0sRTZfS1JaKSksVTZsaDRmW1M0ejhBbFsweGZdXVt4NE9JT2ldKSxtVjBkQWlUW3g0T0lPaV0pLEJoallQTT1KdFpkY0wocWlzNUViKHlJUmwxMykscXN6UVJrTSh5SVJsMTMsZFF4UVpSayxwTU9pSmFDKSksTk1HRmdhNT1FNl9LUlosRTZfS1JaPWVGTzBYbk0sZUZPMFhuTT1rQWlCTDgsa0FpQkw4PUp0WmRjTChOMWw3Q25RLHRKWDZoQU8pLE4xbDdDblE9cE1PaUphQyxwTU9pSmFDPWRReFFaUmssZFF4UVpSaz15SVJsMTMseUlSbDEzPUp0WmRjTCh0Slg2aEFPLEJoallQTSkpfUJVT1ZMbGkoYkRKeFdUW1M0ejhBbFsweDBdXT1KdFpkY0woeUlSbDEzLGJESnhXVFtTNHo4QWxbMHgwXV0pLGJESnhXVFtTNHo4QWxbMHgxXV09SnRaZGNMKGRReFFaUmssYkRKeFdUW1M0ejhBbFsweDFdXSksYkRKeFdUW1M0ejhBbFsweGVdXT1KdFpkY0wocE1PaUphQyxiREp4V1RbUzR6OEFsWzB4ZV1dKSxiREp4V1RbUzR6OEFsWzB4MzJdXT1KdFpkY0woTjFsN0NuUSxiREp4V1RbUzR6OEFsWzB4MzJdXSksYkRKeFdUW1M0ejhBbFsweDE4XV09SnRaZGNMKGtBaUJMOCxiREp4V1RbUzR6OEFsWzB4MThdXSksYkRKeFdUW1M0ejhBbFsweDM0XV09SnRaZGNMKGVGTzBYbk0sYkRKeFdUW1M0ejhBbFsweDM0XV0pLGJESnhXVFtTNHo4QWxbMHg4XV09SnRaZGNMKEU2X0tSWixiREp4V1RbUzR6OEFsWzB4OF1dKSxiREp4V1RbUzR6OEFsWzB4YV1dPUp0WmRjTChOTUdGZ2E1LGJESnhXVFtTNHo4QWxbMHhhXV0pKX1yZXR1cm4gYkRKeFdUfWZ1bmN0aW9uIEp0WmRjTCguLi5VNmxoNGYpe0JVT1ZMbGkoVTZsaDRmW1M0ejhBbFsweDRdXT1TNHo4QWxbMHhlXSxVNmxoNGZbUzR6OEFsWzB4ZF1dPShVNmxoNGZbUzR6OEFsWzB4MF1dJlM0ejhBbFsweDE5N10pKyhVNmxoNGZbUzR6OEFsWzB4MV1dJlM0ejhBbFsweDE5N10pLFU2bGg0ZltTNHo4QWxbMHgzMl1dPShVNmxoNGZbUzR6OEFsWzB4MF1dPj5TNHo4QWxbMHgxMzVdKSsoVTZsaDRmW1M0ejhBbFsweDFdXT4+UzR6OEFsWzB4MTM1XSkrKFU2bGg0ZltTNHo4QWxbMHhkXV0+PlM0ejhBbFsweDEzNV0pKTtyZXR1cm4gVTZsaDRmW1M0ejhBbFsweDMyXV08PFM0ejhBbFsweDEzNV18VTZsaDRmW1M0ejhBbFsweGRdXSZTNHo4QWxbMHgxOTddfXJldHVybntoZXg6UDZDUDFCZixiNjQ6eUlSbDEzLGFueTpkUXhRWlJrLGhleF9obWFjOm1WMGRBaVQsYjY0X2htYWM6eUlSbDEzLGFueV9obWFjOmRReFFaUmt9fSgpLExiRFVBdihialUyWmcoUzR6OEFsWzB4MTk4XSkpLmxvZyhVNmxoNGZbUzR6OEFsWzB4MTg0XV0pKX1yZXR1cm4geE5Kckd4W2JqVTJaZyhTNHo4QWxbMHgxNzVdKV0telp4SkVSSltialUyWmcoUzR6OEFsWzB4MTc1XSldfSk7aWYoIUU2X0tSWil7TGJEVUF2KGJqVTJaZyhTNHo4QWxbMHgxOThdKSlbYmpVMlpnKDB4NTI5KV0oYmpVMlpnKDB4NTJhKSx0aGlzW2JqVTJaZyhTNHo4QWxbMHgxN2JdKV0pfWF3YWl0IHRoaXNbYmpVMlpnKDB4NTJiKV0oKX1hc3luY1tlRk8wWG5NKDB4NTJjKStlRk8wWG5NKDB4NTJkKStlRk8wWG5NKDB4NTJlKV0oKXtjb25zdCB6WnhKRVJKPWF3YWl0IHRoaXNbZUZPMFhuTShTNHo4QWxbMHgxNDZdKV0oKTt0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MTk5XSkrZUZPMFhuTShTNHo4QWxbMHgxOWVdKStTNHo4QWxbMHgzOF1dPXt9O3tmb3IobGV0IGJqVTJaZz1TNHo4QWxbMHgwXTtialUyWmc8dGhpc1tlRk8wWG5NKFM0ejhBbFsweDE2OF0pXVtlRk8wWG5NKFM0ejhBbFsweDE5YV0pXVtlRk8wWG5NKFM0ejhBbFsweDdkXSldO2JqVTJaZysrKXtjb25zdCB4TkpyR3g9dGhpc1tlRk8wWG5NKFM0ejhBbFsweDE2OF0pXVtlRk8wWG5NKFM0ejhBbFsweDE5YV0pXVtialUyWmddW2VGTzBYbk0oUzR6OEFsWzB4MTY3XSldW2VGTzBYbk0oUzR6OEFsWzB4MTliXSldKCk7dGhpc1tlRk8wWG5NKFM0ejhBbFsweDFhMV0pXVt4TkpyR3hdPVM0ejhBbFsweDIwXX1mb3IobGV0IGJqVTJaZz1TNHo4QWxbMHgwXTtialUyWmc8dGhpc1tlRk8wWG5NKFM0ejhBbFsweDE1OV0pK2VGTzBYbk0oUzR6OEFsWzB4MTljXSkrUzR6OEFsWzB4MTYyXV1bZUZPMFhuTShTNHo4QWxbMHgxOWRdKV1bZUZPMFhuTShTNHo4QWxbMHg3ZF0pXTtialUyWmcrKyl7Y29uc3QgeE5Kckd4PXRoaXNbZUZPMFhuTShTNHo4QWxbMHgxNTldKStlRk8wWG5NKFM0ejhBbFsweDE5Y10pK1M0ejhBbFsweDE2Ml1dW2VGTzBYbk0oUzR6OEFsWzB4MTlkXSldW2JqVTJaZ11bZUZPMFhuTShTNHo4QWxbMHgxNjddKV1bZUZPMFhuTShTNHo4QWxbMHgxOWJdKV0oKTt0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MTk5XSkrZUZPMFhuTShTNHo4QWxbMHgxOWVdKStTNHo4QWxbMHgzOF1dW3hOSnJHeF09UzR6OEFsWzB4MjBdfWNvbnN0IE93clY2ZT1hd2FpdCB0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MTYzXSldW2VGTzBYbk0oUzR6OEFsWzB4MTlmXSldKHtbZUZPMFhuTShTNHo4QWxbMHgxNTVdKV06ZUZPMFhuTShTNHo4QWxbMHgxYWVdKStlRk8wWG5NKDB4NTM1KStlRk8wWG5NKDB4NTM2KStlRk8wWG5NKDB4NTM3KSxbZUZPMFhuTShTNHo4QWxbMHgxNTZdKV06W3paeEpFUkosTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MWEwXSkpW2VGTzBYbk0oMHg1MzgpXSh0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MWExXSldKV19KVtlRk8wWG5NKDB4NTM5KV0oY202ajdtcygoLi4uelp4SkVSSik9Pnt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZihlRk8wWG5NKDB4NTNhKWluIFlGSnpNVyl7YmpVMlpnKCl9ZnVuY3Rpb24gYmpVMlpnKC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHhkXV09Y202ajdtcyhmdW5jdGlvbiguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbUzR6OEFsWzB4ZF1dPXpaeEpFUkpbUzR6OEFsWzB4MF1dLmxlbmd0aCk7aWYoelp4SkVSSltTNHo4QWxbMHhkXV08UzR6OEFsWzB4ZV0pcmV0dXJuIFM0ejhBbFsweDBdO0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHhlXV09TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTVlXSkpLm1heCguLi56WnhKRVJKW1M0ejhBbFsweDBdXSkselp4SkVSSltTNHo4QWxbMHgxMF1dPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDE1ZV0pKS5taW4oLi4uelp4SkVSSltTNHo4QWxbMHgwXV0pKTtpZih6WnhKRVJKW1M0ejhBbFsweGVdXT09PXpaeEpFUkpbUzR6OEFsWzB4MTBdXSlyZXR1cm4gUzR6OEFsWzB4MF07QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDM1XV09TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MWEyXSkrUzR6OEFsWzB4MTg4XSkoelp4SkVSSltTNHo4QWxbMHhkXV0tUzR6OEFsWzB4MV0pLmZpbGwoTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTVkXSkpLk1BWF9TQUZFX0lOVEVHRVIpLHpaeEpFUkpbUzR6OEFsWzB4MTZdXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxYTNdKSkoelp4SkVSSltTNHo4QWxbMHhkXV0tUzR6OEFsWzB4MV0pLmZpbGwoTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTVkXSkpLk1JTl9TQUZFX0lOVEVHRVIpLHpaeEpFUkpbUzR6OEFsWzB4MTldXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWVdKSkuY2VpbCgoelp4SkVSSltTNHo4QWxbMHhlXV0telp4SkVSSltTNHo4QWxbMHgxMF1dKS8oelp4SkVSSltTNHo4QWxbMHhkXV0tUzR6OEFsWzB4MV0pKSx6WnhKRVJKW1M0ejhBbFsweGFdXT1TNHo4QWxbMHgwXSk7Zm9yKHpaeEpFUkpbUzR6OEFsWzB4Ml1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4Ml1dPHpaeEpFUkpbUzR6OEFsWzB4ZF1dO3paeEpFUkpbUzR6OEFsWzB4Ml1dKyspe2lmKHpaeEpFUkpbUzR6OEFsWzB4MF1dW3paeEpFUkpbUzR6OEFsWzB4Ml1dXT09PXpaeEpFUkpbUzR6OEFsWzB4MTBdXXx8elp4SkVSSltTNHo4QWxbMHgwXV1belp4SkVSSltTNHo4QWxbMHgyXV1dPT09elp4SkVSSltTNHo4QWxbMHhlXV0pY29udGludWU7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweGFdXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWVdKSkuZmxvb3IoKHpaeEpFUkpbUzR6OEFsWzB4MF1dW3paeEpFUkpbUzR6OEFsWzB4Ml1dXS16WnhKRVJKW1M0ejhBbFsweDEwXV0pL3paeEpFUkpbUzR6OEFsWzB4MTldXSkselp4SkVSSltTNHo4QWxbMHgzNV1dW3paeEpFUkpbUzR6OEFsWzB4YV1dXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWVdKSkubWluKHpaeEpFUkpbUzR6OEFsWzB4MzVdXVt6WnhKRVJKW1M0ejhBbFsweGFdXV0selp4SkVSSltTNHo4QWxbMHgwXV1belp4SkVSSltTNHo4QWxbMHgyXV1dKSx6WnhKRVJKW1M0ejhBbFsweDE2XV1belp4SkVSSltTNHo4QWxbMHhhXV1dPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDE1ZV0pKS5tYXgoelp4SkVSSltTNHo4QWxbMHgxNl1dW3paeEpFUkpbUzR6OEFsWzB4YV1dXSx6WnhKRVJKW1M0ejhBbFsweDBdXVt6WnhKRVJKW1M0ejhBbFsweDJdXV0pKX1CVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MjRdXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWRdKSkuTUlOX1NBRkVfSU5URUdFUix6WnhKRVJKWy1TNHo4QWxbMHg3OV1dPXpaeEpFUkpbUzR6OEFsWzB4MTBdXSk7Zm9yKHpaeEpFUkpbUzR6OEFsWzB4MWE0XV09UzR6OEFsWzB4MF07elp4SkVSSltTNHo4QWxbMHgxYTRdXTx6WnhKRVJKW1M0ejhBbFsweGRdXS1TNHo4QWxbMHgxXTt6WnhKRVJKW1M0ejhBbFsweDFhNF1dKyspe2lmKHpaeEpFUkpbUzR6OEFsWzB4MzVdXVt6WnhKRVJKW1M0ejhBbFsweDFhNF1dXT09PUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDE1ZF0pKS5NQVhfU0FGRV9JTlRFR0VSJiZ6WnhKRVJKW1M0ejhBbFsweDE2XV1belp4SkVSSltTNHo4QWxbMHgxYTRdXV09PT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWRdKSkuTUlOX1NBRkVfSU5URUdFUiljb250aW51ZTtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MjRdXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWVdKSkubWF4KHpaeEpFUkpbUzR6OEFsWzB4MjRdXSx6WnhKRVJKW1M0ejhBbFsweDM1XV1belp4SkVSSltTNHo4QWxbMHgxYTRdXV0telp4SkVSSlstUzR6OEFsWzB4NzldXSkselp4SkVSSlstUzR6OEFsWzB4NzldXT16WnhKRVJKW1M0ejhBbFsweDE2XV1belp4SkVSSltTNHo4QWxbMHgxYTRdXV0pfXpaeEpFUkpbUzR6OEFsWzB4MjRdXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWVdKSkubWF4KHpaeEpFUkpbUzR6OEFsWzB4MjRdXSx6WnhKRVJKW1M0ejhBbFsweGVdXS16WnhKRVJKWy1TNHo4QWxbMHg3OV1dKTtyZXR1cm4gelp4SkVSSltTNHo4QWxbMHgyNF1dfSksTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTYxXSkpLmxvZyh6WnhKRVJKW1M0ejhBbFsweGRdXSkpfXJldHVybnt9fSkpO2Zvcihjb25zdCB4TkpyR3ggaW4gT3dyVjZlKXtpZihPd3JWNmVbeE5Kckd4W2VGTzBYbk0oUzR6OEFsWzB4MTliXSldKCldW2VGTzBYbk0oUzR6OEFsWzB4MWE1XSldPy5zdGF0dXM9PT1lRk8wWG5NKDB4NTNjKSl7dGhpc1tlRk8wWG5NKFM0ejhBbFsweDE5OV0pK2VGTzBYbk0oUzR6OEFsWzB4MTllXSkrUzR6OEFsWzB4MzhdXVt4TkpyR3hbZUZPMFhuTShTNHo4QWxbMHgxOWJdKV0oKV09UzR6OEFsWzB4NzNdfWlmKE93clY2ZVt4TkpyR3hbZUZPMFhuTShTNHo4QWxbMHgxOWJdKV0oKV1bZUZPMFhuTShTNHo4QWxbMHgxYTVdKV0/LnN0YXR1cz09PWVGTzBYbk0oMHg1M2QpKXt0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MWExXSldW3hOSnJHeFtlRk8wWG5NKFM0ejhBbFsweDE5Yl0pXSgpXT1TNHo4QWxbMHg3M119fX1pZighRTZfS1JaKXtMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNjFdKSlbZUZPMFhuTShTNHo4QWxbMHgxNDddKV0oZUZPMFhuTSgweDUzZSksdGhpc1tlRk8wWG5NKFM0ejhBbFsweDFhMV0pXSl9dGhpc1tlRk8wWG5NKFM0ejhBbFsweDFhNl0pXSgpfVtlRk8wWG5NKFM0ejhBbFsweDFiM10pXSh6WnhKRVJKKXtpZihlRk8wWG5NKDB4NTQwKWluIFlGSnpNVyl7YmpVMlpnKCl9ZnVuY3Rpb24gYmpVMlpnKCl7dmFyIHpaeEpFUko9ZnVuY3Rpb24oelp4SkVSSix4TkpyR3gpe3ZhciBPd3JWNmU9W10sVTZsaDRmO0JVT1ZMbGkoVTZsaDRmPXpaeEpFUkoubGVuZ3RoLHpaeEpFUkouc29ydCgoelp4SkVSSix4TkpyR3gpPT56WnhKRVJKLXhOSnJHeCksYmpVMlpnKE93clY2ZSxbXSxTNHo4QWxbMHgwXSxVNmxoNGYselp4SkVSSix4TkpyR3gpKTtyZXR1cm4gT3dyVjZlfSxialUyWmc7QlVPVkxsaShialUyWmc9ZnVuY3Rpb24oelp4SkVSSix4TkpyR3gsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLF9NeEtKcG0pe3ZhciBiREp4V1Q9UzR6OEFsWzB4OGZdLG1WMGRBaVQ7aWYoX014S0pwbTxTNHo4QWxbMHgwXSlyZXR1cm47aWYoX014S0pwbT09PVM0ejhBbFsweDBdKXJldHVybiB6WnhKRVJKLnB1c2goeE5Kckd4KTtmb3IobVYwZEFpVD1Pd3JWNmU7bVYwZEFpVDxVNmxoNGY7bVYwZEFpVCsrKXtpZihQNkNQMUJmW21WMGRBaVRdPl9NeEtKcG0pYnJlYWs7aWYobVYwZEFpVD5Pd3JWNmUmJlA2Q1AxQmZbbVYwZEFpVF09PT1QNkNQMUJmW21WMGRBaVQtUzR6OEFsWzB4MV1dKWNvbnRpbnVlO0JVT1ZMbGkoYkRKeFdUPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFhM10pKS5mcm9tKHhOSnJHeCksYkRKeFdULnB1c2goUDZDUDFCZlttVjBkQWlUXSksYmpVMlpnKHpaeEpFUkosYkRKeFdULG1WMGRBaVQrUzR6OEFsWzB4MV0sVTZsaDRmLFA2Q1AxQmYsX014S0pwbS1QNkNQMUJmW21WMGRBaVRdKSl9fSxMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNjFdKSkubG9nKHpaeEpFUkopKX1jb25zdCB4TkpyR3g9TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MWFjXSkpW2VGTzBYbk0oUzR6OEFsWzB4MWI1XSldKHpaeEpFUkopLE93clY2ZT1lRk8wWG5NKFM0ejhBbFsweDFhOF0pLFU2bGg0Zj1uZXcoTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MWFiXSkpKSxQNkNQMUJmPVU2bGg0ZltlRk8wWG5NKFM0ejhBbFsweDFhN10pXSh4TkpyR3gpLF9NeEtKcG09VTZsaDRmW2VGTzBYbk0oUzR6OEFsWzB4MWE3XSldKE93clY2ZSksYkRKeFdUPW5ldyhMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxYTldKSkpKFA2Q1AxQmZbZUZPMFhuTShTNHo4QWxbMHg3ZF0pXSk7Zm9yKGxldCBFNl9LUlo9UzR6OEFsWzB4MF07RTZfS1JaPFA2Q1AxQmZbZUZPMFhuTShTNHo4QWxbMHg3ZF0pXTtFNl9LUlorKyliREp4V1RbRTZfS1JaXT1QNkNQMUJmW0U2X0tSWl1eX014S0pwbVtFNl9LUlolX014S0pwbVtlRk8wWG5NKFM0ejhBbFsweDdkXSldXTtyZXR1cm4gTGJEVUF2KGVGTzBYbk0oMHg1NDcpKShMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxY2ZdKSlbZUZPMFhuTSgweDU0OSldKC4uLmJESnhXVCkpfVtlRk8wWG5NKDB4NTRhKStlRk8wWG5NKDB4NTRiKStlRk8wWG5NKDB4NTRjKV0oLi4uelp4SkVSSil7elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07Y29uc3QgYmpVMlpnPWVGTzBYbk0oUzR6OEFsWzB4MWE4XSkseE5Kckd4PUxiRFVBdihlRk8wWG5NKDB4NTRkKSkoelp4SkVSSltTNHo4QWxbMHgwXV0pLE93clY2ZT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxYTldKSlbZUZPMFhuTShTNHo4QWxbMHgxYWFdKV0oeE5Kckd4LGNtNmo3bXMoKC4uLnpaeEpFUkopPT57elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07cmV0dXJuIHpaeEpFUkpbUzR6OEFsWzB4MF1dW2VGTzBYbk0oMHg1NGUpXShTNHo4QWxbMHgwXSl9KSksVTZsaDRmPW5ldyhMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxYWJdKSkpLFA2Q1AxQmY9VTZsaDRmW2VGTzBYbk0oUzR6OEFsWzB4MWE3XSldKGJqVTJaZyksX014S0pwbT1uZXcoTGJEVUF2KGVGTzBYbk0oMHg1NGYpK1wiSFwiKSkoT3dyVjZlW2VGTzBYbk0oUzR6OEFsWzB4N2RdKV0pO2ZvcihsZXQgYkRKeFdUPVM0ejhBbFsweDBdO2JESnhXVDxPd3JWNmVbZUZPMFhuTShTNHo4QWxbMHg3ZF0pXTtiREp4V1QrKylfTXhLSnBtW2JESnhXVF09T3dyVjZlW2JESnhXVF1eUDZDUDFCZltiREp4V1QlUDZDUDFCZltlRk8wWG5NKFM0ejhBbFsweDdkXSldXTtjb25zdCBFNl9LUlo9bmV3KExiRFVBdihlRk8wWG5NKDB4NTUwKSkpLG1WMGRBaVQ9RTZfS1JaW2VGTzBYbk0oMHg1NTEpXShfTXhLSnBtKTtyZXR1cm4gTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MWFjXSkpW2VGTzBYbk0oMHg1NTIpXShtVjBkQWlUKX1hc3luY1tlRk8wWG5NKDB4NTUzKStlRk8wWG5NKDB4NTU0KV0oKXtjb25zdCB6WnhKRVJKPShhd2FpdCB0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MWFkXSldKCkpW2VGTzBYbk0oUzR6OEFsWzB4M2FdKV0sYmpVMlpnPWF3YWl0IHRoaXNbZUZPMFhuTShTNHo4QWxbMHgxNDZdKV0oKSx4TkpyR3g9e1tlRk8wWG5NKDB4NTU1KV06YmpVMlpnLFtTNHo4QWxbMHg3NF1dOl9NeEtKcG0sW2VGTzBYbk0oMHg1NTYpXTp7W2VGTzBYbk0oUzR6OEFsWzB4MWFlXSldOnpaeEpFUkosW2VGTzBYbk0oUzR6OEFsWzB4MWFmXSldOkxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDI4XSkpW2VGTzBYbk0oUzR6OEFsWzB4MjldKV1bZUZPMFhuTShTNHo4QWxbMHgxYjBdKV19LFtlRk8wWG5NKFM0ejhBbFsweDFiNl0pXTpMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxYjddKSlbZUZPMFhuTShTNHo4QWxbMHgxYjFdKV0oKX07eE5Kckd4W2VGTzBYbk0oUzR6OEFsWzB4MWI4XSldPWF3YWl0IGNmSVptQigpO2NvbnN0IE93clY2ZT1MYkRVQXYoZUZPMFhuTSgweDU1YikrXCJOXCIpW2VGTzBYbk0oUzR6OEFsWzB4MWIxXSldKCksVTZsaDRmPXtbUzR6OEFsWzB4MWIyXV06dGhpc1tlRk8wWG5NKFM0ejhBbFsweDFiM10pXSh4TkpyR3gpfSxtVjBkQWlUPWF3YWl0IExiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFiOV0pKShiREp4V1Q/XCJcIitQNkNQMUJmK2VGTzBYbk0oUzR6OEFsWzB4MWI0XSk6ZUZPMFhuTShTNHo4QWxbMHgxYmFdKStMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgyOF0pKVtlRk8wWG5NKFM0ejhBbFsweDI5XSldW2VGTzBYbk0oUzR6OEFsWzB4MWJiXSldK2VGTzBYbk0oUzR6OEFsWzB4MWI0XSkse1tlRk8wWG5NKFM0ejhBbFsweDE1NV0pXTplRk8wWG5NKFM0ejhBbFsweDFiZF0pLFtlRk8wWG5NKFM0ejhBbFsweDFiZV0pXTpMYkRVQXYoZUZPMFhuTSgweDU2MikrUzR6OEFsWzB4YThdKVtlRk8wWG5NKFM0ejhBbFsweDFiNV0pXShVNmxoNGYpLFtlRk8wWG5NKDB4NTYzKV06e1tlRk8wWG5NKFM0ejhBbFsweDFiZl0pXTplRk8wWG5NKFM0ejhBbFsweDFjMF0pfX0pLHlJUmwxMz10aGlzW2VGTzBYbk0oMHg1NjYpXSgoYXdhaXQgbVYwZEFpVFtlRk8wWG5NKDB4NTY3KV0oKSlbUzR6OEFsWzB4MWIyXV0pO2lmKCFFNl9LUlope0xiRFVBdihlRk8wWG5NKDB4NTY4KStTNHo4QWxbMHgxN2FdKVtlRk8wWG5NKFM0ejhBbFsweDE0N10pXShlRk8wWG5NKDB4NTY5KSx5SVJsMTMsZUZPMFhuTSgweDU2YSkrKExiRFVBdihlRk8wWG5NKDB4NTZiKSlbZUZPMFhuTShTNHo4QWxbMHgxYjFdKV0oKS1Pd3JWNmUpK1wibXNcIil9QlVPVkxsaSh0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MTU5XSkrZUZPMFhuTShTNHo4QWxbMHgxOWNdKStTNHo4QWxbMHgxNjJdXT15SVJsMTMsYXdhaXQgdGhpc1tlRk8wWG5NKDB4NTZjKV0oKSl9YXN5bmNbZUZPMFhuTShTNHo4QWxbMHgxNDhdKV0oelp4SkVSSixialUyWmcpe0JVT1ZMbGkoYmpVMlpnW2VGTzBYbk0oUzR6OEFsWzB4MWI2XSldPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFiN10pKVtlRk8wWG5NKFM0ejhBbFsweDFiMV0pXSgpLGJqVTJaZ1tlRk8wWG5NKFM0ejhBbFsweDFiOF0pXT1hd2FpdCBjZklabUIoKSk7Y29uc3QgeE5Kckd4PWF3YWl0IExiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFiOV0pKShiREp4V1Q/XCJcIitQNkNQMUJmK1M0ejhBbFsweDFiY10relp4SkVSSjplRk8wWG5NKFM0ejhBbFsweDFiYV0pK0xiRFVBdihlRk8wWG5NKDB4NTZkKStTNHo4QWxbMHg3Y10pW2VGTzBYbk0oUzR6OEFsWzB4MjldKV1bZUZPMFhuTShTNHo4QWxbMHgxYmJdKV0rUzR6OEFsWzB4MWJjXSt6WnhKRVJKLHtbZUZPMFhuTShTNHo4QWxbMHgxNTVdKV06ZUZPMFhuTShTNHo4QWxbMHgxYmRdKSxbZUZPMFhuTShTNHo4QWxbMHgxYmVdKV06TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MWFjXSkpW2VGTzBYbk0oUzR6OEFsWzB4MWI1XSldKHtbUzR6OEFsWzB4MWIyXV06dGhpc1tlRk8wWG5NKFM0ejhBbFsweDFiM10pXShialUyWmcpfSksW2VGTzBYbk0oMHg1NmUpK1M0ejhBbFsweDM4XV06e1tlRk8wWG5NKFM0ejhBbFsweDFiZl0pXTplRk8wWG5NKFM0ejhBbFsweDFjMF0pfX0pfWFzeW5jW2VGTzBYbk0oUzR6OEFsWzB4MWMxXSkrZUZPMFhuTShTNHo4QWxbMHgxYzJdKStTNHo4QWxbMHgxYzNdXSgpe2NvbnN0IHpaeEpFUko9dEpYNmhBT1tlRk8wWG5NKFM0ejhBbFsweDFjMV0pK2VGTzBYbk0oUzR6OEFsWzB4MWMyXSkrUzR6OEFsWzB4MWMzXV0oKTtpZighelp4SkVSSil7YXdhaXQgbmV3KExiRFVBdihlRk8wWG5NKFM0ejhBbFsweDE1Yl0pKSkoY202ajdtcygoLi4uelp4SkVSSik9Pnt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtpZihlRk8wWG5NKDB4NTcxKStcIjhcImluIFlGSnpNVyl7YmpVMlpnKCl9ZnVuY3Rpb24gYmpVMlpnKC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MF0selp4SkVSSltTNHo4QWxbMHhkXV09ZnVuY3Rpb24oLi4uelp4SkVSSil7QlVPVkxsaShjbTZqN21zKG16OHhtZE8sUzR6OEFsWzB4ZV0pLGNtNmo3bXMocXNLVlNCVCksY202ajdtcyh0Slg2aEFPLFM0ejhBbFsweDMyXSksY202ajdtcyhrQWlCTDgpLGNtNmo3bXMocE1PaUphQyksY202ajdtcyh5SVJsMTMsUzR6OEFsWzB4ZV0pLGNtNmo3bXMoRTZfS1JaKSxjbTZqN21zKFA2Q1AxQmYsUzR6OEFsWzB4MzJdKSxjbTZqN21zKGJqVTJaZykselp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MF0sY202ajdtcyh5NldNRDgsUzR6OEFsWzB4ZV0pLGNtNmo3bXMoY2ZJWm1CKSxjbTZqN21zKHBSODZ5MSksY202ajdtcyhxaXM1RWIpLGNtNmo3bXMocXN6UVJrTSksY202ajdtcyhCaGpZUE0pLGNtNmo3bXMocllmOHF5TyxTNHo4QWxbMHhlXSksY202ajdtcyhOTUdGZ2E1LFM0ejhBbFsweGVdKSxjbTZqN21zKHVFUFBPVyksY202ajdtcyhOMWw3Q25RKSxjbTZqN21zKGRReFFaUmspLGNtNmo3bXMobVYwZEFpVCksY202ajdtcyhiREp4V1QsUzR6OEFsWzB4ZV0pLGNtNmo3bXMoX014S0pwbSksY202ajdtcyh4TkpyR3gsUzR6OEFsWzB4ZV0pLHpaeEpFUkpbUzR6OEFsWzB4ZV1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4MzFdXT1cIlwiKTtmdW5jdGlvbiBialUyWmcoLi4uelp4SkVSSil7elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07cmV0dXJuIEU2X0tSWihfTXhLSnBtKGRReFFaUmsoelp4SkVSSltTNHo4QWxbMHgwXV0pKSl9ZnVuY3Rpb24geE5Kckd4KC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweGVdO3JldHVybiB5SVJsMTMoX014S0pwbShkUXhRWlJrKHpaeEpFUkpbUzR6OEFsWzB4MF1dKSkselp4SkVSSltTNHo4QWxbMHgxXV0pfWZ1bmN0aW9uIE93clY2ZSh6WnhKRVJKLGJqVTJaZyl7cmV0dXJuIEU2X0tSWihiREp4V1QoZFF4UVpSayh6WnhKRVJKKSxkUXhRWlJrKGJqVTJaZykpKX1mdW5jdGlvbiBVNmxoNGYoelp4SkVSSixialUyWmcpe3JldHVybiBtVjBkQWlUKGJESnhXVChkUXhRWlJrKHpaeEpFUkopLGRReFFaUmsoYmpVMlpnKSkpfWZ1bmN0aW9uIFA2Q1AxQmYoLi4uelp4SkVSSil7elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MzJdO3JldHVybiB5SVJsMTMoYkRKeFdUKGRReFFaUmsoelp4SkVSSltTNHo4QWxbMHgwXV0pLGRReFFaUmsoelp4SkVSSltTNHo4QWxbMHgxXV0pKSx6WnhKRVJKW1M0ejhBbFsweGVdXSl9ZnVuY3Rpb24gX014S0pwbSguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtyZXR1cm4ga0FpQkw4KG16OHhtZE8odUVQUE9XKHpaeEpFUkpbUzR6OEFsWzB4MF1dKSx6WnhKRVJKW1M0ejhBbFsweDBdXS5sZW5ndGgqUzR6OEFsWzB4Ml0pKX1mdW5jdGlvbiBiREp4V1QoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHhlXSx6WnhKRVJKW1M0ejhBbFsweGRdXT11RVBQT1coelp4SkVSSltTNHo4QWxbMHgwXV0pKTtpZih6WnhKRVJKW1M0ejhBbFsweGRdXS5sZW5ndGg+UzR6OEFsWzB4MTM1XSl6WnhKRVJKW1M0ejhBbFsweGRdXT1tejh4bWRPKHpaeEpFUkpbUzR6OEFsWzB4ZF1dLHpaeEpFUkpbUzR6OEFsWzB4MF1dLmxlbmd0aCpTNHo4QWxbMHgyXSk7dmFyIGJqVTJaZz1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxYTNdKSkoUzR6OEFsWzB4MTM1XSkseE5Kckd4PUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFhM10pKShTNHo4QWxbMHgxMzVdKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgzMl1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MzJdXTxTNHo4QWxbMHgxMzVdO3paeEpFUkpbUzR6OEFsWzB4MzJdXSsrKXtCVU9WTGxpKGJqVTJaZ1t6WnhKRVJKW1M0ejhBbFsweDMyXV1dPXpaeEpFUkpbUzR6OEFsWzB4ZF1dW3paeEpFUkpbUzR6OEFsWzB4MzJdXV1eUzR6OEFsWzB4MWM0XSx4TkpyR3hbelp4SkVSSltTNHo4QWxbMHgzMl1dXT16WnhKRVJKW1M0ejhBbFsweGRdXVt6WnhKRVJKW1M0ejhBbFsweDMyXV1dXlM0ejhBbFsweDFjNV0pfXpaeEpFUkpbUzR6OEFsWzB4YTBdXT1tejh4bWRPKGJqVTJaZy5jb25jYXQodUVQUE9XKHpaeEpFUkpbUzR6OEFsWzB4MV1dKSksUzR6OEFsWzB4MTg2XSt6WnhKRVJKW1M0ejhBbFsweDFdXS5sZW5ndGgqUzR6OEFsWzB4Ml0pO3JldHVybiBrQWlCTDgobXo4eG1kTyh4TkpyR3guY29uY2F0KHpaeEpFUkpbUzR6OEFsWzB4YTBdXSkscXNZNndGKGVGTzBYbk0oMHg1NzQpLFM0ejhBbFsweDE4Nl0sUzR6OEFsWzB4MjhdKSkpfWZ1bmN0aW9uIEU2X0tSWiguLi5ialUyWmcpe2JqVTJaZ1tTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07dHJ5e3paeEpFUkpbUzR6OEFsWzB4ZV1dfWNhdGNoKHhOSnJHeCl7elp4SkVSSltTNHo4QWxbMHhlXV09UzR6OEFsWzB4MF19QlVPVkxsaShialUyWmdbUzR6OEFsWzB4ZF1dPXpaeEpFUkpbUzR6OEFsWzB4ZV1dP2VGTzBYbk0oMHg1NzUpOmVGTzBYbk0oMHg1NzYpLGJqVTJaZ1stUzR6OEFsWzB4NTVdXT1cIlwiLGJqVTJaZ1tTNHo4QWxbMHgxMF1dPVM0ejhBbFsweDFjNl0pO2ZvcihialUyWmdbLVM0ejhBbFsweGFdXT1TNHo4QWxbMHgwXTtialUyWmdbLVM0ejhBbFsweGFdXTxialUyWmdbUzR6OEFsWzB4MF1dLmxlbmd0aDtialUyWmdbLVM0ejhBbFsweGFdXSsrKXtCVU9WTGxpKGJqVTJaZ1tTNHo4QWxbMHgxMF1dPWJqVTJaZ1tTNHo4QWxbMHgwXV0uY2hhckNvZGVBdChialUyWmdbLVM0ejhBbFsweGFdXSksYmpVMlpnWy1TNHo4QWxbMHg1NV1dKz1ialUyWmdbUzR6OEFsWzB4ZF1dLmNoYXJBdChialUyWmdbUzR6OEFsWzB4MTBdXT4+PlM0ejhBbFsweDE4XSZTNHo4QWxbMHhjNl0pK2JqVTJaZ1tTNHo4QWxbMHhkXV0uY2hhckF0KGJqVTJaZ1tTNHo4QWxbMHgxMF1dJlM0ejhBbFsweGM2XSkpfXJldHVybiBialUyWmdbLVM0ejhBbFsweDU1XV19ZnVuY3Rpb24gbVYwZEFpVCguLi5ialUyWmcpe2JqVTJaZ1tTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV07dHJ5e3paeEpFUkpbUzR6OEFsWzB4MzFdXX1jYXRjaCh4TkpyR3gpe3paeEpFUkpbUzR6OEFsWzB4MzFdXT1cIlwifUJVT1ZMbGkoYmpVMlpnW1M0ejhBbFsweDFdXT1lRk8wWG5NKDB4NTc3KStlRk8wWG5NKDB4NTc4KStlRk8wWG5NKDB4NTc5KStlRk8wWG5NKDB4NTdhKStlRk8wWG5NKDB4NTdiKStlRk8wWG5NKDB4NTdjKStlRk8wWG5NKDB4NTdkKStTNHo4QWxbMHgxYmNdLGJqVTJaZ1stUzR6OEFsWzB4MWM4XV09XCJcIixialUyWmdbUzR6OEFsWzB4MTBdXT1ialUyWmdbUzR6OEFsWzB4MF1dLmxlbmd0aCk7Zm9yKGJqVTJaZ1tTNHo4QWxbMHgxYzddXT1TNHo4QWxbMHgwXTtialUyWmdbUzR6OEFsWzB4MWM3XV08YmpVMlpnW1M0ejhBbFsweDEwXV07YmpVMlpnW1M0ejhBbFsweDFjN11dKz1TNHo4QWxbMHgzMl0pe2JqVTJaZ1tTNHo4QWxbMHgzNF1dPWJqVTJaZ1tTNHo4QWxbMHgwXV0uY2hhckNvZGVBdChialUyWmdbUzR6OEFsWzB4MWM3XV0pPDxTNHo4QWxbMHgxMzVdfChialUyWmdbUzR6OEFsWzB4MWM3XV0rUzR6OEFsWzB4MV08YmpVMlpnW1M0ejhBbFsweDEwXV0/YmpVMlpnW1M0ejhBbFsweDBdXS5jaGFyQ29kZUF0KGJqVTJaZ1tTNHo4QWxbMHgxYzddXStTNHo4QWxbMHgxXSk8PFM0ejhBbFsweDJdOlM0ejhBbFsweDBdKXwoYmpVMlpnW1M0ejhBbFsweDFjN11dK1M0ejhBbFsweGVdPGJqVTJaZ1tTNHo4QWxbMHgxMF1dP2JqVTJaZ1tTNHo4QWxbMHgwXV0uY2hhckNvZGVBdChialUyWmdbUzR6OEFsWzB4MWM3XV0rUzR6OEFsWzB4ZV0pOlM0ejhBbFsweDBdKTtmb3IoYmpVMlpnW1M0ejhBbFsweDE5XV09UzR6OEFsWzB4MF07YmpVMlpnW1M0ejhBbFsweDE5XV08UzR6OEFsWzB4MThdO2JqVTJaZ1tTNHo4QWxbMHgxOV1dKyspYmpVMlpnW1M0ejhBbFsweDFjN11dKlM0ejhBbFsweDJdK2JqVTJaZ1tTNHo4QWxbMHgxOV1dKlM0ejhBbFsweDhdPmJqVTJaZ1tTNHo4QWxbMHgwXV0ubGVuZ3RoKlM0ejhBbFsweDJdP2JqVTJaZ1stUzR6OEFsWzB4MWM4XV0rPXpaeEpFUkpbUzR6OEFsWzB4MzFdXTpialUyWmdbLVM0ejhBbFsweDFjOF1dKz1ialUyWmdbUzR6OEFsWzB4MV1dLmNoYXJBdChialUyWmdbUzR6OEFsWzB4MzRdXT4+PlM0ejhBbFsweDhdKihTNHo4QWxbMHgzMl0tYmpVMlpnW1M0ejhBbFsweDE5XV0pJlM0ejhBbFsweDddKX1yZXR1cm4gYmpVMlpnWy1TNHo4QWxbMHgxYzhdXX1mdW5jdGlvbiB5SVJsMTMoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHhlXSx6WnhKRVJKW1M0ejhBbFsweGRdXT16WnhKRVJKW1M0ejhBbFsweDFdXS5sZW5ndGgselp4SkVSSltTNHo4QWxbMHgzMV1dPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFhMl0pK1M0ejhBbFsweDE4OF0pKCkpO3ZhciBialUyWmcseE5Kckd4LE93clY2ZSxVNmxoNGY7elp4SkVSSltTNHo4QWxbMHgxOF1dPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFhM10pKShMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWVdKSkuY2VpbCh6WnhKRVJKW1M0ejhBbFsweDBdXS5sZW5ndGgvUzR6OEFsWzB4ZV0pKTtmb3IoYmpVMlpnPVM0ejhBbFsweDBdO2JqVTJaZzx6WnhKRVJKW1M0ejhBbFsweDE4XV0ubGVuZ3RoO2JqVTJaZysrKXpaeEpFUkpbUzR6OEFsWzB4MThdXVtialUyWmddPXpaeEpFUkpbUzR6OEFsWzB4MF1dLmNoYXJDb2RlQXQoYmpVMlpnKlM0ejhBbFsweGVdKTw8UzR6OEFsWzB4Ml18elp4SkVSSltTNHo4QWxbMHgwXV0uY2hhckNvZGVBdChialUyWmcqUzR6OEFsWzB4ZV0rUzR6OEFsWzB4MV0pO3doaWxlKHpaeEpFUkpbUzR6OEFsWzB4MThdXS5sZW5ndGg+UzR6OEFsWzB4MF0pe0JVT1ZMbGkoVTZsaDRmPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFhM10pKSgpLE93clY2ZT1TNHo4QWxbMHgwXSk7Zm9yKGJqVTJaZz1TNHo4QWxbMHgwXTtialUyWmc8elp4SkVSSltTNHo4QWxbMHgxOF1dLmxlbmd0aDtialUyWmcrKyl7QlVPVkxsaShPd3JWNmU9KE93clY2ZTw8UzR6OEFsWzB4MTM1XSkrelp4SkVSSltTNHo4QWxbMHgxOF1dW2JqVTJaZ10seE5Kckd4PUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDE1ZV0pKS5mbG9vcihPd3JWNmUvelp4SkVSSltTNHo4QWxbMHhkXV0pLE93clY2ZS09eE5Kckd4KnpaeEpFUkpbUzR6OEFsWzB4ZF1dKTtpZihVNmxoNGYubGVuZ3RoPlM0ejhBbFsweDBdfHx4TkpyR3g+UzR6OEFsWzB4MF0pVTZsaDRmW1U2bGg0Zi5sZW5ndGhdPXhOSnJHeH1CVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4MzFdXVt6WnhKRVJKW1M0ejhBbFsweDMxXV0ubGVuZ3RoXT1Pd3JWNmUselp4SkVSSltTNHo4QWxbMHgxOF1dPVU2bGg0Zil9elp4SkVSSlstUzR6OEFsWzB4MWM5XV09XCJcIjtmb3IoYmpVMlpnPXpaeEpFUkpbUzR6OEFsWzB4MzFdXS5sZW5ndGgtUzR6OEFsWzB4MV07YmpVMlpnPj1TNHo4QWxbMHgwXTtialUyWmctLSl6WnhKRVJKWy1TNHo4QWxbMHgxYzldXSs9elp4SkVSSltTNHo4QWxbMHgxXV0uY2hhckF0KHpaeEpFUkpbUzR6OEFsWzB4MzFdXVtialUyWmddKTt6WnhKRVJKW1M0ejhBbFsweDhdXT1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWVdKSkuY2VpbCh6WnhKRVJKW1M0ejhBbFsweDBdXS5sZW5ndGgqUzR6OEFsWzB4Ml0vKExiRFVBdihlRk8wWG5NKFM0ejhBbFsweDE1ZV0pKS5sb2coelp4SkVSSltTNHo4QWxbMHgxXV0ubGVuZ3RoKS9MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNWVdKSkubG9nKFM0ejhBbFsweGVdKSkpO2ZvcihialUyWmc9elp4SkVSSlstUzR6OEFsWzB4MWM5XV0ubGVuZ3RoO2JqVTJaZzx6WnhKRVJKW1M0ejhBbFsweDhdXTtialUyWmcrKyl6WnhKRVJKWy1TNHo4QWxbMHgxYzldXT16WnhKRVJKW1M0ejhBbFsweDFdXVtTNHo4QWxbMHgwXV0relp4SkVSSlstUzR6OEFsWzB4MWM5XV07cmV0dXJuIHpaeEpFUkpbLVM0ejhBbFsweDFjOV1dfWZ1bmN0aW9uIGRReFFaUmsoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweGRdXT1cIlwiLHpaeEpFUkpbUzR6OEFsWzB4ZV1dPS1TNHo4QWxbMHgxXSk7dmFyIGJqVTJaZyx4TkpyR3g7d2hpbGUoKyt6WnhKRVJKW1M0ejhBbFsweGVdXTx6WnhKRVJKW1M0ejhBbFsweDBdXS5sZW5ndGgpe0JVT1ZMbGkoYmpVMlpnPXpaeEpFUkpbUzR6OEFsWzB4MF1dLmNoYXJDb2RlQXQoelp4SkVSSltTNHo4QWxbMHhlXV0pLHhOSnJHeD16WnhKRVJKW1M0ejhBbFsweGVdXStTNHo4QWxbMHgxXTx6WnhKRVJKW1M0ejhBbFsweDBdXS5sZW5ndGg/elp4SkVSSltTNHo4QWxbMHgwXV0uY2hhckNvZGVBdCh6WnhKRVJKW1M0ejhBbFsweGVdXStTNHo4QWxbMHgxXSk6UzR6OEFsWzB4MF0pO2lmKFM0ejhBbFsweDFjYV08PWJqVTJaZyYmYmpVMlpnPD1TNHo4QWxbMHgxY2JdJiZTNHo4QWxbMHgxY2NdPD14TkpyR3gmJnhOSnJHeDw9UzR6OEFsWzB4MWNkXSl7QlVPVkxsaShialUyWmc9UzR6OEFsWzB4MWNlXSsoKGJqVTJaZyZTNHo4QWxbMHgxOGNdKTw8UzR6OEFsWzB4OTBdKSsoeE5Kckd4JlM0ejhBbFsweDE4Y10pLHpaeEpFUkpbUzR6OEFsWzB4ZV1dKyspfWlmKGJqVTJaZzw9UzR6OEFsWzB4MWNdKXpaeEpFUkpbUzR6OEFsWzB4ZF1dKz1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxY2ZdKSkuZnJvbUNoYXJDb2RlKGJqVTJaZyk7ZWxzZSBpZihialUyWmc8PVM0ejhBbFsweDFkMF0pelp4SkVSSltTNHo4QWxbMHhkXV0rPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFjZl0pKS5mcm9tQ2hhckNvZGUoUzR6OEFsWzB4NzZdfGJqVTJaZz4+PlM0ejhBbFsweDhdJlM0ejhBbFsweDE4ZV0sUzR6OEFsWzB4MWRdfGJqVTJaZyZTNHo4QWxbMHg3XSk7ZWxzZSBpZihialUyWmc8PVM0ejhBbFsweDE5N10pelp4SkVSSltTNHo4QWxbMHhkXV0rPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFjZl0pKS5mcm9tQ2hhckNvZGUoUzR6OEFsWzB4MThmXXxialUyWmc+Pj5TNHo4QWxbMHhiXSZTNHo4QWxbMHhjNl0sUzR6OEFsWzB4MWRdfGJqVTJaZz4+PlM0ejhBbFsweDhdJlM0ejhBbFsweDddLFM0ejhBbFsweDFkXXxialUyWmcmUzR6OEFsWzB4N10pO2Vsc2UgaWYoYmpVMlpnPD1TNHo4QWxbMHgxZDFdKXpaeEpFUkpbUzR6OEFsWzB4ZF1dKz1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxY2ZdKSkuZnJvbUNoYXJDb2RlKFM0ejhBbFsweDE5MF18YmpVMlpnPj4+UzR6OEFsWzB4MzddJlM0ejhBbFsweGFdLFM0ejhBbFsweDFkXXxialUyWmc+Pj5TNHo4QWxbMHhiXSZTNHo4QWxbMHg3XSxTNHo4QWxbMHgxZF18YmpVMlpnPj4+UzR6OEFsWzB4OF0mUzR6OEFsWzB4N10sUzR6OEFsWzB4MWRdfGJqVTJaZyZTNHo4QWxbMHg3XSl9cmV0dXJuIHpaeEpFUkpbUzR6OEFsWzB4ZF1dfWZ1bmN0aW9uIHBNT2lKYUMoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweDFdXT1cIlwiKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgzMV1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MzFdXTx6WnhKRVJKW1M0ejhBbFsweDBdXS5sZW5ndGg7elp4SkVSSltTNHo4QWxbMHgzMV1dKyspelp4SkVSSltTNHo4QWxbMHgxXV0rPUxiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFjZl0pKS5mcm9tQ2hhckNvZGUoelp4SkVSSltTNHo4QWxbMHgwXV0uY2hhckNvZGVBdCh6WnhKRVJKW1M0ejhBbFsweDMxXV0pJlM0ejhBbFsweDNdLHpaeEpFUkpbUzR6OEFsWzB4MF1dLmNoYXJDb2RlQXQoelp4SkVSSltTNHo4QWxbMHgzMV1dKT4+PlM0ejhBbFsweDJdJlM0ejhBbFsweDNdKTtyZXR1cm4gelp4SkVSSltTNHo4QWxbMHgxXV19ZnVuY3Rpb24gTjFsN0NuUSguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdLHpaeEpFUkpbUzR6OEFsWzB4ZF1dPVwiXCIpO2Zvcih6WnhKRVJKW1M0ejhBbFsweGVdXT1TNHo4QWxbMHgwXTt6WnhKRVJKW1M0ejhBbFsweGVdXTx6WnhKRVJKW1M0ejhBbFsweDBdXS5sZW5ndGg7elp4SkVSSltTNHo4QWxbMHhlXV0rKyl6WnhKRVJKW1M0ejhBbFsweGRdXSs9TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MWNmXSkpLmZyb21DaGFyQ29kZSh6WnhKRVJKW1M0ejhBbFsweDBdXS5jaGFyQ29kZUF0KHpaeEpFUkpbUzR6OEFsWzB4ZV1dKT4+PlM0ejhBbFsweDJdJlM0ejhBbFsweDNdLHpaeEpFUkpbUzR6OEFsWzB4MF1dLmNoYXJDb2RlQXQoelp4SkVSSltTNHo4QWxbMHhlXV0pJlM0ejhBbFsweDNdKTtyZXR1cm4gelp4SkVSSltTNHo4QWxbMHhkXV19ZnVuY3Rpb24gdUVQUE9XKC4uLnpaeEpFUkope0JVT1ZMbGkoelp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4MV0selp4SkVSSltTNHo4QWxbMHgxXV09TGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MWEzXSkpKHpaeEpFUkpbUzR6OEFsWzB4MF1dLmxlbmd0aD4+UzR6OEFsWzB4ZV0pKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgzMV1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MzFdXTx6WnhKRVJKW1M0ejhBbFsweDFdXS5sZW5ndGg7elp4SkVSSltTNHo4QWxbMHgzMV1dKyspelp4SkVSSltTNHo4QWxbMHgxXV1belp4SkVSSltTNHo4QWxbMHgzMV1dXT1TNHo4QWxbMHgwXTtmb3Ioelp4SkVSSltTNHo4QWxbMHgzMV1dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MzFdXTx6WnhKRVJKW1M0ejhBbFsweDBdXS5sZW5ndGgqUzR6OEFsWzB4Ml07elp4SkVSSltTNHo4QWxbMHgzMV1dKz1TNHo4QWxbMHgyXSl6WnhKRVJKW1M0ejhBbFsweDFdXVt6WnhKRVJKW1M0ejhBbFsweDMxXV0+PlM0ejhBbFsweDM0XV18PSh6WnhKRVJKW1M0ejhBbFsweDBdXS5jaGFyQ29kZUF0KHpaeEpFUkpbUzR6OEFsWzB4MzFdXS9TNHo4QWxbMHgyXSkmUzR6OEFsWzB4M10pPDxTNHo4QWxbMHgxOTRdLXpaeEpFUkpbUzR6OEFsWzB4MzFdXSVTNHo4QWxbMHgxOTNdO3JldHVybiB6WnhKRVJKW1M0ejhBbFsweDFdXX1mdW5jdGlvbiBrQWlCTDgoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXSx6WnhKRVJKW1M0ejhBbFsweDFdXT1cIlwiKTtmb3Ioelp4SkVSSltTNHo4QWxbMHgzN11dPVM0ejhBbFsweDBdO3paeEpFUkpbUzR6OEFsWzB4MzddXTx6WnhKRVJKW1M0ejhBbFsweDBdXS5sZW5ndGgqUzR6OEFsWzB4MTkzXTt6WnhKRVJKW1M0ejhBbFsweDM3XV0rPVM0ejhBbFsweDJdKXpaeEpFUkpbUzR6OEFsWzB4MV1dKz1MYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxY2ZdKSkuZnJvbUNoYXJDb2RlKHpaeEpFUkpbUzR6OEFsWzB4MF1dW3paeEpFUkpbUzR6OEFsWzB4MzddXT4+UzR6OEFsWzB4MzRdXT4+PlM0ejhBbFsweDE5NF0telp4SkVSSltTNHo4QWxbMHgzN11dJVM0ejhBbFsweDE5M10mUzR6OEFsWzB4M10pO3JldHVybiB6WnhKRVJKW1M0ejhBbFsweDFdXX1mdW5jdGlvbiBOTUdGZ2E1KC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweGVdO3JldHVybiB6WnhKRVJKW1M0ejhBbFsweDBdXT4+PnpaeEpFUkpbUzR6OEFsWzB4MV1dfHpaeEpFUkpbUzR6OEFsWzB4MF1dPDxTNHo4QWxbMHgxOTNdLXpaeEpFUkpbUzR6OEFsWzB4MV1dfWZ1bmN0aW9uIHJZZjhxeU8oLi4uelp4SkVSSil7elp4SkVSSltTNHo4QWxbMHg0XV09UzR6OEFsWzB4ZV07cmV0dXJuIHpaeEpFUkpbUzR6OEFsWzB4MF1dPj4+elp4SkVSSltTNHo4QWxbMHgxXV19ZnVuY3Rpb24geDRPSU9pKHpaeEpFUkosYmpVMlpnLHhOSnJHeCl7cmV0dXJuIHpaeEpFUkomYmpVMlpnXn56WnhKRVJKJnhOSnJHeH1mdW5jdGlvbiB0Slg2aEFPKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDMyXTtyZXR1cm4gelp4SkVSSltTNHo4QWxbMHgwXV0melp4SkVSSltTNHo4QWxbMHgxXV1eelp4SkVSSltTNHo4QWxbMHgwXV0melp4SkVSSltTNHo4QWxbMHhlXV1eelp4SkVSSltTNHo4QWxbMHgxXV0melp4SkVSSltTNHo4QWxbMHhlXV19ZnVuY3Rpb24gQmhqWVBNKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO3JldHVybiBOTUdGZ2E1KHpaeEpFUkpbUzR6OEFsWzB4MF1dLFM0ejhBbFsweGVdKV5OTUdGZ2E1KHpaeEpFUkpbUzR6OEFsWzB4MF1dLFM0ejhBbFsweDE2XSleTk1HRmdhNSh6WnhKRVJKW1M0ejhBbFsweDBdXSxTNHo4QWxbMHg5NF0pfWZ1bmN0aW9uIENvWVZKT1ooelp4SkVSSil7cmV0dXJuIE5NR0ZnYTUoelp4SkVSSixTNHo4QWxbMHg4XSleTk1HRmdhNSh6WnhKRVJKLFM0ejhBbFsweDEyZF0pXk5NR0ZnYTUoelp4SkVSSixTNHo4QWxbMHgxOTVdKX1mdW5jdGlvbiBxc3pRUmtNKC4uLnpaeEpFUkope3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO3JldHVybiBOTUdGZ2E1KHpaeEpFUkpbUzR6OEFsWzB4MF1dLFM0ejhBbFsweGFdKV5OTUdGZ2E1KHpaeEpFUkpbUzR6OEFsWzB4MF1dLFM0ejhBbFsweDM3XSlecllmOHF5Tyh6WnhKRVJKW1M0ejhBbFsweDBdXSxTNHo4QWxbMHgzMl0pfWZ1bmN0aW9uIHFpczVFYiguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtyZXR1cm4gTk1HRmdhNSh6WnhKRVJKW1M0ejhBbFsweDBdXSxTNHo4QWxbMHgxZDJdKV5OTUdGZ2E1KHpaeEpFUkpbUzR6OEFsWzB4MF1dLFM0ejhBbFsweDgwXSlecllmOHF5Tyh6WnhKRVJKW1M0ejhBbFsweDBdXSxTNHo4QWxbMHg5MF0pfWZ1bmN0aW9uIHBSODZ5MSguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtyZXR1cm4gTk1HRmdhNSh6WnhKRVJKW1M0ejhBbFsweDBdXSxTNHo4QWxbMHgxZDNdKV5OTUdGZ2E1KHpaeEpFUkpbUzR6OEFsWzB4MF1dLFM0ejhBbFsweDFkNF0pXk5NR0ZnYTUoelp4SkVSSltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4MWQ1XSl9ZnVuY3Rpb24gcXNLVlNCVCguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtyZXR1cm4gTk1HRmdhNSh6WnhKRVJKW1M0ejhBbFsweDBdXSxTNHo4QWxbMHgxN10pXk5NR0ZnYTUoelp4SkVSSltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4MzddKV5OTUdGZ2E1KHpaeEpFUkpbUzR6OEFsWzB4MF1dLFM0ejhBbFsweDFkNl0pfWZ1bmN0aW9uIGNmSVptQiguLi56WnhKRVJKKXt6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHgxXTtyZXR1cm4gTk1HRmdhNSh6WnhKRVJKW1M0ejhBbFsweDBdXSxTNHo4QWxbMHg4MF0pXk5NR0ZnYTUoelp4SkVSSltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4MWQ3XSlecllmOHF5Tyh6WnhKRVJKW1M0ejhBbFsweDBdXSxTNHo4QWxbMHg4XSl9elp4SkVSSltTNHo4QWxbMHgxZDhdXT1uZXcoTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MWEzXSkpKShTNHo4QWxbMHgxZDldLFM0ejhBbFsweDFkYV0sLVM0ejhBbFsweDFkYl0sLVM0ejhBbFsweDFkY10sUzR6OEFsWzB4MWRkXSxTNHo4QWxbMHgxZGVdLC1TNHo4QWxbMHgxZGZdLC1TNHo4QWxbMHgxZTBdLC1TNHo4QWxbMHgxZTFdLFM0ejhBbFsweDFlMl0sUzR6OEFsWzB4MWUzXSxTNHo4QWxbMHgxZTRdLFM0ejhBbFsweDFlNV0sLVM0ejhBbFsweDFlNl0sLVM0ejhBbFsweDFlN10sLVM0ejhBbFsweDFlOF0sLVM0ejhBbFsweDFlOV0sLVM0ejhBbFsweDFlYV0sUzR6OEFsWzB4MWViXSxTNHo4QWxbMHgxZWNdLFM0ejhBbFsweDFlZF0sUzR6OEFsWzB4MWVlXSxTNHo4QWxbMHgxZWZdLFM0ejhBbFsweDFmMF0sLVM0ejhBbFsweDFmMV0sLVM0ejhBbFsweDFmMl0sLVM0ejhBbFsweDFmM10sLVM0ejhBbFsweDFmNF0sLVM0ejhBbFsweDFmNV0sLVM0ejhBbFsweDFmNl0sUzR6OEFsWzB4MWY3XSxTNHo4QWxbMHgxZjhdLFM0ejhBbFsweDFmOV0sUzR6OEFsWzB4MWZhXSxTNHo4QWxbMHgxZmJdLFM0ejhBbFsweDFmY10sUzR6OEFsWzB4MWZkXSxTNHo4QWxbMHgxZmVdLC1TNHo4QWxbMHgxZmZdLC1TNHo4QWxbMHgyMDBdLC1TNHo4QWxbMHgyMDFdLC1TNHo4QWxbMHgyMDJdLC1TNHo4QWxbMHgyMDNdLC1TNHo4QWxbMHgyMDRdLC1TNHo4QWxbMHgyMDVdLC1TNHo4QWxbMHgyMDZdLC1TNHo4QWxbMHgyMDddLFM0ejhBbFsweDIwOF0sUzR6OEFsWzB4MjA5XSxTNHo4QWxbMHgyMGFdLFM0ejhBbFsweDIwYl0sUzR6OEFsWzB4MjBjXSxTNHo4QWxbMHgyMGRdLFM0ejhBbFsweDIwZV0sUzR6OEFsWzB4MjBmXSxTNHo4QWxbMHgyMTBdLFM0ejhBbFsweDIxMV0sUzR6OEFsWzB4MjEyXSwtUzR6OEFsWzB4MjEzXSwtUzR6OEFsWzB4MjE0XSwtUzR6OEFsWzB4MjE1XSwtUzR6OEFsWzB4MjE2XSwtUzR6OEFsWzB4MjE3XSwtUzR6OEFsWzB4MjE4XSk7ZnVuY3Rpb24gbXo4eG1kTyguLi5ialUyWmcpe0JVT1ZMbGkoYmpVMlpnW1M0ejhBbFsweDRdXT1TNHo4QWxbMHhlXSxialUyWmdbUzR6OEFsWzB4ZF1dPW5ldyhMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxYTJdKStTNHo4QWxbMHgxODhdKSkoUzR6OEFsWzB4MjE5XSwtUzR6OEFsWzB4MjFhXSxTNHo4QWxbMHgyMWJdLC1TNHo4QWxbMHgyMWNdLFM0ejhBbFsweDIxZF0sLVM0ejhBbFsweDIxZV0sUzR6OEFsWzB4MjFmXSxTNHo4QWxbMHgyMjBdKSxialUyWmdbUzR6OEFsWzB4MTk2XV09bmV3KExiRFVBdihlRk8wWG5NKFM0ejhBbFsweDFhM10pKSkoUzR6OEFsWzB4MTk2XSkpO3ZhciB4TkpyR3gsT3dyVjZlLFU2bGg0ZixQNkNQMUJmLF9NeEtKcG0sYkRKeFdULEU2X0tSWixtVjBkQWlULHlJUmwxMyxkUXhRWlJrLHBNT2lKYUMsTjFsN0NuUTtCVU9WTGxpKGJqVTJaZ1tTNHo4QWxbMHgwXV1bYmpVMlpnW1M0ejhBbFsweDFdXT4+UzR6OEFsWzB4MzRdXXw9UzR6OEFsWzB4MWRdPDxTNHo4QWxbMHgxOTRdLWJqVTJaZ1tTNHo4QWxbMHgxXV0lUzR6OEFsWzB4MTkzXSxialUyWmdbUzR6OEFsWzB4MF1dWyhialUyWmdbUzR6OEFsWzB4MV1dK1M0ejhBbFsweDE5Nl0+PlM0ejhBbFsweDI0XTw8UzR6OEFsWzB4MThdKStTNHo4QWxbMHhjNl1dPWJqVTJaZ1tTNHo4QWxbMHgxXV0pO2Zvcih5SVJsMTM9UzR6OEFsWzB4MF07eUlSbDEzPGJqVTJaZ1tTNHo4QWxbMHgwXV0ubGVuZ3RoO3lJUmwxMys9UzR6OEFsWzB4MTM1XSl7QlVPVkxsaSh4TkpyR3g9YmpVMlpnW1M0ejhBbFsweGRdXVtTNHo4QWxbMHgwXV0sT3dyVjZlPWJqVTJaZ1tTNHo4QWxbMHhkXV1bUzR6OEFsWzB4MV1dLFU2bGg0Zj1ialUyWmdbUzR6OEFsWzB4ZF1dW1M0ejhBbFsweGVdXSxQNkNQMUJmPWJqVTJaZ1tTNHo4QWxbMHhkXV1bUzR6OEFsWzB4MzJdXSxfTXhLSnBtPWJqVTJaZ1tTNHo4QWxbMHhkXV1bUzR6OEFsWzB4MThdXSxiREp4V1Q9YmpVMlpnW1M0ejhBbFsweGRdXVtTNHo4QWxbMHgzNF1dLEU2X0tSWj1ialUyWmdbUzR6OEFsWzB4ZF1dW1M0ejhBbFsweDhdXSxtVjBkQWlUPWJqVTJaZ1tTNHo4QWxbMHhkXV1bUzR6OEFsWzB4YV1dKTtmb3IoZFF4UVpSaz1TNHo4QWxbMHgwXTtkUXhRWlJrPFM0ejhBbFsweDE5Nl07ZFF4UVpSaysrKXtCVU9WTGxpKGRReFFaUms8UzR6OEFsWzB4MTM1XT9ialUyWmdbUzR6OEFsWzB4MTk2XV1bZFF4UVpSa109YmpVMlpnW1M0ejhBbFsweDBdXVtkUXhRWlJrK3lJUmwxM106YmpVMlpnW1M0ejhBbFsweDE5Nl1dW2RReFFaUmtdPXk2V01EOCh5NldNRDgoeTZXTUQ4KHFpczVFYihialUyWmdbUzR6OEFsWzB4MTk2XV1bZFF4UVpSay1TNHo4QWxbMHhlXV0pLGJqVTJaZ1tTNHo4QWxbMHgxOTZdXVtkUXhRWlJrLVM0ejhBbFsweGFdXSkscXN6UVJrTShialUyWmdbUzR6OEFsWzB4MTk2XV1bZFF4UVpSay1TNHo4QWxbMHhjNl1dKSksYmpVMlpnW1M0ejhBbFsweDE5Nl1dW2RReFFaUmstUzR6OEFsWzB4MTM1XV0pLHBNT2lKYUM9eTZXTUQ4KHk2V01EOCh5NldNRDgoeTZXTUQ4KG1WMGRBaVQsQ29ZVkpPWihfTXhLSnBtKSkseDRPSU9pKF9NeEtKcG0sYkRKeFdULEU2X0tSWikpLHpaeEpFUkpbUzR6OEFsWzB4MWQ4XV1bZFF4UVpSa10pLGJqVTJaZ1tTNHo4QWxbMHgxOTZdXVtkUXhRWlJrXSksTjFsN0NuUT15NldNRDgoQmhqWVBNKHhOSnJHeCksdEpYNmhBTyh4TkpyR3gsT3dyVjZlLFU2bGg0ZikpLG1WMGRBaVQ9RTZfS1JaLEU2X0tSWj1iREp4V1QsYkRKeFdUPV9NeEtKcG0sX014S0pwbT15NldNRDgoUDZDUDFCZixwTU9pSmFDKSxQNkNQMUJmPVU2bGg0ZixVNmxoNGY9T3dyVjZlLE93clY2ZT14TkpyR3gseE5Kckd4PXk2V01EOChwTU9pSmFDLE4xbDdDblEpKX1CVU9WTGxpKGJqVTJaZ1tTNHo4QWxbMHhkXV1bUzR6OEFsWzB4MF1dPXk2V01EOCh4TkpyR3gsYmpVMlpnW1M0ejhBbFsweGRdXVtTNHo4QWxbMHgwXV0pLGJqVTJaZ1tTNHo4QWxbMHhkXV1bUzR6OEFsWzB4MV1dPXk2V01EOChPd3JWNmUsYmpVMlpnW1M0ejhBbFsweGRdXVtTNHo4QWxbMHgxXV0pLGJqVTJaZ1tTNHo4QWxbMHhkXV1bUzR6OEFsWzB4ZV1dPXk2V01EOChVNmxoNGYsYmpVMlpnW1M0ejhBbFsweGRdXVtTNHo4QWxbMHhlXV0pLGJqVTJaZ1tTNHo4QWxbMHhkXV1bUzR6OEFsWzB4MzJdXT15NldNRDgoUDZDUDFCZixialUyWmdbUzR6OEFsWzB4ZF1dW1M0ejhBbFsweDMyXV0pLGJqVTJaZ1tTNHo4QWxbMHhkXV1bUzR6OEFsWzB4MThdXT15NldNRDgoX014S0pwbSxialUyWmdbUzR6OEFsWzB4ZF1dW1M0ejhBbFsweDE4XV0pLGJqVTJaZ1tTNHo4QWxbMHhkXV1bUzR6OEFsWzB4MzRdXT15NldNRDgoYkRKeFdULGJqVTJaZ1tTNHo4QWxbMHhkXV1bUzR6OEFsWzB4MzRdXSksYmpVMlpnW1M0ejhBbFsweGRdXVtTNHo4QWxbMHg4XV09eTZXTUQ4KEU2X0tSWixialUyWmdbUzR6OEFsWzB4ZF1dW1M0ejhBbFsweDhdXSksYmpVMlpnW1M0ejhBbFsweGRdXVtTNHo4QWxbMHhhXV09eTZXTUQ4KG1WMGRBaVQsYmpVMlpnW1M0ejhBbFsweGRdXVtTNHo4QWxbMHhhXV0pKX1yZXR1cm4gYmpVMlpnW1M0ejhBbFsweGRdXX1mdW5jdGlvbiB5NldNRDgoLi4uelp4SkVSSil7QlVPVkxsaSh6WnhKRVJKW1M0ejhBbFsweDRdXT1TNHo4QWxbMHhlXSx6WnhKRVJKW1M0ejhBbFsweGVdXT0oelp4SkVSSltTNHo4QWxbMHgwXV0mUzR6OEFsWzB4MTk3XSkrKHpaeEpFUkpbUzR6OEFsWzB4MV1dJlM0ejhBbFsweDE5N10pLHpaeEpFUkpbUzR6OEFsWzB4MzJdXT0oelp4SkVSSltTNHo4QWxbMHgwXV0+PlM0ejhBbFsweDEzNV0pKyh6WnhKRVJKW1M0ejhBbFsweDFdXT4+UzR6OEFsWzB4MTM1XSkrKHpaeEpFUkpbUzR6OEFsWzB4ZV1dPj5TNHo4QWxbMHgxMzVdKSk7cmV0dXJuIHpaeEpFUkpbUzR6OEFsWzB4MzJdXTw8UzR6OEFsWzB4MTM1XXx6WnhKRVJKW1M0ejhBbFsweGVdXSZTNHo4QWxbMHgxOTddfXJldHVybntoZXg6YmpVMlpnLGI2NDpVNmxoNGYsYW55OlA2Q1AxQmYsaGV4X2htYWM6T3dyVjZlLGI2NF9obWFjOlU2bGg0ZixhbnlfaG1hYzpQNkNQMUJmfX0oKSxMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgxNjFdKSkubG9nKHpaeEpFUkpbUzR6OEFsWzB4ZF1dKSl9cmV0dXJuIExiRFVBdihlRk8wWG5NKFM0ejhBbFsweDIyMV0pKSh6WnhKRVJKW1M0ejhBbFsweDBdXSxTNHo4QWxbMHgxNWNdKX0pKTtyZXR1cm4gYXdhaXQgdGhpc1tlRk8wWG5NKFM0ejhBbFsweDFhZF0pXSgpfXJldHVybiB6WnhKRVJKfWFzeW5jW2VGTzBYbk0oUzR6OEFsWzB4MTQ2XSldKCl7Y29uc3Qgelp4SkVSSj10Slg2aEFPW2VGTzBYbk0oMHg1N2UpXSgpO2lmKCF6WnhKRVJKKXthd2FpdCBuZXcoTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTViXSkpKShjbTZqN21zKCguLi56WnhKRVJKKT0+e3paeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDFdO3JldHVybiBMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgyMjFdKSkoelp4SkVSSltTNHo4QWxbMHgwXV0sUzR6OEFsWzB4MTVjXSl9KSk7cmV0dXJuIGF3YWl0IHRoaXNbZUZPMFhuTShTNHo4QWxbMHgxNDZdKV0oKX1yZXR1cm4gelp4SkVSSltlRk8wWG5NKFM0ejhBbFsweDE5Yl0pXSgpfWFzeW5jW2VGTzBYbk0oUzR6OEFsWzB4MjIyXSldKCl7Y29uc3Qgelp4SkVSSj10Slg2aEFPW2VGTzBYbk0oMHg1N2YpXSgpO2lmKCF6WnhKRVJKKXthd2FpdCBuZXcoTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTViXSkpKSh6WnhKRVJKPT57aWYoZUZPMFhuTSgweDU4MCkrUzR6OEFsWzB4ZF1pbiBZRkp6TVcpe2JqVTJaZygpfWZ1bmN0aW9uIGJqVTJaZyguLi56WnhKRVJKKXtCVU9WTGxpKHpaeEpFUkpbUzR6OEFsWzB4NF1dPVM0ejhBbFsweDBdLHpaeEpFUkpbUzR6OEFsWzB4ZF1dPWZ1bmN0aW9uKHpaeEpFUkope3ZhciBialUyWmc9elp4SkVSSi5sZW5ndGgsZUZPMFhuTSx4TkpyR3gsT3dyVjZlLFU2bGg0ZjtCVU9WTGxpKGVGTzBYbk09W10seE5Kckd4PVM0ejhBbFsweDBdLE93clY2ZT1TNHo4QWxbMHgwXSx6WnhKRVJKLnNvcnQoKHpaeEpFUkosYmpVMlpnKT0+elp4SkVSSi1ialUyWmcpKTtmb3IoVTZsaDRmPVM0ejhBbFsweDBdO1U2bGg0ZjxialUyWmc7VTZsaDRmKyspe2lmKFU2bGg0Zj5TNHo4QWxbMHgwXSYmelp4SkVSSltVNmxoNGZdPT09elp4SkVSSltVNmxoNGYtUzR6OEFsWzB4MV1dKWNvbnRpbnVlO0JVT1ZMbGkoeE5Kckd4PVU2bGg0ZitTNHo4QWxbMHgxXSxPd3JWNmU9YmpVMlpnLVM0ejhBbFsweDFdKTt3aGlsZSh4TkpyR3g8T3dyVjZlKWlmKHpaeEpFUkpbVTZsaDRmXSt6WnhKRVJKW3hOSnJHeF0relp4SkVSSltPd3JWNmVdPFM0ejhBbFsweDBdKXt4TkpyR3grK31lbHNlIGlmKHpaeEpFUkpbVTZsaDRmXSt6WnhKRVJKW3hOSnJHeF0relp4SkVSSltPd3JWNmVdPlM0ejhBbFsweDBdKXtPd3JWNmUtLX1lbHNle2VGTzBYbk0ucHVzaChbelp4SkVSSltVNmxoNGZdLHpaeEpFUkpbeE5Kckd4XSx6WnhKRVJKW093clY2ZV1dKTt3aGlsZSh4TkpyR3g8T3dyVjZlJiZ6WnhKRVJKW3hOSnJHeF09PT16WnhKRVJKW3hOSnJHeCtTNHo4QWxbMHgxXV0peE5Kckd4Kys7d2hpbGUoeE5Kckd4PE93clY2ZSYmelp4SkVSSltPd3JWNmVdPT09elp4SkVSSltPd3JWNmUtUzR6OEFsWzB4MV1dKU93clY2ZS0tO0JVT1ZMbGkoeE5Kckd4KyssT3dyVjZlLS0pfX1yZXR1cm4gZUZPMFhuTX0sTGJEVUF2KGVGTzBYbk0oUzR6OEFsWzB4MTYxXSkpLmxvZyh6WnhKRVJKW1M0ejhBbFsweGRdXSkpfXJldHVybiBMYkRVQXYoZUZPMFhuTShTNHo4QWxbMHgyMjFdKSkoelp4SkVSSixTNHo4QWxbMHgxNWNdKX0pO3JldHVybiBhd2FpdCB0aGlzW2VGTzBYbk0oUzR6OEFsWzB4MjIyXSldKCl9cmV0dXJuIHpaeEpFUkp9fWNvbnN0IEp0WmRjTD1uZXcgQXFkQ3RsdCxXcVRlU0s9bmV3IHk2V01EOChKdFpkY0wpfWZ1bmN0aW9uIEJVT1ZMbGkoKXtCVU9WTGxpPWZ1bmN0aW9uKCl7fX1yZXR1cm4gTGJEVUF2KG1WMGRBaVQoMHg1ODEpKVttVjBkQWlUKDB4NTgyKV0obVYwZEFpVCgweDU4MyksTjFsN0NuUSk7Iikoe2dldCJjbVU4WTciKCl7cmV0dXJuIGdsb2JhbH19KTs="}},"time_used":194,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":65,"receive":129,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null}],"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/bundle.js","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"is_navigation_request":false,"resource_type":"script","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:56.604Z","timestamp":1785113876604,"http_version":"HTTP/1.1","security_state":"insecure","security_info":null,"request":{"raw":"GET /bundle.js HTTP/1.1\r\nHost: sahnesirince.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nConnection: Keep-Alive\r\nKeep-Alive: timeout=5, max=100\r\nCache-Control: public, max-age=604800\r\nExpires: Mon, 03 Aug 2026 00:57:56 GMT\r\nContent-Type: application/javascript\r\nLast-Modified: Wed, 01 Oct 2025 05:48:43 GMT\r\nAccept-Ranges: bytes\r\nContent-Encoding: gzip\r\nVary: Accept-Encoding\r\nContent-Length: 662526\r\nDate: Mon, 27 Jul 2026 00:57:56 GMT\r\nServer: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":2510372,"size_decoded":662913,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (11784), with CRLF line terminators","md5":"a579f43be016af96b1d14b0be3ab2239","sha1":"eb0403b0e34d6943a3242206f9845843fab6d225","sha256":"9b2c009690d8d43f3a351bc36362316b6474ce1fc03c24fdd1cf2ce2da5b2509","sha512":"64befe664a2fbf04844b475a8b918dd5feed48a9c77110963a9f589be8e19e04d3a98233a44ae343b1efe20fafe18770dc18dc10e39402e822bf37c63d081619","ssdeep":"24576:LREHMe8DbdUW4HlHZg+dY3yBgS6cUKZd3NlNUQ4G1SE0Byz5o:LRIMXDbdUW4HlHZg+dY3yBgS6cUKZJNW","tlshash":"60254c9072a6f07603a755d864761101f2385854700d90ecfafc9debbfa988a867ff39","first_seen":"2025-07-26T22:48:52.272458Z","last_seen":"2026-07-27T00:59:02.770119Z","times_seen":673,"resource_available":false,"data":"KGZ1bmN0aW9uKCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtpZihlJiZlLnN1cHBvcnRzJiZlLnN1cHBvcnRzKCJtb2R1bGVwcmVsb2FkIikpcmV0dXJuO2Zvcihjb25zdCBzIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPSJtb2R1bGVwcmVsb2FkIl0nKSluKHMpO25ldyBNdXRhdGlvbk9ic2VydmVyKHM9Pntmb3IoY29uc3QgaSBvZiBzKWlmKGkudHlwZT09PSJjaGlsZExpc3QiKWZvcihjb25zdCBvIG9mIGkuYWRkZWROb2RlcylvLnRhZ05hbWU9PT0iTElOSyImJm8ucmVsPT09Im1vZHVsZXByZWxvYWQiJiZuKG8pfSkub2JzZXJ2ZShkb2N1bWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KTtmdW5jdGlvbiByKHMpe2NvbnN0IGk9e307cmV0dXJuIHMuaW50ZWdyaXR5JiYoaS5pbnRlZ3JpdHk9cy5pbnRlZ3JpdHkpLHMucmVmZXJyZXJQb2xpY3kmJihpLnJlZmVycmVyUG9saWN5PXMucmVmZXJyZXJQb2xpY3kpLHMuY3Jvc3NPcmlnaW49PT0idXNlLWNyZWRlbnRpYWxzIj9pLmNyZWRlbnRpYWxzPSJpbmNsdWRlIjpzLmNyb3NzT3JpZ2luPT09ImFub255bW91cyI/aS5jcmVkZW50aWFscz0ib21pdCI6aS5jcmVkZW50aWFscz0ic2FtZS1vcmlnaW4iLGl9ZnVuY3Rpb24gbihzKXtpZihzLmVwKXJldHVybjtzLmVwPSEwO2NvbnN0IGk9cihzKTtmZXRjaChzLmhyZWYsaSl9fSkoKTt2YXIgQW49dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93OnR5cGVvZiBnbG9iYWw8InUiP2dsb2JhbDp0eXBlb2Ygc2VsZjwidSI/c2VsZjp7fTtmdW5jdGlvbiB6cyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwiZGVmYXVsdCIpP3QuZGVmYXVsdDp0fWZ1bmN0aW9uIE1jKHQpe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LCJfX2VzTW9kdWxlIikpcmV0dXJuIHQ7dmFyIGU9dC5kZWZhdWx0O2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iKXt2YXIgcj1mdW5jdGlvbiBuKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBuP1JlZmxlY3QuY29uc3RydWN0KGUsYXJndW1lbnRzLHRoaXMuY29uc3RydWN0b3IpOmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtyLnByb3RvdHlwZT1lLnByb3RvdHlwZX1lbHNlIHI9e307cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciBzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkocixuLHMuZ2V0P3M6e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSl9KSxyfXZhciBMdj17ZXhwb3J0czp7fX0sd3Q9e307LyoqDQogKiBAbGljZW5zZSBSZWFjdA0KICogcmVhY3QucHJvZHVjdGlvbi5qcw0KICoNCiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuDQogKg0KICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlDQogKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuDQogKi92YXIgRTg7ZnVuY3Rpb24gTUYoKXtpZihFOClyZXR1cm4gd3Q7RTg9MTt2YXIgdD1TeW1ib2wuZm9yKCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudCIpLGU9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIikscj1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLG49U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSxzPVN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksaT1TeW1ib2wuZm9yKCJyZWFjdC5jb25zdW1lciIpLG89U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLGE9U3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSxjPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIiksbD1TeW1ib2wuZm9yKCJyZWFjdC5tZW1vIiksZD1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5IiksdT1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gaChJKXtyZXR1cm4gST09PW51bGx8fHR5cGVvZiBJIT0ib2JqZWN0Ij9udWxsOihJPXUmJklbdV18fElbIkBAaXRlcmF0b3IiXSx0eXBlb2YgST09ImZ1bmN0aW9uIj9JOm51bGwpfXZhciBwPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxmPU9iamVjdC5hc3NpZ24sbT17fTtmdW5jdGlvbiB3KEksQixTKXt0aGlzLnByb3BzPUksdGhpcy5jb250ZXh0PUIsdGhpcy5yZWZzPW0sdGhpcy51cGRhdGVyPVN8fHB9dy5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSx3LnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihJLEIpe2lmKHR5cGVvZiBJIT0ib2JqZWN0IiYmdHlwZW9mIEkhPSJmdW5jdGlvbiImJkkhPW51bGwpdGhyb3cgRXJyb3IoInRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLiIpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxJLEIsInNldFN0YXRlIil9LHcucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKEkpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxJLCJmb3JjZVVwZGF0ZSIpfTtmdW5jdGlvbiBnKCl7fWcucHJvdG90eXBlPXcucHJvdG90eXBlO2Z1bmN0aW9uIHYoSSxCLFMpe3RoaXMucHJvcHM9SSx0aGlzLmNvbnRleHQ9Qix0aGlzLnJlZnM9bSx0aGlzLnVwZGF0ZXI9U3x8cH12YXIgRT12LnByb3RvdHlwZT1uZXcgZztFLmNvbnN0cnVjdG9yPXYsZihFLHcucHJvdG90eXBlKSxFLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwO3ZhciB4PUFycmF5LmlzQXJyYXksXz17SDpudWxsLEE6bnVsbCxUOm51bGwsUzpudWxsLFY6bnVsbH0saz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIEEoSSxCLFMseixRLHJlKXtyZXR1cm4gUz1yZS5yZWYseyQkdHlwZW9mOnQsdHlwZTpJLGtleTpCLHJlZjpTIT09dm9pZCAwP1M6bnVsbCxwcm9wczpyZX19ZnVuY3Rpb24gTShJLEIpe3JldHVybiBBKEkudHlwZSxCLHZvaWQgMCx2b2lkIDAsdm9pZCAwLEkucHJvcHMpfWZ1bmN0aW9uIFAoSSl7cmV0dXJuIHR5cGVvZiBJPT0ib2JqZWN0IiYmSSE9PW51bGwmJkkuJCR0eXBlb2Y9PT10fWZ1bmN0aW9uIGooSSl7dmFyIEI9eyI9IjoiPTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrSS5yZXBsYWNlKC9bPTpdL2csZnVuY3Rpb24oUyl7cmV0dXJuIEJbU119KX12YXIgVT0vXC8rL2c7ZnVuY3Rpb24gVihJLEIpe3JldHVybiB0eXBlb2YgST09Im9iamVjdCImJkkhPT1udWxsJiZJLmtleSE9bnVsbD9qKCIiK0kua2V5KTpCLnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBGKCl7fWZ1bmN0aW9uIGIoSSl7c3dpdGNoKEkuc3RhdHVzKXtjYXNlImZ1bGZpbGxlZCI6cmV0dXJuIEkudmFsdWU7Y2FzZSJyZWplY3RlZCI6dGhyb3cgSS5yZWFzb247ZGVmYXVsdDpzd2l0Y2godHlwZW9mIEkuc3RhdHVzPT0ic3RyaW5nIj9JLnRoZW4oRixGKTooSS5zdGF0dXM9InBlbmRpbmciLEkudGhlbihmdW5jdGlvbihCKXtJLnN0YXR1cz09PSJwZW5kaW5nIiYmKEkuc3RhdHVzPSJmdWxmaWxsZWQiLEkudmFsdWU9Qil9LGZ1bmN0aW9uKEIpe0kuc3RhdHVzPT09InBlbmRpbmciJiYoSS5zdGF0dXM9InJlamVjdGVkIixJLnJlYXNvbj1CKX0pKSxJLnN0YXR1cyl7Y2FzZSJmdWxmaWxsZWQiOnJldHVybiBJLnZhbHVlO2Nhc2UicmVqZWN0ZWQiOnRocm93IEkucmVhc29ufX10aHJvdyBJfWZ1bmN0aW9uIHkoSSxCLFMseixRKXt2YXIgcmU9dHlwZW9mIEk7KHJlPT09InVuZGVmaW5lZCJ8fHJlPT09ImJvb2xlYW4iKSYmKEk9bnVsbCk7dmFyIEo9ITE7aWYoST09PW51bGwpSj0hMDtlbHNlIHN3aXRjaChyZSl7Y2FzZSJiaWdpbnQiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Sj0hMDticmVhaztjYXNlIm9iamVjdCI6c3dpdGNoKEkuJCR0eXBlb2Ype2Nhc2UgdDpjYXNlIGU6Sj0hMDticmVhaztjYXNlIGQ6cmV0dXJuIEo9SS5faW5pdCx5KEooSS5fcGF5bG9hZCksQixTLHosUSl9fWlmKEopcmV0dXJuIFE9UShJKSxKPXo9PT0iIj8iLiIrVihJLDApOnoseChRKT8oUz0iIixKIT1udWxsJiYoUz1KLnJlcGxhY2UoVSwiJCYvIikrIi8iKSx5KFEsQixTLCIiLGZ1bmN0aW9uKGhlKXtyZXR1cm4gaGV9KSk6USE9bnVsbCYmKFAoUSkmJihRPU0oUSxTKyhRLmtleT09bnVsbHx8SSYmSS5rZXk9PT1RLmtleT8iIjooIiIrUS5rZXkpLnJlcGxhY2UoVSwiJCYvIikrIi8iKStKKSksQi5wdXNoKFEpKSwxO0o9MDt2YXIgZWU9ej09PSIiPyIuIjp6KyI6IjtpZih4KEkpKWZvcih2YXIgdGU9MDt0ZTxJLmxlbmd0aDt0ZSsrKXo9SVt0ZV0scmU9ZWUrVih6LHRlKSxKKz15KHosQixTLHJlLFEpO2Vsc2UgaWYodGU9aChJKSx0eXBlb2YgdGU9PSJmdW5jdGlvbiIpZm9yKEk9dGUuY2FsbChJKSx0ZT0wOyEoej1JLm5leHQoKSkuZG9uZTspej16LnZhbHVlLHJlPWVlK1Yoeix0ZSsrKSxKKz15KHosQixTLHJlLFEpO2Vsc2UgaWYocmU9PT0ib2JqZWN0Iil7aWYodHlwZW9mIEkudGhlbj09ImZ1bmN0aW9uIilyZXR1cm4geShiKEkpLEIsUyx6LFEpO3Rocm93IEI9U3RyaW5nKEkpLEVycm9yKCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICIrKEI9PT0iW29iamVjdCBPYmplY3RdIj8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyhJKS5qb2luKCIsICIpKyJ9IjpCKSsiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLiIpfXJldHVybiBKfWZ1bmN0aW9uIEMoSSxCLFMpe2lmKEk9PW51bGwpcmV0dXJuIEk7dmFyIHo9W10sUT0wO3JldHVybiB5KEkseiwiIiwiIixmdW5jdGlvbihyZSl7cmV0dXJuIEIuY2FsbChTLHJlLFErKyl9KSx6fWZ1bmN0aW9uIFQoSSl7aWYoSS5fc3RhdHVzPT09LTEpe3ZhciBCPUkuX3Jlc3VsdDtCPUIoKSxCLnRoZW4oZnVuY3Rpb24oUyl7KEkuX3N0YXR1cz09PTB8fEkuX3N0YXR1cz09PS0xKSYmKEkuX3N0YXR1cz0xLEkuX3Jlc3VsdD1TKX0sZnVuY3Rpb24oUyl7KEkuX3N0YXR1cz09PTB8fEkuX3N0YXR1cz09PS0xKSYmKEkuX3N0YXR1cz0yLEkuX3Jlc3VsdD1TKX0pLEkuX3N0YXR1cz09PS0xJiYoSS5fc3RhdHVzPTAsSS5fcmVzdWx0PUIpfWlmKEkuX3N0YXR1cz09PTEpcmV0dXJuIEkuX3Jlc3VsdC5kZWZhdWx0O3Rocm93IEkuX3Jlc3VsdH12YXIgTj10eXBlb2YgcmVwb3J0RXJyb3I9PSJmdW5jdGlvbiI/cmVwb3J0RXJyb3I6ZnVuY3Rpb24oSSl7aWYodHlwZW9mIHdpbmRvdz09Im9iamVjdCImJnR5cGVvZiB3aW5kb3cuRXJyb3JFdmVudD09ImZ1bmN0aW9uIil7dmFyIEI9bmV3IHdpbmRvdy5FcnJvckV2ZW50KCJlcnJvciIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxtZXNzYWdlOnR5cGVvZiBJPT0ib2JqZWN0IiYmSSE9PW51bGwmJnR5cGVvZiBJLm1lc3NhZ2U9PSJzdHJpbmciP1N0cmluZyhJLm1lc3NhZ2UpOlN0cmluZyhJKSxlcnJvcjpJfSk7aWYoIXdpbmRvdy5kaXNwYXRjaEV2ZW50KEIpKXJldHVybn1lbHNlIGlmKHR5cGVvZiBwcm9jZXNzPT0ib2JqZWN0IiYmdHlwZW9mIHByb2Nlc3MuZW1pdD09ImZ1bmN0aW9uIil7cHJvY2Vzcy5lbWl0KCJ1bmNhdWdodEV4Y2VwdGlvbiIsSSk7cmV0dXJufWNvbnNvbGUuZXJyb3IoSSl9O2Z1bmN0aW9uIFIoKXt9cmV0dXJuIHd0LkNoaWxkcmVuPXttYXA6Qyxmb3JFYWNoOmZ1bmN0aW9uKEksQixTKXtDKEksZnVuY3Rpb24oKXtCLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sUyl9LGNvdW50OmZ1bmN0aW9uKEkpe3ZhciBCPTA7cmV0dXJuIEMoSSxmdW5jdGlvbigpe0IrK30pLEJ9LHRvQXJyYXk6ZnVuY3Rpb24oSSl7cmV0dXJuIEMoSSxmdW5jdGlvbihCKXtyZXR1cm4gQn0pfHxbXX0sb25seTpmdW5jdGlvbihJKXtpZighUChJKSl0aHJvdyBFcnJvcigiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuIik7cmV0dXJuIEl9fSx3dC5Db21wb25lbnQ9dyx3dC5GcmFnbWVudD1yLHd0LlByb2ZpbGVyPXMsd3QuUHVyZUNvbXBvbmVudD12LHd0LlN0cmljdE1vZGU9bix3dC5TdXNwZW5zZT1jLHd0Ll9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERT1fLHd0Ll9fQ09NUElMRVJfUlVOVElNRT17X19wcm90b19fOm51bGwsYzpmdW5jdGlvbihJKXtyZXR1cm4gXy5ILnVzZU1lbW9DYWNoZShJKX19LHd0LmNhY2hlPWZ1bmN0aW9uKEkpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBJLmFwcGx5KG51bGwsYXJndW1lbnRzKX19LHd0LmNsb25lRWxlbWVudD1mdW5jdGlvbihJLEIsUyl7aWYoST09bnVsbCl0aHJvdyBFcnJvcigiVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCAiK0krIi4iKTt2YXIgej1mKHt9LEkucHJvcHMpLFE9SS5rZXkscmU9dm9pZCAwO2lmKEIhPW51bGwpZm9yKEogaW4gQi5yZWYhPT12b2lkIDAmJihyZT12b2lkIDApLEIua2V5IT09dm9pZCAwJiYoUT0iIitCLmtleSksQikhay5jYWxsKEIsSil8fEo9PT0ia2V5Inx8Sj09PSJfX3NlbGYifHxKPT09Il9fc291cmNlInx8Sj09PSJyZWYiJiZCLnJlZj09PXZvaWQgMHx8KHpbSl09QltKXSk7dmFyIEo9YXJndW1lbnRzLmxlbmd0aC0yO2lmKEo9PT0xKXouY2hpbGRyZW49UztlbHNlIGlmKDE8Sil7Zm9yKHZhciBlZT1BcnJheShKKSx0ZT0wO3RlPEo7dGUrKyllZVt0ZV09YXJndW1lbnRzW3RlKzJdO3ouY2hpbGRyZW49ZWV9cmV0dXJuIEEoSS50eXBlLFEsdm9pZCAwLHZvaWQgMCxyZSx6KX0sd3QuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihJKXtyZXR1cm4gST17JCR0eXBlb2Y6byxfY3VycmVudFZhbHVlOkksX2N1cnJlbnRWYWx1ZTI6SSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGx9LEkuUHJvdmlkZXI9SSxJLkNvbnN1bWVyPXskJHR5cGVvZjppLF9jb250ZXh0Okl9LEl9LHd0LmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oSSxCLFMpe3ZhciB6LFE9e30scmU9bnVsbDtpZihCIT1udWxsKWZvcih6IGluIEIua2V5IT09dm9pZCAwJiYocmU9IiIrQi5rZXkpLEIpay5jYWxsKEIseikmJnohPT0ia2V5IiYmeiE9PSJfX3NlbGYiJiZ6IT09Il9fc291cmNlIiYmKFFbel09Qlt6XSk7dmFyIEo9YXJndW1lbnRzLmxlbmd0aC0yO2lmKEo9PT0xKVEuY2hpbGRyZW49UztlbHNlIGlmKDE8Sil7Zm9yKHZhciBlZT1BcnJheShKKSx0ZT0wO3RlPEo7dGUrKyllZVt0ZV09YXJndW1lbnRzW3RlKzJdO1EuY2hpbGRyZW49ZWV9aWYoSSYmSS5kZWZhdWx0UHJvcHMpZm9yKHogaW4gSj1JLmRlZmF1bHRQcm9wcyxKKVFbel09PT12b2lkIDAmJihRW3pdPUpbel0pO3JldHVybiBBKEkscmUsdm9pZCAwLHZvaWQgMCxudWxsLFEpfSx3dC5jcmVhdGVSZWY9ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX0sd3QuZm9yd2FyZFJlZj1mdW5jdGlvbihJKXtyZXR1cm57JCR0eXBlb2Y6YSxyZW5kZXI6SX19LHd0LmlzVmFsaWRFbGVtZW50PVAsd3QubGF6eT1mdW5jdGlvbihJKXtyZXR1cm57JCR0eXBlb2Y6ZCxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0Okl9LF9pbml0OlR9fSx3dC5tZW1vPWZ1bmN0aW9uKEksQil7cmV0dXJueyQkdHlwZW9mOmwsdHlwZTpJLGNvbXBhcmU6Qj09PXZvaWQgMD9udWxsOkJ9fSx3dC5zdGFydFRyYW5zaXRpb249ZnVuY3Rpb24oSSl7dmFyIEI9Xy5ULFM9e307Xy5UPVM7dHJ5e3ZhciB6PUkoKSxRPV8uUztRIT09bnVsbCYmUShTLHopLHR5cGVvZiB6PT0ib2JqZWN0IiYmeiE9PW51bGwmJnR5cGVvZiB6LnRoZW49PSJmdW5jdGlvbiImJnoudGhlbihSLE4pfWNhdGNoKHJlKXtOKHJlKX1maW5hbGx5e18uVD1CfX0sd3QudW5zdGFibGVfdXNlQ2FjaGVSZWZyZXNoPWZ1bmN0aW9uKCl7cmV0dXJuIF8uSC51c2VDYWNoZVJlZnJlc2goKX0sd3QudXNlPWZ1bmN0aW9uKEkpe3JldHVybiBfLkgudXNlKEkpfSx3dC51c2VBY3Rpb25TdGF0ZT1mdW5jdGlvbihJLEIsUyl7cmV0dXJuIF8uSC51c2VBY3Rpb25TdGF0ZShJLEIsUyl9LHd0LnVzZUNhbGxiYWNrPWZ1bmN0aW9uKEksQil7cmV0dXJuIF8uSC51c2VDYWxsYmFjayhJLEIpfSx3dC51c2VDb250ZXh0PWZ1bmN0aW9uKEkpe3JldHVybiBfLkgudXNlQ29udGV4dChJKX0sd3QudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe30sd3QudXNlRGVmZXJyZWRWYWx1ZT1mdW5jdGlvbihJLEIpe3JldHVybiBfLkgudXNlRGVmZXJyZWRWYWx1ZShJLEIpfSx3dC51c2VFZmZlY3Q9ZnVuY3Rpb24oSSxCLFMpe3ZhciB6PV8uSDtpZih0eXBlb2YgUz09ImZ1bmN0aW9uIil0aHJvdyBFcnJvcigidXNlRWZmZWN0IENSVUQgb3ZlcmxvYWQgaXMgbm90IGVuYWJsZWQgaW4gdGhpcyBidWlsZCBvZiBSZWFjdC4iKTtyZXR1cm4gei51c2VFZmZlY3QoSSxCKX0sd3QudXNlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gXy5ILnVzZUlkKCl9LHd0LnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oSSxCLFMpe3JldHVybiBfLkgudXNlSW1wZXJhdGl2ZUhhbmRsZShJLEIsUyl9LHd0LnVzZUluc2VydGlvbkVmZmVjdD1mdW5jdGlvbihJLEIpe3JldHVybiBfLkgudXNlSW5zZXJ0aW9uRWZmZWN0KEksQil9LHd0LnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihJLEIpe3JldHVybiBfLkgudXNlTGF5b3V0RWZmZWN0KEksQil9LHd0LnVzZU1lbW89ZnVuY3Rpb24oSSxCKXtyZXR1cm4gXy5ILnVzZU1lbW8oSSxCKX0sd3QudXNlT3B0aW1pc3RpYz1mdW5jdGlvbihJLEIpe3JldHVybiBfLkgudXNlT3B0aW1pc3RpYyhJLEIpfSx3dC51c2VSZWR1Y2VyPWZ1bmN0aW9uKEksQixTKXtyZXR1cm4gXy5ILnVzZVJlZHVjZXIoSSxCLFMpfSx3dC51c2VSZWY9ZnVuY3Rpb24oSSl7cmV0dXJuIF8uSC51c2VSZWYoSSl9LHd0LnVzZVN0YXRlPWZ1bmN0aW9uKEkpe3JldHVybiBfLkgudXNlU3RhdGUoSSl9LHd0LnVzZVN5bmNFeHRlcm5hbFN0b3JlPWZ1bmN0aW9uKEksQixTKXtyZXR1cm4gXy5ILnVzZVN5bmNFeHRlcm5hbFN0b3JlKEksQixTKX0sd3QudXNlVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiBfLkgudXNlVHJhbnNpdGlvbigpfSx3dC52ZXJzaW9uPSIxOS4xLjAiLHd0fXZhciBDODtmdW5jdGlvbiBERigpe3JldHVybiBDOHx8KEM4PTEsTHYuZXhwb3J0cz1NRigpKSxMdi5leHBvcnRzfURGKCk7Y29uc3QgeVA9IjIuMzAuNSI7bGV0IFV2PXtnZXREb2NzVXJsOih7ZG9jc0Jhc2VVcmw6dCxkb2NzUGF0aDplPSIiLGRvY3NTbHVnOnJ9KT0+ZT9gJHt0Pz8iaHR0cHM6Ly92aWVtLnNoIn0ke2V9JHtyP2AjJHtyfWA6IiJ9YDp2b2lkIDAsdmVyc2lvbjpgdmllbUAke3lQfWB9LEVlPWNsYXNzIHdDIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSxyPXt9KXtjb25zdCBuPXIuY2F1c2UgaW5zdGFuY2VvZiB3Qz9yLmNhdXNlLmRldGFpbHM6ci5jYXVzZT8ubWVzc2FnZT9yLmNhdXNlLm1lc3NhZ2U6ci5kZXRhaWxzLHM9ci5jYXVzZSBpbnN0YW5jZW9mIHdDJiZyLmNhdXNlLmRvY3NQYXRofHxyLmRvY3NQYXRoLGk9VXYuZ2V0RG9jc1VybD8uKHsuLi5yLGRvY3NQYXRoOnN9KSxvPVtlfHwiQW4gZXJyb3Igb2NjdXJyZWQuIiwiIiwuLi5yLm1ldGFNZXNzYWdlcz9bLi4uci5tZXRhTWVzc2FnZXMsIiJdOltdLC4uLmk/W2BEb2NzOiAke2l9YF06W10sLi4ubj9bYERldGFpbHM6ICR7bn1gXTpbXSwuLi5Vdi52ZXJzaW9uP1tgVmVyc2lvbjogJHtVdi52ZXJzaW9ufWBdOltdXS5qb2luKGANCmApO3N1cGVyKG8sci5jYXVzZT97Y2F1c2U6ci5jYXVzZX06dm9pZCAwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZGV0YWlscyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkb2NzUGF0aCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJtZXRhTWVzc2FnZXMiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywic2hvcnRNZXNzYWdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInZlcnNpb24iLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJCYXNlRXJyb3IifSksdGhpcy5kZXRhaWxzPW4sdGhpcy5kb2NzUGF0aD1zLHRoaXMubWV0YU1lc3NhZ2VzPXIubWV0YU1lc3NhZ2VzLHRoaXMubmFtZT1yLm5hbWU/P3RoaXMubmFtZSx0aGlzLnNob3J0TWVzc2FnZT1lLHRoaXMudmVyc2lvbj15UH13YWxrKGUpe3JldHVybiB2UCh0aGlzLGUpfX07ZnVuY3Rpb24gdlAodCxlKXtyZXR1cm4gZT8uKHQpP3Q6dCYmdHlwZW9mIHQ9PSJvYmplY3QiJiYiY2F1c2UiaW4gdCYmdC5jYXVzZSE9PXZvaWQgMD92UCh0LmNhdXNlLGUpOmU/bnVsbDp0fWxldCBFUD1jbGFzcyBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHttYXg6ZSxtaW46cixzaWduZWQ6bixzaXplOnMsdmFsdWU6aX0pe3N1cGVyKGBOdW1iZXIgIiR7aX0iIGlzIG5vdCBpbiBzYWZlICR7cz9gJHtzKjh9LWJpdCAke24/InNpZ25lZCI6InVuc2lnbmVkIn0gYDoiIn1pbnRlZ2VyIHJhbmdlICR7ZT9gKCR7cn0gdG8gJHtlfSlgOmAoYWJvdmUgJHtyfSlgfWAse25hbWU6IkludGVnZXJPdXRPZlJhbmdlRXJyb3IifSl9fTtjbGFzcyBCRiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBCeXRlcyB2YWx1ZSAiJHtlfSIgaXMgbm90IGEgdmFsaWQgYm9vbGVhbi4gVGhlIGJ5dGVzIGFycmF5IG11c3QgY29udGFpbiBhIHNpbmdsZSBieXRlIG9mIGVpdGhlciBhIDAgb3IgMSB2YWx1ZS5gLHtuYW1lOiJJbnZhbGlkQnl0ZXNCb29sZWFuRXJyb3IifSl9fWxldCBMRj1jbGFzcyBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtnaXZlblNpemU6ZSxtYXhTaXplOnJ9KXtzdXBlcihgU2l6ZSBjYW5ub3QgZXhjZWVkICR7cn0gYnl0ZXMuIEdpdmVuIHNpemU6ICR7ZX0gYnl0ZXMuYCx7bmFtZToiU2l6ZU92ZXJmbG93RXJyb3IifSl9fTtjbGFzcyBDUCBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtvZmZzZXQ6ZSxwb3NpdGlvbjpyLHNpemU6bn0pe3N1cGVyKGBTbGljZSAke3I9PT0ic3RhcnQiPyJzdGFydGluZyI6ImVuZGluZyJ9IGF0IG9mZnNldCAiJHtlfSIgaXMgb3V0LW9mLWJvdW5kcyAoc2l6ZTogJHtufSkuYCx7bmFtZToiU2xpY2VPZmZzZXRPdXRPZkJvdW5kc0Vycm9yIn0pfX1sZXQgeFA9Y2xhc3MgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7c2l6ZTplLHRhcmdldFNpemU6cix0eXBlOm59KXtzdXBlcihgJHtuLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7bi5zbGljZSgxKS50b0xvd2VyQ2FzZSgpfSBzaXplICgke2V9KSBleGNlZWRzIHBhZGRpbmcgc2l6ZSAoJHtyfSkuYCx7bmFtZToiU2l6ZUV4Y2VlZHNQYWRkaW5nU2l6ZUVycm9yIn0pfX07Y2xhc3MgeDggZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7c2l6ZTplLHRhcmdldFNpemU6cix0eXBlOm59KXtzdXBlcihgJHtuLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7bi5zbGljZSgxKS50b0xvd2VyQ2FzZSgpfSBpcyBleHBlY3RlZCB0byBiZSAke3J9ICR7bn0gbG9uZywgYnV0IGlzICR7ZX0gJHtufSBsb25nLmAse25hbWU6IkludmFsaWRCeXRlc0xlbmd0aEVycm9yIn0pfX1mdW5jdGlvbiBHdSh0LHtkaXI6ZSxzaXplOnI9MzJ9PXt9KXtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP2hjKHQse2RpcjplLHNpemU6cn0pOlVGKHQse2RpcjplLHNpemU6cn0pfWZ1bmN0aW9uIGhjKHQse2RpcjplLHNpemU6cj0zMn09e30pe2lmKHI9PT1udWxsKXJldHVybiB0O2NvbnN0IG49dC5yZXBsYWNlKCIweCIsIiIpO2lmKG4ubGVuZ3RoPnIqMil0aHJvdyBuZXcgeFAoe3NpemU6TWF0aC5jZWlsKG4ubGVuZ3RoLzIpLHRhcmdldFNpemU6cix0eXBlOiJoZXgifSk7cmV0dXJuYDB4JHtuW2U9PT0icmlnaHQiPyJwYWRFbmQiOiJwYWRTdGFydCJdKHIqMiwiMCIpfWB9ZnVuY3Rpb24gVUYodCx7ZGlyOmUsc2l6ZTpyPTMyfT17fSl7aWYocj09PW51bGwpcmV0dXJuIHQ7aWYodC5sZW5ndGg+cil0aHJvdyBuZXcgeFAoe3NpemU6dC5sZW5ndGgsdGFyZ2V0U2l6ZTpyLHR5cGU6ImJ5dGVzIn0pO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkocik7Zm9yKGxldCBzPTA7czxyO3MrKyl7Y29uc3QgaT1lPT09InJpZ2h0IjtuW2k/czpyLXMtMV09dFtpP3M6dC5sZW5ndGgtcy0xXX1yZXR1cm4gbn1mdW5jdGlvbiBmYSh0LHtzdHJpY3Q6ZT0hMH09e30pe3JldHVybiF0fHx0eXBlb2YgdCE9InN0cmluZyI/ITE6ZT8vXjB4WzAtOWEtZkEtRl0qJC8udGVzdCh0KTp0LnN0YXJ0c1dpdGgoIjB4Iil9ZnVuY3Rpb24gR3IodCl7cmV0dXJuIGZhKHQse3N0cmljdDohMX0pP01hdGguY2VpbCgodC5sZW5ndGgtMikvMik6dC5sZW5ndGh9ZnVuY3Rpb24gUHModCx7ZGlyOmU9ImxlZnQifT17fSl7bGV0IHI9dHlwZW9mIHQ9PSJzdHJpbmciP3QucmVwbGFjZSgiMHgiLCIiKTp0LG49MDtmb3IobGV0IHM9MDtzPHIubGVuZ3RoLTEmJnJbZT09PSJsZWZ0Ij9zOnIubGVuZ3RoLXMtMV0udG9TdHJpbmcoKT09PSIwIjtzKyspbisrO3JldHVybiByPWU9PT0ibGVmdCI/ci5zbGljZShuKTpyLnNsaWNlKDAsci5sZW5ndGgtbiksdHlwZW9mIHQ9PSJzdHJpbmciPyhyLmxlbmd0aD09PTEmJmU9PT0icmlnaHQiJiYocj1gJHtyfTBgKSxgMHgke3IubGVuZ3RoJTI9PT0xP2AwJHtyfWA6cn1gKTpyfWNvbnN0IEZGPW5ldyBUZXh0RW5jb2RlcjtmdW5jdGlvbiBudSh0LGU9e30pe3JldHVybiB0eXBlb2YgdD09Im51bWJlciJ8fHR5cGVvZiB0PT0iYmlnaW50Ij96Rih0LGUpOnR5cGVvZiB0PT0iYm9vbGVhbiI/akYodCxlKTpmYSh0KT9TaSh0LGUpOl9QKHQsZSl9ZnVuY3Rpb24gakYodCxlPXt9KXtjb25zdCByPW5ldyBVaW50OEFycmF5KDEpO3JldHVybiByWzBdPU51bWJlcih0KSx0eXBlb2YgZS5zaXplPT0ibnVtYmVyIj8oV3Mocix7c2l6ZTplLnNpemV9KSxHdShyLHtzaXplOmUuc2l6ZX0pKTpyfWNvbnN0IExvPXt6ZXJvOjQ4LG5pbmU6NTcsQTo2NSxGOjcwLGE6OTcsZjoxMDJ9O2Z1bmN0aW9uIF84KHQpe2lmKHQ+PUxvLnplcm8mJnQ8PUxvLm5pbmUpcmV0dXJuIHQtTG8uemVybztpZih0Pj1Mby5BJiZ0PD1Mby5GKXJldHVybiB0LShMby5BLTEwKTtpZih0Pj1Mby5hJiZ0PD1Mby5mKXJldHVybiB0LShMby5hLTEwKX1mdW5jdGlvbiBTaSh0LGU9e30pe2xldCByPXQ7ZS5zaXplJiYoV3Mocix7c2l6ZTplLnNpemV9KSxyPUd1KHIse2RpcjoicmlnaHQiLHNpemU6ZS5zaXplfSkpO2xldCBuPXIuc2xpY2UoMik7bi5sZW5ndGglMiYmKG49YDAke259YCk7Y29uc3Qgcz1uLmxlbmd0aC8yLGk9bmV3IFVpbnQ4QXJyYXkocyk7Zm9yKGxldCBvPTAsYT0wO288cztvKyspe2NvbnN0IGM9Xzgobi5jaGFyQ29kZUF0KGErKykpLGw9Xzgobi5jaGFyQ29kZUF0KGErKykpO2lmKGM9PT12b2lkIDB8fGw9PT12b2lkIDApdGhyb3cgbmV3IEVlKGBJbnZhbGlkIGJ5dGUgc2VxdWVuY2UgKCIke25bYS0yXX0ke25bYS0xXX0iIGluICIke259IikuYCk7aVtvXT1jKjE2K2x9cmV0dXJuIGl9ZnVuY3Rpb24gekYodCxlKXtjb25zdCByPXV0KHQsZSk7cmV0dXJuIFNpKHIpfWZ1bmN0aW9uIF9QKHQsZT17fSl7Y29uc3Qgcj1GRi5lbmNvZGUodCk7cmV0dXJuIHR5cGVvZiBlLnNpemU9PSJudW1iZXIiPyhXcyhyLHtzaXplOmUuc2l6ZX0pLEd1KHIse2RpcjoicmlnaHQiLHNpemU6ZS5zaXplfSkpOnJ9ZnVuY3Rpb24gV3ModCx7c2l6ZTplfSl7aWYoR3IodCk+ZSl0aHJvdyBuZXcgTEYoe2dpdmVuU2l6ZTpHcih0KSxtYXhTaXplOmV9KX1mdW5jdGlvbiBzcih0LGU9e30pe2NvbnN0e3NpZ25lZDpyfT1lO2Uuc2l6ZSYmV3ModCx7c2l6ZTplLnNpemV9KTtjb25zdCBuPUJpZ0ludCh0KTtpZighcilyZXR1cm4gbjtjb25zdCBzPSh0Lmxlbmd0aC0yKS8yLGk9KDFuPDxCaWdJbnQocykqOG4tMW4pLTFuO3JldHVybiBuPD1pP246bi1CaWdJbnQoYDB4JHsiZiIucGFkU3RhcnQocyoyLCJmIil9YCktMW59ZnVuY3Rpb24gbWEodCxlPXt9KXtyZXR1cm4gTnVtYmVyKHNyKHQsZSkpfWZ1bmN0aW9uIGtQKHQsZT17fSl7bGV0IHI9U2kodCk7cmV0dXJuIGUuc2l6ZSYmKFdzKHIse3NpemU6ZS5zaXplfSkscj1QcyhyLHtkaXI6InJpZ2h0In0pKSxuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUocil9Y29uc3QgV0Y9QXJyYXkuZnJvbSh7bGVuZ3RoOjI1Nn0sKHQsZSk9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSk7ZnVuY3Rpb24gcWUodCxlPXt9KXtyZXR1cm4gdHlwZW9mIHQ9PSJudW1iZXIifHx0eXBlb2YgdD09ImJpZ2ludCI/dXQodCxlKTp0eXBlb2YgdD09InN0cmluZyI/aHkodCxlKTp0eXBlb2YgdD09ImJvb2xlYW4iP1NQKHQsZSk6Qm4odCxlKX1mdW5jdGlvbiBTUCh0LGU9e30pe2NvbnN0IHI9YDB4JHtOdW1iZXIodCl9YDtyZXR1cm4gdHlwZW9mIGUuc2l6ZT09Im51bWJlciI/KFdzKHIse3NpemU6ZS5zaXplfSksR3Uocix7c2l6ZTplLnNpemV9KSk6cn1mdW5jdGlvbiBCbih0LGU9e30pe2xldCByPSIiO2ZvcihsZXQgcz0wO3M8dC5sZW5ndGg7cysrKXIrPVdGW3Rbc11dO2NvbnN0IG49YDB4JHtyfWA7cmV0dXJuIHR5cGVvZiBlLnNpemU9PSJudW1iZXIiPyhXcyhuLHtzaXplOmUuc2l6ZX0pLEd1KG4se2RpcjoicmlnaHQiLHNpemU6ZS5zaXplfSkpOm59ZnVuY3Rpb24gdXQodCxlPXt9KXtjb25zdHtzaWduZWQ6cixzaXplOm59PWUscz1CaWdJbnQodCk7bGV0IGk7bj9yP2k9KDFuPDxCaWdJbnQobikqOG4tMW4pLTFuOmk9Mm4qKihCaWdJbnQobikqOG4pLTFuOnR5cGVvZiB0PT0ibnVtYmVyIiYmKGk9QmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSk7Y29uc3Qgbz10eXBlb2YgaT09ImJpZ2ludCImJnI/LWktMW46MDtpZihpJiZzPml8fHM8byl7Y29uc3QgYz10eXBlb2YgdD09ImJpZ2ludCI/Im4iOiIiO3Rocm93IG5ldyBFUCh7bWF4Omk/YCR7aX0ke2N9YDp2b2lkIDAsbWluOmAke299JHtjfWAsc2lnbmVkOnIsc2l6ZTpuLHZhbHVlOmAke3R9JHtjfWB9KX1jb25zdCBhPWAweCR7KHImJnM8MD8oMW48PEJpZ0ludChuKjgpKStCaWdJbnQocyk6cykudG9TdHJpbmcoMTYpfWA7cmV0dXJuIG4/R3UoYSx7c2l6ZTpufSk6YX1jb25zdCBIRj1uZXcgVGV4dEVuY29kZXI7ZnVuY3Rpb24gaHkodCxlPXt9KXtjb25zdCByPUhGLmVuY29kZSh0KTtyZXR1cm4gQm4ocixlKX1mdW5jdGlvbiB2byh0LHtpbmNsdWRlTmFtZTplPSExfT17fSl7aWYodC50eXBlIT09ImZ1bmN0aW9uIiYmdC50eXBlIT09ImV2ZW50IiYmdC50eXBlIT09ImVycm9yIil0aHJvdyBuZXcgcmoodC50eXBlKTtyZXR1cm5gJHt0Lm5hbWV9KCR7cHkodC5pbnB1dHMse2luY2x1ZGVOYW1lOmV9KX0pYH1mdW5jdGlvbiBweSh0LHtpbmNsdWRlTmFtZTplPSExfT17fSl7cmV0dXJuIHQ/dC5tYXAocj0+cUYocix7aW5jbHVkZU5hbWU6ZX0pKS5qb2luKGU/IiwgIjoiLCIpOiIifWZ1bmN0aW9uIHFGKHQse2luY2x1ZGVOYW1lOmV9KXtyZXR1cm4gdC50eXBlLnN0YXJ0c1dpdGgoInR1cGxlIik/YCgke3B5KHQuY29tcG9uZW50cyx7aW5jbHVkZU5hbWU6ZX0pfSkke3QudHlwZS5zbGljZSg1KX1gOnQudHlwZSsoZSYmdC5uYW1lP2AgJHt0Lm5hbWV9YDoiIil9Y2xhc3MgVkYgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7ZG9jc1BhdGg6ZX0pe3N1cGVyKFsiQSBjb25zdHJ1Y3RvciB3YXMgbm90IGZvdW5kIG9uIHRoZSBBQkkuIiwiTWFrZSBzdXJlIHlvdSBhcmUgdXNpbmcgdGhlIGNvcnJlY3QgQUJJIGFuZCB0aGF0IHRoZSBjb25zdHJ1Y3RvciBleGlzdHMgb24gaXQuIl0uam9pbihgDQpgKSx7ZG9jc1BhdGg6ZSxuYW1lOiJBYmlDb25zdHJ1Y3Rvck5vdEZvdW5kRXJyb3IifSl9fWNsYXNzIGs4IGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe2RvY3NQYXRoOmV9KXtzdXBlcihbIkNvbnN0cnVjdG9yIGFyZ3VtZW50cyB3ZXJlIHByb3ZpZGVkIChgYXJnc2ApLCBidXQgYSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIChgaW5wdXRzYCkgd2VyZSBub3QgZm91bmQgb24gdGhlIEFCSS4iLCJNYWtlIHN1cmUgeW91IGFyZSB1c2luZyB0aGUgY29ycmVjdCBBQkksIGFuZCB0aGF0IHRoZSBgaW5wdXRzYCBhdHRyaWJ1dGUgb24gdGhlIGNvbnN0cnVjdG9yIGV4aXN0cy4iXS5qb2luKGANCmApLHtkb2NzUGF0aDplLG5hbWU6IkFiaUNvbnN0cnVjdG9yUGFyYW1zTm90Rm91bmRFcnJvciJ9KX19Y2xhc3MgQVAgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7ZGF0YTplLHBhcmFtczpyLHNpemU6bn0pe3N1cGVyKFtgRGF0YSBzaXplIG9mICR7bn0gYnl0ZXMgaXMgdG9vIHNtYWxsIGZvciBnaXZlbiBwYXJhbWV0ZXJzLmBdLmpvaW4oYA0KYCkse21ldGFNZXNzYWdlczpbYFBhcmFtczogKCR7cHkocix7aW5jbHVkZU5hbWU6ITB9KX0pYCxgRGF0YTogICAke2V9ICgke259IGJ5dGVzKWBdLG5hbWU6IkFiaURlY29kaW5nRGF0YVNpemVUb29TbWFsbEVycm9yIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkYXRhIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmFtcyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJzaXplIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5kYXRhPWUsdGhpcy5wYXJhbXM9cix0aGlzLnNpemU9bn19Y2xhc3MgZnkgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCdDYW5ub3QgZGVjb2RlIHplcm8gZGF0YSAoIjB4Iikgd2l0aCBBQkkgcGFyYW1ldGVycy4nLHtuYW1lOiJBYmlEZWNvZGluZ1plcm9EYXRhRXJyb3IifSl9fWNsYXNzIEdGIGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe2V4cGVjdGVkTGVuZ3RoOmUsZ2l2ZW5MZW5ndGg6cix0eXBlOm59KXtzdXBlcihbYEFCSSBlbmNvZGluZyBhcnJheSBsZW5ndGggbWlzbWF0Y2ggZm9yIHR5cGUgJHtufS5gLGBFeHBlY3RlZCBsZW5ndGg6ICR7ZX1gLGBHaXZlbiBsZW5ndGg6ICR7cn1gXS5qb2luKGANCmApLHtuYW1lOiJBYmlFbmNvZGluZ0FycmF5TGVuZ3RoTWlzbWF0Y2hFcnJvciJ9KX19Y2xhc3MgS0YgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7ZXhwZWN0ZWRTaXplOmUsdmFsdWU6cn0pe3N1cGVyKGBTaXplIG9mIGJ5dGVzICIke3J9IiAoYnl0ZXMke0dyKHIpfSkgZG9lcyBub3QgbWF0Y2ggZXhwZWN0ZWQgc2l6ZSAoYnl0ZXMke2V9KS5gLHtuYW1lOiJBYmlFbmNvZGluZ0J5dGVzU2l6ZU1pc21hdGNoRXJyb3IifSl9fWNsYXNzIFpGIGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe2V4cGVjdGVkTGVuZ3RoOmUsZ2l2ZW5MZW5ndGg6cn0pe3N1cGVyKFsiQUJJIGVuY29kaW5nIHBhcmFtcy92YWx1ZXMgbGVuZ3RoIG1pc21hdGNoLiIsYEV4cGVjdGVkIGxlbmd0aCAocGFyYW1zKTogJHtlfWAsYEdpdmVuIGxlbmd0aCAodmFsdWVzKTogJHtyfWBdLmpvaW4oYA0KYCkse25hbWU6IkFiaUVuY29kaW5nTGVuZ3RoTWlzbWF0Y2hFcnJvciJ9KX19Y2xhc3MgWUYgZXh0ZW5kcyBFZXtjb25zdHJ1Y3RvcihlLHtkb2NzUGF0aDpyfSl7c3VwZXIoW2BBcmd1bWVudHMgKFxgYXJnc1xgKSB3ZXJlIHByb3ZpZGVkIHRvICIke2V9IiwgYnV0ICIke2V9IiBvbiB0aGUgQUJJIGRvZXMgbm90IGNvbnRhaW4gYW55IHBhcmFtZXRlcnMgKFxgaW5wdXRzXGApLmAsIkNhbm5vdCBlbmNvZGUgZXJyb3IgcmVzdWx0IHdpdGhvdXQga25vd2luZyB3aGF0IHRoZSBwYXJhbWV0ZXIgdHlwZXMgYXJlLiIsIk1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIHRoZSBjb3JyZWN0IEFCSSBhbmQgdGhhdCB0aGUgaW5wdXRzIGV4aXN0IG9uIGl0LiJdLmpvaW4oYA0KYCkse2RvY3NQYXRoOnIsbmFtZToiQWJpRXJyb3JJbnB1dHNOb3RGb3VuZEVycm9yIn0pfX1jbGFzcyBTOCBleHRlbmRzIEVle2NvbnN0cnVjdG9yKGUse2RvY3NQYXRoOnJ9PXt9KXtzdXBlcihbYEVycm9yICR7ZT9gIiR7ZX0iIGA6IiJ9bm90IGZvdW5kIG9uIEFCSS5gLCJNYWtlIHN1cmUgeW91IGFyZSB1c2luZyB0aGUgY29ycmVjdCBBQkkgYW5kIHRoYXQgdGhlIGVycm9yIGV4aXN0cyBvbiBpdC4iXS5qb2luKGANCmApLHtkb2NzUGF0aDpyLG5hbWU6IkFiaUVycm9yTm90Rm91bmRFcnJvciJ9KX19Y2xhc3MgVFAgZXh0ZW5kcyBFZXtjb25zdHJ1Y3RvcihlLHtkb2NzUGF0aDpyfSl7c3VwZXIoW2BFbmNvZGVkIGVycm9yIHNpZ25hdHVyZSAiJHtlfSIgbm90IGZvdW5kIG9uIEFCSS5gLCJNYWtlIHN1cmUgeW91IGFyZSB1c2luZyB0aGUgY29ycmVjdCBBQkkgYW5kIHRoYXQgdGhlIGVycm9yIGV4aXN0cyBvbiBpdC4iLGBZb3UgY2FuIGxvb2sgdXAgdGhlIGRlY29kZWQgc2lnbmF0dXJlIGhlcmU6IGh0dHBzOi8vb3BlbmNoYWluLnh5ei9zaWduYXR1cmVzP3F1ZXJ5PSR7ZX0uYF0uam9pbihgDQpgKSx7ZG9jc1BhdGg6cixuYW1lOiJBYmlFcnJvclNpZ25hdHVyZU5vdEZvdW5kRXJyb3IifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInNpZ25hdHVyZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuc2lnbmF0dXJlPWV9fWNsYXNzIEpGIGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe2RvY3NQYXRoOmV9KXtzdXBlcigiQ2Fubm90IGV4dHJhY3QgZXZlbnQgc2lnbmF0dXJlIGZyb20gZW1wdHkgdG9waWNzLiIse2RvY3NQYXRoOmUsbmFtZToiQWJpRXZlbnRTaWduYXR1cmVFbXB0eVRvcGljc0Vycm9yIn0pfX1jbGFzcyBJUCBleHRlbmRzIEVle2NvbnN0cnVjdG9yKGUse2RvY3NQYXRoOnJ9KXtzdXBlcihbYEVuY29kZWQgZXZlbnQgc2lnbmF0dXJlICIke2V9IiBub3QgZm91bmQgb24gQUJJLmAsIk1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIHRoZSBjb3JyZWN0IEFCSSBhbmQgdGhhdCB0aGUgZXZlbnQgZXhpc3RzIG9uIGl0LiIsYFlvdSBjYW4gbG9vayB1cCB0aGUgc2lnbmF0dXJlIGhlcmU6IGh0dHBzOi8vb3BlbmNoYWluLnh5ei9zaWduYXR1cmVzP3F1ZXJ5PSR7ZX0uYF0uam9pbihgDQpgKSx7ZG9jc1BhdGg6cixuYW1lOiJBYmlFdmVudFNpZ25hdHVyZU5vdEZvdW5kRXJyb3IifSl9fWNsYXNzIGhoIGV4dGVuZHMgRWV7Y29uc3RydWN0b3IoZSx7ZG9jc1BhdGg6cn09e30pe3N1cGVyKFtgRnVuY3Rpb24gJHtlP2AiJHtlfSIgYDoiIn1ub3QgZm91bmQgb24gQUJJLmAsIk1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIHRoZSBjb3JyZWN0IEFCSSBhbmQgdGhhdCB0aGUgZnVuY3Rpb24gZXhpc3RzIG9uIGl0LiJdLmpvaW4oYA0KYCkse2RvY3NQYXRoOnIsbmFtZToiQWJpRnVuY3Rpb25Ob3RGb3VuZEVycm9yIn0pfX1jbGFzcyBSUCBleHRlbmRzIEVle2NvbnN0cnVjdG9yKGUse2RvY3NQYXRoOnJ9KXtzdXBlcihbYEZ1bmN0aW9uICIke2V9IiBkb2VzIG5vdCBjb250YWluIGFueSBcYG91dHB1dHNcYCBvbiBBQkkuYCwiQ2Fubm90IGRlY29kZSBmdW5jdGlvbiByZXN1bHQgd2l0aG91dCBrbm93aW5nIHdoYXQgdGhlIHBhcmFtZXRlciB0eXBlcyBhcmUuIiwiTWFrZSBzdXJlIHlvdSBhcmUgdXNpbmcgdGhlIGNvcnJlY3QgQUJJIGFuZCB0aGF0IHRoZSBmdW5jdGlvbiBleGlzdHMgb24gaXQuIl0uam9pbihgDQpgKSx7ZG9jc1BhdGg6cixuYW1lOiJBYmlGdW5jdGlvbk91dHB1dHNOb3RGb3VuZEVycm9yIn0pfX1jbGFzcyBYRiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKGUse2RvY3NQYXRoOnJ9KXtzdXBlcihbYEVuY29kZWQgZnVuY3Rpb24gc2lnbmF0dXJlICIke2V9IiBub3QgZm91bmQgb24gQUJJLmAsIk1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIHRoZSBjb3JyZWN0IEFCSSBhbmQgdGhhdCB0aGUgZnVuY3Rpb24gZXhpc3RzIG9uIGl0LiIsYFlvdSBjYW4gbG9vayB1cCB0aGUgc2lnbmF0dXJlIGhlcmU6IGh0dHBzOi8vb3BlbmNoYWluLnh5ei9zaWduYXR1cmVzP3F1ZXJ5PSR7ZX0uYF0uam9pbihgDQpgKSx7ZG9jc1BhdGg6cixuYW1lOiJBYmlGdW5jdGlvblNpZ25hdHVyZU5vdEZvdW5kRXJyb3IifSl9fWNsYXNzIFFGIGV4dGVuZHMgRWV7Y29uc3RydWN0b3IoZSxyKXtzdXBlcigiRm91bmQgYW1iaWd1b3VzIHR5cGVzIGluIG92ZXJsb2FkZWQgQUJJIGl0ZW1zLiIse21ldGFNZXNzYWdlczpbYFxgJHtlLnR5cGV9XGAgaW4gXGAke3ZvKGUuYWJpSXRlbSl9XGAsIGFuZGAsYFxgJHtyLnR5cGV9XGAgaW4gXGAke3ZvKHIuYWJpSXRlbSl9XGBgLCIiLCJUaGVzZSB0eXBlcyBlbmNvZGUgZGlmZmVyZW50bHkgYW5kIGNhbm5vdCBiZSBkaXN0aW5ndWlzaGVkIGF0IHJ1bnRpbWUuIiwiUmVtb3ZlIG9uZSBvZiB0aGUgYW1iaWd1b3VzIGl0ZW1zIGluIHRoZSBBQkkuIl0sbmFtZToiQWJpSXRlbUFtYmlndWl0eUVycm9yIn0pfX1jbGFzcyBiQyBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHthYmlJdGVtOmUsZGF0YTpyLHBhcmFtczpuLHNpemU6c30pe3N1cGVyKFtgRGF0YSBzaXplIG9mICR7c30gYnl0ZXMgaXMgdG9vIHNtYWxsIGZvciBub24taW5kZXhlZCBldmVudCBwYXJhbWV0ZXJzLmBdLmpvaW4oYA0KYCkse21ldGFNZXNzYWdlczpbYFBhcmFtczogKCR7cHkobix7aW5jbHVkZU5hbWU6ITB9KX0pYCxgRGF0YTogICAke3J9ICgke3N9IGJ5dGVzKWBdLG5hbWU6IkRlY29kZUxvZ0RhdGFNaXNtYXRjaCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiYWJpSXRlbSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkYXRhIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmFtcyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJzaXplIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5hYmlJdGVtPWUsdGhpcy5kYXRhPXIsdGhpcy5wYXJhbXM9bix0aGlzLnNpemU9c319Y2xhc3MgTlAgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7YWJpSXRlbTplLHBhcmFtOnJ9KXtzdXBlcihbYEV4cGVjdGVkIGEgdG9waWMgZm9yIGluZGV4ZWQgZXZlbnQgcGFyYW1ldGVyJHtyLm5hbWU/YCAiJHtyLm5hbWV9ImA6IiJ9IG9uIGV2ZW50ICIke3ZvKGUse2luY2x1ZGVOYW1lOiEwfSl9Ii5gXS5qb2luKGANCmApLHtuYW1lOiJEZWNvZGVMb2dUb3BpY3NNaXNtYXRjaCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiYWJpSXRlbSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuYWJpSXRlbT1lfX1jbGFzcyBlaiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKGUse2RvY3NQYXRoOnJ9KXtzdXBlcihbYFR5cGUgIiR7ZX0iIGlzIG5vdCBhIHZhbGlkIGVuY29kaW5nIHR5cGUuYCwiUGxlYXNlIHByb3ZpZGUgYSB2YWxpZCBBQkkgdHlwZS4iXS5qb2luKGANCmApLHtkb2NzUGF0aDpyLG5hbWU6IkludmFsaWRBYmlFbmNvZGluZ1R5cGUifSl9fWNsYXNzIHRqIGV4dGVuZHMgRWV7Y29uc3RydWN0b3IoZSx7ZG9jc1BhdGg6cn0pe3N1cGVyKFtgVHlwZSAiJHtlfSIgaXMgbm90IGEgdmFsaWQgZGVjb2RpbmcgdHlwZS5gLCJQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIEFCSSB0eXBlLiJdLmpvaW4oYA0KYCkse2RvY3NQYXRoOnIsbmFtZToiSW52YWxpZEFiaURlY29kaW5nVHlwZSJ9KX19Y2xhc3MgUFAgZXh0ZW5kcyBFZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihbYFZhbHVlICIke2V9IiBpcyBub3QgYSB2YWxpZCBhcnJheS5gXS5qb2luKGANCmApLHtuYW1lOiJJbnZhbGlkQXJyYXlFcnJvciJ9KX19Y2xhc3MgcmogZXh0ZW5kcyBFZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihbYCIke2V9IiBpcyBub3QgYSB2YWxpZCBkZWZpbml0aW9uIHR5cGUuYCwnVmFsaWQgdHlwZXM6ICJmdW5jdGlvbiIsICJldmVudCIsICJlcnJvciInXS5qb2luKGANCmApLHtuYW1lOiJJbnZhbGlkRGVmaW5pdGlvblR5cGVFcnJvciJ9KX19ZnVuY3Rpb24gaHUodCl7cmV0dXJuIHR5cGVvZiB0WzBdPT0ic3RyaW5nIj9pcyh0KTpuaih0KX1mdW5jdGlvbiBuaih0KXtsZXQgZT0wO2Zvcihjb25zdCBzIG9mIHQpZSs9cy5sZW5ndGg7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlKTtsZXQgbj0wO2Zvcihjb25zdCBzIG9mIHQpci5zZXQocyxuKSxuKz1zLmxlbmd0aDtyZXR1cm4gcn1mdW5jdGlvbiBpcyh0KXtyZXR1cm5gMHgke3QucmVkdWNlKChlLHIpPT5lK3IucmVwbGFjZSgiMHgiLCIiKSwiIil9YH1jbGFzcyBkbiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHthZGRyZXNzOmV9KXtzdXBlcihgQWRkcmVzcyAiJHtlfSIgaXMgaW52YWxpZC5gLHttZXRhTWVzc2FnZXM6WyItIEFkZHJlc3MgbXVzdCBiZSBhIGhleCB2YWx1ZSBvZiAyMCBieXRlcyAoNDAgaGV4IGNoYXJhY3RlcnMpLiIsIi0gQWRkcmVzcyBtdXN0IG1hdGNoIGl0cyBjaGVja3N1bSBjb3VudGVycGFydC4iXSxuYW1lOiJJbnZhbGlkQWRkcmVzc0Vycm9yIn0pfX1sZXQgbXk9Y2xhc3MgZXh0ZW5kcyBNYXB7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibWF4U2l6ZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMubWF4U2l6ZT1lfWdldChlKXtjb25zdCByPXN1cGVyLmdldChlKTtyZXR1cm4gc3VwZXIuaGFzKGUpJiZyIT09dm9pZCAwJiYodGhpcy5kZWxldGUoZSksc3VwZXIuc2V0KGUscikpLHJ9c2V0KGUscil7aWYoc3VwZXIuc2V0KGUsciksdGhpcy5tYXhTaXplJiZ0aGlzLnNpemU+dGhpcy5tYXhTaXplKXtjb25zdCBuPXRoaXMua2V5cygpLm5leHQoKS52YWx1ZTtuJiZ0aGlzLmRlbGV0ZShuKX1yZXR1cm4gdGhpc319O2NvbnN0IHNnPUJpZ0ludCgyKiozMi0xKSxBOD1CaWdJbnQoMzIpO2Z1bmN0aW9uIGlqKHQsZT0hMSl7cmV0dXJuIGU/e2g6TnVtYmVyKHQmc2cpLGw6TnVtYmVyKHQ+PkE4JnNnKX06e2g6TnVtYmVyKHQ+PkE4JnNnKXwwLGw6TnVtYmVyKHQmc2cpfDB9fWZ1bmN0aW9uIHNqKHQsZT0hMSl7Y29uc3Qgcj10Lmxlbmd0aDtsZXQgbj1uZXcgVWludDMyQXJyYXkocikscz1uZXcgVWludDMyQXJyYXkocik7Zm9yKGxldCBpPTA7aTxyO2krKyl7Y29uc3R7aDpvLGw6YX09aWoodFtpXSxlKTtbbltpXSxzW2ldXT1bbyxhXX1yZXR1cm5bbixzXX1jb25zdCBvaj0odCxlLHIpPT50PDxyfGU+Pj4zMi1yLGFqPSh0LGUscik9PmU8PHJ8dD4+PjMyLXIsY2o9KHQsZSxyKT0+ZTw8ci0zMnx0Pj4+NjQtcixsaj0odCxlLHIpPT50PDxyLTMyfGU+Pj42NC1yLFNkPXR5cGVvZiBnbG9iYWxUaGlzPT0ib2JqZWN0IiYmImNyeXB0byJpbiBnbG9iYWxUaGlzP2dsb2JhbFRoaXMuY3J5cHRvOnZvaWQgMDsvKiEgbm9ibGUtaGFzaGVzIC0gTUlUIExpY2Vuc2UgKGMpIDIwMjIgUGF1bCBNaWxsZXIgKHBhdWxtaWxsci5jb20pICovZnVuY3Rpb24gdWoodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJnQuY29uc3RydWN0b3IubmFtZT09PSJVaW50OEFycmF5In1mdW5jdGlvbiBmMCh0KXtpZighTnVtYmVyLmlzU2FmZUludGVnZXIodCl8fHQ8MCl0aHJvdyBuZXcgRXJyb3IoInBvc2l0aXZlIGludGVnZXIgZXhwZWN0ZWQsIGdvdCAiK3QpfWZ1bmN0aW9uIGJjKHQsLi4uZSl7aWYoIXVqKHQpKXRocm93IG5ldyBFcnJvcigiVWludDhBcnJheSBleHBlY3RlZCIpO2lmKGUubGVuZ3RoPjAmJiFlLmluY2x1ZGVzKHQubGVuZ3RoKSl0aHJvdyBuZXcgRXJyb3IoIlVpbnQ4QXJyYXkgZXhwZWN0ZWQgb2YgbGVuZ3RoICIrZSsiLCBnb3QgbGVuZ3RoPSIrdC5sZW5ndGgpfWZ1bmN0aW9uIGRqKHQpe2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24ifHx0eXBlb2YgdC5jcmVhdGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJIYXNoIHNob3VsZCBiZSB3cmFwcGVkIGJ5IHV0aWxzLmNyZWF0ZUhhc2hlciIpO2YwKHQub3V0cHV0TGVuKSxmMCh0LmJsb2NrTGVuKX1mdW5jdGlvbiBwaCh0LGU9ITApe2lmKHQuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiSGFzaCBpbnN0YW5jZSBoYXMgYmVlbiBkZXN0cm95ZWQiKTtpZihlJiZ0LmZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiSGFzaCNkaWdlc3QoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCIpfWZ1bmN0aW9uIE9QKHQsZSl7YmModCk7Y29uc3Qgcj1lLm91dHB1dExlbjtpZih0Lmxlbmd0aDxyKXRocm93IG5ldyBFcnJvcigiZGlnZXN0SW50bygpIGV4cGVjdHMgb3V0cHV0IGJ1ZmZlciBvZiBsZW5ndGggYXQgbGVhc3QgIityKX1mdW5jdGlvbiBoaih0KXtyZXR1cm4gbmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCxNYXRoLmZsb29yKHQuYnl0ZUxlbmd0aC80KSl9ZnVuY3Rpb24gZmgoLi4udCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXS5maWxsKDApfWZ1bmN0aW9uIEZ2KHQpe3JldHVybiBuZXcgRGF0YVZpZXcodC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCl9ZnVuY3Rpb24gcm8odCxlKXtyZXR1cm4gdDw8MzItZXx0Pj4+ZX1jb25zdCBwaj1uZXcgVWludDhBcnJheShuZXcgVWludDMyQXJyYXkoWzI4NzQ1NDAyMF0pLmJ1ZmZlcilbMF09PT02ODtmdW5jdGlvbiBmaih0KXtyZXR1cm4gdDw8MjQmNDI3ODE5MDA4MHx0PDw4JjE2NzExNjgwfHQ+Pj44JjY1MjgwfHQ+Pj4yNCYyNTV9ZnVuY3Rpb24gbWoodCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXT1maih0W2VdKTtyZXR1cm4gdH1jb25zdCBUOD1waj90PT50Om1qLGdqPXR5cGVvZiBVaW50OEFycmF5LmZyb20oW10pLnRvSGV4PT0iZnVuY3Rpb24iJiZ0eXBlb2YgVWludDhBcnJheS5mcm9tSGV4PT0iZnVuY3Rpb24iLHdqPUFycmF5LmZyb20oe2xlbmd0aDoyNTZ9LCh0LGUpPT5lLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpO2Z1bmN0aW9uIGJqKHQpe2lmKGJjKHQpLGdqKXJldHVybiB0LnRvSGV4KCk7bGV0IGU9IiI7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspZSs9d2pbdFtyXV07cmV0dXJuIGV9ZnVuY3Rpb24geWoodCl7aWYodHlwZW9mIHQhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigic3RyaW5nIGV4cGVjdGVkIik7cmV0dXJuIG5ldyBVaW50OEFycmF5KG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh0KSl9ZnVuY3Rpb24gZ3kodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9eWoodCkpLGJjKHQpLHR9ZnVuY3Rpb24gdmooLi4udCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgcz10W25dO2JjKHMpLGUrPXMubGVuZ3RofWNvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBuPTAscz0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPXRbbl07ci5zZXQoaSxzKSxzKz1pLmxlbmd0aH1yZXR1cm4gcn1sZXQgcTQ9Y2xhc3N7fTtmdW5jdGlvbiAkUCh0KXtjb25zdCBlPW49PnQoKS51cGRhdGUoZ3kobikpLmRpZ2VzdCgpLHI9dCgpO3JldHVybiBlLm91dHB1dExlbj1yLm91dHB1dExlbixlLmJsb2NrTGVuPXIuYmxvY2tMZW4sZS5jcmVhdGU9KCk9PnQoKSxlfWZ1bmN0aW9uIEVqKHQ9MzIpe2lmKFNkJiZ0eXBlb2YgU2QuZ2V0UmFuZG9tVmFsdWVzPT0iZnVuY3Rpb24iKXJldHVybiBTZC5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkodCkpO2lmKFNkJiZ0eXBlb2YgU2QucmFuZG9tQnl0ZXM9PSJmdW5jdGlvbiIpcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShTZC5yYW5kb21CeXRlcyh0KSk7dGhyb3cgbmV3IEVycm9yKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIG11c3QgYmUgZGVmaW5lZCIpfWNvbnN0IENqPUJpZ0ludCgwKSxScD1CaWdJbnQoMSkseGo9QmlnSW50KDIpLF9qPUJpZ0ludCg3KSxraj1CaWdJbnQoMjU2KSxTaj1CaWdJbnQoMTEzKSxNUD1bXSxEUD1bXSxCUD1bXTtmb3IobGV0IHQ9MCxlPVJwLHI9MSxuPTA7dDwyNDt0Kyspe1tyLG5dPVtuLCgyKnIrMypuKSU1XSxNUC5wdXNoKDIqKDUqbityKSksRFAucHVzaCgodCsxKSoodCsyKS8yJTY0KTtsZXQgcz1Dajtmb3IobGV0IGk9MDtpPDc7aSsrKWU9KGU8PFJwXihlPj5faikqU2opJWtqLGUmeGomJihzXj1ScDw8KFJwPDxCaWdJbnQoaSkpLVJwKTtCUC5wdXNoKHMpfWNvbnN0IExQPXNqKEJQLCEwKSxBaj1MUFswXSxUaj1MUFsxXSxJOD0odCxlLHIpPT5yPjMyP2NqKHQsZSxyKTpvaih0LGUsciksUjg9KHQsZSxyKT0+cj4zMj9saih0LGUscik6YWoodCxlLHIpO2Z1bmN0aW9uIElqKHQsZT0yNCl7Y29uc3Qgcj1uZXcgVWludDMyQXJyYXkoMTApO2ZvcihsZXQgbj0yNC1lO248MjQ7bisrKXtmb3IobGV0IG89MDtvPDEwO28rKylyW29dPXRbb11edFtvKzEwXV50W28rMjBdXnRbbyszMF1edFtvKzQwXTtmb3IobGV0IG89MDtvPDEwO28rPTIpe2NvbnN0IGE9KG8rOCklMTAsYz0obysyKSUxMCxsPXJbY10sZD1yW2MrMV0sdT1JOChsLGQsMSleclthXSxoPVI4KGwsZCwxKV5yW2ErMV07Zm9yKGxldCBwPTA7cDw1MDtwKz0xMCl0W28rcF1ePXUsdFtvK3ArMV1ePWh9bGV0IHM9dFsyXSxpPXRbM107Zm9yKGxldCBvPTA7bzwyNDtvKyspe2NvbnN0IGE9RFBbb10sYz1JOChzLGksYSksbD1SOChzLGksYSksZD1NUFtvXTtzPXRbZF0saT10W2QrMV0sdFtkXT1jLHRbZCsxXT1sfWZvcihsZXQgbz0wO288NTA7bys9MTApe2ZvcihsZXQgYT0wO2E8MTA7YSsrKXJbYV09dFtvK2FdO2ZvcihsZXQgYT0wO2E8MTA7YSsrKXRbbythXV49fnJbKGErMiklMTBdJnJbKGErNCklMTBdfXRbMF1ePUFqW25dLHRbMV1ePVRqW25dfWZoKHIpfWxldCBSaj1jbGFzcyBVUCBleHRlbmRzIHE0e2NvbnN0cnVjdG9yKGUscixuLHM9ITEsaT0yNCl7aWYoc3VwZXIoKSx0aGlzLnBvcz0wLHRoaXMucG9zT3V0PTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLmVuYWJsZVhPRj0hMSx0aGlzLmJsb2NrTGVuPWUsdGhpcy5zdWZmaXg9cix0aGlzLm91dHB1dExlbj1uLHRoaXMuZW5hYmxlWE9GPXMsdGhpcy5yb3VuZHM9aSxmMChuKSwhKDA8ZSYmZTwyMDApKXRocm93IG5ldyBFcnJvcigib25seSBrZWNjYWstZjE2MDAgZnVuY3Rpb24gaXMgc3VwcG9ydGVkIik7dGhpcy5zdGF0ZT1uZXcgVWludDhBcnJheSgyMDApLHRoaXMuc3RhdGUzMj1oaih0aGlzLnN0YXRlKX1jbG9uZSgpe3JldHVybiB0aGlzLl9jbG9uZUludG8oKX1rZWNjYWsoKXtUOCh0aGlzLnN0YXRlMzIpLElqKHRoaXMuc3RhdGUzMix0aGlzLnJvdW5kcyksVDgodGhpcy5zdGF0ZTMyKSx0aGlzLnBvc091dD0wLHRoaXMucG9zPTB9dXBkYXRlKGUpe3BoKHRoaXMpLGU9Z3koZSksYmMoZSk7Y29uc3R7YmxvY2tMZW46cixzdGF0ZTpufT10aGlzLHM9ZS5sZW5ndGg7Zm9yKGxldCBpPTA7aTxzOyl7Y29uc3Qgbz1NYXRoLm1pbihyLXRoaXMucG9zLHMtaSk7Zm9yKGxldCBhPTA7YTxvO2ErKyluW3RoaXMucG9zKytdXj1lW2krK107dGhpcy5wb3M9PT1yJiZ0aGlzLmtlY2NhaygpfXJldHVybiB0aGlzfWZpbmlzaCgpe2lmKHRoaXMuZmluaXNoZWQpcmV0dXJuO3RoaXMuZmluaXNoZWQ9ITA7Y29uc3R7c3RhdGU6ZSxzdWZmaXg6cixwb3M6bixibG9ja0xlbjpzfT10aGlzO2Vbbl1ePXIsKHImMTI4KSE9PTAmJm49PT1zLTEmJnRoaXMua2VjY2FrKCksZVtzLTFdXj0xMjgsdGhpcy5rZWNjYWsoKX13cml0ZUludG8oZSl7cGgodGhpcywhMSksYmMoZSksdGhpcy5maW5pc2goKTtjb25zdCByPXRoaXMuc3RhdGUse2Jsb2NrTGVuOm59PXRoaXM7Zm9yKGxldCBzPTAsaT1lLmxlbmd0aDtzPGk7KXt0aGlzLnBvc091dD49biYmdGhpcy5rZWNjYWsoKTtjb25zdCBvPU1hdGgubWluKG4tdGhpcy5wb3NPdXQsaS1zKTtlLnNldChyLnN1YmFycmF5KHRoaXMucG9zT3V0LHRoaXMucG9zT3V0K28pLHMpLHRoaXMucG9zT3V0Kz1vLHMrPW99cmV0dXJuIGV9eG9mSW50byhlKXtpZighdGhpcy5lbmFibGVYT0YpdGhyb3cgbmV3IEVycm9yKCJYT0YgaXMgbm90IHBvc3NpYmxlIGZvciB0aGlzIGluc3RhbmNlIik7cmV0dXJuIHRoaXMud3JpdGVJbnRvKGUpfXhvZihlKXtyZXR1cm4gZjAoZSksdGhpcy54b2ZJbnRvKG5ldyBVaW50OEFycmF5KGUpKX1kaWdlc3RJbnRvKGUpe2lmKE9QKGUsdGhpcyksdGhpcy5maW5pc2hlZCl0aHJvdyBuZXcgRXJyb3IoImRpZ2VzdCgpIHdhcyBhbHJlYWR5IGNhbGxlZCIpO3JldHVybiB0aGlzLndyaXRlSW50byhlKSx0aGlzLmRlc3Ryb3koKSxlfWRpZ2VzdCgpe3JldHVybiB0aGlzLmRpZ2VzdEludG8obmV3IFVpbnQ4QXJyYXkodGhpcy5vdXRwdXRMZW4pKX1kZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITAsZmgodGhpcy5zdGF0ZSl9X2Nsb25lSW50byhlKXtjb25zdHtibG9ja0xlbjpyLHN1ZmZpeDpuLG91dHB1dExlbjpzLHJvdW5kczppLGVuYWJsZVhPRjpvfT10aGlzO3JldHVybiBlfHwoZT1uZXcgVVAocixuLHMsbyxpKSksZS5zdGF0ZTMyLnNldCh0aGlzLnN0YXRlMzIpLGUucG9zPXRoaXMucG9zLGUucG9zT3V0PXRoaXMucG9zT3V0LGUuZmluaXNoZWQ9dGhpcy5maW5pc2hlZCxlLnJvdW5kcz1pLGUuc3VmZml4PW4sZS5vdXRwdXRMZW49cyxlLmVuYWJsZVhPRj1vLGUuZGVzdHJveWVkPXRoaXMuZGVzdHJveWVkLGV9fTtjb25zdCBOaj0odCxlLHIpPT4kUCgoKT0+bmV3IFJqKGUsdCxyKSksUGo9TmooMSwxMzYsMjU2LzgpO2Z1bmN0aW9uIHFtKHQsZSl7Y29uc3Qgcj1lfHwiaGV4IixuPVBqKGZhKHQse3N0cmljdDohMX0pP251KHQpOnQpO3JldHVybiByPT09ImJ5dGVzIj9uOnFlKG4pfWNvbnN0IGp2PW5ldyBteSg4MTkyKTtmdW5jdGlvbiB3eSh0LGUpe2lmKGp2LmhhcyhgJHt0fS4ke2V9YCkpcmV0dXJuIGp2LmdldChgJHt0fS4ke2V9YCk7Y29uc3Qgcj1lP2Ake2V9JHt0LnRvTG93ZXJDYXNlKCl9YDp0LnN1YnN0cmluZygyKS50b0xvd2VyQ2FzZSgpLG49cW0oX1AociksImJ5dGVzIikscz0oZT9yLnN1YnN0cmluZyhgJHtlfTB4YC5sZW5ndGgpOnIpLnNwbGl0KCIiKTtmb3IobGV0IG89MDtvPDQwO28rPTIpbltvPj4xXT4+ND49OCYmc1tvXSYmKHNbb109c1tvXS50b1VwcGVyQ2FzZSgpKSwobltvPj4xXSYxNSk+PTgmJnNbbysxXSYmKHNbbysxXT1zW28rMV0udG9VcHBlckNhc2UoKSk7Y29uc3QgaT1gMHgke3Muam9pbigiIil9YDtyZXR1cm4ganYuc2V0KGAke3R9LiR7ZX1gLGkpLGl9ZnVuY3Rpb24gX2kodCxlKXtpZighJHIodCx7c3RyaWN0OiExfSkpdGhyb3cgbmV3IGRuKHthZGRyZXNzOnR9KTtyZXR1cm4gd3kodCxlKX1jb25zdCBPaj0vXjB4W2EtZkEtRjAtOV17NDB9JC8senY9bmV3IG15KDgxOTIpO2Z1bmN0aW9uICRyKHQsZSl7Y29uc3R7c3RyaWN0OnI9ITB9PWU/P3t9LG49YCR7dH0uJHtyfWA7aWYoenYuaGFzKG4pKXJldHVybiB6di5nZXQobik7Y29uc3Qgcz1Pai50ZXN0KHQpP3QudG9Mb3dlckNhc2UoKT09PXQ/ITA6cj93eSh0KT09PXQ6ITA6ITE7cmV0dXJuIHp2LnNldChuLHMpLHN9ZnVuY3Rpb24gcHUodCxlLHIse3N0cmljdDpufT17fSl7cmV0dXJuIGZhKHQse3N0cmljdDohMX0pPyRqKHQsZSxyLHtzdHJpY3Q6bn0pOnpQKHQsZSxyLHtzdHJpY3Q6bn0pfWZ1bmN0aW9uIEZQKHQsZSl7aWYodHlwZW9mIGU9PSJudW1iZXIiJiZlPjAmJmU+R3IodCktMSl0aHJvdyBuZXcgQ1Aoe29mZnNldDplLHBvc2l0aW9uOiJzdGFydCIsc2l6ZTpHcih0KX0pfWZ1bmN0aW9uIGpQKHQsZSxyKXtpZih0eXBlb2YgZT09Im51bWJlciImJnR5cGVvZiByPT0ibnVtYmVyIiYmR3IodCkhPT1yLWUpdGhyb3cgbmV3IENQKHtvZmZzZXQ6cixwb3NpdGlvbjoiZW5kIixzaXplOkdyKHQpfSl9ZnVuY3Rpb24gelAodCxlLHIse3N0cmljdDpufT17fSl7RlAodCxlKTtjb25zdCBzPXQuc2xpY2UoZSxyKTtyZXR1cm4gbiYmalAocyxlLHIpLHN9ZnVuY3Rpb24gJGoodCxlLHIse3N0cmljdDpufT17fSl7RlAodCxlKTtjb25zdCBzPWAweCR7dC5yZXBsYWNlKCIweCIsIiIpLnNsaWNlKChlPz8wKSoyLChyPz90Lmxlbmd0aCkqMil9YDtyZXR1cm4gbiYmalAocyxlLHIpLHN9Y29uc3QgTWo9L14odT9pbnQpKDh8MTZ8MjR8MzJ8NDB8NDh8NTZ8NjR8NzJ8ODB8ODh8OTZ8MTA0fDExMnwxMjB8MTI4fDEzNnwxNDR8MTUyfDE2MHwxNjh8MTc2fDE4NHwxOTJ8MjAwfDIwOHwyMTZ8MjI0fDIzMnwyNDB8MjQ4fDI1Nik/JC87ZnVuY3Rpb24gVm0odCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXRocm93IG5ldyBaRih7ZXhwZWN0ZWRMZW5ndGg6dC5sZW5ndGgsZ2l2ZW5MZW5ndGg6ZS5sZW5ndGh9KTtjb25zdCByPURqKHtwYXJhbXM6dCx2YWx1ZXM6ZX0pLG49RzQocik7cmV0dXJuIG4ubGVuZ3RoPT09MD8iMHgiOm59ZnVuY3Rpb24gRGooe3BhcmFtczp0LHZhbHVlczplfSl7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylyLnB1c2goVjQoe3BhcmFtOnRbbl0sdmFsdWU6ZVtuXX0pKTtyZXR1cm4gcn1mdW5jdGlvbiBWNCh7cGFyYW06dCx2YWx1ZTplfSl7Y29uc3Qgcj1LNCh0LnR5cGUpO2lmKHIpe2NvbnN0W24sc109cjtyZXR1cm4gTGooZSx7bGVuZ3RoOm4scGFyYW06ey4uLnQsdHlwZTpzfX0pfWlmKHQudHlwZT09PSJ0dXBsZSIpcmV0dXJuIFdqKGUse3BhcmFtOnR9KTtpZih0LnR5cGU9PT0iYWRkcmVzcyIpcmV0dXJuIEJqKGUpO2lmKHQudHlwZT09PSJib29sIilyZXR1cm4gRmooZSk7aWYodC50eXBlLnN0YXJ0c1dpdGgoInVpbnQiKXx8dC50eXBlLnN0YXJ0c1dpdGgoImludCIpKXtjb25zdCBuPXQudHlwZS5zdGFydHNXaXRoKCJpbnQiKSxbLCxzPSIyNTYiXT1Nai5leGVjKHQudHlwZSk/P1tdO3JldHVybiBqaihlLHtzaWduZWQ6bixzaXplOk51bWJlcihzKX0pfWlmKHQudHlwZS5zdGFydHNXaXRoKCJieXRlcyIpKXJldHVybiBVaihlLHtwYXJhbTp0fSk7aWYodC50eXBlPT09InN0cmluZyIpcmV0dXJuIHpqKGUpO3Rocm93IG5ldyBlaih0LnR5cGUse2RvY3NQYXRoOiIvZG9jcy9jb250cmFjdC9lbmNvZGVBYmlQYXJhbWV0ZXJzIn0pfWZ1bmN0aW9uIEc0KHQpe2xldCBlPTA7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspe2NvbnN0e2R5bmFtaWM6byxlbmNvZGVkOmF9PXRbaV07bz9lKz0zMjplKz1HcihhKX1jb25zdCByPVtdLG49W107bGV0IHM9MDtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3R7ZHluYW1pYzpvLGVuY29kZWQ6YX09dFtpXTtvPyhyLnB1c2godXQoZStzLHtzaXplOjMyfSkpLG4ucHVzaChhKSxzKz1HcihhKSk6ci5wdXNoKGEpfXJldHVybiBodShbLi4uciwuLi5uXSl9ZnVuY3Rpb24gQmoodCl7aWYoISRyKHQpKXRocm93IG5ldyBkbih7YWRkcmVzczp0fSk7cmV0dXJue2R5bmFtaWM6ITEsZW5jb2RlZDpoYyh0LnRvTG93ZXJDYXNlKCkpfX1mdW5jdGlvbiBMaih0LHtsZW5ndGg6ZSxwYXJhbTpyfSl7Y29uc3Qgbj1lPT09bnVsbDtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgUFAodCk7aWYoIW4mJnQubGVuZ3RoIT09ZSl0aHJvdyBuZXcgR0Yoe2V4cGVjdGVkTGVuZ3RoOmUsZ2l2ZW5MZW5ndGg6dC5sZW5ndGgsdHlwZTpgJHtyLnR5cGV9WyR7ZX1dYH0pO2xldCBzPSExO2NvbnN0IGk9W107Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2NvbnN0IGE9VjQoe3BhcmFtOnIsdmFsdWU6dFtvXX0pO2EuZHluYW1pYyYmKHM9ITApLGkucHVzaChhKX1pZihufHxzKXtjb25zdCBvPUc0KGkpO2lmKG4pe2NvbnN0IGE9dXQoaS5sZW5ndGgse3NpemU6MzJ9KTtyZXR1cm57ZHluYW1pYzohMCxlbmNvZGVkOmkubGVuZ3RoPjA/aHUoW2Esb10pOmF9fWlmKHMpcmV0dXJue2R5bmFtaWM6ITAsZW5jb2RlZDpvfX1yZXR1cm57ZHluYW1pYzohMSxlbmNvZGVkOmh1KGkubWFwKCh7ZW5jb2RlZDpvfSk9Pm8pKX19ZnVuY3Rpb24gVWoodCx7cGFyYW06ZX0pe2NvbnN0WyxyXT1lLnR5cGUuc3BsaXQoImJ5dGVzIiksbj1Hcih0KTtpZighcil7bGV0IHM9dDtyZXR1cm4gbiUzMiE9PTAmJihzPWhjKHMse2RpcjoicmlnaHQiLHNpemU6TWF0aC5jZWlsKCh0Lmxlbmd0aC0yKS8yLzMyKSozMn0pKSx7ZHluYW1pYzohMCxlbmNvZGVkOmh1KFtoYyh1dChuLHtzaXplOjMyfSkpLHNdKX19aWYobiE9PU51bWJlci5wYXJzZUludChyKSl0aHJvdyBuZXcgS0Yoe2V4cGVjdGVkU2l6ZTpOdW1iZXIucGFyc2VJbnQociksdmFsdWU6dH0pO3JldHVybntkeW5hbWljOiExLGVuY29kZWQ6aGModCx7ZGlyOiJyaWdodCJ9KX19ZnVuY3Rpb24gRmoodCl7aWYodHlwZW9mIHQhPSJib29sZWFuIil0aHJvdyBuZXcgRWUoYEludmFsaWQgYm9vbGVhbiB2YWx1ZTogIiR7dH0iICh0eXBlOiAke3R5cGVvZiB0fSkuIEV4cGVjdGVkOiBcYHRydWVcYCBvciBcYGZhbHNlXGAuYCk7cmV0dXJue2R5bmFtaWM6ITEsZW5jb2RlZDpoYyhTUCh0KSl9fWZ1bmN0aW9uIGpqKHQse3NpZ25lZDplLHNpemU6cj0yNTZ9KXtpZih0eXBlb2Ygcj09Im51bWJlciIpe2NvbnN0IG49Mm4qKihCaWdJbnQociktKGU/MW46MG4pKS0xbixzPWU/LW4tMW46MG47aWYodD5ufHx0PHMpdGhyb3cgbmV3IEVQKHttYXg6bi50b1N0cmluZygpLG1pbjpzLnRvU3RyaW5nKCksc2lnbmVkOmUsc2l6ZTpyLzgsdmFsdWU6dC50b1N0cmluZygpfSl9cmV0dXJue2R5bmFtaWM6ITEsZW5jb2RlZDp1dCh0LHtzaXplOjMyLHNpZ25lZDplfSl9fWZ1bmN0aW9uIHpqKHQpe2NvbnN0IGU9aHkodCkscj1NYXRoLmNlaWwoR3IoZSkvMzIpLG49W107Zm9yKGxldCBzPTA7czxyO3MrKyluLnB1c2goaGMocHUoZSxzKjMyLChzKzEpKjMyKSx7ZGlyOiJyaWdodCJ9KSk7cmV0dXJue2R5bmFtaWM6ITAsZW5jb2RlZDpodShbaGModXQoR3IoZSkse3NpemU6MzJ9KSksLi4ubl0pfX1mdW5jdGlvbiBXaih0LHtwYXJhbTplfSl7bGV0IHI9ITE7Y29uc3Qgbj1bXTtmb3IobGV0IHM9MDtzPGUuY29tcG9uZW50cy5sZW5ndGg7cysrKXtjb25zdCBpPWUuY29tcG9uZW50c1tzXSxvPUFycmF5LmlzQXJyYXkodCk/czppLm5hbWUsYT1WNCh7cGFyYW06aSx2YWx1ZTp0W29dfSk7bi5wdXNoKGEpLGEuZHluYW1pYyYmKHI9ITApfXJldHVybntkeW5hbWljOnIsZW5jb2RlZDpyP0c0KG4pOmh1KG4ubWFwKCh7ZW5jb2RlZDpzfSk9PnMpKX19ZnVuY3Rpb24gSzQodCl7Y29uc3QgZT10Lm1hdGNoKC9eKC4qKVxbKFxkKyk/XF0kLyk7cmV0dXJuIGU/W2VbMl0/TnVtYmVyKGVbMl0pOm51bGwsZVsxXV06dm9pZCAwfWNvbnN0IFd2PSIvZG9jcy9jb250cmFjdC9lbmNvZGVEZXBsb3lEYXRhIjtmdW5jdGlvbiBXUCh0KXtjb25zdHthYmk6ZSxhcmdzOnIsYnl0ZWNvZGU6bn09dDtpZighcnx8ci5sZW5ndGg9PT0wKXJldHVybiBuO2NvbnN0IHM9ZS5maW5kKG89PiJ0eXBlImluIG8mJm8udHlwZT09PSJjb25zdHJ1Y3RvciIpO2lmKCFzKXRocm93IG5ldyBWRih7ZG9jc1BhdGg6V3Z9KTtpZighKCJpbnB1dHMiaW4gcykpdGhyb3cgbmV3IGs4KHtkb2NzUGF0aDpXdn0pO2lmKCFzLmlucHV0c3x8cy5pbnB1dHMubGVuZ3RoPT09MCl0aHJvdyBuZXcgazgoe2RvY3NQYXRoOld2fSk7Y29uc3QgaT1WbShzLmlucHV0cyxyKTtyZXR1cm4gaXMoW24saV0pfWZ1bmN0aW9uIEhzKHQpe3JldHVybiB0eXBlb2YgdD09InN0cmluZyI/e2FkZHJlc3M6dCx0eXBlOiJqc29uLXJwYyJ9OnR9Y2xhc3MgYnkgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7ZG9jc1BhdGg6ZX09e30pe3N1cGVyKFsiQ291bGQgbm90IGZpbmQgYW4gQWNjb3VudCB0byBleGVjdXRlIHdpdGggdGhpcyBBY3Rpb24uIiwiUGxlYXNlIHByb3ZpZGUgYW4gQWNjb3VudCB3aXRoIHRoZSBgYWNjb3VudGAgYXJndW1lbnQgb24gdGhlIEFjdGlvbiwgb3IgYnkgc3VwcGx5aW5nIGFuIGBhY2NvdW50YCB0byB0aGUgQ2xpZW50LiJdLmpvaW4oYA0KYCkse2RvY3NQYXRoOmUsZG9jc1NsdWc6ImFjY291bnQiLG5hbWU6IkFjY291bnROb3RGb3VuZEVycm9yIn0pfX1jbGFzcyBIdiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtkb2NzUGF0aDplLG1ldGFNZXNzYWdlczpyLHR5cGU6bn0pe3N1cGVyKGBBY2NvdW50IHR5cGUgIiR7bn0iIGlzIG5vdCBzdXBwb3J0ZWQuYCx7ZG9jc1BhdGg6ZSxtZXRhTWVzc2FnZXM6cixuYW1lOiJBY2NvdW50VHlwZU5vdFN1cHBvcnRlZEVycm9yIn0pfX1mdW5jdGlvbiBIaih0KXtjb25zdCBlPXFtKGAweCR7dC5zdWJzdHJpbmcoNCl9YCkuc3Vic3RyaW5nKDI2KTtyZXR1cm4gd3koYDB4JHtlfWApfWNvbnN0IHFqPSJtb2R1bGVwcmVsb2FkIixWaj1mdW5jdGlvbih0KXtyZXR1cm4iLyIrdH0sTjg9e30sVGU9ZnVuY3Rpb24oZSxyLG4pe2xldCBzPVByb21pc2UucmVzb2x2ZSgpO2lmKHImJnIubGVuZ3RoPjApe2xldCBvPWZ1bmN0aW9uKGwpe3JldHVybiBQcm9taXNlLmFsbChsLm1hcChkPT5Qcm9taXNlLnJlc29sdmUoZCkudGhlbih1PT4oe3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTp1fSksdT0+KHtzdGF0dXM6InJlamVjdGVkIixyZWFzb246dX0pKSkpfTtkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpO2NvbnN0IGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigibWV0YVtwcm9wZXJ0eT1jc3Atbm9uY2VdIiksYz1hPy5ub25jZXx8YT8uZ2V0QXR0cmlidXRlKCJub25jZSIpO3M9byhyLm1hcChsPT57aWYobD1WaihsKSxsIGluIE44KXJldHVybjtOOFtsXT0hMDtjb25zdCBkPWwuZW5kc1dpdGgoIi5jc3MiKSx1PWQ/J1tyZWw9InN0eWxlc2hlZXQiXSc6IiI7aWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlua1tocmVmPSIke2x9Il0ke3V9YCkpcmV0dXJuO2NvbnN0IGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2lmKGgucmVsPWQ/InN0eWxlc2hlZXQiOnFqLGR8fChoLmFzPSJzY3JpcHQiKSxoLmNyb3NzT3JpZ2luPSIiLGguaHJlZj1sLGMmJmguc2V0QXR0cmlidXRlKCJub25jZSIsYyksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChoKSxkKXJldHVybiBuZXcgUHJvbWlzZSgocCxmKT0+e2guYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIscCksaC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9PmYobmV3IEVycm9yKGBVbmFibGUgdG8gcHJlbG9hZCBDU1MgZm9yICR7bH1gKSkpfSl9KSl9ZnVuY3Rpb24gaShvKXtjb25zdCBhPW5ldyBFdmVudCgidml0ZTpwcmVsb2FkRXJyb3IiLHtjYW5jZWxhYmxlOiEwfSk7aWYoYS5wYXlsb2FkPW8sd2luZG93LmRpc3BhdGNoRXZlbnQoYSksIWEuZGVmYXVsdFByZXZlbnRlZCl0aHJvdyBvfXJldHVybiBzLnRoZW4obz0+e2Zvcihjb25zdCBhIG9mIG98fFtdKWEuc3RhdHVzPT09InJlamVjdGVkIiYmaShhLnJlYXNvbik7cmV0dXJuIGUoKS5jYXRjaChpKX0pfTthc3luYyBmdW5jdGlvbiBHaih7aGFzaDp0LHNpZ25hdHVyZTplfSl7Y29uc3Qgcj1mYSh0KT90OnFlKHQpLHtzZWNwMjU2azE6bn09YXdhaXQgVGUoYXN5bmMoKT0+e2NvbnN0e3NlY3AyNTZrMTpvfT1hd2FpdCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5CcSk7cmV0dXJue3NlY3AyNTZrMTpvfX0sdm9pZCAwKTtyZXR1cm5gMHgkeygoKT0+e2lmKHR5cGVvZiBlPT0ib2JqZWN0IiYmInIiaW4gZSYmInMiaW4gZSl7Y29uc3R7cjpsLHM6ZCx2OnUseVBhcml0eTpofT1lLHA9TnVtYmVyKGg/P3UpLGY9UDgocCk7cmV0dXJuIG5ldyBuLlNpZ25hdHVyZShzcihsKSxzcihkKSkuYWRkUmVjb3ZlcnlCaXQoZil9Y29uc3Qgbz1mYShlKT9lOnFlKGUpO2lmKEdyKG8pIT09NjUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpZ25hdHVyZSBsZW5ndGgiKTtjb25zdCBhPW1hKGAweCR7by5zbGljZSgxMzApfWApLGM9UDgoYSk7cmV0dXJuIG4uU2lnbmF0dXJlLmZyb21Db21wYWN0KG8uc3Vic3RyaW5nKDIsMTMwKSkuYWRkUmVjb3ZlcnlCaXQoYyl9KSgpLnJlY292ZXJQdWJsaWNLZXkoci5zdWJzdHJpbmcoMikpLnRvSGV4KCExKX1gfWZ1bmN0aW9uIFA4KHQpe2lmKHQ9PT0wfHx0PT09MSlyZXR1cm4gdDtpZih0PT09MjcpcmV0dXJuIDA7aWYodD09PTI4KXJldHVybiAxO3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCB5UGFyaXR5T3JWIHZhbHVlIil9YXN5bmMgZnVuY3Rpb24gS2ooe2hhc2g6dCxzaWduYXR1cmU6ZX0pe3JldHVybiBIaihhd2FpdCBHaih7aGFzaDp0LHNpZ25hdHVyZTplfSkpfWNsYXNzIE84IGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe29mZnNldDplfSl7c3VwZXIoYE9mZnNldCBcYCR7ZX1cYCBjYW5ub3QgYmUgbmVnYXRpdmUuYCx7bmFtZToiTmVnYXRpdmVPZmZzZXRFcnJvciJ9KX19Y2xhc3MgSFAgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7bGVuZ3RoOmUscG9zaXRpb246cn0pe3N1cGVyKGBQb3NpdGlvbiBcYCR7cn1cYCBpcyBvdXQgb2YgYm91bmRzIChcYDAgPCBwb3NpdGlvbiA8ICR7ZX1cYCkuYCx7bmFtZToiUG9zaXRpb25PdXRPZkJvdW5kc0Vycm9yIn0pfX1jbGFzcyBaaiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtjb3VudDplLGxpbWl0OnJ9KXtzdXBlcihgUmVjdXJzaXZlIHJlYWQgbGltaXQgb2YgXGAke3J9XGAgZXhjZWVkZWQgKHJlY3Vyc2l2ZSByZWFkIGNvdW50OiBcYCR7ZX1cYCkuYCx7bmFtZToiUmVjdXJzaXZlUmVhZExpbWl0RXhjZWVkZWRFcnJvciJ9KX19Y29uc3QgWWo9e2J5dGVzOm5ldyBVaW50OEFycmF5LGRhdGFWaWV3Om5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMCkpLHBvc2l0aW9uOjAscG9zaXRpb25SZWFkQ291bnQ6bmV3IE1hcCxyZWN1cnNpdmVSZWFkQ291bnQ6MCxyZWN1cnNpdmVSZWFkTGltaXQ6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGFzc2VydFJlYWRMaW1pdCgpe2lmKHRoaXMucmVjdXJzaXZlUmVhZENvdW50Pj10aGlzLnJlY3Vyc2l2ZVJlYWRMaW1pdCl0aHJvdyBuZXcgWmooe2NvdW50OnRoaXMucmVjdXJzaXZlUmVhZENvdW50KzEsbGltaXQ6dGhpcy5yZWN1cnNpdmVSZWFkTGltaXR9KX0sYXNzZXJ0UG9zaXRpb24odCl7aWYodDwwfHx0PnRoaXMuYnl0ZXMubGVuZ3RoLTEpdGhyb3cgbmV3IEhQKHtsZW5ndGg6dGhpcy5ieXRlcy5sZW5ndGgscG9zaXRpb246dH0pfSxkZWNyZW1lbnRQb3NpdGlvbih0KXtpZih0PDApdGhyb3cgbmV3IE84KHtvZmZzZXQ6dH0pO2NvbnN0IGU9dGhpcy5wb3NpdGlvbi10O3RoaXMuYXNzZXJ0UG9zaXRpb24oZSksdGhpcy5wb3NpdGlvbj1lfSxnZXRSZWFkQ291bnQodCl7cmV0dXJuIHRoaXMucG9zaXRpb25SZWFkQ291bnQuZ2V0KHR8fHRoaXMucG9zaXRpb24pfHwwfSxpbmNyZW1lbnRQb3NpdGlvbih0KXtpZih0PDApdGhyb3cgbmV3IE84KHtvZmZzZXQ6dH0pO2NvbnN0IGU9dGhpcy5wb3NpdGlvbit0O3RoaXMuYXNzZXJ0UG9zaXRpb24oZSksdGhpcy5wb3NpdGlvbj1lfSxpbnNwZWN0Qnl0ZSh0KXtjb25zdCBlPXQ/P3RoaXMucG9zaXRpb247cmV0dXJuIHRoaXMuYXNzZXJ0UG9zaXRpb24oZSksdGhpcy5ieXRlc1tlXX0saW5zcGVjdEJ5dGVzKHQsZSl7Y29uc3Qgcj1lPz90aGlzLnBvc2l0aW9uO3JldHVybiB0aGlzLmFzc2VydFBvc2l0aW9uKHIrdC0xKSx0aGlzLmJ5dGVzLnN1YmFycmF5KHIscit0KX0saW5zcGVjdFVpbnQ4KHQpe2NvbnN0IGU9dD8/dGhpcy5wb3NpdGlvbjtyZXR1cm4gdGhpcy5hc3NlcnRQb3NpdGlvbihlKSx0aGlzLmJ5dGVzW2VdfSxpbnNwZWN0VWludDE2KHQpe2NvbnN0IGU9dD8/dGhpcy5wb3NpdGlvbjtyZXR1cm4gdGhpcy5hc3NlcnRQb3NpdGlvbihlKzEpLHRoaXMuZGF0YVZpZXcuZ2V0VWludDE2KGUpfSxpbnNwZWN0VWludDI0KHQpe2NvbnN0IGU9dD8/dGhpcy5wb3NpdGlvbjtyZXR1cm4gdGhpcy5hc3NlcnRQb3NpdGlvbihlKzIpLCh0aGlzLmRhdGFWaWV3LmdldFVpbnQxNihlKTw8OCkrdGhpcy5kYXRhVmlldy5nZXRVaW50OChlKzIpfSxpbnNwZWN0VWludDMyKHQpe2NvbnN0IGU9dD8/dGhpcy5wb3NpdGlvbjtyZXR1cm4gdGhpcy5hc3NlcnRQb3NpdGlvbihlKzMpLHRoaXMuZGF0YVZpZXcuZ2V0VWludDMyKGUpfSxwdXNoQnl0ZSh0KXt0aGlzLmFzc2VydFBvc2l0aW9uKHRoaXMucG9zaXRpb24pLHRoaXMuYnl0ZXNbdGhpcy5wb3NpdGlvbl09dCx0aGlzLnBvc2l0aW9uKyt9LHB1c2hCeXRlcyh0KXt0aGlzLmFzc2VydFBvc2l0aW9uKHRoaXMucG9zaXRpb24rdC5sZW5ndGgtMSksdGhpcy5ieXRlcy5zZXQodCx0aGlzLnBvc2l0aW9uKSx0aGlzLnBvc2l0aW9uKz10Lmxlbmd0aH0scHVzaFVpbnQ4KHQpe3RoaXMuYXNzZXJ0UG9zaXRpb24odGhpcy5wb3NpdGlvbiksdGhpcy5ieXRlc1t0aGlzLnBvc2l0aW9uXT10LHRoaXMucG9zaXRpb24rK30scHVzaFVpbnQxNih0KXt0aGlzLmFzc2VydFBvc2l0aW9uKHRoaXMucG9zaXRpb24rMSksdGhpcy5kYXRhVmlldy5zZXRVaW50MTYodGhpcy5wb3NpdGlvbix0KSx0aGlzLnBvc2l0aW9uKz0yfSxwdXNoVWludDI0KHQpe3RoaXMuYXNzZXJ0UG9zaXRpb24odGhpcy5wb3NpdGlvbisyKSx0aGlzLmRhdGFWaWV3LnNldFVpbnQxNih0aGlzLnBvc2l0aW9uLHQ+PjgpLHRoaXMuZGF0YVZpZXcuc2V0VWludDgodGhpcy5wb3NpdGlvbisyLHQmMjU1KSx0aGlzLnBvc2l0aW9uKz0zfSxwdXNoVWludDMyKHQpe3RoaXMuYXNzZXJ0UG9zaXRpb24odGhpcy5wb3NpdGlvbiszKSx0aGlzLmRhdGFWaWV3LnNldFVpbnQzMih0aGlzLnBvc2l0aW9uLHQpLHRoaXMucG9zaXRpb24rPTR9LHJlYWRCeXRlKCl7dGhpcy5hc3NlcnRSZWFkTGltaXQoKSx0aGlzLl90b3VjaCgpO2NvbnN0IHQ9dGhpcy5pbnNwZWN0Qnl0ZSgpO3JldHVybiB0aGlzLnBvc2l0aW9uKyssdH0scmVhZEJ5dGVzKHQsZSl7dGhpcy5hc3NlcnRSZWFkTGltaXQoKSx0aGlzLl90b3VjaCgpO2NvbnN0IHI9dGhpcy5pbnNwZWN0Qnl0ZXModCk7cmV0dXJuIHRoaXMucG9zaXRpb24rPWU/P3Qscn0scmVhZFVpbnQ4KCl7dGhpcy5hc3NlcnRSZWFkTGltaXQoKSx0aGlzLl90b3VjaCgpO2NvbnN0IHQ9dGhpcy5pbnNwZWN0VWludDgoKTtyZXR1cm4gdGhpcy5wb3NpdGlvbis9MSx0fSxyZWFkVWludDE2KCl7dGhpcy5hc3NlcnRSZWFkTGltaXQoKSx0aGlzLl90b3VjaCgpO2NvbnN0IHQ9dGhpcy5pbnNwZWN0VWludDE2KCk7cmV0dXJuIHRoaXMucG9zaXRpb24rPTIsdH0scmVhZFVpbnQyNCgpe3RoaXMuYXNzZXJ0UmVhZExpbWl0KCksdGhpcy5fdG91Y2goKTtjb25zdCB0PXRoaXMuaW5zcGVjdFVpbnQyNCgpO3JldHVybiB0aGlzLnBvc2l0aW9uKz0zLHR9LHJlYWRVaW50MzIoKXt0aGlzLmFzc2VydFJlYWRMaW1pdCgpLHRoaXMuX3RvdWNoKCk7Y29uc3QgdD10aGlzLmluc3BlY3RVaW50MzIoKTtyZXR1cm4gdGhpcy5wb3NpdGlvbis9NCx0fSxnZXQgcmVtYWluaW5nKCl7cmV0dXJuIHRoaXMuYnl0ZXMubGVuZ3RoLXRoaXMucG9zaXRpb259LHNldFBvc2l0aW9uKHQpe2NvbnN0IGU9dGhpcy5wb3NpdGlvbjtyZXR1cm4gdGhpcy5hc3NlcnRQb3NpdGlvbih0KSx0aGlzLnBvc2l0aW9uPXQsKCk9PnRoaXMucG9zaXRpb249ZX0sX3RvdWNoKCl7aWYodGhpcy5yZWN1cnNpdmVSZWFkTGltaXQ9PT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5nZXRSZWFkQ291bnQoKTt0aGlzLnBvc2l0aW9uUmVhZENvdW50LnNldCh0aGlzLnBvc2l0aW9uLHQrMSksdD4wJiZ0aGlzLnJlY3Vyc2l2ZVJlYWRDb3VudCsrfX07ZnVuY3Rpb24gWjQodCx7cmVjdXJzaXZlUmVhZExpbWl0OmU9ODE5Mn09e30pe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShZaik7cmV0dXJuIHIuYnl0ZXM9dCxyLmRhdGFWaWV3PW5ldyBEYXRhVmlldyh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKSxyLnBvc2l0aW9uUmVhZENvdW50PW5ldyBNYXAsci5yZWN1cnNpdmVSZWFkTGltaXQ9ZSxyfWZ1bmN0aW9uIEVvKHQsZT0iaGV4Iil7Y29uc3Qgcj1xUCh0KSxuPVo0KG5ldyBVaW50OEFycmF5KHIubGVuZ3RoKSk7cmV0dXJuIHIuZW5jb2RlKG4pLGU9PT0iaGV4Ij9CbihuLmJ5dGVzKTpuLmJ5dGVzfWZ1bmN0aW9uIHFQKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP0pqKHQubWFwKGU9PnFQKGUpKSk6WGoodCl9ZnVuY3Rpb24gSmoodCl7Y29uc3QgZT10LnJlZHVjZSgocyxpKT0+cytpLmxlbmd0aCwwKSxyPVZQKGUpO3JldHVybntsZW5ndGg6ZTw9NTU/MStlOjErcitlLGVuY29kZShzKXtlPD01NT9zLnB1c2hCeXRlKDE5MitlKToocy5wdXNoQnl0ZSgyNDcrcikscj09PTE/cy5wdXNoVWludDgoZSk6cj09PTI/cy5wdXNoVWludDE2KGUpOnI9PT0zP3MucHVzaFVpbnQyNChlKTpzLnB1c2hVaW50MzIoZSkpO2Zvcihjb25zdHtlbmNvZGU6aX1vZiB0KWkocyl9fX1mdW5jdGlvbiBYaih0KXtjb25zdCBlPXR5cGVvZiB0PT0ic3RyaW5nIj9TaSh0KTp0LHI9VlAoZS5sZW5ndGgpO3JldHVybntsZW5ndGg6ZS5sZW5ndGg9PT0xJiZlWzBdPDEyOD8xOmUubGVuZ3RoPD01NT8xK2UubGVuZ3RoOjErcitlLmxlbmd0aCxlbmNvZGUocyl7ZS5sZW5ndGg9PT0xJiZlWzBdPDEyOD9zLnB1c2hCeXRlcyhlKTplLmxlbmd0aDw9NTU/KHMucHVzaEJ5dGUoMTI4K2UubGVuZ3RoKSxzLnB1c2hCeXRlcyhlKSk6KHMucHVzaEJ5dGUoMTgzK3IpLHI9PT0xP3MucHVzaFVpbnQ4KGUubGVuZ3RoKTpyPT09Mj9zLnB1c2hVaW50MTYoZS5sZW5ndGgpOnI9PT0zP3MucHVzaFVpbnQyNChlLmxlbmd0aCk6cy5wdXNoVWludDMyKGUubGVuZ3RoKSxzLnB1c2hCeXRlcyhlKSl9fX1mdW5jdGlvbiBWUCh0KXtpZih0PDIqKjgpcmV0dXJuIDE7aWYodDwyKioxNilyZXR1cm4gMjtpZih0PDIqKjI0KXJldHVybiAzO2lmKHQ8MioqMzIpcmV0dXJuIDQ7dGhyb3cgbmV3IEVlKCJMZW5ndGggaXMgdG9vIGxhcmdlLiIpfWZ1bmN0aW9uIFFqKHQpe2NvbnN0e2NoYWluSWQ6ZSxub25jZTpyLHRvOm59PXQscz10LmNvbnRyYWN0QWRkcmVzcz8/dC5hZGRyZXNzLGk9cW0oaXMoWyIweDA1IixFbyhbZT91dChlKToiMHgiLHMscj91dChyKToiMHgiXSldKSk7cmV0dXJuIG49PT0iYnl0ZXMiP1NpKGkpOml9YXN5bmMgZnVuY3Rpb24gR1AodCl7Y29uc3R7YXV0aG9yaXphdGlvbjplLHNpZ25hdHVyZTpyfT10O3JldHVybiBLaih7aGFzaDpRaihlKSxzaWduYXR1cmU6cj8/ZX0pfWNsYXNzIHlDIGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe2Jsb2NrTnVtYmVyOmUsY2hhaW46cixjb250cmFjdDpufSl7c3VwZXIoYENoYWluICIke3IubmFtZX0iIGRvZXMgbm90IHN1cHBvcnQgY29udHJhY3QgIiR7bi5uYW1lfSIuYCx7bWV0YU1lc3NhZ2VzOlsiVGhpcyBjb3VsZCBiZSBkdWUgdG8gYW55IG9mIHRoZSBmb2xsb3dpbmc6IiwuLi5lJiZuLmJsb2NrQ3JlYXRlZCYmbi5ibG9ja0NyZWF0ZWQ+ZT9bYC0gVGhlIGNvbnRyYWN0ICIke24ubmFtZX0iIHdhcyBub3QgZGVwbG95ZWQgdW50aWwgYmxvY2sgJHtuLmJsb2NrQ3JlYXRlZH0gKGN1cnJlbnQgYmxvY2sgJHtlfSkuYF06W2AtIFRoZSBjaGFpbiBkb2VzIG5vdCBoYXZlIHRoZSBjb250cmFjdCAiJHtuLm5hbWV9IiBjb25maWd1cmVkLmBdXSxuYW1lOiJDaGFpbkRvZXNOb3RTdXBwb3J0Q29udHJhY3QifSl9fWNsYXNzIGV6IGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe2NoYWluOmUsY3VycmVudENoYWluSWQ6cn0pe3N1cGVyKGBUaGUgY3VycmVudCBjaGFpbiBvZiB0aGUgd2FsbGV0IChpZDogJHtyfSkgZG9lcyBub3QgbWF0Y2ggdGhlIHRhcmdldCBjaGFpbiBmb3IgdGhlIHRyYW5zYWN0aW9uIChpZDogJHtlLmlkfSDigJMgJHtlLm5hbWV9KS5gLHttZXRhTWVzc2FnZXM6W2BDdXJyZW50IENoYWluIElEOiAgJHtyfWAsYEV4cGVjdGVkIENoYWluIElEOiAke2UuaWR9IOKAkyAke2UubmFtZX1gXSxuYW1lOiJDaGFpbk1pc21hdGNoRXJyb3IifSl9fWNsYXNzIHR6IGV4dGVuZHMgRWV7Y29uc3RydWN0b3IoKXtzdXBlcihbIk5vIGNoYWluIHdhcyBwcm92aWRlZCB0byB0aGUgcmVxdWVzdC4iLCJQbGVhc2UgcHJvdmlkZSBhIGNoYWluIHdpdGggdGhlIGBjaGFpbmAgYXJndW1lbnQgb24gdGhlIEFjdGlvbiwgb3IgYnkgc3VwcGx5aW5nIGEgYGNoYWluYCB0byBXYWxsZXRDbGllbnQuIl0uam9pbihgDQpgKSx7bmFtZToiQ2hhaW5Ob3RGb3VuZEVycm9yIn0pfX1jbGFzcyBLUCBleHRlbmRzIEVle2NvbnN0cnVjdG9yKCl7c3VwZXIoIk5vIGNoYWluIHdhcyBwcm92aWRlZCB0byB0aGUgQ2xpZW50LiIse25hbWU6IkNsaWVudENoYWluTm90Q29uZmlndXJlZEVycm9yIn0pfX1jbGFzcyBucCBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtjaGFpbklkOmV9KXtzdXBlcih0eXBlb2YgZT09Im51bWJlciI/YENoYWluIElEICIke2V9IiBpcyBpbnZhbGlkLmA6IkNoYWluIElEIGlzIGludmFsaWQuIix7bmFtZToiSW52YWxpZENoYWluSWRFcnJvciJ9KX19ZnVuY3Rpb24gcnooe2NoYWluOnQsY3VycmVudENoYWluSWQ6ZX0pe2lmKCF0KXRocm93IG5ldyB0ejtpZihlIT09dC5pZCl0aHJvdyBuZXcgZXooe2NoYWluOnQsY3VycmVudENoYWluSWQ6ZX0pfWNvbnN0IG56PXtnd2VpOjksd2VpOjE4fSxpej17ZXRoZXI6LTksd2VpOjl9LHN6PXtldGhlcjotMTgsZ3dlaTotOX07ZnVuY3Rpb24gaXAodCxlKXtsZXQgcj10LnRvU3RyaW5nKCk7Y29uc3Qgbj1yLnN0YXJ0c1dpdGgoIi0iKTtuJiYocj1yLnNsaWNlKDEpKSxyPXIucGFkU3RhcnQoZSwiMCIpO2xldFtzLGldPVtyLnNsaWNlKDAsci5sZW5ndGgtZSksci5zbGljZShyLmxlbmd0aC1lKV07cmV0dXJuIGk9aS5yZXBsYWNlKC8oMCspJC8sIiIpLGAke24/Ii0iOiIifSR7c3x8IjAifSR7aT9gLiR7aX1gOiIifWB9ZnVuY3Rpb24gc2kodCxlPSJ3ZWkiKXtyZXR1cm4gaXAodCxpeltlXSl9Y2xhc3MgWWwgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7Y2F1c2U6ZSxtZXNzYWdlOnJ9PXt9KXtjb25zdCBuPXI/LnJlcGxhY2UoImV4ZWN1dGlvbiByZXZlcnRlZDogIiwiIik/LnJlcGxhY2UoImV4ZWN1dGlvbiByZXZlcnRlZCIsIiIpO3N1cGVyKGBFeGVjdXRpb24gcmV2ZXJ0ZWQgJHtuP2B3aXRoIHJlYXNvbjogJHtufWA6ImZvciBhbiB1bmtub3duIHJlYXNvbiJ9LmAse2NhdXNlOmUsbmFtZToiRXhlY3V0aW9uUmV2ZXJ0ZWRFcnJvciJ9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KFlsLCJjb2RlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6M30pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShZbCwibm9kZU1lc3NhZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTovZXhlY3V0aW9uIHJldmVydGVkL30pO2NsYXNzIHljIGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe2NhdXNlOmUsbWF4RmVlUGVyR2FzOnJ9PXt9KXtzdXBlcihgVGhlIGZlZSBjYXAgKFxgbWF4RmVlUGVyR2FzXGAke3I/YCA9ICR7c2kocil9IGd3ZWlgOiIifSkgY2Fubm90IGJlIGhpZ2hlciB0aGFuIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgKDJeMjU2LTEpLmAse2NhdXNlOmUsbmFtZToiRmVlQ2FwVG9vSGlnaEVycm9yIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoeWMsIm5vZGVNZXNzYWdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6L21heCBmZWUgcGVyIGdhcyBoaWdoZXIgdGhhbiAyXF4yNTYtMXxmZWUgY2FwIGhpZ2hlciB0aGFuIDJcXjI1Ni0xL30pO2NsYXNzIHZDIGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe2NhdXNlOmUsbWF4RmVlUGVyR2FzOnJ9PXt9KXtzdXBlcihgVGhlIGZlZSBjYXAgKFxgbWF4RmVlUGVyR2FzXGAke3I/YCA9ICR7c2kocil9YDoiIn0gZ3dlaSkgY2Fubm90IGJlIGxvd2VyIHRoYW4gdGhlIGJsb2NrIGJhc2UgZmVlLmAse2NhdXNlOmUsbmFtZToiRmVlQ2FwVG9vTG93RXJyb3IifSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2Qywibm9kZU1lc3NhZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTovbWF4IGZlZSBwZXIgZ2FzIGxlc3MgdGhhbiBibG9jayBiYXNlIGZlZXxmZWUgY2FwIGxlc3MgdGhhbiBibG9jayBiYXNlIGZlZXx0cmFuc2FjdGlvbiBpcyBvdXRkYXRlZC99KTtjbGFzcyBFQyBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtjYXVzZTplLG5vbmNlOnJ9PXt9KXtzdXBlcihgTm9uY2UgcHJvdmlkZWQgZm9yIHRoZSB0cmFuc2FjdGlvbiAke3I/YCgke3J9KSBgOiIifWlzIGhpZ2hlciB0aGFuIHRoZSBuZXh0IG9uZSBleHBlY3RlZC5gLHtjYXVzZTplLG5hbWU6Ik5vbmNlVG9vSGlnaEVycm9yIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoRUMsIm5vZGVNZXNzYWdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6L25vbmNlIHRvbyBoaWdoL30pO2NsYXNzIENDIGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe2NhdXNlOmUsbm9uY2U6cn09e30pe3N1cGVyKFtgTm9uY2UgcHJvdmlkZWQgZm9yIHRoZSB0cmFuc2FjdGlvbiAke3I/YCgke3J9KSBgOiIifWlzIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQgbm9uY2Ugb2YgdGhlIGFjY291bnQuYCwiVHJ5IGluY3JlYXNpbmcgdGhlIG5vbmNlIG9yIGZpbmQgdGhlIGxhdGVzdCBub25jZSB3aXRoIGBnZXRUcmFuc2FjdGlvbkNvdW50YC4iXS5qb2luKGANCmApLHtjYXVzZTplLG5hbWU6Ik5vbmNlVG9vTG93RXJyb3IifSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShDQywibm9kZU1lc3NhZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTovbm9uY2UgdG9vIGxvd3x0cmFuc2FjdGlvbiBhbHJlYWR5IGltcG9ydGVkfGFscmVhZHkga25vd24vfSk7Y2xhc3MgeEMgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7Y2F1c2U6ZSxub25jZTpyfT17fSl7c3VwZXIoYE5vbmNlIHByb3ZpZGVkIGZvciB0aGUgdHJhbnNhY3Rpb24gJHtyP2AoJHtyfSkgYDoiIn1leGNlZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgbm9uY2UuYCx7Y2F1c2U6ZSxuYW1lOiJOb25jZU1heFZhbHVlRXJyb3IifSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh4Qywibm9kZU1lc3NhZ2UiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTovbm9uY2UgaGFzIG1heCB2YWx1ZS99KTtjbGFzcyBfQyBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtjYXVzZTplfT17fSl7c3VwZXIoWyJUaGUgdG90YWwgY29zdCAoZ2FzICogZ2FzIGZlZSArIHZhbHVlKSBvZiBleGVjdXRpbmcgdGhpcyB0cmFuc2FjdGlvbiBleGNlZWRzIHRoZSBiYWxhbmNlIG9mIHRoZSBhY2NvdW50LiJdLmpvaW4oYA0KYCkse2NhdXNlOmUsbWV0YU1lc3NhZ2VzOlsiVGhpcyBlcnJvciBjb3VsZCBhcmlzZSB3aGVuIHRoZSBhY2NvdW50IGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzIHRvOiIsIiAtIHBheSBmb3IgdGhlIHRvdGFsIGdhcyBmZWUsIiwiIC0gcGF5IGZvciB0aGUgdmFsdWUgdG8gc2VuZC4iLCIgIiwiVGhlIGNvc3Qgb2YgdGhlIHRyYW5zYWN0aW9uIGlzIGNhbGN1bGF0ZWQgYXMgYGdhcyAqIGdhcyBmZWUgKyB2YWx1ZWAsIHdoZXJlOiIsIiAtIGBnYXNgIGlzIHRoZSBhbW91bnQgb2YgZ2FzIG5lZWRlZCBmb3IgdHJhbnNhY3Rpb24gdG8gZXhlY3V0ZSwiLCIgLSBgZ2FzIGZlZWAgaXMgdGhlIGdhcyBmZWUsIiwiIC0gYHZhbHVlYCBpcyB0aGUgYW1vdW50IG9mIGV0aGVyIHRvIHNlbmQgdG8gdGhlIHJlY2lwaWVudC4iXSxuYW1lOiJJbnN1ZmZpY2llbnRGdW5kc0Vycm9yIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoX0MsIm5vZGVNZXNzYWdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6L2luc3VmZmljaWVudCBmdW5kc3xleGNlZWRzIHRyYW5zYWN0aW9uIHNlbmRlciBhY2NvdW50IGJhbGFuY2UvfSk7Y2xhc3Mga0MgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7Y2F1c2U6ZSxnYXM6cn09e30pe3N1cGVyKGBUaGUgYW1vdW50IG9mIGdhcyAke3I/YCgke3J9KSBgOiIifXByb3ZpZGVkIGZvciB0aGUgdHJhbnNhY3Rpb24gZXhjZWVkcyB0aGUgbGltaXQgYWxsb3dlZCBmb3IgdGhlIGJsb2NrLmAse2NhdXNlOmUsbmFtZToiSW50cmluc2ljR2FzVG9vSGlnaEVycm9yIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoa0MsIm5vZGVNZXNzYWdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6L2ludHJpbnNpYyBnYXMgdG9vIGhpZ2h8Z2FzIGxpbWl0IHJlYWNoZWQvfSk7Y2xhc3MgU0MgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7Y2F1c2U6ZSxnYXM6cn09e30pe3N1cGVyKGBUaGUgYW1vdW50IG9mIGdhcyAke3I/YCgke3J9KSBgOiIifXByb3ZpZGVkIGZvciB0aGUgdHJhbnNhY3Rpb24gaXMgdG9vIGxvdy5gLHtjYXVzZTplLG5hbWU6IkludHJpbnNpY0dhc1Rvb0xvd0Vycm9yIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoU0MsIm5vZGVNZXNzYWdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6L2ludHJpbnNpYyBnYXMgdG9vIGxvdy99KTtjbGFzcyBBQyBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtjYXVzZTplfSl7c3VwZXIoIlRoZSB0cmFuc2FjdGlvbiB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgY2hhaW4uIix7Y2F1c2U6ZSxuYW1lOiJUcmFuc2FjdGlvblR5cGVOb3RTdXBwb3J0ZWRFcnJvciJ9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KEFDLCJub2RlTWVzc2FnZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOi90cmFuc2FjdGlvbiB0eXBlIG5vdCB2YWxpZC99KTtjbGFzcyBtaCBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtjYXVzZTplLG1heFByaW9yaXR5RmVlUGVyR2FzOnIsbWF4RmVlUGVyR2FzOm59PXt9KXtzdXBlcihbYFRoZSBwcm92aWRlZCB0aXAgKFxgbWF4UHJpb3JpdHlGZWVQZXJHYXNcYCR7cj9gID0gJHtzaShyKX0gZ3dlaWA6IiJ9KSBjYW5ub3QgYmUgaGlnaGVyIHRoYW4gdGhlIGZlZSBjYXAgKFxgbWF4RmVlUGVyR2FzXGAke24/YCA9ICR7c2kobil9IGd3ZWlgOiIifSkuYF0uam9pbihgDQpgKSx7Y2F1c2U6ZSxuYW1lOiJUaXBBYm92ZUZlZUNhcEVycm9yIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkobWgsIm5vZGVNZXNzYWdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6L21heCBwcmlvcml0eSBmZWUgcGVyIGdhcyBoaWdoZXIgdGhhbiBtYXggZmVlIHBlciBnYXN8dGlwIGhpZ2hlciB0aGFuIGZlZSBjYXAvfSk7Y2xhc3MgeXkgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7Y2F1c2U6ZX0pe3N1cGVyKGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBleGVjdXRpbmc6ICR7ZT8uc2hvcnRNZXNzYWdlfWAse2NhdXNlOmUsbmFtZToiVW5rbm93bk5vZGVFcnJvciJ9KX19ZnVuY3Rpb24gWTQodCxlPSJ3ZWkiKXtyZXR1cm4gaXAodCxueltlXSl9ZnVuY3Rpb24gR20odCl7Y29uc3QgZT1PYmplY3QuZW50cmllcyh0KS5tYXAoKFtuLHNdKT0+cz09PXZvaWQgMHx8cz09PSExP251bGw6W24sc10pLmZpbHRlcihCb29sZWFuKSxyPWUucmVkdWNlKChuLFtzXSk9Pk1hdGgubWF4KG4scy5sZW5ndGgpLDApO3JldHVybiBlLm1hcCgoW24sc10pPT5gICAke2Ake259OmAucGFkRW5kKHIrMSl9ICAke3N9YCkuam9pbihgDQpgKX1jbGFzcyBveiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKCl7c3VwZXIoWyJDYW5ub3Qgc3BlY2lmeSBib3RoIGEgYGdhc1ByaWNlYCBhbmQgYSBgbWF4RmVlUGVyR2FzYC9gbWF4UHJpb3JpdHlGZWVQZXJHYXNgLiIsIlVzZSBgbWF4RmVlUGVyR2FzYC9gbWF4UHJpb3JpdHlGZWVQZXJHYXNgIGZvciBFSVAtMTU1OSBjb21wYXRpYmxlIG5ldHdvcmtzLCBhbmQgYGdhc1ByaWNlYCBmb3Igb3RoZXJzLiJdLmpvaW4oYA0KYCkse25hbWU6IkZlZUNvbmZsaWN0RXJyb3IifSl9fWNsYXNzIGF6IGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe3Y6ZX0pe3N1cGVyKGBJbnZhbGlkIFxgdlxgIHZhbHVlICIke2V9Ii4gRXhwZWN0ZWQgMjcgb3IgMjguYCx7bmFtZToiSW52YWxpZExlZ2FjeVZFcnJvciJ9KX19Y2xhc3MgY3ogZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7dHJhbnNhY3Rpb246ZX0pe3N1cGVyKCJDYW5ub3QgaW5mZXIgYSB0cmFuc2FjdGlvbiB0eXBlIGZyb20gcHJvdmlkZWQgdHJhbnNhY3Rpb24uIix7bWV0YU1lc3NhZ2VzOlsiUHJvdmlkZWQgVHJhbnNhY3Rpb246IiwieyIsR20oZSksIn0iLCIiLCJUbyBpbmZlciB0aGUgdHlwZSwgZWl0aGVyIHByb3ZpZGU6IiwiLSBhIGB0eXBlYCB0byB0aGUgVHJhbnNhY3Rpb24sIG9yIiwiLSBhbiBFSVAtMTU1OSBUcmFuc2FjdGlvbiB3aXRoIGBtYXhGZWVQZXJHYXNgLCBvciIsIi0gYW4gRUlQLTI5MzAgVHJhbnNhY3Rpb24gd2l0aCBgZ2FzUHJpY2VgICYgYGFjY2Vzc0xpc3RgLCBvciIsIi0gYW4gRUlQLTQ4NDQgVHJhbnNhY3Rpb24gd2l0aCBgYmxvYnNgLCBgYmxvYlZlcnNpb25lZEhhc2hlc2AsIGBzaWRlY2Fyc2AsIG9yIiwiLSBhbiBFSVAtNzcwMiBUcmFuc2FjdGlvbiB3aXRoIGBhdXRob3JpemF0aW9uTGlzdGAsIG9yIiwiLSBhIExlZ2FjeSBUcmFuc2FjdGlvbiB3aXRoIGBnYXNQcmljZWAiXSxuYW1lOiJJbnZhbGlkU2VyaWFsaXphYmxlVHJhbnNhY3Rpb25FcnJvciJ9KX19Y2xhc3MgbHogZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7c3RvcmFnZUtleTplfSl7c3VwZXIoYFNpemUgZm9yIHN0b3JhZ2Uga2V5ICIke2V9IiBpcyBpbnZhbGlkLiBFeHBlY3RlZCAzMiBieXRlcy4gR290ICR7TWF0aC5mbG9vcigoZS5sZW5ndGgtMikvMil9IGJ5dGVzLmAse25hbWU6IkludmFsaWRTdG9yYWdlS2V5U2l6ZUVycm9yIn0pfX1jbGFzcyB1eiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKGUse2FjY291bnQ6cixkb2NzUGF0aDpuLGNoYWluOnMsZGF0YTppLGdhczpvLGdhc1ByaWNlOmEsbWF4RmVlUGVyR2FzOmMsbWF4UHJpb3JpdHlGZWVQZXJHYXM6bCxub25jZTpkLHRvOnUsdmFsdWU6aH0pe2NvbnN0IHA9R20oe2NoYWluOnMmJmAke3M/Lm5hbWV9IChpZDogJHtzPy5pZH0pYCxmcm9tOnI/LmFkZHJlc3MsdG86dSx2YWx1ZTp0eXBlb2YgaDwidSImJmAke1k0KGgpfSAke3M/Lm5hdGl2ZUN1cnJlbmN5Py5zeW1ib2x8fCJFVEgifWAsZGF0YTppLGdhczpvLGdhc1ByaWNlOnR5cGVvZiBhPCJ1IiYmYCR7c2koYSl9IGd3ZWlgLG1heEZlZVBlckdhczp0eXBlb2YgYzwidSImJmAke3NpKGMpfSBnd2VpYCxtYXhQcmlvcml0eUZlZVBlckdhczp0eXBlb2YgbDwidSImJmAke3NpKGwpfSBnd2VpYCxub25jZTpkfSk7c3VwZXIoZS5zaG9ydE1lc3NhZ2Use2NhdXNlOmUsZG9jc1BhdGg6bixtZXRhTWVzc2FnZXM6Wy4uLmUubWV0YU1lc3NhZ2VzP1suLi5lLm1ldGFNZXNzYWdlcywiICJdOltdLCJSZXF1ZXN0IEFyZ3VtZW50czoiLHBdLmZpbHRlcihCb29sZWFuKSxuYW1lOiJUcmFuc2FjdGlvbkV4ZWN1dGlvbkVycm9yIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjYXVzZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuY2F1c2U9ZX19Y2xhc3MgWlAgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7YmxvY2tIYXNoOmUsYmxvY2tOdW1iZXI6cixibG9ja1RhZzpuLGhhc2g6cyxpbmRleDppfSl7bGV0IG89IlRyYW5zYWN0aW9uIjtuJiZpIT09dm9pZCAwJiYobz1gVHJhbnNhY3Rpb24gYXQgYmxvY2sgdGltZSAiJHtufSIgYXQgaW5kZXggIiR7aX0iYCksZSYmaSE9PXZvaWQgMCYmKG89YFRyYW5zYWN0aW9uIGF0IGJsb2NrIGhhc2ggIiR7ZX0iIGF0IGluZGV4ICIke2l9ImApLHImJmkhPT12b2lkIDAmJihvPWBUcmFuc2FjdGlvbiBhdCBibG9jayBudW1iZXIgIiR7cn0iIGF0IGluZGV4ICIke2l9ImApLHMmJihvPWBUcmFuc2FjdGlvbiB3aXRoIGhhc2ggIiR7c30iYCksc3VwZXIoYCR7b30gY291bGQgbm90IGJlIGZvdW5kLmAse25hbWU6IlRyYW5zYWN0aW9uTm90Rm91bmRFcnJvciJ9KX19Y2xhc3MgWVAgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7aGFzaDplfSl7c3VwZXIoYFRyYW5zYWN0aW9uIHJlY2VpcHQgd2l0aCBoYXNoICIke2V9IiBjb3VsZCBub3QgYmUgZm91bmQuIFRoZSBUcmFuc2FjdGlvbiBtYXkgbm90IGJlIHByb2Nlc3NlZCBvbiBhIGJsb2NrIHlldC5gLHtuYW1lOiJUcmFuc2FjdGlvblJlY2VpcHROb3RGb3VuZEVycm9yIn0pfX1jbGFzcyBkeiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtoYXNoOmV9KXtzdXBlcihgVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHRyYW5zYWN0aW9uIHdpdGggaGFzaCAiJHtlfSIgdG8gYmUgY29uZmlybWVkLmAse25hbWU6IldhaXRGb3JUcmFuc2FjdGlvblJlY2VpcHRUaW1lb3V0RXJyb3IifSl9fWNvbnN0IG9pPSh0LGUscik9PkpTT04uc3RyaW5naWZ5KHQsKG4scyk9PnR5cGVvZiBzPT0iYmlnaW50Ij9zLnRvU3RyaW5nKCk6cyxyKSxoej10PT50LEttPXQ9PnQ7Y2xhc3MgaXUgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7Ym9keTplLGNhdXNlOnIsZGV0YWlsczpuLGhlYWRlcnM6cyxzdGF0dXM6aSx1cmw6b30pe3N1cGVyKCJIVFRQIHJlcXVlc3QgZmFpbGVkLiIse2NhdXNlOnIsZGV0YWlsczpuLG1ldGFNZXNzYWdlczpbaSYmYFN0YXR1czogJHtpfWAsYFVSTDogJHtLbShvKX1gLGUmJmBSZXF1ZXN0IGJvZHk6ICR7b2koZSl9YF0uZmlsdGVyKEJvb2xlYW4pLG5hbWU6Ikh0dHBSZXF1ZXN0RXJyb3IifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImJvZHkiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaGVhZGVycyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJzdGF0dXMiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidXJsIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5ib2R5PWUsdGhpcy5oZWFkZXJzPXMsdGhpcy5zdGF0dXM9aSx0aGlzLnVybD1vfX1jbGFzcyBKNCBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtib2R5OmUsZXJyb3I6cix1cmw6bn0pe3N1cGVyKCJSUEMgUmVxdWVzdCBmYWlsZWQuIix7Y2F1c2U6cixkZXRhaWxzOnIubWVzc2FnZSxtZXRhTWVzc2FnZXM6W2BVUkw6ICR7S20obil9YCxgUmVxdWVzdCBib2R5OiAke29pKGUpfWBdLG5hbWU6IlJwY1JlcXVlc3RFcnJvciJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiY29kZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkYXRhIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5jb2RlPXIuY29kZSx0aGlzLmRhdGE9ci5kYXRhfX1jbGFzcyAkOCBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtib2R5OmUsdXJsOnJ9KXtzdXBlcigiVGhlIHJlcXVlc3QgdG9vayB0b28gbG9uZyB0byByZXNwb25kLiIse2RldGFpbHM6IlRoZSByZXF1ZXN0IHRpbWVkIG91dC4iLG1ldGFNZXNzYWdlczpbYFVSTDogJHtLbShyKX1gLGBSZXF1ZXN0IGJvZHk6ICR7b2koZSl9YF0sbmFtZToiVGltZW91dEVycm9yIn0pfX1jb25zdCBwej0tMTtjbGFzcyBoaSBleHRlbmRzIEVle2NvbnN0cnVjdG9yKGUse2NvZGU6cixkb2NzUGF0aDpuLG1ldGFNZXNzYWdlczpzLG5hbWU6aSxzaG9ydE1lc3NhZ2U6b30pe3N1cGVyKG8se2NhdXNlOmUsZG9jc1BhdGg6bixtZXRhTWVzc2FnZXM6c3x8ZT8ubWV0YU1lc3NhZ2VzLG5hbWU6aXx8IlJwY0Vycm9yIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjb2RlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5uYW1lPWl8fGUubmFtZSx0aGlzLmNvZGU9ZSBpbnN0YW5jZW9mIEo0P2UuY29kZTpyPz9wen19Y2xhc3MgJGkgZXh0ZW5kcyBoaXtjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImRhdGEiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSx0aGlzLmRhdGE9ci5kYXRhfX1jbGFzcyBtMCBleHRlbmRzIGhpe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUse2NvZGU6bTAuY29kZSxuYW1lOiJQYXJzZVJwY0Vycm9yIixzaG9ydE1lc3NhZ2U6IkludmFsaWQgSlNPTiB3YXMgcmVjZWl2ZWQgYnkgdGhlIHNlcnZlci4gQW4gZXJyb3Igb2NjdXJyZWQgb24gdGhlIHNlcnZlciB3aGlsZSBwYXJzaW5nIHRoZSBKU09OIHRleHQuIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkobTAsImNvZGUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTotMzI3MDB9KTtjbGFzcyBnMCBleHRlbmRzIGhpe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUse2NvZGU6ZzAuY29kZSxuYW1lOiJJbnZhbGlkUmVxdWVzdFJwY0Vycm9yIixzaG9ydE1lc3NhZ2U6IkpTT04gaXMgbm90IGEgdmFsaWQgcmVxdWVzdCBvYmplY3QuIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZzAsImNvZGUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTotMzI2MDB9KTtjbGFzcyB3MCBleHRlbmRzIGhpe2NvbnN0cnVjdG9yKGUse21ldGhvZDpyfT17fSl7c3VwZXIoZSx7Y29kZTp3MC5jb2RlLG5hbWU6Ik1ldGhvZE5vdEZvdW5kUnBjRXJyb3IiLHNob3J0TWVzc2FnZTpgVGhlIG1ldGhvZCR7cj9gICIke3J9ImA6IiJ9IGRvZXMgbm90IGV4aXN0IC8gaXMgbm90IGF2YWlsYWJsZS5gfSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3MCwiY29kZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOi0zMjYwMX0pO2NsYXNzIGIwIGV4dGVuZHMgaGl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSx7Y29kZTpiMC5jb2RlLG5hbWU6IkludmFsaWRQYXJhbXNScGNFcnJvciIsc2hvcnRNZXNzYWdlOlsiSW52YWxpZCBwYXJhbWV0ZXJzIHdlcmUgcHJvdmlkZWQgdG8gdGhlIFJQQyBtZXRob2QuIiwiRG91YmxlIGNoZWNrIHlvdSBoYXZlIHByb3ZpZGVkIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMuIl0uam9pbihgDQpgKX0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoYjAsImNvZGUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTotMzI2MDJ9KTtjbGFzcyBmdSBleHRlbmRzIGhpe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUse2NvZGU6ZnUuY29kZSxuYW1lOiJJbnRlcm5hbFJwY0Vycm9yIixzaG9ydE1lc3NhZ2U6IkFuIGludGVybmFsIGVycm9yIHdhcyByZWNlaXZlZC4ifSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdSwiY29kZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOi0zMjYwM30pO2NsYXNzIHkwIGV4dGVuZHMgaGl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSx7Y29kZTp5MC5jb2RlLG5hbWU6IkludmFsaWRJbnB1dFJwY0Vycm9yIixzaG9ydE1lc3NhZ2U6WyJNaXNzaW5nIG9yIGludmFsaWQgcGFyYW1ldGVycy4iLCJEb3VibGUgY2hlY2sgeW91IGhhdmUgcHJvdmlkZWQgdGhlIGNvcnJlY3QgcGFyYW1ldGVycy4iXS5qb2luKGANCmApfSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh5MCwiY29kZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOi0zMmUzfSk7Y2xhc3MgdjAgZXh0ZW5kcyBoaXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLHtjb2RlOnYwLmNvZGUsbmFtZToiUmVzb3VyY2VOb3RGb3VuZFJwY0Vycm9yIixzaG9ydE1lc3NhZ2U6IlJlcXVlc3RlZCByZXNvdXJjZSBub3QgZm91bmQuIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJuYW1lIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6IlJlc291cmNlTm90Rm91bmRScGNFcnJvciJ9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHYwLCJjb2RlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6LTMyMDAxfSk7Y2xhc3MgcGMgZXh0ZW5kcyBoaXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLHtjb2RlOnBjLmNvZGUsbmFtZToiUmVzb3VyY2VVbmF2YWlsYWJsZVJwY0Vycm9yIixzaG9ydE1lc3NhZ2U6IlJlcXVlc3RlZCByZXNvdXJjZSBub3QgYXZhaWxhYmxlLiJ9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHBjLCJjb2RlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6LTMyMDAyfSk7Y2xhc3MgZ2ggZXh0ZW5kcyBoaXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLHtjb2RlOmdoLmNvZGUsbmFtZToiVHJhbnNhY3Rpb25SZWplY3RlZFJwY0Vycm9yIixzaG9ydE1lc3NhZ2U6IlRyYW5zYWN0aW9uIGNyZWF0aW9uIGZhaWxlZC4ifSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShnaCwiY29kZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOi0zMjAwM30pO2NsYXNzIEpsIGV4dGVuZHMgaGl7Y29uc3RydWN0b3IoZSx7bWV0aG9kOnJ9PXt9KXtzdXBlcihlLHtjb2RlOkpsLmNvZGUsbmFtZToiTWV0aG9kTm90U3VwcG9ydGVkUnBjRXJyb3IiLHNob3J0TWVzc2FnZTpgTWV0aG9kJHtyP2AgIiR7cn0iYDoiIn0gaXMgbm90IHN1cHBvcnRlZC5gfSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShKbCwiY29kZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOi0zMjAwNH0pO2NsYXNzIHdoIGV4dGVuZHMgaGl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSx7Y29kZTp3aC5jb2RlLG5hbWU6IkxpbWl0RXhjZWVkZWRScGNFcnJvciIsc2hvcnRNZXNzYWdlOiJSZXF1ZXN0IGV4Y2VlZHMgZGVmaW5lZCBsaW1pdC4ifSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aCwiY29kZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOi0zMjAwNX0pO2NsYXNzIEUwIGV4dGVuZHMgaGl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSx7Y29kZTpFMC5jb2RlLG5hbWU6Ikpzb25ScGNWZXJzaW9uVW5zdXBwb3J0ZWRFcnJvciIsc2hvcnRNZXNzYWdlOiJWZXJzaW9uIG9mIEpTT04tUlBDIHByb3RvY29sIGlzIG5vdCBzdXBwb3J0ZWQuIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoRTAsImNvZGUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTotMzIwMDZ9KTtjbGFzcyB1ciBleHRlbmRzICRpe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUse2NvZGU6dXIuY29kZSxuYW1lOiJVc2VyUmVqZWN0ZWRSZXF1ZXN0RXJyb3IiLHNob3J0TWVzc2FnZToiVXNlciByZWplY3RlZCB0aGUgcmVxdWVzdC4ifSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1ciwiY29kZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOjQwMDF9KTtjbGFzcyBDMCBleHRlbmRzICRpe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUse2NvZGU6QzAuY29kZSxuYW1lOiJVbmF1dGhvcml6ZWRQcm92aWRlckVycm9yIixzaG9ydE1lc3NhZ2U6IlRoZSByZXF1ZXN0ZWQgbWV0aG9kIGFuZC9vciBhY2NvdW50IGhhcyBub3QgYmVlbiBhdXRob3JpemVkIGJ5IHRoZSB1c2VyLiJ9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KEMwLCJjb2RlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6NDEwMH0pO2NsYXNzIHgwIGV4dGVuZHMgJGl7Y29uc3RydWN0b3IoZSx7bWV0aG9kOnJ9PXt9KXtzdXBlcihlLHtjb2RlOngwLmNvZGUsbmFtZToiVW5zdXBwb3J0ZWRQcm92aWRlck1ldGhvZEVycm9yIixzaG9ydE1lc3NhZ2U6YFRoZSBQcm92aWRlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSByZXF1ZXN0ZWQgbWV0aG9kJHtyP2AgIiAke3J9ImA6IiJ9LmB9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHgwLCJjb2RlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6NDIwMH0pO2NsYXNzIF8wIGV4dGVuZHMgJGl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSx7Y29kZTpfMC5jb2RlLG5hbWU6IlByb3ZpZGVyRGlzY29ubmVjdGVkRXJyb3IiLHNob3J0TWVzc2FnZToiVGhlIFByb3ZpZGVyIGlzIGRpc2Nvbm5lY3RlZCBmcm9tIGFsbCBjaGFpbnMuIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoXzAsImNvZGUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTo0OTAwfSk7Y2xhc3MgazAgZXh0ZW5kcyAkaXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLHtjb2RlOmswLmNvZGUsbmFtZToiQ2hhaW5EaXNjb25uZWN0ZWRFcnJvciIsc2hvcnRNZXNzYWdlOiJUaGUgUHJvdmlkZXIgaXMgbm90IGNvbm5lY3RlZCB0byB0aGUgcmVxdWVzdGVkIGNoYWluLiJ9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGswLCJjb2RlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6NDkwMX0pO2NsYXNzIGNpIGV4dGVuZHMgJGl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSx7Y29kZTpjaS5jb2RlLG5hbWU6IlN3aXRjaENoYWluRXJyb3IiLHNob3J0TWVzc2FnZToiQW4gZXJyb3Igb2NjdXJyZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHN3aXRjaCBjaGFpbi4ifSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShjaSwiY29kZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOjQ5MDJ9KTtjbGFzcyBTMCBleHRlbmRzICRpe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUse2NvZGU6UzAuY29kZSxuYW1lOiJVbnN1cHBvcnRlZE5vbk9wdGlvbmFsQ2FwYWJpbGl0eUVycm9yIixzaG9ydE1lc3NhZ2U6IlRoaXMgV2FsbGV0IGRvZXMgbm90IHN1cHBvcnQgYSBjYXBhYmlsaXR5IHRoYXQgd2FzIG5vdCBtYXJrZWQgYXMgb3B0aW9uYWwuIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoUzAsImNvZGUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTo1NzAwfSk7Y2xhc3MgQTAgZXh0ZW5kcyAkaXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLHtjb2RlOkEwLmNvZGUsbmFtZToiVW5zdXBwb3J0ZWRDaGFpbklkRXJyb3IiLHNob3J0TWVzc2FnZToiVGhpcyBXYWxsZXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgcmVxdWVzdGVkIGNoYWluIElELiJ9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KEEwLCJjb2RlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6NTcxMH0pO2NsYXNzIFQwIGV4dGVuZHMgJGl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSx7Y29kZTpUMC5jb2RlLG5hbWU6IkR1cGxpY2F0ZUlkRXJyb3IiLHNob3J0TWVzc2FnZToiVGhlcmUgaXMgYWxyZWFkeSBhIGJ1bmRsZSBzdWJtaXR0ZWQgd2l0aCB0aGlzIElELiJ9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KFQwLCJjb2RlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6NTcyMH0pO2NsYXNzIEkwIGV4dGVuZHMgJGl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSx7Y29kZTpJMC5jb2RlLG5hbWU6IlVua25vd25CdW5kbGVJZEVycm9yIixzaG9ydE1lc3NhZ2U6IlRoaXMgYnVuZGxlIGlkIGlzIHVua25vd24gLyBoYXMgbm90IGJlZW4gc3VibWl0dGVkIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoSTAsImNvZGUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTo1NzMwfSk7Y2xhc3MgUjAgZXh0ZW5kcyAkaXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLHtjb2RlOlIwLmNvZGUsbmFtZToiQnVuZGxlVG9vTGFyZ2VFcnJvciIsc2hvcnRNZXNzYWdlOiJUaGUgY2FsbCBidW5kbGUgaXMgdG9vIGxhcmdlIGZvciB0aGUgV2FsbGV0IHRvIHByb2Nlc3MuIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoUjAsImNvZGUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTo1NzQwfSk7Y2xhc3MgTjAgZXh0ZW5kcyAkaXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLHtjb2RlOk4wLmNvZGUsbmFtZToiQXRvbWljUmVhZHlXYWxsZXRSZWplY3RlZFVwZ3JhZGVFcnJvciIsc2hvcnRNZXNzYWdlOiJUaGUgV2FsbGV0IGNhbiBzdXBwb3J0IGF0b21pY2l0eSBhZnRlciBhbiB1cGdyYWRlLCBidXQgdGhlIHVzZXIgcmVqZWN0ZWQgdGhlIHVwZ3JhZGUuIn0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoTjAsImNvZGUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTo1NzUwfSk7Y2xhc3MgUDAgZXh0ZW5kcyAkaXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLHtjb2RlOlAwLmNvZGUsbmFtZToiQXRvbWljaXR5Tm90U3VwcG9ydGVkRXJyb3IiLHNob3J0TWVzc2FnZToiVGhlIHdhbGxldCBkb2VzIG5vdCBzdXBwb3J0IGF0b21pYyBleGVjdXRpb24gYnV0IHRoZSByZXF1ZXN0IHJlcXVpcmVzIGl0LiJ9KX19T2JqZWN0LmRlZmluZVByb3BlcnR5KFAwLCJjb2RlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6NTc2MH0pO2NsYXNzIGZ6IGV4dGVuZHMgaGl7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSx7bmFtZToiVW5rbm93blJwY0Vycm9yIixzaG9ydE1lc3NhZ2U6IkFuIHVua25vd24gUlBDIGVycm9yIG9jY3VycmVkLiJ9KX19ZnVuY3Rpb24gWDQodCxlKXtjb25zdCByPSh0LmRldGFpbHN8fCIiKS50b0xvd2VyQ2FzZSgpLG49dCBpbnN0YW5jZW9mIEVlP3Qud2FsayhzPT5zPy5jb2RlPT09WWwuY29kZSk6dDtyZXR1cm4gbiBpbnN0YW5jZW9mIEVlP25ldyBZbCh7Y2F1c2U6dCxtZXNzYWdlOm4uZGV0YWlsc30pOllsLm5vZGVNZXNzYWdlLnRlc3Qocik/bmV3IFlsKHtjYXVzZTp0LG1lc3NhZ2U6dC5kZXRhaWxzfSk6eWMubm9kZU1lc3NhZ2UudGVzdChyKT9uZXcgeWMoe2NhdXNlOnQsbWF4RmVlUGVyR2FzOmU/Lm1heEZlZVBlckdhc30pOnZDLm5vZGVNZXNzYWdlLnRlc3Qocik/bmV3IHZDKHtjYXVzZTp0LG1heEZlZVBlckdhczplPy5tYXhGZWVQZXJHYXN9KTpFQy5ub2RlTWVzc2FnZS50ZXN0KHIpP25ldyBFQyh7Y2F1c2U6dCxub25jZTplPy5ub25jZX0pOkNDLm5vZGVNZXNzYWdlLnRlc3Qocik/bmV3IENDKHtjYXVzZTp0LG5vbmNlOmU/Lm5vbmNlfSk6eEMubm9kZU1lc3NhZ2UudGVzdChyKT9uZXcgeEMoe2NhdXNlOnQsbm9uY2U6ZT8ubm9uY2V9KTpfQy5ub2RlTWVzc2FnZS50ZXN0KHIpP25ldyBfQyh7Y2F1c2U6dH0pOmtDLm5vZGVNZXNzYWdlLnRlc3Qocik/bmV3IGtDKHtjYXVzZTp0LGdhczplPy5nYXN9KTpTQy5ub2RlTWVzc2FnZS50ZXN0KHIpP25ldyBTQyh7Y2F1c2U6dCxnYXM6ZT8uZ2FzfSk6QUMubm9kZU1lc3NhZ2UudGVzdChyKT9uZXcgQUMoe2NhdXNlOnR9KTptaC5ub2RlTWVzc2FnZS50ZXN0KHIpP25ldyBtaCh7Y2F1c2U6dCxtYXhGZWVQZXJHYXM6ZT8ubWF4RmVlUGVyR2FzLG1heFByaW9yaXR5RmVlUGVyR2FzOmU/Lm1heFByaW9yaXR5RmVlUGVyR2FzfSk6bmV3IHl5KHtjYXVzZTp0fSl9ZnVuY3Rpb24gbXoodCx7ZG9jc1BhdGg6ZSwuLi5yfSl7Y29uc3Qgbj0oKCk9Pntjb25zdCBzPVg0KHQscik7cmV0dXJuIHMgaW5zdGFuY2VvZiB5eT90OnN9KSgpO3JldHVybiBuZXcgdXoobix7ZG9jc1BhdGg6ZSwuLi5yfSl9ZnVuY3Rpb24gdnkodCx7Zm9ybWF0OmV9KXtpZighZSlyZXR1cm57fTtjb25zdCByPXt9O2Z1bmN0aW9uIG4oaSl7Y29uc3Qgbz1PYmplY3Qua2V5cyhpKTtmb3IoY29uc3QgYSBvZiBvKWEgaW4gdCYmKHJbYV09dFthXSksaVthXSYmdHlwZW9mIGlbYV09PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShpW2FdKSYmbihpW2FdKX1jb25zdCBzPWUodHx8e30pO3JldHVybiBuKHMpLHJ9ZnVuY3Rpb24gRXkodCxlKXtyZXR1cm4oe2V4Y2x1ZGU6cixmb3JtYXQ6bn0pPT4oe2V4Y2x1ZGU6cixmb3JtYXQ6cz0+e2NvbnN0IGk9ZShzKTtpZihyKWZvcihjb25zdCBvIG9mIHIpZGVsZXRlIGlbb107cmV0dXJuey4uLmksLi4ubihzKX19LHR5cGU6dH0pfWNvbnN0IGd6PXtsZWdhY3k6IjB4MCIsZWlwMjkzMDoiMHgxIixlaXAxNTU5OiIweDIiLGVpcDQ4NDQ6IjB4MyIsZWlwNzcwMjoiMHg0In07ZnVuY3Rpb24gWm0odCl7Y29uc3QgZT17fTtyZXR1cm4gdHlwZW9mIHQuYXV0aG9yaXphdGlvbkxpc3Q8InUiJiYoZS5hdXRob3JpemF0aW9uTGlzdD13eih0LmF1dGhvcml6YXRpb25MaXN0KSksdHlwZW9mIHQuYWNjZXNzTGlzdDwidSImJihlLmFjY2Vzc0xpc3Q9dC5hY2Nlc3NMaXN0KSx0eXBlb2YgdC5ibG9iVmVyc2lvbmVkSGFzaGVzPCJ1IiYmKGUuYmxvYlZlcnNpb25lZEhhc2hlcz10LmJsb2JWZXJzaW9uZWRIYXNoZXMpLHR5cGVvZiB0LmJsb2JzPCJ1IiYmKHR5cGVvZiB0LmJsb2JzWzBdIT0ic3RyaW5nIj9lLmJsb2JzPXQuYmxvYnMubWFwKHI9PkJuKHIpKTplLmJsb2JzPXQuYmxvYnMpLHR5cGVvZiB0LmRhdGE8InUiJiYoZS5kYXRhPXQuZGF0YSksdHlwZW9mIHQuZnJvbTwidSImJihlLmZyb209dC5mcm9tKSx0eXBlb2YgdC5nYXM8InUiJiYoZS5nYXM9dXQodC5nYXMpKSx0eXBlb2YgdC5nYXNQcmljZTwidSImJihlLmdhc1ByaWNlPXV0KHQuZ2FzUHJpY2UpKSx0eXBlb2YgdC5tYXhGZWVQZXJCbG9iR2FzPCJ1IiYmKGUubWF4RmVlUGVyQmxvYkdhcz11dCh0Lm1heEZlZVBlckJsb2JHYXMpKSx0eXBlb2YgdC5tYXhGZWVQZXJHYXM8InUiJiYoZS5tYXhGZWVQZXJHYXM9dXQodC5tYXhGZWVQZXJHYXMpKSx0eXBlb2YgdC5tYXhQcmlvcml0eUZlZVBlckdhczwidSImJihlLm1heFByaW9yaXR5RmVlUGVyR2FzPXV0KHQubWF4UHJpb3JpdHlGZWVQZXJHYXMpKSx0eXBlb2YgdC5ub25jZTwidSImJihlLm5vbmNlPXV0KHQubm9uY2UpKSx0eXBlb2YgdC50bzwidSImJihlLnRvPXQudG8pLHR5cGVvZiB0LnR5cGU8InUiJiYoZS50eXBlPWd6W3QudHlwZV0pLHR5cGVvZiB0LnZhbHVlPCJ1IiYmKGUudmFsdWU9dXQodC52YWx1ZSkpLGV9Y29uc3QgSlA9RXkoInRyYW5zYWN0aW9uUmVxdWVzdCIsWm0pO2Z1bmN0aW9uIHd6KHQpe3JldHVybiB0Lm1hcChlPT4oe2FkZHJlc3M6ZS5hZGRyZXNzLHI6ZS5yP3V0KEJpZ0ludChlLnIpKTplLnIsczplLnM/dXQoQmlnSW50KGUucykpOmUucyxjaGFpbklkOnV0KGUuY2hhaW5JZCksbm9uY2U6dXQoZS5ub25jZSksLi4udHlwZW9mIGUueVBhcml0eTwidSI/e3lQYXJpdHk6dXQoZS55UGFyaXR5KX06e30sLi4udHlwZW9mIGUudjwidSImJnR5cGVvZiBlLnlQYXJpdHk+InUiP3t2OnV0KGUudil9Ont9fSkpfWZ1bmN0aW9uIFRyKHQsZSxyKXtjb25zdCBuPXRbZS5uYW1lXTtpZih0eXBlb2Ygbj09ImZ1bmN0aW9uIilyZXR1cm4gbjtjb25zdCBzPXRbcl07cmV0dXJuIHR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6aT0+ZSh0LGkpfWNvbnN0IGJ6PTJuKioxNm4tMW4sWW09Mm4qKjI1Nm4tMW47ZnVuY3Rpb24gSm0odCl7Y29uc3R7YWNjb3VudDplLGdhc1ByaWNlOnIsbWF4RmVlUGVyR2FzOm4sbWF4UHJpb3JpdHlGZWVQZXJHYXM6cyx0bzppfT10LG89ZT9IcyhlKTp2b2lkIDA7aWYobyYmISRyKG8uYWRkcmVzcykpdGhyb3cgbmV3IGRuKHthZGRyZXNzOm8uYWRkcmVzc30pO2lmKGkmJiEkcihpKSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6aX0pO2lmKHR5cGVvZiByPCJ1IiYmKHR5cGVvZiBuPCJ1Inx8dHlwZW9mIHM8InUiKSl0aHJvdyBuZXcgb3o7aWYobiYmbj5ZbSl0aHJvdyBuZXcgeWMoe21heEZlZVBlckdhczpufSk7aWYocyYmbiYmcz5uKXRocm93IG5ldyBtaCh7bWF4RmVlUGVyR2FzOm4sbWF4UHJpb3JpdHlGZWVQZXJHYXM6c30pfWFzeW5jIGZ1bmN0aW9uIFhQKHQpe2NvbnN0IGU9YXdhaXQgdC5yZXF1ZXN0KHttZXRob2Q6ImV0aF9jaGFpbklkIn0se2RlZHVwZTohMH0pO3JldHVybiBtYShlKX1jbGFzcyB5eiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKCl7c3VwZXIoImBiYXNlRmVlTXVsdGlwbGllcmAgbXVzdCBiZSBncmVhdGVyIHRoYW4gMS4iLHtuYW1lOiJCYXNlRmVlU2NhbGFyRXJyb3IifSl9fWNsYXNzIFE0IGV4dGVuZHMgRWV7Y29uc3RydWN0b3IoKXtzdXBlcigiQ2hhaW4gZG9lcyBub3Qgc3VwcG9ydCBFSVAtMTU1OSBmZWVzLiIse25hbWU6IkVpcDE1NTlGZWVzTm90U3VwcG9ydGVkRXJyb3IifSl9fWNsYXNzIHZ6IGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe21heFByaW9yaXR5RmVlUGVyR2FzOmV9KXtzdXBlcihgXGBtYXhGZWVQZXJHYXNcYCBjYW5ub3QgYmUgbGVzcyB0aGFuIHRoZSBcYG1heFByaW9yaXR5RmVlUGVyR2FzXGAgKCR7c2koZSl9IGd3ZWkpLmAse25hbWU6Ik1heEZlZVBlckdhc1Rvb0xvd0Vycm9yIn0pfX1jbGFzcyBRUCBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtibG9ja0hhc2g6ZSxibG9ja051bWJlcjpyfSl7bGV0IG49IkJsb2NrIjtlJiYobj1gQmxvY2sgYXQgaGFzaCAiJHtlfSJgKSxyJiYobj1gQmxvY2sgYXQgbnVtYmVyICIke3J9ImApLHN1cGVyKGAke259IGNvdWxkIG5vdCBiZSBmb3VuZC5gLHtuYW1lOiJCbG9ja05vdEZvdW5kRXJyb3IifSl9fWNvbnN0IGVPPXsiMHgwIjoibGVnYWN5IiwiMHgxIjoiZWlwMjkzMCIsIjB4MiI6ImVpcDE1NTkiLCIweDMiOiJlaXA0ODQ0IiwiMHg0IjoiZWlwNzcwMiJ9O2Z1bmN0aW9uIFhtKHQpe2NvbnN0IGU9ey4uLnQsYmxvY2tIYXNoOnQuYmxvY2tIYXNoP3QuYmxvY2tIYXNoOm51bGwsYmxvY2tOdW1iZXI6dC5ibG9ja051bWJlcj9CaWdJbnQodC5ibG9ja051bWJlcik6bnVsbCxjaGFpbklkOnQuY2hhaW5JZD9tYSh0LmNoYWluSWQpOnZvaWQgMCxnYXM6dC5nYXM/QmlnSW50KHQuZ2FzKTp2b2lkIDAsZ2FzUHJpY2U6dC5nYXNQcmljZT9CaWdJbnQodC5nYXNQcmljZSk6dm9pZCAwLG1heEZlZVBlckJsb2JHYXM6dC5tYXhGZWVQZXJCbG9iR2FzP0JpZ0ludCh0Lm1heEZlZVBlckJsb2JHYXMpOnZvaWQgMCxtYXhGZWVQZXJHYXM6dC5tYXhGZWVQZXJHYXM/QmlnSW50KHQubWF4RmVlUGVyR2FzKTp2b2lkIDAsbWF4UHJpb3JpdHlGZWVQZXJHYXM6dC5tYXhQcmlvcml0eUZlZVBlckdhcz9CaWdJbnQodC5tYXhQcmlvcml0eUZlZVBlckdhcyk6dm9pZCAwLG5vbmNlOnQubm9uY2U/bWEodC5ub25jZSk6dm9pZCAwLHRvOnQudG8/dC50bzpudWxsLHRyYW5zYWN0aW9uSW5kZXg6dC50cmFuc2FjdGlvbkluZGV4P051bWJlcih0LnRyYW5zYWN0aW9uSW5kZXgpOm51bGwsdHlwZTp0LnR5cGU/ZU9bdC50eXBlXTp2b2lkIDAsdHlwZUhleDp0LnR5cGU/dC50eXBlOnZvaWQgMCx2YWx1ZTp0LnZhbHVlP0JpZ0ludCh0LnZhbHVlKTp2b2lkIDAsdjp0LnY/QmlnSW50KHQudik6dm9pZCAwfTtyZXR1cm4gdC5hdXRob3JpemF0aW9uTGlzdCYmKGUuYXV0aG9yaXphdGlvbkxpc3Q9RXoodC5hdXRob3JpemF0aW9uTGlzdCkpLGUueVBhcml0eT0oKCk9PntpZih0LnlQYXJpdHkpcmV0dXJuIE51bWJlcih0LnlQYXJpdHkpO2lmKHR5cGVvZiBlLnY9PSJiaWdpbnQiKXtpZihlLnY9PT0wbnx8ZS52PT09MjduKXJldHVybiAwO2lmKGUudj09PTFufHxlLnY9PT0yOG4pcmV0dXJuIDE7aWYoZS52Pj0zNW4pcmV0dXJuIGUudiUybj09PTBuPzE6MH19KSgpLGUudHlwZT09PSJsZWdhY3kiJiYoZGVsZXRlIGUuYWNjZXNzTGlzdCxkZWxldGUgZS5tYXhGZWVQZXJCbG9iR2FzLGRlbGV0ZSBlLm1heEZlZVBlckdhcyxkZWxldGUgZS5tYXhQcmlvcml0eUZlZVBlckdhcyxkZWxldGUgZS55UGFyaXR5KSxlLnR5cGU9PT0iZWlwMjkzMCImJihkZWxldGUgZS5tYXhGZWVQZXJCbG9iR2FzLGRlbGV0ZSBlLm1heEZlZVBlckdhcyxkZWxldGUgZS5tYXhQcmlvcml0eUZlZVBlckdhcyksZS50eXBlPT09ImVpcDE1NTkiJiZkZWxldGUgZS5tYXhGZWVQZXJCbG9iR2FzLGV9Y29uc3QgZTY9RXkoInRyYW5zYWN0aW9uIixYbSk7ZnVuY3Rpb24gRXoodCl7cmV0dXJuIHQubWFwKGU9Pih7YWRkcmVzczplLmFkZHJlc3MsY2hhaW5JZDpOdW1iZXIoZS5jaGFpbklkKSxub25jZTpOdW1iZXIoZS5ub25jZSkscjplLnIsczplLnMseVBhcml0eTpOdW1iZXIoZS55UGFyaXR5KX0pKX1mdW5jdGlvbiB0Tyh0KXtjb25zdCBlPSh0LnRyYW5zYWN0aW9ucz8/W10pLm1hcChyPT50eXBlb2Ygcj09InN0cmluZyI/cjpYbShyKSk7cmV0dXJuey4uLnQsYmFzZUZlZVBlckdhczp0LmJhc2VGZWVQZXJHYXM/QmlnSW50KHQuYmFzZUZlZVBlckdhcyk6bnVsbCxibG9iR2FzVXNlZDp0LmJsb2JHYXNVc2VkP0JpZ0ludCh0LmJsb2JHYXNVc2VkKTp2b2lkIDAsZGlmZmljdWx0eTp0LmRpZmZpY3VsdHk/QmlnSW50KHQuZGlmZmljdWx0eSk6dm9pZCAwLGV4Y2Vzc0Jsb2JHYXM6dC5leGNlc3NCbG9iR2FzP0JpZ0ludCh0LmV4Y2Vzc0Jsb2JHYXMpOnZvaWQgMCxnYXNMaW1pdDp0Lmdhc0xpbWl0P0JpZ0ludCh0Lmdhc0xpbWl0KTp2b2lkIDAsZ2FzVXNlZDp0Lmdhc1VzZWQ/QmlnSW50KHQuZ2FzVXNlZCk6dm9pZCAwLGhhc2g6dC5oYXNoP3QuaGFzaDpudWxsLGxvZ3NCbG9vbTp0LmxvZ3NCbG9vbT90LmxvZ3NCbG9vbTpudWxsLG5vbmNlOnQubm9uY2U/dC5ub25jZTpudWxsLG51bWJlcjp0Lm51bWJlcj9CaWdJbnQodC5udW1iZXIpOm51bGwsc2l6ZTp0LnNpemU/QmlnSW50KHQuc2l6ZSk6dm9pZCAwLHRpbWVzdGFtcDp0LnRpbWVzdGFtcD9CaWdJbnQodC50aW1lc3RhbXApOnZvaWQgMCx0cmFuc2FjdGlvbnM6ZSx0b3RhbERpZmZpY3VsdHk6dC50b3RhbERpZmZpY3VsdHk/QmlnSW50KHQudG90YWxEaWZmaWN1bHR5KTpudWxsfX1jb25zdCB0Nj1FeSgiYmxvY2siLHRPKTthc3luYyBmdW5jdGlvbiBPMCh0LHtibG9ja0hhc2g6ZSxibG9ja051bWJlcjpyLGJsb2NrVGFnOm4saW5jbHVkZVRyYW5zYWN0aW9uczpzfT17fSl7Y29uc3QgaT1uPz8ibGF0ZXN0IixvPXM/PyExLGE9ciE9PXZvaWQgMD91dChyKTp2b2lkIDA7bGV0IGM9bnVsbDtpZihlP2M9YXdhaXQgdC5yZXF1ZXN0KHttZXRob2Q6ImV0aF9nZXRCbG9ja0J5SGFzaCIscGFyYW1zOltlLG9dfSx7ZGVkdXBlOiEwfSk6Yz1hd2FpdCB0LnJlcXVlc3Qoe21ldGhvZDoiZXRoX2dldEJsb2NrQnlOdW1iZXIiLHBhcmFtczpbYXx8aSxvXX0se2RlZHVwZTohIWF9KSwhYyl0aHJvdyBuZXcgUVAoe2Jsb2NrSGFzaDplLGJsb2NrTnVtYmVyOnJ9KTtyZXR1cm4odC5jaGFpbj8uZm9ybWF0dGVycz8uYmxvY2s/LmZvcm1hdHx8dE8pKGMpfWFzeW5jIGZ1bmN0aW9uIHJPKHQpe2NvbnN0IGU9YXdhaXQgdC5yZXF1ZXN0KHttZXRob2Q6ImV0aF9nYXNQcmljZSJ9KTtyZXR1cm4gQmlnSW50KGUpfWFzeW5jIGZ1bmN0aW9uIEN6KHQsZSl7Y29uc3R7YmxvY2s6cixjaGFpbjpuPXQuY2hhaW4scmVxdWVzdDpzfT1lfHx7fTt0cnl7Y29uc3QgaT1uPy5mZWVzPy5tYXhQcmlvcml0eUZlZVBlckdhcz8/bj8uZmVlcz8uZGVmYXVsdFByaW9yaXR5RmVlO2lmKHR5cGVvZiBpPT0iZnVuY3Rpb24iKXtjb25zdCBhPXJ8fGF3YWl0IFRyKHQsTzAsImdldEJsb2NrIikoe30pLGM9YXdhaXQgaSh7YmxvY2s6YSxjbGllbnQ6dCxyZXF1ZXN0OnN9KTtpZihjPT09bnVsbCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGN9aWYodHlwZW9mIGk8InUiKXJldHVybiBpO2NvbnN0IG89YXdhaXQgdC5yZXF1ZXN0KHttZXRob2Q6ImV0aF9tYXhQcmlvcml0eUZlZVBlckdhcyJ9KTtyZXR1cm4gc3Iobyl9Y2F0Y2h7Y29uc3RbaSxvXT1hd2FpdCBQcm9taXNlLmFsbChbcj9Qcm9taXNlLnJlc29sdmUocik6VHIodCxPMCwiZ2V0QmxvY2siKSh7fSksVHIodCxyTywiZ2V0R2FzUHJpY2UiKSh7fSldKTtpZih0eXBlb2YgaS5iYXNlRmVlUGVyR2FzIT0iYmlnaW50Iil0aHJvdyBuZXcgUTQ7Y29uc3QgYT1vLWkuYmFzZUZlZVBlckdhcztyZXR1cm4gYTwwbj8wbjphfX1hc3luYyBmdW5jdGlvbiBNOCh0LGUpe2NvbnN0e2Jsb2NrOnIsY2hhaW46bj10LmNoYWluLHJlcXVlc3Q6cyx0eXBlOmk9ImVpcDE1NTkifT1lfHx7fSxvPWF3YWl0KGFzeW5jKCk9PnR5cGVvZiBuPy5mZWVzPy5iYXNlRmVlTXVsdGlwbGllcj09ImZ1bmN0aW9uIj9uLmZlZXMuYmFzZUZlZU11bHRpcGxpZXIoe2Jsb2NrOnIsY2xpZW50OnQscmVxdWVzdDpzfSk6bj8uZmVlcz8uYmFzZUZlZU11bHRpcGxpZXI/PzEuMikoKTtpZihvPDEpdGhyb3cgbmV3IHl6O2NvbnN0IGM9MTAqKihvLnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXT8ubGVuZ3RoPz8wKSxsPWg9PmgqQmlnSW50KE1hdGguY2VpbChvKmMpKS9CaWdJbnQoYyksZD1yfHxhd2FpdCBUcih0LE8wLCJnZXRCbG9jayIpKHt9KTtpZih0eXBlb2Ygbj8uZmVlcz8uZXN0aW1hdGVGZWVzUGVyR2FzPT0iZnVuY3Rpb24iKXtjb25zdCBoPWF3YWl0IG4uZmVlcy5lc3RpbWF0ZUZlZXNQZXJHYXMoe2Jsb2NrOnIsY2xpZW50OnQsbXVsdGlwbHk6bCxyZXF1ZXN0OnMsdHlwZTppfSk7aWYoaCE9PW51bGwpcmV0dXJuIGh9aWYoaT09PSJlaXAxNTU5Iil7aWYodHlwZW9mIGQuYmFzZUZlZVBlckdhcyE9ImJpZ2ludCIpdGhyb3cgbmV3IFE0O2NvbnN0IGg9dHlwZW9mIHM/Lm1heFByaW9yaXR5RmVlUGVyR2FzPT0iYmlnaW50Ij9zLm1heFByaW9yaXR5RmVlUGVyR2FzOmF3YWl0IEN6KHQse2Jsb2NrOmQsY2hhaW46bixyZXF1ZXN0OnN9KSxwPWwoZC5iYXNlRmVlUGVyR2FzKTtyZXR1cm57bWF4RmVlUGVyR2FzOnM/Lm1heEZlZVBlckdhcz8/cCtoLG1heFByaW9yaXR5RmVlUGVyR2FzOmh9fXJldHVybntnYXNQcmljZTpzPy5nYXNQcmljZT8/bChhd2FpdCBUcih0LHJPLCJnZXRHYXNQcmljZSIpKHt9KSl9fWNsYXNzIHh6IGV4dGVuZHMgRWV7Y29uc3RydWN0b3IoZSx7YWNjb3VudDpyLGRvY3NQYXRoOm4sY2hhaW46cyxkYXRhOmksZ2FzOm8sZ2FzUHJpY2U6YSxtYXhGZWVQZXJHYXM6YyxtYXhQcmlvcml0eUZlZVBlckdhczpsLG5vbmNlOmQsdG86dSx2YWx1ZTpofSl7Y29uc3QgcD1HbSh7ZnJvbTpyPy5hZGRyZXNzLHRvOnUsdmFsdWU6dHlwZW9mIGg8InUiJiZgJHtZNChoKX0gJHtzPy5uYXRpdmVDdXJyZW5jeT8uc3ltYm9sfHwiRVRIIn1gLGRhdGE6aSxnYXM6byxnYXNQcmljZTp0eXBlb2YgYTwidSImJmAke3NpKGEpfSBnd2VpYCxtYXhGZWVQZXJHYXM6dHlwZW9mIGM8InUiJiZgJHtzaShjKX0gZ3dlaWAsbWF4UHJpb3JpdHlGZWVQZXJHYXM6dHlwZW9mIGw8InUiJiZgJHtzaShsKX0gZ3dlaWAsbm9uY2U6ZH0pO3N1cGVyKGUuc2hvcnRNZXNzYWdlLHtjYXVzZTplLGRvY3NQYXRoOm4sbWV0YU1lc3NhZ2VzOlsuLi5lLm1ldGFNZXNzYWdlcz9bLi4uZS5tZXRhTWVzc2FnZXMsIiAiXTpbXSwiRXN0aW1hdGUgR2FzIEFyZ3VtZW50czoiLHBdLmZpbHRlcihCb29sZWFuKSxuYW1lOiJFc3RpbWF0ZUdhc0V4ZWN1dGlvbkVycm9yIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjYXVzZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuY2F1c2U9ZX19ZnVuY3Rpb24gX3oodCx7ZG9jc1BhdGg6ZSwuLi5yfSl7Y29uc3Qgbj0oKCk9Pntjb25zdCBzPVg0KHQscik7cmV0dXJuIHMgaW5zdGFuY2VvZiB5eT90OnN9KSgpO3JldHVybiBuZXcgeHoobix7ZG9jc1BhdGg6ZSwuLi5yfSl9Y2xhc3Mga3ogZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7YWRkcmVzczplfSl7c3VwZXIoYFN0YXRlIGZvciBhY2NvdW50ICIke2V9IiBpcyBzZXQgbXVsdGlwbGUgdGltZXMuYCx7bmFtZToiQWNjb3VudFN0YXRlQ29uZmxpY3RFcnJvciJ9KX19Y2xhc3MgU3ogZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJzdGF0ZSBhbmQgc3RhdGVEaWZmIGFyZSBzZXQgb24gdGhlIHNhbWUgYWNjb3VudC4iLHtuYW1lOiJTdGF0ZUFzc2lnbm1lbnRDb25mbGljdEVycm9yIn0pfX1mdW5jdGlvbiBEOCh0KXtyZXR1cm4gdC5yZWR1Y2UoKGUse3Nsb3Q6cix2YWx1ZTpufSk9PmAke2V9ICAgICAgICAke3J9OiAke259DQpgLCIiKX1mdW5jdGlvbiBBeih0KXtyZXR1cm4gdC5yZWR1Y2UoKGUse2FkZHJlc3M6ciwuLi5ufSk9PntsZXQgcz1gJHtlfSAgICAke3J9Og0KYDtyZXR1cm4gbi5ub25jZSYmKHMrPWAgICAgICBub25jZTogJHtuLm5vbmNlfQ0KYCksbi5iYWxhbmNlJiYocys9YCAgICAgIGJhbGFuY2U6ICR7bi5iYWxhbmNlfQ0KYCksbi5jb2RlJiYocys9YCAgICAgIGNvZGU6ICR7bi5jb2RlfQ0KYCksbi5zdGF0ZSYmKHMrPWAgICAgICBzdGF0ZToNCmAscys9RDgobi5zdGF0ZSkpLG4uc3RhdGVEaWZmJiYocys9YCAgICAgIHN0YXRlRGlmZjoNCmAscys9RDgobi5zdGF0ZURpZmYpKSxzfSxgICBTdGF0ZSBPdmVycmlkZToNCmApLnNsaWNlKDAsLTEpfWZ1bmN0aW9uIEI4KHQpe2lmKCEoIXR8fHQubGVuZ3RoPT09MCkpcmV0dXJuIHQucmVkdWNlKChlLHtzbG90OnIsdmFsdWU6bn0pPT57aWYoci5sZW5ndGghPT02Nil0aHJvdyBuZXcgeDgoe3NpemU6ci5sZW5ndGgsdGFyZ2V0U2l6ZTo2Nix0eXBlOiJoZXgifSk7aWYobi5sZW5ndGghPT02Nil0aHJvdyBuZXcgeDgoe3NpemU6bi5sZW5ndGgsdGFyZ2V0U2l6ZTo2Nix0eXBlOiJoZXgifSk7cmV0dXJuIGVbcl09bixlfSx7fSl9ZnVuY3Rpb24gVHoodCl7Y29uc3R7YmFsYW5jZTplLG5vbmNlOnIsc3RhdGU6bixzdGF0ZURpZmY6cyxjb2RlOml9PXQsbz17fTtpZihpIT09dm9pZCAwJiYoby5jb2RlPWkpLGUhPT12b2lkIDAmJihvLmJhbGFuY2U9dXQoZSkpLHIhPT12b2lkIDAmJihvLm5vbmNlPXV0KHIpKSxuIT09dm9pZCAwJiYoby5zdGF0ZT1COChuKSkscyE9PXZvaWQgMCl7aWYoby5zdGF0ZSl0aHJvdyBuZXcgU3o7by5zdGF0ZURpZmY9Qjgocyl9cmV0dXJuIG99ZnVuY3Rpb24gbk8odCl7aWYoIXQpcmV0dXJuO2NvbnN0IGU9e307Zm9yKGNvbnN0e2FkZHJlc3M6ciwuLi5ufW9mIHQpe2lmKCEkcihyLHtzdHJpY3Q6ITF9KSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6cn0pO2lmKGVbcl0pdGhyb3cgbmV3IGt6KHthZGRyZXNzOnJ9KTtlW3JdPVR6KG4pfXJldHVybiBlfWFzeW5jIGZ1bmN0aW9uIGlPKHQse2FkZHJlc3M6ZSxibG9ja051bWJlcjpyLGJsb2NrVGFnOm49ImxhdGVzdCJ9KXtjb25zdCBzPXR5cGVvZiByPT0iYmlnaW50Ij91dChyKTp2b2lkIDAsaT1hd2FpdCB0LnJlcXVlc3Qoe21ldGhvZDoiZXRoX2dldEJhbGFuY2UiLHBhcmFtczpbZSxzfHxuXX0pO3JldHVybiBCaWdJbnQoaSl9YXN5bmMgZnVuY3Rpb24gc08odCxlKXtjb25zdHthY2NvdW50OnI9dC5hY2NvdW50fT1lLG49cj9IcyhyKTp2b2lkIDA7dHJ5e2xldCBWPWZ1bmN0aW9uKGIpe2NvbnN0e2Jsb2NrOnkscmVxdWVzdDpDLHJwY1N0YXRlT3ZlcnJpZGU6VH09YjtyZXR1cm4gdC5yZXF1ZXN0KHttZXRob2Q6ImV0aF9lc3RpbWF0ZUdhcyIscGFyYW1zOlQ/W0MseT8/InBlbmRpbmciLFRdOnk/W0MseV06W0NdfSl9O3ZhciBzPVY7Y29uc3R7YWNjZXNzTGlzdDppLGF1dGhvcml6YXRpb25MaXN0Om8sYmxvYnM6YSxibG9iVmVyc2lvbmVkSGFzaGVzOmMsYmxvY2tOdW1iZXI6bCxibG9ja1RhZzpkLGRhdGE6dSxnYXM6aCxnYXNQcmljZTpwLG1heEZlZVBlckJsb2JHYXM6ZixtYXhGZWVQZXJHYXM6bSxtYXhQcmlvcml0eUZlZVBlckdhczp3LG5vbmNlOmcsdmFsdWU6dixzdGF0ZU92ZXJyaWRlOkUsLi4ueH09YXdhaXQgczYodCx7Li4uZSxwYXJhbWV0ZXJzOm4/LnR5cGU9PT0ibG9jYWwiP3ZvaWQgMDpbImJsb2JWZXJzaW9uZWRIYXNoZXMiXX0pLGs9KHR5cGVvZiBsPT0iYmlnaW50Ij91dChsKTp2b2lkIDApfHxkLEE9bk8oRSksTT1hd2FpdChhc3luYygpPT57aWYoeC50bylyZXR1cm4geC50bztpZihvJiZvLmxlbmd0aD4wKXJldHVybiBhd2FpdCBHUCh7YXV0aG9yaXphdGlvbjpvWzBdfSkuY2F0Y2goKCk9Pnt0aHJvdyBuZXcgRWUoImB0b2AgaXMgcmVxdWlyZWQuIENvdWxkIG5vdCBpbmZlciBmcm9tIGBhdXRob3JpemF0aW9uTGlzdGAiKX0pfSkoKTtKbShlKTtjb25zdCBQPXQuY2hhaW4/LmZvcm1hdHRlcnM/LnRyYW5zYWN0aW9uUmVxdWVzdD8uZm9ybWF0LFU9KFB8fFptKSh7Li4udnkoeCx7Zm9ybWF0OlB9KSxmcm9tOm4/LmFkZHJlc3MsYWNjZXNzTGlzdDppLGF1dGhvcml6YXRpb25MaXN0Om8sYmxvYnM6YSxibG9iVmVyc2lvbmVkSGFzaGVzOmMsZGF0YTp1LGdhczpoLGdhc1ByaWNlOnAsbWF4RmVlUGVyQmxvYkdhczpmLG1heEZlZVBlckdhczptLG1heFByaW9yaXR5RmVlUGVyR2FzOncsbm9uY2U6Zyx0bzpNLHZhbHVlOnZ9KTtsZXQgRj1CaWdJbnQoYXdhaXQgVih7YmxvY2s6ayxyZXF1ZXN0OlUscnBjU3RhdGVPdmVycmlkZTpBfSkpO2lmKG8pe2NvbnN0IGI9YXdhaXQgaU8odCx7YWRkcmVzczpVLmZyb219KSx5PWF3YWl0IFByb21pc2UuYWxsKG8ubWFwKGFzeW5jIEM9Pntjb25zdHthZGRyZXNzOlR9PUMsTj1hd2FpdCBWKHtibG9jazprLHJlcXVlc3Q6e2F1dGhvcml6YXRpb25MaXN0OnZvaWQgMCxkYXRhOnUsZnJvbTpuPy5hZGRyZXNzLHRvOlQsdmFsdWU6dXQoYil9LHJwY1N0YXRlT3ZlcnJpZGU6QX0pLmNhdGNoKCgpPT4xMDAwMDBuKTtyZXR1cm4gMm4qQmlnSW50KE4pfSkpO0YrPXkucmVkdWNlKChDLFQpPT5DK1QsMG4pfXJldHVybiBGfWNhdGNoKGkpe3Rocm93IF96KGksey4uLmUsYWNjb3VudDpuLGNoYWluOnQuY2hhaW59KX19YXN5bmMgZnVuY3Rpb24gSXoodCx7YWRkcmVzczplLGJsb2NrVGFnOnI9ImxhdGVzdCIsYmxvY2tOdW1iZXI6bn0pe2NvbnN0IHM9YXdhaXQgdC5yZXF1ZXN0KHttZXRob2Q6ImV0aF9nZXRUcmFuc2FjdGlvbkNvdW50IixwYXJhbXM6W2UsdHlwZW9mIG49PSJiaWdpbnQiP3V0KG4pOnJdfSx7ZGVkdXBlOiEhbn0pO3JldHVybiBtYShzKX1mdW5jdGlvbiByNih0KXtjb25zdHtremc6ZX09dCxyPXQudG8/Pyh0eXBlb2YgdC5ibG9ic1swXT09InN0cmluZyI/ImhleCI6ImJ5dGVzIiksbj10eXBlb2YgdC5ibG9ic1swXT09InN0cmluZyI/dC5ibG9icy5tYXAoaT0+U2koaSkpOnQuYmxvYnMscz1bXTtmb3IoY29uc3QgaSBvZiBuKXMucHVzaChVaW50OEFycmF5LmZyb20oZS5ibG9iVG9LemdDb21taXRtZW50KGkpKSk7cmV0dXJuIHI9PT0iYnl0ZXMiP3M6cy5tYXAoaT0+Qm4oaSkpfWZ1bmN0aW9uIG42KHQpe2NvbnN0e2t6ZzplfT10LHI9dC50bz8/KHR5cGVvZiB0LmJsb2JzWzBdPT0ic3RyaW5nIj8iaGV4IjoiYnl0ZXMiKSxuPXR5cGVvZiB0LmJsb2JzWzBdPT0ic3RyaW5nIj90LmJsb2JzLm1hcChvPT5TaShvKSk6dC5ibG9icyxzPXR5cGVvZiB0LmNvbW1pdG1lbnRzWzBdPT0ic3RyaW5nIj90LmNvbW1pdG1lbnRzLm1hcChvPT5TaShvKSk6dC5jb21taXRtZW50cyxpPVtdO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXtjb25zdCBhPW5bb10sYz1zW29dO2kucHVzaChVaW50OEFycmF5LmZyb20oZS5jb21wdXRlQmxvYkt6Z1Byb29mKGEsYykpKX1yZXR1cm4gcj09PSJieXRlcyI/aTppLm1hcChvPT5CbihvKSl9ZnVuY3Rpb24gUnoodCxlLHIsbil7aWYodHlwZW9mIHQuc2V0QmlnVWludDY0PT0iZnVuY3Rpb24iKXJldHVybiB0LnNldEJpZ1VpbnQ2NChlLHIsbik7Y29uc3Qgcz1CaWdJbnQoMzIpLGk9QmlnSW50KDQyOTQ5NjcyOTUpLG89TnVtYmVyKHI+PnMmaSksYT1OdW1iZXIociZpKSxjPW4/NDowLGw9bj8wOjQ7dC5zZXRVaW50MzIoZStjLG8sbiksdC5zZXRVaW50MzIoZStsLGEsbil9ZnVuY3Rpb24gTnoodCxlLHIpe3JldHVybiB0JmVefnQmcn1mdW5jdGlvbiBQeih0LGUscil7cmV0dXJuIHQmZV50JnJeZSZyfWxldCBPej1jbGFzcyBleHRlbmRzIHE0e2NvbnN0cnVjdG9yKGUscixuLHMpe3N1cGVyKCksdGhpcy5maW5pc2hlZD0hMSx0aGlzLmxlbmd0aD0wLHRoaXMucG9zPTAsdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5ibG9ja0xlbj1lLHRoaXMub3V0cHV0TGVuPXIsdGhpcy5wYWRPZmZzZXQ9bix0aGlzLmlzTEU9cyx0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheShlKSx0aGlzLnZpZXc9RnYodGhpcy5idWZmZXIpfXVwZGF0ZShlKXtwaCh0aGlzKSxlPWd5KGUpLGJjKGUpO2NvbnN0e3ZpZXc6cixidWZmZXI6bixibG9ja0xlbjpzfT10aGlzLGk9ZS5sZW5ndGg7Zm9yKGxldCBvPTA7bzxpOyl7Y29uc3QgYT1NYXRoLm1pbihzLXRoaXMucG9zLGktbyk7aWYoYT09PXMpe2NvbnN0IGM9RnYoZSk7Zm9yKDtzPD1pLW87bys9cyl0aGlzLnByb2Nlc3MoYyxvKTtjb250aW51ZX1uLnNldChlLnN1YmFycmF5KG8sbythKSx0aGlzLnBvcyksdGhpcy5wb3MrPWEsbys9YSx0aGlzLnBvcz09PXMmJih0aGlzLnByb2Nlc3MociwwKSx0aGlzLnBvcz0wKX1yZXR1cm4gdGhpcy5sZW5ndGgrPWUubGVuZ3RoLHRoaXMucm91bmRDbGVhbigpLHRoaXN9ZGlnZXN0SW50byhlKXtwaCh0aGlzKSxPUChlLHRoaXMpLHRoaXMuZmluaXNoZWQ9ITA7Y29uc3R7YnVmZmVyOnIsdmlldzpuLGJsb2NrTGVuOnMsaXNMRTppfT10aGlzO2xldHtwb3M6b309dGhpcztyW28rK109MTI4LGZoKHRoaXMuYnVmZmVyLnN1YmFycmF5KG8pKSx0aGlzLnBhZE9mZnNldD5zLW8mJih0aGlzLnByb2Nlc3MobiwwKSxvPTApO2ZvcihsZXQgdT1vO3U8czt1Kyspclt1XT0wO1J6KG4scy04LEJpZ0ludCh0aGlzLmxlbmd0aCo4KSxpKSx0aGlzLnByb2Nlc3MobiwwKTtjb25zdCBhPUZ2KGUpLGM9dGhpcy5vdXRwdXRMZW47aWYoYyU0KXRocm93IG5ldyBFcnJvcigiX3NoYTI6IG91dHB1dExlbiBzaG91bGQgYmUgYWxpZ25lZCB0byAzMmJpdCIpO2NvbnN0IGw9Yy80LGQ9dGhpcy5nZXQoKTtpZihsPmQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiX3NoYTI6IG91dHB1dExlbiBiaWdnZXIgdGhhbiBzdGF0ZSIpO2ZvcihsZXQgdT0wO3U8bDt1KyspYS5zZXRVaW50MzIoNCp1LGRbdV0saSl9ZGlnZXN0KCl7Y29uc3R7YnVmZmVyOmUsb3V0cHV0TGVuOnJ9PXRoaXM7dGhpcy5kaWdlc3RJbnRvKGUpO2NvbnN0IG49ZS5zbGljZSgwLHIpO3JldHVybiB0aGlzLmRlc3Ryb3koKSxufV9jbG9uZUludG8oZSl7ZXx8KGU9bmV3IHRoaXMuY29uc3RydWN0b3IpLGUuc2V0KC4uLnRoaXMuZ2V0KCkpO2NvbnN0e2Jsb2NrTGVuOnIsYnVmZmVyOm4sbGVuZ3RoOnMsZmluaXNoZWQ6aSxkZXN0cm95ZWQ6byxwb3M6YX09dGhpcztyZXR1cm4gZS5kZXN0cm95ZWQ9byxlLmZpbmlzaGVkPWksZS5sZW5ndGg9cyxlLnBvcz1hLHMlciYmZS5idWZmZXIuc2V0KG4pLGV9Y2xvbmUoKXtyZXR1cm4gdGhpcy5fY2xvbmVJbnRvKCl9fTtjb25zdCB6YT1VaW50MzJBcnJheS5mcm9tKFsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV0pLCR6PVVpbnQzMkFycmF5LmZyb20oWzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0pLFdhPW5ldyBVaW50MzJBcnJheSg2NCk7bGV0IE16PWNsYXNzIGV4dGVuZHMgT3p7Y29uc3RydWN0b3IoZT0zMil7c3VwZXIoNjQsZSw4LCExKSx0aGlzLkE9emFbMF18MCx0aGlzLkI9emFbMV18MCx0aGlzLkM9emFbMl18MCx0aGlzLkQ9emFbM118MCx0aGlzLkU9emFbNF18MCx0aGlzLkY9emFbNV18MCx0aGlzLkc9emFbNl18MCx0aGlzLkg9emFbN118MH1nZXQoKXtjb25zdHtBOmUsQjpyLEM6bixEOnMsRTppLEY6byxHOmEsSDpjfT10aGlzO3JldHVybltlLHIsbixzLGksbyxhLGNdfXNldChlLHIsbixzLGksbyxhLGMpe3RoaXMuQT1lfDAsdGhpcy5CPXJ8MCx0aGlzLkM9bnwwLHRoaXMuRD1zfDAsdGhpcy5FPWl8MCx0aGlzLkY9b3wwLHRoaXMuRz1hfDAsdGhpcy5IPWN8MH1wcm9jZXNzKGUscil7Zm9yKGxldCB1PTA7dTwxNjt1Kysscis9NClXYVt1XT1lLmdldFVpbnQzMihyLCExKTtmb3IobGV0IHU9MTY7dTw2NDt1Kyspe2NvbnN0IGg9V2FbdS0xNV0scD1XYVt1LTJdLGY9cm8oaCw3KV5ybyhoLDE4KV5oPj4+MyxtPXJvKHAsMTcpXnJvKHAsMTkpXnA+Pj4xMDtXYVt1XT1tK1dhW3UtN10rZitXYVt1LTE2XXwwfWxldHtBOm4sQjpzLEM6aSxEOm8sRTphLEY6YyxHOmwsSDpkfT10aGlzO2ZvcihsZXQgdT0wO3U8NjQ7dSsrKXtjb25zdCBoPXJvKGEsNilecm8oYSwxMSlecm8oYSwyNSkscD1kK2grTnooYSxjLGwpKyR6W3VdK1dhW3VdfDAsbT0ocm8obiwyKV5ybyhuLDEzKV5ybyhuLDIyKSkrUHoobixzLGkpfDA7ZD1sLGw9YyxjPWEsYT1vK3B8MCxvPWksaT1zLHM9bixuPXArbXwwfW49bit0aGlzLkF8MCxzPXMrdGhpcy5CfDAsaT1pK3RoaXMuQ3wwLG89byt0aGlzLkR8MCxhPWErdGhpcy5FfDAsYz1jK3RoaXMuRnwwLGw9bCt0aGlzLkd8MCxkPWQrdGhpcy5IfDAsdGhpcy5zZXQobixzLGksbyxhLGMsbCxkKX1yb3VuZENsZWFuKCl7ZmgoV2EpfWRlc3Ryb3koKXt0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDApLGZoKHRoaXMuYnVmZmVyKX19O2NvbnN0IG9PPSRQKCgpPT5uZXcgTXopLGFPPW9PO2Z1bmN0aW9uIGNPKHQsZSl7Y29uc3Qgcj1lfHwiaGV4IixuPWFPKGZhKHQse3N0cmljdDohMX0pP251KHQpOnQpO3JldHVybiByPT09ImJ5dGVzIj9uOnFlKG4pfWZ1bmN0aW9uIER6KHQpe2NvbnN0e2NvbW1pdG1lbnQ6ZSx2ZXJzaW9uOnI9MX09dCxuPXQudG8/Pyh0eXBlb2YgZT09InN0cmluZyI/ImhleCI6ImJ5dGVzIikscz1jTyhlLCJieXRlcyIpO3JldHVybiBzLnNldChbcl0sMCksbj09PSJieXRlcyI/czpCbihzKX1mdW5jdGlvbiBsTyh0KXtjb25zdHtjb21taXRtZW50czplLHZlcnNpb246cn09dCxuPXQudG8/Pyh0eXBlb2YgZVswXT09InN0cmluZyI/ImhleCI6ImJ5dGVzIikscz1bXTtmb3IoY29uc3QgaSBvZiBlKXMucHVzaChEeih7Y29tbWl0bWVudDppLHRvOm4sdmVyc2lvbjpyfSkpO3JldHVybiBzfWNvbnN0IEw4PTYsdU89MzIsaTY9NDA5NixkTz11TyppNixVOD1kTypMOC0xLTEqaTYqTDgsaE89MTtjbGFzcyBCeiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHttYXhTaXplOmUsc2l6ZTpyfSl7c3VwZXIoIkJsb2Igc2l6ZSBpcyB0b28gbGFyZ2UuIix7bWV0YU1lc3NhZ2VzOltgTWF4OiAke2V9IGJ5dGVzYCxgR2l2ZW46ICR7cn0gYnl0ZXNgXSxuYW1lOiJCbG9iU2l6ZVRvb0xhcmdlRXJyb3IifSl9fWNsYXNzIHBPIGV4dGVuZHMgRWV7Y29uc3RydWN0b3IoKXtzdXBlcigiQmxvYiBkYXRhIG11c3Qgbm90IGJlIGVtcHR5LiIse25hbWU6IkVtcHR5QmxvYkVycm9yIn0pfX1jbGFzcyBMeiBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtoYXNoOmUsc2l6ZTpyfSl7c3VwZXIoYFZlcnNpb25lZCBoYXNoICIke2V9IiBzaXplIGlzIGludmFsaWQuYCx7bWV0YU1lc3NhZ2VzOlsiRXhwZWN0ZWQ6IDMyIixgUmVjZWl2ZWQ6ICR7cn1gXSxuYW1lOiJJbnZhbGlkVmVyc2lvbmVkSGFzaFNpemVFcnJvciJ9KX19Y2xhc3MgVXogZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7aGFzaDplLHZlcnNpb246cn0pe3N1cGVyKGBWZXJzaW9uZWQgaGFzaCAiJHtlfSIgdmVyc2lvbiBpcyBpbnZhbGlkLmAse21ldGFNZXNzYWdlczpbYEV4cGVjdGVkOiAke2hPfWAsYFJlY2VpdmVkOiAke3J9YF0sbmFtZToiSW52YWxpZFZlcnNpb25lZEhhc2hWZXJzaW9uRXJyb3IifSl9fWZ1bmN0aW9uIEZ6KHQpe2NvbnN0IGU9dC50bz8/KHR5cGVvZiB0LmRhdGE9PSJzdHJpbmciPyJoZXgiOiJieXRlcyIpLHI9dHlwZW9mIHQuZGF0YT09InN0cmluZyI/U2kodC5kYXRhKTp0LmRhdGEsbj1HcihyKTtpZighbil0aHJvdyBuZXcgcE87aWYobj5VOCl0aHJvdyBuZXcgQnooe21heFNpemU6VTgsc2l6ZTpufSk7Y29uc3Qgcz1bXTtsZXQgaT0hMCxvPTA7Zm9yKDtpOyl7Y29uc3QgYT1aNChuZXcgVWludDhBcnJheShkTykpO2xldCBjPTA7Zm9yKDtjPGk2Oyl7Y29uc3QgbD1yLnNsaWNlKG8sbysodU8tMSkpO2lmKGEucHVzaEJ5dGUoMCksYS5wdXNoQnl0ZXMobCksbC5sZW5ndGg8MzEpe2EucHVzaEJ5dGUoMTI4KSxpPSExO2JyZWFrfWMrKyxvKz0zMX1zLnB1c2goYSl9cmV0dXJuIGU9PT0iYnl0ZXMiP3MubWFwKGE9PmEuYnl0ZXMpOnMubWFwKGE9PkJuKGEuYnl0ZXMpKX1mdW5jdGlvbiBmTyh0KXtjb25zdHtkYXRhOmUsa3pnOnIsdG86bn09dCxzPXQuYmxvYnM/P0Z6KHtkYXRhOmUsdG86bn0pLGk9dC5jb21taXRtZW50cz8/cjYoe2Jsb2JzOnMsa3pnOnIsdG86bn0pLG89dC5wcm9vZnM/P242KHtibG9iczpzLGNvbW1pdG1lbnRzOmksa3pnOnIsdG86bn0pLGE9W107Zm9yKGxldCBjPTA7YzxzLmxlbmd0aDtjKyspYS5wdXNoKHtibG9iOnNbY10sY29tbWl0bWVudDppW2NdLHByb29mOm9bY119KTtyZXR1cm4gYX1mdW5jdGlvbiBtTyh0KXtpZih0LnR5cGUpcmV0dXJuIHQudHlwZTtpZih0eXBlb2YgdC5hdXRob3JpemF0aW9uTGlzdDwidSIpcmV0dXJuImVpcDc3MDIiO2lmKHR5cGVvZiB0LmJsb2JzPCJ1Inx8dHlwZW9mIHQuYmxvYlZlcnNpb25lZEhhc2hlczwidSJ8fHR5cGVvZiB0Lm1heEZlZVBlckJsb2JHYXM8InUifHx0eXBlb2YgdC5zaWRlY2FyczwidSIpcmV0dXJuImVpcDQ4NDQiO2lmKHR5cGVvZiB0Lm1heEZlZVBlckdhczwidSJ8fHR5cGVvZiB0Lm1heFByaW9yaXR5RmVlUGVyR2FzPCJ1IilyZXR1cm4iZWlwMTU1OSI7aWYodHlwZW9mIHQuZ2FzUHJpY2U8InUiKXJldHVybiB0eXBlb2YgdC5hY2Nlc3NMaXN0PCJ1Ij8iZWlwMjkzMCI6ImxlZ2FjeSI7dGhyb3cgbmV3IGN6KHt0cmFuc2FjdGlvbjp0fSl9Y29uc3QgZ089WyJibG9iVmVyc2lvbmVkSGFzaGVzIiwiY2hhaW5JZCIsImZlZXMiLCJnYXMiLCJub25jZSIsInR5cGUiXSxGOD1uZXcgTWFwO2FzeW5jIGZ1bmN0aW9uIHM2KHQsZSl7Y29uc3R7YWNjb3VudDpyPXQuYWNjb3VudCxibG9iczpuLGNoYWluOnMsZ2FzOmksa3pnOm8sbm9uY2U6YSxub25jZU1hbmFnZXI6YyxwYXJhbWV0ZXJzOmw9Z08sdHlwZTpkfT1lLHU9ciYmSHMociksaD17Li4uZSwuLi51P3tmcm9tOnU/LmFkZHJlc3N9Ont9fTtsZXQgcDthc3luYyBmdW5jdGlvbiBmKCl7cmV0dXJuIHB8fChwPWF3YWl0IFRyKHQsTzAsImdldEJsb2NrIikoe2Jsb2NrVGFnOiJsYXRlc3QifSkscCl9bGV0IG07YXN5bmMgZnVuY3Rpb24gdygpe3JldHVybiBtfHwocz9zLmlkOnR5cGVvZiBlLmNoYWluSWQ8InUiP2UuY2hhaW5JZDoobT1hd2FpdCBUcih0LFhQLCJnZXRDaGFpbklkIikoe30pLG0pKX1pZihsLmluY2x1ZGVzKCJub25jZSIpJiZ0eXBlb2YgYT4idSImJnUpaWYoYyl7Y29uc3QgZz1hd2FpdCB3KCk7aC5ub25jZT1hd2FpdCBjLmNvbnN1bWUoe2FkZHJlc3M6dS5hZGRyZXNzLGNoYWluSWQ6ZyxjbGllbnQ6dH0pfWVsc2UgaC5ub25jZT1hd2FpdCBUcih0LEl6LCJnZXRUcmFuc2FjdGlvbkNvdW50Iikoe2FkZHJlc3M6dS5hZGRyZXNzLGJsb2NrVGFnOiJwZW5kaW5nIn0pO2lmKChsLmluY2x1ZGVzKCJibG9iVmVyc2lvbmVkSGFzaGVzIil8fGwuaW5jbHVkZXMoInNpZGVjYXJzIikpJiZuJiZvKXtjb25zdCBnPXI2KHtibG9iczpuLGt6ZzpvfSk7aWYobC5pbmNsdWRlcygiYmxvYlZlcnNpb25lZEhhc2hlcyIpKXtjb25zdCB2PWxPKHtjb21taXRtZW50czpnLHRvOiJoZXgifSk7aC5ibG9iVmVyc2lvbmVkSGFzaGVzPXZ9aWYobC5pbmNsdWRlcygic2lkZWNhcnMiKSl7Y29uc3Qgdj1uNih7YmxvYnM6bixjb21taXRtZW50czpnLGt6ZzpvfSksRT1mTyh7YmxvYnM6bixjb21taXRtZW50czpnLHByb29mczp2LHRvOiJoZXgifSk7aC5zaWRlY2Fycz1FfX1pZihsLmluY2x1ZGVzKCJjaGFpbklkIikmJihoLmNoYWluSWQ9YXdhaXQgdygpKSwobC5pbmNsdWRlcygiZmVlcyIpfHxsLmluY2x1ZGVzKCJ0eXBlIikpJiZ0eXBlb2YgZD4idSIpdHJ5e2gudHlwZT1tTyhoKX1jYXRjaHtsZXQgZz1GOC5nZXQodC51aWQpO3R5cGVvZiBnPiJ1IiYmKGc9dHlwZW9mKGF3YWl0IGYoKSk/LmJhc2VGZWVQZXJHYXM9PSJiaWdpbnQiLEY4LnNldCh0LnVpZCxnKSksaC50eXBlPWc/ImVpcDE1NTkiOiJsZWdhY3kifWlmKGwuaW5jbHVkZXMoImZlZXMiKSlpZihoLnR5cGUhPT0ibGVnYWN5IiYmaC50eXBlIT09ImVpcDI5MzAiKXtpZih0eXBlb2YgaC5tYXhGZWVQZXJHYXM+InUifHx0eXBlb2YgaC5tYXhQcmlvcml0eUZlZVBlckdhcz4idSIpe2NvbnN0IGc9YXdhaXQgZigpLHttYXhGZWVQZXJHYXM6dixtYXhQcmlvcml0eUZlZVBlckdhczpFfT1hd2FpdCBNOCh0LHtibG9jazpnLGNoYWluOnMscmVxdWVzdDpofSk7aWYodHlwZW9mIGUubWF4UHJpb3JpdHlGZWVQZXJHYXM+InUiJiZlLm1heEZlZVBlckdhcyYmZS5tYXhGZWVQZXJHYXM8RSl0aHJvdyBuZXcgdnooe21heFByaW9yaXR5RmVlUGVyR2FzOkV9KTtoLm1heFByaW9yaXR5RmVlUGVyR2FzPUUsaC5tYXhGZWVQZXJHYXM9dn19ZWxzZXtpZih0eXBlb2YgZS5tYXhGZWVQZXJHYXM8InUifHx0eXBlb2YgZS5tYXhQcmlvcml0eUZlZVBlckdhczwidSIpdGhyb3cgbmV3IFE0O2lmKHR5cGVvZiBlLmdhc1ByaWNlPiJ1Iil7Y29uc3QgZz1hd2FpdCBmKCkse2dhc1ByaWNlOnZ9PWF3YWl0IE04KHQse2Jsb2NrOmcsY2hhaW46cyxyZXF1ZXN0OmgsdHlwZToibGVnYWN5In0pO2guZ2FzUHJpY2U9dn19cmV0dXJuIGwuaW5jbHVkZXMoImdhcyIpJiZ0eXBlb2YgaT4idSImJihoLmdhcz1hd2FpdCBUcih0LHNPLCJlc3RpbWF0ZUdhcyIpKHsuLi5oLGFjY291bnQ6dSYme2FkZHJlc3M6dS5hZGRyZXNzLHR5cGU6Impzb24tcnBjIn19KSksSm0oaCksZGVsZXRlIGgucGFyYW1ldGVycyxofWFzeW5jIGZ1bmN0aW9uIGp6KHQse3NlcmlhbGl6ZWRUcmFuc2FjdGlvbjplfSl7cmV0dXJuIHQucmVxdWVzdCh7bWV0aG9kOiJldGhfc2VuZFJhd1RyYW5zYWN0aW9uIixwYXJhbXM6W2VdfSx7cmV0cnlDb3VudDowfSl9Y29uc3QgcXY9bmV3IG15KDEyOCk7YXN5bmMgZnVuY3Rpb24gd08odCxlKXtjb25zdHthY2NvdW50OnI9dC5hY2NvdW50LGNoYWluOm49dC5jaGFpbixhY2Nlc3NMaXN0OnMsYXV0aG9yaXphdGlvbkxpc3Q6aSxibG9iczpvLGRhdGE6YSxnYXM6YyxnYXNQcmljZTpsLG1heEZlZVBlckJsb2JHYXM6ZCxtYXhGZWVQZXJHYXM6dSxtYXhQcmlvcml0eUZlZVBlckdhczpoLG5vbmNlOnAsdHlwZTpmLHZhbHVlOm0sLi4ud309ZTtpZih0eXBlb2Ygcj4idSIpdGhyb3cgbmV3IGJ5KHtkb2NzUGF0aDoiL2RvY3MvYWN0aW9ucy93YWxsZXQvc2VuZFRyYW5zYWN0aW9uIn0pO2NvbnN0IGc9cj9IcyhyKTpudWxsO3RyeXtKbShlKTtjb25zdCB2PWF3YWl0KGFzeW5jKCk9PntpZihlLnRvKXJldHVybiBlLnRvO2lmKGUudG8hPT1udWxsJiZpJiZpLmxlbmd0aD4wKXJldHVybiBhd2FpdCBHUCh7YXV0aG9yaXphdGlvbjppWzBdfSkuY2F0Y2goKCk9Pnt0aHJvdyBuZXcgRWUoImB0b2AgaXMgcmVxdWlyZWQuIENvdWxkIG5vdCBpbmZlciBmcm9tIGBhdXRob3JpemF0aW9uTGlzdGAuIil9KX0pKCk7aWYoZz8udHlwZT09PSJqc29uLXJwYyJ8fGc9PT1udWxsKXtsZXQgRTtuIT09bnVsbCYmKEU9YXdhaXQgVHIodCxYUCwiZ2V0Q2hhaW5JZCIpKHt9KSxyeih7Y3VycmVudENoYWluSWQ6RSxjaGFpbjpufSkpO2NvbnN0IHg9dC5jaGFpbj8uZm9ybWF0dGVycz8udHJhbnNhY3Rpb25SZXF1ZXN0Py5mb3JtYXQsaz0oeHx8Wm0pKHsuLi52eSh3LHtmb3JtYXQ6eH0pLGFjY2Vzc0xpc3Q6cyxhdXRob3JpemF0aW9uTGlzdDppLGJsb2JzOm8sY2hhaW5JZDpFLGRhdGE6YSxmcm9tOmc/LmFkZHJlc3MsZ2FzOmMsZ2FzUHJpY2U6bCxtYXhGZWVQZXJCbG9iR2FzOmQsbWF4RmVlUGVyR2FzOnUsbWF4UHJpb3JpdHlGZWVQZXJHYXM6aCxub25jZTpwLHRvOnYsdHlwZTpmLHZhbHVlOm19KSxBPXF2LmdldCh0LnVpZCksTT1BPyJ3YWxsZXRfc2VuZFRyYW5zYWN0aW9uIjoiZXRoX3NlbmRUcmFuc2FjdGlvbiI7dHJ5e3JldHVybiBhd2FpdCB0LnJlcXVlc3Qoe21ldGhvZDpNLHBhcmFtczpba119LHtyZXRyeUNvdW50OjB9KX1jYXRjaChQKXtpZihBPT09ITEpdGhyb3cgUDtjb25zdCBqPVA7aWYoai5uYW1lPT09IkludmFsaWRJbnB1dFJwY0Vycm9yInx8ai5uYW1lPT09IkludmFsaWRQYXJhbXNScGNFcnJvciJ8fGoubmFtZT09PSJNZXRob2ROb3RGb3VuZFJwY0Vycm9yInx8ai5uYW1lPT09Ik1ldGhvZE5vdFN1cHBvcnRlZFJwY0Vycm9yIilyZXR1cm4gYXdhaXQgdC5yZXF1ZXN0KHttZXRob2Q6IndhbGxldF9zZW5kVHJhbnNhY3Rpb24iLHBhcmFtczpba119LHtyZXRyeUNvdW50OjB9KS50aGVuKFU9Pihxdi5zZXQodC51aWQsITApLFUpKS5jYXRjaChVPT57Y29uc3QgVj1VO3Rocm93IFYubmFtZT09PSJNZXRob2ROb3RGb3VuZFJwY0Vycm9yInx8Vi5uYW1lPT09Ik1ldGhvZE5vdFN1cHBvcnRlZFJwY0Vycm9yIj8ocXYuc2V0KHQudWlkLCExKSxqKTpWfSk7dGhyb3cgan19aWYoZz8udHlwZT09PSJsb2NhbCIpe2NvbnN0IEU9YXdhaXQgVHIodCxzNiwicHJlcGFyZVRyYW5zYWN0aW9uUmVxdWVzdCIpKHthY2NvdW50OmcsYWNjZXNzTGlzdDpzLGF1dGhvcml6YXRpb25MaXN0OmksYmxvYnM6byxjaGFpbjpuLGRhdGE6YSxnYXM6YyxnYXNQcmljZTpsLG1heEZlZVBlckJsb2JHYXM6ZCxtYXhGZWVQZXJHYXM6dSxtYXhQcmlvcml0eUZlZVBlckdhczpoLG5vbmNlOnAsbm9uY2VNYW5hZ2VyOmcubm9uY2VNYW5hZ2VyLHBhcmFtZXRlcnM6Wy4uLmdPLCJzaWRlY2FycyJdLHR5cGU6Zix2YWx1ZTptLC4uLncsdG86dn0pLHg9bj8uc2VyaWFsaXplcnM/LnRyYW5zYWN0aW9uLF89YXdhaXQgZy5zaWduVHJhbnNhY3Rpb24oRSx7c2VyaWFsaXplcjp4fSk7cmV0dXJuIGF3YWl0IFRyKHQsanosInNlbmRSYXdUcmFuc2FjdGlvbiIpKHtzZXJpYWxpemVkVHJhbnNhY3Rpb246X30pfXRocm93IGc/LnR5cGU9PT0ic21hcnQiP25ldyBIdih7bWV0YU1lc3NhZ2VzOlsiQ29uc2lkZXIgdXNpbmcgdGhlIGBzZW5kVXNlck9wZXJhdGlvbmAgQWN0aW9uIGluc3RlYWQuIl0sZG9jc1BhdGg6Ii9kb2NzL2FjdGlvbnMvYnVuZGxlci9zZW5kVXNlck9wZXJhdGlvbiIsdHlwZToic21hcnQifSk6bmV3IEh2KHtkb2NzUGF0aDoiL2RvY3MvYWN0aW9ucy93YWxsZXQvc2VuZFRyYW5zYWN0aW9uIix0eXBlOmc/LnR5cGV9KX1jYXRjaCh2KXt0aHJvdyB2IGluc3RhbmNlb2YgSHY/djpteih2LHsuLi5lLGFjY291bnQ6ZyxjaGFpbjplLmNoYWlufHx2b2lkIDB9KX19Y29uc3QgVEM9W3tpbnB1dHM6W3tjb21wb25lbnRzOlt7bmFtZToidGFyZ2V0Iix0eXBlOiJhZGRyZXNzIn0se25hbWU6ImFsbG93RmFpbHVyZSIsdHlwZToiYm9vbCJ9LHtuYW1lOiJjYWxsRGF0YSIsdHlwZToiYnl0ZXMifV0sbmFtZToiY2FsbHMiLHR5cGU6InR1cGxlW10ifV0sbmFtZToiYWdncmVnYXRlMyIsb3V0cHV0czpbe2NvbXBvbmVudHM6W3tuYW1lOiJzdWNjZXNzIix0eXBlOiJib29sIn0se25hbWU6InJldHVybkRhdGEiLHR5cGU6ImJ5dGVzIn1dLG5hbWU6InJldHVybkRhdGEiLHR5cGU6InR1cGxlW10ifV0sc3RhdGVNdXRhYmlsaXR5OiJ2aWV3Iix0eXBlOiJmdW5jdGlvbiJ9XSxJQz1be25hbWU6InF1ZXJ5Iix0eXBlOiJmdW5jdGlvbiIsc3RhdGVNdXRhYmlsaXR5OiJ2aWV3IixpbnB1dHM6W3t0eXBlOiJ0dXBsZVtdIixuYW1lOiJxdWVyaWVzIixjb21wb25lbnRzOlt7dHlwZToiYWRkcmVzcyIsbmFtZToic2VuZGVyIn0se3R5cGU6InN0cmluZ1tdIixuYW1lOiJ1cmxzIn0se3R5cGU6ImJ5dGVzIixuYW1lOiJkYXRhIn1dfV0sb3V0cHV0czpbe3R5cGU6ImJvb2xbXSIsbmFtZToiZmFpbHVyZXMifSx7dHlwZToiYnl0ZXNbXSIsbmFtZToicmVzcG9uc2VzIn1dfSx7bmFtZToiSHR0cEVycm9yIix0eXBlOiJlcnJvciIsaW5wdXRzOlt7dHlwZToidWludDE2IixuYW1lOiJzdGF0dXMifSx7dHlwZToic3RyaW5nIixuYW1lOiJtZXNzYWdlIn1dfV07ZnVuY3Rpb24genoodCxlPXt9KXt0eXBlb2YgZS5zaXplPCJ1IiYmV3ModCx7c2l6ZTplLnNpemV9KTtjb25zdCByPUJuKHQsZSk7cmV0dXJuIHNyKHIsZSl9ZnVuY3Rpb24gV3oodCxlPXt9KXtsZXQgcj10O2lmKHR5cGVvZiBlLnNpemU8InUiJiYoV3Mocix7c2l6ZTplLnNpemV9KSxyPVBzKHIpKSxyLmxlbmd0aD4xfHxyWzBdPjEpdGhyb3cgbmV3IEJGKHIpO3JldHVybiEhclswXX1mdW5jdGlvbiBjYSh0LGU9e30pe3R5cGVvZiBlLnNpemU8InUiJiZXcyh0LHtzaXplOmUuc2l6ZX0pO2NvbnN0IHI9Qm4odCxlKTtyZXR1cm4gbWEocixlKX1mdW5jdGlvbiBIeih0LGU9e30pe2xldCByPXQ7cmV0dXJuIHR5cGVvZiBlLnNpemU8InUiJiYoV3Mocix7c2l6ZTplLnNpemV9KSxyPVBzKHIse2RpcjoicmlnaHQifSkpLG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShyKX1mdW5jdGlvbiBRbSh0LGUpe2NvbnN0IHI9dHlwZW9mIGU9PSJzdHJpbmciP1NpKGUpOmUsbj1aNChyKTtpZihHcihyKT09PTAmJnQubGVuZ3RoPjApdGhyb3cgbmV3IGZ5O2lmKEdyKGUpJiZHcihlKTwzMil0aHJvdyBuZXcgQVAoe2RhdGE6dHlwZW9mIGU9PSJzdHJpbmciP2U6Qm4oZSkscGFyYW1zOnQsc2l6ZTpHcihlKX0pO2xldCBzPTA7Y29uc3QgaT1bXTtmb3IobGV0IG89MDtvPHQubGVuZ3RoOysrbyl7Y29uc3QgYT10W29dO24uc2V0UG9zaXRpb24ocyk7Y29uc3RbYyxsXT1zaChuLGEse3N0YXRpY1Bvc2l0aW9uOjB9KTtzKz1sLGkucHVzaChjKX1yZXR1cm4gaX1mdW5jdGlvbiBzaCh0LGUse3N0YXRpY1Bvc2l0aW9uOnJ9KXtjb25zdCBuPUs0KGUudHlwZSk7aWYobil7Y29uc3RbcyxpXT1uO3JldHVybiBWeih0LHsuLi5lLHR5cGU6aX0se2xlbmd0aDpzLHN0YXRpY1Bvc2l0aW9uOnJ9KX1pZihlLnR5cGU9PT0idHVwbGUiKXJldHVybiBZeih0LGUse3N0YXRpY1Bvc2l0aW9uOnJ9KTtpZihlLnR5cGU9PT0iYWRkcmVzcyIpcmV0dXJuIHF6KHQpO2lmKGUudHlwZT09PSJib29sIilyZXR1cm4gR3oodCk7aWYoZS50eXBlLnN0YXJ0c1dpdGgoImJ5dGVzIikpcmV0dXJuIEt6KHQsZSx7c3RhdGljUG9zaXRpb246cn0pO2lmKGUudHlwZS5zdGFydHNXaXRoKCJ1aW50Iil8fGUudHlwZS5zdGFydHNXaXRoKCJpbnQiKSlyZXR1cm4gWnoodCxlKTtpZihlLnR5cGU9PT0ic3RyaW5nIilyZXR1cm4gSnoodCx7c3RhdGljUG9zaXRpb246cn0pO3Rocm93IG5ldyB0aihlLnR5cGUse2RvY3NQYXRoOiIvZG9jcy9jb250cmFjdC9kZWNvZGVBYmlQYXJhbWV0ZXJzIn0pfWNvbnN0IGo4PTMyLFJDPTMyO2Z1bmN0aW9uIHF6KHQpe2NvbnN0IGU9dC5yZWFkQnl0ZXMoMzIpO3JldHVyblt3eShCbih6UChlLC0yMCkpKSwzMl19ZnVuY3Rpb24gVnoodCxlLHtsZW5ndGg6cixzdGF0aWNQb3NpdGlvbjpufSl7aWYoIXIpe2NvbnN0IG89Y2EodC5yZWFkQnl0ZXMoUkMpKSxhPW4rbyxjPWErajg7dC5zZXRQb3NpdGlvbihhKTtjb25zdCBsPWNhKHQucmVhZEJ5dGVzKGo4KSksZD0kMChlKTtsZXQgdT0wO2NvbnN0IGg9W107Zm9yKGxldCBwPTA7cDxsOysrcCl7dC5zZXRQb3NpdGlvbihjKyhkP3AqMzI6dSkpO2NvbnN0W2YsbV09c2godCxlLHtzdGF0aWNQb3NpdGlvbjpjfSk7dSs9bSxoLnB1c2goZil9cmV0dXJuIHQuc2V0UG9zaXRpb24obiszMiksW2gsMzJdfWlmKCQwKGUpKXtjb25zdCBvPWNhKHQucmVhZEJ5dGVzKFJDKSksYT1uK28sYz1bXTtmb3IobGV0IGw9MDtsPHI7KytsKXt0LnNldFBvc2l0aW9uKGErbCozMik7Y29uc3RbZF09c2godCxlLHtzdGF0aWNQb3NpdGlvbjphfSk7Yy5wdXNoKGQpfXJldHVybiB0LnNldFBvc2l0aW9uKG4rMzIpLFtjLDMyXX1sZXQgcz0wO2NvbnN0IGk9W107Zm9yKGxldCBvPTA7bzxyOysrbyl7Y29uc3RbYSxjXT1zaCh0LGUse3N0YXRpY1Bvc2l0aW9uOm4rc30pO3MrPWMsaS5wdXNoKGEpfXJldHVybltpLHNdfWZ1bmN0aW9uIEd6KHQpe3JldHVybltXeih0LnJlYWRCeXRlcygzMikse3NpemU6MzJ9KSwzMl19ZnVuY3Rpb24gS3oodCxlLHtzdGF0aWNQb3NpdGlvbjpyfSl7Y29uc3RbbixzXT1lLnR5cGUuc3BsaXQoImJ5dGVzIik7aWYoIXMpe2NvbnN0IG89Y2EodC5yZWFkQnl0ZXMoMzIpKTt0LnNldFBvc2l0aW9uKHIrbyk7Y29uc3QgYT1jYSh0LnJlYWRCeXRlcygzMikpO2lmKGE9PT0wKXJldHVybiB0LnNldFBvc2l0aW9uKHIrMzIpLFsiMHgiLDMyXTtjb25zdCBjPXQucmVhZEJ5dGVzKGEpO3JldHVybiB0LnNldFBvc2l0aW9uKHIrMzIpLFtCbihjKSwzMl19cmV0dXJuW0JuKHQucmVhZEJ5dGVzKE51bWJlci5wYXJzZUludChzKSwzMikpLDMyXX1mdW5jdGlvbiBaeih0LGUpe2NvbnN0IHI9ZS50eXBlLnN0YXJ0c1dpdGgoImludCIpLG49TnVtYmVyLnBhcnNlSW50KGUudHlwZS5zcGxpdCgiaW50IilbMV18fCIyNTYiKSxzPXQucmVhZEJ5dGVzKDMyKTtyZXR1cm5bbj40OD96eihzLHtzaWduZWQ6cn0pOmNhKHMse3NpZ25lZDpyfSksMzJdfWZ1bmN0aW9uIFl6KHQsZSx7c3RhdGljUG9zaXRpb246cn0pe2NvbnN0IG49ZS5jb21wb25lbnRzLmxlbmd0aD09PTB8fGUuY29tcG9uZW50cy5zb21lKCh7bmFtZTpvfSk9PiFvKSxzPW4/W106e307bGV0IGk9MDtpZigkMChlKSl7Y29uc3Qgbz1jYSh0LnJlYWRCeXRlcyhSQykpLGE9citvO2ZvcihsZXQgYz0wO2M8ZS5jb21wb25lbnRzLmxlbmd0aDsrK2Mpe2NvbnN0IGw9ZS5jb21wb25lbnRzW2NdO3Quc2V0UG9zaXRpb24oYStpKTtjb25zdFtkLHVdPXNoKHQsbCx7c3RhdGljUG9zaXRpb246YX0pO2krPXUsc1tuP2M6bD8ubmFtZV09ZH1yZXR1cm4gdC5zZXRQb3NpdGlvbihyKzMyKSxbcywzMl19Zm9yKGxldCBvPTA7bzxlLmNvbXBvbmVudHMubGVuZ3RoOysrbyl7Y29uc3QgYT1lLmNvbXBvbmVudHNbb10sW2MsbF09c2godCxhLHtzdGF0aWNQb3NpdGlvbjpyfSk7c1tuP286YT8ubmFtZV09YyxpKz1sfXJldHVybltzLGldfWZ1bmN0aW9uIEp6KHQse3N0YXRpY1Bvc2l0aW9uOmV9KXtjb25zdCByPWNhKHQucmVhZEJ5dGVzKDMyKSksbj1lK3I7dC5zZXRQb3NpdGlvbihuKTtjb25zdCBzPWNhKHQucmVhZEJ5dGVzKDMyKSk7aWYocz09PTApcmV0dXJuIHQuc2V0UG9zaXRpb24oZSszMiksWyIiLDMyXTtjb25zdCBpPXQucmVhZEJ5dGVzKHMsMzIpLG89SHooUHMoaSkpO3JldHVybiB0LnNldFBvc2l0aW9uKGUrMzIpLFtvLDMyXX1mdW5jdGlvbiAkMCh0KXtjb25zdHt0eXBlOmV9PXQ7aWYoZT09PSJzdHJpbmcifHxlPT09ImJ5dGVzInx8ZS5lbmRzV2l0aCgiW10iKSlyZXR1cm4hMDtpZihlPT09InR1cGxlIilyZXR1cm4gdC5jb21wb25lbnRzPy5zb21lKCQwKTtjb25zdCByPUs0KHQudHlwZSk7cmV0dXJuISEociYmJDAoey4uLnQsdHlwZTpyWzFdfSkpfWNvbnN0IFh6PXQ9PnFtKG51KHQpKTtmdW5jdGlvbiBReih0KXtyZXR1cm4gWHoodCl9Y29uc3QgZVc9IjEuMC44IjtsZXQgc3M9Y2xhc3MgTkMgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHI9e30pe2NvbnN0IG49ci5jYXVzZSBpbnN0YW5jZW9mIE5DP3IuY2F1c2UuZGV0YWlsczpyLmNhdXNlPy5tZXNzYWdlP3IuY2F1c2UubWVzc2FnZTpyLmRldGFpbHMscz1yLmNhdXNlIGluc3RhbmNlb2YgTkMmJnIuY2F1c2UuZG9jc1BhdGh8fHIuZG9jc1BhdGgsaT1bZXx8IkFuIGVycm9yIG9jY3VycmVkLiIsIiIsLi4uci5tZXRhTWVzc2FnZXM/Wy4uLnIubWV0YU1lc3NhZ2VzLCIiXTpbXSwuLi5zP1tgRG9jczogaHR0cHM6Ly9hYml0eXBlLmRldiR7c31gXTpbXSwuLi5uP1tgRGV0YWlsczogJHtufWBdOltdLGBWZXJzaW9uOiBhYml0eXBlQCR7ZVd9YF0uam9pbihgDQpgKTtzdXBlcihpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZGV0YWlscyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkb2NzUGF0aCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJtZXRhTWVzc2FnZXMiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywic2hvcnRNZXNzYWdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiQWJpVHlwZUVycm9yIn0pLHIuY2F1c2UmJih0aGlzLmNhdXNlPXIuY2F1c2UpLHRoaXMuZGV0YWlscz1uLHRoaXMuZG9jc1BhdGg9cyx0aGlzLm1ldGFNZXNzYWdlcz1yLm1ldGFNZXNzYWdlcyx0aGlzLnNob3J0TWVzc2FnZT1lfX07ZnVuY3Rpb24gJGEodCxlKXtyZXR1cm4gdC5leGVjKGUpPy5ncm91cHN9Y29uc3QgYk89L15ieXRlcyhbMS05XXwxWzAtOV18MlswLTldfDNbMC0yXSk/JC8seU89L151P2ludCg4fDE2fDI0fDMyfDQwfDQ4fDU2fDY0fDcyfDgwfDg4fDk2fDEwNHwxMTJ8MTIwfDEyOHwxMzZ8MTQ0fDE1MnwxNjB8MTY4fDE3NnwxODR8MTkyfDIwMHwyMDh8MjE2fDIyNHwyMzJ8MjQwfDI0OHwyNTYpPyQvLHZPPS9eXCguKz9cKS4qPyQvLHo4PS9edHVwbGUoPzxhcnJheT4oXFsoXGQqKVxdKSopJC87ZnVuY3Rpb24gUEModCl7bGV0IGU9dC50eXBlO2lmKHo4LnRlc3QodC50eXBlKSYmImNvbXBvbmVudHMiaW4gdCl7ZT0iKCI7Y29uc3Qgcj10LmNvbXBvbmVudHMubGVuZ3RoO2ZvcihsZXQgcz0wO3M8cjtzKyspe2NvbnN0IGk9dC5jb21wb25lbnRzW3NdO2UrPVBDKGkpLHM8ci0xJiYoZSs9IiwgIil9Y29uc3Qgbj0kYSh6OCx0LnR5cGUpO3JldHVybiBlKz1gKSR7bj8uYXJyYXk/PyIifWAsUEMoey4uLnQsdHlwZTplfSl9cmV0dXJuImluZGV4ZWQiaW4gdCYmdC5pbmRleGVkJiYoZT1gJHtlfSBpbmRleGVkYCksdC5uYW1lP2Ake2V9ICR7dC5uYW1lfWA6ZX1mdW5jdGlvbiBOcCh0KXtsZXQgZT0iIjtjb25zdCByPXQubGVuZ3RoO2ZvcihsZXQgbj0wO248cjtuKyspe2NvbnN0IHM9dFtuXTtlKz1QQyhzKSxuIT09ci0xJiYoZSs9IiwgIil9cmV0dXJuIGV9ZnVuY3Rpb24gdFcodCl7cmV0dXJuIHQudHlwZT09PSJmdW5jdGlvbiI/YGZ1bmN0aW9uICR7dC5uYW1lfSgke05wKHQuaW5wdXRzKX0pJHt0LnN0YXRlTXV0YWJpbGl0eSYmdC5zdGF0ZU11dGFiaWxpdHkhPT0ibm9ucGF5YWJsZSI/YCAke3Quc3RhdGVNdXRhYmlsaXR5fWA6IiJ9JHt0Lm91dHB1dHM/Lmxlbmd0aD9gIHJldHVybnMgKCR7TnAodC5vdXRwdXRzKX0pYDoiIn1gOnQudHlwZT09PSJldmVudCI/YGV2ZW50ICR7dC5uYW1lfSgke05wKHQuaW5wdXRzKX0pYDp0LnR5cGU9PT0iZXJyb3IiP2BlcnJvciAke3QubmFtZX0oJHtOcCh0LmlucHV0cyl9KWA6dC50eXBlPT09ImNvbnN0cnVjdG9yIj9gY29uc3RydWN0b3IoJHtOcCh0LmlucHV0cyl9KSR7dC5zdGF0ZU11dGFiaWxpdHk9PT0icGF5YWJsZSI/IiBwYXlhYmxlIjoiIn1gOnQudHlwZT09PSJmYWxsYmFjayI/YGZhbGxiYWNrKCkgZXh0ZXJuYWwke3Quc3RhdGVNdXRhYmlsaXR5PT09InBheWFibGUiPyIgcGF5YWJsZSI6IiJ9YDoicmVjZWl2ZSgpIGV4dGVybmFsIHBheWFibGUifWNvbnN0IEVPPS9eZXJyb3IgKD88bmFtZT5bYS16QS1aJF9dW2EtekEtWjAtOSRfXSopXCgoPzxwYXJhbWV0ZXJzPi4qPylcKSQvO2Z1bmN0aW9uIHJXKHQpe3JldHVybiBFTy50ZXN0KHQpfWZ1bmN0aW9uIG5XKHQpe3JldHVybiAkYShFTyx0KX1jb25zdCBDTz0vXmV2ZW50ICg/PG5hbWU+W2EtekEtWiRfXVthLXpBLVowLTkkX10qKVwoKD88cGFyYW1ldGVycz4uKj8pXCkkLztmdW5jdGlvbiBpVyh0KXtyZXR1cm4gQ08udGVzdCh0KX1mdW5jdGlvbiBzVyh0KXtyZXR1cm4gJGEoQ08sdCl9Y29uc3QgeE89L15mdW5jdGlvbiAoPzxuYW1lPlthLXpBLVokX11bYS16QS1aMC05JF9dKilcKCg/PHBhcmFtZXRlcnM+Lio/KVwpKD86ICg/PHNjb3BlPmV4dGVybmFsfHB1YmxpY3sxfSkpPyg/OiAoPzxzdGF0ZU11dGFiaWxpdHk+cHVyZXx2aWV3fG5vbnBheWFibGV8cGF5YWJsZXsxfSkpPyg/OiByZXR1cm5zXHM/XCgoPzxyZXR1cm5zPi4qPylcKSk/JC87ZnVuY3Rpb24gb1codCl7cmV0dXJuIHhPLnRlc3QodCl9ZnVuY3Rpb24gYVcodCl7cmV0dXJuICRhKHhPLHQpfWNvbnN0IF9PPS9ec3RydWN0ICg/PG5hbWU+W2EtekEtWiRfXVthLXpBLVowLTkkX10qKSBceyg/PHByb3BlcnRpZXM+Lio/KVx9JC87ZnVuY3Rpb24ga08odCl7cmV0dXJuIF9PLnRlc3QodCl9ZnVuY3Rpb24gY1codCl7cmV0dXJuICRhKF9PLHQpfWNvbnN0IFNPPS9eY29uc3RydWN0b3JcKCg/PHBhcmFtZXRlcnM+Lio/KVwpKD86XHMoPzxzdGF0ZU11dGFiaWxpdHk+cGF5YWJsZXsxfSkpPyQvO2Z1bmN0aW9uIGxXKHQpe3JldHVybiBTTy50ZXN0KHQpfWZ1bmN0aW9uIHVXKHQpe3JldHVybiAkYShTTyx0KX1jb25zdCBBTz0vXmZhbGxiYWNrXChcKSBleHRlcm5hbCg/OlxzKD88c3RhdGVNdXRhYmlsaXR5PnBheWFibGV7MX0pKT8kLztmdW5jdGlvbiBkVyh0KXtyZXR1cm4gQU8udGVzdCh0KX1mdW5jdGlvbiBoVyh0KXtyZXR1cm4gJGEoQU8sdCl9Y29uc3QgcFc9L15yZWNlaXZlXChcKSBleHRlcm5hbCBwYXlhYmxlJC87ZnVuY3Rpb24gZlcodCl7cmV0dXJuIHBXLnRlc3QodCl9Y29uc3QgbVc9bmV3IFNldChbImluZGV4ZWQiXSksT0M9bmV3IFNldChbImNhbGxkYXRhIiwibWVtb3J5Iiwic3RvcmFnZSJdKTtjbGFzcyBnVyBleHRlbmRzIHNze2NvbnN0cnVjdG9yKHt0eXBlOmV9KXtzdXBlcigiVW5rbm93biB0eXBlLiIse21ldGFNZXNzYWdlczpbYFR5cGUgIiR7ZX0iIGlzIG5vdCBhIHZhbGlkIEFCSSB0eXBlLiBQZXJoYXBzIHlvdSBmb3Jnb3QgdG8gaW5jbHVkZSBhIHN0cnVjdCBzaWduYXR1cmU/YF19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJVbmtub3duVHlwZUVycm9yIn0pfX1jbGFzcyB3VyBleHRlbmRzIHNze2NvbnN0cnVjdG9yKHt0eXBlOmV9KXtzdXBlcigiVW5rbm93biB0eXBlLiIse21ldGFNZXNzYWdlczpbYFR5cGUgIiR7ZX0iIGlzIG5vdCBhIHZhbGlkIEFCSSB0eXBlLmBdfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiVW5rbm93blNvbGlkaXR5VHlwZUVycm9yIn0pfX1jbGFzcyBiVyBleHRlbmRzIHNze2NvbnN0cnVjdG9yKHtwYXJhbTplfSl7c3VwZXIoIkludmFsaWQgQUJJIHBhcmFtZXRlci4iLHtkZXRhaWxzOmV9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJJbnZhbGlkUGFyYW1ldGVyRXJyb3IifSl9fWNsYXNzIHlXIGV4dGVuZHMgc3N7Y29uc3RydWN0b3Ioe3BhcmFtOmUsbmFtZTpyfSl7c3VwZXIoIkludmFsaWQgQUJJIHBhcmFtZXRlci4iLHtkZXRhaWxzOmUsbWV0YU1lc3NhZ2VzOltgIiR7cn0iIGlzIGEgcHJvdGVjdGVkIFNvbGlkaXR5IGtleXdvcmQuIE1vcmUgaW5mbzogaHR0cHM6Ly9kb2NzLnNvbGlkaXR5bGFuZy5vcmcvZW4vbGF0ZXN0L2NoZWF0c2hlZXQuaHRtbGBdfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiU29saWRpdHlQcm90ZWN0ZWRLZXl3b3JkRXJyb3IifSl9fWNsYXNzIHZXIGV4dGVuZHMgc3N7Y29uc3RydWN0b3Ioe3BhcmFtOmUsdHlwZTpyLG1vZGlmaWVyOm59KXtzdXBlcigiSW52YWxpZCBBQkkgcGFyYW1ldGVyLiIse2RldGFpbHM6ZSxtZXRhTWVzc2FnZXM6W2BNb2RpZmllciAiJHtufSIgbm90IGFsbG93ZWQke3I/YCBpbiAiJHtyfSIgdHlwZWA6IiJ9LmBdfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiSW52YWxpZE1vZGlmaWVyRXJyb3IifSl9fWNsYXNzIEVXIGV4dGVuZHMgc3N7Y29uc3RydWN0b3Ioe3BhcmFtOmUsdHlwZTpyLG1vZGlmaWVyOm59KXtzdXBlcigiSW52YWxpZCBBQkkgcGFyYW1ldGVyLiIse2RldGFpbHM6ZSxtZXRhTWVzc2FnZXM6W2BNb2RpZmllciAiJHtufSIgbm90IGFsbG93ZWQke3I/YCBpbiAiJHtyfSIgdHlwZWA6IiJ9LmAsYERhdGEgbG9jYXRpb24gY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGZvciBhcnJheSwgc3RydWN0LCBvciBtYXBwaW5nIHR5cGVzLCBidXQgIiR7bn0iIHdhcyBnaXZlbi5gXX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJuYW1lIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6IkludmFsaWRGdW5jdGlvbk1vZGlmaWVyRXJyb3IifSl9fWNsYXNzIENXIGV4dGVuZHMgc3N7Y29uc3RydWN0b3Ioe2FiaVBhcmFtZXRlcjplfSl7c3VwZXIoIkludmFsaWQgQUJJIHBhcmFtZXRlci4iLHtkZXRhaWxzOkpTT04uc3RyaW5naWZ5KGUsbnVsbCwyKSxtZXRhTWVzc2FnZXM6WyJBQkkgcGFyYW1ldGVyIHR5cGUgaXMgaW52YWxpZC4iXX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJuYW1lIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6IkludmFsaWRBYmlUeXBlUGFyYW1ldGVyRXJyb3IifSl9fWNsYXNzIHNwIGV4dGVuZHMgc3N7Y29uc3RydWN0b3Ioe3NpZ25hdHVyZTplLHR5cGU6cn0pe3N1cGVyKGBJbnZhbGlkICR7cn0gc2lnbmF0dXJlLmAse2RldGFpbHM6ZX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJuYW1lIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6IkludmFsaWRTaWduYXR1cmVFcnJvciJ9KX19Y2xhc3MgeFcgZXh0ZW5kcyBzc3tjb25zdHJ1Y3Rvcih7c2lnbmF0dXJlOmV9KXtzdXBlcigiVW5rbm93biBzaWduYXR1cmUuIix7ZGV0YWlsczplfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiVW5rbm93blNpZ25hdHVyZUVycm9yIn0pfX1jbGFzcyBfVyBleHRlbmRzIHNze2NvbnN0cnVjdG9yKHtzaWduYXR1cmU6ZX0pe3N1cGVyKCJJbnZhbGlkIHN0cnVjdCBzaWduYXR1cmUuIix7ZGV0YWlsczplLG1ldGFNZXNzYWdlczpbIk5vIHByb3BlcnRpZXMgZXhpc3QuIl19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJJbnZhbGlkU3RydWN0U2lnbmF0dXJlRXJyb3IifSl9fWNsYXNzIGtXIGV4dGVuZHMgc3N7Y29uc3RydWN0b3Ioe3R5cGU6ZX0pe3N1cGVyKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQuIix7bWV0YU1lc3NhZ2VzOltgU3RydWN0ICIke2V9IiBpcyBhIGNpcmN1bGFyIHJlZmVyZW5jZS5gXX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJuYW1lIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6IkNpcmN1bGFyUmVmZXJlbmNlRXJyb3IifSl9fWNsYXNzIFNXIGV4dGVuZHMgc3N7Y29uc3RydWN0b3Ioe2N1cnJlbnQ6ZSxkZXB0aDpyfSl7c3VwZXIoIlVuYmFsYW5jZWQgcGFyZW50aGVzZXMuIix7bWV0YU1lc3NhZ2VzOltgIiR7ZS50cmltKCl9IiBoYXMgdG9vIG1hbnkgJHtyPjA/Im9wZW5pbmciOiJjbG9zaW5nIn0gcGFyZW50aGVzZXMuYF0sZGV0YWlsczpgRGVwdGggIiR7cn0iYH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJuYW1lIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6IkludmFsaWRQYXJlbnRoZXNpc0Vycm9yIn0pfX1mdW5jdGlvbiBBVyh0LGUscil7bGV0IG49IiI7aWYocilmb3IoY29uc3QgcyBvZiBPYmplY3QuZW50cmllcyhyKSl7aWYoIXMpY29udGludWU7bGV0IGk9IiI7Zm9yKGNvbnN0IG8gb2Ygc1sxXSlpKz1gWyR7by50eXBlfSR7by5uYW1lP2A6JHtvLm5hbWV9YDoiIn1dYDtuKz1gKCR7c1swXX17JHtpfX0pYH1yZXR1cm4gZT9gJHtlfToke3R9JHtufWA6dH1jb25zdCBWdj1uZXcgTWFwKFtbImFkZHJlc3MiLHt0eXBlOiJhZGRyZXNzIn1dLFsiYm9vbCIse3R5cGU6ImJvb2wifV0sWyJieXRlcyIse3R5cGU6ImJ5dGVzIn1dLFsiYnl0ZXMzMiIse3R5cGU6ImJ5dGVzMzIifV0sWyJpbnQiLHt0eXBlOiJpbnQyNTYifV0sWyJpbnQyNTYiLHt0eXBlOiJpbnQyNTYifV0sWyJzdHJpbmciLHt0eXBlOiJzdHJpbmcifV0sWyJ1aW50Iix7dHlwZToidWludDI1NiJ9XSxbInVpbnQ4Iix7dHlwZToidWludDgifV0sWyJ1aW50MTYiLHt0eXBlOiJ1aW50MTYifV0sWyJ1aW50MjQiLHt0eXBlOiJ1aW50MjQifV0sWyJ1aW50MzIiLHt0eXBlOiJ1aW50MzIifV0sWyJ1aW50NjQiLHt0eXBlOiJ1aW50NjQifV0sWyJ1aW50OTYiLHt0eXBlOiJ1aW50OTYifV0sWyJ1aW50MTEyIix7dHlwZToidWludDExMiJ9XSxbInVpbnQxNjAiLHt0eXBlOiJ1aW50MTYwIn1dLFsidWludDE5MiIse3R5cGU6InVpbnQxOTIifV0sWyJ1aW50MjU2Iix7dHlwZToidWludDI1NiJ9XSxbImFkZHJlc3Mgb3duZXIiLHt0eXBlOiJhZGRyZXNzIixuYW1lOiJvd25lciJ9XSxbImFkZHJlc3MgdG8iLHt0eXBlOiJhZGRyZXNzIixuYW1lOiJ0byJ9XSxbImJvb2wgYXBwcm92ZWQiLHt0eXBlOiJib29sIixuYW1lOiJhcHByb3ZlZCJ9XSxbImJ5dGVzIF9kYXRhIix7dHlwZToiYnl0ZXMiLG5hbWU6Il9kYXRhIn1dLFsiYnl0ZXMgZGF0YSIse3R5cGU6ImJ5dGVzIixuYW1lOiJkYXRhIn1dLFsiYnl0ZXMgc2lnbmF0dXJlIix7dHlwZToiYnl0ZXMiLG5hbWU6InNpZ25hdHVyZSJ9XSxbImJ5dGVzMzIgaGFzaCIse3R5cGU6ImJ5dGVzMzIiLG5hbWU6Imhhc2gifV0sWyJieXRlczMyIHIiLHt0eXBlOiJieXRlczMyIixuYW1lOiJyIn1dLFsiYnl0ZXMzMiByb290Iix7dHlwZToiYnl0ZXMzMiIsbmFtZToicm9vdCJ9XSxbImJ5dGVzMzIgcyIse3R5cGU6ImJ5dGVzMzIiLG5hbWU6InMifV0sWyJzdHJpbmcgbmFtZSIse3R5cGU6InN0cmluZyIsbmFtZToibmFtZSJ9XSxbInN0cmluZyBzeW1ib2wiLHt0eXBlOiJzdHJpbmciLG5hbWU6InN5bWJvbCJ9XSxbInN0cmluZyB0b2tlblVSSSIse3R5cGU6InN0cmluZyIsbmFtZToidG9rZW5VUkkifV0sWyJ1aW50IHRva2VuSWQiLHt0eXBlOiJ1aW50MjU2IixuYW1lOiJ0b2tlbklkIn1dLFsidWludDggdiIse3R5cGU6InVpbnQ4IixuYW1lOiJ2In1dLFsidWludDI1NiBiYWxhbmNlIix7dHlwZToidWludDI1NiIsbmFtZToiYmFsYW5jZSJ9XSxbInVpbnQyNTYgdG9rZW5JZCIse3R5cGU6InVpbnQyNTYiLG5hbWU6InRva2VuSWQifV0sWyJ1aW50MjU2IHZhbHVlIix7dHlwZToidWludDI1NiIsbmFtZToidmFsdWUifV0sWyJldmVudDphZGRyZXNzIGluZGV4ZWQgZnJvbSIse3R5cGU6ImFkZHJlc3MiLG5hbWU6ImZyb20iLGluZGV4ZWQ6ITB9XSxbImV2ZW50OmFkZHJlc3MgaW5kZXhlZCB0byIse3R5cGU6ImFkZHJlc3MiLG5hbWU6InRvIixpbmRleGVkOiEwfV0sWyJldmVudDp1aW50IGluZGV4ZWQgdG9rZW5JZCIse3R5cGU6InVpbnQyNTYiLG5hbWU6InRva2VuSWQiLGluZGV4ZWQ6ITB9XSxbImV2ZW50OnVpbnQyNTYgaW5kZXhlZCB0b2tlbklkIix7dHlwZToidWludDI1NiIsbmFtZToidG9rZW5JZCIsaW5kZXhlZDohMH1dXSk7ZnVuY3Rpb24gVFcodCxlPXt9KXtpZihvVyh0KSlyZXR1cm4gSVcodCxlKTtpZihpVyh0KSlyZXR1cm4gUlcodCxlKTtpZihyVyh0KSlyZXR1cm4gTlcodCxlKTtpZihsVyh0KSlyZXR1cm4gUFcodCxlKTtpZihkVyh0KSlyZXR1cm4gT1codCk7aWYoZlcodCkpcmV0dXJue3R5cGU6InJlY2VpdmUiLHN0YXRlTXV0YWJpbGl0eToicGF5YWJsZSJ9O3Rocm93IG5ldyB4Vyh7c2lnbmF0dXJlOnR9KX1mdW5jdGlvbiBJVyh0LGU9e30pe2NvbnN0IHI9YVcodCk7aWYoIXIpdGhyb3cgbmV3IHNwKHtzaWduYXR1cmU6dCx0eXBlOiJmdW5jdGlvbiJ9KTtjb25zdCBuPVNzKHIucGFyYW1ldGVycykscz1bXSxpPW4ubGVuZ3RoO2ZvcihsZXQgYT0wO2E8aTthKyspcy5wdXNoKG11KG5bYV0se21vZGlmaWVyczpPQyxzdHJ1Y3RzOmUsdHlwZToiZnVuY3Rpb24ifSkpO2NvbnN0IG89W107aWYoci5yZXR1cm5zKXtjb25zdCBhPVNzKHIucmV0dXJucyksYz1hLmxlbmd0aDtmb3IobGV0IGw9MDtsPGM7bCsrKW8ucHVzaChtdShhW2xdLHttb2RpZmllcnM6T0Msc3RydWN0czplLHR5cGU6ImZ1bmN0aW9uIn0pKX1yZXR1cm57bmFtZTpyLm5hbWUsdHlwZToiZnVuY3Rpb24iLHN0YXRlTXV0YWJpbGl0eTpyLnN0YXRlTXV0YWJpbGl0eT8/Im5vbnBheWFibGUiLGlucHV0czpzLG91dHB1dHM6b319ZnVuY3Rpb24gUlcodCxlPXt9KXtjb25zdCByPXNXKHQpO2lmKCFyKXRocm93IG5ldyBzcCh7c2lnbmF0dXJlOnQsdHlwZToiZXZlbnQifSk7Y29uc3Qgbj1TcyhyLnBhcmFtZXRlcnMpLHM9W10saT1uLmxlbmd0aDtmb3IobGV0IG89MDtvPGk7bysrKXMucHVzaChtdShuW29dLHttb2RpZmllcnM6bVcsc3RydWN0czplLHR5cGU6ImV2ZW50In0pKTtyZXR1cm57bmFtZTpyLm5hbWUsdHlwZToiZXZlbnQiLGlucHV0czpzfX1mdW5jdGlvbiBOVyh0LGU9e30pe2NvbnN0IHI9blcodCk7aWYoIXIpdGhyb3cgbmV3IHNwKHtzaWduYXR1cmU6dCx0eXBlOiJlcnJvciJ9KTtjb25zdCBuPVNzKHIucGFyYW1ldGVycykscz1bXSxpPW4ubGVuZ3RoO2ZvcihsZXQgbz0wO288aTtvKyspcy5wdXNoKG11KG5bb10se3N0cnVjdHM6ZSx0eXBlOiJlcnJvciJ9KSk7cmV0dXJue25hbWU6ci5uYW1lLHR5cGU6ImVycm9yIixpbnB1dHM6c319ZnVuY3Rpb24gUFcodCxlPXt9KXtjb25zdCByPXVXKHQpO2lmKCFyKXRocm93IG5ldyBzcCh7c2lnbmF0dXJlOnQsdHlwZToiY29uc3RydWN0b3IifSk7Y29uc3Qgbj1TcyhyLnBhcmFtZXRlcnMpLHM9W10saT1uLmxlbmd0aDtmb3IobGV0IG89MDtvPGk7bysrKXMucHVzaChtdShuW29dLHtzdHJ1Y3RzOmUsdHlwZToiY29uc3RydWN0b3IifSkpO3JldHVybnt0eXBlOiJjb25zdHJ1Y3RvciIsc3RhdGVNdXRhYmlsaXR5OnIuc3RhdGVNdXRhYmlsaXR5Pz8ibm9ucGF5YWJsZSIsaW5wdXRzOnN9fWZ1bmN0aW9uIE9XKHQpe2NvbnN0IGU9aFcodCk7aWYoIWUpdGhyb3cgbmV3IHNwKHtzaWduYXR1cmU6dCx0eXBlOiJmYWxsYmFjayJ9KTtyZXR1cm57dHlwZToiZmFsbGJhY2siLHN0YXRlTXV0YWJpbGl0eTplLnN0YXRlTXV0YWJpbGl0eT8/Im5vbnBheWFibGUifX1jb25zdCAkVz0vXig/PHR5cGU+W2EtekEtWiRfXVthLXpBLVowLTkkX10qKSg/PGFycmF5Pig/OlxbXGQqP1xdKSs/KT8oPzpccyg/PG1vZGlmaWVyPmNhbGxkYXRhfGluZGV4ZWR8bWVtb3J5fHN0b3JhZ2V7MX0pKT8oPzpccyg/PG5hbWU+W2EtekEtWiRfXVthLXpBLVowLTkkX10qKSk/JC8sTVc9L15cKCg/PHR5cGU+Lis/KVwpKD88YXJyYXk+KD86XFtcZCo/XF0pKz8pPyg/OlxzKD88bW9kaWZpZXI+Y2FsbGRhdGF8aW5kZXhlZHxtZW1vcnl8c3RvcmFnZXsxfSkpPyg/OlxzKD88bmFtZT5bYS16QS1aJF9dW2EtekEtWjAtOSRfXSopKT8kLyxEVz0vXnU/aW50JC87ZnVuY3Rpb24gbXUodCxlKXtjb25zdCByPUFXKHQsZT8udHlwZSxlPy5zdHJ1Y3RzKTtpZihWdi5oYXMocikpcmV0dXJuIFZ2LmdldChyKTtjb25zdCBuPXZPLnRlc3QodCkscz0kYShuP01XOiRXLHQpO2lmKCFzKXRocm93IG5ldyBiVyh7cGFyYW06dH0pO2lmKHMubmFtZSYmTFcocy5uYW1lKSl0aHJvdyBuZXcgeVcoe3BhcmFtOnQsbmFtZTpzLm5hbWV9KTtjb25zdCBpPXMubmFtZT97bmFtZTpzLm5hbWV9Ont9LG89cy5tb2RpZmllcj09PSJpbmRleGVkIj97aW5kZXhlZDohMH06e30sYT1lPy5zdHJ1Y3RzPz97fTtsZXQgYyxsPXt9O2lmKG4pe2M9InR1cGxlIjtjb25zdCB1PVNzKHMudHlwZSksaD1bXSxwPXUubGVuZ3RoO2ZvcihsZXQgZj0wO2Y8cDtmKyspaC5wdXNoKG11KHVbZl0se3N0cnVjdHM6YX0pKTtsPXtjb21wb25lbnRzOmh9fWVsc2UgaWYocy50eXBlIGluIGEpYz0idHVwbGUiLGw9e2NvbXBvbmVudHM6YVtzLnR5cGVdfTtlbHNlIGlmKERXLnRlc3Qocy50eXBlKSljPWAke3MudHlwZX0yNTZgO2Vsc2UgaWYoYz1zLnR5cGUsZT8udHlwZSE9PSJzdHJ1Y3QiJiYhVE8oYykpdGhyb3cgbmV3IHdXKHt0eXBlOmN9KTtpZihzLm1vZGlmaWVyKXtpZighZT8ubW9kaWZpZXJzPy5oYXM/LihzLm1vZGlmaWVyKSl0aHJvdyBuZXcgdlcoe3BhcmFtOnQsdHlwZTplPy50eXBlLG1vZGlmaWVyOnMubW9kaWZpZXJ9KTtpZihPQy5oYXMocy5tb2RpZmllcikmJiFVVyhjLCEhcy5hcnJheSkpdGhyb3cgbmV3IEVXKHtwYXJhbTp0LHR5cGU6ZT8udHlwZSxtb2RpZmllcjpzLm1vZGlmaWVyfSl9Y29uc3QgZD17dHlwZTpgJHtjfSR7cy5hcnJheT8/IiJ9YCwuLi5pLC4uLm8sLi4ubH07cmV0dXJuIFZ2LnNldChyLGQpLGR9ZnVuY3Rpb24gU3ModCxlPVtdLHI9IiIsbj0wKXtjb25zdCBzPXQudHJpbSgpLmxlbmd0aDtmb3IobGV0IGk9MDtpPHM7aSsrKXtjb25zdCBvPXRbaV0sYT10LnNsaWNlKGkrMSk7c3dpdGNoKG8pe2Nhc2UiLCI6cmV0dXJuIG49PT0wP1NzKGEsWy4uLmUsci50cmltKCldKTpTcyhhLGUsYCR7cn0ke299YCxuKTtjYXNlIigiOnJldHVybiBTcyhhLGUsYCR7cn0ke299YCxuKzEpO2Nhc2UiKSI6cmV0dXJuIFNzKGEsZSxgJHtyfSR7b31gLG4tMSk7ZGVmYXVsdDpyZXR1cm4gU3MoYSxlLGAke3J9JHtvfWAsbil9fWlmKHI9PT0iIilyZXR1cm4gZTtpZihuIT09MCl0aHJvdyBuZXcgU1coe2N1cnJlbnQ6cixkZXB0aDpufSk7cmV0dXJuIGUucHVzaChyLnRyaW0oKSksZX1mdW5jdGlvbiBUTyh0KXtyZXR1cm4gdD09PSJhZGRyZXNzInx8dD09PSJib29sInx8dD09PSJmdW5jdGlvbiJ8fHQ9PT0ic3RyaW5nInx8Yk8udGVzdCh0KXx8eU8udGVzdCh0KX1jb25zdCBCVz0vXig/OmFmdGVyfGFsaWFzfGFub255bW91c3xhcHBseXxhdXRvfGJ5dGV8Y2FsbGRhdGF8Y2FzZXxjYXRjaHxjb25zdGFudHxjb3B5b2Z8ZGVmYXVsdHxkZWZpbmVkfGVycm9yfGV2ZW50fGV4dGVybmFsfGZhbHNlfGZpbmFsfGZ1bmN0aW9ufGltbXV0YWJsZXxpbXBsZW1lbnRzfGlufGluZGV4ZWR8aW5saW5lfGludGVybmFsfGxldHxtYXBwaW5nfG1hdGNofG1lbW9yeXxtdXRhYmxlfG51bGx8b2Z8b3ZlcnJpZGV8cGFydGlhbHxwcml2YXRlfHByb21pc2V8cHVibGljfHB1cmV8cmVmZXJlbmNlfHJlbG9jYXRhYmxlfHJldHVybnxyZXR1cm5zfHNpemVvZnxzdGF0aWN8c3RvcmFnZXxzdHJ1Y3R8c3VwZXJ8c3VwcG9ydHN8c3dpdGNofHRoaXN8dHJ1ZXx0cnl8dHlwZWRlZnx0eXBlb2Z8dmFyfHZpZXd8dmlydHVhbCkkLztmdW5jdGlvbiBMVyh0KXtyZXR1cm4gdD09PSJhZGRyZXNzInx8dD09PSJib29sInx8dD09PSJmdW5jdGlvbiJ8fHQ9PT0ic3RyaW5nInx8dD09PSJ0dXBsZSJ8fGJPLnRlc3QodCl8fHlPLnRlc3QodCl8fEJXLnRlc3QodCl9ZnVuY3Rpb24gVVcodCxlKXtyZXR1cm4gZXx8dD09PSJieXRlcyJ8fHQ9PT0ic3RyaW5nInx8dD09PSJ0dXBsZSJ9ZnVuY3Rpb24gRlcodCl7Y29uc3QgZT17fSxyPXQubGVuZ3RoO2ZvcihsZXQgbz0wO288cjtvKyspe2NvbnN0IGE9dFtvXTtpZigha08oYSkpY29udGludWU7Y29uc3QgYz1jVyhhKTtpZighYyl0aHJvdyBuZXcgc3Aoe3NpZ25hdHVyZTphLHR5cGU6InN0cnVjdCJ9KTtjb25zdCBsPWMucHJvcGVydGllcy5zcGxpdCgiOyIpLGQ9W10sdT1sLmxlbmd0aDtmb3IobGV0IGg9MDtoPHU7aCsrKXtjb25zdCBmPWxbaF0udHJpbSgpO2lmKCFmKWNvbnRpbnVlO2NvbnN0IG09bXUoZix7dHlwZToic3RydWN0In0pO2QucHVzaChtKX1pZighZC5sZW5ndGgpdGhyb3cgbmV3IF9XKHtzaWduYXR1cmU6YX0pO2VbYy5uYW1lXT1kfWNvbnN0IG49e30scz1PYmplY3QuZW50cmllcyhlKSxpPXMubGVuZ3RoO2ZvcihsZXQgbz0wO288aTtvKyspe2NvbnN0W2EsY109c1tvXTtuW2FdPUlPKGMsZSl9cmV0dXJuIG59Y29uc3Qgalc9L14oPzx0eXBlPlthLXpBLVokX11bYS16QS1aMC05JF9dKikoPzxhcnJheT4oPzpcW1xkKj9cXSkrPyk/JC87ZnVuY3Rpb24gSU8odCxlLHI9bmV3IFNldCl7Y29uc3Qgbj1bXSxzPXQubGVuZ3RoO2ZvcihsZXQgaT0wO2k8cztpKyspe2NvbnN0IG89dFtpXTtpZih2Ty50ZXN0KG8udHlwZSkpbi5wdXNoKG8pO2Vsc2V7Y29uc3QgYz0kYShqVyxvLnR5cGUpO2lmKCFjPy50eXBlKXRocm93IG5ldyBDVyh7YWJpUGFyYW1ldGVyOm99KTtjb25zdHthcnJheTpsLHR5cGU6ZH09YztpZihkIGluIGUpe2lmKHIuaGFzKGQpKXRocm93IG5ldyBrVyh7dHlwZTpkfSk7bi5wdXNoKHsuLi5vLHR5cGU6YHR1cGxlJHtsPz8iIn1gLGNvbXBvbmVudHM6SU8oZVtkXT8/W10sZSxuZXcgU2V0KFsuLi5yLGRdKSl9KX1lbHNlIGlmKFRPKGQpKW4ucHVzaChvKTtlbHNlIHRocm93IG5ldyBnVyh7dHlwZTpkfSl9fXJldHVybiBufWZ1bmN0aW9uIFJPKHQpe2NvbnN0IGU9RlcodCkscj1bXSxuPXQubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bjtzKyspe2NvbnN0IGk9dFtzXTtrTyhpKXx8ci5wdXNoKFRXKGksZSkpfXJldHVybiByfWZ1bmN0aW9uIHpXKHQpe2xldCBlPSEwLHI9IiIsbj0wLHM9IiIsaT0hMTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7Y29uc3QgYT10W29dO2lmKFsiKCIsIikiLCIsIl0uaW5jbHVkZXMoYSkmJihlPSEwKSxhPT09IigiJiZuKyssYT09PSIpIiYmbi0tLCEhZSl7aWYobj09PTApe2lmKGE9PT0iICImJlsiZXZlbnQiLCJmdW5jdGlvbiIsIiJdLmluY2x1ZGVzKHMpKXM9IiI7ZWxzZSBpZihzKz1hLGE9PT0iKSIpe2k9ITA7YnJlYWt9Y29udGludWV9aWYoYT09PSIgIil7dFtvLTFdIT09IiwiJiZyIT09IiwiJiZyIT09IiwoIiYmKHI9IiIsZT0hMSk7Y29udGludWV9cys9YSxyKz1hfX1pZighaSl0aHJvdyBuZXcgRWUoIlVuYWJsZSB0byBub3JtYWxpemUgc2lnbmF0dXJlLiIpO3JldHVybiBzfWNvbnN0IFdXPXQ9Pntjb25zdCBlPXR5cGVvZiB0PT0ic3RyaW5nIj90OnRXKHQpO3JldHVybiB6VyhlKX07ZnVuY3Rpb24gTk8odCl7cmV0dXJuIFF6KFdXKHQpKX1jb25zdCBvNj1OTyxlMT10PT5wdShOTyh0KSwwLDQpO2Z1bmN0aW9uIHQxKHQpe2NvbnN0e2FiaTplLGFyZ3M6cj1bXSxuYW1lOm59PXQscz1mYShuLHtzdHJpY3Q6ITF9KSxpPWUuZmlsdGVyKGE9PnM/YS50eXBlPT09ImZ1bmN0aW9uIj9lMShhKT09PW46YS50eXBlPT09ImV2ZW50Ij9vNihhKT09PW46ITE6Im5hbWUiaW4gYSYmYS5uYW1lPT09bik7aWYoaS5sZW5ndGg9PT0wKXJldHVybjtpZihpLmxlbmd0aD09PTEpcmV0dXJuIGlbMF07bGV0IG87Zm9yKGNvbnN0IGEgb2YgaSl7aWYoISgiaW5wdXRzImluIGEpKWNvbnRpbnVlO2lmKCFyfHxyLmxlbmd0aD09PTApe2lmKCFhLmlucHV0c3x8YS5pbnB1dHMubGVuZ3RoPT09MClyZXR1cm4gYTtjb250aW51ZX1pZighYS5pbnB1dHN8fGEuaW5wdXRzLmxlbmd0aD09PTB8fGEuaW5wdXRzLmxlbmd0aCE9PXIubGVuZ3RoKWNvbnRpbnVlO2lmKHIuZXZlcnkoKGwsZCk9Pntjb25zdCB1PSJpbnB1dHMiaW4gYSYmYS5pbnB1dHNbZF07cmV0dXJuIHU/JEMobCx1KTohMX0pKXtpZihvJiYiaW5wdXRzImluIG8mJm8uaW5wdXRzKXtjb25zdCBsPVBPKGEuaW5wdXRzLG8uaW5wdXRzLHIpO2lmKGwpdGhyb3cgbmV3IFFGKHthYmlJdGVtOmEsdHlwZTpsWzBdfSx7YWJpSXRlbTpvLHR5cGU6bFsxXX0pfW89YX19cmV0dXJuIG98fGlbMF19ZnVuY3Rpb24gJEModCxlKXtjb25zdCByPXR5cGVvZiB0LG49ZS50eXBlO3N3aXRjaChuKXtjYXNlImFkZHJlc3MiOnJldHVybiAkcih0LHtzdHJpY3Q6ITF9KTtjYXNlImJvb2wiOnJldHVybiByPT09ImJvb2xlYW4iO2Nhc2UiZnVuY3Rpb24iOnJldHVybiByPT09InN0cmluZyI7Y2FzZSJzdHJpbmciOnJldHVybiByPT09InN0cmluZyI7ZGVmYXVsdDpyZXR1cm4gbj09PSJ0dXBsZSImJiJjb21wb25lbnRzImluIGU/T2JqZWN0LnZhbHVlcyhlLmNvbXBvbmVudHMpLmV2ZXJ5KChzLGkpPT4kQyhPYmplY3QudmFsdWVzKHQpW2ldLHMpKTovXnU/aW50KDh8MTZ8MjR8MzJ8NDB8NDh8NTZ8NjR8NzJ8ODB8ODh8OTZ8MTA0fDExMnwxMjB8MTI4fDEzNnwxNDR8MTUyfDE2MHwxNjh8MTc2fDE4NHwxOTJ8MjAwfDIwOHwyMTZ8MjI0fDIzMnwyNDB8MjQ4fDI1Nik/JC8udGVzdChuKT9yPT09Im51bWJlciJ8fHI9PT0iYmlnaW50IjovXmJ5dGVzKFsxLTldfDFbMC05XXwyWzAtOV18M1swLTJdKT8kLy50ZXN0KG4pP3I9PT0ic3RyaW5nInx8dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk6L1thLXpdK1sxLTldezAsM30oXFtbMC05XXswLH1cXSkrJC8udGVzdChuKT9BcnJheS5pc0FycmF5KHQpJiZ0LmV2ZXJ5KHM9PiRDKHMsey4uLmUsdHlwZTpuLnJlcGxhY2UoLyhcW1swLTldezAsfVxdKSQvLCIiKX0pKTohMX19ZnVuY3Rpb24gUE8odCxlLHIpe2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IHM9dFtuXSxpPWVbbl07aWYocy50eXBlPT09InR1cGxlIiYmaS50eXBlPT09InR1cGxlIiYmImNvbXBvbmVudHMiaW4gcyYmImNvbXBvbmVudHMiaW4gaSlyZXR1cm4gUE8ocy5jb21wb25lbnRzLGkuY29tcG9uZW50cyxyW25dKTtjb25zdCBvPVtzLnR5cGUsaS50eXBlXTtpZihvLmluY2x1ZGVzKCJhZGRyZXNzIikmJm8uaW5jbHVkZXMoImJ5dGVzMjAiKT8hMDpvLmluY2x1ZGVzKCJhZGRyZXNzIikmJm8uaW5jbHVkZXMoInN0cmluZyIpPyRyKHJbbl0se3N0cmljdDohMX0pOm8uaW5jbHVkZXMoImFkZHJlc3MiKSYmby5pbmNsdWRlcygiYnl0ZXMiKT8kcihyW25dLHtzdHJpY3Q6ITF9KTohMSlyZXR1cm4gb319Y29uc3QgR3Y9Ii9kb2NzL2NvbnRyYWN0L2RlY29kZUZ1bmN0aW9uUmVzdWx0IjtmdW5jdGlvbiBhNih0KXtjb25zdHthYmk6ZSxhcmdzOnIsZnVuY3Rpb25OYW1lOm4sZGF0YTpzfT10O2xldCBpPWVbMF07aWYobil7Y29uc3QgYT10MSh7YWJpOmUsYXJnczpyLG5hbWU6bn0pO2lmKCFhKXRocm93IG5ldyBoaChuLHtkb2NzUGF0aDpHdn0pO2k9YX1pZihpLnR5cGUhPT0iZnVuY3Rpb24iKXRocm93IG5ldyBoaCh2b2lkIDAse2RvY3NQYXRoOkd2fSk7aWYoIWkub3V0cHV0cyl0aHJvdyBuZXcgUlAoaS5uYW1lLHtkb2NzUGF0aDpHdn0pO2NvbnN0IG89UW0oaS5vdXRwdXRzLHMpO2lmKG8mJm8ubGVuZ3RoPjEpcmV0dXJuIG87aWYobyYmby5sZW5ndGg9PT0xKXJldHVybiBvWzBdfWNvbnN0IFc4PSIvZG9jcy9jb250cmFjdC9lbmNvZGVGdW5jdGlvbkRhdGEiO2Z1bmN0aW9uIEhXKHQpe2NvbnN0e2FiaTplLGFyZ3M6cixmdW5jdGlvbk5hbWU6bn09dDtsZXQgcz1lWzBdO2lmKG4pe2NvbnN0IGk9dDEoe2FiaTplLGFyZ3M6cixuYW1lOm59KTtpZighaSl0aHJvdyBuZXcgaGgobix7ZG9jc1BhdGg6Vzh9KTtzPWl9aWYocy50eXBlIT09ImZ1bmN0aW9uIil0aHJvdyBuZXcgaGgodm9pZCAwLHtkb2NzUGF0aDpXOH0pO3JldHVybnthYmk6W3NdLGZ1bmN0aW9uTmFtZTplMSh2byhzKSl9fWZ1bmN0aW9uIEN5KHQpe2NvbnN0e2FyZ3M6ZX09dCx7YWJpOnIsZnVuY3Rpb25OYW1lOm59PXQuYWJpLmxlbmd0aD09PTEmJnQuZnVuY3Rpb25OYW1lPy5zdGFydHNXaXRoKCIweCIpP3Q6SFcodCkscz1yWzBdLGk9bixvPSJpbnB1dHMiaW4gcyYmcy5pbnB1dHM/Vm0ocy5pbnB1dHMsZT8/W10pOnZvaWQgMDtyZXR1cm4gaXMoW2ksbz8/IjB4Il0pfWZ1bmN0aW9uIE9PKHtibG9ja051bWJlcjp0LGNoYWluOmUsY29udHJhY3Q6cn0pe2NvbnN0IG49ZT8uY29udHJhY3RzPy5bcl07aWYoIW4pdGhyb3cgbmV3IHlDKHtjaGFpbjplLGNvbnRyYWN0OntuYW1lOnJ9fSk7aWYodCYmbi5ibG9ja0NyZWF0ZWQmJm4uYmxvY2tDcmVhdGVkPnQpdGhyb3cgbmV3IHlDKHtibG9ja051bWJlcjp0LGNoYWluOmUsY29udHJhY3Q6e25hbWU6cixibG9ja0NyZWF0ZWQ6bi5ibG9ja0NyZWF0ZWR9fSk7cmV0dXJuIG4uYWRkcmVzc31jb25zdCBxVz17MToiQW4gYGFzc2VydGAgY29uZGl0aW9uIGZhaWxlZC4iLDE3OiJBcml0aG1ldGljIG9wZXJhdGlvbiByZXN1bHRlZCBpbiB1bmRlcmZsb3cgb3Igb3ZlcmZsb3cuIiwxODoiRGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm8gKGUuZy4gYDUgLyAwYCBvciBgMjMgJSAwYCkuIiwzMzoiQXR0ZW1wdGVkIHRvIGNvbnZlcnQgdG8gYW4gaW52YWxpZCB0eXBlLiIsMzQ6IkF0dGVtcHRlZCB0byBhY2Nlc3MgYSBzdG9yYWdlIGJ5dGUgYXJyYXkgdGhhdCBpcyBpbmNvcnJlY3RseSBlbmNvZGVkLiIsNDk6IlBlcmZvcm1lZCBgLnBvcCgpYCBvbiBhbiBlbXB0eSBhcnJheSIsNTA6IkFycmF5IGluZGV4IGlzIG91dCBvZiBib3VuZHMuIiw2NToiQWxsb2NhdGVkIHRvbyBtdWNoIG1lbW9yeSBvciBjcmVhdGVkIGFuIGFycmF5IHdoaWNoIGlzIHRvbyBsYXJnZS4iLDgxOiJBdHRlbXB0ZWQgdG8gY2FsbCBhIHplcm8taW5pdGlhbGl6ZWQgdmFyaWFibGUgb2YgaW50ZXJuYWwgZnVuY3Rpb24gdHlwZS4ifSwkTz17aW5wdXRzOlt7bmFtZToibWVzc2FnZSIsdHlwZToic3RyaW5nIn1dLG5hbWU6IkVycm9yIix0eXBlOiJlcnJvciJ9LFZXPXtpbnB1dHM6W3tuYW1lOiJyZWFzb24iLHR5cGU6InVpbnQyNTYifV0sbmFtZToiUGFuaWMiLHR5cGU6ImVycm9yIn07ZnVuY3Rpb24gTU8odCl7Y29uc3R7YWJpOmUsZGF0YTpyfT10LG49cHUociwwLDQpO2lmKG49PT0iMHgiKXRocm93IG5ldyBmeTtjb25zdCBpPVsuLi5lfHxbXSwkTyxWV10uZmluZChvPT5vLnR5cGU9PT0iZXJyb3IiJiZuPT09ZTEodm8obykpKTtpZighaSl0aHJvdyBuZXcgVFAobix7ZG9jc1BhdGg6Ii9kb2NzL2NvbnRyYWN0L2RlY29kZUVycm9yUmVzdWx0In0pO3JldHVybnthYmlJdGVtOmksYXJnczoiaW5wdXRzImluIGkmJmkuaW5wdXRzJiZpLmlucHV0cy5sZW5ndGg+MD9RbShpLmlucHV0cyxwdShyLDQpKTp2b2lkIDAsZXJyb3JOYW1lOmkubmFtZX19ZnVuY3Rpb24gRE8oe2FiaUl0ZW06dCxhcmdzOmUsaW5jbHVkZUZ1bmN0aW9uTmFtZTpyPSEwLGluY2x1ZGVOYW1lOm49ITF9KXtpZigibmFtZSJpbiB0JiYiaW5wdXRzImluIHQmJnQuaW5wdXRzKXJldHVybmAke3I/dC5uYW1lOiIifSgke3QuaW5wdXRzLm1hcCgocyxpKT0+YCR7biYmcy5uYW1lP2Ake3MubmFtZX06IGA6IiJ9JHt0eXBlb2YgZVtpXT09Im9iamVjdCI/b2koZVtpXSk6ZVtpXX1gKS5qb2luKCIsICIpfSlgfWNsYXNzIEdXIGV4dGVuZHMgRWV7Y29uc3RydWN0b3IoZSx7YWNjb3VudDpyLGRvY3NQYXRoOm4sY2hhaW46cyxkYXRhOmksZ2FzOm8sZ2FzUHJpY2U6YSxtYXhGZWVQZXJHYXM6YyxtYXhQcmlvcml0eUZlZVBlckdhczpsLG5vbmNlOmQsdG86dSx2YWx1ZTpoLHN0YXRlT3ZlcnJpZGU6cH0pe2NvbnN0IGY9cj9IcyhyKTp2b2lkIDA7bGV0IG09R20oe2Zyb206Zj8uYWRkcmVzcyx0bzp1LHZhbHVlOnR5cGVvZiBoPCJ1IiYmYCR7WTQoaCl9ICR7cz8ubmF0aXZlQ3VycmVuY3k/LnN5bWJvbHx8IkVUSCJ9YCxkYXRhOmksZ2FzOm8sZ2FzUHJpY2U6dHlwZW9mIGE8InUiJiZgJHtzaShhKX0gZ3dlaWAsbWF4RmVlUGVyR2FzOnR5cGVvZiBjPCJ1IiYmYCR7c2koYyl9IGd3ZWlgLG1heFByaW9yaXR5RmVlUGVyR2FzOnR5cGVvZiBsPCJ1IiYmYCR7c2kobCl9IGd3ZWlgLG5vbmNlOmR9KTtwJiYobSs9YA0KJHtBeihwKX1gKSxzdXBlcihlLnNob3J0TWVzc2FnZSx7Y2F1c2U6ZSxkb2NzUGF0aDpuLG1ldGFNZXNzYWdlczpbLi4uZS5tZXRhTWVzc2FnZXM/Wy4uLmUubWV0YU1lc3NhZ2VzLCIgIl06W10sIlJhdyBDYWxsIEFyZ3VtZW50czoiLG1dLmZpbHRlcihCb29sZWFuKSxuYW1lOiJDYWxsRXhlY3V0aW9uRXJyb3IifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImNhdXNlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5jYXVzZT1lfX1jbGFzcyBCTyBleHRlbmRzIEVle2NvbnN0cnVjdG9yKGUse2FiaTpyLGFyZ3M6bixjb250cmFjdEFkZHJlc3M6cyxkb2NzUGF0aDppLGZ1bmN0aW9uTmFtZTpvLHNlbmRlcjphfSl7Y29uc3QgYz10MSh7YWJpOnIsYXJnczpuLG5hbWU6b30pLGw9Yz9ETyh7YWJpSXRlbTpjLGFyZ3M6bixpbmNsdWRlRnVuY3Rpb25OYW1lOiExLGluY2x1ZGVOYW1lOiExfSk6dm9pZCAwLGQ9Yz92byhjLHtpbmNsdWRlTmFtZTohMH0pOnZvaWQgMCx1PUdtKHthZGRyZXNzOnMmJmh6KHMpLGZ1bmN0aW9uOmQsYXJnczpsJiZsIT09IigpIiYmYCR7Wy4uLkFycmF5KG8/Lmxlbmd0aD8/MCkua2V5cygpXS5tYXAoKCk9PiIgIikuam9pbigiIil9JHtsfWAsc2VuZGVyOmF9KTtzdXBlcihlLnNob3J0TWVzc2FnZXx8YEFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZXhlY3V0aW5nIHRoZSBjb250cmFjdCBmdW5jdGlvbiAiJHtvfSIuYCx7Y2F1c2U6ZSxkb2NzUGF0aDppLG1ldGFNZXNzYWdlczpbLi4uZS5tZXRhTWVzc2FnZXM/Wy4uLmUubWV0YU1lc3NhZ2VzLCIgIl06W10sdSYmIkNvbnRyYWN0IENhbGw6Iix1XS5maWx0ZXIoQm9vbGVhbiksbmFtZToiQ29udHJhY3RGdW5jdGlvbkV4ZWN1dGlvbkVycm9yIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJhYmkiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiYXJncyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjYXVzZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjb250cmFjdEFkZHJlc3MiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZm9ybWF0dGVkQXJncyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJmdW5jdGlvbk5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywic2VuZGVyIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5hYmk9cix0aGlzLmFyZ3M9bix0aGlzLmNhdXNlPWUsdGhpcy5jb250cmFjdEFkZHJlc3M9cyx0aGlzLmZ1bmN0aW9uTmFtZT1vLHRoaXMuc2VuZGVyPWF9fWNsYXNzIEtXIGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe2FiaTplLGRhdGE6cixmdW5jdGlvbk5hbWU6bixtZXNzYWdlOnN9KXtsZXQgaSxvLGEsYztpZihyJiZyIT09IjB4Iil0cnl7bz1NTyh7YWJpOmUsZGF0YTpyfSk7Y29uc3R7YWJpSXRlbTpkLGVycm9yTmFtZTp1LGFyZ3M6aH09bztpZih1PT09IkVycm9yIiljPWhbMF07ZWxzZSBpZih1PT09IlBhbmljIil7Y29uc3RbcF09aDtjPXFXW3BdfWVsc2V7Y29uc3QgcD1kP3ZvKGQse2luY2x1ZGVOYW1lOiEwfSk6dm9pZCAwLGY9ZCYmaD9ETyh7YWJpSXRlbTpkLGFyZ3M6aCxpbmNsdWRlRnVuY3Rpb25OYW1lOiExLGluY2x1ZGVOYW1lOiExfSk6dm9pZCAwO2E9W3A/YEVycm9yOiAke3B9YDoiIixmJiZmIT09IigpIj9gICAgICAgICR7Wy4uLkFycmF5KHU/Lmxlbmd0aD8/MCkua2V5cygpXS5tYXAoKCk9PiIgIikuam9pbigiIil9JHtmfWA6IiJdfX1jYXRjaChkKXtpPWR9ZWxzZSBzJiYoYz1zKTtsZXQgbDtpIGluc3RhbmNlb2YgVFAmJihsPWkuc2lnbmF0dXJlLGE9W2BVbmFibGUgdG8gZGVjb2RlIHNpZ25hdHVyZSAiJHtsfSIgYXMgaXQgd2FzIG5vdCBmb3VuZCBvbiB0aGUgcHJvdmlkZWQgQUJJLmAsIk1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIHRoZSBjb3JyZWN0IEFCSSBhbmQgdGhhdCB0aGUgZXJyb3IgZXhpc3RzIG9uIGl0LiIsYFlvdSBjYW4gbG9vayB1cCB0aGUgZGVjb2RlZCBzaWduYXR1cmUgaGVyZTogaHR0cHM6Ly9vcGVuY2hhaW4ueHl6L3NpZ25hdHVyZXM/cXVlcnk9JHtsfS5gXSksc3VwZXIoYyYmYyE9PSJleGVjdXRpb24gcmV2ZXJ0ZWQifHxsP1tgVGhlIGNvbnRyYWN0IGZ1bmN0aW9uICIke259IiByZXZlcnRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgJHtsPyJzaWduYXR1cmUiOiJyZWFzb24ifTpgLGN8fGxdLmpvaW4oYA0KYCk6YFRoZSBjb250cmFjdCBmdW5jdGlvbiAiJHtufSIgcmV2ZXJ0ZWQuYCx7Y2F1c2U6aSxtZXRhTWVzc2FnZXM6YSxuYW1lOiJDb250cmFjdEZ1bmN0aW9uUmV2ZXJ0ZWRFcnJvciJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZGF0YSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJyYXciLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicmVhc29uIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInNpZ25hdHVyZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMuZGF0YT1vLHRoaXMucmF3PXIsdGhpcy5yZWFzb249Yyx0aGlzLnNpZ25hdHVyZT1sfX1jbGFzcyBaVyBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtmdW5jdGlvbk5hbWU6ZX0pe3N1cGVyKGBUaGUgY29udHJhY3QgZnVuY3Rpb24gIiR7ZX0iIHJldHVybmVkIG5vIGRhdGEgKCIweCIpLmAse21ldGFNZXNzYWdlczpbIlRoaXMgY291bGQgYmUgZHVlIHRvIGFueSBvZiB0aGUgZm9sbG93aW5nOiIsYCAgLSBUaGUgY29udHJhY3QgZG9lcyBub3QgaGF2ZSB0aGUgZnVuY3Rpb24gIiR7ZX0iLGAsIiAgLSBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGNvbnRyYWN0IGZ1bmN0aW9uIG1heSBiZSBpbnZhbGlkLCBvciIsIiAgLSBUaGUgYWRkcmVzcyBpcyBub3QgYSBjb250cmFjdC4iXSxuYW1lOiJDb250cmFjdEZ1bmN0aW9uWmVyb0RhdGFFcnJvciJ9KX19Y2xhc3MgWVcgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7ZmFjdG9yeTplfSl7c3VwZXIoYERlcGxveW1lbnQgZm9yIGNvdW50ZXJmYWN0dWFsIGNvbnRyYWN0IGNhbGwgZmFpbGVkJHtlP2AgZm9yIGZhY3RvcnkgIiR7ZX0iLmA6IiJ9YCx7bWV0YU1lc3NhZ2VzOlsiUGxlYXNlIGVuc3VyZToiLCItIFRoZSBgZmFjdG9yeWAgaXMgYSB2YWxpZCBjb250cmFjdCBkZXBsb3ltZW50IGZhY3RvcnkgKGllLiBDcmVhdGUyIEZhY3RvcnksIEVSQy00MzM3IEZhY3RvcnksIGV0YykuIiwiLSBUaGUgYGZhY3RvcnlEYXRhYCBpcyBhIHZhbGlkIGVuY29kZWQgZnVuY3Rpb24gY2FsbCBmb3IgY29udHJhY3QgZGVwbG95bWVudCBmdW5jdGlvbiBvbiB0aGUgZmFjdG9yeS4iXSxuYW1lOiJDb3VudGVyZmFjdHVhbERlcGxveW1lbnRGYWlsZWRFcnJvciJ9KX19Y2xhc3MgYzYgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7ZGF0YTplLG1lc3NhZ2U6cn0pe3N1cGVyKHJ8fCIiLHtuYW1lOiJSYXdDb250cmFjdEVycm9yIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjb2RlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6M30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkYXRhIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksdGhpcy5kYXRhPWV9fWZ1bmN0aW9uIEpXKHQpe2NvbnN0e2FiaTplLGRhdGE6cn09dCxuPXB1KHIsMCw0KSxzPWUuZmluZChpPT5pLnR5cGU9PT0iZnVuY3Rpb24iJiZuPT09ZTEodm8oaSkpKTtpZighcyl0aHJvdyBuZXcgWEYobix7ZG9jc1BhdGg6Ii9kb2NzL2NvbnRyYWN0L2RlY29kZUZ1bmN0aW9uRGF0YSJ9KTtyZXR1cm57ZnVuY3Rpb25OYW1lOnMubmFtZSxhcmdzOiJpbnB1dHMiaW4gcyYmcy5pbnB1dHMmJnMuaW5wdXRzLmxlbmd0aD4wP1FtKHMuaW5wdXRzLHB1KHIsNCkpOnZvaWQgMH19Y29uc3QgS3Y9Ii9kb2NzL2NvbnRyYWN0L2VuY29kZUVycm9yUmVzdWx0IjtmdW5jdGlvbiBIOCh0KXtjb25zdHthYmk6ZSxlcnJvck5hbWU6cixhcmdzOm59PXQ7bGV0IHM9ZVswXTtpZihyKXtjb25zdCBjPXQxKHthYmk6ZSxhcmdzOm4sbmFtZTpyfSk7aWYoIWMpdGhyb3cgbmV3IFM4KHIse2RvY3NQYXRoOkt2fSk7cz1jfWlmKHMudHlwZSE9PSJlcnJvciIpdGhyb3cgbmV3IFM4KHZvaWQgMCx7ZG9jc1BhdGg6S3Z9KTtjb25zdCBpPXZvKHMpLG89ZTEoaSk7bGV0IGE9IjB4IjtpZihuJiZuLmxlbmd0aD4wKXtpZighcy5pbnB1dHMpdGhyb3cgbmV3IFlGKHMubmFtZSx7ZG9jc1BhdGg6S3Z9KTthPVZtKHMuaW5wdXRzLG4pfXJldHVybiBpcyhbbyxhXSl9Y29uc3QgWnY9Ii9kb2NzL2NvbnRyYWN0L2VuY29kZUZ1bmN0aW9uUmVzdWx0IjtmdW5jdGlvbiBYVyh0KXtjb25zdHthYmk6ZSxmdW5jdGlvbk5hbWU6cixyZXN1bHQ6bn09dDtsZXQgcz1lWzBdO2lmKHIpe2NvbnN0IG89dDEoe2FiaTplLG5hbWU6cn0pO2lmKCFvKXRocm93IG5ldyBoaChyLHtkb2NzUGF0aDpadn0pO3M9b31pZihzLnR5cGUhPT0iZnVuY3Rpb24iKXRocm93IG5ldyBoaCh2b2lkIDAse2RvY3NQYXRoOlp2fSk7aWYoIXMub3V0cHV0cyl0aHJvdyBuZXcgUlAocy5uYW1lLHtkb2NzUGF0aDpadn0pO2NvbnN0IGk9KCgpPT57aWYocy5vdXRwdXRzLmxlbmd0aD09PTApcmV0dXJuW107aWYocy5vdXRwdXRzLmxlbmd0aD09PTEpcmV0dXJuW25dO2lmKEFycmF5LmlzQXJyYXkobikpcmV0dXJuIG47dGhyb3cgbmV3IFBQKG4pfSkoKTtyZXR1cm4gVm0ocy5vdXRwdXRzLGkpfWNvbnN0IFFXPSJ4LWJhdGNoLWdhdGV3YXk6dHJ1ZSI7YXN5bmMgZnVuY3Rpb24gZUgodCl7Y29uc3R7ZGF0YTplLGNjaXBSZXF1ZXN0OnJ9PXQse2FyZ3M6W25dfT1KVyh7YWJpOklDLGRhdGE6ZX0pLHM9W10saT1bXTtyZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwobi5tYXAoYXN5bmMobyxhKT0+e3RyeXtpW2FdPWF3YWl0IHIobyksc1thXT0hMX1jYXRjaChjKXtzW2FdPSEwLGlbYV09dEgoYyl9fSkpLFhXKHthYmk6SUMsZnVuY3Rpb25OYW1lOiJxdWVyeSIscmVzdWx0OltzLGldfSl9ZnVuY3Rpb24gdEgodCl7cmV0dXJuIHQubmFtZT09PSJIdHRwUmVxdWVzdEVycm9yIiYmdC5zdGF0dXM/SDgoe2FiaTpJQyxlcnJvck5hbWU6Ikh0dHBFcnJvciIsYXJnczpbdC5zdGF0dXMsdC5zaG9ydE1lc3NhZ2VdfSk6SDgoe2FiaTpbJE9dLGVycm9yTmFtZToiRXJyb3IiLGFyZ3M6WyJzaG9ydE1lc3NhZ2UiaW4gdD90LnNob3J0TWVzc2FnZTp0Lm1lc3NhZ2VdfSl9Y29uc3Qgckg9MztmdW5jdGlvbiBYdyh0LHthYmk6ZSxhZGRyZXNzOnIsYXJnczpuLGRvY3NQYXRoOnMsZnVuY3Rpb25OYW1lOmksc2VuZGVyOm99KXtjb25zdCBhPXQgaW5zdGFuY2VvZiBjNj90OnQgaW5zdGFuY2VvZiBFZT90LndhbGsoZj0+ImRhdGEiaW4gZil8fHQud2FsaygpOnt9LHtjb2RlOmMsZGF0YTpsLGRldGFpbHM6ZCxtZXNzYWdlOnUsc2hvcnRNZXNzYWdlOmh9PWEscD10IGluc3RhbmNlb2YgZnk/bmV3IFpXKHtmdW5jdGlvbk5hbWU6aX0pOltySCxmdS5jb2RlXS5pbmNsdWRlcyhjKSYmKGx8fGR8fHV8fGgpP25ldyBLVyh7YWJpOmUsZGF0YTp0eXBlb2YgbD09Im9iamVjdCI/bC5kYXRhOmwsZnVuY3Rpb25OYW1lOmksbWVzc2FnZTphIGluc3RhbmNlb2YgSjQ/ZDpoPz91fSk6dDtyZXR1cm4gbmV3IEJPKHAse2FiaTplLGFyZ3M6bixjb250cmFjdEFkZHJlc3M6cixkb2NzUGF0aDpzLGZ1bmN0aW9uTmFtZTppLHNlbmRlcjpvfSl9Y29uc3Qgbkg9IjAuMS4xIjtmdW5jdGlvbiBpSCgpe3JldHVybiBuSH1sZXQgTE89Y2xhc3MgTUMgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHI9e30pe2NvbnN0IG49KCgpPT57aWYoci5jYXVzZSBpbnN0YW5jZW9mIE1DKXtpZihyLmNhdXNlLmRldGFpbHMpcmV0dXJuIHIuY2F1c2UuZGV0YWlscztpZihyLmNhdXNlLnNob3J0TWVzc2FnZSlyZXR1cm4gci5jYXVzZS5zaG9ydE1lc3NhZ2V9cmV0dXJuIHIuY2F1c2UmJiJkZXRhaWxzImluIHIuY2F1c2UmJnR5cGVvZiByLmNhdXNlLmRldGFpbHM9PSJzdHJpbmciP3IuY2F1c2UuZGV0YWlsczpyLmNhdXNlPy5tZXNzYWdlP3IuY2F1c2UubWVzc2FnZTpyLmRldGFpbHN9KSgpLHM9ci5jYXVzZSBpbnN0YW5jZW9mIE1DJiZyLmNhdXNlLmRvY3NQYXRofHxyLmRvY3NQYXRoLG89YGh0dHBzOi8vb3hsaWIuc2gke3M/PyIifWAsYT1bZXx8IkFuIGVycm9yIG9jY3VycmVkLiIsLi4uci5tZXRhTWVzc2FnZXM/WyIiLC4uLnIubWV0YU1lc3NhZ2VzXTpbXSwuLi5ufHxzP1siIixuP2BEZXRhaWxzOiAke259YDp2b2lkIDAscz9gU2VlOiAke299YDp2b2lkIDBdOltdXS5maWx0ZXIoYz0+dHlwZW9mIGM9PSJzdHJpbmciKS5qb2luKGANCmApO3N1cGVyKGEsci5jYXVzZT97Y2F1c2U6ci5jYXVzZX06dm9pZCAwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZGV0YWlscyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkb2NzIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImRvY3NQYXRoIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInNob3J0TWVzc2FnZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJjYXVzZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJuYW1lIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6IkJhc2VFcnJvciJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidmVyc2lvbiIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmBveEAke2lIKCl9YH0pLHRoaXMuY2F1c2U9ci5jYXVzZSx0aGlzLmRldGFpbHM9bix0aGlzLmRvY3M9byx0aGlzLmRvY3NQYXRoPXMsdGhpcy5zaG9ydE1lc3NhZ2U9ZX13YWxrKGUpe3JldHVybiBVTyh0aGlzLGUpfX07ZnVuY3Rpb24gVU8odCxlKXtyZXR1cm4gZT8uKHQpP3Q6dCYmdHlwZW9mIHQ9PSJvYmplY3QiJiYiY2F1c2UiaW4gdCYmdC5jYXVzZT9VTyh0LmNhdXNlLGUpOmU/bnVsbDp0fWZ1bmN0aW9uIHNIKHQsZT17fSl7Y29uc3R7ZGlyOnIsc2l6ZTpuPTMyfT1lO2lmKG49PT0wKXJldHVybiB0O2NvbnN0IHM9dC5yZXBsYWNlKCIweCIsIiIpO2lmKHMubGVuZ3RoPm4qMil0aHJvdyBuZXcgY0goe3NpemU6TWF0aC5jZWlsKHMubGVuZ3RoLzIpLHRhcmdldFNpemU6bix0eXBlOiJIZXgifSk7cmV0dXJuYDB4JHtzW3I9PT0icmlnaHQiPyJwYWRFbmQiOiJwYWRTdGFydCJdKG4qMiwiMCIpfWB9ZnVuY3Rpb24gUW8odCxlPXt9KXtjb25zdHtzaWduZWQ6cixzaXplOm59PWUscz1CaWdJbnQodCk7bGV0IGk7bj9yP2k9KDFuPDxCaWdJbnQobikqOG4tMW4pLTFuOmk9Mm4qKihCaWdJbnQobikqOG4pLTFuOnR5cGVvZiB0PT0ibnVtYmVyIiYmKGk9QmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSk7Y29uc3Qgbz10eXBlb2YgaT09ImJpZ2ludCImJnI/LWktMW46MDtpZihpJiZzPml8fHM8byl7Y29uc3QgbD10eXBlb2YgdD09ImJpZ2ludCI/Im4iOiIiO3Rocm93IG5ldyBhSCh7bWF4Omk/YCR7aX0ke2x9YDp2b2lkIDAsbWluOmAke299JHtsfWAsc2lnbmVkOnIsc2l6ZTpuLHZhbHVlOmAke3R9JHtsfWB9KX1jb25zdCBjPWAweCR7KHImJnM8MD8oMW48PEJpZ0ludChuKjgpKStCaWdJbnQocyk6cykudG9TdHJpbmcoMTYpfWA7cmV0dXJuIG4/b0goYyxuKTpjfWZ1bmN0aW9uIG9IKHQsZSl7cmV0dXJuIHNIKHQse2RpcjoibGVmdCIsc2l6ZTplfSl9bGV0IGFIPWNsYXNzIGV4dGVuZHMgTE97Y29uc3RydWN0b3Ioe21heDplLG1pbjpyLHNpZ25lZDpuLHNpemU6cyx2YWx1ZTppfSl7c3VwZXIoYE51bWJlciBcYCR7aX1cYCBpcyBub3QgaW4gc2FmZSR7cz9gICR7cyo4fS1iaXRgOiIifSR7bj8iIHNpZ25lZCI6IiB1bnNpZ25lZCJ9IGludGVnZXIgcmFuZ2UgJHtlP2AoXGAke3J9XGAgdG8gXGAke2V9XGApYDpgKGFib3ZlIFxgJHtyfVxgKWB9YCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiSGV4LkludGVnZXJPdXRPZlJhbmdlRXJyb3IifSl9fSxjSD1jbGFzcyBleHRlbmRzIExPe2NvbnN0cnVjdG9yKHtzaXplOmUsdGFyZ2V0U2l6ZTpyLHR5cGU6bn0pe3N1cGVyKGAke24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtuLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCl9IHNpemUgKFxgJHtlfVxgKSBleGNlZWRzIHBhZGRpbmcgc2l6ZSAoXGAke3J9XGApLmApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJuYW1lIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6IkhleC5TaXplRXhjZWVkc1BhZGRpbmdTaXplRXJyb3IifSl9fTtmdW5jdGlvbiBsSCh0KXtyZXR1cm57YWRkcmVzczp0LmFkZHJlc3MsYW1vdW50OlFvKHQuYW1vdW50KSxpbmRleDpRbyh0LmluZGV4KSx2YWxpZGF0b3JJbmRleDpRbyh0LnZhbGlkYXRvckluZGV4KX19ZnVuY3Rpb24gdUgodCl7cmV0dXJuey4uLnR5cGVvZiB0LmJhc2VGZWVQZXJHYXM9PSJiaWdpbnQiJiZ7YmFzZUZlZVBlckdhczpRbyh0LmJhc2VGZWVQZXJHYXMpfSwuLi50eXBlb2YgdC5ibG9iQmFzZUZlZT09ImJpZ2ludCImJntibG9iQmFzZUZlZTpRbyh0LmJsb2JCYXNlRmVlKX0sLi4udHlwZW9mIHQuZmVlUmVjaXBpZW50PT0ic3RyaW5nIiYme2ZlZVJlY2lwaWVudDp0LmZlZVJlY2lwaWVudH0sLi4udHlwZW9mIHQuZ2FzTGltaXQ9PSJiaWdpbnQiJiZ7Z2FzTGltaXQ6UW8odC5nYXNMaW1pdCl9LC4uLnR5cGVvZiB0Lm51bWJlcj09ImJpZ2ludCImJntudW1iZXI6UW8odC5udW1iZXIpfSwuLi50eXBlb2YgdC5wcmV2UmFuZGFvPT0iYmlnaW50IiYme3ByZXZSYW5kYW86UW8odC5wcmV2UmFuZGFvKX0sLi4udHlwZW9mIHQudGltZT09ImJpZ2ludCImJnt0aW1lOlFvKHQudGltZSl9LC4uLnQud2l0aGRyYXdhbHMmJnt3aXRoZHJhd2Fsczp0LndpdGhkcmF3YWxzLm1hcChsSCl9fX1jb25zdCBkSD0iMHg4MmFkNTZjYiIsaEg9IjB4NjA4MDYwNDA1MjM0ODAxNTYxMDAxMDU3NjAwMDgwZmQ1YjUwNjA0MDUxNjEwMThlMzgwMzgwNjEwMThlODMzOTgxMDE2MDQwODE5MDUyNjEwMDJmOTE2MTAxMjQ1NjViNjAwMDgwODM1MTYwMjA4NTAxNjAwMGY1OTA1MDgwM2I2MTAwNDg1NzYwMDA4MGZkNWI2MDAwODA4MzUxNjAyMDg1MDE2MDAwODU1YWYxNjA0MDUxM2Q2MDAwODIzZTgxNjEwMDY3NTczZDgxZmQ1YjNkODFmMzViNjM0ZTQ4N2I3MTYwZTAxYjYwMDA1MjYwNDE2MDA0NTI2MDI0NjAwMGZkNWI2MDAwODI2MDFmODMwMTEyNjEwMDkyNTc2MDAwODBmZDViODE1MTYwMDE2MDAxNjA0MDFiMDM4MTExMTU2MTAwYWI1NzYxMDBhYjYxMDA2YjU2NWI2MDQwNTE2MDFmODIwMTYwMWYxOTkwODExNjYwM2YwMTE2ODEwMTYwMDE2MDAxNjA0MDFiMDM4MTExODI4MjEwMTcxNTYxMDBkOTU3NjEwMGQ5NjEwMDZiNTY1YjYwNDA1MjgxODE1MjgzODIwMTYwMjAwMTg1MTAxNTYxMDBmMTU3NjAwMDgwZmQ1YjYwMDA1YjgyODExMDE1NjEwMTEwNTc2MDIwODE4NjAxODEwMTUxODM4MzAxODIwMTUyMDE2MTAwZjQ1NjViNTA2MDAwOTE4MTAxNjAyMDAxOTE5MDkxNTI5MzkyNTA1MDUwNTY1YjYwMDA4MDYwNDA4Mzg1MDMxMjE1NjEwMTM3NTc2MDAwODBmZDViODI1MTYwMDE2MDAxNjA0MDFiMDM4MTExMTU2MTAxNGQ1NzYwMDA4MGZkNWI2MTAxNTk4NTgyODYwMTYxMDA4MTU2NWI2MDIwODUwMTUxOTA5MzUwOTA1MDYwMDE2MDAxNjA0MDFiMDM4MTExMTU2MTAxNzc1NzYwMDA4MGZkNWI2MTAxODM4NTgyODYwMTYxMDA4MTU2NWI5MTUwNTA5MjUwOTI5MDUwNTZmZSIscEg9IjB4NjA4MDYwNDA1MjM0ODAxNTYxMDAxMDU3NjAwMDgwZmQ1YjUwNjA0MDUxNjEwMmMwMzgwMzgwNjEwMmMwODMzOTgxMDE2MDQwODE5MDUyNjEwMDJmOTE2MTAxZTY1NjViODM2MDAxNjAwMTYwYTAxYjAzMTYzYjYwMDAwMzYxMDBlNDU3NjAwMDgwODM2MDAxNjAwMTYwYTAxYjAzMTY4MzYwNDA1MTYxMDA1YzkxOTA2MTAyNzA1NjViNjAwMDYwNDA1MTgwODMwMzgxNjAwMDg2NWFmMTkxNTA1MDNkODA2MDAwODExNDYxMDA5OTU3NjA0MDUxOTE1MDYwMWYxOTYwM2YzZDAxMTY4MjAxNjA0MDUyM2Q4MjUyM2Q2MDAwNjAyMDg0MDEzZTYxMDA5ZTU2NWI2MDYwOTE1MDViNTA5MTUwOTE1MDgxMTU4MDYxMDBiODU3NTA2MDAxNjAwMTYwYTAxYjAzODYxNjNiMTU1YjE1NjEwMGUxNTc4MDYwNDA1MTYzMTAxYmI5OGQ2MGUwMWI4MTUyNjAwNDAxNjEwMGQ4OTE5MDYxMDI4YzU2NWI2MDQwNTE4MDkxMDM5MGZkNWI1MDUwNWI2MDAwODA4NDUxNjAyMDg2MDE2MDAwODg1YWYxNjA0MDUxM2Q2MDAwODIzZTgxNjEwMTAzNTczZDgxZmQ1YjNkODFmMzViODA1MTYwMDE2MDAxNjBhMDFiMDM4MTE2ODExNDYxMDExZTU3NjAwMDgwZmQ1YjkxOTA1MDU2NWI2MzRlNDg3YjcxNjBlMDFiNjAwMDUyNjA0MTYwMDQ1MjYwMjQ2MDAwZmQ1YjYwMDA1YjgzODExMDE1NjEwMTU0NTc4MTgxMDE1MTgzODIwMTUyNjAyMDAxNjEwMTNjNTY1YjUwNTA2MDAwOTEwMTUyNTY1YjYwMDA4MjYwMWY4MzAxMTI2MTAxNmU1NzYwMDA4MGZkNWI4MTUxNjAwMTYwMDE2MDQwMWIwMzgxMTExNTYxMDE4NzU3NjEwMTg3NjEwMTIzNTY1YjYwNDA1MTYwMWY4MjAxNjAxZjE5OTA4MTE2NjAzZjAxMTY4MTAxNjAwMTYwMDE2MDQwMWIwMzgxMTE4MjgyMTAxNzE1NjEwMWI1NTc2MTAxYjU2MTAxMjM1NjViNjA0MDUyODE4MTUyODM4MjAxNjAyMDAxODUxMDE1NjEwMWNkNTc2MDAwODBmZDViNjEwMWRlODI2MDIwODMwMTYwMjA4NzAxNjEwMTM5NTY1Yjk0OTM1MDUwNTA1MDU2NWI2MDAwODA2MDAwODA2MDgwODU4NzAzMTIxNTYxMDFmYzU3NjAwMDgwZmQ1YjYxMDIwNTg1NjEwMTA3NTY1YjYwMjA4NjAxNTE5MDk0NTA2MDAxNjAwMTYwNDAxYjAzODExMTE1NjEwMjIxNTc2MDAwODBmZDViNjEwMjJkODc4Mjg4MDE2MTAxNWQ1NjViOTM1MDUwNjEwMjNjNjA0MDg2MDE2MTAxMDc1NjViNjA2MDg2MDE1MTkwOTI1MDYwMDE2MDAxNjA0MDFiMDM4MTExMTU2MTAyNTg1NzYwMDA4MGZkNWI2MTAyNjQ4NzgyODgwMTYxMDE1ZDU2NWI5MTUwNTA5Mjk1OTE5NDUwOTI1MDU2NWI2MDAwODI1MTYxMDI4MjgxODQ2MDIwODcwMTYxMDEzOTU2NWI5MTkwOTEwMTkyOTE1MDUwNTY1YjYwMjA4MTUyNjAwMDgyNTE4MDYwMjA4NDAxNTI2MTAyYWI4MTYwNDA4NTAxNjAyMDg3MDE2MTAxMzk1NjViNjAxZjAxNjAxZjE5MTY5MTkwOTEwMTYwNDAwMTkyOTE1MDUwNTZmZSI7ZnVuY3Rpb24gRk8odCx7ZG9jc1BhdGg6ZSwuLi5yfSl7Y29uc3Qgbj0oKCk9Pntjb25zdCBzPVg0KHQscik7cmV0dXJuIHMgaW5zdGFuY2VvZiB5eT90OnN9KSgpO3JldHVybiBuZXcgR1cobix7ZG9jc1BhdGg6ZSwuLi5yfSl9ZnVuY3Rpb24gak8oKXtsZXQgdD0oKT0+e30sZT0oKT0+e307cmV0dXJue3Byb21pc2U6bmV3IFByb21pc2UoKG4scyk9Pnt0PW4sZT1zfSkscmVzb2x2ZTp0LHJlamVjdDplfX1jb25zdCBZdj1uZXcgTWFwO2Z1bmN0aW9uIHpPKHtmbjp0LGlkOmUsc2hvdWxkU3BsaXRCYXRjaDpyLHdhaXQ6bj0wLHNvcnQ6c30pe2NvbnN0IGk9YXN5bmMoKT0+e2NvbnN0IGQ9YygpO28oKTtjb25zdCB1PWQubWFwKCh7YXJnczpofSk9PmgpO3UubGVuZ3RoIT09MCYmdCh1KS50aGVuKGg9PntzJiZBcnJheS5pc0FycmF5KGgpJiZoLnNvcnQocyk7Zm9yKGxldCBwPTA7cDxkLmxlbmd0aDtwKyspe2NvbnN0e3Jlc29sdmU6Zn09ZFtwXTtmPy4oW2hbcF0saF0pfX0pLmNhdGNoKGg9Pntmb3IobGV0IHA9MDtwPGQubGVuZ3RoO3ArKyl7Y29uc3R7cmVqZWN0OmZ9PWRbcF07Zj8uKGgpfX0pfSxvPSgpPT5Zdi5kZWxldGUoZSksYT0oKT0+YygpLm1hcCgoe2FyZ3M6ZH0pPT5kKSxjPSgpPT5Zdi5nZXQoZSl8fFtdLGw9ZD0+WXYuc2V0KGUsWy4uLmMoKSxkXSk7cmV0dXJue2ZsdXNoOm8sYXN5bmMgc2NoZWR1bGUoZCl7Y29uc3R7cHJvbWlzZTp1LHJlc29sdmU6aCxyZWplY3Q6cH09ak8oKTtyZXR1cm4gcj8uKFsuLi5hKCksZF0pJiZpKCksYygpLmxlbmd0aD4wPyhsKHthcmdzOmQscmVzb2x2ZTpoLHJlamVjdDpwfSksdSk6KGwoe2FyZ3M6ZCxyZXNvbHZlOmgscmVqZWN0OnB9KSxzZXRUaW1lb3V0KGksbiksdSl9fX1hc3luYyBmdW5jdGlvbiBsNih0LGUpe2NvbnN0e2FjY291bnQ6cj10LmFjY291bnQsYXV0aG9yaXphdGlvbkxpc3Q6bixiYXRjaDpzPSEhdC5iYXRjaD8ubXVsdGljYWxsLGJsb2NrTnVtYmVyOmksYmxvY2tUYWc6bz0icGVuZGluZyIsYWNjZXNzTGlzdDphLGJsb2JzOmMsYmxvY2tPdmVycmlkZXM6bCxjb2RlOmQsZGF0YTp1LGZhY3Rvcnk6aCxmYWN0b3J5RGF0YTpwLGdhczpmLGdhc1ByaWNlOm0sbWF4RmVlUGVyQmxvYkdhczp3LG1heEZlZVBlckdhczpnLG1heFByaW9yaXR5RmVlUGVyR2FzOnYsbm9uY2U6RSx0bzp4LHZhbHVlOl8sc3RhdGVPdmVycmlkZTprLC4uLkF9PWUsTT1yP0hzKHIpOnZvaWQgMDtpZihkJiYoaHx8cCkpdGhyb3cgbmV3IEVlKCJDYW5ub3QgcHJvdmlkZSBib3RoIGBjb2RlYCAmIGBmYWN0b3J5YC9gZmFjdG9yeURhdGFgIGFzIHBhcmFtZXRlcnMuIik7aWYoZCYmeCl0aHJvdyBuZXcgRWUoIkNhbm5vdCBwcm92aWRlIGJvdGggYGNvZGVgICYgYHRvYCBhcyBwYXJhbWV0ZXJzLiIpO2NvbnN0IFA9ZCYmdSxqPWgmJnAmJngmJnUsVT1QfHxqLFY9UD9nSCh7Y29kZTpkLGRhdGE6dX0pOmo/d0goe2RhdGE6dSxmYWN0b3J5OmgsZmFjdG9yeURhdGE6cCx0bzp4fSk6dTt0cnl7Sm0oZSk7Y29uc3QgYj0odHlwZW9mIGk9PSJiaWdpbnQiP3V0KGkpOnZvaWQgMCl8fG8seT1sP3VIKGwpOnZvaWQgMCxDPW5PKGspLFQ9dC5jaGFpbj8uZm9ybWF0dGVycz8udHJhbnNhY3Rpb25SZXF1ZXN0Py5mb3JtYXQsUj0oVHx8Wm0pKHsuLi52eShBLHtmb3JtYXQ6VH0pLGZyb206TT8uYWRkcmVzcyxhY2Nlc3NMaXN0OmEsYXV0aG9yaXphdGlvbkxpc3Q6bixibG9iczpjLGRhdGE6VixnYXM6ZixnYXNQcmljZTptLG1heEZlZVBlckJsb2JHYXM6dyxtYXhGZWVQZXJHYXM6ZyxtYXhQcmlvcml0eUZlZVBlckdhczp2LG5vbmNlOkUsdG86VT92b2lkIDA6eCx2YWx1ZTpffSk7aWYocyYmZkgoe3JlcXVlc3Q6Un0pJiYhQyYmIXkpdHJ5e3JldHVybiBhd2FpdCBtSCh0LHsuLi5SLGJsb2NrTnVtYmVyOmksYmxvY2tUYWc6b30pfWNhdGNoKFMpe2lmKCEoUyBpbnN0YW5jZW9mIEtQKSYmIShTIGluc3RhbmNlb2YgeUMpKXRocm93IFN9Y29uc3QgST0oKCk9Pntjb25zdCBTPVtSLGJdO3JldHVybiBDJiZ5P1suLi5TLEMseV06Qz9bLi4uUyxDXTp5P1suLi5TLHt9LHldOlN9KSgpLEI9YXdhaXQgdC5yZXF1ZXN0KHttZXRob2Q6ImV0aF9jYWxsIixwYXJhbXM6SX0pO3JldHVybiBCPT09IjB4Ij97ZGF0YTp2b2lkIDB9OntkYXRhOkJ9fWNhdGNoKEYpe2NvbnN0IGI9YkgoRikse29mZmNoYWluTG9va3VwOnksb2ZmY2hhaW5Mb29rdXBTaWduYXR1cmU6Q309YXdhaXQgVGUoYXN5bmMoKT0+e2NvbnN0e29mZmNoYWluTG9va3VwOlQsb2ZmY2hhaW5Mb29rdXBTaWduYXR1cmU6Tn09YXdhaXQgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+ekgpO3JldHVybntvZmZjaGFpbkxvb2t1cDpULG9mZmNoYWluTG9va3VwU2lnbmF0dXJlOk59fSx2b2lkIDApO2lmKHQuY2NpcFJlYWQhPT0hMSYmYj8uc2xpY2UoMCwxMCk9PT1DJiZ4KXJldHVybntkYXRhOmF3YWl0IHkodCx7ZGF0YTpiLHRvOnh9KX07dGhyb3cgVSYmYj8uc2xpY2UoMCwxMCk9PT0iMHgxMDFiYjk4ZCI/bmV3IFlXKHtmYWN0b3J5Omh9KTpGTyhGLHsuLi5lLGFjY291bnQ6TSxjaGFpbjp0LmNoYWlufSl9fWZ1bmN0aW9uIGZIKHtyZXF1ZXN0OnR9KXtjb25zdHtkYXRhOmUsdG86ciwuLi5ufT10O3JldHVybiEoIWV8fGUuc3RhcnRzV2l0aChkSCl8fCFyfHxPYmplY3QudmFsdWVzKG4pLmZpbHRlcihzPT50eXBlb2YgczwidSIpLmxlbmd0aD4wKX1hc3luYyBmdW5jdGlvbiBtSCh0LGUpe2NvbnN0e2JhdGNoU2l6ZTpyPTEwMjQsd2FpdDpuPTB9PXR5cGVvZiB0LmJhdGNoPy5tdWx0aWNhbGw9PSJvYmplY3QiP3QuYmF0Y2gubXVsdGljYWxsOnt9LHtibG9ja051bWJlcjpzLGJsb2NrVGFnOmk9InBlbmRpbmciLGRhdGE6byxtdWx0aWNhbGxBZGRyZXNzOmEsdG86Y309ZTtsZXQgbD1hO2lmKCFsKXtpZighdC5jaGFpbil0aHJvdyBuZXcgS1A7bD1PTyh7YmxvY2tOdW1iZXI6cyxjaGFpbjp0LmNoYWluLGNvbnRyYWN0OiJtdWx0aWNhbGwzIn0pfWNvbnN0IHU9KHR5cGVvZiBzPT0iYmlnaW50Ij91dChzKTp2b2lkIDApfHxpLHtzY2hlZHVsZTpofT16Tyh7aWQ6YCR7dC51aWR9LiR7dX1gLHdhaXQ6bixzaG91bGRTcGxpdEJhdGNoKG0pe3JldHVybiBtLnJlZHVjZSgoZyx7ZGF0YTp2fSk9PmcrKHYubGVuZ3RoLTIpLDApPnIqMn0sZm46YXN5bmMgbT0+e2NvbnN0IHc9bS5tYXAoRT0+KHthbGxvd0ZhaWx1cmU6ITAsY2FsbERhdGE6RS5kYXRhLHRhcmdldDpFLnRvfSkpLGc9Q3koe2FiaTpUQyxhcmdzOlt3XSxmdW5jdGlvbk5hbWU6ImFnZ3JlZ2F0ZTMifSksdj1hd2FpdCB0LnJlcXVlc3Qoe21ldGhvZDoiZXRoX2NhbGwiLHBhcmFtczpbe2RhdGE6Zyx0bzpsfSx1XX0pO3JldHVybiBhNih7YWJpOlRDLGFyZ3M6W3ddLGZ1bmN0aW9uTmFtZToiYWdncmVnYXRlMyIsZGF0YTp2fHwiMHgifSl9fSksW3tyZXR1cm5EYXRhOnAsc3VjY2VzczpmfV09YXdhaXQgaCh7ZGF0YTpvLHRvOmN9KTtpZighZil0aHJvdyBuZXcgYzYoe2RhdGE6cH0pO3JldHVybiBwPT09IjB4Ij97ZGF0YTp2b2lkIDB9OntkYXRhOnB9fWZ1bmN0aW9uIGdIKHQpe2NvbnN0e2NvZGU6ZSxkYXRhOnJ9PXQ7cmV0dXJuIFdQKHthYmk6Uk8oWyJjb25zdHJ1Y3RvcihieXRlcywgYnl0ZXMpIl0pLGJ5dGVjb2RlOmhILGFyZ3M6W2Uscl19KX1mdW5jdGlvbiB3SCh0KXtjb25zdHtkYXRhOmUsZmFjdG9yeTpyLGZhY3RvcnlEYXRhOm4sdG86c309dDtyZXR1cm4gV1Aoe2FiaTpSTyhbImNvbnN0cnVjdG9yKGFkZHJlc3MsIGJ5dGVzLCBhZGRyZXNzLCBieXRlcykiXSksYnl0ZWNvZGU6cEgsYXJnczpbcyxlLHIsbl19KX1mdW5jdGlvbiBiSCh0KXtpZighKHQgaW5zdGFuY2VvZiBFZSkpcmV0dXJuO2NvbnN0IGU9dC53YWxrKCk7cmV0dXJuIHR5cGVvZiBlPy5kYXRhPT0ib2JqZWN0Ij9lLmRhdGE/LmRhdGE6ZS5kYXRhfWFzeW5jIGZ1bmN0aW9uIFdPKHQsZSl7Y29uc3R7YWJpOnIsYWRkcmVzczpuLGFyZ3M6cyxmdW5jdGlvbk5hbWU6aSwuLi5vfT1lLGE9Q3koe2FiaTpyLGFyZ3M6cyxmdW5jdGlvbk5hbWU6aX0pO3RyeXtjb25zdHtkYXRhOmN9PWF3YWl0IFRyKHQsbDYsImNhbGwiKSh7Li4ubyxkYXRhOmEsdG86bn0pO3JldHVybiBhNih7YWJpOnIsYXJnczpzLGZ1bmN0aW9uTmFtZTppLGRhdGE6Y3x8IjB4In0pfWNhdGNoKGMpe3Rocm93IFh3KGMse2FiaTpyLGFkZHJlc3M6bixhcmdzOnMsZG9jc1BhdGg6Ii9kb2NzL2NvbnRyYWN0L3JlYWRDb250cmFjdCIsZnVuY3Rpb25OYW1lOml9KX19ZnVuY3Rpb24geUgodCx7bWV0aG9kOmV9KXtjb25zdCByPXt9O3JldHVybiB0LnRyYW5zcG9ydC50eXBlPT09ImZhbGxiYWNrIiYmdC50cmFuc3BvcnQub25SZXNwb25zZT8uKCh7bWV0aG9kOm4scmVzcG9uc2U6cyxzdGF0dXM6aSx0cmFuc3BvcnQ6b30pPT57aT09PSJzdWNjZXNzIiYmZT09PW4mJihyW3NdPW8ucmVxdWVzdCl9KSxuPT5yW25dfHx0LnJlcXVlc3R9YXN5bmMgZnVuY3Rpb24gdkgodCl7Y29uc3QgZT15SCh0LHttZXRob2Q6ImV0aF9uZXdQZW5kaW5nVHJhbnNhY3Rpb25GaWx0ZXIifSkscj1hd2FpdCB0LnJlcXVlc3Qoe21ldGhvZDoiZXRoX25ld1BlbmRpbmdUcmFuc2FjdGlvbkZpbHRlciJ9KTtyZXR1cm57aWQ6cixyZXF1ZXN0OmUociksdHlwZToidHJhbnNhY3Rpb24ifX1jb25zdCBFSD1uZXcgTWFwLENIPW5ldyBNYXA7ZnVuY3Rpb24geEgodCl7Y29uc3QgZT0ocyxpKT0+KHtjbGVhcjooKT0+aS5kZWxldGUocyksZ2V0OigpPT5pLmdldChzKSxzZXQ6bz0+aS5zZXQocyxvKX0pLHI9ZSh0LEVIKSxuPWUodCxDSCk7cmV0dXJue2NsZWFyOigpPT57ci5jbGVhcigpLG4uY2xlYXIoKX0scHJvbWlzZTpyLHJlc3BvbnNlOm59fWFzeW5jIGZ1bmN0aW9uIF9IKHQse2NhY2hlS2V5OmUsY2FjaGVUaW1lOnI9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZfSl7Y29uc3Qgbj14SChlKSxzPW4ucmVzcG9uc2UuZ2V0KCk7aWYocyYmcj4wJiZuZXcgRGF0ZSgpLmdldFRpbWUoKS1zLmNyZWF0ZWQuZ2V0VGltZSgpPHIpcmV0dXJuIHMuZGF0YTtsZXQgaT1uLnByb21pc2UuZ2V0KCk7aXx8KGk9dCgpLG4ucHJvbWlzZS5zZXQoaSkpO3RyeXtjb25zdCBvPWF3YWl0IGk7cmV0dXJuIG4ucmVzcG9uc2Uuc2V0KHtjcmVhdGVkOm5ldyBEYXRlLGRhdGE6b30pLG99ZmluYWxseXtuLnByb21pc2UuY2xlYXIoKX19Y29uc3Qga0g9dD0+YGJsb2NrTnVtYmVyLiR7dH1gO2FzeW5jIGZ1bmN0aW9uIFNIKHQse2NhY2hlVGltZTplPXQuY2FjaGVUaW1lfT17fSl7Y29uc3Qgcj1hd2FpdCBfSCgoKT0+dC5yZXF1ZXN0KHttZXRob2Q6ImV0aF9ibG9ja051bWJlciJ9KSx7Y2FjaGVLZXk6a0godC51aWQpLGNhY2hlVGltZTplfSk7cmV0dXJuIEJpZ0ludChyKX1mdW5jdGlvbiBITyh0LGUpe2lmKCEkcih0LHtzdHJpY3Q6ITF9KSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6dH0pO2lmKCEkcihlLHtzdHJpY3Q6ITF9KSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6ZX0pO3JldHVybiB0LnRvTG93ZXJDYXNlKCk9PT1lLnRvTG93ZXJDYXNlKCl9Y29uc3QgcTg9Ii9kb2NzL2NvbnRyYWN0L2RlY29kZUV2ZW50TG9nIjtmdW5jdGlvbiBBSCh0KXtjb25zdHthYmk6ZSxkYXRhOnIsc3RyaWN0Om4sdG9waWNzOnN9PXQsaT1uPz8hMCxbbywuLi5hXT1zO2lmKCFvKXRocm93IG5ldyBKRih7ZG9jc1BhdGg6cTh9KTtjb25zdCBjPWUubGVuZ3RoPT09MT9lWzBdOmUuZmluZChtPT5tLnR5cGU9PT0iZXZlbnQiJiZvPT09bzYodm8obSkpKTtpZighKGMmJiJuYW1lImluIGMpfHxjLnR5cGUhPT0iZXZlbnQiKXRocm93IG5ldyBJUChvLHtkb2NzUGF0aDpxOH0pO2NvbnN0e25hbWU6bCxpbnB1dHM6ZH09Yyx1PWQ/LnNvbWUobT0+ISgibmFtZSJpbiBtJiZtLm5hbWUpKTtsZXQgaD11P1tdOnt9O2NvbnN0IHA9ZC5maWx0ZXIobT0+ImluZGV4ZWQiaW4gbSYmbS5pbmRleGVkKTtmb3IobGV0IG09MDttPHAubGVuZ3RoO20rKyl7Y29uc3Qgdz1wW21dLGc9YVttXTtpZighZyl0aHJvdyBuZXcgTlAoe2FiaUl0ZW06YyxwYXJhbTp3fSk7aFt1P206dy5uYW1lfHxtXT1USCh7cGFyYW06dyx2YWx1ZTpnfSl9Y29uc3QgZj1kLmZpbHRlcihtPT4hKCJpbmRleGVkImluIG0mJm0uaW5kZXhlZCkpO2lmKGYubGVuZ3RoPjApe2lmKHImJnIhPT0iMHgiKXRyeXtjb25zdCBtPVFtKGYscik7aWYobSlpZih1KWg9Wy4uLmgsLi4ubV07ZWxzZSBmb3IobGV0IHc9MDt3PGYubGVuZ3RoO3crKyloW2Zbd10ubmFtZV09bVt3XX1jYXRjaChtKXtpZihpKXRocm93IG0gaW5zdGFuY2VvZiBBUHx8bSBpbnN0YW5jZW9mIEhQP25ldyBiQyh7YWJpSXRlbTpjLGRhdGE6cixwYXJhbXM6ZixzaXplOkdyKHIpfSk6bX1lbHNlIGlmKGkpdGhyb3cgbmV3IGJDKHthYmlJdGVtOmMsZGF0YToiMHgiLHBhcmFtczpmLHNpemU6MH0pfXJldHVybntldmVudE5hbWU6bCxhcmdzOk9iamVjdC52YWx1ZXMoaCkubGVuZ3RoPjA/aDp2b2lkIDB9fWZ1bmN0aW9uIFRIKHtwYXJhbTp0LHZhbHVlOmV9KXtyZXR1cm4gdC50eXBlPT09InN0cmluZyJ8fHQudHlwZT09PSJieXRlcyJ8fHQudHlwZT09PSJ0dXBsZSJ8fHQudHlwZS5tYXRjaCgvXiguKilcWyhcZCspP1xdJC8pP2U6KFFtKFt0XSxlKXx8W10pWzBdfWZ1bmN0aW9uIElIKHQpe2NvbnN0e2FiaTplLGFyZ3M6cixsb2dzOm4sc3RyaWN0OnM9ITB9PXQsaT0oKCk9PntpZih0LmV2ZW50TmFtZSlyZXR1cm4gQXJyYXkuaXNBcnJheSh0LmV2ZW50TmFtZSk/dC5ldmVudE5hbWU6W3QuZXZlbnROYW1lXX0pKCk7cmV0dXJuIG4ubWFwKG89Pnt0cnl7Y29uc3QgYT1lLmZpbmQobD0+bC50eXBlPT09ImV2ZW50IiYmby50b3BpY3NbMF09PT1vNihsKSk7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3QgYz1BSCh7Li4ubyxhYmk6W2FdLHN0cmljdDpzfSk7cmV0dXJuIGkmJiFpLmluY2x1ZGVzKGMuZXZlbnROYW1lKXx8IVJIKHthcmdzOmMuYXJncyxpbnB1dHM6YS5pbnB1dHMsbWF0Y2hBcmdzOnJ9KT9udWxsOnsuLi5jLC4uLm99fWNhdGNoKGEpe2xldCBjLGw7aWYoYSBpbnN0YW5jZW9mIElQKXJldHVybiBudWxsO2lmKGEgaW5zdGFuY2VvZiBiQ3x8YSBpbnN0YW5jZW9mIE5QKXtpZihzKXJldHVybiBudWxsO2M9YS5hYmlJdGVtLm5hbWUsbD1hLmFiaUl0ZW0uaW5wdXRzPy5zb21lKGQ9PiEoIm5hbWUiaW4gZCYmZC5uYW1lKSl9cmV0dXJuey4uLm8sYXJnczpsP1tdOnt9LGV2ZW50TmFtZTpjfX19KS5maWx0ZXIoQm9vbGVhbil9ZnVuY3Rpb24gUkgodCl7Y29uc3R7YXJnczplLGlucHV0czpyLG1hdGNoQXJnczpufT10O2lmKCFuKXJldHVybiEwO2lmKCFlKXJldHVybiExO2Z1bmN0aW9uIHMoaSxvLGEpe3RyeXtyZXR1cm4gaS50eXBlPT09ImFkZHJlc3MiP0hPKG8sYSk6aS50eXBlPT09InN0cmluZyJ8fGkudHlwZT09PSJieXRlcyI/cW0obnUobykpPT09YTpvPT09YX1jYXRjaHtyZXR1cm4hMX19cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJkFycmF5LmlzQXJyYXkobik/bi5ldmVyeSgoaSxvKT0+e2lmKGk9PW51bGwpcmV0dXJuITA7Y29uc3QgYT1yW29dO3JldHVybiBhPyhBcnJheS5pc0FycmF5KGkpP2k6W2ldKS5zb21lKGw9PnMoYSxsLGVbb10pKTohMX0pOnR5cGVvZiBlPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoZSkmJnR5cGVvZiBuPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkobik/T2JqZWN0LmVudHJpZXMobikuZXZlcnkoKFtpLG9dKT0+e2lmKG89PW51bGwpcmV0dXJuITA7Y29uc3QgYT1yLmZpbmQobD0+bC5uYW1lPT09aSk7cmV0dXJuIGE/KEFycmF5LmlzQXJyYXkobyk/bzpbb10pLnNvbWUobD0+cyhhLGwsZVtpXSkpOiExfSk6ITF9ZnVuY3Rpb24gdTYodCx7YXJnczplLGV2ZW50TmFtZTpyfT17fSl7cmV0dXJuey4uLnQsYmxvY2tIYXNoOnQuYmxvY2tIYXNoP3QuYmxvY2tIYXNoOm51bGwsYmxvY2tOdW1iZXI6dC5ibG9ja051bWJlcj9CaWdJbnQodC5ibG9ja051bWJlcik6bnVsbCxsb2dJbmRleDp0LmxvZ0luZGV4P051bWJlcih0LmxvZ0luZGV4KTpudWxsLHRyYW5zYWN0aW9uSGFzaDp0LnRyYW5zYWN0aW9uSGFzaD90LnRyYW5zYWN0aW9uSGFzaDpudWxsLHRyYW5zYWN0aW9uSW5kZXg6dC50cmFuc2FjdGlvbkluZGV4P051bWJlcih0LnRyYW5zYWN0aW9uSW5kZXgpOm51bGwsLi4ucj97YXJnczplLGV2ZW50TmFtZTpyfTp7fX19YXN5bmMgZnVuY3Rpb24gTkgodCx7ZmlsdGVyOmV9KXtjb25zdCByPSJzdHJpY3QiaW4gZSYmZS5zdHJpY3Qsbj1hd2FpdCBlLnJlcXVlc3Qoe21ldGhvZDoiZXRoX2dldEZpbHRlckNoYW5nZXMiLHBhcmFtczpbZS5pZF19KTtpZih0eXBlb2YgblswXT09InN0cmluZyIpcmV0dXJuIG47Y29uc3Qgcz1uLm1hcChpPT51NihpKSk7cmV0dXJuISgiYWJpImluIGUpfHwhZS5hYmk/czpJSCh7YWJpOmUuYWJpLGxvZ3M6cyxzdHJpY3Q6cn0pfWFzeW5jIGZ1bmN0aW9uIHFPKHQse2Jsb2NrSGFzaDplLGJsb2NrTnVtYmVyOnIsYmxvY2tUYWc6bixoYXNoOnMsaW5kZXg6aX0pe2NvbnN0IG89bnx8ImxhdGVzdCIsYT1yIT09dm9pZCAwP3V0KHIpOnZvaWQgMDtsZXQgYz1udWxsO2lmKHM/Yz1hd2FpdCB0LnJlcXVlc3Qoe21ldGhvZDoiZXRoX2dldFRyYW5zYWN0aW9uQnlIYXNoIixwYXJhbXM6W3NdfSx7ZGVkdXBlOiEwfSk6ZT9jPWF3YWl0IHQucmVxdWVzdCh7bWV0aG9kOiJldGhfZ2V0VHJhbnNhY3Rpb25CeUJsb2NrSGFzaEFuZEluZGV4IixwYXJhbXM6W2UsdXQoaSldfSx7ZGVkdXBlOiEwfSk6Yz1hd2FpdCB0LnJlcXVlc3Qoe21ldGhvZDoiZXRoX2dldFRyYW5zYWN0aW9uQnlCbG9ja051bWJlckFuZEluZGV4IixwYXJhbXM6W2F8fG8sdXQoaSldfSx7ZGVkdXBlOiEhYX0pLCFjKXRocm93IG5ldyBaUCh7YmxvY2tIYXNoOmUsYmxvY2tOdW1iZXI6cixibG9ja1RhZzpvLGhhc2g6cyxpbmRleDppfSk7cmV0dXJuKHQuY2hhaW4/LmZvcm1hdHRlcnM/LnRyYW5zYWN0aW9uPy5mb3JtYXR8fFhtKShjKX1jb25zdCBQSD17IjB4MCI6InJldmVydGVkIiwiMHgxIjoic3VjY2VzcyJ9O2Z1bmN0aW9uIFZPKHQpe2NvbnN0IGU9ey4uLnQsYmxvY2tOdW1iZXI6dC5ibG9ja051bWJlcj9CaWdJbnQodC5ibG9ja051bWJlcik6bnVsbCxjb250cmFjdEFkZHJlc3M6dC5jb250cmFjdEFkZHJlc3M/dC5jb250cmFjdEFkZHJlc3M6bnVsbCxjdW11bGF0aXZlR2FzVXNlZDp0LmN1bXVsYXRpdmVHYXNVc2VkP0JpZ0ludCh0LmN1bXVsYXRpdmVHYXNVc2VkKTpudWxsLGVmZmVjdGl2ZUdhc1ByaWNlOnQuZWZmZWN0aXZlR2FzUHJpY2U/QmlnSW50KHQuZWZmZWN0aXZlR2FzUHJpY2UpOm51bGwsZ2FzVXNlZDp0Lmdhc1VzZWQ/QmlnSW50KHQuZ2FzVXNlZCk6bnVsbCxsb2dzOnQubG9ncz90LmxvZ3MubWFwKHI9PnU2KHIpKTpudWxsLHRvOnQudG8/dC50bzpudWxsLHRyYW5zYWN0aW9uSW5kZXg6dC50cmFuc2FjdGlvbkluZGV4P21hKHQudHJhbnNhY3Rpb25JbmRleCk6bnVsbCxzdGF0dXM6dC5zdGF0dXM/UEhbdC5zdGF0dXNdOm51bGwsdHlwZTp0LnR5cGU/ZU9bdC50eXBlXXx8dC50eXBlOm51bGx9O3JldHVybiB0LmJsb2JHYXNQcmljZSYmKGUuYmxvYkdhc1ByaWNlPUJpZ0ludCh0LmJsb2JHYXNQcmljZSkpLHQuYmxvYkdhc1VzZWQmJihlLmJsb2JHYXNVc2VkPUJpZ0ludCh0LmJsb2JHYXNVc2VkKSksZX1jb25zdCBHTz1FeSgidHJhbnNhY3Rpb25SZWNlaXB0IixWTyk7YXN5bmMgZnVuY3Rpb24gVjgodCx7aGFzaDplfSl7Y29uc3Qgcj1hd2FpdCB0LnJlcXVlc3Qoe21ldGhvZDoiZXRoX2dldFRyYW5zYWN0aW9uUmVjZWlwdCIscGFyYW1zOltlXX0se2RlZHVwZTohMH0pO2lmKCFyKXRocm93IG5ldyBZUCh7aGFzaDplfSk7cmV0dXJuKHQuY2hhaW4/LmZvcm1hdHRlcnM/LnRyYW5zYWN0aW9uUmVjZWlwdD8uZm9ybWF0fHxWTykocil9YXN5bmMgZnVuY3Rpb24gT0godCxlKXtjb25zdHthY2NvdW50OnIsYWxsb3dGYWlsdXJlOm49ITAsYmF0Y2hTaXplOnMsYmxvY2tOdW1iZXI6aSxibG9ja1RhZzpvLG11bHRpY2FsbEFkZHJlc3M6YSxzdGF0ZU92ZXJyaWRlOmN9PWUsbD1lLmNvbnRyYWN0cyxkPXM/Pyh0eXBlb2YgdC5iYXRjaD8ubXVsdGljYWxsPT0ib2JqZWN0IiYmdC5iYXRjaC5tdWx0aWNhbGwuYmF0Y2hTaXplfHwxMDI0KTtsZXQgdT1hO2lmKCF1KXtpZighdC5jaGFpbil0aHJvdyBuZXcgRXJyb3IoImNsaWVudCBjaGFpbiBub3QgY29uZmlndXJlZC4gbXVsdGljYWxsQWRkcmVzcyBpcyByZXF1aXJlZC4iKTt1PU9PKHtibG9ja051bWJlcjppLGNoYWluOnQuY2hhaW4sY29udHJhY3Q6Im11bHRpY2FsbDMifSl9Y29uc3QgaD1bW11dO2xldCBwPTAsZj0wO2ZvcihsZXQgZz0wO2c8bC5sZW5ndGg7ZysrKXtjb25zdHthYmk6dixhZGRyZXNzOkUsYXJnczp4LGZ1bmN0aW9uTmFtZTpffT1sW2ddO3RyeXtjb25zdCBrPUN5KHthYmk6dixhcmdzOngsZnVuY3Rpb25OYW1lOl99KTtmKz0oay5sZW5ndGgtMikvMixkPjAmJmY+ZCYmaFtwXS5sZW5ndGg+MCYmKHArKyxmPShrLmxlbmd0aC0yKS8yLGhbcF09W10pLGhbcF09Wy4uLmhbcF0se2FsbG93RmFpbHVyZTohMCxjYWxsRGF0YTprLHRhcmdldDpFfV19Y2F0Y2goayl7Y29uc3QgQT1YdyhrLHthYmk6dixhZGRyZXNzOkUsYXJnczp4LGRvY3NQYXRoOiIvZG9jcy9jb250cmFjdC9tdWx0aWNhbGwiLGZ1bmN0aW9uTmFtZTpfLHNlbmRlcjpyfSk7aWYoIW4pdGhyb3cgQTtoW3BdPVsuLi5oW3BdLHthbGxvd0ZhaWx1cmU6ITAsY2FsbERhdGE6IjB4Iix0YXJnZXQ6RX1dfX1jb25zdCBtPWF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChoLm1hcChnPT5Ucih0LFdPLCJyZWFkQ29udHJhY3QiKSh7YWJpOlRDLGFjY291bnQ6cixhZGRyZXNzOnUsYXJnczpbZ10sYmxvY2tOdW1iZXI6aSxibG9ja1RhZzpvLGZ1bmN0aW9uTmFtZToiYWdncmVnYXRlMyIsc3RhdGVPdmVycmlkZTpjfSkpKSx3PVtdO2ZvcihsZXQgZz0wO2c8bS5sZW5ndGg7ZysrKXtjb25zdCB2PW1bZ107aWYodi5zdGF0dXM9PT0icmVqZWN0ZWQiKXtpZighbil0aHJvdyB2LnJlYXNvbjtmb3IobGV0IHg9MDt4PGhbZ10ubGVuZ3RoO3grKyl3LnB1c2goe3N0YXR1czoiZmFpbHVyZSIsZXJyb3I6di5yZWFzb24scmVzdWx0OnZvaWQgMH0pO2NvbnRpbnVlfWNvbnN0IEU9di52YWx1ZTtmb3IobGV0IHg9MDt4PEUubGVuZ3RoO3grKyl7Y29uc3R7cmV0dXJuRGF0YTpfLHN1Y2Nlc3M6a309RVt4XSx7Y2FsbERhdGE6QX09aFtnXVt4XSx7YWJpOk0sYWRkcmVzczpQLGZ1bmN0aW9uTmFtZTpqLGFyZ3M6VX09bFt3Lmxlbmd0aF07dHJ5e2lmKEE9PT0iMHgiKXRocm93IG5ldyBmeTtpZighayl0aHJvdyBuZXcgYzYoe2RhdGE6X30pO2NvbnN0IFY9YTYoe2FiaTpNLGFyZ3M6VSxkYXRhOl8sZnVuY3Rpb25OYW1lOmp9KTt3LnB1c2gobj97cmVzdWx0OlYsc3RhdHVzOiJzdWNjZXNzIn06Vil9Y2F0Y2goVil7Y29uc3QgRj1YdyhWLHthYmk6TSxhZGRyZXNzOlAsYXJnczpVLGRvY3NQYXRoOiIvZG9jcy9jb250cmFjdC9tdWx0aWNhbGwiLGZ1bmN0aW9uTmFtZTpqfSk7aWYoIW4pdGhyb3cgRjt3LnB1c2goe2Vycm9yOkYscmVzdWx0OnZvaWQgMCxzdGF0dXM6ImZhaWx1cmUifSl9fX1pZih3Lmxlbmd0aCE9PWwubGVuZ3RoKXRocm93IG5ldyBFZSgibXVsdGljYWxsIHJlc3VsdHMgbWlzbWF0Y2giKTtyZXR1cm4gd31jb25zdCBvZz1uZXcgbXkoODE5Mik7ZnVuY3Rpb24gJEgodCx7ZW5hYmxlZDplPSEwLGlkOnJ9KXtpZighZXx8IXIpcmV0dXJuIHQoKTtpZihvZy5nZXQocikpcmV0dXJuIG9nLmdldChyKTtjb25zdCBuPXQoKS5maW5hbGx5KCgpPT5vZy5kZWxldGUocikpO3JldHVybiBvZy5zZXQocixuKSxufWFzeW5jIGZ1bmN0aW9uIFF3KHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT5zZXRUaW1lb3V0KGUsdCkpfWZ1bmN0aW9uIGViKHQse2RlbGF5OmU9MTAwLHJldHJ5Q291bnQ6cj0yLHNob3VsZFJldHJ5Om49KCk9PiEwfT17fSl7cmV0dXJuIG5ldyBQcm9taXNlKChzLGkpPT57Y29uc3Qgbz1hc3luYyh7Y291bnQ6YT0wfT17fSk9Pntjb25zdCBjPWFzeW5jKHtlcnJvcjpsfSk9Pntjb25zdCBkPXR5cGVvZiBlPT0iZnVuY3Rpb24iP2Uoe2NvdW50OmEsZXJyb3I6bH0pOmU7ZCYmYXdhaXQgUXcoZCksbyh7Y291bnQ6YSsxfSl9O3RyeXtjb25zdCBsPWF3YWl0IHQoKTtzKGwpfWNhdGNoKGwpe2lmKGE8ciYmYXdhaXQgbih7Y291bnQ6YSxlcnJvcjpsfSkpcmV0dXJuIGMoe2Vycm9yOmx9KTtpKGwpfX07bygpfSl9ZnVuY3Rpb24gTUgodCxlPXt9KXtyZXR1cm4gYXN5bmMocixuPXt9KT0+e2NvbnN0e2RlZHVwZTpzPSExLG1ldGhvZHM6aSxyZXRyeURlbGF5Om89MTUwLHJldHJ5Q291bnQ6YT0zLHVpZDpjfT17Li4uZSwuLi5ufSx7bWV0aG9kOmx9PXI7aWYoaT8uZXhjbHVkZT8uaW5jbHVkZXMobCkpdGhyb3cgbmV3IEpsKG5ldyBFcnJvcigibWV0aG9kIG5vdCBzdXBwb3J0ZWQiKSx7bWV0aG9kOmx9KTtpZihpPy5pbmNsdWRlJiYhaS5pbmNsdWRlLmluY2x1ZGVzKGwpKXRocm93IG5ldyBKbChuZXcgRXJyb3IoIm1ldGhvZCBub3Qgc3VwcG9ydGVkIikse21ldGhvZDpsfSk7Y29uc3QgZD1zP2h5KGAke2N9LiR7b2kocil9YCk6dm9pZCAwO3JldHVybiAkSCgoKT0+ZWIoYXN5bmMoKT0+e3RyeXtyZXR1cm4gYXdhaXQgdChyKX1jYXRjaCh1KXtjb25zdCBoPXU7c3dpdGNoKGguY29kZSl7Y2FzZSBtMC5jb2RlOnRocm93IG5ldyBtMChoKTtjYXNlIGcwLmNvZGU6dGhyb3cgbmV3IGcwKGgpO2Nhc2UgdzAuY29kZTp0aHJvdyBuZXcgdzAoaCx7bWV0aG9kOnIubWV0aG9kfSk7Y2FzZSBiMC5jb2RlOnRocm93IG5ldyBiMChoKTtjYXNlIGZ1LmNvZGU6dGhyb3cgbmV3IGZ1KGgpO2Nhc2UgeTAuY29kZTp0aHJvdyBuZXcgeTAoaCk7Y2FzZSB2MC5jb2RlOnRocm93IG5ldyB2MChoKTtjYXNlIHBjLmNvZGU6dGhyb3cgbmV3IHBjKGgpO2Nhc2UgZ2guY29kZTp0aHJvdyBuZXcgZ2goaCk7Y2FzZSBKbC5jb2RlOnRocm93IG5ldyBKbChoLHttZXRob2Q6ci5tZXRob2R9KTtjYXNlIHdoLmNvZGU6dGhyb3cgbmV3IHdoKGgpO2Nhc2UgRTAuY29kZTp0aHJvdyBuZXcgRTAoaCk7Y2FzZSB1ci5jb2RlOnRocm93IG5ldyB1cihoKTtjYXNlIEMwLmNvZGU6dGhyb3cgbmV3IEMwKGgpO2Nhc2UgeDAuY29kZTp0aHJvdyBuZXcgeDAoaCk7Y2FzZSBfMC5jb2RlOnRocm93IG5ldyBfMChoKTtjYXNlIGswLmNvZGU6dGhyb3cgbmV3IGswKGgpO2Nhc2UgY2kuY29kZTp0aHJvdyBuZXcgY2koaCk7Y2FzZSBTMC5jb2RlOnRocm93IG5ldyBTMChoKTtjYXNlIEEwLmNvZGU6dGhyb3cgbmV3IEEwKGgpO2Nhc2UgVDAuY29kZTp0aHJvdyBuZXcgVDAoaCk7Y2FzZSBJMC5jb2RlOnRocm93IG5ldyBJMChoKTtjYXNlIFIwLmNvZGU6dGhyb3cgbmV3IFIwKGgpO2Nhc2UgTjAuY29kZTp0aHJvdyBuZXcgTjAoaCk7Y2FzZSBQMC5jb2RlOnRocm93IG5ldyBQMChoKTtjYXNlIDVlMzp0aHJvdyBuZXcgdXIoaCk7ZGVmYXVsdDp0aHJvdyB1IGluc3RhbmNlb2YgRWU/dTpuZXcgZnooaCl9fX0se2RlbGF5Oih7Y291bnQ6dSxlcnJvcjpofSk9PntpZihoJiZoIGluc3RhbmNlb2YgaXUpe2NvbnN0IHA9aD8uaGVhZGVycz8uZ2V0KCJSZXRyeS1BZnRlciIpO2lmKHA/Lm1hdGNoKC9cZC8pKXJldHVybiBOdW1iZXIucGFyc2VJbnQocCkqMWUzfXJldHVybn5+KDE8PHUpKm99LHJldHJ5Q291bnQ6YSxzaG91bGRSZXRyeTooe2Vycm9yOnV9KT0+REgodSl9KSx7ZW5hYmxlZDpzLGlkOmR9KX19ZnVuY3Rpb24gREgodCl7cmV0dXJuImNvZGUiaW4gdCYmdHlwZW9mIHQuY29kZT09Im51bWJlciI/dC5jb2RlPT09LTF8fHQuY29kZT09PXdoLmNvZGV8fHQuY29kZT09PWZ1LmNvZGU6dCBpbnN0YW5jZW9mIGl1JiZ0LnN0YXR1cz90LnN0YXR1cz09PTQwM3x8dC5zdGF0dXM9PT00MDh8fHQuc3RhdHVzPT09NDEzfHx0LnN0YXR1cz09PTQyOXx8dC5zdGF0dXM9PT01MDB8fHQuc3RhdHVzPT09NTAyfHx0LnN0YXR1cz09PTUwM3x8dC5zdGF0dXM9PT01MDQ6ITB9Y2xhc3MgQkggZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7Y2FsbGJhY2tTZWxlY3RvcjplLGNhdXNlOnIsZGF0YTpuLGV4dHJhRGF0YTpzLHNlbmRlcjppLHVybHM6b30pe3N1cGVyKHIuc2hvcnRNZXNzYWdlfHwiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZmV0Y2hpbmcgZm9yIGFuIG9mZmNoYWluIHJlc3VsdC4iLHtjYXVzZTpyLG1ldGFNZXNzYWdlczpbLi4uci5tZXRhTWVzc2FnZXN8fFtdLHIubWV0YU1lc3NhZ2VzPy5sZW5ndGg/IiI6W10sIk9mZmNoYWluIEdhdGV3YXkgQ2FsbDoiLG8mJlsiICBHYXRld2F5IFVSTChzKToiLC4uLm8ubWFwKGE9PmAgICAgJHtLbShhKX1gKV0sYCAgU2VuZGVyOiAke2l9YCxgICBEYXRhOiAke259YCxgICBDYWxsYmFjayBzZWxlY3RvcjogJHtlfWAsYCAgRXh0cmEgZGF0YTogJHtzfWBdLmZsYXQoKSxuYW1lOiJPZmZjaGFpbkxvb2t1cEVycm9yIn0pfX1jbGFzcyBMSCBleHRlbmRzIEVle2NvbnN0cnVjdG9yKHtyZXN1bHQ6ZSx1cmw6cn0pe3N1cGVyKCJPZmZjaGFpbiBnYXRld2F5IHJlc3BvbnNlIGlzIG1hbGZvcm1lZC4gUmVzcG9uc2UgZGF0YSBtdXN0IGJlIGEgaGV4IHZhbHVlLiIse21ldGFNZXNzYWdlczpbYEdhdGV3YXkgVVJMOiAke0ttKHIpfWAsYFJlc3BvbnNlOiAke29pKGUpfWBdLG5hbWU6Ik9mZmNoYWluTG9va3VwUmVzcG9uc2VNYWxmb3JtZWRFcnJvciJ9KX19Y2xhc3MgVUggZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7c2VuZGVyOmUsdG86cn0pe3N1cGVyKCJSZXZlcnRlZCBzZW5kZXIgYWRkcmVzcyBkb2VzIG5vdCBtYXRjaCB0YXJnZXQgY29udHJhY3QgYWRkcmVzcyAoYHRvYCkuIix7bWV0YU1lc3NhZ2VzOltgQ29udHJhY3QgYWRkcmVzczogJHtyfWAsYE9mZmNoYWluTG9va3VwIHNlbmRlciBhZGRyZXNzOiAke2V9YF0sbmFtZToiT2ZmY2hhaW5Mb29rdXBTZW5kZXJNaXNtYXRjaEVycm9yIn0pfX1jb25zdCBGSD0iMHg1NTZmMTgzMCIsS089e25hbWU6Ik9mZmNoYWluTG9va3VwIix0eXBlOiJlcnJvciIsaW5wdXRzOlt7bmFtZToic2VuZGVyIix0eXBlOiJhZGRyZXNzIn0se25hbWU6InVybHMiLHR5cGU6InN0cmluZ1tdIn0se25hbWU6ImNhbGxEYXRhIix0eXBlOiJieXRlcyJ9LHtuYW1lOiJjYWxsYmFja0Z1bmN0aW9uIix0eXBlOiJieXRlczQifSx7bmFtZToiZXh0cmFEYXRhIix0eXBlOiJieXRlcyJ9XX07YXN5bmMgZnVuY3Rpb24gakgodCx7YmxvY2tOdW1iZXI6ZSxibG9ja1RhZzpyLGRhdGE6bix0bzpzfSl7Y29uc3R7YXJnczppfT1NTyh7ZGF0YTpuLGFiaTpbS09dfSksW28sYSxjLGwsZF09aSx7Y2NpcFJlYWQ6dX09dCxoPXUmJnR5cGVvZiB1Py5yZXF1ZXN0PT0iZnVuY3Rpb24iP3UucmVxdWVzdDpaTzt0cnl7aWYoIUhPKHMsbykpdGhyb3cgbmV3IFVIKHtzZW5kZXI6byx0bzpzfSk7Y29uc3QgcD1hLmluY2x1ZGVzKFFXKT9hd2FpdCBlSCh7ZGF0YTpjLGNjaXBSZXF1ZXN0Omh9KTphd2FpdCBoKHtkYXRhOmMsc2VuZGVyOm8sdXJsczphfSkse2RhdGE6Zn09YXdhaXQgbDYodCx7YmxvY2tOdW1iZXI6ZSxibG9ja1RhZzpyLGRhdGE6aHUoW2wsVm0oW3t0eXBlOiJieXRlcyJ9LHt0eXBlOiJieXRlcyJ9XSxbcCxkXSldKSx0bzpzfSk7cmV0dXJuIGZ9Y2F0Y2gocCl7dGhyb3cgbmV3IEJIKHtjYWxsYmFja1NlbGVjdG9yOmwsY2F1c2U6cCxkYXRhOm4sZXh0cmFEYXRhOmQsc2VuZGVyOm8sdXJsczphfSl9fWFzeW5jIGZ1bmN0aW9uIFpPKHtkYXRhOnQsc2VuZGVyOmUsdXJsczpyfSl7bGV0IG49bmV3IEVycm9yKCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkLiIpO2ZvcihsZXQgcz0wO3M8ci5sZW5ndGg7cysrKXtjb25zdCBpPXJbc10sbz1pLmluY2x1ZGVzKCJ7ZGF0YX0iKT8iR0VUIjoiUE9TVCIsYT1vPT09IlBPU1QiP3tkYXRhOnQsc2VuZGVyOmV9OnZvaWQgMCxjPW89PT0iUE9TVCI/eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn06e307dHJ5e2NvbnN0IGw9YXdhaXQgZmV0Y2goaS5yZXBsYWNlKCJ7c2VuZGVyfSIsZS50b0xvd2VyQ2FzZSgpKS5yZXBsYWNlKCJ7ZGF0YX0iLHQpLHtib2R5OkpTT04uc3RyaW5naWZ5KGEpLGhlYWRlcnM6YyxtZXRob2Q6b30pO2xldCBkO2lmKGwuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpPy5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi9qc29uIik/ZD0oYXdhaXQgbC5qc29uKCkpLmRhdGE6ZD1hd2FpdCBsLnRleHQoKSwhbC5vayl7bj1uZXcgaXUoe2JvZHk6YSxkZXRhaWxzOmQ/LmVycm9yP29pKGQuZXJyb3IpOmwuc3RhdHVzVGV4dCxoZWFkZXJzOmwuaGVhZGVycyxzdGF0dXM6bC5zdGF0dXMsdXJsOml9KTtjb250aW51ZX1pZighZmEoZCkpe249bmV3IExIKHtyZXN1bHQ6ZCx1cmw6aX0pO2NvbnRpbnVlfXJldHVybiBkfWNhdGNoKGwpe249bmV3IGl1KHtib2R5OmEsZGV0YWlsczpsLm1lc3NhZ2UsdXJsOml9KX19dGhyb3cgbn1jb25zdCB6SD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsY2NpcFJlcXVlc3Q6Wk8sb2ZmY2hhaW5Mb29rdXA6akgsb2ZmY2hhaW5Mb29rdXBBYmlJdGVtOktPLG9mZmNoYWluTG9va3VwU2lnbmF0dXJlOkZIfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2Z1bmN0aW9uICQodCl7cmV0dXJue2Zvcm1hdHRlcnM6dm9pZCAwLGZlZXM6dm9pZCAwLHNlcmlhbGl6ZXJzOnZvaWQgMCwuLi50fX1mdW5jdGlvbiBZTyh0LHtlcnJvckluc3RhbmNlOmU9bmV3IEVycm9yKCJ0aW1lZCBvdXQiKSx0aW1lb3V0OnIsc2lnbmFsOm59KXtyZXR1cm4gbmV3IFByb21pc2UoKHMsaSk9PnsoYXN5bmMoKT0+e2xldCBvO3RyeXtjb25zdCBhPW5ldyBBYm9ydENvbnRyb2xsZXI7cj4wJiYobz1zZXRUaW1lb3V0KCgpPT57bj9hLmFib3J0KCk6aShlKX0scikpLHMoYXdhaXQgdCh7c2lnbmFsOmE/LnNpZ25hbHx8bnVsbH0pKX1jYXRjaChhKXthPy5uYW1lPT09IkFib3J0RXJyb3IiJiZpKGUpLGkoYSl9ZmluYWxseXtjbGVhclRpbWVvdXQobyl9fSkoKX0pfWZ1bmN0aW9uIFdIKCl7cmV0dXJue2N1cnJlbnQ6MCx0YWtlKCl7cmV0dXJuIHRoaXMuY3VycmVudCsrfSxyZXNldCgpe3RoaXMuY3VycmVudD0wfX19Y29uc3QgRzg9V0goKTtmdW5jdGlvbiBISCh0LGU9e30pe3JldHVybnthc3luYyByZXF1ZXN0KHIpe2NvbnN0e2JvZHk6bixvblJlcXVlc3Q6cz1lLm9uUmVxdWVzdCxvblJlc3BvbnNlOmk9ZS5vblJlc3BvbnNlLHRpbWVvdXQ6bz1lLnRpbWVvdXQ/PzFlNH09cixhPXsuLi5lLmZldGNoT3B0aW9ucz8/e30sLi4uci5mZXRjaE9wdGlvbnM/P3t9fSx7aGVhZGVyczpjLG1ldGhvZDpsLHNpZ25hbDpkfT1hO3RyeXtjb25zdCB1PWF3YWl0IFlPKGFzeW5jKHtzaWduYWw6cH0pPT57Y29uc3QgZj17Li4uYSxib2R5OkFycmF5LmlzQXJyYXkobik/b2kobi5tYXAodj0+KHtqc29ucnBjOiIyLjAiLGlkOnYuaWQ/P0c4LnRha2UoKSwuLi52fSkpKTpvaSh7anNvbnJwYzoiMi4wIixpZDpuLmlkPz9HOC50YWtlKCksLi4ubn0pLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIiwuLi5jfSxtZXRob2Q6bHx8IlBPU1QiLHNpZ25hbDpkfHwobz4wP3A6bnVsbCl9LG09bmV3IFJlcXVlc3QodCxmKSx3PWF3YWl0IHM/LihtLGYpPz97Li4uZix1cmw6dH07cmV0dXJuIGF3YWl0IGZldGNoKHcudXJsPz90LHcpfSx7ZXJyb3JJbnN0YW5jZTpuZXcgJDgoe2JvZHk6bix1cmw6dH0pLHRpbWVvdXQ6byxzaWduYWw6ITB9KTtpJiZhd2FpdCBpKHUpO2xldCBoO2lmKHUuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpPy5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi9qc29uIikpaD1hd2FpdCB1Lmpzb24oKTtlbHNle2g9YXdhaXQgdS50ZXh0KCk7dHJ5e2g9SlNPTi5wYXJzZShofHwie30iKX1jYXRjaChwKXtpZih1Lm9rKXRocm93IHA7aD17ZXJyb3I6aH19fWlmKCF1Lm9rKXRocm93IG5ldyBpdSh7Ym9keTpuLGRldGFpbHM6b2koaC5lcnJvcil8fHUuc3RhdHVzVGV4dCxoZWFkZXJzOnUuaGVhZGVycyxzdGF0dXM6dS5zdGF0dXMsdXJsOnR9KTtyZXR1cm4gaH1jYXRjaCh1KXt0aHJvdyB1IGluc3RhbmNlb2YgaXV8fHUgaW5zdGFuY2VvZiAkOD91Om5ldyBpdSh7Ym9keTpuLGNhdXNlOnUsdXJsOnR9KX19fX1mdW5jdGlvbiBxSCh0KXtjb25zdHthdXRob3JpemF0aW9uTGlzdDplfT10O2lmKGUpZm9yKGNvbnN0IHIgb2YgZSl7Y29uc3R7Y2hhaW5JZDpufT1yLHM9ci5hZGRyZXNzO2lmKCEkcihzKSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6c30pO2lmKG48MCl0aHJvdyBuZXcgbnAoe2NoYWluSWQ6bn0pfWQ2KHQpfWZ1bmN0aW9uIFZIKHQpe2NvbnN0e2Jsb2JWZXJzaW9uZWRIYXNoZXM6ZX09dDtpZihlKXtpZihlLmxlbmd0aD09PTApdGhyb3cgbmV3IHBPO2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IG49R3Iocikscz1tYShwdShyLDAsMSkpO2lmKG4hPT0zMil0aHJvdyBuZXcgTHooe2hhc2g6cixzaXplOm59KTtpZihzIT09aE8pdGhyb3cgbmV3IFV6KHtoYXNoOnIsdmVyc2lvbjpzfSl9fWQ2KHQpfWZ1bmN0aW9uIGQ2KHQpe2NvbnN0e2NoYWluSWQ6ZSxtYXhQcmlvcml0eUZlZVBlckdhczpyLG1heEZlZVBlckdhczpuLHRvOnN9PXQ7aWYoZTw9MCl0aHJvdyBuZXcgbnAoe2NoYWluSWQ6ZX0pO2lmKHMmJiEkcihzKSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6c30pO2lmKG4mJm4+WW0pdGhyb3cgbmV3IHljKHttYXhGZWVQZXJHYXM6bn0pO2lmKHImJm4mJnI+bil0aHJvdyBuZXcgbWgoe21heEZlZVBlckdhczpuLG1heFByaW9yaXR5RmVlUGVyR2FzOnJ9KX1mdW5jdGlvbiBHSCh0KXtjb25zdHtjaGFpbklkOmUsbWF4UHJpb3JpdHlGZWVQZXJHYXM6cixnYXNQcmljZTpuLG1heEZlZVBlckdhczpzLHRvOml9PXQ7aWYoZTw9MCl0aHJvdyBuZXcgbnAoe2NoYWluSWQ6ZX0pO2lmKGkmJiEkcihpKSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6aX0pO2lmKHJ8fHMpdGhyb3cgbmV3IEVlKCJgbWF4RmVlUGVyR2FzYC9gbWF4UHJpb3JpdHlGZWVQZXJHYXNgIGlzIG5vdCBhIHZhbGlkIEVJUC0yOTMwIFRyYW5zYWN0aW9uIGF0dHJpYnV0ZS4iKTtpZihuJiZuPlltKXRocm93IG5ldyB5Yyh7bWF4RmVlUGVyR2FzOm59KX1mdW5jdGlvbiBLSCh0KXtjb25zdHtjaGFpbklkOmUsbWF4UHJpb3JpdHlGZWVQZXJHYXM6cixnYXNQcmljZTpuLG1heEZlZVBlckdhczpzLHRvOml9PXQ7aWYoaSYmISRyKGkpKXRocm93IG5ldyBkbih7YWRkcmVzczppfSk7aWYodHlwZW9mIGU8InUiJiZlPD0wKXRocm93IG5ldyBucCh7Y2hhaW5JZDplfSk7aWYocnx8cyl0aHJvdyBuZXcgRWUoImBtYXhGZWVQZXJHYXNgL2BtYXhQcmlvcml0eUZlZVBlckdhc2AgaXMgbm90IGEgdmFsaWQgTGVnYWN5IFRyYW5zYWN0aW9uIGF0dHJpYnV0ZS4iKTtpZihuJiZuPlltKXRocm93IG5ldyB5Yyh7bWF4RmVlUGVyR2FzOm59KX1mdW5jdGlvbiByMSh0KXtpZighdHx8dC5sZW5ndGg9PT0wKXJldHVybltdO2NvbnN0IGU9W107Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2NvbnN0e2FkZHJlc3M6bixzdG9yYWdlS2V5czpzfT10W3JdO2ZvcihsZXQgaT0wO2k8cy5sZW5ndGg7aSsrKWlmKHNbaV0ubGVuZ3RoLTIhPT02NCl0aHJvdyBuZXcgbHooe3N0b3JhZ2VLZXk6c1tpXX0pO2lmKCEkcihuLHtzdHJpY3Q6ITF9KSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6bn0pO2UucHVzaChbbixzXSl9cmV0dXJuIGV9ZnVuY3Rpb24gSk8odCxlKXtjb25zdCByPW1PKHQpO3JldHVybiByPT09ImVpcDE1NTkiP0pIKHQsZSk6cj09PSJlaXAyOTMwIj9YSCh0LGUpOnI9PT0iZWlwNDg0NCI/WUgodCxlKTpyPT09ImVpcDc3MDIiP1pIKHQsZSk6UUgodCxlKX1mdW5jdGlvbiBaSCh0LGUpe2NvbnN0e2F1dGhvcml6YXRpb25MaXN0OnIsY2hhaW5JZDpuLGdhczpzLG5vbmNlOmksdG86byx2YWx1ZTphLG1heEZlZVBlckdhczpjLG1heFByaW9yaXR5RmVlUGVyR2FzOmwsYWNjZXNzTGlzdDpkLGRhdGE6dX09dDtxSCh0KTtjb25zdCBoPXIxKGQpLHA9ZXEocik7cmV0dXJuIGlzKFsiMHgwNCIsRW8oW3FlKG4pLGk/cWUoaSk6IjB4IixsP3FlKGwpOiIweCIsYz9xZShjKToiMHgiLHM/cWUocyk6IjB4IixvPz8iMHgiLGE/cWUoYSk6IjB4Iix1Pz8iMHgiLGgscCwuLi5vcCh0LGUpXSldKX1mdW5jdGlvbiBZSCh0LGUpe2NvbnN0e2NoYWluSWQ6cixnYXM6bixub25jZTpzLHRvOmksdmFsdWU6byxtYXhGZWVQZXJCbG9iR2FzOmEsbWF4RmVlUGVyR2FzOmMsbWF4UHJpb3JpdHlGZWVQZXJHYXM6bCxhY2Nlc3NMaXN0OmQsZGF0YTp1fT10O1ZIKHQpO2xldCBoPXQuYmxvYlZlcnNpb25lZEhhc2hlcyxwPXQuc2lkZWNhcnM7aWYodC5ibG9icyYmKHR5cGVvZiBoPiJ1Inx8dHlwZW9mIHA+InUiKSl7Y29uc3QgRT10eXBlb2YgdC5ibG9ic1swXT09InN0cmluZyI/dC5ibG9iczp0LmJsb2JzLm1hcChrPT5CbihrKSkseD10Lmt6ZyxfPXI2KHtibG9iczpFLGt6Zzp4fSk7aWYodHlwZW9mIGg+InUiJiYoaD1sTyh7Y29tbWl0bWVudHM6X30pKSx0eXBlb2YgcD4idSIpe2NvbnN0IGs9bjYoe2Jsb2JzOkUsY29tbWl0bWVudHM6Xyxremc6eH0pO3A9Zk8oe2Jsb2JzOkUsY29tbWl0bWVudHM6Xyxwcm9vZnM6a30pfX1jb25zdCBmPXIxKGQpLG09W3FlKHIpLHM/cWUocyk6IjB4IixsP3FlKGwpOiIweCIsYz9xZShjKToiMHgiLG4/cWUobik6IjB4IixpPz8iMHgiLG8/cWUobyk6IjB4Iix1Pz8iMHgiLGYsYT9xZShhKToiMHgiLGg/P1tdLC4uLm9wKHQsZSldLHc9W10sZz1bXSx2PVtdO2lmKHApZm9yKGxldCBFPTA7RTxwLmxlbmd0aDtFKyspe2NvbnN0e2Jsb2I6eCxjb21taXRtZW50Ol8scHJvb2Y6a309cFtFXTt3LnB1c2goeCksZy5wdXNoKF8pLHYucHVzaChrKX1yZXR1cm4gaXMoWyIweDAzIixFbyhwP1ttLHcsZyx2XTptKV0pfWZ1bmN0aW9uIEpIKHQsZSl7Y29uc3R7Y2hhaW5JZDpyLGdhczpuLG5vbmNlOnMsdG86aSx2YWx1ZTpvLG1heEZlZVBlckdhczphLG1heFByaW9yaXR5RmVlUGVyR2FzOmMsYWNjZXNzTGlzdDpsLGRhdGE6ZH09dDtkNih0KTtjb25zdCB1PXIxKGwpLGg9W3FlKHIpLHM/cWUocyk6IjB4IixjP3FlKGMpOiIweCIsYT9xZShhKToiMHgiLG4/cWUobik6IjB4IixpPz8iMHgiLG8/cWUobyk6IjB4IixkPz8iMHgiLHUsLi4ub3AodCxlKV07cmV0dXJuIGlzKFsiMHgwMiIsRW8oaCldKX1mdW5jdGlvbiBYSCh0LGUpe2NvbnN0e2NoYWluSWQ6cixnYXM6bixkYXRhOnMsbm9uY2U6aSx0bzpvLHZhbHVlOmEsYWNjZXNzTGlzdDpjLGdhc1ByaWNlOmx9PXQ7R0godCk7Y29uc3QgZD1yMShjKSx1PVtxZShyKSxpP3FlKGkpOiIweCIsbD9xZShsKToiMHgiLG4/cWUobik6IjB4IixvPz8iMHgiLGE/cWUoYSk6IjB4IixzPz8iMHgiLGQsLi4ub3AodCxlKV07cmV0dXJuIGlzKFsiMHgwMSIsRW8odSldKX1mdW5jdGlvbiBRSCh0LGUpe2NvbnN0e2NoYWluSWQ6cj0wLGdhczpuLGRhdGE6cyxub25jZTppLHRvOm8sdmFsdWU6YSxnYXNQcmljZTpjfT10O0tIKHQpO2xldCBsPVtpP3FlKGkpOiIweCIsYz9xZShjKToiMHgiLG4/cWUobik6IjB4IixvPz8iMHgiLGE/cWUoYSk6IjB4IixzPz8iMHgiXTtpZihlKXtjb25zdCBkPSgoKT0+e2lmKGUudj49MzVuKXJldHVybihlLnYtMzVuKS8ybj4wP2UudjoyN24rKGUudj09PTM1bj8wbjoxbik7aWYocj4wKXJldHVybiBCaWdJbnQocioyKStCaWdJbnQoMzVuK2Uudi0yN24pO2NvbnN0IHA9MjduKyhlLnY9PT0yN24/MG46MW4pO2lmKGUudiE9PXApdGhyb3cgbmV3IGF6KHt2OmUudn0pO3JldHVybiBwfSkoKSx1PVBzKGUuciksaD1QcyhlLnMpO2w9Wy4uLmwscWUoZCksdT09PSIweDAwIj8iMHgiOnUsaD09PSIweDAwIj8iMHgiOmhdfWVsc2Ugcj4wJiYobD1bLi4ubCxxZShyKSwiMHgiLCIweCJdKTtyZXR1cm4gRW8obCl9ZnVuY3Rpb24gb3AodCxlKXtjb25zdCByPWU/P3Qse3Y6bix5UGFyaXR5OnN9PXI7aWYodHlwZW9mIHIucj4idSIpcmV0dXJuW107aWYodHlwZW9mIHIucz4idSIpcmV0dXJuW107aWYodHlwZW9mIG4+InUiJiZ0eXBlb2Ygcz4idSIpcmV0dXJuW107Y29uc3QgaT1QcyhyLnIpLG89UHMoci5zKTtyZXR1cm5bdHlwZW9mIHM9PSJudW1iZXIiP3M/cWUoMSk6IjB4IjpuPT09MG4/IjB4IjpuPT09MW4/cWUoMSk6bj09PTI3bj8iMHgiOnFlKDEpLGk9PT0iMHgwMCI/IjB4IjppLG89PT0iMHgwMCI/IjB4IjpvXX1mdW5jdGlvbiBlcSh0KXtpZighdHx8dC5sZW5ndGg9PT0wKXJldHVybltdO2NvbnN0IGU9W107Zm9yKGNvbnN0IHIgb2YgdCl7Y29uc3R7Y2hhaW5JZDpuLG5vbmNlOnMsLi4uaX09cixvPXIuYWRkcmVzcztlLnB1c2goW24/cWUobik6IjB4IixvLHM/cWUocyk6IjB4IiwuLi5vcCh7fSxpKV0pfXJldHVybiBlfWNsYXNzIHRxIGV4dGVuZHMgRWV7Y29uc3RydWN0b3Ioe3ZhbHVlOmV9KXtzdXBlcihgTnVtYmVyIFxgJHtlfVxgIGlzIG5vdCBhIHZhbGlkIGRlY2ltYWwgbnVtYmVyLmAse25hbWU6IkludmFsaWREZWNpbWFsTnVtYmVyRXJyb3IifSl9fWZ1bmN0aW9uIHJxKHQsZSl7aWYoIS9eKC0/KShbMC05XSopXC4/KFswLTldKikkLy50ZXN0KHQpKXRocm93IG5ldyB0cSh7dmFsdWU6dH0pO2xldFtyLG49IjAiXT10LnNwbGl0KCIuIik7Y29uc3Qgcz1yLnN0YXJ0c1dpdGgoIi0iKTtpZihzJiYocj1yLnNsaWNlKDEpKSxuPW4ucmVwbGFjZSgvKDArKSQvLCIiKSxlPT09MClNYXRoLnJvdW5kKCtgLiR7bn1gKT09PTEmJihyPWAke0JpZ0ludChyKSsxbn1gKSxuPSIiO2Vsc2UgaWYobi5sZW5ndGg+ZSl7Y29uc3RbaSxvLGFdPVtuLnNsaWNlKDAsZS0xKSxuLnNsaWNlKGUtMSxlKSxuLnNsaWNlKGUpXSxjPU1hdGgucm91bmQoK2Ake299LiR7YX1gKTtjPjk/bj1gJHtCaWdJbnQoaSkrQmlnSW50KDEpfTBgLnBhZFN0YXJ0KGkubGVuZ3RoKzEsIjAiKTpuPWAke2l9JHtjfWAsbi5sZW5ndGg+ZSYmKG49bi5zbGljZSgxKSxyPWAke0JpZ0ludChyKSsxbn1gKSxuPW4uc2xpY2UoMCxlKX1lbHNlIG49bi5wYWRFbmQoZSwiMCIpO3JldHVybiBCaWdJbnQoYCR7cz8iLSI6IiJ9JHtyfSR7bn1gKX1jb25zdCBKdj1uZXcgTWFwLEs4PW5ldyBNYXA7bGV0IG5xPTA7ZnVuY3Rpb24gdGIodCxlLHIpe2NvbnN0IG49KytucSxzPSgpPT5Kdi5nZXQodCl8fFtdLGk9KCk9Pntjb25zdCBkPXMoKTtKdi5zZXQodCxkLmZpbHRlcih1PT51LmlkIT09bikpfSxvPSgpPT57Y29uc3QgZD1zKCk7aWYoIWQuc29tZShoPT5oLmlkPT09bikpcmV0dXJuO2NvbnN0IHU9SzguZ2V0KHQpO2QubGVuZ3RoPT09MSYmdSYmdSgpLGkoKX0sYT1zKCk7aWYoSnYuc2V0KHQsWy4uLmEse2lkOm4sZm5zOmV9XSksYSYmYS5sZW5ndGg+MClyZXR1cm4gbztjb25zdCBjPXt9O2Zvcihjb25zdCBkIGluIGUpY1tkXT0oLi4udSk9Pntjb25zdCBoPXMoKTtpZihoLmxlbmd0aCE9PTApZm9yKGNvbnN0IHAgb2YgaClwLmZuc1tkXT8uKC4uLnUpfTtjb25zdCBsPXIoYyk7cmV0dXJuIHR5cGVvZiBsPT0iZnVuY3Rpb24iJiZLOC5zZXQodCxsKSxvfWZ1bmN0aW9uIFhPKHQse2VtaXRPbkJlZ2luOmUsaW5pdGlhbFdhaXRUaW1lOnIsaW50ZXJ2YWw6bn0pe2xldCBzPSEwO2NvbnN0IGk9KCk9PnM9ITE7cmV0dXJuKGFzeW5jKCk9PntsZXQgYTtlJiYoYT1hd2FpdCB0KHt1bnBvbGw6aX0pKTtjb25zdCBjPWF3YWl0IHI/LihhKT8/bjthd2FpdCBRdyhjKTtjb25zdCBsPWFzeW5jKCk9PntzJiYoYXdhaXQgdCh7dW5wb2xsOml9KSxhd2FpdCBRdyhuKSxsKCkpfTtsKCl9KSgpLGl9ZnVuY3Rpb24gaXEodCx7ZW1pdE9uQmVnaW46ZT0hMSxlbWl0TWlzc2VkOnI9ITEsb25CbG9ja051bWJlcjpuLG9uRXJyb3I6cyxwb2xsOmkscG9sbGluZ0ludGVydmFsOm89dC5wb2xsaW5nSW50ZXJ2YWx9KXtjb25zdCBhPXR5cGVvZiBpPCJ1Ij9pOiEodC50cmFuc3BvcnQudHlwZT09PSJ3ZWJTb2NrZXQifHx0LnRyYW5zcG9ydC50eXBlPT09ImZhbGxiYWNrIiYmdC50cmFuc3BvcnQudHJhbnNwb3J0c1swXS5jb25maWcudHlwZT09PSJ3ZWJTb2NrZXQiKTtsZXQgYztyZXR1cm4gYT8oKCk9Pntjb25zdCB1PW9pKFsid2F0Y2hCbG9ja051bWJlciIsdC51aWQsZSxyLG9dKTtyZXR1cm4gdGIodSx7b25CbG9ja051bWJlcjpuLG9uRXJyb3I6c30saD0+WE8oYXN5bmMoKT0+e3RyeXtjb25zdCBwPWF3YWl0IFRyKHQsU0gsImdldEJsb2NrTnVtYmVyIikoe2NhY2hlVGltZTowfSk7aWYoYyl7aWYocD09PWMpcmV0dXJuO2lmKHAtYz4xJiZyKWZvcihsZXQgZj1jKzFuO2Y8cDtmKyspaC5vbkJsb2NrTnVtYmVyKGYsYyksYz1mfSghY3x8cD5jKSYmKGgub25CbG9ja051bWJlcihwLGMpLGM9cCl9Y2F0Y2gocCl7aC5vbkVycm9yPy4ocCl9fSx7ZW1pdE9uQmVnaW46ZSxpbnRlcnZhbDpvfSkpfSkoKTooKCk9Pntjb25zdCB1PW9pKFsid2F0Y2hCbG9ja051bWJlciIsdC51aWQsZSxyXSk7cmV0dXJuIHRiKHUse29uQmxvY2tOdW1iZXI6bixvbkVycm9yOnN9LGg9PntsZXQgcD0hMCxmPSgpPT5wPSExO3JldHVybihhc3luYygpPT57dHJ5e2NvbnN0IG09KCgpPT57aWYodC50cmFuc3BvcnQudHlwZT09PSJmYWxsYmFjayIpe2NvbnN0IGc9dC50cmFuc3BvcnQudHJhbnNwb3J0cy5maW5kKHY9PnYuY29uZmlnLnR5cGU9PT0id2ViU29ja2V0Iik7cmV0dXJuIGc/Zy52YWx1ZTp0LnRyYW5zcG9ydH1yZXR1cm4gdC50cmFuc3BvcnR9KSgpLHt1bnN1YnNjcmliZTp3fT1hd2FpdCBtLnN1YnNjcmliZSh7cGFyYW1zOlsibmV3SGVhZHMiXSxvbkRhdGEoZyl7aWYoIXApcmV0dXJuO2NvbnN0IHY9c3IoZy5yZXN1bHQ/Lm51bWJlcik7aC5vbkJsb2NrTnVtYmVyKHYsYyksYz12fSxvbkVycm9yKGcpe2gub25FcnJvcj8uKGcpfX0pO2Y9dyxwfHxmKCl9Y2F0Y2gobSl7cz8uKG0pfX0pKCksKCk9PmYoKX0pfSkoKX1hc3luYyBmdW5jdGlvbiBzcSh0LHtmaWx0ZXI6ZX0pe3JldHVybiBlLnJlcXVlc3Qoe21ldGhvZDoiZXRoX3VuaW5zdGFsbEZpbHRlciIscGFyYW1zOltlLmlkXX0pfWZ1bmN0aW9uIG9xKHQse2JhdGNoOmU9ITAsb25FcnJvcjpyLG9uVHJhbnNhY3Rpb25zOm4scG9sbDpzLHBvbGxpbmdJbnRlcnZhbDppPXQucG9sbGluZ0ludGVydmFsfSl7cmV0dXJuKHR5cGVvZiBzPCJ1Ij9zOnQudHJhbnNwb3J0LnR5cGUhPT0id2ViU29ja2V0Iik/KCgpPT57Y29uc3QgbD1vaShbIndhdGNoUGVuZGluZ1RyYW5zYWN0aW9ucyIsdC51aWQsZSxpXSk7cmV0dXJuIHRiKGwse29uVHJhbnNhY3Rpb25zOm4sb25FcnJvcjpyfSxkPT57bGV0IHU7Y29uc3QgaD1YTyhhc3luYygpPT57dHJ5e2lmKCF1KXRyeXt1PWF3YWl0IFRyKHQsdkgsImNyZWF0ZVBlbmRpbmdUcmFuc2FjdGlvbkZpbHRlciIpKHt9KTtyZXR1cm59Y2F0Y2goZil7dGhyb3cgaCgpLGZ9Y29uc3QgcD1hd2FpdCBUcih0LE5ILCJnZXRGaWx0ZXJDaGFuZ2VzIikoe2ZpbHRlcjp1fSk7aWYocC5sZW5ndGg9PT0wKXJldHVybjtpZihlKWQub25UcmFuc2FjdGlvbnMocCk7ZWxzZSBmb3IoY29uc3QgZiBvZiBwKWQub25UcmFuc2FjdGlvbnMoW2ZdKX1jYXRjaChwKXtkLm9uRXJyb3I/LihwKX19LHtlbWl0T25CZWdpbjohMCxpbnRlcnZhbDppfSk7cmV0dXJuIGFzeW5jKCk9Pnt1JiZhd2FpdCBUcih0LHNxLCJ1bmluc3RhbGxGaWx0ZXIiKSh7ZmlsdGVyOnV9KSxoKCl9fSl9KSgpOigoKT0+e2xldCBsPSEwLGQ9KCk9Pmw9ITE7cmV0dXJuKGFzeW5jKCk9Pnt0cnl7Y29uc3R7dW5zdWJzY3JpYmU6dX09YXdhaXQgdC50cmFuc3BvcnQuc3Vic2NyaWJlKHtwYXJhbXM6WyJuZXdQZW5kaW5nVHJhbnNhY3Rpb25zIl0sb25EYXRhKGgpe2lmKCFsKXJldHVybjtjb25zdCBwPWgucmVzdWx0O24oW3BdKX0sb25FcnJvcihoKXtyPy4oaCl9fSk7ZD11LGx8fGQoKX1jYXRjaCh1KXtyPy4odSl9fSkoKSwoKT0+ZCgpfSkoKX1hc3luYyBmdW5jdGlvbiBhcSh0LHtjb25maXJtYXRpb25zOmU9MSxoYXNoOnIsb25SZXBsYWNlZDpuLHBvbGxpbmdJbnRlcnZhbDpzPXQucG9sbGluZ0ludGVydmFsLHJldHJ5Q291bnQ6aT02LHJldHJ5RGVsYXk6bz0oe2NvdW50OmN9KT0+fn4oMTw8YykqMjAwLHRpbWVvdXQ6YT0xOGU0fSl7Y29uc3QgYz1vaShbIndhaXRGb3JUcmFuc2FjdGlvblJlY2VpcHQiLHQudWlkLHJdKTtsZXQgbCxkLHUsaD0hMSxwLGY7Y29uc3R7cHJvbWlzZTptLHJlc29sdmU6dyxyZWplY3Q6Z309ak8oKSx2PWE/c2V0VGltZW91dCgoKT0+e2YoKSxwKCksZyhuZXcgZHooe2hhc2g6cn0pKX0sYSk6dm9pZCAwO3JldHVybiBwPXRiKGMse29uUmVwbGFjZWQ6bixyZXNvbHZlOncscmVqZWN0Omd9LEU9PntmPVRyKHQsaXEsIndhdGNoQmxvY2tOdW1iZXIiKSh7ZW1pdE1pc3NlZDohMCxlbWl0T25CZWdpbjohMCxwb2xsOiEwLHBvbGxpbmdJbnRlcnZhbDpzLGFzeW5jIG9uQmxvY2tOdW1iZXIoeCl7Y29uc3QgXz1BPT57Y2xlYXJUaW1lb3V0KHYpLGYoKSxBKCkscCgpfTtsZXQgaz14O2lmKCFoKXRyeXtpZih1KXtpZihlPjEmJighdS5ibG9ja051bWJlcnx8ay11LmJsb2NrTnVtYmVyKzFuPGUpKXJldHVybjtfKCgpPT5FLnJlc29sdmUodSkpO3JldHVybn1pZihsfHwoaD0hMCxhd2FpdCBlYihhc3luYygpPT57bD1hd2FpdCBUcih0LHFPLCJnZXRUcmFuc2FjdGlvbiIpKHtoYXNoOnJ9KSxsLmJsb2NrTnVtYmVyJiYoaz1sLmJsb2NrTnVtYmVyKX0se2RlbGF5Om8scmV0cnlDb3VudDppfSksaD0hMSksdT1hd2FpdCBUcih0LFY4LCJnZXRUcmFuc2FjdGlvblJlY2VpcHQiKSh7aGFzaDpyfSksZT4xJiYoIXUuYmxvY2tOdW1iZXJ8fGstdS5ibG9ja051bWJlcisxbjxlKSlyZXR1cm47XygoKT0+RS5yZXNvbHZlKHUpKX1jYXRjaChBKXtpZihBIGluc3RhbmNlb2YgWlB8fEEgaW5zdGFuY2VvZiBZUCl7aWYoIWwpe2g9ITE7cmV0dXJufXRyeXtkPWwsaD0hMDtjb25zdCBNPWF3YWl0IGViKCgpPT5Ucih0LE8wLCJnZXRCbG9jayIpKHtibG9ja051bWJlcjprLGluY2x1ZGVUcmFuc2FjdGlvbnM6ITB9KSx7ZGVsYXk6byxyZXRyeUNvdW50Omksc2hvdWxkUmV0cnk6KHtlcnJvcjpVfSk9PlUgaW5zdGFuY2VvZiBRUH0pO2g9ITE7Y29uc3QgUD1NLnRyYW5zYWN0aW9ucy5maW5kKCh7ZnJvbTpVLG5vbmNlOlZ9KT0+VT09PWQuZnJvbSYmVj09PWQubm9uY2UpO2lmKCFQfHwodT1hd2FpdCBUcih0LFY4LCJnZXRUcmFuc2FjdGlvblJlY2VpcHQiKSh7aGFzaDpQLmhhc2h9KSxlPjEmJighdS5ibG9ja051bWJlcnx8ay11LmJsb2NrTnVtYmVyKzFuPGUpKSlyZXR1cm47bGV0IGo9InJlcGxhY2VkIjtQLnRvPT09ZC50byYmUC52YWx1ZT09PWQudmFsdWUmJlAuaW5wdXQ9PT1kLmlucHV0P2o9InJlcHJpY2VkIjpQLmZyb209PT1QLnRvJiZQLnZhbHVlPT09MG4mJihqPSJjYW5jZWxsZWQiKSxfKCgpPT57RS5vblJlcGxhY2VkPy4oe3JlYXNvbjpqLHJlcGxhY2VkVHJhbnNhY3Rpb246ZCx0cmFuc2FjdGlvbjpQLHRyYW5zYWN0aW9uUmVjZWlwdDp1fSksRS5yZXNvbHZlKHUpfSl9Y2F0Y2goTSl7XygoKT0+RS5yZWplY3QoTSkpfX1lbHNlIF8oKCk9PkUucmVqZWN0KEEpKX19fSl9KSxtfWFzeW5jIGZ1bmN0aW9uIGNxKHQse2FjY291bnQ6ZT10LmFjY291bnQsbWVzc2FnZTpyfSl7aWYoIWUpdGhyb3cgbmV3IGJ5KHtkb2NzUGF0aDoiL2RvY3MvYWN0aW9ucy93YWxsZXQvc2lnbk1lc3NhZ2UifSk7Y29uc3Qgbj1IcyhlKTtpZihuLnNpZ25NZXNzYWdlKXJldHVybiBuLnNpZ25NZXNzYWdlKHttZXNzYWdlOnJ9KTtjb25zdCBzPXR5cGVvZiByPT0ic3RyaW5nIj9oeShyKTpyLnJhdyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/cWUoci5yYXcpOnIucmF3O3JldHVybiB0LnJlcXVlc3Qoe21ldGhvZDoicGVyc29uYWxfc2lnbiIscGFyYW1zOltzLG4uYWRkcmVzc119LHtyZXRyeUNvdW50OjB9KX1sZXQgUU89Y2xhc3MgZXh0ZW5kcyBxNHtjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKCksdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSxkaihlKTtjb25zdCBuPWd5KHIpO2lmKHRoaXMuaUhhc2g9ZS5jcmVhdGUoKSx0eXBlb2YgdGhpcy5pSGFzaC51cGRhdGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBpbnN0YW5jZSBvZiBjbGFzcyB3aGljaCBleHRlbmRzIHV0aWxzLkhhc2giKTt0aGlzLmJsb2NrTGVuPXRoaXMuaUhhc2guYmxvY2tMZW4sdGhpcy5vdXRwdXRMZW49dGhpcy5pSGFzaC5vdXRwdXRMZW47Y29uc3Qgcz10aGlzLmJsb2NrTGVuLGk9bmV3IFVpbnQ4QXJyYXkocyk7aS5zZXQobi5sZW5ndGg+cz9lLmNyZWF0ZSgpLnVwZGF0ZShuKS5kaWdlc3QoKTpuKTtmb3IobGV0IG89MDtvPGkubGVuZ3RoO28rKylpW29dXj01NDt0aGlzLmlIYXNoLnVwZGF0ZShpKSx0aGlzLm9IYXNoPWUuY3JlYXRlKCk7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspaVtvXV49MTA2O3RoaXMub0hhc2gudXBkYXRlKGkpLGZoKGkpfXVwZGF0ZShlKXtyZXR1cm4gcGgodGhpcyksdGhpcy5pSGFzaC51cGRhdGUoZSksdGhpc31kaWdlc3RJbnRvKGUpe3BoKHRoaXMpLGJjKGUsdGhpcy5vdXRwdXRMZW4pLHRoaXMuZmluaXNoZWQ9ITAsdGhpcy5pSGFzaC5kaWdlc3RJbnRvKGUpLHRoaXMub0hhc2gudXBkYXRlKGUpLHRoaXMub0hhc2guZGlnZXN0SW50byhlKSx0aGlzLmRlc3Ryb3koKX1kaWdlc3QoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHRoaXMub0hhc2gub3V0cHV0TGVuKTtyZXR1cm4gdGhpcy5kaWdlc3RJbnRvKGUpLGV9X2Nsb25lSW50byhlKXtlfHwoZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSx7fSkpO2NvbnN0e29IYXNoOnIsaUhhc2g6bixmaW5pc2hlZDpzLGRlc3Ryb3llZDppLGJsb2NrTGVuOm8sb3V0cHV0TGVuOmF9PXRoaXM7cmV0dXJuIGU9ZSxlLmZpbmlzaGVkPXMsZS5kZXN0cm95ZWQ9aSxlLmJsb2NrTGVuPW8sZS5vdXRwdXRMZW49YSxlLm9IYXNoPXIuX2Nsb25lSW50byhlLm9IYXNoKSxlLmlIYXNoPW4uX2Nsb25lSW50byhlLmlIYXNoKSxlfWNsb25lKCl7cmV0dXJuIHRoaXMuX2Nsb25lSW50bygpfWRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMCx0aGlzLm9IYXNoLmRlc3Ryb3koKSx0aGlzLmlIYXNoLmRlc3Ryb3koKX19O2NvbnN0IGUkPSh0LGUscik9Pm5ldyBRTyh0LGUpLnVwZGF0ZShyKS5kaWdlc3QoKTtlJC5jcmVhdGU9KHQsZSk9Pm5ldyBRTyh0LGUpOy8qISBub2JsZS1jdXJ2ZXMgLSBNSVQgTGljZW5zZSAoYykgMjAyMiBQYXVsIE1pbGxlciAocGF1bG1pbGxyLmNvbSkgKi9jb25zdCBoNj1CaWdJbnQoMCksREM9QmlnSW50KDEpO2Z1bmN0aW9uIG4xKHQpe3JldHVybiB0IGluc3RhbmNlb2YgVWludDhBcnJheXx8QXJyYXlCdWZmZXIuaXNWaWV3KHQpJiZ0LmNvbnN0cnVjdG9yLm5hbWU9PT0iVWludDhBcnJheSJ9ZnVuY3Rpb24gcDYodCl7aWYoIW4xKHQpKXRocm93IG5ldyBFcnJvcigiVWludDhBcnJheSBleHBlY3RlZCIpfWZ1bmN0aW9uIE0wKHQsZSl7aWYodHlwZW9mIGUhPSJib29sZWFuIil0aHJvdyBuZXcgRXJyb3IodCsiIGJvb2xlYW4gZXhwZWN0ZWQsIGdvdCAiK2UpfWZ1bmN0aW9uIGFnKHQpe2NvbnN0IGU9dC50b1N0cmluZygxNik7cmV0dXJuIGUubGVuZ3RoJjE/IjAiK2U6ZX1mdW5jdGlvbiB0JCh0KXtpZih0eXBlb2YgdCE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJoZXggc3RyaW5nIGV4cGVjdGVkLCBnb3QgIit0eXBlb2YgdCk7cmV0dXJuIHQ9PT0iIj9oNjpCaWdJbnQoIjB4Iit0KX1jb25zdCByJD10eXBlb2YgVWludDhBcnJheS5mcm9tKFtdKS50b0hleD09ImZ1bmN0aW9uIiYmdHlwZW9mIFVpbnQ4QXJyYXkuZnJvbUhleD09ImZ1bmN0aW9uIixscT1BcnJheS5mcm9tKHtsZW5ndGg6MjU2fSwodCxlKT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKTtmdW5jdGlvbiBEMCh0KXtpZihwNih0KSxyJClyZXR1cm4gdC50b0hleCgpO2xldCBlPSIiO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKWUrPWxxW3Rbcl1dO3JldHVybiBlfWNvbnN0IFVvPXtfMDo0OCxfOTo1NyxBOjY1LEY6NzAsYTo5NyxmOjEwMn07ZnVuY3Rpb24gWjgodCl7aWYodD49VW8uXzAmJnQ8PVVvLl85KXJldHVybiB0LVVvLl8wO2lmKHQ+PVVvLkEmJnQ8PVVvLkYpcmV0dXJuIHQtKFVvLkEtMTApO2lmKHQ+PVVvLmEmJnQ8PVVvLmYpcmV0dXJuIHQtKFVvLmEtMTApfWZ1bmN0aW9uIHJiKHQpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoImhleCBzdHJpbmcgZXhwZWN0ZWQsIGdvdCAiK3R5cGVvZiB0KTtpZihyJClyZXR1cm4gVWludDhBcnJheS5mcm9tSGV4KHQpO2NvbnN0IGU9dC5sZW5ndGgscj1lLzI7aWYoZSUyKXRocm93IG5ldyBFcnJvcigiaGV4IHN0cmluZyBleHBlY3RlZCwgZ290IHVucGFkZGVkIGhleCBvZiBsZW5ndGggIitlKTtjb25zdCBuPW5ldyBVaW50OEFycmF5KHIpO2ZvcihsZXQgcz0wLGk9MDtzPHI7cysrLGkrPTIpe2NvbnN0IG89WjgodC5jaGFyQ29kZUF0KGkpKSxhPVo4KHQuY2hhckNvZGVBdChpKzEpKTtpZihvPT09dm9pZCAwfHxhPT09dm9pZCAwKXtjb25zdCBjPXRbaV0rdFtpKzFdO3Rocm93IG5ldyBFcnJvcignaGV4IHN0cmluZyBleHBlY3RlZCwgZ290IG5vbi1oZXggY2hhcmFjdGVyICInK2MrJyIgYXQgaW5kZXggJytpKX1uW3NdPW8qMTYrYX1yZXR1cm4gbn1mdW5jdGlvbiBzdSh0KXtyZXR1cm4gdCQoRDAodCkpfWZ1bmN0aW9uIG4kKHQpe3JldHVybiBwNih0KSx0JChEMChVaW50OEFycmF5LmZyb20odCkucmV2ZXJzZSgpKSl9ZnVuY3Rpb24gaTEodCxlKXtyZXR1cm4gcmIodC50b1N0cmluZygxNikucGFkU3RhcnQoZSoyLCIwIikpfWZ1bmN0aW9uIGkkKHQsZSl7cmV0dXJuIGkxKHQsZSkucmV2ZXJzZSgpfWZ1bmN0aW9uIEtpKHQsZSxyKXtsZXQgbjtpZih0eXBlb2YgZT09InN0cmluZyIpdHJ5e249cmIoZSl9Y2F0Y2goaSl7dGhyb3cgbmV3IEVycm9yKHQrIiBtdXN0IGJlIGhleCBzdHJpbmcgb3IgVWludDhBcnJheSwgY2F1c2U6ICIraSl9ZWxzZSBpZihuMShlKSluPVVpbnQ4QXJyYXkuZnJvbShlKTtlbHNlIHRocm93IG5ldyBFcnJvcih0KyIgbXVzdCBiZSBoZXggc3RyaW5nIG9yIFVpbnQ4QXJyYXkiKTtjb25zdCBzPW4ubGVuZ3RoO2lmKHR5cGVvZiByPT0ibnVtYmVyIiYmcyE9PXIpdGhyb3cgbmV3IEVycm9yKHQrIiBvZiBsZW5ndGggIityKyIgZXhwZWN0ZWQsIGdvdCAiK3MpO3JldHVybiBufWZ1bmN0aW9uIG5iKC4uLnQpe2xldCBlPTA7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IHM9dFtuXTtwNihzKSxlKz1zLmxlbmd0aH1jb25zdCByPW5ldyBVaW50OEFycmF5KGUpO2ZvcihsZXQgbj0wLHM9MDtuPHQubGVuZ3RoO24rKyl7Y29uc3QgaT10W25dO3Iuc2V0KGkscykscys9aS5sZW5ndGh9cmV0dXJuIHJ9Y29uc3QgWHY9dD0+dHlwZW9mIHQ9PSJiaWdpbnQiJiZoNjw9dDtmdW5jdGlvbiBmNih0LGUscil7cmV0dXJuIFh2KHQpJiZYdihlKSYmWHYocikmJmU8PXQmJnQ8cn1mdW5jdGlvbiBvaCh0LGUscixuKXtpZighZjYoZSxyLG4pKXRocm93IG5ldyBFcnJvcigiZXhwZWN0ZWQgdmFsaWQgIit0KyI6ICIrcisiIDw9IG4gPCAiK24rIiwgZ290ICIrZSl9ZnVuY3Rpb24gdXEodCl7bGV0IGU7Zm9yKGU9MDt0Pmg2O3Q+Pj1EQyxlKz0xKTtyZXR1cm4gZX1jb25zdCB4eT10PT4oREM8PEJpZ0ludCh0KSktREMsUXY9dD0+bmV3IFVpbnQ4QXJyYXkodCksWTg9dD0+VWludDhBcnJheS5mcm9tKHQpO2Z1bmN0aW9uIGRxKHQsZSxyKXtpZih0eXBlb2YgdCE9Im51bWJlciJ8fHQ8Mil0aHJvdyBuZXcgRXJyb3IoImhhc2hMZW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyInx8ZTwyKXRocm93IG5ldyBFcnJvcigicUJ5dGVMZW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKHR5cGVvZiByIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaG1hY0ZuIG11c3QgYmUgYSBmdW5jdGlvbiIpO2xldCBuPVF2KHQpLHM9UXYodCksaT0wO2NvbnN0IG89KCk9PntuLmZpbGwoMSkscy5maWxsKDApLGk9MH0sYT0oLi4udSk9PnIocyxuLC4uLnUpLGM9KHU9UXYoMCkpPT57cz1hKFk4KFswXSksdSksbj1hKCksdS5sZW5ndGghPT0wJiYocz1hKFk4KFsxXSksdSksbj1hKCkpfSxsPSgpPT57aWYoaSsrPj0xZTMpdGhyb3cgbmV3IEVycm9yKCJkcmJnOiB0cmllZCAxMDAwIHZhbHVlcyIpO2xldCB1PTA7Y29uc3QgaD1bXTtmb3IoO3U8ZTspe249YSgpO2NvbnN0IHA9bi5zbGljZSgpO2gucHVzaChwKSx1Kz1uLmxlbmd0aH1yZXR1cm4gbmIoLi4uaCl9O3JldHVybih1LGgpPT57bygpLGModSk7bGV0IHA7Zm9yKDshKHA9aChsKCkpKTspYygpO3JldHVybiBvKCkscH19Y29uc3QgaHE9e2JpZ2ludDp0PT50eXBlb2YgdD09ImJpZ2ludCIsZnVuY3Rpb246dD0+dHlwZW9mIHQ9PSJmdW5jdGlvbiIsYm9vbGVhbjp0PT50eXBlb2YgdD09ImJvb2xlYW4iLHN0cmluZzp0PT50eXBlb2YgdD09InN0cmluZyIsc3RyaW5nT3JVaW50OEFycmF5OnQ9PnR5cGVvZiB0PT0ic3RyaW5nInx8bjEodCksaXNTYWZlSW50ZWdlcjp0PT5OdW1iZXIuaXNTYWZlSW50ZWdlcih0KSxhcnJheTp0PT5BcnJheS5pc0FycmF5KHQpLGZpZWxkOih0LGUpPT5lLkZwLmlzVmFsaWQodCksaGFzaDp0PT50eXBlb2YgdD09ImZ1bmN0aW9uIiYmTnVtYmVyLmlzU2FmZUludGVnZXIodC5vdXRwdXRMZW4pfTtmdW5jdGlvbiBfeSh0LGUscj17fSl7Y29uc3Qgbj0ocyxpLG8pPT57Y29uc3QgYT1ocVtpXTtpZih0eXBlb2YgYSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgdmFsaWRhdG9yIGZ1bmN0aW9uIik7Y29uc3QgYz10W3NdO2lmKCEobyYmYz09PXZvaWQgMCkmJiFhKGMsdCkpdGhyb3cgbmV3IEVycm9yKCJwYXJhbSAiK1N0cmluZyhzKSsiIGlzIGludmFsaWQuIEV4cGVjdGVkICIraSsiLCBnb3QgIitjKX07Zm9yKGNvbnN0W3MsaV1vZiBPYmplY3QuZW50cmllcyhlKSluKHMsaSwhMSk7Zm9yKGNvbnN0W3MsaV1vZiBPYmplY3QuZW50cmllcyhyKSluKHMsaSwhMCk7cmV0dXJuIHR9ZnVuY3Rpb24gSjgodCl7Y29uc3QgZT1uZXcgV2Vha01hcDtyZXR1cm4ociwuLi5uKT0+e2NvbnN0IHM9ZS5nZXQocik7aWYocyE9PXZvaWQgMClyZXR1cm4gcztjb25zdCBpPXQociwuLi5uKTtyZXR1cm4gZS5zZXQocixpKSxpfX0vKiEgbm9ibGUtY3VydmVzIC0gTUlUIExpY2Vuc2UgKGMpIDIwMjIgUGF1bCBNaWxsZXIgKHBhdWxtaWxsci5jb20pICovY29uc3QgaWk9QmlnSW50KDApLE1uPUJpZ0ludCgxKSxYbD1CaWdJbnQoMikscHE9QmlnSW50KDMpLHMkPUJpZ0ludCg0KSxvJD1CaWdJbnQoNSksYSQ9QmlnSW50KDgpO2Z1bmN0aW9uIHRpKHQsZSl7Y29uc3Qgcj10JWU7cmV0dXJuIHI+PWlpP3I6ZStyfWZ1bmN0aW9uIFVpKHQsZSxyKXtsZXQgbj10O2Zvcig7ZS0tID5paTspbio9bixuJT1yO3JldHVybiBufWZ1bmN0aW9uIEJDKHQsZSl7aWYodD09PWlpKXRocm93IG5ldyBFcnJvcigiaW52ZXJ0OiBleHBlY3RlZCBub24temVybyBudW1iZXIiKTtpZihlPD1paSl0aHJvdyBuZXcgRXJyb3IoImludmVydDogZXhwZWN0ZWQgcG9zaXRpdmUgbW9kdWx1cywgZ290ICIrZSk7bGV0IHI9dGkodCxlKSxuPWUscz1paSxpPU1uO2Zvcig7ciE9PWlpOyl7Y29uc3QgYT1uL3IsYz1uJXIsbD1zLWkqYTtuPXIscj1jLHM9aSxpPWx9aWYobiE9PU1uKXRocm93IG5ldyBFcnJvcigiaW52ZXJ0OiBkb2VzIG5vdCBleGlzdCIpO3JldHVybiB0aShzLGUpfWZ1bmN0aW9uIGMkKHQsZSl7Y29uc3Qgcj0odC5PUkRFUitNbikvcyQsbj10LnBvdyhlLHIpO2lmKCF0LmVxbCh0LnNxcihuKSxlKSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNxdWFyZSByb290Iik7cmV0dXJuIG59ZnVuY3Rpb24gZnEodCxlKXtjb25zdCByPSh0Lk9SREVSLW8kKS9hJCxuPXQubXVsKGUsWGwpLHM9dC5wb3cobixyKSxpPXQubXVsKGUscyksbz10Lm11bCh0Lm11bChpLFhsKSxzKSxhPXQubXVsKGksdC5zdWIobyx0Lk9ORSkpO2lmKCF0LmVxbCh0LnNxcihhKSxlKSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNxdWFyZSByb290Iik7cmV0dXJuIGF9ZnVuY3Rpb24gbXEodCl7aWYodDxCaWdJbnQoMykpdGhyb3cgbmV3IEVycm9yKCJzcXJ0IGlzIG5vdCBkZWZpbmVkIGZvciBzbWFsbCBmaWVsZCIpO2xldCBlPXQtTW4scj0wO2Zvcig7ZSVYbD09PWlpOyllLz1YbCxyKys7bGV0IG49WGw7Y29uc3Qgcz1tNih0KTtmb3IoO1g4KHMsbik9PT0xOylpZihuKys+MWUzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc3F1YXJlIHJvb3Q6IHByb2JhYmx5IG5vbi1wcmltZSBQIik7aWYocj09PTEpcmV0dXJuIGMkO2xldCBpPXMucG93KG4sZSk7Y29uc3Qgbz0oZStNbikvWGw7cmV0dXJuIGZ1bmN0aW9uKGMsbCl7aWYoYy5pczAobCkpcmV0dXJuIGw7aWYoWDgoYyxsKSE9PTEpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBzcXVhcmUgcm9vdCIpO2xldCBkPXIsdT1jLm11bChjLk9ORSxpKSxoPWMucG93KGwsZSkscD1jLnBvdyhsLG8pO2Zvcig7IWMuZXFsKGgsYy5PTkUpOyl7aWYoYy5pczAoaCkpcmV0dXJuIGMuWkVSTztsZXQgZj0xLG09Yy5zcXIoaCk7Zm9yKDshYy5lcWwobSxjLk9ORSk7KWlmKGYrKyxtPWMuc3FyKG0pLGY9PT1kKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc3F1YXJlIHJvb3QiKTtjb25zdCB3PU1uPDxCaWdJbnQoZC1mLTEpLGc9Yy5wb3codSx3KTtkPWYsdT1jLnNxcihnKSxoPWMubXVsKGgsdSkscD1jLm11bChwLGcpfXJldHVybiBwfX1mdW5jdGlvbiBncSh0KXtyZXR1cm4gdCVzJD09PXBxP2MkOnQlYSQ9PT1vJD9mcTptcSh0KX1jb25zdCB3cT1bImNyZWF0ZSIsImlzVmFsaWQiLCJpczAiLCJuZWciLCJpbnYiLCJzcXJ0Iiwic3FyIiwiZXFsIiwiYWRkIiwic3ViIiwibXVsIiwicG93IiwiZGl2IiwiYWRkTiIsInN1Yk4iLCJtdWxOIiwic3FyTiJdO2Z1bmN0aW9uIGJxKHQpe2NvbnN0IGU9e09SREVSOiJiaWdpbnQiLE1BU0s6ImJpZ2ludCIsQllURVM6ImlzU2FmZUludGVnZXIiLEJJVFM6ImlzU2FmZUludGVnZXIifSxyPXdxLnJlZHVjZSgobixzKT0+KG5bc109ImZ1bmN0aW9uIixuKSxlKTtyZXR1cm4gX3kodCxyKX1mdW5jdGlvbiB5cSh0LGUscil7aWYocjxpaSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZXhwb25lbnQsIG5lZ2F0aXZlcyB1bnN1cHBvcnRlZCIpO2lmKHI9PT1paSlyZXR1cm4gdC5PTkU7aWYocj09PU1uKXJldHVybiBlO2xldCBuPXQuT05FLHM9ZTtmb3IoO3I+aWk7KXImTW4mJihuPXQubXVsKG4scykpLHM9dC5zcXIocykscj4+PU1uO3JldHVybiBufWZ1bmN0aW9uIGwkKHQsZSxyPSExKXtjb25zdCBuPW5ldyBBcnJheShlLmxlbmd0aCkuZmlsbChyP3QuWkVSTzp2b2lkIDApLHM9ZS5yZWR1Y2UoKG8sYSxjKT0+dC5pczAoYSk/bzoobltjXT1vLHQubXVsKG8sYSkpLHQuT05FKSxpPXQuaW52KHMpO3JldHVybiBlLnJlZHVjZVJpZ2h0KChvLGEsYyk9PnQuaXMwKGEpP286KG5bY109dC5tdWwobyxuW2NdKSx0Lm11bChvLGEpKSxpKSxufWZ1bmN0aW9uIFg4KHQsZSl7Y29uc3Qgcj0odC5PUkRFUi1NbikvWGwsbj10LnBvdyhlLHIpLHM9dC5lcWwobix0Lk9ORSksaT10LmVxbChuLHQuWkVSTyksbz10LmVxbChuLHQubmVnKHQuT05FKSk7aWYoIXMmJiFpJiYhbyl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgTGVnZW5kcmUgc3ltYm9sIHJlc3VsdCIpO3JldHVybiBzPzE6aT8wOi0xfWZ1bmN0aW9uIHUkKHQsZSl7ZSE9PXZvaWQgMCYmZjAoZSk7Y29uc3Qgcj1lIT09dm9pZCAwP2U6dC50b1N0cmluZygyKS5sZW5ndGgsbj1NYXRoLmNlaWwoci84KTtyZXR1cm57bkJpdExlbmd0aDpyLG5CeXRlTGVuZ3RoOm59fWZ1bmN0aW9uIG02KHQsZSxyPSExLG49e30pe2lmKHQ8PWlpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmaWVsZDogZXhwZWN0ZWQgT1JERVIgPiAwLCBnb3QgIit0KTtjb25zdHtuQml0TGVuZ3RoOnMsbkJ5dGVMZW5ndGg6aX09dSQodCxlKTtpZihpPjIwNDgpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZpZWxkOiBleHBlY3RlZCBPUkRFUiBvZiA8PSAyMDQ4IGJ5dGVzIik7bGV0IG87Y29uc3QgYT1PYmplY3QuZnJlZXplKHtPUkRFUjp0LGlzTEU6cixCSVRTOnMsQllURVM6aSxNQVNLOnh5KHMpLFpFUk86aWksT05FOk1uLGNyZWF0ZTpjPT50aShjLHQpLGlzVmFsaWQ6Yz0+e2lmKHR5cGVvZiBjIT0iYmlnaW50Iil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZmllbGQgZWxlbWVudDogZXhwZWN0ZWQgYmlnaW50LCBnb3QgIit0eXBlb2YgYyk7cmV0dXJuIGlpPD1jJiZjPHR9LGlzMDpjPT5jPT09aWksaXNPZGQ6Yz0+KGMmTW4pPT09TW4sbmVnOmM9PnRpKC1jLHQpLGVxbDooYyxsKT0+Yz09PWwsc3FyOmM9PnRpKGMqYyx0KSxhZGQ6KGMsbCk9PnRpKGMrbCx0KSxzdWI6KGMsbCk9PnRpKGMtbCx0KSxtdWw6KGMsbCk9PnRpKGMqbCx0KSxwb3c6KGMsbCk9PnlxKGEsYyxsKSxkaXY6KGMsbCk9PnRpKGMqQkMobCx0KSx0KSxzcXJOOmM9PmMqYyxhZGROOihjLGwpPT5jK2wsc3ViTjooYyxsKT0+Yy1sLG11bE46KGMsbCk9PmMqbCxpbnY6Yz0+QkMoYyx0KSxzcXJ0Om4uc3FydHx8KGM9PihvfHwobz1ncSh0KSksbyhhLGMpKSksdG9CeXRlczpjPT5yP2kkKGMsaSk6aTEoYyxpKSxmcm9tQnl0ZXM6Yz0+e2lmKGMubGVuZ3RoIT09aSl0aHJvdyBuZXcgRXJyb3IoIkZpZWxkLmZyb21CeXRlczogZXhwZWN0ZWQgIitpKyIgYnl0ZXMsIGdvdCAiK2MubGVuZ3RoKTtyZXR1cm4gcj9uJChjKTpzdShjKX0saW52ZXJ0QmF0Y2g6Yz0+bCQoYSxjKSxjbW92OihjLGwsZCk9PmQ/bDpjfSk7cmV0dXJuIE9iamVjdC5mcmVlemUoYSl9ZnVuY3Rpb24gZCQodCl7aWYodHlwZW9mIHQhPSJiaWdpbnQiKXRocm93IG5ldyBFcnJvcigiZmllbGQgb3JkZXIgbXVzdCBiZSBiaWdpbnQiKTtjb25zdCBlPXQudG9TdHJpbmcoMikubGVuZ3RoO3JldHVybiBNYXRoLmNlaWwoZS84KX1mdW5jdGlvbiBoJCh0KXtjb25zdCBlPWQkKHQpO3JldHVybiBlK01hdGguY2VpbChlLzIpfWZ1bmN0aW9uIHZxKHQsZSxyPSExKXtjb25zdCBuPXQubGVuZ3RoLHM9ZCQoZSksaT1oJChlKTtpZihuPDE2fHxuPGl8fG4+MTAyNCl0aHJvdyBuZXcgRXJyb3IoImV4cGVjdGVkICIraSsiLTEwMjQgYnl0ZXMgb2YgaW5wdXQsIGdvdCAiK24pO2NvbnN0IG89cj9uJCh0KTpzdSh0KSxhPXRpKG8sZS1NbikrTW47cmV0dXJuIHI/aSQoYSxzKTppMShhLHMpfS8qISBub2JsZS1jdXJ2ZXMgLSBNSVQgTGljZW5zZSAoYykgMjAyMiBQYXVsIE1pbGxlciAocGF1bG1pbGxyLmNvbSkgKi9jb25zdCBROD1CaWdJbnQoMCksTEM9QmlnSW50KDEpO2Z1bmN0aW9uIGUyKHQsZSl7Y29uc3Qgcj1lLm5lZ2F0ZSgpO3JldHVybiB0P3I6ZX1mdW5jdGlvbiBwJCh0LGUpe2lmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcih0KXx8dDw9MHx8dD5lKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCB3aW5kb3cgc2l6ZSwgZXhwZWN0ZWQgWzEuLiIrZSsiXSwgZ290IFc9Iit0KX1mdW5jdGlvbiB0Mih0LGUpe3AkKHQsZSk7Y29uc3Qgcj1NYXRoLmNlaWwoZS90KSsxLG49MioqKHQtMSkscz0yKip0LGk9eHkodCksbz1CaWdJbnQodCk7cmV0dXJue3dpbmRvd3M6cix3aW5kb3dTaXplOm4sbWFzazppLG1heE51bWJlcjpzLHNoaWZ0Qnk6b319ZnVuY3Rpb24gZTcodCxlLHIpe2NvbnN0e3dpbmRvd1NpemU6bixtYXNrOnMsbWF4TnVtYmVyOmksc2hpZnRCeTpvfT1yO2xldCBhPU51bWJlcih0JnMpLGM9dD4+bzthPm4mJihhLT1pLGMrPUxDKTtjb25zdCBsPWUqbixkPWwrTWF0aC5hYnMoYSktMSx1PWE9PT0wLGg9YTwwLHA9ZSUyIT09MDtyZXR1cm57bmV4dE46YyxvZmZzZXQ6ZCxpc1plcm86dSxpc05lZzpoLGlzTmVnRjpwLG9mZnNldEY6bH19ZnVuY3Rpb24gRXEodCxlKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoImFycmF5IGV4cGVjdGVkIik7dC5mb3JFYWNoKChyLG4pPT57aWYoIShyIGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50IGF0IGluZGV4ICIrbil9KX1mdW5jdGlvbiBDcSh0LGUpe2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBFcnJvcigiYXJyYXkgb2Ygc2NhbGFycyBleHBlY3RlZCIpO3QuZm9yRWFjaCgocixuKT0+e2lmKCFlLmlzVmFsaWQocikpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNjYWxhciBhdCBpbmRleCAiK24pfSl9Y29uc3QgcjI9bmV3IFdlYWtNYXAsZiQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gbjIodCl7cmV0dXJuIGYkLmdldCh0KXx8MX1mdW5jdGlvbiB4cSh0LGUpe3JldHVybntjb25zdFRpbWVOZWdhdGU6ZTIsaGFzUHJlY29tcHV0ZXMocil7cmV0dXJuIG4yKHIpIT09MX0sdW5zYWZlTGFkZGVyKHIsbixzPXQuWkVSTyl7bGV0IGk9cjtmb3IoO24+UTg7KW4mTEMmJihzPXMuYWRkKGkpKSxpPWkuZG91YmxlKCksbj4+PUxDO3JldHVybiBzfSxwcmVjb21wdXRlV2luZG93KHIsbil7Y29uc3R7d2luZG93czpzLHdpbmRvd1NpemU6aX09dDIobixlKSxvPVtdO2xldCBhPXIsYz1hO2ZvcihsZXQgbD0wO2w8cztsKyspe2M9YSxvLnB1c2goYyk7Zm9yKGxldCBkPTE7ZDxpO2QrKyljPWMuYWRkKGEpLG8ucHVzaChjKTthPWMuZG91YmxlKCl9cmV0dXJuIG99LHdOQUYocixuLHMpe2xldCBpPXQuWkVSTyxvPXQuQkFTRTtjb25zdCBhPXQyKHIsZSk7Zm9yKGxldCBjPTA7YzxhLndpbmRvd3M7YysrKXtjb25zdHtuZXh0TjpsLG9mZnNldDpkLGlzWmVybzp1LGlzTmVnOmgsaXNOZWdGOnAsb2Zmc2V0RjpmfT1lNyhzLGMsYSk7cz1sLHU/bz1vLmFkZChlMihwLG5bZl0pKTppPWkuYWRkKGUyKGgsbltkXSkpfXJldHVybntwOmksZjpvfX0sd05BRlVuc2FmZShyLG4scyxpPXQuWkVSTyl7Y29uc3Qgbz10MihyLGUpO2ZvcihsZXQgYT0wO2E8by53aW5kb3dzJiZzIT09UTg7YSsrKXtjb25zdHtuZXh0TjpjLG9mZnNldDpsLGlzWmVybzpkLGlzTmVnOnV9PWU3KHMsYSxvKTtpZihzPWMsIWQpe2NvbnN0IGg9bltsXTtpPWkuYWRkKHU/aC5uZWdhdGUoKTpoKX19cmV0dXJuIGl9LGdldFByZWNvbXB1dGVzKHIsbixzKXtsZXQgaT1yMi5nZXQobik7cmV0dXJuIGl8fChpPXRoaXMucHJlY29tcHV0ZVdpbmRvdyhuLHIpLHIhPT0xJiZyMi5zZXQobixzKGkpKSksaX0sd05BRkNhY2hlZChyLG4scyl7Y29uc3QgaT1uMihyKTtyZXR1cm4gdGhpcy53TkFGKGksdGhpcy5nZXRQcmVjb21wdXRlcyhpLHIscyksbil9LHdOQUZDYWNoZWRVbnNhZmUocixuLHMsaSl7Y29uc3Qgbz1uMihyKTtyZXR1cm4gbz09PTE/dGhpcy51bnNhZmVMYWRkZXIocixuLGkpOnRoaXMud05BRlVuc2FmZShvLHRoaXMuZ2V0UHJlY29tcHV0ZXMobyxyLHMpLG4saSl9LHNldFdpbmRvd1NpemUocixuKXtwJChuLGUpLGYkLnNldChyLG4pLHIyLmRlbGV0ZShyKX19fWZ1bmN0aW9uIF9xKHQsZSxyLG4pe0VxKHIsdCksQ3EobixlKTtjb25zdCBzPXIubGVuZ3RoLGk9bi5sZW5ndGg7aWYocyE9PWkpdGhyb3cgbmV3IEVycm9yKCJhcnJheXMgb2YgcG9pbnRzIGFuZCBzY2FsYXJzIG11c3QgaGF2ZSBlcXVhbCBsZW5ndGgiKTtjb25zdCBvPXQuWkVSTyxhPXVxKEJpZ0ludChzKSk7bGV0IGM9MTthPjEyP2M9YS0zOmE+ND9jPWEtMjphPjAmJihjPTIpO2NvbnN0IGw9eHkoYyksZD1uZXcgQXJyYXkoTnVtYmVyKGwpKzEpLmZpbGwobyksdT1NYXRoLmZsb29yKChlLkJJVFMtMSkvYykqYztsZXQgaD1vO2ZvcihsZXQgcD11O3A+PTA7cC09Yyl7ZC5maWxsKG8pO2ZvcihsZXQgbT0wO208aTttKyspe2NvbnN0IHc9blttXSxnPU51bWJlcih3Pj5CaWdJbnQocCkmbCk7ZFtnXT1kW2ddLmFkZChyW21dKX1sZXQgZj1vO2ZvcihsZXQgbT1kLmxlbmd0aC0xLHc9bzttPjA7bS0tKXc9dy5hZGQoZFttXSksZj1mLmFkZCh3KTtpZihoPWguYWRkKGYpLHAhPT0wKWZvcihsZXQgbT0wO208YzttKyspaD1oLmRvdWJsZSgpfXJldHVybiBofWZ1bmN0aW9uIG0kKHQpe3JldHVybiBicSh0LkZwKSxfeSh0LHtuOiJiaWdpbnQiLGg6ImJpZ2ludCIsR3g6ImZpZWxkIixHeToiZmllbGQifSx7bkJpdExlbmd0aDoiaXNTYWZlSW50ZWdlciIsbkJ5dGVMZW5ndGg6ImlzU2FmZUludGVnZXIifSksT2JqZWN0LmZyZWV6ZSh7Li4udSQodC5uLHQubkJpdExlbmd0aCksLi4udCxwOnQuRnAuT1JERVJ9KX0vKiEgbm9ibGUtY3VydmVzIC0gTUlUIExpY2Vuc2UgKGMpIDIwMjIgUGF1bCBNaWxsZXIgKHBhdWxtaWxsci5jb20pICovZnVuY3Rpb24gdDcodCl7dC5sb3dTIT09dm9pZCAwJiZNMCgibG93UyIsdC5sb3dTKSx0LnByZWhhc2ghPT12b2lkIDAmJk0wKCJwcmVoYXNoIix0LnByZWhhc2gpfWZ1bmN0aW9uIGtxKHQpe2NvbnN0IGU9bSQodCk7X3koZSx7YToiZmllbGQiLGI6ImZpZWxkIn0se2FsbG93SW5maW5pdHlQb2ludDoiYm9vbGVhbiIsYWxsb3dlZFByaXZhdGVLZXlMZW5ndGhzOiJhcnJheSIsY2xlYXJDb2ZhY3RvcjoiZnVuY3Rpb24iLGZyb21CeXRlczoiZnVuY3Rpb24iLGlzVG9yc2lvbkZyZWU6ImZ1bmN0aW9uIix0b0J5dGVzOiJmdW5jdGlvbiIsd3JhcFByaXZhdGVLZXk6ImJvb2xlYW4ifSk7Y29uc3R7ZW5kbzpyLEZwOm4sYTpzfT1lO2lmKHIpe2lmKCFuLmVxbChzLG4uWkVSTykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGVuZG86IENVUlZFLmEgbXVzdCBiZSAwIik7aWYodHlwZW9mIHIhPSJvYmplY3QifHx0eXBlb2Ygci5iZXRhIT0iYmlnaW50Inx8dHlwZW9mIHIuc3BsaXRTY2FsYXIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGVuZG86IGV4cGVjdGVkICJiZXRhIjogYmlnaW50IGFuZCAic3BsaXRTY2FsYXIiOiBmdW5jdGlvbicpfXJldHVybiBPYmplY3QuZnJlZXplKHsuLi5lfSl9bGV0IFNxPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZT0iIil7c3VwZXIoZSl9fTtjb25zdCBlYT17RXJyOlNxLF90bHY6e2VuY29kZToodCxlKT0+e2NvbnN0e0VycjpyfT1lYTtpZih0PDB8fHQ+MjU2KXRocm93IG5ldyByKCJ0bHYuZW5jb2RlOiB3cm9uZyB0YWciKTtpZihlLmxlbmd0aCYxKXRocm93IG5ldyByKCJ0bHYuZW5jb2RlOiB1bnBhZGRlZCBkYXRhIik7Y29uc3Qgbj1lLmxlbmd0aC8yLHM9YWcobik7aWYocy5sZW5ndGgvMiYxMjgpdGhyb3cgbmV3IHIoInRsdi5lbmNvZGU6IGxvbmcgZm9ybSBsZW5ndGggdG9vIGJpZyIpO2NvbnN0IGk9bj4xMjc/YWcocy5sZW5ndGgvMnwxMjgpOiIiO3JldHVybiBhZyh0KStpK3MrZX0sZGVjb2RlKHQsZSl7Y29uc3R7RXJyOnJ9PWVhO2xldCBuPTA7aWYodDwwfHx0PjI1Nil0aHJvdyBuZXcgcigidGx2LmVuY29kZTogd3JvbmcgdGFnIik7aWYoZS5sZW5ndGg8Mnx8ZVtuKytdIT09dCl0aHJvdyBuZXcgcigidGx2LmRlY29kZTogd3JvbmcgdGx2Iik7Y29uc3Qgcz1lW24rK10saT0hIShzJjEyOCk7bGV0IG89MDtpZighaSlvPXM7ZWxzZXtjb25zdCBjPXMmMTI3O2lmKCFjKXRocm93IG5ldyByKCJ0bHYuZGVjb2RlKGxvbmcpOiBpbmRlZmluaXRlIGxlbmd0aCBub3Qgc3VwcG9ydGVkIik7aWYoYz40KXRocm93IG5ldyByKCJ0bHYuZGVjb2RlKGxvbmcpOiBieXRlIGxlbmd0aCBpcyB0b28gYmlnIik7Y29uc3QgbD1lLnN1YmFycmF5KG4sbitjKTtpZihsLmxlbmd0aCE9PWMpdGhyb3cgbmV3IHIoInRsdi5kZWNvZGU6IGxlbmd0aCBieXRlcyBub3QgY29tcGxldGUiKTtpZihsWzBdPT09MCl0aHJvdyBuZXcgcigidGx2LmRlY29kZShsb25nKTogemVybyBsZWZ0bW9zdCBieXRlIik7Zm9yKGNvbnN0IGQgb2YgbClvPW88PDh8ZDtpZihuKz1jLG88MTI4KXRocm93IG5ldyByKCJ0bHYuZGVjb2RlKGxvbmcpOiBub3QgbWluaW1hbCBlbmNvZGluZyIpfWNvbnN0IGE9ZS5zdWJhcnJheShuLG4rbyk7aWYoYS5sZW5ndGghPT1vKXRocm93IG5ldyByKCJ0bHYuZGVjb2RlOiB3cm9uZyB2YWx1ZSBsZW5ndGgiKTtyZXR1cm57djphLGw6ZS5zdWJhcnJheShuK28pfX19LF9pbnQ6e2VuY29kZSh0KXtjb25zdHtFcnI6ZX09ZWE7aWYodDxpYSl0aHJvdyBuZXcgZSgiaW50ZWdlcjogbmVnYXRpdmUgaW50ZWdlcnMgYXJlIG5vdCBhbGxvd2VkIik7bGV0IHI9YWcodCk7aWYoTnVtYmVyLnBhcnNlSW50KHJbMF0sMTYpJjgmJihyPSIwMCIrciksci5sZW5ndGgmMSl0aHJvdyBuZXcgZSgidW5leHBlY3RlZCBERVIgcGFyc2luZyBhc3NlcnRpb246IHVucGFkZGVkIGhleCIpO3JldHVybiByfSxkZWNvZGUodCl7Y29uc3R7RXJyOmV9PWVhO2lmKHRbMF0mMTI4KXRocm93IG5ldyBlKCJpbnZhbGlkIHNpZ25hdHVyZSBpbnRlZ2VyOiBuZWdhdGl2ZSIpO2lmKHRbMF09PT0wJiYhKHRbMV0mMTI4KSl0aHJvdyBuZXcgZSgiaW52YWxpZCBzaWduYXR1cmUgaW50ZWdlcjogdW5uZWNlc3NhcnkgbGVhZGluZyB6ZXJvIik7cmV0dXJuIHN1KHQpfX0sdG9TaWcodCl7Y29uc3R7RXJyOmUsX2ludDpyLF90bHY6bn09ZWEscz1LaSgic2lnbmF0dXJlIix0KSx7djppLGw6b309bi5kZWNvZGUoNDgscyk7aWYoby5sZW5ndGgpdGhyb3cgbmV3IGUoImludmFsaWQgc2lnbmF0dXJlOiBsZWZ0IGJ5dGVzIGFmdGVyIHBhcnNpbmciKTtjb25zdHt2OmEsbDpjfT1uLmRlY29kZSgyLGkpLHt2OmwsbDpkfT1uLmRlY29kZSgyLGMpO2lmKGQubGVuZ3RoKXRocm93IG5ldyBlKCJpbnZhbGlkIHNpZ25hdHVyZTogbGVmdCBieXRlcyBhZnRlciBwYXJzaW5nIik7cmV0dXJue3I6ci5kZWNvZGUoYSksczpyLmRlY29kZShsKX19LGhleEZyb21TaWcodCl7Y29uc3R7X3RsdjplLF9pbnQ6cn09ZWEsbj1lLmVuY29kZSgyLHIuZW5jb2RlKHQucikpLHM9ZS5lbmNvZGUoMixyLmVuY29kZSh0LnMpKSxpPW4rcztyZXR1cm4gZS5lbmNvZGUoNDgsaSl9fTtmdW5jdGlvbiBpMih0LGUpe3JldHVybiBEMChpMSh0LGUpKX1jb25zdCBpYT1CaWdJbnQoMCksbm49QmlnSW50KDEpO0JpZ0ludCgyKTtjb25zdCBzMj1CaWdJbnQoMyksQXE9QmlnSW50KDQpO2Z1bmN0aW9uIFRxKHQpe2NvbnN0IGU9a3EodCkse0ZwOnJ9PWUsbj1tNihlLm4sZS5uQml0TGVuZ3RoKSxzPWUudG9CeXRlc3x8KChFLHgsXyk9Pntjb25zdCBrPXgudG9BZmZpbmUoKTtyZXR1cm4gbmIoVWludDhBcnJheS5mcm9tKFs0XSksci50b0J5dGVzKGsueCksci50b0J5dGVzKGsueSkpfSksaT1lLmZyb21CeXRlc3x8KEU9Pntjb25zdCB4PUUuc3ViYXJyYXkoMSksXz1yLmZyb21CeXRlcyh4LnN1YmFycmF5KDAsci5CWVRFUykpLGs9ci5mcm9tQnl0ZXMoeC5zdWJhcnJheShyLkJZVEVTLDIqci5CWVRFUykpO3JldHVybnt4Ol8seTprfX0pO2Z1bmN0aW9uIG8oRSl7Y29uc3R7YTp4LGI6X309ZSxrPXIuc3FyKEUpLEE9ci5tdWwoayxFKTtyZXR1cm4gci5hZGQoci5hZGQoQSxyLm11bChFLHgpKSxfKX1mdW5jdGlvbiBhKEUseCl7Y29uc3QgXz1yLnNxcih4KSxrPW8oRSk7cmV0dXJuIHIuZXFsKF8sayl9aWYoIWEoZS5HeCxlLkd5KSl0aHJvdyBuZXcgRXJyb3IoImJhZCBjdXJ2ZSBwYXJhbXM6IGdlbmVyYXRvciBwb2ludCIpO2NvbnN0IGM9ci5tdWwoci5wb3coZS5hLHMyKSxBcSksbD1yLm11bChyLnNxcihlLmIpLEJpZ0ludCgyNykpO2lmKHIuaXMwKHIuYWRkKGMsbCkpKXRocm93IG5ldyBFcnJvcigiYmFkIGN1cnZlIHBhcmFtczogYSBvciBiIik7ZnVuY3Rpb24gZChFKXtyZXR1cm4gZjYoRSxubixlLm4pfWZ1bmN0aW9uIHUoRSl7Y29uc3R7YWxsb3dlZFByaXZhdGVLZXlMZW5ndGhzOngsbkJ5dGVMZW5ndGg6Xyx3cmFwUHJpdmF0ZUtleTprLG46QX09ZTtpZih4JiZ0eXBlb2YgRSE9ImJpZ2ludCIpe2lmKG4xKEUpJiYoRT1EMChFKSksdHlwZW9mIEUhPSJzdHJpbmcifHwheC5pbmNsdWRlcyhFLmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHByaXZhdGUga2V5Iik7RT1FLnBhZFN0YXJ0KF8qMiwiMCIpfWxldCBNO3RyeXtNPXR5cGVvZiBFPT0iYmlnaW50Ij9FOnN1KEtpKCJwcml2YXRlIGtleSIsRSxfKSl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHByaXZhdGUga2V5LCBleHBlY3RlZCBoZXggb3IgIitfKyIgYnl0ZXMsIGdvdCAiK3R5cGVvZiBFKX1yZXR1cm4gayYmKE09dGkoTSxBKSksb2goInByaXZhdGUga2V5IixNLG5uLEEpLE19ZnVuY3Rpb24gaChFKXtpZighKEUgaW5zdGFuY2VvZiBtKSl0aHJvdyBuZXcgRXJyb3IoIlByb2plY3RpdmVQb2ludCBleHBlY3RlZCIpfWNvbnN0IHA9SjgoKEUseCk9Pntjb25zdHtweDpfLHB5OmsscHo6QX09RTtpZihyLmVxbChBLHIuT05FKSlyZXR1cm57eDpfLHk6a307Y29uc3QgTT1FLmlzMCgpO3g9PW51bGwmJih4PU0/ci5PTkU6ci5pbnYoQSkpO2NvbnN0IFA9ci5tdWwoXyx4KSxqPXIubXVsKGsseCksVT1yLm11bChBLHgpO2lmKE0pcmV0dXJue3g6ci5aRVJPLHk6ci5aRVJPfTtpZighci5lcWwoVSxyLk9ORSkpdGhyb3cgbmV3IEVycm9yKCJpbnZaIHdhcyBpbnZhbGlkIik7cmV0dXJue3g6UCx5Omp9fSksZj1KOChFPT57aWYoRS5pczAoKSl7aWYoZS5hbGxvd0luZmluaXR5UG9pbnQmJiFyLmlzMChFLnB5KSlyZXR1cm47dGhyb3cgbmV3IEVycm9yKCJiYWQgcG9pbnQ6IFpFUk8iKX1jb25zdHt4LHk6X309RS50b0FmZmluZSgpO2lmKCFyLmlzVmFsaWQoeCl8fCFyLmlzVmFsaWQoXykpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9pbnQ6IHggb3IgeSBub3QgRkUiKTtpZighYSh4LF8pKXRocm93IG5ldyBFcnJvcigiYmFkIHBvaW50OiBlcXVhdGlvbiBsZWZ0ICE9IHJpZ2h0Iik7aWYoIUUuaXNUb3JzaW9uRnJlZSgpKXRocm93IG5ldyBFcnJvcigiYmFkIHBvaW50OiBub3QgaW4gcHJpbWUtb3JkZXIgc3ViZ3JvdXAiKTtyZXR1cm4hMH0pO2NsYXNzIG17Y29uc3RydWN0b3IoeCxfLGspe2lmKHg9PW51bGx8fCFyLmlzVmFsaWQoeCkpdGhyb3cgbmV3IEVycm9yKCJ4IHJlcXVpcmVkIik7aWYoXz09bnVsbHx8IXIuaXNWYWxpZChfKXx8ci5pczAoXykpdGhyb3cgbmV3IEVycm9yKCJ5IHJlcXVpcmVkIik7aWYoaz09bnVsbHx8IXIuaXNWYWxpZChrKSl0aHJvdyBuZXcgRXJyb3IoInogcmVxdWlyZWQiKTt0aGlzLnB4PXgsdGhpcy5weT1fLHRoaXMucHo9ayxPYmplY3QuZnJlZXplKHRoaXMpfXN0YXRpYyBmcm9tQWZmaW5lKHgpe2NvbnN0e3g6Xyx5Omt9PXh8fHt9O2lmKCF4fHwhci5pc1ZhbGlkKF8pfHwhci5pc1ZhbGlkKGspKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBhZmZpbmUgcG9pbnQiKTtpZih4IGluc3RhbmNlb2YgbSl0aHJvdyBuZXcgRXJyb3IoInByb2plY3RpdmUgcG9pbnQgbm90IGFsbG93ZWQiKTtjb25zdCBBPU09PnIuZXFsKE0sci5aRVJPKTtyZXR1cm4gQShfKSYmQShrKT9tLlpFUk86bmV3IG0oXyxrLHIuT05FKX1nZXQgeCgpe3JldHVybiB0aGlzLnRvQWZmaW5lKCkueH1nZXQgeSgpe3JldHVybiB0aGlzLnRvQWZmaW5lKCkueX1zdGF0aWMgbm9ybWFsaXplWih4KXtjb25zdCBfPWwkKHIseC5tYXAoaz0+ay5weikpO3JldHVybiB4Lm1hcCgoayxBKT0+ay50b0FmZmluZShfW0FdKSkubWFwKG0uZnJvbUFmZmluZSl9c3RhdGljIGZyb21IZXgoeCl7Y29uc3QgXz1tLmZyb21BZmZpbmUoaShLaSgicG9pbnRIZXgiLHgpKSk7cmV0dXJuIF8uYXNzZXJ0VmFsaWRpdHkoKSxffXN0YXRpYyBmcm9tUHJpdmF0ZUtleSh4KXtyZXR1cm4gbS5CQVNFLm11bHRpcGx5KHUoeCkpfXN0YXRpYyBtc20oeCxfKXtyZXR1cm4gX3EobSxuLHgsXyl9X3NldFdpbmRvd1NpemUoeCl7di5zZXRXaW5kb3dTaXplKHRoaXMseCl9YXNzZXJ0VmFsaWRpdHkoKXtmKHRoaXMpfWhhc0V2ZW5ZKCl7Y29uc3R7eTp4fT10aGlzLnRvQWZmaW5lKCk7aWYoci5pc09kZClyZXR1cm4hci5pc09kZCh4KTt0aHJvdyBuZXcgRXJyb3IoIkZpZWxkIGRvZXNuJ3Qgc3VwcG9ydCBpc09kZCIpfWVxdWFscyh4KXtoKHgpO2NvbnN0e3B4Ol8scHk6ayxwejpBfT10aGlzLHtweDpNLHB5OlAscHo6an09eCxVPXIuZXFsKHIubXVsKF8saiksci5tdWwoTSxBKSksVj1yLmVxbChyLm11bChrLGopLHIubXVsKFAsQSkpO3JldHVybiBVJiZWfW5lZ2F0ZSgpe3JldHVybiBuZXcgbSh0aGlzLnB4LHIubmVnKHRoaXMucHkpLHRoaXMucHopfWRvdWJsZSgpe2NvbnN0e2E6eCxiOl99PWUsaz1yLm11bChfLHMyKSx7cHg6QSxweTpNLHB6OlB9PXRoaXM7bGV0IGo9ci5aRVJPLFU9ci5aRVJPLFY9ci5aRVJPLEY9ci5tdWwoQSxBKSxiPXIubXVsKE0sTSkseT1yLm11bChQLFApLEM9ci5tdWwoQSxNKTtyZXR1cm4gQz1yLmFkZChDLEMpLFY9ci5tdWwoQSxQKSxWPXIuYWRkKFYsViksaj1yLm11bCh4LFYpLFU9ci5tdWwoayx5KSxVPXIuYWRkKGosVSksaj1yLnN1YihiLFUpLFU9ci5hZGQoYixVKSxVPXIubXVsKGosVSksaj1yLm11bChDLGopLFY9ci5tdWwoayxWKSx5PXIubXVsKHgseSksQz1yLnN1YihGLHkpLEM9ci5tdWwoeCxDKSxDPXIuYWRkKEMsViksVj1yLmFkZChGLEYpLEY9ci5hZGQoVixGKSxGPXIuYWRkKEYseSksRj1yLm11bChGLEMpLFU9ci5hZGQoVSxGKSx5PXIubXVsKE0sUCkseT1yLmFkZCh5LHkpLEY9ci5tdWwoeSxDKSxqPXIuc3ViKGosRiksVj1yLm11bCh5LGIpLFY9ci5hZGQoVixWKSxWPXIuYWRkKFYsViksbmV3IG0oaixVLFYpfWFkZCh4KXtoKHgpO2NvbnN0e3B4Ol8scHk6ayxwejpBfT10aGlzLHtweDpNLHB5OlAscHo6an09eDtsZXQgVT1yLlpFUk8sVj1yLlpFUk8sRj1yLlpFUk87Y29uc3QgYj1lLmEseT1yLm11bChlLmIsczIpO2xldCBDPXIubXVsKF8sTSksVD1yLm11bChrLFApLE49ci5tdWwoQSxqKSxSPXIuYWRkKF8sayksST1yLmFkZChNLFApO1I9ci5tdWwoUixJKSxJPXIuYWRkKEMsVCksUj1yLnN1YihSLEkpLEk9ci5hZGQoXyxBKTtsZXQgQj1yLmFkZChNLGopO3JldHVybiBJPXIubXVsKEksQiksQj1yLmFkZChDLE4pLEk9ci5zdWIoSSxCKSxCPXIuYWRkKGssQSksVT1yLmFkZChQLGopLEI9ci5tdWwoQixVKSxVPXIuYWRkKFQsTiksQj1yLnN1YihCLFUpLEY9ci5tdWwoYixJKSxVPXIubXVsKHksTiksRj1yLmFkZChVLEYpLFU9ci5zdWIoVCxGKSxGPXIuYWRkKFQsRiksVj1yLm11bChVLEYpLFQ9ci5hZGQoQyxDKSxUPXIuYWRkKFQsQyksTj1yLm11bChiLE4pLEk9ci5tdWwoeSxJKSxUPXIuYWRkKFQsTiksTj1yLnN1YihDLE4pLE49ci5tdWwoYixOKSxJPXIuYWRkKEksTiksQz1yLm11bChULEkpLFY9ci5hZGQoVixDKSxDPXIubXVsKEIsSSksVT1yLm11bChSLFUpLFU9ci5zdWIoVSxDKSxDPXIubXVsKFIsVCksRj1yLm11bChCLEYpLEY9ci5hZGQoRixDKSxuZXcgbShVLFYsRil9c3VidHJhY3QoeCl7cmV0dXJuIHRoaXMuYWRkKHgubmVnYXRlKCkpfWlzMCgpe3JldHVybiB0aGlzLmVxdWFscyhtLlpFUk8pfXdOQUYoeCl7cmV0dXJuIHYud05BRkNhY2hlZCh0aGlzLHgsbS5ub3JtYWxpemVaKX1tdWx0aXBseVVuc2FmZSh4KXtjb25zdHtlbmRvOl8sbjprfT1lO29oKCJzY2FsYXIiLHgsaWEsayk7Y29uc3QgQT1tLlpFUk87aWYoeD09PWlhKXJldHVybiBBO2lmKHRoaXMuaXMwKCl8fHg9PT1ubilyZXR1cm4gdGhpcztpZighX3x8di5oYXNQcmVjb21wdXRlcyh0aGlzKSlyZXR1cm4gdi53TkFGQ2FjaGVkVW5zYWZlKHRoaXMseCxtLm5vcm1hbGl6ZVopO2xldHtrMW5lZzpNLGsxOlAsazJuZWc6aixrMjpVfT1fLnNwbGl0U2NhbGFyKHgpLFY9QSxGPUEsYj10aGlzO2Zvcig7UD5pYXx8VT5pYTspUCZubiYmKFY9Vi5hZGQoYikpLFUmbm4mJihGPUYuYWRkKGIpKSxiPWIuZG91YmxlKCksUD4+PW5uLFU+Pj1ubjtyZXR1cm4gTSYmKFY9Vi5uZWdhdGUoKSksaiYmKEY9Ri5uZWdhdGUoKSksRj1uZXcgbShyLm11bChGLnB4LF8uYmV0YSksRi5weSxGLnB6KSxWLmFkZChGKX1tdWx0aXBseSh4KXtjb25zdHtlbmRvOl8sbjprfT1lO29oKCJzY2FsYXIiLHgsbm4sayk7bGV0IEEsTTtpZihfKXtjb25zdHtrMW5lZzpQLGsxOmosazJuZWc6VSxrMjpWfT1fLnNwbGl0U2NhbGFyKHgpO2xldHtwOkYsZjpifT10aGlzLndOQUYoaikse3A6eSxmOkN9PXRoaXMud05BRihWKTtGPXYuY29uc3RUaW1lTmVnYXRlKFAsRikseT12LmNvbnN0VGltZU5lZ2F0ZShVLHkpLHk9bmV3IG0oci5tdWwoeS5weCxfLmJldGEpLHkucHkseS5weiksQT1GLmFkZCh5KSxNPWIuYWRkKEMpfWVsc2V7Y29uc3R7cDpQLGY6an09dGhpcy53TkFGKHgpO0E9UCxNPWp9cmV0dXJuIG0ubm9ybWFsaXplWihbQSxNXSlbMF19bXVsdGlwbHlBbmRBZGRVbnNhZmUoeCxfLGspe2NvbnN0IEE9bS5CQVNFLE09KGosVSk9PlU9PT1pYXx8VT09PW5ufHwhai5lcXVhbHMoQSk/ai5tdWx0aXBseVVuc2FmZShVKTpqLm11bHRpcGx5KFUpLFA9TSh0aGlzLF8pLmFkZChNKHgsaykpO3JldHVybiBQLmlzMCgpP3ZvaWQgMDpQfXRvQWZmaW5lKHgpe3JldHVybiBwKHRoaXMseCl9aXNUb3JzaW9uRnJlZSgpe2NvbnN0e2g6eCxpc1RvcnNpb25GcmVlOl99PWU7aWYoeD09PW5uKXJldHVybiEwO2lmKF8pcmV0dXJuIF8obSx0aGlzKTt0aHJvdyBuZXcgRXJyb3IoImlzVG9yc2lvbkZyZWUoKSBoYXMgbm90IGJlZW4gZGVjbGFyZWQgZm9yIHRoZSBlbGxpcHRpYyBjdXJ2ZSIpfWNsZWFyQ29mYWN0b3IoKXtjb25zdHtoOngsY2xlYXJDb2ZhY3RvcjpffT1lO3JldHVybiB4PT09bm4/dGhpczpfP18obSx0aGlzKTp0aGlzLm11bHRpcGx5VW5zYWZlKGUuaCl9dG9SYXdCeXRlcyh4PSEwKXtyZXR1cm4gTTAoImlzQ29tcHJlc3NlZCIseCksdGhpcy5hc3NlcnRWYWxpZGl0eSgpLHMobSx0aGlzLHgpfXRvSGV4KHg9ITApe3JldHVybiBNMCgiaXNDb21wcmVzc2VkIix4KSxEMCh0aGlzLnRvUmF3Qnl0ZXMoeCkpfX1tLkJBU0U9bmV3IG0oZS5HeCxlLkd5LHIuT05FKSxtLlpFUk89bmV3IG0oci5aRVJPLHIuT05FLHIuWkVSTyk7Y29uc3R7ZW5kbzp3LG5CaXRMZW5ndGg6Z309ZSx2PXhxKG0sdz9NYXRoLmNlaWwoZy8yKTpnKTtyZXR1cm57Q1VSVkU6ZSxQcm9qZWN0aXZlUG9pbnQ6bSxub3JtUHJpdmF0ZUtleVRvU2NhbGFyOnUsd2VpZXJzdHJhc3NFcXVhdGlvbjpvLGlzV2l0aGluQ3VydmVPcmRlcjpkfX1mdW5jdGlvbiBJcSh0KXtjb25zdCBlPW0kKHQpO3JldHVybiBfeShlLHtoYXNoOiJoYXNoIixobWFjOiJmdW5jdGlvbiIscmFuZG9tQnl0ZXM6ImZ1bmN0aW9uIn0se2JpdHMyaW50OiJmdW5jdGlvbiIsYml0czJpbnRfbW9kTjoiZnVuY3Rpb24iLGxvd1M6ImJvb2xlYW4ifSksT2JqZWN0LmZyZWV6ZSh7bG93UzohMCwuLi5lfSl9ZnVuY3Rpb24gUnEodCl7Y29uc3QgZT1JcSh0KSx7RnA6cixuLG5CeXRlTGVuZ3RoOnMsbkJpdExlbmd0aDppfT1lLG89ci5CWVRFUysxLGE9MipyLkJZVEVTKzE7ZnVuY3Rpb24gYyh5KXtyZXR1cm4gdGkoeSxuKX1mdW5jdGlvbiBsKHkpe3JldHVybiBCQyh5LG4pfWNvbnN0e1Byb2plY3RpdmVQb2ludDpkLG5vcm1Qcml2YXRlS2V5VG9TY2FsYXI6dSx3ZWllcnN0cmFzc0VxdWF0aW9uOmgsaXNXaXRoaW5DdXJ2ZU9yZGVyOnB9PVRxKHsuLi5lLHRvQnl0ZXMoeSxDLFQpe2NvbnN0IE49Qy50b0FmZmluZSgpLFI9ci50b0J5dGVzKE4ueCksST1uYjtyZXR1cm4gTTAoImlzQ29tcHJlc3NlZCIsVCksVD9JKFVpbnQ4QXJyYXkuZnJvbShbQy5oYXNFdmVuWSgpPzI6M10pLFIpOkkoVWludDhBcnJheS5mcm9tKFs0XSksUixyLnRvQnl0ZXMoTi55KSl9LGZyb21CeXRlcyh5KXtjb25zdCBDPXkubGVuZ3RoLFQ9eVswXSxOPXkuc3ViYXJyYXkoMSk7aWYoQz09PW8mJihUPT09Mnx8VD09PTMpKXtjb25zdCBSPXN1KE4pO2lmKCFmNihSLG5uLHIuT1JERVIpKXRocm93IG5ldyBFcnJvcigiUG9pbnQgaXMgbm90IG9uIGN1cnZlIik7Y29uc3QgST1oKFIpO2xldCBCO3RyeXtCPXIuc3FydChJKX1jYXRjaChRKXtjb25zdCByZT1RIGluc3RhbmNlb2YgRXJyb3I/IjogIitRLm1lc3NhZ2U6IiI7dGhyb3cgbmV3IEVycm9yKCJQb2ludCBpcyBub3Qgb24gY3VydmUiK3JlKX1jb25zdCBTPShCJm5uKT09PW5uO3JldHVybihUJjEpPT09MSE9PVMmJihCPXIubmVnKEIpKSx7eDpSLHk6Qn19ZWxzZSBpZihDPT09YSYmVD09PTQpe2NvbnN0IFI9ci5mcm9tQnl0ZXMoTi5zdWJhcnJheSgwLHIuQllURVMpKSxJPXIuZnJvbUJ5dGVzKE4uc3ViYXJyYXkoci5CWVRFUywyKnIuQllURVMpKTtyZXR1cm57eDpSLHk6SX19ZWxzZXtjb25zdCBSPW8sST1hO3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBQb2ludCwgZXhwZWN0ZWQgbGVuZ3RoIG9mICIrUisiLCBvciB1bmNvbXByZXNzZWQgIitJKyIsIGdvdCAiK0MpfX19KTtmdW5jdGlvbiBmKHkpe2NvbnN0IEM9bj4+bm47cmV0dXJuIHk+Q31mdW5jdGlvbiBtKHkpe3JldHVybiBmKHkpP2MoLXkpOnl9Y29uc3Qgdz0oeSxDLFQpPT5zdSh5LnNsaWNlKEMsVCkpO2NsYXNzIGd7Y29uc3RydWN0b3IoQyxULE4pe29oKCJyIixDLG5uLG4pLG9oKCJzIixULG5uLG4pLHRoaXMucj1DLHRoaXMucz1ULE4hPW51bGwmJih0aGlzLnJlY292ZXJ5PU4pLE9iamVjdC5mcmVlemUodGhpcyl9c3RhdGljIGZyb21Db21wYWN0KEMpe2NvbnN0IFQ9cztyZXR1cm4gQz1LaSgiY29tcGFjdFNpZ25hdHVyZSIsQyxUKjIpLG5ldyBnKHcoQywwLFQpLHcoQyxULDIqVCkpfXN0YXRpYyBmcm9tREVSKEMpe2NvbnN0e3I6VCxzOk59PWVhLnRvU2lnKEtpKCJERVIiLEMpKTtyZXR1cm4gbmV3IGcoVCxOKX1hc3NlcnRWYWxpZGl0eSgpe31hZGRSZWNvdmVyeUJpdChDKXtyZXR1cm4gbmV3IGcodGhpcy5yLHRoaXMucyxDKX1yZWNvdmVyUHVibGljS2V5KEMpe2NvbnN0e3I6VCxzOk4scmVjb3Zlcnk6Un09dGhpcyxJPUEoS2koIm1zZ0hhc2giLEMpKTtpZihSPT1udWxsfHwhWzAsMSwyLDNdLmluY2x1ZGVzKFIpKXRocm93IG5ldyBFcnJvcigicmVjb3ZlcnkgaWQgaW52YWxpZCIpO2NvbnN0IEI9Uj09PTJ8fFI9PT0zP1QrZS5uOlQ7aWYoQj49ci5PUkRFUil0aHJvdyBuZXcgRXJyb3IoInJlY292ZXJ5IGlkIDIgb3IgMyBpbnZhbGlkIik7Y29uc3QgUz0oUiYxKT09PTA/IjAyIjoiMDMiLHo9ZC5mcm9tSGV4KFMraTIoQixyLkJZVEVTKSksUT1sKEIpLHJlPWMoLUkqUSksSj1jKE4qUSksZWU9ZC5CQVNFLm11bHRpcGx5QW5kQWRkVW5zYWZlKHoscmUsSik7aWYoIWVlKXRocm93IG5ldyBFcnJvcigicG9pbnQgYXQgaW5maW5pZnkiKTtyZXR1cm4gZWUuYXNzZXJ0VmFsaWRpdHkoKSxlZX1oYXNIaWdoUygpe3JldHVybiBmKHRoaXMucyl9bm9ybWFsaXplUygpe3JldHVybiB0aGlzLmhhc0hpZ2hTKCk/bmV3IGcodGhpcy5yLGMoLXRoaXMucyksdGhpcy5yZWNvdmVyeSk6dGhpc310b0RFUlJhd0J5dGVzKCl7cmV0dXJuIHJiKHRoaXMudG9ERVJIZXgoKSl9dG9ERVJIZXgoKXtyZXR1cm4gZWEuaGV4RnJvbVNpZyh0aGlzKX10b0NvbXBhY3RSYXdCeXRlcygpe3JldHVybiByYih0aGlzLnRvQ29tcGFjdEhleCgpKX10b0NvbXBhY3RIZXgoKXtjb25zdCBDPXM7cmV0dXJuIGkyKHRoaXMucixDKStpMih0aGlzLnMsQyl9fWNvbnN0IHY9e2lzVmFsaWRQcml2YXRlS2V5KHkpe3RyeXtyZXR1cm4gdSh5KSwhMH1jYXRjaHtyZXR1cm4hMX19LG5vcm1Qcml2YXRlS2V5VG9TY2FsYXI6dSxyYW5kb21Qcml2YXRlS2V5OigpPT57Y29uc3QgeT1oJChlLm4pO3JldHVybiB2cShlLnJhbmRvbUJ5dGVzKHkpLGUubil9LHByZWNvbXB1dGUoeT04LEM9ZC5CQVNFKXtyZXR1cm4gQy5fc2V0V2luZG93U2l6ZSh5KSxDLm11bHRpcGx5KEJpZ0ludCgzKSksQ319O2Z1bmN0aW9uIEUoeSxDPSEwKXtyZXR1cm4gZC5mcm9tUHJpdmF0ZUtleSh5KS50b1Jhd0J5dGVzKEMpfWZ1bmN0aW9uIHgoeSl7aWYodHlwZW9mIHk9PSJiaWdpbnQiKXJldHVybiExO2lmKHkgaW5zdGFuY2VvZiBkKXJldHVybiEwO2NvbnN0IFQ9S2koImtleSIseSkubGVuZ3RoLE49ci5CWVRFUyxSPU4rMSxJPTIqTisxO2lmKCEoZS5hbGxvd2VkUHJpdmF0ZUtleUxlbmd0aHN8fHM9PT1SKSlyZXR1cm4gVD09PVJ8fFQ9PT1JfWZ1bmN0aW9uIF8oeSxDLFQ9ITApe2lmKHgoeSk9PT0hMCl0aHJvdyBuZXcgRXJyb3IoImZpcnN0IGFyZyBtdXN0IGJlIHByaXZhdGUga2V5Iik7aWYoeChDKT09PSExKXRocm93IG5ldyBFcnJvcigic2Vjb25kIGFyZyBtdXN0IGJlIHB1YmxpYyBrZXkiKTtyZXR1cm4gZC5mcm9tSGV4KEMpLm11bHRpcGx5KHUoeSkpLnRvUmF3Qnl0ZXMoVCl9Y29uc3Qgaz1lLmJpdHMyaW50fHxmdW5jdGlvbih5KXtpZih5Lmxlbmd0aD44MTkyKXRocm93IG5ldyBFcnJvcigiaW5wdXQgaXMgdG9vIGxhcmdlIik7Y29uc3QgQz1zdSh5KSxUPXkubGVuZ3RoKjgtaTtyZXR1cm4gVD4wP0M+PkJpZ0ludChUKTpDfSxBPWUuYml0czJpbnRfbW9kTnx8ZnVuY3Rpb24oeSl7cmV0dXJuIGMoayh5KSl9LE09eHkoaSk7ZnVuY3Rpb24gUCh5KXtyZXR1cm4gb2goIm51bSA8IDJeIitpLHksaWEsTSksaTEoeSxzKX1mdW5jdGlvbiBqKHksQyxUPVUpe2lmKFsicmVjb3ZlcmVkIiwiY2Fub25pY2FsIl0uc29tZShoZT0+aGUgaW4gVCkpdGhyb3cgbmV3IEVycm9yKCJzaWduKCkgbGVnYWN5IG9wdGlvbnMgbm90IHN1cHBvcnRlZCIpO2NvbnN0e2hhc2g6TixyYW5kb21CeXRlczpSfT1lO2xldHtsb3dTOkkscHJlaGFzaDpCLGV4dHJhRW50cm9weTpTfT1UO0k9PW51bGwmJihJPSEwKSx5PUtpKCJtc2dIYXNoIix5KSx0NyhUKSxCJiYoeT1LaSgicHJlaGFzaGVkIG1zZ0hhc2giLE4oeSkpKTtjb25zdCB6PUEoeSksUT11KEMpLHJlPVtQKFEpLFAoeildO2lmKFMhPW51bGwmJlMhPT0hMSl7Y29uc3QgaGU9Uz09PSEwP1Ioci5CWVRFUyk6UztyZS5wdXNoKEtpKCJleHRyYUVudHJvcHkiLGhlKSl9Y29uc3QgSj1uYiguLi5yZSksZWU9ejtmdW5jdGlvbiB0ZShoZSl7Y29uc3QgU2U9ayhoZSk7aWYoIXAoU2UpKXJldHVybjtjb25zdCBLPWwoU2UpLFo9ZC5CQVNFLm11bHRpcGx5KFNlKS50b0FmZmluZSgpLG1lPWMoWi54KTtpZihtZT09PWlhKXJldHVybjtjb25zdCB2ZT1jKEsqYyhlZSttZSpRKSk7aWYodmU9PT1pYSlyZXR1cm47bGV0IEZlPShaLng9PT1tZT8wOjIpfE51bWJlcihaLnkmbm4pLGV0PXZlO3JldHVybiBJJiZmKHZlKSYmKGV0PW0odmUpLEZlXj0xKSxuZXcgZyhtZSxldCxGZSl9cmV0dXJue3NlZWQ6SixrMnNpZzp0ZX19Y29uc3QgVT17bG93UzplLmxvd1MscHJlaGFzaDohMX0sVj17bG93UzplLmxvd1MscHJlaGFzaDohMX07ZnVuY3Rpb24gRih5LEMsVD1VKXtjb25zdHtzZWVkOk4sazJzaWc6Un09aih5LEMsVCksST1lO3JldHVybiBkcShJLmhhc2gub3V0cHV0TGVuLEkubkJ5dGVMZW5ndGgsSS5obWFjKShOLFIpfWQuQkFTRS5fc2V0V2luZG93U2l6ZSg4KTtmdW5jdGlvbiBiKHksQyxULE49Vil7Y29uc3QgUj15O0M9S2koIm1zZ0hhc2giLEMpLFQ9S2koInB1YmxpY0tleSIsVCk7Y29uc3R7bG93UzpJLHByZWhhc2g6Qixmb3JtYXQ6U309TjtpZih0NyhOKSwic3RyaWN0ImluIE4pdGhyb3cgbmV3IEVycm9yKCJvcHRpb25zLnN0cmljdCB3YXMgcmVuYW1lZCB0byBsb3dTIik7aWYoUyE9PXZvaWQgMCYmUyE9PSJjb21wYWN0IiYmUyE9PSJkZXIiKXRocm93IG5ldyBFcnJvcigiZm9ybWF0IG11c3QgYmUgY29tcGFjdCBvciBkZXIiKTtjb25zdCB6PXR5cGVvZiBSPT0ic3RyaW5nInx8bjEoUiksUT0heiYmIVMmJnR5cGVvZiBSPT0ib2JqZWN0IiYmUiE9PW51bGwmJnR5cGVvZiBSLnI9PSJiaWdpbnQiJiZ0eXBlb2YgUi5zPT0iYmlnaW50IjtpZigheiYmIVEpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpZ25hdHVyZSwgZXhwZWN0ZWQgVWludDhBcnJheSwgaGV4IHN0cmluZyBvciBTaWduYXR1cmUgaW5zdGFuY2UiKTtsZXQgcmUsSjt0cnl7aWYoUSYmKHJlPW5ldyBnKFIucixSLnMpKSx6KXt0cnl7UyE9PSJjb21wYWN0IiYmKHJlPWcuZnJvbURFUihSKSl9Y2F0Y2goRmUpe2lmKCEoRmUgaW5zdGFuY2VvZiBlYS5FcnIpKXRocm93IEZlfSFyZSYmUyE9PSJkZXIiJiYocmU9Zy5mcm9tQ29tcGFjdChSKSl9Sj1kLmZyb21IZXgoVCl9Y2F0Y2h7cmV0dXJuITF9aWYoIXJlfHxJJiZyZS5oYXNIaWdoUygpKXJldHVybiExO0ImJihDPWUuaGFzaChDKSk7Y29uc3R7cjplZSxzOnRlfT1yZSxoZT1BKEMpLFNlPWwodGUpLEs9YyhoZSpTZSksWj1jKGVlKlNlKSxtZT1kLkJBU0UubXVsdGlwbHlBbmRBZGRVbnNhZmUoSixLLFopPy50b0FmZmluZSgpO3JldHVybiBtZT9jKG1lLngpPT09ZWU6ITF9cmV0dXJue0NVUlZFOmUsZ2V0UHVibGljS2V5OkUsZ2V0U2hhcmVkU2VjcmV0Ol8sc2lnbjpGLHZlcmlmeTpiLFByb2plY3RpdmVQb2ludDpkLFNpZ25hdHVyZTpnLHV0aWxzOnZ9fS8qISBub2JsZS1jdXJ2ZXMgLSBNSVQgTGljZW5zZSAoYykgMjAyMiBQYXVsIE1pbGxlciAocGF1bG1pbGxyLmNvbSkgKi9mdW5jdGlvbiBOcSh0KXtyZXR1cm57aGFzaDp0LGhtYWM6KGUsLi4ucik9PmUkKHQsZSx2aiguLi5yKSkscmFuZG9tQnl0ZXM6RWp9fWZ1bmN0aW9uIFBxKHQsZSl7Y29uc3Qgcj1uPT5ScSh7Li4udCwuLi5OcShuKX0pO3JldHVybnsuLi5yKGUpLGNyZWF0ZTpyfX0vKiEgbm9ibGUtY3VydmVzIC0gTUlUIExpY2Vuc2UgKGMpIDIwMjIgUGF1bCBNaWxsZXIgKHBhdWxtaWxsci5jb20pICovY29uc3QgZyQ9QmlnSW50KCIweGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlZmZmZmZjMmYiKSxyNz1CaWdJbnQoIjB4ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmViYWFlZGNlNmFmNDhhMDNiYmZkMjVlOGNkMDM2NDE0MSIpLE9xPUJpZ0ludCgwKSwkcT1CaWdJbnQoMSksVUM9QmlnSW50KDIpLG43PSh0LGUpPT4odCtlL1VDKS9lO2Z1bmN0aW9uIE1xKHQpe2NvbnN0IGU9ZyQscj1CaWdJbnQoMyksbj1CaWdJbnQoNikscz1CaWdJbnQoMTEpLGk9QmlnSW50KDIyKSxvPUJpZ0ludCgyMyksYT1CaWdJbnQoNDQpLGM9QmlnSW50KDg4KSxsPXQqdCp0JWUsZD1sKmwqdCVlLHU9VWkoZCxyLGUpKmQlZSxoPVVpKHUscixlKSpkJWUscD1VaShoLFVDLGUpKmwlZSxmPVVpKHAscyxlKSpwJWUsbT1VaShmLGksZSkqZiVlLHc9VWkobSxhLGUpKm0lZSxnPVVpKHcsYyxlKSp3JWUsdj1VaShnLGEsZSkqbSVlLEU9VWkodixyLGUpKmQlZSx4PVVpKEUsbyxlKSpmJWUsXz1VaSh4LG4sZSkqbCVlLGs9VWkoXyxVQyxlKTtpZighRkMuZXFsKEZDLnNxcihrKSx0KSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNxdWFyZSByb290Iik7cmV0dXJuIGt9Y29uc3QgRkM9bTYoZyQsdm9pZCAwLHZvaWQgMCx7c3FydDpNcX0pLERxPVBxKHthOk9xLGI6QmlnSW50KDcpLEZwOkZDLG46cjcsR3g6QmlnSW50KCI1NTA2NjI2MzAyMjI3NzM0MzY2OTU3ODcxODg5NTE2ODUzNDMyNjI1MDYwMzQ1Mzc3NzU5NDE3NTUwMDE4NzM2MDM4OTExNjcyOTI0MCIpLEd5OkJpZ0ludCgiMzI2NzA1MTAwMjA3NTg4MTY5NzgwODMwODUxMzA1MDcwNDMxODQ0NzEyNzMzODA2NTkyNDMyNzU5Mzg5MDQzMzU3NTczMzc0ODI0MjQiKSxoOkJpZ0ludCgxKSxsb3dTOiEwLGVuZG86e2JldGE6QmlnSW50KCIweDdhZTk2YTJiNjU3YzA3MTA2ZTY0NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWUiKSxzcGxpdFNjYWxhcjp0PT57Y29uc3QgZT1yNyxyPUJpZ0ludCgiMHgzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSIpLG49LSRxKkJpZ0ludCgiMHhlNDQzN2VkNjAxMGU4ODI4NmY1NDdmYTkwYWJmZTRjMyIpLHM9QmlnSW50KCIweDExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCIpLGk9cixvPUJpZ0ludCgiMHgxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKSxhPW43KGkqdCxlKSxjPW43KC1uKnQsZSk7bGV0IGw9dGkodC1hKnItYypzLGUpLGQ9dGkoLWEqbi1jKmksZSk7Y29uc3QgdT1sPm8saD1kPm87aWYodSYmKGw9ZS1sKSxoJiYoZD1lLWQpLGw+b3x8ZD5vKXRocm93IG5ldyBFcnJvcigic3BsaXRTY2FsYXI6IEVuZG9tb3JwaGlzbSBmYWlsZWQsIGs9Iit0KTtyZXR1cm57azFuZWc6dSxrMTpsLGsybmVnOmgsazI6ZH19fX0sb08pLEJxPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxzZWNwMjU2azE6RHF9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7YXN5bmMgZnVuY3Rpb24gTHEodCxlKXtjb25zdHthYmk6cixhY2NvdW50Om49dC5hY2NvdW50LGFkZHJlc3M6cyxhcmdzOmksZGF0YVN1ZmZpeDpvLGZ1bmN0aW9uTmFtZTphLC4uLmN9PWU7aWYodHlwZW9mIG4+InUiKXRocm93IG5ldyBieSh7ZG9jc1BhdGg6Ii9kb2NzL2NvbnRyYWN0L3dyaXRlQ29udHJhY3QifSk7Y29uc3QgbD1uP0hzKG4pOm51bGwsZD1DeSh7YWJpOnIsYXJnczppLGZ1bmN0aW9uTmFtZTphfSk7dHJ5e3JldHVybiBhd2FpdCBUcih0LHdPLCJzZW5kVHJhbnNhY3Rpb24iKSh7ZGF0YTpgJHtkfSR7bz9vLnJlcGxhY2UoIjB4IiwiIik6IiJ9YCx0bzpzLGFjY291bnQ6bCwuLi5jfSl9Y2F0Y2godSl7dGhyb3cgWHcodSx7YWJpOnIsYWRkcmVzczpzLGFyZ3M6aSxkb2NzUGF0aDoiL2RvY3MvY29udHJhY3Qvd3JpdGVDb250cmFjdCIsZnVuY3Rpb25OYW1lOmEsc2VuZGVyOmw/LmFkZHJlc3N9KX19ZnVuY3Rpb24gWGkodCxlLHIpe2NvbnN0IG49dFtlLm5hbWVdO2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXJldHVybiBuO2NvbnN0IHM9dFtyXTtyZXR1cm4gdHlwZW9mIHM9PSJmdW5jdGlvbiI/czppPT5lKHQsaSl9Y29uc3QgTnc9IjIuMTcuMiIsVXE9KCk9PmBAd2FnbWkvY29yZUAke053fWA7dmFyIHckPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHI9PT0iYSImJiFuKXRocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlciIpO2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iP3QhPT1lfHwhbjohZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0Iik7cmV0dXJuIHI9PT0ibSI/bjpyPT09ImEiP24uY2FsbCh0KTpuP24udmFsdWU6ZS5nZXQodCl9LGliLGIkO2xldCBEYz1jbGFzcyBqQyBleHRlbmRzIEVycm9ye2dldCBkb2NzQmFzZVVybCgpe3JldHVybiJodHRwczovL3dhZ21pLnNoL2NvcmUifWdldCB2ZXJzaW9uKCl7cmV0dXJuIFVxKCl9Y29uc3RydWN0b3IoZSxyPXt9KXtzdXBlcigpLGliLmFkZCh0aGlzKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZGV0YWlscyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkb2NzUGF0aCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJtZXRhTWVzc2FnZXMiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywic2hvcnRNZXNzYWdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiV2FnbWlDb3JlRXJyb3IifSk7Y29uc3Qgbj1yLmNhdXNlIGluc3RhbmNlb2YgakM/ci5jYXVzZS5kZXRhaWxzOnIuY2F1c2U/Lm1lc3NhZ2U/ci5jYXVzZS5tZXNzYWdlOnIuZGV0YWlscyxzPXIuY2F1c2UgaW5zdGFuY2VvZiBqQyYmci5jYXVzZS5kb2NzUGF0aHx8ci5kb2NzUGF0aDt0aGlzLm1lc3NhZ2U9W2V8fCJBbiBlcnJvciBvY2N1cnJlZC4iLCIiLC4uLnIubWV0YU1lc3NhZ2VzP1suLi5yLm1ldGFNZXNzYWdlcywiIl06W10sLi4ucz9bYERvY3M6ICR7dGhpcy5kb2NzQmFzZVVybH0ke3N9Lmh0bWwke3IuZG9jc1NsdWc/YCMke3IuZG9jc1NsdWd9YDoiIn1gXTpbXSwuLi5uP1tgRGV0YWlsczogJHtufWBdOltdLGBWZXJzaW9uOiAke3RoaXMudmVyc2lvbn1gXS5qb2luKGANCmApLHIuY2F1c2UmJih0aGlzLmNhdXNlPXIuY2F1c2UpLHRoaXMuZGV0YWlscz1uLHRoaXMuZG9jc1BhdGg9cyx0aGlzLm1ldGFNZXNzYWdlcz1yLm1ldGFNZXNzYWdlcyx0aGlzLnNob3J0TWVzc2FnZT1lfXdhbGsoZSl7cmV0dXJuIHckKHRoaXMsaWIsIm0iLGIkKS5jYWxsKHRoaXMsdGhpcyxlKX19O2liPW5ldyBXZWFrU2V0LGIkPWZ1bmN0aW9uIHQoZSxyKXtyZXR1cm4gcj8uKGUpP2U6ZS5jYXVzZT93JCh0aGlzLGliLCJtIix0KS5jYWxsKHRoaXMsZS5jYXVzZSxyKTplfTtjbGFzcyBndSBleHRlbmRzIERje2NvbnN0cnVjdG9yKCl7c3VwZXIoIkNoYWluIG5vdCBjb25maWd1cmVkLiIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJuYW1lIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6IkNoYWluTm90Q29uZmlndXJlZEVycm9yIn0pfX1jbGFzcyBGcSBleHRlbmRzIERje2NvbnN0cnVjdG9yKCl7c3VwZXIoIkNvbm5lY3RvciBhbHJlYWR5IGNvbm5lY3RlZC4iKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJDb25uZWN0b3JBbHJlYWR5Q29ubmVjdGVkRXJyb3IifSl9fWNsYXNzIGpxIGV4dGVuZHMgRGN7Y29uc3RydWN0b3IoKXtzdXBlcigiQ29ubmVjdG9yIG5vdCBjb25uZWN0ZWQuIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiQ29ubmVjdG9yTm90Q29ubmVjdGVkRXJyb3IifSl9fWNsYXNzIHpxIGV4dGVuZHMgRGN7Y29uc3RydWN0b3Ioe2FkZHJlc3M6ZSxjb25uZWN0b3I6cn0pe3N1cGVyKGBBY2NvdW50ICIke2V9IiBub3QgZm91bmQgZm9yIGNvbm5lY3RvciAiJHtyLm5hbWV9Ii5gKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJDb25uZWN0b3JBY2NvdW50Tm90Rm91bmRFcnJvciJ9KX19Y2xhc3MgV3EgZXh0ZW5kcyBEY3tjb25zdHJ1Y3Rvcih7Y29ubmVjdGlvbkNoYWluSWQ6ZSxjb25uZWN0b3JDaGFpbklkOnJ9KXtzdXBlcihgVGhlIGN1cnJlbnQgY2hhaW4gb2YgdGhlIGNvbm5lY3RvciAoaWQ6ICR7cn0pIGRvZXMgbm90IG1hdGNoIHRoZSBjb25uZWN0aW9uJ3MgY2hhaW4gKGlkOiAke2V9KS5gLHttZXRhTWVzc2FnZXM6W2BDdXJyZW50IENoYWluIElEOiAgJHtyfWAsYEV4cGVjdGVkIENoYWluIElEOiAke2V9YF19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJDb25uZWN0b3JDaGFpbk1pc21hdGNoRXJyb3IifSl9fWNsYXNzIEhxIGV4dGVuZHMgRGN7Y29uc3RydWN0b3Ioe2Nvbm5lY3RvcjplfSl7c3VwZXIoYENvbm5lY3RvciAiJHtlLm5hbWV9IiB1bmF2YWlsYWJsZSB3aGlsZSByZWNvbm5lY3RpbmcuYCx7ZGV0YWlsczpbIkR1cmluZyB0aGUgcmVjb25uZWN0aW9uIHN0ZXAsIHRoZSBvbmx5IGNvbm5lY3RvciBtZXRob2RzIGd1YXJhbnRlZWQgdG8gYmUgYXZhaWxhYmxlIGFyZTogYGlkYCwgYG5hbWVgLCBgdHlwZWAsIGB1aWRgLiIsIkFsbCBvdGhlciBtZXRob2RzIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBhdmFpbGFibGUgdW50aWwgcmVjb25uZWN0aW9uIGNvbXBsZXRlcyBhbmQgY29ubmVjdG9ycyBhcmUgZnVsbHkgcmVzdG9yZWQuIiwiVGhpcyBlcnJvciBjb21tb25seSBvY2N1cnMgZm9yIGNvbm5lY3RvcnMgdGhhdCBhc3luY2hyb25vdXNseSBpbmplY3QgYWZ0ZXIgcmVjb25uZWN0aW9uIGhhcyBhbHJlYWR5IHN0YXJ0ZWQuIl0uam9pbigiICIpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiQ29ubmVjdG9yVW5hdmFpbGFibGVSZWNvbm5lY3RpbmdFcnJvciJ9KX19YXN5bmMgZnVuY3Rpb24gaTcodCxlKXtsZXQgcjtpZih0eXBlb2YgZS5jb25uZWN0b3I9PSJmdW5jdGlvbiI/cj10Ll9pbnRlcm5hbC5jb25uZWN0b3JzLnNldHVwKGUuY29ubmVjdG9yKTpyPWUuY29ubmVjdG9yLHIudWlkPT09dC5zdGF0ZS5jdXJyZW50KXRocm93IG5ldyBGcTt0cnl7dC5zZXRTdGF0ZShhPT4oey4uLmEsc3RhdHVzOiJjb25uZWN0aW5nIn0pKSxyLmVtaXR0ZXIuZW1pdCgibWVzc2FnZSIse3R5cGU6ImNvbm5lY3RpbmcifSk7Y29uc3R7Y29ubmVjdG9yOm4sLi4uc309ZSxpPWF3YWl0IHIuY29ubmVjdChzKSxvPWkuYWNjb3VudHM7cmV0dXJuIHIuZW1pdHRlci5vZmYoImNvbm5lY3QiLHQuX2ludGVybmFsLmV2ZW50cy5jb25uZWN0KSxyLmVtaXR0ZXIub24oImNoYW5nZSIsdC5faW50ZXJuYWwuZXZlbnRzLmNoYW5nZSksci5lbWl0dGVyLm9uKCJkaXNjb25uZWN0Iix0Ll9pbnRlcm5hbC5ldmVudHMuZGlzY29ubmVjdCksYXdhaXQgdC5zdG9yYWdlPy5zZXRJdGVtKCJyZWNlbnRDb25uZWN0b3JJZCIsci5pZCksdC5zZXRTdGF0ZShhPT4oey4uLmEsY29ubmVjdGlvbnM6bmV3IE1hcChhLmNvbm5lY3Rpb25zKS5zZXQoci51aWQse2FjY291bnRzOm8sY2hhaW5JZDppLmNoYWluSWQsY29ubmVjdG9yOnJ9KSxjdXJyZW50OnIudWlkLHN0YXR1czoiY29ubmVjdGVkIn0pKSx7YWNjb3VudHM6byxjaGFpbklkOmkuY2hhaW5JZH19Y2F0Y2gobil7dGhyb3cgdC5zZXRTdGF0ZShzPT4oey4uLnMsc3RhdHVzOnMuY3VycmVudD8iY29ubmVjdGVkIjoiZGlzY29ubmVjdGVkIn0pKSxufX1jb25zdCB6Qz0yNTY7bGV0IGNnPXpDLGxnO2Z1bmN0aW9uIHkkKHQ9MTEpe2lmKCFsZ3x8Y2crdD56QyoyKXtsZz0iIixjZz0wO2ZvcihsZXQgZT0wO2U8ekM7ZSsrKWxnKz0oMjU2K01hdGgucmFuZG9tKCkqMjU2fDApLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMSl9cmV0dXJuIGxnLnN1YnN0cmluZyhjZyxjZysrK3QpfWZ1bmN0aW9uIHYkKHQpe2NvbnN0e2JhdGNoOmUsY2FjaGVUaW1lOnI9dC5wb2xsaW5nSW50ZXJ2YWw/PzRlMyxjY2lwUmVhZDpuLGtleTpzPSJiYXNlIixuYW1lOmk9IkJhc2UgQ2xpZW50Iixwb2xsaW5nSW50ZXJ2YWw6bz00ZTMsdHlwZTphPSJiYXNlIn09dCxjPXQuY2hhaW4sbD10LmFjY291bnQ/SHModC5hY2NvdW50KTp2b2lkIDAse2NvbmZpZzpkLHJlcXVlc3Q6dSx2YWx1ZTpofT10LnRyYW5zcG9ydCh7Y2hhaW46Yyxwb2xsaW5nSW50ZXJ2YWw6b30pLHA9ey4uLmQsLi4uaH0sZj17YWNjb3VudDpsLGJhdGNoOmUsY2FjaGVUaW1lOnIsY2NpcFJlYWQ6bixjaGFpbjpjLGtleTpzLG5hbWU6aSxwb2xsaW5nSW50ZXJ2YWw6byxyZXF1ZXN0OnUsdHJhbnNwb3J0OnAsdHlwZTphLHVpZDp5JCgpfTtmdW5jdGlvbiBtKHcpe3JldHVybiBnPT57Y29uc3Qgdj1nKHcpO2Zvcihjb25zdCB4IGluIGYpZGVsZXRlIHZbeF07Y29uc3QgRT17Li4udywuLi52fTtyZXR1cm4gT2JqZWN0LmFzc2lnbihFLHtleHRlbmQ6bShFKX0pfX1yZXR1cm4gT2JqZWN0LmFzc2lnbihmLHtleHRlbmQ6bShmKX0pfWZ1bmN0aW9uIGc2KHtrZXk6dCxtZXRob2RzOmUsbmFtZTpyLHJlcXVlc3Q6bixyZXRyeUNvdW50OnM9MyxyZXRyeURlbGF5Omk9MTUwLHRpbWVvdXQ6byx0eXBlOmF9LGMpe2NvbnN0IGw9eSQoKTtyZXR1cm57Y29uZmlnOntrZXk6dCxtZXRob2RzOmUsbmFtZTpyLHJlcXVlc3Q6bixyZXRyeUNvdW50OnMscmV0cnlEZWxheTppLHRpbWVvdXQ6byx0eXBlOmF9LHJlcXVlc3Q6TUgobix7bWV0aG9kczplLHJldHJ5Q291bnQ6cyxyZXRyeURlbGF5OmksdWlkOmx9KSx2YWx1ZTpjfX1mdW5jdGlvbiBxcSh0LGU9e30pe2NvbnN0e2tleTpyPSJjdXN0b20iLG1ldGhvZHM6bixuYW1lOnM9IkN1c3RvbSBQcm92aWRlciIscmV0cnlEZWxheTppfT1lO3JldHVybih7cmV0cnlDb3VudDpvfSk9Pmc2KHtrZXk6cixtZXRob2RzOm4sbmFtZTpzLHJlcXVlc3Q6dC5yZXF1ZXN0LmJpbmQodCkscmV0cnlDb3VudDplLnJldHJ5Q291bnQ/P28scmV0cnlEZWxheTppLHR5cGU6ImN1c3RvbSJ9KX1mdW5jdGlvbiBzNyh0LGU9e30pe2NvbnN0e2tleTpyPSJmYWxsYmFjayIsbmFtZTpuPSJGYWxsYmFjayIscmFuazpzPSExLHNob3VsZFRocm93Omk9VnEscmV0cnlDb3VudDpvLHJldHJ5RGVsYXk6YX09ZTtyZXR1cm4oe2NoYWluOmMscG9sbGluZ0ludGVydmFsOmw9NGUzLHRpbWVvdXQ6ZCwuLi51fSk9PntsZXQgaD10LHA9KCk9Pnt9O2NvbnN0IGY9ZzYoe2tleTpyLG5hbWU6bixhc3luYyByZXF1ZXN0KHttZXRob2Q6bSxwYXJhbXM6d30pe2xldCBnO2NvbnN0IHY9YXN5bmMoRT0wKT0+e2NvbnN0IHg9aFtFXSh7Li4udSxjaGFpbjpjLHJldHJ5Q291bnQ6MCx0aW1lb3V0OmR9KTt0cnl7Y29uc3QgXz1hd2FpdCB4LnJlcXVlc3Qoe21ldGhvZDptLHBhcmFtczp3fSk7cmV0dXJuIHAoe21ldGhvZDptLHBhcmFtczp3LHJlc3BvbnNlOl8sdHJhbnNwb3J0Ongsc3RhdHVzOiJzdWNjZXNzIn0pLF99Y2F0Y2goXyl7aWYocCh7ZXJyb3I6XyxtZXRob2Q6bSxwYXJhbXM6dyx0cmFuc3BvcnQ6eCxzdGF0dXM6ImVycm9yIn0pLGkoXyl8fEU9PT1oLmxlbmd0aC0xfHwoZz8/PWguc2xpY2UoRSsxKS5zb21lKGs9Pntjb25zdHtpbmNsdWRlOkEsZXhjbHVkZTpNfT1rKHtjaGFpbjpjfSkuY29uZmlnLm1ldGhvZHN8fHt9O3JldHVybiBBP0EuaW5jbHVkZXMobSk6TT8hTS5pbmNsdWRlcyhtKTohMH0pLCFnKSl0aHJvdyBfO3JldHVybiB2KEUrMSl9fTtyZXR1cm4gdigpfSxyZXRyeUNvdW50Om8scmV0cnlEZWxheTphLHR5cGU6ImZhbGxiYWNrIn0se29uUmVzcG9uc2U6bT0+cD1tLHRyYW5zcG9ydHM6aC5tYXAobT0+bSh7Y2hhaW46YyxyZXRyeUNvdW50OjB9KSl9KTtpZihzKXtjb25zdCBtPXR5cGVvZiBzPT0ib2JqZWN0Ij9zOnt9O0dxKHtjaGFpbjpjLGludGVydmFsOm0uaW50ZXJ2YWw/P2wsb25UcmFuc3BvcnRzOnc9Pmg9dyxwaW5nOm0ucGluZyxzYW1wbGVDb3VudDptLnNhbXBsZUNvdW50LHRpbWVvdXQ6bS50aW1lb3V0LHRyYW5zcG9ydHM6aCx3ZWlnaHRzOm0ud2VpZ2h0c30pfXJldHVybiBmfX1mdW5jdGlvbiBWcSh0KXtyZXR1cm4hISgiY29kZSJpbiB0JiZ0eXBlb2YgdC5jb2RlPT0ibnVtYmVyIiYmKHQuY29kZT09PWdoLmNvZGV8fHQuY29kZT09PXVyLmNvZGV8fFlsLm5vZGVNZXNzYWdlLnRlc3QodC5tZXNzYWdlKXx8dC5jb2RlPT09NWUzKSl9ZnVuY3Rpb24gR3Eoe2NoYWluOnQsaW50ZXJ2YWw6ZT00ZTMsb25UcmFuc3BvcnRzOnIscGluZzpuLHNhbXBsZUNvdW50OnM9MTAsdGltZW91dDppPTFlMyx0cmFuc3BvcnRzOm8sd2VpZ2h0czphPXt9fSl7Y29uc3R7c3RhYmlsaXR5OmM9LjcsbGF0ZW5jeTpsPS4zfT1hLGQ9W10sdT1hc3luYygpPT57Y29uc3QgaD1hd2FpdCBQcm9taXNlLmFsbChvLm1hcChhc3luYyBtPT57Y29uc3Qgdz1tKHtjaGFpbjp0LHJldHJ5Q291bnQ6MCx0aW1lb3V0Oml9KSxnPURhdGUubm93KCk7bGV0IHYsRTt0cnl7YXdhaXQobj9uKHt0cmFuc3BvcnQ6d30pOncucmVxdWVzdCh7bWV0aG9kOiJuZXRfbGlzdGVuaW5nIn0pKSxFPTF9Y2F0Y2h7RT0wfWZpbmFsbHl7dj1EYXRlLm5vdygpfXJldHVybntsYXRlbmN5OnYtZyxzdWNjZXNzOkV9fSkpO2QucHVzaChoKSxkLmxlbmd0aD5zJiZkLnNoaWZ0KCk7Y29uc3QgcD1NYXRoLm1heCguLi5kLm1hcChtPT5NYXRoLm1heCguLi5tLm1hcCgoe2xhdGVuY3k6d30pPT53KSkpKSxmPW8ubWFwKChtLHcpPT57Y29uc3QgZz1kLm1hcChrPT5rW3ddLmxhdGVuY3kpLEU9MS1nLnJlZHVjZSgoayxBKT0+aytBLDApL2cubGVuZ3RoL3AseD1kLm1hcChrPT5rW3ddLnN1Y2Nlc3MpLF89eC5yZWR1Y2UoKGssQSk9PmsrQSwwKS94Lmxlbmd0aDtyZXR1cm4gXz09PTA/WzAsd106W2wqRStjKl8sd119KS5zb3J0KChtLHcpPT53WzBdLW1bMF0pO3IoZi5tYXAoKFssbV0pPT5vW21dKSksYXdhaXQgUXcoZSksdSgpfTt1KCl9Y2xhc3MgS3EgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJObyBVUkwgd2FzIHByb3ZpZGVkIHRvIHRoZSBUcmFuc3BvcnQuIFBsZWFzZSBwcm92aWRlIGEgdmFsaWQgUlBDIFVSTCB0byB0aGUgVHJhbnNwb3J0LiIse2RvY3NQYXRoOiIvZG9jcy9jbGllbnRzL2ludHJvIixuYW1lOiJVcmxSZXF1aXJlZEVycm9yIn0pfX1mdW5jdGlvbiB1Zyh0LGU9e30pe2NvbnN0e2JhdGNoOnIsZmV0Y2hPcHRpb25zOm4sa2V5OnM9Imh0dHAiLG1ldGhvZHM6aSxuYW1lOm89IkhUVFAgSlNPTi1SUEMiLG9uRmV0Y2hSZXF1ZXN0OmEsb25GZXRjaFJlc3BvbnNlOmMscmV0cnlEZWxheTpsLHJhdzpkfT1lO3JldHVybih7Y2hhaW46dSxyZXRyeUNvdW50OmgsdGltZW91dDpwfSk9Pntjb25zdHtiYXRjaFNpemU6Zj0xZTMsd2FpdDptPTB9PXR5cGVvZiByPT0ib2JqZWN0Ij9yOnt9LHc9ZS5yZXRyeUNvdW50Pz9oLGc9cD8/ZS50aW1lb3V0Pz8xZTQsdj10fHx1Py5ycGNVcmxzLmRlZmF1bHQuaHR0cFswXTtpZighdil0aHJvdyBuZXcgS3E7Y29uc3QgRT1ISCh2LHtmZXRjaE9wdGlvbnM6bixvblJlcXVlc3Q6YSxvblJlc3BvbnNlOmMsdGltZW91dDpnfSk7cmV0dXJuIGc2KHtrZXk6cyxtZXRob2RzOmksbmFtZTpvLGFzeW5jIHJlcXVlc3Qoe21ldGhvZDp4LHBhcmFtczpffSl7Y29uc3Qgaz17bWV0aG9kOngscGFyYW1zOl99LHtzY2hlZHVsZTpBfT16Tyh7aWQ6dix3YWl0Om0sc2hvdWxkU3BsaXRCYXRjaChVKXtyZXR1cm4gVS5sZW5ndGg+Zn0sZm46VT0+RS5yZXF1ZXN0KHtib2R5OlV9KSxzb3J0OihVLFYpPT5VLmlkLVYuaWR9KSxNPWFzeW5jIFU9PnI/QShVKTpbYXdhaXQgRS5yZXF1ZXN0KHtib2R5OlV9KV0sW3tlcnJvcjpQLHJlc3VsdDpqfV09YXdhaXQgTShrKTtpZihkKXJldHVybntlcnJvcjpQLHJlc3VsdDpqfTtpZihQKXRocm93IG5ldyBKNCh7Ym9keTprLGVycm9yOlAsdXJsOnZ9KTtyZXR1cm4gan0scmV0cnlDb3VudDp3LHJldHJ5RGVsYXk6bCx0aW1lb3V0OmcsdHlwZToiaHR0cCJ9LHtmZXRjaE9wdGlvbnM6bix1cmw6dn0pfX1hc3luYyBmdW5jdGlvbiBreSh0LGU9e30pe2xldCByO2lmKGUuY29ubmVjdG9yKXtjb25zdHtjb25uZWN0b3I6bH09ZTtpZih0LnN0YXRlLnN0YXR1cz09PSJyZWNvbm5lY3RpbmciJiYhbC5nZXRBY2NvdW50cyYmIWwuZ2V0Q2hhaW5JZCl0aHJvdyBuZXcgSHEoe2Nvbm5lY3RvcjpsfSk7Y29uc3RbZCx1XT1hd2FpdCBQcm9taXNlLmFsbChbbC5nZXRBY2NvdW50cygpLmNhdGNoKGg9PntpZihlLmFjY291bnQ9PT1udWxsKXJldHVybltdO3Rocm93IGh9KSxsLmdldENoYWluSWQoKV0pO3I9e2FjY291bnRzOmQsY2hhaW5JZDp1LGNvbm5lY3RvcjpsfX1lbHNlIHI9dC5zdGF0ZS5jb25uZWN0aW9ucy5nZXQodC5zdGF0ZS5jdXJyZW50KTtpZighcil0aHJvdyBuZXcganE7Y29uc3Qgbj1lLmNoYWluSWQ/P3IuY2hhaW5JZCxzPWF3YWl0IHIuY29ubmVjdG9yLmdldENoYWluSWQoKTtpZihzIT09ci5jaGFpbklkKXRocm93IG5ldyBXcSh7Y29ubmVjdGlvbkNoYWluSWQ6ci5jaGFpbklkLGNvbm5lY3RvckNoYWluSWQ6c30pO2NvbnN0IGk9ci5jb25uZWN0b3I7aWYoaS5nZXRDbGllbnQpcmV0dXJuIGkuZ2V0Q2xpZW50KHtjaGFpbklkOm59KTtjb25zdCBvPUhzKGUuYWNjb3VudD8/ci5hY2NvdW50c1swXSk7aWYobyYmKG8uYWRkcmVzcz1faShvLmFkZHJlc3MpKSxlLmFjY291bnQmJiFyLmFjY291bnRzLnNvbWUobD0+bC50b0xvd2VyQ2FzZSgpPT09by5hZGRyZXNzLnRvTG93ZXJDYXNlKCkpKXRocm93IG5ldyB6cSh7YWRkcmVzczpvLmFkZHJlc3MsY29ubmVjdG9yOml9KTtjb25zdCBhPXQuY2hhaW5zLmZpbmQobD0+bC5pZD09PW4pLGM9YXdhaXQgci5jb25uZWN0b3IuZ2V0UHJvdmlkZXIoe2NoYWluSWQ6bn0pO3JldHVybiB2JCh7YWNjb3VudDpvLGNoYWluOmEsbmFtZToiQ29ubmVjdG9yIENsaWVudCIsdHJhbnNwb3J0Omw9PnFxKGMpKHsuLi5sLHJldHJ5Q291bnQ6MH0pfSl9YXN5bmMgZnVuY3Rpb24gWnEodCxlPXt9KXtsZXQgcjtpZihlLmNvbm5lY3RvcilyPWUuY29ubmVjdG9yO2Vsc2V7Y29uc3R7Y29ubmVjdGlvbnM6cyxjdXJyZW50Oml9PXQuc3RhdGU7cj1zLmdldChpKT8uY29ubmVjdG9yfWNvbnN0IG49dC5zdGF0ZS5jb25uZWN0aW9ucztyJiYoYXdhaXQgci5kaXNjb25uZWN0KCksci5lbWl0dGVyLm9mZigiY2hhbmdlIix0Ll9pbnRlcm5hbC5ldmVudHMuY2hhbmdlKSxyLmVtaXR0ZXIub2ZmKCJkaXNjb25uZWN0Iix0Ll9pbnRlcm5hbC5ldmVudHMuZGlzY29ubmVjdCksci5lbWl0dGVyLm9uKCJjb25uZWN0Iix0Ll9pbnRlcm5hbC5ldmVudHMuY29ubmVjdCksbi5kZWxldGUoci51aWQpKSx0LnNldFN0YXRlKHM9PntpZihuLnNpemU9PT0wKXJldHVybnsuLi5zLGNvbm5lY3Rpb25zOm5ldyBNYXAsY3VycmVudDpudWxsLHN0YXR1czoiZGlzY29ubmVjdGVkIn07Y29uc3QgaT1uLnZhbHVlcygpLm5leHQoKS52YWx1ZTtyZXR1cm57Li4ucyxjb25uZWN0aW9uczpuZXcgTWFwKG4pLGN1cnJlbnQ6aS5jb25uZWN0b3IudWlkfX0pO3tjb25zdCBzPXQuc3RhdGUuY3VycmVudDtpZighcylyZXR1cm47Y29uc3QgaT10LnN0YXRlLmNvbm5lY3Rpb25zLmdldChzKT8uY29ubmVjdG9yO2lmKCFpKXJldHVybjthd2FpdCB0LnN0b3JhZ2U/LnNldEl0ZW0oInJlY2VudENvbm5lY3RvcklkIixpLmlkKX19YXN5bmMgZnVuY3Rpb24gWXEodCxlKXtjb25zdHtjaGFpbklkOnIsY29ubmVjdG9yOm4sLi4uc309ZTtsZXQgaTtlLmFjY291bnQ/aT1lLmFjY291bnQ6aT0oYXdhaXQga3kodCx7YWNjb3VudDplLmFjY291bnQsY2hhaW5JZDpyLGNvbm5lY3RvcjpufSkpLmFjY291bnQ7Y29uc3Qgbz10LmdldENsaWVudCh7Y2hhaW5JZDpyfSk7cmV0dXJuIFhpKG8sc08sImVzdGltYXRlR2FzIikoey4uLnMsYWNjb3VudDppfSl9ZnVuY3Rpb24gRSQodCl7cmV0dXJuIHR5cGVvZiB0PT0ibnVtYmVyIj90OnQ9PT0id2VpIj8wOk1hdGguYWJzKHN6W3RdKX1mdW5jdGlvbiBzYih0KXtjb25zdCBlPXQuc3RhdGUuY3VycmVudCxyPXQuc3RhdGUuY29ubmVjdGlvbnMuZ2V0KGUpLG49cj8uYWNjb3VudHMscz1uPy5bMF0saT10LmNoYWlucy5maW5kKGE9PmEuaWQ9PT1yPy5jaGFpbklkKSxvPXQuc3RhdGUuc3RhdHVzO3N3aXRjaChvKXtjYXNlImNvbm5lY3RlZCI6cmV0dXJue2FkZHJlc3M6cyxhZGRyZXNzZXM6bixjaGFpbjppLGNoYWluSWQ6cj8uY2hhaW5JZCxjb25uZWN0b3I6cj8uY29ubmVjdG9yLGlzQ29ubmVjdGVkOiEwLGlzQ29ubmVjdGluZzohMSxpc0Rpc2Nvbm5lY3RlZDohMSxpc1JlY29ubmVjdGluZzohMSxzdGF0dXM6b307Y2FzZSJyZWNvbm5lY3RpbmciOnJldHVybnthZGRyZXNzOnMsYWRkcmVzc2VzOm4sY2hhaW46aSxjaGFpbklkOnI/LmNoYWluSWQsY29ubmVjdG9yOnI/LmNvbm5lY3Rvcixpc0Nvbm5lY3RlZDohIXMsaXNDb25uZWN0aW5nOiExLGlzRGlzY29ubmVjdGVkOiExLGlzUmVjb25uZWN0aW5nOiEwLHN0YXR1czpvfTtjYXNlImNvbm5lY3RpbmciOnJldHVybnthZGRyZXNzOnMsYWRkcmVzc2VzOm4sY2hhaW46aSxjaGFpbklkOnI/LmNoYWluSWQsY29ubmVjdG9yOnI/LmNvbm5lY3Rvcixpc0Nvbm5lY3RlZDohMSxpc0Nvbm5lY3Rpbmc6ITAsaXNEaXNjb25uZWN0ZWQ6ITEsaXNSZWNvbm5lY3Rpbmc6ITEsc3RhdHVzOm99O2Nhc2UiZGlzY29ubmVjdGVkIjpyZXR1cm57YWRkcmVzczp2b2lkIDAsYWRkcmVzc2VzOnZvaWQgMCxjaGFpbjp2b2lkIDAsY2hhaW5JZDp2b2lkIDAsY29ubmVjdG9yOnZvaWQgMCxpc0Nvbm5lY3RlZDohMSxpc0Nvbm5lY3Rpbmc6ITEsaXNEaXNjb25uZWN0ZWQ6ITAsaXNSZWNvbm5lY3Rpbmc6ITEsc3RhdHVzOm99fX1hc3luYyBmdW5jdGlvbiBKcSh0LGUpe2NvbnN0e2FsbG93RmFpbHVyZTpyPSEwLGNoYWluSWQ6bixjb250cmFjdHM6cywuLi5pfT1lLG89dC5nZXRDbGllbnQoe2NoYWluSWQ6bn0pO3JldHVybiBYaShvLE9ILCJtdWx0aWNhbGwiKSh7YWxsb3dGYWlsdXJlOnIsY29udHJhY3RzOnMsLi4uaX0pfWZ1bmN0aW9uIFhxKHQsZSl7Y29uc3R7Y2hhaW5JZDpyLC4uLm59PWUscz10LmdldENsaWVudCh7Y2hhaW5JZDpyfSk7cmV0dXJuIFhpKHMsV08sInJlYWRDb250cmFjdCIpKG4pfWFzeW5jIGZ1bmN0aW9uIFFxKHQsZSl7Y29uc3R7YWxsb3dGYWlsdXJlOnI9ITAsYmxvY2tOdW1iZXI6bixibG9ja1RhZzpzLC4uLml9PWUsbz1lLmNvbnRyYWN0czt0cnl7Y29uc3QgYT17fTtmb3IoY29uc3RbdSxoXW9mIG8uZW50cmllcygpKXtjb25zdCBwPWguY2hhaW5JZD8/dC5zdGF0ZS5jaGFpbklkO2FbcF18fChhW3BdPVtdKSxhW3BdPy5wdXNoKHtjb250cmFjdDpoLGluZGV4OnV9KX1jb25zdCBjPSgpPT5PYmplY3QuZW50cmllcyhhKS5tYXAoKFt1LGhdKT0+SnEodCx7Li4uaSxhbGxvd0ZhaWx1cmU6cixibG9ja051bWJlcjpuLGJsb2NrVGFnOnMsY2hhaW5JZDpOdW1iZXIucGFyc2VJbnQodSksY29udHJhY3RzOmgubWFwKCh7Y29udHJhY3Q6cH0pPT5wKX0pKSxsPShhd2FpdCBQcm9taXNlLmFsbChjKCkpKS5mbGF0KCksZD1PYmplY3QudmFsdWVzKGEpLmZsYXRNYXAodT0+dS5tYXAoKHtpbmRleDpofSk9PmgpKTtyZXR1cm4gbC5yZWR1Y2UoKHUsaCxwKT0+KHUmJih1W2RbcF1dPWgpLHUpLFtdKX1jYXRjaChhKXtpZihhIGluc3RhbmNlb2YgQk8pdGhyb3cgYTtjb25zdCBjPSgpPT5vLm1hcChsPT5YcSh0LHsuLi5sLGJsb2NrTnVtYmVyOm4sYmxvY2tUYWc6c30pKTtyZXR1cm4gcj8oYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGMoKSkpLm1hcChsPT5sLnN0YXR1cz09PSJmdWxmaWxsZWQiP3tyZXN1bHQ6bC52YWx1ZSxzdGF0dXM6InN1Y2Nlc3MifTp7ZXJyb3I6bC5yZWFzb24scmVzdWx0OnZvaWQgMCxzdGF0dXM6ImZhaWx1cmUifSk6YXdhaXQgUHJvbWlzZS5hbGwoYygpKX19YXN5bmMgZnVuY3Rpb24gZVYodCxlKXtjb25zdHthZGRyZXNzOnIsYmxvY2tOdW1iZXI6bixibG9ja1RhZzpzLGNoYWluSWQ6aSx0b2tlbjpvLHVuaXQ6YT0iZXRoZXIifT1lO2lmKG8pdHJ5e3JldHVybiBhd2FpdCBvNyh0LHtiYWxhbmNlQWRkcmVzczpyLGNoYWluSWQ6aSxzeW1ib2xUeXBlOiJzdHJpbmciLHRva2VuQWRkcmVzczpvfSl9Y2F0Y2goaCl7aWYoaC5uYW1lPT09IkNvbnRyYWN0RnVuY3Rpb25FeGVjdXRpb25FcnJvciIpe2NvbnN0IHA9YXdhaXQgbzcodCx7YmFsYW5jZUFkZHJlc3M6cixjaGFpbklkOmksc3ltYm9sVHlwZToiYnl0ZXMzMiIsdG9rZW5BZGRyZXNzOm99KSxmPWtQKFBzKHAuc3ltYm9sLHtkaXI6InJpZ2h0In0pKTtyZXR1cm57Li4ucCxzeW1ib2w6Zn19dGhyb3cgaH1jb25zdCBjPXQuZ2V0Q2xpZW50KHtjaGFpbklkOml9KSxkPWF3YWl0IFhpKGMsaU8sImdldEJhbGFuY2UiKShuP3thZGRyZXNzOnIsYmxvY2tOdW1iZXI6bn06e2FkZHJlc3M6cixibG9ja1RhZzpzfSksdT10LmNoYWlucy5maW5kKGg9PmguaWQ9PT1pKT8/Yy5jaGFpbjtyZXR1cm57ZGVjaW1hbHM6dS5uYXRpdmVDdXJyZW5jeS5kZWNpbWFscyxmb3JtYXR0ZWQ6aXAoZCxFJChhKSksc3ltYm9sOnUubmF0aXZlQ3VycmVuY3kuc3ltYm9sLHZhbHVlOmR9fWFzeW5jIGZ1bmN0aW9uIG83KHQsZSl7Y29uc3R7YmFsYW5jZUFkZHJlc3M6cixjaGFpbklkOm4sc3ltYm9sVHlwZTpzLHRva2VuQWRkcmVzczppLHVuaXQ6b309ZSxhPXthYmk6W3t0eXBlOiJmdW5jdGlvbiIsbmFtZToiYmFsYW5jZU9mIixzdGF0ZU11dGFiaWxpdHk6InZpZXciLGlucHV0czpbe3R5cGU6ImFkZHJlc3MifV0sb3V0cHV0czpbe3R5cGU6InVpbnQyNTYifV19LHt0eXBlOiJmdW5jdGlvbiIsbmFtZToiZGVjaW1hbHMiLHN0YXRlTXV0YWJpbGl0eToidmlldyIsaW5wdXRzOltdLG91dHB1dHM6W3t0eXBlOiJ1aW50OCJ9XX0se3R5cGU6ImZ1bmN0aW9uIixuYW1lOiJzeW1ib2wiLHN0YXRlTXV0YWJpbGl0eToidmlldyIsaW5wdXRzOltdLG91dHB1dHM6W3t0eXBlOnN9XX1dLGFkZHJlc3M6aX0sW2MsbCxkXT1hd2FpdCBRcSh0LHthbGxvd0ZhaWx1cmU6ITEsY29udHJhY3RzOlt7Li4uYSxmdW5jdGlvbk5hbWU6ImJhbGFuY2VPZiIsYXJnczpbcl0sY2hhaW5JZDpufSx7Li4uYSxmdW5jdGlvbk5hbWU6ImRlY2ltYWxzIixjaGFpbklkOm59LHsuLi5hLGZ1bmN0aW9uTmFtZToic3ltYm9sIixjaGFpbklkOm59XX0pLHU9aXAoYz8/IjAiLEUkKG8/P2wpKTtyZXR1cm57ZGVjaW1hbHM6bCxmb3JtYXR0ZWQ6dSxzeW1ib2w6ZCx2YWx1ZTpjfX1mdW5jdGlvbiBvYih0LGUpe2lmKHQ9PT1lKXJldHVybiEwO2lmKHQmJmUmJnR5cGVvZiB0PT0ib2JqZWN0IiYmdHlwZW9mIGU9PSJvYmplY3QiKXtpZih0LmNvbnN0cnVjdG9yIT09ZS5jb25zdHJ1Y3RvcilyZXR1cm4hMTtsZXQgcixuO2lmKEFycmF5LmlzQXJyYXkodCkmJkFycmF5LmlzQXJyYXkoZSkpe2lmKHI9dC5sZW5ndGgsciE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihuPXI7bi0tIT09MDspaWYoIW9iKHRbbl0sZVtuXSkpcmV0dXJuITE7cmV0dXJuITB9aWYodC52YWx1ZU9mIT09T2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mKXJldHVybiB0LnZhbHVlT2YoKT09PWUudmFsdWVPZigpO2lmKHQudG9TdHJpbmchPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKXJldHVybiB0LnRvU3RyaW5nKCk9PT1lLnRvU3RyaW5nKCk7Y29uc3Qgcz1PYmplY3Qua2V5cyh0KTtpZihyPXMubGVuZ3RoLHIhPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgpcmV0dXJuITE7Zm9yKG49cjtuLS0hPT0wOylpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsc1tuXSkpcmV0dXJuITE7Zm9yKG49cjtuLS0hPT0wOyl7Y29uc3QgaT1zW25dO2lmKGkmJiFvYih0W2ldLGVbaV0pKXJldHVybiExfXJldHVybiEwfXJldHVybiB0IT09dCYmZSE9PWV9bGV0IGRnPVtdO2Z1bmN0aW9uIGhsKHQpe2NvbnN0IGU9Wy4uLnQuc3RhdGUuY29ubmVjdGlvbnMudmFsdWVzKCldO3JldHVybiB0LnN0YXRlLnN0YXR1cz09PSJyZWNvbm5lY3RpbmcifHxvYihkZyxlKT9kZzooZGc9ZSxlKX1hc3luYyBmdW5jdGlvbiB0Vih0LGUpe2NvbnN0e2FjY291bnQ6cixjaGFpbklkOm4sLi4uc309ZSxpPXI/P3NiKHQpLmFkZHJlc3Msbz10LmdldENsaWVudCh7Y2hhaW5JZDpufSk7cmV0dXJuIFhpKG8sczYsInByZXBhcmVUcmFuc2FjdGlvblJlcXVlc3QiKSh7Li4ucywuLi5pP3thY2NvdW50Oml9Ont9fSl9bGV0IG8yPSExO2FzeW5jIGZ1bmN0aW9uIGE3KHQsZT17fSl7aWYobzIpcmV0dXJuW107bzI9ITAsdC5zZXRTdGF0ZShsPT4oey4uLmwsc3RhdHVzOmwuY3VycmVudD8icmVjb25uZWN0aW5nIjoiY29ubmVjdGluZyJ9KSk7Y29uc3Qgcj1bXTtpZihlLmNvbm5lY3RvcnM/Lmxlbmd0aClmb3IoY29uc3QgbCBvZiBlLmNvbm5lY3RvcnMpe2xldCBkO3R5cGVvZiBsPT0iZnVuY3Rpb24iP2Q9dC5faW50ZXJuYWwuY29ubmVjdG9ycy5zZXR1cChsKTpkPWwsci5wdXNoKGQpfWVsc2Ugci5wdXNoKC4uLnQuY29ubmVjdG9ycyk7bGV0IG47dHJ5e249YXdhaXQgdC5zdG9yYWdlPy5nZXRJdGVtKCJyZWNlbnRDb25uZWN0b3JJZCIpfWNhdGNoe31jb25zdCBzPXt9O2Zvcihjb25zdFssbF1vZiB0LnN0YXRlLmNvbm5lY3Rpb25zKXNbbC5jb25uZWN0b3IuaWRdPTE7biYmKHNbbl09MCk7Y29uc3QgaT1PYmplY3Qua2V5cyhzKS5sZW5ndGg+MD9bLi4ucl0uc29ydCgobCxkKT0+KHNbbC5pZF0/PzEwKS0oc1tkLmlkXT8/MTApKTpyO2xldCBvPSExO2NvbnN0IGE9W10sYz1bXTtmb3IoY29uc3QgbCBvZiBpKXtjb25zdCBkPWF3YWl0IGwuZ2V0UHJvdmlkZXIoKS5jYXRjaCgoKT0+e30pO2lmKCFkfHxjLnNvbWUocD0+cD09PWQpfHwhYXdhaXQgbC5pc0F1dGhvcml6ZWQoKSljb250aW51ZTtjb25zdCBoPWF3YWl0IGwuY29ubmVjdCh7aXNSZWNvbm5lY3Rpbmc6ITB9KS5jYXRjaCgoKT0+bnVsbCk7aCYmKGwuZW1pdHRlci5vZmYoImNvbm5lY3QiLHQuX2ludGVybmFsLmV2ZW50cy5jb25uZWN0KSxsLmVtaXR0ZXIub24oImNoYW5nZSIsdC5faW50ZXJuYWwuZXZlbnRzLmNoYW5nZSksbC5lbWl0dGVyLm9uKCJkaXNjb25uZWN0Iix0Ll9pbnRlcm5hbC5ldmVudHMuZGlzY29ubmVjdCksdC5zZXRTdGF0ZShwPT57Y29uc3QgZj1uZXcgTWFwKG8/cC5jb25uZWN0aW9uczpuZXcgTWFwKS5zZXQobC51aWQse2FjY291bnRzOmguYWNjb3VudHMsY2hhaW5JZDpoLmNoYWluSWQsY29ubmVjdG9yOmx9KTtyZXR1cm57Li4ucCxjdXJyZW50Om8/cC5jdXJyZW50OmwudWlkLGNvbm5lY3Rpb25zOmZ9fSksYS5wdXNoKHthY2NvdW50czpoLmFjY291bnRzLGNoYWluSWQ6aC5jaGFpbklkLGNvbm5lY3RvcjpsfSksYy5wdXNoKGQpLG89ITApfXJldHVybih0LnN0YXRlLnN0YXR1cz09PSJyZWNvbm5lY3RpbmcifHx0LnN0YXRlLnN0YXR1cz09PSJjb25uZWN0aW5nIikmJihvP3Quc2V0U3RhdGUobD0+KHsuLi5sLHN0YXR1czoiY29ubmVjdGVkIn0pKTp0LnNldFN0YXRlKGw9Pih7Li4ubCxjb25uZWN0aW9uczpuZXcgTWFwLGN1cnJlbnQ6bnVsbCxzdGF0dXM6ImRpc2Nvbm5lY3RlZCJ9KSkpLG8yPSExLGF9YXN5bmMgZnVuY3Rpb24gclYodCxlKXtjb25zdHthY2NvdW50OnIsY2hhaW5JZDpuLGNvbm5lY3RvcjpzLC4uLml9PWU7bGV0IG87cmV0dXJuIHR5cGVvZiByPT0ib2JqZWN0IiYmcj8udHlwZT09PSJsb2NhbCI/bz10LmdldENsaWVudCh7Y2hhaW5JZDpufSk6bz1hd2FpdCBreSh0LHthY2NvdW50OnI/P3ZvaWQgMCxjaGFpbklkOm4sY29ubmVjdG9yOnN9KSxhd2FpdCBYaShvLHdPLCJzZW5kVHJhbnNhY3Rpb24iKSh7Li4uaSwuLi5yP3thY2NvdW50OnJ9Ont9LGNoYWluOm4/e2lkOm59Om51bGwsZ2FzOmkuZ2FzPz92b2lkIDB9KX1hc3luYyBmdW5jdGlvbiBuVih0LGUpe2NvbnN0e2FjY291bnQ6cixjb25uZWN0b3I6biwuLi5zfT1lO2xldCBpO3JldHVybiB0eXBlb2Ygcj09Im9iamVjdCImJnIudHlwZT09PSJsb2NhbCI/aT10LmdldENsaWVudCgpOmk9YXdhaXQga3kodCx7YWNjb3VudDpyLGNvbm5lY3RvcjpufSksWGkoaSxjcSwic2lnbk1lc3NhZ2UiKSh7Li4ucywuLi5yP3thY2NvdW50OnJ9Ont9fSl9Y2xhc3MgcmMgZXh0ZW5kcyBEY3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCJQcm92aWRlciBub3QgZm91bmQuIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiUHJvdmlkZXJOb3RGb3VuZEVycm9yIn0pfX1jbGFzcyBpViBleHRlbmRzIERje2NvbnN0cnVjdG9yKHtjb25uZWN0b3I6ZX0pe3N1cGVyKGAiJHtlLm5hbWV9IiBkb2VzIG5vdCBzdXBwb3J0IHByb2dyYW1tYXRpYyBjaGFpbiBzd2l0Y2hpbmcuYCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIm5hbWUiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZToiU3dpdGNoQ2hhaW5Ob3RTdXBwb3J0ZWRFcnJvciJ9KX19YXN5bmMgZnVuY3Rpb24gYzcodCxlKXtjb25zdHthZGRFdGhlcmV1bUNoYWluUGFyYW1ldGVyOnIsY2hhaW5JZDpufT1lLHM9dC5zdGF0ZS5jb25uZWN0aW9ucy5nZXQoZS5jb25uZWN0b3I/LnVpZD8/dC5zdGF0ZS5jdXJyZW50KTtpZihzKXtjb25zdCBvPXMuY29ubmVjdG9yO2lmKCFvLnN3aXRjaENoYWluKXRocm93IG5ldyBpVih7Y29ubmVjdG9yOm99KTtyZXR1cm4gYXdhaXQgby5zd2l0Y2hDaGFpbih7YWRkRXRoZXJldW1DaGFpblBhcmFtZXRlcjpyLGNoYWluSWQ6bn0pfWNvbnN0IGk9dC5jaGFpbnMuZmluZChvPT5vLmlkPT09bik7aWYoIWkpdGhyb3cgbmV3IGd1O3JldHVybiB0LnNldFN0YXRlKG89Pih7Li4ubyxjaGFpbklkOm59KSksaX1mdW5jdGlvbiBzVih0LGUpe2NvbnN0e29uQ2hhbmdlOnJ9PWU7cmV0dXJuIHQuc3Vic2NyaWJlKCgpPT5zYih0KSxyLHtlcXVhbGl0eUZuKG4scyl7Y29uc3R7Y29ubmVjdG9yOmksLi4ub309bix7Y29ubmVjdG9yOmEsLi4uY309cztyZXR1cm4gb2IobyxjKSYmaT8uaWQ9PT1hPy5pZCYmaT8udWlkPT09YT8udWlkfX0pfWZ1bmN0aW9uIG9WKHQsZSl7Y29uc3R7b25DaGFuZ2U6cn09ZTtyZXR1cm4gdC5faW50ZXJuYWwuY29ubmVjdG9ycy5zdWJzY3JpYmUoKG4scyk9PntyKE9iamVjdC52YWx1ZXMobikscyl9KX1mdW5jdGlvbiBhVih0LGUpe2NvbnN0e3N5bmNDb25uZWN0ZWRDaGFpbjpyPXQuX2ludGVybmFsLnN5bmNDb25uZWN0ZWRDaGFpbiwuLi5ufT1lO2xldCBzO2NvbnN0IGk9Yz0+e3MmJnMoKTtjb25zdCBsPXQuZ2V0Q2xpZW50KHtjaGFpbklkOmN9KTtyZXR1cm4gcz1YaShsLG9xLCJ3YXRjaFBlbmRpbmdUcmFuc2FjdGlvbnMiKShuKSxzfSxvPWkoZS5jaGFpbklkKTtsZXQgYTtyZXR1cm4gciYmIWUuY2hhaW5JZCYmKGE9dC5zdWJzY3JpYmUoKHtjaGFpbklkOmN9KT0+Yyxhc3luYyBjPT5pKGMpKSksKCk9PntvPy4oKSxhPy4oKX19YXN5bmMgZnVuY3Rpb24gY1YodCxlKXtjb25zdHtjaGFpbklkOnIsdGltZW91dDpuPTAsLi4uc309ZSxpPXQuZ2V0Q2xpZW50KHtjaGFpbklkOnJ9KSxhPWF3YWl0IFhpKGksYXEsIndhaXRGb3JUcmFuc2FjdGlvblJlY2VpcHQiKSh7Li4ucyx0aW1lb3V0Om59KTtpZihhLnN0YXR1cz09PSJyZXZlcnRlZCIpe2NvbnN0IGw9YXdhaXQgWGkoaSxxTywiZ2V0VHJhbnNhY3Rpb24iKSh7aGFzaDphLnRyYW5zYWN0aW9uSGFzaH0pLHU9YXdhaXQgWGkoaSxsNiwiY2FsbCIpKHsuLi5sLGRhdGE6bC5pbnB1dCxnYXNQcmljZTpsLnR5cGUhPT0iZWlwMTU1OSI/bC5nYXNQcmljZTp2b2lkIDAsbWF4RmVlUGVyR2FzOmwudHlwZT09PSJlaXAxNTU5Ij9sLm1heEZlZVBlckdhczp2b2lkIDAsbWF4UHJpb3JpdHlGZWVQZXJHYXM6bC50eXBlPT09ImVpcDE1NTkiP2wubWF4UHJpb3JpdHlGZWVQZXJHYXM6dm9pZCAwfSksaD11Py5kYXRhP2tQKGAweCR7dS5kYXRhLnN1YnN0cmluZygxMzgpfWApOiJ1bmtub3duIHJlYXNvbiI7dGhyb3cgbmV3IEVycm9yKGgpfXJldHVybnsuLi5hLGNoYWluSWQ6aS5jaGFpbi5pZH19YXN5bmMgZnVuY3Rpb24gbFYodCxlKXtjb25zdHthY2NvdW50OnIsY2hhaW5JZDpuLGNvbm5lY3RvcjpzLC4uLml9PWU7bGV0IG87cmV0dXJuIHR5cGVvZiByPT0ib2JqZWN0IiYmcj8udHlwZT09PSJsb2NhbCI/bz10LmdldENsaWVudCh7Y2hhaW5JZDpufSk6bz1hd2FpdCBreSh0LHthY2NvdW50OnI/P3ZvaWQgMCxjaGFpbklkOm4sY29ubmVjdG9yOnN9KSxhd2FpdCBYaShvLExxLCJ3cml0ZUNvbnRyYWN0Iikoey4uLmksLi4ucj97YWNjb3VudDpyfTp7fSxjaGFpbjpuP3tpZDpufTpudWxsfSl9czEudHlwZT0iaW5qZWN0ZWQiO2Z1bmN0aW9uIHMxKHQ9e30pe2NvbnN0e3NoaW1EaXNjb25uZWN0OmU9ITAsdW5zdGFibGVfc2hpbUFzeW5jSW5qZWN0OnJ9PXQ7ZnVuY3Rpb24gbigpe2NvbnN0IGM9dC50YXJnZXQ7aWYodHlwZW9mIGM9PSJmdW5jdGlvbiIpe2NvbnN0IGw9YygpO2lmKGwpcmV0dXJuIGx9cmV0dXJuIHR5cGVvZiBjPT0ib2JqZWN0Ij9jOnR5cGVvZiBjPT0ic3RyaW5nIj97Li4udVZbY10/P3tpZDpjLG5hbWU6YCR7Y1swXS50b1VwcGVyQ2FzZSgpfSR7Yy5zbGljZSgxKX1gLHByb3ZpZGVyOmBpcyR7Y1swXS50b1VwcGVyQ2FzZSgpfSR7Yy5zbGljZSgxKX1gfX06e2lkOiJpbmplY3RlZCIsbmFtZToiSW5qZWN0ZWQiLHByb3ZpZGVyKGwpe3JldHVybiBsPy5ldGhlcmV1bX19fWxldCBzLGksbyxhO3JldHVybiBjPT4oe2dldCBpY29uKCl7cmV0dXJuIG4oKS5pY29ufSxnZXQgaWQoKXtyZXR1cm4gbigpLmlkfSxnZXQgbmFtZSgpe3JldHVybiBuKCkubmFtZX0sZ2V0IHN1cHBvcnRzU2ltdWxhdGlvbigpe3JldHVybiEwfSx0eXBlOnMxLnR5cGUsYXN5bmMgc2V0dXAoKXtjb25zdCBsPWF3YWl0IHRoaXMuZ2V0UHJvdmlkZXIoKTtsPy5vbiYmdC50YXJnZXQmJihvfHwobz10aGlzLm9uQ29ubmVjdC5iaW5kKHRoaXMpLGwub24oImNvbm5lY3QiLG8pKSxzfHwocz10aGlzLm9uQWNjb3VudHNDaGFuZ2VkLmJpbmQodGhpcyksbC5vbigiYWNjb3VudHNDaGFuZ2VkIixzKSkpfSxhc3luYyBjb25uZWN0KHtjaGFpbklkOmwsaXNSZWNvbm5lY3Rpbmc6ZH09e30pe2NvbnN0IHU9YXdhaXQgdGhpcy5nZXRQcm92aWRlcigpO2lmKCF1KXRocm93IG5ldyByYztsZXQgaD1bXTtpZihkKWg9YXdhaXQgdGhpcy5nZXRBY2NvdW50cygpLmNhdGNoKCgpPT5bXSk7ZWxzZSBpZihlKXRyeXtoPShhd2FpdCB1LnJlcXVlc3Qoe21ldGhvZDoid2FsbGV0X3JlcXVlc3RQZXJtaXNzaW9ucyIscGFyYW1zOlt7ZXRoX2FjY291bnRzOnt9fV19KSlbMF0/LmNhdmVhdHM/LlswXT8udmFsdWU/Lm1hcChmPT5faShmKSksaC5sZW5ndGg+MCYmKGg9YXdhaXQgdGhpcy5nZXRBY2NvdW50cygpKX1jYXRjaChwKXtjb25zdCBmPXA7aWYoZi5jb2RlPT09dXIuY29kZSl0aHJvdyBuZXcgdXIoZik7aWYoZi5jb2RlPT09cGMuY29kZSl0aHJvdyBmfXRyeXshaD8ubGVuZ3RoJiYhZCYmKGg9KGF3YWl0IHUucmVxdWVzdCh7bWV0aG9kOiJldGhfcmVxdWVzdEFjY291bnRzIn0pKS5tYXAobT0+X2kobSkpKSxvJiYodS5yZW1vdmVMaXN0ZW5lcigiY29ubmVjdCIsbyksbz12b2lkIDApLHN8fChzPXRoaXMub25BY2NvdW50c0NoYW5nZWQuYmluZCh0aGlzKSx1Lm9uKCJhY2NvdW50c0NoYW5nZWQiLHMpKSxpfHwoaT10aGlzLm9uQ2hhaW5DaGFuZ2VkLmJpbmQodGhpcyksdS5vbigiY2hhaW5DaGFuZ2VkIixpKSksYXx8KGE9dGhpcy5vbkRpc2Nvbm5lY3QuYmluZCh0aGlzKSx1Lm9uKCJkaXNjb25uZWN0IixhKSk7bGV0IHA9YXdhaXQgdGhpcy5nZXRDaGFpbklkKCk7cmV0dXJuIGwmJnAhPT1sJiYocD0oYXdhaXQgdGhpcy5zd2l0Y2hDaGFpbih7Y2hhaW5JZDpsfSkuY2F0Y2gobT0+e2lmKG0uY29kZT09PXVyLmNvZGUpdGhyb3cgbTtyZXR1cm57aWQ6cH19KSk/LmlkPz9wKSxlJiZhd2FpdCBjLnN0b3JhZ2U/LnJlbW92ZUl0ZW0oYCR7dGhpcy5pZH0uZGlzY29ubmVjdGVkYCksdC50YXJnZXR8fGF3YWl0IGMuc3RvcmFnZT8uc2V0SXRlbSgiaW5qZWN0ZWQuY29ubmVjdGVkIiwhMCkse2FjY291bnRzOmgsY2hhaW5JZDpwfX1jYXRjaChwKXtjb25zdCBmPXA7dGhyb3cgZi5jb2RlPT09dXIuY29kZT9uZXcgdXIoZik6Zi5jb2RlPT09cGMuY29kZT9uZXcgcGMoZik6Zn19LGFzeW5jIGRpc2Nvbm5lY3QoKXtjb25zdCBsPWF3YWl0IHRoaXMuZ2V0UHJvdmlkZXIoKTtpZighbCl0aHJvdyBuZXcgcmM7aSYmKGwucmVtb3ZlTGlzdGVuZXIoImNoYWluQ2hhbmdlZCIsaSksaT12b2lkIDApLGEmJihsLnJlbW92ZUxpc3RlbmVyKCJkaXNjb25uZWN0IixhKSxhPXZvaWQgMCksb3x8KG89dGhpcy5vbkNvbm5lY3QuYmluZCh0aGlzKSxsLm9uKCJjb25uZWN0IixvKSk7dHJ5e2F3YWl0IFlPKCgpPT5sLnJlcXVlc3Qoe21ldGhvZDoid2FsbGV0X3Jldm9rZVBlcm1pc3Npb25zIixwYXJhbXM6W3tldGhfYWNjb3VudHM6e319XX0pLHt0aW1lb3V0OjEwMH0pfWNhdGNoe31lJiZhd2FpdCBjLnN0b3JhZ2U/LnNldEl0ZW0oYCR7dGhpcy5pZH0uZGlzY29ubmVjdGVkYCwhMCksdC50YXJnZXR8fGF3YWl0IGMuc3RvcmFnZT8ucmVtb3ZlSXRlbSgiaW5qZWN0ZWQuY29ubmVjdGVkIil9LGFzeW5jIGdldEFjY291bnRzKCl7Y29uc3QgbD1hd2FpdCB0aGlzLmdldFByb3ZpZGVyKCk7aWYoIWwpdGhyb3cgbmV3IHJjO3JldHVybihhd2FpdCBsLnJlcXVlc3Qoe21ldGhvZDoiZXRoX2FjY291bnRzIn0pKS5tYXAodT0+X2kodSkpfSxhc3luYyBnZXRDaGFpbklkKCl7Y29uc3QgbD1hd2FpdCB0aGlzLmdldFByb3ZpZGVyKCk7aWYoIWwpdGhyb3cgbmV3IHJjO2NvbnN0IGQ9YXdhaXQgbC5yZXF1ZXN0KHttZXRob2Q6ImV0aF9jaGFpbklkIn0pO3JldHVybiBOdW1iZXIoZCl9LGFzeW5jIGdldFByb3ZpZGVyKCl7aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuO2xldCBsO2NvbnN0IGQ9bigpO3JldHVybiB0eXBlb2YgZC5wcm92aWRlcj09ImZ1bmN0aW9uIj9sPWQucHJvdmlkZXIod2luZG93KTp0eXBlb2YgZC5wcm92aWRlcj09InN0cmluZyI/bD1Qdyh3aW5kb3csZC5wcm92aWRlcik6bD1kLnByb3ZpZGVyLGwmJiFsLnJlbW92ZUxpc3RlbmVyJiYoIm9mZiJpbiBsJiZ0eXBlb2YgbC5vZmY9PSJmdW5jdGlvbiI/bC5yZW1vdmVMaXN0ZW5lcj1sLm9mZjpsLnJlbW92ZUxpc3RlbmVyPSgpPT57fSksbH0sYXN5bmMgaXNBdXRob3JpemVkKCl7dHJ5e2lmKGUmJmF3YWl0IGMuc3RvcmFnZT8uZ2V0SXRlbShgJHt0aGlzLmlkfS5kaXNjb25uZWN0ZWRgKXx8IXQudGFyZ2V0JiYhYXdhaXQgYy5zdG9yYWdlPy5nZXRJdGVtKCJpbmplY3RlZC5jb25uZWN0ZWQiKSlyZXR1cm4hMTtpZighYXdhaXQgdGhpcy5nZXRQcm92aWRlcigpKXtpZihyIT09dm9pZCAwJiZyIT09ITEpe2NvbnN0IGg9YXN5bmMoKT0+KHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXRoZXJldW0jaW5pdGlhbGl6ZWQiLGgpLCEhYXdhaXQgdGhpcy5nZXRQcm92aWRlcigpKSxwPXR5cGVvZiByPT0ibnVtYmVyIj9yOjFlMztpZihhd2FpdCBQcm9taXNlLnJhY2UoWy4uLnR5cGVvZiB3aW5kb3c8InUiP1tuZXcgUHJvbWlzZShtPT53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZXRoZXJldW0jaW5pdGlhbGl6ZWQiLCgpPT5tKGgoKSkse29uY2U6ITB9KSldOltdLG5ldyBQcm9taXNlKG09PnNldFRpbWVvdXQoKCk9Pm0oaCgpKSxwKSldKSlyZXR1cm4hMH10aHJvdyBuZXcgcmN9cmV0dXJuISEoYXdhaXQgZWIoKCk9PnRoaXMuZ2V0QWNjb3VudHMoKSkpLmxlbmd0aH1jYXRjaHtyZXR1cm4hMX19LGFzeW5jIHN3aXRjaENoYWluKHthZGRFdGhlcmV1bUNoYWluUGFyYW1ldGVyOmwsY2hhaW5JZDpkfSl7Y29uc3QgdT1hd2FpdCB0aGlzLmdldFByb3ZpZGVyKCk7aWYoIXUpdGhyb3cgbmV3IHJjO2NvbnN0IGg9Yy5jaGFpbnMuZmluZChmPT5mLmlkPT09ZCk7aWYoIWgpdGhyb3cgbmV3IGNpKG5ldyBndSk7Y29uc3QgcD1uZXcgUHJvbWlzZShmPT57Y29uc3QgbT13PT57ImNoYWluSWQiaW4gdyYmdy5jaGFpbklkPT09ZCYmKGMuZW1pdHRlci5vZmYoImNoYW5nZSIsbSksZigpKX07Yy5lbWl0dGVyLm9uKCJjaGFuZ2UiLG0pfSk7dHJ5e3JldHVybiBhd2FpdCBQcm9taXNlLmFsbChbdS5yZXF1ZXN0KHttZXRob2Q6IndhbGxldF9zd2l0Y2hFdGhlcmV1bUNoYWluIixwYXJhbXM6W3tjaGFpbklkOnV0KGQpfV19KS50aGVuKGFzeW5jKCk9Pnthd2FpdCB0aGlzLmdldENoYWluSWQoKT09PWQmJmMuZW1pdHRlci5lbWl0KCJjaGFuZ2UiLHtjaGFpbklkOmR9KX0pLHBdKSxofWNhdGNoKGYpe2NvbnN0IG09ZjtpZihtLmNvZGU9PT00OTAyfHxtPy5kYXRhPy5vcmlnaW5hbEVycm9yPy5jb2RlPT09NDkwMil0cnl7Y29uc3R7ZGVmYXVsdDp3LC4uLmd9PWguYmxvY2tFeHBsb3JlcnM/P3t9O2xldCB2O2w/LmJsb2NrRXhwbG9yZXJVcmxzP3Y9bC5ibG9ja0V4cGxvcmVyVXJsczp3JiYodj1bdy51cmwsLi4uT2JqZWN0LnZhbHVlcyhnKS5tYXAoXz0+Xy51cmwpXSk7bGV0IEU7bD8ucnBjVXJscz8ubGVuZ3RoP0U9bC5ycGNVcmxzOkU9W2gucnBjVXJscy5kZWZhdWx0Py5odHRwWzBdPz8iIl07Y29uc3QgeD17YmxvY2tFeHBsb3JlclVybHM6dixjaGFpbklkOnV0KGQpLGNoYWluTmFtZTpsPy5jaGFpbk5hbWU/P2gubmFtZSxpY29uVXJsczpsPy5pY29uVXJscyxuYXRpdmVDdXJyZW5jeTpsPy5uYXRpdmVDdXJyZW5jeT8/aC5uYXRpdmVDdXJyZW5jeSxycGNVcmxzOkV9O3JldHVybiBhd2FpdCBQcm9taXNlLmFsbChbdS5yZXF1ZXN0KHttZXRob2Q6IndhbGxldF9hZGRFdGhlcmV1bUNoYWluIixwYXJhbXM6W3hdfSkudGhlbihhc3luYygpPT57aWYoYXdhaXQgdGhpcy5nZXRDaGFpbklkKCk9PT1kKWMuZW1pdHRlci5lbWl0KCJjaGFuZ2UiLHtjaGFpbklkOmR9KTtlbHNlIHRocm93IG5ldyB1cihuZXcgRXJyb3IoIlVzZXIgcmVqZWN0ZWQgc3dpdGNoIGFmdGVyIGFkZGluZyBuZXR3b3JrLiIpKX0pLHBdKSxofWNhdGNoKHcpe3Rocm93IG5ldyB1cih3KX10aHJvdyBtLmNvZGU9PT11ci5jb2RlP25ldyB1cihtKTpuZXcgY2kobSl9fSxhc3luYyBvbkFjY291bnRzQ2hhbmdlZChsKXtpZihsLmxlbmd0aD09PTApdGhpcy5vbkRpc2Nvbm5lY3QoKTtlbHNlIGlmKGMuZW1pdHRlci5saXN0ZW5lckNvdW50KCJjb25uZWN0Iikpe2NvbnN0IGQ9KGF3YWl0IHRoaXMuZ2V0Q2hhaW5JZCgpKS50b1N0cmluZygpO3RoaXMub25Db25uZWN0KHtjaGFpbklkOmR9KSxlJiZhd2FpdCBjLnN0b3JhZ2U/LnJlbW92ZUl0ZW0oYCR7dGhpcy5pZH0uZGlzY29ubmVjdGVkYCl9ZWxzZSBjLmVtaXR0ZXIuZW1pdCgiY2hhbmdlIix7YWNjb3VudHM6bC5tYXAoZD0+X2koZCkpfSl9LG9uQ2hhaW5DaGFuZ2VkKGwpe2NvbnN0IGQ9TnVtYmVyKGwpO2MuZW1pdHRlci5lbWl0KCJjaGFuZ2UiLHtjaGFpbklkOmR9KX0sYXN5bmMgb25Db25uZWN0KGwpe2NvbnN0IGQ9YXdhaXQgdGhpcy5nZXRBY2NvdW50cygpO2lmKGQubGVuZ3RoPT09MClyZXR1cm47Y29uc3QgdT1OdW1iZXIobC5jaGFpbklkKTtjLmVtaXR0ZXIuZW1pdCgiY29ubmVjdCIse2FjY291bnRzOmQsY2hhaW5JZDp1fSk7Y29uc3QgaD1hd2FpdCB0aGlzLmdldFByb3ZpZGVyKCk7aCYmKG8mJihoLnJlbW92ZUxpc3RlbmVyKCJjb25uZWN0IixvKSxvPXZvaWQgMCksc3x8KHM9dGhpcy5vbkFjY291bnRzQ2hhbmdlZC5iaW5kKHRoaXMpLGgub24oImFjY291bnRzQ2hhbmdlZCIscykpLGl8fChpPXRoaXMub25DaGFpbkNoYW5nZWQuYmluZCh0aGlzKSxoLm9uKCJjaGFpbkNoYW5nZWQiLGkpKSxhfHwoYT10aGlzLm9uRGlzY29ubmVjdC5iaW5kKHRoaXMpLGgub24oImRpc2Nvbm5lY3QiLGEpKSl9LGFzeW5jIG9uRGlzY29ubmVjdChsKXtjb25zdCBkPWF3YWl0IHRoaXMuZ2V0UHJvdmlkZXIoKTtsJiZsLmNvZGU9PT0xMDEzJiZkJiYoYXdhaXQgdGhpcy5nZXRBY2NvdW50cygpKS5sZW5ndGh8fChjLmVtaXR0ZXIuZW1pdCgiZGlzY29ubmVjdCIpLGQmJihpJiYoZC5yZW1vdmVMaXN0ZW5lcigiY2hhaW5DaGFuZ2VkIixpKSxpPXZvaWQgMCksYSYmKGQucmVtb3ZlTGlzdGVuZXIoImRpc2Nvbm5lY3QiLGEpLGE9dm9pZCAwKSxvfHwobz10aGlzLm9uQ29ubmVjdC5iaW5kKHRoaXMpLGQub24oImNvbm5lY3QiLG8pKSkpfX0pfWNvbnN0IHVWPXtjb2luYmFzZVdhbGxldDp7aWQ6ImNvaW5iYXNlV2FsbGV0IixuYW1lOiJDb2luYmFzZSBXYWxsZXQiLHByb3ZpZGVyKHQpe3JldHVybiB0Py5jb2luYmFzZVdhbGxldEV4dGVuc2lvbj90LmNvaW5iYXNlV2FsbGV0RXh0ZW5zaW9uOlB3KHQsImlzQ29pbmJhc2VXYWxsZXQiKX19LG1ldGFNYXNrOntpZDoibWV0YU1hc2siLG5hbWU6Ik1ldGFNYXNrIixwcm92aWRlcih0KXtyZXR1cm4gUHcodCxlPT57aWYoIWUuaXNNZXRhTWFza3x8ZS5pc0JyYXZlV2FsbGV0JiYhZS5fZXZlbnRzJiYhZS5fc3RhdGUpcmV0dXJuITE7Y29uc3Qgcj1bImlzQXBleFdhbGxldCIsImlzQXZhbGFuY2hlIiwiaXNCaXRLZWVwIiwiaXNCbG9ja1dhbGxldCIsImlzS3VDb2luV2FsbGV0IiwiaXNNYXRoV2FsbGV0IiwiaXNPa3hXYWxsZXQiLCJpc09LRXhXYWxsZXQiLCJpc09uZUluY2hJT1NXYWxsZXQiLCJpc09uZUluY2hBbmRyb2lkV2FsbGV0IiwiaXNPcGVyYSIsImlzUGhhbnRvbSIsImlzUG9ydGFsIiwiaXNSYWJieSIsImlzVG9rZW5Qb2NrZXQiLCJpc1Rva2VuYXJ5IiwiaXNVbmlzd2FwV2FsbGV0IiwiaXNaZXJpb24iXTtmb3IoY29uc3QgbiBvZiByKWlmKGVbbl0pcmV0dXJuITE7cmV0dXJuITB9KX19LHBoYW50b206e2lkOiJwaGFudG9tIixuYW1lOiJQaGFudG9tIixwcm92aWRlcih0KXtyZXR1cm4gdD8ucGhhbnRvbT8uZXRoZXJldW0/dC5waGFudG9tPy5ldGhlcmV1bTpQdyh0LCJpc1BoYW50b20iKX19fTtmdW5jdGlvbiBQdyh0LGUpe2Z1bmN0aW9uIHIocyl7cmV0dXJuIHR5cGVvZiBlPT0iZnVuY3Rpb24iP2Uocyk6dHlwZW9mIGU9PSJzdHJpbmciP3NbZV06ITB9Y29uc3Qgbj10LmV0aGVyZXVtO2lmKG4/LnByb3ZpZGVycylyZXR1cm4gbi5wcm92aWRlcnMuZmluZChzPT5yKHMpKTtpZihuJiZyKG4pKXJldHVybiBufWZ1bmN0aW9uIGRWKHQpe2lmKHR5cGVvZiB3aW5kb3c+InUiKXJldHVybjtjb25zdCBlPXI9PnQoci5kZXRhaWwpO3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZWlwNjk2Mzphbm5vdW5jZVByb3ZpZGVyIixlKSx3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImVpcDY5NjM6cmVxdWVzdFByb3ZpZGVyIikpLCgpPT53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZWlwNjk2Mzphbm5vdW5jZVByb3ZpZGVyIixlKX1mdW5jdGlvbiBoVigpe2NvbnN0IHQ9bmV3IFNldDtsZXQgZT1bXTtjb25zdCByPSgpPT5kVihzPT57ZS5zb21lKCh7aW5mbzppfSk9PmkudXVpZD09PXMuaW5mby51dWlkKXx8KGU9Wy4uLmUsc10sdC5mb3JFYWNoKGk9PmkoZSx7YWRkZWQ6W3NdfSkpKX0pO2xldCBuPXIoKTtyZXR1cm57X2xpc3RlbmVycygpe3JldHVybiB0fSxjbGVhcigpe3QuZm9yRWFjaChzPT5zKFtdLHtyZW1vdmVkOlsuLi5lXX0pKSxlPVtdfSxkZXN0cm95KCl7dGhpcy5jbGVhcigpLHQuY2xlYXIoKSxuPy4oKX0sZmluZFByb3ZpZGVyKHtyZG5zOnN9KXtyZXR1cm4gZS5maW5kKGk9PmkuaW5mby5yZG5zPT09cyl9LGdldFByb3ZpZGVycygpe3JldHVybiBlfSxyZXNldCgpe3RoaXMuY2xlYXIoKSxuPy4oKSxuPXIoKX0sc3Vic2NyaWJlKHMse2VtaXRJbW1lZGlhdGVseTppfT17fSl7cmV0dXJuIHQuYWRkKHMpLGkmJnMoZSx7YWRkZWQ6ZX0pLCgpPT50LmRlbGV0ZShzKX19fWNvbnN0IHBWPXQ9PihlLHIsbik9Pntjb25zdCBzPW4uc3Vic2NyaWJlO3JldHVybiBuLnN1YnNjcmliZT0obyxhLGMpPT57bGV0IGw9bztpZihhKXtjb25zdCBkPWM/LmVxdWFsaXR5Rm58fE9iamVjdC5pcztsZXQgdT1vKG4uZ2V0U3RhdGUoKSk7bD1oPT57Y29uc3QgcD1vKGgpO2lmKCFkKHUscCkpe2NvbnN0IGY9dTthKHU9cCxmKX19LGM/LmZpcmVJbW1lZGlhdGVseSYmYSh1LHUpfXJldHVybiBzKGwpfSx0KGUscixuKX0sZlY9cFY7ZnVuY3Rpb24gbVYodCxlKXtsZXQgcjt0cnl7cj10KCl9Y2F0Y2h7cmV0dXJufXJldHVybntnZXRJdGVtOnM9Pnt2YXIgaTtjb25zdCBvPWM9PmM9PT1udWxsP251bGw6SlNPTi5wYXJzZShjLHZvaWQgMCksYT0oaT1yLmdldEl0ZW0ocykpIT1udWxsP2k6bnVsbDtyZXR1cm4gYSBpbnN0YW5jZW9mIFByb21pc2U/YS50aGVuKG8pOm8oYSl9LHNldEl0ZW06KHMsaSk9PnIuc2V0SXRlbShzLEpTT04uc3RyaW5naWZ5KGksdm9pZCAwKSkscmVtb3ZlSXRlbTpzPT5yLnJlbW92ZUl0ZW0ocyl9fWNvbnN0IFdDPXQ9PmU9Pnt0cnl7Y29uc3Qgcj10KGUpO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZT9yOnt0aGVuKG4pe3JldHVybiBXQyhuKShyKX0sY2F0Y2gobil7cmV0dXJuIHRoaXN9fX1jYXRjaChyKXtyZXR1cm57dGhlbihuKXtyZXR1cm4gdGhpc30sY2F0Y2gobil7cmV0dXJuIFdDKG4pKHIpfX19fSxnVj0odCxlKT0+KHIsbixzKT0+e2xldCBpPXtzdG9yYWdlOm1WKCgpPT5sb2NhbFN0b3JhZ2UpLHBhcnRpYWxpemU6bT0+bSx2ZXJzaW9uOjAsbWVyZ2U6KG0sdyk9Pih7Li4udywuLi5tfSksLi4uZX0sbz0hMTtjb25zdCBhPW5ldyBTZXQsYz1uZXcgU2V0O2xldCBsPWkuc3RvcmFnZTtpZighbClyZXR1cm4gdCgoLi4ubSk9Pntjb25zb2xlLndhcm4oYFt6dXN0YW5kIHBlcnNpc3QgbWlkZGxld2FyZV0gVW5hYmxlIHRvIHVwZGF0ZSBpdGVtICcke2kubmFtZX0nLCB0aGUgZ2l2ZW4gc3RvcmFnZSBpcyBjdXJyZW50bHkgdW5hdmFpbGFibGUuYCksciguLi5tKX0sbixzKTtjb25zdCBkPSgpPT57Y29uc3QgbT1pLnBhcnRpYWxpemUoey4uLm4oKX0pO3JldHVybiBsLnNldEl0ZW0oaS5uYW1lLHtzdGF0ZTptLHZlcnNpb246aS52ZXJzaW9ufSl9LHU9cy5zZXRTdGF0ZTtzLnNldFN0YXRlPShtLHcpPT57dShtLHcpLGQoKX07Y29uc3QgaD10KCguLi5tKT0+e3IoLi4ubSksZCgpfSxuLHMpO3MuZ2V0SW5pdGlhbFN0YXRlPSgpPT5oO2xldCBwO2NvbnN0IGY9KCk9Pnt2YXIgbSx3O2lmKCFsKXJldHVybjtvPSExLGEuZm9yRWFjaCh2PT57dmFyIEU7cmV0dXJuIHYoKEU9bigpKSE9bnVsbD9FOmgpfSk7Y29uc3QgZz0oKHc9aS5vblJlaHlkcmF0ZVN0b3JhZ2UpPT1udWxsP3ZvaWQgMDp3LmNhbGwoaSwobT1uKCkpIT1udWxsP206aCkpfHx2b2lkIDA7cmV0dXJuIFdDKGwuZ2V0SXRlbS5iaW5kKGwpKShpLm5hbWUpLnRoZW4odj0+e2lmKHYpaWYodHlwZW9mIHYudmVyc2lvbj09Im51bWJlciImJnYudmVyc2lvbiE9PWkudmVyc2lvbil7aWYoaS5taWdyYXRlKXJldHVyblshMCxpLm1pZ3JhdGUodi5zdGF0ZSx2LnZlcnNpb24pXTtjb25zb2xlLmVycm9yKCJTdGF0ZSBsb2FkZWQgZnJvbSBzdG9yYWdlIGNvdWxkbid0IGJlIG1pZ3JhdGVkIHNpbmNlIG5vIG1pZ3JhdGUgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIil9ZWxzZSByZXR1cm5bITEsdi5zdGF0ZV07cmV0dXJuWyExLHZvaWQgMF19KS50aGVuKHY9Pnt2YXIgRTtjb25zdFt4LF9dPXY7aWYocD1pLm1lcmdlKF8sKEU9bigpKSE9bnVsbD9FOmgpLHIocCwhMCkseClyZXR1cm4gZCgpfSkudGhlbigoKT0+e2c/LihwLHZvaWQgMCkscD1uKCksbz0hMCxjLmZvckVhY2godj0+dihwKSl9KS5jYXRjaCh2PT57Zz8uKHZvaWQgMCx2KX0pfTtyZXR1cm4gcy5wZXJzaXN0PXtzZXRPcHRpb25zOm09PntpPXsuLi5pLC4uLm19LG0uc3RvcmFnZSYmKGw9bS5zdG9yYWdlKX0sY2xlYXJTdG9yYWdlOigpPT57bD8ucmVtb3ZlSXRlbShpLm5hbWUpfSxnZXRPcHRpb25zOigpPT5pLHJlaHlkcmF0ZTooKT0+ZigpLGhhc0h5ZHJhdGVkOigpPT5vLG9uSHlkcmF0ZTptPT4oYS5hZGQobSksKCk9PnthLmRlbGV0ZShtKX0pLG9uRmluaXNoSHlkcmF0aW9uOm09PihjLmFkZChtKSwoKT0+e2MuZGVsZXRlKG0pfSl9LGkuc2tpcEh5ZHJhdGlvbnx8ZigpLHB8fGh9LHdWPWdWLGw3PXQ9PntsZXQgZTtjb25zdCByPW5ldyBTZXQsbj0obCxkKT0+e2NvbnN0IHU9dHlwZW9mIGw9PSJmdW5jdGlvbiI/bChlKTpsO2lmKCFPYmplY3QuaXModSxlKSl7Y29uc3QgaD1lO2U9ZD8/KHR5cGVvZiB1IT0ib2JqZWN0Inx8dT09PW51bGwpP3U6T2JqZWN0LmFzc2lnbih7fSxlLHUpLHIuZm9yRWFjaChwPT5wKGUsaCkpfX0scz0oKT0+ZSxhPXtzZXRTdGF0ZTpuLGdldFN0YXRlOnMsZ2V0SW5pdGlhbFN0YXRlOigpPT5jLHN1YnNjcmliZTpsPT4oci5hZGQobCksKCk9PnIuZGVsZXRlKGwpKX0sYz1lPXQobixzLGEpO3JldHVybiBhfSxhMj10PT50P2w3KHQpOmw3O3ZhciBjMj17ZXhwb3J0czp7fX0sdTc7ZnVuY3Rpb24gQyQoKXtyZXR1cm4gdTd8fCh1Nz0xLGZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscj0ifiI7ZnVuY3Rpb24gbigpe31PYmplY3QuY3JlYXRlJiYobi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShudWxsKSxuZXcgbigpLl9fcHJvdG9fX3x8KHI9ITEpKTtmdW5jdGlvbiBzKGMsbCxkKXt0aGlzLmZuPWMsdGhpcy5jb250ZXh0PWwsdGhpcy5vbmNlPWR8fCExfWZ1bmN0aW9uIGkoYyxsLGQsdSxoKXtpZih0eXBlb2YgZCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIik7dmFyIHA9bmV3IHMoZCx1fHxjLGgpLGY9cj9yK2w6bDtyZXR1cm4gYy5fZXZlbnRzW2ZdP2MuX2V2ZW50c1tmXS5mbj9jLl9ldmVudHNbZl09W2MuX2V2ZW50c1tmXSxwXTpjLl9ldmVudHNbZl0ucHVzaChwKTooYy5fZXZlbnRzW2ZdPXAsYy5fZXZlbnRzQ291bnQrKyksY31mdW5jdGlvbiBvKGMsbCl7LS1jLl9ldmVudHNDb3VudD09PTA/Yy5fZXZlbnRzPW5ldyBuOmRlbGV0ZSBjLl9ldmVudHNbbF19ZnVuY3Rpb24gYSgpe3RoaXMuX2V2ZW50cz1uZXcgbix0aGlzLl9ldmVudHNDb3VudD0wfWEucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXt2YXIgbD1bXSxkLHU7aWYodGhpcy5fZXZlbnRzQ291bnQ9PT0wKXJldHVybiBsO2Zvcih1IGluIGQ9dGhpcy5fZXZlbnRzKWUuY2FsbChkLHUpJiZsLnB1c2gocj91LnNsaWNlKDEpOnUpO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2wuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZCkpOmx9LGEucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbihsKXt2YXIgZD1yP3IrbDpsLHU9dGhpcy5fZXZlbnRzW2RdO2lmKCF1KXJldHVybltdO2lmKHUuZm4pcmV0dXJuW3UuZm5dO2Zvcih2YXIgaD0wLHA9dS5sZW5ndGgsZj1uZXcgQXJyYXkocCk7aDxwO2grKylmW2hdPXVbaF0uZm47cmV0dXJuIGZ9LGEucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24obCl7dmFyIGQ9cj9yK2w6bCx1PXRoaXMuX2V2ZW50c1tkXTtyZXR1cm4gdT91LmZuPzE6dS5sZW5ndGg6MH0sYS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihsLGQsdSxoLHAsZil7dmFyIG09cj9yK2w6bDtpZighdGhpcy5fZXZlbnRzW21dKXJldHVybiExO3ZhciB3PXRoaXMuX2V2ZW50c1ttXSxnPWFyZ3VtZW50cy5sZW5ndGgsdixFO2lmKHcuZm4pe3N3aXRjaCh3Lm9uY2UmJnRoaXMucmVtb3ZlTGlzdGVuZXIobCx3LmZuLHZvaWQgMCwhMCksZyl7Y2FzZSAxOnJldHVybiB3LmZuLmNhbGwody5jb250ZXh0KSwhMDtjYXNlIDI6cmV0dXJuIHcuZm4uY2FsbCh3LmNvbnRleHQsZCksITA7Y2FzZSAzOnJldHVybiB3LmZuLmNhbGwody5jb250ZXh0LGQsdSksITA7Y2FzZSA0OnJldHVybiB3LmZuLmNhbGwody5jb250ZXh0LGQsdSxoKSwhMDtjYXNlIDU6cmV0dXJuIHcuZm4uY2FsbCh3LmNvbnRleHQsZCx1LGgscCksITA7Y2FzZSA2OnJldHVybiB3LmZuLmNhbGwody5jb250ZXh0LGQsdSxoLHAsZiksITB9Zm9yKEU9MSx2PW5ldyBBcnJheShnLTEpO0U8ZztFKyspdltFLTFdPWFyZ3VtZW50c1tFXTt3LmZuLmFwcGx5KHcuY29udGV4dCx2KX1lbHNle3ZhciB4PXcubGVuZ3RoLF87Zm9yKEU9MDtFPHg7RSsrKXN3aXRjaCh3W0VdLm9uY2UmJnRoaXMucmVtb3ZlTGlzdGVuZXIobCx3W0VdLmZuLHZvaWQgMCwhMCksZyl7Y2FzZSAxOndbRV0uZm4uY2FsbCh3W0VdLmNvbnRleHQpO2JyZWFrO2Nhc2UgMjp3W0VdLmZuLmNhbGwod1tFXS5jb250ZXh0LGQpO2JyZWFrO2Nhc2UgMzp3W0VdLmZuLmNhbGwod1tFXS5jb250ZXh0LGQsdSk7YnJlYWs7Y2FzZSA0OndbRV0uZm4uY2FsbCh3W0VdLmNvbnRleHQsZCx1LGgpO2JyZWFrO2RlZmF1bHQ6aWYoIXYpZm9yKF89MSx2PW5ldyBBcnJheShnLTEpO188ZztfKyspdltfLTFdPWFyZ3VtZW50c1tfXTt3W0VdLmZuLmFwcGx5KHdbRV0uY29udGV4dCx2KX19cmV0dXJuITB9LGEucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGwsZCx1KXtyZXR1cm4gaSh0aGlzLGwsZCx1LCExKX0sYS5wcm90b3R5cGUub25jZT1mdW5jdGlvbihsLGQsdSl7cmV0dXJuIGkodGhpcyxsLGQsdSwhMCl9LGEucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGwsZCx1LGgpe3ZhciBwPXI/citsOmw7aWYoIXRoaXMuX2V2ZW50c1twXSlyZXR1cm4gdGhpcztpZighZClyZXR1cm4gbyh0aGlzLHApLHRoaXM7dmFyIGY9dGhpcy5fZXZlbnRzW3BdO2lmKGYuZm4pZi5mbj09PWQmJighaHx8Zi5vbmNlKSYmKCF1fHxmLmNvbnRleHQ9PT11KSYmbyh0aGlzLHApO2Vsc2V7Zm9yKHZhciBtPTAsdz1bXSxnPWYubGVuZ3RoO208ZzttKyspKGZbbV0uZm4hPT1kfHxoJiYhZlttXS5vbmNlfHx1JiZmW21dLmNvbnRleHQhPT11KSYmdy5wdXNoKGZbbV0pO3cubGVuZ3RoP3RoaXMuX2V2ZW50c1twXT13Lmxlbmd0aD09PTE/d1swXTp3Om8odGhpcyxwKX1yZXR1cm4gdGhpc30sYS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGwpe3ZhciBkO3JldHVybiBsPyhkPXI/citsOmwsdGhpcy5fZXZlbnRzW2RdJiZvKHRoaXMsZCkpOih0aGlzLl9ldmVudHM9bmV3IG4sdGhpcy5fZXZlbnRzQ291bnQ9MCksdGhpc30sYS5wcm90b3R5cGUub2ZmPWEucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLGEucHJvdG90eXBlLmFkZExpc3RlbmVyPWEucHJvdG90eXBlLm9uLGEucHJlZml4ZWQ9cixhLkV2ZW50RW1pdHRlcj1hLHQuZXhwb3J0cz1hfShjMikpLGMyLmV4cG9ydHN9dmFyIGJWPUMkKCk7Y29uc3QgeCQ9enMoYlYpO2NsYXNzIHlWe2NvbnN0cnVjdG9yKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ1aWQiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTplfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIl9lbWl0dGVyIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bmV3IHgkfSl9b24oZSxyKXt0aGlzLl9lbWl0dGVyLm9uKGUscil9b25jZShlLHIpe3RoaXMuX2VtaXR0ZXIub25jZShlLHIpfW9mZihlLHIpe3RoaXMuX2VtaXR0ZXIub2ZmKGUscil9ZW1pdChlLC4uLnIpe2NvbnN0IG49clswXTt0aGlzLl9lbWl0dGVyLmVtaXQoZSx7dWlkOnRoaXMudWlkLC4uLm59KX1saXN0ZW5lckNvdW50KGUpe3JldHVybiB0aGlzLl9lbWl0dGVyLmxpc3RlbmVyQ291bnQoZSl9fWZ1bmN0aW9uIHZWKHQpe3JldHVybiBuZXcgeVYodCl9ZnVuY3Rpb24gRVYodCxlKXtyZXR1cm4gSlNPTi5wYXJzZSh0LChyLG4pPT57bGV0IHM9bjtyZXR1cm4gcz8uX190eXBlPT09ImJpZ2ludCImJihzPUJpZ0ludChzLnZhbHVlKSkscz8uX190eXBlPT09Ik1hcCImJihzPW5ldyBNYXAocy52YWx1ZSkpLGU/LihyLHMpPz9zfSl9ZnVuY3Rpb24gZDcodCxlKXtyZXR1cm4gdC5zbGljZSgwLGUpLmpvaW4oIi4iKXx8Ii4ifWZ1bmN0aW9uIGg3KHQsZSl7Y29uc3R7bGVuZ3RoOnJ9PXQ7Zm9yKGxldCBuPTA7bjxyOysrbilpZih0W25dPT09ZSlyZXR1cm4gbisxO3JldHVybiAwfWZ1bmN0aW9uIENWKHQsZSl7Y29uc3Qgcj10eXBlb2YgdD09ImZ1bmN0aW9uIixuPXR5cGVvZiBlPT0iZnVuY3Rpb24iLHM9W10saT1bXTtyZXR1cm4gZnVuY3Rpb24oYSxjKXtpZih0eXBlb2YgYz09Im9iamVjdCIpaWYocy5sZW5ndGgpe2NvbnN0IGw9aDcocyx0aGlzKTtsPT09MD9zW3MubGVuZ3RoXT10aGlzOihzLnNwbGljZShsKSxpLnNwbGljZShsKSksaVtpLmxlbmd0aF09YTtjb25zdCBkPWg3KHMsYyk7aWYoZCE9PTApcmV0dXJuIG4/ZS5jYWxsKHRoaXMsYSxjLGQ3KGksZCkpOmBbcmVmPSR7ZDcoaSxkKX1dYH1lbHNlIHNbMF09YyxpWzBdPWE7cmV0dXJuIHI/dC5jYWxsKHRoaXMsYSxjKTpjfX1mdW5jdGlvbiB4Vih0LGUscixuKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCxDVigocyxpKT0+e2xldCBvPWk7cmV0dXJuIHR5cGVvZiBvPT0iYmlnaW50IiYmKG89e19fdHlwZToiYmlnaW50Iix2YWx1ZTppLnRvU3RyaW5nKCl9KSxvIGluc3RhbmNlb2YgTWFwJiYobz17X190eXBlOiJNYXAiLHZhbHVlOkFycmF5LmZyb20oaS5lbnRyaWVzKCkpfSksZT8uKHMsbyk/P299LG4pLHI/P3ZvaWQgMCl9ZnVuY3Rpb24gX1YodCl7Y29uc3R7ZGVzZXJpYWxpemU6ZT1FVixrZXk6cj0id2FnbWkiLHNlcmlhbGl6ZTpuPXhWLHN0b3JhZ2U6cz1fJH09dDtmdW5jdGlvbiBpKG8pe3JldHVybiBvIGluc3RhbmNlb2YgUHJvbWlzZT9vLnRoZW4oYT0+YSkuY2F0Y2goKCk9Pm51bGwpOm99cmV0dXJuey4uLnMsa2V5OnIsYXN5bmMgZ2V0SXRlbShvLGEpe2NvbnN0IGM9cy5nZXRJdGVtKGAke3J9LiR7b31gKSxsPWF3YWl0IGkoYyk7cmV0dXJuIGw/ZShsKT8/bnVsbDphPz9udWxsfSxhc3luYyBzZXRJdGVtKG8sYSl7Y29uc3QgYz1gJHtyfS4ke299YDthPT09bnVsbD9hd2FpdCBpKHMucmVtb3ZlSXRlbShjKSk6YXdhaXQgaShzLnNldEl0ZW0oYyxuKGEpKSl9LGFzeW5jIHJlbW92ZUl0ZW0obyl7YXdhaXQgaShzLnJlbW92ZUl0ZW0oYCR7cn0uJHtvfWApKX19fWNvbnN0IF8kPXtnZXRJdGVtOigpPT5udWxsLHNldEl0ZW06KCk9Pnt9LHJlbW92ZUl0ZW06KCk9Pnt9fTtmdW5jdGlvbiBrVigpe2NvbnN0IHQ9dHlwZW9mIHdpbmRvdzwidSImJndpbmRvdy5sb2NhbFN0b3JhZ2U/d2luZG93LmxvY2FsU3RvcmFnZTpfJDtyZXR1cm57Z2V0SXRlbShlKXtyZXR1cm4gdC5nZXRJdGVtKGUpfSxyZW1vdmVJdGVtKGUpe3QucmVtb3ZlSXRlbShlKX0sc2V0SXRlbShlLHIpe3RyeXt0LnNldEl0ZW0oZSxyKX1jYXRjaHt9fX19Y29uc3QgSEM9MjU2O2xldCBoZz1IQyxwZztmdW5jdGlvbiBTVih0PTExKXtpZighcGd8fGhnK3Q+SEMqMil7cGc9IiIsaGc9MDtmb3IobGV0IGU9MDtlPEhDO2UrKylwZys9KDI1NitNYXRoLnJhbmRvbSgpKjI1NnwwKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpfXJldHVybiBwZy5zdWJzdHJpbmcoaGcsaGcrKyt0KX1mdW5jdGlvbiBBVih0KXtjb25zdHttdWx0aUluamVjdGVkUHJvdmlkZXJEaXNjb3Zlcnk6ZT0hMCxzdG9yYWdlOnI9X1Yoe3N0b3JhZ2U6a1YoKX0pLHN5bmNDb25uZWN0ZWRDaGFpbjpuPSEwLHNzcjpzPSExLC4uLml9PXQsbz10eXBlb2Ygd2luZG93PCJ1IiYmZT9oVigpOnZvaWQgMCxhPWEyKCgpPT5pLmNoYWlucyksYz1hMigoKT0+e2NvbnN0IF89W10saz1uZXcgU2V0O2Zvcihjb25zdCBBIG9mIGkuY29ubmVjdG9ycz8/W10pe2NvbnN0IE09bChBKTtpZihfLnB1c2goTSksIXMmJk0ucmRucyl7Y29uc3QgUD10eXBlb2YgTS5yZG5zPT0ic3RyaW5nIj9bTS5yZG5zXTpNLnJkbnM7Zm9yKGNvbnN0IGogb2YgUClrLmFkZChqKX19aWYoIXMmJm8pe2NvbnN0IEE9by5nZXRQcm92aWRlcnMoKTtmb3IoY29uc3QgTSBvZiBBKWsuaGFzKE0uaW5mby5yZG5zKXx8Xy5wdXNoKGwoZChNKSkpfXJldHVybiBffSk7ZnVuY3Rpb24gbChfKXtjb25zdCBrPXZWKFNWKCkpLEE9ey4uLl8oe2VtaXR0ZXI6ayxjaGFpbnM6YS5nZXRTdGF0ZSgpLHN0b3JhZ2U6cix0cmFuc3BvcnRzOmkudHJhbnNwb3J0c30pLGVtaXR0ZXI6ayx1aWQ6ay51aWR9O3JldHVybiBrLm9uKCJjb25uZWN0IixFKSxBLnNldHVwPy4oKSxBfWZ1bmN0aW9uIGQoXyl7Y29uc3R7aW5mbzprfT1fLEE9Xy5wcm92aWRlcjtyZXR1cm4gczEoe3RhcmdldDp7Li4uayxpZDprLnJkbnMscHJvdmlkZXI6QX19KX1jb25zdCB1PW5ldyBNYXA7ZnVuY3Rpb24gaChfPXt9KXtjb25zdCBrPV8uY2hhaW5JZD8/dy5nZXRTdGF0ZSgpLmNoYWluSWQsQT1hLmdldFN0YXRlKCkuZmluZChQPT5QLmlkPT09ayk7aWYoXy5jaGFpbklkJiYhQSl0aHJvdyBuZXcgZ3U7e2NvbnN0IFA9dS5nZXQody5nZXRTdGF0ZSgpLmNoYWluSWQpO2lmKFAmJiFBKXJldHVybiBQO2lmKCFBKXRocm93IG5ldyBndX17Y29uc3QgUD11LmdldChrKTtpZihQKXJldHVybiBQfWxldCBNO2lmKGkuY2xpZW50KU09aS5jbGllbnQoe2NoYWluOkF9KTtlbHNle2NvbnN0IFA9QS5pZCxqPWEuZ2V0U3RhdGUoKS5tYXAoRj0+Ri5pZCksVT17fSxWPU9iamVjdC5lbnRyaWVzKGkpO2Zvcihjb25zdFtGLGJdb2YgVilpZighKEY9PT0iY2hhaW5zInx8Rj09PSJjbGllbnQifHxGPT09ImNvbm5lY3RvcnMifHxGPT09InRyYW5zcG9ydHMiKSlpZih0eXBlb2YgYj09Im9iamVjdCIpaWYoUCBpbiBiKVVbRl09YltQXTtlbHNle2lmKGouc29tZShDPT5DIGluIGIpKWNvbnRpbnVlO1VbRl09Yn1lbHNlIFVbRl09YjtNPXYkKHsuLi5VLGNoYWluOkEsYmF0Y2g6VS5iYXRjaD8/e211bHRpY2FsbDohMH0sdHJhbnNwb3J0OkY9PmkudHJhbnNwb3J0c1tQXSh7Li4uRixjb25uZWN0b3JzOmN9KX0pfXJldHVybiB1LnNldChrLE0pLE19ZnVuY3Rpb24gcCgpe3JldHVybntjaGFpbklkOmEuZ2V0U3RhdGUoKVswXS5pZCxjb25uZWN0aW9uczpuZXcgTWFwLGN1cnJlbnQ6bnVsbCxzdGF0dXM6ImRpc2Nvbm5lY3RlZCJ9fWxldCBmO2NvbnN0IG09IjAuMC4wLWNhbmFyeS0iO053LnN0YXJ0c1dpdGgobSk/Zj1OdW1iZXIucGFyc2VJbnQoTncucmVwbGFjZShtLCIiKSk6Zj1OdW1iZXIucGFyc2VJbnQoTncuc3BsaXQoIi4iKVswXT8/IjAiKTtjb25zdCB3PWEyKGZWKHI/d1YocCx7bWlncmF0ZShfLGspe2lmKGs9PT1mKXJldHVybiBfO2NvbnN0IEE9cCgpLE09ZyhfLEEuY2hhaW5JZCk7cmV0dXJuey4uLkEsY2hhaW5JZDpNfX0sbmFtZToic3RvcmUiLHBhcnRpYWxpemUoXyl7cmV0dXJue2Nvbm5lY3Rpb25zOntfX3R5cGU6Ik1hcCIsdmFsdWU6QXJyYXkuZnJvbShfLmNvbm5lY3Rpb25zLmVudHJpZXMoKSkubWFwKChbayxBXSk9Pntjb25zdHtpZDpNLG5hbWU6UCx0eXBlOmosdWlkOlV9PUEuY29ubmVjdG9yO3JldHVybltrLHsuLi5BLGNvbm5lY3Rvcjp7aWQ6TSxuYW1lOlAsdHlwZTpqLHVpZDpVfX1dfSl9LGNoYWluSWQ6Xy5jaGFpbklkLGN1cnJlbnQ6Xy5jdXJyZW50fX0sbWVyZ2UoXyxrKXt0eXBlb2YgXz09Im9iamVjdCImJl8mJiJzdGF0dXMiaW4gXyYmZGVsZXRlIF8uc3RhdHVzO2NvbnN0IEE9ZyhfLGsuY2hhaW5JZCk7cmV0dXJuey4uLmssLi4uXyxjaGFpbklkOkF9fSxza2lwSHlkcmF0aW9uOnMsc3RvcmFnZTpyLHZlcnNpb246Zn0pOnApKTt3LnNldFN0YXRlKHAoKSk7ZnVuY3Rpb24gZyhfLGspe3JldHVybiBfJiZ0eXBlb2YgXz09Im9iamVjdCImJiJjaGFpbklkImluIF8mJnR5cGVvZiBfLmNoYWluSWQ9PSJudW1iZXIiJiZhLmdldFN0YXRlKCkuc29tZShBPT5BLmlkPT09Xy5jaGFpbklkKT9fLmNoYWluSWQ6a31uJiZ3LnN1YnNjcmliZSgoe2Nvbm5lY3Rpb25zOl8sY3VycmVudDprfSk9Pms/Xy5nZXQoayk/LmNoYWluSWQ6dm9pZCAwLF89PntpZihhLmdldFN0YXRlKCkuc29tZShBPT5BLmlkPT09XykpcmV0dXJuIHcuc2V0U3RhdGUoQT0+KHsuLi5BLGNoYWluSWQ6Xz8/QS5jaGFpbklkfSkpfSksbz8uc3Vic2NyaWJlKF89Pntjb25zdCBrPW5ldyBTZXQsQT1uZXcgU2V0O2Zvcihjb25zdCBQIG9mIGMuZ2V0U3RhdGUoKSlpZihrLmFkZChQLmlkKSxQLnJkbnMpe2NvbnN0IGo9dHlwZW9mIFAucmRucz09InN0cmluZyI/W1AucmRuc106UC5yZG5zO2Zvcihjb25zdCBVIG9mIGopQS5hZGQoVSl9Y29uc3QgTT1bXTtmb3IoY29uc3QgUCBvZiBfKXtpZihBLmhhcyhQLmluZm8ucmRucykpY29udGludWU7Y29uc3Qgaj1sKGQoUCkpO2suaGFzKGouaWQpfHxNLnB1c2goail9ciYmIXcucGVyc2lzdC5oYXNIeWRyYXRlZCgpfHxjLnNldFN0YXRlKFA9PlsuLi5QLC4uLk1dLCEwKX0pO2Z1bmN0aW9uIHYoXyl7dy5zZXRTdGF0ZShrPT57Y29uc3QgQT1rLmNvbm5lY3Rpb25zLmdldChfLnVpZCk7cmV0dXJuIEE/ey4uLmssY29ubmVjdGlvbnM6bmV3IE1hcChrLmNvbm5lY3Rpb25zKS5zZXQoXy51aWQse2FjY291bnRzOl8uYWNjb3VudHM/P0EuYWNjb3VudHMsY2hhaW5JZDpfLmNoYWluSWQ/P0EuY2hhaW5JZCxjb25uZWN0b3I6QS5jb25uZWN0b3J9KX06a30pfWZ1bmN0aW9uIEUoXyl7dy5nZXRTdGF0ZSgpLnN0YXR1cz09PSJjb25uZWN0aW5nInx8dy5nZXRTdGF0ZSgpLnN0YXR1cz09PSJyZWNvbm5lY3RpbmcifHx3LnNldFN0YXRlKGs9Pntjb25zdCBBPWMuZ2V0U3RhdGUoKS5maW5kKE09Pk0udWlkPT09Xy51aWQpO3JldHVybiBBPyhBLmVtaXR0ZXIubGlzdGVuZXJDb3VudCgiY29ubmVjdCIpJiZBLmVtaXR0ZXIub2ZmKCJjb25uZWN0Iix2KSxBLmVtaXR0ZXIubGlzdGVuZXJDb3VudCgiY2hhbmdlIil8fEEuZW1pdHRlci5vbigiY2hhbmdlIix2KSxBLmVtaXR0ZXIubGlzdGVuZXJDb3VudCgiZGlzY29ubmVjdCIpfHxBLmVtaXR0ZXIub24oImRpc2Nvbm5lY3QiLHgpLHsuLi5rLGNvbm5lY3Rpb25zOm5ldyBNYXAoay5jb25uZWN0aW9ucykuc2V0KF8udWlkLHthY2NvdW50czpfLmFjY291bnRzLGNoYWluSWQ6Xy5jaGFpbklkLGNvbm5lY3RvcjpBfSksY3VycmVudDpfLnVpZCxzdGF0dXM6ImNvbm5lY3RlZCJ9KTprfSl9ZnVuY3Rpb24geChfKXt3LnNldFN0YXRlKGs9Pntjb25zdCBBPWsuY29ubmVjdGlvbnMuZ2V0KF8udWlkKTtpZihBKXtjb25zdCBQPUEuY29ubmVjdG9yO1AuZW1pdHRlci5saXN0ZW5lckNvdW50KCJjaGFuZ2UiKSYmQS5jb25uZWN0b3IuZW1pdHRlci5vZmYoImNoYW5nZSIsdiksUC5lbWl0dGVyLmxpc3RlbmVyQ291bnQoImRpc2Nvbm5lY3QiKSYmQS5jb25uZWN0b3IuZW1pdHRlci5vZmYoImRpc2Nvbm5lY3QiLHgpLFAuZW1pdHRlci5saXN0ZW5lckNvdW50KCJjb25uZWN0Iil8fEEuY29ubmVjdG9yLmVtaXR0ZXIub24oImNvbm5lY3QiLEUpfWlmKGsuY29ubmVjdGlvbnMuZGVsZXRlKF8udWlkKSxrLmNvbm5lY3Rpb25zLnNpemU9PT0wKXJldHVybnsuLi5rLGNvbm5lY3Rpb25zOm5ldyBNYXAsY3VycmVudDpudWxsLHN0YXR1czoiZGlzY29ubmVjdGVkIn07Y29uc3QgTT1rLmNvbm5lY3Rpb25zLnZhbHVlcygpLm5leHQoKS52YWx1ZTtyZXR1cm57Li4uayxjb25uZWN0aW9uczpuZXcgTWFwKGsuY29ubmVjdGlvbnMpLGN1cnJlbnQ6TS5jb25uZWN0b3IudWlkfX0pfXJldHVybntnZXQgY2hhaW5zKCl7cmV0dXJuIGEuZ2V0U3RhdGUoKX0sZ2V0IGNvbm5lY3RvcnMoKXtyZXR1cm4gYy5nZXRTdGF0ZSgpfSxzdG9yYWdlOnIsZ2V0Q2xpZW50OmgsZ2V0IHN0YXRlKCl7cmV0dXJuIHcuZ2V0U3RhdGUoKX0sc2V0U3RhdGUoXyl7bGV0IGs7dHlwZW9mIF89PSJmdW5jdGlvbiI/az1fKHcuZ2V0U3RhdGUoKSk6az1fO2NvbnN0IEE9cCgpO3R5cGVvZiBrIT0ib2JqZWN0IiYmKGs9QSksT2JqZWN0LmtleXMoQSkuc29tZShQPT4hKFAgaW4gaykpJiYoaz1BKSx3LnNldFN0YXRlKGssITApfSxzdWJzY3JpYmUoXyxrLEEpe3JldHVybiB3LnN1YnNjcmliZShfLGssQT97Li4uQSxmaXJlSW1tZWRpYXRlbHk6QS5lbWl0SW1tZWRpYXRlbHl9OnZvaWQgMCl9LF9pbnRlcm5hbDp7bWlwZDpvLHN0b3JlOncsc3NyOiEhcyxzeW5jQ29ubmVjdGVkQ2hhaW46bix0cmFuc3BvcnRzOmkudHJhbnNwb3J0cyxjaGFpbnM6e3NldFN0YXRlKF8pe2NvbnN0IGs9dHlwZW9mIF89PSJmdW5jdGlvbiI/XyhhLmdldFN0YXRlKCkpOl87aWYoay5sZW5ndGghPT0wKXJldHVybiBhLnNldFN0YXRlKGssITApfSxzdWJzY3JpYmUoXyl7cmV0dXJuIGEuc3Vic2NyaWJlKF8pfX0sY29ubmVjdG9yczp7cHJvdmlkZXJEZXRhaWxUb0Nvbm5lY3RvcjpkLHNldHVwOmwsc2V0U3RhdGUoXyl7cmV0dXJuIGMuc2V0U3RhdGUodHlwZW9mIF89PSJmdW5jdGlvbiI/XyhjLmdldFN0YXRlKCkpOl8sITApfSxzdWJzY3JpYmUoXyl7cmV0dXJuIGMuc3Vic2NyaWJlKF8pfX0sZXZlbnRzOntjaGFuZ2U6dixjb25uZWN0OkUsZGlzY29ubmVjdDp4fX19fXZhciBTeT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMubGlzdGVuZXJzPW5ldyBTZXQsdGhpcy5zdWJzY3JpYmU9dGhpcy5zdWJzY3JpYmUuYmluZCh0aGlzKX1zdWJzY3JpYmUodCl7cmV0dXJuIHRoaXMubGlzdGVuZXJzLmFkZCh0KSx0aGlzLm9uU3Vic2NyaWJlKCksKCk9Pnt0aGlzLmxpc3RlbmVycy5kZWxldGUodCksdGhpcy5vblVuc3Vic2NyaWJlKCl9fWhhc0xpc3RlbmVycygpe3JldHVybiB0aGlzLmxpc3RlbmVycy5zaXplPjB9b25TdWJzY3JpYmUoKXt9b25VbnN1YnNjcmliZSgpe319LEF5PXR5cGVvZiB3aW5kb3c+InUifHwiRGVubyJpbiBnbG9iYWxUaGlzO2Z1bmN0aW9uIF9zKCl7fWZ1bmN0aW9uIFRWKHQsZSl7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3QoZSk6dH1mdW5jdGlvbiBJVih0KXtyZXR1cm4gdHlwZW9mIHQ9PSJudW1iZXIiJiZ0Pj0wJiZ0IT09MS8wfWZ1bmN0aW9uIFJWKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQrKGV8fDApLURhdGUubm93KCksMCl9ZnVuY3Rpb24gcUModCxlKXtyZXR1cm4gdHlwZW9mIHQ9PSJmdW5jdGlvbiI/dChlKTp0fWZ1bmN0aW9uIE5WKHQsZSl7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3QoZSk6dH1mdW5jdGlvbiBwNyh0LGUpe2NvbnN0e3R5cGU6cj0iYWxsIixleGFjdDpuLGZldGNoU3RhdHVzOnMscHJlZGljYXRlOmkscXVlcnlLZXk6byxzdGFsZTphfT10O2lmKG8pe2lmKG4pe2lmKGUucXVlcnlIYXNoIT09dzYobyxlLm9wdGlvbnMpKXJldHVybiExfWVsc2UgaWYoIUwwKGUucXVlcnlLZXksbykpcmV0dXJuITF9aWYociE9PSJhbGwiKXtjb25zdCBjPWUuaXNBY3RpdmUoKTtpZihyPT09ImFjdGl2ZSImJiFjfHxyPT09ImluYWN0aXZlIiYmYylyZXR1cm4hMX1yZXR1cm4hKHR5cGVvZiBhPT0iYm9vbGVhbiImJmUuaXNTdGFsZSgpIT09YXx8cyYmcyE9PWUuc3RhdGUuZmV0Y2hTdGF0dXN8fGkmJiFpKGUpKX1mdW5jdGlvbiBmNyh0LGUpe2NvbnN0e2V4YWN0OnIsc3RhdHVzOm4scHJlZGljYXRlOnMsbXV0YXRpb25LZXk6aX09dDtpZihpKXtpZighZS5vcHRpb25zLm11dGF0aW9uS2V5KXJldHVybiExO2lmKHIpe2lmKEIwKGUub3B0aW9ucy5tdXRhdGlvbktleSkhPT1CMChpKSlyZXR1cm4hMX1lbHNlIGlmKCFMMChlLm9wdGlvbnMubXV0YXRpb25LZXksaSkpcmV0dXJuITF9cmV0dXJuIShuJiZlLnN0YXRlLnN0YXR1cyE9PW58fHMmJiFzKGUpKX1mdW5jdGlvbiB3Nih0LGUpe3JldHVybihlPy5xdWVyeUtleUhhc2hGbnx8QjApKHQpfWZ1bmN0aW9uIEIwKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0LChlLHIpPT5WQyhyKT9PYmplY3Qua2V5cyhyKS5zb3J0KCkucmVkdWNlKChuLHMpPT4obltzXT1yW3NdLG4pLHt9KTpyKX1mdW5jdGlvbiBMMCh0LGUpe3JldHVybiB0PT09ZT8hMDp0eXBlb2YgdCE9dHlwZW9mIGU/ITE6dCYmZSYmdHlwZW9mIHQ9PSJvYmplY3QiJiZ0eXBlb2YgZT09Im9iamVjdCI/T2JqZWN0LmtleXMoZSkuZXZlcnkocj0+TDAodFtyXSxlW3JdKSk6ITF9ZnVuY3Rpb24gayQodCxlKXtpZih0PT09ZSlyZXR1cm4gdDtjb25zdCByPW03KHQpJiZtNyhlKTtpZihyfHxWQyh0KSYmVkMoZSkpe2NvbnN0IG49cj90Ok9iamVjdC5rZXlzKHQpLHM9bi5sZW5ndGgsaT1yP2U6T2JqZWN0LmtleXMoZSksbz1pLmxlbmd0aCxhPXI/W106e307bGV0IGM9MDtmb3IobGV0IGw9MDtsPG87bCsrKXtjb25zdCBkPXI/bDppW2xdOyghciYmbi5pbmNsdWRlcyhkKXx8cikmJnRbZF09PT12b2lkIDAmJmVbZF09PT12b2lkIDA/KGFbZF09dm9pZCAwLGMrKyk6KGFbZF09ayQodFtkXSxlW2RdKSxhW2RdPT09dFtkXSYmdFtkXSE9PXZvaWQgMCYmYysrKX1yZXR1cm4gcz09PW8mJmM9PT1zP3Q6YX1yZXR1cm4gZX1mdW5jdGlvbiBtNyh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg9PT1PYmplY3Qua2V5cyh0KS5sZW5ndGh9ZnVuY3Rpb24gVkModCl7aWYoIWc3KHQpKXJldHVybiExO2NvbnN0IGU9dC5jb25zdHJ1Y3RvcjtpZihlPT09dm9pZCAwKXJldHVybiEwO2NvbnN0IHI9ZS5wcm90b3R5cGU7cmV0dXJuISghZzcocil8fCFyLmhhc093blByb3BlcnR5KCJpc1Byb3RvdHlwZU9mIil8fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSE9PU9iamVjdC5wcm90b3R5cGUpfWZ1bmN0aW9uIGc3KHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9PT0iW29iamVjdCBPYmplY3RdIn1mdW5jdGlvbiBQVih0KXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e3NldFRpbWVvdXQoZSx0KX0pfWZ1bmN0aW9uIE9WKHQsZSxyKXtyZXR1cm4gdHlwZW9mIHIuc3RydWN0dXJhbFNoYXJpbmc9PSJmdW5jdGlvbiI/ci5zdHJ1Y3R1cmFsU2hhcmluZyh0LGUpOnIuc3RydWN0dXJhbFNoYXJpbmchPT0hMT9rJCh0LGUpOmV9ZnVuY3Rpb24gJFYodCxlLHI9MCl7Y29uc3Qgbj1bLi4udCxlXTtyZXR1cm4gciYmbi5sZW5ndGg+cj9uLnNsaWNlKDEpOm59ZnVuY3Rpb24gTVYodCxlLHI9MCl7Y29uc3Qgbj1bZSwuLi50XTtyZXR1cm4gciYmbi5sZW5ndGg+cj9uLnNsaWNlKDAsLTEpOm59dmFyIGI2PVN5bWJvbCgpO2Z1bmN0aW9uIFMkKHQsZSl7cmV0dXJuIXQucXVlcnlGbiYmZT8uaW5pdGlhbFByb21pc2U/KCk9PmUuaW5pdGlhbFByb21pc2U6IXQucXVlcnlGbnx8dC5xdWVyeUZuPT09YjY/KCk9PlByb21pc2UucmVqZWN0KG5ldyBFcnJvcihgTWlzc2luZyBxdWVyeUZuOiAnJHt0LnF1ZXJ5SGFzaH0nYCkpOnQucXVlcnlGbn12YXIgRFY9Y2xhc3MgZXh0ZW5kcyBTeXsjZTsjdDsjcjtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy4jcj10PT57aWYoIUF5JiZ3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7Y29uc3QgZT0oKT0+dCgpO3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsZSwhMSksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsZSl9fX19b25TdWJzY3JpYmUoKXt0aGlzLiN0fHx0aGlzLnNldEV2ZW50TGlzdGVuZXIodGhpcy4jcil9b25VbnN1YnNjcmliZSgpe3RoaXMuaGFzTGlzdGVuZXJzKCl8fCh0aGlzLiN0Py4oKSx0aGlzLiN0PXZvaWQgMCl9c2V0RXZlbnRMaXN0ZW5lcih0KXt0aGlzLiNyPXQsdGhpcy4jdD8uKCksdGhpcy4jdD10KGU9Pnt0eXBlb2YgZT09ImJvb2xlYW4iP3RoaXMuc2V0Rm9jdXNlZChlKTp0aGlzLm9uRm9jdXMoKX0pfXNldEZvY3VzZWQodCl7dGhpcy4jZSE9PXQmJih0aGlzLiNlPXQsdGhpcy5vbkZvY3VzKCkpfW9uRm9jdXMoKXtjb25zdCB0PXRoaXMuaXNGb2N1c2VkKCk7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChlPT57ZSh0KX0pfWlzRm9jdXNlZCgpe3JldHVybiB0eXBlb2YgdGhpcy4jZT09ImJvb2xlYW4iP3RoaXMuI2U6Z2xvYmFsVGhpcy5kb2N1bWVudD8udmlzaWJpbGl0eVN0YXRlIT09ImhpZGRlbiJ9fSxBJD1uZXcgRFYsQlY9Y2xhc3MgZXh0ZW5kcyBTeXsjZT0hMDsjdDsjcjtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy4jcj10PT57aWYoIUF5JiZ3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7Y29uc3QgZT0oKT0+dCghMCkscj0oKT0+dCghMSk7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJvbmxpbmUiLGUsITEpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJvZmZsaW5lIixyLCExKSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJvbmxpbmUiLGUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJvZmZsaW5lIixyKX19fX1vblN1YnNjcmliZSgpe3RoaXMuI3R8fHRoaXMuc2V0RXZlbnRMaXN0ZW5lcih0aGlzLiNyKX1vblVuc3Vic2NyaWJlKCl7dGhpcy5oYXNMaXN0ZW5lcnMoKXx8KHRoaXMuI3Q/LigpLHRoaXMuI3Q9dm9pZCAwKX1zZXRFdmVudExpc3RlbmVyKHQpe3RoaXMuI3I9dCx0aGlzLiN0Py4oKSx0aGlzLiN0PXQodGhpcy5zZXRPbmxpbmUuYmluZCh0aGlzKSl9c2V0T25saW5lKHQpe3RoaXMuI2UhPT10JiYodGhpcy4jZT10LHRoaXMubGlzdGVuZXJzLmZvckVhY2gocj0+e3IodCl9KSl9aXNPbmxpbmUoKXtyZXR1cm4gdGhpcy4jZX19LGFiPW5ldyBCVjtmdW5jdGlvbiBMVigpe2xldCB0LGU7Y29uc3Qgcj1uZXcgUHJvbWlzZSgocyxpKT0+e3Q9cyxlPWl9KTtyLnN0YXR1cz0icGVuZGluZyIsci5jYXRjaCgoKT0+e30pO2Z1bmN0aW9uIG4ocyl7T2JqZWN0LmFzc2lnbihyLHMpLGRlbGV0ZSByLnJlc29sdmUsZGVsZXRlIHIucmVqZWN0fXJldHVybiByLnJlc29sdmU9cz0+e24oe3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTpzfSksdChzKX0sci5yZWplY3Q9cz0+e24oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjpzfSksZShzKX0scn1mdW5jdGlvbiBVVih0KXtyZXR1cm4gTWF0aC5taW4oMWUzKjIqKnQsM2U0KX1mdW5jdGlvbiBUJCh0KXtyZXR1cm4odD8/Im9ubGluZSIpPT09Im9ubGluZSI/YWIuaXNPbmxpbmUoKTohMH12YXIgSSQ9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcigiQ2FuY2VsbGVkRXJyb3IiKSx0aGlzLnJldmVydD10Py5yZXZlcnQsdGhpcy5zaWxlbnQ9dD8uc2lsZW50fX07ZnVuY3Rpb24gbDIodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBJJH1mdW5jdGlvbiBSJCh0KXtsZXQgZT0hMSxyPTAsbj0hMSxzO2NvbnN0IGk9TFYoKSxvPW09PntufHwoaChuZXcgSSQobSkpLHQuYWJvcnQ/LigpKX0sYT0oKT0+e2U9ITB9LGM9KCk9PntlPSExfSxsPSgpPT5BJC5pc0ZvY3VzZWQoKSYmKHQubmV0d29ya01vZGU9PT0iYWx3YXlzInx8YWIuaXNPbmxpbmUoKSkmJnQuY2FuUnVuKCksZD0oKT0+VCQodC5uZXR3b3JrTW9kZSkmJnQuY2FuUnVuKCksdT1tPT57bnx8KG49ITAsdC5vblN1Y2Nlc3M/LihtKSxzPy4oKSxpLnJlc29sdmUobSkpfSxoPW09PntufHwobj0hMCx0Lm9uRXJyb3I/LihtKSxzPy4oKSxpLnJlamVjdChtKSl9LHA9KCk9Pm5ldyBQcm9taXNlKG09PntzPXc9Pnsobnx8bCgpKSYmbSh3KX0sdC5vblBhdXNlPy4oKX0pLnRoZW4oKCk9PntzPXZvaWQgMCxufHx0Lm9uQ29udGludWU/LigpfSksZj0oKT0+e2lmKG4pcmV0dXJuO2xldCBtO2NvbnN0IHc9cj09PTA/dC5pbml0aWFsUHJvbWlzZTp2b2lkIDA7dHJ5e209dz8/dC5mbigpfWNhdGNoKGcpe209UHJvbWlzZS5yZWplY3QoZyl9UHJvbWlzZS5yZXNvbHZlKG0pLnRoZW4odSkuY2F0Y2goZz0+e2lmKG4pcmV0dXJuO2NvbnN0IHY9dC5yZXRyeT8/KEF5PzA6MyksRT10LnJldHJ5RGVsYXk/P1VWLHg9dHlwZW9mIEU9PSJmdW5jdGlvbiI/RShyLGcpOkUsXz12PT09ITB8fHR5cGVvZiB2PT0ibnVtYmVyIiYmcjx2fHx0eXBlb2Ygdj09ImZ1bmN0aW9uIiYmdihyLGcpO2lmKGV8fCFfKXtoKGcpO3JldHVybn1yKyssdC5vbkZhaWw/LihyLGcpLFBWKHgpLnRoZW4oKCk9PmwoKT92b2lkIDA6cCgpKS50aGVuKCgpPT57ZT9oKGcpOmYoKX0pfSl9O3JldHVybntwcm9taXNlOmksY2FuY2VsOm8sY29udGludWU6KCk9PihzPy4oKSxpKSxjYW5jZWxSZXRyeTphLGNvbnRpbnVlUmV0cnk6YyxjYW5TdGFydDpkLHN0YXJ0OigpPT4oZCgpP2YoKTpwKCkudGhlbihmKSxpKX19dmFyIEZWPXQ9PnNldFRpbWVvdXQodCwwKTtmdW5jdGlvbiBqVigpe2xldCB0PVtdLGU9MCxyPWE9PnthKCl9LG49YT0+e2EoKX0scz1GVjtjb25zdCBpPWE9PntlP3QucHVzaChhKTpzKCgpPT57cihhKX0pfSxvPSgpPT57Y29uc3QgYT10O3Q9W10sYS5sZW5ndGgmJnMoKCk9PntuKCgpPT57YS5mb3JFYWNoKGM9PntyKGMpfSl9KX0pfTtyZXR1cm57YmF0Y2g6YT0+e2xldCBjO2UrKzt0cnl7Yz1hKCl9ZmluYWxseXtlLS0sZXx8bygpfXJldHVybiBjfSxiYXRjaENhbGxzOmE9PiguLi5jKT0+e2koKCk9PnthKC4uLmMpfSl9LHNjaGVkdWxlOmksc2V0Tm90aWZ5RnVuY3Rpb246YT0+e3I9YX0sc2V0QmF0Y2hOb3RpZnlGdW5jdGlvbjphPT57bj1hfSxzZXRTY2hlZHVsZXI6YT0+e3M9YX19fXZhciAkbj1qVigpLE4kPWNsYXNzeyNlO2Rlc3Ryb3koKXt0aGlzLmNsZWFyR2NUaW1lb3V0KCl9c2NoZWR1bGVHYygpe3RoaXMuY2xlYXJHY1RpbWVvdXQoKSxJVih0aGlzLmdjVGltZSkmJih0aGlzLiNlPXNldFRpbWVvdXQoKCk9Pnt0aGlzLm9wdGlvbmFsUmVtb3ZlKCl9LHRoaXMuZ2NUaW1lKSl9dXBkYXRlR2NUaW1lKHQpe3RoaXMuZ2NUaW1lPU1hdGgubWF4KHRoaXMuZ2NUaW1lfHwwLHQ/PyhBeT8xLzA6NSo2MCoxZTMpKX1jbGVhckdjVGltZW91dCgpe3RoaXMuI2UmJihjbGVhclRpbWVvdXQodGhpcy4jZSksdGhpcy4jZT12b2lkIDApfX0selY9Y2xhc3MgZXh0ZW5kcyBOJHsjZTsjdDsjcjsjaTsjbjsjbzsjYTtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuI2E9ITEsdGhpcy4jbz10LmRlZmF1bHRPcHRpb25zLHRoaXMuc2V0T3B0aW9ucyh0Lm9wdGlvbnMpLHRoaXMub2JzZXJ2ZXJzPVtdLHRoaXMuI2k9dC5jbGllbnQsdGhpcy4jcj10aGlzLiNpLmdldFF1ZXJ5Q2FjaGUoKSx0aGlzLnF1ZXJ5S2V5PXQucXVlcnlLZXksdGhpcy5xdWVyeUhhc2g9dC5xdWVyeUhhc2gsdGhpcy4jZT1IVih0aGlzLm9wdGlvbnMpLHRoaXMuc3RhdGU9dC5zdGF0ZT8/dGhpcy4jZSx0aGlzLnNjaGVkdWxlR2MoKX1nZXQgbWV0YSgpe3JldHVybiB0aGlzLm9wdGlvbnMubWV0YX1nZXQgcHJvbWlzZSgpe3JldHVybiB0aGlzLiNuPy5wcm9taXNlfXNldE9wdGlvbnModCl7dGhpcy5vcHRpb25zPXsuLi50aGlzLiNvLC4uLnR9LHRoaXMudXBkYXRlR2NUaW1lKHRoaXMub3B0aW9ucy5nY1RpbWUpfW9wdGlvbmFsUmVtb3ZlKCl7IXRoaXMub2JzZXJ2ZXJzLmxlbmd0aCYmdGhpcy5zdGF0ZS5mZXRjaFN0YXR1cz09PSJpZGxlIiYmdGhpcy4jci5yZW1vdmUodGhpcyl9c2V0RGF0YSh0LGUpe2NvbnN0IHI9T1YodGhpcy5zdGF0ZS5kYXRhLHQsdGhpcy5vcHRpb25zKTtyZXR1cm4gdGhpcy4jcyh7ZGF0YTpyLHR5cGU6InN1Y2Nlc3MiLGRhdGFVcGRhdGVkQXQ6ZT8udXBkYXRlZEF0LG1hbnVhbDplPy5tYW51YWx9KSxyfXNldFN0YXRlKHQsZSl7dGhpcy4jcyh7dHlwZToic2V0U3RhdGUiLHN0YXRlOnQsc2V0U3RhdGVPcHRpb25zOmV9KX1jYW5jZWwodCl7Y29uc3QgZT10aGlzLiNuPy5wcm9taXNlO3JldHVybiB0aGlzLiNuPy5jYW5jZWwodCksZT9lLnRoZW4oX3MpLmNhdGNoKF9zKTpQcm9taXNlLnJlc29sdmUoKX1kZXN0cm95KCl7c3VwZXIuZGVzdHJveSgpLHRoaXMuY2FuY2VsKHtzaWxlbnQ6ITB9KX1yZXNldCgpe3RoaXMuZGVzdHJveSgpLHRoaXMuc2V0U3RhdGUodGhpcy4jZSl9aXNBY3RpdmUoKXtyZXR1cm4gdGhpcy5vYnNlcnZlcnMuc29tZSh0PT5OVih0Lm9wdGlvbnMuZW5hYmxlZCx0aGlzKSE9PSExKX1pc0Rpc2FibGVkKCl7cmV0dXJuIHRoaXMuZ2V0T2JzZXJ2ZXJzQ291bnQoKT4wPyF0aGlzLmlzQWN0aXZlKCk6dGhpcy5vcHRpb25zLnF1ZXJ5Rm49PT1iNnx8dGhpcy5zdGF0ZS5kYXRhVXBkYXRlQ291bnQrdGhpcy5zdGF0ZS5lcnJvclVwZGF0ZUNvdW50PT09MH1pc1N0YXRpYygpe3JldHVybiB0aGlzLmdldE9ic2VydmVyc0NvdW50KCk+MD90aGlzLm9ic2VydmVycy5zb21lKHQ9PnFDKHQub3B0aW9ucy5zdGFsZVRpbWUsdGhpcyk9PT0ic3RhdGljIik6ITF9aXNTdGFsZSgpe3JldHVybiB0aGlzLmdldE9ic2VydmVyc0NvdW50KCk+MD90aGlzLm9ic2VydmVycy5zb21lKHQ9PnQuZ2V0Q3VycmVudFJlc3VsdCgpLmlzU3RhbGUpOnRoaXMuc3RhdGUuZGF0YT09PXZvaWQgMHx8dGhpcy5zdGF0ZS5pc0ludmFsaWRhdGVkfWlzU3RhbGVCeVRpbWUodD0wKXtyZXR1cm4gdGhpcy5zdGF0ZS5kYXRhPT09dm9pZCAwPyEwOnQ9PT0ic3RhdGljIj8hMTp0aGlzLnN0YXRlLmlzSW52YWxpZGF0ZWQ/ITA6IVJWKHRoaXMuc3RhdGUuZGF0YVVwZGF0ZWRBdCx0KX1vbkZvY3VzKCl7dGhpcy5vYnNlcnZlcnMuZmluZChlPT5lLnNob3VsZEZldGNoT25XaW5kb3dGb2N1cygpKT8ucmVmZXRjaCh7Y2FuY2VsUmVmZXRjaDohMX0pLHRoaXMuI24/LmNvbnRpbnVlKCl9b25PbmxpbmUoKXt0aGlzLm9ic2VydmVycy5maW5kKGU9PmUuc2hvdWxkRmV0Y2hPblJlY29ubmVjdCgpKT8ucmVmZXRjaCh7Y2FuY2VsUmVmZXRjaDohMX0pLHRoaXMuI24/LmNvbnRpbnVlKCl9YWRkT2JzZXJ2ZXIodCl7dGhpcy5vYnNlcnZlcnMuaW5jbHVkZXModCl8fCh0aGlzLm9ic2VydmVycy5wdXNoKHQpLHRoaXMuY2xlYXJHY1RpbWVvdXQoKSx0aGlzLiNyLm5vdGlmeSh7dHlwZToib2JzZXJ2ZXJBZGRlZCIscXVlcnk6dGhpcyxvYnNlcnZlcjp0fSkpfXJlbW92ZU9ic2VydmVyKHQpe3RoaXMub2JzZXJ2ZXJzLmluY2x1ZGVzKHQpJiYodGhpcy5vYnNlcnZlcnM9dGhpcy5vYnNlcnZlcnMuZmlsdGVyKGU9PmUhPT10KSx0aGlzLm9ic2VydmVycy5sZW5ndGh8fCh0aGlzLiNuJiYodGhpcy4jYT90aGlzLiNuLmNhbmNlbCh7cmV2ZXJ0OiEwfSk6dGhpcy4jbi5jYW5jZWxSZXRyeSgpKSx0aGlzLnNjaGVkdWxlR2MoKSksdGhpcy4jci5ub3RpZnkoe3R5cGU6Im9ic2VydmVyUmVtb3ZlZCIscXVlcnk6dGhpcyxvYnNlcnZlcjp0fSkpfWdldE9ic2VydmVyc0NvdW50KCl7cmV0dXJuIHRoaXMub2JzZXJ2ZXJzLmxlbmd0aH1pbnZhbGlkYXRlKCl7dGhpcy5zdGF0ZS5pc0ludmFsaWRhdGVkfHx0aGlzLiNzKHt0eXBlOiJpbnZhbGlkYXRlIn0pfWZldGNoKHQsZSl7aWYodGhpcy5zdGF0ZS5mZXRjaFN0YXR1cyE9PSJpZGxlIil7aWYodGhpcy5zdGF0ZS5kYXRhIT09dm9pZCAwJiZlPy5jYW5jZWxSZWZldGNoKXRoaXMuY2FuY2VsKHtzaWxlbnQ6ITB9KTtlbHNlIGlmKHRoaXMuI24pcmV0dXJuIHRoaXMuI24uY29udGludWVSZXRyeSgpLHRoaXMuI24ucHJvbWlzZX1pZih0JiZ0aGlzLnNldE9wdGlvbnModCksIXRoaXMub3B0aW9ucy5xdWVyeUZuKXtjb25zdCBhPXRoaXMub2JzZXJ2ZXJzLmZpbmQoYz0+Yy5vcHRpb25zLnF1ZXJ5Rm4pO2EmJnRoaXMuc2V0T3B0aW9ucyhhLm9wdGlvbnMpfWNvbnN0IHI9bmV3IEFib3J0Q29udHJvbGxlcixuPWE9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwic2lnbmFsIix7ZW51bWVyYWJsZTohMCxnZXQ6KCk9Pih0aGlzLiNhPSEwLHIuc2lnbmFsKX0pfSxzPSgpPT57Y29uc3QgYT1TJCh0aGlzLm9wdGlvbnMsZSksYz17Y2xpZW50OnRoaXMuI2kscXVlcnlLZXk6dGhpcy5xdWVyeUtleSxtZXRhOnRoaXMubWV0YX07cmV0dXJuIG4oYyksdGhpcy4jYT0hMSx0aGlzLm9wdGlvbnMucGVyc2lzdGVyP3RoaXMub3B0aW9ucy5wZXJzaXN0ZXIoYSxjLHRoaXMpOmEoYyl9LGk9e2ZldGNoT3B0aW9uczplLG9wdGlvbnM6dGhpcy5vcHRpb25zLHF1ZXJ5S2V5OnRoaXMucXVlcnlLZXksY2xpZW50OnRoaXMuI2ksc3RhdGU6dGhpcy5zdGF0ZSxmZXRjaEZuOnN9O24oaSksdGhpcy5vcHRpb25zLmJlaGF2aW9yPy5vbkZldGNoKGksdGhpcyksdGhpcy4jdD10aGlzLnN0YXRlLCh0aGlzLnN0YXRlLmZldGNoU3RhdHVzPT09ImlkbGUifHx0aGlzLnN0YXRlLmZldGNoTWV0YSE9PWkuZmV0Y2hPcHRpb25zPy5tZXRhKSYmdGhpcy4jcyh7dHlwZToiZmV0Y2giLG1ldGE6aS5mZXRjaE9wdGlvbnM/Lm1ldGF9KTtjb25zdCBvPWE9PntsMihhKSYmYS5zaWxlbnR8fHRoaXMuI3Moe3R5cGU6ImVycm9yIixlcnJvcjphfSksbDIoYSl8fCh0aGlzLiNyLmNvbmZpZy5vbkVycm9yPy4oYSx0aGlzKSx0aGlzLiNyLmNvbmZpZy5vblNldHRsZWQ/Lih0aGlzLnN0YXRlLmRhdGEsYSx0aGlzKSksdGhpcy5zY2hlZHVsZUdjKCl9O3JldHVybiB0aGlzLiNuPVIkKHtpbml0aWFsUHJvbWlzZTplPy5pbml0aWFsUHJvbWlzZSxmbjppLmZldGNoRm4sYWJvcnQ6ci5hYm9ydC5iaW5kKHIpLG9uU3VjY2VzczphPT57aWYoYT09PXZvaWQgMCl7byhuZXcgRXJyb3IoYCR7dGhpcy5xdWVyeUhhc2h9IGRhdGEgaXMgdW5kZWZpbmVkYCkpO3JldHVybn10cnl7dGhpcy5zZXREYXRhKGEpfWNhdGNoKGMpe28oYyk7cmV0dXJufXRoaXMuI3IuY29uZmlnLm9uU3VjY2Vzcz8uKGEsdGhpcyksdGhpcy4jci5jb25maWcub25TZXR0bGVkPy4oYSx0aGlzLnN0YXRlLmVycm9yLHRoaXMpLHRoaXMuc2NoZWR1bGVHYygpfSxvbkVycm9yOm8sb25GYWlsOihhLGMpPT57dGhpcy4jcyh7dHlwZToiZmFpbGVkIixmYWlsdXJlQ291bnQ6YSxlcnJvcjpjfSl9LG9uUGF1c2U6KCk9Pnt0aGlzLiNzKHt0eXBlOiJwYXVzZSJ9KX0sb25Db250aW51ZTooKT0+e3RoaXMuI3Moe3R5cGU6ImNvbnRpbnVlIn0pfSxyZXRyeTppLm9wdGlvbnMucmV0cnkscmV0cnlEZWxheTppLm9wdGlvbnMucmV0cnlEZWxheSxuZXR3b3JrTW9kZTppLm9wdGlvbnMubmV0d29ya01vZGUsY2FuUnVuOigpPT4hMH0pLHRoaXMuI24uc3RhcnQoKX0jcyh0KXtjb25zdCBlPXI9Pntzd2l0Y2godC50eXBlKXtjYXNlImZhaWxlZCI6cmV0dXJuey4uLnIsZmV0Y2hGYWlsdXJlQ291bnQ6dC5mYWlsdXJlQ291bnQsZmV0Y2hGYWlsdXJlUmVhc29uOnQuZXJyb3J9O2Nhc2UicGF1c2UiOnJldHVybnsuLi5yLGZldGNoU3RhdHVzOiJwYXVzZWQifTtjYXNlImNvbnRpbnVlIjpyZXR1cm57Li4ucixmZXRjaFN0YXR1czoiZmV0Y2hpbmcifTtjYXNlImZldGNoIjpyZXR1cm57Li4uciwuLi5XVihyLmRhdGEsdGhpcy5vcHRpb25zKSxmZXRjaE1ldGE6dC5tZXRhPz9udWxsfTtjYXNlInN1Y2Nlc3MiOnJldHVybnsuLi5yLGRhdGE6dC5kYXRhLGRhdGFVcGRhdGVDb3VudDpyLmRhdGFVcGRhdGVDb3VudCsxLGRhdGFVcGRhdGVkQXQ6dC5kYXRhVXBkYXRlZEF0Pz9EYXRlLm5vdygpLGVycm9yOm51bGwsaXNJbnZhbGlkYXRlZDohMSxzdGF0dXM6InN1Y2Nlc3MiLC4uLiF0Lm1hbnVhbCYme2ZldGNoU3RhdHVzOiJpZGxlIixmZXRjaEZhaWx1cmVDb3VudDowLGZldGNoRmFpbHVyZVJlYXNvbjpudWxsfX07Y2FzZSJlcnJvciI6Y29uc3Qgbj10LmVycm9yO3JldHVybiBsMihuKSYmbi5yZXZlcnQmJnRoaXMuI3Q/ey4uLnRoaXMuI3QsZmV0Y2hTdGF0dXM6ImlkbGUifTp7Li4ucixlcnJvcjpuLGVycm9yVXBkYXRlQ291bnQ6ci5lcnJvclVwZGF0ZUNvdW50KzEsZXJyb3JVcGRhdGVkQXQ6RGF0ZS5ub3coKSxmZXRjaEZhaWx1cmVDb3VudDpyLmZldGNoRmFpbHVyZUNvdW50KzEsZmV0Y2hGYWlsdXJlUmVhc29uOm4sZmV0Y2hTdGF0dXM6ImlkbGUiLHN0YXR1czoiZXJyb3IifTtjYXNlImludmFsaWRhdGUiOnJldHVybnsuLi5yLGlzSW52YWxpZGF0ZWQ6ITB9O2Nhc2Uic2V0U3RhdGUiOnJldHVybnsuLi5yLC4uLnQuc3RhdGV9fX07dGhpcy5zdGF0ZT1lKHRoaXMuc3RhdGUpLCRuLmJhdGNoKCgpPT57dGhpcy5vYnNlcnZlcnMuZm9yRWFjaChyPT57ci5vblF1ZXJ5VXBkYXRlKCl9KSx0aGlzLiNyLm5vdGlmeSh7cXVlcnk6dGhpcyx0eXBlOiJ1cGRhdGVkIixhY3Rpb246dH0pfSl9fTtmdW5jdGlvbiBXVih0LGUpe3JldHVybntmZXRjaEZhaWx1cmVDb3VudDowLGZldGNoRmFpbHVyZVJlYXNvbjpudWxsLGZldGNoU3RhdHVzOlQkKGUubmV0d29ya01vZGUpPyJmZXRjaGluZyI6InBhdXNlZCIsLi4udD09PXZvaWQgMCYme2Vycm9yOm51bGwsc3RhdHVzOiJwZW5kaW5nIn19fWZ1bmN0aW9uIEhWKHQpe2NvbnN0IGU9dHlwZW9mIHQuaW5pdGlhbERhdGE9PSJmdW5jdGlvbiI/dC5pbml0aWFsRGF0YSgpOnQuaW5pdGlhbERhdGEscj1lIT09dm9pZCAwLG49cj90eXBlb2YgdC5pbml0aWFsRGF0YVVwZGF0ZWRBdD09ImZ1bmN0aW9uIj90LmluaXRpYWxEYXRhVXBkYXRlZEF0KCk6dC5pbml0aWFsRGF0YVVwZGF0ZWRBdDowO3JldHVybntkYXRhOmUsZGF0YVVwZGF0ZUNvdW50OjAsZGF0YVVwZGF0ZWRBdDpyP24/P0RhdGUubm93KCk6MCxlcnJvcjpudWxsLGVycm9yVXBkYXRlQ291bnQ6MCxlcnJvclVwZGF0ZWRBdDowLGZldGNoRmFpbHVyZUNvdW50OjAsZmV0Y2hGYWlsdXJlUmVhc29uOm51bGwsZmV0Y2hNZXRhOm51bGwsaXNJbnZhbGlkYXRlZDohMSxzdGF0dXM6cj8ic3VjY2VzcyI6InBlbmRpbmciLGZldGNoU3RhdHVzOiJpZGxlIn19dmFyIHFWPWNsYXNzIGV4dGVuZHMgU3l7Y29uc3RydWN0b3IodD17fSl7c3VwZXIoKSx0aGlzLmNvbmZpZz10LHRoaXMuI2U9bmV3IE1hcH0jZTtidWlsZCh0LGUscil7Y29uc3Qgbj1lLnF1ZXJ5S2V5LHM9ZS5xdWVyeUhhc2g/P3c2KG4sZSk7bGV0IGk9dGhpcy5nZXQocyk7cmV0dXJuIGl8fChpPW5ldyB6Vih7Y2xpZW50OnQscXVlcnlLZXk6bixxdWVyeUhhc2g6cyxvcHRpb25zOnQuZGVmYXVsdFF1ZXJ5T3B0aW9ucyhlKSxzdGF0ZTpyLGRlZmF1bHRPcHRpb25zOnQuZ2V0UXVlcnlEZWZhdWx0cyhuKX0pLHRoaXMuYWRkKGkpKSxpfWFkZCh0KXt0aGlzLiNlLmhhcyh0LnF1ZXJ5SGFzaCl8fCh0aGlzLiNlLnNldCh0LnF1ZXJ5SGFzaCx0KSx0aGlzLm5vdGlmeSh7dHlwZToiYWRkZWQiLHF1ZXJ5OnR9KSl9cmVtb3ZlKHQpe2NvbnN0IGU9dGhpcy4jZS5nZXQodC5xdWVyeUhhc2gpO2UmJih0LmRlc3Ryb3koKSxlPT09dCYmdGhpcy4jZS5kZWxldGUodC5xdWVyeUhhc2gpLHRoaXMubm90aWZ5KHt0eXBlOiJyZW1vdmVkIixxdWVyeTp0fSkpfWNsZWFyKCl7JG4uYmF0Y2goKCk9Pnt0aGlzLmdldEFsbCgpLmZvckVhY2godD0+e3RoaXMucmVtb3ZlKHQpfSl9KX1nZXQodCl7cmV0dXJuIHRoaXMuI2UuZ2V0KHQpfWdldEFsbCgpe3JldHVyblsuLi50aGlzLiNlLnZhbHVlcygpXX1maW5kKHQpe2NvbnN0IGU9e2V4YWN0OiEwLC4uLnR9O3JldHVybiB0aGlzLmdldEFsbCgpLmZpbmQocj0+cDcoZSxyKSl9ZmluZEFsbCh0PXt9KXtjb25zdCBlPXRoaXMuZ2V0QWxsKCk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmxlbmd0aD4wP2UuZmlsdGVyKHI9PnA3KHQscikpOmV9bm90aWZ5KHQpeyRuLmJhdGNoKCgpPT57dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChlPT57ZSh0KX0pfSl9b25Gb2N1cygpeyRuLmJhdGNoKCgpPT57dGhpcy5nZXRBbGwoKS5mb3JFYWNoKHQ9Pnt0Lm9uRm9jdXMoKX0pfSl9b25PbmxpbmUoKXskbi5iYXRjaCgoKT0+e3RoaXMuZ2V0QWxsKCkuZm9yRWFjaCh0PT57dC5vbk9ubGluZSgpfSl9KX19LFZWPWNsYXNzIGV4dGVuZHMgTiR7I2U7I3Q7I3I7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLm11dGF0aW9uSWQ9dC5tdXRhdGlvbklkLHRoaXMuI3Q9dC5tdXRhdGlvbkNhY2hlLHRoaXMuI2U9W10sdGhpcy5zdGF0ZT10LnN0YXRlfHxHVigpLHRoaXMuc2V0T3B0aW9ucyh0Lm9wdGlvbnMpLHRoaXMuc2NoZWR1bGVHYygpfXNldE9wdGlvbnModCl7dGhpcy5vcHRpb25zPXQsdGhpcy51cGRhdGVHY1RpbWUodGhpcy5vcHRpb25zLmdjVGltZSl9Z2V0IG1ldGEoKXtyZXR1cm4gdGhpcy5vcHRpb25zLm1ldGF9YWRkT2JzZXJ2ZXIodCl7dGhpcy4jZS5pbmNsdWRlcyh0KXx8KHRoaXMuI2UucHVzaCh0KSx0aGlzLmNsZWFyR2NUaW1lb3V0KCksdGhpcy4jdC5ub3RpZnkoe3R5cGU6Im9ic2VydmVyQWRkZWQiLG11dGF0aW9uOnRoaXMsb2JzZXJ2ZXI6dH0pKX1yZW1vdmVPYnNlcnZlcih0KXt0aGlzLiNlPXRoaXMuI2UuZmlsdGVyKGU9PmUhPT10KSx0aGlzLnNjaGVkdWxlR2MoKSx0aGlzLiN0Lm5vdGlmeSh7dHlwZToib2JzZXJ2ZXJSZW1vdmVkIixtdXRhdGlvbjp0aGlzLG9ic2VydmVyOnR9KX1vcHRpb25hbFJlbW92ZSgpe3RoaXMuI2UubGVuZ3RofHwodGhpcy5zdGF0ZS5zdGF0dXM9PT0icGVuZGluZyI/dGhpcy5zY2hlZHVsZUdjKCk6dGhpcy4jdC5yZW1vdmUodGhpcykpfWNvbnRpbnVlKCl7cmV0dXJuIHRoaXMuI3I/LmNvbnRpbnVlKCk/P3RoaXMuZXhlY3V0ZSh0aGlzLnN0YXRlLnZhcmlhYmxlcyl9YXN5bmMgZXhlY3V0ZSh0KXtjb25zdCBlPSgpPT57dGhpcy4jaSh7dHlwZToiY29udGludWUifSl9O3RoaXMuI3I9UiQoe2ZuOigpPT50aGlzLm9wdGlvbnMubXV0YXRpb25Gbj90aGlzLm9wdGlvbnMubXV0YXRpb25Gbih0KTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk5vIG11dGF0aW9uRm4gZm91bmQiKSksb25GYWlsOihzLGkpPT57dGhpcy4jaSh7dHlwZToiZmFpbGVkIixmYWlsdXJlQ291bnQ6cyxlcnJvcjppfSl9LG9uUGF1c2U6KCk9Pnt0aGlzLiNpKHt0eXBlOiJwYXVzZSJ9KX0sb25Db250aW51ZTplLHJldHJ5OnRoaXMub3B0aW9ucy5yZXRyeT8/MCxyZXRyeURlbGF5OnRoaXMub3B0aW9ucy5yZXRyeURlbGF5LG5ldHdvcmtNb2RlOnRoaXMub3B0aW9ucy5uZXR3b3JrTW9kZSxjYW5SdW46KCk9PnRoaXMuI3QuY2FuUnVuKHRoaXMpfSk7Y29uc3Qgcj10aGlzLnN0YXRlLnN0YXR1cz09PSJwZW5kaW5nIixuPSF0aGlzLiNyLmNhblN0YXJ0KCk7dHJ5e2lmKHIpZSgpO2Vsc2V7dGhpcy4jaSh7dHlwZToicGVuZGluZyIsdmFyaWFibGVzOnQsaXNQYXVzZWQ6bn0pLGF3YWl0IHRoaXMuI3QuY29uZmlnLm9uTXV0YXRlPy4odCx0aGlzKTtjb25zdCBpPWF3YWl0IHRoaXMub3B0aW9ucy5vbk11dGF0ZT8uKHQpO2khPT10aGlzLnN0YXRlLmNvbnRleHQmJnRoaXMuI2koe3R5cGU6InBlbmRpbmciLGNvbnRleHQ6aSx2YXJpYWJsZXM6dCxpc1BhdXNlZDpufSl9Y29uc3Qgcz1hd2FpdCB0aGlzLiNyLnN0YXJ0KCk7cmV0dXJuIGF3YWl0IHRoaXMuI3QuY29uZmlnLm9uU3VjY2Vzcz8uKHMsdCx0aGlzLnN0YXRlLmNvbnRleHQsdGhpcyksYXdhaXQgdGhpcy5vcHRpb25zLm9uU3VjY2Vzcz8uKHMsdCx0aGlzLnN0YXRlLmNvbnRleHQpLGF3YWl0IHRoaXMuI3QuY29uZmlnLm9uU2V0dGxlZD8uKHMsbnVsbCx0aGlzLnN0YXRlLnZhcmlhYmxlcyx0aGlzLnN0YXRlLmNvbnRleHQsdGhpcyksYXdhaXQgdGhpcy5vcHRpb25zLm9uU2V0dGxlZD8uKHMsbnVsbCx0LHRoaXMuc3RhdGUuY29udGV4dCksdGhpcy4jaSh7dHlwZToic3VjY2VzcyIsZGF0YTpzfSksc31jYXRjaChzKXt0cnl7dGhyb3cgYXdhaXQgdGhpcy4jdC5jb25maWcub25FcnJvcj8uKHMsdCx0aGlzLnN0YXRlLmNvbnRleHQsdGhpcyksYXdhaXQgdGhpcy5vcHRpb25zLm9uRXJyb3I/LihzLHQsdGhpcy5zdGF0ZS5jb250ZXh0KSxhd2FpdCB0aGlzLiN0LmNvbmZpZy5vblNldHRsZWQ/Lih2b2lkIDAscyx0aGlzLnN0YXRlLnZhcmlhYmxlcyx0aGlzLnN0YXRlLmNvbnRleHQsdGhpcyksYXdhaXQgdGhpcy5vcHRpb25zLm9uU2V0dGxlZD8uKHZvaWQgMCxzLHQsdGhpcy5zdGF0ZS5jb250ZXh0KSxzfWZpbmFsbHl7dGhpcy4jaSh7dHlwZToiZXJyb3IiLGVycm9yOnN9KX19ZmluYWxseXt0aGlzLiN0LnJ1bk5leHQodGhpcyl9fSNpKHQpe2NvbnN0IGU9cj0+e3N3aXRjaCh0LnR5cGUpe2Nhc2UiZmFpbGVkIjpyZXR1cm57Li4ucixmYWlsdXJlQ291bnQ6dC5mYWlsdXJlQ291bnQsZmFpbHVyZVJlYXNvbjp0LmVycm9yfTtjYXNlInBhdXNlIjpyZXR1cm57Li4ucixpc1BhdXNlZDohMH07Y2FzZSJjb250aW51ZSI6cmV0dXJuey4uLnIsaXNQYXVzZWQ6ITF9O2Nhc2UicGVuZGluZyI6cmV0dXJuey4uLnIsY29udGV4dDp0LmNvbnRleHQsZGF0YTp2b2lkIDAsZmFpbHVyZUNvdW50OjAsZmFpbHVyZVJlYXNvbjpudWxsLGVycm9yOm51bGwsaXNQYXVzZWQ6dC5pc1BhdXNlZCxzdGF0dXM6InBlbmRpbmciLHZhcmlhYmxlczp0LnZhcmlhYmxlcyxzdWJtaXR0ZWRBdDpEYXRlLm5vdygpfTtjYXNlInN1Y2Nlc3MiOnJldHVybnsuLi5yLGRhdGE6dC5kYXRhLGZhaWx1cmVDb3VudDowLGZhaWx1cmVSZWFzb246bnVsbCxlcnJvcjpudWxsLHN0YXR1czoic3VjY2VzcyIsaXNQYXVzZWQ6ITF9O2Nhc2UiZXJyb3IiOnJldHVybnsuLi5yLGRhdGE6dm9pZCAwLGVycm9yOnQuZXJyb3IsZmFpbHVyZUNvdW50OnIuZmFpbHVyZUNvdW50KzEsZmFpbHVyZVJlYXNvbjp0LmVycm9yLGlzUGF1c2VkOiExLHN0YXR1czoiZXJyb3IifX19O3RoaXMuc3RhdGU9ZSh0aGlzLnN0YXRlKSwkbi5iYXRjaCgoKT0+e3RoaXMuI2UuZm9yRWFjaChyPT57ci5vbk11dGF0aW9uVXBkYXRlKHQpfSksdGhpcy4jdC5ub3RpZnkoe211dGF0aW9uOnRoaXMsdHlwZToidXBkYXRlZCIsYWN0aW9uOnR9KX0pfX07ZnVuY3Rpb24gR1YoKXtyZXR1cm57Y29udGV4dDp2b2lkIDAsZGF0YTp2b2lkIDAsZXJyb3I6bnVsbCxmYWlsdXJlQ291bnQ6MCxmYWlsdXJlUmVhc29uOm51bGwsaXNQYXVzZWQ6ITEsc3RhdHVzOiJpZGxlIix2YXJpYWJsZXM6dm9pZCAwLHN1Ym1pdHRlZEF0OjB9fXZhciBLVj1jbGFzcyBleHRlbmRzIFN5e2NvbnN0cnVjdG9yKHQ9e30pe3N1cGVyKCksdGhpcy5jb25maWc9dCx0aGlzLiNlPW5ldyBTZXQsdGhpcy4jdD1uZXcgTWFwLHRoaXMuI3I9MH0jZTsjdDsjcjtidWlsZCh0LGUscil7Y29uc3Qgbj1uZXcgVlYoe211dGF0aW9uQ2FjaGU6dGhpcyxtdXRhdGlvbklkOisrdGhpcy4jcixvcHRpb25zOnQuZGVmYXVsdE11dGF0aW9uT3B0aW9ucyhlKSxzdGF0ZTpyfSk7cmV0dXJuIHRoaXMuYWRkKG4pLG59YWRkKHQpe3RoaXMuI2UuYWRkKHQpO2NvbnN0IGU9ZmcodCk7aWYodHlwZW9mIGU9PSJzdHJpbmciKXtjb25zdCByPXRoaXMuI3QuZ2V0KGUpO3I/ci5wdXNoKHQpOnRoaXMuI3Quc2V0KGUsW3RdKX10aGlzLm5vdGlmeSh7dHlwZToiYWRkZWQiLG11dGF0aW9uOnR9KX1yZW1vdmUodCl7aWYodGhpcy4jZS5kZWxldGUodCkpe2NvbnN0IGU9ZmcodCk7aWYodHlwZW9mIGU9PSJzdHJpbmciKXtjb25zdCByPXRoaXMuI3QuZ2V0KGUpO2lmKHIpaWYoci5sZW5ndGg+MSl7Y29uc3Qgbj1yLmluZGV4T2YodCk7biE9PS0xJiZyLnNwbGljZShuLDEpfWVsc2UgclswXT09PXQmJnRoaXMuI3QuZGVsZXRlKGUpfX10aGlzLm5vdGlmeSh7dHlwZToicmVtb3ZlZCIsbXV0YXRpb246dH0pfWNhblJ1bih0KXtjb25zdCBlPWZnKHQpO2lmKHR5cGVvZiBlPT0ic3RyaW5nIil7Y29uc3Qgbj10aGlzLiN0LmdldChlKT8uZmluZChzPT5zLnN0YXRlLnN0YXR1cz09PSJwZW5kaW5nIik7cmV0dXJuIW58fG49PT10fWVsc2UgcmV0dXJuITB9cnVuTmV4dCh0KXtjb25zdCBlPWZnKHQpO3JldHVybiB0eXBlb2YgZT09InN0cmluZyI/dGhpcy4jdC5nZXQoZSk/LmZpbmQobj0+biE9PXQmJm4uc3RhdGUuaXNQYXVzZWQpPy5jb250aW51ZSgpPz9Qcm9taXNlLnJlc29sdmUoKTpQcm9taXNlLnJlc29sdmUoKX1jbGVhcigpeyRuLmJhdGNoKCgpPT57dGhpcy4jZS5mb3JFYWNoKHQ9Pnt0aGlzLm5vdGlmeSh7dHlwZToicmVtb3ZlZCIsbXV0YXRpb246dH0pfSksdGhpcy4jZS5jbGVhcigpLHRoaXMuI3QuY2xlYXIoKX0pfWdldEFsbCgpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuI2UpfWZpbmQodCl7Y29uc3QgZT17ZXhhY3Q6ITAsLi4udH07cmV0dXJuIHRoaXMuZ2V0QWxsKCkuZmluZChyPT5mNyhlLHIpKX1maW5kQWxsKHQ9e30pe3JldHVybiB0aGlzLmdldEFsbCgpLmZpbHRlcihlPT5mNyh0LGUpKX1ub3RpZnkodCl7JG4uYmF0Y2goKCk9Pnt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKGU9PntlKHQpfSl9KX1yZXN1bWVQYXVzZWRNdXRhdGlvbnMoKXtjb25zdCB0PXRoaXMuZ2V0QWxsKCkuZmlsdGVyKGU9PmUuc3RhdGUuaXNQYXVzZWQpO3JldHVybiAkbi5iYXRjaCgoKT0+UHJvbWlzZS5hbGwodC5tYXAoZT0+ZS5jb250aW51ZSgpLmNhdGNoKF9zKSkpKX19O2Z1bmN0aW9uIGZnKHQpe3JldHVybiB0Lm9wdGlvbnMuc2NvcGU/LmlkfWZ1bmN0aW9uIHc3KHQpe3JldHVybntvbkZldGNoOihlLHIpPT57Y29uc3Qgbj1lLm9wdGlvbnMscz1lLmZldGNoT3B0aW9ucz8ubWV0YT8uZmV0Y2hNb3JlPy5kaXJlY3Rpb24saT1lLnN0YXRlLmRhdGE/LnBhZ2VzfHxbXSxvPWUuc3RhdGUuZGF0YT8ucGFnZVBhcmFtc3x8W107bGV0IGE9e3BhZ2VzOltdLHBhZ2VQYXJhbXM6W119LGM9MDtjb25zdCBsPWFzeW5jKCk9PntsZXQgZD0hMTtjb25zdCB1PWY9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwic2lnbmFsIix7ZW51bWVyYWJsZTohMCxnZXQ6KCk9PihlLnNpZ25hbC5hYm9ydGVkP2Q9ITA6ZS5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLCgpPT57ZD0hMH0pLGUuc2lnbmFsKX0pfSxoPVMkKGUub3B0aW9ucyxlLmZldGNoT3B0aW9ucykscD1hc3luYyhmLG0sdyk9PntpZihkKXJldHVybiBQcm9taXNlLnJlamVjdCgpO2lmKG09PW51bGwmJmYucGFnZXMubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUoZik7Y29uc3QgZz17Y2xpZW50OmUuY2xpZW50LHF1ZXJ5S2V5OmUucXVlcnlLZXkscGFnZVBhcmFtOm0sZGlyZWN0aW9uOnc/ImJhY2t3YXJkIjoiZm9yd2FyZCIsbWV0YTplLm9wdGlvbnMubWV0YX07dShnKTtjb25zdCB2PWF3YWl0IGgoZykse21heFBhZ2VzOkV9PWUub3B0aW9ucyx4PXc/TVY6JFY7cmV0dXJue3BhZ2VzOngoZi5wYWdlcyx2LEUpLHBhZ2VQYXJhbXM6eChmLnBhZ2VQYXJhbXMsbSxFKX19O2lmKHMmJmkubGVuZ3RoKXtjb25zdCBmPXM9PT0iYmFja3dhcmQiLG09Zj9aVjpiNyx3PXtwYWdlczppLHBhZ2VQYXJhbXM6b30sZz1tKG4sdyk7YT1hd2FpdCBwKHcsZyxmKX1lbHNle2NvbnN0IGY9dD8/aS5sZW5ndGg7ZG97Y29uc3QgbT1jPT09MD9vWzBdPz9uLmluaXRpYWxQYWdlUGFyYW06YjcobixhKTtpZihjPjAmJm09PW51bGwpYnJlYWs7YT1hd2FpdCBwKGEsbSksYysrfXdoaWxlKGM8Zil9cmV0dXJuIGF9O2Uub3B0aW9ucy5wZXJzaXN0ZXI/ZS5mZXRjaEZuPSgpPT5lLm9wdGlvbnMucGVyc2lzdGVyPy4obCx7Y2xpZW50OmUuY2xpZW50LHF1ZXJ5S2V5OmUucXVlcnlLZXksbWV0YTplLm9wdGlvbnMubWV0YSxzaWduYWw6ZS5zaWduYWx9LHIpOmUuZmV0Y2hGbj1sfX19ZnVuY3Rpb24gYjcodCx7cGFnZXM6ZSxwYWdlUGFyYW1zOnJ9KXtjb25zdCBuPWUubGVuZ3RoLTE7cmV0dXJuIGUubGVuZ3RoPjA/dC5nZXROZXh0UGFnZVBhcmFtKGVbbl0sZSxyW25dLHIpOnZvaWQgMH1mdW5jdGlvbiBaVih0LHtwYWdlczplLHBhZ2VQYXJhbXM6cn0pe3JldHVybiBlLmxlbmd0aD4wP3QuZ2V0UHJldmlvdXNQYWdlUGFyYW0/LihlWzBdLGUsclswXSxyKTp2b2lkIDB9dmFyIFlWPWNsYXNzeyNlOyN0OyNyOyNpOyNuOyNvOyNhOyNzO2NvbnN0cnVjdG9yKHQ9e30pe3RoaXMuI2U9dC5xdWVyeUNhY2hlfHxuZXcgcVYsdGhpcy4jdD10Lm11dGF0aW9uQ2FjaGV8fG5ldyBLVix0aGlzLiNyPXQuZGVmYXVsdE9wdGlvbnN8fHt9LHRoaXMuI2k9bmV3IE1hcCx0aGlzLiNuPW5ldyBNYXAsdGhpcy4jbz0wfW1vdW50KCl7dGhpcy4jbysrLHRoaXMuI289PT0xJiYodGhpcy4jYT1BJC5zdWJzY3JpYmUoYXN5bmMgdD0+e3QmJihhd2FpdCB0aGlzLnJlc3VtZVBhdXNlZE11dGF0aW9ucygpLHRoaXMuI2Uub25Gb2N1cygpKX0pLHRoaXMuI3M9YWIuc3Vic2NyaWJlKGFzeW5jIHQ9Pnt0JiYoYXdhaXQgdGhpcy5yZXN1bWVQYXVzZWRNdXRhdGlvbnMoKSx0aGlzLiNlLm9uT25saW5lKCkpfSkpfXVubW91bnQoKXt0aGlzLiNvLS0sdGhpcy4jbz09PTAmJih0aGlzLiNhPy4oKSx0aGlzLiNhPXZvaWQgMCx0aGlzLiNzPy4oKSx0aGlzLiNzPXZvaWQgMCl9aXNGZXRjaGluZyh0KXtyZXR1cm4gdGhpcy4jZS5maW5kQWxsKHsuLi50LGZldGNoU3RhdHVzOiJmZXRjaGluZyJ9KS5sZW5ndGh9aXNNdXRhdGluZyh0KXtyZXR1cm4gdGhpcy4jdC5maW5kQWxsKHsuLi50LHN0YXR1czoicGVuZGluZyJ9KS5sZW5ndGh9Z2V0UXVlcnlEYXRhKHQpe2NvbnN0IGU9dGhpcy5kZWZhdWx0UXVlcnlPcHRpb25zKHtxdWVyeUtleTp0fSk7cmV0dXJuIHRoaXMuI2UuZ2V0KGUucXVlcnlIYXNoKT8uc3RhdGUuZGF0YX1lbnN1cmVRdWVyeURhdGEodCl7Y29uc3QgZT10aGlzLmRlZmF1bHRRdWVyeU9wdGlvbnModCkscj10aGlzLiNlLmJ1aWxkKHRoaXMsZSksbj1yLnN0YXRlLmRhdGE7cmV0dXJuIG49PT12b2lkIDA/dGhpcy5mZXRjaFF1ZXJ5KHQpOih0LnJldmFsaWRhdGVJZlN0YWxlJiZyLmlzU3RhbGVCeVRpbWUocUMoZS5zdGFsZVRpbWUscikpJiZ0aGlzLnByZWZldGNoUXVlcnkoZSksUHJvbWlzZS5yZXNvbHZlKG4pKX1nZXRRdWVyaWVzRGF0YSh0KXtyZXR1cm4gdGhpcy4jZS5maW5kQWxsKHQpLm1hcCgoe3F1ZXJ5S2V5OmUsc3RhdGU6cn0pPT57Y29uc3Qgbj1yLmRhdGE7cmV0dXJuW2Usbl19KX1zZXRRdWVyeURhdGEodCxlLHIpe2NvbnN0IG49dGhpcy5kZWZhdWx0UXVlcnlPcHRpb25zKHtxdWVyeUtleTp0fSksaT10aGlzLiNlLmdldChuLnF1ZXJ5SGFzaCk/LnN0YXRlLmRhdGEsbz1UVihlLGkpO2lmKG8hPT12b2lkIDApcmV0dXJuIHRoaXMuI2UuYnVpbGQodGhpcyxuKS5zZXREYXRhKG8sey4uLnIsbWFudWFsOiEwfSl9c2V0UXVlcmllc0RhdGEodCxlLHIpe3JldHVybiAkbi5iYXRjaCgoKT0+dGhpcy4jZS5maW5kQWxsKHQpLm1hcCgoe3F1ZXJ5S2V5Om59KT0+W24sdGhpcy5zZXRRdWVyeURhdGEobixlLHIpXSkpfWdldFF1ZXJ5U3RhdGUodCl7Y29uc3QgZT10aGlzLmRlZmF1bHRRdWVyeU9wdGlvbnMoe3F1ZXJ5S2V5OnR9KTtyZXR1cm4gdGhpcy4jZS5nZXQoZS5xdWVyeUhhc2gpPy5zdGF0ZX1yZW1vdmVRdWVyaWVzKHQpe2NvbnN0IGU9dGhpcy4jZTskbi5iYXRjaCgoKT0+e2UuZmluZEFsbCh0KS5mb3JFYWNoKHI9PntlLnJlbW92ZShyKX0pfSl9cmVzZXRRdWVyaWVzKHQsZSl7Y29uc3Qgcj10aGlzLiNlO3JldHVybiAkbi5iYXRjaCgoKT0+KHIuZmluZEFsbCh0KS5mb3JFYWNoKG49PntuLnJlc2V0KCl9KSx0aGlzLnJlZmV0Y2hRdWVyaWVzKHt0eXBlOiJhY3RpdmUiLC4uLnR9LGUpKSl9Y2FuY2VsUXVlcmllcyh0LGU9e30pe2NvbnN0IHI9e3JldmVydDohMCwuLi5lfSxuPSRuLmJhdGNoKCgpPT50aGlzLiNlLmZpbmRBbGwodCkubWFwKHM9PnMuY2FuY2VsKHIpKSk7cmV0dXJuIFByb21pc2UuYWxsKG4pLnRoZW4oX3MpLmNhdGNoKF9zKX1pbnZhbGlkYXRlUXVlcmllcyh0LGU9e30pe3JldHVybiAkbi5iYXRjaCgoKT0+KHRoaXMuI2UuZmluZEFsbCh0KS5mb3JFYWNoKHI9PntyLmludmFsaWRhdGUoKX0pLHQ/LnJlZmV0Y2hUeXBlPT09Im5vbmUiP1Byb21pc2UucmVzb2x2ZSgpOnRoaXMucmVmZXRjaFF1ZXJpZXMoey4uLnQsdHlwZTp0Py5yZWZldGNoVHlwZT8/dD8udHlwZT8/ImFjdGl2ZSJ9LGUpKSl9cmVmZXRjaFF1ZXJpZXModCxlPXt9KXtjb25zdCByPXsuLi5lLGNhbmNlbFJlZmV0Y2g6ZS5jYW5jZWxSZWZldGNoPz8hMH0sbj0kbi5iYXRjaCgoKT0+dGhpcy4jZS5maW5kQWxsKHQpLmZpbHRlcihzPT4hcy5pc0Rpc2FibGVkKCkmJiFzLmlzU3RhdGljKCkpLm1hcChzPT57bGV0IGk9cy5mZXRjaCh2b2lkIDAscik7cmV0dXJuIHIudGhyb3dPbkVycm9yfHwoaT1pLmNhdGNoKF9zKSkscy5zdGF0ZS5mZXRjaFN0YXR1cz09PSJwYXVzZWQiP1Byb21pc2UucmVzb2x2ZSgpOml9KSk7cmV0dXJuIFByb21pc2UuYWxsKG4pLnRoZW4oX3MpfWZldGNoUXVlcnkodCl7Y29uc3QgZT10aGlzLmRlZmF1bHRRdWVyeU9wdGlvbnModCk7ZS5yZXRyeT09PXZvaWQgMCYmKGUucmV0cnk9ITEpO2NvbnN0IHI9dGhpcy4jZS5idWlsZCh0aGlzLGUpO3JldHVybiByLmlzU3RhbGVCeVRpbWUocUMoZS5zdGFsZVRpbWUscikpP3IuZmV0Y2goZSk6UHJvbWlzZS5yZXNvbHZlKHIuc3RhdGUuZGF0YSl9cHJlZmV0Y2hRdWVyeSh0KXtyZXR1cm4gdGhpcy5mZXRjaFF1ZXJ5KHQpLnRoZW4oX3MpLmNhdGNoKF9zKX1mZXRjaEluZmluaXRlUXVlcnkodCl7cmV0dXJuIHQuYmVoYXZpb3I9dzcodC5wYWdlcyksdGhpcy5mZXRjaFF1ZXJ5KHQpfXByZWZldGNoSW5maW5pdGVRdWVyeSh0KXtyZXR1cm4gdGhpcy5mZXRjaEluZmluaXRlUXVlcnkodCkudGhlbihfcykuY2F0Y2goX3MpfWVuc3VyZUluZmluaXRlUXVlcnlEYXRhKHQpe3JldHVybiB0LmJlaGF2aW9yPXc3KHQucGFnZXMpLHRoaXMuZW5zdXJlUXVlcnlEYXRhKHQpfXJlc3VtZVBhdXNlZE11dGF0aW9ucygpe3JldHVybiBhYi5pc09ubGluZSgpP3RoaXMuI3QucmVzdW1lUGF1c2VkTXV0YXRpb25zKCk6UHJvbWlzZS5yZXNvbHZlKCl9Z2V0UXVlcnlDYWNoZSgpe3JldHVybiB0aGlzLiNlfWdldE11dGF0aW9uQ2FjaGUoKXtyZXR1cm4gdGhpcy4jdH1nZXREZWZhdWx0T3B0aW9ucygpe3JldHVybiB0aGlzLiNyfXNldERlZmF1bHRPcHRpb25zKHQpe3RoaXMuI3I9dH1zZXRRdWVyeURlZmF1bHRzKHQsZSl7dGhpcy4jaS5zZXQoQjAodCkse3F1ZXJ5S2V5OnQsZGVmYXVsdE9wdGlvbnM6ZX0pfWdldFF1ZXJ5RGVmYXVsdHModCl7Y29uc3QgZT1bLi4udGhpcy4jaS52YWx1ZXMoKV0scj17fTtyZXR1cm4gZS5mb3JFYWNoKG49PntMMCh0LG4ucXVlcnlLZXkpJiZPYmplY3QuYXNzaWduKHIsbi5kZWZhdWx0T3B0aW9ucyl9KSxyfXNldE11dGF0aW9uRGVmYXVsdHModCxlKXt0aGlzLiNuLnNldChCMCh0KSx7bXV0YXRpb25LZXk6dCxkZWZhdWx0T3B0aW9uczplfSl9Z2V0TXV0YXRpb25EZWZhdWx0cyh0KXtjb25zdCBlPVsuLi50aGlzLiNuLnZhbHVlcygpXSxyPXt9O3JldHVybiBlLmZvckVhY2gobj0+e0wwKHQsbi5tdXRhdGlvbktleSkmJk9iamVjdC5hc3NpZ24ocixuLmRlZmF1bHRPcHRpb25zKX0pLHJ9ZGVmYXVsdFF1ZXJ5T3B0aW9ucyh0KXtpZih0Ll9kZWZhdWx0ZWQpcmV0dXJuIHQ7Y29uc3QgZT17Li4udGhpcy4jci5xdWVyaWVzLC4uLnRoaXMuZ2V0UXVlcnlEZWZhdWx0cyh0LnF1ZXJ5S2V5KSwuLi50LF9kZWZhdWx0ZWQ6ITB9O3JldHVybiBlLnF1ZXJ5SGFzaHx8KGUucXVlcnlIYXNoPXc2KGUucXVlcnlLZXksZSkpLGUucmVmZXRjaE9uUmVjb25uZWN0PT09dm9pZCAwJiYoZS5yZWZldGNoT25SZWNvbm5lY3Q9ZS5uZXR3b3JrTW9kZSE9PSJhbHdheXMiKSxlLnRocm93T25FcnJvcj09PXZvaWQgMCYmKGUudGhyb3dPbkVycm9yPSEhZS5zdXNwZW5zZSksIWUubmV0d29ya01vZGUmJmUucGVyc2lzdGVyJiYoZS5uZXR3b3JrTW9kZT0ib2ZmbGluZUZpcnN0IiksZS5xdWVyeUZuPT09YjYmJihlLmVuYWJsZWQ9ITEpLGV9ZGVmYXVsdE11dGF0aW9uT3B0aW9ucyh0KXtyZXR1cm4gdD8uX2RlZmF1bHRlZD90OnsuLi50aGlzLiNyLm11dGF0aW9ucywuLi50Py5tdXRhdGlvbktleSYmdGhpcy5nZXRNdXRhdGlvbkRlZmF1bHRzKHQubXV0YXRpb25LZXkpLC4uLnQsX2RlZmF1bHRlZDohMH19Y2xlYXIoKXt0aGlzLiNlLmNsZWFyKCksdGhpcy4jdC5jbGVhcigpfX07Y29uc3QgSlY9U3ltYm9sKCkseTc9T2JqZWN0LmdldFByb3RvdHlwZU9mLEdDPW5ldyBXZWFrTWFwLFhWPXQ9PnQmJihHQy5oYXModCk/R0MuZ2V0KHQpOnk3KHQpPT09T2JqZWN0LnByb3RvdHlwZXx8eTcodCk9PT1BcnJheS5wcm90b3R5cGUpLFFWPXQ9PlhWKHQpJiZ0W0pWXXx8bnVsbCx2Nz0odCxlPSEwKT0+e0dDLnNldCh0LGUpfSxjYj17fSx1Mj10PT50eXBlb2YgdD09Im9iamVjdCImJnQhPT1udWxsLG5jPW5ldyBXZWFrTWFwLEdmPW5ldyBXZWFrU2V0LGVHPSh0PU9iamVjdC5pcyxlPShsLGQpPT5uZXcgUHJveHkobCxkKSxyPWw9PnUyKGwpJiYhR2YuaGFzKGwpJiYoQXJyYXkuaXNBcnJheShsKXx8IShTeW1ib2wuaXRlcmF0b3IgaW4gbCkpJiYhKGwgaW5zdGFuY2VvZiBXZWFrTWFwKSYmIShsIGluc3RhbmNlb2YgV2Vha1NldCkmJiEobCBpbnN0YW5jZW9mIEVycm9yKSYmIShsIGluc3RhbmNlb2YgTnVtYmVyKSYmIShsIGluc3RhbmNlb2YgRGF0ZSkmJiEobCBpbnN0YW5jZW9mIFN0cmluZykmJiEobCBpbnN0YW5jZW9mIFJlZ0V4cCkmJiEobCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSxuPWw9Pntzd2l0Y2gobC5zdGF0dXMpe2Nhc2UiZnVsZmlsbGVkIjpyZXR1cm4gbC52YWx1ZTtjYXNlInJlamVjdGVkIjp0aHJvdyBsLnJlYXNvbjtkZWZhdWx0OnRocm93IGx9fSxzPW5ldyBXZWFrTWFwLGk9KGwsZCx1PW4pPT57Y29uc3QgaD1zLmdldChsKTtpZihoPy5bMF09PT1kKXJldHVybiBoWzFdO2NvbnN0IHA9QXJyYXkuaXNBcnJheShsKT9bXTpPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihsKSk7cmV0dXJuIHY3KHAsITApLHMuc2V0KGwsW2QscF0pLFJlZmxlY3Qub3duS2V5cyhsKS5mb3JFYWNoKGY9PntpZihPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHAsZikpcmV0dXJuO2NvbnN0IG09UmVmbGVjdC5nZXQobCxmKSx7ZW51bWVyYWJsZTp3fT1SZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihsLGYpLGc9e3ZhbHVlOm0sZW51bWVyYWJsZTp3LGNvbmZpZ3VyYWJsZTohMH07aWYoR2YuaGFzKG0pKXY3KG0sITEpO2Vsc2UgaWYobSBpbnN0YW5jZW9mIFByb21pc2UpZGVsZXRlIGcudmFsdWUsZy5nZXQ9KCk9PnUobSk7ZWxzZSBpZihuYy5oYXMobSkpe2NvbnN0W3YsRV09bmMuZ2V0KG0pO2cudmFsdWU9aSh2LEUoKSx1KX1PYmplY3QuZGVmaW5lUHJvcGVydHkocCxmLGcpfSksT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHApfSxvPW5ldyBXZWFrTWFwLGE9WzEsMV0sYz1sPT57aWYoIXUyKGwpKXRocm93IG5ldyBFcnJvcigib2JqZWN0IHJlcXVpcmVkIik7Y29uc3QgZD1vLmdldChsKTtpZihkKXJldHVybiBkO2xldCB1PWFbMF07Y29uc3QgaD1uZXcgU2V0LHA9KFAsaj0rK2FbMF0pPT57dSE9PWomJih1PWosaC5mb3JFYWNoKFU9PlUoUCxqKSkpfTtsZXQgZj1hWzFdO2NvbnN0IG09KFA9KythWzFdKT0+KGYhPT1QJiYhaC5zaXplJiYoZj1QLGcuZm9yRWFjaCgoW2pdKT0+e2NvbnN0IFU9alsxXShQKTtVPnUmJih1PVUpfSkpLHUpLHc9UD0+KGosVSk9Pntjb25zdCBWPVsuLi5qXTtWWzFdPVtQLC4uLlZbMV1dLHAoVixVKX0sZz1uZXcgTWFwLHY9KFAsaik9PntpZigoY2I/InByb2R1Y3Rpb24iOnZvaWQgMCkhPT0icHJvZHVjdGlvbiImJmcuaGFzKFApKXRocm93IG5ldyBFcnJvcigicHJvcCBsaXN0ZW5lciBhbHJlYWR5IGV4aXN0cyIpO2lmKGguc2l6ZSl7Y29uc3QgVT1qWzNdKHcoUCkpO2cuc2V0KFAsW2osVV0pfWVsc2UgZy5zZXQoUCxbal0pfSxFPVA9Pnt2YXIgajtjb25zdCBVPWcuZ2V0KFApO1UmJihnLmRlbGV0ZShQKSwoaj1VWzFdKT09bnVsbHx8ai5jYWxsKFUpKX0seD1QPT4oaC5hZGQoUCksaC5zaXplPT09MSYmZy5mb3JFYWNoKChbVSxWXSxGKT0+e2lmKChjYj8icHJvZHVjdGlvbiI6dm9pZCAwKSE9PSJwcm9kdWN0aW9uIiYmVil0aHJvdyBuZXcgRXJyb3IoInJlbW92ZSBhbHJlYWR5IGV4aXN0cyIpO2NvbnN0IGI9VVszXSh3KEYpKTtnLnNldChGLFtVLGJdKX0pLCgpPT57aC5kZWxldGUoUCksaC5zaXplPT09MCYmZy5mb3JFYWNoKChbVSxWXSxGKT0+e1YmJihWKCksZy5zZXQoRixbVV0pKX0pfSksXz1BcnJheS5pc0FycmF5KGwpP1tdOk9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKGwpKSxBPWUoXyx7ZGVsZXRlUHJvcGVydHkoUCxqKXtjb25zdCBVPVJlZmxlY3QuZ2V0KFAsaik7RShqKTtjb25zdCBWPVJlZmxlY3QuZGVsZXRlUHJvcGVydHkoUCxqKTtyZXR1cm4gViYmcChbImRlbGV0ZSIsW2pdLFVdKSxWfSxzZXQoUCxqLFUsVil7Y29uc3QgRj1SZWZsZWN0LmhhcyhQLGopLGI9UmVmbGVjdC5nZXQoUCxqLFYpO2lmKEYmJih0KGIsVSl8fG8uaGFzKFUpJiZ0KGIsby5nZXQoVSkpKSlyZXR1cm4hMDtFKGopLHUyKFUpJiYoVT1RVihVKXx8VSk7bGV0IHk9VTtpZihVIGluc3RhbmNlb2YgUHJvbWlzZSlVLnRoZW4oQz0+e1Uuc3RhdHVzPSJmdWxmaWxsZWQiLFUudmFsdWU9QyxwKFsicmVzb2x2ZSIsW2pdLENdKX0pLmNhdGNoKEM9PntVLnN0YXR1cz0icmVqZWN0ZWQiLFUucmVhc29uPUMscChbInJlamVjdCIsW2pdLENdKX0pO2Vsc2V7IW5jLmhhcyhVKSYmcihVKSYmKHk9YyhVKSk7Y29uc3QgQz0hR2YuaGFzKHkpJiZuYy5nZXQoeSk7QyYmdihqLEMpfXJldHVybiBSZWZsZWN0LnNldChQLGoseSxWKSxwKFsic2V0Iixbal0sVSxiXSksITB9fSk7by5zZXQobCxBKTtjb25zdCBNPVtfLG0saSx4XTtyZXR1cm4gbmMuc2V0KEEsTSksUmVmbGVjdC5vd25LZXlzKGwpLmZvckVhY2goUD0+e2NvbnN0IGo9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihsLFApOyJ2YWx1ZSJpbiBqJiYoQVtQXT1sW1BdLGRlbGV0ZSBqLnZhbHVlLGRlbGV0ZSBqLndyaXRhYmxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoXyxQLGopfSksQX0pPT5bYyxuYyxHZix0LGUscixuLHMsaSxvLGFdLFt0R109ZUcoKTtmdW5jdGlvbiB6dCh0PXt9KXtyZXR1cm4gdEcodCl9ZnVuY3Rpb24gS3IodCxlLHIpe2NvbnN0IG49bmMuZ2V0KHQpOyhjYj8icHJvZHVjdGlvbiI6dm9pZCAwKSE9PSJwcm9kdWN0aW9uIiYmIW4mJmNvbnNvbGUud2FybigiUGxlYXNlIHVzZSBwcm94eSBvYmplY3QiKTtsZXQgcztjb25zdCBpPVtdLG89blszXTtsZXQgYT0hMTtjb25zdCBsPW8oZD0+e2kucHVzaChkKSxzfHwocz1Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57cz12b2lkIDAsYSYmZShpLnNwbGljZSgwKSl9KSl9KTtyZXR1cm4gYT0hMCwoKT0+e2E9ITEsbCgpfX1mdW5jdGlvbiBVMCh0LGUpe2NvbnN0IHI9bmMuZ2V0KHQpOyhjYj8icHJvZHVjdGlvbiI6dm9pZCAwKSE9PSJwcm9kdWN0aW9uIiYmIXImJmNvbnNvbGUud2FybigiUGxlYXNlIHVzZSBwcm94eSBvYmplY3QiKTtjb25zdFtuLHMsaV09cjtyZXR1cm4gaShuLHMoKSxlKX1mdW5jdGlvbiB3dSh0KXtyZXR1cm4gR2YuYWRkKHQpLHR9ZnVuY3Rpb24gV3IodCxlLHIsbil7bGV0IHM9dFtlXTtyZXR1cm4gS3IodCwoKT0+e2NvbnN0IGk9dFtlXTtPYmplY3QuaXMocyxpKXx8cihzPWkpfSl9ZnVuY3Rpb24gckcodCl7Y29uc3QgZT16dCh7ZGF0YTpBcnJheS5mcm9tKFtdKSxoYXMocil7cmV0dXJuIHRoaXMuZGF0YS5zb21lKG49Pm5bMF09PT1yKX0sc2V0KHIsbil7Y29uc3Qgcz10aGlzLmRhdGEuZmluZChpPT5pWzBdPT09cik7cmV0dXJuIHM/c1sxXT1uOnRoaXMuZGF0YS5wdXNoKFtyLG5dKSx0aGlzfSxnZXQocil7dmFyIG47cmV0dXJuKG49dGhpcy5kYXRhLmZpbmQocz0+c1swXT09PXIpKT09bnVsbD92b2lkIDA6blsxXX0sZGVsZXRlKHIpe2NvbnN0IG49dGhpcy5kYXRhLmZpbmRJbmRleChzPT5zWzBdPT09cik7cmV0dXJuIG49PT0tMT8hMToodGhpcy5kYXRhLnNwbGljZShuLDEpLCEwKX0sY2xlYXIoKXt0aGlzLmRhdGEuc3BsaWNlKDApfSxnZXQgc2l6ZSgpe3JldHVybiB0aGlzLmRhdGEubGVuZ3RofSx0b0pTT04oKXtyZXR1cm4gbmV3IE1hcCh0aGlzLmRhdGEpfSxmb3JFYWNoKHIpe3RoaXMuZGF0YS5mb3JFYWNoKG49PntyKG5bMV0sblswXSx0aGlzKX0pfSxrZXlzKCl7cmV0dXJuIHRoaXMuZGF0YS5tYXAocj0+clswXSkudmFsdWVzKCl9LHZhbHVlcygpe3JldHVybiB0aGlzLmRhdGEubWFwKHI9PnJbMV0pLnZhbHVlcygpfSxlbnRyaWVzKCl7cmV0dXJuIG5ldyBNYXAodGhpcy5kYXRhKS5lbnRyaWVzKCl9LGdldFtTeW1ib2wudG9TdHJpbmdUYWddKCl7cmV0dXJuIk1hcCJ9LFtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfX0pO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtkYXRhOntlbnVtZXJhYmxlOiExfSxzaXplOntlbnVtZXJhYmxlOiExfSx0b0pTT046e2VudW1lcmFibGU6ITF9fSksT2JqZWN0LnNlYWwoZSksZX12YXIgT3c9e2V4cG9ydHM6e319LG5HPU93LmV4cG9ydHMsRTc7ZnVuY3Rpb24gaUcoKXtyZXR1cm4gRTd8fChFNz0xLGZ1bmN0aW9uKHQsZSl7KGZ1bmN0aW9uKHIsbil7dC5leHBvcnRzPW4oKX0pKG5HLGZ1bmN0aW9uKCl7dmFyIHI9MWUzLG49NmU0LHM9MzZlNSxpPSJtaWxsaXNlY29uZCIsbz0ic2Vjb25kIixhPSJtaW51dGUiLGM9ImhvdXIiLGw9ImRheSIsZD0id2VlayIsdT0ibW9udGgiLGg9InF1YXJ0ZXIiLHA9InllYXIiLGY9ImRhdGUiLG09IkludmFsaWQgRGF0ZSIsdz0vXihcZHs0fSlbLS9dPyhcZHsxLDJ9KT9bLS9dPyhcZHswLDJ9KVtUdFxzXSooXGR7MSwyfSk/Oj8oXGR7MSwyfSk/Oj8oXGR7MSwyfSk/Wy46XT8oXGQrKT8kLyxnPS9cWyhbXlxdXSspXXxZezEsNH18TXsxLDR9fER7MSwyfXxkezEsNH18SHsxLDJ9fGh7MSwyfXxhfEF8bXsxLDJ9fHN7MSwyfXxaezEsMn18U1NTL2csdj17bmFtZToiZW4iLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSxtb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksb3JkaW5hbDpmdW5jdGlvbihiKXt2YXIgeT1bInRoIiwic3QiLCJuZCIsInJkIl0sQz1iJTEwMDtyZXR1cm4iWyIrYisoeVsoQy0yMCklMTBdfHx5W0NdfHx5WzBdKSsiXSJ9fSxFPWZ1bmN0aW9uKGIseSxDKXt2YXIgVD1TdHJpbmcoYik7cmV0dXJuIVR8fFQubGVuZ3RoPj15P2I6IiIrQXJyYXkoeSsxLVQubGVuZ3RoKS5qb2luKEMpK2J9LHg9e3M6RSx6OmZ1bmN0aW9uKGIpe3ZhciB5PS1iLnV0Y09mZnNldCgpLEM9TWF0aC5hYnMoeSksVD1NYXRoLmZsb29yKEMvNjApLE49QyU2MDtyZXR1cm4oeTw9MD8iKyI6Ii0iKStFKFQsMiwiMCIpKyI6IitFKE4sMiwiMCIpfSxtOmZ1bmN0aW9uIGIoeSxDKXtpZih5LmRhdGUoKTxDLmRhdGUoKSlyZXR1cm4tYihDLHkpO3ZhciBUPTEyKihDLnllYXIoKS15LnllYXIoKSkrKEMubW9udGgoKS15Lm1vbnRoKCkpLE49eS5jbG9uZSgpLmFkZChULHUpLFI9Qy1OPDAsST15LmNsb25lKCkuYWRkKFQrKFI/LTE6MSksdSk7cmV0dXJuKygtKFQrKEMtTikvKFI/Ti1JOkktTikpfHwwKX0sYTpmdW5jdGlvbihiKXtyZXR1cm4gYjwwP01hdGguY2VpbChiKXx8MDpNYXRoLmZsb29yKGIpfSxwOmZ1bmN0aW9uKGIpe3JldHVybntNOnUseTpwLHc6ZCxkOmwsRDpmLGg6YyxtOmEsczpvLG1zOmksUTpofVtiXXx8U3RyaW5nKGJ8fCIiKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL3MkLywiIil9LHU6ZnVuY3Rpb24oYil7cmV0dXJuIGI9PT12b2lkIDB9fSxfPSJlbiIsaz17fTtrW19dPXY7dmFyIEE9IiRpc0RheWpzT2JqZWN0IixNPWZ1bmN0aW9uKGIpe3JldHVybiBiIGluc3RhbmNlb2YgVnx8ISghYnx8IWJbQV0pfSxQPWZ1bmN0aW9uIGIoeSxDLFQpe3ZhciBOO2lmKCF5KXJldHVybiBfO2lmKHR5cGVvZiB5PT0ic3RyaW5nIil7dmFyIFI9eS50b0xvd2VyQ2FzZSgpO2tbUl0mJihOPVIpLEMmJihrW1JdPUMsTj1SKTt2YXIgST15LnNwbGl0KCItIik7aWYoIU4mJkkubGVuZ3RoPjEpcmV0dXJuIGIoSVswXSl9ZWxzZXt2YXIgQj15Lm5hbWU7a1tCXT15LE49Qn1yZXR1cm4hVCYmTiYmKF89TiksTnx8IVQmJl99LGo9ZnVuY3Rpb24oYix5KXtpZihNKGIpKXJldHVybiBiLmNsb25lKCk7dmFyIEM9dHlwZW9mIHk9PSJvYmplY3QiP3k6e307cmV0dXJuIEMuZGF0ZT1iLEMuYXJncz1hcmd1bWVudHMsbmV3IFYoQyl9LFU9eDtVLmw9UCxVLmk9TSxVLnc9ZnVuY3Rpb24oYix5KXtyZXR1cm4gaihiLHtsb2NhbGU6eS4kTCx1dGM6eS4kdSx4OnkuJHgsJG9mZnNldDp5LiRvZmZzZXR9KX07dmFyIFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKEMpe3RoaXMuJEw9UChDLmxvY2FsZSxudWxsLCEwKSx0aGlzLnBhcnNlKEMpLHRoaXMuJHg9dGhpcy4keHx8Qy54fHx7fSx0aGlzW0FdPSEwfXZhciB5PWIucHJvdG90eXBlO3JldHVybiB5LnBhcnNlPWZ1bmN0aW9uKEMpe3RoaXMuJGQ9ZnVuY3Rpb24oVCl7dmFyIE49VC5kYXRlLFI9VC51dGM7aWYoTj09PW51bGwpcmV0dXJuIG5ldyBEYXRlKE5hTik7aWYoVS51KE4pKXJldHVybiBuZXcgRGF0ZTtpZihOIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUoTik7aWYodHlwZW9mIE49PSJzdHJpbmciJiYhL1okL2kudGVzdChOKSl7dmFyIEk9Ti5tYXRjaCh3KTtpZihJKXt2YXIgQj1JWzJdLTF8fDAsUz0oSVs3XXx8IjAiKS5zdWJzdHJpbmcoMCwzKTtyZXR1cm4gUj9uZXcgRGF0ZShEYXRlLlVUQyhJWzFdLEIsSVszXXx8MSxJWzRdfHwwLElbNV18fDAsSVs2XXx8MCxTKSk6bmV3IERhdGUoSVsxXSxCLElbM118fDEsSVs0XXx8MCxJWzVdfHwwLElbNl18fDAsUyl9fXJldHVybiBuZXcgRGF0ZShOKX0oQyksdGhpcy5pbml0KCl9LHkuaW5pdD1mdW5jdGlvbigpe3ZhciBDPXRoaXMuJGQ7dGhpcy4keT1DLmdldEZ1bGxZZWFyKCksdGhpcy4kTT1DLmdldE1vbnRoKCksdGhpcy4kRD1DLmdldERhdGUoKSx0aGlzLiRXPUMuZ2V0RGF5KCksdGhpcy4kSD1DLmdldEhvdXJzKCksdGhpcy4kbT1DLmdldE1pbnV0ZXMoKSx0aGlzLiRzPUMuZ2V0U2Vjb25kcygpLHRoaXMuJG1zPUMuZ2V0TWlsbGlzZWNvbmRzKCl9LHkuJHV0aWxzPWZ1bmN0aW9uKCl7cmV0dXJuIFV9LHkuaXNWYWxpZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRkLnRvU3RyaW5nKCkhPT1tfSx5LmlzU2FtZT1mdW5jdGlvbihDLFQpe3ZhciBOPWooQyk7cmV0dXJuIHRoaXMuc3RhcnRPZihUKTw9TiYmTjw9dGhpcy5lbmRPZihUKX0seS5pc0FmdGVyPWZ1bmN0aW9uKEMsVCl7cmV0dXJuIGooQyk8dGhpcy5zdGFydE9mKFQpfSx5LmlzQmVmb3JlPWZ1bmN0aW9uKEMsVCl7cmV0dXJuIHRoaXMuZW5kT2YoVCk8aihDKX0seS4kZz1mdW5jdGlvbihDLFQsTil7cmV0dXJuIFUudShDKT90aGlzW1RdOnRoaXMuc2V0KE4sQyl9LHkudW5peD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29yKHRoaXMudmFsdWVPZigpLzFlMyl9LHkudmFsdWVPZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRkLmdldFRpbWUoKX0seS5zdGFydE9mPWZ1bmN0aW9uKEMsVCl7dmFyIE49dGhpcyxSPSEhVS51KFQpfHxULEk9VS5wKEMpLEI9ZnVuY3Rpb24oaGUsU2Upe3ZhciBLPVUudyhOLiR1P0RhdGUuVVRDKE4uJHksU2UsaGUpOm5ldyBEYXRlKE4uJHksU2UsaGUpLE4pO3JldHVybiBSP0s6Sy5lbmRPZihsKX0sUz1mdW5jdGlvbihoZSxTZSl7cmV0dXJuIFUudyhOLnRvRGF0ZSgpW2hlXS5hcHBseShOLnRvRGF0ZSgicyIpLChSP1swLDAsMCwwXTpbMjMsNTksNTksOTk5XSkuc2xpY2UoU2UpKSxOKX0sej10aGlzLiRXLFE9dGhpcy4kTSxyZT10aGlzLiRELEo9InNldCIrKHRoaXMuJHU/IlVUQyI6IiIpO3N3aXRjaChJKXtjYXNlIHA6cmV0dXJuIFI/QigxLDApOkIoMzEsMTEpO2Nhc2UgdTpyZXR1cm4gUj9CKDEsUSk6QigwLFErMSk7Y2FzZSBkOnZhciBlZT10aGlzLiRsb2NhbGUoKS53ZWVrU3RhcnR8fDAsdGU9KHo8ZWU/eis3OnopLWVlO3JldHVybiBCKFI/cmUtdGU6cmUrKDYtdGUpLFEpO2Nhc2UgbDpjYXNlIGY6cmV0dXJuIFMoSisiSG91cnMiLDApO2Nhc2UgYzpyZXR1cm4gUyhKKyJNaW51dGVzIiwxKTtjYXNlIGE6cmV0dXJuIFMoSisiU2Vjb25kcyIsMik7Y2FzZSBvOnJldHVybiBTKEorIk1pbGxpc2Vjb25kcyIsMyk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5jbG9uZSgpfX0seS5lbmRPZj1mdW5jdGlvbihDKXtyZXR1cm4gdGhpcy5zdGFydE9mKEMsITEpfSx5LiRzZXQ9ZnVuY3Rpb24oQyxUKXt2YXIgTixSPVUucChDKSxJPSJzZXQiKyh0aGlzLiR1PyJVVEMiOiIiKSxCPShOPXt9LE5bbF09SSsiRGF0ZSIsTltmXT1JKyJEYXRlIixOW3VdPUkrIk1vbnRoIixOW3BdPUkrIkZ1bGxZZWFyIixOW2NdPUkrIkhvdXJzIixOW2FdPUkrIk1pbnV0ZXMiLE5bb109SSsiU2Vjb25kcyIsTltpXT1JKyJNaWxsaXNlY29uZHMiLE4pW1JdLFM9Uj09PWw/dGhpcy4kRCsoVC10aGlzLiRXKTpUO2lmKFI9PT11fHxSPT09cCl7dmFyIHo9dGhpcy5jbG9uZSgpLnNldChmLDEpO3ouJGRbQl0oUyksei5pbml0KCksdGhpcy4kZD16LnNldChmLE1hdGgubWluKHRoaXMuJEQsei5kYXlzSW5Nb250aCgpKSkuJGR9ZWxzZSBCJiZ0aGlzLiRkW0JdKFMpO3JldHVybiB0aGlzLmluaXQoKSx0aGlzfSx5LnNldD1mdW5jdGlvbihDLFQpe3JldHVybiB0aGlzLmNsb25lKCkuJHNldChDLFQpfSx5LmdldD1mdW5jdGlvbihDKXtyZXR1cm4gdGhpc1tVLnAoQyldKCl9LHkuYWRkPWZ1bmN0aW9uKEMsVCl7dmFyIE4sUj10aGlzO0M9TnVtYmVyKEMpO3ZhciBJPVUucChUKSxCPWZ1bmN0aW9uKFEpe3ZhciByZT1qKFIpO3JldHVybiBVLncocmUuZGF0ZShyZS5kYXRlKCkrTWF0aC5yb3VuZChRKkMpKSxSKX07aWYoST09PXUpcmV0dXJuIHRoaXMuc2V0KHUsdGhpcy4kTStDKTtpZihJPT09cClyZXR1cm4gdGhpcy5zZXQocCx0aGlzLiR5K0MpO2lmKEk9PT1sKXJldHVybiBCKDEpO2lmKEk9PT1kKXJldHVybiBCKDcpO3ZhciBTPShOPXt9LE5bYV09bixOW2NdPXMsTltvXT1yLE4pW0ldfHwxLHo9dGhpcy4kZC5nZXRUaW1lKCkrQypTO3JldHVybiBVLncoeix0aGlzKX0seS5zdWJ0cmFjdD1mdW5jdGlvbihDLFQpe3JldHVybiB0aGlzLmFkZCgtMSpDLFQpfSx5LmZvcm1hdD1mdW5jdGlvbihDKXt2YXIgVD10aGlzLE49dGhpcy4kbG9jYWxlKCk7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBOLmludmFsaWREYXRlfHxtO3ZhciBSPUN8fCJZWVlZLU1NLUREVEhIOm1tOnNzWiIsST1VLnoodGhpcyksQj10aGlzLiRILFM9dGhpcy4kbSx6PXRoaXMuJE0sUT1OLndlZWtkYXlzLHJlPU4ubW9udGhzLEo9Ti5tZXJpZGllbSxlZT1mdW5jdGlvbihTZSxLLFosbWUpe3JldHVybiBTZSYmKFNlW0tdfHxTZShULFIpKXx8WltLXS5zbGljZSgwLG1lKX0sdGU9ZnVuY3Rpb24oU2Upe3JldHVybiBVLnMoQiUxMnx8MTIsU2UsIjAiKX0saGU9Snx8ZnVuY3Rpb24oU2UsSyxaKXt2YXIgbWU9U2U8MTI/IkFNIjoiUE0iO3JldHVybiBaP21lLnRvTG93ZXJDYXNlKCk6bWV9O3JldHVybiBSLnJlcGxhY2UoZyxmdW5jdGlvbihTZSxLKXtyZXR1cm4gS3x8ZnVuY3Rpb24oWil7c3dpdGNoKFope2Nhc2UiWVkiOnJldHVybiBTdHJpbmcoVC4keSkuc2xpY2UoLTIpO2Nhc2UiWVlZWSI6cmV0dXJuIFUucyhULiR5LDQsIjAiKTtjYXNlIk0iOnJldHVybiB6KzE7Y2FzZSJNTSI6cmV0dXJuIFUucyh6KzEsMiwiMCIpO2Nhc2UiTU1NIjpyZXR1cm4gZWUoTi5tb250aHNTaG9ydCx6LHJlLDMpO2Nhc2UiTU1NTSI6cmV0dXJuIGVlKHJlLHopO2Nhc2UiRCI6cmV0dXJuIFQuJEQ7Y2FzZSJERCI6cmV0dXJuIFUucyhULiRELDIsIjAiKTtjYXNlImQiOnJldHVybiBTdHJpbmcoVC4kVyk7Y2FzZSJkZCI6cmV0dXJuIGVlKE4ud2Vla2RheXNNaW4sVC4kVyxRLDIpO2Nhc2UiZGRkIjpyZXR1cm4gZWUoTi53ZWVrZGF5c1Nob3J0LFQuJFcsUSwzKTtjYXNlImRkZGQiOnJldHVybiBRW1QuJFddO2Nhc2UiSCI6cmV0dXJuIFN0cmluZyhCKTtjYXNlIkhIIjpyZXR1cm4gVS5zKEIsMiwiMCIpO2Nhc2UiaCI6cmV0dXJuIHRlKDEpO2Nhc2UiaGgiOnJldHVybiB0ZSgyKTtjYXNlImEiOnJldHVybiBoZShCLFMsITApO2Nhc2UiQSI6cmV0dXJuIGhlKEIsUywhMSk7Y2FzZSJtIjpyZXR1cm4gU3RyaW5nKFMpO2Nhc2UibW0iOnJldHVybiBVLnMoUywyLCIwIik7Y2FzZSJzIjpyZXR1cm4gU3RyaW5nKFQuJHMpO2Nhc2Uic3MiOnJldHVybiBVLnMoVC4kcywyLCIwIik7Y2FzZSJTU1MiOnJldHVybiBVLnMoVC4kbXMsMywiMCIpO2Nhc2UiWiI6cmV0dXJuIEl9cmV0dXJuIG51bGx9KFNlKXx8SS5yZXBsYWNlKCI6IiwiIil9KX0seS51dGNPZmZzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gMTUqLU1hdGgucm91bmQodGhpcy4kZC5nZXRUaW1lem9uZU9mZnNldCgpLzE1KX0seS5kaWZmPWZ1bmN0aW9uKEMsVCxOKXt2YXIgUixJPXRoaXMsQj1VLnAoVCksUz1qKEMpLHo9KFMudXRjT2Zmc2V0KCktdGhpcy51dGNPZmZzZXQoKSkqbixRPXRoaXMtUyxyZT1mdW5jdGlvbigpe3JldHVybiBVLm0oSSxTKX07c3dpdGNoKEIpe2Nhc2UgcDpSPXJlKCkvMTI7YnJlYWs7Y2FzZSB1OlI9cmUoKTticmVhaztjYXNlIGg6Uj1yZSgpLzM7YnJlYWs7Y2FzZSBkOlI9KFEteikvNjA0OGU1O2JyZWFrO2Nhc2UgbDpSPShRLXopLzg2NGU1O2JyZWFrO2Nhc2UgYzpSPVEvczticmVhaztjYXNlIGE6Uj1RL247YnJlYWs7Y2FzZSBvOlI9US9yO2JyZWFrO2RlZmF1bHQ6Uj1RfXJldHVybiBOP1I6VS5hKFIpfSx5LmRheXNJbk1vbnRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5kT2YodSkuJER9LHkuJGxvY2FsZT1mdW5jdGlvbigpe3JldHVybiBrW3RoaXMuJExdfSx5LmxvY2FsZT1mdW5jdGlvbihDLFQpe2lmKCFDKXJldHVybiB0aGlzLiRMO3ZhciBOPXRoaXMuY2xvbmUoKSxSPVAoQyxULCEwKTtyZXR1cm4gUiYmKE4uJEw9UiksTn0seS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBVLncodGhpcy4kZCx0aGlzKX0seS50b0RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpfSx5LnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFsaWQoKT90aGlzLnRvSVNPU3RyaW5nKCk6bnVsbH0seS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRkLnRvSVNPU3RyaW5nKCl9LHkudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kZC50b1VUQ1N0cmluZygpfSxifSgpLEY9Vi5wcm90b3R5cGU7cmV0dXJuIGoucHJvdG90eXBlPUYsW1siJG1zIixpXSxbIiRzIixvXSxbIiRtIixhXSxbIiRIIixjXSxbIiRXIixsXSxbIiRNIix1XSxbIiR5IixwXSxbIiREIixmXV0uZm9yRWFjaChmdW5jdGlvbihiKXtGW2JbMV1dPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLiRnKHksYlswXSxiWzFdKX19KSxqLmV4dGVuZD1mdW5jdGlvbihiLHkpe3JldHVybiBiLiRpfHwoYih5LFYsaiksYi4kaT0hMCksan0sai5sb2NhbGU9UCxqLmlzRGF5anM9TSxqLnVuaXg9ZnVuY3Rpb24oYil7cmV0dXJuIGooMWUzKmIpfSxqLmVuPWtbX10sai5Mcz1rLGoucD17fSxqfSl9KE93KSksT3cuZXhwb3J0c312YXIgc0c9aUcoKTtjb25zdCBhaD16cyhzRyk7dmFyICR3PXtleHBvcnRzOnt9fSxvRz0kdy5leHBvcnRzLEM3O2Z1bmN0aW9uIGFHKCl7cmV0dXJuIEM3fHwoQzc9MSxmdW5jdGlvbih0LGUpeyhmdW5jdGlvbihyLG4pe3QuZXhwb3J0cz1uKCl9KShvRyxmdW5jdGlvbigpe3JldHVybntuYW1lOiJlbiIsd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLG1vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxvcmRpbmFsOmZ1bmN0aW9uKHIpe3ZhciBuPVsidGgiLCJzdCIsIm5kIiwicmQiXSxzPXIlMTAwO3JldHVybiJbIityKyhuWyhzLTIwKSUxMF18fG5bc118fG5bMF0pKyJdIn19fSl9KCR3KSksJHcuZXhwb3J0c312YXIgY0c9YUcoKTtjb25zdCBsRz16cyhjRyk7dmFyIE13PXtleHBvcnRzOnt9fSx1Rz1Ndy5leHBvcnRzLHg3O2Z1bmN0aW9uIGRHKCl7cmV0dXJuIHg3fHwoeDc9MSxmdW5jdGlvbih0LGUpeyhmdW5jdGlvbihyLG4pe3QuZXhwb3J0cz1uKCl9KSh1RyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihyLG4scyl7cj1yfHx7fTt2YXIgaT1uLnByb3RvdHlwZSxvPXtmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn07ZnVuY3Rpb24gYShsLGQsdSxoKXtyZXR1cm4gaS5mcm9tVG9CYXNlKGwsZCx1LGgpfXMuZW4ucmVsYXRpdmVUaW1lPW8saS5mcm9tVG9CYXNlPWZ1bmN0aW9uKGwsZCx1LGgscCl7Zm9yKHZhciBmLG0sdyxnPXUuJGxvY2FsZSgpLnJlbGF0aXZlVGltZXx8byx2PXIudGhyZXNob2xkc3x8W3tsOiJzIixyOjQ0LGQ6InNlY29uZCJ9LHtsOiJtIixyOjg5fSx7bDoibW0iLHI6NDQsZDoibWludXRlIn0se2w6ImgiLHI6ODl9LHtsOiJoaCIscjoyMSxkOiJob3VyIn0se2w6ImQiLHI6MzV9LHtsOiJkZCIscjoyNSxkOiJkYXkifSx7bDoiTSIscjo0NX0se2w6Ik1NIixyOjEwLGQ6Im1vbnRoIn0se2w6InkiLHI6MTd9LHtsOiJ5eSIsZDoieWVhciJ9XSxFPXYubGVuZ3RoLHg9MDt4PEU7eCs9MSl7dmFyIF89dlt4XTtfLmQmJihmPWg/cyhsKS5kaWZmKHUsXy5kLCEwKTp1LmRpZmYobCxfLmQsITApKTt2YXIgaz0oci5yb3VuZGluZ3x8TWF0aC5yb3VuZCkoTWF0aC5hYnMoZikpO2lmKHc9Zj4wLGs8PV8ucnx8IV8ucil7azw9MSYmeD4wJiYoXz12W3gtMV0pO3ZhciBBPWdbXy5sXTtwJiYoaz1wKCIiK2spKSxtPXR5cGVvZiBBPT0ic3RyaW5nIj9BLnJlcGxhY2UoIiVkIixrKTpBKGssZCxfLmwsdyk7YnJlYWt9fWlmKGQpcmV0dXJuIG07dmFyIE09dz9nLmZ1dHVyZTpnLnBhc3Q7cmV0dXJuIHR5cGVvZiBNPT0iZnVuY3Rpb24iP00obSk6TS5yZXBsYWNlKCIlcyIsbSl9LGkudG89ZnVuY3Rpb24obCxkKXtyZXR1cm4gYShsLGQsdGhpcywhMCl9LGkuZnJvbT1mdW5jdGlvbihsLGQpe3JldHVybiBhKGwsZCx0aGlzKX07dmFyIGM9ZnVuY3Rpb24obCl7cmV0dXJuIGwuJHU/cy51dGMoKTpzKCl9O2kudG9Ob3c9ZnVuY3Rpb24obCl7cmV0dXJuIHRoaXMudG8oYyh0aGlzKSxsKX0saS5mcm9tTm93PWZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmZyb20oYyh0aGlzKSxsKX19fSl9KE13KSksTXcuZXhwb3J0c312YXIgaEc9ZEcoKTtjb25zdCBwRz16cyhoRyk7dmFyIER3PXtleHBvcnRzOnt9fSxmRz1Edy5leHBvcnRzLF83O2Z1bmN0aW9uIG1HKCl7cmV0dXJuIF83fHwoXzc9MSxmdW5jdGlvbih0LGUpeyhmdW5jdGlvbihyLG4pe3QuZXhwb3J0cz1uKCl9KShmRyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihyLG4scyl7cy51cGRhdGVMb2NhbGU9ZnVuY3Rpb24oaSxvKXt2YXIgYT1zLkxzW2ldO2lmKGEpcmV0dXJuKG8/T2JqZWN0LmtleXMobyk6W10pLmZvckVhY2goZnVuY3Rpb24oYyl7YVtjXT1vW2NdfSksYX19fSl9KER3KSksRHcuZXhwb3J0c312YXIgZ0c9bUcoKTtjb25zdCB3Rz16cyhnRyk7YWguZXh0ZW5kKHBHKTthaC5leHRlbmQod0cpO2NvbnN0IGJHPXsuLi5sRyxuYW1lOiJlbi13ZWIzLW1vZGFsIixyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiJWQgc2VjIixtOiIxIG1pbiIsbW06IiVkIG1pbiIsaDoiMSBociIsaGg6IiVkIGhycyIsZDoiMSBkIixkZDoiJWQgZCIsTToiMSBtbyIsTU06IiVkIG1vIix5OiIxIHlyIix5eToiJWQgeXIifX0seUc9WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdO2FoLmxvY2FsZSgiZW4td2ViMy1tb2RhbCIsYkcpO2NvbnN0IGxiPXtnZXRNb250aE5hbWVCeUluZGV4KHQpe3JldHVybiB5R1t0XX0sZ2V0WWVhcih0PW5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSl7cmV0dXJuIGFoKHQpLnllYXIoKX0sZ2V0UmVsYXRpdmVEYXRlRnJvbU5vdyh0KXtyZXR1cm4gYWgodCkubG9jYWxlKCJlbi13ZWIzLW1vZGFsIikuZnJvbU5vdyghMCl9LGZvcm1hdERhdGUodCxlPSJERCBNTU0iKXtyZXR1cm4gYWgodCkuZm9ybWF0KGUpfX07dmFyIGs3PXt9O2NvbnN0IHllPXtXQ19OQU1FX1NVRkZJWDoiLnJlb3duLmlkIixXQ19OQU1FX1NVRkZJWF9MRUdBQ1k6Ii53Y24uaWQiLEJMT0NLQ0hBSU5fQVBJX1JQQ19VUkw6Imh0dHBzOi8vcnBjLndhbGxldGNvbm5lY3Qub3JnIixQVUxTRV9BUElfVVJMOiJodHRwczovL3B1bHNlLndhbGxldGNvbm5lY3Qub3JnIixXM01fQVBJX1VSTDoiaHR0cHM6Ly9hcGkud2ViM21vZGFsLm9yZyIsQ09OTkVDVE9SX0lEOntXQUxMRVRfQ09OTkVDVDoid2FsbGV0Q29ubmVjdCIsSU5KRUNURUQ6ImluamVjdGVkIixXQUxMRVRfU1RBTkRBUkQ6ImFubm91bmNlZCIsQ09JTkJBU0U6ImNvaW5iYXNlV2FsbGV0IixDT0lOQkFTRV9TREs6ImNvaW5iYXNlV2FsbGV0U0RLIixTQUZFOiJzYWZlIixMRURHRVI6ImxlZGdlciIsT0tYOiJva3giLEVJUDY5NjM6ImVpcDY5NjMiLEFVVEg6IklEX0FVVEgifSxDT05ORUNUT1JfTkFNRVM6e0FVVEg6IkF1dGgifSxBVVRIX0NPTk5FQ1RPUl9TVVBQT1JURURfQ0hBSU5TOlsiZWlwMTU1Iiwic29sYW5hIl0sTElNSVRTOntQRU5ESU5HX1RSQU5TQUNUSU9OUzo5OX0sQ0hBSU46e0VWTToiZWlwMTU1IixTT0xBTkE6InNvbGFuYSIsUE9MS0FET1Q6InBvbGthZG90IixCSVRDT0lOOiJiaXAxMjIifSxDSEFJTl9OQU1FX01BUDp7ZWlwMTU1OiJFVk0gTmV0d29ya3MiLHNvbGFuYToiU29sYW5hIixwb2xrYWRvdDoiUG9sa2Fkb3QiLGJpcDEyMjoiQml0Y29pbiIsY29zbW9zOiJDb3Ntb3MifSxBREFQVEVSX1RZUEVTOntCSVRDT0lOOiJiaXRjb2luIixTT0xBTkE6InNvbGFuYSIsV0FHTUk6IndhZ21pIixFVEhFUlM6ImV0aGVycyIsRVRIRVJTNToiZXRoZXJzNSJ9LFVTRFRfQ09OVFJBQ1RfQUREUkVTU0VTOlsiMHhkYWMxN2Y5NThkMmVlNTIzYTIyMDYyMDY5OTQ1OTdjMTNkODMxZWM3IiwiMHhjMjEzMmQwNWQzMWM5MTRhODdjNjYxMWMxMDc0OGFlYjA0YjU4ZThmIiwiMHg5NzAyMjMwYThlYTUzNjAxZjVjZDJkYzAwZmRiYzEzZDRkZjRhOGM3IiwiMHg5MTlDMWMyNjdCQzA2YTcwMzllMDNmY2MyZUY3Mzg1MjU3NjkxMDljIiwiMHg0ODA2NWZiQkUyNWY3MUM5MjgyZGRmNWUxY0Q2RDZBODg3NDgzRDVlIiwiMHg1NWQzOTgzMjZmOTkwNTlmRjc3NTQ4NTI0Njk5OTAyN0IzMTk3OTU1IiwiMHhmZDA4NmJjN2NkNWM0ODFkY2M5Yzg1ZWJlNDc4YTFjMGI2OWZjYmI5Il0sSFRUUF9TVEFUVVNfQ09ERVM6e1NFUlZJQ0VfVU5BVkFJTEFCTEU6NTAzLEZPUkJJRERFTjo0MDN9LFVOU1VQUE9SVEVEX05FVFdPUktfTkFNRToiVW5rbm93biBOZXR3b3JrIixTRUNVUkVfU0lURV9TREtfT1JJR0lOOih0eXBlb2YgcHJvY2VzczwidSImJnR5cGVvZiBrNzwidSI/azcuTkVYVF9QVUJMSUNfU0VDVVJFX1NJVEVfT1JJR0lOOnZvaWQgMCl8fCJodHRwczovL3NlY3VyZS53YWxsZXRjb25uZWN0Lm9yZyJ9LEYwPXtjYWlwTmV0d29ya0lkVG9OdW1iZXIodCl7cmV0dXJuIHQ/TnVtYmVyKHQuc3BsaXQoIjoiKVsxXSk6dm9pZCAwfSxwYXJzZUV2bUNoYWluSWQodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj90aGlzLmNhaXBOZXR3b3JrSWRUb051bWJlcih0KTp0fSxnZXROZXR3b3Jrc0J5TmFtZXNwYWNlKHQsZSl7cmV0dXJuIHQ/LmZpbHRlcihyPT5yLmNoYWluTmFtZXNwYWNlPT09ZSl8fFtdfSxnZXRGaXJzdE5ldHdvcmtCeU5hbWVzcGFjZSh0LGUpe3JldHVybiB0aGlzLmdldE5ldHdvcmtzQnlOYW1lc3BhY2UodCxlKVswXX0sZ2V0TmV0d29ya05hbWVCeUNhaXBOZXR3b3JrSWQodCxlKXtpZighZSlyZXR1cm47Y29uc3Qgcj10LmZpbmQocz0+cy5jYWlwTmV0d29ya0lkPT09ZSk7aWYocilyZXR1cm4gci5uYW1lO2NvbnN0W25dPWUuc3BsaXQoIjoiKTtyZXR1cm4geWUuQ0hBSU5fTkFNRV9NQVA/LltuXXx8dm9pZCAwfX07dmFyIHZHPTIwLEVHPTEsYXA9MWU2LENHPTFlNix4Rz0tNyxfRz0yMSxrRz0hMSxvMT0iW2JpZy5qc10gIixLdT1vMSsiSW52YWxpZCAiLFR5PUt1KyJkZWNpbWFsIHBsYWNlcyIsU0c9S3UrInJvdW5kaW5nIG1vZGUiLFAkPW8xKyJEaXZpc2lvbiBieSB6ZXJvIixHdD17fSxibz12b2lkIDAsQUc9L14tPyhcZCsoXC5cZCopP3xcLlxkKykoZVsrLV0/XGQrKT8kL2k7ZnVuY3Rpb24gTyQoKXtmdW5jdGlvbiB0KGUpe3ZhciByPXRoaXM7aWYoIShyIGluc3RhbmNlb2YgdCkpcmV0dXJuIGU9PT1ibz9PJCgpOm5ldyB0KGUpO2lmKGUgaW5zdGFuY2VvZiB0KXIucz1lLnMsci5lPWUuZSxyLmM9ZS5jLnNsaWNlKCk7ZWxzZXtpZih0eXBlb2YgZSE9InN0cmluZyIpe2lmKHQuc3RyaWN0PT09ITAmJnR5cGVvZiBlIT0iYmlnaW50Iil0aHJvdyBUeXBlRXJyb3IoS3UrInZhbHVlIik7ZT1lPT09MCYmMS9lPDA/Ii0wIjpTdHJpbmcoZSl9VEcocixlKX1yLmNvbnN0cnVjdG9yPXR9cmV0dXJuIHQucHJvdG90eXBlPUd0LHQuRFA9dkcsdC5STT1FRyx0Lk5FPXhHLHQuUEU9X0csdC5zdHJpY3Q9a0csdC5yb3VuZERvd249MCx0LnJvdW5kSGFsZlVwPTEsdC5yb3VuZEhhbGZFdmVuPTIsdC5yb3VuZFVwPTMsdH1mdW5jdGlvbiBURyh0LGUpe3ZhciByLG4scztpZighQUcudGVzdChlKSl0aHJvdyBFcnJvcihLdSsibnVtYmVyIik7Zm9yKHQucz1lLmNoYXJBdCgwKT09Ii0iPyhlPWUuc2xpY2UoMSksLTEpOjEsKHI9ZS5pbmRleE9mKCIuIikpPi0xJiYoZT1lLnJlcGxhY2UoIi4iLCIiKSksKG49ZS5zZWFyY2goL2UvaSkpPjA/KHI8MCYmKHI9bikscis9K2Uuc2xpY2UobisxKSxlPWUuc3Vic3RyaW5nKDAsbikpOnI8MCYmKHI9ZS5sZW5ndGgpLHM9ZS5sZW5ndGgsbj0wO248cyYmZS5jaGFyQXQobik9PSIwIjspKytuO2lmKG49PXMpdC5jPVt0LmU9MF07ZWxzZXtmb3IoO3M+MCYmZS5jaGFyQXQoLS1zKT09IjAiOyk7Zm9yKHQuZT1yLW4tMSx0LmM9W10scj0wO248PXM7KXQuY1tyKytdPStlLmNoYXJBdChuKyspfXJldHVybiB0fWZ1bmN0aW9uIFp1KHQsZSxyLG4pe3ZhciBzPXQuYztpZihyPT09Ym8mJihyPXQuY29uc3RydWN0b3IuUk0pLHIhPT0wJiZyIT09MSYmciE9PTImJnIhPT0zKXRocm93IEVycm9yKFNHKTtpZihlPDEpbj1yPT09MyYmKG58fCEhc1swXSl8fGU9PT0wJiYocj09PTEmJnNbMF0+PTV8fHI9PT0yJiYoc1swXT41fHxzWzBdPT09NSYmKG58fHNbMV0hPT1ibykpKSxzLmxlbmd0aD0xLG4/KHQuZT10LmUtZSsxLHNbMF09MSk6c1swXT10LmU9MDtlbHNlIGlmKGU8cy5sZW5ndGgpe2lmKG49cj09PTEmJnNbZV0+PTV8fHI9PT0yJiYoc1tlXT41fHxzW2VdPT09NSYmKG58fHNbZSsxXSE9PWJvfHxzW2UtMV0mMSkpfHxyPT09MyYmKG58fCEhc1swXSkscy5sZW5ndGg9ZSxuKXtmb3IoOysrc1stLWVdPjk7KWlmKHNbZV09MCxlPT09MCl7Kyt0LmUscy51bnNoaWZ0KDEpO2JyZWFrfX1mb3IoZT1zLmxlbmd0aDshc1stLWVdOylzLnBvcCgpfXJldHVybiB0fWZ1bmN0aW9uIFl1KHQsZSxyKXt2YXIgbj10LmUscz10LmMuam9pbigiIiksaT1zLmxlbmd0aDtpZihlKXM9cy5jaGFyQXQoMCkrKGk+MT8iLiIrcy5zbGljZSgxKToiIikrKG48MD8iZSI6ImUrIikrbjtlbHNlIGlmKG48MCl7Zm9yKDsrK247KXM9IjAiK3M7cz0iMC4iK3N9ZWxzZSBpZihuPjApaWYoKytuPmkpZm9yKG4tPWk7bi0tOylzKz0iMCI7ZWxzZSBuPGkmJihzPXMuc2xpY2UoMCxuKSsiLiIrcy5zbGljZShuKSk7ZWxzZSBpPjEmJihzPXMuY2hhckF0KDApKyIuIitzLnNsaWNlKDEpKTtyZXR1cm4gdC5zPDAmJnI/Ii0iK3M6c31HdC5hYnM9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtyZXR1cm4gdC5zPTEsdH07R3QuY21wPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dGhpcyxuPXIuYyxzPSh0PW5ldyByLmNvbnN0cnVjdG9yKHQpKS5jLGk9ci5zLG89dC5zLGE9ci5lLGM9dC5lO2lmKCFuWzBdfHwhc1swXSlyZXR1cm4gblswXT9pOnNbMF0/LW86MDtpZihpIT1vKXJldHVybiBpO2lmKGU9aTwwLGEhPWMpcmV0dXJuIGE+Y15lPzE6LTE7Zm9yKG89KGE9bi5sZW5ndGgpPChjPXMubGVuZ3RoKT9hOmMsaT0tMTsrK2k8bzspaWYobltpXSE9c1tpXSlyZXR1cm4gbltpXT5zW2ldXmU/MTotMTtyZXR1cm4gYT09Yz8wOmE+Y15lPzE6LTF9O0d0LmRpdj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLHI9ZS5jb25zdHJ1Y3RvcixuPWUuYyxzPSh0PW5ldyByKHQpKS5jLGk9ZS5zPT10LnM/MTotMSxvPXIuRFA7aWYobyE9PX5+b3x8bzwwfHxvPmFwKXRocm93IEVycm9yKFR5KTtpZighc1swXSl0aHJvdyBFcnJvcihQJCk7aWYoIW5bMF0pcmV0dXJuIHQucz1pLHQuYz1bdC5lPTBdLHQ7dmFyIGEsYyxsLGQsdSxoPXMuc2xpY2UoKSxwPWE9cy5sZW5ndGgsZj1uLmxlbmd0aCxtPW4uc2xpY2UoMCxhKSx3PW0ubGVuZ3RoLGc9dCx2PWcuYz1bXSxFPTAseD1vKyhnLmU9ZS5lLXQuZSkrMTtmb3IoZy5zPWksaT14PDA/MDp4LGgudW5zaGlmdCgwKTt3Kys8YTspbS5wdXNoKDApO2Rve2ZvcihsPTA7bDwxMDtsKyspe2lmKGEhPSh3PW0ubGVuZ3RoKSlkPWE+dz8xOi0xO2Vsc2UgZm9yKHU9LTEsZD0wOysrdTxhOylpZihzW3VdIT1tW3VdKXtkPXNbdV0+bVt1XT8xOi0xO2JyZWFrfWlmKGQ8MCl7Zm9yKGM9dz09YT9zOmg7dzspe2lmKG1bLS13XTxjW3ddKXtmb3IodT13O3UmJiFtWy0tdV07KW1bdV09OTstLW1bdV0sbVt3XSs9MTB9bVt3XS09Y1t3XX1mb3IoOyFtWzBdOyltLnNoaWZ0KCl9ZWxzZSBicmVha312W0UrK109ZD9sOisrbCxtWzBdJiZkP21bd109bltwXXx8MDptPVtuW3BdXX13aGlsZSgocCsrPGZ8fG1bMF0hPT1ibykmJmktLSk7cmV0dXJuIXZbMF0mJkUhPTEmJih2LnNoaWZ0KCksZy5lLS0seC0tKSxFPngmJlp1KGcseCxyLlJNLG1bMF0hPT1ibyksZ307R3QuZXE9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wKHQpPT09MH07R3QuZ3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wKHQpPjB9O0d0Lmd0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXAodCk+LTF9O0d0Lmx0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcCh0KTwwfTtHdC5sdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wKHQpPDF9O0d0Lm1pbnVzPUd0LnN1Yj1mdW5jdGlvbih0KXt2YXIgZSxyLG4scyxpPXRoaXMsbz1pLmNvbnN0cnVjdG9yLGE9aS5zLGM9KHQ9bmV3IG8odCkpLnM7aWYoYSE9YylyZXR1cm4gdC5zPS1jLGkucGx1cyh0KTt2YXIgbD1pLmMuc2xpY2UoKSxkPWkuZSx1PXQuYyxoPXQuZTtpZighbFswXXx8IXVbMF0pcmV0dXJuIHVbMF0/dC5zPS1jOmxbMF0/dD1uZXcgbyhpKTp0LnM9MSx0O2lmKGE9ZC1oKXtmb3IoKHM9YTwwKT8oYT0tYSxuPWwpOihoPWQsbj11KSxuLnJldmVyc2UoKSxjPWE7Yy0tOyluLnB1c2goMCk7bi5yZXZlcnNlKCl9ZWxzZSBmb3Iocj0oKHM9bC5sZW5ndGg8dS5sZW5ndGgpP2w6dSkubGVuZ3RoLGE9Yz0wO2M8cjtjKyspaWYobFtjXSE9dVtjXSl7cz1sW2NdPHVbY107YnJlYWt9aWYocyYmKG49bCxsPXUsdT1uLHQucz0tdC5zKSwoYz0ocj11Lmxlbmd0aCktKGU9bC5sZW5ndGgpKT4wKWZvcig7Yy0tOylsW2UrK109MDtmb3IoYz1lO3I+YTspe2lmKGxbLS1yXTx1W3JdKXtmb3IoZT1yO2UmJiFsWy0tZV07KWxbZV09OTstLWxbZV0sbFtyXSs9MTB9bFtyXS09dVtyXX1mb3IoO2xbLS1jXT09PTA7KWwucG9wKCk7Zm9yKDtsWzBdPT09MDspbC5zaGlmdCgpLC0taDtyZXR1cm4gbFswXXx8KHQucz0xLGw9W2g9MF0pLHQuYz1sLHQuZT1oLHR9O0d0Lm1vZD1mdW5jdGlvbih0KXt2YXIgZSxyPXRoaXMsbj1yLmNvbnN0cnVjdG9yLHM9ci5zLGk9KHQ9bmV3IG4odCkpLnM7aWYoIXQuY1swXSl0aHJvdyBFcnJvcihQJCk7cmV0dXJuIHIucz10LnM9MSxlPXQuY21wKHIpPT0xLHIucz1zLHQucz1pLGU/bmV3IG4ocik6KHM9bi5EUCxpPW4uUk0sbi5EUD1uLlJNPTAscj1yLmRpdih0KSxuLkRQPXMsbi5STT1pLHRoaXMubWludXMoci50aW1lcyh0KSkpfTtHdC5uZWc9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtyZXR1cm4gdC5zPS10LnMsdH07R3QucGx1cz1HdC5hZGQ9ZnVuY3Rpb24odCl7dmFyIGUscixuLHM9dGhpcyxpPXMuY29uc3RydWN0b3I7aWYodD1uZXcgaSh0KSxzLnMhPXQucylyZXR1cm4gdC5zPS10LnMscy5taW51cyh0KTt2YXIgbz1zLmUsYT1zLmMsYz10LmUsbD10LmM7aWYoIWFbMF18fCFsWzBdKXJldHVybiBsWzBdfHwoYVswXT90PW5ldyBpKHMpOnQucz1zLnMpLHQ7aWYoYT1hLnNsaWNlKCksZT1vLWMpe2ZvcihlPjA/KGM9byxuPWwpOihlPS1lLG49YSksbi5yZXZlcnNlKCk7ZS0tOyluLnB1c2goMCk7bi5yZXZlcnNlKCl9Zm9yKGEubGVuZ3RoLWwubGVuZ3RoPDAmJihuPWwsbD1hLGE9biksZT1sLmxlbmd0aCxyPTA7ZTthW2VdJT0xMClyPShhWy0tZV09YVtlXStsW2VdK3IpLzEwfDA7Zm9yKHImJihhLnVuc2hpZnQociksKytjKSxlPWEubGVuZ3RoO2FbLS1lXT09PTA7KWEucG9wKCk7cmV0dXJuIHQuYz1hLHQuZT1jLHR9O0d0LnBvdz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLHI9bmV3IGUuY29uc3RydWN0b3IoIjEiKSxuPXIscz10PDA7aWYodCE9PX5+dHx8dDwtMWU2fHx0PkNHKXRocm93IEVycm9yKEt1KyJleHBvbmVudCIpO2ZvcihzJiYodD0tdCk7dCYxJiYobj1uLnRpbWVzKGUpKSx0Pj49MSwhIXQ7KWU9ZS50aW1lcyhlKTtyZXR1cm4gcz9yLmRpdihuKTpufTtHdC5wcmVjPWZ1bmN0aW9uKHQsZSl7aWYodCE9PX5+dHx8dDwxfHx0PmFwKXRocm93IEVycm9yKEt1KyJwcmVjaXNpb24iKTtyZXR1cm4gWnUobmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyksdCxlKX07R3Qucm91bmQ9ZnVuY3Rpb24odCxlKXtpZih0PT09Ym8pdD0wO2Vsc2UgaWYodCE9PX5+dHx8dDwtMWU2fHx0PmFwKXRocm93IEVycm9yKFR5KTtyZXR1cm4gWnUobmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyksdCt0aGlzLmUrMSxlKX07R3Quc3FydD1mdW5jdGlvbigpe3ZhciB0LGUscixuPXRoaXMscz1uLmNvbnN0cnVjdG9yLGk9bi5zLG89bi5lLGE9bmV3IHMoIjAuNSIpO2lmKCFuLmNbMF0pcmV0dXJuIG5ldyBzKG4pO2lmKGk8MCl0aHJvdyBFcnJvcihvMSsiTm8gc3F1YXJlIHJvb3QiKTtpPU1hdGguc3FydCgrWXUobiwhMCwhMCkpLGk9PT0wfHxpPT09MS8wPyhlPW4uYy5qb2luKCIiKSxlLmxlbmd0aCtvJjF8fChlKz0iMCIpLGk9TWF0aC5zcXJ0KGUpLG89KChvKzEpLzJ8MCktKG88MHx8byYxKSx0PW5ldyBzKChpPT0xLzA/IjVlIjooaT1pLnRvRXhwb25lbnRpYWwoKSkuc2xpY2UoMCxpLmluZGV4T2YoImUiKSsxKSkrbykpOnQ9bmV3IHMoaSsiIiksbz10LmUrKHMuRFArPTQpO2RvIHI9dCx0PWEudGltZXMoci5wbHVzKG4uZGl2KHIpKSk7d2hpbGUoci5jLnNsaWNlKDAsbykuam9pbigiIikhPT10LmMuc2xpY2UoMCxvKS5qb2luKCIiKSk7cmV0dXJuIFp1KHQsKHMuRFAtPTQpK3QuZSsxLHMuUk0pfTtHdC50aW1lcz1HdC5tdWw9ZnVuY3Rpb24odCl7dmFyIGUscj10aGlzLG49ci5jb25zdHJ1Y3RvcixzPXIuYyxpPSh0PW5ldyBuKHQpKS5jLG89cy5sZW5ndGgsYT1pLmxlbmd0aCxjPXIuZSxsPXQuZTtpZih0LnM9ci5zPT10LnM/MTotMSwhc1swXXx8IWlbMF0pcmV0dXJuIHQuYz1bdC5lPTBdLHQ7Zm9yKHQuZT1jK2wsbzxhJiYoZT1zLHM9aSxpPWUsbD1vLG89YSxhPWwpLGU9bmV3IEFycmF5KGw9bythKTtsLS07KWVbbF09MDtmb3IoYz1hO2MtLTspe2ZvcihhPTAsbD1vK2M7bD5jOylhPWVbbF0raVtjXSpzW2wtYy0xXSthLGVbbC0tXT1hJTEwLGE9YS8xMHwwO2VbbF09YX1mb3IoYT8rK3QuZTplLnNoaWZ0KCksYz1lLmxlbmd0aDshZVstLWNdOyllLnBvcCgpO3JldHVybiB0LmM9ZSx0fTtHdC50b0V4cG9uZW50aWFsPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxuPXIuY1swXTtpZih0IT09Ym8pe2lmKHQhPT1+fnR8fHQ8MHx8dD5hcCl0aHJvdyBFcnJvcihUeSk7Zm9yKHI9WnUobmV3IHIuY29uc3RydWN0b3IociksKyt0LGUpO3IuYy5sZW5ndGg8dDspci5jLnB1c2goMCl9cmV0dXJuIFl1KHIsITAsISFuKX07R3QudG9GaXhlZD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMsbj1yLmNbMF07aWYodCE9PWJvKXtpZih0IT09fn50fHx0PDB8fHQ+YXApdGhyb3cgRXJyb3IoVHkpO2ZvcihyPVp1KG5ldyByLmNvbnN0cnVjdG9yKHIpLHQrci5lKzEsZSksdD10K3IuZSsxO3IuYy5sZW5ndGg8dDspci5jLnB1c2goMCl9cmV0dXJuIFl1KHIsITEsISFuKX07R3RbU3ltYm9sLmZvcigibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20iKV09R3QudG9KU09OPUd0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuY29uc3RydWN0b3I7cmV0dXJuIFl1KHQsdC5lPD1lLk5FfHx0LmU+PWUuUEUsISF0LmNbMF0pfTtHdC50b051bWJlcj1mdW5jdGlvbigpe3ZhciB0PStZdSh0aGlzLCEwLCEwKTtpZih0aGlzLmNvbnN0cnVjdG9yLnN0cmljdD09PSEwJiYhdGhpcy5lcSh0LnRvU3RyaW5nKCkpKXRocm93IEVycm9yKG8xKyJJbXByZWNpc2UgY29udmVyc2lvbiIpO3JldHVybiB0fTtHdC50b1ByZWNpc2lvbj1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMsbj1yLmNvbnN0cnVjdG9yLHM9ci5jWzBdO2lmKHQhPT1ibyl7aWYodCE9PX5+dHx8dDwxfHx0PmFwKXRocm93IEVycm9yKEt1KyJwcmVjaXNpb24iKTtmb3Iocj1adShuZXcgbihyKSx0LGUpO3IuYy5sZW5ndGg8dDspci5jLnB1c2goMCl9cmV0dXJuIFl1KHIsdDw9ci5lfHxyLmU8PW4uTkV8fHIuZT49bi5QRSwhIXMpfTtHdC52YWx1ZU9mPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuY29uc3RydWN0b3I7aWYoZS5zdHJpY3Q9PT0hMCl0aHJvdyBFcnJvcihvMSsidmFsdWVPZiBkaXNhbGxvd2VkIik7cmV0dXJuIFl1KHQsdC5lPD1lLk5FfHx0LmU+PWUuUEUsITApfTt2YXIgUHA9TyQoKTtjb25zdCBOdD17YmlnTnVtYmVyKHQpe3JldHVybiB0P25ldyBQcCh0KTpuZXcgUHAoMCl9LG11bHRpcGx5KHQsZSl7aWYodD09PXZvaWQgMHx8ZT09PXZvaWQgMClyZXR1cm4gbmV3IFBwKDApO2NvbnN0IHI9bmV3IFBwKHQpLG49bmV3IFBwKGUpO3JldHVybiByLnRpbWVzKG4pfSxmb3JtYXROdW1iZXJUb0xvY2FsU3RyaW5nKHQsZT0yKXtyZXR1cm4gdD09PXZvaWQgMD8iMC4wMCI6dHlwZW9mIHQ9PSJudW1iZXIiP3QudG9Mb2NhbGVTdHJpbmcoImVuLVVTIix7bWF4aW11bUZyYWN0aW9uRGlnaXRzOmUsbWluaW11bUZyYWN0aW9uRGlnaXRzOmV9KTpwYXJzZUZsb2F0KHQpLnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIse21heGltdW1GcmFjdGlvbkRpZ2l0czplLG1pbmltdW1GcmFjdGlvbkRpZ2l0czplfSl9LHBhcnNlTG9jYWxTdHJpbmdUb051bWJlcih0KXtyZXR1cm4gdD09PXZvaWQgMD8wOnBhcnNlRmxvYXQodC5yZXBsYWNlKC8sL2d1LCIiKSl9fSxJRz17bnVtZXJpY0lucHV0S2V5RG93bih0LGUscil7Y29uc3Qgbj1bIkJhY2tzcGFjZSIsIk1ldGEiLCJDdHJsIiwiYSIsIkEiLCJjIiwiQyIsIngiLCJYIiwidiIsIlYiLCJBcnJvd0xlZnQiLCJBcnJvd1JpZ2h0IiwiVGFiIl0scz10Lm1ldGFLZXl8fHQuY3RybEtleSxpPXQua2V5LG89aS50b0xvY2FsZUxvd2VyQ2FzZSgpLGE9bz09PSJhIixjPW89PT0iYyIsbD1vPT09InYiLGQ9bz09PSJ4Iix1PWk9PT0iLCIsaD1pPT09Ii4iLHA9aT49IjAiJiZpPD0iOSI7IXMmJihhfHxjfHxsfHxkKSYmdC5wcmV2ZW50RGVmYXVsdCgpLGU9PT0iMCImJiF1JiYhaCYmaT09PSIwIiYmdC5wcmV2ZW50RGVmYXVsdCgpLGU9PT0iMCImJnAmJihyKGkpLHQucHJldmVudERlZmF1bHQoKSksKHV8fGgpJiYoZXx8KHIoIjAuIiksdC5wcmV2ZW50RGVmYXVsdCgpKSwoZT8uaW5jbHVkZXMoIi4iKXx8ZT8uaW5jbHVkZXMoIiwiKSkmJnQucHJldmVudERlZmF1bHQoKSksIXAmJiFuLmluY2x1ZGVzKGkpJiYhaCYmIXUmJnQucHJldmVudERlZmF1bHQoKX19LFJHPVt7dHlwZToiZnVuY3Rpb24iLG5hbWU6InRyYW5zZmVyIixzdGF0ZU11dGFiaWxpdHk6Im5vbnBheWFibGUiLGlucHV0czpbe25hbWU6Il90byIsdHlwZToiYWRkcmVzcyJ9LHtuYW1lOiJfdmFsdWUiLHR5cGU6InVpbnQyNTYifV0sb3V0cHV0czpbe25hbWU6IiIsdHlwZToiYm9vbCJ9XX0se3R5cGU6ImZ1bmN0aW9uIixuYW1lOiJ0cmFuc2ZlckZyb20iLHN0YXRlTXV0YWJpbGl0eToibm9ucGF5YWJsZSIsaW5wdXRzOlt7bmFtZToiX2Zyb20iLHR5cGU6ImFkZHJlc3MifSx7bmFtZToiX3RvIix0eXBlOiJhZGRyZXNzIn0se25hbWU6Il92YWx1ZSIsdHlwZToidWludDI1NiJ9XSxvdXRwdXRzOlt7bmFtZToiIix0eXBlOiJib29sIn1dfV0sTkc9W3t0eXBlOiJmdW5jdGlvbiIsbmFtZToiYXBwcm92ZSIsc3RhdGVNdXRhYmlsaXR5OiJub25wYXlhYmxlIixpbnB1dHM6W3tuYW1lOiJzcGVuZGVyIix0eXBlOiJhZGRyZXNzIn0se25hbWU6ImFtb3VudCIsdHlwZToidWludDI1NiJ9XSxvdXRwdXRzOlt7dHlwZToiYm9vbCJ9XX1dLFBHPVt7dHlwZToiZnVuY3Rpb24iLG5hbWU6InRyYW5zZmVyIixzdGF0ZU11dGFiaWxpdHk6Im5vbnBheWFibGUiLGlucHV0czpbe25hbWU6InJlY2lwaWVudCIsdHlwZToiYWRkcmVzcyJ9LHtuYW1lOiJhbW91bnQiLHR5cGU6InVpbnQyNTYifV0sb3V0cHV0czpbXX0se3R5cGU6ImZ1bmN0aW9uIixuYW1lOiJ0cmFuc2ZlckZyb20iLHN0YXRlTXV0YWJpbGl0eToibm9ucGF5YWJsZSIsaW5wdXRzOlt7bmFtZToic2VuZGVyIix0eXBlOiJhZGRyZXNzIn0se25hbWU6InJlY2lwaWVudCIsdHlwZToiYWRkcmVzcyJ9LHtuYW1lOiJhbW91bnQiLHR5cGU6InVpbnQyNTYifV0sb3V0cHV0czpbe25hbWU6IiIsdHlwZToiYm9vbCJ9XX1dLCQkPXtnZXRFUkMyMEFiaTp0PT55ZS5VU0RUX0NPTlRSQUNUX0FERFJFU1NFUy5pbmNsdWRlcyh0KT9QRzpSRyxnZXRTd2FwQWJpOigpPT5OR30sTSQ9e1VSTFM6e0ZBUToiaHR0cHM6Ly93YWxsZXRjb25uZWN0LmNvbS9mYXEifX0sWmk9e3ZhbGlkYXRlQ2FpcEFkZHJlc3ModCl7aWYodC5zcGxpdCgiOiIpPy5sZW5ndGghPT0zKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBDQUlQIEFkZHJlc3MiKTtyZXR1cm4gdH0scGFyc2VDYWlwQWRkcmVzcyh0KXtjb25zdCBlPXQuc3BsaXQoIjoiKTtpZihlLmxlbmd0aCE9PTMpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIENBSVAtMTAgYWRkcmVzczogJHt0fWApO2NvbnN0W3IsbixzXT1lO2lmKCFyfHwhbnx8IXMpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIENBSVAtMTAgYWRkcmVzczogJHt0fWApO3JldHVybntjaGFpbk5hbWVzcGFjZTpyLGNoYWluSWQ6bixhZGRyZXNzOnN9fSxwYXJzZUNhaXBOZXR3b3JrSWQodCl7Y29uc3QgZT10LnNwbGl0KCI6Iik7aWYoZS5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDQUlQLTIgbmV0d29yayBpZDogJHt0fWApO2NvbnN0W3Isbl09ZTtpZighcnx8IW4pdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIENBSVAtMiBuZXR3b3JrIGlkOiAke3R9YCk7cmV0dXJue2NoYWluTmFtZXNwYWNlOnIsY2hhaW5JZDpufX19LGh0PXtXQUxMRVRfSUQ6IkBhcHBraXQvd2FsbGV0X2lkIixXQUxMRVRfTkFNRToiQGFwcGtpdC93YWxsZXRfbmFtZSIsU09MQU5BX1dBTExFVDoiQGFwcGtpdC9zb2xhbmFfd2FsbGV0IixTT0xBTkFfQ0FJUF9DSEFJTjoiQGFwcGtpdC9zb2xhbmFfY2FpcF9jaGFpbiIsQUNUSVZFX0NBSVBfTkVUV09SS19JRDoiQGFwcGtpdC9hY3RpdmVfY2FpcF9uZXR3b3JrX2lkIixDT05ORUNURURfU09DSUFMOiJAYXBwa2l0L2Nvbm5lY3RlZF9zb2NpYWwiLENPTk5FQ1RFRF9TT0NJQUxfVVNFUk5BTUU6IkBhcHBraXQtd2FsbGV0L1NPQ0lBTF9VU0VSTkFNRSIsUkVDRU5UX1dBTExFVFM6IkBhcHBraXQvcmVjZW50X3dhbGxldHMiLERFRVBMSU5LX0NIT0lDRToiV0FMTEVUQ09OTkVDVF9ERUVQTElOS19DSE9JQ0UiLEFDVElWRV9OQU1FU1BBQ0U6IkBhcHBraXQvYWN0aXZlX25hbWVzcGFjZSIsQ09OTkVDVEVEX05BTUVTUEFDRVM6IkBhcHBraXQvY29ubmVjdGVkX25hbWVzcGFjZXMiLENPTk5FQ1RJT05fU1RBVFVTOiJAYXBwa2l0L2Nvbm5lY3Rpb25fc3RhdHVzIixTSVdYX0FVVEhfVE9LRU46IkBhcHBraXQvc2l3eC1hdXRoLXRva2VuIixTSVdYX05PTkNFX1RPS0VOOiJAYXBwa2l0L3Npd3gtbm9uY2UtdG9rZW4iLFRFTEVHUkFNX1NPQ0lBTF9QUk9WSURFUjoiQGFwcGtpdC9zb2NpYWxfcHJvdmlkZXIiLE5BVElWRV9CQUxBTkNFX0NBQ0hFOiJAYXBwa2l0L25hdGl2ZV9iYWxhbmNlX2NhY2hlIixQT1JURk9MSU9fQ0FDSEU6IkBhcHBraXQvcG9ydGZvbGlvX2NhY2hlIixFTlNfQ0FDSEU6IkBhcHBraXQvZW5zX2NhY2hlIixJREVOVElUWV9DQUNIRToiQGFwcGtpdC9pZGVudGl0eV9jYWNoZSIsUFJFRkVSUkVEX0FDQ09VTlRfVFlQRVM6IkBhcHBraXQvcHJlZmVycmVkX2FjY291bnRfdHlwZXMiLENPTk5FQ1RJT05TOiJAYXBwa2l0L2Nvbm5lY3Rpb25zIn07ZnVuY3Rpb24gZDIodCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJOYW1lc3BhY2UgaXMgcmVxdWlyZWQgZm9yIENPTk5FQ1RFRF9DT05ORUNUT1JfSUQiKTtyZXR1cm5gQGFwcGtpdC8ke3R9OmNvbm5lY3RlZF9jb25uZWN0b3JfaWRgfWNvbnN0IG90PXtzZXRJdGVtKHQsZSl7S2YoKSYmZSE9PXZvaWQgMCYmbG9jYWxTdG9yYWdlLnNldEl0ZW0odCxlKX0sZ2V0SXRlbSh0KXtpZihLZigpKXJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0KXx8dm9pZCAwfSxyZW1vdmVJdGVtKHQpe0tmKCkmJmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHQpfSxjbGVhcigpe0tmKCkmJmxvY2FsU3RvcmFnZS5jbGVhcigpfX07ZnVuY3Rpb24gS2YoKXtyZXR1cm4gdHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiBsb2NhbFN0b3JhZ2U8InUifWZ1bmN0aW9uIGdvKHQsZSl7cmV0dXJuIGU9PT0ibGlnaHQiP3siLS13M20tYWNjZW50Ijp0Py5bIi0tdzNtLWFjY2VudCJdfHwiaHNsYSgyMzEsIDEwMCUsIDcwJSwgMSkiLCItLXczbS1iYWNrZ3JvdW5kIjoiI2ZmZiJ9OnsiLS13M20tYWNjZW50Ijp0Py5bIi0tdzNtLWFjY2VudCJdfHwiaHNsYSgyMzAsIDEwMCUsIDY3JSwgMSkiLCItLXczbS1iYWNrZ3JvdW5kIjoiIzEyMTMxMyJ9fXZhciBTNz17fTtjb25zdCBoMj0odHlwZW9mIHByb2Nlc3M8InUiJiZ0eXBlb2YgUzc8InUiP1M3Lk5FWFRfUFVCTElDX1NFQ1VSRV9TSVRFX09SSUdJTjp2b2lkIDApfHwiaHR0cHM6Ly9zZWN1cmUud2FsbGV0Y29ubmVjdC5vcmciLEQkPVt7bGFiZWw6IkNvaW5iYXNlIixuYW1lOiJjb2luYmFzZSIsZmVlUmFuZ2U6IjEtMiUiLHVybDoiIixzdXBwb3J0ZWRDaGFpbnM6WyJlaXAxNTUiXX0se2xhYmVsOiJNZWxkLmlvIixuYW1lOiJtZWxkIixmZWVSYW5nZToiMS0yJSIsdXJsOiJodHRwczovL21lbGRjcnlwdG8uY29tIixzdXBwb3J0ZWRDaGFpbnM6WyJlaXAxNTUiLCJzb2xhbmEiXX1dLE9HPSJXWEVUTXVGVVFtcXF5Ykh1UmtTZ3h2OjI1QjhMSkhTZnBHNkxWalIyeXRVNUN3aDdaNFNjaDJvY29VIix0dD17Rk9VUl9NSU5VVEVTX01TOjI0ZTQsVEVOX1NFQ19NUzoxZTQsRklWRV9TRUNfTVM6NWUzLFRIUkVFX1NFQ19NUzozZTMsT05FX1NFQ19NUzoxZTMsU0VDVVJFX1NJVEU6aDIsU0VDVVJFX1NJVEVfREFTSEJPQVJEOmAke2gyfS9kYXNoYm9hcmRgLFNFQ1VSRV9TSVRFX0ZBVklDT046YCR7aDJ9L2ltYWdlcy9mYXZpY29uLnBuZ2AsUkVTVFJJQ1RFRF9USU1FWk9ORVM6WyJBU0lBL1NIQU5HSEFJIiwiQVNJQS9VUlVNUUkiLCJBU0lBL0NIT05HUUlORyIsIkFTSUEvSEFSQklOIiwiQVNJQS9LQVNIR0FSIiwiQVNJQS9NQUNBVSIsIkFTSUEvSE9OR19LT05HIiwiQVNJQS9NQUNBTyIsIkFTSUEvQkVJSklORyIsIkFTSUEvSEFSQklOIl0sV0NfQ09JTkJBU0VfUEFZX1NES19DSEFJTlM6WyJldGhlcmV1bSIsImFyYml0cnVtIiwicG9seWdvbiIsImJlcmFjaGFpbiIsImF2YWxhbmNoZS1jLWNoYWluIiwib3B0aW1pc20iLCJjZWxvIiwiYmFzZSJdLFdDX0NPSU5CQVNFX1BBWV9TREtfRkFMTEJBQ0tfQ0hBSU46ImV0aGVyZXVtIixXQ19DT0lOQkFTRV9QQVlfU0RLX0NIQUlOX05BTUVfTUFQOntFdGhlcmV1bToiZXRoZXJldW0iLCJBcmJpdHJ1bSBPbmUiOiJhcmJpdHJ1bSIsUG9seWdvbjoicG9seWdvbiIsQmVyYWNoYWluOiJiZXJhY2hhaW4iLEF2YWxhbmNoZToiYXZhbGFuY2hlLWMtY2hhaW4iLCJPUCBNYWlubmV0Ijoib3B0aW1pc20iLENlbG86ImNlbG8iLEJhc2U6ImJhc2UifSxXQ19DT0lOQkFTRV9PTlJBTVBfQVBQX0lEOiJiZjE4Yzg4ZC00OTVhLTQ2M2ItYjI0OS0wYjlkMzY1NmNmNWUiLFNXQVBfU1VHR0VTVEVEX1RPS0VOUzpbIkVUSCIsIlVOSSIsIjFJTkNIIiwiQUFWRSIsIlNPTCIsIkFEQSIsIkFWQVgiLCJET1QiLCJMSU5LIiwiTklUUk8iLCJHQUlBIiwiTUlMSyIsIlRSWCIsIk5FQVIiLCJHTk8iLCJXQlRDIiwiREFJIiwiV0VUSCIsIlVTREMiLCJVU0RUIiwiQVJCIiwiQkFMIiwiQklDTyIsIkNSViIsIkVOUyIsIk1BVElDIiwiT1AiXSxTV0FQX1BPUFVMQVJfVE9LRU5TOlsiRVRIIiwiVU5JIiwiMUlOQ0giLCJBQVZFIiwiU09MIiwiQURBIiwiQVZBWCIsIkRPVCIsIkxJTksiLCJOSVRSTyIsIkdBSUEiLCJNSUxLIiwiVFJYIiwiTkVBUiIsIkdOTyIsIldCVEMiLCJEQUkiLCJXRVRIIiwiVVNEQyIsIlVTRFQiLCJBUkIiLCJCQUwiLCJCSUNPIiwiQ1JWIiwiRU5TIiwiTUFUSUMiLCJPUCIsIk1FVEFMIiwiREFJIiwiQ0hBTVAiLCJXT0xGIiwiU0FMRSIsIkJBTCIsIkJVU0QiLCJNVVNUIiwiQlRDcHgiLCJST1VURSIsIkhFWCIsIldFTFQiLCJhbURBSSIsIlZTUSIsIlZJU0lPTiIsIkFVUlVNIiwicFNQIiwiU05YIiwiVkMiLCJMSU5LIiwiQ0hQIiwiYW1VU0RUIiwiU1BIRVJFIiwiRk9YIiwiR0lERFkiLCJHRkMiLCJPTUVOIiwiT1hfT0xEIiwiREUiLCJXTlQiXSxCQUxBTkNFX1NVUFBPUlRFRF9DSEFJTlM6WyJlaXAxNTUiLCJzb2xhbmEiXSxTV0FQX1NVUFBPUlRFRF9ORVRXT1JLUzpbImVpcDE1NToxIiwiZWlwMTU1OjQyMTYxIiwiZWlwMTU1OjEwIiwiZWlwMTU1OjMyNCIsImVpcDE1NTo4NDUzIiwiZWlwMTU1OjU2IiwiZWlwMTU1OjEzNyIsImVpcDE1NToxMDAiLCJlaXAxNTU6NDMxMTQiLCJlaXAxNTU6MjUwIiwiZWlwMTU1OjgyMTciLCJlaXAxNTU6MTMxMzE2MTU1NCJdLE5BTUVTX1NVUFBPUlRFRF9DSEFJTl9OQU1FU1BBQ0VTOlsiZWlwMTU1Il0sT05SQU1QX1NVUFBPUlRFRF9DSEFJTl9OQU1FU1BBQ0VTOlsiZWlwMTU1Iiwic29sYW5hIl0sQUNUSVZJVFlfRU5BQkxFRF9DSEFJTl9OQU1FU1BBQ0VTOlsiZWlwMTU1Il0sTkFUSVZFX1RPS0VOX0FERFJFU1M6e2VpcDE1NToiMHhlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlIixzb2xhbmE6IlNvMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEiLHBvbGthZG90OiIweCIsYmlwMTIyOiIweCIsY29zbW9zOiIweCJ9LENPTlZFUlRfU0xJUFBBR0VfVE9MRVJBTkNFOjEsQ09OTkVDVF9MQUJFTFM6e01PQklMRToiT3BlbiBhbmQgY29udGludWUgaW4gdGhlIHdhbGxldCBhcHAiLFdFQjoiT3BlbiBhbmQgY29udGludWUgaW4gdGhlIHdhbGxldCBhcHAifSxTRU5EX1NVUFBPUlRFRF9OQU1FU1BBQ0VTOlsiZWlwMTU1Iiwic29sYW5hIl0sREVGQVVMVF9SRU1PVEVfRkVBVFVSRVM6e3N3YXBzOlsiMWluY2giXSxvbnJhbXA6WyJjb2luYmFzZSIsIm1lbGQiXSxlbWFpbDohMCxzb2NpYWxzOlsiZ29vZ2xlIiwieCIsImRpc2NvcmQiLCJmYXJjYXN0ZXIiLCJnaXRodWIiLCJhcHBsZSIsImZhY2Vib29rIl0sYWN0aXZpdHk6ITAscmVvd25CcmFuZGluZzohMH0sREVGQVVMVF9SRU1PVEVfRkVBVFVSRVNfRElTQUJMRUQ6e2VtYWlsOiExLHNvY2lhbHM6ITEsc3dhcHM6ITEsb25yYW1wOiExLGFjdGl2aXR5OiExLHJlb3duQnJhbmRpbmc6ITF9LERFRkFVTFRfRkVBVFVSRVM6e3JlY2VpdmU6ITAsc2VuZDohMCxlbWFpbFNob3dXYWxsZXRzOiEwLGNvbm5lY3RvclR5cGVPcmRlcjpbIndhbGxldENvbm5lY3QiLCJyZWNlbnQiLCJpbmplY3RlZCIsImZlYXR1cmVkIiwiY3VzdG9tIiwiZXh0ZXJuYWwiLCJyZWNvbW1lbmRlZCJdLGFuYWx5dGljczohMCxhbGxXYWxsZXRzOiEwLGxlZ2FsQ2hlY2tib3g6ITEsc21hcnRTZXNzaW9uczohMSxjb2xsYXBzZVdhbGxldHM6ITEsd2FsbGV0RmVhdHVyZXNPcmRlcjpbIm9ucmFtcCIsInN3YXBzIiwicmVjZWl2ZSIsInNlbmQiXSxjb25uZWN0TWV0aG9kc09yZGVyOnZvaWQgMCxwYXk6ITF9LERFRkFVTFRfU09DSUFMUzpbImdvb2dsZSIsIngiLCJmYXJjYXN0ZXIiLCJkaXNjb3JkIiwiYXBwbGUiLCJnaXRodWIiLCJmYWNlYm9vayJdLERFRkFVTFRfQUNDT1VOVF9UWVBFUzp7YmlwMTIyOiJwYXltZW50IixlaXAxNTU6InNtYXJ0QWNjb3VudCIscG9sa2Fkb3Q6ImVvYSIsc29sYW5hOiJlb2EifSxBREFQVEVSX1RZUEVTOntVTklWRVJTQUw6InVuaXZlcnNhbCIsU09MQU5BOiJzb2xhbmEiLFdBR01JOiJ3YWdtaSIsRVRIRVJTOiJldGhlcnMiLEVUSEVSUzU6ImV0aGVyczUiLEJJVENPSU46ImJpdGNvaW4ifX0sJGU9e2NhY2hlRXhwaXJ5Ontwb3J0Zm9saW86M2U0LG5hdGl2ZUJhbGFuY2U6M2U0LGVuczozZTUsaWRlbnRpdHk6M2U1fSxpc0NhY2hlRXhwaXJlZCh0LGUpe3JldHVybiBEYXRlLm5vdygpLXQ+ZX0sZ2V0QWN0aXZlTmV0d29ya1Byb3BzKCl7Y29uc3QgdD0kZS5nZXRBY3RpdmVOYW1lc3BhY2UoKSxlPSRlLmdldEFjdGl2ZUNhaXBOZXR3b3JrSWQoKSxyPWU/ZS5zcGxpdCgiOiIpWzFdOnZvaWQgMCxuPXI/aXNOYU4oTnVtYmVyKHIpKT9yOk51bWJlcihyKTp2b2lkIDA7cmV0dXJue25hbWVzcGFjZTp0LGNhaXBOZXR3b3JrSWQ6ZSxjaGFpbklkOm59fSxzZXRXYWxsZXRDb25uZWN0RGVlcExpbmsoe25hbWU6dCxocmVmOmV9KXt0cnl7b3Quc2V0SXRlbShodC5ERUVQTElOS19DSE9JQ0UsSlNPTi5zdHJpbmdpZnkoe2hyZWY6ZSxuYW1lOnR9KSl9Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gc2V0IFdhbGxldENvbm5lY3QgZGVlcCBsaW5rIil9fSxnZXRXYWxsZXRDb25uZWN0RGVlcExpbmsoKXt0cnl7Y29uc3QgdD1vdC5nZXRJdGVtKGh0LkRFRVBMSU5LX0NIT0lDRSk7aWYodClyZXR1cm4gSlNPTi5wYXJzZSh0KX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBnZXQgV2FsbGV0Q29ubmVjdCBkZWVwIGxpbmsiKX19LGRlbGV0ZVdhbGxldENvbm5lY3REZWVwTGluaygpe3RyeXtvdC5yZW1vdmVJdGVtKGh0LkRFRVBMSU5LX0NIT0lDRSl9Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gZGVsZXRlIFdhbGxldENvbm5lY3QgZGVlcCBsaW5rIil9fSxzZXRBY3RpdmVOYW1lc3BhY2UodCl7dHJ5e290LnNldEl0ZW0oaHQuQUNUSVZFX05BTUVTUEFDRSx0KX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBzZXQgYWN0aXZlIG5hbWVzcGFjZSIpfX0sc2V0QWN0aXZlQ2FpcE5ldHdvcmtJZCh0KXt0cnl7b3Quc2V0SXRlbShodC5BQ1RJVkVfQ0FJUF9ORVRXT1JLX0lELHQpLCRlLnNldEFjdGl2ZU5hbWVzcGFjZSh0LnNwbGl0KCI6IilbMF0pfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIHNldCBhY3RpdmUgY2FpcCBuZXR3b3JrIGlkIil9fSxnZXRBY3RpdmVDYWlwTmV0d29ya0lkKCl7dHJ5e3JldHVybiBvdC5nZXRJdGVtKGh0LkFDVElWRV9DQUlQX05FVFdPUktfSUQpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIGdldCBhY3RpdmUgY2FpcCBuZXR3b3JrIGlkIik7cmV0dXJufX0sZGVsZXRlQWN0aXZlQ2FpcE5ldHdvcmtJZCgpe3RyeXtvdC5yZW1vdmVJdGVtKGh0LkFDVElWRV9DQUlQX05FVFdPUktfSUQpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIGRlbGV0ZSBhY3RpdmUgY2FpcCBuZXR3b3JrIGlkIil9fSxkZWxldGVDb25uZWN0ZWRDb25uZWN0b3JJZCh0KXt0cnl7Y29uc3QgZT1kMih0KTtvdC5yZW1vdmVJdGVtKGUpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIGRlbGV0ZSBjb25uZWN0ZWQgY29ubmVjdG9yIGlkIil9fSxzZXRBcHBLaXRSZWNlbnQodCl7dHJ5e2NvbnN0IGU9JGUuZ2V0UmVjZW50V2FsbGV0cygpO2UuZmluZChuPT5uLmlkPT09dC5pZCl8fChlLnVuc2hpZnQodCksZS5sZW5ndGg+MiYmZS5wb3AoKSxvdC5zZXRJdGVtKGh0LlJFQ0VOVF9XQUxMRVRTLEpTT04uc3RyaW5naWZ5KGUpKSl9Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gc2V0IEFwcEtpdCByZWNlbnQiKX19LGdldFJlY2VudFdhbGxldHMoKXt0cnl7Y29uc3QgdD1vdC5nZXRJdGVtKGh0LlJFQ0VOVF9XQUxMRVRTKTtyZXR1cm4gdD9KU09OLnBhcnNlKHQpOltdfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIGdldCBBcHBLaXQgcmVjZW50Iil9cmV0dXJuW119LHNldENvbm5lY3RlZENvbm5lY3RvcklkKHQsZSl7dHJ5e2NvbnN0IHI9ZDIodCk7b3Quc2V0SXRlbShyLGUpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIHNldCBDb25uZWN0ZWQgQ29ubmVjdG9yIElkIil9fSxnZXRBY3RpdmVOYW1lc3BhY2UoKXt0cnl7cmV0dXJuIG90LmdldEl0ZW0oaHQuQUNUSVZFX05BTUVTUEFDRSl9Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gZ2V0IGFjdGl2ZSBuYW1lc3BhY2UiKX19LGdldENvbm5lY3RlZENvbm5lY3RvcklkKHQpe2lmKHQpdHJ5e2NvbnN0IGU9ZDIodCk7cmV0dXJuIG90LmdldEl0ZW0oZSl9Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gZ2V0IGNvbm5lY3RlZCBjb25uZWN0b3IgaWQgaW4gbmFtZXNwYWNlICIsdCl9fSxzZXRDb25uZWN0ZWRTb2NpYWxQcm92aWRlcih0KXt0cnl7b3Quc2V0SXRlbShodC5DT05ORUNURURfU09DSUFMLHQpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIHNldCBjb25uZWN0ZWQgc29jaWFsIHByb3ZpZGVyIil9fSxnZXRDb25uZWN0ZWRTb2NpYWxQcm92aWRlcigpe3RyeXtyZXR1cm4gb3QuZ2V0SXRlbShodC5DT05ORUNURURfU09DSUFMKX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBnZXQgY29ubmVjdGVkIHNvY2lhbCBwcm92aWRlciIpfX0sZGVsZXRlQ29ubmVjdGVkU29jaWFsUHJvdmlkZXIoKXt0cnl7b3QucmVtb3ZlSXRlbShodC5DT05ORUNURURfU09DSUFMKX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBkZWxldGUgY29ubmVjdGVkIHNvY2lhbCBwcm92aWRlciIpfX0sZ2V0Q29ubmVjdGVkU29jaWFsVXNlcm5hbWUoKXt0cnl7cmV0dXJuIG90LmdldEl0ZW0oaHQuQ09OTkVDVEVEX1NPQ0lBTF9VU0VSTkFNRSl9Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gZ2V0IGNvbm5lY3RlZCBzb2NpYWwgdXNlcm5hbWUiKX19LGdldFN0b3JlZEFjdGl2ZUNhaXBOZXR3b3JrSWQoKXtyZXR1cm4gb3QuZ2V0SXRlbShodC5BQ1RJVkVfQ0FJUF9ORVRXT1JLX0lEKT8uc3BsaXQoIjoiKT8uWzFdfSxzZXRDb25uZWN0aW9uU3RhdHVzKHQpe3RyeXtvdC5zZXRJdGVtKGh0LkNPTk5FQ1RJT05fU1RBVFVTLHQpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIHNldCBjb25uZWN0aW9uIHN0YXR1cyIpfX0sZ2V0Q29ubmVjdGlvblN0YXR1cygpe3RyeXtyZXR1cm4gb3QuZ2V0SXRlbShodC5DT05ORUNUSU9OX1NUQVRVUyl9Y2F0Y2h7cmV0dXJufX0sZ2V0Q29ubmVjdGVkTmFtZXNwYWNlcygpe3RyeXtjb25zdCB0PW90LmdldEl0ZW0oaHQuQ09OTkVDVEVEX05BTUVTUEFDRVMpO3JldHVybiB0Py5sZW5ndGg/dC5zcGxpdCgiLCIpOltdfWNhdGNoe3JldHVybltdfX0sc2V0Q29ubmVjdGVkTmFtZXNwYWNlcyh0KXt0cnl7Y29uc3QgZT1BcnJheS5mcm9tKG5ldyBTZXQodCkpO290LnNldEl0ZW0oaHQuQ09OTkVDVEVEX05BTUVTUEFDRVMsZS5qb2luKCIsIikpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIHNldCBuYW1lc3BhY2VzIGluIHN0b3JhZ2UiKX19LGFkZENvbm5lY3RlZE5hbWVzcGFjZSh0KXt0cnl7Y29uc3QgZT0kZS5nZXRDb25uZWN0ZWROYW1lc3BhY2VzKCk7ZS5pbmNsdWRlcyh0KXx8KGUucHVzaCh0KSwkZS5zZXRDb25uZWN0ZWROYW1lc3BhY2VzKGUpKX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBhZGQgY29ubmVjdGVkIG5hbWVzcGFjZSIpfX0scmVtb3ZlQ29ubmVjdGVkTmFtZXNwYWNlKHQpe3RyeXtjb25zdCBlPSRlLmdldENvbm5lY3RlZE5hbWVzcGFjZXMoKSxyPWUuaW5kZXhPZih0KTtyPi0xJiYoZS5zcGxpY2UociwxKSwkZS5zZXRDb25uZWN0ZWROYW1lc3BhY2VzKGUpKX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byByZW1vdmUgY29ubmVjdGVkIG5hbWVzcGFjZSIpfX0sZ2V0VGVsZWdyYW1Tb2NpYWxQcm92aWRlcigpe3RyeXtyZXR1cm4gb3QuZ2V0SXRlbShodC5URUxFR1JBTV9TT0NJQUxfUFJPVklERVIpfWNhdGNoe3JldHVybiBjb25zb2xlLmluZm8oIlVuYWJsZSB0byBnZXQgdGVsZWdyYW0gc29jaWFsIHByb3ZpZGVyIiksbnVsbH19LHNldFRlbGVncmFtU29jaWFsUHJvdmlkZXIodCl7dHJ5e290LnNldEl0ZW0oaHQuVEVMRUdSQU1fU09DSUFMX1BST1ZJREVSLHQpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIHNldCB0ZWxlZ3JhbSBzb2NpYWwgcHJvdmlkZXIiKX19LHJlbW92ZVRlbGVncmFtU29jaWFsUHJvdmlkZXIoKXt0cnl7b3QucmVtb3ZlSXRlbShodC5URUxFR1JBTV9TT0NJQUxfUFJPVklERVIpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIHJlbW92ZSB0ZWxlZ3JhbSBzb2NpYWwgcHJvdmlkZXIiKX19LGdldEJhbGFuY2VDYWNoZSgpe2xldCB0PXt9O3RyeXtjb25zdCBlPW90LmdldEl0ZW0oaHQuUE9SVEZPTElPX0NBQ0hFKTt0PWU/SlNPTi5wYXJzZShlKTp7fX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBnZXQgYmFsYW5jZSBjYWNoZSIpfXJldHVybiB0fSxyZW1vdmVBZGRyZXNzRnJvbUJhbGFuY2VDYWNoZSh0KXt0cnl7Y29uc3QgZT0kZS5nZXRCYWxhbmNlQ2FjaGUoKTtvdC5zZXRJdGVtKGh0LlBPUlRGT0xJT19DQUNIRSxKU09OLnN0cmluZ2lmeSh7Li4uZSxbdF06dm9pZCAwfSkpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIHJlbW92ZSBhZGRyZXNzIGZyb20gYmFsYW5jZSBjYWNoZSIsdCl9fSxnZXRCYWxhbmNlQ2FjaGVGb3JDYWlwQWRkcmVzcyh0KXt0cnl7Y29uc3Qgcj0kZS5nZXRCYWxhbmNlQ2FjaGUoKVt0XTtpZihyJiYhdGhpcy5pc0NhY2hlRXhwaXJlZChyLnRpbWVzdGFtcCx0aGlzLmNhY2hlRXhwaXJ5LnBvcnRmb2xpbykpcmV0dXJuIHIuYmFsYW5jZTskZS5yZW1vdmVBZGRyZXNzRnJvbUJhbGFuY2VDYWNoZSh0KX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBnZXQgYmFsYW5jZSBjYWNoZSBmb3IgYWRkcmVzcyIsdCl9fSx1cGRhdGVCYWxhbmNlQ2FjaGUodCl7dHJ5e2NvbnN0IGU9JGUuZ2V0QmFsYW5jZUNhY2hlKCk7ZVt0LmNhaXBBZGRyZXNzXT10LG90LnNldEl0ZW0oaHQuUE9SVEZPTElPX0NBQ0hFLEpTT04uc3RyaW5naWZ5KGUpKX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byB1cGRhdGUgYmFsYW5jZSBjYWNoZSIsdCl9fSxnZXROYXRpdmVCYWxhbmNlQ2FjaGUoKXtsZXQgdD17fTt0cnl7Y29uc3QgZT1vdC5nZXRJdGVtKGh0Lk5BVElWRV9CQUxBTkNFX0NBQ0hFKTt0PWU/SlNPTi5wYXJzZShlKTp7fX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBnZXQgYmFsYW5jZSBjYWNoZSIpfXJldHVybiB0fSxyZW1vdmVBZGRyZXNzRnJvbU5hdGl2ZUJhbGFuY2VDYWNoZSh0KXt0cnl7Y29uc3QgZT0kZS5nZXRCYWxhbmNlQ2FjaGUoKTtvdC5zZXRJdGVtKGh0Lk5BVElWRV9CQUxBTkNFX0NBQ0hFLEpTT04uc3RyaW5naWZ5KHsuLi5lLFt0XTp2b2lkIDB9KSl9Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gcmVtb3ZlIGFkZHJlc3MgZnJvbSBiYWxhbmNlIGNhY2hlIix0KX19LGdldE5hdGl2ZUJhbGFuY2VDYWNoZUZvckNhaXBBZGRyZXNzKHQpe3RyeXtjb25zdCByPSRlLmdldE5hdGl2ZUJhbGFuY2VDYWNoZSgpW3RdO2lmKHImJiF0aGlzLmlzQ2FjaGVFeHBpcmVkKHIudGltZXN0YW1wLHRoaXMuY2FjaGVFeHBpcnkubmF0aXZlQmFsYW5jZSkpcmV0dXJuIHI7Y29uc29sZS5pbmZvKCJEaXNjYXJkaW5nIGNhY2hlIGZvciBhZGRyZXNzIix0KSwkZS5yZW1vdmVBZGRyZXNzRnJvbUJhbGFuY2VDYWNoZSh0KX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBnZXQgYmFsYW5jZSBjYWNoZSBmb3IgYWRkcmVzcyIsdCl9fSx1cGRhdGVOYXRpdmVCYWxhbmNlQ2FjaGUodCl7dHJ5e2NvbnN0IGU9JGUuZ2V0TmF0aXZlQmFsYW5jZUNhY2hlKCk7ZVt0LmNhaXBBZGRyZXNzXT10LG90LnNldEl0ZW0oaHQuTkFUSVZFX0JBTEFOQ0VfQ0FDSEUsSlNPTi5zdHJpbmdpZnkoZSkpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIHVwZGF0ZSBiYWxhbmNlIGNhY2hlIix0KX19LGdldEVuc0NhY2hlKCl7bGV0IHQ9e307dHJ5e2NvbnN0IGU9b3QuZ2V0SXRlbShodC5FTlNfQ0FDSEUpO3Q9ZT9KU09OLnBhcnNlKGUpOnt9fWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIGdldCBlbnMgbmFtZSBjYWNoZSIpfXJldHVybiB0fSxnZXRFbnNGcm9tQ2FjaGVGb3JBZGRyZXNzKHQpe3RyeXtjb25zdCByPSRlLmdldEVuc0NhY2hlKClbdF07aWYociYmIXRoaXMuaXNDYWNoZUV4cGlyZWQoci50aW1lc3RhbXAsdGhpcy5jYWNoZUV4cGlyeS5lbnMpKXJldHVybiByLmVuczskZS5yZW1vdmVFbnNGcm9tQ2FjaGUodCl9Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gZ2V0IGVucyBuYW1lIGZyb20gY2FjaGUiLHQpfX0sdXBkYXRlRW5zQ2FjaGUodCl7dHJ5e2NvbnN0IGU9JGUuZ2V0RW5zQ2FjaGUoKTtlW3QuYWRkcmVzc109dCxvdC5zZXRJdGVtKGh0LkVOU19DQUNIRSxKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gdXBkYXRlIGVucyBuYW1lIGNhY2hlIix0KX19LHJlbW92ZUVuc0Zyb21DYWNoZSh0KXt0cnl7Y29uc3QgZT0kZS5nZXRFbnNDYWNoZSgpO290LnNldEl0ZW0oaHQuRU5TX0NBQ0hFLEpTT04uc3RyaW5naWZ5KHsuLi5lLFt0XTp2b2lkIDB9KSl9Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gcmVtb3ZlIGVucyBuYW1lIGZyb20gY2FjaGUiLHQpfX0sZ2V0SWRlbnRpdHlDYWNoZSgpe2xldCB0PXt9O3RyeXtjb25zdCBlPW90LmdldEl0ZW0oaHQuSURFTlRJVFlfQ0FDSEUpO3Q9ZT9KU09OLnBhcnNlKGUpOnt9fWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIGdldCBpZGVudGl0eSBjYWNoZSIpfXJldHVybiB0fSxnZXRJZGVudGl0eUZyb21DYWNoZUZvckFkZHJlc3ModCl7dHJ5e2NvbnN0IHI9JGUuZ2V0SWRlbnRpdHlDYWNoZSgpW3RdO2lmKHImJiF0aGlzLmlzQ2FjaGVFeHBpcmVkKHIudGltZXN0YW1wLHRoaXMuY2FjaGVFeHBpcnkuaWRlbnRpdHkpKXJldHVybiByLmlkZW50aXR5OyRlLnJlbW92ZUlkZW50aXR5RnJvbUNhY2hlKHQpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIGdldCBpZGVudGl0eSBmcm9tIGNhY2hlIix0KX19LHVwZGF0ZUlkZW50aXR5Q2FjaGUodCl7dHJ5e2NvbnN0IGU9JGUuZ2V0SWRlbnRpdHlDYWNoZSgpO2VbdC5hZGRyZXNzXT17aWRlbnRpdHk6dC5pZGVudGl0eSx0aW1lc3RhbXA6dC50aW1lc3RhbXB9LG90LnNldEl0ZW0oaHQuSURFTlRJVFlfQ0FDSEUsSlNPTi5zdHJpbmdpZnkoZSkpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIHVwZGF0ZSBpZGVudGl0eSBjYWNoZSIsdCl9fSxyZW1vdmVJZGVudGl0eUZyb21DYWNoZSh0KXt0cnl7Y29uc3QgZT0kZS5nZXRJZGVudGl0eUNhY2hlKCk7b3Quc2V0SXRlbShodC5JREVOVElUWV9DQUNIRSxKU09OLnN0cmluZ2lmeSh7Li4uZSxbdF06dm9pZCAwfSkpfWNhdGNoe2NvbnNvbGUuaW5mbygiVW5hYmxlIHRvIHJlbW92ZSBpZGVudGl0eSBmcm9tIGNhY2hlIix0KX19LGNsZWFyQWRkcmVzc0NhY2hlKCl7dHJ5e290LnJlbW92ZUl0ZW0oaHQuUE9SVEZPTElPX0NBQ0hFKSxvdC5yZW1vdmVJdGVtKGh0Lk5BVElWRV9CQUxBTkNFX0NBQ0hFKSxvdC5yZW1vdmVJdGVtKGh0LkVOU19DQUNIRSksb3QucmVtb3ZlSXRlbShodC5JREVOVElUWV9DQUNIRSl9Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gY2xlYXIgYWRkcmVzcyBjYWNoZSIpfX0sc2V0UHJlZmVycmVkQWNjb3VudFR5cGVzKHQpe3RyeXtvdC5zZXRJdGVtKGh0LlBSRUZFUlJFRF9BQ0NPVU5UX1RZUEVTLEpTT04uc3RyaW5naWZ5KHQpKX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBzZXQgcHJlZmVycmVkIGFjY291bnQgdHlwZXMiLHQpfX0sZ2V0UHJlZmVycmVkQWNjb3VudFR5cGVzKCl7dHJ5e2NvbnN0IHQ9b3QuZ2V0SXRlbShodC5QUkVGRVJSRURfQUNDT1VOVF9UWVBFUyk7cmV0dXJuIHQ/SlNPTi5wYXJzZSh0KTp7fX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBnZXQgcHJlZmVycmVkIGFjY291bnQgdHlwZXMiKX1yZXR1cm57fX0sc2V0Q29ubmVjdGlvbnModCxlKXt0cnl7Y29uc3Qgcj17Li4uJGUuZ2V0Q29ubmVjdGlvbnMoKSxbZV06dH07b3Quc2V0SXRlbShodC5DT05ORUNUSU9OUyxKU09OLnN0cmluZ2lmeShyKSl9Y2F0Y2gocil7Y29uc29sZS5lcnJvcigiVW5hYmxlIHRvIHN5bmMgY29ubmVjdGlvbnMgdG8gc3RvcmFnZSIscil9fSxnZXRDb25uZWN0aW9ucygpe3RyeXtjb25zdCB0PW90LmdldEl0ZW0oaHQuQ09OTkVDVElPTlMpO3JldHVybiB0P0pTT04ucGFyc2UodCk6e319Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlVuYWJsZSB0byBnZXQgY29ubmVjdGlvbnMgZnJvbSBzdG9yYWdlIix0KSx7fX19fSx1ZT17aXNNb2JpbGUoKXtyZXR1cm4gdGhpcy5pc0NsaWVudCgpPyEhKHdpbmRvdz8ubWF0Y2hNZWRpYSgiKHBvaW50ZXI6Y29hcnNlKSIpPy5tYXRjaGVzfHwvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8T3BlcmEgTWluaS91LnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpOiExfSxjaGVja0NhaXBOZXR3b3JrKHQsZT0iIil7cmV0dXJuIHQ/LmNhaXBOZXR3b3JrSWQudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhlLnRvTG93ZXJDYXNlKCkpfSxpc0FuZHJvaWQoKXtpZighdGhpcy5pc01vYmlsZSgpKXJldHVybiExO2NvbnN0IHQ9d2luZG93Py5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7cmV0dXJuIHVlLmlzTW9iaWxlKCkmJnQuaW5jbHVkZXMoImFuZHJvaWQiKX0saXNJb3MoKXtpZighdGhpcy5pc01vYmlsZSgpKXJldHVybiExO2NvbnN0IHQ9d2luZG93Py5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQuaW5jbHVkZXMoImlwaG9uZSIpfHx0LmluY2x1ZGVzKCJpcGFkIil9LGlzU2FmYXJpKCl7cmV0dXJuIHRoaXMuaXNDbGllbnQoKT8od2luZG93Py5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpLmluY2x1ZGVzKCJzYWZhcmkiKTohMX0saXNDbGllbnQoKXtyZXR1cm4gdHlwZW9mIHdpbmRvdzwidSJ9LGlzUGFpcmluZ0V4cGlyZWQodCl7cmV0dXJuIHQ/dC1EYXRlLm5vdygpPD10dC5URU5fU0VDX01TOiEwfSxpc0FsbG93ZWRSZXRyeSh0LGU9dHQuT05FX1NFQ19NUyl7cmV0dXJuIERhdGUubm93KCktdD49ZX0sY29weVRvQ2xvcGJvYXJkKHQpe25hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHQpfSxpc0lmcmFtZSgpe3RyeXtyZXR1cm4gd2luZG93Py5zZWxmIT09d2luZG93Py50b3B9Y2F0Y2h7cmV0dXJuITF9fSxnZXRQYWlyaW5nRXhwaXJ5KCl7cmV0dXJuIERhdGUubm93KCkrdHQuRk9VUl9NSU5VVEVTX01TfSxnZXROZXR3b3JrSWQodCl7cmV0dXJuIHQ/LnNwbGl0KCI6IilbMV19LGdldFBsYWluQWRkcmVzcyh0KXtyZXR1cm4gdD8uc3BsaXQoIjoiKVsyXX0sYXN5bmMgd2FpdCh0KXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e3NldFRpbWVvdXQoZSx0KX0pfSxkZWJvdW5jZSh0LGU9NTAwKXtsZXQgcjtyZXR1cm4oLi4ubik9PntmdW5jdGlvbiBzKCl7dCguLi5uKX1yJiZjbGVhclRpbWVvdXQocikscj1zZXRUaW1lb3V0KHMsZSl9fSxpc0h0dHBVcmwodCl7cmV0dXJuIHQuc3RhcnRzV2l0aCgiaHR0cDovLyIpfHx0LnN0YXJ0c1dpdGgoImh0dHBzOi8vIil9LGZvcm1hdE5hdGl2ZVVybCh0LGUscj1udWxsKXtpZih1ZS5pc0h0dHBVcmwodCkpcmV0dXJuIHRoaXMuZm9ybWF0VW5pdmVyc2FsVXJsKHQsZSk7bGV0IG49dCxzPXI7bi5pbmNsdWRlcygiOi8vIil8fChuPXQucmVwbGFjZUFsbCgiLyIsIiIpLnJlcGxhY2VBbGwoIjoiLCIiKSxuPWAke259Oi8vYCksbi5lbmRzV2l0aCgiLyIpfHwobj1gJHtufS9gKSxzJiYhcz8uZW5kc1dpdGgoIi8iKSYmKHM9YCR7c30vYCksdGhpcy5pc1RlbGVncmFtKCkmJnRoaXMuaXNBbmRyb2lkKCkmJihlPWVuY29kZVVSSUNvbXBvbmVudChlKSk7Y29uc3QgaT1lbmNvZGVVUklDb21wb25lbnQoZSk7cmV0dXJue3JlZGlyZWN0OmAke259d2M/dXJpPSR7aX1gLHJlZGlyZWN0VW5pdmVyc2FsTGluazpzP2Ake3N9d2M/dXJpPSR7aX1gOnZvaWQgMCxocmVmOm59fSxmb3JtYXRVbml2ZXJzYWxVcmwodCxlKXtpZighdWUuaXNIdHRwVXJsKHQpKXJldHVybiB0aGlzLmZvcm1hdE5hdGl2ZVVybCh0LGUpO2xldCByPXQ7ci5lbmRzV2l0aCgiLyIpfHwocj1gJHtyfS9gKTtjb25zdCBuPWVuY29kZVVSSUNvbXBvbmVudChlKTtyZXR1cm57cmVkaXJlY3Q6YCR7cn13Yz91cmk9JHtufWAsaHJlZjpyfX0sZ2V0T3BlblRhcmdldEZvclBsYXRmb3JtKHQpe3JldHVybiB0PT09InBvcHVwV2luZG93Ij90OnRoaXMuaXNUZWxlZ3JhbSgpPyRlLmdldFRlbGVncmFtU29jaWFsUHJvdmlkZXIoKT8iX3RvcCI6Il9ibGFuayI6dH0sb3BlbkhyZWYodCxlLHIpe3dpbmRvdz8ub3Blbih0LHRoaXMuZ2V0T3BlblRhcmdldEZvclBsYXRmb3JtKGUpLHJ8fCJub3JlZmVycmVyIG5vb3BlbmVyIil9LHJldHVybk9wZW5IcmVmKHQsZSxyKXtyZXR1cm4gd2luZG93Py5vcGVuKHQsdGhpcy5nZXRPcGVuVGFyZ2V0Rm9yUGxhdGZvcm0oZSkscnx8Im5vcmVmZXJyZXIgbm9vcGVuZXIiKX0saXNUZWxlZ3JhbSgpe3JldHVybiB0eXBlb2Ygd2luZG93PCJ1IiYmKCEhd2luZG93LlRlbGVncmFtV2Vidmlld1Byb3h5fHwhIXdpbmRvdy5UZWxlZ3JhbXx8ISF3aW5kb3cuVGVsZWdyYW1XZWJ2aWV3UHJveHlQcm90byl9LGlzUFdBKCl7aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuITE7Y29uc3QgdD13aW5kb3cubWF0Y2hNZWRpYT8uKCIoZGlzcGxheS1tb2RlOiBzdGFuZGFsb25lKSIpPy5tYXRjaGVzLGU9d2luZG93Py5uYXZpZ2F0b3I/LnN0YW5kYWxvbmU7cmV0dXJuISEodHx8ZSl9LGFzeW5jIHByZWxvYWRJbWFnZSh0KXtjb25zdCBlPW5ldyBQcm9taXNlKChyLG4pPT57Y29uc3Qgcz1uZXcgSW1hZ2U7cy5vbmxvYWQ9cixzLm9uZXJyb3I9bixzLmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLHMuc3JjPXR9KTtyZXR1cm4gUHJvbWlzZS5yYWNlKFtlLHVlLndhaXQoMmUzKV0pfSxmb3JtYXRCYWxhbmNlKHQsZSl7bGV0IHI9IjAuMDAwIjtpZih0eXBlb2YgdD09InN0cmluZyIpe2NvbnN0IG49TnVtYmVyKHQpO2lmKG4pe2NvbnN0IHM9TWF0aC5mbG9vcihuKjFlMykvMWUzO3MmJihyPXMudG9TdHJpbmcoKSl9fXJldHVybmAke3J9JHtlP2AgJHtlfWA6IiJ9YH0sZm9ybWF0QmFsYW5jZTIodCxlKXtsZXQgcjtpZih0PT09IjAiKXI9IjAiO2Vsc2UgaWYodHlwZW9mIHQ9PSJzdHJpbmciKXtjb25zdCBuPU51bWJlcih0KTtuJiYocj1uLnRvU3RyaW5nKCkubWF0Y2goL14tP1xkKyg/OlwuXGR7MCwzfSk/L3UpPy5bMF0pfXJldHVybnt2YWx1ZTpyPz8iMCIscmVzdDpyPT09IjAiPyIwMDAiOiIiLHN5bWJvbDplfX0sZ2V0QXBpVXJsKCl7cmV0dXJuIHllLlczTV9BUElfVVJMfSxnZXRCbG9ja2NoYWluQXBpVXJsKCl7cmV0dXJuIHllLkJMT0NLQ0hBSU5fQVBJX1JQQ19VUkx9LGdldEFuYWx5dGljc1VybCgpe3JldHVybiB5ZS5QVUxTRV9BUElfVVJMfSxnZXRVVUlEKCl7cmV0dXJuIGNyeXB0bz8ucmFuZG9tVVVJRD9jcnlwdG8ucmFuZG9tVVVJRCgpOiJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgiLnJlcGxhY2UoL1t4eV0vZ3UsdD0+e2NvbnN0IGU9TWF0aC5yYW5kb20oKSoxNnwwO3JldHVybih0PT09IngiP2U6ZSYzfDgpLnRvU3RyaW5nKDE2KX0pfSxwYXJzZUVycm9yKHQpe3JldHVybiB0eXBlb2YgdD09InN0cmluZyI/dDp0eXBlb2YgdD8uaXNzdWVzPy5bMF0/Lm1lc3NhZ2U9PSJzdHJpbmciP3QuaXNzdWVzWzBdLm1lc3NhZ2U6dCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZToiVW5rbm93biBlcnJvciJ9LHNvcnRSZXF1ZXN0ZWROZXR3b3Jrcyh0LGU9W10pe2NvbnN0IHI9e307cmV0dXJuIGUmJnQmJih0LmZvckVhY2goKG4scyk9PntyW25dPXN9KSxlLnNvcnQoKG4scyk9Pntjb25zdCBpPXJbbi5pZF0sbz1yW3MuaWRdO3JldHVybiBpIT09dm9pZCAwJiZvIT09dm9pZCAwP2ktbzppIT09dm9pZCAwPy0xOm8hPT12b2lkIDA/MTowfSkpLGV9LGNhbGN1bGF0ZUJhbGFuY2UodCl7bGV0IGU9MDtmb3IoY29uc3QgciBvZiB0KWUrPXIudmFsdWU/PzA7cmV0dXJuIGV9LGZvcm1hdFRva2VuQmFsYW5jZSh0KXtjb25zdCBlPXQudG9GaXhlZCgyKSxbcixuXT1lLnNwbGl0KCIuIik7cmV0dXJue2RvbGxhcnM6cixwZW5uaWVzOm59fSxpc0FkZHJlc3ModCxlPSJlaXAxNTUiKXtzd2l0Y2goZSl7Y2FzZSJlaXAxNTUiOmlmKC9eKD86MHgpP1swLTlhLWZdezQwfSQvaXUudGVzdCh0KSl7aWYoL14oPzoweCk/WzAtOWEtZl17NDB9JC9pdS50ZXN0KHQpfHwvXig/OjB4KT9bMC05QS1GXXs0MH0kL2l1LnRlc3QodCkpcmV0dXJuITB9ZWxzZSByZXR1cm4hMTtyZXR1cm4hMTtjYXNlInNvbGFuYSI6cmV0dXJuL1sxLTlBLUhKLU5QLVphLWttLXpdezMyLDQ0fSQvaXUudGVzdCh0KTtkZWZhdWx0OnJldHVybiExfX0sdW5pcXVlQnkodCxlKXtjb25zdCByPW5ldyBTZXQ7cmV0dXJuIHQuZmlsdGVyKG49Pntjb25zdCBzPW5bZV07cmV0dXJuIHIuaGFzKHMpPyExOihyLmFkZChzKSwhMCl9KX0sZ2VuZXJhdGVTZGtWZXJzaW9uKHQsZSxyKXtjb25zdCBzPXQubGVuZ3RoPT09MD90dC5BREFQVEVSX1RZUEVTLlVOSVZFUlNBTDp0Lm1hcChpPT5pLmFkYXB0ZXJUeXBlKS5qb2luKCIsIik7cmV0dXJuYCR7ZX0tJHtzfS0ke3J9YH0sY3JlYXRlQWNjb3VudCh0LGUscixuLHMpe3JldHVybntuYW1lc3BhY2U6dCxhZGRyZXNzOmUsdHlwZTpyLHB1YmxpY0tleTpuLHBhdGg6c319LGlzQ2FpcEFkZHJlc3ModCl7aWYodHlwZW9mIHQhPSJzdHJpbmciKXJldHVybiExO2NvbnN0IGU9dC5zcGxpdCgiOiIpLHI9ZVswXTtyZXR1cm4gZS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoPT09MyYmciBpbiB5ZS5DSEFJTl9OQU1FX01BUH0saXNNYWMoKXtjb25zdCB0PXdpbmRvdz8ubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO3JldHVybiB0LmluY2x1ZGVzKCJtYWNpbnRvc2giKSYmIXQuaW5jbHVkZXMoInNhZmFyaSIpfSxmb3JtYXRUZWxlZ3JhbVNvY2lhbExvZ2luVXJsKHQpe2NvbnN0IGU9YC0tJHtlbmNvZGVVUklDb21wb25lbnQod2luZG93Py5sb2NhdGlvbi5ocmVmKX1gLHI9InN0YXRlPSI7aWYobmV3IFVSTCh0KS5ob3N0PT09ImF1dGgubWFnaWMubGluayIpe2NvbnN0IHM9InByb3ZpZGVyX2F1dGhvcml6YXRpb25fdXJsPSIsaT10LnN1YnN0cmluZyh0LmluZGV4T2Yocykrcy5sZW5ndGgpLG89dGhpcy5pbmplY3RJbnRvVXJsKGRlY29kZVVSSUNvbXBvbmVudChpKSxyLGUpO3JldHVybiB0LnJlcGxhY2UoaSxlbmNvZGVVUklDb21wb25lbnQobykpfXJldHVybiB0aGlzLmluamVjdEludG9VcmwodCxyLGUpfSxpbmplY3RJbnRvVXJsKHQsZSxyKXtjb25zdCBuPXQuaW5kZXhPZihlKTtpZihuPT09LTEpdGhyb3cgbmV3IEVycm9yKGAke2V9IHBhcmFtZXRlciBub3QgZm91bmQgaW4gdGhlIFVSTDogJHt0fWApO2NvbnN0IHM9dC5pbmRleE9mKCImIixuKSxpPWUubGVuZ3RoLG89cyE9PS0xP3M6dC5sZW5ndGgsYT10LnN1YnN0cmluZygwLG4raSksYz10LnN1YnN0cmluZyhuK2ksbyksbD10LnN1YnN0cmluZyhzKSxkPWMrcjtyZXR1cm4gYStkK2x9fTthc3luYyBmdW5jdGlvbiBPcCguLi50KXtjb25zdCBlPWF3YWl0IGZldGNoKC4uLnQpO2lmKCFlLm9rKXRocm93IG5ldyBFcnJvcihgSFRUUCBzdGF0dXMgY29kZTogJHtlLnN0YXR1c31gLHtjYXVzZTplfSk7cmV0dXJuIGV9Y2xhc3MgYTF7Y29uc3RydWN0b3Ioe2Jhc2VVcmw6ZSxjbGllbnRJZDpyfSl7dGhpcy5iYXNlVXJsPWUsdGhpcy5jbGllbnRJZD1yfWFzeW5jIGdldCh7aGVhZGVyczplLHNpZ25hbDpyLGNhY2hlOm4sLi4uc30pe2NvbnN0IGk9dGhpcy5jcmVhdGVVcmwocyk7cmV0dXJuKGF3YWl0IE9wKGkse21ldGhvZDoiR0VUIixoZWFkZXJzOmUsc2lnbmFsOnIsY2FjaGU6bn0pKS5qc29uKCl9YXN5bmMgZ2V0QmxvYih7aGVhZGVyczplLHNpZ25hbDpyLC4uLm59KXtjb25zdCBzPXRoaXMuY3JlYXRlVXJsKG4pO3JldHVybihhd2FpdCBPcChzLHttZXRob2Q6IkdFVCIsaGVhZGVyczplLHNpZ25hbDpyfSkpLmJsb2IoKX1hc3luYyBwb3N0KHtib2R5OmUsaGVhZGVyczpyLHNpZ25hbDpuLC4uLnN9KXtjb25zdCBpPXRoaXMuY3JlYXRlVXJsKHMpO3JldHVybihhd2FpdCBPcChpLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6cixib2R5OmU/SlNPTi5zdHJpbmdpZnkoZSk6dm9pZCAwLHNpZ25hbDpufSkpLmpzb24oKX1hc3luYyBwdXQoe2JvZHk6ZSxoZWFkZXJzOnIsc2lnbmFsOm4sLi4uc30pe2NvbnN0IGk9dGhpcy5jcmVhdGVVcmwocyk7cmV0dXJuKGF3YWl0IE9wKGkse21ldGhvZDoiUFVUIixoZWFkZXJzOnIsYm9keTplP0pTT04uc3RyaW5naWZ5KGUpOnZvaWQgMCxzaWduYWw6bn0pKS5qc29uKCl9YXN5bmMgZGVsZXRlKHtib2R5OmUsaGVhZGVyczpyLHNpZ25hbDpuLC4uLnN9KXtjb25zdCBpPXRoaXMuY3JlYXRlVXJsKHMpO3JldHVybihhd2FpdCBPcChpLHttZXRob2Q6IkRFTEVURSIsaGVhZGVyczpyLGJvZHk6ZT9KU09OLnN0cmluZ2lmeShlKTp2b2lkIDAsc2lnbmFsOm59KSkuanNvbigpfWNyZWF0ZVVybCh7cGF0aDplLHBhcmFtczpyfSl7Y29uc3Qgbj1uZXcgVVJMKGUsdGhpcy5iYXNlVXJsKTtyZXR1cm4gciYmT2JqZWN0LmVudHJpZXMocikuZm9yRWFjaCgoW3MsaV0pPT57aSYmbi5zZWFyY2hQYXJhbXMuYXBwZW5kKHMsaSl9KSx0aGlzLmNsaWVudElkJiZuLnNlYXJjaFBhcmFtcy5hcHBlbmQoImNsaWVudElkIix0aGlzLmNsaWVudElkKSxufX1jb25zdCAkRz17Z2V0RmVhdHVyZVZhbHVlKHQsZSl7Y29uc3Qgcj1lPy5bdF07cmV0dXJuIHI9PT12b2lkIDA/dHQuREVGQVVMVF9GRUFUVVJFU1t0XTpyfSxmaWx0ZXJTb2NpYWxzQnlQbGF0Zm9ybSh0KXtpZighdHx8IXQubGVuZ3RoKXJldHVybiB0O2lmKHVlLmlzVGVsZWdyYW0oKSl7aWYodWUuaXNJb3MoKSlyZXR1cm4gdC5maWx0ZXIoZT0+ZSE9PSJnb29nbGUiKTtpZih1ZS5pc01hYygpKXJldHVybiB0LmZpbHRlcihlPT5lIT09IngiKTtpZih1ZS5pc0FuZHJvaWQoKSlyZXR1cm4gdC5maWx0ZXIoZT0+IVsiZmFjZWJvb2siLCJ4Il0uaW5jbHVkZXMoZSkpfXJldHVybiB0fX0sUWU9enQoe2ZlYXR1cmVzOnR0LkRFRkFVTFRfRkVBVFVSRVMscHJvamVjdElkOiIiLHNka1R5cGU6ImFwcGtpdCIsc2RrVmVyc2lvbjoiaHRtbC13YWdtaS11bmRlZmluZWQiLGRlZmF1bHRBY2NvdW50VHlwZXM6dHQuREVGQVVMVF9BQ0NPVU5UX1RZUEVTLGVuYWJsZU5ldHdvcmtTd2l0Y2g6ITAsZXhwZXJpbWVudGFsX3ByZWZlclVuaXZlcnNhbExpbmtzOiExLHJlbW90ZUZlYXR1cmVzOnt9fSksY2U9e3N0YXRlOlFlLHN1YnNjcmliZUtleSh0LGUpe3JldHVybiBXcihRZSx0LGUpfSxzZXRPcHRpb25zKHQpe09iamVjdC5hc3NpZ24oUWUsdCl9LHNldFJlbW90ZUZlYXR1cmVzKHQpe2lmKCF0KXJldHVybjtjb25zdCBlPXsuLi5RZS5yZW1vdGVGZWF0dXJlcywuLi50fTtRZS5yZW1vdGVGZWF0dXJlcz1lLFFlLnJlbW90ZUZlYXR1cmVzPy5zb2NpYWxzJiYoUWUucmVtb3RlRmVhdHVyZXMuc29jaWFscz0kRy5maWx0ZXJTb2NpYWxzQnlQbGF0Zm9ybShRZS5yZW1vdGVGZWF0dXJlcy5zb2NpYWxzKSl9LHNldEZlYXR1cmVzKHQpe2lmKCF0KXJldHVybjtRZS5mZWF0dXJlc3x8KFFlLmZlYXR1cmVzPXR0LkRFRkFVTFRfRkVBVFVSRVMpO2NvbnN0IGU9ey4uLlFlLmZlYXR1cmVzLC4uLnR9O1FlLmZlYXR1cmVzPWV9LHNldFByb2plY3RJZCh0KXtRZS5wcm9qZWN0SWQ9dH0sc2V0Q3VzdG9tUnBjVXJscyh0KXtRZS5jdXN0b21ScGNVcmxzPXR9LHNldEFsbFdhbGxldHModCl7UWUuYWxsV2FsbGV0cz10fSxzZXRJbmNsdWRlV2FsbGV0SWRzKHQpe1FlLmluY2x1ZGVXYWxsZXRJZHM9dH0sc2V0RXhjbHVkZVdhbGxldElkcyh0KXtRZS5leGNsdWRlV2FsbGV0SWRzPXR9LHNldEZlYXR1cmVkV2FsbGV0SWRzKHQpe1FlLmZlYXR1cmVkV2FsbGV0SWRzPXR9LHNldFRva2Vucyh0KXtRZS50b2tlbnM9dH0sc2V0VGVybXNDb25kaXRpb25zVXJsKHQpe1FlLnRlcm1zQ29uZGl0aW9uc1VybD10fSxzZXRQcml2YWN5UG9saWN5VXJsKHQpe1FlLnByaXZhY3lQb2xpY3lVcmw9dH0sc2V0Q3VzdG9tV2FsbGV0cyh0KXtRZS5jdXN0b21XYWxsZXRzPXR9LHNldElzU2l3ZUVuYWJsZWQodCl7UWUuaXNTaXdlRW5hYmxlZD10fSxzZXRJc1VuaXZlcnNhbFByb3ZpZGVyKHQpe1FlLmlzVW5pdmVyc2FsUHJvdmlkZXI9dH0sc2V0U2RrVmVyc2lvbih0KXtRZS5zZGtWZXJzaW9uPXR9LHNldE1ldGFkYXRhKHQpe1FlLm1ldGFkYXRhPXR9LHNldERpc2FibGVBcHBlbmQodCl7UWUuZGlzYWJsZUFwcGVuZD10fSxzZXRFSVA2OTYzRW5hYmxlZCh0KXtRZS5lbmFibGVFSVA2OTYzPXR9LHNldERlYnVnKHQpe1FlLmRlYnVnPXR9LHNldEVuYWJsZVdhbGxldENvbm5lY3QodCl7UWUuZW5hYmxlV2FsbGV0Q29ubmVjdD10fSxzZXRFbmFibGVXYWxsZXRHdWlkZSh0KXtRZS5lbmFibGVXYWxsZXRHdWlkZT10fSxzZXRFbmFibGVBdXRoTG9nZ2VyKHQpe1FlLmVuYWJsZUF1dGhMb2dnZXI9dH0sc2V0RW5hYmxlV2FsbGV0cyh0KXtRZS5lbmFibGVXYWxsZXRzPXR9LHNldFByZWZlclVuaXZlcnNhbExpbmtzKHQpe1FlLmV4cGVyaW1lbnRhbF9wcmVmZXJVbml2ZXJzYWxMaW5rcz10fSxzZXRIYXNNdWx0aXBsZUFkZHJlc3Nlcyh0KXtRZS5oYXNNdWx0aXBsZUFkZHJlc3Nlcz10fSxzZXRTSVdYKHQpe1FlLnNpd3g9dH0sc2V0Q29ubmVjdE1ldGhvZHNPcmRlcih0KXtRZS5mZWF0dXJlcz17Li4uUWUuZmVhdHVyZXMsY29ubmVjdE1ldGhvZHNPcmRlcjp0fX0sc2V0V2FsbGV0RmVhdHVyZXNPcmRlcih0KXtRZS5mZWF0dXJlcz17Li4uUWUuZmVhdHVyZXMsd2FsbGV0RmVhdHVyZXNPcmRlcjp0fX0sc2V0U29jaWFsc09yZGVyKHQpe1FlLnJlbW90ZUZlYXR1cmVzPXsuLi5RZS5yZW1vdGVGZWF0dXJlcyxzb2NpYWxzOnR9fSxzZXRDb2xsYXBzZVdhbGxldHModCl7UWUuZmVhdHVyZXM9ey4uLlFlLmZlYXR1cmVzLGNvbGxhcHNlV2FsbGV0czp0fX0sc2V0RW5hYmxlRW1iZWRkZWQodCl7UWUuZW5hYmxlRW1iZWRkZWQ9dH0sc2V0QWxsb3dVbnN1cHBvcnRlZENoYWluKHQpe1FlLmFsbG93VW5zdXBwb3J0ZWRDaGFpbj10fSxzZXRNYW51YWxXQ0NvbnRyb2wodCl7UWUubWFudWFsV0NDb250cm9sPXR9LHNldEVuYWJsZU5ldHdvcmtTd2l0Y2godCl7UWUuZW5hYmxlTmV0d29ya1N3aXRjaD10fSxzZXREZWZhdWx0QWNjb3VudFR5cGVzKHQ9e30pe09iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKFtlLHJdKT0+e3ImJihRZS5kZWZhdWx0QWNjb3VudFR5cGVzW2VdPXIpfSl9LHNldFVuaXZlcnNhbFByb3ZpZGVyQ29uZmlnT3ZlcnJpZGUodCl7UWUudW5pdmVyc2FsUHJvdmlkZXJDb25maWdPdmVycmlkZT10fSxnZXRVbml2ZXJzYWxQcm92aWRlckNvbmZpZ092ZXJyaWRlKCl7cmV0dXJuIFFlLnVuaXZlcnNhbFByb3ZpZGVyQ29uZmlnT3ZlcnJpZGV9LGdldFNuYXBzaG90KCl7cmV0dXJuIFUwKFFlKX19LE1HPU9iamVjdC5mcmVlemUoe2VuYWJsZWQ6ITAsZXZlbnRzOltdfSksREc9bmV3IGExKHtiYXNlVXJsOnVlLmdldEFuYWx5dGljc1VybCgpLGNsaWVudElkOm51bGx9KSxCRz01LExHPTYwKjFlMyxIYT16dCh7Li4uTUd9KSxVRz17c3RhdGU6SGEsc3Vic2NyaWJlS2V5KHQsZSl7cmV0dXJuIFdyKEhhLHQsZSl9LGFzeW5jIHNlbmRFcnJvcih0LGUpe2lmKCFIYS5lbmFibGVkKXJldHVybjtjb25zdCByPURhdGUubm93KCk7aWYoSGEuZXZlbnRzLmZpbHRlcihpPT57Y29uc3Qgbz1uZXcgRGF0ZShpLnByb3BlcnRpZXMudGltZXN0YW1wfHwiIikuZ2V0VGltZSgpO3JldHVybiByLW88TEd9KS5sZW5ndGg+PUJHKXJldHVybjtjb25zdCBzPXt0eXBlOiJlcnJvciIsZXZlbnQ6ZSxwcm9wZXJ0aWVzOntlcnJvclR5cGU6dC5uYW1lLGVycm9yTWVzc2FnZTp0Lm1lc3NhZ2Usc3RhY2tUcmFjZTp0LnN0YWNrLHRpbWVzdGFtcDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9fTtIYS5ldmVudHMucHVzaChzKTt0cnl7aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuO2NvbnN0e3Byb2plY3RJZDppLHNka1R5cGU6byxzZGtWZXJzaW9uOmF9PWNlLnN0YXRlO2F3YWl0IERHLnBvc3Qoe3BhdGg6Ii9lIixwYXJhbXM6e3Byb2plY3RJZDppLHN0Om8sc3Y6YXx8Imh0bWwtd2FnbWktNC4yLjIifSxib2R5OntldmVudElkOnVlLmdldFVVSUQoKSx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsZG9tYWluOndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSx0aW1lc3RhbXA6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLHByb3BzOnt0eXBlOiJlcnJvciIsZXZlbnQ6ZSxlcnJvclR5cGU6dC5uYW1lLGVycm9yTWVzc2FnZTp0Lm1lc3NhZ2Usc3RhY2tUcmFjZTp0LnN0YWNrfX19KX1jYXRjaChpKXtjb25zb2xlLmVycm9yKCJFcnJvciBzZW5kaW5nIHRlbGVtZXRyeSBldmVudDoiLGkpfX0sZW5hYmxlKCl7SGEuZW5hYmxlZD0hMH0sZGlzYWJsZSgpe0hhLmVuYWJsZWQ9ITF9LGNsZWFyRXZlbnRzKCl7SGEuZXZlbnRzPVtdfX07Y2xhc3MgajAgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHIsbil7c3VwZXIoZSksdGhpcy5uYW1lPSJBcHBLaXRFcnJvciIsdGhpcy5jYXRlZ29yeT1yLHRoaXMub3JpZ2luYWxFcnJvcj1uLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLGowKX19ZnVuY3Rpb24gQTcodCxlKXtjb25zdCByPXQgaW5zdGFuY2VvZiBqMD90Om5ldyBqMCh0IGluc3RhbmNlb2YgRXJyb3I/dC5tZXNzYWdlOlN0cmluZyh0KSxlLHQpO3Rocm93IFVHLnNlbmRFcnJvcihyLHIuY2F0ZWdvcnkpLHJ9ZnVuY3Rpb24gV24odCxlPSJJTlRFUk5BTF9TREtfRVJST1IiKXtjb25zdCByPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKG49Pntjb25zdCBzPXRbbl07aWYodHlwZW9mIHM9PSJmdW5jdGlvbiIpe2xldCBpPXM7cy5jb25zdHJ1Y3Rvci5uYW1lPT09IkFzeW5jRnVuY3Rpb24iP2k9YXN5bmMoLi4ubyk9Pnt0cnl7cmV0dXJuIGF3YWl0IHMoLi4ubyl9Y2F0Y2goYSl7cmV0dXJuIEE3KGEsZSl9fTppPSguLi5vKT0+e3RyeXtyZXR1cm4gcyguLi5vKX1jYXRjaChhKXtyZXR1cm4gQTcoYSxlKX19LHJbbl09aX1lbHNlIHJbbl09c30pLHJ9Y29uc3QgRkc9e2hhbmRsZU1vYmlsZURlZXBsaW5rUmVkaXJlY3QodCl7Y29uc3QgZT13aW5kb3cubG9jYXRpb24uaHJlZixyPWVuY29kZVVSSUNvbXBvbmVudChlKTtpZih0PT09IlBoYW50b20iJiYhKCJwaGFudG9tImluIHdpbmRvdykpe2NvbnN0IG49ZS5zdGFydHNXaXRoKCJodHRwcyIpPyJodHRwcyI6Imh0dHAiLHM9ZS5zcGxpdCgiLyIpWzJdLGk9ZW5jb2RlVVJJQ29tcG9uZW50KGAke259Oi8vJHtzfWApO3dpbmRvdy5sb2NhdGlvbi5ocmVmPWBodHRwczovL3BoYW50b20uYXBwL3VsL2Jyb3dzZS8ke3J9P3JlZj0ke2l9YH1XLnN0YXRlLmFjdGl2ZUNoYWluPT09eWUuQ0hBSU4uU09MQU5BJiZ0PT09IkNvaW5iYXNlIFdhbGxldCImJiEoImNvaW5iYXNlU29sYW5hImluIHdpbmRvdykmJih3aW5kb3cubG9jYXRpb24uaHJlZj1gaHR0cHM6Ly9nby5jYi13LmNvbS9kYXBwP2NiX3VybD0ke3J9YCl9fSx3aT16dCh7d2FsbGV0SW1hZ2VzOnt9LG5ldHdvcmtJbWFnZXM6e30sY2hhaW5JbWFnZXM6e30sY29ubmVjdG9ySW1hZ2VzOnt9LHRva2VuSW1hZ2VzOnt9LGN1cnJlbmN5SW1hZ2VzOnt9fSksakc9e3N0YXRlOndpLHN1YnNjcmliZU5ldHdvcmtJbWFnZXModCl7cmV0dXJuIEtyKHdpLm5ldHdvcmtJbWFnZXMsKCk9PnQod2kubmV0d29ya0ltYWdlcykpfSxzdWJzY3JpYmVLZXkodCxlKXtyZXR1cm4gV3Iod2ksdCxlKX0sc3Vic2NyaWJlKHQpe3JldHVybiBLcih3aSwoKT0+dCh3aSkpfSxzZXRXYWxsZXRJbWFnZSh0LGUpe3dpLndhbGxldEltYWdlc1t0XT1lfSxzZXROZXR3b3JrSW1hZ2UodCxlKXt3aS5uZXR3b3JrSW1hZ2VzW3RdPWV9LHNldENoYWluSW1hZ2UodCxlKXt3aS5jaGFpbkltYWdlc1t0XT1lfSxzZXRDb25uZWN0b3JJbWFnZSh0LGUpe3dpLmNvbm5lY3RvckltYWdlcz17Li4ud2kuY29ubmVjdG9ySW1hZ2VzLFt0XTplfX0sc2V0VG9rZW5JbWFnZSh0LGUpe3dpLnRva2VuSW1hZ2VzW3RdPWV9LHNldEN1cnJlbmN5SW1hZ2UodCxlKXt3aS5jdXJyZW5jeUltYWdlc1t0XT1lfX0sVnQ9V24oakcpLHpHPXtlaXAxNTU6ImJhMGJhMGNkLTE3YzYtNDgwNi1hZDkzLWY5ZDE3NGYxNzkwMCIsc29sYW5hOiJhMWI1ODg5OS1mNjcxLTQyNzYtNmE1ZS01NmNhNWJkNTk3MDAiLHBvbGthZG90OiIiLGJpcDEyMjoiMGI0ODM4ZGItMDE2MS00ZmZlLTAyMmQtNTMyYmYwM2RiYTAwIixjb3Ntb3M6IiJ9LHAyPXp0KHtuZXR3b3JrSW1hZ2VQcm9taXNlczp7fX0pLGR0PXthc3luYyBmZXRjaFdhbGxldEltYWdlKHQpe2lmKHQpcmV0dXJuIGF3YWl0IFJlLl9mZXRjaFdhbGxldEltYWdlKHQpLHRoaXMuZ2V0V2FsbGV0SW1hZ2VCeUlkKHQpfSxhc3luYyBmZXRjaE5ldHdvcmtJbWFnZSh0KXtpZighdClyZXR1cm47Y29uc3QgZT10aGlzLmdldE5ldHdvcmtJbWFnZUJ5SWQodCk7cmV0dXJuIGV8fChwMi5uZXR3b3JrSW1hZ2VQcm9taXNlc1t0XXx8KHAyLm5ldHdvcmtJbWFnZVByb21pc2VzW3RdPVJlLl9mZXRjaE5ldHdvcmtJbWFnZSh0KSksYXdhaXQgcDIubmV0d29ya0ltYWdlUHJvbWlzZXNbdF0sdGhpcy5nZXROZXR3b3JrSW1hZ2VCeUlkKHQpKX0sZ2V0V2FsbGV0SW1hZ2VCeUlkKHQpe2lmKHQpcmV0dXJuIFZ0LnN0YXRlLndhbGxldEltYWdlc1t0XX0sZ2V0V2FsbGV0SW1hZ2UodCl7aWYodD8uaW1hZ2VfdXJsKXJldHVybiB0Py5pbWFnZV91cmw7aWYodD8uaW1hZ2VfaWQpcmV0dXJuIFZ0LnN0YXRlLndhbGxldEltYWdlc1t0LmltYWdlX2lkXX0sZ2V0TmV0d29ya0ltYWdlKHQpe2lmKHQ/LmFzc2V0cz8uaW1hZ2VVcmwpcmV0dXJuIHQ/LmFzc2V0cz8uaW1hZ2VVcmw7aWYodD8uYXNzZXRzPy5pbWFnZUlkKXJldHVybiBWdC5zdGF0ZS5uZXR3b3JrSW1hZ2VzW3QuYXNzZXRzLmltYWdlSWRdfSxnZXROZXR3b3JrSW1hZ2VCeUlkKHQpe2lmKHQpcmV0dXJuIFZ0LnN0YXRlLm5ldHdvcmtJbWFnZXNbdF19LGdldENvbm5lY3RvckltYWdlKHQpe2lmKHQ/LmltYWdlVXJsKXJldHVybiB0LmltYWdlVXJsO2lmKHQ/LmltYWdlSWQpcmV0dXJuIFZ0LnN0YXRlLmNvbm5lY3RvckltYWdlc1t0LmltYWdlSWRdfSxnZXRDaGFpbkltYWdlKHQpe3JldHVybiBWdC5zdGF0ZS5uZXR3b3JrSW1hZ2VzW3pHW3RdXX19LHFhPXp0KHttZXNzYWdlOiIiLHZhcmlhbnQ6ImluZm8iLG9wZW46ITF9KSxXRz17c3RhdGU6cWEsc3Vic2NyaWJlS2V5KHQsZSl7cmV0dXJuIFdyKHFhLHQsZSl9LG9wZW4odCxlKXtjb25zdHtkZWJ1ZzpyfT1jZS5zdGF0ZSx7c2hvcnRNZXNzYWdlOm4sbG9uZ01lc3NhZ2U6c309dDtyJiYocWEubWVzc2FnZT1uLHFhLnZhcmlhbnQ9ZSxxYS5vcGVuPSEwKSxzJiZjb25zb2xlLmVycm9yKHR5cGVvZiBzPT0iZnVuY3Rpb24iP3MoKTpzKX0sY2xvc2UoKXtxYS5vcGVuPSExLHFhLm1lc3NhZ2U9IiIscWEudmFyaWFudD0iaW5mbyJ9fSxQcj1XbihXRyksSEc9dWUuZ2V0QW5hbHl0aWNzVXJsKCkscUc9bmV3IGExKHtiYXNlVXJsOkhHLGNsaWVudElkOm51bGx9KSxWRz1bIk1PREFMX0NSRUFURUQiXSxGbz16dCh7dGltZXN0YW1wOkRhdGUubm93KCkscmVwb3J0ZWRFcnJvcnM6e30sZGF0YTp7dHlwZToidHJhY2siLGV2ZW50OiJNT0RBTF9DUkVBVEVEIn19KSxJZT17c3RhdGU6Rm8sc3Vic2NyaWJlKHQpe3JldHVybiBLcihGbywoKT0+dChGbykpfSxnZXRTZGtQcm9wZXJ0aWVzKCl7Y29uc3R7cHJvamVjdElkOnQsc2RrVHlwZTplLHNka1ZlcnNpb246cn09Y2Uuc3RhdGU7cmV0dXJue3Byb2plY3RJZDp0LHN0OmUsc3Y6cnx8Imh0bWwtd2FnbWktNC4yLjIifX0sYXN5bmMgX3NlbmRBbmFseXRpY3NFdmVudCh0KXt0cnl7Y29uc3QgZT1vZS5zdGF0ZS5hZGRyZXNzO2lmKFZHLmluY2x1ZGVzKHQuZGF0YS5ldmVudCl8fHR5cGVvZiB3aW5kb3c+InUiKXJldHVybjthd2FpdCBxRy5wb3N0KHtwYXRoOiIvZSIscGFyYW1zOkllLmdldFNka1Byb3BlcnRpZXMoKSxib2R5OntldmVudElkOnVlLmdldFVVSUQoKSx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsZG9tYWluOndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSx0aW1lc3RhbXA6dC50aW1lc3RhbXAscHJvcHM6ey4uLnQuZGF0YSxhZGRyZXNzOmV9fX0pLEZvLnJlcG9ydGVkRXJyb3JzLkZPUkJJRERFTj0hMX1jYXRjaChlKXtlIGluc3RhbmNlb2YgRXJyb3ImJmUuY2F1c2UgaW5zdGFuY2VvZiBSZXNwb25zZSYmZS5jYXVzZS5zdGF0dXM9PT15ZS5IVFRQX1NUQVRVU19DT0RFUy5GT1JCSURERU4mJiFGby5yZXBvcnRlZEVycm9ycy5GT1JCSURERU4mJihQci5vcGVuKHtzaG9ydE1lc3NhZ2U6IkludmFsaWQgQXBwIENvbmZpZ3VyYXRpb24iLGxvbmdNZXNzYWdlOmBPcmlnaW4gJHtLZigpP3dpbmRvdy5vcmlnaW46InVrbm93biJ9IG5vdCBmb3VuZCBvbiBBbGxvd2xpc3QgLSB1cGRhdGUgY29uZmlndXJhdGlvbiBvbiBjbG91ZC5yZW93bi5jb21gfSwiZXJyb3IiKSxGby5yZXBvcnRlZEVycm9ycy5GT1JCSURERU49ITApfX0sc2VuZEV2ZW50KHQpe0ZvLnRpbWVzdGFtcD1EYXRlLm5vdygpLEZvLmRhdGE9dCxjZS5zdGF0ZS5mZWF0dXJlcz8uYW5hbHl0aWNzJiZJZS5fc2VuZEFuYWx5dGljc0V2ZW50KEZvKX19LGYyPXtQSEFOVE9NOiJhNzk3YWEzNWMwZmFkYmZjMWE1M2U3ZjY3NTE2MmVkNTIyNjk2OGI0NGExOWVlM2QyNDM4NWM2NGQxZDNjMzkzIixDT0lOQkFTRToiZmQyMGRjNDI2ZmIzNzU2NmQ4MDMyMDViMTliYmMxZDQwOTZiMjQ4YWMwNDU0OGUzY2ZiNmIzYTM4YmQwMzNhYSJ9LEdHPXVlLmdldEFwaVVybCgpLEduPW5ldyBhMSh7YmFzZVVybDpHRyxjbGllbnRJZDpudWxsfSksS0c9NDAsVDc9NCxaRz0yMCxwdD16dCh7cHJvbWlzZXM6e30scGFnZToxLGNvdW50OjAsZmVhdHVyZWQ6W10sYWxsRmVhdHVyZWQ6W10scmVjb21tZW5kZWQ6W10sYWxsUmVjb21tZW5kZWQ6W10sd2FsbGV0czpbXSxmaWx0ZXJlZFdhbGxldHM6W10sc2VhcmNoOltdLGlzQW5hbHl0aWNzRW5hYmxlZDohMSxleGNsdWRlZFdhbGxldHM6W10saXNGZXRjaGluZ1JlY29tbWVuZGVkV2FsbGV0czohMX0pLFJlPXtzdGF0ZTpwdCxzdWJzY3JpYmVLZXkodCxlKXtyZXR1cm4gV3IocHQsdCxlKX0sX2dldFNka1Byb3BlcnRpZXMoKXtjb25zdHtwcm9qZWN0SWQ6dCxzZGtUeXBlOmUsc2RrVmVyc2lvbjpyfT1jZS5zdGF0ZTtyZXR1cm57cHJvamVjdElkOnQsc3Q6ZXx8ImFwcGtpdCIsc3Y6cnx8Imh0bWwtd2FnbWktNC4yLjIifX0sX2ZpbHRlck91dEV4dGVuc2lvbnModCl7cmV0dXJuIGNlLnN0YXRlLmlzVW5pdmVyc2FsUHJvdmlkZXI/dC5maWx0ZXIoZT0+ISEoZS5tb2JpbGVfbGlua3x8ZS5kZXNrdG9wX2xpbmt8fGUud2ViYXBwX2xpbmspKTp0fSxhc3luYyBfZmV0Y2hXYWxsZXRJbWFnZSh0KXtjb25zdCBlPWAke0duLmJhc2VVcmx9L2dldFdhbGxldEltYWdlLyR7dH1gLHI9YXdhaXQgR24uZ2V0QmxvYih7cGF0aDplLHBhcmFtczpSZS5fZ2V0U2RrUHJvcGVydGllcygpfSk7VnQuc2V0V2FsbGV0SW1hZ2UodCxVUkwuY3JlYXRlT2JqZWN0VVJMKHIpKX0sYXN5bmMgX2ZldGNoTmV0d29ya0ltYWdlKHQpe2NvbnN0IGU9YCR7R24uYmFzZVVybH0vcHVibGljL2dldEFzc2V0SW1hZ2UvJHt0fWAscj1hd2FpdCBHbi5nZXRCbG9iKHtwYXRoOmUscGFyYW1zOlJlLl9nZXRTZGtQcm9wZXJ0aWVzKCl9KTtWdC5zZXROZXR3b3JrSW1hZ2UodCxVUkwuY3JlYXRlT2JqZWN0VVJMKHIpKX0sYXN5bmMgX2ZldGNoQ29ubmVjdG9ySW1hZ2UodCl7Y29uc3QgZT1gJHtHbi5iYXNlVXJsfS9wdWJsaWMvZ2V0QXNzZXRJbWFnZS8ke3R9YCxyPWF3YWl0IEduLmdldEJsb2Ioe3BhdGg6ZSxwYXJhbXM6UmUuX2dldFNka1Byb3BlcnRpZXMoKX0pO1Z0LnNldENvbm5lY3RvckltYWdlKHQsVVJMLmNyZWF0ZU9iamVjdFVSTChyKSl9LGFzeW5jIF9mZXRjaEN1cnJlbmN5SW1hZ2UodCl7Y29uc3QgZT1gJHtHbi5iYXNlVXJsfS9wdWJsaWMvZ2V0Q3VycmVuY3lJbWFnZS8ke3R9YCxyPWF3YWl0IEduLmdldEJsb2Ioe3BhdGg6ZSxwYXJhbXM6UmUuX2dldFNka1Byb3BlcnRpZXMoKX0pO1Z0LnNldEN1cnJlbmN5SW1hZ2UodCxVUkwuY3JlYXRlT2JqZWN0VVJMKHIpKX0sYXN5bmMgX2ZldGNoVG9rZW5JbWFnZSh0KXtjb25zdCBlPWAke0duLmJhc2VVcmx9L3B1YmxpYy9nZXRUb2tlbkltYWdlLyR7dH1gLHI9YXdhaXQgR24uZ2V0QmxvYih7cGF0aDplLHBhcmFtczpSZS5fZ2V0U2RrUHJvcGVydGllcygpfSk7VnQuc2V0VG9rZW5JbWFnZSh0LFVSTC5jcmVhdGVPYmplY3RVUkwocikpfSxfZmlsdGVyV2FsbGV0c0J5UGxhdGZvcm0odCl7cmV0dXJuIHVlLmlzTW9iaWxlKCk/dD8uZmlsdGVyKHI9PnIubW9iaWxlX2xpbmt8fHIuaWQ9PT1mMi5DT0lOQkFTRXx8ci5pZD09PWYyLlBIQU5UT00mJlcuc3RhdGUuYWN0aXZlQ2hhaW49PT0ic29sYW5hIik6dH0sYXN5bmMgZmV0Y2hQcm9qZWN0Q29uZmlnKCl7cmV0dXJuKGF3YWl0IEduLmdldCh7cGF0aDoiL2FwcGtpdC92MS9jb25maWciLHBhcmFtczpSZS5fZ2V0U2RrUHJvcGVydGllcygpfSkpLmZlYXR1cmVzfSxhc3luYyBmZXRjaEFsbG93ZWRPcmlnaW5zKCl7dHJ5e2NvbnN0e2FsbG93ZWRPcmlnaW5zOnR9PWF3YWl0IEduLmdldCh7cGF0aDoiL3Byb2plY3RzL3YxL29yaWdpbnMiLHBhcmFtczpSZS5fZ2V0U2RrUHJvcGVydGllcygpfSk7cmV0dXJuIHR9Y2F0Y2h7cmV0dXJuW119fSxhc3luYyBmZXRjaE5ldHdvcmtJbWFnZXMoKXtjb25zdCBlPVcuZ2V0QWxsUmVxdWVzdGVkQ2FpcE5ldHdvcmtzKCk/Lm1hcCgoe2Fzc2V0czpyfSk9PnI/LmltYWdlSWQpLmZpbHRlcihCb29sZWFuKS5maWx0ZXIocj0+IWR0LmdldE5ldHdvcmtJbWFnZUJ5SWQocikpO2UmJmF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChlLm1hcChyPT5SZS5fZmV0Y2hOZXR3b3JrSW1hZ2UocikpKX0sYXN5bmMgZmV0Y2hDb25uZWN0b3JJbWFnZXMoKXtjb25zdHtjb25uZWN0b3JzOnR9PWZlLnN0YXRlLGU9dC5tYXAoKHtpbWFnZUlkOnJ9KT0+cikuZmlsdGVyKEJvb2xlYW4pO2F3YWl0IFByb21pc2UuYWxsU2V0dGxlZChlLm1hcChyPT5SZS5fZmV0Y2hDb25uZWN0b3JJbWFnZShyKSkpfSxhc3luYyBmZXRjaEN1cnJlbmN5SW1hZ2VzKHQ9W10pe2F3YWl0IFByb21pc2UuYWxsU2V0dGxlZCh0Lm1hcChlPT5SZS5fZmV0Y2hDdXJyZW5jeUltYWdlKGUpKSl9LGFzeW5jIGZldGNoVG9rZW5JbWFnZXModD1bXSl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHQubWFwKGU9PlJlLl9mZXRjaFRva2VuSW1hZ2UoZSkpKX0sYXN5bmMgZmV0Y2hXYWxsZXRzKHQpe2NvbnN0IGU9dC5leGNsdWRlPz9bXTtSZS5fZ2V0U2RrUHJvcGVydGllcygpLnN2LnN0YXJ0c1dpdGgoImh0bWwtY29yZS0iKSYmZS5wdXNoKC4uLk9iamVjdC52YWx1ZXMoZjIpKTtjb25zdCBuPWF3YWl0IEduLmdldCh7cGF0aDoiL2dldFdhbGxldHMiLHBhcmFtczp7Li4uUmUuX2dldFNka1Byb3BlcnRpZXMoKSwuLi50LHBhZ2U6U3RyaW5nKHQucGFnZSksZW50cmllczpTdHJpbmcodC5lbnRyaWVzKSxpbmNsdWRlOnQuaW5jbHVkZT8uam9pbigiLCIpLGV4Y2x1ZGU6ZS5qb2luKCIsIil9fSk7cmV0dXJue2RhdGE6UmUuX2ZpbHRlcldhbGxldHNCeVBsYXRmb3JtKG4/LmRhdGEpfHxbXSxjb3VudDpuPy5jb3VudH19LGFzeW5jIGZldGNoRmVhdHVyZWRXYWxsZXRzKCl7Y29uc3R7ZmVhdHVyZWRXYWxsZXRJZHM6dH09Y2Uuc3RhdGU7aWYodD8ubGVuZ3RoKXtjb25zdCBlPXsuLi5SZS5fZ2V0U2RrUHJvcGVydGllcygpLHBhZ2U6MSxlbnRyaWVzOnQ/Lmxlbmd0aD8/VDcsaW5jbHVkZTp0fSx7ZGF0YTpyfT1hd2FpdCBSZS5mZXRjaFdhbGxldHMoZSksbj1bLi4ucl0uc29ydCgoaSxvKT0+dC5pbmRleE9mKGkuaWQpLXQuaW5kZXhPZihvLmlkKSkscz1uLm1hcChpPT5pLmltYWdlX2lkKS5maWx0ZXIoQm9vbGVhbik7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHMubWFwKGk9PlJlLl9mZXRjaFdhbGxldEltYWdlKGkpKSkscHQuZmVhdHVyZWQ9bixwdC5hbGxGZWF0dXJlZD1ufX0sYXN5bmMgZmV0Y2hSZWNvbW1lbmRlZFdhbGxldHMoKXt0cnl7cHQuaXNGZXRjaGluZ1JlY29tbWVuZGVkV2FsbGV0cz0hMDtjb25zdHtpbmNsdWRlV2FsbGV0SWRzOnQsZXhjbHVkZVdhbGxldElkczplLGZlYXR1cmVkV2FsbGV0SWRzOnJ9PWNlLnN0YXRlLG49Wy4uLmU/P1tdLC4uLnI/P1tdXS5maWx0ZXIoQm9vbGVhbikscz1XLmdldFJlcXVlc3RlZENhaXBOZXR3b3JrSWRzKCkuam9pbigiLCIpLGk9e3BhZ2U6MSxlbnRyaWVzOlQ3LGluY2x1ZGU6dCxleGNsdWRlOm4sY2hhaW5zOnN9LHtkYXRhOm8sY291bnQ6YX09YXdhaXQgUmUuZmV0Y2hXYWxsZXRzKGkpLGM9JGUuZ2V0UmVjZW50V2FsbGV0cygpLGw9by5tYXAodT0+dS5pbWFnZV9pZCkuZmlsdGVyKEJvb2xlYW4pLGQ9Yy5tYXAodT0+dS5pbWFnZV9pZCkuZmlsdGVyKEJvb2xlYW4pO2F3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbLi4ubCwuLi5kXS5tYXAodT0+UmUuX2ZldGNoV2FsbGV0SW1hZ2UodSkpKSxwdC5yZWNvbW1lbmRlZD1vLHB0LmFsbFJlY29tbWVuZGVkPW8scHQuY291bnQ9YT8/MH1jYXRjaHt9ZmluYWxseXtwdC5pc0ZldGNoaW5nUmVjb21tZW5kZWRXYWxsZXRzPSExfX0sYXN5bmMgZmV0Y2hXYWxsZXRzQnlQYWdlKHtwYWdlOnR9KXtjb25zdHtpbmNsdWRlV2FsbGV0SWRzOmUsZXhjbHVkZVdhbGxldElkczpyLGZlYXR1cmVkV2FsbGV0SWRzOm59PWNlLnN0YXRlLHM9Vy5nZXRSZXF1ZXN0ZWRDYWlwTmV0d29ya0lkcygpLmpvaW4oIiwiKSxpPVsuLi5wdC5yZWNvbW1lbmRlZC5tYXAoKHtpZDpkfSk9PmQpLC4uLnI/P1tdLC4uLm4/P1tdXS5maWx0ZXIoQm9vbGVhbiksbz17cGFnZTp0LGVudHJpZXM6S0csaW5jbHVkZTplLGV4Y2x1ZGU6aSxjaGFpbnM6c30se2RhdGE6YSxjb3VudDpjfT1hd2FpdCBSZS5mZXRjaFdhbGxldHMobyksbD1hLnNsaWNlKDAsWkcpLm1hcChkPT5kLmltYWdlX2lkKS5maWx0ZXIoQm9vbGVhbik7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGwubWFwKGQ9PlJlLl9mZXRjaFdhbGxldEltYWdlKGQpKSkscHQud2FsbGV0cz11ZS51bmlxdWVCeShbLi4ucHQud2FsbGV0cywuLi5SZS5fZmlsdGVyT3V0RXh0ZW5zaW9ucyhhKV0sImlkIikuZmlsdGVyKGQ9PmQuY2hhaW5zPy5zb21lKHU9PnMuaW5jbHVkZXModSkpKSxwdC5jb3VudD1jPnB0LmNvdW50P2M6cHQuY291bnQscHQucGFnZT10fSxhc3luYyBpbml0aWFsaXplRXhjbHVkZWRXYWxsZXRzKHtpZHM6dH0pe2NvbnN0IGU9e3BhZ2U6MSxlbnRyaWVzOnQubGVuZ3RoLGluY2x1ZGU6dH0se2RhdGE6cn09YXdhaXQgUmUuZmV0Y2hXYWxsZXRzKGUpO3ImJnIuZm9yRWFjaChuPT57cHQuZXhjbHVkZWRXYWxsZXRzLnB1c2goe3JkbnM6bi5yZG5zLG5hbWU6bi5uYW1lfSl9KX0sYXN5bmMgc2VhcmNoV2FsbGV0KHtzZWFyY2g6dCxiYWRnZTplfSl7Y29uc3R7aW5jbHVkZVdhbGxldElkczpyLGV4Y2x1ZGVXYWxsZXRJZHM6bn09Y2Uuc3RhdGUscz1XLmdldFJlcXVlc3RlZENhaXBOZXR3b3JrSWRzKCkuam9pbigiLCIpO3B0LnNlYXJjaD1bXTtjb25zdCBpPXtwYWdlOjEsZW50cmllczoxMDAsc2VhcmNoOnQ/LnRyaW0oKSxiYWRnZV90eXBlOmUsaW5jbHVkZTpyLGV4Y2x1ZGU6bixjaGFpbnM6c30se2RhdGE6b309YXdhaXQgUmUuZmV0Y2hXYWxsZXRzKGkpO0llLnNlbmRFdmVudCh7dHlwZToidHJhY2siLGV2ZW50OiJTRUFSQ0hfV0FMTEVUIixwcm9wZXJ0aWVzOntiYWRnZTplPz8iIixzZWFyY2g6dD8/IiJ9fSk7Y29uc3QgYT1vLm1hcChjPT5jLmltYWdlX2lkKS5maWx0ZXIoQm9vbGVhbik7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFsuLi5hLm1hcChjPT5SZS5fZmV0Y2hXYWxsZXRJbWFnZShjKSksdWUud2FpdCgzMDApXSkscHQuc2VhcmNoPVJlLl9maWx0ZXJPdXRFeHRlbnNpb25zKG8pfSxpbml0UHJvbWlzZSh0LGUpe2NvbnN0IHI9cHQucHJvbWlzZXNbdF07cmV0dXJuIHJ8fChwdC5wcm9taXNlc1t0XT1lKCkpfSxwcmVmZXRjaCh7ZmV0Y2hDb25uZWN0b3JJbWFnZXM6dD0hMCxmZXRjaEZlYXR1cmVkV2FsbGV0czplPSEwLGZldGNoUmVjb21tZW5kZWRXYWxsZXRzOnI9ITAsZmV0Y2hOZXR3b3JrSW1hZ2VzOm49ITB9PXt9KXtjb25zdCBzPVt0JiZSZS5pbml0UHJvbWlzZSgiY29ubmVjdG9ySW1hZ2VzIixSZS5mZXRjaENvbm5lY3RvckltYWdlcyksZSYmUmUuaW5pdFByb21pc2UoImZlYXR1cmVkV2FsbGV0cyIsUmUuZmV0Y2hGZWF0dXJlZFdhbGxldHMpLHImJlJlLmluaXRQcm9taXNlKCJyZWNvbW1lbmRlZFdhbGxldHMiLFJlLmZldGNoUmVjb21tZW5kZWRXYWxsZXRzKSxuJiZSZS5pbml0UHJvbWlzZSgibmV0d29ya0ltYWdlcyIsUmUuZmV0Y2hOZXR3b3JrSW1hZ2VzKV0uZmlsdGVyKEJvb2xlYW4pO3JldHVybiBQcm9taXNlLmFsbFNldHRsZWQocyl9LHByZWZldGNoQW5hbHl0aWNzQ29uZmlnKCl7Y2Uuc3RhdGUuZmVhdHVyZXM/LmFuYWx5dGljcyYmUmUuZmV0Y2hBbmFseXRpY3NDb25maWcoKX0sYXN5bmMgZmV0Y2hBbmFseXRpY3NDb25maWcoKXt0cnl7Y29uc3R7aXNBbmFseXRpY3NFbmFibGVkOnR9PWF3YWl0IEduLmdldCh7cGF0aDoiL2dldEFuYWx5dGljc0NvbmZpZyIscGFyYW1zOlJlLl9nZXRTZGtQcm9wZXJ0aWVzKCl9KTtjZS5zZXRGZWF0dXJlcyh7YW5hbHl0aWNzOnR9KX1jYXRjaHtjZS5zZXRGZWF0dXJlcyh7YW5hbHl0aWNzOiExfSl9fSxmaWx0ZXJCeU5hbWVzcGFjZXModCl7aWYoIXQ/Lmxlbmd0aCl7cHQuZmVhdHVyZWQ9cHQuYWxsRmVhdHVyZWQscHQucmVjb21tZW5kZWQ9cHQuYWxsUmVjb21tZW5kZWQ7cmV0dXJufWNvbnN0IGU9Vy5nZXRSZXF1ZXN0ZWRDYWlwTmV0d29ya0lkcygpLmpvaW4oIiwiKTtwdC5mZWF0dXJlZD1wdC5hbGxGZWF0dXJlZC5maWx0ZXIocj0+ci5jaGFpbnM/LnNvbWUobj0+ZS5pbmNsdWRlcyhuKSkpLHB0LnJlY29tbWVuZGVkPXB0LmFsbFJlY29tbWVuZGVkLmZpbHRlcihyPT5yLmNoYWlucz8uc29tZShuPT5lLmluY2x1ZGVzKG4pKSkscHQuZmlsdGVyZWRXYWxsZXRzPXB0LndhbGxldHMuZmlsdGVyKHI9PnIuY2hhaW5zPy5zb21lKG49PmUuaW5jbHVkZXMobikpKX0sY2xlYXJGaWx0ZXJCeU5hbWVzcGFjZXMoKXtwdC5maWx0ZXJlZFdhbGxldHM9W119LHNldEZpbHRlckJ5TmFtZXNwYWNlKHQpe2lmKCF0KXtwdC5mZWF0dXJlZD1wdC5hbGxGZWF0dXJlZCxwdC5yZWNvbW1lbmRlZD1wdC5hbGxSZWNvbW1lbmRlZDtyZXR1cm59Y29uc3QgZT1XLmdldFJlcXVlc3RlZENhaXBOZXR3b3JrSWRzKCkuam9pbigiLCIpO3B0LmZlYXR1cmVkPXB0LmFsbEZlYXR1cmVkLmZpbHRlcihyPT5yLmNoYWlucz8uc29tZShuPT5lLmluY2x1ZGVzKG4pKSkscHQucmVjb21tZW5kZWQ9cHQuYWxsUmVjb21tZW5kZWQuZmlsdGVyKHI9PnIuY2hhaW5zPy5zb21lKG49PmUuaW5jbHVkZXMobikpKSxwdC5maWx0ZXJlZFdhbGxldHM9cHQud2FsbGV0cy5maWx0ZXIocj0+ci5jaGFpbnM/LnNvbWUobj0+ZS5pbmNsdWRlcyhuKSkpfX0sWXQ9enQoe3ZpZXc6IkNvbm5lY3QiLGhpc3Rvcnk6WyJDb25uZWN0Il0sdHJhbnNhY3Rpb25TdGFjazpbXX0pLFlHPXtzdGF0ZTpZdCxzdWJzY3JpYmVLZXkodCxlKXtyZXR1cm4gV3IoWXQsdCxlKX0scHVzaFRyYW5zYWN0aW9uU3RhY2sodCl7WXQudHJhbnNhY3Rpb25TdGFjay5wdXNoKHQpfSxwb3BUcmFuc2FjdGlvblN0YWNrKHQpe2NvbnN0IGU9WXQudHJhbnNhY3Rpb25TdGFjay5wb3AoKTtpZighZSlyZXR1cm47Y29uc3R7b25TdWNjZXNzOnIsb25FcnJvcjpuLG9uQ2FuY2VsOnN9PWU7c3dpdGNoKHQpe2Nhc2Uic3VjY2VzcyI6cj8uKCk7YnJlYWs7Y2FzZSJlcnJvciI6bj8uKCksbmUuZ29CYWNrKCk7YnJlYWs7Y2FzZSJjYW5jZWwiOnM/LigpLG5lLmdvQmFjaygpO2JyZWFrfX0scHVzaCh0LGUpe3QhPT1ZdC52aWV3JiYoWXQudmlldz10LFl0Lmhpc3RvcnkucHVzaCh0KSxZdC5kYXRhPWUpfSxyZXNldCh0LGUpe1l0LnZpZXc9dCxZdC5oaXN0b3J5PVt0XSxZdC5kYXRhPWV9LHJlcGxhY2UodCxlKXtZdC5oaXN0b3J5LmF0KC0xKT09PXR8fChZdC52aWV3PXQsWXQuaGlzdG9yeVtZdC5oaXN0b3J5Lmxlbmd0aC0xXT10LFl0LmRhdGE9ZSl9LGdvQmFjaygpe2NvbnN0IHQ9IVcuc3RhdGUuYWN0aXZlQ2FpcEFkZHJlc3MmJm5lLnN0YXRlLnZpZXc9PT0iQ29ubmVjdGluZ0ZhcmNhc3RlciI7aWYoWXQuaGlzdG9yeS5sZW5ndGg+MSl7WXQuaGlzdG9yeS5wb3AoKTtjb25zdFtlXT1ZdC5oaXN0b3J5LnNsaWNlKC0xKTtlJiYoWXQudmlldz1lKX1lbHNlIEJlLmNsb3NlKCk7WXQuZGF0YT8ud2FsbGV0JiYoWXQuZGF0YS53YWxsZXQ9dm9pZCAwKSxzZXRUaW1lb3V0KCgpPT57aWYodCl7b2Uuc2V0RmFyY2FzdGVyVXJsKHZvaWQgMCxXLnN0YXRlLmFjdGl2ZUNoYWluKTtjb25zdCBlPWZlLmdldEF1dGhDb25uZWN0b3IoKTtlPy5wcm92aWRlcj8ucmVsb2FkKCk7Y29uc3Qgcj1VMChjZS5zdGF0ZSk7ZT8ucHJvdmlkZXI/LnN5bmNEYXBwRGF0YT8uKHttZXRhZGF0YTpyLm1ldGFkYXRhLHNka1ZlcnNpb246ci5zZGtWZXJzaW9uLHByb2plY3RJZDpyLnByb2plY3RJZCxzZGtUeXBlOnIuc2RrVHlwZX0pfX0sMTAwKX0sZ29CYWNrVG9JbmRleCh0KXtpZihZdC5oaXN0b3J5Lmxlbmd0aD4xKXtZdC5oaXN0b3J5PVl0Lmhpc3Rvcnkuc2xpY2UoMCx0KzEpO2NvbnN0W2VdPVl0Lmhpc3Rvcnkuc2xpY2UoLTEpO2UmJihZdC52aWV3PWUpfX0sZ29CYWNrT3JDbG9zZU1vZGFsKCl7bmUuc3RhdGUuaGlzdG9yeS5sZW5ndGg+MT9uZS5nb0JhY2soKTpCZS5jbG9zZSgpfX0sbmU9V24oWUcpLGpvPXp0KHt0aGVtZU1vZGU6ImRhcmsiLHRoZW1lVmFyaWFibGVzOnt9LHczbVRoZW1lVmFyaWFibGVzOnZvaWQgMH0pLEtDPXtzdGF0ZTpqbyxzdWJzY3JpYmUodCl7cmV0dXJuIEtyKGpvLCgpPT50KGpvKSl9LHNldFRoZW1lTW9kZSh0KXtqby50aGVtZU1vZGU9dDt0cnl7Y29uc3QgZT1mZS5nZXRBdXRoQ29ubmVjdG9yKCk7aWYoZSl7Y29uc3Qgcj1LQy5nZXRTbmFwc2hvdCgpLnRoZW1lVmFyaWFibGVzO2UucHJvdmlkZXIuc3luY1RoZW1lKHt0aGVtZU1vZGU6dCx0aGVtZVZhcmlhYmxlczpyLHczbVRoZW1lVmFyaWFibGVzOmdvKHIsdCl9KX19Y2F0Y2h7Y29uc29sZS5pbmZvKCJVbmFibGUgdG8gc3luYyB0aGVtZSB0byBhdXRoIGNvbm5lY3RvciIpfX0sc2V0VGhlbWVWYXJpYWJsZXModCl7am8udGhlbWVWYXJpYWJsZXM9ey4uLmpvLnRoZW1lVmFyaWFibGVzLC4uLnR9O3RyeXtjb25zdCBlPWZlLmdldEF1dGhDb25uZWN0b3IoKTtpZihlKXtjb25zdCByPUtDLmdldFNuYXBzaG90KCkudGhlbWVWYXJpYWJsZXM7ZS5wcm92aWRlci5zeW5jVGhlbWUoe3RoZW1lVmFyaWFibGVzOnIsdzNtVGhlbWVWYXJpYWJsZXM6Z28oam8udGhlbWVWYXJpYWJsZXMsam8udGhlbWVNb2RlKX0pfX1jYXRjaHtjb25zb2xlLmluZm8oIlVuYWJsZSB0byBzeW5jIHRoZW1lIHRvIGF1dGggY29ubmVjdG9yIil9fSxnZXRTbmFwc2hvdCgpe3JldHVybiBVMChqbyl9fSxadD1XbihLQyksQiQ9e2VpcDE1NTp2b2lkIDAsc29sYW5hOnZvaWQgMCxwb2xrYWRvdDp2b2lkIDAsYmlwMTIyOnZvaWQgMCxjb3Ntb3M6dm9pZCAwfSxPdD16dCh7YWxsQ29ubmVjdG9yczpbXSxjb25uZWN0b3JzOltdLGFjdGl2ZUNvbm5lY3Rvcjp2b2lkIDAsZmlsdGVyQnlOYW1lc3BhY2U6dm9pZCAwLGFjdGl2ZUNvbm5lY3Rvcklkczp7Li4uQiR9LGZpbHRlckJ5TmFtZXNwYWNlTWFwOntlaXAxNTU6ITAsc29sYW5hOiEwLHBvbGthZG90OiEwLGJpcDEyMjohMCxjb3Ntb3M6ITB9fSksSkc9e3N0YXRlOk90LHN1YnNjcmliZSh0KXtyZXR1cm4gS3IoT3QsKCk9Pnt0KE90KX0pfSxzdWJzY3JpYmVLZXkodCxlKXtyZXR1cm4gV3IoT3QsdCxlKX0saW5pdGlhbGl6ZSh0KXt0LmZvckVhY2goZT0+e2NvbnN0IHI9JGUuZ2V0Q29ubmVjdGVkQ29ubmVjdG9ySWQoZSk7ciYmZmUuc2V0Q29ubmVjdG9ySWQocixlKX0pfSxzZXRBY3RpdmVDb25uZWN0b3IodCl7dCYmKE90LmFjdGl2ZUNvbm5lY3Rvcj13dSh0KSl9LHNldENvbm5lY3RvcnModCl7dC5maWx0ZXIocz0+IU90LmFsbENvbm5lY3RvcnMuc29tZShpPT5pLmlkPT09cy5pZCYmZmUuZ2V0Q29ubmVjdG9yTmFtZShpLm5hbWUpPT09ZmUuZ2V0Q29ubmVjdG9yTmFtZShzLm5hbWUpJiZpLmNoYWluPT09cy5jaGFpbikpLmZvckVhY2gocz0+e3MudHlwZSE9PSJNVUxUSV9DSEFJTiImJk90LmFsbENvbm5lY3RvcnMucHVzaCh3dShzKSl9KTtjb25zdCByPWZlLmdldEVuYWJsZWROYW1lc3BhY2VzKCksbj1mZS5nZXRFbmFibGVkQ29ubmVjdG9ycyhyKTtPdC5jb25uZWN0b3JzPWZlLm1lcmdlTXVsdGlDaGFpbkNvbm5lY3RvcnMobil9LGZpbHRlckJ5TmFtZXNwYWNlcyh0KXtPYmplY3Qua2V5cyhPdC5maWx0ZXJCeU5hbWVzcGFjZU1hcCkuZm9yRWFjaChlPT57T3QuZmlsdGVyQnlOYW1lc3BhY2VNYXBbZV09ITF9KSx0LmZvckVhY2goZT0+e090LmZpbHRlckJ5TmFtZXNwYWNlTWFwW2VdPSEwfSksZmUudXBkYXRlQ29ubmVjdG9yc0ZvckVuYWJsZWROYW1lc3BhY2VzKCl9LGZpbHRlckJ5TmFtZXNwYWNlKHQsZSl7T3QuZmlsdGVyQnlOYW1lc3BhY2VNYXBbdF09ZSxmZS51cGRhdGVDb25uZWN0b3JzRm9yRW5hYmxlZE5hbWVzcGFjZXMoKX0sdXBkYXRlQ29ubmVjdG9yc0ZvckVuYWJsZWROYW1lc3BhY2VzKCl7Y29uc3QgdD1mZS5nZXRFbmFibGVkTmFtZXNwYWNlcygpLGU9ZmUuZ2V0RW5hYmxlZENvbm5lY3RvcnModCkscj1mZS5hcmVBbGxOYW1lc3BhY2VzRW5hYmxlZCgpO090LmNvbm5lY3RvcnM9ZmUubWVyZ2VNdWx0aUNoYWluQ29ubmVjdG9ycyhlKSxyP1JlLmNsZWFyRmlsdGVyQnlOYW1lc3BhY2VzKCk6UmUuZmlsdGVyQnlOYW1lc3BhY2VzKHQpfSxnZXRFbmFibGVkTmFtZXNwYWNlcygpe3JldHVybiBPYmplY3QuZW50cmllcyhPdC5maWx0ZXJCeU5hbWVzcGFjZU1hcCkuZmlsdGVyKChbdCxlXSk9PmUpLm1hcCgoW3RdKT0+dCl9LGdldEVuYWJsZWRDb25uZWN0b3JzKHQpe3JldHVybiBPdC5hbGxDb25uZWN0b3JzLmZpbHRlcihlPT50LmluY2x1ZGVzKGUuY2hhaW4pKX0sYXJlQWxsTmFtZXNwYWNlc0VuYWJsZWQoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyhPdC5maWx0ZXJCeU5hbWVzcGFjZU1hcCkuZXZlcnkodD0+dCl9LG1lcmdlTXVsdGlDaGFpbkNvbm5lY3RvcnModCl7Y29uc3QgZT1mZS5nZW5lcmF0ZUNvbm5lY3Rvck1hcEJ5TmFtZSh0KSxyPVtdO3JldHVybiBlLmZvckVhY2gobj0+e2NvbnN0IHM9blswXSxpPXM/LmlkPT09eWUuQ09OTkVDVE9SX0lELkFVVEg7bi5sZW5ndGg+MSYmcz9yLnB1c2goe25hbWU6cy5uYW1lLGltYWdlVXJsOnMuaW1hZ2VVcmwsaW1hZ2VJZDpzLmltYWdlSWQsY29ubmVjdG9yczpbLi4ubl0sdHlwZTppPyJBVVRIIjoiTVVMVElfQ0hBSU4iLGNoYWluOiJlaXAxNTUiLGlkOnM/LmlkfHwiIn0pOnMmJnIucHVzaChzKX0pLHJ9LGdlbmVyYXRlQ29ubmVjdG9yTWFwQnlOYW1lKHQpe2NvbnN0IGU9bmV3IE1hcDtyZXR1cm4gdC5mb3JFYWNoKHI9Pntjb25zdHtuYW1lOm59PXIscz1mZS5nZXRDb25uZWN0b3JOYW1lKG4pO2lmKCFzKXJldHVybjtjb25zdCBpPWUuZ2V0KHMpfHxbXTtpLmZpbmQoYT0+YS5jaGFpbj09PXIuY2hhaW4pfHxpLnB1c2gociksZS5zZXQocyxpKX0pLGV9LGdldENvbm5lY3Rvck5hbWUodCl7cmV0dXJuIHQmJih7IlRydXN0IFdhbGxldCI6IlRydXN0In1bdF18fHQpfSxnZXRVbmlxdWVDb25uZWN0b3JzQnlOYW1lKHQpe2NvbnN0IGU9W107cmV0dXJuIHQuZm9yRWFjaChyPT57ZS5maW5kKG49Pm4uY2hhaW49PT1yLmNoYWluKXx8ZS5wdXNoKHIpfSksZX0sYWRkQ29ubmVjdG9yKHQpe2lmKHQuaWQ9PT15ZS5DT05ORUNUT1JfSUQuQVVUSCl7Y29uc3QgZT10LHI9VTAoY2Uuc3RhdGUpLG49WnQuZ2V0U25hcHNob3QoKS50aGVtZU1vZGUscz1adC5nZXRTbmFwc2hvdCgpLnRoZW1lVmFyaWFibGVzO2U/LnByb3ZpZGVyPy5zeW5jRGFwcERhdGE/Lih7bWV0YWRhdGE6ci5tZXRhZGF0YSxzZGtWZXJzaW9uOnIuc2RrVmVyc2lvbixwcm9qZWN0SWQ6ci5wcm9qZWN0SWQsc2RrVHlwZTpyLnNka1R5cGV9KSxlPy5wcm92aWRlcj8uc3luY1RoZW1lKHt0aGVtZU1vZGU6bix0aGVtZVZhcmlhYmxlczpzLHczbVRoZW1lVmFyaWFibGVzOmdvKHMsbil9KSxmZS5zZXRDb25uZWN0b3JzKFt0XSl9ZWxzZSBmZS5zZXRDb25uZWN0b3JzKFt0XSl9LGdldEF1dGhDb25uZWN0b3IodCl7Y29uc3QgZT10fHxXLnN0YXRlLmFjdGl2ZUNoYWluLHI9T3QuY29ubmVjdG9ycy5maW5kKG49Pm4uaWQ9PT15ZS5DT05ORUNUT1JfSUQuQVVUSCk7aWYocilyZXR1cm4gcj8uY29ubmVjdG9ycz8ubGVuZ3RoP3IuY29ubmVjdG9ycy5maW5kKHM9PnMuY2hhaW49PT1lKTpyfSxnZXRBbm5vdW5jZWRDb25uZWN0b3JSZG5zKCl7cmV0dXJuIE90LmNvbm5lY3RvcnMuZmlsdGVyKHQ9PnQudHlwZT09PSJBTk5PVU5DRUQiKS5tYXAodD0+dC5pbmZvPy5yZG5zKX0sZ2V0Q29ubmVjdG9yQnlJZCh0KXtyZXR1cm4gT3QuYWxsQ29ubmVjdG9ycy5maW5kKGU9PmUuaWQ9PT10KX0sZ2V0Q29ubmVjdG9yKHQsZSl7cmV0dXJuIE90LmFsbENvbm5lY3RvcnMuZmlsdGVyKG49Pm4uY2hhaW49PT1XLnN0YXRlLmFjdGl2ZUNoYWluKS5maW5kKG49Pm4uZXhwbG9yZXJJZD09PXR8fG4uaW5mbz8ucmRucz09PWUpfSxzeW5jSWZBdXRoQ29ubmVjdG9yKHQpe2lmKHQuaWQhPT0iSURfQVVUSCIpcmV0dXJuO2NvbnN0IGU9dCxyPVUwKGNlLnN0YXRlKSxuPVp0LmdldFNuYXBzaG90KCkudGhlbWVNb2RlLHM9WnQuZ2V0U25hcHNob3QoKS50aGVtZVZhcmlhYmxlcztlPy5wcm92aWRlcj8uc3luY0RhcHBEYXRhPy4oe21ldGFkYXRhOnIubWV0YWRhdGEsc2RrVmVyc2lvbjpyLnNka1ZlcnNpb24sc2RrVHlwZTpyLnNka1R5cGUscHJvamVjdElkOnIucHJvamVjdElkfSksZS5wcm92aWRlci5zeW5jVGhlbWUoe3RoZW1lTW9kZTpuLHRoZW1lVmFyaWFibGVzOnMsdzNtVGhlbWVWYXJpYWJsZXM6Z28ocyxuKX0pfSxnZXRDb25uZWN0b3JzQnlOYW1lc3BhY2UodCl7Y29uc3QgZT1PdC5hbGxDb25uZWN0b3JzLmZpbHRlcihyPT5yLmNoYWluPT09dCk7cmV0dXJuIGZlLm1lcmdlTXVsdGlDaGFpbkNvbm5lY3RvcnMoZSl9LHNlbGVjdFdhbGxldENvbm5lY3Rvcih0KXtjb25zdCBlPWZlLmdldENvbm5lY3Rvcih0LmlkLHQucmRucyk7RkcuaGFuZGxlTW9iaWxlRGVlcGxpbmtSZWRpcmVjdChlPy5uYW1lfHx0Lm5hbWV8fCIiKSxlP25lLnB1c2goIkNvbm5lY3RpbmdFeHRlcm5hbCIse2Nvbm5lY3RvcjplfSk6bmUucHVzaCgiQ29ubmVjdGluZ1dhbGxldENvbm5lY3QiLHt3YWxsZXQ6dH0pfSxnZXRDb25uZWN0b3JzKHQpe3JldHVybiB0P2ZlLmdldENvbm5lY3RvcnNCeU5hbWVzcGFjZSh0KTpmZS5tZXJnZU11bHRpQ2hhaW5Db25uZWN0b3JzKE90LmFsbENvbm5lY3RvcnMpfSxzZXRGaWx0ZXJCeU5hbWVzcGFjZSh0KXtPdC5maWx0ZXJCeU5hbWVzcGFjZT10LE90LmNvbm5lY3RvcnM9ZmUuZ2V0Q29ubmVjdG9ycyh0KSxSZS5zZXRGaWx0ZXJCeU5hbWVzcGFjZSh0KX0sc2V0Q29ubmVjdG9ySWQodCxlKXt0JiYoT3QuYWN0aXZlQ29ubmVjdG9ySWRzPXsuLi5PdC5hY3RpdmVDb25uZWN0b3JJZHMsW2VdOnR9LCRlLnNldENvbm5lY3RlZENvbm5lY3RvcklkKGUsdCkpfSxyZW1vdmVDb25uZWN0b3JJZCh0KXtPdC5hY3RpdmVDb25uZWN0b3JJZHM9ey4uLk90LmFjdGl2ZUNvbm5lY3RvcklkcyxbdF06dm9pZCAwfSwkZS5kZWxldGVDb25uZWN0ZWRDb25uZWN0b3JJZCh0KX0sZ2V0Q29ubmVjdG9ySWQodCl7aWYodClyZXR1cm4gT3QuYWN0aXZlQ29ubmVjdG9ySWRzW3RdfSxpc0Nvbm5lY3RlZCh0KXtyZXR1cm4gdD8hIU90LmFjdGl2ZUNvbm5lY3Rvcklkc1t0XTpPYmplY3QudmFsdWVzKE90LmFjdGl2ZUNvbm5lY3Rvcklkcykuc29tZShlPT4hIWUpfSxyZXNldENvbm5lY3Rvcklkcygpe090LmFjdGl2ZUNvbm5lY3Rvcklkcz17Li4uQiR9fX0sZmU9V24oSkcpO2Z1bmN0aW9uIG1nKHQsZSl7cmV0dXJuIGZlLmdldENvbm5lY3RvcklkKHQpPT09ZX1mdW5jdGlvbiBYRyh0KXtjb25zdCBlPUFycmF5LmZyb20oVy5zdGF0ZS5jaGFpbnMua2V5cygpKTtsZXQgcj1bXTtyZXR1cm4gdD8oci5wdXNoKFt0LFcuc3RhdGUuY2hhaW5zLmdldCh0KV0pLG1nKHQseWUuQ09OTkVDVE9SX0lELldBTExFVF9DT05ORUNUKT9lLmZvckVhY2gobj0+e24hPT10JiZtZyhuLHllLkNPTk5FQ1RPUl9JRC5XQUxMRVRfQ09OTkVDVCkmJnIucHVzaChbbixXLnN0YXRlLmNoYWlucy5nZXQobildKX0pOm1nKHQseWUuQ09OTkVDVE9SX0lELkFVVEgpJiZlLmZvckVhY2gobj0+e24hPT10JiZtZyhuLHllLkNPTk5FQ1RPUl9JRC5BVVRIKSYmci5wdXNoKFtuLFcuc3RhdGUuY2hhaW5zLmdldChuKV0pfSkpOnI9QXJyYXkuZnJvbShXLnN0YXRlLmNoYWlucy5lbnRyaWVzKCkpLHJ9dmFyIGdnPXtleHBvcnRzOnt9fSxJNztmdW5jdGlvbiBjMSgpe2lmKEk3KXJldHVybiBnZy5leHBvcnRzO0k3PTE7dmFyIHQ9dHlwZW9mIFJlZmxlY3Q9PSJvYmplY3QiP1JlZmxlY3Q6bnVsbCxlPXQmJnR5cGVvZiB0LmFwcGx5PT0iZnVuY3Rpb24iP3QuYXBwbHk6ZnVuY3Rpb24oXyxrLEEpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChfLGssQSl9LHI7dCYmdHlwZW9mIHQub3duS2V5cz09ImZ1bmN0aW9uIj9yPXQub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP3I9ZnVuY3Rpb24oXyl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKF8pLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKF8pKX06cj1mdW5jdGlvbihfKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoXyl9O2Z1bmN0aW9uIG4oeCl7Y29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oeCl9dmFyIHM9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihfKXtyZXR1cm4gXyE9PV99O2Z1bmN0aW9uIGkoKXtpLmluaXQuY2FsbCh0aGlzKX1nZy5leHBvcnRzPWksZ2cuZXhwb3J0cy5vbmNlPWcsaS5FdmVudEVtaXR0ZXI9aSxpLnByb3RvdHlwZS5fZXZlbnRzPXZvaWQgMCxpLnByb3RvdHlwZS5fZXZlbnRzQ291bnQ9MCxpLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMDt2YXIgbz0xMDtmdW5jdGlvbiBhKHgpe2lmKHR5cGVvZiB4IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB4KX1PYmplY3QuZGVmaW5lUHJvcGVydHkoaSwiZGVmYXVsdE1heExpc3RlbmVycyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG99LHNldDpmdW5jdGlvbih4KXtpZih0eXBlb2YgeCE9Im51bWJlciJ8fHg8MHx8cyh4KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mICJkZWZhdWx0TWF4TGlzdGVuZXJzIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK3grIi4iKTtvPXh9fSksaS5pbml0PWZ1bmN0aW9uKCl7KHRoaXMuX2V2ZW50cz09PXZvaWQgMHx8dGhpcy5fZXZlbnRzPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHMpJiYodGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCksdGhpcy5fbWF4TGlzdGVuZXJzPXRoaXMuX21heExpc3RlbmVyc3x8dm9pZCAwfSxpLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oXyl7aWYodHlwZW9mIF8hPSJudW1iZXIifHxfPDB8fHMoXykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAibiIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytfKyIuIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz1fLHRoaXN9O2Z1bmN0aW9uIGMoeCl7cmV0dXJuIHguX21heExpc3RlbmVycz09PXZvaWQgMD9pLmRlZmF1bHRNYXhMaXN0ZW5lcnM6eC5fbWF4TGlzdGVuZXJzfWkucHJvdG90eXBlLmdldE1heExpc3RlbmVycz1mdW5jdGlvbigpe3JldHVybiBjKHRoaXMpfSxpLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKF8pe2Zvcih2YXIgaz1bXSxBPTE7QTxhcmd1bWVudHMubGVuZ3RoO0ErKylrLnB1c2goYXJndW1lbnRzW0FdKTt2YXIgTT1fPT09ImVycm9yIixQPXRoaXMuX2V2ZW50cztpZihQIT09dm9pZCAwKU09TSYmUC5lcnJvcj09PXZvaWQgMDtlbHNlIGlmKCFNKXJldHVybiExO2lmKE0pe3ZhciBqO2lmKGsubGVuZ3RoPjAmJihqPWtbMF0pLGogaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBqO3ZhciBVPW5ldyBFcnJvcigiVW5oYW5kbGVkIGVycm9yLiIrKGo/IiAoIitqLm1lc3NhZ2UrIikiOiIiKSk7dGhyb3cgVS5jb250ZXh0PWosVX12YXIgVj1QW19dO2lmKFY9PT12b2lkIDApcmV0dXJuITE7aWYodHlwZW9mIFY9PSJmdW5jdGlvbiIpZShWLHRoaXMsayk7ZWxzZSBmb3IodmFyIEY9Vi5sZW5ndGgsYj1mKFYsRiksQT0wO0E8RjsrK0EpZShiW0FdLHRoaXMsayk7cmV0dXJuITB9O2Z1bmN0aW9uIGwoeCxfLGssQSl7dmFyIE0sUCxqO2lmKGEoayksUD14Ll9ldmVudHMsUD09PXZvaWQgMD8oUD14Ll9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx4Ll9ldmVudHNDb3VudD0wKTooUC5uZXdMaXN0ZW5lciE9PXZvaWQgMCYmKHguZW1pdCgibmV3TGlzdGVuZXIiLF8say5saXN0ZW5lcj9rLmxpc3RlbmVyOmspLFA9eC5fZXZlbnRzKSxqPVBbX10pLGo9PT12b2lkIDApaj1QW19dPWssKyt4Ll9ldmVudHNDb3VudDtlbHNlIGlmKHR5cGVvZiBqPT0iZnVuY3Rpb24iP2o9UFtfXT1BP1trLGpdOltqLGtdOkE/ai51bnNoaWZ0KGspOmoucHVzaChrKSxNPWMoeCksTT4wJiZqLmxlbmd0aD5NJiYhai53YXJuZWQpe2oud2FybmVkPSEwO3ZhciBVPW5ldyBFcnJvcigiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAiK2oubGVuZ3RoKyIgIitTdHJpbmcoXykrIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0Iik7VS5uYW1lPSJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmciLFUuZW1pdHRlcj14LFUudHlwZT1fLFUuY291bnQ9ai5sZW5ndGgsbihVKX1yZXR1cm4geH1pLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihfLGspe3JldHVybiBsKHRoaXMsXyxrLCExKX0saS5wcm90b3R5cGUub249aS5wcm90b3R5cGUuYWRkTGlzdGVuZXIsaS5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKF8sayl7cmV0dXJuIGwodGhpcyxfLGssITApfTtmdW5jdGlvbiBkKCl7aWYoIXRoaXMuZmlyZWQpcmV0dXJuIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSx0aGlzLndyYXBGbiksdGhpcy5maXJlZD0hMCxhcmd1bWVudHMubGVuZ3RoPT09MD90aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpOnRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsYXJndW1lbnRzKX1mdW5jdGlvbiB1KHgsXyxrKXt2YXIgQT17ZmlyZWQ6ITEsd3JhcEZuOnZvaWQgMCx0YXJnZXQ6eCx0eXBlOl8sbGlzdGVuZXI6a30sTT1kLmJpbmQoQSk7cmV0dXJuIE0ubGlzdGVuZXI9ayxBLndyYXBGbj1NLE19aS5wcm90b3R5cGUub25jZT1mdW5jdGlvbihfLGspe3JldHVybiBhKGspLHRoaXMub24oXyx1KHRoaXMsXyxrKSksdGhpc30saS5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lcj1mdW5jdGlvbihfLGspe3JldHVybiBhKGspLHRoaXMucHJlcGVuZExpc3RlbmVyKF8sdSh0aGlzLF8saykpLHRoaXN9LGkucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKF8sayl7dmFyIEEsTSxQLGosVTtpZihhKGspLE09dGhpcy5fZXZlbnRzLE09PT12b2lkIDApcmV0dXJuIHRoaXM7aWYoQT1NW19dLEE9PT12b2lkIDApcmV0dXJuIHRoaXM7aWYoQT09PWt8fEEubGlzdGVuZXI9PT1rKS0tdGhpcy5fZXZlbnRzQ291bnQ9PT0wP3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOihkZWxldGUgTVtfXSxNLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIixfLEEubGlzdGVuZXJ8fGspKTtlbHNlIGlmKHR5cGVvZiBBIT0iZnVuY3Rpb24iKXtmb3IoUD0tMSxqPUEubGVuZ3RoLTE7aj49MDtqLS0paWYoQVtqXT09PWt8fEFbal0ubGlzdGVuZXI9PT1rKXtVPUFbal0ubGlzdGVuZXIsUD1qO2JyZWFrfWlmKFA8MClyZXR1cm4gdGhpcztQPT09MD9BLnNoaWZ0KCk6bShBLFApLEEubGVuZ3RoPT09MSYmKE1bX109QVswXSksTS5yZW1vdmVMaXN0ZW5lciE9PXZvaWQgMCYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsXyxVfHxrKX1yZXR1cm4gdGhpc30saS5wcm90b3R5cGUub2ZmPWkucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLGkucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihfKXt2YXIgayxBLE07aWYoQT10aGlzLl9ldmVudHMsQT09PXZvaWQgMClyZXR1cm4gdGhpcztpZihBLnJlbW92ZUxpc3RlbmVyPT09dm9pZCAwKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MD8odGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCk6QVtfXSE9PXZvaWQgMCYmKC0tdGhpcy5fZXZlbnRzQ291bnQ9PT0wP3RoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpOmRlbGV0ZSBBW19dKSx0aGlzO2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXt2YXIgUD1PYmplY3Qua2V5cyhBKSxqO2ZvcihNPTA7TTxQLmxlbmd0aDsrK00paj1QW01dLGohPT0icmVtb3ZlTGlzdGVuZXIiJiZ0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhqKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoInJlbW92ZUxpc3RlbmVyIiksdGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCx0aGlzfWlmKGs9QVtfXSx0eXBlb2Ygaz09ImZ1bmN0aW9uIil0aGlzLnJlbW92ZUxpc3RlbmVyKF8sayk7ZWxzZSBpZihrIT09dm9pZCAwKWZvcihNPWsubGVuZ3RoLTE7TT49MDtNLS0pdGhpcy5yZW1vdmVMaXN0ZW5lcihfLGtbTV0pO3JldHVybiB0aGlzfTtmdW5jdGlvbiBoKHgsXyxrKXt2YXIgQT14Ll9ldmVudHM7aWYoQT09PXZvaWQgMClyZXR1cm5bXTt2YXIgTT1BW19dO3JldHVybiBNPT09dm9pZCAwP1tdOnR5cGVvZiBNPT0iZnVuY3Rpb24iP2s/W00ubGlzdGVuZXJ8fE1dOltNXTprP3coTSk6ZihNLE0ubGVuZ3RoKX1pLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24oXyl7cmV0dXJuIGgodGhpcyxfLCEwKX0saS5wcm90b3R5cGUucmF3TGlzdGVuZXJzPWZ1bmN0aW9uKF8pe3JldHVybiBoKHRoaXMsXywhMSl9LGkubGlzdGVuZXJDb3VudD1mdW5jdGlvbih4LF8pe3JldHVybiB0eXBlb2YgeC5saXN0ZW5lckNvdW50PT0iZnVuY3Rpb24iP3gubGlzdGVuZXJDb3VudChfKTpwLmNhbGwoeCxfKX0saS5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1wO2Z1bmN0aW9uIHAoeCl7dmFyIF89dGhpcy5fZXZlbnRzO2lmKF8hPT12b2lkIDApe3ZhciBrPV9beF07aWYodHlwZW9mIGs9PSJmdW5jdGlvbiIpcmV0dXJuIDE7aWYoayE9PXZvaWQgMClyZXR1cm4gay5sZW5ndGh9cmV0dXJuIDB9aS5wcm90b3R5cGUuZXZlbnROYW1lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVudHNDb3VudD4wP3IodGhpcy5fZXZlbnRzKTpbXX07ZnVuY3Rpb24gZih4LF8pe2Zvcih2YXIgaz1uZXcgQXJyYXkoXyksQT0wO0E8XzsrK0Epa1tBXT14W0FdO3JldHVybiBrfWZ1bmN0aW9uIG0oeCxfKXtmb3IoO18rMTx4Lmxlbmd0aDtfKyspeFtfXT14W18rMV07eC5wb3AoKX1mdW5jdGlvbiB3KHgpe2Zvcih2YXIgXz1uZXcgQXJyYXkoeC5sZW5ndGgpLGs9MDtrPF8ubGVuZ3RoOysraylfW2tdPXhba10ubGlzdGVuZXJ8fHhba107cmV0dXJuIF99ZnVuY3Rpb24gZyh4LF8pe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihrLEEpe2Z1bmN0aW9uIE0oail7eC5yZW1vdmVMaXN0ZW5lcihfLFApLEEoail9ZnVuY3Rpb24gUCgpe3R5cGVvZiB4LnJlbW92ZUxpc3RlbmVyPT0iZnVuY3Rpb24iJiZ4LnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsTSksayhbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfUUoeCxfLFAse29uY2U6ITB9KSxfIT09ImVycm9yIiYmdih4LE0se29uY2U6ITB9KX0pfWZ1bmN0aW9uIHYoeCxfLGspe3R5cGVvZiB4Lm9uPT0iZnVuY3Rpb24iJiZFKHgsImVycm9yIixfLGspfWZ1bmN0aW9uIEUoeCxfLGssQSl7aWYodHlwZW9mIHgub249PSJmdW5jdGlvbiIpQS5vbmNlP3gub25jZShfLGspOngub24oXyxrKTtlbHNlIGlmKHR5cGVvZiB4LmFkZEV2ZW50TGlzdGVuZXI9PSJmdW5jdGlvbiIpeC5hZGRFdmVudExpc3RlbmVyKF8sZnVuY3Rpb24gTShQKXtBLm9uY2UmJngucmVtb3ZlRXZlbnRMaXN0ZW5lcihfLE0pLGsoUCl9KTtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAiZW1pdHRlciIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB4KX1yZXR1cm4gZ2cuZXhwb3J0c312YXIgb3M9YzEoKTtjb25zdCB5Nj16cyhvcyk7dmFyIG0yPXt9Oy8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uDQoNClBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQ0KcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSA0KUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZDQpBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQpJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00NCkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SDQpPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQpQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi92YXIgWkM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gWkM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHIsbil7ci5fX3Byb3RvX189bn18fGZ1bmN0aW9uKHIsbil7Zm9yKHZhciBzIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShzKSYmKHJbc109bltzXSl9LFpDKHQsZSl9O2Z1bmN0aW9uIFFHKHQsZSl7WkModCxlKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fXQucHJvdG90eXBlPWU9PT1udWxsP09iamVjdC5jcmVhdGUoZSk6KHIucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyByKX12YXIgWUM9ZnVuY3Rpb24oKXtyZXR1cm4gWUM9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciByLG49MSxzPWFyZ3VtZW50cy5sZW5ndGg7bjxzO24rKyl7cj1hcmd1bWVudHNbbl07Zm9yKHZhciBpIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsaSkmJihlW2ldPXJbaV0pfXJldHVybiBlfSxZQy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIGVLKHQsZSl7dmFyIHI9e307Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJmUuaW5kZXhPZihuKTwwJiYocltuXT10W25dKTtpZih0IT1udWxsJiZ0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz09ImZ1bmN0aW9uIilmb3IodmFyIHM9MCxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7czxuLmxlbmd0aDtzKyspZS5pbmRleE9mKG5bc10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0LG5bc10pJiYocltuW3NdXT10W25bc11dKTtyZXR1cm4gcn1mdW5jdGlvbiB0Syh0LGUscixuKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoLGk9czwzP2U6bj09PW51bGw/bj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUscik6bixvO2lmKHR5cGVvZiBSZWZsZWN0PT0ib2JqZWN0IiYmdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGU9PSJmdW5jdGlvbiIpaT1SZWZsZWN0LmRlY29yYXRlKHQsZSxyLG4pO2Vsc2UgZm9yKHZhciBhPXQubGVuZ3RoLTE7YT49MDthLS0pKG89dFthXSkmJihpPShzPDM/byhpKTpzPjM/byhlLHIsaSk6byhlLHIpKXx8aSk7cmV0dXJuIHM+MyYmaSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixpKSxpfWZ1bmN0aW9uIHJLKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIsbil7ZShyLG4sdCl9fWZ1bmN0aW9uIG5LKHQsZSl7aWYodHlwZW9mIFJlZmxlY3Q9PSJvYmplY3QiJiZ0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YT09ImZ1bmN0aW9uIilyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YSh0LGUpfWZ1bmN0aW9uIGlLKHQsZSxyLG4pe2Z1bmN0aW9uIHMoaSl7cmV0dXJuIGkgaW5zdGFuY2VvZiByP2k6bmV3IHIoZnVuY3Rpb24obyl7byhpKX0pfXJldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKGZ1bmN0aW9uKGksbyl7ZnVuY3Rpb24gYShkKXt0cnl7bChuLm5leHQoZCkpfWNhdGNoKHUpe28odSl9fWZ1bmN0aW9uIGMoZCl7dHJ5e2wobi50aHJvdyhkKSl9Y2F0Y2godSl7byh1KX19ZnVuY3Rpb24gbChkKXtkLmRvbmU/aShkLnZhbHVlKTpzKGQudmFsdWUpLnRoZW4oYSxjKX1sKChuPW4uYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KX1mdW5jdGlvbiBzSyh0LGUpe3ZhciByPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZihpWzBdJjEpdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119LG4scyxpLG87cmV0dXJuIG89e25leHQ6YSgwKSx0aHJvdzphKDEpLHJldHVybjphKDIpfSx0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIGEobCl7cmV0dXJuIGZ1bmN0aW9uKGQpe3JldHVybiBjKFtsLGRdKX19ZnVuY3Rpb24gYyhsKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3I7KXRyeXtpZihuPTEscyYmKGk9bFswXSYyP3MucmV0dXJuOmxbMF0/cy50aHJvd3x8KChpPXMucmV0dXJuKSYmaS5jYWxsKHMpLDApOnMubmV4dCkmJiEoaT1pLmNhbGwocyxsWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gocz0wLGkmJihsPVtsWzBdJjIsaS52YWx1ZV0pLGxbMF0pe2Nhc2UgMDpjYXNlIDE6aT1sO2JyZWFrO2Nhc2UgNDpyZXR1cm4gci5sYWJlbCsrLHt2YWx1ZTpsWzFdLGRvbmU6ITF9O2Nhc2UgNTpyLmxhYmVsKysscz1sWzFdLGw9WzBdO2NvbnRpbnVlO2Nhc2UgNzpsPXIub3BzLnBvcCgpLHIudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKGk9ci50cnlzLCEoaT1pLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKSYmKGxbMF09PT02fHxsWzBdPT09Mikpe3I9MDtjb250aW51ZX1pZihsWzBdPT09MyYmKCFpfHxsWzFdPmlbMF0mJmxbMV08aVszXSkpe3IubGFiZWw9bFsxXTticmVha31pZihsWzBdPT09NiYmci5sYWJlbDxpWzFdKXtyLmxhYmVsPWlbMV0saT1sO2JyZWFrfWlmKGkmJnIubGFiZWw8aVsyXSl7ci5sYWJlbD1pWzJdLHIub3BzLnB1c2gobCk7YnJlYWt9aVsyXSYmci5vcHMucG9wKCksci50cnlzLnBvcCgpO2NvbnRpbnVlfWw9ZS5jYWxsKHQscil9Y2F0Y2goZCl7bD1bNixkXSxzPTB9ZmluYWxseXtuPWk9MH1pZihsWzBdJjUpdGhyb3cgbFsxXTtyZXR1cm57dmFsdWU6bFswXT9sWzFdOnZvaWQgMCxkb25lOiEwfX19ZnVuY3Rpb24gb0sodCxlLHIsbil7bj09PXZvaWQgMCYmKG49ciksdFtuXT1lW3JdfWZ1bmN0aW9uIGFLKHQsZSl7Zm9yKHZhciByIGluIHQpciE9PSJkZWZhdWx0IiYmIWUuaGFzT3duUHJvcGVydHkocikmJihlW3JdPXRbcl0pfWZ1bmN0aW9uIEpDKHQpe3ZhciBlPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5pdGVyYXRvcixyPWUmJnRbZV0sbj0wO2lmKHIpcmV0dXJuIHIuY2FsbCh0KTtpZih0JiZ0eXBlb2YgdC5sZW5ndGg9PSJudW1iZXIiKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJm4+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W24rK10sZG9uZTohdH19fTt0aHJvdyBuZXcgVHlwZUVycm9yKGU/Ik9iamVjdCBpcyBub3QgaXRlcmFibGUuIjoiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpfWZ1bmN0aW9uIEwkKHQsZSl7dmFyIHI9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmdFtTeW1ib2wuaXRlcmF0b3JdO2lmKCFyKXJldHVybiB0O3ZhciBuPXIuY2FsbCh0KSxzLGk9W10sbzt0cnl7Zm9yKDsoZT09PXZvaWQgMHx8ZS0tID4wKSYmIShzPW4ubmV4dCgpKS5kb25lOylpLnB1c2gocy52YWx1ZSl9Y2F0Y2goYSl7bz17ZXJyb3I6YX19ZmluYWxseXt0cnl7cyYmIXMuZG9uZSYmKHI9bi5yZXR1cm4pJiZyLmNhbGwobil9ZmluYWxseXtpZihvKXRocm93IG8uZXJyb3J9fXJldHVybiBpfWZ1bmN0aW9uIGNLKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQoTCQoYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9ZnVuY3Rpb24gbEsoKXtmb3IodmFyIHQ9MCxlPTAscj1hcmd1bWVudHMubGVuZ3RoO2U8cjtlKyspdCs9YXJndW1lbnRzW2VdLmxlbmd0aDtmb3IodmFyIG49QXJyYXkodCkscz0wLGU9MDtlPHI7ZSsrKWZvcih2YXIgaT1hcmd1bWVudHNbZV0sbz0wLGE9aS5sZW5ndGg7bzxhO28rKyxzKyspbltzXT1pW29dO3JldHVybiBufWZ1bmN0aW9uIHowKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgejA/KHRoaXMudj10LHRoaXMpOm5ldyB6MCh0KX1mdW5jdGlvbiB1Syh0LGUscil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBuPXIuYXBwbHkodCxlfHxbXSkscyxpPVtdO3JldHVybiBzPXt9LG8oIm5leHQiKSxvKCJ0aHJvdyIpLG8oInJldHVybiIpLHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHM7ZnVuY3Rpb24gbyhoKXtuW2hdJiYoc1toXT1mdW5jdGlvbihwKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZixtKXtpLnB1c2goW2gscCxmLG1dKT4xfHxhKGgscCl9KX0pfWZ1bmN0aW9uIGEoaCxwKXt0cnl7YyhuW2hdKHApKX1jYXRjaChmKXt1KGlbMF1bM10sZil9fWZ1bmN0aW9uIGMoaCl7aC52YWx1ZSBpbnN0YW5jZW9mIHowP1Byb21pc2UucmVzb2x2ZShoLnZhbHVlLnYpLnRoZW4obCxkKTp1KGlbMF1bMl0saCl9ZnVuY3Rpb24gbChoKXthKCJuZXh0IixoKX1mdW5jdGlvbiBkKGgpe2EoInRocm93IixoKX1mdW5jdGlvbiB1KGgscCl7aChwKSxpLnNoaWZ0KCksaS5sZW5ndGgmJmEoaVswXVswXSxpWzBdWzFdKX19ZnVuY3Rpb24gZEsodCl7dmFyIGUscjtyZXR1cm4gZT17fSxuKCJuZXh0IiksbigidGhyb3ciLGZ1bmN0aW9uKHMpe3Rocm93IHN9KSxuKCJyZXR1cm4iKSxlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZTtmdW5jdGlvbiBuKHMsaSl7ZVtzXT10W3NdP2Z1bmN0aW9uKG8pe3JldHVybihyPSFyKT97dmFsdWU6ejAodFtzXShvKSksZG9uZTpzPT09InJldHVybiJ9Omk/aShvKTpvfTppfX1mdW5jdGlvbiBoSyh0KXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIGU9dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0scjtyZXR1cm4gZT9lLmNhbGwodCk6KHQ9dHlwZW9mIEpDPT0iZnVuY3Rpb24iP0pDKHQpOnRbU3ltYm9sLml0ZXJhdG9yXSgpLHI9e30sbigibmV4dCIpLG4oInRocm93IiksbigicmV0dXJuIikscltTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30scik7ZnVuY3Rpb24gbihpKXtyW2ldPXRbaV0mJmZ1bmN0aW9uKG8pe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihhLGMpe289dFtpXShvKSxzKGEsYyxvLmRvbmUsby52YWx1ZSl9KX19ZnVuY3Rpb24gcyhpLG8sYSxjKXtQcm9taXNlLnJlc29sdmUoYykudGhlbihmdW5jdGlvbihsKXtpKHt2YWx1ZTpsLGRvbmU6YX0pfSxvKX19ZnVuY3Rpb24gcEsodCxlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyYXciLHt2YWx1ZTplfSk6dC5yYXc9ZSx0fWZ1bmN0aW9uIGZLKHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZih0IT1udWxsKWZvcih2YXIgciBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfWZ1bmN0aW9uIG1LKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX1mdW5jdGlvbiBnSyh0LGUpe2lmKCFlLmhhcyh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIGUuZ2V0KHQpfWZ1bmN0aW9uIHdLKHQsZSxyKXtpZighZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLnNldCh0LHIpLHJ9Y29uc3QgYks9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGdldCBfX2Fzc2lnbigpe3JldHVybiBZQ30sX19hc3luY0RlbGVnYXRvcjpkSyxfX2FzeW5jR2VuZXJhdG9yOnVLLF9fYXN5bmNWYWx1ZXM6aEssX19hd2FpdDp6MCxfX2F3YWl0ZXI6aUssX19jbGFzc1ByaXZhdGVGaWVsZEdldDpnSyxfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0OndLLF9fY3JlYXRlQmluZGluZzpvSyxfX2RlY29yYXRlOnRLLF9fZXhwb3J0U3RhcjphSyxfX2V4dGVuZHM6UUcsX19nZW5lcmF0b3I6c0ssX19pbXBvcnREZWZhdWx0Om1LLF9faW1wb3J0U3RhcjpmSyxfX21ha2VUZW1wbGF0ZU9iamVjdDpwSyxfX21ldGFkYXRhOm5LLF9fcGFyYW06ckssX19yZWFkOkwkLF9fcmVzdDplSyxfX3NwcmVhZDpjSyxfX3NwcmVhZEFycmF5czpsSyxfX3ZhbHVlczpKQ30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxJeT1NYyhiSyk7dmFyIGcyPXt9LCRwPXt9LFI3O2Z1bmN0aW9uIHlLKCl7aWYoUjcpcmV0dXJuICRwO1I3PTEsT2JqZWN0LmRlZmluZVByb3BlcnR5KCRwLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwkcC5kZWxheT12b2lkIDA7ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IFByb21pc2Uocj0+e3NldFRpbWVvdXQoKCk9PntyKCEwKX0sZSl9KX1yZXR1cm4gJHAuZGVsYXk9dCwkcH12YXIgcGw9e30sdzI9e30sZmw9e30sTjc7ZnVuY3Rpb24gdksoKXtyZXR1cm4gTjd8fChONz0xLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmbCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZmwuT05FX1RIT1VTQU5EPWZsLk9ORV9IVU5EUkVEPXZvaWQgMCxmbC5PTkVfSFVORFJFRD0xMDAsZmwuT05FX1RIT1VTQU5EPTFlMyksZmx9dmFyIGIyPXt9LFA3O2Z1bmN0aW9uIEVLKCl7cmV0dXJuIFA3fHwoUDc9MSxmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5PTkVfWUVBUj10LkZPVVJfV0VFS1M9dC5USFJFRV9XRUVLUz10LlRXT19XRUVLUz10Lk9ORV9XRUVLPXQuVEhJUlRZX0RBWVM9dC5TRVZFTl9EQVlTPXQuRklWRV9EQVlTPXQuVEhSRUVfREFZUz10Lk9ORV9EQVk9dC5UV0VOVFlfRk9VUl9IT1VSUz10LlRXRUxWRV9IT1VSUz10LlNJWF9IT1VSUz10LlRIUkVFX0hPVVJTPXQuT05FX0hPVVI9dC5TSVhUWV9NSU5VVEVTPXQuVEhJUlRZX01JTlVURVM9dC5URU5fTUlOVVRFUz10LkZJVkVfTUlOVVRFUz10Lk9ORV9NSU5VVEU9dC5TSVhUWV9TRUNPTkRTPXQuVEhJUlRZX1NFQ09ORFM9dC5URU5fU0VDT05EUz10LkZJVkVfU0VDT05EUz10Lk9ORV9TRUNPTkQ9dm9pZCAwLHQuT05FX1NFQ09ORD0xLHQuRklWRV9TRUNPTkRTPTUsdC5URU5fU0VDT05EUz0xMCx0LlRISVJUWV9TRUNPTkRTPTMwLHQuU0lYVFlfU0VDT05EUz02MCx0Lk9ORV9NSU5VVEU9dC5TSVhUWV9TRUNPTkRTLHQuRklWRV9NSU5VVEVTPXQuT05FX01JTlVURSo1LHQuVEVOX01JTlVURVM9dC5PTkVfTUlOVVRFKjEwLHQuVEhJUlRZX01JTlVURVM9dC5PTkVfTUlOVVRFKjMwLHQuU0lYVFlfTUlOVVRFUz10Lk9ORV9NSU5VVEUqNjAsdC5PTkVfSE9VUj10LlNJWFRZX01JTlVURVMsdC5USFJFRV9IT1VSUz10Lk9ORV9IT1VSKjMsdC5TSVhfSE9VUlM9dC5PTkVfSE9VUio2LHQuVFdFTFZFX0hPVVJTPXQuT05FX0hPVVIqMTIsdC5UV0VOVFlfRk9VUl9IT1VSUz10Lk9ORV9IT1VSKjI0LHQuT05FX0RBWT10LlRXRU5UWV9GT1VSX0hPVVJTLHQuVEhSRUVfREFZUz10Lk9ORV9EQVkqMyx0LkZJVkVfREFZUz10Lk9ORV9EQVkqNSx0LlNFVkVOX0RBWVM9dC5PTkVfREFZKjcsdC5USElSVFlfREFZUz10Lk9ORV9EQVkqMzAsdC5PTkVfV0VFSz10LlNFVkVOX0RBWVMsdC5UV09fV0VFS1M9dC5PTkVfV0VFSyoyLHQuVEhSRUVfV0VFS1M9dC5PTkVfV0VFSyozLHQuRk9VUl9XRUVLUz10Lk9ORV9XRUVLKjQsdC5PTkVfWUVBUj10Lk9ORV9EQVkqMzY1fShiMikpLGIyfXZhciBPNztmdW5jdGlvbiBVJCgpe3JldHVybiBPN3x8KE83PTEsZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2NvbnN0IGU9SXk7ZS5fX2V4cG9ydFN0YXIodksoKSx0KSxlLl9fZXhwb3J0U3RhcihFSygpLHQpfSh3MikpLHcyfXZhciAkNztmdW5jdGlvbiBDSygpe2lmKCQ3KXJldHVybiBwbDskNz0xLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwbCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSkscGwuZnJvbU1pbGlzZWNvbmRzPXBsLnRvTWlsaXNlY29uZHM9dm9pZCAwO2NvbnN0IHQ9VSQoKTtmdW5jdGlvbiBlKG4pe3JldHVybiBuKnQuT05FX1RIT1VTQU5EfXBsLnRvTWlsaXNlY29uZHM9ZTtmdW5jdGlvbiByKG4pe3JldHVybiBNYXRoLmZsb29yKG4vdC5PTkVfVEhPVVNBTkQpfXJldHVybiBwbC5mcm9tTWlsaXNlY29uZHM9cixwbH12YXIgTTc7ZnVuY3Rpb24geEsoKXtyZXR1cm4gTTd8fChNNz0xLGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBlPUl5O2UuX19leHBvcnRTdGFyKHlLKCksdCksZS5fX2V4cG9ydFN0YXIoQ0soKSx0KX0oZzIpKSxnMn12YXIgQWQ9e30sRDc7ZnVuY3Rpb24gX0soKXtpZihENylyZXR1cm4gQWQ7RDc9MSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQWQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEFkLldhdGNoPXZvaWQgMDtjbGFzcyB0e2NvbnN0cnVjdG9yKCl7dGhpcy50aW1lc3RhbXBzPW5ldyBNYXB9c3RhcnQocil7aWYodGhpcy50aW1lc3RhbXBzLmhhcyhyKSl0aHJvdyBuZXcgRXJyb3IoYFdhdGNoIGFscmVhZHkgc3RhcnRlZCBmb3IgbGFiZWw6ICR7cn1gKTt0aGlzLnRpbWVzdGFtcHMuc2V0KHIse3N0YXJ0ZWQ6RGF0ZS5ub3coKX0pfXN0b3Aocil7Y29uc3Qgbj10aGlzLmdldChyKTtpZih0eXBlb2Ygbi5lbGFwc2VkPCJ1Iil0aHJvdyBuZXcgRXJyb3IoYFdhdGNoIGFscmVhZHkgc3RvcHBlZCBmb3IgbGFiZWw6ICR7cn1gKTtjb25zdCBzPURhdGUubm93KCktbi5zdGFydGVkO3RoaXMudGltZXN0YW1wcy5zZXQocix7c3RhcnRlZDpuLnN0YXJ0ZWQsZWxhcHNlZDpzfSl9Z2V0KHIpe2NvbnN0IG49dGhpcy50aW1lc3RhbXBzLmdldChyKTtpZih0eXBlb2Ygbj4idSIpdGhyb3cgbmV3IEVycm9yKGBObyB0aW1lc3RhbXAgZm91bmQgZm9yIGxhYmVsOiAke3J9YCk7cmV0dXJuIG59ZWxhcHNlZChyKXtjb25zdCBuPXRoaXMuZ2V0KHIpO3JldHVybiBuLmVsYXBzZWR8fERhdGUubm93KCktbi5zdGFydGVkfX1yZXR1cm4gQWQuV2F0Y2g9dCxBZC5kZWZhdWx0PXQsQWR9dmFyIHkyPXt9LE1wPXt9LEI3O2Z1bmN0aW9uIGtLKCl7aWYoQjcpcmV0dXJuIE1wO0I3PTEsT2JqZWN0LmRlZmluZVByb3BlcnR5KE1wLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxNcC5JV2F0Y2g9dm9pZCAwO2NsYXNzIHR7fXJldHVybiBNcC5JV2F0Y2g9dCxNcH12YXIgTDc7ZnVuY3Rpb24gU0soKXtyZXR1cm4gTDd8fChMNz0xLGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxJeS5fX2V4cG9ydFN0YXIoa0soKSx0KX0oeTIpKSx5Mn12YXIgVTc7ZnVuY3Rpb24gQUsoKXtyZXR1cm4gVTd8fChVNz0xLGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtjb25zdCBlPUl5O2UuX19leHBvcnRTdGFyKHhLKCksdCksZS5fX2V4cG9ydFN0YXIoX0soKSx0KSxlLl9fZXhwb3J0U3RhcihTSygpLHQpLGUuX19leHBvcnRTdGFyKFUkKCksdCl9KG0yKSksbTJ9dmFyIFBlPUFLKCk7Y2xhc3MgSnV7fWxldCBUSz1jbGFzcyBleHRlbmRzIEp1e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCl9fTtjb25zdCBGNz1QZS5GSVZFX1NFQ09ORFMsY3A9e3B1bHNlOiJoZWFydGJlYXRfcHVsc2UifTtsZXQgSUs9Y2xhc3MgRiQgZXh0ZW5kcyBUS3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLmV2ZW50cz1uZXcgb3MuRXZlbnRFbWl0dGVyLHRoaXMuaW50ZXJ2YWw9RjcsdGhpcy5pbnRlcnZhbD1lPy5pbnRlcnZhbHx8Rjd9c3RhdGljIGFzeW5jIGluaXQoZSl7Y29uc3Qgcj1uZXcgRiQoZSk7cmV0dXJuIGF3YWl0IHIuaW5pdCgpLHJ9YXN5bmMgaW5pdCgpe2F3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpfXN0b3AoKXtjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxSZWYpfW9uKGUscil7dGhpcy5ldmVudHMub24oZSxyKX1vbmNlKGUscil7dGhpcy5ldmVudHMub25jZShlLHIpfW9mZihlLHIpe3RoaXMuZXZlbnRzLm9mZihlLHIpfXJlbW92ZUxpc3RlbmVyKGUscil7dGhpcy5ldmVudHMucmVtb3ZlTGlzdGVuZXIoZSxyKX1hc3luYyBpbml0aWFsaXplKCl7dGhpcy5pbnRlcnZhbFJlZj1zZXRJbnRlcnZhbCgoKT0+dGhpcy5wdWxzZSgpLFBlLnRvTWlsaXNlY29uZHModGhpcy5pbnRlcnZhbCkpfXB1bHNlKCl7dGhpcy5ldmVudHMuZW1pdChjcC5wdWxzZSl9fTtjb25zdCBSSz0vIig/Ol98XFx1MHsyfTVbRmZdKXsyfSg/OnB8XFx1MHsyfTcwKSg/OnJ8XFx1MHsyfTcyKSg/Om98XFx1MHsyfTZbRmZdKSg/OnR8XFx1MHsyfTc0KSg/Om98XFx1MHsyfTZbRmZdKSg/Ol98XFx1MHsyfTVbRmZdKXsyfSJccyo6LyxOSz0vIig/OmN8XFx1MDA2MykoPzpvfFxcdTAwNltGZl0pKD86bnxcXHUwMDZbRWVdKSg/OnN8XFx1MDA3MykoPzp0fFxcdTAwNzQpKD86cnxcXHUwMDcyKSg/OnV8XFx1MDA3NSkoPzpjfFxcdTAwNjMpKD86dHxcXHUwMDc0KSg/Om98XFx1MDA2W0ZmXSkoPzpyfFxcdTAwNzIpIlxzKjovLFBLPS9eXHMqWyJbe118XlxzKi0/XGR7MSwxNn0oXC5cZHsxLDE3fSk/KFtFZV1bKy1dP1xkKyk/XHMqJC87ZnVuY3Rpb24gT0sodCxlKXtpZih0PT09Il9fcHJvdG9fXyJ8fHQ9PT0iY29uc3RydWN0b3IiJiZlJiZ0eXBlb2YgZT09Im9iamVjdCImJiJwcm90b3R5cGUiaW4gZSl7JEsodCk7cmV0dXJufXJldHVybiBlfWZ1bmN0aW9uICRLKHQpe2NvbnNvbGUud2FybihgW2Rlc3RyXSBEcm9wcGluZyAiJHt0fSIga2V5IHRvIHByZXZlbnQgcHJvdG90eXBlIHBvbGx1dGlvbi5gKX1mdW5jdGlvbiB3Zyh0LGU9e30pe2lmKHR5cGVvZiB0IT0ic3RyaW5nIilyZXR1cm4gdDtpZih0WzBdPT09JyInJiZ0W3QubGVuZ3RoLTFdPT09JyInJiZ0LmluZGV4T2YoIlxcIik9PT0tMSlyZXR1cm4gdC5zbGljZSgxLC0xKTtjb25zdCByPXQudHJpbSgpO2lmKHIubGVuZ3RoPD05KXN3aXRjaChyLnRvTG93ZXJDYXNlKCkpe2Nhc2UidHJ1ZSI6cmV0dXJuITA7Y2FzZSJmYWxzZSI6cmV0dXJuITE7Y2FzZSJ1bmRlZmluZWQiOnJldHVybjtjYXNlIm51bGwiOnJldHVybiBudWxsO2Nhc2UibmFuIjpyZXR1cm4gTnVtYmVyLk5hTjtjYXNlImluZmluaXR5IjpyZXR1cm4gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2Nhc2UiLWluZmluaXR5IjpyZXR1cm4gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZfWlmKCFQSy50ZXN0KHQpKXtpZihlLnN0cmljdCl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIltkZXN0cl0gSW52YWxpZCBKU09OIik7cmV0dXJuIHR9dHJ5e2lmKFJLLnRlc3QodCl8fE5LLnRlc3QodCkpe2lmKGUuc3RyaWN0KXRocm93IG5ldyBFcnJvcigiW2Rlc3RyXSBQb3NzaWJsZSBwcm90b3R5cGUgcG9sbHV0aW9uIik7cmV0dXJuIEpTT04ucGFyc2UodCxPSyl9cmV0dXJuIEpTT04ucGFyc2UodCl9Y2F0Y2gobil7aWYoZS5zdHJpY3QpdGhyb3cgbjtyZXR1cm4gdH19ZnVuY3Rpb24gTUsodCl7cmV0dXJuIXR8fHR5cGVvZiB0LnRoZW4hPSJmdW5jdGlvbiI/UHJvbWlzZS5yZXNvbHZlKHQpOnR9ZnVuY3Rpb24gcm4odCwuLi5lKXt0cnl7cmV0dXJuIE1LKHQoLi4uZSkpfWNhdGNoKHIpe3JldHVybiBQcm9taXNlLnJlamVjdChyKX19ZnVuY3Rpb24gREsodCl7Y29uc3QgZT10eXBlb2YgdDtyZXR1cm4gdD09PW51bGx8fGUhPT0ib2JqZWN0IiYmZSE9PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gQksodCl7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7cmV0dXJuIWV8fGUuaXNQcm90b3R5cGVPZihPYmplY3QpfWZ1bmN0aW9uIEJ3KHQpe2lmKERLKHQpKXJldHVybiBTdHJpbmcodCk7aWYoQksodCl8fEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpO2lmKHR5cGVvZiB0LnRvSlNPTj09ImZ1bmN0aW9uIilyZXR1cm4gQncodC50b0pTT04oKSk7dGhyb3cgbmV3IEVycm9yKCJbdW5zdG9yYWdlXSBDYW5ub3Qgc3RyaW5naWZ5IHZhbHVlISIpfWNvbnN0IFhDPSJiYXNlNjQ6IjtmdW5jdGlvbiBMSyh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3Q6WEMraksodCl9ZnVuY3Rpb24gVUsodCl7cmV0dXJuIHR5cGVvZiB0IT0ic3RyaW5nInx8IXQuc3RhcnRzV2l0aChYQyk/dDpGSyh0LnNsaWNlKFhDLmxlbmd0aCkpfWZ1bmN0aW9uIEZLKHQpe3JldHVybiBnbG9iYWxUaGlzLkJ1ZmZlcj9CdWZmZXIuZnJvbSh0LCJiYXNlNjQiKTpVaW50OEFycmF5LmZyb20oZ2xvYmFsVGhpcy5hdG9iKHQpLGU9PmUuY29kZVBvaW50QXQoMCkpfWZ1bmN0aW9uIGpLKHQpe3JldHVybiBnbG9iYWxUaGlzLkJ1ZmZlcj9CdWZmZXIuZnJvbSh0KS50b1N0cmluZygiYmFzZTY0Iik6Z2xvYmFsVGhpcy5idG9hKFN0cmluZy5mcm9tQ29kZVBvaW50KC4uLnQpKX1mdW5jdGlvbiBRbih0KXtyZXR1cm4gdCYmdC5zcGxpdCgiPyIpWzBdPy5yZXBsYWNlKC9bL1xcXS9nLCI6IikucmVwbGFjZSgvOisvZywiOiIpLnJlcGxhY2UoL146fDokL2csIiIpfHwiIn1mdW5jdGlvbiB6SyguLi50KXtyZXR1cm4gUW4odC5qb2luKCI6IikpfWZ1bmN0aW9uIGJnKHQpe3JldHVybiB0PVFuKHQpLHQ/dCsiOiI6IiJ9ZnVuY3Rpb24gV0sodCxlKXtpZihlPT09dm9pZCAwKXJldHVybiEwO2xldCByPTAsbj10LmluZGV4T2YoIjoiKTtmb3IoO24+LTE7KXIrKyxuPXQuaW5kZXhPZigiOiIsbisxKTtyZXR1cm4gcjw9ZX1mdW5jdGlvbiBISyh0LGUpe3JldHVybiBlP3Quc3RhcnRzV2l0aChlKSYmdFt0Lmxlbmd0aC0xXSE9PSIkIjp0W3QubGVuZ3RoLTFdIT09IiQifWNvbnN0IHFLPSJtZW1vcnkiLFZLPSgpPT57Y29uc3QgdD1uZXcgTWFwO3JldHVybntuYW1lOnFLLGdldEluc3RhbmNlOigpPT50LGhhc0l0ZW0oZSl7cmV0dXJuIHQuaGFzKGUpfSxnZXRJdGVtKGUpe3JldHVybiB0LmdldChlKT8/bnVsbH0sZ2V0SXRlbVJhdyhlKXtyZXR1cm4gdC5nZXQoZSk/P251bGx9LHNldEl0ZW0oZSxyKXt0LnNldChlLHIpfSxzZXRJdGVtUmF3KGUscil7dC5zZXQoZSxyKX0scmVtb3ZlSXRlbShlKXt0LmRlbGV0ZShlKX0sZ2V0S2V5cygpe3JldHVyblsuLi50LmtleXMoKV19LGNsZWFyKCl7dC5jbGVhcigpfSxkaXNwb3NlKCl7dC5jbGVhcigpfX19O2Z1bmN0aW9uIEdLKHQ9e30pe2NvbnN0IGU9e21vdW50czp7IiI6dC5kcml2ZXJ8fFZLKCl9LG1vdW50cG9pbnRzOlsiIl0sd2F0Y2hpbmc6ITEsd2F0Y2hMaXN0ZW5lcnM6W10sdW53YXRjaDp7fX0scj1sPT57Zm9yKGNvbnN0IGQgb2YgZS5tb3VudHBvaW50cylpZihsLnN0YXJ0c1dpdGgoZCkpcmV0dXJue2Jhc2U6ZCxyZWxhdGl2ZUtleTpsLnNsaWNlKGQubGVuZ3RoKSxkcml2ZXI6ZS5tb3VudHNbZF19O3JldHVybntiYXNlOiIiLHJlbGF0aXZlS2V5OmwsZHJpdmVyOmUubW91bnRzWyIiXX19LG49KGwsZCk9PmUubW91bnRwb2ludHMuZmlsdGVyKHU9PnUuc3RhcnRzV2l0aChsKXx8ZCYmbC5zdGFydHNXaXRoKHUpKS5tYXAodT0+KHtyZWxhdGl2ZUJhc2U6bC5sZW5ndGg+dS5sZW5ndGg/bC5zbGljZSh1Lmxlbmd0aCk6dm9pZCAwLG1vdW50cG9pbnQ6dSxkcml2ZXI6ZS5tb3VudHNbdV19KSkscz0obCxkKT0+e2lmKGUud2F0Y2hpbmcpe2Q9UW4oZCk7Zm9yKGNvbnN0IHUgb2YgZS53YXRjaExpc3RlbmVycyl1KGwsZCl9fSxpPWFzeW5jKCk9PntpZighZS53YXRjaGluZyl7ZS53YXRjaGluZz0hMDtmb3IoY29uc3QgbCBpbiBlLm1vdW50cyllLnVud2F0Y2hbbF09YXdhaXQgajcoZS5tb3VudHNbbF0scyxsKX19LG89YXN5bmMoKT0+e2lmKGUud2F0Y2hpbmcpe2Zvcihjb25zdCBsIGluIGUudW53YXRjaClhd2FpdCBlLnVud2F0Y2hbbF0oKTtlLnVud2F0Y2g9e30sZS53YXRjaGluZz0hMX19LGE9KGwsZCx1KT0+e2NvbnN0IGg9bmV3IE1hcCxwPWY9PntsZXQgbT1oLmdldChmLmJhc2UpO3JldHVybiBtfHwobT17ZHJpdmVyOmYuZHJpdmVyLGJhc2U6Zi5iYXNlLGl0ZW1zOltdfSxoLnNldChmLmJhc2UsbSkpLG19O2Zvcihjb25zdCBmIG9mIGwpe2NvbnN0IG09dHlwZW9mIGY9PSJzdHJpbmciLHc9UW4obT9mOmYua2V5KSxnPW0/dm9pZCAwOmYudmFsdWUsdj1tfHwhZi5vcHRpb25zP2Q6ey4uLmQsLi4uZi5vcHRpb25zfSxFPXIodyk7cChFKS5pdGVtcy5wdXNoKHtrZXk6dyx2YWx1ZTpnLHJlbGF0aXZlS2V5OkUucmVsYXRpdmVLZXksb3B0aW9uczp2fSl9cmV0dXJuIFByb21pc2UuYWxsKFsuLi5oLnZhbHVlcygpXS5tYXAoZj0+dShmKSkpLnRoZW4oZj0+Zi5mbGF0KCkpfSxjPXtoYXNJdGVtKGwsZD17fSl7bD1RbihsKTtjb25zdHtyZWxhdGl2ZUtleTp1LGRyaXZlcjpofT1yKGwpO3JldHVybiBybihoLmhhc0l0ZW0sdSxkKX0sZ2V0SXRlbShsLGQ9e30pe2w9UW4obCk7Y29uc3R7cmVsYXRpdmVLZXk6dSxkcml2ZXI6aH09cihsKTtyZXR1cm4gcm4oaC5nZXRJdGVtLHUsZCkudGhlbihwPT53ZyhwKSl9LGdldEl0ZW1zKGwsZD17fSl7cmV0dXJuIGEobCxkLHU9PnUuZHJpdmVyLmdldEl0ZW1zP3JuKHUuZHJpdmVyLmdldEl0ZW1zLHUuaXRlbXMubWFwKGg9Pih7a2V5OmgucmVsYXRpdmVLZXksb3B0aW9uczpoLm9wdGlvbnN9KSksZCkudGhlbihoPT5oLm1hcChwPT4oe2tleTp6Syh1LmJhc2UscC5rZXkpLHZhbHVlOndnKHAudmFsdWUpfSkpKTpQcm9taXNlLmFsbCh1Lml0ZW1zLm1hcChoPT5ybih1LmRyaXZlci5nZXRJdGVtLGgucmVsYXRpdmVLZXksaC5vcHRpb25zKS50aGVuKHA9Pih7a2V5Omgua2V5LHZhbHVlOndnKHApfSkpKSkpfSxnZXRJdGVtUmF3KGwsZD17fSl7bD1RbihsKTtjb25zdHtyZWxhdGl2ZUtleTp1LGRyaXZlcjpofT1yKGwpO3JldHVybiBoLmdldEl0ZW1SYXc/cm4oaC5nZXRJdGVtUmF3LHUsZCk6cm4oaC5nZXRJdGVtLHUsZCkudGhlbihwPT5VSyhwKSl9LGFzeW5jIHNldEl0ZW0obCxkLHU9e30pe2lmKGQ9PT12b2lkIDApcmV0dXJuIGMucmVtb3ZlSXRlbShsKTtsPVFuKGwpO2NvbnN0e3JlbGF0aXZlS2V5OmgsZHJpdmVyOnB9PXIobCk7cC5zZXRJdGVtJiYoYXdhaXQgcm4ocC5zZXRJdGVtLGgsQncoZCksdSkscC53YXRjaHx8cygidXBkYXRlIixsKSl9LGFzeW5jIHNldEl0ZW1zKGwsZCl7YXdhaXQgYShsLGQsYXN5bmMgdT0+e2lmKHUuZHJpdmVyLnNldEl0ZW1zKXJldHVybiBybih1LmRyaXZlci5zZXRJdGVtcyx1Lml0ZW1zLm1hcChoPT4oe2tleTpoLnJlbGF0aXZlS2V5LHZhbHVlOkJ3KGgudmFsdWUpLG9wdGlvbnM6aC5vcHRpb25zfSkpLGQpO3UuZHJpdmVyLnNldEl0ZW0mJmF3YWl0IFByb21pc2UuYWxsKHUuaXRlbXMubWFwKGg9PnJuKHUuZHJpdmVyLnNldEl0ZW0saC5yZWxhdGl2ZUtleSxCdyhoLnZhbHVlKSxoLm9wdGlvbnMpKSl9KX0sYXN5bmMgc2V0SXRlbVJhdyhsLGQsdT17fSl7aWYoZD09PXZvaWQgMClyZXR1cm4gYy5yZW1vdmVJdGVtKGwsdSk7bD1RbihsKTtjb25zdHtyZWxhdGl2ZUtleTpoLGRyaXZlcjpwfT1yKGwpO2lmKHAuc2V0SXRlbVJhdylhd2FpdCBybihwLnNldEl0ZW1SYXcsaCxkLHUpO2Vsc2UgaWYocC5zZXRJdGVtKWF3YWl0IHJuKHAuc2V0SXRlbSxoLExLKGQpLHUpO2Vsc2UgcmV0dXJuO3Aud2F0Y2h8fHMoInVwZGF0ZSIsbCl9LGFzeW5jIHJlbW92ZUl0ZW0obCxkPXt9KXt0eXBlb2YgZD09ImJvb2xlYW4iJiYoZD17cmVtb3ZlTWV0YTpkfSksbD1RbihsKTtjb25zdHtyZWxhdGl2ZUtleTp1LGRyaXZlcjpofT1yKGwpO2gucmVtb3ZlSXRlbSYmKGF3YWl0IHJuKGgucmVtb3ZlSXRlbSx1LGQpLChkLnJlbW92ZU1ldGF8fGQucmVtb3ZlTWF0YSkmJmF3YWl0IHJuKGgucmVtb3ZlSXRlbSx1KyIkIixkKSxoLndhdGNofHxzKCJyZW1vdmUiLGwpKX0sYXN5bmMgZ2V0TWV0YShsLGQ9e30pe3R5cGVvZiBkPT0iYm9vbGVhbiImJihkPXtuYXRpdmVPbmx5OmR9KSxsPVFuKGwpO2NvbnN0e3JlbGF0aXZlS2V5OnUsZHJpdmVyOmh9PXIobCkscD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGguZ2V0TWV0YSYmT2JqZWN0LmFzc2lnbihwLGF3YWl0IHJuKGguZ2V0TWV0YSx1LGQpKSwhZC5uYXRpdmVPbmx5KXtjb25zdCBmPWF3YWl0IHJuKGguZ2V0SXRlbSx1KyIkIixkKS50aGVuKG09PndnKG0pKTtmJiZ0eXBlb2YgZj09Im9iamVjdCImJih0eXBlb2YgZi5hdGltZT09InN0cmluZyImJihmLmF0aW1lPW5ldyBEYXRlKGYuYXRpbWUpKSx0eXBlb2YgZi5tdGltZT09InN0cmluZyImJihmLm10aW1lPW5ldyBEYXRlKGYubXRpbWUpKSxPYmplY3QuYXNzaWduKHAsZikpfXJldHVybiBwfSxzZXRNZXRhKGwsZCx1PXt9KXtyZXR1cm4gdGhpcy5zZXRJdGVtKGwrIiQiLGQsdSl9LHJlbW92ZU1ldGEobCxkPXt9KXtyZXR1cm4gdGhpcy5yZW1vdmVJdGVtKGwrIiQiLGQpfSxhc3luYyBnZXRLZXlzKGwsZD17fSl7bD1iZyhsKTtjb25zdCB1PW4obCwhMCk7bGV0IGg9W107Y29uc3QgcD1bXTtsZXQgZj0hMDtmb3IoY29uc3QgdyBvZiB1KXt3LmRyaXZlci5mbGFncz8ubWF4RGVwdGh8fChmPSExKTtjb25zdCBnPWF3YWl0IHJuKHcuZHJpdmVyLmdldEtleXMsdy5yZWxhdGl2ZUJhc2UsZCk7Zm9yKGNvbnN0IHYgb2YgZyl7Y29uc3QgRT13Lm1vdW50cG9pbnQrUW4odik7aC5zb21lKHg9PkUuc3RhcnRzV2l0aCh4KSl8fHAucHVzaChFKX1oPVt3Lm1vdW50cG9pbnQsLi4uaC5maWx0ZXIodj0+IXYuc3RhcnRzV2l0aCh3Lm1vdW50cG9pbnQpKV19Y29uc3QgbT1kLm1heERlcHRoIT09dm9pZCAwJiYhZjtyZXR1cm4gcC5maWx0ZXIodz0+KCFtfHxXSyh3LGQubWF4RGVwdGgpKSYmSEsodyxsKSl9LGFzeW5jIGNsZWFyKGwsZD17fSl7bD1iZyhsKSxhd2FpdCBQcm9taXNlLmFsbChuKGwsITEpLm1hcChhc3luYyB1PT57aWYodS5kcml2ZXIuY2xlYXIpcmV0dXJuIHJuKHUuZHJpdmVyLmNsZWFyLHUucmVsYXRpdmVCYXNlLGQpO2lmKHUuZHJpdmVyLnJlbW92ZUl0ZW0pe2NvbnN0IGg9YXdhaXQgdS5kcml2ZXIuZ2V0S2V5cyh1LnJlbGF0aXZlQmFzZXx8IiIsZCk7cmV0dXJuIFByb21pc2UuYWxsKGgubWFwKHA9PnUuZHJpdmVyLnJlbW92ZUl0ZW0ocCxkKSkpfX0pKX0sYXN5bmMgZGlzcG9zZSgpe2F3YWl0IFByb21pc2UuYWxsKE9iamVjdC52YWx1ZXMoZS5tb3VudHMpLm1hcChsPT56NyhsKSkpfSxhc3luYyB3YXRjaChsKXtyZXR1cm4gYXdhaXQgaSgpLGUud2F0Y2hMaXN0ZW5lcnMucHVzaChsKSxhc3luYygpPT57ZS53YXRjaExpc3RlbmVycz1lLndhdGNoTGlzdGVuZXJzLmZpbHRlcihkPT5kIT09bCksZS53YXRjaExpc3RlbmVycy5sZW5ndGg9PT0wJiZhd2FpdCBvKCl9fSxhc3luYyB1bndhdGNoKCl7ZS53YXRjaExpc3RlbmVycz1bXSxhd2FpdCBvKCl9LG1vdW50KGwsZCl7aWYobD1iZyhsKSxsJiZlLm1vdW50c1tsXSl0aHJvdyBuZXcgRXJyb3IoYGFscmVhZHkgbW91bnRlZCBhdCAke2x9YCk7cmV0dXJuIGwmJihlLm1vdW50cG9pbnRzLnB1c2gobCksZS5tb3VudHBvaW50cy5zb3J0KCh1LGgpPT5oLmxlbmd0aC11Lmxlbmd0aCkpLGUubW91bnRzW2xdPWQsZS53YXRjaGluZyYmUHJvbWlzZS5yZXNvbHZlKGo3KGQscyxsKSkudGhlbih1PT57ZS51bndhdGNoW2xdPXV9KS5jYXRjaChjb25zb2xlLmVycm9yKSxjfSxhc3luYyB1bm1vdW50KGwsZD0hMCl7bD1iZyhsKSwhKCFsfHwhZS5tb3VudHNbbF0pJiYoZS53YXRjaGluZyYmbCBpbiBlLnVud2F0Y2gmJihlLnVud2F0Y2hbbF0/LigpLGRlbGV0ZSBlLnVud2F0Y2hbbF0pLGQmJmF3YWl0IHo3KGUubW91bnRzW2xdKSxlLm1vdW50cG9pbnRzPWUubW91bnRwb2ludHMuZmlsdGVyKHU9PnUhPT1sKSxkZWxldGUgZS5tb3VudHNbbF0pfSxnZXRNb3VudChsPSIiKXtsPVFuKGwpKyI6Ijtjb25zdCBkPXIobCk7cmV0dXJue2RyaXZlcjpkLmRyaXZlcixiYXNlOmQuYmFzZX19LGdldE1vdW50cyhsPSIiLGQ9e30pe3JldHVybiBsPVFuKGwpLG4obCxkLnBhcmVudHMpLm1hcChoPT4oe2RyaXZlcjpoLmRyaXZlcixiYXNlOmgubW91bnRwb2ludH0pKX0sa2V5czoobCxkPXt9KT0+Yy5nZXRLZXlzKGwsZCksZ2V0OihsLGQ9e30pPT5jLmdldEl0ZW0obCxkKSxzZXQ6KGwsZCx1PXt9KT0+Yy5zZXRJdGVtKGwsZCx1KSxoYXM6KGwsZD17fSk9PmMuaGFzSXRlbShsLGQpLGRlbDoobCxkPXt9KT0+Yy5yZW1vdmVJdGVtKGwsZCkscmVtb3ZlOihsLGQ9e30pPT5jLnJlbW92ZUl0ZW0obCxkKX07cmV0dXJuIGN9ZnVuY3Rpb24gajcodCxlLHIpe3JldHVybiB0LndhdGNoP3Qud2F0Y2goKG4scyk9PmUobixyK3MpKTooKT0+e319YXN5bmMgZnVuY3Rpb24gejcodCl7dHlwZW9mIHQuZGlzcG9zZT09ImZ1bmN0aW9uIiYmYXdhaXQgcm4odC5kaXNwb3NlKX1mdW5jdGlvbiBYdSh0KXtyZXR1cm4gbmV3IFByb21pc2UoKGUscik9Pnt0Lm9uY29tcGxldGU9dC5vbnN1Y2Nlc3M9KCk9PmUodC5yZXN1bHQpLHQub25hYm9ydD10Lm9uZXJyb3I9KCk9PnIodC5lcnJvcil9KX1mdW5jdGlvbiBqJCh0LGUpe2xldCByO2NvbnN0IG49KCk9PntpZihyKXJldHVybiByO2NvbnN0IHM9aW5kZXhlZERCLm9wZW4odCk7cmV0dXJuIHMub251cGdyYWRlbmVlZGVkPSgpPT5zLnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZShlKSxyPVh1KHMpLHIudGhlbihpPT57aS5vbmNsb3NlPSgpPT5yPXZvaWQgMH0sKCk9Pnt9KSxyfTtyZXR1cm4ocyxpKT0+bigpLnRoZW4obz0+aShvLnRyYW5zYWN0aW9uKGUscykub2JqZWN0U3RvcmUoZSkpKX1sZXQgdjI7ZnVuY3Rpb24gbDEoKXtyZXR1cm4gdjJ8fCh2Mj1qJCgia2V5dmFsLXN0b3JlIiwia2V5dmFsIikpLHYyfWZ1bmN0aW9uIFc3KHQsZT1sMSgpKXtyZXR1cm4gZSgicmVhZG9ubHkiLHI9Plh1KHIuZ2V0KHQpKSl9ZnVuY3Rpb24gS0sodCxlLHI9bDEoKSl7cmV0dXJuIHIoInJlYWR3cml0ZSIsbj0+KG4ucHV0KGUsdCksWHUobi50cmFuc2FjdGlvbikpKX1mdW5jdGlvbiBaSyh0LGU9bDEoKSl7cmV0dXJuIGUoInJlYWR3cml0ZSIscj0+KHIuZGVsZXRlKHQpLFh1KHIudHJhbnNhY3Rpb24pKSl9ZnVuY3Rpb24gWUsodD1sMSgpKXtyZXR1cm4gdCgicmVhZHdyaXRlIixlPT4oZS5jbGVhcigpLFh1KGUudHJhbnNhY3Rpb24pKSl9ZnVuY3Rpb24gSksodCxlKXtyZXR1cm4gdC5vcGVuQ3Vyc29yKCkub25zdWNjZXNzPWZ1bmN0aW9uKCl7dGhpcy5yZXN1bHQmJihlKHRoaXMucmVzdWx0KSx0aGlzLnJlc3VsdC5jb250aW51ZSgpKX0sWHUodC50cmFuc2FjdGlvbil9ZnVuY3Rpb24gWEsodD1sMSgpKXtyZXR1cm4gdCgicmVhZG9ubHkiLGU9PntpZihlLmdldEFsbEtleXMpcmV0dXJuIFh1KGUuZ2V0QWxsS2V5cygpKTtjb25zdCByPVtdO3JldHVybiBKSyhlLG49PnIucHVzaChuLmtleSkpLnRoZW4oKCk9PnIpfSl9Y29uc3QgUUs9dD0+SlNPTi5zdHJpbmdpZnkodCwoZSxyKT0+dHlwZW9mIHI9PSJiaWdpbnQiP3IudG9TdHJpbmcoKSsibiI6ciksZVo9dD0+e2NvbnN0IGU9LyhbXFs6XSk/KFxkezE3LH18KD86WzldKD86WzEtOV0wNzE5OTI1NDc0MDk5MXwwWzEtOV03MTk5MjU0NzQwOTkxfDAwWzgtOV0xOTkyNTQ3NDA5OTF8MDA3WzItOV05OTI1NDc0MDk5MXwwMDcxOTlbMy05XTU0NzQwOTkxfDAwNzE5OTJbNi05XTQ3NDA5OTF8MDA3MTk5MjVbNS05XTc0MDk5MXwwMDcxOTkyNTRbOC05XTQwOTkxfDAwNzE5OTI1NDdbNS05XTA5OTF8MDA3MTk5MjU0NzRbMS05XTk5MXwwMDcxOTkyNTQ3NDA5OVsyLTldKSkpKFssXH1cXV0pL2cscj10LnJlcGxhY2UoZSwnJDEiJDJuIiQzJyk7cmV0dXJuIEpTT04ucGFyc2UociwobixzKT0+dHlwZW9mIHM9PSJzdHJpbmciJiZzLm1hdGNoKC9eXGQrbiQvKT9CaWdJbnQocy5zdWJzdHJpbmcoMCxzLmxlbmd0aC0xKSk6cyl9O2Z1bmN0aW9uIGJ1KHQpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzYWZlIGpzb24gcGFyc2UgdmFsdWUgb2YgdHlwZSAke3R5cGVvZiB0fWApO3RyeXtyZXR1cm4gZVoodCl9Y2F0Y2h7cmV0dXJuIHR9fWZ1bmN0aW9uIGdhKHQpe3JldHVybiB0eXBlb2YgdD09InN0cmluZyI/dDpRSyh0KXx8IiJ9Y29uc3QgdFo9ImlkYi1rZXl2YWwiO3ZhciByWj0odD17fSk9Pntjb25zdCBlPXQuYmFzZSYmdC5iYXNlLmxlbmd0aD4wP2Ake3QuYmFzZX06YDoiIixyPXM9PmUrcztsZXQgbjtyZXR1cm4gdC5kYk5hbWUmJnQuc3RvcmVOYW1lJiYobj1qJCh0LmRiTmFtZSx0LnN0b3JlTmFtZSkpLHtuYW1lOnRaLG9wdGlvbnM6dCxhc3luYyBoYXNJdGVtKHMpe3JldHVybiEodHlwZW9mIGF3YWl0IFc3KHIocyksbik+InUiKX0sYXN5bmMgZ2V0SXRlbShzKXtyZXR1cm4gYXdhaXQgVzcocihzKSxuKT8/bnVsbH0sc2V0SXRlbShzLGkpe3JldHVybiBLSyhyKHMpLGksbil9LHJlbW92ZUl0ZW0ocyl7cmV0dXJuIFpLKHIocyksbil9LGdldEtleXMoKXtyZXR1cm4gWEsobil9LGNsZWFyKCl7cmV0dXJuIFlLKG4pfX19O2NvbnN0IG5aPSJXQUxMRVRfQ09OTkVDVF9WMl9JTkRFWEVEX0RCIixpWj0ia2V5dmFsdWVzdG9yYWdlIjtsZXQgc1o9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmluZGV4ZWREYj1HSyh7ZHJpdmVyOnJaKHtkYk5hbWU6blosc3RvcmVOYW1lOmlafSl9KX1hc3luYyBnZXRLZXlzKCl7cmV0dXJuIHRoaXMuaW5kZXhlZERiLmdldEtleXMoKX1hc3luYyBnZXRFbnRyaWVzKCl7cmV0dXJuKGF3YWl0IHRoaXMuaW5kZXhlZERiLmdldEl0ZW1zKGF3YWl0IHRoaXMuaW5kZXhlZERiLmdldEtleXMoKSkpLm1hcChlPT5bZS5rZXksZS52YWx1ZV0pfWFzeW5jIGdldEl0ZW0oZSl7Y29uc3Qgcj1hd2FpdCB0aGlzLmluZGV4ZWREYi5nZXRJdGVtKGUpO2lmKHIhPT1udWxsKXJldHVybiByfWFzeW5jIHNldEl0ZW0oZSxyKXthd2FpdCB0aGlzLmluZGV4ZWREYi5zZXRJdGVtKGUsZ2EocikpfWFzeW5jIHJlbW92ZUl0ZW0oZSl7YXdhaXQgdGhpcy5pbmRleGVkRGIucmVtb3ZlSXRlbShlKX19O3ZhciBFMj10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnt9LEx3PXtleHBvcnRzOnt9fTsoZnVuY3Rpb24oKXtsZXQgdDtmdW5jdGlvbiBlKCl7fXQ9ZSx0LnByb3RvdHlwZS5nZXRJdGVtPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KHIpP1N0cmluZyh0aGlzW3JdKTpudWxsfSx0LnByb3RvdHlwZS5zZXRJdGVtPWZ1bmN0aW9uKHIsbil7dGhpc1tyXT1TdHJpbmcobil9LHQucHJvdG90eXBlLnJlbW92ZUl0ZW09ZnVuY3Rpb24ocil7ZGVsZXRlIHRoaXNbcl19LHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7Y29uc3Qgcj10aGlzO09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24obil7cltuXT12b2lkIDAsZGVsZXRlIHJbbl19KX0sdC5wcm90b3R5cGUua2V5PWZ1bmN0aW9uKHIpe3JldHVybiByPXJ8fDAsT2JqZWN0LmtleXModGhpcylbcl19LHQucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18oImxlbmd0aCIsZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcykubGVuZ3RofSksdHlwZW9mIEUyPCJ1IiYmRTIubG9jYWxTdG9yYWdlP0x3LmV4cG9ydHM9RTIubG9jYWxTdG9yYWdlOnR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cubG9jYWxTdG9yYWdlP0x3LmV4cG9ydHM9d2luZG93LmxvY2FsU3RvcmFnZTpMdy5leHBvcnRzPW5ldyBlfSkoKTtmdW5jdGlvbiBvWih0KXt2YXIgZTtyZXR1cm5bdFswXSxidSgoZT10WzFdKSE9bnVsbD9lOiIiKV19bGV0IGFaPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5sb2NhbFN0b3JhZ2U9THcuZXhwb3J0c31hc3luYyBnZXRLZXlzKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubG9jYWxTdG9yYWdlKX1hc3luYyBnZXRFbnRyaWVzKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMubG9jYWxTdG9yYWdlKS5tYXAob1opfWFzeW5jIGdldEl0ZW0oZSl7Y29uc3Qgcj10aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGUpO2lmKHIhPT1udWxsKXJldHVybiBidShyKX1hc3luYyBzZXRJdGVtKGUscil7dGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShlLGdhKHIpKX1hc3luYyByZW1vdmVJdGVtKGUpe3RoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZSl9fTtjb25zdCBjWj0id2Nfc3RvcmFnZV92ZXJzaW9uIixINz0xLGxaPWFzeW5jKHQsZSxyKT0+e2NvbnN0IG49Y1oscz1hd2FpdCBlLmdldEl0ZW0obik7aWYocyYmcz49SDcpe3IoZSk7cmV0dXJufWNvbnN0IGk9YXdhaXQgdC5nZXRLZXlzKCk7aWYoIWkubGVuZ3RoKXtyKGUpO3JldHVybn1jb25zdCBvPVtdO2Zvcig7aS5sZW5ndGg7KXtjb25zdCBhPWkuc2hpZnQoKTtpZighYSljb250aW51ZTtjb25zdCBjPWEudG9Mb3dlckNhc2UoKTtpZihjLmluY2x1ZGVzKCJ3Y0AiKXx8Yy5pbmNsdWRlcygid2FsbGV0Y29ubmVjdCIpfHxjLmluY2x1ZGVzKCJ3Y18iKXx8Yy5pbmNsdWRlcygid2FsbGV0X2Nvbm5lY3QiKSl7Y29uc3QgbD1hd2FpdCB0LmdldEl0ZW0oYSk7YXdhaXQgZS5zZXRJdGVtKGEsbCksby5wdXNoKGEpfX1hd2FpdCBlLnNldEl0ZW0obixINykscihlKSx1Wih0LG8pfSx1Wj1hc3luYyh0LGUpPT57ZS5sZW5ndGgmJmUuZm9yRWFjaChhc3luYyByPT57YXdhaXQgdC5yZW1vdmVJdGVtKHIpfSl9O2xldCBkWj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5zZXRJbml0aWFsaXplZD1yPT57dGhpcy5zdG9yYWdlPXIsdGhpcy5pbml0aWFsaXplZD0hMH07Y29uc3QgZT1uZXcgYVo7dGhpcy5zdG9yYWdlPWU7dHJ5e2NvbnN0IHI9bmV3IHNaO2xaKGUscix0aGlzLnNldEluaXRpYWxpemVkKX1jYXRjaHt0aGlzLmluaXRpYWxpemVkPSEwfX1hc3luYyBnZXRLZXlzKCl7cmV0dXJuIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpLHRoaXMuc3RvcmFnZS5nZXRLZXlzKCl9YXN5bmMgZ2V0RW50cmllcygpe3JldHVybiBhd2FpdCB0aGlzLmluaXRpYWxpemUoKSx0aGlzLnN0b3JhZ2UuZ2V0RW50cmllcygpfWFzeW5jIGdldEl0ZW0oZSl7cmV0dXJuIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSgpLHRoaXMuc3RvcmFnZS5nZXRJdGVtKGUpfWFzeW5jIHNldEl0ZW0oZSxyKXtyZXR1cm4gYXdhaXQgdGhpcy5pbml0aWFsaXplKCksdGhpcy5zdG9yYWdlLnNldEl0ZW0oZSxyKX1hc3luYyByZW1vdmVJdGVtKGUpe3JldHVybiBhd2FpdCB0aGlzLmluaXRpYWxpemUoKSx0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShlKX1hc3luYyBpbml0aWFsaXplKCl7dGhpcy5pbml0aWFsaXplZHx8YXdhaXQgbmV3IFByb21pc2UoZT0+e2NvbnN0IHI9c2V0SW50ZXJ2YWwoKCk9Pnt0aGlzLmluaXRpYWxpemVkJiYoY2xlYXJJbnRlcnZhbChyKSxlKCkpfSwyMCl9KX19O3ZhciBDMixxNztmdW5jdGlvbiBoWigpe2lmKHE3KXJldHVybiBDMjtxNz0xO2Z1bmN0aW9uIHQocil7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShyKX1jYXRjaHtyZXR1cm4nIltDaXJjdWxhcl0iJ319QzI9ZTtmdW5jdGlvbiBlKHIsbixzKXt2YXIgaT1zJiZzLnN0cmluZ2lmeXx8dCxvPTE7aWYodHlwZW9mIHI9PSJvYmplY3QiJiZyIT09bnVsbCl7dmFyIGE9bi5sZW5ndGgrbztpZihhPT09MSlyZXR1cm4gcjt2YXIgYz1uZXcgQXJyYXkoYSk7Y1swXT1pKHIpO2Zvcih2YXIgbD0xO2w8YTtsKyspY1tsXT1pKG5bbF0pO3JldHVybiBjLmpvaW4oIiAiKX1pZih0eXBlb2YgciE9InN0cmluZyIpcmV0dXJuIHI7dmFyIGQ9bi5sZW5ndGg7aWYoZD09PTApcmV0dXJuIHI7Zm9yKHZhciB1PSIiLGg9MS1vLHA9LTEsZj1yJiZyLmxlbmd0aHx8MCxtPTA7bTxmOyl7aWYoci5jaGFyQ29kZUF0KG0pPT09MzcmJm0rMTxmKXtzd2l0Y2gocD1wPi0xP3A6MCxyLmNoYXJDb2RlQXQobSsxKSl7Y2FzZSAxMDA6Y2FzZSAxMDI6aWYoaD49ZHx8bltoXT09bnVsbClicmVhaztwPG0mJih1Kz1yLnNsaWNlKHAsbSkpLHUrPU51bWJlcihuW2hdKSxwPW0rMixtKys7YnJlYWs7Y2FzZSAxMDU6aWYoaD49ZHx8bltoXT09bnVsbClicmVhaztwPG0mJih1Kz1yLnNsaWNlKHAsbSkpLHUrPU1hdGguZmxvb3IoTnVtYmVyKG5baF0pKSxwPW0rMixtKys7YnJlYWs7Y2FzZSA3OTpjYXNlIDExMTpjYXNlIDEwNjppZihoPj1kfHxuW2hdPT09dm9pZCAwKWJyZWFrO3A8bSYmKHUrPXIuc2xpY2UocCxtKSk7dmFyIHc9dHlwZW9mIG5baF07aWYodz09PSJzdHJpbmciKXt1Kz0iJyIrbltoXSsiJyIscD1tKzIsbSsrO2JyZWFrfWlmKHc9PT0iZnVuY3Rpb24iKXt1Kz1uW2hdLm5hbWV8fCI8YW5vbnltb3VzPiIscD1tKzIsbSsrO2JyZWFrfXUrPWkobltoXSkscD1tKzIsbSsrO2JyZWFrO2Nhc2UgMTE1OmlmKGg+PWQpYnJlYWs7cDxtJiYodSs9ci5zbGljZShwLG0pKSx1Kz1TdHJpbmcobltoXSkscD1tKzIsbSsrO2JyZWFrO2Nhc2UgMzc6cDxtJiYodSs9ci5zbGljZShwLG0pKSx1Kz0iJSIscD1tKzIsbSsrLGgtLTticmVha30rK2h9KyttfXJldHVybiBwPT09LTE/cjoocDxmJiYodSs9ci5zbGljZShwKSksdSl9cmV0dXJuIEMyfXZhciB4MixWNztmdW5jdGlvbiBwWigpe2lmKFY3KXJldHVybiB4MjtWNz0xO2NvbnN0IHQ9aFooKTt4Mj1zO2NvbnN0IGU9XygpLmNvbnNvbGV8fHt9LHI9e21hcEh0dHBSZXF1ZXN0OmYsbWFwSHR0cFJlc3BvbnNlOmYsd3JhcFJlcXVlc3RTZXJpYWxpemVyOm0sd3JhcFJlc3BvbnNlU2VyaWFsaXplcjptLHdyYXBFcnJvclNlcmlhbGl6ZXI6bSxyZXE6ZixyZXM6ZixlcnI6aH07ZnVuY3Rpb24gbihrLEEpe3JldHVybiBBcnJheS5pc0FycmF5KGspP2suZmlsdGVyKGZ1bmN0aW9uKFApe3JldHVybiBQIT09IiFzdGRTZXJpYWxpemVycy5lcnIifSk6az09PSEwP09iamVjdC5rZXlzKEEpOiExfWZ1bmN0aW9uIHMoayl7az1rfHx7fSxrLmJyb3dzZXI9ay5icm93c2VyfHx7fTtjb25zdCBBPWsuYnJvd3Nlci50cmFuc21pdDtpZihBJiZ0eXBlb2YgQS5zZW5kIT0iZnVuY3Rpb24iKXRocm93IEVycm9yKCJwaW5vOiB0cmFuc21pdCBvcHRpb24gbXVzdCBoYXZlIGEgc2VuZCBmdW5jdGlvbiIpO2NvbnN0IE09ay5icm93c2VyLndyaXRlfHxlO2suYnJvd3Nlci53cml0ZSYmKGsuYnJvd3Nlci5hc09iamVjdD0hMCk7Y29uc3QgUD1rLnNlcmlhbGl6ZXJzfHx7fSxqPW4oay5icm93c2VyLnNlcmlhbGl6ZSxQKTtsZXQgVT1rLmJyb3dzZXIuc2VyaWFsaXplO0FycmF5LmlzQXJyYXkoay5icm93c2VyLnNlcmlhbGl6ZSkmJmsuYnJvd3Nlci5zZXJpYWxpemUuaW5kZXhPZigiIXN0ZFNlcmlhbGl6ZXJzLmVyciIpPi0xJiYoVT0hMSk7Y29uc3QgVj1bImVycm9yIiwiZmF0YWwiLCJ3YXJuIiwiaW5mbyIsImRlYnVnIiwidHJhY2UiXTt0eXBlb2YgTT09ImZ1bmN0aW9uIiYmKE0uZXJyb3I9TS5mYXRhbD1NLndhcm49TS5pbmZvPU0uZGVidWc9TS50cmFjZT1NKSxrLmVuYWJsZWQ9PT0hMSYmKGsubGV2ZWw9InNpbGVudCIpO2NvbnN0IEY9ay5sZXZlbHx8ImluZm8iLGI9T2JqZWN0LmNyZWF0ZShNKTtiLmxvZ3x8KGIubG9nPXcpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCJsZXZlbFZhbCIse2dldDpDfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGIsImxldmVsIix7Z2V0OlQsc2V0Ok59KTtjb25zdCB5PXt0cmFuc21pdDpBLHNlcmlhbGl6ZTpqLGFzT2JqZWN0OmsuYnJvd3Nlci5hc09iamVjdCxsZXZlbHM6Vix0aW1lc3RhbXA6cChrKX07Yi5sZXZlbHM9cy5sZXZlbHMsYi5sZXZlbD1GLGIuc2V0TWF4TGlzdGVuZXJzPWIuZ2V0TWF4TGlzdGVuZXJzPWIuZW1pdD1iLmFkZExpc3RlbmVyPWIub249Yi5wcmVwZW5kTGlzdGVuZXI9Yi5vbmNlPWIucHJlcGVuZE9uY2VMaXN0ZW5lcj1iLnJlbW92ZUxpc3RlbmVyPWIucmVtb3ZlQWxsTGlzdGVuZXJzPWIubGlzdGVuZXJzPWIubGlzdGVuZXJDb3VudD1iLmV2ZW50TmFtZXM9Yi53cml0ZT1iLmZsdXNoPXcsYi5zZXJpYWxpemVycz1QLGIuX3NlcmlhbGl6ZT1qLGIuX3N0ZEVyclNlcmlhbGl6ZT1VLGIuY2hpbGQ9UixBJiYoYi5fbG9nRXZlbnQ9dSgpKTtmdW5jdGlvbiBDKCl7cmV0dXJuIHRoaXMubGV2ZWw9PT0ic2lsZW50Ij8xLzA6dGhpcy5sZXZlbHMudmFsdWVzW3RoaXMubGV2ZWxdfWZ1bmN0aW9uIFQoKXtyZXR1cm4gdGhpcy5fbGV2ZWx9ZnVuY3Rpb24gTihJKXtpZihJIT09InNpbGVudCImJiF0aGlzLmxldmVscy52YWx1ZXNbSV0pdGhyb3cgRXJyb3IoInVua25vd24gbGV2ZWwgIitJKTt0aGlzLl9sZXZlbD1JLGkoeSxiLCJlcnJvciIsImxvZyIpLGkoeSxiLCJmYXRhbCIsImVycm9yIiksaSh5LGIsIndhcm4iLCJlcnJvciIpLGkoeSxiLCJpbmZvIiwibG9nIiksaSh5LGIsImRlYnVnIiwibG9nIiksaSh5LGIsInRyYWNlIiwibG9nIil9ZnVuY3Rpb24gUihJLEIpe2lmKCFJKXRocm93IG5ldyBFcnJvcigibWlzc2luZyBiaW5kaW5ncyBmb3IgY2hpbGQgUGlubyIpO0I9Qnx8e30saiYmSS5zZXJpYWxpemVycyYmKEIuc2VyaWFsaXplcnM9SS5zZXJpYWxpemVycyk7Y29uc3QgUz1CLnNlcmlhbGl6ZXJzO2lmKGomJlMpe3ZhciB6PU9iamVjdC5hc3NpZ24oe30sUCxTKSxRPWsuYnJvd3Nlci5zZXJpYWxpemU9PT0hMD9PYmplY3Qua2V5cyh6KTpqO2RlbGV0ZSBJLnNlcmlhbGl6ZXJzLGMoW0ldLFEseix0aGlzLl9zdGRFcnJTZXJpYWxpemUpfWZ1bmN0aW9uIHJlKEope3RoaXMuX2NoaWxkTGV2ZWw9KEouX2NoaWxkTGV2ZWx8MCkrMSx0aGlzLmVycm9yPWwoSixJLCJlcnJvciIpLHRoaXMuZmF0YWw9bChKLEksImZhdGFsIiksdGhpcy53YXJuPWwoSixJLCJ3YXJuIiksdGhpcy5pbmZvPWwoSixJLCJpbmZvIiksdGhpcy5kZWJ1Zz1sKEosSSwiZGVidWciKSx0aGlzLnRyYWNlPWwoSixJLCJ0cmFjZSIpLHomJih0aGlzLnNlcmlhbGl6ZXJzPXosdGhpcy5fc2VyaWFsaXplPVEpLEEmJih0aGlzLl9sb2dFdmVudD11KFtdLmNvbmNhdChKLl9sb2dFdmVudC5iaW5kaW5ncyxJKSkpfXJldHVybiByZS5wcm90b3R5cGU9dGhpcyxuZXcgcmUodGhpcyl9cmV0dXJuIGJ9cy5sZXZlbHM9e3ZhbHVlczp7ZmF0YWw6NjAsZXJyb3I6NTAsd2Fybjo0MCxpbmZvOjMwLGRlYnVnOjIwLHRyYWNlOjEwfSxsYWJlbHM6ezEwOiJ0cmFjZSIsMjA6ImRlYnVnIiwzMDoiaW5mbyIsNDA6Indhcm4iLDUwOiJlcnJvciIsNjA6ImZhdGFsIn19LHMuc3RkU2VyaWFsaXplcnM9cixzLnN0ZFRpbWVGdW5jdGlvbnM9T2JqZWN0LmFzc2lnbih7fSx7bnVsbFRpbWU6ZyxlcG9jaFRpbWU6dix1bml4VGltZTpFLGlzb1RpbWU6eH0pO2Z1bmN0aW9uIGkoayxBLE0sUCl7Y29uc3Qgaj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoQSk7QVtNXT1BLmxldmVsVmFsPkEubGV2ZWxzLnZhbHVlc1tNXT93OmpbTV0/altNXTplW01dfHxlW1BdfHx3LG8oayxBLE0pfWZ1bmN0aW9uIG8oayxBLE0peyFrLnRyYW5zbWl0JiZBW01dPT09d3x8KEFbTV09ZnVuY3Rpb24oUCl7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgVT1rLnRpbWVzdGFtcCgpLFY9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLEY9T2JqZWN0LmdldFByb3RvdHlwZU9mJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk9PT1lP2U6dGhpcztmb3IodmFyIGI9MDtiPFYubGVuZ3RoO2IrKylWW2JdPWFyZ3VtZW50c1tiXTtpZihrLnNlcmlhbGl6ZSYmIWsuYXNPYmplY3QmJmMoVix0aGlzLl9zZXJpYWxpemUsdGhpcy5zZXJpYWxpemVycyx0aGlzLl9zdGRFcnJTZXJpYWxpemUpLGsuYXNPYmplY3Q/UC5jYWxsKEYsYSh0aGlzLE0sVixVKSk6UC5hcHBseShGLFYpLGsudHJhbnNtaXQpe2NvbnN0IHk9ay50cmFuc21pdC5sZXZlbHx8QS5sZXZlbCxDPXMubGV2ZWxzLnZhbHVlc1t5XSxUPXMubGV2ZWxzLnZhbHVlc1tNXTtpZihUPEMpcmV0dXJuO2QodGhpcyx7dHM6VSxtZXRob2RMZXZlbDpNLG1ldGhvZFZhbHVlOlQsdHJhbnNtaXRWYWx1ZTpzLmxldmVscy52YWx1ZXNbay50cmFuc21pdC5sZXZlbHx8QS5sZXZlbF0sc2VuZDprLnRyYW5zbWl0LnNlbmQsdmFsOkEubGV2ZWxWYWx9LFYpfX19KEFbTV0pKX1mdW5jdGlvbiBhKGssQSxNLFApe2suX3NlcmlhbGl6ZSYmYyhNLGsuX3NlcmlhbGl6ZSxrLnNlcmlhbGl6ZXJzLGsuX3N0ZEVyclNlcmlhbGl6ZSk7Y29uc3Qgaj1NLnNsaWNlKCk7bGV0IFU9alswXTtjb25zdCBWPXt9O1AmJihWLnRpbWU9UCksVi5sZXZlbD1zLmxldmVscy52YWx1ZXNbQV07bGV0IEY9KGsuX2NoaWxkTGV2ZWx8MCkrMTtpZihGPDEmJihGPTEpLFUhPT1udWxsJiZ0eXBlb2YgVT09Im9iamVjdCIpe2Zvcig7Ri0tJiZ0eXBlb2YgalswXT09Im9iamVjdCI7KU9iamVjdC5hc3NpZ24oVixqLnNoaWZ0KCkpO1U9ai5sZW5ndGg/dChqLnNoaWZ0KCksaik6dm9pZCAwfWVsc2UgdHlwZW9mIFU9PSJzdHJpbmciJiYoVT10KGouc2hpZnQoKSxqKSk7cmV0dXJuIFUhPT12b2lkIDAmJihWLm1zZz1VKSxWfWZ1bmN0aW9uIGMoayxBLE0sUCl7Zm9yKGNvbnN0IGogaW4gaylpZihQJiZrW2pdaW5zdGFuY2VvZiBFcnJvcilrW2pdPXMuc3RkU2VyaWFsaXplcnMuZXJyKGtbal0pO2Vsc2UgaWYodHlwZW9mIGtbal09PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShrW2pdKSlmb3IoY29uc3QgVSBpbiBrW2pdKUEmJkEuaW5kZXhPZihVKT4tMSYmVSBpbiBNJiYoa1tqXVtVXT1NW1VdKGtbal1bVV0pKX1mdW5jdGlvbiBsKGssQSxNKXtyZXR1cm4gZnVuY3Rpb24oKXtjb25zdCBQPW5ldyBBcnJheSgxK2FyZ3VtZW50cy5sZW5ndGgpO1BbMF09QTtmb3IodmFyIGo9MTtqPFAubGVuZ3RoO2orKylQW2pdPWFyZ3VtZW50c1tqLTFdO3JldHVybiBrW01dLmFwcGx5KHRoaXMsUCl9fWZ1bmN0aW9uIGQoayxBLE0pe2NvbnN0IFA9QS5zZW5kLGo9QS50cyxVPUEubWV0aG9kTGV2ZWwsVj1BLm1ldGhvZFZhbHVlLEY9QS52YWwsYj1rLl9sb2dFdmVudC5iaW5kaW5ncztjKE0say5fc2VyaWFsaXplfHxPYmplY3Qua2V5cyhrLnNlcmlhbGl6ZXJzKSxrLnNlcmlhbGl6ZXJzLGsuX3N0ZEVyclNlcmlhbGl6ZT09PXZvaWQgMD8hMDprLl9zdGRFcnJTZXJpYWxpemUpLGsuX2xvZ0V2ZW50LnRzPWosay5fbG9nRXZlbnQubWVzc2FnZXM9TS5maWx0ZXIoZnVuY3Rpb24oeSl7cmV0dXJuIGIuaW5kZXhPZih5KT09PS0xfSksay5fbG9nRXZlbnQubGV2ZWwubGFiZWw9VSxrLl9sb2dFdmVudC5sZXZlbC52YWx1ZT1WLFAoVSxrLl9sb2dFdmVudCxGKSxrLl9sb2dFdmVudD11KGIpfWZ1bmN0aW9uIHUoayl7cmV0dXJue3RzOjAsbWVzc2FnZXM6W10sYmluZGluZ3M6a3x8W10sbGV2ZWw6e2xhYmVsOiIiLHZhbHVlOjB9fX1mdW5jdGlvbiBoKGspe2NvbnN0IEE9e3R5cGU6ay5jb25zdHJ1Y3Rvci5uYW1lLG1zZzprLm1lc3NhZ2Usc3RhY2s6ay5zdGFja307Zm9yKGNvbnN0IE0gaW4gaylBW01dPT09dm9pZCAwJiYoQVtNXT1rW01dKTtyZXR1cm4gQX1mdW5jdGlvbiBwKGspe3JldHVybiB0eXBlb2Ygay50aW1lc3RhbXA9PSJmdW5jdGlvbiI/ay50aW1lc3RhbXA6ay50aW1lc3RhbXA9PT0hMT9nOnZ9ZnVuY3Rpb24gZigpe3JldHVybnt9fWZ1bmN0aW9uIG0oayl7cmV0dXJuIGt9ZnVuY3Rpb24gdygpe31mdW5jdGlvbiBnKCl7cmV0dXJuITF9ZnVuY3Rpb24gdigpe3JldHVybiBEYXRlLm5vdygpfWZ1bmN0aW9uIEUoKXtyZXR1cm4gTWF0aC5yb3VuZChEYXRlLm5vdygpLzFlMyl9ZnVuY3Rpb24geCgpe3JldHVybiBuZXcgRGF0ZShEYXRlLm5vdygpKS50b0lTT1N0cmluZygpfWZ1bmN0aW9uIF8oKXtmdW5jdGlvbiBrKEEpe3JldHVybiB0eXBlb2YgQTwidSImJkF9dHJ5e3JldHVybiB0eXBlb2YgZ2xvYmFsVGhpczwidSJ8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCJnbG9iYWxUaGlzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSBPYmplY3QucHJvdG90eXBlLmdsb2JhbFRoaXMsdGhpcy5nbG9iYWxUaGlzPXRoaXN9LGNvbmZpZ3VyYWJsZTohMH0pLGdsb2JhbFRoaXN9Y2F0Y2h7cmV0dXJuIGsoc2VsZil8fGsod2luZG93KXx8ayh0aGlzKXx8e319fXJldHVybiB4Mn12YXIgWWQ9cFooKTtjb25zdCB1MT16cyhZZCksZlo9e2xldmVsOiJpbmZvIn0sZDE9ImN1c3RvbV9jb250ZXh0Iix2Nj0xZTMqMTAyNDtsZXQgbVo9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5ub2RlVmFsdWU9ZSx0aGlzLnNpemVJbkJ5dGVzPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh0aGlzLm5vZGVWYWx1ZSkubGVuZ3RoLHRoaXMubmV4dD1udWxsfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLm5vZGVWYWx1ZX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLnNpemVJbkJ5dGVzfX0sRzc9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5oZWFkPW51bGwsdGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGhJbk5vZGVzPTAsdGhpcy5tYXhTaXplSW5CeXRlcz1lLHRoaXMuc2l6ZUluQnl0ZXM9MH1hcHBlbmQoZSl7Y29uc3Qgcj1uZXcgbVooZSk7aWYoci5zaXplPnRoaXMubWF4U2l6ZUluQnl0ZXMpdGhyb3cgbmV3IEVycm9yKGBbTGlua2VkTGlzdF0gVmFsdWUgdG9vIGJpZyB0byBpbnNlcnQgaW50byBsaXN0OiAke2V9IHdpdGggc2l6ZSAke3Iuc2l6ZX1gKTtmb3IoO3RoaXMuc2l6ZStyLnNpemU+dGhpcy5tYXhTaXplSW5CeXRlczspdGhpcy5zaGlmdCgpO3RoaXMuaGVhZD8odGhpcy50YWlsJiYodGhpcy50YWlsLm5leHQ9ciksdGhpcy50YWlsPXIpOih0aGlzLmhlYWQ9cix0aGlzLnRhaWw9ciksdGhpcy5sZW5ndGhJbk5vZGVzKyssdGhpcy5zaXplSW5CeXRlcys9ci5zaXplfXNoaWZ0KCl7aWYoIXRoaXMuaGVhZClyZXR1cm47Y29uc3QgZT10aGlzLmhlYWQ7dGhpcy5oZWFkPXRoaXMuaGVhZC5uZXh0LHRoaXMuaGVhZHx8KHRoaXMudGFpbD1udWxsKSx0aGlzLmxlbmd0aEluTm9kZXMtLSx0aGlzLnNpemVJbkJ5dGVzLT1lLnNpemV9dG9BcnJheSgpe2NvbnN0IGU9W107bGV0IHI9dGhpcy5oZWFkO2Zvcig7ciE9PW51bGw7KWUucHVzaChyLnZhbHVlKSxyPXIubmV4dDtyZXR1cm4gZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMubGVuZ3RoSW5Ob2Rlc31nZXQgc2l6ZSgpe3JldHVybiB0aGlzLnNpemVJbkJ5dGVzfXRvT3JkZXJlZEFycmF5KCl7cmV0dXJuIEFycmF5LmZyb20odGhpcyl9W1N5bWJvbC5pdGVyYXRvcl0oKXtsZXQgZT10aGlzLmhlYWQ7cmV0dXJue25leHQ6KCk9PntpZighZSlyZXR1cm57ZG9uZTohMCx2YWx1ZTpudWxsfTtjb25zdCByPWUudmFsdWU7cmV0dXJuIGU9ZS5uZXh0LHtkb25lOiExLHZhbHVlOnJ9fX19fSx6JD1jbGFzc3tjb25zdHJ1Y3RvcihlLHI9djYpe3RoaXMubGV2ZWw9ZT8/ImVycm9yIix0aGlzLmxldmVsVmFsdWU9WWQubGV2ZWxzLnZhbHVlc1t0aGlzLmxldmVsXSx0aGlzLk1BWF9MT0dfU0laRV9JTl9CWVRFUz1yLHRoaXMubG9ncz1uZXcgRzcodGhpcy5NQVhfTE9HX1NJWkVfSU5fQllURVMpfWZvcndhcmRUb0NvbnNvbGUoZSxyKXtyPT09WWQubGV2ZWxzLnZhbHVlcy5lcnJvcj9jb25zb2xlLmVycm9yKGUpOnI9PT1ZZC5sZXZlbHMudmFsdWVzLndhcm4/Y29uc29sZS53YXJuKGUpOnI9PT1ZZC5sZXZlbHMudmFsdWVzLmRlYnVnP2NvbnNvbGUuZGVidWcoZSk6cj09PVlkLmxldmVscy52YWx1ZXMudHJhY2U/Y29uc29sZS50cmFjZShlKTpjb25zb2xlLmxvZyhlKX1hcHBlbmRUb0xvZ3MoZSl7dGhpcy5sb2dzLmFwcGVuZChnYSh7dGltZXN0YW1wOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxsb2c6ZX0pKTtjb25zdCByPXR5cGVvZiBlPT0ic3RyaW5nIj9KU09OLnBhcnNlKGUpLmxldmVsOmUubGV2ZWw7cj49dGhpcy5sZXZlbFZhbHVlJiZ0aGlzLmZvcndhcmRUb0NvbnNvbGUoZSxyKX1nZXRMb2dzKCl7cmV0dXJuIHRoaXMubG9nc31jbGVhckxvZ3MoKXt0aGlzLmxvZ3M9bmV3IEc3KHRoaXMuTUFYX0xPR19TSVpFX0lOX0JZVEVTKX1nZXRMb2dBcnJheSgpe3JldHVybiBBcnJheS5mcm9tKHRoaXMubG9ncyl9bG9nc1RvQmxvYihlKXtjb25zdCByPXRoaXMuZ2V0TG9nQXJyYXkoKTtyZXR1cm4gci5wdXNoKGdhKHtleHRyYU1ldGFkYXRhOmV9KSksbmV3IEJsb2Iocix7dHlwZToiYXBwbGljYXRpb24vanNvbiJ9KX19LGdaPWNsYXNze2NvbnN0cnVjdG9yKGUscj12Nil7dGhpcy5iYXNlQ2h1bmtMb2dnZXI9bmV3IHokKGUscil9d3JpdGUoZSl7dGhpcy5iYXNlQ2h1bmtMb2dnZXIuYXBwZW5kVG9Mb2dzKGUpfWdldExvZ3MoKXtyZXR1cm4gdGhpcy5iYXNlQ2h1bmtMb2dnZXIuZ2V0TG9ncygpfWNsZWFyTG9ncygpe3RoaXMuYmFzZUNodW5rTG9nZ2VyLmNsZWFyTG9ncygpfWdldExvZ0FycmF5KCl7cmV0dXJuIHRoaXMuYmFzZUNodW5rTG9nZ2VyLmdldExvZ0FycmF5KCl9bG9nc1RvQmxvYihlKXtyZXR1cm4gdGhpcy5iYXNlQ2h1bmtMb2dnZXIubG9nc1RvQmxvYihlKX1kb3dubG9hZExvZ3NCbG9iSW5Ccm93c2VyKGUpe2NvbnN0IHI9VVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLmxvZ3NUb0Jsb2IoZSkpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO24uaHJlZj1yLG4uZG93bmxvYWQ9YHdhbGxldGNvbm5lY3QtbG9ncy0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0udHh0YCxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG4pLG4uY2xpY2soKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG4pLFVSTC5yZXZva2VPYmplY3RVUkwocil9fSx3Wj1jbGFzc3tjb25zdHJ1Y3RvcihlLHI9djYpe3RoaXMuYmFzZUNodW5rTG9nZ2VyPW5ldyB6JChlLHIpfXdyaXRlKGUpe3RoaXMuYmFzZUNodW5rTG9nZ2VyLmFwcGVuZFRvTG9ncyhlKX1nZXRMb2dzKCl7cmV0dXJuIHRoaXMuYmFzZUNodW5rTG9nZ2VyLmdldExvZ3MoKX1jbGVhckxvZ3MoKXt0aGlzLmJhc2VDaHVua0xvZ2dlci5jbGVhckxvZ3MoKX1nZXRMb2dBcnJheSgpe3JldHVybiB0aGlzLmJhc2VDaHVua0xvZ2dlci5nZXRMb2dBcnJheSgpfWxvZ3NUb0Jsb2IoZSl7cmV0dXJuIHRoaXMuYmFzZUNodW5rTG9nZ2VyLmxvZ3NUb0Jsb2IoZSl9fTt2YXIgYlo9T2JqZWN0LmRlZmluZVByb3BlcnR5LHlaPU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLHZaPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLEs3PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsRVo9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxDWj1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLFo3PSh0LGUscik9PmUgaW4gdD9iWih0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsdWI9KHQsZSk9Pntmb3IodmFyIHIgaW4gZXx8KGU9e30pKUVaLmNhbGwoZSxyKSYmWjcodCxyLGVbcl0pO2lmKEs3KWZvcih2YXIgciBvZiBLNyhlKSlDWi5jYWxsKGUscikmJlo3KHQscixlW3JdKTtyZXR1cm4gdH0sZGI9KHQsZSk9PnlaKHQsdlooZSkpO2Z1bmN0aW9uIGxwKHQpe3JldHVybiBkYih1Yih7fSx0KSx7bGV2ZWw6dD8ubGV2ZWx8fGZaLmxldmVsfSl9ZnVuY3Rpb24geFoodCxlPWQxKXtyZXR1cm4gdFtlXXx8IiJ9ZnVuY3Rpb24gX1oodCxlLHI9ZDEpe3JldHVybiB0W3JdPWUsdH1mdW5jdGlvbiBwaSh0LGU9ZDEpe2xldCByPSIiO3JldHVybiB0eXBlb2YgdC5iaW5kaW5ncz4idSI/cj14Wih0LGUpOnI9dC5iaW5kaW5ncygpLmNvbnRleHR8fCIiLHJ9ZnVuY3Rpb24ga1oodCxlLHI9ZDEpe2NvbnN0IG49cGkodCxyKTtyZXR1cm4gbi50cmltKCk/YCR7bn0vJHtlfWA6ZX1mdW5jdGlvbiBObih0LGUscj1kMSl7Y29uc3Qgbj1rWih0LGUscikscz10LmNoaWxkKHtjb250ZXh0Om59KTtyZXR1cm4gX1oocyxuLHIpfWZ1bmN0aW9uIFNaKHQpe3ZhciBlLHI7Y29uc3Qgbj1uZXcgZ1ooKGU9dC5vcHRzKT09bnVsbD92b2lkIDA6ZS5sZXZlbCx0Lm1heFNpemVJbkJ5dGVzKTtyZXR1cm57bG9nZ2VyOnUxKGRiKHViKHt9LHQub3B0cykse2xldmVsOiJ0cmFjZSIsYnJvd3NlcjpkYih1Yih7fSwocj10Lm9wdHMpPT1udWxsP3ZvaWQgMDpyLmJyb3dzZXIpLHt3cml0ZTpzPT5uLndyaXRlKHMpfSl9KSksY2h1bmtMb2dnZXJDb250cm9sbGVyOm59fWZ1bmN0aW9uIEFaKHQpe3ZhciBlO2NvbnN0IHI9bmV3IHdaKChlPXQub3B0cyk9PW51bGw/dm9pZCAwOmUubGV2ZWwsdC5tYXhTaXplSW5CeXRlcyk7cmV0dXJue2xvZ2dlcjp1MShkYih1Yih7fSx0Lm9wdHMpLHtsZXZlbDoidHJhY2UifSksciksY2h1bmtMb2dnZXJDb250cm9sbGVyOnJ9fWZ1bmN0aW9uIEU2KHQpe3JldHVybiB0eXBlb2YgdC5sb2dnZXJPdmVycmlkZTwidSImJnR5cGVvZiB0LmxvZ2dlck92ZXJyaWRlIT0ic3RyaW5nIj97bG9nZ2VyOnQubG9nZ2VyT3ZlcnJpZGUsY2h1bmtMb2dnZXJDb250cm9sbGVyOm51bGx9OnR5cGVvZiB3aW5kb3c8InUiP1NaKHQpOkFaKHQpfXZhciBUWj1PYmplY3QuZGVmaW5lUHJvcGVydHksSVo9KHQsZSxyKT0+ZSBpbiB0P1RaKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixZNz0odCxlLHIpPT5JWih0LHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUscik7bGV0IFJaPWNsYXNzIGV4dGVuZHMgSnV7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLm9wdHM9ZSxZNyh0aGlzLCJwcm90b2NvbCIsIndjIiksWTcodGhpcywidmVyc2lvbiIsMil9fTt2YXIgTlo9T2JqZWN0LmRlZmluZVByb3BlcnR5LFBaPSh0LGUscik9PmUgaW4gdD9OWih0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsT1o9KHQsZSxyKT0+UFoodCxlKyIiLHIpO2xldCAkWj1jbGFzcyBleHRlbmRzIEp1e2NvbnN0cnVjdG9yKGUscil7c3VwZXIoKSx0aGlzLmNvcmU9ZSx0aGlzLmxvZ2dlcj1yLE9aKHRoaXMsInJlY29yZHMiLG5ldyBNYXApfX0sTVo9Y2xhc3N7Y29uc3RydWN0b3IoZSxyKXt0aGlzLmxvZ2dlcj1lLHRoaXMuY29yZT1yfX0sRFo9Y2xhc3MgZXh0ZW5kcyBKdXtjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKCksdGhpcy5yZWxheWVyPWUsdGhpcy5sb2dnZXI9cn19LEJaPWNsYXNzIGV4dGVuZHMgSnV7Y29uc3RydWN0b3IoZSl7c3VwZXIoKX19LExaPWNsYXNze2NvbnN0cnVjdG9yKGUscixuLHMpe3RoaXMuY29yZT1lLHRoaXMubG9nZ2VyPXIsdGhpcy5uYW1lPW59fSxVWj1jbGFzcyBleHRlbmRzIEp1e2NvbnN0cnVjdG9yKGUscil7c3VwZXIoKSx0aGlzLnJlbGF5ZXI9ZSx0aGlzLmxvZ2dlcj1yfX0sRlo9Y2xhc3MgZXh0ZW5kcyBKdXtjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKCksdGhpcy5jb3JlPWUsdGhpcy5sb2dnZXI9cn19LGpaPWNsYXNze2NvbnN0cnVjdG9yKGUscixuKXt0aGlzLmNvcmU9ZSx0aGlzLmxvZ2dlcj1yLHRoaXMuc3RvcmU9bn19LHpaPWNsYXNze2NvbnN0cnVjdG9yKGUscil7dGhpcy5wcm9qZWN0SWQ9ZSx0aGlzLmxvZ2dlcj1yfX0sV1o9Y2xhc3N7Y29uc3RydWN0b3IoZSxyLG4pe3RoaXMuY29yZT1lLHRoaXMubG9nZ2VyPXIsdGhpcy50ZWxlbWV0cnlFbmFibGVkPW59fTt2YXIgSFo9T2JqZWN0LmRlZmluZVByb3BlcnR5LHFaPSh0LGUscik9PmUgaW4gdD9IWih0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsSjc9KHQsZSxyKT0+cVoodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2xldCBWWj1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLm9wdHM9ZSxKNyh0aGlzLCJwcm90b2NvbCIsIndjIiksSjcodGhpcywidmVyc2lvbiIsMil9fSxHWj1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmNsaWVudD1lfX07ZnVuY3Rpb24gS1oodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJnQuY29uc3RydWN0b3IubmFtZT09PSJVaW50OEFycmF5In1mdW5jdGlvbiBXJCh0LC4uLmUpe2lmKCFLWih0KSl0aHJvdyBuZXcgRXJyb3IoIlVpbnQ4QXJyYXkgZXhwZWN0ZWQiKTtpZihlLmxlbmd0aD4wJiYhZS5pbmNsdWRlcyh0Lmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKCJVaW50OEFycmF5IGV4cGVjdGVkIG9mIGxlbmd0aCAiK2UrIiwgZ290IGxlbmd0aD0iK3QubGVuZ3RoKX1mdW5jdGlvbiBYNyh0LGU9ITApe2lmKHQuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiSGFzaCBpbnN0YW5jZSBoYXMgYmVlbiBkZXN0cm95ZWQiKTtpZihlJiZ0LmZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiSGFzaCNkaWdlc3QoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCIpfWZ1bmN0aW9uIFpaKHQsZSl7VyQodCk7Y29uc3Qgcj1lLm91dHB1dExlbjtpZih0Lmxlbmd0aDxyKXRocm93IG5ldyBFcnJvcigiZGlnZXN0SW50bygpIGV4cGVjdHMgb3V0cHV0IGJ1ZmZlciBvZiBsZW5ndGggYXQgbGVhc3QgIityKX1jb25zdCBUZD10eXBlb2YgZ2xvYmFsVGhpcz09Im9iamVjdCImJiJjcnlwdG8iaW4gZ2xvYmFsVGhpcz9nbG9iYWxUaGlzLmNyeXB0bzp2b2lkIDA7LyohIG5vYmxlLWhhc2hlcyAtIE1JVCBMaWNlbnNlIChjKSAyMDIyIFBhdWwgTWlsbGVyIChwYXVsbWlsbHIuY29tKSAqL2NvbnN0IF8yPXQ9Pm5ldyBEYXRhVmlldyh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKTtmdW5jdGlvbiBZWih0KXtpZih0eXBlb2YgdCE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJ1dGY4VG9CeXRlcyBleHBlY3RlZCBzdHJpbmcsIGdvdCAiK3R5cGVvZiB0KTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkobmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHQpKX1mdW5jdGlvbiBIJCh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciJiYodD1ZWih0KSksVyQodCksdH1sZXQgSlo9Y2xhc3N7Y2xvbmUoKXtyZXR1cm4gdGhpcy5fY2xvbmVJbnRvKCl9fTtmdW5jdGlvbiBYWih0KXtjb25zdCBlPW49PnQoKS51cGRhdGUoSCQobikpLmRpZ2VzdCgpLHI9dCgpO3JldHVybiBlLm91dHB1dExlbj1yLm91dHB1dExlbixlLmJsb2NrTGVuPXIuYmxvY2tMZW4sZS5jcmVhdGU9KCk9PnQoKSxlfWZ1bmN0aW9uIHEkKHQ9MzIpe2lmKFRkJiZ0eXBlb2YgVGQuZ2V0UmFuZG9tVmFsdWVzPT0iZnVuY3Rpb24iKXJldHVybiBUZC5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkodCkpO2lmKFRkJiZ0eXBlb2YgVGQucmFuZG9tQnl0ZXM9PSJmdW5jdGlvbiIpcmV0dXJuIFRkLnJhbmRvbUJ5dGVzKHQpO3Rocm93IG5ldyBFcnJvcigiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBtdXN0IGJlIGRlZmluZWQiKX1mdW5jdGlvbiBRWih0LGUscixuKXtpZih0eXBlb2YgdC5zZXRCaWdVaW50NjQ9PSJmdW5jdGlvbiIpcmV0dXJuIHQuc2V0QmlnVWludDY0KGUscixuKTtjb25zdCBzPUJpZ0ludCgzMiksaT1CaWdJbnQoNDI5NDk2NzI5NSksbz1OdW1iZXIocj4+cyZpKSxhPU51bWJlcihyJmkpLGM9bj80OjAsbD1uPzA6NDt0LnNldFVpbnQzMihlK2MsbyxuKSx0LnNldFVpbnQzMihlK2wsYSxuKX1sZXQgZVk9Y2xhc3MgZXh0ZW5kcyBKWntjb25zdHJ1Y3RvcihlLHIsbixzKXtzdXBlcigpLHRoaXMuYmxvY2tMZW49ZSx0aGlzLm91dHB1dExlbj1yLHRoaXMucGFkT2Zmc2V0PW4sdGhpcy5pc0xFPXMsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmxlbmd0aD0wLHRoaXMucG9zPTAsdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoZSksdGhpcy52aWV3PV8yKHRoaXMuYnVmZmVyKX11cGRhdGUoZSl7WDcodGhpcyk7Y29uc3R7dmlldzpyLGJ1ZmZlcjpuLGJsb2NrTGVuOnN9PXRoaXM7ZT1IJChlKTtjb25zdCBpPWUubGVuZ3RoO2ZvcihsZXQgbz0wO288aTspe2NvbnN0IGE9TWF0aC5taW4ocy10aGlzLnBvcyxpLW8pO2lmKGE9PT1zKXtjb25zdCBjPV8yKGUpO2Zvcig7czw9aS1vO28rPXMpdGhpcy5wcm9jZXNzKGMsbyk7Y29udGludWV9bi5zZXQoZS5zdWJhcnJheShvLG8rYSksdGhpcy5wb3MpLHRoaXMucG9zKz1hLG8rPWEsdGhpcy5wb3M9PT1zJiYodGhpcy5wcm9jZXNzKHIsMCksdGhpcy5wb3M9MCl9cmV0dXJuIHRoaXMubGVuZ3RoKz1lLmxlbmd0aCx0aGlzLnJvdW5kQ2xlYW4oKSx0aGlzfWRpZ2VzdEludG8oZSl7WDcodGhpcyksWlooZSx0aGlzKSx0aGlzLmZpbmlzaGVkPSEwO2NvbnN0e2J1ZmZlcjpyLHZpZXc6bixibG9ja0xlbjpzLGlzTEU6aX09dGhpcztsZXR7cG9zOm99PXRoaXM7cltvKytdPTEyOCx0aGlzLmJ1ZmZlci5zdWJhcnJheShvKS5maWxsKDApLHRoaXMucGFkT2Zmc2V0PnMtbyYmKHRoaXMucHJvY2VzcyhuLDApLG89MCk7Zm9yKGxldCB1PW87dTxzO3UrKylyW3VdPTA7UVoobixzLTgsQmlnSW50KHRoaXMubGVuZ3RoKjgpLGkpLHRoaXMucHJvY2VzcyhuLDApO2NvbnN0IGE9XzIoZSksYz10aGlzLm91dHB1dExlbjtpZihjJTQpdGhyb3cgbmV3IEVycm9yKCJfc2hhMjogb3V0cHV0TGVuIHNob3VsZCBiZSBhbGlnbmVkIHRvIDMyYml0Iik7Y29uc3QgbD1jLzQsZD10aGlzLmdldCgpO2lmKGw+ZC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJfc2hhMjogb3V0cHV0TGVuIGJpZ2dlciB0aGFuIHN0YXRlIik7Zm9yKGxldCB1PTA7dTxsO3UrKylhLnNldFVpbnQzMig0KnUsZFt1XSxpKX1kaWdlc3QoKXtjb25zdHtidWZmZXI6ZSxvdXRwdXRMZW46cn09dGhpczt0aGlzLmRpZ2VzdEludG8oZSk7Y29uc3Qgbj1lLnNsaWNlKDAscik7cmV0dXJuIHRoaXMuZGVzdHJveSgpLG59X2Nsb25lSW50byhlKXtlfHwoZT1uZXcgdGhpcy5jb25zdHJ1Y3RvciksZS5zZXQoLi4udGhpcy5nZXQoKSk7Y29uc3R7YmxvY2tMZW46cixidWZmZXI6bixsZW5ndGg6cyxmaW5pc2hlZDppLGRlc3Ryb3llZDpvLHBvczphfT10aGlzO3JldHVybiBlLmxlbmd0aD1zLGUucG9zPWEsZS5maW5pc2hlZD1pLGUuZGVzdHJveWVkPW8scyVyJiZlLmJ1ZmZlci5zZXQobiksZX19O2NvbnN0IHlnPUJpZ0ludCgyKiozMi0xKSxRQz1CaWdJbnQoMzIpO2Z1bmN0aW9uIFYkKHQsZT0hMSl7cmV0dXJuIGU/e2g6TnVtYmVyKHQmeWcpLGw6TnVtYmVyKHQ+PlFDJnlnKX06e2g6TnVtYmVyKHQ+PlFDJnlnKXwwLGw6TnVtYmVyKHQmeWcpfDB9fWZ1bmN0aW9uIHRZKHQsZT0hMSl7bGV0IHI9bmV3IFVpbnQzMkFycmF5KHQubGVuZ3RoKSxuPW5ldyBVaW50MzJBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBzPTA7czx0Lmxlbmd0aDtzKyspe2NvbnN0e2g6aSxsOm99PVYkKHRbc10sZSk7W3Jbc10sbltzXV09W2ksb119cmV0dXJuW3Isbl19Y29uc3Qgclk9KHQsZSk9PkJpZ0ludCh0Pj4+MCk8PFFDfEJpZ0ludChlPj4+MCksblk9KHQsZSxyKT0+dD4+PnIsaVk9KHQsZSxyKT0+dDw8MzItcnxlPj4+cixzWT0odCxlLHIpPT50Pj4+cnxlPDwzMi1yLG9ZPSh0LGUscik9PnQ8PDMyLXJ8ZT4+PnIsYVk9KHQsZSxyKT0+dDw8NjQtcnxlPj4+ci0zMixjWT0odCxlLHIpPT50Pj4+ci0zMnxlPDw2NC1yLGxZPSh0LGUpPT5lLHVZPSh0LGUpPT50LGRZPSh0LGUscik9PnQ8PHJ8ZT4+PjMyLXIsaFk9KHQsZSxyKT0+ZTw8cnx0Pj4+MzItcixwWT0odCxlLHIpPT5lPDxyLTMyfHQ+Pj42NC1yLGZZPSh0LGUscik9PnQ8PHItMzJ8ZT4+PjY0LXI7ZnVuY3Rpb24gbVkodCxlLHIsbil7Y29uc3Qgcz0oZT4+PjApKyhuPj4+MCk7cmV0dXJue2g6dCtyKyhzLzIqKjMyfDApfDAsbDpzfDB9fWNvbnN0IGdZPSh0LGUscik9Pih0Pj4+MCkrKGU+Pj4wKSsocj4+PjApLHdZPSh0LGUscixuKT0+ZStyK24rKHQvMioqMzJ8MCl8MCxiWT0odCxlLHIsbik9Pih0Pj4+MCkrKGU+Pj4wKSsocj4+PjApKyhuPj4+MCkseVk9KHQsZSxyLG4scyk9PmUrcituK3MrKHQvMioqMzJ8MCl8MCx2WT0odCxlLHIsbixzKT0+KHQ+Pj4wKSsoZT4+PjApKyhyPj4+MCkrKG4+Pj4wKSsocz4+PjApLEVZPSh0LGUscixuLHMsaSk9PmUrcituK3MraSsodC8yKiozMnwwKXwwLGJ0PXtmcm9tQmlnOlYkLHNwbGl0OnRZLHRvQmlnOnJZLHNoclNIOm5ZLHNoclNMOmlZLHJvdHJTSDpzWSxyb3RyU0w6b1kscm90ckJIOmFZLHJvdHJCTDpjWSxyb3RyMzJIOmxZLHJvdHIzMkw6dVkscm90bFNIOmRZLHJvdGxTTDpoWSxyb3RsQkg6cFkscm90bEJMOmZZLGFkZDptWSxhZGQzTDpnWSxhZGQzSDp3WSxhZGQ0TDpiWSxhZGQ0SDp5WSxhZGQ1SDpFWSxhZGQ1TDp2WX0sW0NZLHhZXT1idC5zcGxpdChbIjB4NDI4YTJmOThkNzI4YWUyMiIsIjB4NzEzNzQ0OTEyM2VmNjVjZCIsIjB4YjVjMGZiY2ZlYzRkM2IyZiIsIjB4ZTliNWRiYTU4MTg5ZGJiYyIsIjB4Mzk1NmMyNWJmMzQ4YjUzOCIsIjB4NTlmMTExZjFiNjA1ZDAxOSIsIjB4OTIzZjgyYTRhZjE5NGY5YiIsIjB4YWIxYzVlZDVkYTZkODExOCIsIjB4ZDgwN2FhOThhMzAzMDI0MiIsIjB4MTI4MzViMDE0NTcwNmZiZSIsIjB4MjQzMTg1YmU0ZWU0YjI4YyIsIjB4NTUwYzdkYzNkNWZmYjRlMiIsIjB4NzJiZTVkNzRmMjdiODk2ZiIsIjB4ODBkZWIxZmUzYjE2OTZiMSIsIjB4OWJkYzA2YTcyNWM3MTIzNSIsIjB4YzE5YmYxNzRjZjY5MjY5NCIsIjB4ZTQ5YjY5YzE5ZWYxNGFkMiIsIjB4ZWZiZTQ3ODYzODRmMjVlMyIsIjB4MGZjMTlkYzY4YjhjZDViNSIsIjB4MjQwY2ExY2M3N2FjOWM2NSIsIjB4MmRlOTJjNmY1OTJiMDI3NSIsIjB4NGE3NDg0YWE2ZWE2ZTQ4MyIsIjB4NWNiMGE5ZGNiZDQxZmJkNCIsIjB4NzZmOTg4ZGE4MzExNTNiNSIsIjB4OTgzZTUxNTJlZTY2ZGZhYiIsIjB4YTgzMWM2NmQyZGI0MzIxMCIsIjB4YjAwMzI3Yzg5OGZiMjEzZiIsIjB4YmY1OTdmYzdiZWVmMGVlNCIsIjB4YzZlMDBiZjMzZGE4OGZjMiIsIjB4ZDVhNzkxNDc5MzBhYTcyNSIsIjB4MDZjYTYzNTFlMDAzODI2ZiIsIjB4MTQyOTI5NjcwYTBlNmU3MCIsIjB4MjdiNzBhODU0NmQyMmZmYyIsIjB4MmUxYjIxMzg1YzI2YzkyNiIsIjB4NGQyYzZkZmM1YWM0MmFlZCIsIjB4NTMzODBkMTM5ZDk1YjNkZiIsIjB4NjUwYTczNTQ4YmFmNjNkZSIsIjB4NzY2YTBhYmIzYzc3YjJhOCIsIjB4ODFjMmM5MmU0N2VkYWVlNiIsIjB4OTI3MjJjODUxNDgyMzUzYiIsIjB4YTJiZmU4YTE0Y2YxMDM2NCIsIjB4YTgxYTY2NGJiYzQyMzAwMSIsIjB4YzI0YjhiNzBkMGY4OTc5MSIsIjB4Yzc2YzUxYTMwNjU0YmUzMCIsIjB4ZDE5MmU4MTlkNmVmNTIxOCIsIjB4ZDY5OTA2MjQ1NTY1YTkxMCIsIjB4ZjQwZTM1ODU1NzcxMjAyYSIsIjB4MTA2YWEwNzAzMmJiZDFiOCIsIjB4MTlhNGMxMTZiOGQyZDBjOCIsIjB4MWUzNzZjMDg1MTQxYWI1MyIsIjB4Mjc0ODc3NGNkZjhlZWI5OSIsIjB4MzRiMGJjYjVlMTliNDhhOCIsIjB4MzkxYzBjYjNjNWM5NWE2MyIsIjB4NGVkOGFhNGFlMzQxOGFjYiIsIjB4NWI5Y2NhNGY3NzYzZTM3MyIsIjB4NjgyZTZmZjNkNmIyYjhhMyIsIjB4NzQ4ZjgyZWU1ZGVmYjJmYyIsIjB4NzhhNTYzNmY0MzE3MmY2MCIsIjB4ODRjODc4MTRhMWYwYWI3MiIsIjB4OGNjNzAyMDgxYTY0MzllYyIsIjB4OTBiZWZmZmEyMzYzMWUyOCIsIjB4YTQ1MDZjZWJkZTgyYmRlOSIsIjB4YmVmOWEzZjdiMmM2NzkxNSIsIjB4YzY3MTc4ZjJlMzcyNTMyYiIsIjB4Y2EyNzNlY2VlYTI2NjE5YyIsIjB4ZDE4NmI4YzcyMWMwYzIwNyIsIjB4ZWFkYTdkZDZjZGUwZWIxZSIsIjB4ZjU3ZDRmN2ZlZTZlZDE3OCIsIjB4MDZmMDY3YWE3MjE3NmZiYSIsIjB4MGE2MzdkYzVhMmM4OThhNiIsIjB4MTEzZjk4MDRiZWY5MGRhZSIsIjB4MWI3MTBiMzUxMzFjNDcxYiIsIjB4MjhkYjc3ZjUyMzA0N2Q4NCIsIjB4MzJjYWFiN2I0MGM3MjQ5MyIsIjB4M2M5ZWJlMGExNWM5YmViYyIsIjB4NDMxZDY3YzQ5YzEwMGQ0YyIsIjB4NGNjNWQ0YmVjYjNlNDJiNiIsIjB4NTk3ZjI5OWNmYzY1N2UyYSIsIjB4NWZjYjZmYWIzYWQ2ZmFlYyIsIjB4NmM0NDE5OGM0YTQ3NTgxNyJdLm1hcCh0PT5CaWdJbnQodCkpKSxWYT1uZXcgVWludDMyQXJyYXkoODApLEdhPW5ldyBVaW50MzJBcnJheSg4MCk7bGV0IF9ZPWNsYXNzIGV4dGVuZHMgZVl7Y29uc3RydWN0b3IoKXtzdXBlcigxMjgsNjQsMTYsITEpLHRoaXMuQWg9MTc3OTAzMzcwMyx0aGlzLkFsPS0yMDU3MzE1NzYsdGhpcy5CaD0tMTE1MDgzMzAxOSx0aGlzLkJsPS0yMDY3MDkzNzAxLHRoaXMuQ2g9MTAxMzkwNDI0Mix0aGlzLkNsPS0yMzc5MTU3Myx0aGlzLkRoPS0xNTIxNDg2NTM0LHRoaXMuRGw9MTU5NTc1MDEyOSx0aGlzLkVoPTEzNTk4OTMxMTksdGhpcy5FbD0tMTM3NzQwMjE1OSx0aGlzLkZoPS0xNjk0MTQ0MzcyLHRoaXMuRmw9NzI1NTExMTk5LHRoaXMuR2g9NTI4NzM0NjM1LHRoaXMuR2w9LTc5NTc3NzQ5LHRoaXMuSGg9MTU0MTQ1OTIyNSx0aGlzLkhsPTMyNzAzMzIwOX1nZXQoKXtjb25zdHtBaDplLEFsOnIsQmg6bixCbDpzLENoOmksQ2w6byxEaDphLERsOmMsRWg6bCxFbDpkLEZoOnUsRmw6aCxHaDpwLEdsOmYsSGg6bSxIbDp3fT10aGlzO3JldHVybltlLHIsbixzLGksbyxhLGMsbCxkLHUsaCxwLGYsbSx3XX1zZXQoZSxyLG4scyxpLG8sYSxjLGwsZCx1LGgscCxmLG0sdyl7dGhpcy5BaD1lfDAsdGhpcy5BbD1yfDAsdGhpcy5CaD1ufDAsdGhpcy5CbD1zfDAsdGhpcy5DaD1pfDAsdGhpcy5DbD1vfDAsdGhpcy5EaD1hfDAsdGhpcy5EbD1jfDAsdGhpcy5FaD1sfDAsdGhpcy5FbD1kfDAsdGhpcy5GaD11fDAsdGhpcy5GbD1ofDAsdGhpcy5HaD1wfDAsdGhpcy5HbD1mfDAsdGhpcy5IaD1tfDAsdGhpcy5IbD13fDB9cHJvY2VzcyhlLHIpe2ZvcihsZXQgRT0wO0U8MTY7RSsrLHIrPTQpVmFbRV09ZS5nZXRVaW50MzIociksR2FbRV09ZS5nZXRVaW50MzIocis9NCk7Zm9yKGxldCBFPTE2O0U8ODA7RSsrKXtjb25zdCB4PVZhW0UtMTVdfDAsXz1HYVtFLTE1XXwwLGs9YnQucm90clNIKHgsXywxKV5idC5yb3RyU0goeCxfLDgpXmJ0LnNoclNIKHgsXyw3KSxBPWJ0LnJvdHJTTCh4LF8sMSleYnQucm90clNMKHgsXyw4KV5idC5zaHJTTCh4LF8sNyksTT1WYVtFLTJdfDAsUD1HYVtFLTJdfDAsaj1idC5yb3RyU0goTSxQLDE5KV5idC5yb3RyQkgoTSxQLDYxKV5idC5zaHJTSChNLFAsNiksVT1idC5yb3RyU0woTSxQLDE5KV5idC5yb3RyQkwoTSxQLDYxKV5idC5zaHJTTChNLFAsNiksVj1idC5hZGQ0TChBLFUsR2FbRS03XSxHYVtFLTE2XSksRj1idC5hZGQ0SChWLGssaixWYVtFLTddLFZhW0UtMTZdKTtWYVtFXT1GfDAsR2FbRV09VnwwfWxldHtBaDpuLEFsOnMsQmg6aSxCbDpvLENoOmEsQ2w6YyxEaDpsLERsOmQsRWg6dSxFbDpoLEZoOnAsRmw6ZixHaDptLEdsOncsSGg6ZyxIbDp2fT10aGlzO2ZvcihsZXQgRT0wO0U8ODA7RSsrKXtjb25zdCB4PWJ0LnJvdHJTSCh1LGgsMTQpXmJ0LnJvdHJTSCh1LGgsMTgpXmJ0LnJvdHJCSCh1LGgsNDEpLF89YnQucm90clNMKHUsaCwxNCleYnQucm90clNMKHUsaCwxOCleYnQucm90ckJMKHUsaCw0MSksaz11JnBefnUmbSxBPWgmZl5+aCZ3LE09YnQuYWRkNUwodixfLEEseFlbRV0sR2FbRV0pLFA9YnQuYWRkNUgoTSxnLHgsayxDWVtFXSxWYVtFXSksaj1NfDAsVT1idC5yb3RyU0gobixzLDI4KV5idC5yb3RyQkgobixzLDM0KV5idC5yb3RyQkgobixzLDM5KSxWPWJ0LnJvdHJTTChuLHMsMjgpXmJ0LnJvdHJCTChuLHMsMzQpXmJ0LnJvdHJCTChuLHMsMzkpLEY9biZpXm4mYV5pJmEsYj1zJm9ecyZjXm8mYztnPW18MCx2PXd8MCxtPXB8MCx3PWZ8MCxwPXV8MCxmPWh8MCx7aDp1LGw6aH09YnQuYWRkKGx8MCxkfDAsUHwwLGp8MCksbD1hfDAsZD1jfDAsYT1pfDAsYz1vfDAsaT1ufDAsbz1zfDA7Y29uc3QgeT1idC5hZGQzTChqLFYsYik7bj1idC5hZGQzSCh5LFAsVSxGKSxzPXl8MH0oe2g6bixsOnN9PWJ0LmFkZCh0aGlzLkFofDAsdGhpcy5BbHwwLG58MCxzfDApKSx7aDppLGw6b309YnQuYWRkKHRoaXMuQmh8MCx0aGlzLkJsfDAsaXwwLG98MCkse2g6YSxsOmN9PWJ0LmFkZCh0aGlzLkNofDAsdGhpcy5DbHwwLGF8MCxjfDApLHtoOmwsbDpkfT1idC5hZGQodGhpcy5EaHwwLHRoaXMuRGx8MCxsfDAsZHwwKSx7aDp1LGw6aH09YnQuYWRkKHRoaXMuRWh8MCx0aGlzLkVsfDAsdXwwLGh8MCkse2g6cCxsOmZ9PWJ0LmFkZCh0aGlzLkZofDAsdGhpcy5GbHwwLHB8MCxmfDApLHtoOm0sbDp3fT1idC5hZGQodGhpcy5HaHwwLHRoaXMuR2x8MCxtfDAsd3wwKSx7aDpnLGw6dn09YnQuYWRkKHRoaXMuSGh8MCx0aGlzLkhsfDAsZ3wwLHZ8MCksdGhpcy5zZXQobixzLGksbyxhLGMsbCxkLHUsaCxwLGYsbSx3LGcsdil9cm91bmRDbGVhbigpe1ZhLmZpbGwoMCksR2EuZmlsbCgwKX1kZXN0cm95KCl7dGhpcy5idWZmZXIuZmlsbCgwKSx0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwKX19O2NvbnN0IGtZPVhaKCgpPT5uZXcgX1kpOy8qISBub2JsZS1jdXJ2ZXMgLSBNSVQgTGljZW5zZSAoYykgMjAyMiBQYXVsIE1pbGxlciAocGF1bG1pbGxyLmNvbSkgKi9jb25zdCBDNj1CaWdJbnQoMCksRyQ9QmlnSW50KDEpLFNZPUJpZ0ludCgyKTtmdW5jdGlvbiB4Nih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fEFycmF5QnVmZmVyLmlzVmlldyh0KSYmdC5jb25zdHJ1Y3Rvci5uYW1lPT09IlVpbnQ4QXJyYXkifWZ1bmN0aW9uIF82KHQpe2lmKCF4Nih0KSl0aHJvdyBuZXcgRXJyb3IoIlVpbnQ4QXJyYXkgZXhwZWN0ZWQiKX1mdW5jdGlvbiBrMih0LGUpe2lmKHR5cGVvZiBlIT0iYm9vbGVhbiIpdGhyb3cgbmV3IEVycm9yKHQrIiBib29sZWFuIGV4cGVjdGVkLCBnb3QgIitlKX1jb25zdCBBWT1BcnJheS5mcm9tKHtsZW5ndGg6MjU2fSwodCxlKT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKTtmdW5jdGlvbiBrNih0KXtfNih0KTtsZXQgZT0iIjtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyllKz1BWVt0W3JdXTtyZXR1cm4gZX1mdW5jdGlvbiBLJCh0KXtpZih0eXBlb2YgdCE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJoZXggc3RyaW5nIGV4cGVjdGVkLCBnb3QgIit0eXBlb2YgdCk7cmV0dXJuIHQ9PT0iIj9DNjpCaWdJbnQoIjB4Iit0KX1jb25zdCB6bz17XzA6NDgsXzk6NTcsQTo2NSxGOjcwLGE6OTcsZjoxMDJ9O2Z1bmN0aW9uIFE3KHQpe2lmKHQ+PXpvLl8wJiZ0PD16by5fOSlyZXR1cm4gdC16by5fMDtpZih0Pj16by5BJiZ0PD16by5GKXJldHVybiB0LSh6by5BLTEwKTtpZih0Pj16by5hJiZ0PD16by5mKXJldHVybiB0LSh6by5hLTEwKX1mdW5jdGlvbiBaJCh0KXtpZih0eXBlb2YgdCE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJoZXggc3RyaW5nIGV4cGVjdGVkLCBnb3QgIit0eXBlb2YgdCk7Y29uc3QgZT10Lmxlbmd0aCxyPWUvMjtpZihlJTIpdGhyb3cgbmV3IEVycm9yKCJoZXggc3RyaW5nIGV4cGVjdGVkLCBnb3QgdW5wYWRkZWQgaGV4IG9mIGxlbmd0aCAiK2UpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkocik7Zm9yKGxldCBzPTAsaT0wO3M8cjtzKyssaSs9Mil7Y29uc3Qgbz1RNyh0LmNoYXJDb2RlQXQoaSkpLGE9UTcodC5jaGFyQ29kZUF0KGkrMSkpO2lmKG89PT12b2lkIDB8fGE9PT12b2lkIDApe2NvbnN0IGM9dFtpXSt0W2krMV07dGhyb3cgbmV3IEVycm9yKCdoZXggc3RyaW5nIGV4cGVjdGVkLCBnb3Qgbm9uLWhleCBjaGFyYWN0ZXIgIicrYysnIiBhdCBpbmRleCAnK2kpfW5bc109byoxNithfXJldHVybiBufWZ1bmN0aW9uIFRZKHQpe3JldHVybiBLJChrNih0KSl9ZnVuY3Rpb24gVXcodCl7cmV0dXJuIF82KHQpLEskKGs2KFVpbnQ4QXJyYXkuZnJvbSh0KS5yZXZlcnNlKCkpKX1mdW5jdGlvbiBZJCh0LGUpe3JldHVybiBaJCh0LnRvU3RyaW5nKDE2KS5wYWRTdGFydChlKjIsIjAiKSl9ZnVuY3Rpb24gZXgodCxlKXtyZXR1cm4gWSQodCxlKS5yZXZlcnNlKCl9ZnVuY3Rpb24gV28odCxlLHIpe2xldCBuO2lmKHR5cGVvZiBlPT0ic3RyaW5nIil0cnl7bj1aJChlKX1jYXRjaChpKXt0aHJvdyBuZXcgRXJyb3IodCsiIG11c3QgYmUgaGV4IHN0cmluZyBvciBVaW50OEFycmF5LCBjYXVzZTogIitpKX1lbHNlIGlmKHg2KGUpKW49VWludDhBcnJheS5mcm9tKGUpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKHQrIiBtdXN0IGJlIGhleCBzdHJpbmcgb3IgVWludDhBcnJheSIpO2NvbnN0IHM9bi5sZW5ndGg7aWYodHlwZW9mIHI9PSJudW1iZXIiJiZzIT09cil0aHJvdyBuZXcgRXJyb3IodCsiIG9mIGxlbmd0aCAiK3IrIiBleHBlY3RlZCwgZ290ICIrcyk7cmV0dXJuIG59ZnVuY3Rpb24gZTkoLi4udCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgcz10W25dO182KHMpLGUrPXMubGVuZ3RofWNvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBuPTAscz0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPXRbbl07ci5zZXQoaSxzKSxzKz1pLmxlbmd0aH1yZXR1cm4gcn1jb25zdCBTMj10PT50eXBlb2YgdD09ImJpZ2ludCImJkM2PD10O2Z1bmN0aW9uIElZKHQsZSxyKXtyZXR1cm4gUzIodCkmJlMyKGUpJiZTMihyKSYmZTw9dCYmdDxyfWZ1bmN0aW9uIERwKHQsZSxyLG4pe2lmKCFJWShlLHIsbikpdGhyb3cgbmV3IEVycm9yKCJleHBlY3RlZCB2YWxpZCAiK3QrIjogIityKyIgPD0gbiA8ICIrbisiLCBnb3QgIitlKX1mdW5jdGlvbiBSWSh0KXtsZXQgZTtmb3IoZT0wO3Q+QzY7dD4+PUckLGUrPTEpO3JldHVybiBlfWNvbnN0IE5ZPXQ9PihTWTw8QmlnSW50KHQtMSkpLUckLFBZPXtiaWdpbnQ6dD0+dHlwZW9mIHQ9PSJiaWdpbnQiLGZ1bmN0aW9uOnQ9PnR5cGVvZiB0PT0iZnVuY3Rpb24iLGJvb2xlYW46dD0+dHlwZW9mIHQ9PSJib29sZWFuIixzdHJpbmc6dD0+dHlwZW9mIHQ9PSJzdHJpbmciLHN0cmluZ09yVWludDhBcnJheTp0PT50eXBlb2YgdD09InN0cmluZyJ8fHg2KHQpLGlzU2FmZUludGVnZXI6dD0+TnVtYmVyLmlzU2FmZUludGVnZXIodCksYXJyYXk6dD0+QXJyYXkuaXNBcnJheSh0KSxmaWVsZDoodCxlKT0+ZS5GcC5pc1ZhbGlkKHQpLGhhc2g6dD0+dHlwZW9mIHQ9PSJmdW5jdGlvbiImJk51bWJlci5pc1NhZmVJbnRlZ2VyKHQub3V0cHV0TGVuKX07ZnVuY3Rpb24gUzYodCxlLHI9e30pe2NvbnN0IG49KHMsaSxvKT0+e2NvbnN0IGE9UFlbaV07aWYodHlwZW9mIGEhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHZhbGlkYXRvciBmdW5jdGlvbiIpO2NvbnN0IGM9dFtzXTtpZighKG8mJmM9PT12b2lkIDApJiYhYShjLHQpKXRocm93IG5ldyBFcnJvcigicGFyYW0gIitTdHJpbmcocykrIiBpcyBpbnZhbGlkLiBFeHBlY3RlZCAiK2krIiwgZ290ICIrYyl9O2Zvcihjb25zdFtzLGldb2YgT2JqZWN0LmVudHJpZXMoZSkpbihzLGksITEpO2Zvcihjb25zdFtzLGldb2YgT2JqZWN0LmVudHJpZXMocikpbihzLGksITApO3JldHVybiB0fWZ1bmN0aW9uIHQ5KHQpe2NvbnN0IGU9bmV3IFdlYWtNYXA7cmV0dXJuKHIsLi4ubik9Pntjb25zdCBzPWUuZ2V0KHIpO2lmKHMhPT12b2lkIDApcmV0dXJuIHM7Y29uc3QgaT10KHIsLi4ubik7cmV0dXJuIGUuc2V0KHIsaSksaX19Y29uc3QgY249QmlnSW50KDApLEJyPUJpZ0ludCgxKSxXbD1CaWdJbnQoMiksT1k9QmlnSW50KDMpLHR4PUJpZ0ludCg0KSxyOT1CaWdJbnQoNSksbjk9QmlnSW50KDgpO2Z1bmN0aW9uIEpyKHQsZSl7Y29uc3Qgcj10JWU7cmV0dXJuIHI+PWNuP3I6ZStyfWZ1bmN0aW9uICRZKHQsZSxyKXtpZihlPGNuKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBleHBvbmVudCwgbmVnYXRpdmVzIHVuc3VwcG9ydGVkIik7aWYocjw9Y24pdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIG1vZHVsdXMiKTtpZihyPT09QnIpcmV0dXJuIGNuO2xldCBuPUJyO2Zvcig7ZT5jbjspZSZCciYmKG49bip0JXIpLHQ9dCp0JXIsZT4+PUJyO3JldHVybiBufWZ1bmN0aW9uIG5vKHQsZSxyKXtsZXQgbj10O2Zvcig7ZS0tID5jbjspbio9bixuJT1yO3JldHVybiBufWZ1bmN0aW9uIGk5KHQsZSl7aWYodD09PWNuKXRocm93IG5ldyBFcnJvcigiaW52ZXJ0OiBleHBlY3RlZCBub24temVybyBudW1iZXIiKTtpZihlPD1jbil0aHJvdyBuZXcgRXJyb3IoImludmVydDogZXhwZWN0ZWQgcG9zaXRpdmUgbW9kdWx1cywgZ290ICIrZSk7bGV0IHI9SnIodCxlKSxuPWUscz1jbixpPUJyO2Zvcig7ciE9PWNuOyl7Y29uc3Qgbz1uL3IsYT1uJXIsYz1zLWkqbztuPXIscj1hLHM9aSxpPWN9aWYobiE9PUJyKXRocm93IG5ldyBFcnJvcigiaW52ZXJ0OiBkb2VzIG5vdCBleGlzdCIpO3JldHVybiBKcihzLGUpfWZ1bmN0aW9uIE1ZKHQpe2NvbnN0IGU9KHQtQnIpL1dsO2xldCByLG4scztmb3Iocj10LUJyLG49MDtyJVdsPT09Y247ci89V2wsbisrKTtmb3Iocz1XbDtzPHQmJiRZKHMsZSx0KSE9PXQtQnI7cysrKWlmKHM+MWUzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc3F1YXJlIHJvb3Q6IGxpa2VseSBub24tcHJpbWUgUCIpO2lmKG49PT0xKXtjb25zdCBvPSh0K0JyKS90eDtyZXR1cm4gZnVuY3Rpb24oYSxjKXtjb25zdCBsPWEucG93KGMsbyk7aWYoIWEuZXFsKGEuc3FyKGwpLGMpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc3F1YXJlIHJvb3QiKTtyZXR1cm4gbH19Y29uc3QgaT0ocitCcikvV2w7cmV0dXJuIGZ1bmN0aW9uKG8sYSl7aWYoby5wb3coYSxlKT09PW8ubmVnKG8uT05FKSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNxdWFyZSByb290Iik7bGV0IGM9bixsPW8ucG93KG8ubXVsKG8uT05FLHMpLHIpLGQ9by5wb3coYSxpKSx1PW8ucG93KGEscik7Zm9yKDshby5lcWwodSxvLk9ORSk7KXtpZihvLmVxbCh1LG8uWkVSTykpcmV0dXJuIG8uWkVSTztsZXQgaD0xO2ZvcihsZXQgZj1vLnNxcih1KTtoPGMmJiFvLmVxbChmLG8uT05FKTtoKyspZj1vLnNxcihmKTtjb25zdCBwPW8ucG93KGwsQnI8PEJpZ0ludChjLWgtMSkpO2w9by5zcXIocCksZD1vLm11bChkLHApLHU9by5tdWwodSxsKSxjPWh9cmV0dXJuIGR9fWZ1bmN0aW9uIERZKHQpe2lmKHQldHg9PT1PWSl7Y29uc3QgZT0odCtCcikvdHg7cmV0dXJuIGZ1bmN0aW9uKHIsbil7Y29uc3Qgcz1yLnBvdyhuLGUpO2lmKCFyLmVxbChyLnNxcihzKSxuKSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNxdWFyZSByb290Iik7cmV0dXJuIHN9fWlmKHQlbjk9PT1yOSl7Y29uc3QgZT0odC1yOSkvbjk7cmV0dXJuIGZ1bmN0aW9uKHIsbil7Y29uc3Qgcz1yLm11bChuLFdsKSxpPXIucG93KHMsZSksbz1yLm11bChuLGkpLGE9ci5tdWwoci5tdWwobyxXbCksaSksYz1yLm11bChvLHIuc3ViKGEsci5PTkUpKTtpZighci5lcWwoci5zcXIoYyksbikpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBzcXVhcmUgcm9vdCIpO3JldHVybiBjfX1yZXR1cm4gTVkodCl9Y29uc3QgQlk9KHQsZSk9PihKcih0LGUpJkJyKT09PUJyLExZPVsiY3JlYXRlIiwiaXNWYWxpZCIsImlzMCIsIm5lZyIsImludiIsInNxcnQiLCJzcXIiLCJlcWwiLCJhZGQiLCJzdWIiLCJtdWwiLCJwb3ciLCJkaXYiLCJhZGROIiwic3ViTiIsIm11bE4iLCJzcXJOIl07ZnVuY3Rpb24gVVkodCl7Y29uc3QgZT17T1JERVI6ImJpZ2ludCIsTUFTSzoiYmlnaW50IixCWVRFUzoiaXNTYWZlSW50ZWdlciIsQklUUzoiaXNTYWZlSW50ZWdlciJ9LHI9TFkucmVkdWNlKChuLHMpPT4obltzXT0iZnVuY3Rpb24iLG4pLGUpO3JldHVybiBTNih0LHIpfWZ1bmN0aW9uIEZZKHQsZSxyKXtpZihyPGNuKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBleHBvbmVudCwgbmVnYXRpdmVzIHVuc3VwcG9ydGVkIik7aWYocj09PWNuKXJldHVybiB0Lk9ORTtpZihyPT09QnIpcmV0dXJuIGU7bGV0IG49dC5PTkUscz1lO2Zvcig7cj5jbjspciZCciYmKG49dC5tdWwobixzKSkscz10LnNxcihzKSxyPj49QnI7cmV0dXJuIG59ZnVuY3Rpb24galkodCxlKXtjb25zdCByPW5ldyBBcnJheShlLmxlbmd0aCksbj1lLnJlZHVjZSgoaSxvLGEpPT50LmlzMChvKT9pOihyW2FdPWksdC5tdWwoaSxvKSksdC5PTkUpLHM9dC5pbnYobik7cmV0dXJuIGUucmVkdWNlUmlnaHQoKGksbyxhKT0+dC5pczAobyk/aTooclthXT10Lm11bChpLHJbYV0pLHQubXVsKGksbykpLHMpLHJ9ZnVuY3Rpb24gSiQodCxlKXtjb25zdCByPWUhPT12b2lkIDA/ZTp0LnRvU3RyaW5nKDIpLmxlbmd0aCxuPU1hdGguY2VpbChyLzgpO3JldHVybntuQml0TGVuZ3RoOnIsbkJ5dGVMZW5ndGg6bn19ZnVuY3Rpb24gWCQodCxlLHI9ITEsbj17fSl7aWYodDw9Y24pdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZpZWxkOiBleHBlY3RlZCBPUkRFUiA+IDAsIGdvdCAiK3QpO2NvbnN0e25CaXRMZW5ndGg6cyxuQnl0ZUxlbmd0aDppfT1KJCh0LGUpO2lmKGk+MjA0OCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZmllbGQ6IGV4cGVjdGVkIE9SREVSIG9mIDw9IDIwNDggYnl0ZXMiKTtsZXQgbztjb25zdCBhPU9iamVjdC5mcmVlemUoe09SREVSOnQsaXNMRTpyLEJJVFM6cyxCWVRFUzppLE1BU0s6TlkocyksWkVSTzpjbixPTkU6QnIsY3JlYXRlOmM9PkpyKGMsdCksaXNWYWxpZDpjPT57aWYodHlwZW9mIGMhPSJiaWdpbnQiKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmaWVsZCBlbGVtZW50OiBleHBlY3RlZCBiaWdpbnQsIGdvdCAiK3R5cGVvZiBjKTtyZXR1cm4gY248PWMmJmM8dH0saXMwOmM9PmM9PT1jbixpc09kZDpjPT4oYyZCcik9PT1CcixuZWc6Yz0+SnIoLWMsdCksZXFsOihjLGwpPT5jPT09bCxzcXI6Yz0+SnIoYypjLHQpLGFkZDooYyxsKT0+SnIoYytsLHQpLHN1YjooYyxsKT0+SnIoYy1sLHQpLG11bDooYyxsKT0+SnIoYypsLHQpLHBvdzooYyxsKT0+RlkoYSxjLGwpLGRpdjooYyxsKT0+SnIoYyppOShsLHQpLHQpLHNxck46Yz0+YypjLGFkZE46KGMsbCk9PmMrbCxzdWJOOihjLGwpPT5jLWwsbXVsTjooYyxsKT0+YypsLGludjpjPT5pOShjLHQpLHNxcnQ6bi5zcXJ0fHwoYz0+KG98fChvPURZKHQpKSxvKGEsYykpKSxpbnZlcnRCYXRjaDpjPT5qWShhLGMpLGNtb3Y6KGMsbCxkKT0+ZD9sOmMsdG9CeXRlczpjPT5yP2V4KGMsaSk6WSQoYyxpKSxmcm9tQnl0ZXM6Yz0+e2lmKGMubGVuZ3RoIT09aSl0aHJvdyBuZXcgRXJyb3IoIkZpZWxkLmZyb21CeXRlczogZXhwZWN0ZWQgIitpKyIgYnl0ZXMsIGdvdCAiK2MubGVuZ3RoKTtyZXR1cm4gcj9VdyhjKTpUWShjKX19KTtyZXR1cm4gT2JqZWN0LmZyZWV6ZShhKX1jb25zdCBzOT1CaWdJbnQoMCksdmc9QmlnSW50KDEpO2Z1bmN0aW9uIEEyKHQsZSl7Y29uc3Qgcj1lLm5lZ2F0ZSgpO3JldHVybiB0P3I6ZX1mdW5jdGlvbiBRJCh0LGUpe2lmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcih0KXx8dDw9MHx8dD5lKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCB3aW5kb3cgc2l6ZSwgZXhwZWN0ZWQgWzEuLiIrZSsiXSwgZ290IFc9Iit0KX1mdW5jdGlvbiBUMih0LGUpe1EkKHQsZSk7Y29uc3Qgcj1NYXRoLmNlaWwoZS90KSsxLG49MioqKHQtMSk7cmV0dXJue3dpbmRvd3M6cix3aW5kb3dTaXplOm59fWZ1bmN0aW9uIHpZKHQsZSl7aWYoIUFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IEVycm9yKCJhcnJheSBleHBlY3RlZCIpO3QuZm9yRWFjaCgocixuKT0+e2lmKCEociBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCBhdCBpbmRleCAiK24pfSl9ZnVuY3Rpb24gV1kodCxlKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoImFycmF5IG9mIHNjYWxhcnMgZXhwZWN0ZWQiKTt0LmZvckVhY2goKHIsbik9PntpZighZS5pc1ZhbGlkKHIpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzY2FsYXIgYXQgaW5kZXggIituKX0pfWNvbnN0IEkyPW5ldyBXZWFrTWFwLGVNPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIFIyKHQpe3JldHVybiBlTS5nZXQodCl8fDF9ZnVuY3Rpb24gSFkodCxlKXtyZXR1cm57Y29uc3RUaW1lTmVnYXRlOkEyLGhhc1ByZWNvbXB1dGVzKHIpe3JldHVybiBSMihyKSE9PTF9LHVuc2FmZUxhZGRlcihyLG4scz10LlpFUk8pe2xldCBpPXI7Zm9yKDtuPnM5OyluJnZnJiYocz1zLmFkZChpKSksaT1pLmRvdWJsZSgpLG4+Pj12ZztyZXR1cm4gc30scHJlY29tcHV0ZVdpbmRvdyhyLG4pe2NvbnN0e3dpbmRvd3M6cyx3aW5kb3dTaXplOml9PVQyKG4sZSksbz1bXTtsZXQgYT1yLGM9YTtmb3IobGV0IGw9MDtsPHM7bCsrKXtjPWEsby5wdXNoKGMpO2ZvcihsZXQgZD0xO2Q8aTtkKyspYz1jLmFkZChhKSxvLnB1c2goYyk7YT1jLmRvdWJsZSgpfXJldHVybiBvfSx3TkFGKHIsbixzKXtjb25zdHt3aW5kb3dzOmksd2luZG93U2l6ZTpvfT1UMihyLGUpO2xldCBhPXQuWkVSTyxjPXQuQkFTRTtjb25zdCBsPUJpZ0ludCgyKipyLTEpLGQ9Mioqcix1PUJpZ0ludChyKTtmb3IobGV0IGg9MDtoPGk7aCsrKXtjb25zdCBwPWgqbztsZXQgZj1OdW1iZXIocyZsKTtzPj49dSxmPm8mJihmLT1kLHMrPXZnKTtjb25zdCBtPXAsdz1wK01hdGguYWJzKGYpLTEsZz1oJTIhPT0wLHY9ZjwwO2Y9PT0wP2M9Yy5hZGQoQTIoZyxuW21dKSk6YT1hLmFkZChBMih2LG5bd10pKX1yZXR1cm57cDphLGY6Y319LHdOQUZVbnNhZmUocixuLHMsaT10LlpFUk8pe2NvbnN0e3dpbmRvd3M6byx3aW5kb3dTaXplOmF9PVQyKHIsZSksYz1CaWdJbnQoMioqci0xKSxsPTIqKnIsZD1CaWdJbnQocik7Zm9yKGxldCB1PTA7dTxvO3UrKyl7Y29uc3QgaD11KmE7aWYocz09PXM5KWJyZWFrO2xldCBwPU51bWJlcihzJmMpO2lmKHM+Pj1kLHA+YSYmKHAtPWwscys9dmcpLHA9PT0wKWNvbnRpbnVlO2xldCBmPW5baCtNYXRoLmFicyhwKS0xXTtwPDAmJihmPWYubmVnYXRlKCkpLGk9aS5hZGQoZil9cmV0dXJuIGl9LGdldFByZWNvbXB1dGVzKHIsbixzKXtsZXQgaT1JMi5nZXQobik7cmV0dXJuIGl8fChpPXRoaXMucHJlY29tcHV0ZVdpbmRvdyhuLHIpLHIhPT0xJiZJMi5zZXQobixzKGkpKSksaX0sd05BRkNhY2hlZChyLG4scyl7Y29uc3QgaT1SMihyKTtyZXR1cm4gdGhpcy53TkFGKGksdGhpcy5nZXRQcmVjb21wdXRlcyhpLHIscyksbil9LHdOQUZDYWNoZWRVbnNhZmUocixuLHMsaSl7Y29uc3Qgbz1SMihyKTtyZXR1cm4gbz09PTE/dGhpcy51bnNhZmVMYWRkZXIocixuLGkpOnRoaXMud05BRlVuc2FmZShvLHRoaXMuZ2V0UHJlY29tcHV0ZXMobyxyLHMpLG4saSl9LHNldFdpbmRvd1NpemUocixuKXtRJChuLGUpLGVNLnNldChyLG4pLEkyLmRlbGV0ZShyKX19fWZ1bmN0aW9uIHFZKHQsZSxyLG4pe2lmKHpZKHIsdCksV1kobixlKSxyLmxlbmd0aCE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiYXJyYXlzIG9mIHBvaW50cyBhbmQgc2NhbGFycyBtdXN0IGhhdmUgZXF1YWwgbGVuZ3RoIik7Y29uc3Qgcz10LlpFUk8saT1SWShCaWdJbnQoci5sZW5ndGgpKSxvPWk+MTI/aS0zOmk+ND9pLTI6aT8yOjEsYT0oMTw8byktMSxjPW5ldyBBcnJheShhKzEpLmZpbGwocyksbD1NYXRoLmZsb29yKChlLkJJVFMtMSkvbykqbztsZXQgZD1zO2ZvcihsZXQgdT1sO3U+PTA7dS09byl7Yy5maWxsKHMpO2ZvcihsZXQgcD0wO3A8bi5sZW5ndGg7cCsrKXtjb25zdCBmPW5bcF0sbT1OdW1iZXIoZj4+QmlnSW50KHUpJkJpZ0ludChhKSk7Y1ttXT1jW21dLmFkZChyW3BdKX1sZXQgaD1zO2ZvcihsZXQgcD1jLmxlbmd0aC0xLGY9cztwPjA7cC0tKWY9Zi5hZGQoY1twXSksaD1oLmFkZChmKTtpZihkPWQuYWRkKGgpLHUhPT0wKWZvcihsZXQgcD0wO3A8bztwKyspZD1kLmRvdWJsZSgpfXJldHVybiBkfWZ1bmN0aW9uIFZZKHQpe3JldHVybiBVWSh0LkZwKSxTNih0LHtuOiJiaWdpbnQiLGg6ImJpZ2ludCIsR3g6ImZpZWxkIixHeToiZmllbGQifSx7bkJpdExlbmd0aDoiaXNTYWZlSW50ZWdlciIsbkJ5dGVMZW5ndGg6ImlzU2FmZUludGVnZXIifSksT2JqZWN0LmZyZWV6ZSh7Li4uSiQodC5uLHQubkJpdExlbmd0aCksLi4udCxwOnQuRnAuT1JERVJ9KX1jb25zdCBwcz1CaWdJbnQoMCksS249QmlnSW50KDEpLEVnPUJpZ0ludCgyKSxHWT1CaWdJbnQoOCksS1k9e3ppcDIxNTohMH07ZnVuY3Rpb24gWlkodCl7Y29uc3QgZT1WWSh0KTtyZXR1cm4gUzYodCx7aGFzaDoiZnVuY3Rpb24iLGE6ImJpZ2ludCIsZDoiYmlnaW50IixyYW5kb21CeXRlczoiZnVuY3Rpb24ifSx7YWRqdXN0U2NhbGFyQnl0ZXM6ImZ1bmN0aW9uIixkb21haW46ImZ1bmN0aW9uIix1dlJhdGlvOiJmdW5jdGlvbiIsbWFwVG9DdXJ2ZToiZnVuY3Rpb24ifSksT2JqZWN0LmZyZWV6ZSh7Li4uZX0pfWZ1bmN0aW9uIFlZKHQpe2NvbnN0IGU9WlkodCkse0ZwOnIsbixwcmVoYXNoOnMsaGFzaDppLHJhbmRvbUJ5dGVzOm8sbkJ5dGVMZW5ndGg6YSxoOmN9PWUsbD1FZzw8QmlnSW50KGEqOCktS24sZD1yLmNyZWF0ZSx1PVgkKGUubixlLm5CaXRMZW5ndGgpLGg9ZS51dlJhdGlvfHwoKHksQyk9Pnt0cnl7cmV0dXJue2lzVmFsaWQ6ITAsdmFsdWU6ci5zcXJ0KHkqci5pbnYoQykpfX1jYXRjaHtyZXR1cm57aXNWYWxpZDohMSx2YWx1ZTpwc319fSkscD1lLmFkanVzdFNjYWxhckJ5dGVzfHwoeT0+eSksZj1lLmRvbWFpbnx8KCh5LEMsVCk9PntpZihrMigicGhmbGFnIixUKSxDLmxlbmd0aHx8VCl0aHJvdyBuZXcgRXJyb3IoIkNvbnRleHRzL3ByZS1oYXNoIGFyZSBub3Qgc3VwcG9ydGVkIik7cmV0dXJuIHl9KTtmdW5jdGlvbiBtKHksQyl7RHAoImNvb3JkaW5hdGUgIit5LEMscHMsbCl9ZnVuY3Rpb24gdyh5KXtpZighKHkgaW5zdGFuY2VvZiBFKSl0aHJvdyBuZXcgRXJyb3IoIkV4dGVuZGVkUG9pbnQgZXhwZWN0ZWQiKX1jb25zdCBnPXQ5KCh5LEMpPT57Y29uc3R7ZXg6VCxleTpOLGV6OlJ9PXksST15LmlzMCgpO0M9PW51bGwmJihDPUk/R1k6ci5pbnYoUikpO2NvbnN0IEI9ZChUKkMpLFM9ZChOKkMpLHo9ZChSKkMpO2lmKEkpcmV0dXJue3g6cHMseTpLbn07aWYoeiE9PUtuKXRocm93IG5ldyBFcnJvcigiaW52WiB3YXMgaW52YWxpZCIpO3JldHVybnt4OkIseTpTfX0pLHY9dDkoeT0+e2NvbnN0e2E6QyxkOlR9PWU7aWYoeS5pczAoKSl0aHJvdyBuZXcgRXJyb3IoImJhZCBwb2ludDogWkVSTyIpO2NvbnN0e2V4Ok4sZXk6UixlejpJLGV0OkJ9PXksUz1kKE4qTiksej1kKFIqUiksUT1kKEkqSSkscmU9ZChRKlEpLEo9ZChTKkMpLGVlPWQoUSpkKEoreikpLHRlPWQocmUrZChUKmQoUyp6KSkpO2lmKGVlIT09dGUpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9pbnQ6IGVxdWF0aW9uIGxlZnQgIT0gcmlnaHQgKDEpIik7Y29uc3QgaGU9ZChOKlIpLFNlPWQoSSpCKTtpZihoZSE9PVNlKXRocm93IG5ldyBFcnJvcigiYmFkIHBvaW50OiBlcXVhdGlvbiBsZWZ0ICE9IHJpZ2h0ICgyKSIpO3JldHVybiEwfSk7Y2xhc3MgRXtjb25zdHJ1Y3RvcihDLFQsTixSKXt0aGlzLmV4PUMsdGhpcy5leT1ULHRoaXMuZXo9Tix0aGlzLmV0PVIsbSgieCIsQyksbSgieSIsVCksbSgieiIsTiksbSgidCIsUiksT2JqZWN0LmZyZWV6ZSh0aGlzKX1nZXQgeCgpe3JldHVybiB0aGlzLnRvQWZmaW5lKCkueH1nZXQgeSgpe3JldHVybiB0aGlzLnRvQWZmaW5lKCkueX1zdGF0aWMgZnJvbUFmZmluZShDKXtpZihDIGluc3RhbmNlb2YgRSl0aHJvdyBuZXcgRXJyb3IoImV4dGVuZGVkIHBvaW50IG5vdCBhbGxvd2VkIik7Y29uc3R7eDpULHk6Tn09Q3x8e307cmV0dXJuIG0oIngiLFQpLG0oInkiLE4pLG5ldyBFKFQsTixLbixkKFQqTikpfXN0YXRpYyBub3JtYWxpemVaKEMpe2NvbnN0IFQ9ci5pbnZlcnRCYXRjaChDLm1hcChOPT5OLmV6KSk7cmV0dXJuIEMubWFwKChOLFIpPT5OLnRvQWZmaW5lKFRbUl0pKS5tYXAoRS5mcm9tQWZmaW5lKX1zdGF0aWMgbXNtKEMsVCl7cmV0dXJuIHFZKEUsdSxDLFQpfV9zZXRXaW5kb3dTaXplKEMpe2suc2V0V2luZG93U2l6ZSh0aGlzLEMpfWFzc2VydFZhbGlkaXR5KCl7dih0aGlzKX1lcXVhbHMoQyl7dyhDKTtjb25zdHtleDpULGV5Ok4sZXo6Un09dGhpcyx7ZXg6SSxleTpCLGV6OlN9PUMsej1kKFQqUyksUT1kKEkqUikscmU9ZChOKlMpLEo9ZChCKlIpO3JldHVybiB6PT09USYmcmU9PT1KfWlzMCgpe3JldHVybiB0aGlzLmVxdWFscyhFLlpFUk8pfW5lZ2F0ZSgpe3JldHVybiBuZXcgRShkKC10aGlzLmV4KSx0aGlzLmV5LHRoaXMuZXosZCgtdGhpcy5ldCkpfWRvdWJsZSgpe2NvbnN0e2E6Q309ZSx7ZXg6VCxleTpOLGV6OlJ9PXRoaXMsST1kKFQqVCksQj1kKE4qTiksUz1kKEVnKmQoUipSKSksej1kKEMqSSksUT1UK04scmU9ZChkKFEqUSktSS1CKSxKPXorQixlZT1KLVMsdGU9ei1CLGhlPWQocmUqZWUpLFNlPWQoSip0ZSksSz1kKHJlKnRlKSxaPWQoZWUqSik7cmV0dXJuIG5ldyBFKGhlLFNlLFosSyl9YWRkKEMpe3coQyk7Y29uc3R7YTpULGQ6Tn09ZSx7ZXg6UixleTpJLGV6OkIsZXQ6U309dGhpcyx7ZXg6eixleTpRLGV6OnJlLGV0Okp9PUM7aWYoVD09PUJpZ0ludCgtMSkpe2NvbnN0IGZuPWQoKEktUikqKFEreikpLHh0PWQoKEkrUikqKFEteikpLGl0PWQoeHQtZm4pO2lmKGl0PT09cHMpcmV0dXJuIHRoaXMuZG91YmxlKCk7Y29uc3QgTHQ9ZChCKkVnKkopLEV0PWQoUypFZypyZSksU3Q9RXQrTHQsTXI9eHQrZm4sQXQ9RXQtTHQscT1kKFN0Kml0KSxPPWQoTXIqQXQpLEw9ZChTdCpBdCksWD1kKGl0Kk1yKTtyZXR1cm4gbmV3IEUocSxPLFgsTCl9Y29uc3QgZWU9ZChSKnopLHRlPWQoSSpRKSxoZT1kKFMqTipKKSxTZT1kKEIqcmUpLEs9ZCgoUitJKSooeitRKS1lZS10ZSksWj1TZS1oZSxtZT1TZStoZSx2ZT1kKHRlLVQqZWUpLEZlPWQoSypaKSxldD1kKG1lKnZlKSxLZT1kKEsqdmUpLHZ0PWQoWiptZSk7cmV0dXJuIG5ldyBFKEZlLGV0LHZ0LEtlKX1zdWJ0cmFjdChDKXtyZXR1cm4gdGhpcy5hZGQoQy5uZWdhdGUoKSl9d05BRihDKXtyZXR1cm4gay53TkFGQ2FjaGVkKHRoaXMsQyxFLm5vcm1hbGl6ZVopfW11bHRpcGx5KEMpe2NvbnN0IFQ9QztEcCgic2NhbGFyIixULEtuLG4pO2NvbnN0e3A6TixmOlJ9PXRoaXMud05BRihUKTtyZXR1cm4gRS5ub3JtYWxpemVaKFtOLFJdKVswXX1tdWx0aXBseVVuc2FmZShDLFQ9RS5aRVJPKXtjb25zdCBOPUM7cmV0dXJuIERwKCJzY2FsYXIiLE4scHMsbiksTj09PXBzP186dGhpcy5pczAoKXx8Tj09PUtuP3RoaXM6ay53TkFGQ2FjaGVkVW5zYWZlKHRoaXMsTixFLm5vcm1hbGl6ZVosVCl9aXNTbWFsbE9yZGVyKCl7cmV0dXJuIHRoaXMubXVsdGlwbHlVbnNhZmUoYykuaXMwKCl9aXNUb3JzaW9uRnJlZSgpe3JldHVybiBrLnVuc2FmZUxhZGRlcih0aGlzLG4pLmlzMCgpfXRvQWZmaW5lKEMpe3JldHVybiBnKHRoaXMsQyl9Y2xlYXJDb2ZhY3Rvcigpe2NvbnN0e2g6Q309ZTtyZXR1cm4gQz09PUtuP3RoaXM6dGhpcy5tdWx0aXBseVVuc2FmZShDKX1zdGF0aWMgZnJvbUhleChDLFQ9ITEpe2NvbnN0e2Q6TixhOlJ9PWUsST1yLkJZVEVTO0M9V28oInBvaW50SGV4IixDLEkpLGsyKCJ6aXAyMTUiLFQpO2NvbnN0IEI9Qy5zbGljZSgpLFM9Q1tJLTFdO0JbSS0xXT1TJi0xMjk7Y29uc3Qgej1VdyhCKSxRPVQ/bDpyLk9SREVSO0RwKCJwb2ludEhleC55Iix6LHBzLFEpO2NvbnN0IHJlPWQoeip6KSxKPWQocmUtS24pLGVlPWQoTipyZS1SKTtsZXR7aXNWYWxpZDp0ZSx2YWx1ZTpoZX09aChKLGVlKTtpZighdGUpdGhyb3cgbmV3IEVycm9yKCJQb2ludC5mcm9tSGV4OiBpbnZhbGlkIHkgY29vcmRpbmF0ZSIpO2NvbnN0IFNlPShoZSZLbik9PT1LbixLPShTJjEyOCkhPT0wO2lmKCFUJiZoZT09PXBzJiZLKXRocm93IG5ldyBFcnJvcigiUG9pbnQuZnJvbUhleDogeD0wIGFuZCB4XzA9MSIpO3JldHVybiBLIT09U2UmJihoZT1kKC1oZSkpLEUuZnJvbUFmZmluZSh7eDpoZSx5Onp9KX1zdGF0aWMgZnJvbVByaXZhdGVLZXkoQyl7cmV0dXJuIFAoQykucG9pbnR9dG9SYXdCeXRlcygpe2NvbnN0e3g6Qyx5OlR9PXRoaXMudG9BZmZpbmUoKSxOPWV4KFQsci5CWVRFUyk7cmV0dXJuIE5bTi5sZW5ndGgtMV18PUMmS24/MTI4OjAsTn10b0hleCgpe3JldHVybiBrNih0aGlzLnRvUmF3Qnl0ZXMoKSl9fUUuQkFTRT1uZXcgRShlLkd4LGUuR3ksS24sZChlLkd4KmUuR3kpKSxFLlpFUk89bmV3IEUocHMsS24sS24scHMpO2NvbnN0e0JBU0U6eCxaRVJPOl99PUUsaz1IWShFLGEqOCk7ZnVuY3Rpb24gQSh5KXtyZXR1cm4gSnIoeSxuKX1mdW5jdGlvbiBNKHkpe3JldHVybiBBKFV3KHkpKX1mdW5jdGlvbiBQKHkpe2NvbnN0IEM9ci5CWVRFUzt5PVdvKCJwcml2YXRlIGtleSIseSxDKTtjb25zdCBUPVdvKCJoYXNoZWQgcHJpdmF0ZSBrZXkiLGkoeSksMipDKSxOPXAoVC5zbGljZSgwLEMpKSxSPVQuc2xpY2UoQywyKkMpLEk9TShOKSxCPXgubXVsdGlwbHkoSSksUz1CLnRvUmF3Qnl0ZXMoKTtyZXR1cm57aGVhZDpOLHByZWZpeDpSLHNjYWxhcjpJLHBvaW50OkIscG9pbnRCeXRlczpTfX1mdW5jdGlvbiBqKHkpe3JldHVybiBQKHkpLnBvaW50Qnl0ZXN9ZnVuY3Rpb24gVSh5PW5ldyBVaW50OEFycmF5LC4uLkMpe2NvbnN0IFQ9ZTkoLi4uQyk7cmV0dXJuIE0oaShmKFQsV28oImNvbnRleHQiLHkpLCEhcykpKX1mdW5jdGlvbiBWKHksQyxUPXt9KXt5PVdvKCJtZXNzYWdlIix5KSxzJiYoeT1zKHkpKTtjb25zdHtwcmVmaXg6TixzY2FsYXI6Uixwb2ludEJ5dGVzOkl9PVAoQyksQj1VKFQuY29udGV4dCxOLHkpLFM9eC5tdWx0aXBseShCKS50b1Jhd0J5dGVzKCksej1VKFQuY29udGV4dCxTLEkseSksUT1BKEIreipSKTtEcCgic2lnbmF0dXJlLnMiLFEscHMsbik7Y29uc3QgcmU9ZTkoUyxleChRLHIuQllURVMpKTtyZXR1cm4gV28oInJlc3VsdCIscmUsci5CWVRFUyoyKX1jb25zdCBGPUtZO2Z1bmN0aW9uIGIoeSxDLFQsTj1GKXtjb25zdHtjb250ZXh0OlIsemlwMjE1Okl9PU4sQj1yLkJZVEVTO3k9V28oInNpZ25hdHVyZSIseSwyKkIpLEM9V28oIm1lc3NhZ2UiLEMpLFQ9V28oInB1YmxpY0tleSIsVCxCKSxJIT09dm9pZCAwJiZrMigiemlwMjE1IixJKSxzJiYoQz1zKEMpKTtjb25zdCBTPVV3KHkuc2xpY2UoQiwyKkIpKTtsZXQgeixRLHJlO3RyeXt6PUUuZnJvbUhleChULEkpLFE9RS5mcm9tSGV4KHkuc2xpY2UoMCxCKSxJKSxyZT14Lm11bHRpcGx5VW5zYWZlKFMpfWNhdGNoe3JldHVybiExfWlmKCFJJiZ6LmlzU21hbGxPcmRlcigpKXJldHVybiExO2NvbnN0IEo9VShSLFEudG9SYXdCeXRlcygpLHoudG9SYXdCeXRlcygpLEMpO3JldHVybiBRLmFkZCh6Lm11bHRpcGx5VW5zYWZlKEopKS5zdWJ0cmFjdChyZSkuY2xlYXJDb2ZhY3RvcigpLmVxdWFscyhFLlpFUk8pfXJldHVybiB4Ll9zZXRXaW5kb3dTaXplKDgpLHtDVVJWRTplLGdldFB1YmxpY0tleTpqLHNpZ246Vix2ZXJpZnk6YixFeHRlbmRlZFBvaW50OkUsdXRpbHM6e2dldEV4dGVuZGVkUHVibGljS2V5OlAscmFuZG9tUHJpdmF0ZUtleTooKT0+byhyLkJZVEVTKSxwcmVjb21wdXRlKHk9OCxDPUUuQkFTRSl7cmV0dXJuIEMuX3NldFdpbmRvd1NpemUoeSksQy5tdWx0aXBseShCaWdJbnQoMykpLEN9fX19QmlnSW50KDApLEJpZ0ludCgxKTtjb25zdCBBNj1CaWdJbnQoIjU3ODk2MDQ0NjE4NjU4MDk3NzExNzg1NDkyNTA0MzQzOTUzOTI2NjM0OTkyMzMyODIwMjgyMDE5NzI4NzkyMDAzOTU2NTY0ODE5OTQ5Iiksbzk9QmlnSW50KCIxOTY4MTE2MTM3NjcwNzUwNTk1NjgwNzA3OTMwNDk4ODU0MjAxNTQ0NjA2NjUxNTkyMzg5MDE2Mjc0NDAyMTA3MzEyMzgyOTc4NDc1MiIpO0JpZ0ludCgwKTtjb25zdCBKWT1CaWdJbnQoMSksYTk9QmlnSW50KDIpO0JpZ0ludCgzKTtjb25zdCBYWT1CaWdJbnQoNSksUVk9QmlnSW50KDgpO2Z1bmN0aW9uIGVKKHQpe2NvbnN0IGU9QmlnSW50KDEwKSxyPUJpZ0ludCgyMCksbj1CaWdJbnQoNDApLHM9QmlnSW50KDgwKSxpPUE2LG89dCp0JWkqdCVpLGE9bm8obyxhOSxpKSpvJWksYz1ubyhhLEpZLGkpKnQlaSxsPW5vKGMsWFksaSkqYyVpLGQ9bm8obCxlLGkpKmwlaSx1PW5vKGQscixpKSpkJWksaD1ubyh1LG4saSkqdSVpLHA9bm8oaCxzLGkpKmglaSxmPW5vKHAscyxpKSpoJWksbT1ubyhmLGUsaSkqbCVpO3JldHVybntwb3dfcF81Xzg6bm8obSxhOSxpKSp0JWksYjI6b319ZnVuY3Rpb24gdEoodCl7cmV0dXJuIHRbMF0mPTI0OCx0WzMxXSY9MTI3LHRbMzFdfD02NCx0fWZ1bmN0aW9uIHJKKHQsZSl7Y29uc3Qgcj1BNixuPUpyKGUqZSplLHIpLHM9SnIobipuKmUsciksaT1lSih0KnMpLnBvd19wXzVfODtsZXQgbz1Kcih0Km4qaSxyKTtjb25zdCBhPUpyKGUqbypvLHIpLGM9byxsPUpyKG8qbzksciksZD1hPT09dCx1PWE9PT1KcigtdCxyKSxoPWE9PT1KcigtdCpvOSxyKTtyZXR1cm4gZCYmKG89YyksKHV8fGgpJiYobz1sKSxCWShvLHIpJiYobz1KcigtbyxyKSkse2lzVmFsaWQ6ZHx8dSx2YWx1ZTpvfX1jb25zdCBuSj1YJChBNix2b2lkIDAsITApLGlKPXthOkJpZ0ludCgtMSksZDpCaWdJbnQoIjM3MDk1NzA1OTM0NjY5NDM5MzQzMTM4MDgzNTA4NzU0NTY1MTg5NTQyMTEzODc5ODQzMjE5MDE2Mzg4Nzg1NTMzMDg1OTQwMjgzNTU1IiksRnA6bkosbjpCaWdJbnQoIjcyMzcwMDU1NzczMzIyNjIyMTM5NzMxODY1NjMwNDI5OTQyNDA4NTcxMTYzNTkzNzk5MDc2MDYwMDE5NTA5MzgyODU0NTQyNTA5ODkiKSxoOlFZLEd4OkJpZ0ludCgiMTUxMTIyMjEzNDk1MzU0MDA3NzI1MDExNTE0MDk1ODg1MzE1MTE0NTQwMTI2OTMwNDE4NTcyMDYwNDYxMTMyODM5NDk4NDc3NjIyMDIiKSxHeTpCaWdJbnQoIjQ2MzE2ODM1Njk0OTI2NDc4MTY5NDI4Mzk0MDAzNDc1MTYzMTQxMzA3OTkzODY2MjU2MjI1NjE1NzgzMDMzNjAzMTY1MjUxODU1OTYwIiksaGFzaDprWSxyYW5kb21CeXRlczpxJCxhZGp1c3RTY2FsYXJCeXRlczp0Six1dlJhdGlvOnJKfSx0TT1ZWShpSiksc0o9IkVkRFNBIixvSj0iSldUIixoYj0iLiIsUnk9ImJhc2U2NHVybCIsck09InV0ZjgiLG5NPSJ1dGY4IixhSj0iOiIsY0o9ImRpZCIsbEo9ImtleSIsYzk9ImJhc2U1OGJ0YyIsdUo9InoiLGRKPSJLMzYiLGhKPTMyO2Z1bmN0aW9uIFQ2KHQpe3JldHVybiBnbG9iYWxUaGlzLkJ1ZmZlciE9bnVsbD9uZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKTp0fWZ1bmN0aW9uIGlNKHQ9MCl7cmV0dXJuIGdsb2JhbFRoaXMuQnVmZmVyIT1udWxsJiZnbG9iYWxUaGlzLkJ1ZmZlci5hbGxvY1Vuc2FmZSE9bnVsbD9UNihnbG9iYWxUaGlzLkJ1ZmZlci5hbGxvY1Vuc2FmZSh0KSk6bmV3IFVpbnQ4QXJyYXkodCl9ZnVuY3Rpb24gc00odCxlKXtlfHwoZT10LnJlZHVjZSgocyxpKT0+cytpLmxlbmd0aCwwKSk7Y29uc3Qgcj1pTShlKTtsZXQgbj0wO2Zvcihjb25zdCBzIG9mIHQpci5zZXQocyxuKSxuKz1zLmxlbmd0aDtyZXR1cm4gVDYocil9ZnVuY3Rpb24gcEoodCxlKXtpZih0Lmxlbmd0aD49MjU1KXRocm93IG5ldyBUeXBlRXJyb3IoIkFscGhhYmV0IHRvbyBsb25nIik7Zm9yKHZhciByPW5ldyBVaW50OEFycmF5KDI1Niksbj0wO248ci5sZW5ndGg7bisrKXJbbl09MjU1O2Zvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgaT10LmNoYXJBdChzKSxvPWkuY2hhckNvZGVBdCgwKTtpZihyW29dIT09MjU1KXRocm93IG5ldyBUeXBlRXJyb3IoaSsiIGlzIGFtYmlndW91cyIpO3Jbb109c312YXIgYT10Lmxlbmd0aCxjPXQuY2hhckF0KDApLGw9TWF0aC5sb2coYSkvTWF0aC5sb2coMjU2KSxkPU1hdGgubG9nKDI1NikvTWF0aC5sb2coYSk7ZnVuY3Rpb24gdShmKXtpZihmIGluc3RhbmNlb2YgVWludDhBcnJheXx8KEFycmF5QnVmZmVyLmlzVmlldyhmKT9mPW5ldyBVaW50OEFycmF5KGYuYnVmZmVyLGYuYnl0ZU9mZnNldCxmLmJ5dGVMZW5ndGgpOkFycmF5LmlzQXJyYXkoZikmJihmPVVpbnQ4QXJyYXkuZnJvbShmKSkpLCEoZiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIFVpbnQ4QXJyYXkiKTtpZihmLmxlbmd0aD09PTApcmV0dXJuIiI7Zm9yKHZhciBtPTAsdz0wLGc9MCx2PWYubGVuZ3RoO2chPT12JiZmW2ddPT09MDspZysrLG0rKztmb3IodmFyIEU9KHYtZykqZCsxPj4+MCx4PW5ldyBVaW50OEFycmF5KEUpO2chPT12Oyl7Zm9yKHZhciBfPWZbZ10saz0wLEE9RS0xOyhfIT09MHx8azx3KSYmQSE9PS0xO0EtLSxrKyspXys9MjU2KnhbQV0+Pj4wLHhbQV09XyVhPj4+MCxfPV8vYT4+PjA7aWYoXyE9PTApdGhyb3cgbmV3IEVycm9yKCJOb24temVybyBjYXJyeSIpO3c9ayxnKyt9Zm9yKHZhciBNPUUtdztNIT09RSYmeFtNXT09PTA7KU0rKztmb3IodmFyIFA9Yy5yZXBlYXQobSk7TTxFOysrTSlQKz10LmNoYXJBdCh4W01dKTtyZXR1cm4gUH1mdW5jdGlvbiBoKGYpe2lmKHR5cGVvZiBmIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBTdHJpbmciKTtpZihmLmxlbmd0aD09PTApcmV0dXJuIG5ldyBVaW50OEFycmF5O3ZhciBtPTA7aWYoZlttXSE9PSIgIil7Zm9yKHZhciB3PTAsZz0wO2ZbbV09PT1jOyl3KyssbSsrO2Zvcih2YXIgdj0oZi5sZW5ndGgtbSkqbCsxPj4+MCxFPW5ldyBVaW50OEFycmF5KHYpO2ZbbV07KXt2YXIgeD1yW2YuY2hhckNvZGVBdChtKV07aWYoeD09PTI1NSlyZXR1cm47Zm9yKHZhciBfPTAsaz12LTE7KHghPT0wfHxfPGcpJiZrIT09LTE7ay0tLF8rKyl4Kz1hKkVba10+Pj4wLEVba109eCUyNTY+Pj4wLHg9eC8yNTY+Pj4wO2lmKHghPT0wKXRocm93IG5ldyBFcnJvcigiTm9uLXplcm8gY2FycnkiKTtnPV8sbSsrfWlmKGZbbV0hPT0iICIpe2Zvcih2YXIgQT12LWc7QSE9PXYmJkVbQV09PT0wOylBKys7Zm9yKHZhciBNPW5ldyBVaW50OEFycmF5KHcrKHYtQSkpLFA9dztBIT09djspTVtQKytdPUVbQSsrXTtyZXR1cm4gTX19fWZ1bmN0aW9uIHAoZil7dmFyIG09aChmKTtpZihtKXJldHVybiBtO3Rocm93IG5ldyBFcnJvcihgTm9uLSR7ZX0gY2hhcmFjdGVyYCl9cmV0dXJue2VuY29kZTp1LGRlY29kZVVuc2FmZTpoLGRlY29kZTpwfX12YXIgZko9cEosbUo9Zko7Y29uc3Qgb009dD0+e2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5JiZ0LmNvbnN0cnVjdG9yLm5hbWU9PT0iVWludDhBcnJheSIpcmV0dXJuIHQ7aWYodCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiBuZXcgVWludDhBcnJheSh0KTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcodCkpcmV0dXJuIG5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpO3Rocm93IG5ldyBFcnJvcigiVW5rbm93biB0eXBlLCBtdXN0IGJlIGJpbmFyeSB0eXBlIil9LGdKPXQ9Pm5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh0KSx3Sj10PT5uZXcgVGV4dERlY29kZXIoKS5kZWNvZGUodCk7bGV0IGJKPWNsYXNze2NvbnN0cnVjdG9yKGUscixuKXt0aGlzLm5hbWU9ZSx0aGlzLnByZWZpeD1yLHRoaXMuYmFzZUVuY29kZT1ufWVuY29kZShlKXtpZihlIGluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm5gJHt0aGlzLnByZWZpeH0ke3RoaXMuYmFzZUVuY29kZShlKX1gO3Rocm93IEVycm9yKCJVbmtub3duIHR5cGUsIG11c3QgYmUgYmluYXJ5IHR5cGUiKX19LHlKPWNsYXNze2NvbnN0cnVjdG9yKGUscixuKXtpZih0aGlzLm5hbWU9ZSx0aGlzLnByZWZpeD1yLHIuY29kZVBvaW50QXQoMCk9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHByZWZpeCBjaGFyYWN0ZXIiKTt0aGlzLnByZWZpeENvZGVQb2ludD1yLmNvZGVQb2ludEF0KDApLHRoaXMuYmFzZURlY29kZT1ufWRlY29kZShlKXtpZih0eXBlb2YgZT09InN0cmluZyIpe2lmKGUuY29kZVBvaW50QXQoMCkhPT10aGlzLnByZWZpeENvZGVQb2ludCl0aHJvdyBFcnJvcihgVW5hYmxlIHRvIGRlY29kZSBtdWx0aWJhc2Ugc3RyaW5nICR7SlNPTi5zdHJpbmdpZnkoZSl9LCAke3RoaXMubmFtZX0gZGVjb2RlciBvbmx5IHN1cHBvcnRzIGlucHV0cyBwcmVmaXhlZCB3aXRoICR7dGhpcy5wcmVmaXh9YCk7cmV0dXJuIHRoaXMuYmFzZURlY29kZShlLnNsaWNlKHRoaXMucHJlZml4Lmxlbmd0aCkpfWVsc2UgdGhyb3cgRXJyb3IoIkNhbiBvbmx5IG11bHRpYmFzZSBkZWNvZGUgc3RyaW5ncyIpfW9yKGUpe3JldHVybiBhTSh0aGlzLGUpfX0sdko9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5kZWNvZGVycz1lfW9yKGUpe3JldHVybiBhTSh0aGlzLGUpfWRlY29kZShlKXtjb25zdCByPWVbMF0sbj10aGlzLmRlY29kZXJzW3JdO2lmKG4pcmV0dXJuIG4uZGVjb2RlKGUpO3Rocm93IFJhbmdlRXJyb3IoYFVuYWJsZSB0byBkZWNvZGUgbXVsdGliYXNlIHN0cmluZyAke0pTT04uc3RyaW5naWZ5KGUpfSwgb25seSBpbnB1dHMgcHJlZml4ZWQgd2l0aCAke09iamVjdC5rZXlzKHRoaXMuZGVjb2RlcnMpfSBhcmUgc3VwcG9ydGVkYCl9fTtjb25zdCBhTT0odCxlKT0+bmV3IHZKKHsuLi50LmRlY29kZXJzfHx7W3QucHJlZml4XTp0fSwuLi5lLmRlY29kZXJzfHx7W2UucHJlZml4XTplfX0pO2xldCBFSj1jbGFzc3tjb25zdHJ1Y3RvcihlLHIsbixzKXt0aGlzLm5hbWU9ZSx0aGlzLnByZWZpeD1yLHRoaXMuYmFzZUVuY29kZT1uLHRoaXMuYmFzZURlY29kZT1zLHRoaXMuZW5jb2Rlcj1uZXcgYkooZSxyLG4pLHRoaXMuZGVjb2Rlcj1uZXcgeUooZSxyLHMpfWVuY29kZShlKXtyZXR1cm4gdGhpcy5lbmNvZGVyLmVuY29kZShlKX1kZWNvZGUoZSl7cmV0dXJuIHRoaXMuZGVjb2Rlci5kZWNvZGUoZSl9fTtjb25zdCBOeT0oe25hbWU6dCxwcmVmaXg6ZSxlbmNvZGU6cixkZWNvZGU6bn0pPT5uZXcgRUoodCxlLHIsbiksaDE9KHtwcmVmaXg6dCxuYW1lOmUsYWxwaGFiZXQ6cn0pPT57Y29uc3R7ZW5jb2RlOm4sZGVjb2RlOnN9PW1KKHIsZSk7cmV0dXJuIE55KHtwcmVmaXg6dCxuYW1lOmUsZW5jb2RlOm4sZGVjb2RlOmk9Pm9NKHMoaSkpfSl9LENKPSh0LGUscixuKT0+e2NvbnN0IHM9e307Zm9yKGxldCBkPTA7ZDxlLmxlbmd0aDsrK2Qpc1tlW2RdXT1kO2xldCBpPXQubGVuZ3RoO2Zvcig7dFtpLTFdPT09Ij0iOyktLWk7Y29uc3Qgbz1uZXcgVWludDhBcnJheShpKnIvOHwwKTtsZXQgYT0wLGM9MCxsPTA7Zm9yKGxldCBkPTA7ZDxpOysrZCl7Y29uc3QgdT1zW3RbZF1dO2lmKHU9PT12b2lkIDApdGhyb3cgbmV3IFN5bnRheEVycm9yKGBOb24tJHtufSBjaGFyYWN0ZXJgKTtjPWM8PHJ8dSxhKz1yLGE+PTgmJihhLT04LG9bbCsrXT0yNTUmYz4+YSl9aWYoYT49cnx8MjU1JmM8PDgtYSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIlVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiKTtyZXR1cm4gb30seEo9KHQsZSxyKT0+e2NvbnN0IG49ZVtlLmxlbmd0aC0xXT09PSI9IixzPSgxPDxyKS0xO2xldCBpPSIiLG89MCxhPTA7Zm9yKGxldCBjPTA7Yzx0Lmxlbmd0aDsrK2MpZm9yKGE9YTw8OHx0W2NdLG8rPTg7bz5yOylvLT1yLGkrPWVbcyZhPj5vXTtpZihvJiYoaSs9ZVtzJmE8PHItb10pLG4pZm9yKDtpLmxlbmd0aCpyJjc7KWkrPSI9IjtyZXR1cm4gaX0sQ249KHtuYW1lOnQscHJlZml4OmUsYml0c1BlckNoYXI6cixhbHBoYWJldDpufSk9Pk55KHtwcmVmaXg6ZSxuYW1lOnQsZW5jb2RlKHMpe3JldHVybiB4SihzLG4scil9LGRlY29kZShzKXtyZXR1cm4gQ0oocyxuLHIsdCl9fSksX0o9Tnkoe3ByZWZpeDoiXDAiLG5hbWU6ImlkZW50aXR5IixlbmNvZGU6dD0+d0oodCksZGVjb2RlOnQ9PmdKKHQpfSk7dmFyIGtKPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGlkZW50aXR5Ol9KfSk7Y29uc3QgU0o9Q24oe3ByZWZpeDoiMCIsbmFtZToiYmFzZTIiLGFscGhhYmV0OiIwMSIsYml0c1BlckNoYXI6MX0pO3ZhciBBSj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxiYXNlMjpTSn0pO2NvbnN0IFRKPUNuKHtwcmVmaXg6IjciLG5hbWU6ImJhc2U4IixhbHBoYWJldDoiMDEyMzQ1NjciLGJpdHNQZXJDaGFyOjN9KTt2YXIgSUo9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsYmFzZTg6VEp9KTtjb25zdCBSSj1oMSh7cHJlZml4OiI5IixuYW1lOiJiYXNlMTAiLGFscGhhYmV0OiIwMTIzNDU2Nzg5In0pO3ZhciBOSj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxiYXNlMTA6Ukp9KTtjb25zdCBQSj1Dbih7cHJlZml4OiJmIixuYW1lOiJiYXNlMTYiLGFscGhhYmV0OiIwMTIzNDU2Nzg5YWJjZGVmIixiaXRzUGVyQ2hhcjo0fSksT0o9Q24oe3ByZWZpeDoiRiIsbmFtZToiYmFzZTE2dXBwZXIiLGFscGhhYmV0OiIwMTIzNDU2Nzg5QUJDREVGIixiaXRzUGVyQ2hhcjo0fSk7dmFyICRKPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGJhc2UxNjpQSixiYXNlMTZ1cHBlcjpPSn0pO2NvbnN0IE1KPUNuKHtwcmVmaXg6ImIiLG5hbWU6ImJhc2UzMiIsYWxwaGFiZXQ6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MjM0NTY3IixiaXRzUGVyQ2hhcjo1fSksREo9Q24oe3ByZWZpeDoiQiIsbmFtZToiYmFzZTMydXBwZXIiLGFscGhhYmV0OiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjIzNDU2NyIsYml0c1BlckNoYXI6NX0pLEJKPUNuKHtwcmVmaXg6ImMiLG5hbWU6ImJhc2UzMnBhZCIsYWxwaGFiZXQ6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MjM0NTY3PSIsYml0c1BlckNoYXI6NX0pLExKPUNuKHtwcmVmaXg6IkMiLG5hbWU6ImJhc2UzMnBhZHVwcGVyIixhbHBoYWJldDoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoyMzQ1Njc9IixiaXRzUGVyQ2hhcjo1fSksVUo9Q24oe3ByZWZpeDoidiIsbmFtZToiYmFzZTMyaGV4IixhbHBoYWJldDoiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXYiLGJpdHNQZXJDaGFyOjV9KSxGSj1Dbih7cHJlZml4OiJWIixuYW1lOiJiYXNlMzJoZXh1cHBlciIsYWxwaGFiZXQ6IjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWIixiaXRzUGVyQ2hhcjo1fSksako9Q24oe3ByZWZpeDoidCIsbmFtZToiYmFzZTMyaGV4cGFkIixhbHBoYWJldDoiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXY9IixiaXRzUGVyQ2hhcjo1fSkseko9Q24oe3ByZWZpeDoiVCIsbmFtZToiYmFzZTMyaGV4cGFkdXBwZXIiLGFscGhhYmV0OiIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVj0iLGJpdHNQZXJDaGFyOjV9KSxXSj1Dbih7cHJlZml4OiJoIixuYW1lOiJiYXNlMzJ6IixhbHBoYWJldDoieWJuZHJmZzhlamttY3BxeG90MXV3aXN6YTM0NWg3NjkiLGJpdHNQZXJDaGFyOjV9KTt2YXIgSEo9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsYmFzZTMyOk1KLGJhc2UzMnVwcGVyOkRKLGJhc2UzMnBhZDpCSixiYXNlMzJwYWR1cHBlcjpMSixiYXNlMzJoZXg6VUosYmFzZTMyaGV4dXBwZXI6RkosYmFzZTMyaGV4cGFkOmpKLGJhc2UzMmhleHBhZHVwcGVyOnpKLGJhc2UzMno6V0p9KTtjb25zdCBxSj1oMSh7cHJlZml4OiJrIixuYW1lOiJiYXNlMzYiLGFscGhhYmV0OiIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoifSksVko9aDEoe3ByZWZpeDoiSyIsbmFtZToiYmFzZTM2dXBwZXIiLGFscGhhYmV0OiIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoifSk7dmFyIEdKPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGJhc2UzNjpxSixiYXNlMzZ1cHBlcjpWSn0pO2NvbnN0IEtKPWgxKHtuYW1lOiJiYXNlNThidGMiLHByZWZpeDoieiIsYWxwaGFiZXQ6IjEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXoifSksWko9aDEoe25hbWU6ImJhc2U1OGZsaWNrciIscHJlZml4OiJaIixhbHBoYWJldDoiMTIzNDU2Nzg5YWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5ekFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWiJ9KTt2YXIgWUo9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsYmFzZTU4YnRjOktKLGJhc2U1OGZsaWNrcjpaSn0pO2NvbnN0IEpKPUNuKHtwcmVmaXg6Im0iLG5hbWU6ImJhc2U2NCIsYWxwaGFiZXQ6IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLGJpdHNQZXJDaGFyOjZ9KSxYSj1Dbih7cHJlZml4OiJNIixuYW1lOiJiYXNlNjRwYWQiLGFscGhhYmV0OiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIsYml0c1BlckNoYXI6Nn0pLFFKPUNuKHtwcmVmaXg6InUiLG5hbWU6ImJhc2U2NHVybCIsYWxwaGFiZXQ6IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8iLGJpdHNQZXJDaGFyOjZ9KSxlWD1Dbih7cHJlZml4OiJVIixuYW1lOiJiYXNlNjR1cmxwYWQiLGFscGhhYmV0OiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fPSIsYml0c1BlckNoYXI6Nn0pO3ZhciB0WD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxiYXNlNjQ6SkosYmFzZTY0cGFkOlhKLGJhc2U2NHVybDpRSixiYXNlNjR1cmxwYWQ6ZVh9KTtjb25zdCBjTT1BcnJheS5mcm9tKCLwn5qA8J+qkOKYhPCfm7Dwn4yM8J+MkfCfjJLwn4yT8J+MlPCfjJXwn4yW8J+Ml/CfjJjwn4yN8J+Mj/CfjI7wn5CJ4piA8J+Su/CflqXwn5K+8J+Sv/CfmILinaTwn5iN8J+ko/CfmIrwn5mP8J+SlfCfmK3wn5iY8J+RjfCfmIXwn5GP8J+YgfCflKXwn6Ww8J+SlPCfkpbwn5KZ8J+YovCfpJTwn5iG8J+ZhPCfkqrwn5iJ4pi68J+RjPCfpJfwn5Kc8J+YlPCfmI7wn5iH8J+MufCfpKbwn46J8J+SnuKcjOKcqPCfpLfwn5ix8J+YjPCfjLjwn5mM8J+Yi/Cfkpfwn5Ka8J+Yj/Cfkpvwn5mC8J+Sk/CfpKnwn5iE8J+YgPCflqTwn5iD8J+Sr/CfmYjwn5GH8J+OtvCfmJLwn6St4p2j8J+YnPCfkovwn5GA8J+YqvCfmJHwn5Kl8J+Zi/CfmJ7wn5ip8J+YofCfpKrwn5GK8J+ls/CfmKXwn6Sk8J+RifCfkoPwn5iz4pyL8J+YmvCfmJ3wn5i08J+Mn/CfmKzwn5mD8J+NgPCfjLfwn5i78J+Yk+KtkOKchfCfpbrwn4yI8J+YiPCfpJjwn5Km4pyU8J+Yo/Cfj4Pwn5KQ4pi58J+OivCfkpjwn5ig4pid8J+YlfCfjLrwn46C8J+Mu/CfmJDwn5aV8J+SnfCfmYrwn5i58J+Xo/Cfkqvwn5KA8J+RkfCfjrXwn6Se8J+Ym/CflLTwn5ik8J+MvPCfmKvimr3wn6SZ4piV8J+PhvCfpKvwn5GI8J+YrvCfmYbwn4278J+Ng/CfkLbwn5KB8J+YsvCfjL/wn6eh8J+OgeKaofCfjJ7wn46I4p2M4pyK8J+Ri/CfmLDwn6So8J+YtvCfpJ3wn5q28J+SsPCfjZPwn5Ki8J+kn/CfmYHwn5qo8J+SqPCfpKzinIjwn46A8J+NuvCfpJPwn5iZ8J+Sn/CfjLHwn5iW8J+RtvCfpbTilrbinqHinZPwn5KO8J+SuOKsh/CfmKjwn4ya8J+mi/CfmLfwn5W64pqg8J+ZhfCfmJ/wn5i18J+RjvCfpLLwn6Sg8J+kp/Cfk4zwn5S18J+ShfCfp5Dwn5C+8J+NkvCfmJfwn6SR8J+MivCfpK/wn5C34piO8J+Sp/CfmK/wn5KG8J+RhvCfjqTwn5mH8J+NkeKdhPCfjLTwn5Kj8J+QuPCfkozwn5ON8J+lgPCfpKLwn5GF8J+SofCfkqnwn5GQ8J+TuPCfkbvwn6SQ8J+krvCfjrzwn6W18J+aqfCfjY7wn42K8J+RvPCfko3wn5Oj8J+lgiIpLHJYPWNNLnJlZHVjZSgodCxlLHIpPT4odFtyXT1lLHQpLFtdKSxuWD1jTS5yZWR1Y2UoKHQsZSxyKT0+KHRbZS5jb2RlUG9pbnRBdCgwKV09cix0KSxbXSk7ZnVuY3Rpb24gaVgodCl7cmV0dXJuIHQucmVkdWNlKChlLHIpPT4oZSs9clhbcl0sZSksIiIpfWZ1bmN0aW9uIHNYKHQpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHIgb2YgdCl7Y29uc3Qgbj1uWFtyLmNvZGVQb2ludEF0KDApXTtpZihuPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgTm9uLWJhc2UyNTZlbW9qaSBjaGFyYWN0ZXI6ICR7cn1gKTtlLnB1c2gobil9cmV0dXJuIG5ldyBVaW50OEFycmF5KGUpfWNvbnN0IG9YPU55KHtwcmVmaXg6IvCfmoAiLG5hbWU6ImJhc2UyNTZlbW9qaSIsZW5jb2RlOmlYLGRlY29kZTpzWH0pO3ZhciBhWD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxiYXNlMjU2ZW1vamk6b1h9KSxjWD1sTSxsOT0xMjgsbFg9LTEyOCx1WD1NYXRoLnBvdygyLDMxKTtmdW5jdGlvbiBsTSh0LGUscil7ZT1lfHxbXSxyPXJ8fDA7Zm9yKHZhciBuPXI7dD49dVg7KWVbcisrXT10JjI1NXxsOSx0Lz0xMjg7Zm9yKDt0JmxYOyllW3IrK109dCYyNTV8bDksdD4+Pj03O3JldHVybiBlW3JdPXR8MCxsTS5ieXRlcz1yLW4rMSxlfXZhciBkWD1yeCxoWD0xMjgsdTk9MTI3O2Z1bmN0aW9uIHJ4KHQsbil7dmFyIHI9MCxuPW58fDAscz0wLGk9bixvLGE9dC5sZW5ndGg7ZG97aWYoaT49YSl0aHJvdyByeC5ieXRlcz0wLG5ldyBSYW5nZUVycm9yKCJDb3VsZCBub3QgZGVjb2RlIHZhcmludCIpO289dFtpKytdLHIrPXM8Mjg/KG8mdTkpPDxzOihvJnU5KSpNYXRoLnBvdygyLHMpLHMrPTd9d2hpbGUobz49aFgpO3JldHVybiByeC5ieXRlcz1pLW4scn12YXIgcFg9TWF0aC5wb3coMiw3KSxmWD1NYXRoLnBvdygyLDE0KSxtWD1NYXRoLnBvdygyLDIxKSxnWD1NYXRoLnBvdygyLDI4KSx3WD1NYXRoLnBvdygyLDM1KSxiWD1NYXRoLnBvdygyLDQyKSx5WD1NYXRoLnBvdygyLDQ5KSx2WD1NYXRoLnBvdygyLDU2KSxFWD1NYXRoLnBvdygyLDYzKSxDWD1mdW5jdGlvbih0KXtyZXR1cm4gdDxwWD8xOnQ8Zlg/Mjp0PG1YPzM6dDxnWD80OnQ8d1g/NTp0PGJYPzY6dDx5WD83OnQ8dlg/ODp0PEVYPzk6MTB9LHhYPXtlbmNvZGU6Y1gsZGVjb2RlOmRYLGVuY29kaW5nTGVuZ3RoOkNYfSx1TT14WDtjb25zdCBkOT0odCxlLHI9MCk9Pih1TS5lbmNvZGUodCxlLHIpLGUpLGg5PXQ9PnVNLmVuY29kaW5nTGVuZ3RoKHQpLG54PSh0LGUpPT57Y29uc3Qgcj1lLmJ5dGVMZW5ndGgsbj1oOSh0KSxzPW4raDkociksaT1uZXcgVWludDhBcnJheShzK3IpO3JldHVybiBkOSh0LGksMCksZDkocixpLG4pLGkuc2V0KGUscyksbmV3IF9YKHQscixlLGkpfTtsZXQgX1g9Y2xhc3N7Y29uc3RydWN0b3IoZSxyLG4scyl7dGhpcy5jb2RlPWUsdGhpcy5zaXplPXIsdGhpcy5kaWdlc3Q9bix0aGlzLmJ5dGVzPXN9fTtjb25zdCBkTT0oe25hbWU6dCxjb2RlOmUsZW5jb2RlOnJ9KT0+bmV3IGtYKHQsZSxyKTtsZXQga1g9Y2xhc3N7Y29uc3RydWN0b3IoZSxyLG4pe3RoaXMubmFtZT1lLHRoaXMuY29kZT1yLHRoaXMuZW5jb2RlPW59ZGlnZXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtjb25zdCByPXRoaXMuZW5jb2RlKGUpO3JldHVybiByIGluc3RhbmNlb2YgVWludDhBcnJheT9ueCh0aGlzLmNvZGUscik6ci50aGVuKG49Pm54KHRoaXMuY29kZSxuKSl9ZWxzZSB0aHJvdyBFcnJvcigiVW5rbm93biB0eXBlLCBtdXN0IGJlIGJpbmFyeSB0eXBlIil9fTtjb25zdCBoTT10PT5hc3luYyBlPT5uZXcgVWludDhBcnJheShhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCh0LGUpKSxTWD1kTSh7bmFtZToic2hhMi0yNTYiLGNvZGU6MTgsZW5jb2RlOmhNKCJTSEEtMjU2Iil9KSxBWD1kTSh7bmFtZToic2hhMi01MTIiLGNvZGU6MTksZW5jb2RlOmhNKCJTSEEtNTEyIil9KTt2YXIgVFg9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsc2hhMjU2OlNYLHNoYTUxMjpBWH0pO2NvbnN0IHBNPTAsSVg9ImlkZW50aXR5IixmTT1vTSxSWD10PT5ueChwTSxmTSh0KSksTlg9e2NvZGU6cE0sbmFtZTpJWCxlbmNvZGU6Zk0sZGlnZXN0OlJYfTt2YXIgUFg9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsaWRlbnRpdHk6Tlh9KTtuZXcgVGV4dEVuY29kZXIsbmV3IFRleHREZWNvZGVyO2NvbnN0IHA5PXsuLi5rSiwuLi5BSiwuLi5JSiwuLi5OSiwuLi4kSiwuLi5ISiwuLi5HSiwuLi5ZSiwuLi50WCwuLi5hWH07KHsuLi5UWCwuLi5QWH0pO2Z1bmN0aW9uIG1NKHQsZSxyLG4pe3JldHVybntuYW1lOnQscHJlZml4OmUsZW5jb2Rlcjp7bmFtZTp0LHByZWZpeDplLGVuY29kZTpyfSxkZWNvZGVyOntkZWNvZGU6bn19fWNvbnN0IGY5PW1NKCJ1dGY4IiwidSIsdD0+InUiK25ldyBUZXh0RGVjb2RlcigidXRmOCIpLmRlY29kZSh0KSx0PT5uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodC5zdWJzdHJpbmcoMSkpKSxOMj1tTSgiYXNjaWkiLCJhIix0PT57bGV0IGU9ImEiO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKWUrPVN0cmluZy5mcm9tQ2hhckNvZGUodFtyXSk7cmV0dXJuIGV9LHQ9Pnt0PXQuc3Vic3RyaW5nKDEpO2NvbnN0IGU9aU0odC5sZW5ndGgpO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKWVbcl09dC5jaGFyQ29kZUF0KHIpO3JldHVybiBlfSksZ009e3V0Zjg6ZjksInV0Zi04IjpmOSxoZXg6cDkuYmFzZTE2LGxhdGluMTpOMixhc2NpaTpOMixiaW5hcnk6TjIsLi4ucDl9O2Z1bmN0aW9uIFB5KHQsZT0idXRmOCIpe2NvbnN0IHI9Z01bZV07aWYoIXIpdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBlbmNvZGluZyAiJHtlfSJgKTtyZXR1cm4oZT09PSJ1dGY4Inx8ZT09PSJ1dGYtOCIpJiZnbG9iYWxUaGlzLkJ1ZmZlciE9bnVsbCYmZ2xvYmFsVGhpcy5CdWZmZXIuZnJvbSE9bnVsbD9nbG9iYWxUaGlzLkJ1ZmZlci5mcm9tKHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpLnRvU3RyaW5nKCJ1dGY4Iik6ci5lbmNvZGVyLmVuY29kZSh0KS5zdWJzdHJpbmcoMSl9ZnVuY3Rpb24gdXAodCxlPSJ1dGY4Iil7Y29uc3Qgcj1nTVtlXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGVuY29kaW5nICIke2V9ImApO3JldHVybihlPT09InV0ZjgifHxlPT09InV0Zi04IikmJmdsb2JhbFRoaXMuQnVmZmVyIT1udWxsJiZnbG9iYWxUaGlzLkJ1ZmZlci5mcm9tIT1udWxsP1Q2KGdsb2JhbFRoaXMuQnVmZmVyLmZyb20odCwidXRmLTgiKSk6ci5kZWNvZGVyLmRlY29kZShgJHtyLnByZWZpeH0ke3R9YCl9ZnVuY3Rpb24gbTkodCl7cmV0dXJuIGJ1KFB5KHVwKHQsUnkpLHJNKSl9ZnVuY3Rpb24gcGIodCl7cmV0dXJuIFB5KHVwKGdhKHQpLHJNKSxSeSl9ZnVuY3Rpb24gd00odCl7Y29uc3QgZT11cChkSixjOSkscj11SitQeShzTShbZSx0XSksYzkpO3JldHVybltjSixsSixyXS5qb2luKGFKKX1mdW5jdGlvbiBPWCh0KXtyZXR1cm4gUHkodCxSeSl9ZnVuY3Rpb24gJFgodCl7cmV0dXJuIHVwKHQsUnkpfWZ1bmN0aW9uIE1YKHQpe3JldHVybiB1cChbcGIodC5oZWFkZXIpLHBiKHQucGF5bG9hZCldLmpvaW4oaGIpLG5NKX1mdW5jdGlvbiBEWCh0KXtyZXR1cm5bcGIodC5oZWFkZXIpLHBiKHQucGF5bG9hZCksT1godC5zaWduYXR1cmUpXS5qb2luKGhiKX1mdW5jdGlvbiBpeCh0KXtjb25zdCBlPXQuc3BsaXQoaGIpLHI9bTkoZVswXSksbj1tOShlWzFdKSxzPSRYKGVbMl0pLGk9dXAoZS5zbGljZSgwLDIpLmpvaW4oaGIpLG5NKTtyZXR1cm57aGVhZGVyOnIscGF5bG9hZDpuLHNpZ25hdHVyZTpzLGRhdGE6aX19ZnVuY3Rpb24gZzkodD1xJChoSikpe2NvbnN0IGU9dE0uZ2V0UHVibGljS2V5KHQpO3JldHVybntzZWNyZXRLZXk6c00oW3QsZV0pLHB1YmxpY0tleTplfX1hc3luYyBmdW5jdGlvbiBCWCh0LGUscixuLHM9UGUuZnJvbU1pbGlzZWNvbmRzKERhdGUubm93KCkpKXtjb25zdCBpPXthbGc6c0osdHlwOm9KfSxvPXdNKG4ucHVibGljS2V5KSxhPXMrcixjPXtpc3M6byxzdWI6dCxhdWQ6ZSxpYXQ6cyxleHA6YX0sbD1NWCh7aGVhZGVyOmkscGF5bG9hZDpjfSksZD10TS5zaWduKGwsbi5zZWNyZXRLZXkuc2xpY2UoMCwzMikpO3JldHVybiBEWCh7aGVhZGVyOmkscGF5bG9hZDpjLHNpZ25hdHVyZTpkfSl9dmFyIHc5PWZ1bmN0aW9uKHQsZSxyKXtpZihyfHxhcmd1bWVudHMubGVuZ3RoPT09Milmb3IodmFyIG49MCxzPWUubGVuZ3RoLGk7bjxzO24rKykoaXx8IShuIGluIGUpKSYmKGl8fChpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsMCxuKSksaVtuXT1lW25dKTtyZXR1cm4gdC5jb25jYXQoaXx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkpfSxMWD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxyLG4pe3RoaXMubmFtZT1lLHRoaXMudmVyc2lvbj1yLHRoaXMub3M9bix0aGlzLnR5cGU9ImJyb3dzZXIifXJldHVybiB0fSgpLFVYPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt0aGlzLnZlcnNpb249ZSx0aGlzLnR5cGU9Im5vZGUiLHRoaXMubmFtZT0ibm9kZSIsdGhpcy5vcz1wcm9jZXNzLnBsYXRmb3JtfXJldHVybiB0fSgpLEZYPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHIsbixzKXt0aGlzLm5hbWU9ZSx0aGlzLnZlcnNpb249cix0aGlzLm9zPW4sdGhpcy5ib3Q9cyx0aGlzLnR5cGU9ImJvdC1kZXZpY2UifXJldHVybiB0fSgpLGpYPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMudHlwZT0iYm90Iix0aGlzLmJvdD0hMCx0aGlzLm5hbWU9ImJvdCIsdGhpcy52ZXJzaW9uPW51bGwsdGhpcy5vcz1udWxsfXJldHVybiB0fSgpLHpYPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMudHlwZT0icmVhY3QtbmF0aXZlIix0aGlzLm5hbWU9InJlYWN0LW5hdGl2ZSIsdGhpcy52ZXJzaW9uPW51bGwsdGhpcy5vcz1udWxsfXJldHVybiB0fSgpLFdYPS9hbGV4YXxib3R8Y3Jhd2woZXJ8aW5nKXxmYWNlYm9va2V4dGVybmFsaGl0fGZlZWRidXJuZXJ8Z29vZ2xlIHdlYiBwcmV2aWV3fG5hZ2lvc3xwb3N0cmFua3xwaW5nZG9tfHNsdXJwfHNwaWRlcnx5YWhvbyF8eWFuZGV4LyxIWD0vKG51aGt8Y3VybHxHb29nbGVib3R8WWFtbXlib3R8T3BlbmJvdHxTbHVycHxNU05Cb3R8QXNrXCBKZWV2ZXNcL1Rlb21hfGlhX2FyY2hpdmVyKS8sYjk9MyxxWD1bWyJhb2wiLC9BT0xTaGllbGRcLyhbMC05XC5fXSspL10sWyJlZGdlIiwvRWRnZVwvKFswLTlcLl9dKykvXSxbImVkZ2UtaW9zIiwvRWRnaU9TXC8oWzAtOVwuX10rKS9dLFsieWFuZGV4YnJvd3NlciIsL1lhQnJvd3NlclwvKFswLTlcLl9dKykvXSxbImtha2FvdGFsayIsL0tBS0FPVEFMS1xzKFswLTlcLl0rKS9dLFsic2Ftc3VuZyIsL1NhbXN1bmdCcm93c2VyXC8oWzAtOVwuXSspL10sWyJzaWxrIiwvXGJTaWxrXC8oWzAtOS5fLV0rKVxiL10sWyJtaXVpIiwvTWl1aUJyb3dzZXJcLyhbMC05XC5dKykkL10sWyJiZWFrZXIiLC9CZWFrZXJCcm93c2VyXC8oWzAtOVwuXSspL10sWyJlZGdlLWNocm9taXVtIiwvRWRnQT9cLyhbMC05XC5dKykvXSxbImNocm9taXVtLXdlYnZpZXciLC8oPyFDaHJvbS4qT1BSKXd2XCkuKkNocm9tKD86ZXxpdW0pXC8oWzAtOVwuXSspKDo/XHN8JCkvXSxbImNocm9tZSIsLyg/IUNocm9tLipPUFIpQ2hyb20oPzplfGl1bSlcLyhbMC05XC5dKykoOj9cc3wkKS9dLFsicGhhbnRvbWpzIiwvUGhhbnRvbUpTXC8oWzAtOVwuXSspKDo/XHN8JCkvXSxbImNyaW9zIiwvQ3JpT1NcLyhbMC05XC5dKykoOj9cc3wkKS9dLFsiZmlyZWZveCIsL0ZpcmVmb3hcLyhbMC05XC5dKykoPzpcc3wkKS9dLFsiZnhpb3MiLC9GeGlPU1wvKFswLTlcLl0rKS9dLFsib3BlcmEtbWluaSIsL09wZXJhIE1pbmkuKlZlcnNpb25cLyhbMC05XC5dKykvXSxbIm9wZXJhIiwvT3BlcmFcLyhbMC05XC5dKykoPzpcc3wkKS9dLFsib3BlcmEiLC9PUFJcLyhbMC05XC5dKykoOj9cc3wkKS9dLFsicGllIiwvXk1pY3Jvc29mdCBQb2NrZXQgSW50ZXJuZXQgRXhwbG9yZXJcLyhcZCtcLlxkKykkL10sWyJwaWUiLC9eTW96aWxsYVwvXGRcLlxkK1xzXChjb21wYXRpYmxlO1xzKD86TVNQP0lFfE1TSW50ZXJuZXQgRXhwbG9yZXIpIChcZCtcLlxkKyk7LipXaW5kb3dzIENFLipcKSQvXSxbIm5ldGZyb250IiwvXk1vemlsbGFcL1xkXC5cZCsuKk5ldEZyb250XC8oXGQuXGQpL10sWyJpZSIsL1RyaWRlbnRcLzdcLjAuKnJ2XDooWzAtOVwuXSspLipcKS4qR2Vja28kL10sWyJpZSIsL01TSUVccyhbMC05XC5dKyk7LipUcmlkZW50XC9bNC03XS4wL10sWyJpZSIsL01TSUVccyg3XC4wKS9dLFsiYmIxMCIsL0JCMTA7XHNUb3VjaC4qVmVyc2lvblwvKFswLTlcLl0rKS9dLFsiYW5kcm9pZCIsL0FuZHJvaWRccyhbMC05XC5dKykvXSxbImlvcyIsL1ZlcnNpb25cLyhbMC05XC5fXSspLipNb2JpbGUuKlNhZmFyaS4qL10sWyJzYWZhcmkiLC9WZXJzaW9uXC8oWzAtOVwuX10rKS4qU2FmYXJpL10sWyJmYWNlYm9vayIsL0ZCW0FTXVZcLyhbMC05XC5dKykvXSxbImluc3RhZ3JhbSIsL0luc3RhZ3JhbVxzKFswLTlcLl0rKS9dLFsiaW9zLXdlYnZpZXciLC9BcHBsZVdlYktpdFwvKFswLTlcLl0rKS4qTW9iaWxlL10sWyJpb3Mtd2VidmlldyIsL0FwcGxlV2ViS2l0XC8oWzAtOVwuXSspLipHZWNrb1wpJC9dLFsiY3VybCIsL15jdXJsXC8oWzAtOVwuXSspJC9dLFsic2VhcmNoYm90IixXWF1dLHk5PVtbImlPUyIsL2lQKGhvbmV8b2R8YWQpL10sWyJBbmRyb2lkIE9TIiwvQW5kcm9pZC9dLFsiQmxhY2tCZXJyeSBPUyIsL0JsYWNrQmVycnl8QkIxMC9dLFsiV2luZG93cyBNb2JpbGUiLC9JRU1vYmlsZS9dLFsiQW1hem9uIE9TIiwvS2luZGxlL10sWyJXaW5kb3dzIDMuMTEiLC9XaW4xNi9dLFsiV2luZG93cyA5NSIsLyhXaW5kb3dzIDk1KXwoV2luOTUpfChXaW5kb3dzXzk1KS9dLFsiV2luZG93cyA5OCIsLyhXaW5kb3dzIDk4KXwoV2luOTgpL10sWyJXaW5kb3dzIDIwMDAiLC8oV2luZG93cyBOVCA1LjApfChXaW5kb3dzIDIwMDApL10sWyJXaW5kb3dzIFhQIiwvKFdpbmRvd3MgTlQgNS4xKXwoV2luZG93cyBYUCkvXSxbIldpbmRvd3MgU2VydmVyIDIwMDMiLC8oV2luZG93cyBOVCA1LjIpL10sWyJXaW5kb3dzIFZpc3RhIiwvKFdpbmRvd3MgTlQgNi4wKS9dLFsiV2luZG93cyA3IiwvKFdpbmRvd3MgTlQgNi4xKS9dLFsiV2luZG93cyA4IiwvKFdpbmRvd3MgTlQgNi4yKS9dLFsiV2luZG93cyA4LjEiLC8oV2luZG93cyBOVCA2LjMpL10sWyJXaW5kb3dzIDEwIiwvKFdpbmRvd3MgTlQgMTAuMCkvXSxbIldpbmRvd3MgTUUiLC9XaW5kb3dzIE1FL10sWyJXaW5kb3dzIENFIiwvV2luZG93cyBDRXxXaW5DRXxNaWNyb3NvZnQgUG9ja2V0IEludGVybmV0IEV4cGxvcmVyL10sWyJPcGVuIEJTRCIsL09wZW5CU0QvXSxbIlN1biBPUyIsL1N1bk9TL10sWyJDaHJvbWUgT1MiLC9Dck9TL10sWyJMaW51eCIsLyhMaW51eCl8KFgxMSkvXSxbIk1hYyBPUyIsLyhNYWNfUG93ZXJQQyl8KE1hY2ludG9zaCkvXSxbIlFOWCIsL1FOWC9dLFsiQmVPUyIsL0JlT1MvXSxbIk9TLzIiLC9PU1wvMi9dXTtmdW5jdGlvbiBWWCh0KXtyZXR1cm4gdHlwZW9mIGRvY3VtZW50PiJ1IiYmdHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvci5wcm9kdWN0PT09IlJlYWN0TmF0aXZlIj9uZXcgelg6dHlwZW9mIG5hdmlnYXRvcjwidSI/S1gobmF2aWdhdG9yLnVzZXJBZ2VudCk6WVgoKX1mdW5jdGlvbiBHWCh0KXtyZXR1cm4gdCE9PSIiJiZxWC5yZWR1Y2UoZnVuY3Rpb24oZSxyKXt2YXIgbj1yWzBdLHM9clsxXTtpZihlKXJldHVybiBlO3ZhciBpPXMuZXhlYyh0KTtyZXR1cm4hIWkmJltuLGldfSwhMSl9ZnVuY3Rpb24gS1godCl7dmFyIGU9R1godCk7aWYoIWUpcmV0dXJuIG51bGw7dmFyIHI9ZVswXSxuPWVbMV07aWYocj09PSJzZWFyY2hib3QiKXJldHVybiBuZXcgalg7dmFyIHM9blsxXSYmblsxXS5zcGxpdCgiLiIpLmpvaW4oIl8iKS5zcGxpdCgiXyIpLnNsaWNlKDAsMyk7cz9zLmxlbmd0aDxiOSYmKHM9dzkodzkoW10scywhMCksSlgoYjktcy5sZW5ndGgpLCEwKSk6cz1bXTt2YXIgaT1zLmpvaW4oIi4iKSxvPVpYKHQpLGE9SFguZXhlYyh0KTtyZXR1cm4gYSYmYVsxXT9uZXcgRlgocixpLG8sYVsxXSk6bmV3IExYKHIsaSxvKX1mdW5jdGlvbiBaWCh0KXtmb3IodmFyIGU9MCxyPXk5Lmxlbmd0aDtlPHI7ZSsrKXt2YXIgbj15OVtlXSxzPW5bMF0saT1uWzFdLG89aS5leGVjKHQpO2lmKG8pcmV0dXJuIHN9cmV0dXJuIG51bGx9ZnVuY3Rpb24gWVgoKXt2YXIgdD10eXBlb2YgcHJvY2VzczwidSImJnByb2Nlc3MudmVyc2lvbjtyZXR1cm4gdD9uZXcgVVgocHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDEpKTpudWxsfWZ1bmN0aW9uIEpYKHQpe2Zvcih2YXIgZT1bXSxyPTA7cjx0O3IrKyllLnB1c2goIjAiKTtyZXR1cm4gZX12YXIgSnQ9e30sdjk7ZnVuY3Rpb24gYk0oKXtpZih2OSlyZXR1cm4gSnQ7djk9MSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEp0LmdldExvY2FsU3RvcmFnZT1KdC5nZXRMb2NhbFN0b3JhZ2VPclRocm93PUp0LmdldENyeXB0bz1KdC5nZXRDcnlwdG9PclRocm93PUp0LmdldExvY2F0aW9uPUp0LmdldExvY2F0aW9uT3JUaHJvdz1KdC5nZXROYXZpZ2F0b3I9SnQuZ2V0TmF2aWdhdG9yT3JUaHJvdz1KdC5nZXREb2N1bWVudD1KdC5nZXREb2N1bWVudE9yVGhyb3c9SnQuZ2V0RnJvbVdpbmRvd09yVGhyb3c9SnQuZ2V0RnJvbVdpbmRvdz12b2lkIDA7ZnVuY3Rpb24gdChoKXtsZXQgcDtyZXR1cm4gdHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiB3aW5kb3dbaF08InUiJiYocD13aW5kb3dbaF0pLHB9SnQuZ2V0RnJvbVdpbmRvdz10O2Z1bmN0aW9uIGUoaCl7Y29uc3QgcD10KGgpO2lmKCFwKXRocm93IG5ldyBFcnJvcihgJHtofSBpcyBub3QgZGVmaW5lZCBpbiBXaW5kb3dgKTtyZXR1cm4gcH1KdC5nZXRGcm9tV2luZG93T3JUaHJvdz1lO2Z1bmN0aW9uIHIoKXtyZXR1cm4gZSgiZG9jdW1lbnQiKX1KdC5nZXREb2N1bWVudE9yVGhyb3c9cjtmdW5jdGlvbiBuKCl7cmV0dXJuIHQoImRvY3VtZW50Iil9SnQuZ2V0RG9jdW1lbnQ9bjtmdW5jdGlvbiBzKCl7cmV0dXJuIGUoIm5hdmlnYXRvciIpfUp0LmdldE5hdmlnYXRvck9yVGhyb3c9cztmdW5jdGlvbiBpKCl7cmV0dXJuIHQoIm5hdmlnYXRvciIpfUp0LmdldE5hdmlnYXRvcj1pO2Z1bmN0aW9uIG8oKXtyZXR1cm4gZSgibG9jYXRpb24iKX1KdC5nZXRMb2NhdGlvbk9yVGhyb3c9bztmdW5jdGlvbiBhKCl7cmV0dXJuIHQoImxvY2F0aW9uIil9SnQuZ2V0TG9jYXRpb249YTtmdW5jdGlvbiBjKCl7cmV0dXJuIGUoImNyeXB0byIpfUp0LmdldENyeXB0b09yVGhyb3c9YztmdW5jdGlvbiBsKCl7cmV0dXJuIHQoImNyeXB0byIpfUp0LmdldENyeXB0bz1sO2Z1bmN0aW9uIGQoKXtyZXR1cm4gZSgibG9jYWxTdG9yYWdlIil9SnQuZ2V0TG9jYWxTdG9yYWdlT3JUaHJvdz1kO2Z1bmN0aW9uIHUoKXtyZXR1cm4gdCgibG9jYWxTdG9yYWdlIil9cmV0dXJuIEp0LmdldExvY2FsU3RvcmFnZT11LEp0fXZhciB5dT1iTSgpLEJwPXt9LEU5O2Z1bmN0aW9uIFhYKCl7aWYoRTkpcmV0dXJuIEJwO0U5PTEsT2JqZWN0LmRlZmluZVByb3BlcnR5KEJwLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxCcC5nZXRXaW5kb3dNZXRhZGF0YT12b2lkIDA7Y29uc3QgdD1iTSgpO2Z1bmN0aW9uIGUoKXtsZXQgcixuO3RyeXtyPXQuZ2V0RG9jdW1lbnRPclRocm93KCksbj10LmdldExvY2F0aW9uT3JUaHJvdygpfWNhdGNoe3JldHVybiBudWxsfWZ1bmN0aW9uIHMoKXtjb25zdCBwPXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSxmPVtdO2ZvcihsZXQgbT0wO208cC5sZW5ndGg7bSsrKXtjb25zdCB3PXBbbV0sZz13LmdldEF0dHJpYnV0ZSgicmVsIik7aWYoZyYmZy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImljb24iKT4tMSl7Y29uc3Qgdj13LmdldEF0dHJpYnV0ZSgiaHJlZiIpO2lmKHYpaWYodi50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImh0dHBzOiIpPT09LTEmJnYudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJodHRwOiIpPT09LTEmJnYuaW5kZXhPZigiLy8iKSE9PTApe2xldCBFPW4ucHJvdG9jb2wrIi8vIituLmhvc3Q7aWYodi5pbmRleE9mKCIvIik9PT0wKUUrPXY7ZWxzZXtjb25zdCB4PW4ucGF0aG5hbWUuc3BsaXQoIi8iKTt4LnBvcCgpO2NvbnN0IF89eC5qb2luKCIvIik7RSs9XysiLyIrdn1mLnB1c2goRSl9ZWxzZSBpZih2LmluZGV4T2YoIi8vIik9PT0wKXtjb25zdCBFPW4ucHJvdG9jb2wrdjtmLnB1c2goRSl9ZWxzZSBmLnB1c2godil9fXJldHVybiBmfWZ1bmN0aW9uIGkoLi4ucCl7Y29uc3QgZj1yLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJtZXRhIik7Zm9yKGxldCBtPTA7bTxmLmxlbmd0aDttKyspe2NvbnN0IHc9ZlttXSxnPVsiaXRlbXByb3AiLCJwcm9wZXJ0eSIsIm5hbWUiXS5tYXAodj0+dy5nZXRBdHRyaWJ1dGUodikpLmZpbHRlcih2PT52P3AuaW5jbHVkZXModik6ITEpO2lmKGcubGVuZ3RoJiZnKXtjb25zdCB2PXcuZ2V0QXR0cmlidXRlKCJjb250ZW50Iik7aWYodilyZXR1cm4gdn19cmV0dXJuIiJ9ZnVuY3Rpb24gbygpe2xldCBwPWkoIm5hbWUiLCJvZzpzaXRlX25hbWUiLCJvZzp0aXRsZSIsInR3aXR0ZXI6dGl0bGUiKTtyZXR1cm4gcHx8KHA9ci50aXRsZSkscH1mdW5jdGlvbiBhKCl7cmV0dXJuIGkoImRlc2NyaXB0aW9uIiwib2c6ZGVzY3JpcHRpb24iLCJ0d2l0dGVyOmRlc2NyaXB0aW9uIiwia2V5d29yZHMiKX1jb25zdCBjPW8oKSxsPWEoKSxkPW4ub3JpZ2luLHU9cygpO3JldHVybntkZXNjcmlwdGlvbjpsLHVybDpkLGljb25zOnUsbmFtZTpjfX1yZXR1cm4gQnAuZ2V0V2luZG93TWV0YWRhdGE9ZSxCcH12YXIgUVg9WFgoKTtmdW5jdGlvbiBXMCh0LHtzdHJpY3Q6ZT0hMH09e30pe3JldHVybiF0fHx0eXBlb2YgdCE9InN0cmluZyI/ITE6ZT8vXjB4WzAtOWEtZkEtRl0qJC8udGVzdCh0KTp0LnN0YXJ0c1dpdGgoIjB4Iil9ZnVuY3Rpb24gQzkodCl7cmV0dXJuIFcwKHQse3N0cmljdDohMX0pP01hdGguY2VpbCgodC5sZW5ndGgtMikvMik6dC5sZW5ndGh9Y29uc3QgeU09IjIuMjMuMiI7bGV0IFAyPXtnZXREb2NzVXJsOih7ZG9jc0Jhc2VVcmw6dCxkb2NzUGF0aDplPSIiLGRvY3NTbHVnOnJ9KT0+ZT9gJHt0Pz8iaHR0cHM6Ly92aWVtLnNoIn0ke2V9JHtyP2AjJHtyfWA6IiJ9YDp2b2lkIDAsdmVyc2lvbjpgdmllbUAke3lNfWB9O2NsYXNzIHZ1IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSxyPXt9KXtjb25zdCBuPXIuY2F1c2UgaW5zdGFuY2VvZiB2dT9yLmNhdXNlLmRldGFpbHM6ci5jYXVzZT8ubWVzc2FnZT9yLmNhdXNlLm1lc3NhZ2U6ci5kZXRhaWxzLHM9ci5jYXVzZSBpbnN0YW5jZW9mIHZ1JiZyLmNhdXNlLmRvY3NQYXRofHxyLmRvY3NQYXRoLGk9UDIuZ2V0RG9jc1VybD8uKHsuLi5yLGRvY3NQYXRoOnN9KSxvPVtlfHwiQW4gZXJyb3Igb2NjdXJyZWQuIiwiIiwuLi5yLm1ldGFNZXNzYWdlcz9bLi4uci5tZXRhTWVzc2FnZXMsIiJdOltdLC4uLmk/W2BEb2NzOiAke2l9YF06W10sLi4ubj9bYERldGFpbHM6ICR7bn1gXTpbXSwuLi5QMi52ZXJzaW9uP1tgVmVyc2lvbjogJHtQMi52ZXJzaW9ufWBdOltdXS5qb2luKGANCmApO3N1cGVyKG8sci5jYXVzZT97Y2F1c2U6ci5jYXVzZX06dm9pZCAwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiZGV0YWlscyIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkb2NzUGF0aCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJtZXRhTWVzc2FnZXMiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywic2hvcnRNZXNzYWdlIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dm9pZCAwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInZlcnNpb24iLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibmFtZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOiJCYXNlRXJyb3IifSksdGhpcy5kZXRhaWxzPW4sdGhpcy5kb2NzUGF0aD1zLHRoaXMubWV0YU1lc3NhZ2VzPXIubWV0YU1lc3NhZ2VzLHRoaXMubmFtZT1yLm5hbWU/P3RoaXMubmFtZSx0aGlzLnNob3J0TWVzc2FnZT1lLHRoaXMudmVyc2lvbj15TX13YWxrKGUpe3JldHVybiB2TSh0aGlzLGUpfX1mdW5jdGlvbiB2TSh0LGUpe3JldHVybiBlPy4odCk/dDp0JiZ0eXBlb2YgdD09Im9iamVjdCImJiJjYXVzZSJpbiB0JiZ0LmNhdXNlIT09dm9pZCAwP3ZNKHQuY2F1c2UsZSk6ZT9udWxsOnR9Y2xhc3MgRU0gZXh0ZW5kcyB2dXtjb25zdHJ1Y3Rvcih7c2l6ZTplLHRhcmdldFNpemU6cix0eXBlOm59KXtzdXBlcihgJHtuLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7bi5zbGljZSgxKS50b0xvd2VyQ2FzZSgpfSBzaXplICgke2V9KSBleGNlZWRzIHBhZGRpbmcgc2l6ZSAoJHtyfSkuYCx7bmFtZToiU2l6ZUV4Y2VlZHNQYWRkaW5nU2l6ZUVycm9yIn0pfX1mdW5jdGlvbiBkcCh0LHtkaXI6ZSxzaXplOnI9MzJ9PXt9KXtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP2VRKHQse2RpcjplLHNpemU6cn0pOnRRKHQse2RpcjplLHNpemU6cn0pfWZ1bmN0aW9uIGVRKHQse2RpcjplLHNpemU6cj0zMn09e30pe2lmKHI9PT1udWxsKXJldHVybiB0O2NvbnN0IG49dC5yZXBsYWNlKCIweCIsIiIpO2lmKG4ubGVuZ3RoPnIqMil0aHJvdyBuZXcgRU0oe3NpemU6TWF0aC5jZWlsKG4ubGVuZ3RoLzIpLHRhcmdldFNpemU6cix0eXBlOiJoZXgifSk7cmV0dXJuYDB4JHtuW2U9PT0icmlnaHQiPyJwYWRFbmQiOiJwYWRTdGFydCJdKHIqMiwiMCIpfWB9ZnVuY3Rpb24gdFEodCx7ZGlyOmUsc2l6ZTpyPTMyfT17fSl7aWYocj09PW51bGwpcmV0dXJuIHQ7aWYodC5sZW5ndGg+cil0aHJvdyBuZXcgRU0oe3NpemU6dC5sZW5ndGgsdGFyZ2V0U2l6ZTpyLHR5cGU6ImJ5dGVzIn0pO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkocik7Zm9yKGxldCBzPTA7czxyO3MrKyl7Y29uc3QgaT1lPT09InJpZ2h0IjtuW2k/czpyLXMtMV09dFtpP3M6dC5sZW5ndGgtcy0xXX1yZXR1cm4gbn1jbGFzcyByUSBleHRlbmRzIHZ1e2NvbnN0cnVjdG9yKHttYXg6ZSxtaW46cixzaWduZWQ6bixzaXplOnMsdmFsdWU6aX0pe3N1cGVyKGBOdW1iZXIgIiR7aX0iIGlzIG5vdCBpbiBzYWZlICR7cz9gJHtzKjh9LWJpdCAke24/InNpZ25lZCI6InVuc2lnbmVkIn0gYDoiIn1pbnRlZ2VyIHJhbmdlICR7ZT9gKCR7cn0gdG8gJHtlfSlgOmAoYWJvdmUgJHtyfSlgfWAse25hbWU6IkludGVnZXJPdXRPZlJhbmdlRXJyb3IifSl9fWNsYXNzIG5RIGV4dGVuZHMgdnV7Y29uc3RydWN0b3Ioe2dpdmVuU2l6ZTplLG1heFNpemU6cn0pe3N1cGVyKGBTaXplIGNhbm5vdCBleGNlZWQgJHtyfSBieXRlcy4gR2l2ZW4gc2l6ZTogJHtlfSBieXRlcy5gLHtuYW1lOiJTaXplT3ZlcmZsb3dFcnJvciJ9KX19ZnVuY3Rpb24gaHAodCx7c2l6ZTplfSl7aWYoQzkodCk+ZSl0aHJvdyBuZXcgblEoe2dpdmVuU2l6ZTpDOSh0KSxtYXhTaXplOmV9KX1mdW5jdGlvbiBzeCh0LGU9e30pe2NvbnN0e3NpZ25lZDpyfT1lO2Uuc2l6ZSYmaHAodCx7c2l6ZTplLnNpemV9KTtjb25zdCBuPUJpZ0ludCh0KTtpZighcilyZXR1cm4gbjtjb25zdCBzPSh0Lmxlbmd0aC0yKS8yLGk9KDFuPDxCaWdJbnQocykqOG4tMW4pLTFuO3JldHVybiBuPD1pP246bi1CaWdJbnQoYDB4JHsiZiIucGFkU3RhcnQocyoyLCJmIil9YCktMW59ZnVuY3Rpb24gaVEodCxlPXt9KXtyZXR1cm4gTnVtYmVyKHN4KHQsZSkpfWNvbnN0IHNRPUFycmF5LmZyb20oe2xlbmd0aDoyNTZ9LCh0LGUpPT5lLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpO2Z1bmN0aW9uIG94KHQsZT17fSl7cmV0dXJuIHR5cGVvZiB0PT0ibnVtYmVyInx8dHlwZW9mIHQ9PSJiaWdpbnQiP3hNKHQsZSk6dHlwZW9mIHQ9PSJzdHJpbmciP2NRKHQsZSk6dHlwZW9mIHQ9PSJib29sZWFuIj9vUSh0LGUpOkNNKHQsZSl9ZnVuY3Rpb24gb1EodCxlPXt9KXtjb25zdCByPWAweCR7TnVtYmVyKHQpfWA7cmV0dXJuIHR5cGVvZiBlLnNpemU9PSJudW1iZXIiPyhocChyLHtzaXplOmUuc2l6ZX0pLGRwKHIse3NpemU6ZS5zaXplfSkpOnJ9ZnVuY3Rpb24gQ00odCxlPXt9KXtsZXQgcj0iIjtmb3IobGV0IHM9MDtzPHQubGVuZ3RoO3MrKylyKz1zUVt0W3NdXTtjb25zdCBuPWAweCR7cn1gO3JldHVybiB0eXBlb2YgZS5zaXplPT0ibnVtYmVyIj8oaHAobix7c2l6ZTplLnNpemV9KSxkcChuLHtkaXI6InJpZ2h0IixzaXplOmUuc2l6ZX0pKTpufWZ1bmN0aW9uIHhNKHQsZT17fSl7Y29uc3R7c2lnbmVkOnIsc2l6ZTpufT1lLHM9QmlnSW50KHQpO2xldCBpO24/cj9pPSgxbjw8QmlnSW50KG4pKjhuLTFuKS0xbjppPTJuKiooQmlnSW50KG4pKjhuKS0xbjp0eXBlb2YgdD09Im51bWJlciImJihpPUJpZ0ludChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikpO2NvbnN0IG89dHlwZW9mIGk9PSJiaWdpbnQiJiZyPy1pLTFuOjA7aWYoaSYmcz5pfHxzPG8pe2NvbnN0IGM9dHlwZW9mIHQ9PSJiaWdpbnQiPyJuIjoiIjt0aHJvdyBuZXcgclEoe21heDppP2Ake2l9JHtjfWA6dm9pZCAwLG1pbjpgJHtvfSR7Y31gLHNpZ25lZDpyLHNpemU6bix2YWx1ZTpgJHt0fSR7Y31gfSl9Y29uc3QgYT1gMHgkeyhyJiZzPDA/KDFuPDxCaWdJbnQobio4KSkrQmlnSW50KHMpOnMpLnRvU3RyaW5nKDE2KX1gO3JldHVybiBuP2RwKGEse3NpemU6bn0pOmF9Y29uc3QgYVE9bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIGNRKHQsZT17fSl7Y29uc3Qgcj1hUS5lbmNvZGUodCk7cmV0dXJuIENNKHIsZSl9Y29uc3QgbFE9bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIHVRKHQsZT17fSl7cmV0dXJuIHR5cGVvZiB0PT0ibnVtYmVyInx8dHlwZW9mIHQ9PSJiaWdpbnQiP2hRKHQsZSk6dHlwZW9mIHQ9PSJib29sZWFuIj9kUSh0LGUpOlcwKHQpP19NKHQsZSk6a00odCxlKX1mdW5jdGlvbiBkUSh0LGU9e30pe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMSk7cmV0dXJuIHJbMF09TnVtYmVyKHQpLHR5cGVvZiBlLnNpemU9PSJudW1iZXIiPyhocChyLHtzaXplOmUuc2l6ZX0pLGRwKHIse3NpemU6ZS5zaXplfSkpOnJ9Y29uc3QgSG89e3plcm86NDgsbmluZTo1NyxBOjY1LEY6NzAsYTo5NyxmOjEwMn07ZnVuY3Rpb24geDkodCl7aWYodD49SG8uemVybyYmdDw9SG8ubmluZSlyZXR1cm4gdC1Iby56ZXJvO2lmKHQ+PUhvLkEmJnQ8PUhvLkYpcmV0dXJuIHQtKEhvLkEtMTApO2lmKHQ+PUhvLmEmJnQ8PUhvLmYpcmV0dXJuIHQtKEhvLmEtMTApfWZ1bmN0aW9uIF9NKHQsZT17fSl7bGV0IHI9dDtlLnNpemUmJihocChyLHtzaXplOmUuc2l6ZX0pLHI9ZHAocix7ZGlyOiJyaWdodCIsc2l6ZTplLnNpemV9KSk7bGV0IG49ci5zbGljZSgyKTtuLmxlbmd0aCUyJiYobj1gMCR7bn1gKTtjb25zdCBzPW4ubGVuZ3RoLzIsaT1uZXcgVWludDhBcnJheShzKTtmb3IobGV0IG89MCxhPTA7bzxzO28rKyl7Y29uc3QgYz14OShuLmNoYXJDb2RlQXQoYSsrKSksbD14OShuLmNoYXJDb2RlQXQoYSsrKSk7aWYoYz09PXZvaWQgMHx8bD09PXZvaWQgMCl0aHJvdyBuZXcgdnUoYEludmFsaWQgYnl0ZSBzZXF1ZW5jZSAoIiR7blthLTJdfSR7blthLTFdfSIgaW4gIiR7bn0iKS5gKTtpW29dPWMqMTYrbH1yZXR1cm4gaX1mdW5jdGlvbiBoUSh0LGUpe2NvbnN0IHI9eE0odCxlKTtyZXR1cm4gX00ocil9ZnVuY3Rpb24ga00odCxlPXt9KXtjb25zdCByPWxRLmVuY29kZSh0KTtyZXR1cm4gdHlwZW9mIGUuc2l6ZT09Im51bWJlciI/KGhwKHIse3NpemU6ZS5zaXplfSksZHAocix7ZGlyOiJyaWdodCIsc2l6ZTplLnNpemV9KSk6cn1mdW5jdGlvbiBmYih0KXtpZighTnVtYmVyLmlzU2FmZUludGVnZXIodCl8fHQ8MCl0aHJvdyBuZXcgRXJyb3IoInBvc2l0aXZlIGludGVnZXIgZXhwZWN0ZWQsIGdvdCAiK3QpfWZ1bmN0aW9uIHBRKHQpe3JldHVybiB0IGluc3RhbmNlb2YgVWludDhBcnJheXx8QXJyYXlCdWZmZXIuaXNWaWV3KHQpJiZ0LmNvbnN0cnVjdG9yLm5hbWU9PT0iVWludDhBcnJheSJ9ZnVuY3Rpb24gcDEodCwuLi5lKXtpZighcFEodCkpdGhyb3cgbmV3IEVycm9yKCJVaW50OEFycmF5IGV4cGVjdGVkIik7aWYoZS5sZW5ndGg+MCYmIWUuaW5jbHVkZXModC5sZW5ndGgpKXRocm93IG5ldyBFcnJvcigiVWludDhBcnJheSBleHBlY3RlZCBvZiBsZW5ndGggIitlKyIsIGdvdCBsZW5ndGg9Iit0Lmxlbmd0aCl9ZnVuY3Rpb24gZlEodCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiJ8fHR5cGVvZiB0LmNyZWF0ZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoIkhhc2ggc2hvdWxkIGJlIHdyYXBwZWQgYnkgdXRpbHMud3JhcENvbnN0cnVjdG9yIik7ZmIodC5vdXRwdXRMZW4pLGZiKHQuYmxvY2tMZW4pfWZ1bmN0aW9uIGJoKHQsZT0hMCl7aWYodC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJIYXNoIGluc3RhbmNlIGhhcyBiZWVuIGRlc3Ryb3llZCIpO2lmKGUmJnQuZmluaXNoZWQpdGhyb3cgbmV3IEVycm9yKCJIYXNoI2RpZ2VzdCgpIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIil9ZnVuY3Rpb24gU00odCxlKXtwMSh0KTtjb25zdCByPWUub3V0cHV0TGVuO2lmKHQubGVuZ3RoPHIpdGhyb3cgbmV3IEVycm9yKCJkaWdlc3RJbnRvKCkgZXhwZWN0cyBvdXRwdXQgYnVmZmVyIG9mIGxlbmd0aCBhdCBsZWFzdCAiK3IpfWNvbnN0IENnPUJpZ0ludCgyKiozMi0xKSxfOT1CaWdJbnQoMzIpO2Z1bmN0aW9uIG1RKHQsZT0hMSl7cmV0dXJuIGU/e2g6TnVtYmVyKHQmQ2cpLGw6TnVtYmVyKHQ+Pl85JkNnKX06e2g6TnVtYmVyKHQ+Pl85JkNnKXwwLGw6TnVtYmVyKHQmQ2cpfDB9fWZ1bmN0aW9uIGdRKHQsZT0hMSl7bGV0IHI9bmV3IFVpbnQzMkFycmF5KHQubGVuZ3RoKSxuPW5ldyBVaW50MzJBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBzPTA7czx0Lmxlbmd0aDtzKyspe2NvbnN0e2g6aSxsOm99PW1RKHRbc10sZSk7W3Jbc10sbltzXV09W2ksb119cmV0dXJuW3Isbl19Y29uc3Qgd1E9KHQsZSxyKT0+dDw8cnxlPj4+MzItcixiUT0odCxlLHIpPT5lPDxyfHQ+Pj4zMi1yLHlRPSh0LGUscik9PmU8PHItMzJ8dD4+PjY0LXIsdlE9KHQsZSxyKT0+dDw8ci0zMnxlPj4+NjQtcixJZD10eXBlb2YgZ2xvYmFsVGhpcz09Im9iamVjdCImJiJjcnlwdG8iaW4gZ2xvYmFsVGhpcz9nbG9iYWxUaGlzLmNyeXB0bzp2b2lkIDA7LyohIG5vYmxlLWhhc2hlcyAtIE1JVCBMaWNlbnNlIChjKSAyMDIyIFBhdWwgTWlsbGVyIChwYXVsbWlsbHIuY29tKSAqL2Z1bmN0aW9uIEVRKHQpe3JldHVybiBuZXcgVWludDMyQXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0LE1hdGguZmxvb3IodC5ieXRlTGVuZ3RoLzQpKX1mdW5jdGlvbiBPMih0KXtyZXR1cm4gbmV3IERhdGFWaWV3KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfWZ1bmN0aW9uIGlvKHQsZSl7cmV0dXJuIHQ8PDMyLWV8dD4+PmV9Y29uc3Qgazk9bmV3IFVpbnQ4QXJyYXkobmV3IFVpbnQzMkFycmF5KFsyODc0NTQwMjBdKS5idWZmZXIpWzBdPT09Njg7ZnVuY3Rpb24gQ1EodCl7cmV0dXJuIHQ8PDI0JjQyNzgxOTAwODB8dDw8OCYxNjcxMTY4MHx0Pj4+OCY2NTI4MHx0Pj4+MjQmMjU1fWZ1bmN0aW9uIFM5KHQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV09Q1EodFtlXSl9ZnVuY3Rpb24geFEodCl7aWYodHlwZW9mIHQhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigidXRmOFRvQnl0ZXMgZXhwZWN0ZWQgc3RyaW5nLCBnb3QgIit0eXBlb2YgdCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh0KSl9ZnVuY3Rpb24gT3kodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9eFEodCkpLHAxKHQpLHR9ZnVuY3Rpb24gX1EoLi4udCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgcz10W25dO3AxKHMpLGUrPXMubGVuZ3RofWNvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBuPTAscz0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPXRbbl07ci5zZXQoaSxzKSxzKz1pLmxlbmd0aH1yZXR1cm4gcn1jbGFzcyBJNntjbG9uZSgpe3JldHVybiB0aGlzLl9jbG9uZUludG8oKX19ZnVuY3Rpb24gQU0odCl7Y29uc3QgZT1uPT50KCkudXBkYXRlKE95KG4pKS5kaWdlc3QoKSxyPXQoKTtyZXR1cm4gZS5vdXRwdXRMZW49ci5vdXRwdXRMZW4sZS5ibG9ja0xlbj1yLmJsb2NrTGVuLGUuY3JlYXRlPSgpPT50KCksZX1mdW5jdGlvbiBrUSh0PTMyKXtpZihJZCYmdHlwZW9mIElkLmdldFJhbmRvbVZhbHVlcz09ImZ1bmN0aW9uIilyZXR1cm4gSWQuZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KHQpKTtpZihJZCYmdHlwZW9mIElkLnJhbmRvbUJ5dGVzPT0iZnVuY3Rpb24iKXJldHVybiBJZC5yYW5kb21CeXRlcyh0KTt0aHJvdyBuZXcgRXJyb3IoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMgbXVzdCBiZSBkZWZpbmVkIil9Y29uc3QgVE09W10sSU09W10sUk09W10sU1E9QmlnSW50KDApLExwPUJpZ0ludCgxKSxBUT1CaWdJbnQoMiksVFE9QmlnSW50KDcpLElRPUJpZ0ludCgyNTYpLFJRPUJpZ0ludCgxMTMpO2ZvcihsZXQgdD0wLGU9THAscj0xLG49MDt0PDI0O3QrKyl7W3Isbl09W24sKDIqciszKm4pJTVdLFRNLnB1c2goMiooNSpuK3IpKSxJTS5wdXNoKCh0KzEpKih0KzIpLzIlNjQpO2xldCBzPVNRO2ZvcihsZXQgaT0wO2k8NztpKyspZT0oZTw8THBeKGU+PlRRKSpSUSklSVEsZSZBUSYmKHNePUxwPDwoTHA8PEJpZ0ludChpKSktTHApO1JNLnB1c2gocyl9Y29uc3RbTlEsUFFdPWdRKFJNLCEwKSxBOT0odCxlLHIpPT5yPjMyP3lRKHQsZSxyKTp3USh0LGUsciksVDk9KHQsZSxyKT0+cj4zMj92USh0LGUscik6YlEodCxlLHIpO2Z1bmN0aW9uIE9RKHQsZT0yNCl7Y29uc3Qgcj1uZXcgVWludDMyQXJyYXkoMTApO2ZvcihsZXQgbj0yNC1lO248MjQ7bisrKXtmb3IobGV0IG89MDtvPDEwO28rKylyW29dPXRbb11edFtvKzEwXV50W28rMjBdXnRbbyszMF1edFtvKzQwXTtmb3IobGV0IG89MDtvPDEwO28rPTIpe2NvbnN0IGE9KG8rOCklMTAsYz0obysyKSUxMCxsPXJbY10sZD1yW2MrMV0sdT1BOShsLGQsMSleclthXSxoPVQ5KGwsZCwxKV5yW2ErMV07Zm9yKGxldCBwPTA7cDw1MDtwKz0xMCl0W28rcF1ePXUsdFtvK3ArMV1ePWh9bGV0IHM9dFsyXSxpPXRbM107Zm9yKGxldCBvPTA7bzwyNDtvKyspe2NvbnN0IGE9SU1bb10sYz1BOShzLGksYSksbD1UOShzLGksYSksZD1UTVtvXTtzPXRbZF0saT10W2QrMV0sdFtkXT1jLHRbZCsxXT1sfWZvcihsZXQgbz0wO288NTA7bys9MTApe2ZvcihsZXQgYT0wO2E8MTA7YSsrKXJbYV09dFtvK2FdO2ZvcihsZXQgYT0wO2E8MTA7YSsrKXRbbythXV49fnJbKGErMiklMTBdJnJbKGErNCklMTBdfXRbMF1ePU5RW25dLHRbMV1ePVBRW25dfXIuZmlsbCgwKX1jbGFzcyBSNiBleHRlbmRzIEk2e2NvbnN0cnVjdG9yKGUscixuLHM9ITEsaT0yNCl7aWYoc3VwZXIoKSx0aGlzLmJsb2NrTGVuPWUsdGhpcy5zdWZmaXg9cix0aGlzLm91dHB1dExlbj1uLHRoaXMuZW5hYmxlWE9GPXMsdGhpcy5yb3VuZHM9aSx0aGlzLnBvcz0wLHRoaXMucG9zT3V0PTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSxmYihuKSwwPj10aGlzLmJsb2NrTGVufHx0aGlzLmJsb2NrTGVuPj0yMDApdGhyb3cgbmV3IEVycm9yKCJTaGEzIHN1cHBvcnRzIG9ubHkga2VjY2FrLWYxNjAwIGZ1bmN0aW9uIik7dGhpcy5zdGF0ZT1uZXcgVWludDhBcnJheSgyMDApLHRoaXMuc3RhdGUzMj1FUSh0aGlzLnN0YXRlKX1rZWNjYWsoKXtrOXx8UzkodGhpcy5zdGF0ZTMyKSxPUSh0aGlzLnN0YXRlMzIsdGhpcy5yb3VuZHMpLGs5fHxTOSh0aGlzLnN0YXRlMzIpLHRoaXMucG9zT3V0PTAsdGhpcy5wb3M9MH11cGRhdGUoZSl7YmgodGhpcyk7Y29uc3R7YmxvY2tMZW46cixzdGF0ZTpufT10aGlzO2U9T3koZSk7Y29uc3Qgcz1lLmxlbmd0aDtmb3IobGV0IGk9MDtpPHM7KXtjb25zdCBvPU1hdGgubWluKHItdGhpcy5wb3Mscy1pKTtmb3IobGV0IGE9MDthPG87YSsrKW5bdGhpcy5wb3MrK11ePWVbaSsrXTt0aGlzLnBvcz09PXImJnRoaXMua2VjY2FrKCl9cmV0dXJuIHRoaXN9ZmluaXNoKCl7aWYodGhpcy5maW5pc2hlZClyZXR1cm47dGhpcy5maW5pc2hlZD0hMDtjb25zdHtzdGF0ZTplLHN1ZmZpeDpyLHBvczpuLGJsb2NrTGVuOnN9PXRoaXM7ZVtuXV49ciwociYxMjgpIT09MCYmbj09PXMtMSYmdGhpcy5rZWNjYWsoKSxlW3MtMV1ePTEyOCx0aGlzLmtlY2NhaygpfXdyaXRlSW50byhlKXtiaCh0aGlzLCExKSxwMShlKSx0aGlzLmZpbmlzaCgpO2NvbnN0IHI9dGhpcy5zdGF0ZSx7YmxvY2tMZW46bn09dGhpcztmb3IobGV0IHM9MCxpPWUubGVuZ3RoO3M8aTspe3RoaXMucG9zT3V0Pj1uJiZ0aGlzLmtlY2NhaygpO2NvbnN0IG89TWF0aC5taW4obi10aGlzLnBvc091dCxpLXMpO2Uuc2V0KHIuc3ViYXJyYXkodGhpcy5wb3NPdXQsdGhpcy5wb3NPdXQrbykscyksdGhpcy5wb3NPdXQrPW8scys9b31yZXR1cm4gZX14b2ZJbnRvKGUpe2lmKCF0aGlzLmVuYWJsZVhPRil0aHJvdyBuZXcgRXJyb3IoIlhPRiBpcyBub3QgcG9zc2libGUgZm9yIHRoaXMgaW5zdGFuY2UiKTtyZXR1cm4gdGhpcy53cml0ZUludG8oZSl9eG9mKGUpe3JldHVybiBmYihlKSx0aGlzLnhvZkludG8obmV3IFVpbnQ4QXJyYXkoZSkpfWRpZ2VzdEludG8oZSl7aWYoU00oZSx0aGlzKSx0aGlzLmZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiZGlnZXN0KCkgd2FzIGFscmVhZHkgY2FsbGVkIik7cmV0dXJuIHRoaXMud3JpdGVJbnRvKGUpLHRoaXMuZGVzdHJveSgpLGV9ZGlnZXN0KCl7cmV0dXJuIHRoaXMuZGlnZXN0SW50byhuZXcgVWludDhBcnJheSh0aGlzLm91dHB1dExlbikpfWRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMCx0aGlzLnN0YXRlLmZpbGwoMCl9X2Nsb25lSW50byhlKXtjb25zdHtibG9ja0xlbjpyLHN1ZmZpeDpuLG91dHB1dExlbjpzLHJvdW5kczppLGVuYWJsZVhPRjpvfT10aGlzO3JldHVybiBlfHwoZT1uZXcgUjYocixuLHMsbyxpKSksZS5zdGF0ZTMyLnNldCh0aGlzLnN0YXRlMzIpLGUucG9zPXRoaXMucG9zLGUucG9zT3V0PXRoaXMucG9zT3V0LGUuZmluaXNoZWQ9dGhpcy5maW5pc2hlZCxlLnJvdW5kcz1pLGUuc3VmZml4PW4sZS5vdXRwdXRMZW49cyxlLmVuYWJsZVhPRj1vLGUuZGVzdHJveWVkPXRoaXMuZGVzdHJveWVkLGV9fWNvbnN0ICRRPSh0LGUscik9PkFNKCgpPT5uZXcgUjYoZSx0LHIpKSxNUT0kUSgxLDEzNiwyNTYvOCk7ZnVuY3Rpb24gTk0odCxlKXtjb25zdCByPWV8fCJoZXgiLG49TVEoVzAodCx7c3RyaWN0OiExfSk/dVEodCk6dCk7cmV0dXJuIHI9PT0iYnl0ZXMiP246b3gobil9Y2xhc3MgRFEgZXh0ZW5kcyBNYXB7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywibWF4U2l6ZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnZvaWQgMH0pLHRoaXMubWF4U2l6ZT1lfWdldChlKXtjb25zdCByPXN1cGVyLmdldChlKTtyZXR1cm4gc3VwZXIuaGFzKGUpJiZyIT09dm9pZCAwJiYodGhpcy5kZWxldGUoZSksc3VwZXIuc2V0KGUscikpLHJ9c2V0KGUscil7aWYoc3VwZXIuc2V0KGUsciksdGhpcy5tYXhTaXplJiZ0aGlzLnNpemU+dGhpcy5tYXhTaXplKXtjb25zdCBuPXRoaXMua2V5cygpLm5leHQoKS52YWx1ZTtuJiZ0aGlzLmRlbGV0ZShuKX1yZXR1cm4gdGhpc319Y29uc3QgJDI9bmV3IERRKDgxOTIpO2Z1bmN0aW9uIEJRKHQsZSl7aWYoJDIuaGFzKGAke3R9LiR7ZX1gKSlyZXR1cm4gJDIuZ2V0KGAke3R9LiR7ZX1gKTtjb25zdCByPXQuc3Vic3RyaW5nKDIpLnRvTG93ZXJDYXNlKCksbj1OTShrTShyKSwiYnl0ZXMiKSxzPXIuc3BsaXQoIiIpO2ZvcihsZXQgbz0wO288NDA7bys9MiluW28+PjFdPj40Pj04JiZzW29dJiYoc1tvXT1zW29dLnRvVXBwZXJDYXNlKCkpLChuW28+PjFdJjE1KT49OCYmc1tvKzFdJiYoc1tvKzFdPXNbbysxXS50b1VwcGVyQ2FzZSgpKTtjb25zdCBpPWAweCR7cy5qb2luKCIiKX1gO3JldHVybiAkMi5zZXQoYCR7dH0uJHtlfWAsaSksaX1mdW5jdGlvbiBMUSh0KXtjb25zdCBlPU5NKGAweCR7dC5zdWJzdHJpbmcoNCl9YCkuc3Vic3RyaW5nKDI2KTtyZXR1cm4gQlEoYDB4JHtlfWApfWFzeW5jIGZ1bmN0aW9uIFVRKHtoYXNoOnQsc2lnbmF0dXJlOmV9KXtjb25zdCByPVcwKHQpP3Q6b3godCkse3NlY3AyNTZrMTpufT1hd2FpdCBUZShhc3luYygpPT57Y29uc3R7c2VjcDI1NmsxOm99PWF3YWl0IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlRlZSk7cmV0dXJue3NlY3AyNTZrMTpvfX0sdm9pZCAwKTtyZXR1cm5gMHgkeygoKT0+e2lmKHR5cGVvZiBlPT0ib2JqZWN0IiYmInIiaW4gZSYmInMiaW4gZSl7Y29uc3R7cjpsLHM6ZCx2OnUseVBhcml0eTpofT1lLHA9TnVtYmVyKGg/P3UpLGY9STkocCk7cmV0dXJuIG5ldyBuLlNpZ25hdHVyZShzeChsKSxzeChkKSkuYWRkUmVjb3ZlcnlCaXQoZil9Y29uc3Qgbz1XMChlKT9lOm94KGUpLGE9aVEoYDB4JHtvLnNsaWNlKDEzMCl9YCksYz1JOShhKTtyZXR1cm4gbi5TaWduYXR1cmUuZnJvbUNvbXBhY3Qoby5zdWJzdHJpbmcoMiwxMzApKS5hZGRSZWNvdmVyeUJpdChjKX0pKCkucmVjb3ZlclB1YmxpY0tleShyLnN1YnN0cmluZygyKSkudG9IZXgoITEpfWB9ZnVuY3Rpb24gSTkodCl7aWYodD09PTB8fHQ9PT0xKXJldHVybiB0O2lmKHQ9PT0yNylyZXR1cm4gMDtpZih0PT09MjgpcmV0dXJuIDE7dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHlQYXJpdHlPclYgdmFsdWUiKX1hc3luYyBmdW5jdGlvbiBGUSh7aGFzaDp0LHNpZ25hdHVyZTplfSl7cmV0dXJuIExRKGF3YWl0IFVRKHtoYXNoOnQsc2lnbmF0dXJlOmV9KSl9ZnVuY3Rpb24galEodCxlLHIsbil7aWYodHlwZW9mIHQuc2V0QmlnVWludDY0PT0iZnVuY3Rpb24iKXJldHVybiB0LnNldEJpZ1VpbnQ2NChlLHIsbik7Y29uc3Qgcz1CaWdJbnQoMzIpLGk9QmlnSW50KDQyOTQ5NjcyOTUpLG89TnVtYmVyKHI+PnMmaSksYT1OdW1iZXIociZpKSxjPW4/NDowLGw9bj8wOjQ7dC5zZXRVaW50MzIoZStjLG8sbiksdC5zZXRVaW50MzIoZStsLGEsbil9ZnVuY3Rpb24gelEodCxlLHIpe3JldHVybiB0JmVefnQmcn1mdW5jdGlvbiBXUSh0LGUscil7cmV0dXJuIHQmZV50JnJeZSZyfWNsYXNzIEhRIGV4dGVuZHMgSTZ7Y29uc3RydWN0b3IoZSxyLG4scyl7c3VwZXIoKSx0aGlzLmJsb2NrTGVuPWUsdGhpcy5vdXRwdXRMZW49cix0aGlzLnBhZE9mZnNldD1uLHRoaXMuaXNMRT1zLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5sZW5ndGg9MCx0aGlzLnBvcz0wLHRoaXMuZGVzdHJveWVkPSExLHRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KGUpLHRoaXMudmlldz1PMih0aGlzLmJ1ZmZlcil9dXBkYXRlKGUpe2JoKHRoaXMpO2NvbnN0e3ZpZXc6cixidWZmZXI6bixibG9ja0xlbjpzfT10aGlzO2U9T3koZSk7Y29uc3QgaT1lLmxlbmd0aDtmb3IobGV0IG89MDtvPGk7KXtjb25zdCBhPU1hdGgubWluKHMtdGhpcy5wb3MsaS1vKTtpZihhPT09cyl7Y29uc3QgYz1PMihlKTtmb3IoO3M8PWktbztvKz1zKXRoaXMucHJvY2VzcyhjLG8pO2NvbnRpbnVlfW4uc2V0KGUuc3ViYXJyYXkobyxvK2EpLHRoaXMucG9zKSx0aGlzLnBvcys9YSxvKz1hLHRoaXMucG9zPT09cyYmKHRoaXMucHJvY2VzcyhyLDApLHRoaXMucG9zPTApfXJldHVybiB0aGlzLmxlbmd0aCs9ZS5sZW5ndGgsdGhpcy5yb3VuZENsZWFuKCksdGhpc31kaWdlc3RJbnRvKGUpe2JoKHRoaXMpLFNNKGUsdGhpcyksdGhpcy5maW5pc2hlZD0hMDtjb25zdHtidWZmZXI6cix2aWV3Om4sYmxvY2tMZW46cyxpc0xFOml9PXRoaXM7bGV0e3BvczpvfT10aGlzO3JbbysrXT0xMjgsdGhpcy5idWZmZXIuc3ViYXJyYXkobykuZmlsbCgwKSx0aGlzLnBhZE9mZnNldD5zLW8mJih0aGlzLnByb2Nlc3MobiwwKSxvPTApO2ZvcihsZXQgdT1vO3U8czt1Kyspclt1XT0wO2pRKG4scy04LEJpZ0ludCh0aGlzLmxlbmd0aCo4KSxpKSx0aGlzLnByb2Nlc3MobiwwKTtjb25zdCBhPU8yKGUpLGM9dGhpcy5vdXRwdXRMZW47aWYoYyU0KXRocm93IG5ldyBFcnJvcigiX3NoYTI6IG91dHB1dExlbiBzaG91bGQgYmUgYWxpZ25lZCB0byAzMmJpdCIpO2NvbnN0IGw9Yy80LGQ9dGhpcy5nZXQoKTtpZihsPmQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiX3NoYTI6IG91dHB1dExlbiBiaWdnZXIgdGhhbiBzdGF0ZSIpO2ZvcihsZXQgdT0wO3U8bDt1KyspYS5zZXRVaW50MzIoNCp1LGRbdV0saSl9ZGlnZXN0KCl7Y29uc3R7YnVmZmVyOmUsb3V0cHV0TGVuOnJ9PXRoaXM7dGhpcy5kaWdlc3RJbnRvKGUpO2NvbnN0IG49ZS5zbGljZSgwLHIpO3JldHVybiB0aGlzLmRlc3Ryb3koKSxufV9jbG9uZUludG8oZSl7ZXx8KGU9bmV3IHRoaXMuY29uc3RydWN0b3IpLGUuc2V0KC4uLnRoaXMuZ2V0KCkpO2NvbnN0e2Jsb2NrTGVuOnIsYnVmZmVyOm4sbGVuZ3RoOnMsZmluaXNoZWQ6aSxkZXN0cm95ZWQ6byxwb3M6YX09dGhpcztyZXR1cm4gZS5sZW5ndGg9cyxlLnBvcz1hLGUuZmluaXNoZWQ9aSxlLmRlc3Ryb3llZD1vLHMlciYmZS5idWZmZXIuc2V0KG4pLGV9fWNvbnN0IHFRPW5ldyBVaW50MzJBcnJheShbMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSksS2E9bmV3IFVpbnQzMkFycmF5KFsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV0pLFphPW5ldyBVaW50MzJBcnJheSg2NCk7Y2xhc3MgVlEgZXh0ZW5kcyBIUXtjb25zdHJ1Y3Rvcigpe3N1cGVyKDY0LDMyLDgsITEpLHRoaXMuQT1LYVswXXwwLHRoaXMuQj1LYVsxXXwwLHRoaXMuQz1LYVsyXXwwLHRoaXMuRD1LYVszXXwwLHRoaXMuRT1LYVs0XXwwLHRoaXMuRj1LYVs1XXwwLHRoaXMuRz1LYVs2XXwwLHRoaXMuSD1LYVs3XXwwfWdldCgpe2NvbnN0e0E6ZSxCOnIsQzpuLEQ6cyxFOmksRjpvLEc6YSxIOmN9PXRoaXM7cmV0dXJuW2UscixuLHMsaSxvLGEsY119c2V0KGUscixuLHMsaSxvLGEsYyl7dGhpcy5BPWV8MCx0aGlzLkI9cnwwLHRoaXMuQz1ufDAsdGhpcy5EPXN8MCx0aGlzLkU9aXwwLHRoaXMuRj1vfDAsdGhpcy5HPWF8MCx0aGlzLkg9Y3wwfXByb2Nlc3MoZSxyKXtmb3IobGV0IHU9MDt1PDE2O3UrKyxyKz00KVphW3VdPWUuZ2V0VWludDMyKHIsITEpO2ZvcihsZXQgdT0xNjt1PDY0O3UrKyl7Y29uc3QgaD1aYVt1LTE1XSxwPVphW3UtMl0sZj1pbyhoLDcpXmlvKGgsMTgpXmg+Pj4zLG09aW8ocCwxNyleaW8ocCwxOSlecD4+PjEwO1phW3VdPW0rWmFbdS03XStmK1phW3UtMTZdfDB9bGV0e0E6bixCOnMsQzppLEQ6byxFOmEsRjpjLEc6bCxIOmR9PXRoaXM7Zm9yKGxldCB1PTA7dTw2NDt1Kyspe2NvbnN0IGg9aW8oYSw2KV5pbyhhLDExKV5pbyhhLDI1KSxwPWQraCt6UShhLGMsbCkrcVFbdV0rWmFbdV18MCxtPShpbyhuLDIpXmlvKG4sMTMpXmlvKG4sMjIpKStXUShuLHMsaSl8MDtkPWwsbD1jLGM9YSxhPW8rcHwwLG89aSxpPXMscz1uLG49cCttfDB9bj1uK3RoaXMuQXwwLHM9cyt0aGlzLkJ8MCxpPWkrdGhpcy5DfDAsbz1vK3RoaXMuRHwwLGE9YSt0aGlzLkV8MCxjPWMrdGhpcy5GfDAsbD1sK3RoaXMuR3wwLGQ9ZCt0aGlzLkh8MCx0aGlzLnNldChuLHMsaSxvLGEsYyxsLGQpfXJvdW5kQ2xlYW4oKXtaYS5maWxsKDApfWRlc3Ryb3koKXt0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDApLHRoaXMuYnVmZmVyLmZpbGwoMCl9fWNvbnN0IEdRPUFNKCgpPT5uZXcgVlEpOy8qISBub2JsZS1jdXJ2ZXMgLSBNSVQgTGljZW5zZSAoYykgMjAyMiBQYXVsIE1pbGxlciAocGF1bG1pbGxyLmNvbSkgKi9jb25zdCAkeT1CaWdJbnQoMCksTXk9QmlnSW50KDEpLEtRPUJpZ0ludCgyKTtmdW5jdGlvbiBFdSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fEFycmF5QnVmZmVyLmlzVmlldyh0KSYmdC5jb25zdHJ1Y3Rvci5uYW1lPT09IlVpbnQ4QXJyYXkifWZ1bmN0aW9uIGYxKHQpe2lmKCFFdSh0KSl0aHJvdyBuZXcgRXJyb3IoIlVpbnQ4QXJyYXkgZXhwZWN0ZWQiKX1mdW5jdGlvbiB5aCh0LGUpe2lmKHR5cGVvZiBlIT0iYm9vbGVhbiIpdGhyb3cgbmV3IEVycm9yKHQrIiBib29sZWFuIGV4cGVjdGVkLCBnb3QgIitlKX1jb25zdCBaUT1BcnJheS5mcm9tKHtsZW5ndGg6MjU2fSwodCxlKT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKTtmdW5jdGlvbiB2aCh0KXtmMSh0KTtsZXQgZT0iIjtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyllKz1aUVt0W3JdXTtyZXR1cm4gZX1mdW5jdGlvbiBlaCh0KXtjb25zdCBlPXQudG9TdHJpbmcoMTYpO3JldHVybiBlLmxlbmd0aCYxPyIwIitlOmV9ZnVuY3Rpb24gTjYodCl7aWYodHlwZW9mIHQhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiaGV4IHN0cmluZyBleHBlY3RlZCwgZ290ICIrdHlwZW9mIHQpO3JldHVybiB0PT09IiI/JHk6QmlnSW50KCIweCIrdCl9Y29uc3QgcW89e18wOjQ4LF85OjU3LEE6NjUsRjo3MCxhOjk3LGY6MTAyfTtmdW5jdGlvbiBSOSh0KXtpZih0Pj1xby5fMCYmdDw9cW8uXzkpcmV0dXJuIHQtcW8uXzA7aWYodD49cW8uQSYmdDw9cW8uRilyZXR1cm4gdC0ocW8uQS0xMCk7aWYodD49cW8uYSYmdDw9cW8uZilyZXR1cm4gdC0ocW8uYS0xMCl9ZnVuY3Rpb24gRWgodCl7aWYodHlwZW9mIHQhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiaGV4IHN0cmluZyBleHBlY3RlZCwgZ290ICIrdHlwZW9mIHQpO2NvbnN0IGU9dC5sZW5ndGgscj1lLzI7aWYoZSUyKXRocm93IG5ldyBFcnJvcigiaGV4IHN0cmluZyBleHBlY3RlZCwgZ290IHVucGFkZGVkIGhleCBvZiBsZW5ndGggIitlKTtjb25zdCBuPW5ldyBVaW50OEFycmF5KHIpO2ZvcihsZXQgcz0wLGk9MDtzPHI7cysrLGkrPTIpe2NvbnN0IG89UjkodC5jaGFyQ29kZUF0KGkpKSxhPVI5KHQuY2hhckNvZGVBdChpKzEpKTtpZihvPT09dm9pZCAwfHxhPT09dm9pZCAwKXtjb25zdCBjPXRbaV0rdFtpKzFdO3Rocm93IG5ldyBFcnJvcignaGV4IHN0cmluZyBleHBlY3RlZCwgZ290IG5vbi1oZXggY2hhcmFjdGVyICInK2MrJyIgYXQgaW5kZXggJytpKX1uW3NdPW8qMTYrYX1yZXR1cm4gbn1mdW5jdGlvbiBvdSh0KXtyZXR1cm4gTjYodmgodCkpfWZ1bmN0aW9uIFA2KHQpe3JldHVybiBmMSh0KSxONih2aChVaW50OEFycmF5LmZyb20odCkucmV2ZXJzZSgpKSl9ZnVuY3Rpb24gQ2godCxlKXtyZXR1cm4gRWgodC50b1N0cmluZygxNikucGFkU3RhcnQoZSoyLCIwIikpfWZ1bmN0aW9uIE82KHQsZSl7cmV0dXJuIENoKHQsZSkucmV2ZXJzZSgpfWZ1bmN0aW9uIFlRKHQpe3JldHVybiBFaChlaCh0KSl9ZnVuY3Rpb24ga3ModCxlLHIpe2xldCBuO2lmKHR5cGVvZiBlPT0ic3RyaW5nIil0cnl7bj1FaChlKX1jYXRjaChpKXt0aHJvdyBuZXcgRXJyb3IodCsiIG11c3QgYmUgaGV4IHN0cmluZyBvciBVaW50OEFycmF5LCBjYXVzZTogIitpKX1lbHNlIGlmKEV1KGUpKW49VWludDhBcnJheS5mcm9tKGUpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKHQrIiBtdXN0IGJlIGhleCBzdHJpbmcgb3IgVWludDhBcnJheSIpO2NvbnN0IHM9bi5sZW5ndGg7aWYodHlwZW9mIHI9PSJudW1iZXIiJiZzIT09cil0aHJvdyBuZXcgRXJyb3IodCsiIG9mIGxlbmd0aCAiK3IrIiBleHBlY3RlZCwgZ290ICIrcyk7cmV0dXJuIG59ZnVuY3Rpb24gSDAoLi4udCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgcz10W25dO2YxKHMpLGUrPXMubGVuZ3RofWNvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBuPTAscz0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPXRbbl07ci5zZXQoaSxzKSxzKz1pLmxlbmd0aH1yZXR1cm4gcn1mdW5jdGlvbiBKUSh0LGUpe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7bGV0IHI9MDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylyfD10W25dXmVbbl07cmV0dXJuIHI9PT0wfWZ1bmN0aW9uIFhRKHQpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoInN0cmluZyBleHBlY3RlZCIpO3JldHVybiBuZXcgVWludDhBcnJheShuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodCkpfWNvbnN0IE0yPXQ9PnR5cGVvZiB0PT0iYmlnaW50IiYmJHk8PXQ7ZnVuY3Rpb24gRHkodCxlLHIpe3JldHVybiBNMih0KSYmTTIoZSkmJk0yKHIpJiZlPD10JiZ0PHJ9ZnVuY3Rpb24gYXUodCxlLHIsbil7aWYoIUR5KGUscixuKSl0aHJvdyBuZXcgRXJyb3IoImV4cGVjdGVkIHZhbGlkICIrdCsiOiAiK3IrIiA8PSBuIDwgIituKyIsIGdvdCAiK2UpfWZ1bmN0aW9uIFBNKHQpe2xldCBlO2ZvcihlPTA7dD4keTt0Pj49TXksZSs9MSk7cmV0dXJuIGV9ZnVuY3Rpb24gUVEodCxlKXtyZXR1cm4gdD4+QmlnSW50KGUpJk15fWZ1bmN0aW9uIGVlZSh0LGUscil7cmV0dXJuIHR8KHI/TXk6JHkpPDxCaWdJbnQoZSl9Y29uc3QgJDY9dD0+KEtRPDxCaWdJbnQodC0xKSktTXksRDI9dD0+bmV3IFVpbnQ4QXJyYXkodCksTjk9dD0+VWludDhBcnJheS5mcm9tKHQpO2Z1bmN0aW9uIE9NKHQsZSxyKXtpZih0eXBlb2YgdCE9Im51bWJlciJ8fHQ8Mil0aHJvdyBuZXcgRXJyb3IoImhhc2hMZW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyInx8ZTwyKXRocm93IG5ldyBFcnJvcigicUJ5dGVMZW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKHR5cGVvZiByIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaG1hY0ZuIG11c3QgYmUgYSBmdW5jdGlvbiIpO2xldCBuPUQyKHQpLHM9RDIodCksaT0wO2NvbnN0IG89KCk9PntuLmZpbGwoMSkscy5maWxsKDApLGk9MH0sYT0oLi4udSk9PnIocyxuLC4uLnUpLGM9KHU9RDIoKSk9PntzPWEoTjkoWzBdKSx1KSxuPWEoKSx1Lmxlbmd0aCE9PTAmJihzPWEoTjkoWzFdKSx1KSxuPWEoKSl9LGw9KCk9PntpZihpKys+PTFlMyl0aHJvdyBuZXcgRXJyb3IoImRyYmc6IHRyaWVkIDEwMDAgdmFsdWVzIik7bGV0IHU9MDtjb25zdCBoPVtdO2Zvcig7dTxlOyl7bj1hKCk7Y29uc3QgcD1uLnNsaWNlKCk7aC5wdXNoKHApLHUrPW4ubGVuZ3RofXJldHVybiBIMCguLi5oKX07cmV0dXJuKHUsaCk9PntvKCksYyh1KTtsZXQgcDtmb3IoOyEocD1oKGwoKSkpOyljKCk7cmV0dXJuIG8oKSxwfX1jb25zdCB0ZWU9e2JpZ2ludDp0PT50eXBlb2YgdD09ImJpZ2ludCIsZnVuY3Rpb246dD0+dHlwZW9mIHQ9PSJmdW5jdGlvbiIsYm9vbGVhbjp0PT50eXBlb2YgdD09ImJvb2xlYW4iLHN0cmluZzp0PT50eXBlb2YgdD09InN0cmluZyIsc3RyaW5nT3JVaW50OEFycmF5OnQ9PnR5cGVvZiB0PT0ic3RyaW5nInx8RXUodCksaXNTYWZlSW50ZWdlcjp0PT5OdW1iZXIuaXNTYWZlSW50ZWdlcih0KSxhcnJheTp0PT5BcnJheS5pc0FycmF5KHQpLGZpZWxkOih0LGUpPT5lLkZwLmlzVmFsaWQodCksaGFzaDp0PT50eXBlb2YgdD09ImZ1bmN0aW9uIiYmTnVtYmVyLmlzU2FmZUludGVnZXIodC5vdXRwdXRMZW4pfTtmdW5jdGlvbiBtMSh0LGUscj17fSl7Y29uc3Qgbj0ocyxpLG8pPT57Y29uc3QgYT10ZWVbaV07aWYodHlwZW9mIGEhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHZhbGlkYXRvciBmdW5jdGlvbiIpO2NvbnN0IGM9dFtzXTtpZighKG8mJmM9PT12b2lkIDApJiYhYShjLHQpKXRocm93IG5ldyBFcnJvcigicGFyYW0gIitTdHJpbmcocykrIiBpcyBpbnZhbGlkLiBFeHBlY3RlZCAiK2krIiwgZ290ICIrYyl9O2Zvcihjb25zdFtzLGldb2YgT2JqZWN0LmVudHJpZXMoZSkpbihzLGksITEpO2Zvcihjb25zdFtzLGldb2YgT2JqZWN0LmVudHJpZXMocikpbihzLGksITApO3JldHVybiB0fWNvbnN0IHJlZT0oKT0+e3Rocm93IG5ldyBFcnJvcigibm90IGltcGxlbWVudGVkIil9O2Z1bmN0aW9uIGF4KHQpe2NvbnN0IGU9bmV3IFdlYWtNYXA7cmV0dXJuKHIsLi4ubik9Pntjb25zdCBzPWUuZ2V0KHIpO2lmKHMhPT12b2lkIDApcmV0dXJuIHM7Y29uc3QgaT10KHIsLi4ubik7cmV0dXJuIGUuc2V0KHIsaSksaX19Y29uc3QgbmVlPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxhSW5SYW5nZTphdSxhYm9vbDp5aCxhYnl0ZXM6ZjEsYml0R2V0OlFRLGJpdExlbjpQTSxiaXRNYXNrOiQ2LGJpdFNldDplZWUsYnl0ZXNUb0hleDp2aCxieXRlc1RvTnVtYmVyQkU6b3UsYnl0ZXNUb051bWJlckxFOlA2LGNvbmNhdEJ5dGVzOkgwLGNyZWF0ZUhtYWNEcmJnOk9NLGVuc3VyZUJ5dGVzOmtzLGVxdWFsQnl0ZXM6SlEsaGV4VG9CeXRlczpFaCxoZXhUb051bWJlcjpONixpblJhbmdlOkR5LGlzQnl0ZXM6RXUsbWVtb2l6ZWQ6YXgsbm90SW1wbGVtZW50ZWQ6cmVlLG51bWJlclRvQnl0ZXNCRTpDaCxudW1iZXJUb0J5dGVzTEU6TzYsbnVtYmVyVG9IZXhVbnBhZGRlZDplaCxudW1iZXJUb1ZhckJ5dGVzQkU6WVEsdXRmOFRvQnl0ZXM6WFEsdmFsaWRhdGVPYmplY3Q6bTF9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7Y2xhc3MgJE0gZXh0ZW5kcyBJNntjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKCksdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSxmUShlKTtjb25zdCBuPU95KHIpO2lmKHRoaXMuaUhhc2g9ZS5jcmVhdGUoKSx0eXBlb2YgdGhpcy5pSGFzaC51cGRhdGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBpbnN0YW5jZSBvZiBjbGFzcyB3aGljaCBleHRlbmRzIHV0aWxzLkhhc2giKTt0aGlzLmJsb2NrTGVuPXRoaXMuaUhhc2guYmxvY2tMZW4sdGhpcy5vdXRwdXRMZW49dGhpcy5pSGFzaC5vdXRwdXRMZW47Y29uc3Qgcz10aGlzLmJsb2NrTGVuLGk9bmV3IFVpbnQ4QXJyYXkocyk7aS5zZXQobi5sZW5ndGg+cz9lLmNyZWF0ZSgpLnVwZGF0ZShuKS5kaWdlc3QoKTpuKTtmb3IobGV0IG89MDtvPGkubGVuZ3RoO28rKylpW29dXj01NDt0aGlzLmlIYXNoLnVwZGF0ZShpKSx0aGlzLm9IYXNoPWUuY3JlYXRlKCk7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspaVtvXV49MTA2O3RoaXMub0hhc2gudXBkYXRlKGkpLGkuZmlsbCgwKX11cGRhdGUoZSl7cmV0dXJuIGJoKHRoaXMpLHRoaXMuaUhhc2gudXBkYXRlKGUpLHRoaXN9ZGlnZXN0SW50byhlKXtiaCh0aGlzKSxwMShlLHRoaXMub3V0cHV0TGVuKSx0aGlzLmZpbmlzaGVkPSEwLHRoaXMuaUhhc2guZGlnZXN0SW50byhlKSx0aGlzLm9IYXNoLnVwZGF0ZShlKSx0aGlzLm9IYXNoLmRpZ2VzdEludG8oZSksdGhpcy5kZXN0cm95KCl9ZGlnZXN0KCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSh0aGlzLm9IYXNoLm91dHB1dExlbik7cmV0dXJuIHRoaXMuZGlnZXN0SW50byhlKSxlfV9jbG9uZUludG8oZSl7ZXx8KGU9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykse30pKTtjb25zdHtvSGFzaDpyLGlIYXNoOm4sZmluaXNoZWQ6cyxkZXN0cm95ZWQ6aSxibG9ja0xlbjpvLG91dHB1dExlbjphfT10aGlzO3JldHVybiBlPWUsZS5maW5pc2hlZD1zLGUuZGVzdHJveWVkPWksZS5ibG9ja0xlbj1vLGUub3V0cHV0TGVuPWEsZS5vSGFzaD1yLl9jbG9uZUludG8oZS5vSGFzaCksZS5pSGFzaD1uLl9jbG9uZUludG8oZS5pSGFzaCksZX1kZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITAsdGhpcy5vSGFzaC5kZXN0cm95KCksdGhpcy5pSGFzaC5kZXN0cm95KCl9fWNvbnN0IE1NPSh0LGUscik9Pm5ldyAkTSh0LGUpLnVwZGF0ZShyKS5kaWdlc3QoKTtNTS5jcmVhdGU9KHQsZSk9Pm5ldyAkTSh0LGUpOy8qISBub2JsZS1jdXJ2ZXMgLSBNSVQgTGljZW5zZSAoYykgMjAyMiBQYXVsIE1pbGxlciAocGF1bG1pbGxyLmNvbSkgKi9jb25zdCBsbj1CaWdJbnQoMCksTHI9QmlnSW50KDEpLEhsPUJpZ0ludCgyKSxpZWU9QmlnSW50KDMpLGN4PUJpZ0ludCg0KSxQOT1CaWdJbnQoNSksTzk9QmlnSW50KDgpO2Z1bmN0aW9uIHJpKHQsZSl7Y29uc3Qgcj10JWU7cmV0dXJuIHI+PWxuP3I6ZStyfWZ1bmN0aW9uIHNlZSh0LGUscil7aWYoZTxsbil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZXhwb25lbnQsIG5lZ2F0aXZlcyB1bnN1cHBvcnRlZCIpO2lmKHI8PWxuKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBtb2R1bHVzIik7aWYocj09PUxyKXJldHVybiBsbjtsZXQgbj1Mcjtmb3IoO2U+bG47KWUmTHImJihuPW4qdCVyKSx0PXQqdCVyLGU+Pj1McjtyZXR1cm4gbn1mdW5jdGlvbiBGaSh0LGUscil7bGV0IG49dDtmb3IoO2UtLSA+bG47KW4qPW4sbiU9cjtyZXR1cm4gbn1mdW5jdGlvbiBseCh0LGUpe2lmKHQ9PT1sbil0aHJvdyBuZXcgRXJyb3IoImludmVydDogZXhwZWN0ZWQgbm9uLXplcm8gbnVtYmVyIik7aWYoZTw9bG4pdGhyb3cgbmV3IEVycm9yKCJpbnZlcnQ6IGV4cGVjdGVkIHBvc2l0aXZlIG1vZHVsdXMsIGdvdCAiK2UpO2xldCByPXJpKHQsZSksbj1lLHM9bG4saT1Mcjtmb3IoO3IhPT1sbjspe2NvbnN0IGE9bi9yLGM9biVyLGw9cy1pKmE7bj1yLHI9YyxzPWksaT1sfWlmKG4hPT1Mcil0aHJvdyBuZXcgRXJyb3IoImludmVydDogZG9lcyBub3QgZXhpc3QiKTtyZXR1cm4gcmkocyxlKX1mdW5jdGlvbiBvZWUodCl7Y29uc3QgZT0odC1McikvSGw7bGV0IHIsbixzO2ZvcihyPXQtTHIsbj0wO3IlSGw9PT1sbjtyLz1IbCxuKyspO2ZvcihzPUhsO3M8dCYmc2VlKHMsZSx0KSE9PXQtTHI7cysrKWlmKHM+MWUzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc3F1YXJlIHJvb3Q6IGxpa2VseSBub24tcHJpbWUgUCIpO2lmKG49PT0xKXtjb25zdCBvPSh0K0xyKS9jeDtyZXR1cm4gZnVuY3Rpb24oYyxsKXtjb25zdCBkPWMucG93KGwsbyk7aWYoIWMuZXFsKGMuc3FyKGQpLGwpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc3F1YXJlIHJvb3QiKTtyZXR1cm4gZH19Y29uc3QgaT0ocitMcikvSGw7cmV0dXJuIGZ1bmN0aW9uKGEsYyl7aWYoYS5wb3coYyxlKT09PWEubmVnKGEuT05FKSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNxdWFyZSByb290Iik7bGV0IGw9bixkPWEucG93KGEubXVsKGEuT05FLHMpLHIpLHU9YS5wb3coYyxpKSxoPWEucG93KGMscik7Zm9yKDshYS5lcWwoaCxhLk9ORSk7KXtpZihhLmVxbChoLGEuWkVSTykpcmV0dXJuIGEuWkVSTztsZXQgcD0xO2ZvcihsZXQgbT1hLnNxcihoKTtwPGwmJiFhLmVxbChtLGEuT05FKTtwKyspbT1hLnNxcihtKTtjb25zdCBmPWEucG93KGQsTHI8PEJpZ0ludChsLXAtMSkpO2Q9YS5zcXIoZiksdT1hLm11bCh1LGYpLGg9YS5tdWwoaCxkKSxsPXB9cmV0dXJuIHV9fWZ1bmN0aW9uIGFlZSh0KXtpZih0JWN4PT09aWVlKXtjb25zdCBlPSh0K0xyKS9jeDtyZXR1cm4gZnVuY3Rpb24obixzKXtjb25zdCBpPW4ucG93KHMsZSk7aWYoIW4uZXFsKG4uc3FyKGkpLHMpKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgc3F1YXJlIHJvb3QiKTtyZXR1cm4gaX19aWYodCVPOT09PVA5KXtjb25zdCBlPSh0LVA5KS9POTtyZXR1cm4gZnVuY3Rpb24obixzKXtjb25zdCBpPW4ubXVsKHMsSGwpLG89bi5wb3coaSxlKSxhPW4ubXVsKHMsbyksYz1uLm11bChuLm11bChhLEhsKSxvKSxsPW4ubXVsKGEsbi5zdWIoYyxuLk9ORSkpO2lmKCFuLmVxbChuLnNxcihsKSxzKSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNxdWFyZSByb290Iik7cmV0dXJuIGx9fXJldHVybiBvZWUodCl9Y29uc3QgY2VlPVsiY3JlYXRlIiwiaXNWYWxpZCIsImlzMCIsIm5lZyIsImludiIsInNxcnQiLCJzcXIiLCJlcWwiLCJhZGQiLCJzdWIiLCJtdWwiLCJwb3ciLCJkaXYiLCJhZGROIiwic3ViTiIsIm11bE4iLCJzcXJOIl07ZnVuY3Rpb24gbGVlKHQpe2NvbnN0IGU9e09SREVSOiJiaWdpbnQiLE1BU0s6ImJpZ2ludCIsQllURVM6ImlzU2FmZUludGVnZXIiLEJJVFM6ImlzU2FmZUludGVnZXIifSxyPWNlZS5yZWR1Y2UoKG4scyk9PihuW3NdPSJmdW5jdGlvbiIsbiksZSk7cmV0dXJuIG0xKHQscil9ZnVuY3Rpb24gdWVlKHQsZSxyKXtpZihyPGxuKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBleHBvbmVudCwgbmVnYXRpdmVzIHVuc3VwcG9ydGVkIik7aWYocj09PWxuKXJldHVybiB0Lk9ORTtpZihyPT09THIpcmV0dXJuIGU7bGV0IG49dC5PTkUscz1lO2Zvcig7cj5sbjspciZMciYmKG49dC5tdWwobixzKSkscz10LnNxcihzKSxyPj49THI7cmV0dXJuIG59ZnVuY3Rpb24gZGVlKHQsZSl7Y29uc3Qgcj1uZXcgQXJyYXkoZS5sZW5ndGgpLG49ZS5yZWR1Y2UoKGksbyxhKT0+dC5pczAobyk/aTooclthXT1pLHQubXVsKGksbykpLHQuT05FKSxzPXQuaW52KG4pO3JldHVybiBlLnJlZHVjZVJpZ2h0KChpLG8sYSk9PnQuaXMwKG8pP2k6KHJbYV09dC5tdWwoaSxyW2FdKSx0Lm11bChpLG8pKSxzKSxyfWZ1bmN0aW9uIERNKHQsZSl7Y29uc3Qgcj1lIT09dm9pZCAwP2U6dC50b1N0cmluZygyKS5sZW5ndGgsbj1NYXRoLmNlaWwoci84KTtyZXR1cm57bkJpdExlbmd0aDpyLG5CeXRlTGVuZ3RoOm59fWZ1bmN0aW9uIEJNKHQsZSxyPSExLG49e30pe2lmKHQ8PWxuKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmaWVsZDogZXhwZWN0ZWQgT1JERVIgPiAwLCBnb3QgIit0KTtjb25zdHtuQml0TGVuZ3RoOnMsbkJ5dGVMZW5ndGg6aX09RE0odCxlKTtpZihpPjIwNDgpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZpZWxkOiBleHBlY3RlZCBPUkRFUiBvZiA8PSAyMDQ4IGJ5dGVzIik7bGV0IG87Y29uc3QgYT1PYmplY3QuZnJlZXplKHtPUkRFUjp0LGlzTEU6cixCSVRTOnMsQllURVM6aSxNQVNLOiQ2KHMpLFpFUk86bG4sT05FOkxyLGNyZWF0ZTpjPT5yaShjLHQpLGlzVmFsaWQ6Yz0+e2lmKHR5cGVvZiBjIT0iYmlnaW50Iil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZmllbGQgZWxlbWVudDogZXhwZWN0ZWQgYmlnaW50LCBnb3QgIit0eXBlb2YgYyk7cmV0dXJuIGxuPD1jJiZjPHR9LGlzMDpjPT5jPT09bG4saXNPZGQ6Yz0+KGMmTHIpPT09THIsbmVnOmM9PnJpKC1jLHQpLGVxbDooYyxsKT0+Yz09PWwsc3FyOmM9PnJpKGMqYyx0KSxhZGQ6KGMsbCk9PnJpKGMrbCx0KSxzdWI6KGMsbCk9PnJpKGMtbCx0KSxtdWw6KGMsbCk9PnJpKGMqbCx0KSxwb3c6KGMsbCk9PnVlZShhLGMsbCksZGl2OihjLGwpPT5yaShjKmx4KGwsdCksdCksc3FyTjpjPT5jKmMsYWRkTjooYyxsKT0+YytsLHN1Yk46KGMsbCk9PmMtbCxtdWxOOihjLGwpPT5jKmwsaW52OmM9Pmx4KGMsdCksc3FydDpuLnNxcnR8fChjPT4ob3x8KG89YWVlKHQpKSxvKGEsYykpKSxpbnZlcnRCYXRjaDpjPT5kZWUoYSxjKSxjbW92OihjLGwsZCk9PmQ/bDpjLHRvQnl0ZXM6Yz0+cj9PNihjLGkpOkNoKGMsaSksZnJvbUJ5dGVzOmM9PntpZihjLmxlbmd0aCE9PWkpdGhyb3cgbmV3IEVycm9yKCJGaWVsZC5mcm9tQnl0ZXM6IGV4cGVjdGVkICIraSsiIGJ5dGVzLCBnb3QgIitjLmxlbmd0aCk7cmV0dXJuIHI/UDYoYyk6b3UoYyl9fSk7cmV0dXJuIE9iamVjdC5mcmVlemUoYSl9ZnVuY3Rpb24gTE0odCl7aWYodHlwZW9mIHQhPSJiaWdpbnQiKXRocm93IG5ldyBFcnJvcigiZmllbGQgb3JkZXIgbXVzdCBiZSBiaWdpbnQiKTtjb25zdCBlPXQudG9TdHJpbmcoMikubGVuZ3RoO3JldHVybiBNYXRoLmNlaWwoZS84KX1mdW5jdGlvbiBVTSh0KXtjb25zdCBlPUxNKHQpO3JldHVybiBlK01hdGguY2VpbChlLzIpfWZ1bmN0aW9uIGhlZSh0LGUscj0hMSl7Y29uc3Qgbj10Lmxlbmd0aCxzPUxNKGUpLGk9VU0oZSk7aWYobjwxNnx8bjxpfHxuPjEwMjQpdGhyb3cgbmV3IEVycm9yKCJleHBlY3RlZCAiK2krIi0xMDI0IGJ5dGVzIG9mIGlucHV0LCBnb3QgIituKTtjb25zdCBvPXI/UDYodCk6b3UodCksYT1yaShvLGUtTHIpK0xyO3JldHVybiByP082KGEscyk6Q2goYSxzKX0vKiEgbm9ibGUtY3VydmVzIC0gTUlUIExpY2Vuc2UgKGMpIDIwMjIgUGF1bCBNaWxsZXIgKHBhdWxtaWxsci5jb20pICovY29uc3QgJDk9QmlnSW50KDApLHhnPUJpZ0ludCgxKTtmdW5jdGlvbiBCMih0LGUpe2NvbnN0IHI9ZS5uZWdhdGUoKTtyZXR1cm4gdD9yOmV9ZnVuY3Rpb24gRk0odCxlKXtpZighTnVtYmVyLmlzU2FmZUludGVnZXIodCl8fHQ8PTB8fHQ+ZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgd2luZG93IHNpemUsIGV4cGVjdGVkIFsxLi4iK2UrIl0sIGdvdCBXPSIrdCl9ZnVuY3Rpb24gTDIodCxlKXtGTSh0LGUpO2NvbnN0IHI9TWF0aC5jZWlsKGUvdCkrMSxuPTIqKih0LTEpO3JldHVybnt3aW5kb3dzOnIsd2luZG93U2l6ZTpufX1mdW5jdGlvbiBwZWUodCxlKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoImFycmF5IGV4cGVjdGVkIik7dC5mb3JFYWNoKChyLG4pPT57aWYoIShyIGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50IGF0IGluZGV4ICIrbil9KX1mdW5jdGlvbiBmZWUodCxlKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoImFycmF5IG9mIHNjYWxhcnMgZXhwZWN0ZWQiKTt0LmZvckVhY2goKHIsbik9PntpZighZS5pc1ZhbGlkKHIpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzY2FsYXIgYXQgaW5kZXggIituKX0pfWNvbnN0IFUyPW5ldyBXZWFrTWFwLGpNPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEYyKHQpe3JldHVybiBqTS5nZXQodCl8fDF9ZnVuY3Rpb24gbWVlKHQsZSl7cmV0dXJue2NvbnN0VGltZU5lZ2F0ZTpCMixoYXNQcmVjb21wdXRlcyhyKXtyZXR1cm4gRjIocikhPT0xfSx1bnNhZmVMYWRkZXIocixuLHM9dC5aRVJPKXtsZXQgaT1yO2Zvcig7bj4kOTspbiZ4ZyYmKHM9cy5hZGQoaSkpLGk9aS5kb3VibGUoKSxuPj49eGc7cmV0dXJuIHN9LHByZWNvbXB1dGVXaW5kb3cocixuKXtjb25zdHt3aW5kb3dzOnMsd2luZG93U2l6ZTppfT1MMihuLGUpLG89W107bGV0IGE9cixjPWE7Zm9yKGxldCBsPTA7bDxzO2wrKyl7Yz1hLG8ucHVzaChjKTtmb3IobGV0IGQ9MTtkPGk7ZCsrKWM9Yy5hZGQoYSksby5wdXNoKGMpO2E9Yy5kb3VibGUoKX1yZXR1cm4gb30sd05BRihyLG4scyl7Y29uc3R7d2luZG93czppLHdpbmRvd1NpemU6b309TDIocixlKTtsZXQgYT10LlpFUk8sYz10LkJBU0U7Y29uc3QgbD1CaWdJbnQoMioqci0xKSxkPTIqKnIsdT1CaWdJbnQocik7Zm9yKGxldCBoPTA7aDxpO2grKyl7Y29uc3QgcD1oKm87bGV0IGY9TnVtYmVyKHMmbCk7cz4+PXUsZj5vJiYoZi09ZCxzKz14Zyk7Y29uc3QgbT1wLHc9cCtNYXRoLmFicyhmKS0xLGc9aCUyIT09MCx2PWY8MDtmPT09MD9jPWMuYWRkKEIyKGcsblttXSkpOmE9YS5hZGQoQjIodixuW3ddKSl9cmV0dXJue3A6YSxmOmN9fSx3TkFGVW5zYWZlKHIsbixzLGk9dC5aRVJPKXtjb25zdHt3aW5kb3dzOm8sd2luZG93U2l6ZTphfT1MMihyLGUpLGM9QmlnSW50KDIqKnItMSksbD0yKipyLGQ9QmlnSW50KHIpO2ZvcihsZXQgdT0wO3U8bzt1Kyspe2NvbnN0IGg9dSphO2lmKHM9PT0kOSlicmVhaztsZXQgcD1OdW1iZXIocyZjKTtpZihzPj49ZCxwPmEmJihwLT1sLHMrPXhnKSxwPT09MCljb250aW51ZTtsZXQgZj1uW2grTWF0aC5hYnMocCktMV07cDwwJiYoZj1mLm5lZ2F0ZSgpKSxpPWkuYWRkKGYpfXJldHVybiBpfSxnZXRQcmVjb21wdXRlcyhyLG4scyl7bGV0IGk9VTIuZ2V0KG4pO3JldHVybiBpfHwoaT10aGlzLnByZWNvbXB1dGVXaW5kb3cobixyKSxyIT09MSYmVTIuc2V0KG4scyhpKSkpLGl9LHdOQUZDYWNoZWQocixuLHMpe2NvbnN0IGk9RjIocik7cmV0dXJuIHRoaXMud05BRihpLHRoaXMuZ2V0UHJlY29tcHV0ZXMoaSxyLHMpLG4pfSx3TkFGQ2FjaGVkVW5zYWZlKHIsbixzLGkpe2NvbnN0IG89RjIocik7cmV0dXJuIG89PT0xP3RoaXMudW5zYWZlTGFkZGVyKHIsbixpKTp0aGlzLndOQUZVbnNhZmUobyx0aGlzLmdldFByZWNvbXB1dGVzKG8scixzKSxuLGkpfSxzZXRXaW5kb3dTaXplKHIsbil7Rk0obixlKSxqTS5zZXQocixuKSxVMi5kZWxldGUocil9fX1mdW5jdGlvbiBnZWUodCxlLHIsbil7aWYocGVlKHIsdCksZmVlKG4sZSksci5sZW5ndGghPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImFycmF5cyBvZiBwb2ludHMgYW5kIHNjYWxhcnMgbXVzdCBoYXZlIGVxdWFsIGxlbmd0aCIpO2NvbnN0IHM9dC5aRVJPLGk9UE0oQmlnSW50KHIubGVuZ3RoKSksbz1pPjEyP2ktMzppPjQ/aS0yOmk/MjoxLGE9KDE8PG8pLTEsYz1uZXcgQXJyYXkoYSsxKS5maWxsKHMpLGw9TWF0aC5mbG9vcigoZS5CSVRTLTEpL28pKm87bGV0IGQ9cztmb3IobGV0IHU9bDt1Pj0wO3UtPW8pe2MuZmlsbChzKTtmb3IobGV0IHA9MDtwPG4ubGVuZ3RoO3ArKyl7Y29uc3QgZj1uW3BdLG09TnVtYmVyKGY+PkJpZ0ludCh1KSZCaWdJbnQoYSkpO2NbbV09Y1ttXS5hZGQocltwXSl9bGV0IGg9cztmb3IobGV0IHA9Yy5sZW5ndGgtMSxmPXM7cD4wO3AtLSlmPWYuYWRkKGNbcF0pLGg9aC5hZGQoZik7aWYoZD1kLmFkZChoKSx1IT09MClmb3IobGV0IHA9MDtwPG87cCsrKWQ9ZC5kb3VibGUoKX1yZXR1cm4gZH1mdW5jdGlvbiB6TSh0KXtyZXR1cm4gbGVlKHQuRnApLG0xKHQse246ImJpZ2ludCIsaDoiYmlnaW50IixHeDoiZmllbGQiLEd5OiJmaWVsZCJ9LHtuQml0TGVuZ3RoOiJpc1NhZmVJbnRlZ2VyIixuQnl0ZUxlbmd0aDoiaXNTYWZlSW50ZWdlciJ9KSxPYmplY3QuZnJlZXplKHsuLi5ETSh0Lm4sdC5uQml0TGVuZ3RoKSwuLi50LHA6dC5GcC5PUkRFUn0pfS8qISBub2JsZS1jdXJ2ZXMgLSBNSVQgTGljZW5zZSAoYykgMjAyMiBQYXVsIE1pbGxlciAocGF1bG1pbGxyLmNvbSkgKi9mdW5jdGlvbiBNOSh0KXt0Lmxvd1MhPT12b2lkIDAmJnloKCJsb3dTIix0Lmxvd1MpLHQucHJlaGFzaCE9PXZvaWQgMCYmeWgoInByZWhhc2giLHQucHJlaGFzaCl9ZnVuY3Rpb24gd2VlKHQpe2NvbnN0IGU9ek0odCk7bTEoZSx7YToiZmllbGQiLGI6ImZpZWxkIn0se2FsbG93ZWRQcml2YXRlS2V5TGVuZ3RoczoiYXJyYXkiLHdyYXBQcml2YXRlS2V5OiJib29sZWFuIixpc1RvcnNpb25GcmVlOiJmdW5jdGlvbiIsY2xlYXJDb2ZhY3RvcjoiZnVuY3Rpb24iLGFsbG93SW5maW5pdHlQb2ludDoiYm9vbGVhbiIsZnJvbUJ5dGVzOiJmdW5jdGlvbiIsdG9CeXRlczoiZnVuY3Rpb24ifSk7Y29uc3R7ZW5kbzpyLEZwOm4sYTpzfT1lO2lmKHIpe2lmKCFuLmVxbChzLG4uWkVSTykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGVuZG9tb3JwaGlzbSwgY2FuIG9ubHkgYmUgZGVmaW5lZCBmb3IgS29ibGl0eiBjdXJ2ZXMgdGhhdCBoYXZlIGE9MCIpO2lmKHR5cGVvZiByIT0ib2JqZWN0Inx8dHlwZW9mIHIuYmV0YSE9ImJpZ2ludCJ8fHR5cGVvZiByLnNwbGl0U2NhbGFyIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBlbmRvbW9ycGhpc20sIGV4cGVjdGVkIGJldGE6IGJpZ2ludCBhbmQgc3BsaXRTY2FsYXI6IGZ1bmN0aW9uIil9cmV0dXJuIE9iamVjdC5mcmVlemUoey4uLmV9KX1jb25zdHtieXRlc1RvTnVtYmVyQkU6YmVlLGhleFRvQnl0ZXM6eWVlfT1uZWU7Y2xhc3MgdmVlIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZT0iIil7c3VwZXIoZSl9fWNvbnN0IHRhPXtFcnI6dmVlLF90bHY6e2VuY29kZToodCxlKT0+e2NvbnN0e0VycjpyfT10YTtpZih0PDB8fHQ+MjU2KXRocm93IG5ldyByKCJ0bHYuZW5jb2RlOiB3cm9uZyB0YWciKTtpZihlLmxlbmd0aCYxKXRocm93IG5ldyByKCJ0bHYuZW5jb2RlOiB1bnBhZGRlZCBkYXRhIik7Y29uc3Qgbj1lLmxlbmd0aC8yLHM9ZWgobik7aWYocy5sZW5ndGgvMiYxMjgpdGhyb3cgbmV3IHIoInRsdi5lbmNvZGU6IGxvbmcgZm9ybSBsZW5ndGggdG9vIGJpZyIpO2NvbnN0IGk9bj4xMjc/ZWgocy5sZW5ndGgvMnwxMjgpOiIiO3JldHVybiBlaCh0KStpK3MrZX0sZGVjb2RlKHQsZSl7Y29uc3R7RXJyOnJ9PXRhO2xldCBuPTA7aWYodDwwfHx0PjI1Nil0aHJvdyBuZXcgcigidGx2LmVuY29kZTogd3JvbmcgdGFnIik7aWYoZS5sZW5ndGg8Mnx8ZVtuKytdIT09dCl0aHJvdyBuZXcgcigidGx2LmRlY29kZTogd3JvbmcgdGx2Iik7Y29uc3Qgcz1lW24rK10saT0hIShzJjEyOCk7bGV0IG89MDtpZighaSlvPXM7ZWxzZXtjb25zdCBjPXMmMTI3O2lmKCFjKXRocm93IG5ldyByKCJ0bHYuZGVjb2RlKGxvbmcpOiBpbmRlZmluaXRlIGxlbmd0aCBub3Qgc3VwcG9ydGVkIik7aWYoYz40KXRocm93IG5ldyByKCJ0bHYuZGVjb2RlKGxvbmcpOiBieXRlIGxlbmd0aCBpcyB0b28gYmlnIik7Y29uc3QgbD1lLnN1YmFycmF5KG4sbitjKTtpZihsLmxlbmd0aCE9PWMpdGhyb3cgbmV3IHIoInRsdi5kZWNvZGU6IGxlbmd0aCBieXRlcyBub3QgY29tcGxldGUiKTtpZihsWzBdPT09MCl0aHJvdyBuZXcgcigidGx2LmRlY29kZShsb25nKTogemVybyBsZWZ0bW9zdCBieXRlIik7Zm9yKGNvbnN0IGQgb2YgbClvPW88PDh8ZDtpZihuKz1jLG88MTI4KXRocm93IG5ldyByKCJ0bHYuZGVjb2RlKGxvbmcpOiBub3QgbWluaW1hbCBlbmNvZGluZyIpfWNvbnN0IGE9ZS5zdWJhcnJheShuLG4rbyk7aWYoYS5sZW5ndGghPT1vKXRocm93IG5ldyByKCJ0bHYuZGVjb2RlOiB3cm9uZyB2YWx1ZSBsZW5ndGgiKTtyZXR1cm57djphLGw6ZS5zdWJhcnJheShuK28pfX19LF9pbnQ6e2VuY29kZSh0KXtjb25zdHtFcnI6ZX09dGE7aWYodDxzYSl0aHJvdyBuZXcgZSgiaW50ZWdlcjogbmVnYXRpdmUgaW50ZWdlcnMgYXJlIG5vdCBhbGxvd2VkIik7bGV0IHI9ZWgodCk7aWYoTnVtYmVyLnBhcnNlSW50KHJbMF0sMTYpJjgmJihyPSIwMCIrciksci5sZW5ndGgmMSl0aHJvdyBuZXcgZSgidW5leHBlY3RlZCBERVIgcGFyc2luZyBhc3NlcnRpb246IHVucGFkZGVkIGhleCIpO3JldHVybiByfSxkZWNvZGUodCl7Y29uc3R7RXJyOmV9PXRhO2lmKHRbMF0mMTI4KXRocm93IG5ldyBlKCJpbnZhbGlkIHNpZ25hdHVyZSBpbnRlZ2VyOiBuZWdhdGl2ZSIpO2lmKHRbMF09PT0wJiYhKHRbMV0mMTI4KSl0aHJvdyBuZXcgZSgiaW52YWxpZCBzaWduYXR1cmUgaW50ZWdlcjogdW5uZWNlc3NhcnkgbGVhZGluZyB6ZXJvIik7cmV0dXJuIGJlZSh0KX19LHRvU2lnKHQpe2NvbnN0e0VycjplLF9pbnQ6cixfdGx2Om59PXRhLHM9dHlwZW9mIHQ9PSJzdHJpbmciP3llZSh0KTp0O2YxKHMpO2NvbnN0e3Y6aSxsOm99PW4uZGVjb2RlKDQ4LHMpO2lmKG8ubGVuZ3RoKXRocm93IG5ldyBlKCJpbnZhbGlkIHNpZ25hdHVyZTogbGVmdCBieXRlcyBhZnRlciBwYXJzaW5nIik7Y29uc3R7djphLGw6Y309bi5kZWNvZGUoMixpKSx7djpsLGw6ZH09bi5kZWNvZGUoMixjKTtpZihkLmxlbmd0aCl0aHJvdyBuZXcgZSgiaW52YWxpZCBzaWduYXR1cmU6IGxlZnQgYnl0ZXMgYWZ0ZXIgcGFyc2luZyIpO3JldHVybntyOnIuZGVjb2RlKGEpLHM6ci5kZWNvZGUobCl9fSxoZXhGcm9tU2lnKHQpe2NvbnN0e190bHY6ZSxfaW50OnJ9PXRhLG49ZS5lbmNvZGUoMixyLmVuY29kZSh0LnIpKSxzPWUuZW5jb2RlKDIsci5lbmNvZGUodC5zKSksaT1uK3M7cmV0dXJuIGUuZW5jb2RlKDQ4LGkpfX0sc2E9QmlnSW50KDApLHNuPUJpZ0ludCgxKTtCaWdJbnQoMik7Y29uc3QgRDk9QmlnSW50KDMpO0JpZ0ludCg0KTtmdW5jdGlvbiBFZWUodCl7Y29uc3QgZT13ZWUodCkse0ZwOnJ9PWUsbj1CTShlLm4sZS5uQml0TGVuZ3RoKSxzPWUudG9CeXRlc3x8KChtLHcsZyk9Pntjb25zdCB2PXcudG9BZmZpbmUoKTtyZXR1cm4gSDAoVWludDhBcnJheS5mcm9tKFs0XSksci50b0J5dGVzKHYueCksci50b0J5dGVzKHYueSkpfSksaT1lLmZyb21CeXRlc3x8KG09Pntjb25zdCB3PW0uc3ViYXJyYXkoMSksZz1yLmZyb21CeXRlcyh3LnN1YmFycmF5KDAsci5CWVRFUykpLHY9ci5mcm9tQnl0ZXMody5zdWJhcnJheShyLkJZVEVTLDIqci5CWVRFUykpO3JldHVybnt4OmcseTp2fX0pO2Z1bmN0aW9uIG8obSl7Y29uc3R7YTp3LGI6Z309ZSx2PXIuc3FyKG0pLEU9ci5tdWwodixtKTtyZXR1cm4gci5hZGQoci5hZGQoRSxyLm11bChtLHcpKSxnKX1pZighci5lcWwoci5zcXIoZS5HeSksbyhlLkd4KSkpdGhyb3cgbmV3IEVycm9yKCJiYWQgZ2VuZXJhdG9yIHBvaW50OiBlcXVhdGlvbiBsZWZ0ICE9IHJpZ2h0Iik7ZnVuY3Rpb24gYShtKXtyZXR1cm4gRHkobSxzbixlLm4pfWZ1bmN0aW9uIGMobSl7Y29uc3R7YWxsb3dlZFByaXZhdGVLZXlMZW5ndGhzOncsbkJ5dGVMZW5ndGg6Zyx3cmFwUHJpdmF0ZUtleTp2LG46RX09ZTtpZih3JiZ0eXBlb2YgbSE9ImJpZ2ludCIpe2lmKEV1KG0pJiYobT12aChtKSksdHlwZW9mIG0hPSJzdHJpbmcifHwhdy5pbmNsdWRlcyhtLmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHByaXZhdGUga2V5Iik7bT1tLnBhZFN0YXJ0KGcqMiwiMCIpfWxldCB4O3RyeXt4PXR5cGVvZiBtPT0iYmlnaW50Ij9tOm91KGtzKCJwcml2YXRlIGtleSIsbSxnKSl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHByaXZhdGUga2V5LCBleHBlY3RlZCBoZXggb3IgIitnKyIgYnl0ZXMsIGdvdCAiK3R5cGVvZiBtKX1yZXR1cm4gdiYmKHg9cmkoeCxFKSksYXUoInByaXZhdGUga2V5Iix4LHNuLEUpLHh9ZnVuY3Rpb24gbChtKXtpZighKG0gaW5zdGFuY2VvZiBoKSl0aHJvdyBuZXcgRXJyb3IoIlByb2plY3RpdmVQb2ludCBleHBlY3RlZCIpfWNvbnN0IGQ9YXgoKG0sdyk9Pntjb25zdHtweDpnLHB5OnYscHo6RX09bTtpZihyLmVxbChFLHIuT05FKSlyZXR1cm57eDpnLHk6dn07Y29uc3QgeD1tLmlzMCgpO3c9PW51bGwmJih3PXg/ci5PTkU6ci5pbnYoRSkpO2NvbnN0IF89ci5tdWwoZyx3KSxrPXIubXVsKHYsdyksQT1yLm11bChFLHcpO2lmKHgpcmV0dXJue3g6ci5aRVJPLHk6ci5aRVJPfTtpZighci5lcWwoQSxyLk9ORSkpdGhyb3cgbmV3IEVycm9yKCJpbnZaIHdhcyBpbnZhbGlkIik7cmV0dXJue3g6Xyx5Omt9fSksdT1heChtPT57aWYobS5pczAoKSl7aWYoZS5hbGxvd0luZmluaXR5UG9pbnQmJiFyLmlzMChtLnB5KSlyZXR1cm47dGhyb3cgbmV3IEVycm9yKCJiYWQgcG9pbnQ6IFpFUk8iKX1jb25zdHt4OncseTpnfT1tLnRvQWZmaW5lKCk7aWYoIXIuaXNWYWxpZCh3KXx8IXIuaXNWYWxpZChnKSl0aHJvdyBuZXcgRXJyb3IoImJhZCBwb2ludDogeCBvciB5IG5vdCBGRSIpO2NvbnN0IHY9ci5zcXIoZyksRT1vKHcpO2lmKCFyLmVxbCh2LEUpKXRocm93IG5ldyBFcnJvcigiYmFkIHBvaW50OiBlcXVhdGlvbiBsZWZ0ICE9IHJpZ2h0Iik7aWYoIW0uaXNUb3JzaW9uRnJlZSgpKXRocm93IG5ldyBFcnJvcigiYmFkIHBvaW50OiBub3QgaW4gcHJpbWUtb3JkZXIgc3ViZ3JvdXAiKTtyZXR1cm4hMH0pO2NsYXNzIGh7Y29uc3RydWN0b3IodyxnLHYpe2lmKHRoaXMucHg9dyx0aGlzLnB5PWcsdGhpcy5wej12LHc9PW51bGx8fCFyLmlzVmFsaWQodykpdGhyb3cgbmV3IEVycm9yKCJ4IHJlcXVpcmVkIik7aWYoZz09bnVsbHx8IXIuaXNWYWxpZChnKSl0aHJvdyBuZXcgRXJyb3IoInkgcmVxdWlyZWQiKTtpZih2PT1udWxsfHwhci5pc1ZhbGlkKHYpKXRocm93IG5ldyBFcnJvcigieiByZXF1aXJlZCIpO09iamVjdC5mcmVlemUodGhpcyl9c3RhdGljIGZyb21BZmZpbmUodyl7Y29uc3R7eDpnLHk6dn09d3x8e307aWYoIXd8fCFyLmlzVmFsaWQoZyl8fCFyLmlzVmFsaWQodikpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGFmZmluZSBwb2ludCIpO2lmKHcgaW5zdGFuY2VvZiBoKXRocm93IG5ldyBFcnJvcigicHJvamVjdGl2ZSBwb2ludCBub3QgYWxsb3dlZCIpO2NvbnN0IEU9eD0+ci5lcWwoeCxyLlpFUk8pO3JldHVybiBFKGcpJiZFKHYpP2guWkVSTzpuZXcgaChnLHYsci5PTkUpfWdldCB4KCl7cmV0dXJuIHRoaXMudG9BZmZpbmUoKS54fWdldCB5KCl7cmV0dXJuIHRoaXMudG9BZmZpbmUoKS55fXN0YXRpYyBub3JtYWxpemVaKHcpe2NvbnN0IGc9ci5pbnZlcnRCYXRjaCh3Lm1hcCh2PT52LnB6KSk7cmV0dXJuIHcubWFwKCh2LEUpPT52LnRvQWZmaW5lKGdbRV0pKS5tYXAoaC5mcm9tQWZmaW5lKX1zdGF0aWMgZnJvbUhleCh3KXtjb25zdCBnPWguZnJvbUFmZmluZShpKGtzKCJwb2ludEhleCIsdykpKTtyZXR1cm4gZy5hc3NlcnRWYWxpZGl0eSgpLGd9c3RhdGljIGZyb21Qcml2YXRlS2V5KHcpe3JldHVybiBoLkJBU0UubXVsdGlwbHkoYyh3KSl9c3RhdGljIG1zbSh3LGcpe3JldHVybiBnZWUoaCxuLHcsZyl9X3NldFdpbmRvd1NpemUodyl7Zi5zZXRXaW5kb3dTaXplKHRoaXMsdyl9YXNzZXJ0VmFsaWRpdHkoKXt1KHRoaXMpfWhhc0V2ZW5ZKCl7Y29uc3R7eTp3fT10aGlzLnRvQWZmaW5lKCk7aWYoci5pc09kZClyZXR1cm4hci5pc09kZCh3KTt0aHJvdyBuZXcgRXJyb3IoIkZpZWxkIGRvZXNuJ3Qgc3VwcG9ydCBpc09kZCIpfWVxdWFscyh3KXtsKHcpO2NvbnN0e3B4OmcscHk6dixwejpFfT10aGlzLHtweDp4LHB5Ol8scHo6a309dyxBPXIuZXFsKHIubXVsKGcsayksci5tdWwoeCxFKSksTT1yLmVxbChyLm11bCh2LGspLHIubXVsKF8sRSkpO3JldHVybiBBJiZNfW5lZ2F0ZSgpe3JldHVybiBuZXcgaCh0aGlzLnB4LHIubmVnKHRoaXMucHkpLHRoaXMucHopfWRvdWJsZSgpe2NvbnN0e2E6dyxiOmd9PWUsdj1yLm11bChnLEQ5KSx7cHg6RSxweTp4LHB6Ol99PXRoaXM7bGV0IGs9ci5aRVJPLEE9ci5aRVJPLE09ci5aRVJPLFA9ci5tdWwoRSxFKSxqPXIubXVsKHgseCksVT1yLm11bChfLF8pLFY9ci5tdWwoRSx4KTtyZXR1cm4gVj1yLmFkZChWLFYpLE09ci5tdWwoRSxfKSxNPXIuYWRkKE0sTSksaz1yLm11bCh3LE0pLEE9ci5tdWwodixVKSxBPXIuYWRkKGssQSksaz1yLnN1YihqLEEpLEE9ci5hZGQoaixBKSxBPXIubXVsKGssQSksaz1yLm11bChWLGspLE09ci5tdWwodixNKSxVPXIubXVsKHcsVSksVj1yLnN1YihQLFUpLFY9ci5tdWwodyxWKSxWPXIuYWRkKFYsTSksTT1yLmFkZChQLFApLFA9ci5hZGQoTSxQKSxQPXIuYWRkKFAsVSksUD1yLm11bChQLFYpLEE9ci5hZGQoQSxQKSxVPXIubXVsKHgsXyksVT1yLmFkZChVLFUpLFA9ci5tdWwoVSxWKSxrPXIuc3ViKGssUCksTT1yLm11bChVLGopLE09ci5hZGQoTSxNKSxNPXIuYWRkKE0sTSksbmV3IGgoayxBLE0pfWFkZCh3KXtsKHcpO2NvbnN0e3B4OmcscHk6dixwejpFfT10aGlzLHtweDp4LHB5Ol8scHo6a309dztsZXQgQT1yLlpFUk8sTT1yLlpFUk8sUD1yLlpFUk87Y29uc3Qgaj1lLmEsVT1yLm11bChlLmIsRDkpO2xldCBWPXIubXVsKGcseCksRj1yLm11bCh2LF8pLGI9ci5tdWwoRSxrKSx5PXIuYWRkKGcsdiksQz1yLmFkZCh4LF8pO3k9ci5tdWwoeSxDKSxDPXIuYWRkKFYsRikseT1yLnN1Yih5LEMpLEM9ci5hZGQoZyxFKTtsZXQgVD1yLmFkZCh4LGspO3JldHVybiBDPXIubXVsKEMsVCksVD1yLmFkZChWLGIpLEM9ci5zdWIoQyxUKSxUPXIuYWRkKHYsRSksQT1yLmFkZChfLGspLFQ9ci5tdWwoVCxBKSxBPXIuYWRkKEYsYiksVD1yLnN1YihULEEpLFA9ci5tdWwoaixDKSxBPXIubXVsKFUsYiksUD1yLmFkZChBLFApLEE9ci5zdWIoRixQKSxQPXIuYWRkKEYsUCksTT1yLm11bChBLFApLEY9ci5hZGQoVixWKSxGPXIuYWRkKEYsViksYj1yLm11bChqLGIpLEM9ci5tdWwoVSxDKSxGPXIuYWRkKEYsYiksYj1yLnN1YihWLGIpLGI9ci5tdWwoaixiKSxDPXIuYWRkKEMsYiksVj1yLm11bChGLEMpLE09ci5hZGQoTSxWKSxWPXIubXVsKFQsQyksQT1yLm11bCh5LEEpLEE9ci5zdWIoQSxWKSxWPXIubXVsKHksRiksUD1yLm11bChULFApLFA9ci5hZGQoUCxWKSxuZXcgaChBLE0sUCl9c3VidHJhY3Qodyl7cmV0dXJuIHRoaXMuYWRkKHcubmVnYXRlKCkpfWlzMCgpe3JldHVybiB0aGlzLmVxdWFscyhoLlpFUk8pfXdOQUYodyl7cmV0dXJuIGYud05BRkNhY2hlZCh0aGlzLHcsaC5ub3JtYWxpemVaKX1tdWx0aXBseVVuc2FmZSh3KXtjb25zdHtlbmRvOmcsbjp2fT1lO2F1KCJzY2FsYXIiLHcsc2Esdik7Y29uc3QgRT1oLlpFUk87aWYodz09PXNhKXJldHVybiBFO2lmKHRoaXMuaXMwKCl8fHc9PT1zbilyZXR1cm4gdGhpcztpZighZ3x8Zi5oYXNQcmVjb21wdXRlcyh0aGlzKSlyZXR1cm4gZi53TkFGQ2FjaGVkVW5zYWZlKHRoaXMsdyxoLm5vcm1hbGl6ZVopO2xldHtrMW5lZzp4LGsxOl8sazJuZWc6ayxrMjpBfT1nLnNwbGl0U2NhbGFyKHcpLE09RSxQPUUsaj10aGlzO2Zvcig7Xz5zYXx8QT5zYTspXyZzbiYmKE09TS5hZGQoaikpLEEmc24mJihQPVAuYWRkKGopKSxqPWouZG91YmxlKCksXz4+PXNuLEE+Pj1zbjtyZXR1cm4geCYmKE09TS5uZWdhdGUoKSksayYmKFA9UC5uZWdhdGUoKSksUD1uZXcgaChyLm11bChQLnB4LGcuYmV0YSksUC5weSxQLnB6KSxNLmFkZChQKX1tdWx0aXBseSh3KXtjb25zdHtlbmRvOmcsbjp2fT1lO2F1KCJzY2FsYXIiLHcsc24sdik7bGV0IEUseDtpZihnKXtjb25zdHtrMW5lZzpfLGsxOmssazJuZWc6QSxrMjpNfT1nLnNwbGl0U2NhbGFyKHcpO2xldHtwOlAsZjpqfT10aGlzLndOQUYoaykse3A6VSxmOlZ9PXRoaXMud05BRihNKTtQPWYuY29uc3RUaW1lTmVnYXRlKF8sUCksVT1mLmNvbnN0VGltZU5lZ2F0ZShBLFUpLFU9bmV3IGgoci5tdWwoVS5weCxnLmJldGEpLFUucHksVS5weiksRT1QLmFkZChVKSx4PWouYWRkKFYpfWVsc2V7Y29uc3R7cDpfLGY6a309dGhpcy53TkFGKHcpO0U9Xyx4PWt9cmV0dXJuIGgubm9ybWFsaXplWihbRSx4XSlbMF19bXVsdGlwbHlBbmRBZGRVbnNhZmUodyxnLHYpe2NvbnN0IEU9aC5CQVNFLHg9KGssQSk9PkE9PT1zYXx8QT09PXNufHwhay5lcXVhbHMoRSk/ay5tdWx0aXBseVVuc2FmZShBKTprLm11bHRpcGx5KEEpLF89eCh0aGlzLGcpLmFkZCh4KHcsdikpO3JldHVybiBfLmlzMCgpP3ZvaWQgMDpffXRvQWZmaW5lKHcpe3JldHVybiBkKHRoaXMsdyl9aXNUb3JzaW9uRnJlZSgpe2NvbnN0e2g6dyxpc1RvcnNpb25GcmVlOmd9PWU7aWYodz09PXNuKXJldHVybiEwO2lmKGcpcmV0dXJuIGcoaCx0aGlzKTt0aHJvdyBuZXcgRXJyb3IoImlzVG9yc2lvbkZyZWUoKSBoYXMgbm90IGJlZW4gZGVjbGFyZWQgZm9yIHRoZSBlbGxpcHRpYyBjdXJ2ZSIpfWNsZWFyQ29mYWN0b3IoKXtjb25zdHtoOncsY2xlYXJDb2ZhY3RvcjpnfT1lO3JldHVybiB3PT09c24/dGhpczpnP2coaCx0aGlzKTp0aGlzLm11bHRpcGx5VW5zYWZlKGUuaCl9dG9SYXdCeXRlcyh3PSEwKXtyZXR1cm4geWgoImlzQ29tcHJlc3NlZCIsdyksdGhpcy5hc3NlcnRWYWxpZGl0eSgpLHMoaCx0aGlzLHcpfXRvSGV4KHc9ITApe3JldHVybiB5aCgiaXNDb21wcmVzc2VkIix3KSx2aCh0aGlzLnRvUmF3Qnl0ZXModykpfX1oLkJBU0U9bmV3IGgoZS5HeCxlLkd5LHIuT05FKSxoLlpFUk89bmV3IGgoci5aRVJPLHIuT05FLHIuWkVSTyk7Y29uc3QgcD1lLm5CaXRMZW5ndGgsZj1tZWUoaCxlLmVuZG8/TWF0aC5jZWlsKHAvMik6cCk7cmV0dXJue0NVUlZFOmUsUHJvamVjdGl2ZVBvaW50Omgsbm9ybVByaXZhdGVLZXlUb1NjYWxhcjpjLHdlaWVyc3RyYXNzRXF1YXRpb246byxpc1dpdGhpbkN1cnZlT3JkZXI6YX19ZnVuY3Rpb24gQ2VlKHQpe2NvbnN0IGU9ek0odCk7cmV0dXJuIG0xKGUse2hhc2g6Imhhc2giLGhtYWM6ImZ1bmN0aW9uIixyYW5kb21CeXRlczoiZnVuY3Rpb24ifSx7Yml0czJpbnQ6ImZ1bmN0aW9uIixiaXRzMmludF9tb2ROOiJmdW5jdGlvbiIsbG93UzoiYm9vbGVhbiJ9KSxPYmplY3QuZnJlZXplKHtsb3dTOiEwLC4uLmV9KX1mdW5jdGlvbiB4ZWUodCl7Y29uc3QgZT1DZWUodCkse0ZwOnIsbn09ZSxzPXIuQllURVMrMSxpPTIqci5CWVRFUysxO2Z1bmN0aW9uIG8oYil7cmV0dXJuIHJpKGIsbil9ZnVuY3Rpb24gYShiKXtyZXR1cm4gbHgoYixuKX1jb25zdHtQcm9qZWN0aXZlUG9pbnQ6Yyxub3JtUHJpdmF0ZUtleVRvU2NhbGFyOmwsd2VpZXJzdHJhc3NFcXVhdGlvbjpkLGlzV2l0aGluQ3VydmVPcmRlcjp1fT1FZWUoey4uLmUsdG9CeXRlcyhiLHksQyl7Y29uc3QgVD15LnRvQWZmaW5lKCksTj1yLnRvQnl0ZXMoVC54KSxSPUgwO3JldHVybiB5aCgiaXNDb21wcmVzc2VkIixDKSxDP1IoVWludDhBcnJheS5mcm9tKFt5Lmhhc0V2ZW5ZKCk/MjozXSksTik6UihVaW50OEFycmF5LmZyb20oWzRdKSxOLHIudG9CeXRlcyhULnkpKX0sZnJvbUJ5dGVzKGIpe2NvbnN0IHk9Yi5sZW5ndGgsQz1iWzBdLFQ9Yi5zdWJhcnJheSgxKTtpZih5PT09cyYmKEM9PT0yfHxDPT09Mykpe2NvbnN0IE49b3UoVCk7aWYoIUR5KE4sc24sci5PUkRFUikpdGhyb3cgbmV3IEVycm9yKCJQb2ludCBpcyBub3Qgb24gY3VydmUiKTtjb25zdCBSPWQoTik7bGV0IEk7dHJ5e0k9ci5zcXJ0KFIpfWNhdGNoKHope2NvbnN0IFE9eiBpbnN0YW5jZW9mIEVycm9yPyI6ICIrei5tZXNzYWdlOiIiO3Rocm93IG5ldyBFcnJvcigiUG9pbnQgaXMgbm90IG9uIGN1cnZlIitRKX1jb25zdCBCPShJJnNuKT09PXNuO3JldHVybihDJjEpPT09MSE9PUImJihJPXIubmVnKEkpKSx7eDpOLHk6SX19ZWxzZSBpZih5PT09aSYmQz09PTQpe2NvbnN0IE49ci5mcm9tQnl0ZXMoVC5zdWJhcnJheSgwLHIuQllURVMpKSxSPXIuZnJvbUJ5dGVzKFQuc3ViYXJyYXkoci5CWVRFUywyKnIuQllURVMpKTtyZXR1cm57eDpOLHk6Un19ZWxzZXtjb25zdCBOPXMsUj1pO3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBQb2ludCwgZXhwZWN0ZWQgbGVuZ3RoIG9mICIrTisiLCBvciB1bmNvbXByZXNzZWQgIitSKyIsIGdvdCAiK3kpfX19KSxoPWI9PnZoKENoKGIsZS5uQnl0ZUxlbmd0aCkpO2Z1bmN0aW9uIHAoYil7Y29uc3QgeT1uPj5zbjtyZXR1cm4gYj55fWZ1bmN0aW9uIGYoYil7cmV0dXJuIHAoYik/bygtYik6Yn1jb25zdCBtPShiLHksQyk9Pm91KGIuc2xpY2UoeSxDKSk7Y2xhc3Mgd3tjb25zdHJ1Y3Rvcih5LEMsVCl7dGhpcy5yPXksdGhpcy5zPUMsdGhpcy5yZWNvdmVyeT1ULHRoaXMuYXNzZXJ0VmFsaWRpdHkoKX1zdGF0aWMgZnJvbUNvbXBhY3QoeSl7Y29uc3QgQz1lLm5CeXRlTGVuZ3RoO3JldHVybiB5PWtzKCJjb21wYWN0U2lnbmF0dXJlIix5LEMqMiksbmV3IHcobSh5LDAsQyksbSh5LEMsMipDKSl9c3RhdGljIGZyb21ERVIoeSl7Y29uc3R7cjpDLHM6VH09dGEudG9TaWcoa3MoIkRFUiIseSkpO3JldHVybiBuZXcgdyhDLFQpfWFzc2VydFZhbGlkaXR5KCl7YXUoInIiLHRoaXMucixzbixuKSxhdSgicyIsdGhpcy5zLHNuLG4pfWFkZFJlY292ZXJ5Qml0KHkpe3JldHVybiBuZXcgdyh0aGlzLnIsdGhpcy5zLHkpfXJlY292ZXJQdWJsaWNLZXkoeSl7Y29uc3R7cjpDLHM6VCxyZWNvdmVyeTpOfT10aGlzLFI9ayhrcygibXNnSGFzaCIseSkpO2lmKE49PW51bGx8fCFbMCwxLDIsM10uaW5jbHVkZXMoTikpdGhyb3cgbmV3IEVycm9yKCJyZWNvdmVyeSBpZCBpbnZhbGlkIik7Y29uc3QgST1OPT09Mnx8Tj09PTM/QytlLm46QztpZihJPj1yLk9SREVSKXRocm93IG5ldyBFcnJvcigicmVjb3ZlcnkgaWQgMiBvciAzIGludmFsaWQiKTtjb25zdCBCPShOJjEpPT09MD8iMDIiOiIwMyIsUz1jLmZyb21IZXgoQitoKEkpKSx6PWEoSSksUT1vKC1SKnopLHJlPW8oVCp6KSxKPWMuQkFTRS5tdWx0aXBseUFuZEFkZFVuc2FmZShTLFEscmUpO2lmKCFKKXRocm93IG5ldyBFcnJvcigicG9pbnQgYXQgaW5maW5pZnkiKTtyZXR1cm4gSi5hc3NlcnRWYWxpZGl0eSgpLEp9aGFzSGlnaFMoKXtyZXR1cm4gcCh0aGlzLnMpfW5vcm1hbGl6ZVMoKXtyZXR1cm4gdGhpcy5oYXNIaWdoUygpP25ldyB3KHRoaXMucixvKC10aGlzLnMpLHRoaXMucmVjb3ZlcnkpOnRoaXN9dG9ERVJSYXdCeXRlcygpe3JldHVybiBFaCh0aGlzLnRvREVSSGV4KCkpfXRvREVSSGV4KCl7cmV0dXJuIHRhLmhleEZyb21TaWcoe3I6dGhpcy5yLHM6dGhpcy5zfSl9dG9Db21wYWN0UmF3Qnl0ZXMoKXtyZXR1cm4gRWgodGhpcy50b0NvbXBhY3RIZXgoKSl9dG9Db21wYWN0SGV4KCl7cmV0dXJuIGgodGhpcy5yKStoKHRoaXMucyl9fWNvbnN0IGc9e2lzVmFsaWRQcml2YXRlS2V5KGIpe3RyeXtyZXR1cm4gbChiKSwhMH1jYXRjaHtyZXR1cm4hMX19LG5vcm1Qcml2YXRlS2V5VG9TY2FsYXI6bCxyYW5kb21Qcml2YXRlS2V5OigpPT57Y29uc3QgYj1VTShlLm4pO3JldHVybiBoZWUoZS5yYW5kb21CeXRlcyhiKSxlLm4pfSxwcmVjb21wdXRlKGI9OCx5PWMuQkFTRSl7cmV0dXJuIHkuX3NldFdpbmRvd1NpemUoYikseS5tdWx0aXBseShCaWdJbnQoMykpLHl9fTtmdW5jdGlvbiB2KGIseT0hMCl7cmV0dXJuIGMuZnJvbVByaXZhdGVLZXkoYikudG9SYXdCeXRlcyh5KX1mdW5jdGlvbiBFKGIpe2NvbnN0IHk9RXUoYiksQz10eXBlb2YgYj09InN0cmluZyIsVD0oeXx8QykmJmIubGVuZ3RoO3JldHVybiB5P1Q9PT1zfHxUPT09aTpDP1Q9PT0yKnN8fFQ9PT0yKmk6YiBpbnN0YW5jZW9mIGN9ZnVuY3Rpb24geChiLHksQz0hMCl7aWYoRShiKSl0aHJvdyBuZXcgRXJyb3IoImZpcnN0IGFyZyBtdXN0IGJlIHByaXZhdGUga2V5Iik7aWYoIUUoeSkpdGhyb3cgbmV3IEVycm9yKCJzZWNvbmQgYXJnIG11c3QgYmUgcHVibGljIGtleSIpO3JldHVybiBjLmZyb21IZXgoeSkubXVsdGlwbHkobChiKSkudG9SYXdCeXRlcyhDKX1jb25zdCBfPWUuYml0czJpbnR8fGZ1bmN0aW9uKGIpe2lmKGIubGVuZ3RoPjgxOTIpdGhyb3cgbmV3IEVycm9yKCJpbnB1dCBpcyB0b28gbGFyZ2UiKTtjb25zdCB5PW91KGIpLEM9Yi5sZW5ndGgqOC1lLm5CaXRMZW5ndGg7cmV0dXJuIEM+MD95Pj5CaWdJbnQoQyk6eX0saz1lLmJpdHMyaW50X21vZE58fGZ1bmN0aW9uKGIpe3JldHVybiBvKF8oYikpfSxBPSQ2KGUubkJpdExlbmd0aCk7ZnVuY3Rpb24gTShiKXtyZXR1cm4gYXUoIm51bSA8IDJeIitlLm5CaXRMZW5ndGgsYixzYSxBKSxDaChiLGUubkJ5dGVMZW5ndGgpfWZ1bmN0aW9uIFAoYix5LEM9ail7aWYoWyJyZWNvdmVyZWQiLCJjYW5vbmljYWwiXS5zb21lKHRlPT50ZSBpbiBDKSl0aHJvdyBuZXcgRXJyb3IoInNpZ24oKSBsZWdhY3kgb3B0aW9ucyBub3Qgc3VwcG9ydGVkIik7Y29uc3R7aGFzaDpULHJhbmRvbUJ5dGVzOk59PWU7bGV0e2xvd1M6UixwcmVoYXNoOkksZXh0cmFFbnRyb3B5OkJ9PUM7Uj09bnVsbCYmKFI9ITApLGI9a3MoIm1zZ0hhc2giLGIpLE05KEMpLEkmJihiPWtzKCJwcmVoYXNoZWQgbXNnSGFzaCIsVChiKSkpO2NvbnN0IFM9ayhiKSx6PWwoeSksUT1bTSh6KSxNKFMpXTtpZihCIT1udWxsJiZCIT09ITEpe2NvbnN0IHRlPUI9PT0hMD9OKHIuQllURVMpOkI7US5wdXNoKGtzKCJleHRyYUVudHJvcHkiLHRlKSl9Y29uc3QgcmU9SDAoLi4uUSksSj1TO2Z1bmN0aW9uIGVlKHRlKXtjb25zdCBoZT1fKHRlKTtpZighdShoZSkpcmV0dXJuO2NvbnN0IFNlPWEoaGUpLEs9Yy5CQVNFLm11bHRpcGx5KGhlKS50b0FmZmluZSgpLFo9byhLLngpO2lmKFo9PT1zYSlyZXR1cm47Y29uc3QgbWU9byhTZSpvKEorWip6KSk7aWYobWU9PT1zYSlyZXR1cm47bGV0IHZlPShLLng9PT1aPzA6Mil8TnVtYmVyKEsueSZzbiksRmU9bWU7cmV0dXJuIFImJnAobWUpJiYoRmU9ZihtZSksdmVePTEpLG5ldyB3KFosRmUsdmUpfXJldHVybntzZWVkOnJlLGsyc2lnOmVlfX1jb25zdCBqPXtsb3dTOmUubG93UyxwcmVoYXNoOiExfSxVPXtsb3dTOmUubG93UyxwcmVoYXNoOiExfTtmdW5jdGlvbiBWKGIseSxDPWope2NvbnN0e3NlZWQ6VCxrMnNpZzpOfT1QKGIseSxDKSxSPWU7cmV0dXJuIE9NKFIuaGFzaC5vdXRwdXRMZW4sUi5uQnl0ZUxlbmd0aCxSLmhtYWMpKFQsTil9Yy5CQVNFLl9zZXRXaW5kb3dTaXplKDgpO2Z1bmN0aW9uIEYoYix5LEMsVD1VKXtjb25zdCBOPWI7eT1rcygibXNnSGFzaCIseSksQz1rcygicHVibGljS2V5IixDKTtjb25zdHtsb3dTOlIscHJlaGFzaDpJLGZvcm1hdDpCfT1UO2lmKE05KFQpLCJzdHJpY3QiaW4gVCl0aHJvdyBuZXcgRXJyb3IoIm9wdGlvbnMuc3RyaWN0IHdhcyByZW5hbWVkIHRvIGxvd1MiKTtpZihCIT09dm9pZCAwJiZCIT09ImNvbXBhY3QiJiZCIT09ImRlciIpdGhyb3cgbmV3IEVycm9yKCJmb3JtYXQgbXVzdCBiZSBjb21wYWN0IG9yIGRlciIpO2NvbnN0IFM9dHlwZW9mIE49PSJzdHJpbmcifHxFdShOKSx6PSFTJiYhQiYmdHlwZW9mIE49PSJvYmplY3QiJiZOIT09bnVsbCYmdHlwZW9mIE4ucj09ImJpZ2ludCImJnR5cGVvZiBOLnM9PSJiaWdpbnQiO2lmKCFTJiYheil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2lnbmF0dXJlLCBleHBlY3RlZCBVaW50OEFycmF5LCBoZXggc3RyaW5nIG9yIFNpZ25hdHVyZSBpbnN0YW5jZSIpO2xldCBRLHJlO3RyeXtpZih6JiYoUT1uZXcgdyhOLnIsTi5zKSksUyl7dHJ5e0IhPT0iY29tcGFjdCImJihRPXcuZnJvbURFUihOKSl9Y2F0Y2godmUpe2lmKCEodmUgaW5zdGFuY2VvZiB0YS5FcnIpKXRocm93IHZlfSFRJiZCIT09ImRlciImJihRPXcuZnJvbUNvbXBhY3QoTikpfXJlPWMuZnJvbUhleChDKX1jYXRjaHtyZXR1cm4hMX1pZighUXx8UiYmUS5oYXNIaWdoUygpKXJldHVybiExO0kmJih5PWUuaGFzaCh5KSk7Y29uc3R7cjpKLHM6ZWV9PVEsdGU9ayh5KSxoZT1hKGVlKSxTZT1vKHRlKmhlKSxLPW8oSipoZSksWj1jLkJBU0UubXVsdGlwbHlBbmRBZGRVbnNhZmUocmUsU2UsSyk/LnRvQWZmaW5lKCk7cmV0dXJuIFo/byhaLngpPT09SjohMX1yZXR1cm57Q1VSVkU6ZSxnZXRQdWJsaWNLZXk6dixnZXRTaGFyZWRTZWNyZXQ6eCxzaWduOlYsdmVyaWZ5OkYsUHJvamVjdGl2ZVBvaW50OmMsU2lnbmF0dXJlOncsdXRpbHM6Z319LyohIG5vYmxlLWN1cnZlcyAtIE1JVCBMaWNlbnNlIChjKSAyMDIyIFBhdWwgTWlsbGVyIChwYXVsbWlsbHIuY29tKSAqL2Z1bmN0aW9uIF9lZSh0KXtyZXR1cm57aGFzaDp0LGhtYWM6KGUsLi4ucik9Pk1NKHQsZSxfUSguLi5yKSkscmFuZG9tQnl0ZXM6a1F9fWZ1bmN0aW9uIGtlZSh0LGUpe2NvbnN0IHI9bj0+eGVlKHsuLi50LC4uLl9lZShuKX0pO3JldHVybnsuLi5yKGUpLGNyZWF0ZTpyfX0vKiEgbm9ibGUtY3VydmVzIC0gTUlUIExpY2Vuc2UgKGMpIDIwMjIgUGF1bCBNaWxsZXIgKHBhdWxtaWxsci5jb20pICovY29uc3QgV009QmlnSW50KCIweGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlZmZmZmZjMmYiKSxCOT1CaWdJbnQoIjB4ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmViYWFlZGNlNmFmNDhhMDNiYmZkMjVlOGNkMDM2NDE0MSIpLFNlZT1CaWdJbnQoMSksdXg9QmlnSW50KDIpLEw5PSh0LGUpPT4odCtlL3V4KS9lO2Z1bmN0aW9uIEFlZSh0KXtjb25zdCBlPVdNLHI9QmlnSW50KDMpLG49QmlnSW50KDYpLHM9QmlnSW50KDExKSxpPUJpZ0ludCgyMiksbz1CaWdJbnQoMjMpLGE9QmlnSW50KDQ0KSxjPUJpZ0ludCg4OCksbD10KnQqdCVlLGQ9bCpsKnQlZSx1PUZpKGQscixlKSpkJWUsaD1GaSh1LHIsZSkqZCVlLHA9RmkoaCx1eCxlKSpsJWUsZj1GaShwLHMsZSkqcCVlLG09RmkoZixpLGUpKmYlZSx3PUZpKG0sYSxlKSptJWUsZz1GaSh3LGMsZSkqdyVlLHY9RmkoZyxhLGUpKm0lZSxFPUZpKHYscixlKSpkJWUseD1GaShFLG8sZSkqZiVlLF89RmkoeCxuLGUpKmwlZSxrPUZpKF8sdXgsZSk7aWYoIWR4LmVxbChkeC5zcXIoayksdCkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBzcXVhcmUgcm9vdCIpO3JldHVybiBrfWNvbnN0IGR4PUJNKFdNLHZvaWQgMCx2b2lkIDAse3NxcnQ6QWVlfSksSE09a2VlKHthOkJpZ0ludCgwKSxiOkJpZ0ludCg3KSxGcDpkeCxuOkI5LEd4OkJpZ0ludCgiNTUwNjYyNjMwMjIyNzczNDM2Njk1Nzg3MTg4OTUxNjg1MzQzMjYyNTA2MDM0NTM3Nzc1OTQxNzU1MDAxODczNjAzODkxMTY3MjkyNDAiKSxHeTpCaWdJbnQoIjMyNjcwNTEwMDIwNzU4ODE2OTc4MDgzMDg1MTMwNTA3MDQzMTg0NDcxMjczMzgwNjU5MjQzMjc1OTM4OTA0MzM1NzU3MzM3NDgyNDI0IiksaDpCaWdJbnQoMSksbG93UzohMCxlbmRvOntiZXRhOkJpZ0ludCgiMHg3YWU5NmEyYjY1N2MwNzEwNmU2NDQ3OWVhYzM0MzRlOTljZjA0OTc1MTJmNTg5OTVjMTM5NmMyODcxOTUwMWVlIiksc3BsaXRTY2FsYXI6dD0+e2NvbnN0IGU9Qjkscj1CaWdJbnQoIjB4MzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUiKSxuPS1TZWUqQmlnSW50KCIweGU0NDM3ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzIikscz1CaWdJbnQoIjB4MTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4IiksaT1yLG89QmlnSW50KCIweDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpLGE9TDkoaSp0LGUpLGM9TDkoLW4qdCxlKTtsZXQgbD1yaSh0LWEqci1jKnMsZSksZD1yaSgtYSpuLWMqaSxlKTtjb25zdCB1PWw+byxoPWQ+bztpZih1JiYobD1lLWwpLGgmJihkPWUtZCksbD5vfHxkPm8pdGhyb3cgbmV3IEVycm9yKCJzcGxpdFNjYWxhcjogRW5kb21vcnBoaXNtIGZhaWxlZCwgaz0iK3QpO3JldHVybntrMW5lZzp1LGsxOmwsazJuZWc6aCxrMjpkfX19fSxHUSk7QmlnSW50KDApO0hNLlByb2plY3RpdmVQb2ludDtjb25zdCBUZWU9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLHNlY3AyNTZrMTpITX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTtmdW5jdGlvbiBJZWUodCl7aWYodC5sZW5ndGg+PTI1NSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBbHBoYWJldCB0b28gbG9uZyIpO2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGw9MDtsPGUubGVuZ3RoO2wrKyllW2xdPTI1NTtmb3IobGV0IGw9MDtsPHQubGVuZ3RoO2wrKyl7Y29uc3QgZD10LmNoYXJBdChsKSx1PWQuY2hhckNvZGVBdCgwKTtpZihlW3VdIT09MjU1KXRocm93IG5ldyBUeXBlRXJyb3IoZCsiIGlzIGFtYmlndW91cyIpO2VbdV09bH1jb25zdCByPXQubGVuZ3RoLG49dC5jaGFyQXQoMCkscz1NYXRoLmxvZyhyKS9NYXRoLmxvZygyNTYpLGk9TWF0aC5sb2coMjU2KS9NYXRoLmxvZyhyKTtmdW5jdGlvbiBvKGwpe2lmKGwgaW5zdGFuY2VvZiBVaW50OEFycmF5fHwoQXJyYXlCdWZmZXIuaXNWaWV3KGwpP2w9bmV3IFVpbnQ4QXJyYXkobC5idWZmZXIsbC5ieXRlT2Zmc2V0LGwuYnl0ZUxlbmd0aCk6QXJyYXkuaXNBcnJheShsKSYmKGw9VWludDhBcnJheS5mcm9tKGwpKSksIShsIGluc3RhbmNlb2YgVWludDhBcnJheSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgVWludDhBcnJheSIpO2lmKGwubGVuZ3RoPT09MClyZXR1cm4iIjtsZXQgZD0wLHU9MCxoPTA7Y29uc3QgcD1sLmxlbmd0aDtmb3IoO2ghPT1wJiZsW2hdPT09MDspaCsrLGQrKztjb25zdCBmPShwLWgpKmkrMT4+PjAsbT1uZXcgVWludDhBcnJheShmKTtmb3IoO2ghPT1wOyl7bGV0IHY9bFtoXSxFPTA7Zm9yKGxldCB4PWYtMTsodiE9PTB8fEU8dSkmJnghPT0tMTt4LS0sRSsrKXYrPTI1NiptW3hdPj4+MCxtW3hdPXYlcj4+PjAsdj12L3I+Pj4wO2lmKHYhPT0wKXRocm93IG5ldyBFcnJvcigiTm9uLXplcm8gY2FycnkiKTt1PUUsaCsrfWxldCB3PWYtdTtmb3IoO3chPT1mJiZtW3ddPT09MDspdysrO2xldCBnPW4ucmVwZWF0KGQpO2Zvcig7dzxmOysrdylnKz10LmNoYXJBdChtW3ddKTtyZXR1cm4gZ31mdW5jdGlvbiBhKGwpe2lmKHR5cGVvZiBsIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBTdHJpbmciKTtpZihsLmxlbmd0aD09PTApcmV0dXJuIG5ldyBVaW50OEFycmF5O2xldCBkPTAsdT0wLGg9MDtmb3IoO2xbZF09PT1uOyl1KyssZCsrO2NvbnN0IHA9KGwubGVuZ3RoLWQpKnMrMT4+PjAsZj1uZXcgVWludDhBcnJheShwKTtmb3IoO2Q8bC5sZW5ndGg7KXtjb25zdCB2PWwuY2hhckNvZGVBdChkKTtpZih2PjI1NSlyZXR1cm47bGV0IEU9ZVt2XTtpZihFPT09MjU1KXJldHVybjtsZXQgeD0wO2ZvcihsZXQgXz1wLTE7KEUhPT0wfHx4PGgpJiZfIT09LTE7Xy0tLHgrKylFKz1yKmZbX10+Pj4wLGZbX109RSUyNTY+Pj4wLEU9RS8yNTY+Pj4wO2lmKEUhPT0wKXRocm93IG5ldyBFcnJvcigiTm9uLXplcm8gY2FycnkiKTtoPXgsZCsrfWxldCBtPXAtaDtmb3IoO20hPT1wJiZmW21dPT09MDspbSsrO2NvbnN0IHc9bmV3IFVpbnQ4QXJyYXkodSsocC1tKSk7bGV0IGc9dTtmb3IoO20hPT1wOyl3W2crK109ZlttKytdO3JldHVybiB3fWZ1bmN0aW9uIGMobCl7Y29uc3QgZD1hKGwpO2lmKGQpcmV0dXJuIGQ7dGhyb3cgbmV3IEVycm9yKCJOb24tYmFzZSIrcisiIGNoYXJhY3RlciIpfXJldHVybntlbmNvZGU6byxkZWNvZGVVbnNhZmU6YSxkZWNvZGU6Y319dmFyIFJlZT0iMTIzNDU2Nzg5QUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5eiI7Y29uc3QgcU09SWVlKFJlZSk7ZnVuY3Rpb24gVk0odD0wKXtyZXR1cm4gZ2xvYmFsVGhpcy5CdWZmZXIhPW51bGwmJmdsb2JhbFRoaXMuQnVmZmVyLmFsbG9jVW5zYWZlIT1udWxsP2dsb2JhbFRoaXMuQnVmZmVyLmFsbG9jVW5zYWZlKHQpOm5ldyBVaW50OEFycmF5KHQpfWZ1bmN0aW9uIGUwKHQsZSl7ZXx8KGU9dC5yZWR1Y2UoKHMsaSk9PnMraS5sZW5ndGgsMCkpO2NvbnN0IHI9Vk0oZSk7bGV0IG49MDtmb3IoY29uc3QgcyBvZiB0KXIuc2V0KHMsbiksbis9cy5sZW5ndGg7cmV0dXJuIHJ9ZnVuY3Rpb24gTmVlKHQsZSl7aWYodC5sZW5ndGg+PTI1NSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBbHBoYWJldCB0b28gbG9uZyIpO2Zvcih2YXIgcj1uZXcgVWludDhBcnJheSgyNTYpLG49MDtuPHIubGVuZ3RoO24rKylyW25dPTI1NTtmb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIGk9dC5jaGFyQXQocyksbz1pLmNoYXJDb2RlQXQoMCk7aWYocltvXSE9PTI1NSl0aHJvdyBuZXcgVHlwZUVycm9yKGkrIiBpcyBhbWJpZ3VvdXMiKTtyW29dPXN9dmFyIGE9dC5sZW5ndGgsYz10LmNoYXJBdCgwKSxsPU1hdGgubG9nKGEpL01hdGgubG9nKDI1NiksZD1NYXRoLmxvZygyNTYpL01hdGgubG9nKGEpO2Z1bmN0aW9uIHUoZil7aWYoZiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fChBcnJheUJ1ZmZlci5pc1ZpZXcoZik/Zj1uZXcgVWludDhBcnJheShmLmJ1ZmZlcixmLmJ5dGVPZmZzZXQsZi5ieXRlTGVuZ3RoKTpBcnJheS5pc0FycmF5KGYpJiYoZj1VaW50OEFycmF5LmZyb20oZikpKSwhKGYgaW5zdGFuY2VvZiBVaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBVaW50OEFycmF5Iik7aWYoZi5sZW5ndGg9PT0wKXJldHVybiIiO2Zvcih2YXIgbT0wLHc9MCxnPTAsdj1mLmxlbmd0aDtnIT09diYmZltnXT09PTA7KWcrKyxtKys7Zm9yKHZhciBFPSh2LWcpKmQrMT4+PjAseD1uZXcgVWludDhBcnJheShFKTtnIT09djspe2Zvcih2YXIgXz1mW2ddLGs9MCxBPUUtMTsoXyE9PTB8fGs8dykmJkEhPT0tMTtBLS0saysrKV8rPTI1Nip4W0FdPj4+MCx4W0FdPV8lYT4+PjAsXz1fL2E+Pj4wO2lmKF8hPT0wKXRocm93IG5ldyBFcnJvcigiTm9uLXplcm8gY2FycnkiKTt3PWssZysrfWZvcih2YXIgTT1FLXc7TSE9PUUmJnhbTV09PT0wOylNKys7Zm9yKHZhciBQPWMucmVwZWF0KG0pO008RTsrK00pUCs9dC5jaGFyQXQoeFtNXSk7cmV0dXJuIFB9ZnVuY3Rpb24gaChmKXtpZih0eXBlb2YgZiE9InN0cmluZyIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgU3RyaW5nIik7aWYoZi5sZW5ndGg9PT0wKXJldHVybiBuZXcgVWludDhBcnJheTt2YXIgbT0wO2lmKGZbbV0hPT0iICIpe2Zvcih2YXIgdz0wLGc9MDtmW21dPT09YzspdysrLG0rKztmb3IodmFyIHY9KGYubGVuZ3RoLW0pKmwrMT4+PjAsRT1uZXcgVWludDhBcnJheSh2KTtmW21dOyl7dmFyIHg9cltmLmNoYXJDb2RlQXQobSldO2lmKHg9PT0yNTUpcmV0dXJuO2Zvcih2YXIgXz0wLGs9di0xOyh4IT09MHx8XzxnKSYmayE9PS0xO2stLSxfKyspeCs9YSpFW2tdPj4+MCxFW2tdPXglMjU2Pj4+MCx4PXgvMjU2Pj4+MDtpZih4IT09MCl0aHJvdyBuZXcgRXJyb3IoIk5vbi16ZXJvIGNhcnJ5Iik7Zz1fLG0rK31pZihmW21dIT09IiAiKXtmb3IodmFyIEE9di1nO0EhPT12JiZFW0FdPT09MDspQSsrO2Zvcih2YXIgTT1uZXcgVWludDhBcnJheSh3Kyh2LUEpKSxQPXc7QSE9PXY7KU1bUCsrXT1FW0ErK107cmV0dXJuIE19fX1mdW5jdGlvbiBwKGYpe3ZhciBtPWgoZik7aWYobSlyZXR1cm4gbTt0aHJvdyBuZXcgRXJyb3IoYE5vbi0ke2V9IGNoYXJhY3RlcmApfXJldHVybntlbmNvZGU6dSxkZWNvZGVVbnNhZmU6aCxkZWNvZGU6cH19dmFyIFBlZT1OZWUsT2VlPVBlZTtjb25zdCAkZWU9dD0+e2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5JiZ0LmNvbnN0cnVjdG9yLm5hbWU9PT0iVWludDhBcnJheSIpcmV0dXJuIHQ7aWYodCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiBuZXcgVWludDhBcnJheSh0KTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcodCkpcmV0dXJuIG5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpO3Rocm93IG5ldyBFcnJvcigiVW5rbm93biB0eXBlLCBtdXN0IGJlIGJpbmFyeSB0eXBlIil9LE1lZT10PT5uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodCksRGVlPXQ9Pm5ldyBUZXh0RGVjb2RlcigpLmRlY29kZSh0KTtjbGFzcyBCZWV7Y29uc3RydWN0b3IoZSxyLG4pe3RoaXMubmFtZT1lLHRoaXMucHJlZml4PXIsdGhpcy5iYXNlRW5jb2RlPW59ZW5jb2RlKGUpe2lmKGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybmAke3RoaXMucHJlZml4fSR7dGhpcy5iYXNlRW5jb2RlKGUpfWA7dGhyb3cgRXJyb3IoIlVua25vd24gdHlwZSwgbXVzdCBiZSBiaW5hcnkgdHlwZSIpfX1jbGFzcyBMZWV7Y29uc3RydWN0b3IoZSxyLG4pe2lmKHRoaXMubmFtZT1lLHRoaXMucHJlZml4PXIsci5jb2RlUG9pbnRBdCgwKT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcHJlZml4IGNoYXJhY3RlciIpO3RoaXMucHJlZml4Q29kZVBvaW50PXIuY29kZVBvaW50QXQoMCksdGhpcy5iYXNlRGVjb2RlPW59ZGVjb2RlKGUpe2lmKHR5cGVvZiBlPT0ic3RyaW5nIil7aWYoZS5jb2RlUG9pbnRBdCgwKSE9PXRoaXMucHJlZml4Q29kZVBvaW50KXRocm93IEVycm9yKGBVbmFibGUgdG8gZGVjb2RlIG11bHRpYmFzZSBzdHJpbmcgJHtKU09OLnN0cmluZ2lmeShlKX0sICR7dGhpcy5uYW1lfSBkZWNvZGVyIG9ubHkgc3VwcG9ydHMgaW5wdXRzIHByZWZpeGVkIHdpdGggJHt0aGlzLnByZWZpeH1gKTtyZXR1cm4gdGhpcy5iYXNlRGVjb2RlKGUuc2xpY2UodGhpcy5wcmVmaXgubGVuZ3RoKSl9ZWxzZSB0aHJvdyBFcnJvcigiQ2FuIG9ubHkgbXVsdGliYXNlIGRlY29kZSBzdHJpbmdzIil9b3IoZSl7cmV0dXJuIEdNKHRoaXMsZSl9fWNsYXNzIFVlZXtjb25zdHJ1Y3RvcihlKXt0aGlzLmRlY29kZXJzPWV9b3IoZSl7cmV0dXJuIEdNKHRoaXMsZSl9ZGVjb2RlKGUpe2NvbnN0IHI9ZVswXSxuPXRoaXMuZGVjb2RlcnNbcl07aWYobilyZXR1cm4gbi5kZWNvZGUoZSk7dGhyb3cgUmFuZ2VFcnJvcihgVW5hYmxlIHRvIGRlY29kZSBtdWx0aWJhc2Ugc3RyaW5nICR7SlNPTi5zdHJpbmdpZnkoZSl9LCBvbmx5IGlucHV0cyBwcmVmaXhlZCB3aXRoICR7T2JqZWN0LmtleXModGhpcy5kZWNvZGVycyl9IGFyZSBzdXBwb3J0ZWRgKX19Y29uc3QgR009KHQsZSk9Pm5ldyBVZWUoey4uLnQuZGVjb2RlcnN8fHtbdC5wcmVmaXhdOnR9LC4uLmUuZGVjb2RlcnN8fHtbZS5wcmVmaXhdOmV9fSk7Y2xhc3MgRmVle2NvbnN0cnVjdG9yKGUscixuLHMpe3RoaXMubmFtZT1lLHRoaXMucHJlZml4PXIsdGhpcy5iYXNlRW5jb2RlPW4sdGhpcy5iYXNlRGVjb2RlPXMsdGhpcy5lbmNvZGVyPW5ldyBCZWUoZSxyLG4pLHRoaXMuZGVjb2Rlcj1uZXcgTGVlKGUscixzKX1lbmNvZGUoZSl7cmV0dXJuIHRoaXMuZW5jb2Rlci5lbmNvZGUoZSl9ZGVjb2RlKGUpe3JldHVybiB0aGlzLmRlY29kZXIuZGVjb2RlKGUpfX1jb25zdCBCeT0oe25hbWU6dCxwcmVmaXg6ZSxlbmNvZGU6cixkZWNvZGU6bn0pPT5uZXcgRmVlKHQsZSxyLG4pLGcxPSh7cHJlZml4OnQsbmFtZTplLGFscGhhYmV0OnJ9KT0+e2NvbnN0e2VuY29kZTpuLGRlY29kZTpzfT1PZWUocixlKTtyZXR1cm4gQnkoe3ByZWZpeDp0LG5hbWU6ZSxlbmNvZGU6bixkZWNvZGU6aT0+JGVlKHMoaSkpfSl9LGplZT0odCxlLHIsbik9Pntjb25zdCBzPXt9O2ZvcihsZXQgZD0wO2Q8ZS5sZW5ndGg7KytkKXNbZVtkXV09ZDtsZXQgaT10Lmxlbmd0aDtmb3IoO3RbaS0xXT09PSI9IjspLS1pO2NvbnN0IG89bmV3IFVpbnQ4QXJyYXkoaSpyLzh8MCk7bGV0IGE9MCxjPTAsbD0wO2ZvcihsZXQgZD0wO2Q8aTsrK2Qpe2NvbnN0IHU9c1t0W2RdXTtpZih1PT09dm9pZCAwKXRocm93IG5ldyBTeW50YXhFcnJvcihgTm9uLSR7bn0gY2hhcmFjdGVyYCk7Yz1jPDxyfHUsYSs9cixhPj04JiYoYS09OCxvW2wrK109MjU1JmM+PmEpfWlmKGE+PXJ8fDI1NSZjPDw4LWEpdGhyb3cgbmV3IFN5bnRheEVycm9yKCJVbmV4cGVjdGVkIGVuZCBvZiBkYXRhIik7cmV0dXJuIG99LHplZT0odCxlLHIpPT57Y29uc3Qgbj1lW2UubGVuZ3RoLTFdPT09Ij0iLHM9KDE8PHIpLTE7bGV0IGk9IiIsbz0wLGE9MDtmb3IobGV0IGM9MDtjPHQubGVuZ3RoOysrYylmb3IoYT1hPDw4fHRbY10sbys9ODtvPnI7KW8tPXIsaSs9ZVtzJmE+Pm9dO2lmKG8mJihpKz1lW3MmYTw8ci1vXSksbilmb3IoO2kubGVuZ3RoKnImNzspaSs9Ij0iO3JldHVybiBpfSx4bj0oe25hbWU6dCxwcmVmaXg6ZSxiaXRzUGVyQ2hhcjpyLGFscGhhYmV0Om59KT0+Qnkoe3ByZWZpeDplLG5hbWU6dCxlbmNvZGUocyl7cmV0dXJuIHplZShzLG4scil9LGRlY29kZShzKXtyZXR1cm4gamVlKHMsbixyLHQpfX0pLFdlZT1CeSh7cHJlZml4OiJcMCIsbmFtZToiaWRlbnRpdHkiLGVuY29kZTp0PT5EZWUodCksZGVjb2RlOnQ9Pk1lZSh0KX0pLEhlZT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsaWRlbnRpdHk6V2VlfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHFlZT14bih7cHJlZml4OiIwIixuYW1lOiJiYXNlMiIsYWxwaGFiZXQ6IjAxIixiaXRzUGVyQ2hhcjoxfSksVmVlPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxiYXNlMjpxZWV9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksR2VlPXhuKHtwcmVmaXg6IjciLG5hbWU6ImJhc2U4IixhbHBoYWJldDoiMDEyMzQ1NjciLGJpdHNQZXJDaGFyOjN9KSxLZWU9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGJhc2U4OkdlZX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxaZWU9ZzEoe3ByZWZpeDoiOSIsbmFtZToiYmFzZTEwIixhbHBoYWJldDoiMDEyMzQ1Njc4OSJ9KSxZZWU9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGJhc2UxMDpaZWV9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksSmVlPXhuKHtwcmVmaXg6ImYiLG5hbWU6ImJhc2UxNiIsYWxwaGFiZXQ6IjAxMjM0NTY3ODlhYmNkZWYiLGJpdHNQZXJDaGFyOjR9KSxYZWU9eG4oe3ByZWZpeDoiRiIsbmFtZToiYmFzZTE2dXBwZXIiLGFscGhhYmV0OiIwMTIzNDU2Nzg5QUJDREVGIixiaXRzUGVyQ2hhcjo0fSksUWVlPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxiYXNlMTY6SmVlLGJhc2UxNnVwcGVyOlhlZX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxldGU9eG4oe3ByZWZpeDoiYiIsbmFtZToiYmFzZTMyIixhbHBoYWJldDoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoyMzQ1NjciLGJpdHNQZXJDaGFyOjV9KSx0dGU9eG4oe3ByZWZpeDoiQiIsbmFtZToiYmFzZTMydXBwZXIiLGFscGhhYmV0OiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjIzNDU2NyIsYml0c1BlckNoYXI6NX0pLHJ0ZT14bih7cHJlZml4OiJjIixuYW1lOiJiYXNlMzJwYWQiLGFscGhhYmV0OiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejIzNDU2Nz0iLGJpdHNQZXJDaGFyOjV9KSxudGU9eG4oe3ByZWZpeDoiQyIsbmFtZToiYmFzZTMycGFkdXBwZXIiLGFscGhhYmV0OiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjIzNDU2Nz0iLGJpdHNQZXJDaGFyOjV9KSxpdGU9eG4oe3ByZWZpeDoidiIsbmFtZToiYmFzZTMyaGV4IixhbHBoYWJldDoiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXYiLGJpdHNQZXJDaGFyOjV9KSxzdGU9eG4oe3ByZWZpeDoiViIsbmFtZToiYmFzZTMyaGV4dXBwZXIiLGFscGhhYmV0OiIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVViIsYml0c1BlckNoYXI6NX0pLG90ZT14bih7cHJlZml4OiJ0IixuYW1lOiJiYXNlMzJoZXhwYWQiLGFscGhhYmV0OiIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dj0iLGJpdHNQZXJDaGFyOjV9KSxhdGU9eG4oe3ByZWZpeDoiVCIsbmFtZToiYmFzZTMyaGV4cGFkdXBwZXIiLGFscGhhYmV0OiIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVj0iLGJpdHNQZXJDaGFyOjV9KSxjdGU9eG4oe3ByZWZpeDoiaCIsbmFtZToiYmFzZTMyeiIsYWxwaGFiZXQ6InlibmRyZmc4ZWprbWNwcXhvdDF1d2lzemEzNDVoNzY5IixiaXRzUGVyQ2hhcjo1fSksbHRlPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxiYXNlMzI6ZXRlLGJhc2UzMmhleDppdGUsYmFzZTMyaGV4cGFkOm90ZSxiYXNlMzJoZXhwYWR1cHBlcjphdGUsYmFzZTMyaGV4dXBwZXI6c3RlLGJhc2UzMnBhZDpydGUsYmFzZTMycGFkdXBwZXI6bnRlLGJhc2UzMnVwcGVyOnR0ZSxiYXNlMzJ6OmN0ZX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSx1dGU9ZzEoe3ByZWZpeDoiayIsbmFtZToiYmFzZTM2IixhbHBoYWJldDoiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6In0pLGR0ZT1nMSh7cHJlZml4OiJLIixuYW1lOiJiYXNlMzZ1cHBlciIsYWxwaGFiZXQ6IjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiJ9KSxodGU9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGJhc2UzNjp1dGUsYmFzZTM2dXBwZXI6ZHRlfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHB0ZT1nMSh7bmFtZToiYmFzZTU4YnRjIixwcmVmaXg6InoiLGFscGhhYmV0OiIxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6In0pLGZ0ZT1nMSh7bmFtZToiYmFzZTU4ZmxpY2tyIixwcmVmaXg6IloiLGFscGhhYmV0OiIxMjM0NTY3ODlhYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6QUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaIn0pLG10ZT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmFzZTU4YnRjOnB0ZSxiYXNlNThmbGlja3I6ZnRlfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGd0ZT14bih7cHJlZml4OiJtIixuYW1lOiJiYXNlNjQiLGFscGhhYmV0OiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixiaXRzUGVyQ2hhcjo2fSksd3RlPXhuKHtwcmVmaXg6Ik0iLG5hbWU6ImJhc2U2NHBhZCIsYWxwaGFiZXQ6IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89IixiaXRzUGVyQ2hhcjo2fSksYnRlPXhuKHtwcmVmaXg6InUiLG5hbWU6ImJhc2U2NHVybCIsYWxwaGFiZXQ6IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV8iLGJpdHNQZXJDaGFyOjZ9KSx5dGU9eG4oe3ByZWZpeDoiVSIsbmFtZToiYmFzZTY0dXJscGFkIixhbHBoYWJldDoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXz0iLGJpdHNQZXJDaGFyOjZ9KSx2dGU9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGJhc2U2NDpndGUsYmFzZTY0cGFkOnd0ZSxiYXNlNjR1cmw6YnRlLGJhc2U2NHVybHBhZDp5dGV9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksS009QXJyYXkuZnJvbSgi8J+agPCfqpDimITwn5uw8J+MjPCfjJHwn4yS8J+Mk/CfjJTwn4yV8J+MlvCfjJfwn4yY8J+MjfCfjI/wn4yO8J+QieKYgPCfkrvwn5al8J+SvvCfkr/wn5iC4p2k8J+YjfCfpKPwn5iK8J+Zj/CfkpXwn5it8J+YmPCfkY3wn5iF8J+Rj/CfmIHwn5Sl8J+lsPCfkpTwn5KW8J+SmfCfmKLwn6SU8J+YhvCfmYTwn5Kq8J+YieKYuvCfkYzwn6SX8J+SnPCfmJTwn5iO8J+Yh/CfjLnwn6Sm8J+OifCfkp7inIzinKjwn6S38J+YsfCfmIzwn4y48J+ZjPCfmIvwn5KX8J+SmvCfmI/wn5Kb8J+ZgvCfkpPwn6Sp8J+YhPCfmIDwn5ak8J+Yg/Cfkq/wn5mI8J+Rh/Cfjrbwn5iS8J+kreKdo/CfmJzwn5KL8J+RgPCfmKrwn5iR8J+SpfCfmYvwn5ie8J+YqfCfmKHwn6Sq8J+RivCfpbPwn5il8J+kpPCfkYnwn5KD8J+Ys+Kci/CfmJrwn5id8J+YtPCfjJ/wn5is8J+Zg/CfjYDwn4y38J+Yu/CfmJPirZDinIXwn6W68J+MiPCfmIjwn6SY8J+SpuKclPCfmKPwn4+D8J+SkOKYufCfjorwn5KY8J+YoOKYnfCfmJXwn4y68J+OgvCfjLvwn5iQ8J+WlfCfkp3wn5mK8J+YufCfl6Pwn5Kr8J+SgPCfkZHwn4618J+knvCfmJvwn5S08J+YpPCfjLzwn5ir4pq98J+kmeKYlfCfj4bwn6Sr8J+RiPCfmK7wn5mG8J+Nu/CfjYPwn5C28J+SgfCfmLLwn4y/8J+nofCfjoHimqHwn4ye8J+OiOKdjOKcivCfkYvwn5iw8J+kqPCfmLbwn6Sd8J+atvCfkrDwn42T8J+SovCfpJ/wn5mB8J+aqPCfkqjwn6Ss4pyI8J+OgPCfjbrwn6ST8J+YmfCfkp/wn4yx8J+YlvCfkbbwn6W04pa24p6h4p2T8J+SjvCfkrjirIfwn5io8J+MmvCfpovwn5i38J+VuuKaoPCfmYXwn5if8J+YtfCfkY7wn6Sy8J+koPCfpKfwn5OM8J+UtfCfkoXwn6eQ8J+QvvCfjZLwn5iX8J+kkfCfjIrwn6Sv8J+Qt+KYjvCfkqfwn5iv8J+ShvCfkYbwn46k8J+Zh/CfjZHinYTwn4y08J+So/CfkLjwn5KM8J+TjfCfpYDwn6Si8J+RhfCfkqHwn5Kp8J+RkPCfk7jwn5G78J+kkPCfpK7wn4688J+ltfCfmqnwn42O8J+NivCfkbzwn5KN8J+To/CfpYIiKSxFdGU9S00ucmVkdWNlKCh0LGUscik9Pih0W3JdPWUsdCksW10pLEN0ZT1LTS5yZWR1Y2UoKHQsZSxyKT0+KHRbZS5jb2RlUG9pbnRBdCgwKV09cix0KSxbXSk7ZnVuY3Rpb24geHRlKHQpe3JldHVybiB0LnJlZHVjZSgoZSxyKT0+KGUrPUV0ZVtyXSxlKSwiIil9ZnVuY3Rpb24gX3RlKHQpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHIgb2YgdCl7Y29uc3Qgbj1DdGVbci5jb2RlUG9pbnRBdCgwKV07aWYobj09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYE5vbi1iYXNlMjU2ZW1vamkgY2hhcmFjdGVyOiAke3J9YCk7ZS5wdXNoKG4pfXJldHVybiBuZXcgVWludDhBcnJheShlKX1jb25zdCBrdGU9Qnkoe3ByZWZpeDoi8J+agCIsbmFtZToiYmFzZTI1NmVtb2ppIixlbmNvZGU6eHRlLGRlY29kZTpfdGV9KSxTdGU9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGJhc2UyNTZlbW9qaTprdGV9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7bmV3IFRleHRFbmNvZGVyO25ldyBUZXh0RGVjb2Rlcjtjb25zdCBVOT17Li4uSGVlLC4uLlZlZSwuLi5LZWUsLi4uWWVlLC4uLlFlZSwuLi5sdGUsLi4uaHRlLC4uLm10ZSwuLi52dGUsLi4uU3RlfTtmdW5jdGlvbiBaTSh0LGUscixuKXtyZXR1cm57bmFtZTp0LHByZWZpeDplLGVuY29kZXI6e25hbWU6dCxwcmVmaXg6ZSxlbmNvZGU6cn0sZGVjb2Rlcjp7ZGVjb2RlOm59fX1jb25zdCBGOT1aTSgidXRmOCIsInUiLHQ9PiJ1IituZXcgVGV4dERlY29kZXIoInV0ZjgiKS5kZWNvZGUodCksdD0+bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHQuc3Vic3RyaW5nKDEpKSksajI9Wk0oImFzY2lpIiwiYSIsdD0+e2xldCBlPSJhIjtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyllKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbcl0pO3JldHVybiBlfSx0PT57dD10LnN1YnN0cmluZygxKTtjb25zdCBlPVZNKHQubGVuZ3RoKTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyllW3JdPXQuY2hhckNvZGVBdChyKTtyZXR1cm4gZX0pLFlNPXt1dGY4OkY5LCJ1dGYtOCI6RjksaGV4OlU5LmJhc2UxNixsYXRpbjE6ajIsYXNjaWk6ajIsYmluYXJ5OmoyLC4uLlU5fTtmdW5jdGlvbiBKaSh0LGU9InV0ZjgiKXtjb25zdCByPVlNW2VdO2lmKCFyKXRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZW5jb2RpbmcgIiR7ZX0iYCk7cmV0dXJuKGU9PT0idXRmOCJ8fGU9PT0idXRmLTgiKSYmZ2xvYmFsVGhpcy5CdWZmZXIhPW51bGwmJmdsb2JhbFRoaXMuQnVmZmVyLmZyb20hPW51bGw/Z2xvYmFsVGhpcy5CdWZmZXIuZnJvbSh0LCJ1dGY4Iik6ci5kZWNvZGVyLmRlY29kZShgJHtyLnByZWZpeH0ke3R9YCl9ZnVuY3Rpb24gYWkodCxlPSJ1dGY4Iil7Y29uc3Qgcj1ZTVtlXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGVuY29kaW5nICIke2V9ImApO3JldHVybihlPT09InV0ZjgifHxlPT09InV0Zi04IikmJmdsb2JhbFRoaXMuQnVmZmVyIT1udWxsJiZnbG9iYWxUaGlzLkJ1ZmZlci5mcm9tIT1udWxsP2dsb2JhbFRoaXMuQnVmZmVyLmZyb20odC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCkudG9TdHJpbmcoInV0ZjgiKTpyLmVuY29kZXIuZW5jb2RlKHQpLnN1YnN0cmluZygxKX1jb25zdCBBdGU9e3dha3U6e3B1Ymxpc2g6Indha3VfcHVibGlzaCIsYmF0Y2hQdWJsaXNoOiJ3YWt1X2JhdGNoUHVibGlzaCIsc3Vic2NyaWJlOiJ3YWt1X3N1YnNjcmliZSIsYmF0Y2hTdWJzY3JpYmU6Indha3VfYmF0Y2hTdWJzY3JpYmUiLHN1YnNjcmlwdGlvbjoid2FrdV9zdWJzY3JpcHRpb24iLHVuc3Vic2NyaWJlOiJ3YWt1X3Vuc3Vic2NyaWJlIixiYXRjaFVuc3Vic2NyaWJlOiJ3YWt1X2JhdGNoVW5zdWJzY3JpYmUiLGJhdGNoRmV0Y2hNZXNzYWdlczoid2FrdV9iYXRjaEZldGNoTWVzc2FnZXMifSxpcm46e3B1Ymxpc2g6Imlybl9wdWJsaXNoIixiYXRjaFB1Ymxpc2g6Imlybl9iYXRjaFB1Ymxpc2giLHN1YnNjcmliZToiaXJuX3N1YnNjcmliZSIsYmF0Y2hTdWJzY3JpYmU6Imlybl9iYXRjaFN1YnNjcmliZSIsc3Vic2NyaXB0aW9uOiJpcm5fc3Vic2NyaXB0aW9uIix1bnN1YnNjcmliZToiaXJuX3Vuc3Vic2NyaWJlIixiYXRjaFVuc3Vic2NyaWJlOiJpcm5fYmF0Y2hVbnN1YnNjcmliZSIsYmF0Y2hGZXRjaE1lc3NhZ2VzOiJpcm5fYmF0Y2hGZXRjaE1lc3NhZ2VzIn0saXJpZGl1bTp7cHVibGlzaDoiaXJpZGl1bV9wdWJsaXNoIixiYXRjaFB1Ymxpc2g6ImlyaWRpdW1fYmF0Y2hQdWJsaXNoIixzdWJzY3JpYmU6ImlyaWRpdW1fc3Vic2NyaWJlIixiYXRjaFN1YnNjcmliZToiaXJpZGl1bV9iYXRjaFN1YnNjcmliZSIsc3Vic2NyaXB0aW9uOiJpcmlkaXVtX3N1YnNjcmlwdGlvbiIsdW5zdWJzY3JpYmU6ImlyaWRpdW1fdW5zdWJzY3JpYmUiLGJhdGNoVW5zdWJzY3JpYmU6ImlyaWRpdW1fYmF0Y2hVbnN1YnNjcmliZSIsYmF0Y2hGZXRjaE1lc3NhZ2VzOiJpcmlkaXVtX2JhdGNoRmV0Y2hNZXNzYWdlcyJ9fTt2YXIgVHRlPXt9O2NvbnN0IEl0ZT0iOiI7ZnVuY3Rpb24gY2godCl7Y29uc3RbZSxyXT10LnNwbGl0KEl0ZSk7cmV0dXJue25hbWVzcGFjZTplLHJlZmVyZW5jZTpyfX1mdW5jdGlvbiBKTSh0LGUpe3JldHVybiB0LmluY2x1ZGVzKCI6Iik/W3RdOmUuY2hhaW5zfHxbXX12YXIgUnRlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxOdGU9T2JqZWN0LmRlZmluZVByb3BlcnRpZXMsUHRlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLGo5PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsT3RlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksJHRlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsejk9KHQsZSxyKT0+ZSBpbiB0P1J0ZSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsVzk9KHQsZSk9Pntmb3IodmFyIHIgaW4gZXx8KGU9e30pKU90ZS5jYWxsKGUscikmJno5KHQscixlW3JdKTtpZihqOSlmb3IodmFyIHIgb2YgajkoZSkpJHRlLmNhbGwoZSxyKSYmejkodCxyLGVbcl0pO3JldHVybiB0fSxNdGU9KHQsZSk9Pk50ZSh0LFB0ZShlKSk7Y29uc3QgRHRlPSJSZWFjdE5hdGl2ZSIsa2k9e3JlYWN0TmF0aXZlOiJyZWFjdC1uYXRpdmUiLG5vZGU6Im5vZGUiLGJyb3dzZXI6ImJyb3dzZXIiLHVua25vd246InVua25vd24ifSxCdGU9ImpzIjtmdW5jdGlvbiBtYigpe3JldHVybiB0eXBlb2YgcHJvY2VzczwidSImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zPCJ1IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZTwidSJ9ZnVuY3Rpb24gQmMoKXtyZXR1cm4heXUuZ2V0RG9jdW1lbnQoKSYmISF5dS5nZXROYXZpZ2F0b3IoKSYmbmF2aWdhdG9yLnByb2R1Y3Q9PT1EdGV9ZnVuY3Rpb24gTHRlKCl7cmV0dXJuIEJjKCkmJnR5cGVvZiBnbG9iYWw8InUiJiZ0eXBlb2YoZ2xvYmFsPT1udWxsP3ZvaWQgMDpnbG9iYWwuUGxhdGZvcm0pPCJ1IiYmKGdsb2JhbD09bnVsbD92b2lkIDA6Z2xvYmFsLlBsYXRmb3JtLk9TKT09PSJhbmRyb2lkIn1mdW5jdGlvbiBVdGUoKXtyZXR1cm4gQmMoKSYmdHlwZW9mIGdsb2JhbDwidSImJnR5cGVvZihnbG9iYWw9PW51bGw/dm9pZCAwOmdsb2JhbC5QbGF0Zm9ybSk8InUiJiYoZ2xvYmFsPT1udWxsP3ZvaWQgMDpnbG9iYWwuUGxhdGZvcm0uT1MpPT09ImlvcyJ9ZnVuY3Rpb24gdzEoKXtyZXR1cm4hbWIoKSYmISF5dS5nZXROYXZpZ2F0b3IoKSYmISF5dS5nZXREb2N1bWVudCgpfWZ1bmN0aW9uIGIxKCl7cmV0dXJuIEJjKCk/a2kucmVhY3ROYXRpdmU6bWIoKT9raS5ub2RlOncxKCk/a2kuYnJvd3NlcjpraS51bmtub3dufWZ1bmN0aW9uIEg5KCl7dmFyIHQ7dHJ5e3JldHVybiBCYygpJiZ0eXBlb2YgZ2xvYmFsPCJ1IiYmdHlwZW9mKGdsb2JhbD09bnVsbD92b2lkIDA6Z2xvYmFsLkFwcGxpY2F0aW9uKTwidSI/KHQ9Z2xvYmFsLkFwcGxpY2F0aW9uKT09bnVsbD92b2lkIDA6dC5hcHBsaWNhdGlvbklkOnZvaWQgMH1jYXRjaHtyZXR1cm59fWZ1bmN0aW9uIEZ0ZSh0LGUpe2NvbnN0IHI9bmV3IFVSTFNlYXJjaFBhcmFtcyh0KTtmb3IoY29uc3QgbiBvZiBPYmplY3Qua2V5cyhlKS5zb3J0KCkpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7Y29uc3Qgcz1lW25dO3MhPT12b2lkIDAmJnIuc2V0KG4scyl9cmV0dXJuIHIudG9TdHJpbmcoKX1mdW5jdGlvbiBqdGUodCl7dmFyIGUscjtjb25zdCBuPVhNKCk7dHJ5e3JldHVybiB0IT1udWxsJiZ0LnVybCYmbi51cmwmJnQudXJsIT09bi51cmwmJihjb25zb2xlLndhcm4oYFRoZSBjb25maWd1cmVkIFdhbGxldENvbm5lY3QgJ21ldGFkYXRhLnVybCc6JHt0LnVybH0gZGlmZmVycyBmcm9tIHRoZSBhY3R1YWwgcGFnZSB1cmw6JHtuLnVybH0uIFRoaXMgaXMgcHJvYmFibHkgdW5pbnRlbmRlZCBhbmQgY2FuIGxlYWQgdG8gaXNzdWVzLmApLHQudXJsPW4udXJsKSwoZT10Py5pY29ucykhPW51bGwmJmUubGVuZ3RoJiZ0Lmljb25zLmxlbmd0aD4wJiYodC5pY29ucz10Lmljb25zLmZpbHRlcihzPT5zIT09IiIpKSxNdGUoVzkoVzkoe30sbiksdCkse3VybDp0Py51cmx8fG4udXJsLG5hbWU6dD8ubmFtZXx8bi5uYW1lLGRlc2NyaXB0aW9uOnQ/LmRlc2NyaXB0aW9ufHxuLmRlc2NyaXB0aW9uLGljb25zOihyPXQ/Lmljb25zKSE9bnVsbCYmci5sZW5ndGgmJnQuaWNvbnMubGVuZ3RoPjA/dC5pY29uczpuLmljb25zfSl9Y2F0Y2gocyl7cmV0dXJuIGNvbnNvbGUud2FybigiRXJyb3IgcG9wdWxhdGluZyBhcHAgbWV0YWRhdGEiLHMpLHR8fG59fWZ1bmN0aW9uIFhNKCl7cmV0dXJuIFFYLmdldFdpbmRvd01ldGFkYXRhKCl8fHtuYW1lOiIiLGRlc2NyaXB0aW9uOiIiLHVybDoiIixpY29uczpbIiJdfX1mdW5jdGlvbiB6dGUoKXtpZihiMSgpPT09a2kucmVhY3ROYXRpdmUmJnR5cGVvZiBnbG9iYWw8InUiJiZ0eXBlb2YoZ2xvYmFsPT1udWxsP3ZvaWQgMDpnbG9iYWwuUGxhdGZvcm0pPCJ1Iil7Y29uc3R7T1M6cixWZXJzaW9uOm59PWdsb2JhbC5QbGF0Zm9ybTtyZXR1cm5bcixuXS5qb2luKCItIil9Y29uc3QgdD1WWCgpO2lmKHQ9PT1udWxsKXJldHVybiJ1bmtub3duIjtjb25zdCBlPXQub3M/dC5vcy5yZXBsYWNlKCIgIiwiIikudG9Mb3dlckNhc2UoKToidW5rbm93biI7cmV0dXJuIHQudHlwZT09PSJicm93c2VyIj9bZSx0Lm5hbWUsdC52ZXJzaW9uXS5qb2luKCItIik6W2UsdC52ZXJzaW9uXS5qb2luKCItIil9ZnVuY3Rpb24gV3RlKCl7dmFyIHQ7Y29uc3QgZT1iMSgpO3JldHVybiBlPT09a2kuYnJvd3Nlcj9bZSwoKHQ9eXUuZ2V0TG9jYXRpb24oKSk9PW51bGw/dm9pZCAwOnQuaG9zdCl8fCJ1bmtub3duIl0uam9pbigiOiIpOmV9ZnVuY3Rpb24gUU0odCxlLHIpe2NvbnN0IG49enRlKCkscz1XdGUoKTtyZXR1cm5bW3QsZV0uam9pbigiLSIpLFtCdGUscl0uam9pbigiLSIpLG4sc10uam9pbigiLyIpfWZ1bmN0aW9uIEh0ZSh7cHJvdG9jb2w6dCx2ZXJzaW9uOmUscmVsYXlVcmw6cixzZGtWZXJzaW9uOm4sYXV0aDpzLHByb2plY3RJZDppLHVzZU9uQ2xvc2VFdmVudDpvLGJ1bmRsZUlkOmEscGFja2FnZU5hbWU6Y30pe2NvbnN0IGw9ci5zcGxpdCgiPyIpLGQ9UU0odCxlLG4pLHU9e2F1dGg6cyx1YTpkLHByb2plY3RJZDppLHVzZU9uQ2xvc2VFdmVudDpvLHBhY2thZ2VOYW1lOmN8fHZvaWQgMCxidW5kbGVJZDphfHx2b2lkIDB9LGg9RnRlKGxbMV18fCIiLHUpO3JldHVybiBsWzBdKyI/IitofWZ1bmN0aW9uIFFsKHQsZSl7cmV0dXJuIHQuZmlsdGVyKHI9PmUuaW5jbHVkZXMocikpLmxlbmd0aD09PXQubGVuZ3RofWZ1bmN0aW9uIGh4KHQpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXModC5lbnRyaWVzKCkpfWZ1bmN0aW9uIHB4KHQpe3JldHVybiBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHQpKX1mdW5jdGlvbiBVbCh0PVBlLkZJVkVfTUlOVVRFUyxlKXtjb25zdCByPVBlLnRvTWlsaXNlY29uZHModHx8UGUuRklWRV9NSU5VVEVTKTtsZXQgbixzLGksbztyZXR1cm57cmVzb2x2ZTphPT57aSYmbiYmKGNsZWFyVGltZW91dChpKSxuKGEpLG89UHJvbWlzZS5yZXNvbHZlKGEpKX0scmVqZWN0OmE9PntpJiZzJiYoY2xlYXJUaW1lb3V0KGkpLHMoYSkpfSxkb25lOigpPT5uZXcgUHJvbWlzZSgoYSxjKT0+e2lmKG8pcmV0dXJuIGEobyk7aT1zZXRUaW1lb3V0KCgpPT57Y29uc3QgbD1uZXcgRXJyb3IoZSk7bz1Qcm9taXNlLnJlamVjdChsKSxjKGwpfSxyKSxuPWEscz1jfSl9fWZ1bmN0aW9uIGNjKHQsZSxyKXtyZXR1cm4gbmV3IFByb21pc2UoYXN5bmMobixzKT0+e2NvbnN0IGk9c2V0VGltZW91dCgoKT0+cyhuZXcgRXJyb3IocikpLGUpO3RyeXtjb25zdCBvPWF3YWl0IHQ7bihvKX1jYXRjaChvKXtzKG8pfWNsZWFyVGltZW91dChpKX0pfWZ1bmN0aW9uIGVEKHQsZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciJiZlLnN0YXJ0c1dpdGgoYCR7dH06YCkpcmV0dXJuIGU7aWYodC50b0xvd2VyQ2FzZSgpPT09InRvcGljIil7aWYodHlwZW9mIGUhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcignVmFsdWUgbXVzdCBiZSAic3RyaW5nIiBmb3IgZXhwaXJlciB0YXJnZXQgdHlwZTogdG9waWMnKTtyZXR1cm5gdG9waWM6JHtlfWB9ZWxzZSBpZih0LnRvTG93ZXJDYXNlKCk9PT0iaWQiKXtpZih0eXBlb2YgZSE9Im51bWJlciIpdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBtdXN0IGJlICJudW1iZXIiIGZvciBleHBpcmVyIHRhcmdldCB0eXBlOiBpZCcpO3JldHVybmBpZDoke2V9YH10aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZXhwaXJlciB0YXJnZXQgdHlwZTogJHt0fWApfWZ1bmN0aW9uIHF0ZSh0KXtyZXR1cm4gZUQoInRvcGljIix0KX1mdW5jdGlvbiBWdGUodCl7cmV0dXJuIGVEKCJpZCIsdCl9ZnVuY3Rpb24gdEQodCl7Y29uc3RbZSxyXT10LnNwbGl0KCI6Iiksbj17aWQ6dm9pZCAwLHRvcGljOnZvaWQgMH07aWYoZT09PSJ0b3BpYyImJnR5cGVvZiByPT0ic3RyaW5nIiluLnRvcGljPXI7ZWxzZSBpZihlPT09ImlkIiYmTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIocikpKW4uaWQ9TnVtYmVyKHIpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRhcmdldCwgZXhwZWN0ZWQgaWQ6bnVtYmVyIG9yIHRvcGljOnN0cmluZywgZ290ICR7ZX06JHtyfWApO3JldHVybiBufWZ1bmN0aW9uIFlyKHQsZSl7cmV0dXJuIFBlLmZyb21NaWxpc2Vjb25kcyhEYXRlLm5vdygpK1BlLnRvTWlsaXNlY29uZHModCkpfWZ1bmN0aW9uIGljKHQpe3JldHVybiBEYXRlLm5vdygpPj1QZS50b01pbGlzZWNvbmRzKHQpfWZ1bmN0aW9uIEZ0KHQsZSl7cmV0dXJuYCR7dH0ke2U/YDoke2V9YDoiIn1gfWZ1bmN0aW9uIEZ3KHQ9W10sZT1bXSl7cmV0dXJuWy4uLm5ldyBTZXQoWy4uLnQsLi4uZV0pXX1hc3luYyBmdW5jdGlvbiBHdGUoe2lkOnQsdG9waWM6ZSx3Y0RlZXBMaW5rOnJ9KXt2YXIgbjt0cnl7aWYoIXIpcmV0dXJuO2NvbnN0IHM9dHlwZW9mIHI9PSJzdHJpbmciP0pTT04ucGFyc2Uocik6cixpPXM/LmhyZWY7aWYodHlwZW9mIGkhPSJzdHJpbmciKXJldHVybjtjb25zdCBvPUt0ZShpLHQsZSksYT1iMSgpO2lmKGE9PT1raS5icm93c2VyKXtpZighKChuPXl1LmdldERvY3VtZW50KCkpIT1udWxsJiZuLmhhc0ZvY3VzKCkpKXtjb25zb2xlLndhcm4oIkRvY3VtZW50IGRvZXMgbm90IGhhdmUgZm9jdXMsIHNraXBwaW5nIGRlZXBsaW5rLiIpO3JldHVybn1adGUobyl9ZWxzZSBhPT09a2kucmVhY3ROYXRpdmUmJnR5cGVvZihnbG9iYWw9PW51bGw/dm9pZCAwOmdsb2JhbC5MaW5raW5nKTwidSImJmF3YWl0IGdsb2JhbC5MaW5raW5nLm9wZW5VUkwobyl9Y2F0Y2gocyl7Y29uc29sZS5lcnJvcihzKX19ZnVuY3Rpb24gS3RlKHQsZSxyKXtjb25zdCBuPWByZXF1ZXN0SWQ9JHtlfSZzZXNzaW9uVG9waWM9JHtyfWA7dC5lbmRzV2l0aCgiLyIpJiYodD10LnNsaWNlKDAsLTEpKTtsZXQgcz1gJHt0fWA7aWYodC5zdGFydHNXaXRoKCJodHRwczovL3QubWUiKSl7Y29uc3QgaT10LmluY2x1ZGVzKCI/Iik/IiZzdGFydGFwcD0iOiI/c3RhcnRhcHA9IjtzPWAke3N9JHtpfSR7UXRlKG4sITApfWB9ZWxzZSBzPWAke3N9L3djPyR7bn1gO3JldHVybiBzfWZ1bmN0aW9uIFp0ZSh0KXtsZXQgZT0iX3NlbGYiO1h0ZSgpP2U9Il90b3AiOihKdGUoKXx8dC5zdGFydHNXaXRoKCJodHRwczovLyIpfHx0LnN0YXJ0c1dpdGgoImh0dHA6Ly8iKSkmJihlPSJfYmxhbmsiKSx3aW5kb3cub3Blbih0LGUsIm5vcmVmZXJyZXIgbm9vcGVuZXIiKX1hc3luYyBmdW5jdGlvbiBZdGUodCxlKXtsZXQgcj0iIjt0cnl7aWYodzEoKSYmKHI9bG9jYWxTdG9yYWdlLmdldEl0ZW0oZSkscikpcmV0dXJuIHI7cj1hd2FpdCB0LmdldEl0ZW0oZSl9Y2F0Y2gobil7Y29uc29sZS5lcnJvcihuKX1yZXR1cm4gcn1mdW5jdGlvbiBxOSh0LGUpe2lmKCF0LmluY2x1ZGVzKGUpKXJldHVybiBudWxsO2NvbnN0IHI9dC5zcGxpdCgvKFsmLD8sPV0pLyksbj1yLmluZGV4T2YoZSk7cmV0dXJuIHJbbisyXX1mdW5jdGlvbiBWOSgpe3JldHVybiB0eXBlb2YgY3J5cHRvPCJ1IiYmY3J5cHRvIT1udWxsJiZjcnlwdG8ucmFuZG9tVVVJRD9jcnlwdG8ucmFuZG9tVVVJRCgpOiJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgiLnJlcGxhY2UoL1t4eV0vZ3UsdD0+e2NvbnN0IGU9TWF0aC5yYW5kb20oKSoxNnwwO3JldHVybih0PT09IngiP2U6ZSYzfDgpLnRvU3RyaW5nKDE2KX0pfWZ1bmN0aW9uIE02KCl7cmV0dXJuIHR5cGVvZiBwcm9jZXNzPCJ1IiYmVHRlLklTX1ZJVEVTVD09PSJ0cnVlIn1mdW5jdGlvbiBKdGUoKXtyZXR1cm4gdHlwZW9mIHdpbmRvdzwidSImJighIXdpbmRvdy5UZWxlZ3JhbVdlYnZpZXdQcm94eXx8ISF3aW5kb3cuVGVsZWdyYW18fCEhd2luZG93LlRlbGVncmFtV2Vidmlld1Byb3h5UHJvdG8pfWZ1bmN0aW9uIFh0ZSgpe3RyeXtyZXR1cm4gd2luZG93LnNlbGYhPT13aW5kb3cudG9wfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBRdGUodCxlPSExKXtjb25zdCByPUJ1ZmZlci5mcm9tKHQpLnRvU3RyaW5nKCJiYXNlNjQiKTtyZXR1cm4gZT9yLnJlcGxhY2UoL1s9XS9nLCIiKTpyfWZ1bmN0aW9uIHJEKHQpe3JldHVybiBCdWZmZXIuZnJvbSh0LCJiYXNlNjQiKS50b1N0cmluZygidXRmLTgiKX1mdW5jdGlvbiBlcmUodCl7cmV0dXJuIG5ldyBQcm9taXNlKGU9PnNldFRpbWVvdXQoZSx0KSl9ZnVuY3Rpb24gcTAodCl7aWYoIU51bWJlci5pc1NhZmVJbnRlZ2VyKHQpfHx0PDApdGhyb3cgbmV3IEVycm9yKCJwb3NpdGl2ZSBpbnRlZ2VyIGV4cGVjdGVkLCBnb3QgIit0KX1mdW5jdGlvbiB0cmUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJnQuY29uc3RydWN0b3IubmFtZT09PSJVaW50OEFycmF5In1mdW5jdGlvbiB5MSh0LC4uLmUpe2lmKCF0cmUodCkpdGhyb3cgbmV3IEVycm9yKCJVaW50OEFycmF5IGV4cGVjdGVkIik7aWYoZS5sZW5ndGg+MCYmIWUuaW5jbHVkZXModC5sZW5ndGgpKXRocm93IG5ldyBFcnJvcigiVWludDhBcnJheSBleHBlY3RlZCBvZiBsZW5ndGggIitlKyIsIGdvdCBsZW5ndGg9Iit0Lmxlbmd0aCl9ZnVuY3Rpb24gRDYodCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiJ8fHR5cGVvZiB0LmNyZWF0ZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoIkhhc2ggc2hvdWxkIGJlIHdyYXBwZWQgYnkgdXRpbHMud3JhcENvbnN0cnVjdG9yIik7cTAodC5vdXRwdXRMZW4pLHEwKHQuYmxvY2tMZW4pfWZ1bmN0aW9uIHhoKHQsZT0hMCl7aWYodC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJIYXNoIGluc3RhbmNlIGhhcyBiZWVuIGRlc3Ryb3llZCIpO2lmKGUmJnQuZmluaXNoZWQpdGhyb3cgbmV3IEVycm9yKCJIYXNoI2RpZ2VzdCgpIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIil9ZnVuY3Rpb24gbkQodCxlKXt5MSh0KTtjb25zdCByPWUub3V0cHV0TGVuO2lmKHQubGVuZ3RoPHIpdGhyb3cgbmV3IEVycm9yKCJkaWdlc3RJbnRvKCkgZXhwZWN0cyBvdXRwdXQgYnVmZmVyIG9mIGxlbmd0aCBhdCBsZWFzdCAiK3IpfWNvbnN0IF9nPUJpZ0ludCgyKiozMi0xKSxHOT1CaWdJbnQoMzIpO2Z1bmN0aW9uIHJyZSh0LGU9ITEpe3JldHVybiBlP3toOk51bWJlcih0Jl9nKSxsOk51bWJlcih0Pj5HOSZfZyl9OntoOk51bWJlcih0Pj5HOSZfZyl8MCxsOk51bWJlcih0Jl9nKXwwfX1mdW5jdGlvbiBucmUodCxlPSExKXtsZXQgcj1uZXcgVWludDMyQXJyYXkodC5sZW5ndGgpLG49bmV3IFVpbnQzMkFycmF5KHQubGVuZ3RoKTtmb3IobGV0IHM9MDtzPHQubGVuZ3RoO3MrKyl7Y29uc3R7aDppLGw6b309cnJlKHRbc10sZSk7W3Jbc10sbltzXV09W2ksb119cmV0dXJuW3Isbl19Y29uc3QgaXJlPSh0LGUscik9PnQ8PHJ8ZT4+PjMyLXIsc3JlPSh0LGUscik9PmU8PHJ8dD4+PjMyLXIsb3JlPSh0LGUscik9PmU8PHItMzJ8dD4+PjY0LXIsYXJlPSh0LGUscik9PnQ8PHItMzJ8ZT4+PjY0LXIsUmQ9dHlwZW9mIGdsb2JhbFRoaXM9PSJvYmplY3QiJiYiY3J5cHRvImluIGdsb2JhbFRoaXM/Z2xvYmFsVGhpcy5jcnlwdG86dm9pZCAwO2Z1bmN0aW9uIGNyZSh0KXtyZXR1cm4gbmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCxNYXRoLmZsb29yKHQuYnl0ZUxlbmd0aC80KSl9ZnVuY3Rpb24gejIodCl7cmV0dXJuIG5ldyBEYXRhVmlldyh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKX1mdW5jdGlvbiBzbyh0LGUpe3JldHVybiB0PDwzMi1lfHQ+Pj5lfWNvbnN0IEs5PW5ldyBVaW50OEFycmF5KG5ldyBVaW50MzJBcnJheShbMjg3NDU0MDIwXSkuYnVmZmVyKVswXT09PTY4O2Z1bmN0aW9uIGxyZSh0KXtyZXR1cm4gdDw8MjQmNDI3ODE5MDA4MHx0PDw4JjE2NzExNjgwfHQ+Pj44JjY1MjgwfHQ+Pj4yNCYyNTV9ZnVuY3Rpb24gWjkodCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXT1scmUodFtlXSl9ZnVuY3Rpb24gdXJlKHQpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoInV0ZjhUb0J5dGVzIGV4cGVjdGVkIHN0cmluZywgZ290ICIrdHlwZW9mIHQpO3JldHVybiBuZXcgVWludDhBcnJheShuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodCkpfWZ1bmN0aW9uIF9oKHQpe3JldHVybiB0eXBlb2YgdD09InN0cmluZyImJih0PXVyZSh0KSkseTEodCksdH1mdW5jdGlvbiBkcmUoLi4udCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgcz10W25dO3kxKHMpLGUrPXMubGVuZ3RofWNvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBuPTAscz0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPXRbbl07ci5zZXQoaSxzKSxzKz1pLmxlbmd0aH1yZXR1cm4gcn1sZXQgQjY9Y2xhc3N7Y2xvbmUoKXtyZXR1cm4gdGhpcy5fY2xvbmVJbnRvKCl9fTtmdW5jdGlvbiBpRCh0KXtjb25zdCBlPW49PnQoKS51cGRhdGUoX2gobikpLmRpZ2VzdCgpLHI9dCgpO3JldHVybiBlLm91dHB1dExlbj1yLm91dHB1dExlbixlLmJsb2NrTGVuPXIuYmxvY2tMZW4sZS5jcmVhdGU9KCk9PnQoKSxlfWZ1bmN0aW9uIHBwKHQ9MzIpe2lmKFJkJiZ0eXBlb2YgUmQuZ2V0UmFuZG9tVmFsdWVzPT0iZnVuY3Rpb24iKXJldHVybiBSZC5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkodCkpO2lmKFJkJiZ0eXBlb2YgUmQucmFuZG9tQnl0ZXM9PSJmdW5jdGlvbiIpcmV0dXJuIFJkLnJhbmRvbUJ5dGVzKHQpO3Rocm93IG5ldyBFcnJvcigiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBtdXN0IGJlIGRlZmluZWQiKX1jb25zdCBzRD1bXSxvRD1bXSxhRD1bXSxocmU9QmlnSW50KDApLFVwPUJpZ0ludCgxKSxwcmU9QmlnSW50KDIpLGZyZT1CaWdJbnQoNyksbXJlPUJpZ0ludCgyNTYpLGdyZT1CaWdJbnQoMTEzKTtmb3IobGV0IHQ9MCxlPVVwLHI9MSxuPTA7dDwyNDt0Kyspe1tyLG5dPVtuLCgyKnIrMypuKSU1XSxzRC5wdXNoKDIqKDUqbityKSksb0QucHVzaCgodCsxKSoodCsyKS8yJTY0KTtsZXQgcz1ocmU7Zm9yKGxldCBpPTA7aTw3O2krKyllPShlPDxVcF4oZT4+ZnJlKSpncmUpJW1yZSxlJnByZSYmKHNePVVwPDwoVXA8PEJpZ0ludChpKSktVXApO2FELnB1c2gocyl9Y29uc3Rbd3JlLGJyZV09bnJlKGFELCEwKSxZOT0odCxlLHIpPT5yPjMyP29yZSh0LGUscik6aXJlKHQsZSxyKSxKOT0odCxlLHIpPT5yPjMyP2FyZSh0LGUscik6c3JlKHQsZSxyKTtmdW5jdGlvbiB5cmUodCxlPTI0KXtjb25zdCByPW5ldyBVaW50MzJBcnJheSgxMCk7Zm9yKGxldCBuPTI0LWU7bjwyNDtuKyspe2ZvcihsZXQgbz0wO288MTA7bysrKXJbb109dFtvXV50W28rMTBdXnRbbysyMF1edFtvKzMwXV50W28rNDBdO2ZvcihsZXQgbz0wO288MTA7bys9Mil7Y29uc3QgYT0obys4KSUxMCxjPShvKzIpJTEwLGw9cltjXSxkPXJbYysxXSx1PVk5KGwsZCwxKV5yW2FdLGg9SjkobCxkLDEpXnJbYSsxXTtmb3IobGV0IHA9MDtwPDUwO3ArPTEwKXRbbytwXV49dSx0W28rcCsxXV49aH1sZXQgcz10WzJdLGk9dFszXTtmb3IobGV0IG89MDtvPDI0O28rKyl7Y29uc3QgYT1vRFtvXSxjPVk5KHMsaSxhKSxsPUo5KHMsaSxhKSxkPXNEW29dO3M9dFtkXSxpPXRbZCsxXSx0W2RdPWMsdFtkKzFdPWx9Zm9yKGxldCBvPTA7bzw1MDtvKz0xMCl7Zm9yKGxldCBhPTA7YTwxMDthKyspclthXT10W28rYV07Zm9yKGxldCBhPTA7YTwxMDthKyspdFtvK2FdXj1+clsoYSsyKSUxMF0mclsoYSs0KSUxMF19dFswXV49d3JlW25dLHRbMV1ePWJyZVtuXX1yLmZpbGwoMCl9bGV0IHZyZT1jbGFzcyBjRCBleHRlbmRzIEI2e2NvbnN0cnVjdG9yKGUscixuLHM9ITEsaT0yNCl7aWYoc3VwZXIoKSx0aGlzLmJsb2NrTGVuPWUsdGhpcy5zdWZmaXg9cix0aGlzLm91dHB1dExlbj1uLHRoaXMuZW5hYmxlWE9GPXMsdGhpcy5yb3VuZHM9aSx0aGlzLnBvcz0wLHRoaXMucG9zT3V0PTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMSxxMChuKSwwPj10aGlzLmJsb2NrTGVufHx0aGlzLmJsb2NrTGVuPj0yMDApdGhyb3cgbmV3IEVycm9yKCJTaGEzIHN1cHBvcnRzIG9ubHkga2VjY2FrLWYxNjAwIGZ1bmN0aW9uIik7dGhpcy5zdGF0ZT1uZXcgVWludDhBcnJheSgyMDApLHRoaXMuc3RhdGUzMj1jcmUodGhpcy5zdGF0ZSl9a2VjY2FrKCl7Szl8fFo5KHRoaXMuc3RhdGUzMikseXJlKHRoaXMuc3RhdGUzMix0aGlzLnJvdW5kcyksSzl8fFo5KHRoaXMuc3RhdGUzMiksdGhpcy5wb3NPdXQ9MCx0aGlzLnBvcz0wfXVwZGF0ZShlKXt4aCh0aGlzKTtjb25zdHtibG9ja0xlbjpyLHN0YXRlOm59PXRoaXM7ZT1faChlKTtjb25zdCBzPWUubGVuZ3RoO2ZvcihsZXQgaT0wO2k8czspe2NvbnN0IG89TWF0aC5taW4oci10aGlzLnBvcyxzLWkpO2ZvcihsZXQgYT0wO2E8bzthKyspblt0aGlzLnBvcysrXV49ZVtpKytdO3RoaXMucG9zPT09ciYmdGhpcy5rZWNjYWsoKX1yZXR1cm4gdGhpc31maW5pc2goKXtpZih0aGlzLmZpbmlzaGVkKXJldHVybjt0aGlzLmZpbmlzaGVkPSEwO2NvbnN0e3N0YXRlOmUsc3VmZml4OnIscG9zOm4sYmxvY2tMZW46c309dGhpcztlW25dXj1yLChyJjEyOCkhPT0wJiZuPT09cy0xJiZ0aGlzLmtlY2NhaygpLGVbcy0xXV49MTI4LHRoaXMua2VjY2FrKCl9d3JpdGVJbnRvKGUpe3hoKHRoaXMsITEpLHkxKGUpLHRoaXMuZmluaXNoKCk7Y29uc3Qgcj10aGlzLnN0YXRlLHtibG9ja0xlbjpufT10aGlzO2ZvcihsZXQgcz0wLGk9ZS5sZW5ndGg7czxpOyl7dGhpcy5wb3NPdXQ+PW4mJnRoaXMua2VjY2FrKCk7Y29uc3Qgbz1NYXRoLm1pbihuLXRoaXMucG9zT3V0LGktcyk7ZS5zZXQoci5zdWJhcnJheSh0aGlzLnBvc091dCx0aGlzLnBvc091dCtvKSxzKSx0aGlzLnBvc091dCs9byxzKz1vfXJldHVybiBlfXhvZkludG8oZSl7aWYoIXRoaXMuZW5hYmxlWE9GKXRocm93IG5ldyBFcnJvcigiWE9GIGlzIG5vdCBwb3NzaWJsZSBmb3IgdGhpcyBpbnN0YW5jZSIpO3JldHVybiB0aGlzLndyaXRlSW50byhlKX14b2YoZSl7cmV0dXJuIHEwKGUpLHRoaXMueG9mSW50byhuZXcgVWludDhBcnJheShlKSl9ZGlnZXN0SW50byhlKXtpZihuRChlLHRoaXMpLHRoaXMuZmluaXNoZWQpdGhyb3cgbmV3IEVycm9yKCJkaWdlc3QoKSB3YXMgYWxyZWFkeSBjYWxsZWQiKTtyZXR1cm4gdGhpcy53cml0ZUludG8oZSksdGhpcy5kZXN0cm95KCksZX1kaWdlc3QoKXtyZXR1cm4gdGhpcy5kaWdlc3RJbnRvKG5ldyBVaW50OEFycmF5KHRoaXMub3V0cHV0TGVuKSl9ZGVzdHJveSgpe3RoaXMuZGVzdHJveWVkPSEwLHRoaXMuc3RhdGUuZmlsbCgwKX1fY2xvbmVJbnRvKGUpe2NvbnN0e2Jsb2NrTGVuOnIsc3VmZml4Om4sb3V0cHV0TGVuOnMscm91bmRzOmksZW5hYmxlWE9GOm99PXRoaXM7cmV0dXJuIGV8fChlPW5ldyBjRChyLG4scyxvLGkpKSxlLnN0YXRlMzIuc2V0KHRoaXMuc3RhdGUzMiksZS5wb3M9dGhpcy5wb3MsZS5wb3NPdXQ9dGhpcy5wb3NPdXQsZS5maW5pc2hlZD10aGlzLmZpbmlzaGVkLGUucm91bmRzPWksZS5zdWZmaXg9bixlLm91dHB1dExlbj1zLGUuZW5hYmxlWE9GPW8sZS5kZXN0cm95ZWQ9dGhpcy5kZXN0cm95ZWQsZX19O2NvbnN0IEVyZT0odCxlLHIpPT5pRCgoKT0+bmV3IHZyZShlLHQscikpLENyZT1FcmUoMSwxMzYsMjU2LzgpLHhyZT0iaHR0cHM6Ly9ycGMud2FsbGV0Y29ubmVjdC5vcmcvdjEiO2Z1bmN0aW9uIGxEKHQpe2NvbnN0IGU9YBlFdGhlcmV1bSBTaWduZWQgTWVzc2FnZToNCiR7dC5sZW5ndGh9YCxyPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShlK3QpO3JldHVybiIweCIrQnVmZmVyLmZyb20oQ3JlKHIpKS50b1N0cmluZygiaGV4Iil9YXN5bmMgZnVuY3Rpb24gX3JlKHQsZSxyLG4scyxpKXtzd2l0Y2goci50KXtjYXNlImVpcDE5MSI6cmV0dXJuIGF3YWl0IGtyZSh0LGUsci5zKTtjYXNlImVpcDEyNzEiOnJldHVybiBhd2FpdCBTcmUodCxlLHIucyxuLHMsaSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYHZlcmlmeVNpZ25hdHVyZSBmYWlsZWQ6IEF0dGVtcHRlZCB0byB2ZXJpZnkgQ2FjYW9TaWduYXR1cmUgd2l0aCB1bmtub3duIHR5cGU6ICR7ci50fWApfX1hc3luYyBmdW5jdGlvbiBrcmUodCxlLHIpe3JldHVybihhd2FpdCBGUSh7aGFzaDpsRChlKSxzaWduYXR1cmU6cn0pKS50b0xvd2VyQ2FzZSgpPT09dC50b0xvd2VyQ2FzZSgpfWFzeW5jIGZ1bmN0aW9uIFNyZSh0LGUscixuLHMsaSl7Y29uc3Qgbz1jaChuKTtpZighby5uYW1lc3BhY2V8fCFvLnJlZmVyZW5jZSl0aHJvdyBuZXcgRXJyb3IoYGlzVmFsaWRFaXAxMjcxU2lnbmF0dXJlIGZhaWxlZDogY2hhaW5JZCBtdXN0IGJlIGluIENBSVAtMiBmb3JtYXQsIHJlY2VpdmVkOiAke259YCk7dHJ5e2NvbnN0IGE9IjB4MTYyNmJhN2UiLGM9IjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAiLGw9IjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDEiLGQ9ci5zdWJzdHJpbmcoMiksdT1sRChlKS5zdWJzdHJpbmcoMiksaD1hK3UrYytsK2QscD1hd2FpdCBmZXRjaChgJHtpfHx4cmV9Lz9jaGFpbklkPSR7bn0mcHJvamVjdElkPSR7c31gLHttZXRob2Q6IlBPU1QiLGJvZHk6SlNPTi5zdHJpbmdpZnkoe2lkOkFyZSgpLGpzb25ycGM6IjIuMCIsbWV0aG9kOiJldGhfY2FsbCIscGFyYW1zOlt7dG86dCxkYXRhOmh9LCJsYXRlc3QiXX0pfSkse3Jlc3VsdDpmfT1hd2FpdCBwLmpzb24oKTtyZXR1cm4gZj9mLnNsaWNlKDAsYS5sZW5ndGgpLnRvTG93ZXJDYXNlKCk9PT1hLnRvTG93ZXJDYXNlKCk6ITF9Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoImlzVmFsaWRFaXAxMjcxU2lnbmF0dXJlOiAiLGEpLCExfX1mdW5jdGlvbiBBcmUoKXtyZXR1cm4gRGF0ZS5ub3coKStNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWUzKX1mdW5jdGlvbiBUcmUodCl7Y29uc3QgZT1hdG9iKHQpLHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXJbb109ZS5jaGFyQ29kZUF0KG8pO2NvbnN0IG49clswXTtpZihuPT09MCl0aHJvdyBuZXcgRXJyb3IoIk5vIHNpZ25hdHVyZXMgZm91bmQiKTtjb25zdCBzPTErbio2NDtpZihyLmxlbmd0aDxzKXRocm93IG5ldyBFcnJvcigiVHJhbnNhY3Rpb24gZGF0YSB0b28gc2hvcnQgZm9yIGNsYWltZWQgc2lnbmF0dXJlIGNvdW50Iik7aWYoci5sZW5ndGg8MTAwKXRocm93IG5ldyBFcnJvcigiVHJhbnNhY3Rpb24gdG9vIHNob3J0Iik7Y29uc3QgaT1CdWZmZXIuZnJvbSh0LCJiYXNlNjQiKS5zbGljZSgxLDY1KTtyZXR1cm4gcU0uZW5jb2RlKGkpfXZhciBJcmU9T2JqZWN0LmRlZmluZVByb3BlcnR5LFJyZT1PYmplY3QuZGVmaW5lUHJvcGVydGllcyxOcmU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMsWDk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxQcmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxPcmU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxROT0odCxlLHIpPT5lIGluIHQ/SXJlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09ciwkcmU9KHQsZSk9Pntmb3IodmFyIHIgaW4gZXx8KGU9e30pKVByZS5jYWxsKGUscikmJlE5KHQscixlW3JdKTtpZihYOSlmb3IodmFyIHIgb2YgWDkoZSkpT3JlLmNhbGwoZSxyKSYmUTkodCxyLGVbcl0pO3JldHVybiB0fSxNcmU9KHQsZSk9PlJyZSh0LE5yZShlKSk7Y29uc3QgRHJlPSJkaWQ6cGtoOiIsTDY9dD0+dD8uc3BsaXQoIjoiKSxCcmU9dD0+e2NvbnN0IGU9dCYmTDYodCk7aWYoZSlyZXR1cm4gdC5pbmNsdWRlcyhEcmUpP2VbM106ZVsxXX0sZng9dD0+e2NvbnN0IGU9dCYmTDYodCk7aWYoZSlyZXR1cm4gZVsyXSsiOiIrZVszXX0sZ2I9dD0+e2NvbnN0IGU9dCYmTDYodCk7aWYoZSlyZXR1cm4gZS5wb3AoKX07YXN5bmMgZnVuY3Rpb24gZWsodCl7Y29uc3R7Y2FjYW86ZSxwcm9qZWN0SWQ6cn09dCx7czpuLHA6c309ZSxpPXVEKHMscy5pc3MpLG89Z2Iocy5pc3MpO3JldHVybiBhd2FpdCBfcmUobyxpLG4sZngocy5pc3MpLHIpfWNvbnN0IHVEPSh0LGUpPT57Y29uc3Qgcj1gJHt0LmRvbWFpbn0gd2FudHMgeW91IHRvIHNpZ24gaW4gd2l0aCB5b3VyIEV0aGVyZXVtIGFjY291bnQ6YCxuPWdiKGUpO2lmKCF0LmF1ZCYmIXQudXJpKXRocm93IG5ldyBFcnJvcigiRWl0aGVyIGBhdWRgIG9yIGB1cmlgIGlzIHJlcXVpcmVkIHRvIGNvbnN0cnVjdCB0aGUgbWVzc2FnZSIpO2xldCBzPXQuc3RhdGVtZW50fHx2b2lkIDA7Y29uc3QgaT1gVVJJOiAke3QuYXVkfHx0LnVyaX1gLG89YFZlcnNpb246ICR7dC52ZXJzaW9ufWAsYT1gQ2hhaW4gSUQ6ICR7QnJlKGUpfWAsYz1gTm9uY2U6ICR7dC5ub25jZX1gLGw9YElzc3VlZCBBdDogJHt0LmlhdH1gLGQ9dC5leHA/YEV4cGlyYXRpb24gVGltZTogJHt0LmV4cH1gOnZvaWQgMCx1PXQubmJmP2BOb3QgQmVmb3JlOiAke3QubmJmfWA6dm9pZCAwLGg9dC5yZXF1ZXN0SWQ/YFJlcXVlc3QgSUQ6ICR7dC5yZXF1ZXN0SWR9YDp2b2lkIDAscD10LnJlc291cmNlcz9gUmVzb3VyY2VzOiR7dC5yZXNvdXJjZXMubWFwKG09PmANCi0gJHttfWApLmpvaW4oIiIpfWA6dm9pZCAwLGY9ancodC5yZXNvdXJjZXMpO2lmKGYpe2NvbnN0IG09VjAoZik7cz1WcmUocyxtKX1yZXR1cm5bcixuLCIiLHMsIiIsaSxvLGEsYyxsLGQsdSxoLHBdLmZpbHRlcihtPT5tIT1udWxsKS5qb2luKGANCmApfTtmdW5jdGlvbiBMcmUodCl7cmV0dXJuIEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHQpKS50b1N0cmluZygiYmFzZTY0Iil9ZnVuY3Rpb24gVXJlKHQpe3JldHVybiBKU09OLnBhcnNlKEJ1ZmZlci5mcm9tKHQsImJhc2U2NCIpLnRvU3RyaW5nKCJ1dGYtOCIpKX1mdW5jdGlvbiBDdSh0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIk5vIHJlY2FwIHByb3ZpZGVkLCB2YWx1ZSBpcyB1bmRlZmluZWQiKTtpZighdC5hdHQpdGhyb3cgbmV3IEVycm9yKCJObyBgYXR0YCBwcm9wZXJ0eSBmb3VuZCIpO2NvbnN0IGU9T2JqZWN0LmtleXModC5hdHQpO2lmKCEoZSE9bnVsbCYmZS5sZW5ndGgpKXRocm93IG5ldyBFcnJvcigiTm8gcmVzb3VyY2VzIGZvdW5kIGluIGBhdHRgIHByb3BlcnR5Iik7ZS5mb3JFYWNoKHI9Pntjb25zdCBuPXQuYXR0W3JdO2lmKEFycmF5LmlzQXJyYXkobikpdGhyb3cgbmV3IEVycm9yKGBSZXNvdXJjZSBtdXN0IGJlIGFuIG9iamVjdDogJHtyfWApO2lmKHR5cGVvZiBuIT0ib2JqZWN0Iil0aHJvdyBuZXcgRXJyb3IoYFJlc291cmNlIG11c3QgYmUgYW4gb2JqZWN0OiAke3J9YCk7aWYoIU9iamVjdC5rZXlzKG4pLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFJlc291cmNlIG9iamVjdCBpcyBlbXB0eTogJHtyfWApO09iamVjdC5rZXlzKG4pLmZvckVhY2gocz0+e2NvbnN0IGk9bltzXTtpZighQXJyYXkuaXNBcnJheShpKSl0aHJvdyBuZXcgRXJyb3IoYEFiaWxpdHkgbGltaXRzICR7c30gbXVzdCBiZSBhbiBhcnJheSBvZiBvYmplY3RzLCBmb3VuZDogJHtpfWApO2lmKCFpLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFZhbHVlIG9mICR7c30gaXMgZW1wdHkgYXJyYXksIG11c3QgYmUgYW4gYXJyYXkgd2l0aCBvYmplY3RzYCk7aS5mb3JFYWNoKG89PntpZih0eXBlb2YgbyE9Im9iamVjdCIpdGhyb3cgbmV3IEVycm9yKGBBYmlsaXR5IGxpbWl0cyAoJHtzfSkgbXVzdCBiZSBhbiBhcnJheSBvZiBvYmplY3RzLCBmb3VuZDogJHtvfWApfSl9KX0pfWZ1bmN0aW9uIEZyZSh0LGUscixuPXt9KXtyZXR1cm4gcj8uc29ydCgocyxpKT0+cy5sb2NhbGVDb21wYXJlKGkpKSx7YXR0OntbdF06anJlKGUscixuKX19fWZ1bmN0aW9uIGpyZSh0LGUscj17fSl7ZT1lPy5zb3J0KChzLGkpPT5zLmxvY2FsZUNvbXBhcmUoaSkpO2NvbnN0IG49ZS5tYXAocz0+KHtbYCR7dH0vJHtzfWBdOltyXX0pKTtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwuLi5uKX1mdW5jdGlvbiBkRCh0KXtyZXR1cm4gQ3UodCksYHVybjpyZWNhcDoke0xyZSh0KS5yZXBsYWNlKC89L2csIiIpfWB9ZnVuY3Rpb24gVjAodCl7Y29uc3QgZT1VcmUodC5yZXBsYWNlKCJ1cm46cmVjYXA6IiwiIikpO3JldHVybiBDdShlKSxlfWZ1bmN0aW9uIHpyZSh0LGUscil7Y29uc3Qgbj1GcmUodCxlLHIpO3JldHVybiBkRChuKX1mdW5jdGlvbiBXcmUodCl7cmV0dXJuIHQmJnQuaW5jbHVkZXMoInVybjpyZWNhcDoiKX1mdW5jdGlvbiBIcmUodCxlKXtjb25zdCByPVYwKHQpLG49VjAoZSkscz1xcmUocixuKTtyZXR1cm4gZEQocyl9ZnVuY3Rpb24gcXJlKHQsZSl7Q3UodCksQ3UoZSk7Y29uc3Qgcj1PYmplY3Qua2V5cyh0LmF0dCkuY29uY2F0KE9iamVjdC5rZXlzKGUuYXR0KSkuc29ydCgocyxpKT0+cy5sb2NhbGVDb21wYXJlKGkpKSxuPXthdHQ6e319O3JldHVybiByLmZvckVhY2gocz0+e3ZhciBpLG87T2JqZWN0LmtleXMoKChpPXQuYXR0KT09bnVsbD92b2lkIDA6aVtzXSl8fHt9KS5jb25jYXQoT2JqZWN0LmtleXMoKChvPWUuYXR0KT09bnVsbD92b2lkIDA6b1tzXSl8fHt9KSkuc29ydCgoYSxjKT0+YS5sb2NhbGVDb21wYXJlKGMpKS5mb3JFYWNoKGE9Pnt2YXIgYyxsO24uYXR0W3NdPU1yZSgkcmUoe30sbi5hdHRbc10pLHtbYV06KChjPXQuYXR0W3NdKT09bnVsbD92b2lkIDA6Y1thXSl8fCgobD1lLmF0dFtzXSk9PW51bGw/dm9pZCAwOmxbYV0pfSl9KX0pLG59ZnVuY3Rpb24gVnJlKHQ9IiIsZSl7Q3UoZSk7Y29uc3Qgcj0iSSBmdXJ0aGVyIGF1dGhvcml6ZSB0aGUgc3RhdGVkIFVSSSB0byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBvbiBteSBiZWhhbGY6ICI7aWYodC5pbmNsdWRlcyhyKSlyZXR1cm4gdDtjb25zdCBuPVtdO2xldCBzPTA7T2JqZWN0LmtleXMoZS5hdHQpLmZvckVhY2goYT0+e2NvbnN0IGM9T2JqZWN0LmtleXMoZS5hdHRbYV0pLm1hcCh1PT4oe2FiaWxpdHk6dS5zcGxpdCgiLyIpWzBdLGFjdGlvbjp1LnNwbGl0KCIvIilbMV19KSk7Yy5zb3J0KCh1LGgpPT51LmFjdGlvbi5sb2NhbGVDb21wYXJlKGguYWN0aW9uKSk7Y29uc3QgbD17fTtjLmZvckVhY2godT0+e2xbdS5hYmlsaXR5XXx8KGxbdS5hYmlsaXR5XT1bXSksbFt1LmFiaWxpdHldLnB1c2godS5hY3Rpb24pfSk7Y29uc3QgZD1PYmplY3Qua2V5cyhsKS5tYXAodT0+KHMrKyxgKCR7c30pICcke3V9JzogJyR7bFt1XS5qb2luKCInLCAnIil9JyBmb3IgJyR7YX0nLmApKTtuLnB1c2goZC5qb2luKCIsICIpLnJlcGxhY2UoIi4sIiwiLiIpKX0pO2NvbnN0IGk9bi5qb2luKCIgIiksbz1gJHtyfSR7aX1gO3JldHVybmAke3Q/dCsiICI6IiJ9JHtvfWB9ZnVuY3Rpb24gdGsodCl7dmFyIGU7Y29uc3Qgcj1WMCh0KTtDdShyKTtjb25zdCBuPShlPXIuYXR0KT09bnVsbD92b2lkIDA6ZS5laXAxNTU7cmV0dXJuIG4/T2JqZWN0LmtleXMobikubWFwKHM9PnMuc3BsaXQoIi8iKVsxXSk6W119ZnVuY3Rpb24gcmsodCl7Y29uc3QgZT1WMCh0KTtDdShlKTtjb25zdCByPVtdO3JldHVybiBPYmplY3QudmFsdWVzKGUuYXR0KS5mb3JFYWNoKG49PntPYmplY3QudmFsdWVzKG4pLmZvckVhY2gocz0+e3ZhciBpOyhpPXM/LlswXSkhPW51bGwmJmkuY2hhaW5zJiZyLnB1c2goc1swXS5jaGFpbnMpfSl9KSxbLi4ubmV3IFNldChyLmZsYXQoKSldfWZ1bmN0aW9uIGp3KHQpe2lmKCF0KXJldHVybjtjb25zdCBlPXQ/Llt0Lmxlbmd0aC0xXTtyZXR1cm4gV3JlKGUpP2U6dm9pZCAwfWZ1bmN0aW9uIFcyKHQpe2lmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcih0KXx8dDwwKXRocm93IG5ldyBFcnJvcigicG9zaXRpdmUgaW50ZWdlciBleHBlY3RlZCwgZ290ICIrdCl9ZnVuY3Rpb24gaEQodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJnQuY29uc3RydWN0b3IubmFtZT09PSJVaW50OEFycmF5In1mdW5jdGlvbiBDaSh0LC4uLmUpe2lmKCFoRCh0KSl0aHJvdyBuZXcgRXJyb3IoIlVpbnQ4QXJyYXkgZXhwZWN0ZWQiKTtpZihlLmxlbmd0aD4wJiYhZS5pbmNsdWRlcyh0Lmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKCJVaW50OEFycmF5IGV4cGVjdGVkIG9mIGxlbmd0aCAiK2UrIiwgZ290IGxlbmd0aD0iK3QubGVuZ3RoKX1mdW5jdGlvbiBuayh0LGU9ITApe2lmKHQuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiSGFzaCBpbnN0YW5jZSBoYXMgYmVlbiBkZXN0cm95ZWQiKTtpZihlJiZ0LmZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiSGFzaCNkaWdlc3QoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCIpfWZ1bmN0aW9uIEdyZSh0LGUpe0NpKHQpO2NvbnN0IHI9ZS5vdXRwdXRMZW47aWYodC5sZW5ndGg8cil0aHJvdyBuZXcgRXJyb3IoImRpZ2VzdEludG8oKSBleHBlY3RzIG91dHB1dCBidWZmZXIgb2YgbGVuZ3RoIGF0IGxlYXN0ICIrcil9ZnVuY3Rpb24gaWsodCl7aWYodHlwZW9mIHQhPSJib29sZWFuIil0aHJvdyBuZXcgRXJyb3IoYGJvb2xlYW4gZXhwZWN0ZWQsIG5vdCAke3R9YCl9Y29uc3QgZmM9dD0+bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCxNYXRoLmZsb29yKHQuYnl0ZUxlbmd0aC80KSksS3JlPXQ9Pm5ldyBEYXRhVmlldyh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKSxacmU9bmV3IFVpbnQ4QXJyYXkobmV3IFVpbnQzMkFycmF5KFsyODc0NTQwMjBdKS5idWZmZXIpWzBdPT09Njg7aWYoIVpyZSl0aHJvdyBuZXcgRXJyb3IoIk5vbiBsaXR0bGUtZW5kaWFuIGhhcmR3YXJlIGlzIG5vdCBzdXBwb3J0ZWQiKTtmdW5jdGlvbiBZcmUodCl7aWYodHlwZW9mIHQhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigic3RyaW5nIGV4cGVjdGVkIik7cmV0dXJuIG5ldyBVaW50OEFycmF5KG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh0KSl9ZnVuY3Rpb24gbXgodCl7aWYodHlwZW9mIHQ9PSJzdHJpbmciKXQ9WXJlKHQpO2Vsc2UgaWYoaEQodCkpdD1neCh0KTtlbHNlIHRocm93IG5ldyBFcnJvcigiVWludDhBcnJheSBleHBlY3RlZCwgZ290ICIrdHlwZW9mIHQpO3JldHVybiB0fWZ1bmN0aW9uIEpyZSh0LGUpe2lmKGU9PW51bGx8fHR5cGVvZiBlIT0ib2JqZWN0Iil0aHJvdyBuZXcgRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBkZWZpbmVkIik7cmV0dXJuIE9iamVjdC5hc3NpZ24odCxlKX1mdW5jdGlvbiBYcmUodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2xldCByPTA7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspcnw9dFtuXV5lW25dO3JldHVybiByPT09MH1jb25zdCBRcmU9KHQsZSk9PntmdW5jdGlvbiByKG4sLi4ucyl7aWYoQ2kobiksdC5ub25jZUxlbmd0aCE9PXZvaWQgMCl7Y29uc3QgbD1zWzBdO2lmKCFsKXRocm93IG5ldyBFcnJvcigibm9uY2UgLyBpdiByZXF1aXJlZCIpO3QudmFyU2l6ZU5vbmNlP0NpKGwpOkNpKGwsdC5ub25jZUxlbmd0aCl9Y29uc3QgaT10LnRhZ0xlbmd0aDtpJiZzWzFdIT09dm9pZCAwJiZDaShzWzFdKTtjb25zdCBvPWUobiwuLi5zKSxhPShsLGQpPT57aWYoZCE9PXZvaWQgMCl7aWYobCE9PTIpdGhyb3cgbmV3IEVycm9yKCJjaXBoZXIgb3V0cHV0IG5vdCBzdXBwb3J0ZWQiKTtDaShkKX19O2xldCBjPSExO3JldHVybntlbmNyeXB0KGwsZCl7aWYoYyl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBlbmNyeXB0KCkgdHdpY2Ugd2l0aCBzYW1lIGtleSArIG5vbmNlIik7cmV0dXJuIGM9ITAsQ2kobCksYShvLmVuY3J5cHQubGVuZ3RoLGQpLG8uZW5jcnlwdChsLGQpfSxkZWNyeXB0KGwsZCl7aWYoQ2kobCksaSYmbC5sZW5ndGg8aSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2lwaGVydGV4dCBsZW5ndGg6IHNtYWxsZXIgdGhhbiB0YWdMZW5ndGg9IitpKTtyZXR1cm4gYShvLmRlY3J5cHQubGVuZ3RoLGQpLG8uZGVjcnlwdChsLGQpfX19cmV0dXJuIE9iamVjdC5hc3NpZ24ocix0KSxyfTtmdW5jdGlvbiBzayh0LGUscj0hMCl7aWYoZT09PXZvaWQgMClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkodCk7aWYoZS5sZW5ndGghPT10KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBvdXRwdXQgbGVuZ3RoLCBleHBlY3RlZCAiK3QrIiwgZ290OiAiK2UubGVuZ3RoKTtpZihyJiYhZW5lKGUpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBvdXRwdXQsIG11c3QgYmUgYWxpZ25lZCIpO3JldHVybiBlfWZ1bmN0aW9uIG9rKHQsZSxyLG4pe2lmKHR5cGVvZiB0LnNldEJpZ1VpbnQ2ND09ImZ1bmN0aW9uIilyZXR1cm4gdC5zZXRCaWdVaW50NjQoZSxyLG4pO2NvbnN0IHM9QmlnSW50KDMyKSxpPUJpZ0ludCg0Mjk0OTY3Mjk1KSxvPU51bWJlcihyPj5zJmkpLGE9TnVtYmVyKHImaSk7dC5zZXRVaW50MzIoZSs0LG8sbiksdC5zZXRVaW50MzIoZSswLGEsbil9ZnVuY3Rpb24gZW5lKHQpe3JldHVybiB0LmJ5dGVPZmZzZXQlND09PTB9ZnVuY3Rpb24gZ3godCl7cmV0dXJuIFVpbnQ4QXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBraCguLi50KXtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLmZpbGwoMCl9Y29uc3QgcEQ9dD0+VWludDhBcnJheS5mcm9tKHQuc3BsaXQoIiIpLm1hcChlPT5lLmNoYXJDb2RlQXQoMCkpKSx0bmU9cEQoImV4cGFuZCAxNi1ieXRlIGsiKSxybmU9cEQoImV4cGFuZCAzMi1ieXRlIGsiKSxubmU9ZmModG5lKSxpbmU9ZmMocm5lKTtmdW5jdGlvbiAkdCh0LGUpe3JldHVybiB0PDxlfHQ+Pj4zMi1lfWZ1bmN0aW9uIHd4KHQpe3JldHVybiB0LmJ5dGVPZmZzZXQlND09PTB9Y29uc3Qga2c9NjQsc25lPTE2LGZEPTIqKjMyLTEsYWs9bmV3IFVpbnQzMkFycmF5O2Z1bmN0aW9uIG9uZSh0LGUscixuLHMsaSxvLGEpe2NvbnN0IGM9cy5sZW5ndGgsbD1uZXcgVWludDhBcnJheShrZyksZD1mYyhsKSx1PXd4KHMpJiZ3eChpKSxoPXU/ZmMocyk6YWsscD11P2ZjKGkpOmFrO2ZvcihsZXQgZj0wO2Y8YztvKyspe2lmKHQoZSxyLG4sZCxvLGEpLG8+PWZEKXRocm93IG5ldyBFcnJvcigiYXJ4OiBjb3VudGVyIG92ZXJmbG93Iik7Y29uc3QgbT1NYXRoLm1pbihrZyxjLWYpO2lmKHUmJm09PT1rZyl7Y29uc3Qgdz1mLzQ7aWYoZiU0IT09MCl0aHJvdyBuZXcgRXJyb3IoImFyeDogaW52YWxpZCBibG9jayBwb3NpdGlvbiIpO2ZvcihsZXQgZz0wLHY7ZzxzbmU7ZysrKXY9dytnLHBbdl09aFt2XV5kW2ddO2YrPWtnO2NvbnRpbnVlfWZvcihsZXQgdz0wLGc7dzxtO3crKylnPWYrdyxpW2ddPXNbZ11ebFt3XTtmKz1tfX1mdW5jdGlvbiBhbmUodCxlKXtjb25zdHthbGxvd1Nob3J0S2V5czpyLGV4dGVuZE5vbmNlRm46bixjb3VudGVyTGVuZ3RoOnMsY291bnRlclJpZ2h0Omkscm91bmRzOm99PUpyZSh7YWxsb3dTaG9ydEtleXM6ITEsY291bnRlckxlbmd0aDo4LGNvdW50ZXJSaWdodDohMSxyb3VuZHM6MjB9LGUpO2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiY29yZSBtdXN0IGJlIGEgZnVuY3Rpb24iKTtyZXR1cm4gVzIocyksVzIobyksaWsoaSksaWsociksKGEsYyxsLGQsdT0wKT0+e0NpKGEpLENpKGMpLENpKGwpO2NvbnN0IGg9bC5sZW5ndGg7aWYoZD09PXZvaWQgMCYmKGQ9bmV3IFVpbnQ4QXJyYXkoaCkpLENpKGQpLFcyKHUpLHU8MHx8dT49ZkQpdGhyb3cgbmV3IEVycm9yKCJhcng6IGNvdW50ZXIgb3ZlcmZsb3ciKTtpZihkLmxlbmd0aDxoKXRocm93IG5ldyBFcnJvcihgYXJ4OiBvdXRwdXQgKCR7ZC5sZW5ndGh9KSBpcyBzaG9ydGVyIHRoYW4gZGF0YSAoJHtofSlgKTtjb25zdCBwPVtdO2xldCBmPWEubGVuZ3RoLG0sdztpZihmPT09MzIpcC5wdXNoKG09Z3goYSkpLHc9aW5lO2Vsc2UgaWYoZj09PTE2JiZyKW09bmV3IFVpbnQ4QXJyYXkoMzIpLG0uc2V0KGEpLG0uc2V0KGEsMTYpLHc9bm5lLHAucHVzaChtKTtlbHNlIHRocm93IG5ldyBFcnJvcihgYXJ4OiBpbnZhbGlkIDMyLWJ5dGUga2V5LCBnb3QgbGVuZ3RoPSR7Zn1gKTt3eChjKXx8cC5wdXNoKGM9Z3goYykpO2NvbnN0IGc9ZmMobSk7aWYobil7aWYoYy5sZW5ndGghPT0yNCl0aHJvdyBuZXcgRXJyb3IoImFyeDogZXh0ZW5kZWQgbm9uY2UgbXVzdCBiZSAyNCBieXRlcyIpO24odyxnLGZjKGMuc3ViYXJyYXkoMCwxNikpLGcpLGM9Yy5zdWJhcnJheSgxNil9Y29uc3Qgdj0xNi1zO2lmKHYhPT1jLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYGFyeDogbm9uY2UgbXVzdCBiZSAke3Z9IG9yIDE2IGJ5dGVzYCk7aWYodiE9PTEyKXtjb25zdCB4PW5ldyBVaW50OEFycmF5KDEyKTt4LnNldChjLGk/MDoxMi1jLmxlbmd0aCksYz14LHAucHVzaChjKX1jb25zdCBFPWZjKGMpO3JldHVybiBvbmUodCx3LGcsRSxsLGQsdSxvKSxraCguLi5wKSxkfX1jb25zdCBtbj0odCxlKT0+dFtlKytdJjI1NXwodFtlKytdJjI1NSk8PDg7Y2xhc3MgY25le2NvbnN0cnVjdG9yKGUpe3RoaXMuYmxvY2tMZW49MTYsdGhpcy5vdXRwdXRMZW49MTYsdGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTYpLHRoaXMucj1uZXcgVWludDE2QXJyYXkoMTApLHRoaXMuaD1uZXcgVWludDE2QXJyYXkoMTApLHRoaXMucGFkPW5ldyBVaW50MTZBcnJheSg4KSx0aGlzLnBvcz0wLHRoaXMuZmluaXNoZWQ9ITEsZT1teChlKSxDaShlLDMyKTtjb25zdCByPW1uKGUsMCksbj1tbihlLDIpLHM9bW4oZSw0KSxpPW1uKGUsNiksbz1tbihlLDgpLGE9bW4oZSwxMCksYz1tbihlLDEyKSxsPW1uKGUsMTQpO3RoaXMuclswXT1yJjgxOTEsdGhpcy5yWzFdPShyPj4+MTN8bjw8MykmODE5MSx0aGlzLnJbMl09KG4+Pj4xMHxzPDw2KSY3OTM5LHRoaXMuclszXT0ocz4+Pjd8aTw8OSkmODE5MSx0aGlzLnJbNF09KGk+Pj40fG88PDEyKSYyNTUsdGhpcy5yWzVdPW8+Pj4xJjgxOTAsdGhpcy5yWzZdPShvPj4+MTR8YTw8MikmODE5MSx0aGlzLnJbN109KGE+Pj4xMXxjPDw1KSY4MDY1LHRoaXMucls4XT0oYz4+Pjh8bDw8OCkmODE5MSx0aGlzLnJbOV09bD4+PjUmMTI3O2ZvcihsZXQgZD0wO2Q8ODtkKyspdGhpcy5wYWRbZF09bW4oZSwxNisyKmQpfXByb2Nlc3MoZSxyLG49ITEpe2NvbnN0IHM9bj8wOjIwNDgse2g6aSxyOm99PXRoaXMsYT1vWzBdLGM9b1sxXSxsPW9bMl0sZD1vWzNdLHU9b1s0XSxoPW9bNV0scD1vWzZdLGY9b1s3XSxtPW9bOF0sdz1vWzldLGc9bW4oZSxyKzApLHY9bW4oZSxyKzIpLEU9bW4oZSxyKzQpLHg9bW4oZSxyKzYpLF89bW4oZSxyKzgpLGs9bW4oZSxyKzEwKSxBPW1uKGUscisxMiksTT1tbihlLHIrMTQpO2xldCBQPWlbMF0rKGcmODE5MSksaj1pWzFdKygoZz4+PjEzfHY8PDMpJjgxOTEpLFU9aVsyXSsoKHY+Pj4xMHxFPDw2KSY4MTkxKSxWPWlbM10rKChFPj4+N3x4PDw5KSY4MTkxKSxGPWlbNF0rKCh4Pj4+NHxfPDwxMikmODE5MSksYj1pWzVdKyhfPj4+MSY4MTkxKSx5PWlbNl0rKChfPj4+MTR8azw8MikmODE5MSksQz1pWzddKygoaz4+PjExfEE8PDUpJjgxOTEpLFQ9aVs4XSsoKEE+Pj44fE08PDgpJjgxOTEpLE49aVs5XSsoTT4+PjV8cyksUj0wLEk9UitQKmEraiooNSp3KStVKig1Km0pK1YqKDUqZikrRiooNSpwKTtSPUk+Pj4xMyxJJj04MTkxLEkrPWIqKDUqaCkreSooNSp1KStDKig1KmQpK1QqKDUqbCkrTiooNSpjKSxSKz1JPj4+MTMsSSY9ODE5MTtsZXQgQj1SK1AqYytqKmErVSooNSp3KStWKig1Km0pK0YqKDUqZik7Uj1CPj4+MTMsQiY9ODE5MSxCKz1iKig1KnApK3kqKDUqaCkrQyooNSp1KStUKig1KmQpK04qKDUqbCksUis9Qj4+PjEzLEImPTgxOTE7bGV0IFM9UitQKmwraipjK1UqYStWKig1KncpK0YqKDUqbSk7Uj1TPj4+MTMsUyY9ODE5MSxTKz1iKig1KmYpK3kqKDUqcCkrQyooNSpoKStUKig1KnUpK04qKDUqZCksUis9Uz4+PjEzLFMmPTgxOTE7bGV0IHo9UitQKmQraipsK1UqYytWKmErRiooNSp3KTtSPXo+Pj4xMyx6Jj04MTkxLHorPWIqKDUqbSkreSooNSpmKStDKig1KnApK1QqKDUqaCkrTiooNSp1KSxSKz16Pj4+MTMseiY9ODE5MTtsZXQgUT1SK1AqdStqKmQrVSpsK1YqYytGKmE7Uj1RPj4+MTMsUSY9ODE5MSxRKz1iKig1KncpK3kqKDUqbSkrQyooNSpmKStUKig1KnApK04qKDUqaCksUis9UT4+PjEzLFEmPTgxOTE7bGV0IHJlPVIrUCpoK2oqdStVKmQrVipsK0YqYztSPXJlPj4+MTMscmUmPTgxOTEscmUrPWIqYSt5Kig1KncpK0MqKDUqbSkrVCooNSpmKStOKig1KnApLFIrPXJlPj4+MTMscmUmPTgxOTE7bGV0IEo9UitQKnAraipoK1UqdStWKmQrRipsO1I9Sj4+PjEzLEomPTgxOTEsSis9YipjK3kqYStDKig1KncpK1QqKDUqbSkrTiooNSpmKSxSKz1KPj4+MTMsSiY9ODE5MTtsZXQgZWU9UitQKmYraipwK1UqaCtWKnUrRipkO1I9ZWU+Pj4xMyxlZSY9ODE5MSxlZSs9YipsK3kqYytDKmErVCooNSp3KStOKig1Km0pLFIrPWVlPj4+MTMsZWUmPTgxOTE7bGV0IHRlPVIrUCptK2oqZitVKnArVipoK0YqdTtSPXRlPj4+MTMsdGUmPTgxOTEsdGUrPWIqZCt5KmwrQypjK1QqYStOKig1KncpLFIrPXRlPj4+MTMsdGUmPTgxOTE7bGV0IGhlPVIrUCp3K2oqbStVKmYrVipwK0YqaDtSPWhlPj4+MTMsaGUmPTgxOTEsaGUrPWIqdSt5KmQrQypsK1QqYytOKmEsUis9aGU+Pj4xMyxoZSY9ODE5MSxSPShSPDwyKStSfDAsUj1SK0l8MCxJPVImODE5MSxSPVI+Pj4xMyxCKz1SLGlbMF09SSxpWzFdPUIsaVsyXT1TLGlbM109eixpWzRdPVEsaVs1XT1yZSxpWzZdPUosaVs3XT1lZSxpWzhdPXRlLGlbOV09aGV9ZmluYWxpemUoKXtjb25zdHtoOmUscGFkOnJ9PXRoaXMsbj1uZXcgVWludDE2QXJyYXkoMTApO2xldCBzPWVbMV0+Pj4xMztlWzFdJj04MTkxO2ZvcihsZXQgYT0yO2E8MTA7YSsrKWVbYV0rPXMscz1lW2FdPj4+MTMsZVthXSY9ODE5MTtlWzBdKz1zKjUscz1lWzBdPj4+MTMsZVswXSY9ODE5MSxlWzFdKz1zLHM9ZVsxXT4+PjEzLGVbMV0mPTgxOTEsZVsyXSs9cyxuWzBdPWVbMF0rNSxzPW5bMF0+Pj4xMyxuWzBdJj04MTkxO2ZvcihsZXQgYT0xO2E8MTA7YSsrKW5bYV09ZVthXStzLHM9blthXT4+PjEzLG5bYV0mPTgxOTE7bls5XS09ODE5MjtsZXQgaT0oc14xKS0xO2ZvcihsZXQgYT0wO2E8MTA7YSsrKW5bYV0mPWk7aT1+aTtmb3IobGV0IGE9MDthPDEwO2ErKyllW2FdPWVbYV0maXxuW2FdO2VbMF09KGVbMF18ZVsxXTw8MTMpJjY1NTM1LGVbMV09KGVbMV0+Pj4zfGVbMl08PDEwKSY2NTUzNSxlWzJdPShlWzJdPj4+NnxlWzNdPDw3KSY2NTUzNSxlWzNdPShlWzNdPj4+OXxlWzRdPDw0KSY2NTUzNSxlWzRdPShlWzRdPj4+MTJ8ZVs1XTw8MXxlWzZdPDwxNCkmNjU1MzUsZVs1XT0oZVs2XT4+PjJ8ZVs3XTw8MTEpJjY1NTM1LGVbNl09KGVbN10+Pj41fGVbOF08PDgpJjY1NTM1LGVbN109KGVbOF0+Pj44fGVbOV08PDUpJjY1NTM1O2xldCBvPWVbMF0rclswXTtlWzBdPW8mNjU1MzU7Zm9yKGxldCBhPTE7YTw4O2ErKylvPShlW2FdK3JbYV18MCkrKG8+Pj4xNil8MCxlW2FdPW8mNjU1MzU7a2gobil9dXBkYXRlKGUpe25rKHRoaXMpO2NvbnN0e2J1ZmZlcjpyLGJsb2NrTGVuOm59PXRoaXM7ZT1teChlKTtjb25zdCBzPWUubGVuZ3RoO2ZvcihsZXQgaT0wO2k8czspe2NvbnN0IG89TWF0aC5taW4obi10aGlzLnBvcyxzLWkpO2lmKG89PT1uKXtmb3IoO248PXMtaTtpKz1uKXRoaXMucHJvY2VzcyhlLGkpO2NvbnRpbnVlfXIuc2V0KGUuc3ViYXJyYXkoaSxpK28pLHRoaXMucG9zKSx0aGlzLnBvcys9byxpKz1vLHRoaXMucG9zPT09biYmKHRoaXMucHJvY2VzcyhyLDAsITEpLHRoaXMucG9zPTApfXJldHVybiB0aGlzfWRlc3Ryb3koKXtraCh0aGlzLmgsdGhpcy5yLHRoaXMuYnVmZmVyLHRoaXMucGFkKX1kaWdlc3RJbnRvKGUpe25rKHRoaXMpLEdyZShlLHRoaXMpLHRoaXMuZmluaXNoZWQ9ITA7Y29uc3R7YnVmZmVyOnIsaDpufT10aGlzO2xldHtwb3M6c309dGhpcztpZihzKXtmb3IocltzKytdPTE7czwxNjtzKyspcltzXT0wO3RoaXMucHJvY2VzcyhyLDAsITApfXRoaXMuZmluYWxpemUoKTtsZXQgaT0wO2ZvcihsZXQgbz0wO288ODtvKyspZVtpKytdPW5bb10+Pj4wLGVbaSsrXT1uW29dPj4+ODtyZXR1cm4gZX1kaWdlc3QoKXtjb25zdHtidWZmZXI6ZSxvdXRwdXRMZW46cn09dGhpczt0aGlzLmRpZ2VzdEludG8oZSk7Y29uc3Qgbj1lLnNsaWNlKDAscik7cmV0dXJuIHRoaXMuZGVzdHJveSgpLG59fWZ1bmN0aW9uIGxuZSh0KXtjb25zdCBlPShuLHMpPT50KHMpLnVwZGF0ZShteChuKSkuZGlnZXN0KCkscj10KG5ldyBVaW50OEFycmF5KDMyKSk7cmV0dXJuIGUub3V0cHV0TGVuPXIub3V0cHV0TGVuLGUuYmxvY2tMZW49ci5ibG9ja0xlbixlLmNyZWF0ZT1uPT50KG4pLGV9Y29uc3QgdW5lPWxuZSh0PT5uZXcgY25lKHQpKTtmdW5jdGlvbiBkbmUodCxlLHIsbixzLGk9MjApe2xldCBvPXRbMF0sYT10WzFdLGM9dFsyXSxsPXRbM10sZD1lWzBdLHU9ZVsxXSxoPWVbMl0scD1lWzNdLGY9ZVs0XSxtPWVbNV0sdz1lWzZdLGc9ZVs3XSx2PXMsRT1yWzBdLHg9clsxXSxfPXJbMl0saz1vLEE9YSxNPWMsUD1sLGo9ZCxVPXUsVj1oLEY9cCxiPWYseT1tLEM9dyxUPWcsTj12LFI9RSxJPXgsQj1fO2ZvcihsZXQgej0wO3o8aTt6Kz0yKWs9aytqfDAsTj0kdChOXmssMTYpLGI9YitOfDAsaj0kdChqXmIsMTIpLGs9aytqfDAsTj0kdChOXmssOCksYj1iK058MCxqPSR0KGpeYiw3KSxBPUErVXwwLFI9JHQoUl5BLDE2KSx5PXkrUnwwLFU9JHQoVV55LDEyKSxBPUErVXwwLFI9JHQoUl5BLDgpLHk9eStSfDAsVT0kdChVXnksNyksTT1NK1Z8MCxJPSR0KEleTSwxNiksQz1DK0l8MCxWPSR0KFZeQywxMiksTT1NK1Z8MCxJPSR0KEleTSw4KSxDPUMrSXwwLFY9JHQoVl5DLDcpLFA9UCtGfDAsQj0kdChCXlAsMTYpLFQ9VCtCfDAsRj0kdChGXlQsMTIpLFA9UCtGfDAsQj0kdChCXlAsOCksVD1UK0J8MCxGPSR0KEZeVCw3KSxrPWsrVXwwLEI9JHQoQl5rLDE2KSxDPUMrQnwwLFU9JHQoVV5DLDEyKSxrPWsrVXwwLEI9JHQoQl5rLDgpLEM9QytCfDAsVT0kdChVXkMsNyksQT1BK1Z8MCxOPSR0KE5eQSwxNiksVD1UK058MCxWPSR0KFZeVCwxMiksQT1BK1Z8MCxOPSR0KE5eQSw4KSxUPVQrTnwwLFY9JHQoVl5ULDcpLE09TStGfDAsUj0kdChSXk0sMTYpLGI9YitSfDAsRj0kdChGXmIsMTIpLE09TStGfDAsUj0kdChSXk0sOCksYj1iK1J8MCxGPSR0KEZeYiw3KSxQPVAranwwLEk9JHQoSV5QLDE2KSx5PXkrSXwwLGo9JHQoal55LDEyKSxQPVAranwwLEk9JHQoSV5QLDgpLHk9eStJfDAsaj0kdChqXnksNyk7bGV0IFM9MDtuW1MrK109bytrfDAsbltTKytdPWErQXwwLG5bUysrXT1jK018MCxuW1MrK109bCtQfDAsbltTKytdPWQranwwLG5bUysrXT11K1V8MCxuW1MrK109aCtWfDAsbltTKytdPXArRnwwLG5bUysrXT1mK2J8MCxuW1MrK109bSt5fDAsbltTKytdPXcrQ3wwLG5bUysrXT1nK1R8MCxuW1MrK109ditOfDAsbltTKytdPUUrUnwwLG5bUysrXT14K0l8MCxuW1MrK109XytCfDB9Y29uc3QgaG5lPWFuZShkbmUse2NvdW50ZXJSaWdodDohMSxjb3VudGVyTGVuZ3RoOjQsYWxsb3dTaG9ydEtleXM6ITF9KSxwbmU9bmV3IFVpbnQ4QXJyYXkoMTYpLGNrPSh0LGUpPT57dC51cGRhdGUoZSk7Y29uc3Qgcj1lLmxlbmd0aCUxNjtyJiZ0LnVwZGF0ZShwbmUuc3ViYXJyYXkocikpfSxmbmU9bmV3IFVpbnQ4QXJyYXkoMzIpO2Z1bmN0aW9uIGxrKHQsZSxyLG4scyl7Y29uc3QgaT10KGUscixmbmUpLG89dW5lLmNyZWF0ZShpKTtzJiZjayhvLHMpLGNrKG8sbik7Y29uc3QgYT1uZXcgVWludDhBcnJheSgxNiksYz1LcmUoYSk7b2soYywwLEJpZ0ludChzP3MubGVuZ3RoOjApLCEwKSxvayhjLDgsQmlnSW50KG4ubGVuZ3RoKSwhMCksby51cGRhdGUoYSk7Y29uc3QgbD1vLmRpZ2VzdCgpO3JldHVybiBraChpLGEpLGx9Y29uc3QgbW5lPXQ9PihlLHIsbik9Pih7ZW5jcnlwdChzLGkpe2NvbnN0IG89cy5sZW5ndGg7aT1zayhvKzE2LGksITEpLGkuc2V0KHMpO2NvbnN0IGE9aS5zdWJhcnJheSgwLC0xNik7dChlLHIsYSxhLDEpO2NvbnN0IGM9bGsodCxlLHIsYSxuKTtyZXR1cm4gaS5zZXQoYyxvKSxraChjKSxpfSxkZWNyeXB0KHMsaSl7aT1zayhzLmxlbmd0aC0xNixpLCExKTtjb25zdCBvPXMuc3ViYXJyYXkoMCwtMTYpLGE9cy5zdWJhcnJheSgtMTYpLGM9bGsodCxlLHIsbyxuKTtpZighWHJlKGEsYykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHRhZyIpO3JldHVybiBpLnNldChzLnN1YmFycmF5KDAsLTE2KSksdChlLHIsaSxpLDEpLGtoKGMpLGl9fSksbUQ9UXJlKHtibG9ja1NpemU6NjQsbm9uY2VMZW5ndGg6MTIsdGFnTGVuZ3RoOjE2fSxtbmUoaG5lKSk7bGV0IGdEPWNsYXNzIGV4dGVuZHMgQjZ7Y29uc3RydWN0b3IoZSxyKXtzdXBlcigpLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5kZXN0cm95ZWQ9ITEsRDYoZSk7Y29uc3Qgbj1faChyKTtpZih0aGlzLmlIYXNoPWUuY3JlYXRlKCksdHlwZW9mIHRoaXMuaUhhc2gudXBkYXRlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgaW5zdGFuY2Ugb2YgY2xhc3Mgd2hpY2ggZXh0ZW5kcyB1dGlscy5IYXNoIik7dGhpcy5ibG9ja0xlbj10aGlzLmlIYXNoLmJsb2NrTGVuLHRoaXMub3V0cHV0TGVuPXRoaXMuaUhhc2gub3V0cHV0TGVuO2NvbnN0IHM9dGhpcy5ibG9ja0xlbixpPW5ldyBVaW50OEFycmF5KHMpO2kuc2V0KG4ubGVuZ3RoPnM/ZS5jcmVhdGUoKS51cGRhdGUobikuZGlnZXN0KCk6bik7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspaVtvXV49NTQ7dGhpcy5pSGFzaC51cGRhdGUoaSksdGhpcy5vSGFzaD1lLmNyZWF0ZSgpO2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKWlbb11ePTEwNjt0aGlzLm9IYXNoLnVwZGF0ZShpKSxpLmZpbGwoMCl9dXBkYXRlKGUpe3JldHVybiB4aCh0aGlzKSx0aGlzLmlIYXNoLnVwZGF0ZShlKSx0aGlzfWRpZ2VzdEludG8oZSl7eGgodGhpcykseTEoZSx0aGlzLm91dHB1dExlbiksdGhpcy5maW5pc2hlZD0hMCx0aGlzLmlIYXNoLmRpZ2VzdEludG8oZSksdGhpcy5vSGFzaC51cGRhdGUoZSksdGhpcy5vSGFzaC5kaWdlc3RJbnRvKGUpLHRoaXMuZGVzdHJveSgpfWRpZ2VzdCgpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5vSGFzaC5vdXRwdXRMZW4pO3JldHVybiB0aGlzLmRpZ2VzdEludG8oZSksZX1fY2xvbmVJbnRvKGUpe2V8fChlPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLHt9KSk7Y29uc3R7b0hhc2g6cixpSGFzaDpuLGZpbmlzaGVkOnMsZGVzdHJveWVkOmksYmxvY2tMZW46byxvdXRwdXRMZW46YX09dGhpcztyZXR1cm4gZT1lLGUuZmluaXNoZWQ9cyxlLmRlc3Ryb3llZD1pLGUuYmxvY2tMZW49byxlLm91dHB1dExlbj1hLGUub0hhc2g9ci5fY2xvbmVJbnRvKGUub0hhc2gpLGUuaUhhc2g9bi5fY2xvbmVJbnRvKGUuaUhhc2gpLGV9ZGVzdHJveSgpe3RoaXMuZGVzdHJveWVkPSEwLHRoaXMub0hhc2guZGVzdHJveSgpLHRoaXMuaUhhc2guZGVzdHJveSgpfX07Y29uc3QgTHk9KHQsZSxyKT0+bmV3IGdEKHQsZSkudXBkYXRlKHIpLmRpZ2VzdCgpO0x5LmNyZWF0ZT0odCxlKT0+bmV3IGdEKHQsZSk7ZnVuY3Rpb24gZ25lKHQsZSxyKXtyZXR1cm4gRDYodCkscj09PXZvaWQgMCYmKHI9bmV3IFVpbnQ4QXJyYXkodC5vdXRwdXRMZW4pKSxMeSh0LF9oKHIpLF9oKGUpKX1jb25zdCBIMj1uZXcgVWludDhBcnJheShbMF0pLHVrPW5ldyBVaW50OEFycmF5O2Z1bmN0aW9uIHduZSh0LGUscixuPTMyKXtpZihENih0KSxxMChuKSxuPjI1NSp0Lm91dHB1dExlbil0aHJvdyBuZXcgRXJyb3IoIkxlbmd0aCBzaG91bGQgYmUgPD0gMjU1Kkhhc2hMZW4iKTtjb25zdCBzPU1hdGguY2VpbChuL3Qub3V0cHV0TGVuKTtyPT09dm9pZCAwJiYocj11ayk7Y29uc3QgaT1uZXcgVWludDhBcnJheShzKnQub3V0cHV0TGVuKSxvPUx5LmNyZWF0ZSh0LGUpLGE9by5fY2xvbmVJbnRvKCksYz1uZXcgVWludDhBcnJheShvLm91dHB1dExlbik7Zm9yKGxldCBsPTA7bDxzO2wrKylIMlswXT1sKzEsYS51cGRhdGUobD09PTA/dWs6YykudXBkYXRlKHIpLnVwZGF0ZShIMikuZGlnZXN0SW50byhjKSxpLnNldChjLHQub3V0cHV0TGVuKmwpLG8uX2Nsb25lSW50byhhKTtyZXR1cm4gby5kZXN0cm95KCksYS5kZXN0cm95KCksYy5maWxsKDApLEgyLmZpbGwoMCksaS5zbGljZSgwLG4pfWNvbnN0IGJuZT0odCxlLHIsbixzKT0+d25lKHQsZ25lKHQsZSxyKSxuLHMpO2Z1bmN0aW9uIHluZSh0LGUscixuKXtpZih0eXBlb2YgdC5zZXRCaWdVaW50NjQ9PSJmdW5jdGlvbiIpcmV0dXJuIHQuc2V0QmlnVWludDY0KGUscixuKTtjb25zdCBzPUJpZ0ludCgzMiksaT1CaWdJbnQoNDI5NDk2NzI5NSksbz1OdW1iZXIocj4+cyZpKSxhPU51bWJlcihyJmkpLGM9bj80OjAsbD1uPzA6NDt0LnNldFVpbnQzMihlK2MsbyxuKSx0LnNldFVpbnQzMihlK2wsYSxuKX1mdW5jdGlvbiB2bmUodCxlLHIpe3JldHVybiB0JmVefnQmcn1mdW5jdGlvbiBFbmUodCxlLHIpe3JldHVybiB0JmVedCZyXmUmcn1sZXQgQ25lPWNsYXNzIGV4dGVuZHMgQjZ7Y29uc3RydWN0b3IoZSxyLG4scyl7c3VwZXIoKSx0aGlzLmJsb2NrTGVuPWUsdGhpcy5vdXRwdXRMZW49cix0aGlzLnBhZE9mZnNldD1uLHRoaXMuaXNMRT1zLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5sZW5ndGg9MCx0aGlzLnBvcz0wLHRoaXMuZGVzdHJveWVkPSExLHRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KGUpLHRoaXMudmlldz16Mih0aGlzLmJ1ZmZlcil9dXBkYXRlKGUpe3hoKHRoaXMpO2NvbnN0e3ZpZXc6cixidWZmZXI6bixibG9ja0xlbjpzfT10aGlzO2U9X2goZSk7Y29uc3QgaT1lLmxlbmd0aDtmb3IobGV0IG89MDtvPGk7KXtjb25zdCBhPU1hdGgubWluKHMtdGhpcy5wb3MsaS1vKTtpZihhPT09cyl7Y29uc3QgYz16MihlKTtmb3IoO3M8PWktbztvKz1zKXRoaXMucHJvY2VzcyhjLG8pO2NvbnRpbnVlfW4uc2V0KGUuc3ViYXJyYXkobyxvK2EpLHRoaXMucG9zKSx0aGlzLnBvcys9YSxvKz1hLHRoaXMucG9zPT09cyYmKHRoaXMucHJvY2VzcyhyLDApLHRoaXMucG9zPTApfXJldHVybiB0aGlzLmxlbmd0aCs9ZS5sZW5ndGgsdGhpcy5yb3VuZENsZWFuKCksdGhpc31kaWdlc3RJbnRvKGUpe3hoKHRoaXMpLG5EKGUsdGhpcyksdGhpcy5maW5pc2hlZD0hMDtjb25zdHtidWZmZXI6cix2aWV3Om4sYmxvY2tMZW46cyxpc0xFOml9PXRoaXM7bGV0e3BvczpvfT10aGlzO3JbbysrXT0xMjgsdGhpcy5idWZmZXIuc3ViYXJyYXkobykuZmlsbCgwKSx0aGlzLnBhZE9mZnNldD5zLW8mJih0aGlzLnByb2Nlc3MobiwwKSxvPTApO2ZvcihsZXQgdT1vO3U8czt1Kyspclt1XT0wO3luZShuLHMtOCxCaWdJbnQodGhpcy5sZW5ndGgqOCksaSksdGhpcy5wcm9jZXNzKG4sMCk7Y29uc3QgYT16MihlKSxjPXRoaXMub3V0cHV0TGVuO2lmKGMlNCl0aHJvdyBuZXcgRXJyb3IoIl9zaGEyOiBvdXRwdXRMZW4gc2hvdWxkIGJlIGFsaWduZWQgdG8gMzJiaXQiKTtjb25zdCBsPWMvNCxkPXRoaXMuZ2V0KCk7aWYobD5kLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIl9zaGEyOiBvdXRwdXRMZW4gYmlnZ2VyIHRoYW4gc3RhdGUiKTtmb3IobGV0IHU9MDt1PGw7dSsrKWEuc2V0VWludDMyKDQqdSxkW3VdLGkpfWRpZ2VzdCgpe2NvbnN0e2J1ZmZlcjplLG91dHB1dExlbjpyfT10aGlzO3RoaXMuZGlnZXN0SW50byhlKTtjb25zdCBuPWUuc2xpY2UoMCxyKTtyZXR1cm4gdGhpcy5kZXN0cm95KCksbn1fY2xvbmVJbnRvKGUpe2V8fChlPW5ldyB0aGlzLmNvbnN0cnVjdG9yKSxlLnNldCguLi50aGlzLmdldCgpKTtjb25zdHtibG9ja0xlbjpyLGJ1ZmZlcjpuLGxlbmd0aDpzLGZpbmlzaGVkOmksZGVzdHJveWVkOm8scG9zOmF9PXRoaXM7cmV0dXJuIGUubGVuZ3RoPXMsZS5wb3M9YSxlLmZpbmlzaGVkPWksZS5kZXN0cm95ZWQ9byxzJXImJmUuYnVmZmVyLnNldChuKSxlfX07Y29uc3QgeG5lPW5ldyBVaW50MzJBcnJheShbMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSksWWE9bmV3IFVpbnQzMkFycmF5KFsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV0pLEphPW5ldyBVaW50MzJBcnJheSg2NCk7Y2xhc3MgX25lIGV4dGVuZHMgQ25le2NvbnN0cnVjdG9yKCl7c3VwZXIoNjQsMzIsOCwhMSksdGhpcy5BPVlhWzBdfDAsdGhpcy5CPVlhWzFdfDAsdGhpcy5DPVlhWzJdfDAsdGhpcy5EPVlhWzNdfDAsdGhpcy5FPVlhWzRdfDAsdGhpcy5GPVlhWzVdfDAsdGhpcy5HPVlhWzZdfDAsdGhpcy5IPVlhWzddfDB9Z2V0KCl7Y29uc3R7QTplLEI6cixDOm4sRDpzLEU6aSxGOm8sRzphLEg6Y309dGhpcztyZXR1cm5bZSxyLG4scyxpLG8sYSxjXX1zZXQoZSxyLG4scyxpLG8sYSxjKXt0aGlzLkE9ZXwwLHRoaXMuQj1yfDAsdGhpcy5DPW58MCx0aGlzLkQ9c3wwLHRoaXMuRT1pfDAsdGhpcy5GPW98MCx0aGlzLkc9YXwwLHRoaXMuSD1jfDB9cHJvY2VzcyhlLHIpe2ZvcihsZXQgdT0wO3U8MTY7dSsrLHIrPTQpSmFbdV09ZS5nZXRVaW50MzIociwhMSk7Zm9yKGxldCB1PTE2O3U8NjQ7dSsrKXtjb25zdCBoPUphW3UtMTVdLHA9SmFbdS0yXSxmPXNvKGgsNylec28oaCwxOCleaD4+PjMsbT1zbyhwLDE3KV5zbyhwLDE5KV5wPj4+MTA7SmFbdV09bStKYVt1LTddK2YrSmFbdS0xNl18MH1sZXR7QTpuLEI6cyxDOmksRDpvLEU6YSxGOmMsRzpsLEg6ZH09dGhpcztmb3IobGV0IHU9MDt1PDY0O3UrKyl7Y29uc3QgaD1zbyhhLDYpXnNvKGEsMTEpXnNvKGEsMjUpLHA9ZCtoK3ZuZShhLGMsbCkreG5lW3VdK0phW3VdfDAsZj0oc28obiwyKV5zbyhuLDEzKV5zbyhuLDIyKSkrRW5lKG4scyxpKXwwO2Q9bCxsPWMsYz1hLGE9bytwfDAsbz1pLGk9cyxzPW4sbj1wK2Z8MH1uPW4rdGhpcy5BfDAscz1zK3RoaXMuQnwwLGk9aSt0aGlzLkN8MCxvPW8rdGhpcy5EfDAsYT1hK3RoaXMuRXwwLGM9Yyt0aGlzLkZ8MCxsPWwrdGhpcy5HfDAsZD1kK3RoaXMuSHwwLHRoaXMuc2V0KG4scyxpLG8sYSxjLGwsZCl9cm91bmRDbGVhbigpe0phLmZpbGwoMCl9ZGVzdHJveSgpe3RoaXMuc2V0KDAsMCwwLDAsMCwwLDAsMCksdGhpcy5idWZmZXIuZmlsbCgwKX19Y29uc3QgdjE9aUQoKCk9Pm5ldyBfbmUpOy8qISBub2JsZS1jdXJ2ZXMgLSBNSVQgTGljZW5zZSAoYykgMjAyMiBQYXVsIE1pbGxlciAocGF1bG1pbGxyLmNvbSkgKi9jb25zdCBVeT1CaWdJbnQoMCksRnk9QmlnSW50KDEpLGtuZT1CaWdJbnQoMik7ZnVuY3Rpb24geHUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJnQuY29uc3RydWN0b3IubmFtZT09PSJVaW50OEFycmF5In1mdW5jdGlvbiBFMSh0KXtpZigheHUodCkpdGhyb3cgbmV3IEVycm9yKCJVaW50OEFycmF5IGV4cGVjdGVkIil9ZnVuY3Rpb24gU2godCxlKXtpZih0eXBlb2YgZSE9ImJvb2xlYW4iKXRocm93IG5ldyBFcnJvcih0KyIgYm9vbGVhbiBleHBlY3RlZCwgZ290ICIrZSl9Y29uc3QgU25lPUFycmF5LmZyb20oe2xlbmd0aDoyNTZ9LCh0LGUpPT5lLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpO2Z1bmN0aW9uIEFoKHQpe0UxKHQpO2xldCBlPSIiO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKWUrPVNuZVt0W3JdXTtyZXR1cm4gZX1mdW5jdGlvbiB0aCh0KXtjb25zdCBlPXQudG9TdHJpbmcoMTYpO3JldHVybiBlLmxlbmd0aCYxPyIwIitlOmV9ZnVuY3Rpb24gVTYodCl7aWYodHlwZW9mIHQhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiaGV4IHN0cmluZyBleHBlY3RlZCwgZ290ICIrdHlwZW9mIHQpO3JldHVybiB0PT09IiI/VXk6QmlnSW50KCIweCIrdCl9Y29uc3QgVm89e18wOjQ4LF85OjU3LEE6NjUsRjo3MCxhOjk3LGY6MTAyfTtmdW5jdGlvbiBkayh0KXtpZih0Pj1Wby5fMCYmdDw9Vm8uXzkpcmV0dXJuIHQtVm8uXzA7aWYodD49Vm8uQSYmdDw9Vm8uRilyZXR1cm4gdC0oVm8uQS0xMCk7aWYodD49Vm8uYSYmdDw9Vm8uZilyZXR1cm4gdC0oVm8uYS0xMCl9ZnVuY3Rpb24gVGgodCl7aWYodHlwZW9mIHQhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiaGV4IHN0cmluZyBleHBlY3RlZCwgZ290ICIrdHlwZW9mIHQpO2NvbnN0IGU9dC5sZW5ndGgscj1lLzI7aWYoZSUyKXRocm93IG5ldyBFcnJvcigiaGV4IHN0cmluZyBleHBlY3RlZCwgZ290IHVucGFkZGVkIGhleCBvZiBsZW5ndGggIitlKTtjb25zdCBuPW5ldyBVaW50OEFycmF5KHIpO2ZvcihsZXQgcz0wLGk9MDtzPHI7cysrLGkrPTIpe2NvbnN0IG89ZGsodC5jaGFyQ29kZUF0KGkpKSxhPWRrKHQuY2hhckNvZGVBdChpKzEpKTtpZihvPT09dm9pZCAwfHxhPT09dm9pZCAwKXtjb25zdCBjPXRbaV0rdFtpKzFdO3Rocm93IG5ldyBFcnJvcignaGV4IHN0cmluZyBleHBlY3RlZCwgZ290IG5vbi1oZXggY2hhcmFjdGVyICInK2MrJyIgYXQgaW5kZXggJytpKX1uW3NdPW8qMTYrYX1yZXR1cm4gbn1mdW5jdGlvbiBjdSh0KXtyZXR1cm4gVTYoQWgodCkpfWZ1bmN0aW9uIEcwKHQpe3JldHVybiBFMSh0KSxVNihBaChVaW50OEFycmF5LmZyb20odCkucmV2ZXJzZSgpKSl9ZnVuY3Rpb24gSWgodCxlKXtyZXR1cm4gVGgodC50b1N0cmluZygxNikucGFkU3RhcnQoZSoyLCIwIikpfWZ1bmN0aW9uIGp5KHQsZSl7cmV0dXJuIEloKHQsZSkucmV2ZXJzZSgpfWZ1bmN0aW9uIEFuZSh0KXtyZXR1cm4gVGgodGgodCkpfWZ1bmN0aW9uIHZpKHQsZSxyKXtsZXQgbjtpZih0eXBlb2YgZT09InN0cmluZyIpdHJ5e249VGgoZSl9Y2F0Y2goaSl7dGhyb3cgbmV3IEVycm9yKHQrIiBtdXN0IGJlIGhleCBzdHJpbmcgb3IgVWludDhBcnJheSwgY2F1c2U6ICIraSl9ZWxzZSBpZih4dShlKSluPVVpbnQ4QXJyYXkuZnJvbShlKTtlbHNlIHRocm93IG5ldyBFcnJvcih0KyIgbXVzdCBiZSBoZXggc3RyaW5nIG9yIFVpbnQ4QXJyYXkiKTtjb25zdCBzPW4ubGVuZ3RoO2lmKHR5cGVvZiByPT0ibnVtYmVyIiYmcyE9PXIpdGhyb3cgbmV3IEVycm9yKHQrIiBvZiBsZW5ndGggIityKyIgZXhwZWN0ZWQsIGdvdCAiK3MpO3JldHVybiBufWZ1bmN0aW9uIEswKC4uLnQpe2xldCBlPTA7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IHM9dFtuXTtFMShzKSxlKz1zLmxlbmd0aH1jb25zdCByPW5ldyBVaW50OEFycmF5KGUpO2ZvcihsZXQgbj0wLHM9MDtuPHQubGVuZ3RoO24rKyl7Y29uc3QgaT10W25dO3Iuc2V0KGkscykscys9aS5sZW5ndGh9cmV0dXJuIHJ9ZnVuY3Rpb24gVG5lKHQsZSl7aWYodC5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4hMTtsZXQgcj0wO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXJ8PXRbbl1eZVtuXTtyZXR1cm4gcj09PTB9ZnVuY3Rpb24gSW5lKHQpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoInN0cmluZyBleHBlY3RlZCIpO3JldHVybiBuZXcgVWludDhBcnJheShuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodCkpfWNvbnN0IHEyPXQ9PnR5cGVvZiB0PT0iYmlnaW50IiYmVXk8PXQ7ZnVuY3Rpb24genkodCxlLHIpe3JldHVybiBxMih0KSYmcTIoZSkmJnEyKHIpJiZlPD10JiZ0PHJ9ZnVuY3Rpb24gbGEodCxlLHIsbil7aWYoIXp5KGUscixuKSl0aHJvdyBuZXcgRXJyb3IoImV4cGVjdGVkIHZhbGlkICIrdCsiOiAiK3IrIiA8PSBuIDwgIituKyIsIGdvdCAiK2UpfWZ1bmN0aW9uIHdEKHQpe2xldCBlO2ZvcihlPTA7dD5VeTt0Pj49RnksZSs9MSk7cmV0dXJuIGV9ZnVuY3Rpb24gUm5lKHQsZSl7cmV0dXJuIHQ+PkJpZ0ludChlKSZGeX1mdW5jdGlvbiBObmUodCxlLHIpe3JldHVybiB0fChyP0Z5OlV5KTw8QmlnSW50KGUpfWNvbnN0IEY2PXQ9PihrbmU8PEJpZ0ludCh0LTEpKS1GeSxWMj10PT5uZXcgVWludDhBcnJheSh0KSxoaz10PT5VaW50OEFycmF5LmZyb20odCk7ZnVuY3Rpb24gYkQodCxlLHIpe2lmKHR5cGVvZiB0IT0ibnVtYmVyInx8dDwyKXRocm93IG5ldyBFcnJvcigiaGFzaExlbiBtdXN0IGJlIGEgbnVtYmVyIik7aWYodHlwZW9mIGUhPSJudW1iZXIifHxlPDIpdGhyb3cgbmV3IEVycm9yKCJxQnl0ZUxlbiBtdXN0IGJlIGEgbnVtYmVyIik7aWYodHlwZW9mIHIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJobWFjRm4gbXVzdCBiZSBhIGZ1bmN0aW9uIik7bGV0IG49VjIodCkscz1WMih0KSxpPTA7Y29uc3Qgbz0oKT0+e24uZmlsbCgxKSxzLmZpbGwoMCksaT0wfSxhPSguLi5kKT0+cihzLG4sLi4uZCksYz0oZD1WMigpKT0+e3M9YShoayhbMF0pLGQpLG49YSgpLGQubGVuZ3RoIT09MCYmKHM9YShoayhbMV0pLGQpLG49YSgpKX0sbD0oKT0+e2lmKGkrKz49MWUzKXRocm93IG5ldyBFcnJvcigiZHJiZzogdHJpZWQgMTAwMCB2YWx1ZXMiKTtsZXQgZD0wO2NvbnN0IHU9W107Zm9yKDtkPGU7KXtuPWEoKTtjb25zdCBoPW4uc2xpY2UoKTt1LnB1c2goaCksZCs9bi5sZW5ndGh9cmV0dXJuIEswKC4uLnUpfTtyZXR1cm4oZCx1KT0+e28oKSxjKGQpO2xldCBoO2Zvcig7IShoPXUobCgpKSk7KWMoKTtyZXR1cm4gbygpLGh9fWNvbnN0IFBuZT17YmlnaW50OnQ9PnR5cGVvZiB0PT0iYmlnaW50IixmdW5jdGlvbjp0PT50eXBlb2YgdD09ImZ1bmN0aW9uIixib29sZWFuOnQ9PnR5cGVvZiB0PT0iYm9vbGVhbiIsc3RyaW5nOnQ9PnR5cGVvZiB0PT0ic3RyaW5nIixzdHJpbmdPclVpbnQ4QXJyYXk6dD0+dHlwZW9mIHQ9PSJzdHJpbmcifHx4dSh0KSxpc1NhZmVJbnRlZ2VyOnQ9Pk51bWJlci5pc1NhZmVJbnRlZ2VyKHQpLGFycmF5OnQ9PkFycmF5LmlzQXJyYXkodCksZmllbGQ6KHQsZSk9PmUuRnAuaXNWYWxpZCh0KSxoYXNoOnQ9PnR5cGVvZiB0PT0iZnVuY3Rpb24iJiZOdW1iZXIuaXNTYWZlSW50ZWdlcih0Lm91dHB1dExlbil9O2Z1bmN0aW9uIGZwKHQsZSxyPXt9KXtjb25zdCBuPShzLGksbyk9Pntjb25zdCBhPVBuZVtpXTtpZih0eXBlb2YgYSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgdmFsaWRhdG9yIGZ1bmN0aW9uIik7Y29uc3QgYz10W3NdO2lmKCEobyYmYz09PXZvaWQgMCkmJiFhKGMsdCkpdGhyb3cgbmV3IEVycm9yKCJwYXJhbSAiK1N0cmluZyhzKSsiIGlzIGludmFsaWQuIEV4cGVjdGVkICIraSsiLCBnb3QgIitjKX07Zm9yKGNvbnN0W3MsaV1vZiBPYmplY3QuZW50cmllcyhlKSluKHMsaSwhMSk7Zm9yKGNvbnN0W3MsaV1vZiBPYmplY3QuZW50cmllcyhyKSluKHMsaSwhMCk7cmV0dXJuIHR9Y29uc3QgT25lPSgpPT57dGhyb3cgbmV3IEVycm9yKCJub3QgaW1wbGVtZW50ZWQiKX07ZnVuY3Rpb24gYngodCl7Y29uc3QgZT1uZXcgV2Vha01hcDtyZXR1cm4ociwuLi5uKT0+e2NvbnN0IHM9ZS5nZXQocik7aWYocyE9PXZvaWQgMClyZXR1cm4gcztjb25zdCBpPXQociwuLi5uKTtyZXR1cm4gZS5zZXQocixpKSxpfX12YXIgJG5lPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGlzQnl0ZXM6eHUsYWJ5dGVzOkUxLGFib29sOlNoLGJ5dGVzVG9IZXg6QWgsbnVtYmVyVG9IZXhVbnBhZGRlZDp0aCxoZXhUb051bWJlcjpVNixoZXhUb0J5dGVzOlRoLGJ5dGVzVG9OdW1iZXJCRTpjdSxieXRlc1RvTnVtYmVyTEU6RzAsbnVtYmVyVG9CeXRlc0JFOkloLG51bWJlclRvQnl0ZXNMRTpqeSxudW1iZXJUb1ZhckJ5dGVzQkU6QW5lLGVuc3VyZUJ5dGVzOnZpLGNvbmNhdEJ5dGVzOkswLGVxdWFsQnl0ZXM6VG5lLHV0ZjhUb0J5dGVzOkluZSxpblJhbmdlOnp5LGFJblJhbmdlOmxhLGJpdExlbjp3RCxiaXRHZXQ6Um5lLGJpdFNldDpObmUsYml0TWFzazpGNixjcmVhdGVIbWFjRHJiZzpiRCx2YWxpZGF0ZU9iamVjdDpmcCxub3RJbXBsZW1lbnRlZDpPbmUsbWVtb2l6ZWQ6Ynh9KTtjb25zdCB1bj1CaWdJbnQoMCksVXI9QmlnSW50KDEpLHFsPUJpZ0ludCgyKSxNbmU9QmlnSW50KDMpLHl4PUJpZ0ludCg0KSxwaz1CaWdJbnQoNSksZms9QmlnSW50KDgpO2Z1bmN0aW9uIG5pKHQsZSl7Y29uc3Qgcj10JWU7cmV0dXJuIHI+PXVuP3I6ZStyfWZ1bmN0aW9uIHlEKHQsZSxyKXtpZihlPHVuKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBleHBvbmVudCwgbmVnYXRpdmVzIHVuc3VwcG9ydGVkIik7aWYocjw9dW4pdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIG1vZHVsdXMiKTtpZihyPT09VXIpcmV0dXJuIHVuO2xldCBuPVVyO2Zvcig7ZT51bjspZSZVciYmKG49bip0JXIpLHQ9dCp0JXIsZT4+PVVyO3JldHVybiBufWZ1bmN0aW9uIHhzKHQsZSxyKXtsZXQgbj10O2Zvcig7ZS0tID51bjspbio9bixuJT1yO3JldHVybiBufWZ1bmN0aW9uIHZ4KHQsZSl7aWYodD09PXVuKXRocm93IG5ldyBFcnJvcigiaW52ZXJ0OiBleHBlY3RlZCBub24temVybyBudW1iZXIiKTtpZihlPD11bil0aHJvdyBuZXcgRXJyb3IoImludmVydDogZXhwZWN0ZWQgcG9zaXRpdmUgbW9kdWx1cywgZ290ICIrZSk7bGV0IHI9bmkodCxlKSxuPWUscz11bixpPVVyO2Zvcig7ciE9PXVuOyl7Y29uc3Qgbz1uL3IsYT1uJXIsYz1zLWkqbztuPXIscj1hLHM9aSxpPWN9aWYobiE9PVVyKXRocm93IG5ldyBFcnJvcigiaW52ZXJ0OiBkb2VzIG5vdCBleGlzdCIpO3JldHVybiBuaShzLGUpfWZ1bmN0aW9uIERuZSh0KXtjb25zdCBlPSh0LVVyKS9xbDtsZXQgcixuLHM7Zm9yKHI9dC1VcixuPTA7ciVxbD09PXVuO3IvPXFsLG4rKyk7Zm9yKHM9cWw7czx0JiZ5RChzLGUsdCkhPT10LVVyO3MrKylpZihzPjFlMyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNxdWFyZSByb290OiBsaWtlbHkgbm9uLXByaW1lIFAiKTtpZihuPT09MSl7Y29uc3Qgbz0odCtVcikveXg7cmV0dXJuIGZ1bmN0aW9uKGEsYyl7Y29uc3QgbD1hLnBvdyhjLG8pO2lmKCFhLmVxbChhLnNxcihsKSxjKSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNxdWFyZSByb290Iik7cmV0dXJuIGx9fWNvbnN0IGk9KHIrVXIpL3FsO3JldHVybiBmdW5jdGlvbihvLGEpe2lmKG8ucG93KGEsZSk9PT1vLm5lZyhvLk9ORSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBzcXVhcmUgcm9vdCIpO2xldCBjPW4sbD1vLnBvdyhvLm11bChvLk9ORSxzKSxyKSxkPW8ucG93KGEsaSksdT1vLnBvdyhhLHIpO2Zvcig7IW8uZXFsKHUsby5PTkUpOyl7aWYoby5lcWwodSxvLlpFUk8pKXJldHVybiBvLlpFUk87bGV0IGg9MTtmb3IobGV0IGY9by5zcXIodSk7aDxjJiYhby5lcWwoZixvLk9ORSk7aCsrKWY9by5zcXIoZik7Y29uc3QgcD1vLnBvdyhsLFVyPDxCaWdJbnQoYy1oLTEpKTtsPW8uc3FyKHApLGQ9by5tdWwoZCxwKSx1PW8ubXVsKHUsbCksYz1ofXJldHVybiBkfX1mdW5jdGlvbiBCbmUodCl7aWYodCV5eD09PU1uZSl7Y29uc3QgZT0odCtVcikveXg7cmV0dXJuIGZ1bmN0aW9uKHIsbil7Y29uc3Qgcz1yLnBvdyhuLGUpO2lmKCFyLmVxbChyLnNxcihzKSxuKSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIHNxdWFyZSByb290Iik7cmV0dXJuIHN9fWlmKHQlZms9PT1wayl7Y29uc3QgZT0odC1waykvZms7cmV0dXJuIGZ1bmN0aW9uKHIsbil7Y29uc3Qgcz1yLm11bChuLHFsKSxpPXIucG93KHMsZSksbz1yLm11bChuLGkpLGE9ci5tdWwoci5tdWwobyxxbCksaSksYz1yLm11bChvLHIuc3ViKGEsci5PTkUpKTtpZighci5lcWwoci5zcXIoYyksbikpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBzcXVhcmUgcm9vdCIpO3JldHVybiBjfX1yZXR1cm4gRG5lKHQpfWNvbnN0IExuZT1bImNyZWF0ZSIsImlzVmFsaWQiLCJpczAiLCJuZWciLCJpbnYiLCJzcXJ0Iiwic3FyIiwiZXFsIiwiYWRkIiwic3ViIiwibXVsIiwicG93IiwiZGl2IiwiYWRkTiIsInN1Yk4iLCJtdWxOIiwic3FyTiJdO2Z1bmN0aW9uIFVuZSh0KXtjb25zdCBlPXtPUkRFUjoiYmlnaW50IixNQVNLOiJiaWdpbnQiLEJZVEVTOiJpc1NhZmVJbnRlZ2VyIixCSVRTOiJpc1NhZmVJbnRlZ2VyIn0scj1MbmUucmVkdWNlKChuLHMpPT4obltzXT0iZnVuY3Rpb24iLG4pLGUpO3JldHVybiBmcCh0LHIpfWZ1bmN0aW9uIEZuZSh0LGUscil7aWYocjx1bil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZXhwb25lbnQsIG5lZ2F0aXZlcyB1bnN1cHBvcnRlZCIpO2lmKHI9PT11bilyZXR1cm4gdC5PTkU7aWYocj09PVVyKXJldHVybiBlO2xldCBuPXQuT05FLHM9ZTtmb3IoO3I+dW47KXImVXImJihuPXQubXVsKG4scykpLHM9dC5zcXIocykscj4+PVVyO3JldHVybiBufWZ1bmN0aW9uIGpuZSh0LGUpe2NvbnN0IHI9bmV3IEFycmF5KGUubGVuZ3RoKSxuPWUucmVkdWNlKChpLG8sYSk9PnQuaXMwKG8pP2k6KHJbYV09aSx0Lm11bChpLG8pKSx0Lk9ORSkscz10LmludihuKTtyZXR1cm4gZS5yZWR1Y2VSaWdodCgoaSxvLGEpPT50LmlzMChvKT9pOihyW2FdPXQubXVsKGksclthXSksdC5tdWwoaSxvKSkscykscn1mdW5jdGlvbiB2RCh0LGUpe2NvbnN0IHI9ZSE9PXZvaWQgMD9lOnQudG9TdHJpbmcoMikubGVuZ3RoLG49TWF0aC5jZWlsKHIvOCk7cmV0dXJue25CaXRMZW5ndGg6cixuQnl0ZUxlbmd0aDpufX1mdW5jdGlvbiBFRCh0LGUscj0hMSxuPXt9KXtpZih0PD11bil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZmllbGQ6IGV4cGVjdGVkIE9SREVSID4gMCwgZ290ICIrdCk7Y29uc3R7bkJpdExlbmd0aDpzLG5CeXRlTGVuZ3RoOml9PXZEKHQsZSk7aWYoaT4yMDQ4KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmaWVsZDogZXhwZWN0ZWQgT1JERVIgb2YgPD0gMjA0OCBieXRlcyIpO2xldCBvO2NvbnN0IGE9T2JqZWN0LmZyZWV6ZSh7T1JERVI6dCxpc0xFOnIsQklUUzpzLEJZVEVTOmksTUFTSzpGNihzKSxaRVJPOnVuLE9ORTpVcixjcmVhdGU6Yz0+bmkoYyx0KSxpc1ZhbGlkOmM9PntpZih0eXBlb2YgYyE9ImJpZ2ludCIpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZpZWxkIGVsZW1lbnQ6IGV4cGVjdGVkIGJpZ2ludCwgZ290ICIrdHlwZW9mIGMpO3JldHVybiB1bjw9YyYmYzx0fSxpczA6Yz0+Yz09PXVuLGlzT2RkOmM9PihjJlVyKT09PVVyLG5lZzpjPT5uaSgtYyx0KSxlcWw6KGMsbCk9PmM9PT1sLHNxcjpjPT5uaShjKmMsdCksYWRkOihjLGwpPT5uaShjK2wsdCksc3ViOihjLGwpPT5uaShjLWwsdCksbXVsOihjLGwpPT5uaShjKmwsdCkscG93OihjLGwpPT5GbmUoYSxjLGwpLGRpdjooYyxsKT0+bmkoYyp2eChsLHQpLHQpLHNxck46Yz0+YypjLGFkZE46KGMsbCk9PmMrbCxzdWJOOihjLGwpPT5jLWwsbXVsTjooYyxsKT0+YypsLGludjpjPT52eChjLHQpLHNxcnQ6bi5zcXJ0fHwoYz0+KG98fChvPUJuZSh0KSksbyhhLGMpKSksaW52ZXJ0QmF0Y2g6Yz0+am5lKGEsYyksY21vdjooYyxsLGQpPT5kP2w6Yyx0b0J5dGVzOmM9PnI/ankoYyxpKTpJaChjLGkpLGZyb21CeXRlczpjPT57aWYoYy5sZW5ndGghPT1pKXRocm93IG5ldyBFcnJvcigiRmllbGQuZnJvbUJ5dGVzOiBleHBlY3RlZCAiK2krIiBieXRlcywgZ290ICIrYy5sZW5ndGgpO3JldHVybiByP0cwKGMpOmN1KGMpfX0pO3JldHVybiBPYmplY3QuZnJlZXplKGEpfWZ1bmN0aW9uIENEKHQpe2lmKHR5cGVvZiB0IT0iYmlnaW50Iil0aHJvdyBuZXcgRXJyb3IoImZpZWxkIG9yZGVyIG11c3QgYmUgYmlnaW50Iik7Y29uc3QgZT10LnRvU3RyaW5nKDIpLmxlbmd0aDtyZXR1cm4gTWF0aC5jZWlsKGUvOCl9ZnVuY3Rpb24geEQodCl7Y29uc3QgZT1DRCh0KTtyZXR1cm4gZStNYXRoLmNlaWwoZS8yKX1mdW5jdGlvbiB6bmUodCxlLHI9ITEpe2NvbnN0IG49dC5sZW5ndGgscz1DRChlKSxpPXhEKGUpO2lmKG48MTZ8fG48aXx8bj4xMDI0KXRocm93IG5ldyBFcnJvcigiZXhwZWN0ZWQgIitpKyItMTAyNCBieXRlcyBvZiBpbnB1dCwgZ290ICIrbik7Y29uc3Qgbz1yP0cwKHQpOmN1KHQpLGE9bmkobyxlLVVyKStVcjtyZXR1cm4gcj9qeShhLHMpOkloKGEscyl9Y29uc3QgbWs9QmlnSW50KDApLFNnPUJpZ0ludCgxKTtmdW5jdGlvbiBHMih0LGUpe2NvbnN0IHI9ZS5uZWdhdGUoKTtyZXR1cm4gdD9yOmV9ZnVuY3Rpb24gX0QodCxlKXtpZighTnVtYmVyLmlzU2FmZUludGVnZXIodCl8fHQ8PTB8fHQ+ZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgd2luZG93IHNpemUsIGV4cGVjdGVkIFsxLi4iK2UrIl0sIGdvdCBXPSIrdCl9ZnVuY3Rpb24gSzIodCxlKXtfRCh0LGUpO2NvbnN0IHI9TWF0aC5jZWlsKGUvdCkrMSxuPTIqKih0LTEpO3JldHVybnt3aW5kb3dzOnIsd2luZG93U2l6ZTpufX1mdW5jdGlvbiBXbmUodCxlKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoImFycmF5IGV4cGVjdGVkIik7dC5mb3JFYWNoKChyLG4pPT57aWYoIShyIGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50IGF0IGluZGV4ICIrbil9KX1mdW5jdGlvbiBIbmUodCxlKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoImFycmF5IG9mIHNjYWxhcnMgZXhwZWN0ZWQiKTt0LmZvckVhY2goKHIsbik9PntpZighZS5pc1ZhbGlkKHIpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzY2FsYXIgYXQgaW5kZXggIituKX0pfWNvbnN0IFoyPW5ldyBXZWFrTWFwLGtEPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIFkyKHQpe3JldHVybiBrRC5nZXQodCl8fDF9ZnVuY3Rpb24gcW5lKHQsZSl7cmV0dXJue2NvbnN0VGltZU5lZ2F0ZTpHMixoYXNQcmVjb21wdXRlcyhyKXtyZXR1cm4gWTIocikhPT0xfSx1bnNhZmVMYWRkZXIocixuLHM9dC5aRVJPKXtsZXQgaT1yO2Zvcig7bj5tazspbiZTZyYmKHM9cy5hZGQoaSkpLGk9aS5kb3VibGUoKSxuPj49U2c7cmV0dXJuIHN9LHByZWNvbXB1dGVXaW5kb3cocixuKXtjb25zdHt3aW5kb3dzOnMsd2luZG93U2l6ZTppfT1LMihuLGUpLG89W107bGV0IGE9cixjPWE7Zm9yKGxldCBsPTA7bDxzO2wrKyl7Yz1hLG8ucHVzaChjKTtmb3IobGV0IGQ9MTtkPGk7ZCsrKWM9Yy5hZGQoYSksby5wdXNoKGMpO2E9Yy5kb3VibGUoKX1yZXR1cm4gb30sd05BRihyLG4scyl7Y29uc3R7d2luZG93czppLHdpbmRvd1NpemU6b309SzIocixlKTtsZXQgYT10LlpFUk8sYz10LkJBU0U7Y29uc3QgbD1CaWdJbnQoMioqci0xKSxkPTIqKnIsdT1CaWdJbnQocik7Zm9yKGxldCBoPTA7aDxpO2grKyl7Y29uc3QgcD1oKm87bGV0IGY9TnVtYmVyKHMmbCk7cz4+PXUsZj5vJiYoZi09ZCxzKz1TZyk7Y29uc3QgbT1wLHc9cCtNYXRoLmFicyhmKS0xLGc9aCUyIT09MCx2PWY8MDtmPT09MD9jPWMuYWRkKEcyKGcsblttXSkpOmE9YS5hZGQoRzIodixuW3ddKSl9cmV0dXJue3A6YSxmOmN9fSx3TkFGVW5zYWZlKHIsbixzLGk9dC5aRVJPKXtjb25zdHt3aW5kb3dzOm8sd2luZG93U2l6ZTphfT1LMihyLGUpLGM9QmlnSW50KDIqKnItMSksbD0yKipyLGQ9QmlnSW50KHIpO2ZvcihsZXQgdT0wO3U8bzt1Kyspe2NvbnN0IGg9dSphO2lmKHM9PT1taylicmVhaztsZXQgcD1OdW1iZXIocyZjKTtpZihzPj49ZCxwPmEmJihwLT1sLHMrPVNnKSxwPT09MCljb250aW51ZTtsZXQgZj1uW2grTWF0aC5hYnMocCktMV07cDwwJiYoZj1mLm5lZ2F0ZSgpKSxpPWkuYWRkKGYpfXJldHVybiBpfSxnZXRQcmVjb21wdXRlcyhyLG4scyl7bGV0IGk9WjIuZ2V0KG4pO3JldHVybiBpfHwoaT10aGlzLnByZWNvbXB1dGVXaW5kb3cobixyKSxyIT09MSYmWjIuc2V0KG4scyhpKSkpLGl9LHdOQUZDYWNoZWQocixuLHMpe2NvbnN0IGk9WTIocik7cmV0dXJuIHRoaXMud05BRihpLHRoaXMuZ2V0UHJlY29tcHV0ZXMoaSxyLHMpLG4pfSx3TkFGQ2FjaGVkVW5zYWZlKHIsbixzLGkpe2NvbnN0IG89WTIocik7cmV0dXJuIG89PT0xP3RoaXMudW5zYWZlTGFkZGVyKHIsbixpKTp0aGlzLndOQUZVbnNhZmUobyx0aGlzLmdldFByZWNvbXB1dGVzKG8scixzKSxuLGkpfSxzZXRXaW5kb3dTaXplKHIsbil7X0QobixlKSxrRC5zZXQocixuKSxaMi5kZWxldGUocil9fX1mdW5jdGlvbiBWbmUodCxlLHIsbil7aWYoV25lKHIsdCksSG5lKG4sZSksci5sZW5ndGghPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImFycmF5cyBvZiBwb2ludHMgYW5kIHNjYWxhcnMgbXVzdCBoYXZlIGVxdWFsIGxlbmd0aCIpO2NvbnN0IHM9dC5aRVJPLGk9d0QoQmlnSW50KHIubGVuZ3RoKSksbz1pPjEyP2ktMzppPjQ/aS0yOmk/MjoxLGE9KDE8PG8pLTEsYz1uZXcgQXJyYXkoYSsxKS5maWxsKHMpLGw9TWF0aC5mbG9vcigoZS5CSVRTLTEpL28pKm87bGV0IGQ9cztmb3IobGV0IHU9bDt1Pj0wO3UtPW8pe2MuZmlsbChzKTtmb3IobGV0IHA9MDtwPG4ubGVuZ3RoO3ArKyl7Y29uc3QgZj1uW3BdLG09TnVtYmVyKGY+PkJpZ0ludCh1KSZCaWdJbnQoYSkpO2NbbV09Y1ttXS5hZGQocltwXSl9bGV0IGg9cztmb3IobGV0IHA9Yy5sZW5ndGgtMSxmPXM7cD4wO3AtLSlmPWYuYWRkKGNbcF0pLGg9aC5hZGQoZik7aWYoZD1kLmFkZChoKSx1IT09MClmb3IobGV0IHA9MDtwPG87cCsrKWQ9ZC5kb3VibGUoKX1yZXR1cm4gZH1mdW5jdGlvbiBTRCh0KXtyZXR1cm4gVW5lKHQuRnApLGZwKHQse246ImJpZ2ludCIsaDoiYmlnaW50IixHeDoiZmllbGQiLEd5OiJmaWVsZCJ9LHtuQml0TGVuZ3RoOiJpc1NhZmVJbnRlZ2VyIixuQnl0ZUxlbmd0aDoiaXNTYWZlSW50ZWdlciJ9KSxPYmplY3QuZnJlZXplKHsuLi52RCh0Lm4sdC5uQml0TGVuZ3RoKSwuLi50LHA6dC5GcC5PUkRFUn0pfUJpZ0ludCgwKSxCaWdJbnQoMSksQmlnSW50KDIpLEJpZ0ludCg4KTtjb25zdCBOZD1CaWdJbnQoMCksSjI9QmlnSW50KDEpO2Z1bmN0aW9uIEduZSh0KXtyZXR1cm4gZnAodCx7YToiYmlnaW50In0se21vbnRnb21lcnlCaXRzOiJpc1NhZmVJbnRlZ2VyIixuQnl0ZUxlbmd0aDoiaXNTYWZlSW50ZWdlciIsYWRqdXN0U2NhbGFyQnl0ZXM6ImZ1bmN0aW9uIixkb21haW46ImZ1bmN0aW9uIixwb3dQbWludXMyOiJmdW5jdGlvbiIsR3U6ImJpZ2ludCJ9KSxPYmplY3QuZnJlZXplKHsuLi50fSl9ZnVuY3Rpb24gS25lKHQpe2NvbnN0IGU9R25lKHQpLHtQOnJ9PWUsbj12PT5uaSh2LHIpLHM9ZS5tb250Z29tZXJ5Qml0cyxpPU1hdGguY2VpbChzLzgpLG89ZS5uQnl0ZUxlbmd0aCxhPWUuYWRqdXN0U2NhbGFyQnl0ZXN8fCh2PT52KSxjPWUucG93UG1pbnVzMnx8KHY9PnlEKHYsci1CaWdJbnQoMikscikpO2Z1bmN0aW9uIGwodixFLHgpe2NvbnN0IF89bih2KihFLXgpKTtyZXR1cm4gRT1uKEUtXykseD1uKHgrXyksW0UseF19Y29uc3QgZD0oZS5hLUJpZ0ludCgyKSkvQmlnSW50KDQpO2Z1bmN0aW9uIHUodixFKXtsYSgidSIsdixOZCxyKSxsYSgic2NhbGFyIixFLE5kLHIpO2NvbnN0IHg9RSxfPXY7bGV0IGs9SjIsQT1OZCxNPXYsUD1KMixqPU5kLFU7Zm9yKGxldCBGPUJpZ0ludChzLTEpO0Y+PU5kO0YtLSl7Y29uc3QgYj14Pj5GJkoyO2pePWIsVT1sKGosayxNKSxrPVVbMF0sTT1VWzFdLFU9bChqLEEsUCksQT1VWzBdLFA9VVsxXSxqPWI7Y29uc3QgeT1rK0EsQz1uKHkqeSksVD1rLUEsTj1uKFQqVCksUj1DLU4sST1NK1AsQj1NLVAsUz1uKEIqeSksej1uKEkqVCksUT1TK3oscmU9Uy16O009bihRKlEpLFA9bihfKm4ocmUqcmUpKSxrPW4oQypOKSxBPW4oUiooQytuKGQqUikpKX1VPWwoaixrLE0pLGs9VVswXSxNPVVbMV0sVT1sKGosQSxQKSxBPVVbMF0sUD1VWzFdO2NvbnN0IFY9YyhBKTtyZXR1cm4gbihrKlYpfWZ1bmN0aW9uIGgodil7cmV0dXJuIGp5KG4odiksaSl9ZnVuY3Rpb24gcCh2KXtjb25zdCBFPXZpKCJ1IGNvb3JkaW5hdGUiLHYsaSk7cmV0dXJuIG89PT0zMiYmKEVbMzFdJj0xMjcpLEcwKEUpfWZ1bmN0aW9uIGYodil7Y29uc3QgRT12aSgic2NhbGFyIix2KSx4PUUubGVuZ3RoO2lmKHghPT1pJiZ4IT09byl7bGV0IF89IiIraSsiIG9yICIrbzt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2NhbGFyLCBleHBlY3RlZCAiK18rIiBieXRlcywgZ290ICIreCl9cmV0dXJuIEcwKGEoRSkpfWZ1bmN0aW9uIG0odixFKXtjb25zdCB4PXAoRSksXz1mKHYpLGs9dSh4LF8pO2lmKGs9PT1OZCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcHJpdmF0ZSBvciBwdWJsaWMga2V5IHJlY2VpdmVkIik7cmV0dXJuIGgoayl9Y29uc3Qgdz1oKGUuR3UpO2Z1bmN0aW9uIGcodil7cmV0dXJuIG0odix3KX1yZXR1cm57c2NhbGFyTXVsdDptLHNjYWxhck11bHRCYXNlOmcsZ2V0U2hhcmVkU2VjcmV0Oih2LEUpPT5tKHYsRSksZ2V0UHVibGljS2V5OnY9PmcodiksdXRpbHM6e3JhbmRvbVByaXZhdGVLZXk6KCk9PmUucmFuZG9tQnl0ZXMoZS5uQnl0ZUxlbmd0aCl9LEd1Qnl0ZXM6d319Y29uc3QgRXg9QmlnSW50KCI1Nzg5NjA0NDYxODY1ODA5NzcxMTc4NTQ5MjUwNDM0Mzk1MzkyNjYzNDk5MjMzMjgyMDI4MjAxOTcyODc5MjAwMzk1NjU2NDgxOTk0OSIpO0JpZ0ludCgwKTtjb25zdCBabmU9QmlnSW50KDEpLGdrPUJpZ0ludCgyKSxZbmU9QmlnSW50KDMpLEpuZT1CaWdJbnQoNSk7QmlnSW50KDgpO2Z1bmN0aW9uIFhuZSh0KXtjb25zdCBlPUJpZ0ludCgxMCkscj1CaWdJbnQoMjApLG49QmlnSW50KDQwKSxzPUJpZ0ludCg4MCksaT1FeCxvPXQqdCVpKnQlaSxhPXhzKG8sZ2ssaSkqbyVpLGM9eHMoYSxabmUsaSkqdCVpLGw9eHMoYyxKbmUsaSkqYyVpLGQ9eHMobCxlLGkpKmwlaSx1PXhzKGQscixpKSpkJWksaD14cyh1LG4saSkqdSVpLHA9eHMoaCxzLGkpKmglaSxmPXhzKHAscyxpKSpoJWksbT14cyhmLGUsaSkqbCVpO3JldHVybntwb3dfcF81Xzg6eHMobSxnayxpKSp0JWksYjI6b319ZnVuY3Rpb24gUW5lKHQpe3JldHVybiB0WzBdJj0yNDgsdFszMV0mPTEyNyx0WzMxXXw9NjQsdH1jb25zdCBDeD1LbmUoe1A6RXgsYTpCaWdJbnQoNDg2NjYyKSxtb250Z29tZXJ5Qml0czoyNTUsbkJ5dGVMZW5ndGg6MzIsR3U6QmlnSW50KDkpLHBvd1BtaW51czI6dD0+e2NvbnN0IGU9RXgse3Bvd19wXzVfODpyLGIyOm59PVhuZSh0KTtyZXR1cm4gbmkoeHMocixZbmUsZSkqbixlKX0sYWRqdXN0U2NhbGFyQnl0ZXM6UW5lLHJhbmRvbUJ5dGVzOnBwfSk7ZnVuY3Rpb24gd2sodCl7dC5sb3dTIT09dm9pZCAwJiZTaCgibG93UyIsdC5sb3dTKSx0LnByZWhhc2ghPT12b2lkIDAmJlNoKCJwcmVoYXNoIix0LnByZWhhc2gpfWZ1bmN0aW9uIGVpZSh0KXtjb25zdCBlPVNEKHQpO2ZwKGUse2E6ImZpZWxkIixiOiJmaWVsZCJ9LHthbGxvd2VkUHJpdmF0ZUtleUxlbmd0aHM6ImFycmF5Iix3cmFwUHJpdmF0ZUtleToiYm9vbGVhbiIsaXNUb3JzaW9uRnJlZToiZnVuY3Rpb24iLGNsZWFyQ29mYWN0b3I6ImZ1bmN0aW9uIixhbGxvd0luZmluaXR5UG9pbnQ6ImJvb2xlYW4iLGZyb21CeXRlczoiZnVuY3Rpb24iLHRvQnl0ZXM6ImZ1bmN0aW9uIn0pO2NvbnN0e2VuZG86cixGcDpuLGE6c309ZTtpZihyKXtpZighbi5lcWwocyxuLlpFUk8pKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBlbmRvbW9ycGhpc20sIGNhbiBvbmx5IGJlIGRlZmluZWQgZm9yIEtvYmxpdHogY3VydmVzIHRoYXQgaGF2ZSBhPTAiKTtpZih0eXBlb2YgciE9Im9iamVjdCJ8fHR5cGVvZiByLmJldGEhPSJiaWdpbnQifHx0eXBlb2Ygci5zcGxpdFNjYWxhciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZW5kb21vcnBoaXNtLCBleHBlY3RlZCBiZXRhOiBiaWdpbnQgYW5kIHNwbGl0U2NhbGFyOiBmdW5jdGlvbiIpfXJldHVybiBPYmplY3QuZnJlZXplKHsuLi5lfSl9Y29uc3R7Ynl0ZXNUb051bWJlckJFOnRpZSxoZXhUb0J5dGVzOnJpZX09JG5lO2NsYXNzIG5pZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGU9IiIpe3N1cGVyKGUpfX1jb25zdCByYT17RXJyOm5pZSxfdGx2OntlbmNvZGU6KHQsZSk9Pntjb25zdHtFcnI6cn09cmE7aWYodDwwfHx0PjI1Nil0aHJvdyBuZXcgcigidGx2LmVuY29kZTogd3JvbmcgdGFnIik7aWYoZS5sZW5ndGgmMSl0aHJvdyBuZXcgcigidGx2LmVuY29kZTogdW5wYWRkZWQgZGF0YSIpO2NvbnN0IG49ZS5sZW5ndGgvMixzPXRoKG4pO2lmKHMubGVuZ3RoLzImMTI4KXRocm93IG5ldyByKCJ0bHYuZW5jb2RlOiBsb25nIGZvcm0gbGVuZ3RoIHRvbyBiaWciKTtjb25zdCBpPW4+MTI3P3RoKHMubGVuZ3RoLzJ8MTI4KToiIjtyZXR1cm4gdGgodCkraStzK2V9LGRlY29kZSh0LGUpe2NvbnN0e0VycjpyfT1yYTtsZXQgbj0wO2lmKHQ8MHx8dD4yNTYpdGhyb3cgbmV3IHIoInRsdi5lbmNvZGU6IHdyb25nIHRhZyIpO2lmKGUubGVuZ3RoPDJ8fGVbbisrXSE9PXQpdGhyb3cgbmV3IHIoInRsdi5kZWNvZGU6IHdyb25nIHRsdiIpO2NvbnN0IHM9ZVtuKytdLGk9ISEocyYxMjgpO2xldCBvPTA7aWYoIWkpbz1zO2Vsc2V7Y29uc3QgYz1zJjEyNztpZighYyl0aHJvdyBuZXcgcigidGx2LmRlY29kZShsb25nKTogaW5kZWZpbml0ZSBsZW5ndGggbm90IHN1cHBvcnRlZCIpO2lmKGM+NCl0aHJvdyBuZXcgcigidGx2LmRlY29kZShsb25nKTogYnl0ZSBsZW5ndGggaXMgdG9vIGJpZyIpO2NvbnN0IGw9ZS5zdWJhcnJheShuLG4rYyk7aWYobC5sZW5ndGghPT1jKXRocm93IG5ldyByKCJ0bHYuZGVjb2RlOiBsZW5ndGggYnl0ZXMgbm90IGNvbXBsZXRlIik7aWYobFswXT09PTApdGhyb3cgbmV3IHIoInRsdi5kZWNvZGUobG9uZyk6IHplcm8gbGVmdG1vc3QgYnl0ZSIpO2Zvcihjb25zdCBkIG9mIGwpbz1vPDw4fGQ7aWYobis9YyxvPDEyOCl0aHJvdyBuZXcgcigidGx2LmRlY29kZShsb25nKTogbm90IG1pbmltYWwgZW5jb2RpbmciKX1jb25zdCBhPWUuc3ViYXJyYXkobixuK28pO2lmKGEubGVuZ3RoIT09byl0aHJvdyBuZXcgcigidGx2LmRlY29kZTogd3JvbmcgdmFsdWUgbGVuZ3RoIik7cmV0dXJue3Y6YSxsOmUuc3ViYXJyYXkobitvKX19fSxfaW50OntlbmNvZGUodCl7Y29uc3R7RXJyOmV9PXJhO2lmKHQ8b2EpdGhyb3cgbmV3IGUoImludGVnZXI6IG5lZ2F0aXZlIGludGVnZXJzIGFyZSBub3QgYWxsb3dlZCIpO2xldCByPXRoKHQpO2lmKE51bWJlci5wYXJzZUludChyWzBdLDE2KSY4JiYocj0iMDAiK3IpLHIubGVuZ3RoJjEpdGhyb3cgbmV3IGUoInVuZXhwZWN0ZWQgREVSIHBhcnNpbmcgYXNzZXJ0aW9uOiB1bnBhZGRlZCBoZXgiKTtyZXR1cm4gcn0sZGVjb2RlKHQpe2NvbnN0e0VycjplfT1yYTtpZih0WzBdJjEyOCl0aHJvdyBuZXcgZSgiaW52YWxpZCBzaWduYXR1cmUgaW50ZWdlcjogbmVnYXRpdmUiKTtpZih0WzBdPT09MCYmISh0WzFdJjEyOCkpdGhyb3cgbmV3IGUoImludmFsaWQgc2lnbmF0dXJlIGludGVnZXI6IHVubmVjZXNzYXJ5IGxlYWRpbmcgemVybyIpO3JldHVybiB0aWUodCl9fSx0b1NpZyh0KXtjb25zdHtFcnI6ZSxfaW50OnIsX3RsdjpufT1yYSxzPXR5cGVvZiB0PT0ic3RyaW5nIj9yaWUodCk6dDtFMShzKTtjb25zdHt2OmksbDpvfT1uLmRlY29kZSg0OCxzKTtpZihvLmxlbmd0aCl0aHJvdyBuZXcgZSgiaW52YWxpZCBzaWduYXR1cmU6IGxlZnQgYnl0ZXMgYWZ0ZXIgcGFyc2luZyIpO2NvbnN0e3Y6YSxsOmN9PW4uZGVjb2RlKDIsaSkse3Y6bCxsOmR9PW4uZGVjb2RlKDIsYyk7aWYoZC5sZW5ndGgpdGhyb3cgbmV3IGUoImludmFsaWQgc2lnbmF0dXJlOiBsZWZ0IGJ5dGVzIGFmdGVyIHBhcnNpbmciKTtyZXR1cm57cjpyLmRlY29kZShhKSxzOnIuZGVjb2RlKGwpfX0saGV4RnJvbVNpZyh0KXtjb25zdHtfdGx2OmUsX2ludDpyfT1yYSxuPWUuZW5jb2RlKDIsci5lbmNvZGUodC5yKSkscz1lLmVuY29kZSgyLHIuZW5jb2RlKHQucykpLGk9bitzO3JldHVybiBlLmVuY29kZSg0OCxpKX19LG9hPUJpZ0ludCgwKSxvbj1CaWdJbnQoMSk7QmlnSW50KDIpO2NvbnN0IGJrPUJpZ0ludCgzKTtCaWdJbnQoNCk7ZnVuY3Rpb24gaWllKHQpe2NvbnN0IGU9ZWllKHQpLHtGcDpyfT1lLG49RUQoZS5uLGUubkJpdExlbmd0aCkscz1lLnRvQnl0ZXN8fCgobSx3LGcpPT57Y29uc3Qgdj13LnRvQWZmaW5lKCk7cmV0dXJuIEswKFVpbnQ4QXJyYXkuZnJvbShbNF0pLHIudG9CeXRlcyh2LngpLHIudG9CeXRlcyh2LnkpKX0pLGk9ZS5mcm9tQnl0ZXN8fChtPT57Y29uc3Qgdz1tLnN1YmFycmF5KDEpLGc9ci5mcm9tQnl0ZXMody5zdWJhcnJheSgwLHIuQllURVMpKSx2PXIuZnJvbUJ5dGVzKHcuc3ViYXJyYXkoci5CWVRFUywyKnIuQllURVMpKTtyZXR1cm57eDpnLHk6dn19KTtmdW5jdGlvbiBvKG0pe2NvbnN0e2E6dyxiOmd9PWUsdj1yLnNxcihtKSxFPXIubXVsKHYsbSk7cmV0dXJuIHIuYWRkKHIuYWRkKEUsci5tdWwobSx3KSksZyl9aWYoIXIuZXFsKHIuc3FyKGUuR3kpLG8oZS5HeCkpKXRocm93IG5ldyBFcnJvcigiYmFkIGdlbmVyYXRvciBwb2ludDogZXF1YXRpb24gbGVmdCAhPSByaWdodCIpO2Z1bmN0aW9uIGEobSl7cmV0dXJuIHp5KG0sb24sZS5uKX1mdW5jdGlvbiBjKG0pe2NvbnN0e2FsbG93ZWRQcml2YXRlS2V5TGVuZ3Roczp3LG5CeXRlTGVuZ3RoOmcsd3JhcFByaXZhdGVLZXk6dixuOkV9PWU7aWYodyYmdHlwZW9mIG0hPSJiaWdpbnQiKXtpZih4dShtKSYmKG09QWgobSkpLHR5cGVvZiBtIT0ic3RyaW5nInx8IXcuaW5jbHVkZXMobS5sZW5ndGgpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwcml2YXRlIGtleSIpO209bS5wYWRTdGFydChnKjIsIjAiKX1sZXQgeDt0cnl7eD10eXBlb2YgbT09ImJpZ2ludCI/bTpjdSh2aSgicHJpdmF0ZSBrZXkiLG0sZykpfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiaW52YWxpZCBwcml2YXRlIGtleSwgZXhwZWN0ZWQgaGV4IG9yICIrZysiIGJ5dGVzLCBnb3QgIit0eXBlb2YgbSl9cmV0dXJuIHYmJih4PW5pKHgsRSkpLGxhKCJwcml2YXRlIGtleSIseCxvbixFKSx4fWZ1bmN0aW9uIGwobSl7aWYoIShtIGluc3RhbmNlb2YgaCkpdGhyb3cgbmV3IEVycm9yKCJQcm9qZWN0aXZlUG9pbnQgZXhwZWN0ZWQiKX1jb25zdCBkPWJ4KChtLHcpPT57Y29uc3R7cHg6ZyxweTp2LHB6OkV9PW07aWYoci5lcWwoRSxyLk9ORSkpcmV0dXJue3g6Zyx5OnZ9O2NvbnN0IHg9bS5pczAoKTt3PT1udWxsJiYodz14P3IuT05FOnIuaW52KEUpKTtjb25zdCBfPXIubXVsKGcsdyksaz1yLm11bCh2LHcpLEE9ci5tdWwoRSx3KTtpZih4KXJldHVybnt4OnIuWkVSTyx5OnIuWkVST307aWYoIXIuZXFsKEEsci5PTkUpKXRocm93IG5ldyBFcnJvcigiaW52WiB3YXMgaW52YWxpZCIpO3JldHVybnt4Ol8seTprfX0pLHU9YngobT0+e2lmKG0uaXMwKCkpe2lmKGUuYWxsb3dJbmZpbml0eVBvaW50JiYhci5pczAobS5weSkpcmV0dXJuO3Rocm93IG5ldyBFcnJvcigiYmFkIHBvaW50OiBaRVJPIil9Y29uc3R7eDp3LHk6Z309bS50b0FmZmluZSgpO2lmKCFyLmlzVmFsaWQodyl8fCFyLmlzVmFsaWQoZykpdGhyb3cgbmV3IEVycm9yKCJiYWQgcG9pbnQ6IHggb3IgeSBub3QgRkUiKTtjb25zdCB2PXIuc3FyKGcpLEU9byh3KTtpZighci5lcWwodixFKSl0aHJvdyBuZXcgRXJyb3IoImJhZCBwb2ludDogZXF1YXRpb24gbGVmdCAhPSByaWdodCIpO2lmKCFtLmlzVG9yc2lvbkZyZWUoKSl0aHJvdyBuZXcgRXJyb3IoImJhZCBwb2ludDogbm90IGluIHByaW1lLW9yZGVyIHN1Ymdyb3VwIik7cmV0dXJuITB9KTtjbGFzcyBoe2NvbnN0cnVjdG9yKHcsZyx2KXtpZih0aGlzLnB4PXcsdGhpcy5weT1nLHRoaXMucHo9dix3PT1udWxsfHwhci5pc1ZhbGlkKHcpKXRocm93IG5ldyBFcnJvcigieCByZXF1aXJlZCIpO2lmKGc9PW51bGx8fCFyLmlzVmFsaWQoZykpdGhyb3cgbmV3IEVycm9yKCJ5IHJlcXVpcmVkIik7aWYodj09bnVsbHx8IXIuaXNWYWxpZCh2KSl0aHJvdyBuZXcgRXJyb3IoInogcmVxdWlyZWQiKTtPYmplY3QuZnJlZXplKHRoaXMpfXN0YXRpYyBmcm9tQWZmaW5lKHcpe2NvbnN0e3g6Zyx5OnZ9PXd8fHt9O2lmKCF3fHwhci5pc1ZhbGlkKGcpfHwhci5pc1ZhbGlkKHYpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBhZmZpbmUgcG9pbnQiKTtpZih3IGluc3RhbmNlb2YgaCl0aHJvdyBuZXcgRXJyb3IoInByb2plY3RpdmUgcG9pbnQgbm90IGFsbG93ZWQiKTtjb25zdCBFPXg9PnIuZXFsKHgsci5aRVJPKTtyZXR1cm4gRShnKSYmRSh2KT9oLlpFUk86bmV3IGgoZyx2LHIuT05FKX1nZXQgeCgpe3JldHVybiB0aGlzLnRvQWZmaW5lKCkueH1nZXQgeSgpe3JldHVybiB0aGlzLnRvQWZmaW5lKCkueX1zdGF0aWMgbm9ybWFsaXplWih3KXtjb25zdCBnPXIuaW52ZXJ0QmF0Y2gody5tYXAodj0+di5weikpO3JldHVybiB3Lm1hcCgodixFKT0+di50b0FmZmluZShnW0VdKSkubWFwKGguZnJvbUFmZmluZSl9c3RhdGljIGZyb21IZXgodyl7Y29uc3QgZz1oLmZyb21BZmZpbmUoaSh2aSgicG9pbnRIZXgiLHcpKSk7cmV0dXJuIGcuYXNzZXJ0VmFsaWRpdHkoKSxnfXN0YXRpYyBmcm9tUHJpdmF0ZUtleSh3KXtyZXR1cm4gaC5CQVNFLm11bHRpcGx5KGModykpfXN0YXRpYyBtc20odyxnKXtyZXR1cm4gVm5lKGgsbix3LGcpfV9zZXRXaW5kb3dTaXplKHcpe2Yuc2V0V2luZG93U2l6ZSh0aGlzLHcpfWFzc2VydFZhbGlkaXR5KCl7dSh0aGlzKX1oYXNFdmVuWSgpe2NvbnN0e3k6d309dGhpcy50b0FmZmluZSgpO2lmKHIuaXNPZGQpcmV0dXJuIXIuaXNPZGQodyk7dGhyb3cgbmV3IEVycm9yKCJGaWVsZCBkb2Vzbid0IHN1cHBvcnQgaXNPZGQiKX1lcXVhbHModyl7bCh3KTtjb25zdHtweDpnLHB5OnYscHo6RX09dGhpcyx7cHg6eCxweTpfLHB6Omt9PXcsQT1yLmVxbChyLm11bChnLGspLHIubXVsKHgsRSkpLE09ci5lcWwoci5tdWwodixrKSxyLm11bChfLEUpKTtyZXR1cm4gQSYmTX1uZWdhdGUoKXtyZXR1cm4gbmV3IGgodGhpcy5weCxyLm5lZyh0aGlzLnB5KSx0aGlzLnB6KX1kb3VibGUoKXtjb25zdHthOncsYjpnfT1lLHY9ci5tdWwoZyxiaykse3B4OkUscHk6eCxwejpffT10aGlzO2xldCBrPXIuWkVSTyxBPXIuWkVSTyxNPXIuWkVSTyxQPXIubXVsKEUsRSksaj1yLm11bCh4LHgpLFU9ci5tdWwoXyxfKSxWPXIubXVsKEUseCk7cmV0dXJuIFY9ci5hZGQoVixWKSxNPXIubXVsKEUsXyksTT1yLmFkZChNLE0pLGs9ci5tdWwodyxNKSxBPXIubXVsKHYsVSksQT1yLmFkZChrLEEpLGs9ci5zdWIoaixBKSxBPXIuYWRkKGosQSksQT1yLm11bChrLEEpLGs9ci5tdWwoVixrKSxNPXIubXVsKHYsTSksVT1yLm11bCh3LFUpLFY9ci5zdWIoUCxVKSxWPXIubXVsKHcsViksVj1yLmFkZChWLE0pLE09ci5hZGQoUCxQKSxQPXIuYWRkKE0sUCksUD1yLmFkZChQLFUpLFA9ci5tdWwoUCxWKSxBPXIuYWRkKEEsUCksVT1yLm11bCh4LF8pLFU9ci5hZGQoVSxVKSxQPXIubXVsKFUsViksaz1yLnN1YihrLFApLE09ci5tdWwoVSxqKSxNPXIuYWRkKE0sTSksTT1yLmFkZChNLE0pLG5ldyBoKGssQSxNKX1hZGQodyl7bCh3KTtjb25zdHtweDpnLHB5OnYscHo6RX09dGhpcyx7cHg6eCxweTpfLHB6Omt9PXc7bGV0IEE9ci5aRVJPLE09ci5aRVJPLFA9ci5aRVJPO2NvbnN0IGo9ZS5hLFU9ci5tdWwoZS5iLGJrKTtsZXQgVj1yLm11bChnLHgpLEY9ci5tdWwodixfKSxiPXIubXVsKEUsaykseT1yLmFkZChnLHYpLEM9ci5hZGQoeCxfKTt5PXIubXVsKHksQyksQz1yLmFkZChWLEYpLHk9ci5zdWIoeSxDKSxDPXIuYWRkKGcsRSk7bGV0IFQ9ci5hZGQoeCxrKTtyZXR1cm4gQz1yLm11bChDLFQpLFQ9ci5hZGQoVixiKSxDPXIuc3ViKEMsVCksVD1yLmFkZCh2LEUpLEE9ci5hZGQoXyxrKSxUPXIubXVsKFQsQSksQT1yLmFkZChGLGIpLFQ9ci5zdWIoVCxBKSxQPXIubXVsKGosQyksQT1yLm11bChVLGIpLFA9ci5hZGQoQSxQKSxBPXIuc3ViKEYsUCksUD1yLmFkZChGLFApLE09ci5tdWwoQSxQKSxGPXIuYWRkKFYsViksRj1yLmFkZChGLFYpLGI9ci5tdWwoaixiKSxDPXIubXVsKFUsQyksRj1yLmFkZChGLGIpLGI9ci5zdWIoVixiKSxiPXIubXVsKGosYiksQz1yLmFkZChDLGIpLFY9ci5tdWwoRixDKSxNPXIuYWRkKE0sViksVj1yLm11bChULEMpLEE9ci5tdWwoeSxBKSxBPXIuc3ViKEEsViksVj1yLm11bCh5LEYpLFA9ci5tdWwoVCxQKSxQPXIuYWRkKFAsViksbmV3IGgoQSxNLFApfXN1YnRyYWN0KHcpe3JldHVybiB0aGlzLmFkZCh3Lm5lZ2F0ZSgpKX1pczAoKXtyZXR1cm4gdGhpcy5lcXVhbHMoaC5aRVJPKX13TkFGKHcpe3JldHVybiBmLndOQUZDYWNoZWQodGhpcyx3LGgubm9ybWFsaXplWil9bXVsdGlwbHlVbnNhZmUodyl7Y29uc3R7ZW5kbzpnLG46dn09ZTtsYSgic2NhbGFyIix3LG9hLHYpO2NvbnN0IEU9aC5aRVJPO2lmKHc9PT1vYSlyZXR1cm4gRTtpZih0aGlzLmlzMCgpfHx3PT09b24pcmV0dXJuIHRoaXM7aWYoIWd8fGYuaGFzUHJlY29tcHV0ZXModGhpcykpcmV0dXJuIGYud05BRkNhY2hlZFVuc2FmZSh0aGlzLHcsaC5ub3JtYWxpemVaKTtsZXR7azFuZWc6eCxrMTpfLGsybmVnOmssazI6QX09Zy5zcGxpdFNjYWxhcih3KSxNPUUsUD1FLGo9dGhpcztmb3IoO18+b2F8fEE+b2E7KV8mb24mJihNPU0uYWRkKGopKSxBJm9uJiYoUD1QLmFkZChqKSksaj1qLmRvdWJsZSgpLF8+Pj1vbixBPj49b247cmV0dXJuIHgmJihNPU0ubmVnYXRlKCkpLGsmJihQPVAubmVnYXRlKCkpLFA9bmV3IGgoci5tdWwoUC5weCxnLmJldGEpLFAucHksUC5weiksTS5hZGQoUCl9bXVsdGlwbHkodyl7Y29uc3R7ZW5kbzpnLG46dn09ZTtsYSgic2NhbGFyIix3LG9uLHYpO2xldCBFLHg7aWYoZyl7Y29uc3R7azFuZWc6XyxrMTprLGsybmVnOkEsazI6TX09Zy5zcGxpdFNjYWxhcih3KTtsZXR7cDpQLGY6an09dGhpcy53TkFGKGspLHtwOlUsZjpWfT10aGlzLndOQUYoTSk7UD1mLmNvbnN0VGltZU5lZ2F0ZShfLFApLFU9Zi5jb25zdFRpbWVOZWdhdGUoQSxVKSxVPW5ldyBoKHIubXVsKFUucHgsZy5iZXRhKSxVLnB5LFUucHopLEU9UC5hZGQoVSkseD1qLmFkZChWKX1lbHNle2NvbnN0e3A6XyxmOmt9PXRoaXMud05BRih3KTtFPV8seD1rfXJldHVybiBoLm5vcm1hbGl6ZVooW0UseF0pWzBdfW11bHRpcGx5QW5kQWRkVW5zYWZlKHcsZyx2KXtjb25zdCBFPWguQkFTRSx4PShrLEEpPT5BPT09b2F8fEE9PT1vbnx8IWsuZXF1YWxzKEUpP2subXVsdGlwbHlVbnNhZmUoQSk6ay5tdWx0aXBseShBKSxfPXgodGhpcyxnKS5hZGQoeCh3LHYpKTtyZXR1cm4gXy5pczAoKT92b2lkIDA6X310b0FmZmluZSh3KXtyZXR1cm4gZCh0aGlzLHcpfWlzVG9yc2lvbkZyZWUoKXtjb25zdHtoOncsaXNUb3JzaW9uRnJlZTpnfT1lO2lmKHc9PT1vbilyZXR1cm4hMDtpZihnKXJldHVybiBnKGgsdGhpcyk7dGhyb3cgbmV3IEVycm9yKCJpc1RvcnNpb25GcmVlKCkgaGFzIG5vdCBiZWVuIGRlY2xhcmVkIGZvciB0aGUgZWxsaXB0aWMgY3VydmUiKX1jbGVhckNvZmFjdG9yKCl7Y29uc3R7aDp3LGNsZWFyQ29mYWN0b3I6Z309ZTtyZXR1cm4gdz09PW9uP3RoaXM6Zz9nKGgsdGhpcyk6dGhpcy5tdWx0aXBseVVuc2FmZShlLmgpfXRvUmF3Qnl0ZXModz0hMCl7cmV0dXJuIFNoKCJpc0NvbXByZXNzZWQiLHcpLHRoaXMuYXNzZXJ0VmFsaWRpdHkoKSxzKGgsdGhpcyx3KX10b0hleCh3PSEwKXtyZXR1cm4gU2goImlzQ29tcHJlc3NlZCIsdyksQWgodGhpcy50b1Jhd0J5dGVzKHcpKX19aC5CQVNFPW5ldyBoKGUuR3gsZS5HeSxyLk9ORSksaC5aRVJPPW5ldyBoKHIuWkVSTyxyLk9ORSxyLlpFUk8pO2NvbnN0IHA9ZS5uQml0TGVuZ3RoLGY9cW5lKGgsZS5lbmRvP01hdGguY2VpbChwLzIpOnApO3JldHVybntDVVJWRTplLFByb2plY3RpdmVQb2ludDpoLG5vcm1Qcml2YXRlS2V5VG9TY2FsYXI6Yyx3ZWllcnN0cmFzc0VxdWF0aW9uOm8saXNXaXRoaW5DdXJ2ZU9yZGVyOmF9fWZ1bmN0aW9uIHNpZSh0KXtjb25zdCBlPVNEKHQpO3JldHVybiBmcChlLHtoYXNoOiJoYXNoIixobWFjOiJmdW5jdGlvbiIscmFuZG9tQnl0ZXM6ImZ1bmN0aW9uIn0se2JpdHMyaW50OiJmdW5jdGlvbiIsYml0czJpbnRfbW9kTjoiZnVuY3Rpb24iLGxvd1M6ImJvb2xlYW4ifSksT2JqZWN0LmZyZWV6ZSh7bG93UzohMCwuLi5lfSl9ZnVuY3Rpb24gb2llKHQpe2NvbnN0IGU9c2llKHQpLHtGcDpyLG59PWUscz1yLkJZVEVTKzEsaT0yKnIuQllURVMrMTtmdW5jdGlvbiBvKGIpe3JldHVybiBuaShiLG4pfWZ1bmN0aW9uIGEoYil7cmV0dXJuIHZ4KGIsbil9Y29uc3R7UHJvamVjdGl2ZVBvaW50OmMsbm9ybVByaXZhdGVLZXlUb1NjYWxhcjpsLHdlaWVyc3RyYXNzRXF1YXRpb246ZCxpc1dpdGhpbkN1cnZlT3JkZXI6dX09aWllKHsuLi5lLHRvQnl0ZXMoYix5LEMpe2NvbnN0IFQ9eS50b0FmZmluZSgpLE49ci50b0J5dGVzKFQueCksUj1LMDtyZXR1cm4gU2goImlzQ29tcHJlc3NlZCIsQyksQz9SKFVpbnQ4QXJyYXkuZnJvbShbeS5oYXNFdmVuWSgpPzI6M10pLE4pOlIoVWludDhBcnJheS5mcm9tKFs0XSksTixyLnRvQnl0ZXMoVC55KSl9LGZyb21CeXRlcyhiKXtjb25zdCB5PWIubGVuZ3RoLEM9YlswXSxUPWIuc3ViYXJyYXkoMSk7aWYoeT09PXMmJihDPT09Mnx8Qz09PTMpKXtjb25zdCBOPWN1KFQpO2lmKCF6eShOLG9uLHIuT1JERVIpKXRocm93IG5ldyBFcnJvcigiUG9pbnQgaXMgbm90IG9uIGN1cnZlIik7Y29uc3QgUj1kKE4pO2xldCBJO3RyeXtJPXIuc3FydChSKX1jYXRjaChTKXtjb25zdCB6PVMgaW5zdGFuY2VvZiBFcnJvcj8iOiAiK1MubWVzc2FnZToiIjt0aHJvdyBuZXcgRXJyb3IoIlBvaW50IGlzIG5vdCBvbiBjdXJ2ZSIreil9Y29uc3QgQj0oSSZvbik9PT1vbjtyZXR1cm4oQyYxKT09PTEhPT1CJiYoST1yLm5lZyhJKSkse3g6Tix5Okl9fWVsc2UgaWYoeT09PWkmJkM9PT00KXtjb25zdCBOPXIuZnJvbUJ5dGVzKFQuc3ViYXJyYXkoMCxyLkJZVEVTKSksUj1yLmZyb21CeXRlcyhULnN1YmFycmF5KHIuQllURVMsMipyLkJZVEVTKSk7cmV0dXJue3g6Tix5OlJ9fWVsc2V7Y29uc3QgTj1zLFI9aTt0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgUG9pbnQsIGV4cGVjdGVkIGxlbmd0aCBvZiAiK04rIiwgb3IgdW5jb21wcmVzc2VkICIrUisiLCBnb3QgIit5KX19fSksaD1iPT5BaChJaChiLGUubkJ5dGVMZW5ndGgpKTtmdW5jdGlvbiBwKGIpe2NvbnN0IHk9bj4+b247cmV0dXJuIGI+eX1mdW5jdGlvbiBmKGIpe3JldHVybiBwKGIpP28oLWIpOmJ9Y29uc3QgbT0oYix5LEMpPT5jdShiLnNsaWNlKHksQykpO2NsYXNzIHd7Y29uc3RydWN0b3IoeSxDLFQpe3RoaXMucj15LHRoaXMucz1DLHRoaXMucmVjb3Zlcnk9VCx0aGlzLmFzc2VydFZhbGlkaXR5KCl9c3RhdGljIGZyb21Db21wYWN0KHkpe2NvbnN0IEM9ZS5uQnl0ZUxlbmd0aDtyZXR1cm4geT12aSgiY29tcGFjdFNpZ25hdHVyZSIseSxDKjIpLG5ldyB3KG0oeSwwLEMpLG0oeSxDLDIqQykpfXN0YXRpYyBmcm9tREVSKHkpe2NvbnN0e3I6QyxzOlR9PXJhLnRvU2lnKHZpKCJERVIiLHkpKTtyZXR1cm4gbmV3IHcoQyxUKX1hc3NlcnRWYWxpZGl0eSgpe2xhKCJyIix0aGlzLnIsb24sbiksbGEoInMiLHRoaXMucyxvbixuKX1hZGRSZWNvdmVyeUJpdCh5KXtyZXR1cm4gbmV3IHcodGhpcy5yLHRoaXMucyx5KX1yZWNvdmVyUHVibGljS2V5KHkpe2NvbnN0e3I6QyxzOlQscmVjb3Zlcnk6Tn09dGhpcyxSPWsodmkoIm1zZ0hhc2giLHkpKTtpZihOPT1udWxsfHwhWzAsMSwyLDNdLmluY2x1ZGVzKE4pKXRocm93IG5ldyBFcnJvcigicmVjb3ZlcnkgaWQgaW52YWxpZCIpO2NvbnN0IEk9Tj09PTJ8fE49PT0zP0MrZS5uOkM7aWYoST49ci5PUkRFUil0aHJvdyBuZXcgRXJyb3IoInJlY292ZXJ5IGlkIDIgb3IgMyBpbnZhbGlkIik7Y29uc3QgQj0oTiYxKT09PTA/IjAyIjoiMDMiLFM9Yy5mcm9tSGV4KEIraChJKSksej1hKEkpLFE9bygtUip6KSxyZT1vKFQqeiksSj1jLkJBU0UubXVsdGlwbHlBbmRBZGRVbnNhZmUoUyxRLHJlKTtpZighSil0aHJvdyBuZXcgRXJyb3IoInBvaW50IGF0IGluZmluaWZ5Iik7cmV0dXJuIEouYXNzZXJ0VmFsaWRpdHkoKSxKfWhhc0hpZ2hTKCl7cmV0dXJuIHAodGhpcy5zKX1ub3JtYWxpemVTKCl7cmV0dXJuIHRoaXMuaGFzSGlnaFMoKT9uZXcgdyh0aGlzLnIsbygtdGhpcy5zKSx0aGlzLnJlY292ZXJ5KTp0aGlzfXRvREVSUmF3Qnl0ZXMoKXtyZXR1cm4gVGgodGhpcy50b0RFUkhleCgpKX10b0RFUkhleCgpe3JldHVybiByYS5oZXhGcm9tU2lnKHtyOnRoaXMucixzOnRoaXMuc30pfXRvQ29tcGFjdFJhd0J5dGVzKCl7cmV0dXJuIFRoKHRoaXMudG9Db21wYWN0SGV4KCkpfXRvQ29tcGFjdEhleCgpe3JldHVybiBoKHRoaXMucikraCh0aGlzLnMpfX1jb25zdCBnPXtpc1ZhbGlkUHJpdmF0ZUtleShiKXt0cnl7cmV0dXJuIGwoYiksITB9Y2F0Y2h7cmV0dXJuITF9fSxub3JtUHJpdmF0ZUtleVRvU2NhbGFyOmwscmFuZG9tUHJpdmF0ZUtleTooKT0+e2NvbnN0IGI9eEQoZS5uKTtyZXR1cm4gem5lKGUucmFuZG9tQnl0ZXMoYiksZS5uKX0scHJlY29tcHV0ZShiPTgseT1jLkJBU0Upe3JldHVybiB5Ll9zZXRXaW5kb3dTaXplKGIpLHkubXVsdGlwbHkoQmlnSW50KDMpKSx5fX07ZnVuY3Rpb24gdihiLHk9ITApe3JldHVybiBjLmZyb21Qcml2YXRlS2V5KGIpLnRvUmF3Qnl0ZXMoeSl9ZnVuY3Rpb24gRShiKXtjb25zdCB5PXh1KGIpLEM9dHlwZW9mIGI9PSJzdHJpbmciLFQ9KHl8fEMpJiZiLmxlbmd0aDtyZXR1cm4geT9UPT09c3x8VD09PWk6Qz9UPT09MipzfHxUPT09MippOmIgaW5zdGFuY2VvZiBjfWZ1bmN0aW9uIHgoYix5LEM9ITApe2lmKEUoYikpdGhyb3cgbmV3IEVycm9yKCJmaXJzdCBhcmcgbXVzdCBiZSBwcml2YXRlIGtleSIpO2lmKCFFKHkpKXRocm93IG5ldyBFcnJvcigic2Vjb25kIGFyZyBtdXN0IGJlIHB1YmxpYyBrZXkiKTtyZXR1cm4gYy5mcm9tSGV4KHkpLm11bHRpcGx5KGwoYikpLnRvUmF3Qnl0ZXMoQyl9Y29uc3QgXz1lLmJpdHMyaW50fHxmdW5jdGlvbihiKXtpZihiLmxlbmd0aD44MTkyKXRocm93IG5ldyBFcnJvcigiaW5wdXQgaXMgdG9vIGxhcmdlIik7Y29uc3QgeT1jdShiKSxDPWIubGVuZ3RoKjgtZS5uQml0TGVuZ3RoO3JldHVybiBDPjA/eT4+QmlnSW50KEMpOnl9LGs9ZS5iaXRzMmludF9tb2ROfHxmdW5jdGlvbihiKXtyZXR1cm4gbyhfKGIpKX0sQT1GNihlLm5CaXRMZW5ndGgpO2Z1bmN0aW9uIE0oYil7cmV0dXJuIGxhKCJudW0gPCAyXiIrZS5uQml0TGVuZ3RoLGIsb2EsQSksSWgoYixlLm5CeXRlTGVuZ3RoKX1mdW5jdGlvbiBQKGIseSxDPWope2lmKFsicmVjb3ZlcmVkIiwiY2Fub25pY2FsIl0uc29tZSh0ZT0+dGUgaW4gQykpdGhyb3cgbmV3IEVycm9yKCJzaWduKCkgbGVnYWN5IG9wdGlvbnMgbm90IHN1cHBvcnRlZCIpO2NvbnN0e2hhc2g6VCxyYW5kb21CeXRlczpOfT1lO2xldHtsb3dTOlIscHJlaGFzaDpJLGV4dHJhRW50cm9weTpCfT1DO1I9PW51bGwmJihSPSEwKSxiPXZpKCJtc2dIYXNoIixiKSx3ayhDKSxJJiYoYj12aSgicHJlaGFzaGVkIG1zZ0hhc2giLFQoYikpKTtjb25zdCBTPWsoYiksej1sKHkpLFE9W00oeiksTShTKV07aWYoQiE9bnVsbCYmQiE9PSExKXtjb25zdCB0ZT1CPT09ITA/TihyLkJZVEVTKTpCO1EucHVzaCh2aSgiZXh0cmFFbnRyb3B5Iix0ZSkpfWNvbnN0IHJlPUswKC4uLlEpLEo9UztmdW5jdGlvbiBlZSh0ZSl7Y29uc3QgaGU9Xyh0ZSk7aWYoIXUoaGUpKXJldHVybjtjb25zdCBTZT1hKGhlKSxLPWMuQkFTRS5tdWx0aXBseShoZSkudG9BZmZpbmUoKSxaPW8oSy54KTtpZihaPT09b2EpcmV0dXJuO2NvbnN0IG1lPW8oU2UqbyhKK1oqeikpO2lmKG1lPT09b2EpcmV0dXJuO2xldCB2ZT0oSy54PT09Wj8wOjIpfE51bWJlcihLLnkmb24pLEZlPW1lO3JldHVybiBSJiZwKG1lKSYmKEZlPWYobWUpLHZlXj0xKSxuZXcgdyhaLEZlLHZlKX1yZXR1cm57c2VlZDpyZSxrMnNpZzplZX19Y29uc3Qgaj17bG93UzplLmxvd1MscHJlaGFzaDohMX0sVT17bG93UzplLmxvd1MscHJlaGFzaDohMX07ZnVuY3Rpb24gVihiLHksQz1qKXtjb25zdHtzZWVkOlQsazJzaWc6Tn09UChiLHksQyksUj1lO3JldHVybiBiRChSLmhhc2gub3V0cHV0TGVuLFIubkJ5dGVMZW5ndGgsUi5obWFjKShULE4pfWMuQkFTRS5fc2V0V2luZG93U2l6ZSg4KTtmdW5jdGlvbiBGKGIseSxDLFQ9VSl7Y29uc3QgTj1iO3k9dmkoIm1zZ0hhc2giLHkpLEM9dmkoInB1YmxpY0tleSIsQyk7Y29uc3R7bG93UzpSLHByZWhhc2g6SSxmb3JtYXQ6Qn09VDtpZih3ayhUKSwic3RyaWN0ImluIFQpdGhyb3cgbmV3IEVycm9yKCJvcHRpb25zLnN0cmljdCB3YXMgcmVuYW1lZCB0byBsb3dTIik7aWYoQiE9PXZvaWQgMCYmQiE9PSJjb21wYWN0IiYmQiE9PSJkZXIiKXRocm93IG5ldyBFcnJvcigiZm9ybWF0IG11c3QgYmUgY29tcGFjdCBvciBkZXIiKTtjb25zdCBTPXR5cGVvZiBOPT0ic3RyaW5nInx8eHUoTiksej0hUyYmIUImJnR5cGVvZiBOPT0ib2JqZWN0IiYmTiE9PW51bGwmJnR5cGVvZiBOLnI9PSJiaWdpbnQiJiZ0eXBlb2YgTi5zPT0iYmlnaW50IjtpZighUyYmIXopdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpZ25hdHVyZSwgZXhwZWN0ZWQgVWludDhBcnJheSwgaGV4IHN0cmluZyBvciBTaWduYXR1cmUgaW5zdGFuY2UiKTtsZXQgUSxyZTt0cnl7aWYoeiYmKFE9bmV3IHcoTi5yLE4ucykpLFMpe3RyeXtCIT09ImNvbXBhY3QiJiYoUT13LmZyb21ERVIoTikpfWNhdGNoKG1lKXtpZighKG1lIGluc3RhbmNlb2YgcmEuRXJyKSl0aHJvdyBtZX0hUSYmQiE9PSJkZXIiJiYoUT13LmZyb21Db21wYWN0KE4pKX1yZT1jLmZyb21IZXgoQyl9Y2F0Y2h7cmV0dXJuITF9aWYoIVF8fFImJlEuaGFzSGlnaFMoKSlyZXR1cm4hMTtJJiYoeT1lLmhhc2goeSkpO2NvbnN0e3I6SixzOmVlfT1RLHRlPWsoeSksaGU9YShlZSksU2U9byh0ZSpoZSksSz1vKEoqaGUpLFo9Yy5CQVNFLm11bHRpcGx5QW5kQWRkVW5zYWZlKHJlLFNlLEspPy50b0FmZmluZSgpO3JldHVybiBaP28oWi54KT09PUo6ITF9cmV0dXJue0NVUlZFOmUsZ2V0UHVibGljS2V5OnYsZ2V0U2hhcmVkU2VjcmV0Ongsc2lnbjpWLHZlcmlmeTpGLFByb2plY3RpdmVQb2ludDpjLFNpZ25hdHVyZTp3LHV0aWxzOmd9fWZ1bmN0aW9uIGFpZSh0KXtyZXR1cm57aGFzaDp0LGhtYWM6KGUsLi4ucik9Pkx5KHQsZSxkcmUoLi4ucikpLHJhbmRvbUJ5dGVzOnBwfX1mdW5jdGlvbiBjaWUodCxlKXtjb25zdCByPW49Pm9pZSh7Li4udCwuLi5haWUobil9KTtyZXR1cm57Li4ucihlKSxjcmVhdGU6cn19Y29uc3QgQUQ9RUQoQmlnSW50KCIweGZmZmZmZmZmMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYiKSksbGllPUFELmNyZWF0ZShCaWdJbnQoIi0zIikpLHVpZT1CaWdJbnQoIjB4NWFjNjM1ZDhhYTNhOTNlN2IzZWJiZDU1NzY5ODg2YmM2NTFkMDZiMGNjNTNiMGY2M2JjZTNjM2UyN2QyNjA0YiIpLGRpZT1jaWUoe2E6bGllLGI6dWllLEZwOkFELG46QmlnSW50KCIweGZmZmZmZmZmMDAwMDAwMDBmZmZmZmZmZmZmZmZmZmZmYmNlNmZhYWRhNzE3OWU4NGYzYjljYWMyZmM2MzI1NTEiKSxHeDpCaWdJbnQoIjB4NmIxN2QxZjJlMTJjNDI0N2Y4YmNlNmU1NjNhNDQwZjI3NzAzN2Q4MTJkZWIzM2EwZjRhMTM5NDVkODk4YzI5NiIpLEd5OkJpZ0ludCgiMHg0ZmUzNDJlMmZlMWE3ZjliOGVlN2ViNGE3YzBmOWUxNjJiY2UzMzU3NmIzMTVlY2VjYmI2NDA2ODM3YmY1MWY1IiksaDpCaWdJbnQoMSksbG93UzohMX0sdjEpLFREPSJiYXNlMTAiLERuPSJiYXNlMTYiLEFzPSJiYXNlNjRwYWQiLHNjPSJiYXNlNjR1cmwiLEMxPSJ1dGY4IixJRD0wLHVhPTEseDE9MixoaWU9MCx5az0xLHQwPTEyLGo2PTMyO2Z1bmN0aW9uIHBpZSgpe2NvbnN0IHQ9Q3gudXRpbHMucmFuZG9tUHJpdmF0ZUtleSgpLGU9Q3guZ2V0UHVibGljS2V5KHQpO3JldHVybntwcml2YXRlS2V5OmFpKHQsRG4pLHB1YmxpY0tleTphaShlLERuKX19ZnVuY3Rpb24geHgoKXtjb25zdCB0PXBwKGo2KTtyZXR1cm4gYWkodCxEbil9ZnVuY3Rpb24gZmllKHQsZSl7Y29uc3Qgcj1DeC5nZXRTaGFyZWRTZWNyZXQoSmkodCxEbiksSmkoZSxEbikpLG49Ym5lKHYxLHIsdm9pZCAwLHZvaWQgMCxqNik7cmV0dXJuIGFpKG4sRG4pfWZ1bmN0aW9uIHp3KHQpe2NvbnN0IGU9djEoSmkodCxEbikpO3JldHVybiBhaShlLERuKX1mdW5jdGlvbiBmbyh0KXtjb25zdCBlPXYxKEppKHQsQzEpKTtyZXR1cm4gYWkoZSxEbil9ZnVuY3Rpb24gUkQodCl7cmV0dXJuIEppKGAke3R9YCxURCl9ZnVuY3Rpb24gX3UodCl7cmV0dXJuIE51bWJlcihhaSh0LFREKSl9ZnVuY3Rpb24gTkQodCl7cmV0dXJuIHQucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89L2csIiIpfWZ1bmN0aW9uIFBEKHQpe2NvbnN0IGU9dC5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKSxyPSg0LWUubGVuZ3RoJTQpJTQ7cmV0dXJuIGUrIj0iLnJlcGVhdChyKX1mdW5jdGlvbiBtaWUodCl7Y29uc3QgZT1SRCh0eXBlb2YgdC50eXBlPCJ1Ij90LnR5cGU6SUQpO2lmKF91KGUpPT09dWEmJnR5cGVvZiB0LnNlbmRlclB1YmxpY0tleT4idSIpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHNlbmRlciBwdWJsaWMga2V5IGZvciB0eXBlIDEgZW52ZWxvcGUiKTtjb25zdCByPXR5cGVvZiB0LnNlbmRlclB1YmxpY0tleTwidSI/SmkodC5zZW5kZXJQdWJsaWNLZXksRG4pOnZvaWQgMCxuPXR5cGVvZiB0Lml2PCJ1Ij9KaSh0Lml2LERuKTpwcCh0MCkscz1KaSh0LnN5bUtleSxEbiksaT1tRChzLG4pLmVuY3J5cHQoSmkodC5tZXNzYWdlLEMxKSksbz1PRCh7dHlwZTplLHNlYWxlZDppLGl2Om4sc2VuZGVyUHVibGljS2V5OnJ9KTtyZXR1cm4gdC5lbmNvZGluZz09PXNjP05EKG8pOm99ZnVuY3Rpb24gZ2llKHQpe2NvbnN0IGU9SmkodC5zeW1LZXksRG4pLHtzZWFsZWQ6cixpdjpufT1aMCh7ZW5jb2RlZDp0LmVuY29kZWQsZW5jb2Rpbmc6dC5lbmNvZGluZ30pLHM9bUQoZSxuKS5kZWNyeXB0KHIpO2lmKHM9PT1udWxsKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGRlY3J5cHQiKTtyZXR1cm4gYWkocyxDMSl9ZnVuY3Rpb24gd2llKHQsZSl7Y29uc3Qgcj1SRCh4MSksbj1wcCh0MCkscz1KaSh0LEMxKSxpPU9EKHt0eXBlOnIsc2VhbGVkOnMsaXY6bn0pO3JldHVybiBlPT09c2M/TkQoaSk6aX1mdW5jdGlvbiBiaWUodCxlKXtjb25zdHtzZWFsZWQ6cn09WjAoe2VuY29kZWQ6dCxlbmNvZGluZzplfSk7cmV0dXJuIGFpKHIsQzEpfWZ1bmN0aW9uIE9EKHQpe2lmKF91KHQudHlwZSk9PT14MSlyZXR1cm4gYWkoZTAoW3QudHlwZSx0LnNlYWxlZF0pLEFzKTtpZihfdSh0LnR5cGUpPT09dWEpe2lmKHR5cGVvZiB0LnNlbmRlclB1YmxpY0tleT4idSIpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHNlbmRlciBwdWJsaWMga2V5IGZvciB0eXBlIDEgZW52ZWxvcGUiKTtyZXR1cm4gYWkoZTAoW3QudHlwZSx0LnNlbmRlclB1YmxpY0tleSx0Lml2LHQuc2VhbGVkXSksQXMpfXJldHVybiBhaShlMChbdC50eXBlLHQuaXYsdC5zZWFsZWRdKSxBcyl9ZnVuY3Rpb24gWjAodCl7Y29uc3QgZT0odC5lbmNvZGluZ3x8QXMpPT09c2M/UEQodC5lbmNvZGVkKTp0LmVuY29kZWQscj1KaShlLEFzKSxuPXIuc2xpY2UoaGllLHlrKSxzPXlrO2lmKF91KG4pPT09dWEpe2NvbnN0IGM9cytqNixsPWMrdDAsZD1yLnNsaWNlKHMsYyksdT1yLnNsaWNlKGMsbCksaD1yLnNsaWNlKGwpO3JldHVybnt0eXBlOm4sc2VhbGVkOmgsaXY6dSxzZW5kZXJQdWJsaWNLZXk6ZH19aWYoX3Uobik9PT14MSl7Y29uc3QgYz1yLnNsaWNlKHMpLGw9cHAodDApO3JldHVybnt0eXBlOm4sc2VhbGVkOmMsaXY6bH19Y29uc3QgaT1zK3QwLG89ci5zbGljZShzLGkpLGE9ci5zbGljZShpKTtyZXR1cm57dHlwZTpuLHNlYWxlZDphLGl2Om99fWZ1bmN0aW9uIHlpZSh0LGUpe2NvbnN0IHI9WjAoe2VuY29kZWQ6dCxlbmNvZGluZzplPy5lbmNvZGluZ30pO3JldHVybiAkRCh7dHlwZTpfdShyLnR5cGUpLHNlbmRlclB1YmxpY0tleTp0eXBlb2Ygci5zZW5kZXJQdWJsaWNLZXk8InUiP2FpKHIuc2VuZGVyUHVibGljS2V5LERuKTp2b2lkIDAscmVjZWl2ZXJQdWJsaWNLZXk6ZT8ucmVjZWl2ZXJQdWJsaWNLZXl9KX1mdW5jdGlvbiAkRCh0KXtjb25zdCBlPXQ/LnR5cGV8fElEO2lmKGU9PT11YSl7aWYodHlwZW9mIHQ/LnNlbmRlclB1YmxpY0tleT4idSIpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nIHNlbmRlciBwdWJsaWMga2V5Iik7aWYodHlwZW9mIHQ/LnJlY2VpdmVyUHVibGljS2V5PiJ1Iil0aHJvdyBuZXcgRXJyb3IoIm1pc3NpbmcgcmVjZWl2ZXIgcHVibGljIGtleSIpfXJldHVybnt0eXBlOmUsc2VuZGVyUHVibGljS2V5OnQ/LnNlbmRlclB1YmxpY0tleSxyZWNlaXZlclB1YmxpY0tleTp0Py5yZWNlaXZlclB1YmxpY0tleX19ZnVuY3Rpb24gdmsodCl7cmV0dXJuIHQudHlwZT09PXVhJiZ0eXBlb2YgdC5zZW5kZXJQdWJsaWNLZXk9PSJzdHJpbmciJiZ0eXBlb2YgdC5yZWNlaXZlclB1YmxpY0tleT09InN0cmluZyJ9ZnVuY3Rpb24gRWsodCl7cmV0dXJuIHQudHlwZT09PXgxfWZ1bmN0aW9uIHZpZSh0KXtjb25zdCBlPUJ1ZmZlci5mcm9tKHQueCwiYmFzZTY0Iikscj1CdWZmZXIuZnJvbSh0LnksImJhc2U2NCIpO3JldHVybiBlMChbbmV3IFVpbnQ4QXJyYXkoWzRdKSxlLHJdKX1mdW5jdGlvbiBFaWUodCxlKXtjb25zdFtyLG4sc109dC5zcGxpdCgiLiIpLGk9QnVmZmVyLmZyb20oUEQocyksImJhc2U2NCIpO2lmKGkubGVuZ3RoIT09NjQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNpZ25hdHVyZSBsZW5ndGgiKTtjb25zdCBvPWkuc2xpY2UoMCwzMiksYT1pLnNsaWNlKDMyLDY0KSxjPWAke3J9LiR7bn1gLGw9djEoYyksZD12aWUoZSk7aWYoIWRpZS52ZXJpZnkoZTAoW28sYV0pLGwsZCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNpZ25hdHVyZSIpO3JldHVybiBpeCh0KS5wYXlsb2FkfWNvbnN0IENpZT0iaXJuIjtmdW5jdGlvbiB3Yih0KXtyZXR1cm4gdD8ucmVsYXl8fHtwcm90b2NvbDpDaWV9fWZ1bmN0aW9uIFpmKHQpe2NvbnN0IGU9QXRlW3RdO2lmKHR5cGVvZiBlPiJ1Iil0aHJvdyBuZXcgRXJyb3IoYFJlbGF5IFByb3RvY29sIG5vdCBzdXBwb3J0ZWQ6ICR7dH1gKTtyZXR1cm4gZX1mdW5jdGlvbiB4aWUodCxlPSItIil7Y29uc3Qgcj17fSxuPSJyZWxheSIrZTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChzPT57aWYocy5zdGFydHNXaXRoKG4pKXtjb25zdCBpPXMucmVwbGFjZShuLCIiKSxvPXRbc107cltpXT1vfX0pLHJ9ZnVuY3Rpb24gQ2sodCl7aWYoIXQuaW5jbHVkZXMoIndjOiIpKXtjb25zdCBsPXJEKHQpO2whPW51bGwmJmwuaW5jbHVkZXMoIndjOiIpJiYodD1sKX10PXQuaW5jbHVkZXMoIndjOi8vIik/dC5yZXBsYWNlKCJ3YzovLyIsIiIpOnQsdD10LmluY2x1ZGVzKCJ3YzoiKT90LnJlcGxhY2UoIndjOiIsIiIpOnQ7Y29uc3QgZT10LmluZGV4T2YoIjoiKSxyPXQuaW5kZXhPZigiPyIpIT09LTE/dC5pbmRleE9mKCI/Iik6dm9pZCAwLG49dC5zdWJzdHJpbmcoMCxlKSxzPXQuc3Vic3RyaW5nKGUrMSxyKS5zcGxpdCgiQCIpLGk9dHlwZW9mIHI8InUiP3Quc3Vic3RyaW5nKHIpOiIiLG89bmV3IFVSTFNlYXJjaFBhcmFtcyhpKSxhPXt9O28uZm9yRWFjaCgobCxkKT0+e2FbZF09bH0pO2NvbnN0IGM9dHlwZW9mIGEubWV0aG9kcz09InN0cmluZyI/YS5tZXRob2RzLnNwbGl0KCIsIik6dm9pZCAwO3JldHVybntwcm90b2NvbDpuLHRvcGljOl9pZShzWzBdKSx2ZXJzaW9uOnBhcnNlSW50KHNbMV0sMTApLHN5bUtleTphLnN5bUtleSxyZWxheTp4aWUoYSksbWV0aG9kczpjLGV4cGlyeVRpbWVzdGFtcDphLmV4cGlyeVRpbWVzdGFtcD9wYXJzZUludChhLmV4cGlyeVRpbWVzdGFtcCwxMCk6dm9pZCAwfX1mdW5jdGlvbiBfaWUodCl7cmV0dXJuIHQuc3RhcnRzV2l0aCgiLy8iKT90LnN1YnN0cmluZygyKTp0fWZ1bmN0aW9uIGtpZSh0LGU9Ii0iKXtjb25zdCByPSJyZWxheSIsbj17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChzPT57Y29uc3QgaT1zLG89citlK2k7dFtpXSYmKG5bb109dFtpXSl9KSxufWZ1bmN0aW9uIHhrKHQpe2NvbnN0IGU9bmV3IFVSTFNlYXJjaFBhcmFtcyxyPWtpZSh0LnJlbGF5KTtPYmplY3Qua2V5cyhyKS5zb3J0KCkuZm9yRWFjaChzPT57ZS5zZXQocyxyW3NdKX0pLGUuc2V0KCJzeW1LZXkiLHQuc3ltS2V5KSx0LmV4cGlyeVRpbWVzdGFtcCYmZS5zZXQoImV4cGlyeVRpbWVzdGFtcCIsdC5leHBpcnlUaW1lc3RhbXAudG9TdHJpbmcoKSksdC5tZXRob2RzJiZlLnNldCgibWV0aG9kcyIsdC5tZXRob2RzLmpvaW4oIiwiKSk7Y29uc3Qgbj1lLnRvU3RyaW5nKCk7cmV0dXJuYCR7dC5wcm90b2NvbH06JHt0LnRvcGljfUAke3QudmVyc2lvbn0/JHtufWB9ZnVuY3Rpb24gQWcodCxlLHIpe3JldHVybmAke3R9P3djX2V2PSR7cn0mdG9waWM9JHtlfWB9ZnVuY3Rpb24gbXAodCl7Y29uc3QgZT1bXTtyZXR1cm4gdC5mb3JFYWNoKHI9Pntjb25zdFtuLHNdPXIuc3BsaXQoIjoiKTtlLnB1c2goYCR7bn06JHtzfWApfSksZX1mdW5jdGlvbiBTaWUodCl7Y29uc3QgZT1bXTtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0KS5mb3JFYWNoKHI9PntlLnB1c2goLi4ubXAoci5hY2NvdW50cykpfSksZX1mdW5jdGlvbiBBaWUodCxlKXtjb25zdCByPVtdO3JldHVybiBPYmplY3QudmFsdWVzKHQpLmZvckVhY2gobj0+e21wKG4uYWNjb3VudHMpLmluY2x1ZGVzKGUpJiZyLnB1c2goLi4ubi5tZXRob2RzKX0pLHJ9ZnVuY3Rpb24gVGllKHQsZSl7Y29uc3Qgcj1bXTtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0KS5mb3JFYWNoKG49PnttcChuLmFjY291bnRzKS5pbmNsdWRlcyhlKSYmci5wdXNoKC4uLm4uZXZlbnRzKX0pLHJ9ZnVuY3Rpb24gejYodCl7cmV0dXJuIHQuaW5jbHVkZXMoIjoiKX1mdW5jdGlvbiBZZih0KXtyZXR1cm4gejYodCk/dC5zcGxpdCgiOiIpWzBdOnR9ZnVuY3Rpb24gSWllKHQpe2NvbnN0IGU9e307cmV0dXJuIHQ/LmZvckVhY2gocj0+e3ZhciBuO2NvbnN0W3MsaV09ci5zcGxpdCgiOiIpO2Vbc118fChlW3NdPXthY2NvdW50czpbXSxjaGFpbnM6W10sZXZlbnRzOltdLG1ldGhvZHM6W119KSxlW3NdLmFjY291bnRzLnB1c2gociksKG49ZVtzXS5jaGFpbnMpPT1udWxsfHxuLnB1c2goYCR7c306JHtpfWApfSksZX1mdW5jdGlvbiBfayh0LGUpe2U9ZS5tYXAobj0+bi5yZXBsYWNlKCJkaWQ6cGtoOiIsIiIpKTtjb25zdCByPUlpZShlKTtmb3IoY29uc3RbbixzXW9mIE9iamVjdC5lbnRyaWVzKHIpKXMubWV0aG9kcz9zLm1ldGhvZHM9Rncocy5tZXRob2RzLHQpOnMubWV0aG9kcz10LHMuZXZlbnRzPVsiY2hhaW5DaGFuZ2VkIiwiYWNjb3VudHNDaGFuZ2VkIl07cmV0dXJuIHJ9Y29uc3QgUmllPXtJTlZBTElEX01FVEhPRDp7bWVzc2FnZToiSW52YWxpZCBtZXRob2QuIixjb2RlOjEwMDF9LElOVkFMSURfRVZFTlQ6e21lc3NhZ2U6IkludmFsaWQgZXZlbnQuIixjb2RlOjEwMDJ9LElOVkFMSURfVVBEQVRFX1JFUVVFU1Q6e21lc3NhZ2U6IkludmFsaWQgdXBkYXRlIHJlcXVlc3QuIixjb2RlOjEwMDN9LElOVkFMSURfRVhURU5EX1JFUVVFU1Q6e21lc3NhZ2U6IkludmFsaWQgZXh0ZW5kIHJlcXVlc3QuIixjb2RlOjEwMDR9LElOVkFMSURfU0VTU0lPTl9TRVRUTEVfUkVRVUVTVDp7bWVzc2FnZToiSW52YWxpZCBzZXNzaW9uIHNldHRsZSByZXF1ZXN0LiIsY29kZToxMDA1fSxVTkFVVEhPUklaRURfTUVUSE9EOnttZXNzYWdlOiJVbmF1dGhvcml6ZWQgbWV0aG9kLiIsY29kZTozMDAxfSxVTkFVVEhPUklaRURfRVZFTlQ6e21lc3NhZ2U6IlVuYXV0aG9yaXplZCBldmVudC4iLGNvZGU6MzAwMn0sVU5BVVRIT1JJWkVEX1VQREFURV9SRVFVRVNUOnttZXNzYWdlOiJVbmF1dGhvcml6ZWQgdXBkYXRlIHJlcXVlc3QuIixjb2RlOjMwMDN9LFVOQVVUSE9SSVpFRF9FWFRFTkRfUkVRVUVTVDp7bWVzc2FnZToiVW5hdXRob3JpemVkIGV4dGVuZCByZXF1ZXN0LiIsY29kZTozMDA0fSxVU0VSX1JFSkVDVEVEOnttZXNzYWdlOiJVc2VyIHJlamVjdGVkLiIsY29kZTo1ZTN9LFVTRVJfUkVKRUNURURfQ0hBSU5TOnttZXNzYWdlOiJVc2VyIHJlamVjdGVkIGNoYWlucy4iLGNvZGU6NTAwMX0sVVNFUl9SRUpFQ1RFRF9NRVRIT0RTOnttZXNzYWdlOiJVc2VyIHJlamVjdGVkIG1ldGhvZHMuIixjb2RlOjUwMDJ9LFVTRVJfUkVKRUNURURfRVZFTlRTOnttZXNzYWdlOiJVc2VyIHJlamVjdGVkIGV2ZW50cy4iLGNvZGU6NTAwM30sVU5TVVBQT1JURURfQ0hBSU5TOnttZXNzYWdlOiJVbnN1cHBvcnRlZCBjaGFpbnMuIixjb2RlOjUxMDB9LFVOU1VQUE9SVEVEX01FVEhPRFM6e21lc3NhZ2U6IlVuc3VwcG9ydGVkIG1ldGhvZHMuIixjb2RlOjUxMDF9LFVOU1VQUE9SVEVEX0VWRU5UUzp7bWVzc2FnZToiVW5zdXBwb3J0ZWQgZXZlbnRzLiIsY29kZTo1MTAyfSxVTlNVUFBPUlRFRF9BQ0NPVU5UUzp7bWVzc2FnZToiVW5zdXBwb3J0ZWQgYWNjb3VudHMuIixjb2RlOjUxMDN9LFVOU1VQUE9SVEVEX05BTUVTUEFDRV9LRVk6e21lc3NhZ2U6IlVuc3VwcG9ydGVkIG5hbWVzcGFjZSBrZXkuIixjb2RlOjUxMDR9LFVTRVJfRElTQ09OTkVDVEVEOnttZXNzYWdlOiJVc2VyIGRpc2Nvbm5lY3RlZC4iLGNvZGU6NmUzfSxTRVNTSU9OX1NFVFRMRU1FTlRfRkFJTEVEOnttZXNzYWdlOiJTZXNzaW9uIHNldHRsZW1lbnQgZmFpbGVkLiIsY29kZTo3ZTN9LFdDX01FVEhPRF9VTlNVUFBPUlRFRDp7bWVzc2FnZToiVW5zdXBwb3J0ZWQgd2NfIG1ldGhvZC4iLGNvZGU6MTAwMDF9fSxOaWU9e05PVF9JTklUSUFMSVpFRDp7bWVzc2FnZToiTm90IGluaXRpYWxpemVkLiIsY29kZToxfSxOT19NQVRDSElOR19LRVk6e21lc3NhZ2U6Ik5vIG1hdGNoaW5nIGtleS4iLGNvZGU6Mn0sUkVTVE9SRV9XSUxMX09WRVJSSURFOnttZXNzYWdlOiJSZXN0b3JlIHdpbGwgb3ZlcnJpZGUuIixjb2RlOjN9LFJFU1VCU0NSSUJFRDp7bWVzc2FnZToiUmVzdWJzY3JpYmVkLiIsY29kZTo0fSxNSVNTSU5HX09SX0lOVkFMSUQ6e21lc3NhZ2U6Ik1pc3Npbmcgb3IgaW52YWxpZC4iLGNvZGU6NX0sRVhQSVJFRDp7bWVzc2FnZToiRXhwaXJlZC4iLGNvZGU6Nn0sVU5LTk9XTl9UWVBFOnttZXNzYWdlOiJVbmtub3duIHR5cGUuIixjb2RlOjd9LE1JU01BVENIRURfVE9QSUM6e21lc3NhZ2U6Ik1pc21hdGNoZWQgdG9waWMuIixjb2RlOjh9LE5PTl9DT05GT1JNSU5HX05BTUVTUEFDRVM6e21lc3NhZ2U6Ik5vbiBjb25mb3JtaW5nIG5hbWVzcGFjZXMuIixjb2RlOjl9fTtmdW5jdGlvbiBPZSh0LGUpe2NvbnN0e21lc3NhZ2U6cixjb2RlOm59PU5pZVt0XTtyZXR1cm57bWVzc2FnZTplP2Ake3J9ICR7ZX1gOnIsY29kZTpufX1mdW5jdGlvbiBLdCh0LGUpe2NvbnN0e21lc3NhZ2U6cixjb2RlOm59PVJpZVt0XTtyZXR1cm57bWVzc2FnZTplP2Ake3J9ICR7ZX1gOnIsY29kZTpufX1mdW5jdGlvbiBtYyh0LGUpe3JldHVybiEhQXJyYXkuaXNBcnJheSh0KX1mdW5jdGlvbiBZMCh0KXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpPT09T2JqZWN0LnByb3RvdHlwZSYmT2JqZWN0LmtleXModCkubGVuZ3RofWZ1bmN0aW9uIEVuKHQpe3JldHVybiB0eXBlb2YgdD4idSJ9ZnVuY3Rpb24gVnIodCxlKXtyZXR1cm4gZSYmRW4odCk/ITA6dHlwZW9mIHQ9PSJzdHJpbmciJiYhIXQudHJpbSgpLmxlbmd0aH1mdW5jdGlvbiBXNih0LGUpe3JldHVybiBlJiZFbih0KT8hMDp0eXBlb2YgdD09Im51bWJlciImJiFpc05hTih0KX1mdW5jdGlvbiBQaWUodCxlKXtjb25zdHtyZXF1aXJlZE5hbWVzcGFjZXM6cn09ZSxuPU9iamVjdC5rZXlzKHQubmFtZXNwYWNlcykscz1PYmplY3Qua2V5cyhyKTtsZXQgaT0hMDtyZXR1cm4gUWwocyxuKT8obi5mb3JFYWNoKG89Pntjb25zdHthY2NvdW50czphLG1ldGhvZHM6YyxldmVudHM6bH09dC5uYW1lc3BhY2VzW29dLGQ9bXAoYSksdT1yW29dOyghUWwoSk0obyx1KSxkKXx8IVFsKHUubWV0aG9kcyxjKXx8IVFsKHUuZXZlbnRzLGwpKSYmKGk9ITEpfSksaSk6ITF9ZnVuY3Rpb24gYmIodCl7cmV0dXJuIFZyKHQsITEpJiZ0LmluY2x1ZGVzKCI6Iik/dC5zcGxpdCgiOiIpLmxlbmd0aD09PTI6ITF9ZnVuY3Rpb24gT2llKHQpe2lmKFZyKHQsITEpJiZ0LmluY2x1ZGVzKCI6Iikpe2NvbnN0IGU9dC5zcGxpdCgiOiIpO2lmKGUubGVuZ3RoPT09Myl7Y29uc3Qgcj1lWzBdKyI6IitlWzFdO3JldHVybiEhZVsyXSYmYmIocil9fXJldHVybiExfWZ1bmN0aW9uICRpZSh0KXtmdW5jdGlvbiBlKHIpe3RyeXtyZXR1cm4gdHlwZW9mIG5ldyBVUkwocik8InUifWNhdGNoe3JldHVybiExfX10cnl7aWYoVnIodCwhMSkpe2lmKGUodCkpcmV0dXJuITA7Y29uc3Qgcj1yRCh0KTtyZXR1cm4gZShyKX19Y2F0Y2h7fXJldHVybiExfWZ1bmN0aW9uIE1pZSh0KXt2YXIgZTtyZXR1cm4oZT10Py5wcm9wb3Nlcik9PW51bGw/dm9pZCAwOmUucHVibGljS2V5fWZ1bmN0aW9uIERpZSh0KXtyZXR1cm4gdD8udG9waWN9ZnVuY3Rpb24gQmllKHQsZSl7bGV0IHI9bnVsbDtyZXR1cm4gVnIodD8ucHVibGljS2V5LCExKXx8KHI9T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYCR7ZX0gY29udHJvbGxlciBwdWJsaWMga2V5IHNob3VsZCBiZSBhIHN0cmluZ2ApKSxyfWZ1bmN0aW9uIGtrKHQpe2xldCBlPSEwO3JldHVybiBtYyh0KT90Lmxlbmd0aCYmKGU9dC5ldmVyeShyPT5WcihyLCExKSkpOmU9ITEsZX1mdW5jdGlvbiBMaWUodCxlLHIpe2xldCBuPW51bGw7cmV0dXJuIG1jKGUpJiZlLmxlbmd0aD9lLmZvckVhY2gocz0+e258fGJiKHMpfHwobj1LdCgiVU5TVVBQT1JURURfQ0hBSU5TIixgJHtyfSwgY2hhaW4gJHtzfSBzaG91bGQgYmUgYSBzdHJpbmcgYW5kIGNvbmZvcm0gdG8gIm5hbWVzcGFjZTpjaGFpbklkIiBmb3JtYXRgKSl9KTpiYih0KXx8KG49S3QoIlVOU1VQUE9SVEVEX0NIQUlOUyIsYCR7cn0sIGNoYWlucyBtdXN0IGJlIGRlZmluZWQgYXMgIm5hbWVzcGFjZTpjaGFpbklkIiBlLmcuICJlaXAxNTU6MSI6IHsuLi59IGluIHRoZSBuYW1lc3BhY2Uga2V5IE9SIGFzIGFuIGFycmF5IG9mIENBSVAtMiBjaGFpbklkcyBlLmcuIGVpcDE1NTogeyBjaGFpbnM6IFsiZWlwMTU1OjEiLCAiZWlwMTU1OjUiXSB9YCkpLG59ZnVuY3Rpb24gVWllKHQsZSxyKXtsZXQgbj1udWxsO3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbcyxpXSk9PntpZihuKXJldHVybjtjb25zdCBvPUxpZShzLEpNKHMsaSksYCR7ZX0gJHtyfWApO28mJihuPW8pfSksbn1mdW5jdGlvbiBGaWUodCxlKXtsZXQgcj1udWxsO3JldHVybiBtYyh0KT90LmZvckVhY2gobj0+e3J8fE9pZShuKXx8KHI9S3QoIlVOU1VQUE9SVEVEX0FDQ09VTlRTIixgJHtlfSwgYWNjb3VudCAke259IHNob3VsZCBiZSBhIHN0cmluZyBhbmQgY29uZm9ybSB0byAibmFtZXNwYWNlOmNoYWluSWQ6YWRkcmVzcyIgZm9ybWF0YCkpfSk6cj1LdCgiVU5TVVBQT1JURURfQUNDT1VOVFMiLGAke2V9LCBhY2NvdW50cyBzaG91bGQgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncyBjb25mb3JtaW5nIHRvICJuYW1lc3BhY2U6Y2hhaW5JZDphZGRyZXNzIiBmb3JtYXRgKSxyfWZ1bmN0aW9uIGppZSh0LGUpe2xldCByPW51bGw7cmV0dXJuIE9iamVjdC52YWx1ZXModCkuZm9yRWFjaChuPT57aWYocilyZXR1cm47Y29uc3Qgcz1GaWUobj8uYWNjb3VudHMsYCR7ZX0gbmFtZXNwYWNlYCk7cyYmKHI9cyl9KSxyfWZ1bmN0aW9uIHppZSh0LGUpe2xldCByPW51bGw7cmV0dXJuIGtrKHQ/Lm1ldGhvZHMpP2trKHQ/LmV2ZW50cyl8fChyPUt0KCJVTlNVUFBPUlRFRF9FVkVOVFMiLGAke2V9LCBldmVudHMgc2hvdWxkIGJlIGFuIGFycmF5IG9mIHN0cmluZ3Mgb3IgZW1wdHkgYXJyYXkgZm9yIG5vIGV2ZW50c2ApKTpyPUt0KCJVTlNVUFBPUlRFRF9NRVRIT0RTIixgJHtlfSwgbWV0aG9kcyBzaG91bGQgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncyBvciBlbXB0eSBhcnJheSBmb3Igbm8gbWV0aG9kc2ApLHJ9ZnVuY3Rpb24gTUQodCxlKXtsZXQgcj1udWxsO3JldHVybiBPYmplY3QudmFsdWVzKHQpLmZvckVhY2gobj0+e2lmKHIpcmV0dXJuO2NvbnN0IHM9emllKG4sYCR7ZX0sIG5hbWVzcGFjZWApO3MmJihyPXMpfSkscn1mdW5jdGlvbiBXaWUodCxlLHIpe2xldCBuPW51bGw7aWYodCYmWTAodCkpe2NvbnN0IHM9TUQodCxlKTtzJiYobj1zKTtjb25zdCBpPVVpZSh0LGUscik7aSYmKG49aSl9ZWxzZSBuPU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGAke2V9LCAke3J9IHNob3VsZCBiZSBhbiBvYmplY3Qgd2l0aCBkYXRhYCk7cmV0dXJuIG59ZnVuY3Rpb24gWDIodCxlKXtsZXQgcj1udWxsO2lmKHQmJlkwKHQpKXtjb25zdCBuPU1EKHQsZSk7biYmKHI9bik7Y29uc3Qgcz1qaWUodCxlKTtzJiYocj1zKX1lbHNlIHI9T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYCR7ZX0sIG5hbWVzcGFjZXMgc2hvdWxkIGJlIGFuIG9iamVjdCB3aXRoIGRhdGFgKTtyZXR1cm4gcn1mdW5jdGlvbiBERCh0KXtyZXR1cm4gVnIodC5wcm90b2NvbCwhMCl9ZnVuY3Rpb24gSGllKHQsZSl7bGV0IHI9ITE7cmV0dXJuIHQ/dCYmbWModCkmJnQubGVuZ3RoJiZ0LmZvckVhY2gobj0+e3I9REQobil9KTpyPSEwLHJ9ZnVuY3Rpb24gcWllKHQpe3JldHVybiB0eXBlb2YgdD09Im51bWJlciJ9ZnVuY3Rpb24gZWkodCl7cmV0dXJuIHR5cGVvZiB0PCJ1IiYmdHlwZW9mIHQhPT1udWxsfWZ1bmN0aW9uIFZpZSh0KXtyZXR1cm4hKCF0fHx0eXBlb2YgdCE9Im9iamVjdCJ8fCF0LmNvZGV8fCFXNih0LmNvZGUsITEpfHwhdC5tZXNzYWdlfHwhVnIodC5tZXNzYWdlLCExKSl9ZnVuY3Rpb24gR2llKHQpe3JldHVybiEoRW4odCl8fCFWcih0Lm1ldGhvZCwhMSkpfWZ1bmN0aW9uIEtpZSh0KXtyZXR1cm4hKEVuKHQpfHxFbih0LnJlc3VsdCkmJkVuKHQuZXJyb3IpfHwhVzYodC5pZCwhMSl8fCFWcih0Lmpzb25ycGMsITEpKX1mdW5jdGlvbiBaaWUodCl7cmV0dXJuIShFbih0KXx8IVZyKHQubmFtZSwhMSkpfWZ1bmN0aW9uIFNrKHQsZSl7cmV0dXJuISghYmIoZSl8fCFTaWUodCkuaW5jbHVkZXMoZSkpfWZ1bmN0aW9uIFlpZSh0LGUscil7cmV0dXJuIFZyKHIsITEpP0FpZSh0LGUpLmluY2x1ZGVzKHIpOiExfWZ1bmN0aW9uIEppZSh0LGUscil7cmV0dXJuIFZyKHIsITEpP1RpZSh0LGUpLmluY2x1ZGVzKHIpOiExfWZ1bmN0aW9uIEFrKHQsZSxyKXtsZXQgbj1udWxsO2NvbnN0IHM9WGllKHQpLGk9UWllKGUpLG89T2JqZWN0LmtleXMocyksYT1PYmplY3Qua2V5cyhpKSxjPVRrKE9iamVjdC5rZXlzKHQpKSxsPVRrKE9iamVjdC5rZXlzKGUpKSxkPWMuZmlsdGVyKHU9PiFsLmluY2x1ZGVzKHUpKTtyZXR1cm4gZC5sZW5ndGgmJihuPU9lKCJOT05fQ09ORk9STUlOR19OQU1FU1BBQ0VTIixgJHtyfSBuYW1lc3BhY2VzIGtleXMgZG9uJ3Qgc2F0aXNmeSByZXF1aXJlZE5hbWVzcGFjZXMuDQogICAgICBSZXF1aXJlZDogJHtkLnRvU3RyaW5nKCl9DQogICAgICBSZWNlaXZlZDogJHtPYmplY3Qua2V5cyhlKS50b1N0cmluZygpfWApKSxRbChvLGEpfHwobj1PZSgiTk9OX0NPTkZPUk1JTkdfTkFNRVNQQUNFUyIsYCR7cn0gbmFtZXNwYWNlcyBjaGFpbnMgZG9uJ3Qgc2F0aXNmeSByZXF1aXJlZCBuYW1lc3BhY2VzLg0KICAgICAgUmVxdWlyZWQ6ICR7by50b1N0cmluZygpfQ0KICAgICAgQXBwcm92ZWQ6ICR7YS50b1N0cmluZygpfWApKSxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKHU9PntpZighdS5pbmNsdWRlcygiOiIpfHxuKXJldHVybjtjb25zdCBoPW1wKGVbdV0uYWNjb3VudHMpO2guaW5jbHVkZXModSl8fChuPU9lKCJOT05fQ09ORk9STUlOR19OQU1FU1BBQ0VTIixgJHtyfSBuYW1lc3BhY2VzIGFjY291bnRzIGRvbid0IHNhdGlzZnkgbmFtZXNwYWNlIGFjY291bnRzIGZvciAke3V9DQogICAgICAgIFJlcXVpcmVkOiAke3V9DQogICAgICAgIEFwcHJvdmVkOiAke2gudG9TdHJpbmcoKX1gKSl9KSxvLmZvckVhY2godT0+e258fChRbChzW3VdLm1ldGhvZHMsaVt1XS5tZXRob2RzKT9RbChzW3VdLmV2ZW50cyxpW3VdLmV2ZW50cyl8fChuPU9lKCJOT05fQ09ORk9STUlOR19OQU1FU1BBQ0VTIixgJHtyfSBuYW1lc3BhY2VzIGV2ZW50cyBkb24ndCBzYXRpc2Z5IG5hbWVzcGFjZSBldmVudHMgZm9yICR7dX1gKSk6bj1PZSgiTk9OX0NPTkZPUk1JTkdfTkFNRVNQQUNFUyIsYCR7cn0gbmFtZXNwYWNlcyBtZXRob2RzIGRvbid0IHNhdGlzZnkgbmFtZXNwYWNlIG1ldGhvZHMgZm9yICR7dX1gKSl9KSxufWZ1bmN0aW9uIFhpZSh0KXtjb25zdCBlPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKHI9Pnt2YXIgbjtyLmluY2x1ZGVzKCI6Iik/ZVtyXT10W3JdOihuPXRbcl0uY2hhaW5zKT09bnVsbHx8bi5mb3JFYWNoKHM9PntlW3NdPXttZXRob2RzOnRbcl0ubWV0aG9kcyxldmVudHM6dFtyXS5ldmVudHN9fSl9KSxlfWZ1bmN0aW9uIFRrKHQpe3JldHVyblsuLi5uZXcgU2V0KHQubWFwKGU9PmUuaW5jbHVkZXMoIjoiKT9lLnNwbGl0KCI6IilbMF06ZSkpXX1mdW5jdGlvbiBRaWUodCl7Y29uc3QgZT17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChyPT57ci5pbmNsdWRlcygiOiIpP2Vbcl09dFtyXTptcCh0W3JdLmFjY291bnRzKT8uZm9yRWFjaChzPT57ZVtzXT17YWNjb3VudHM6dFtyXS5hY2NvdW50cy5maWx0ZXIoaT0+aS5pbmNsdWRlcyhgJHtzfTpgKSksbWV0aG9kczp0W3JdLm1ldGhvZHMsZXZlbnRzOnRbcl0uZXZlbnRzfX0pfSksZX1mdW5jdGlvbiBlc2UodCxlKXtyZXR1cm4gVzYodCwhMSkmJnQ8PWUubWF4JiZ0Pj1lLm1pbn1mdW5jdGlvbiBJaygpe2NvbnN0IHQ9YjEoKTtyZXR1cm4gbmV3IFByb21pc2UoZT0+e3N3aXRjaCh0KXtjYXNlIGtpLmJyb3dzZXI6ZSh0c2UoKSk7YnJlYWs7Y2FzZSBraS5yZWFjdE5hdGl2ZTplKHJzZSgpKTticmVhaztjYXNlIGtpLm5vZGU6ZShuc2UoKSk7YnJlYWs7ZGVmYXVsdDplKCEwKX19KX1mdW5jdGlvbiB0c2UoKXtyZXR1cm4gdzEoKSYmbmF2aWdhdG9yPy5vbkxpbmV9YXN5bmMgZnVuY3Rpb24gcnNlKCl7cmV0dXJuIEJjKCkmJnR5cGVvZiBnbG9iYWw8InUiJiZnbG9iYWwhPW51bGwmJmdsb2JhbC5OZXRJbmZvPyhhd2FpdChnbG9iYWw9PW51bGw/dm9pZCAwOmdsb2JhbC5OZXRJbmZvLmZldGNoKCkpKT8uaXNDb25uZWN0ZWQ6ITB9ZnVuY3Rpb24gbnNlKCl7cmV0dXJuITB9ZnVuY3Rpb24gaXNlKHQpe3N3aXRjaChiMSgpKXtjYXNlIGtpLmJyb3dzZXI6c3NlKHQpO2JyZWFrO2Nhc2Uga2kucmVhY3ROYXRpdmU6b3NlKHQpO2JyZWFrfX1mdW5jdGlvbiBzc2UodCl7IUJjKCkmJncxKCkmJih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigib25saW5lIiwoKT0+dCghMCkpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJvZmZsaW5lIiwoKT0+dCghMSkpKX1mdW5jdGlvbiBvc2UodCl7QmMoKSYmdHlwZW9mIGdsb2JhbDwidSImJmdsb2JhbCE9bnVsbCYmZ2xvYmFsLk5ldEluZm8mJmdsb2JhbD8uTmV0SW5mby5hZGRFdmVudExpc3RlbmVyKGU9PnQoZT8uaXNDb25uZWN0ZWQpKX1jb25zdCBRMj17fTtjbGFzcyBGcHtzdGF0aWMgZ2V0KGUpe3JldHVybiBRMltlXX1zdGF0aWMgc2V0KGUscil7UTJbZV09cn1zdGF0aWMgZGVsZXRlKGUpe2RlbGV0ZSBRMltlXX19Y29uc3QgYXNlPSJQQVJTRV9FUlJPUiIsY3NlPSJJTlZBTElEX1JFUVVFU1QiLGxzZT0iTUVUSE9EX05PVF9GT1VORCIsdXNlPSJJTlZBTElEX1BBUkFNUyIsQkQ9IklOVEVSTkFMX0VSUk9SIixINj0iU0VSVkVSX0VSUk9SIixkc2U9Wy0zMjcwMCwtMzI2MDAsLTMyNjAxLC0zMjYwMiwtMzI2MDNdLHIwPXtbYXNlXTp7Y29kZTotMzI3MDAsbWVzc2FnZToiUGFyc2UgZXJyb3IifSxbY3NlXTp7Y29kZTotMzI2MDAsbWVzc2FnZToiSW52YWxpZCBSZXF1ZXN0In0sW2xzZV06e2NvZGU6LTMyNjAxLG1lc3NhZ2U6Ik1ldGhvZCBub3QgZm91bmQifSxbdXNlXTp7Y29kZTotMzI2MDIsbWVzc2FnZToiSW52YWxpZCBwYXJhbXMifSxbQkRdOntjb2RlOi0zMjYwMyxtZXNzYWdlOiJJbnRlcm5hbCBlcnJvciJ9LFtINl06e2NvZGU6LTMyZTMsbWVzc2FnZToiU2VydmVyIGVycm9yIn19LExEPUg2O2Z1bmN0aW9uIGhzZSh0KXtyZXR1cm4gZHNlLmluY2x1ZGVzKHQpfWZ1bmN0aW9uIFJrKHQpe3JldHVybiBPYmplY3Qua2V5cyhyMCkuaW5jbHVkZXModCk/cjBbdF06cjBbTERdfWZ1bmN0aW9uIHBzZSh0KXtjb25zdCBlPU9iamVjdC52YWx1ZXMocjApLmZpbmQocj0+ci5jb2RlPT09dCk7cmV0dXJuIGV8fHIwW0xEXX1mdW5jdGlvbiBVRCh0LGUscil7cmV0dXJuIHQubWVzc2FnZS5pbmNsdWRlcygiZ2V0YWRkcmluZm8gRU5PVEZPVU5EIil8fHQubWVzc2FnZS5pbmNsdWRlcygiY29ubmVjdCBFQ09OTlJFRlVTRUQiKT9uZXcgRXJyb3IoYFVuYXZhaWxhYmxlICR7cn0gUlBDIHVybCBhdCAke2V9YCk6dH12YXIgZTM9e307LyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4NCg0KUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQpwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuDQoNClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIDQpSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwNCklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQ0KTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1INClBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL3ZhciBfeD1mdW5jdGlvbih0LGUpe3JldHVybiBfeD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24ocixuKXtyLl9fcHJvdG9fXz1ufXx8ZnVuY3Rpb24ocixuKXtmb3IodmFyIHMgaW4gbiluLmhhc093blByb3BlcnR5KHMpJiYocltzXT1uW3NdKX0sX3godCxlKX07ZnVuY3Rpb24gZnNlKHQsZSl7X3godCxlKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fXQucHJvdG90eXBlPWU9PT1udWxsP09iamVjdC5jcmVhdGUoZSk6KHIucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyByKX12YXIga3g9ZnVuY3Rpb24oKXtyZXR1cm4ga3g9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciByLG49MSxzPWFyZ3VtZW50cy5sZW5ndGg7bjxzO24rKyl7cj1hcmd1bWVudHNbbl07Zm9yKHZhciBpIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsaSkmJihlW2ldPXJbaV0pfXJldHVybiBlfSxreC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIG1zZSh0LGUpe3ZhciByPXt9O2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiZlLmluZGV4T2Yobik8MCYmKHJbbl09dFtuXSk7aWYodCE9bnVsbCYmdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM9PSJmdW5jdGlvbiIpZm9yKHZhciBzPTAsbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO3M8bi5sZW5ndGg7cysrKWUuaW5kZXhPZihuW3NdKTwwJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodCxuW3NdKSYmKHJbbltzXV09dFtuW3NdXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gZ3NlKHQsZSxyLG4pe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGgsaT1zPDM/ZTpuPT09bnVsbD9uPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKTpuLG87aWYodHlwZW9mIFJlZmxlY3Q9PSJvYmplY3QiJiZ0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZT09ImZ1bmN0aW9uIilpPVJlZmxlY3QuZGVjb3JhdGUodCxlLHIsbik7ZWxzZSBmb3IodmFyIGE9dC5sZW5ndGgtMTthPj0wO2EtLSkobz10W2FdKSYmKGk9KHM8Mz9vKGkpOnM+Mz9vKGUscixpKTpvKGUscikpfHxpKTtyZXR1cm4gcz4zJiZpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLGkpLGl9ZnVuY3Rpb24gd3NlKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIsbil7ZShyLG4sdCl9fWZ1bmN0aW9uIGJzZSh0LGUpe2lmKHR5cGVvZiBSZWZsZWN0PT0ib2JqZWN0IiYmdHlwZW9mIFJlZmxlY3QubWV0YWRhdGE9PSJmdW5jdGlvbiIpcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEodCxlKX1mdW5jdGlvbiB5c2UodCxlLHIsbil7ZnVuY3Rpb24gcyhpKXtyZXR1cm4gaSBpbnN0YW5jZW9mIHI/aTpuZXcgcihmdW5jdGlvbihvKXtvKGkpfSl9cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoZnVuY3Rpb24oaSxvKXtmdW5jdGlvbiBhKGQpe3RyeXtsKG4ubmV4dChkKSl9Y2F0Y2godSl7byh1KX19ZnVuY3Rpb24gYyhkKXt0cnl7bChuLnRocm93KGQpKX1jYXRjaCh1KXtvKHUpfX1mdW5jdGlvbiBsKGQpe2QuZG9uZT9pKGQudmFsdWUpOnMoZC52YWx1ZSkudGhlbihhLGMpfWwoKG49bi5hcHBseSh0LGV8fFtdKSkubmV4dCgpKX0pfWZ1bmN0aW9uIHZzZSh0LGUpe3ZhciByPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZihpWzBdJjEpdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119LG4scyxpLG87cmV0dXJuIG89e25leHQ6YSgwKSx0aHJvdzphKDEpLHJldHVybjphKDIpfSx0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIGEobCl7cmV0dXJuIGZ1bmN0aW9uKGQpe3JldHVybiBjKFtsLGRdKX19ZnVuY3Rpb24gYyhsKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3I7KXRyeXtpZihuPTEscyYmKGk9bFswXSYyP3MucmV0dXJuOmxbMF0/cy50aHJvd3x8KChpPXMucmV0dXJuKSYmaS5jYWxsKHMpLDApOnMubmV4dCkmJiEoaT1pLmNhbGwocyxsWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gocz0wLGkmJihsPVtsWzBdJjIsaS52YWx1ZV0pLGxbMF0pe2Nhc2UgMDpjYXNlIDE6aT1sO2JyZWFrO2Nhc2UgNDpyZXR1cm4gci5sYWJlbCsrLHt2YWx1ZTpsWzFdLGRvbmU6ITF9O2Nhc2UgNTpyLmxhYmVsKysscz1sWzFdLGw9WzBdO2NvbnRpbnVlO2Nhc2UgNzpsPXIub3BzLnBvcCgpLHIudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKGk9ci50cnlzLCEoaT1pLmxlbmd0aD4wJiZpW2kubGVuZ3RoLTFdKSYmKGxbMF09PT02fHxsWzBdPT09Mikpe3I9MDtjb250aW51ZX1pZihsWzBdPT09MyYmKCFpfHxsWzFdPmlbMF0mJmxbMV08aVszXSkpe3IubGFiZWw9bFsxXTticmVha31pZihsWzBdPT09NiYmci5sYWJlbDxpWzFdKXtyLmxhYmVsPWlbMV0saT1sO2JyZWFrfWlmKGkmJnIubGFiZWw8aVsyXSl7ci5sYWJlbD1pWzJdLHIub3BzLnB1c2gobCk7YnJlYWt9aVsyXSYmci5vcHMucG9wKCksci50cnlzLnBvcCgpO2NvbnRpbnVlfWw9ZS5jYWxsKHQscil9Y2F0Y2goZCl7bD1bNixkXSxzPTB9ZmluYWxseXtuPWk9MH1pZihsWzBdJjUpdGhyb3cgbFsxXTtyZXR1cm57dmFsdWU6bFswXT9sWzFdOnZvaWQgMCxkb25lOiEwfX19ZnVuY3Rpb24gRXNlKHQsZSxyLG4pe249PT12b2lkIDAmJihuPXIpLHRbbl09ZVtyXX1mdW5jdGlvbiBDc2UodCxlKXtmb3IodmFyIHIgaW4gdClyIT09ImRlZmF1bHQiJiYhZS5oYXNPd25Qcm9wZXJ0eShyKSYmKGVbcl09dFtyXSl9ZnVuY3Rpb24gU3godCl7dmFyIGU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmU3ltYm9sLml0ZXJhdG9yLHI9ZSYmdFtlXSxuPTA7aWYocilyZXR1cm4gci5jYWxsKHQpO2lmKHQmJnR5cGVvZiB0Lmxlbmd0aD09Im51bWJlciIpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbj49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbisrXSxkb25lOiF0fX19O3Rocm93IG5ldyBUeXBlRXJyb3IoZT8iT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iOiJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIil9ZnVuY3Rpb24gRkQodCxlKXt2YXIgcj10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIXIpcmV0dXJuIHQ7dmFyIG49ci5jYWxsKHQpLHMsaT1bXSxvO3RyeXtmb3IoOyhlPT09dm9pZCAwfHxlLS0gPjApJiYhKHM9bi5uZXh0KCkpLmRvbmU7KWkucHVzaChzLnZhbHVlKX1jYXRjaChhKXtvPXtlcnJvcjphfX1maW5hbGx5e3RyeXtzJiYhcy5kb25lJiYocj1uLnJldHVybikmJnIuY2FsbChuKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGl9ZnVuY3Rpb24geHNlKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQoRkQoYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9ZnVuY3Rpb24gX3NlKCl7Zm9yKHZhciB0PTAsZT0wLHI9YXJndW1lbnRzLmxlbmd0aDtlPHI7ZSsrKXQrPWFyZ3VtZW50c1tlXS5sZW5ndGg7Zm9yKHZhciBuPUFycmF5KHQpLHM9MCxlPTA7ZTxyO2UrKylmb3IodmFyIGk9YXJndW1lbnRzW2VdLG89MCxhPWkubGVuZ3RoO288YTtvKysscysrKW5bc109aVtvXTtyZXR1cm4gbn1mdW5jdGlvbiBKMCh0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEowPyh0aGlzLnY9dCx0aGlzKTpuZXcgSjAodCl9ZnVuY3Rpb24ga3NlKHQsZSxyKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIG49ci5hcHBseSh0LGV8fFtdKSxzLGk9W107cmV0dXJuIHM9e30sbygibmV4dCIpLG8oInRocm93IiksbygicmV0dXJuIiksc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30scztmdW5jdGlvbiBvKGgpe25baF0mJihzW2hdPWZ1bmN0aW9uKHApe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihmLG0pe2kucHVzaChbaCxwLGYsbV0pPjF8fGEoaCxwKX0pfSl9ZnVuY3Rpb24gYShoLHApe3RyeXtjKG5baF0ocCkpfWNhdGNoKGYpe3UoaVswXVszXSxmKX19ZnVuY3Rpb24gYyhoKXtoLnZhbHVlIGluc3RhbmNlb2YgSjA/UHJvbWlzZS5yZXNvbHZlKGgudmFsdWUudikudGhlbihsLGQpOnUoaVswXVsyXSxoKX1mdW5jdGlvbiBsKGgpe2EoIm5leHQiLGgpfWZ1bmN0aW9uIGQoaCl7YSgidGhyb3ciLGgpfWZ1bmN0aW9uIHUoaCxwKXtoKHApLGkuc2hpZnQoKSxpLmxlbmd0aCYmYShpWzBdWzBdLGlbMF1bMV0pfX1mdW5jdGlvbiBTc2UodCl7dmFyIGUscjtyZXR1cm4gZT17fSxuKCJuZXh0IiksbigidGhyb3ciLGZ1bmN0aW9uKHMpe3Rocm93IHN9KSxuKCJyZXR1cm4iKSxlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZTtmdW5jdGlvbiBuKHMsaSl7ZVtzXT10W3NdP2Z1bmN0aW9uKG8pe3JldHVybihyPSFyKT97dmFsdWU6SjAodFtzXShvKSksZG9uZTpzPT09InJldHVybiJ9Omk/aShvKTpvfTppfX1mdW5jdGlvbiBBc2UodCl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlPXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdLHI7cmV0dXJuIGU/ZS5jYWxsKHQpOih0PXR5cGVvZiBTeD09ImZ1bmN0aW9uIj9TeCh0KTp0W1N5bWJvbC5pdGVyYXRvcl0oKSxyPXt9LG4oIm5leHQiKSxuKCJ0aHJvdyIpLG4oInJldHVybiIpLHJbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHIpO2Z1bmN0aW9uIG4oaSl7cltpXT10W2ldJiZmdW5jdGlvbihvKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oYSxjKXtvPXRbaV0obykscyhhLGMsby5kb25lLG8udmFsdWUpfSl9fWZ1bmN0aW9uIHMoaSxvLGEsYyl7UHJvbWlzZS5yZXNvbHZlKGMpLnRoZW4oZnVuY3Rpb24obCl7aSh7dmFsdWU6bCxkb25lOmF9KX0sbyl9fWZ1bmN0aW9uIFRzZSh0LGUpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHk/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJhdyIse3ZhbHVlOmV9KTp0LnJhdz1lLHR9ZnVuY3Rpb24gSXNlKHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZih0IT1udWxsKWZvcih2YXIgciBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJihlW3JdPXRbcl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfWZ1bmN0aW9uIFJzZSh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19ZnVuY3Rpb24gTnNlKHQsZSl7aWYoIWUuaGFzKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2UiKTtyZXR1cm4gZS5nZXQodCl9ZnVuY3Rpb24gUHNlKHQsZSxyKXtpZighZS5oYXModCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHNldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlLnNldCh0LHIpLHJ9Y29uc3QgT3NlPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxnZXQgX19hc3NpZ24oKXtyZXR1cm4ga3h9LF9fYXN5bmNEZWxlZ2F0b3I6U3NlLF9fYXN5bmNHZW5lcmF0b3I6a3NlLF9fYXN5bmNWYWx1ZXM6QXNlLF9fYXdhaXQ6SjAsX19hd2FpdGVyOnlzZSxfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0Ok5zZSxfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0OlBzZSxfX2NyZWF0ZUJpbmRpbmc6RXNlLF9fZGVjb3JhdGU6Z3NlLF9fZXhwb3J0U3RhcjpDc2UsX19leHRlbmRzOmZzZSxfX2dlbmVyYXRvcjp2c2UsX19pbXBvcnREZWZhdWx0OlJzZSxfX2ltcG9ydFN0YXI6SXNlLF9fbWFrZVRlbXBsYXRlT2JqZWN0OlRzZSxfX21ldGFkYXRhOmJzZSxfX3BhcmFtOndzZSxfX3JlYWQ6RkQsX19yZXN0Om1zZSxfX3NwcmVhZDp4c2UsX19zcHJlYWRBcnJheXM6X3NlLF9fdmFsdWVzOlN4fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLCRzZT1NYyhPc2UpO3ZhciBHbz17fSxOaztmdW5jdGlvbiBNc2UoKXtpZihOaylyZXR1cm4gR287Tms9MSxPYmplY3QuZGVmaW5lUHJvcGVydHkoR28sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLEdvLmlzQnJvd3NlckNyeXB0b0F2YWlsYWJsZT1Hby5nZXRTdWJ0bGVDcnlwdG89R28uZ2V0QnJvd2VyQ3J5cHRvPXZvaWQgMDtmdW5jdGlvbiB0KCl7cmV0dXJuIEFuPy5jcnlwdG98fEFuPy5tc0NyeXB0b3x8e319R28uZ2V0QnJvd2VyQ3J5cHRvPXQ7ZnVuY3Rpb24gZSgpe2NvbnN0IG49dCgpO3JldHVybiBuLnN1YnRsZXx8bi53ZWJraXRTdWJ0bGV9R28uZ2V0U3VidGxlQ3J5cHRvPWU7ZnVuY3Rpb24gcigpe3JldHVybiEhdCgpJiYhIWUoKX1yZXR1cm4gR28uaXNCcm93c2VyQ3J5cHRvQXZhaWxhYmxlPXIsR299dmFyIEtvPXt9LFBrO2Z1bmN0aW9uIERzZSgpe2lmKFBrKXJldHVybiBLbztQaz0xLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShLbywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksS28uaXNCcm93c2VyPUtvLmlzTm9kZT1Lby5pc1JlYWN0TmF0aXZlPXZvaWQgMDtmdW5jdGlvbiB0KCl7cmV0dXJuIHR5cGVvZiBkb2N1bWVudD4idSImJnR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3IucHJvZHVjdD09PSJSZWFjdE5hdGl2ZSJ9S28uaXNSZWFjdE5hdGl2ZT10O2Z1bmN0aW9uIGUoKXtyZXR1cm4gdHlwZW9mIHByb2Nlc3M8InUiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9uczwidSImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGU8InUifUtvLmlzTm9kZT1lO2Z1bmN0aW9uIHIoKXtyZXR1cm4hdCgpJiYhZSgpfXJldHVybiBLby5pc0Jyb3dzZXI9cixLb312YXIgT2s7ZnVuY3Rpb24gQnNlKCl7cmV0dXJuIE9rfHwoT2s9MSxmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7Y29uc3QgZT0kc2U7ZS5fX2V4cG9ydFN0YXIoTXNlKCksdCksZS5fX2V4cG9ydFN0YXIoRHNlKCksdCl9KGUzKSksZTN9dmFyIExzZT1Cc2UoKTtmdW5jdGlvbiBobyh0PTMpe2NvbnN0IGU9RGF0ZS5ub3coKSpNYXRoLnBvdygxMCx0KSxyPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpNYXRoLnBvdygxMCx0KSk7cmV0dXJuIGUrcn1mdW5jdGlvbiBldSh0PTYpe3JldHVybiBCaWdJbnQoaG8odCkpfWZ1bmN0aW9uIGxjKHQsZSxyKXtyZXR1cm57aWQ6cnx8aG8oKSxqc29ucnBjOiIyLjAiLG1ldGhvZDp0LHBhcmFtczplfX1mdW5jdGlvbiBXeSh0LGUpe3JldHVybntpZDp0LGpzb25ycGM6IjIuMCIscmVzdWx0OmV9fWZ1bmN0aW9uIEh5KHQsZSxyKXtyZXR1cm57aWQ6dCxqc29ucnBjOiIyLjAiLGVycm9yOlVzZShlKX19ZnVuY3Rpb24gVXNlKHQsZSl7cmV0dXJuIHR5cGVvZiB0PiJ1Ij9SayhCRCk6KHR5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LFJrKEg2KSkse21lc3NhZ2U6dH0pKSxoc2UodC5jb2RlKSYmKHQ9cHNlKHQuY29kZSkpLHQpfWxldCBGc2U9Y2xhc3N7fSxqc2U9Y2xhc3MgZXh0ZW5kcyBGc2V7Y29uc3RydWN0b3IoKXtzdXBlcigpfX0senNlPWNsYXNzIGV4dGVuZHMganNle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCl9fTtjb25zdCBXc2U9Il5odHRwcz86IixIc2U9Il53c3M/OiI7ZnVuY3Rpb24gcXNlKHQpe2NvbnN0IGU9dC5tYXRjaChuZXcgUmVnRXhwKC9eXHcrOi8sImdpIikpO2lmKCEoIWV8fCFlLmxlbmd0aCkpcmV0dXJuIGVbMF19ZnVuY3Rpb24gakQodCxlKXtjb25zdCByPXFzZSh0KTtyZXR1cm4gdHlwZW9mIHI+InUiPyExOm5ldyBSZWdFeHAoZSkudGVzdChyKX1mdW5jdGlvbiAkayh0KXtyZXR1cm4gakQodCxXc2UpfWZ1bmN0aW9uIE1rKHQpe3JldHVybiBqRCh0LEhzZSl9ZnVuY3Rpb24gVnNlKHQpe3JldHVybiBuZXcgUmVnRXhwKCJ3c3M/Oi8vbG9jYWxob3N0KDpkezIsNX0pPyIpLnRlc3QodCl9ZnVuY3Rpb24gekQodCl7cmV0dXJuIHR5cGVvZiB0PT0ib2JqZWN0IiYmImlkImluIHQmJiJqc29ucnBjImluIHQmJnQuanNvbnJwYz09PSIyLjAifWZ1bmN0aW9uIHE2KHQpe3JldHVybiB6RCh0KSYmIm1ldGhvZCJpbiB0fWZ1bmN0aW9uIHF5KHQpe3JldHVybiB6RCh0KSYmKHBvKHQpfHxZaSh0KSl9ZnVuY3Rpb24gcG8odCl7cmV0dXJuInJlc3VsdCJpbiB0fWZ1bmN0aW9uIFlpKHQpe3JldHVybiJlcnJvciJpbiB0fWxldCBhcz1jbGFzcyBleHRlbmRzIHpzZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLmV2ZW50cz1uZXcgb3MuRXZlbnRFbWl0dGVyLHRoaXMuaGFzUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXJzPSExLHRoaXMuY29ubmVjdGlvbj10aGlzLnNldENvbm5lY3Rpb24oZSksdGhpcy5jb25uZWN0aW9uLmNvbm5lY3RlZCYmdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJzKCl9YXN5bmMgY29ubmVjdChlPXRoaXMuY29ubmVjdGlvbil7YXdhaXQgdGhpcy5vcGVuKGUpfWFzeW5jIGRpc2Nvbm5lY3QoKXthd2FpdCB0aGlzLmNsb3NlKCl9b24oZSxyKXt0aGlzLmV2ZW50cy5vbihlLHIpfW9uY2UoZSxyKXt0aGlzLmV2ZW50cy5vbmNlKGUscil9b2ZmKGUscil7dGhpcy5ldmVudHMub2ZmKGUscil9cmVtb3ZlTGlzdGVuZXIoZSxyKXt0aGlzLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihlLHIpfWFzeW5jIHJlcXVlc3QoZSxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0U3RyaWN0KGxjKGUubWV0aG9kLGUucGFyYW1zfHxbXSxlLmlkfHxldSgpLnRvU3RyaW5nKCkpLHIpfWFzeW5jIHJlcXVlc3RTdHJpY3QoZSxyKXtyZXR1cm4gbmV3IFByb21pc2UoYXN5bmMobixzKT0+e2lmKCF0aGlzLmNvbm5lY3Rpb24uY29ubmVjdGVkKXRyeXthd2FpdCB0aGlzLm9wZW4oKX1jYXRjaChpKXtzKGkpfXRoaXMuZXZlbnRzLm9uKGAke2UuaWR9YCxpPT57WWkoaSk/cyhpLmVycm9yKTpuKGkucmVzdWx0KX0pO3RyeXthd2FpdCB0aGlzLmNvbm5lY3Rpb24uc2VuZChlLHIpfWNhdGNoKGkpe3MoaSl9fSl9c2V0Q29ubmVjdGlvbihlPXRoaXMuY29ubmVjdGlvbil7cmV0dXJuIGV9b25QYXlsb2FkKGUpe3RoaXMuZXZlbnRzLmVtaXQoInBheWxvYWQiLGUpLHF5KGUpP3RoaXMuZXZlbnRzLmVtaXQoYCR7ZS5pZH1gLGUpOnRoaXMuZXZlbnRzLmVtaXQoIm1lc3NhZ2UiLHt0eXBlOmUubWV0aG9kLGRhdGE6ZS5wYXJhbXN9KX1vbkNsb3NlKGUpe2UmJmUuY29kZT09PTNlMyYmdGhpcy5ldmVudHMuZW1pdCgiZXJyb3IiLG5ldyBFcnJvcihgV2ViU29ja2V0IGNvbm5lY3Rpb24gY2xvc2VkIGFibm9ybWFsbHkgd2l0aCBjb2RlOiAke2UuY29kZX0gJHtlLnJlYXNvbj9gKCR7ZS5yZWFzb259KWA6IiJ9YCkpLHRoaXMuZXZlbnRzLmVtaXQoImRpc2Nvbm5lY3QiKX1hc3luYyBvcGVuKGU9dGhpcy5jb25uZWN0aW9uKXt0aGlzLmNvbm5lY3Rpb249PT1lJiZ0aGlzLmNvbm5lY3Rpb24uY29ubmVjdGVkfHwodGhpcy5jb25uZWN0aW9uLmNvbm5lY3RlZCYmdGhpcy5jbG9zZSgpLHR5cGVvZiBlPT0ic3RyaW5nIiYmKGF3YWl0IHRoaXMuY29ubmVjdGlvbi5vcGVuKGUpLGU9dGhpcy5jb25uZWN0aW9uKSx0aGlzLmNvbm5lY3Rpb249dGhpcy5zZXRDb25uZWN0aW9uKGUpLGF3YWl0IHRoaXMuY29ubmVjdGlvbi5vcGVuKCksdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJzKCksdGhpcy5ldmVudHMuZW1pdCgiY29ubmVjdCIpKX1hc3luYyBjbG9zZSgpe2F3YWl0IHRoaXMuY29ubmVjdGlvbi5jbG9zZSgpfXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcnMoKXt0aGlzLmhhc1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyc3x8KHRoaXMuY29ubmVjdGlvbi5vbigicGF5bG9hZCIsZT0+dGhpcy5vblBheWxvYWQoZSkpLHRoaXMuY29ubmVjdGlvbi5vbigiY2xvc2UiLGU9PnRoaXMub25DbG9zZShlKSksdGhpcy5jb25uZWN0aW9uLm9uKCJlcnJvciIsZT0+dGhpcy5ldmVudHMuZW1pdCgiZXJyb3IiLGUpKSx0aGlzLmNvbm5lY3Rpb24ub24oInJlZ2lzdGVyX2Vycm9yIixlPT50aGlzLm9uQ2xvc2UoKSksdGhpcy5oYXNSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcnM9ITApfX07Y29uc3QgR3NlPSgpPT50eXBlb2YgV2ViU29ja2V0PCJ1Ij9XZWJTb2NrZXQ6dHlwZW9mIGdsb2JhbDwidSImJnR5cGVvZiBnbG9iYWwuV2ViU29ja2V0PCJ1Ij9nbG9iYWwuV2ViU29ja2V0OnR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2Ygd2luZG93LldlYlNvY2tldDwidSI/d2luZG93LldlYlNvY2tldDp0eXBlb2Ygc2VsZjwidSImJnR5cGVvZiBzZWxmLldlYlNvY2tldDwidSI/c2VsZi5XZWJTb2NrZXQ6cmVxdWlyZSgid3MiKSxLc2U9KCk9PnR5cGVvZiBXZWJTb2NrZXQ8InUifHx0eXBlb2YgZ2xvYmFsPCJ1IiYmdHlwZW9mIGdsb2JhbC5XZWJTb2NrZXQ8InUifHx0eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIHdpbmRvdy5XZWJTb2NrZXQ8InUifHx0eXBlb2Ygc2VsZjwidSImJnR5cGVvZiBzZWxmLldlYlNvY2tldDwidSIsRGs9dD0+dC5zcGxpdCgiPyIpWzBdLEJrPTEwLFpzZT1Hc2UoKTtsZXQgWXNlPWNsYXNze2NvbnN0cnVjdG9yKGUpe2lmKHRoaXMudXJsPWUsdGhpcy5ldmVudHM9bmV3IG9zLkV2ZW50RW1pdHRlcix0aGlzLnJlZ2lzdGVyaW5nPSExLCFNayhlKSl0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGVkIFVSTCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFdlYlNvY2tldCBjb25uZWN0aW9uOiAke2V9YCk7dGhpcy51cmw9ZX1nZXQgY29ubmVjdGVkKCl7cmV0dXJuIHR5cGVvZiB0aGlzLnNvY2tldDwidSJ9Z2V0IGNvbm5lY3RpbmcoKXtyZXR1cm4gdGhpcy5yZWdpc3RlcmluZ31vbihlLHIpe3RoaXMuZXZlbnRzLm9uKGUscil9b25jZShlLHIpe3RoaXMuZXZlbnRzLm9uY2UoZSxyKX1vZmYoZSxyKXt0aGlzLmV2ZW50cy5vZmYoZSxyKX1yZW1vdmVMaXN0ZW5lcihlLHIpe3RoaXMuZXZlbnRzLnJlbW92ZUxpc3RlbmVyKGUscil9YXN5bmMgb3BlbihlPXRoaXMudXJsKXthd2FpdCB0aGlzLnJlZ2lzdGVyKGUpfWFzeW5jIGNsb3NlKCl7cmV0dXJuIG5ldyBQcm9taXNlKChlLHIpPT57aWYodHlwZW9mIHRoaXMuc29ja2V0PiJ1Iil7cihuZXcgRXJyb3IoIkNvbm5lY3Rpb24gYWxyZWFkeSBjbG9zZWQiKSk7cmV0dXJufXRoaXMuc29ja2V0Lm9uY2xvc2U9bj0+e3RoaXMub25DbG9zZShuKSxlKCl9LHRoaXMuc29ja2V0LmNsb3NlKCl9KX1hc3luYyBzZW5kKGUpe3R5cGVvZiB0aGlzLnNvY2tldD4idSImJih0aGlzLnNvY2tldD1hd2FpdCB0aGlzLnJlZ2lzdGVyKCkpO3RyeXt0aGlzLnNvY2tldC5zZW5kKGdhKGUpKX1jYXRjaChyKXt0aGlzLm9uRXJyb3IoZS5pZCxyKX19cmVnaXN0ZXIoZT10aGlzLnVybCl7aWYoIU1rKGUpKXRocm93IG5ldyBFcnJvcihgUHJvdmlkZWQgVVJMIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggV2ViU29ja2V0IGNvbm5lY3Rpb246ICR7ZX1gKTtpZih0aGlzLnJlZ2lzdGVyaW5nKXtjb25zdCByPXRoaXMuZXZlbnRzLmdldE1heExpc3RlbmVycygpO3JldHVybih0aGlzLmV2ZW50cy5saXN0ZW5lckNvdW50KCJyZWdpc3Rlcl9lcnJvciIpPj1yfHx0aGlzLmV2ZW50cy5saXN0ZW5lckNvdW50KCJvcGVuIik+PXIpJiZ0aGlzLmV2ZW50cy5zZXRNYXhMaXN0ZW5lcnMocisxKSxuZXcgUHJvbWlzZSgobixzKT0+e3RoaXMuZXZlbnRzLm9uY2UoInJlZ2lzdGVyX2Vycm9yIixpPT57dGhpcy5yZXNldE1heExpc3RlbmVycygpLHMoaSl9KSx0aGlzLmV2ZW50cy5vbmNlKCJvcGVuIiwoKT0+e2lmKHRoaXMucmVzZXRNYXhMaXN0ZW5lcnMoKSx0eXBlb2YgdGhpcy5zb2NrZXQ+InUiKXJldHVybiBzKG5ldyBFcnJvcigiV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgbWlzc2luZyBvciBpbnZhbGlkIikpO24odGhpcy5zb2NrZXQpfSl9KX1yZXR1cm4gdGhpcy51cmw9ZSx0aGlzLnJlZ2lzdGVyaW5nPSEwLG5ldyBQcm9taXNlKChyLG4pPT57Y29uc3Qgcz1Mc2UuaXNSZWFjdE5hdGl2ZSgpP3ZvaWQgMDp7cmVqZWN0VW5hdXRob3JpemVkOiFWc2UoZSl9LGk9bmV3IFpzZShlLFtdLHMpO0tzZSgpP2kub25lcnJvcj1vPT57Y29uc3QgYT1vO24odGhpcy5lbWl0RXJyb3IoYS5lcnJvcikpfTppLm9uKCJlcnJvciIsbz0+e24odGhpcy5lbWl0RXJyb3IobykpfSksaS5vbm9wZW49KCk9Pnt0aGlzLm9uT3BlbihpKSxyKGkpfX0pfW9uT3BlbihlKXtlLm9ubWVzc2FnZT1yPT50aGlzLm9uUGF5bG9hZChyKSxlLm9uY2xvc2U9cj0+dGhpcy5vbkNsb3NlKHIpLHRoaXMuc29ja2V0PWUsdGhpcy5yZWdpc3RlcmluZz0hMSx0aGlzLmV2ZW50cy5lbWl0KCJvcGVuIil9b25DbG9zZShlKXt0aGlzLnNvY2tldD12b2lkIDAsdGhpcy5yZWdpc3RlcmluZz0hMSx0aGlzLmV2ZW50cy5lbWl0KCJjbG9zZSIsZSl9b25QYXlsb2FkKGUpe2lmKHR5cGVvZiBlLmRhdGE+InUiKXJldHVybjtjb25zdCByPXR5cGVvZiBlLmRhdGE9PSJzdHJpbmciP2J1KGUuZGF0YSk6ZS5kYXRhO3RoaXMuZXZlbnRzLmVtaXQoInBheWxvYWQiLHIpfW9uRXJyb3IoZSxyKXtjb25zdCBuPXRoaXMucGFyc2VFcnJvcihyKSxzPW4ubWVzc2FnZXx8bi50b1N0cmluZygpLGk9SHkoZSxzKTt0aGlzLmV2ZW50cy5lbWl0KCJwYXlsb2FkIixpKX1wYXJzZUVycm9yKGUscj10aGlzLnVybCl7cmV0dXJuIFVEKGUsRGsociksIldTIil9cmVzZXRNYXhMaXN0ZW5lcnMoKXt0aGlzLmV2ZW50cy5nZXRNYXhMaXN0ZW5lcnMoKT5CayYmdGhpcy5ldmVudHMuc2V0TWF4TGlzdGVuZXJzKEJrKX1lbWl0RXJyb3IoZSl7Y29uc3Qgcj10aGlzLnBhcnNlRXJyb3IobmV3IEVycm9yKGU/Lm1lc3NhZ2V8fGBXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQgZm9yIGhvc3Q6ICR7RGsodGhpcy51cmwpfWApKTtyZXR1cm4gdGhpcy5ldmVudHMuZW1pdCgicmVnaXN0ZXJfZXJyb3IiLHIpLHJ9fTt2YXIgSnNlPXt9O2NvbnN0IFdEPSJ3YyIsSEQ9MixBeD0iY29yZSIsQ289YCR7V0R9QDI6JHtBeH06YCxYc2U9e2xvZ2dlcjoiZXJyb3IifSxRc2U9e2RhdGFiYXNlOiI6bWVtb3J5OiJ9LGVvZT0iY3J5cHRvIixMaz0iY2xpZW50X2VkMjU1MTlfc2VlZCIsdG9lPVBlLk9ORV9EQVkscm9lPSJrZXljaGFpbiIsbm9lPSIwLjMiLGlvZT0ibWVzc2FnZXMiLHNvZT0iMC4zIixVaz1QZS5TSVhfSE9VUlMsb29lPSJwdWJsaXNoZXIiLHFEPSJpcm4iLGFvZT0iZXJyb3IiLFZEPSJ3c3M6Ly9yZWxheS53YWxsZXRjb25uZWN0Lm9yZyIsY29lPSJyZWxheWVyIixhbj17bWVzc2FnZToicmVsYXllcl9tZXNzYWdlIixtZXNzYWdlX2FjazoicmVsYXllcl9tZXNzYWdlX2FjayIsY29ubmVjdDoicmVsYXllcl9jb25uZWN0IixkaXNjb25uZWN0OiJyZWxheWVyX2Rpc2Nvbm5lY3QiLGVycm9yOiJyZWxheWVyX2Vycm9yIixjb25uZWN0aW9uX3N0YWxsZWQ6InJlbGF5ZXJfY29ubmVjdGlvbl9zdGFsbGVkIix0cmFuc3BvcnRfY2xvc2VkOiJyZWxheWVyX3RyYW5zcG9ydF9jbG9zZWQiLHB1Ymxpc2g6InJlbGF5ZXJfcHVibGlzaCJ9LGxvZT0iX3N1YnNjcmlwdGlvbiIsamk9e3BheWxvYWQ6InBheWxvYWQiLGNvbm5lY3Q6ImNvbm5lY3QiLGRpc2Nvbm5lY3Q6ImRpc2Nvbm5lY3QiLGVycm9yOiJlcnJvciJ9LHVvZT0uMSxUeD0iMi4yMC4yIixjcj17bGlua19tb2RlOiJsaW5rX21vZGUiLHJlbGF5OiJyZWxheSJ9LFd3PXtpbmJvdW5kOiJpbmJvdW5kIixvdXRib3VuZDoib3V0Ym91bmQifSxkb2U9IjAuMyIsaG9lPSJXQUxMRVRDT05ORUNUX0NMSUVOVF9JRCIsRms9IldBTExFVENPTk5FQ1RfTElOS19NT0RFX0FQUFMiLHlpPXtjcmVhdGVkOiJzdWJzY3JpcHRpb25fY3JlYXRlZCIsZGVsZXRlZDoic3Vic2NyaXB0aW9uX2RlbGV0ZWQiLGV4cGlyZWQ6InN1YnNjcmlwdGlvbl9leHBpcmVkIixkaXNhYmxlZDoic3Vic2NyaXB0aW9uX2Rpc2FibGVkIixzeW5jOiJzdWJzY3JpcHRpb25fc3luYyIscmVzdWJzY3JpYmVkOiJzdWJzY3JpcHRpb25fcmVzdWJzY3JpYmVkIn0scG9lPSJzdWJzY3JpcHRpb24iLGZvZT0iMC4zIixtb2U9InBhaXJpbmciLGdvZT0iMC4zIixqcD17d2NfcGFpcmluZ0RlbGV0ZTp7cmVxOnt0dGw6UGUuT05FX0RBWSxwcm9tcHQ6ITEsdGFnOjFlM30scmVzOnt0dGw6UGUuT05FX0RBWSxwcm9tcHQ6ITEsdGFnOjEwMDF9fSx3Y19wYWlyaW5nUGluZzp7cmVxOnt0dGw6UGUuVEhJUlRZX1NFQ09ORFMscHJvbXB0OiExLHRhZzoxMDAyfSxyZXM6e3R0bDpQZS5USElSVFlfU0VDT05EUyxwcm9tcHQ6ITEsdGFnOjEwMDN9fSx1bnJlZ2lzdGVyZWRfbWV0aG9kOntyZXE6e3R0bDpQZS5PTkVfREFZLHByb21wdDohMSx0YWc6MH0scmVzOnt0dGw6UGUuT05FX0RBWSxwcm9tcHQ6ITEsdGFnOjB9fX0sVmw9e2NyZWF0ZToicGFpcmluZ19jcmVhdGUiLGV4cGlyZToicGFpcmluZ19leHBpcmUiLGRlbGV0ZToicGFpcmluZ19kZWxldGUiLHBpbmc6InBhaXJpbmdfcGluZyJ9LGZzPXtjcmVhdGVkOiJoaXN0b3J5X2NyZWF0ZWQiLHVwZGF0ZWQ6Imhpc3RvcnlfdXBkYXRlZCIsZGVsZXRlZDoiaGlzdG9yeV9kZWxldGVkIixzeW5jOiJoaXN0b3J5X3N5bmMifSx3b2U9Imhpc3RvcnkiLGJvZT0iMC4zIix5b2U9ImV4cGlyZXIiLEdpPXtjcmVhdGVkOiJleHBpcmVyX2NyZWF0ZWQiLGRlbGV0ZWQ6ImV4cGlyZXJfZGVsZXRlZCIsZXhwaXJlZDoiZXhwaXJlcl9leHBpcmVkIixzeW5jOiJleHBpcmVyX3N5bmMifSx2b2U9IjAuMyIsRW9lPSJ2ZXJpZnktYXBpIixDb2U9Imh0dHBzOi8vdmVyaWZ5LndhbGxldGNvbm5lY3QuY29tIixHRD0iaHR0cHM6Ly92ZXJpZnkud2FsbGV0Y29ubmVjdC5vcmciLG4wPUdELHhvZT1gJHtuMH0vdjNgLF9vZT1bQ29lLEdEXSxrb2U9ImVjaG8iLFNvZT0iaHR0cHM6Ly9lY2hvLndhbGxldGNvbm5lY3QuY29tIix1bz17cGFpcmluZ19zdGFydGVkOiJwYWlyaW5nX3N0YXJ0ZWQiLHBhaXJpbmdfdXJpX3ZhbGlkYXRpb25fc3VjY2VzczoicGFpcmluZ191cmlfdmFsaWRhdGlvbl9zdWNjZXNzIixwYWlyaW5nX3VyaV9ub3RfZXhwaXJlZDoicGFpcmluZ191cmlfbm90X2V4cGlyZWQiLHN0b3JlX25ld19wYWlyaW5nOiJzdG9yZV9uZXdfcGFpcmluZyIsc3Vic2NyaWJpbmdfcGFpcmluZ190b3BpYzoic3Vic2NyaWJpbmdfcGFpcmluZ190b3BpYyIsc3Vic2NyaWJlX3BhaXJpbmdfdG9waWNfc3VjY2Vzczoic3Vic2NyaWJlX3BhaXJpbmdfdG9waWNfc3VjY2VzcyIsZXhpc3RpbmdfcGFpcmluZzoiZXhpc3RpbmdfcGFpcmluZyIscGFpcmluZ19ub3RfZXhwaXJlZDoicGFpcmluZ19ub3RfZXhwaXJlZCIsZW1pdF9pbmFjdGl2ZV9wYWlyaW5nOiJlbWl0X2luYWN0aXZlX3BhaXJpbmciLGVtaXRfc2Vzc2lvbl9wcm9wb3NhbDoiZW1pdF9zZXNzaW9uX3Byb3Bvc2FsIixzdWJzY3JpYmluZ190b19wYWlyaW5nX3RvcGljOiJzdWJzY3JpYmluZ190b19wYWlyaW5nX3RvcGljIn0sWG89e25vX3dzc19jb25uZWN0aW9uOiJub193c3NfY29ubmVjdGlvbiIsbm9faW50ZXJuZXRfY29ubmVjdGlvbjoibm9faW50ZXJuZXRfY29ubmVjdGlvbiIsbWFsZm9ybWVkX3BhaXJpbmdfdXJpOiJtYWxmb3JtZWRfcGFpcmluZ191cmkiLGFjdGl2ZV9wYWlyaW5nX2FscmVhZHlfZXhpc3RzOiJhY3RpdmVfcGFpcmluZ19hbHJlYWR5X2V4aXN0cyIsc3Vic2NyaWJlX3BhaXJpbmdfdG9waWNfZmFpbHVyZToic3Vic2NyaWJlX3BhaXJpbmdfdG9waWNfZmFpbHVyZSIscGFpcmluZ19leHBpcmVkOiJwYWlyaW5nX2V4cGlyZWQiLHByb3Bvc2FsX2V4cGlyZWQ6InByb3Bvc2FsX2V4cGlyZWQiLHByb3Bvc2FsX2xpc3RlbmVyX25vdF9mb3VuZDoicHJvcG9zYWxfbGlzdGVuZXJfbm90X2ZvdW5kIn0sbXM9e3Nlc3Npb25fYXBwcm92ZV9zdGFydGVkOiJzZXNzaW9uX2FwcHJvdmVfc3RhcnRlZCIscHJvcG9zYWxfbm90X2V4cGlyZWQ6InByb3Bvc2FsX25vdF9leHBpcmVkIixzZXNzaW9uX25hbWVzcGFjZXNfdmFsaWRhdGlvbl9zdWNjZXNzOiJzZXNzaW9uX25hbWVzcGFjZXNfdmFsaWRhdGlvbl9zdWNjZXNzIixjcmVhdGVfc2Vzc2lvbl90b3BpYzoiY3JlYXRlX3Nlc3Npb25fdG9waWMiLHN1YnNjcmliaW5nX3Nlc3Npb25fdG9waWM6InN1YnNjcmliaW5nX3Nlc3Npb25fdG9waWMiLHN1YnNjcmliZV9zZXNzaW9uX3RvcGljX3N1Y2Nlc3M6InN1YnNjcmliZV9zZXNzaW9uX3RvcGljX3N1Y2Nlc3MiLHB1Ymxpc2hpbmdfc2Vzc2lvbl9hcHByb3ZlOiJwdWJsaXNoaW5nX3Nlc3Npb25fYXBwcm92ZSIsc2Vzc2lvbl9hcHByb3ZlX3B1Ymxpc2hfc3VjY2Vzczoic2Vzc2lvbl9hcHByb3ZlX3B1Ymxpc2hfc3VjY2VzcyIsc3RvcmVfc2Vzc2lvbjoic3RvcmVfc2Vzc2lvbiIscHVibGlzaGluZ19zZXNzaW9uX3NldHRsZToicHVibGlzaGluZ19zZXNzaW9uX3NldHRsZSIsc2Vzc2lvbl9zZXR0bGVfcHVibGlzaF9zdWNjZXNzOiJzZXNzaW9uX3NldHRsZV9wdWJsaXNoX3N1Y2Nlc3MifSxtbD17bm9faW50ZXJuZXRfY29ubmVjdGlvbjoibm9faW50ZXJuZXRfY29ubmVjdGlvbiIsbm9fd3NzX2Nvbm5lY3Rpb246Im5vX3dzc19jb25uZWN0aW9uIixwcm9wb3NhbF9leHBpcmVkOiJwcm9wb3NhbF9leHBpcmVkIixzdWJzY3JpYmVfc2Vzc2lvbl90b3BpY19mYWlsdXJlOiJzdWJzY3JpYmVfc2Vzc2lvbl90b3BpY19mYWlsdXJlIixzZXNzaW9uX2FwcHJvdmVfcHVibGlzaF9mYWlsdXJlOiJzZXNzaW9uX2FwcHJvdmVfcHVibGlzaF9mYWlsdXJlIixzZXNzaW9uX3NldHRsZV9wdWJsaXNoX2ZhaWx1cmU6InNlc3Npb25fc2V0dGxlX3B1Ymxpc2hfZmFpbHVyZSIsc2Vzc2lvbl9hcHByb3ZlX25hbWVzcGFjZV92YWxpZGF0aW9uX2ZhaWx1cmU6InNlc3Npb25fYXBwcm92ZV9uYW1lc3BhY2VfdmFsaWRhdGlvbl9mYWlsdXJlIixwcm9wb3NhbF9ub3RfZm91bmQ6InByb3Bvc2FsX25vdF9mb3VuZCJ9LGdsPXthdXRoZW50aWNhdGVkX3Nlc3Npb25fYXBwcm92ZV9zdGFydGVkOiJhdXRoZW50aWNhdGVkX3Nlc3Npb25fYXBwcm92ZV9zdGFydGVkIixjcmVhdGVfYXV0aGVudGljYXRlZF9zZXNzaW9uX3RvcGljOiJjcmVhdGVfYXV0aGVudGljYXRlZF9zZXNzaW9uX3RvcGljIixjYWNhb3NfdmVyaWZpZWQ6ImNhY2Fvc192ZXJpZmllZCIsc3RvcmVfYXV0aGVudGljYXRlZF9zZXNzaW9uOiJzdG9yZV9hdXRoZW50aWNhdGVkX3Nlc3Npb24iLHN1YnNjcmliaW5nX2F1dGhlbnRpY2F0ZWRfc2Vzc2lvbl90b3BpYzoic3Vic2NyaWJpbmdfYXV0aGVudGljYXRlZF9zZXNzaW9uX3RvcGljIixzdWJzY3JpYmVfYXV0aGVudGljYXRlZF9zZXNzaW9uX3RvcGljX3N1Y2Nlc3M6InN1YnNjcmliZV9hdXRoZW50aWNhdGVkX3Nlc3Npb25fdG9waWNfc3VjY2VzcyIscHVibGlzaGluZ19hdXRoZW50aWNhdGVkX3Nlc3Npb25fYXBwcm92ZToicHVibGlzaGluZ19hdXRoZW50aWNhdGVkX3Nlc3Npb25fYXBwcm92ZSJ9LHpwPXtub19pbnRlcm5ldF9jb25uZWN0aW9uOiJub19pbnRlcm5ldF9jb25uZWN0aW9uIixpbnZhbGlkX2NhY2FvOiJpbnZhbGlkX2NhY2FvIixzdWJzY3JpYmVfYXV0aGVudGljYXRlZF9zZXNzaW9uX3RvcGljX2ZhaWx1cmU6InN1YnNjcmliZV9hdXRoZW50aWNhdGVkX3Nlc3Npb25fdG9waWNfZmFpbHVyZSIsYXV0aGVudGljYXRlZF9zZXNzaW9uX2FwcHJvdmVfcHVibGlzaF9mYWlsdXJlOiJhdXRoZW50aWNhdGVkX3Nlc3Npb25fYXBwcm92ZV9wdWJsaXNoX2ZhaWx1cmUiLGF1dGhlbnRpY2F0ZWRfc2Vzc2lvbl9wZW5kaW5nX3JlcXVlc3Rfbm90X2ZvdW5kOiJhdXRoZW50aWNhdGVkX3Nlc3Npb25fcGVuZGluZ19yZXF1ZXN0X25vdF9mb3VuZCJ9LEFvZT0uMSxUb2U9ImV2ZW50LWNsaWVudCIsSW9lPTg2NDAwLFJvZT0iaHR0cHM6Ly9wdWxzZS53YWxsZXRjb25uZWN0Lm9yZy9iYXRjaCI7ZnVuY3Rpb24gTm9lKHQsZSl7aWYodC5sZW5ndGg+PTI1NSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBbHBoYWJldCB0b28gbG9uZyIpO2Zvcih2YXIgcj1uZXcgVWludDhBcnJheSgyNTYpLG49MDtuPHIubGVuZ3RoO24rKylyW25dPTI1NTtmb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIGk9dC5jaGFyQXQocyksbz1pLmNoYXJDb2RlQXQoMCk7aWYocltvXSE9PTI1NSl0aHJvdyBuZXcgVHlwZUVycm9yKGkrIiBpcyBhbWJpZ3VvdXMiKTtyW29dPXN9dmFyIGE9dC5sZW5ndGgsYz10LmNoYXJBdCgwKSxsPU1hdGgubG9nKGEpL01hdGgubG9nKDI1NiksZD1NYXRoLmxvZygyNTYpL01hdGgubG9nKGEpO2Z1bmN0aW9uIHUoZil7aWYoZiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fChBcnJheUJ1ZmZlci5pc1ZpZXcoZik/Zj1uZXcgVWludDhBcnJheShmLmJ1ZmZlcixmLmJ5dGVPZmZzZXQsZi5ieXRlTGVuZ3RoKTpBcnJheS5pc0FycmF5KGYpJiYoZj1VaW50OEFycmF5LmZyb20oZikpKSwhKGYgaW5zdGFuY2VvZiBVaW50OEFycmF5KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBVaW50OEFycmF5Iik7aWYoZi5sZW5ndGg9PT0wKXJldHVybiIiO2Zvcih2YXIgbT0wLHc9MCxnPTAsdj1mLmxlbmd0aDtnIT09diYmZltnXT09PTA7KWcrKyxtKys7Zm9yKHZhciBFPSh2LWcpKmQrMT4+PjAseD1uZXcgVWludDhBcnJheShFKTtnIT09djspe2Zvcih2YXIgXz1mW2ddLGs9MCxBPUUtMTsoXyE9PTB8fGs8dykmJkEhPT0tMTtBLS0saysrKV8rPTI1Nip4W0FdPj4+MCx4W0FdPV8lYT4+PjAsXz1fL2E+Pj4wO2lmKF8hPT0wKXRocm93IG5ldyBFcnJvcigiTm9uLXplcm8gY2FycnkiKTt3PWssZysrfWZvcih2YXIgTT1FLXc7TSE9PUUmJnhbTV09PT0wOylNKys7Zm9yKHZhciBQPWMucmVwZWF0KG0pO008RTsrK00pUCs9dC5jaGFyQXQoeFtNXSk7cmV0dXJuIFB9ZnVuY3Rpb24gaChmKXtpZih0eXBlb2YgZiE9InN0cmluZyIpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgU3RyaW5nIik7aWYoZi5sZW5ndGg9PT0wKXJldHVybiBuZXcgVWludDhBcnJheTt2YXIgbT0wO2lmKGZbbV0hPT0iICIpe2Zvcih2YXIgdz0wLGc9MDtmW21dPT09YzspdysrLG0rKztmb3IodmFyIHY9KGYubGVuZ3RoLW0pKmwrMT4+PjAsRT1uZXcgVWludDhBcnJheSh2KTtmW21dOyl7dmFyIHg9cltmLmNoYXJDb2RlQXQobSldO2lmKHg9PT0yNTUpcmV0dXJuO2Zvcih2YXIgXz0wLGs9di0xOyh4IT09MHx8XzxnKSYmayE9PS0xO2stLSxfKyspeCs9YSpFW2tdPj4+MCxFW2tdPXglMjU2Pj4+MCx4PXgvMjU2Pj4+MDtpZih4IT09MCl0aHJvdyBuZXcgRXJyb3IoIk5vbi16ZXJvIGNhcnJ5Iik7Zz1fLG0rK31pZihmW21dIT09IiAiKXtmb3IodmFyIEE9di1nO0EhPT12JiZFW0FdPT09MDspQSsrO2Zvcih2YXIgTT1uZXcgVWludDhBcnJheSh3Kyh2LUEpKSxQPXc7QSE9PXY7KU1bUCsrXT1FW0ErK107cmV0dXJuIE19fX1mdW5jdGlvbiBwKGYpe3ZhciBtPWgoZik7aWYobSlyZXR1cm4gbTt0aHJvdyBuZXcgRXJyb3IoYE5vbi0ke2V9IGNoYXJhY3RlcmApfXJldHVybntlbmNvZGU6dSxkZWNvZGVVbnNhZmU6aCxkZWNvZGU6cH19dmFyIFBvZT1Ob2UsT29lPVBvZTtjb25zdCBLRD10PT57aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJnQuY29uc3RydWN0b3IubmFtZT09PSJVaW50OEFycmF5IilyZXR1cm4gdDtpZih0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpcmV0dXJuIG5ldyBVaW50OEFycmF5KHQpO2lmKEFycmF5QnVmZmVyLmlzVmlldyh0KSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCk7dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHR5cGUsIG11c3QgYmUgYmluYXJ5IHR5cGUiKX0sJG9lPXQ9Pm5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh0KSxNb2U9dD0+bmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHQpO2NsYXNzIERvZXtjb25zdHJ1Y3RvcihlLHIsbil7dGhpcy5uYW1lPWUsdGhpcy5wcmVmaXg9cix0aGlzLmJhc2VFbmNvZGU9bn1lbmNvZGUoZSl7aWYoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuYCR7dGhpcy5wcmVmaXh9JHt0aGlzLmJhc2VFbmNvZGUoZSl9YDt0aHJvdyBFcnJvcigiVW5rbm93biB0eXBlLCBtdXN0IGJlIGJpbmFyeSB0eXBlIil9fWNsYXNzIEJvZXtjb25zdHJ1Y3RvcihlLHIsbil7aWYodGhpcy5uYW1lPWUsdGhpcy5wcmVmaXg9cixyLmNvZGVQb2ludEF0KDApPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBwcmVmaXggY2hhcmFjdGVyIik7dGhpcy5wcmVmaXhDb2RlUG9pbnQ9ci5jb2RlUG9pbnRBdCgwKSx0aGlzLmJhc2VEZWNvZGU9bn1kZWNvZGUoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXtpZihlLmNvZGVQb2ludEF0KDApIT09dGhpcy5wcmVmaXhDb2RlUG9pbnQpdGhyb3cgRXJyb3IoYFVuYWJsZSB0byBkZWNvZGUgbXVsdGliYXNlIHN0cmluZyAke0pTT04uc3RyaW5naWZ5KGUpfSwgJHt0aGlzLm5hbWV9IGRlY29kZXIgb25seSBzdXBwb3J0cyBpbnB1dHMgcHJlZml4ZWQgd2l0aCAke3RoaXMucHJlZml4fWApO3JldHVybiB0aGlzLmJhc2VEZWNvZGUoZS5zbGljZSh0aGlzLnByZWZpeC5sZW5ndGgpKX1lbHNlIHRocm93IEVycm9yKCJDYW4gb25seSBtdWx0aWJhc2UgZGVjb2RlIHN0cmluZ3MiKX1vcihlKXtyZXR1cm4gWkQodGhpcyxlKX19Y2xhc3MgTG9le2NvbnN0cnVjdG9yKGUpe3RoaXMuZGVjb2RlcnM9ZX1vcihlKXtyZXR1cm4gWkQodGhpcyxlKX1kZWNvZGUoZSl7Y29uc3Qgcj1lWzBdLG49dGhpcy5kZWNvZGVyc1tyXTtpZihuKXJldHVybiBuLmRlY29kZShlKTt0aHJvdyBSYW5nZUVycm9yKGBVbmFibGUgdG8gZGVjb2RlIG11bHRpYmFzZSBzdHJpbmcgJHtKU09OLnN0cmluZ2lmeShlKX0sIG9ubHkgaW5wdXRzIHByZWZpeGVkIHdpdGggJHtPYmplY3Qua2V5cyh0aGlzLmRlY29kZXJzKX0gYXJlIHN1cHBvcnRlZGApfX1jb25zdCBaRD0odCxlKT0+bmV3IExvZSh7Li4udC5kZWNvZGVyc3x8e1t0LnByZWZpeF06dH0sLi4uZS5kZWNvZGVyc3x8e1tlLnByZWZpeF06ZX19KTtjbGFzcyBVb2V7Y29uc3RydWN0b3IoZSxyLG4scyl7dGhpcy5uYW1lPWUsdGhpcy5wcmVmaXg9cix0aGlzLmJhc2VFbmNvZGU9bix0aGlzLmJhc2VEZWNvZGU9cyx0aGlzLmVuY29kZXI9bmV3IERvZShlLHIsbiksdGhpcy5kZWNvZGVyPW5ldyBCb2UoZSxyLHMpfWVuY29kZShlKXtyZXR1cm4gdGhpcy5lbmNvZGVyLmVuY29kZShlKX1kZWNvZGUoZSl7cmV0dXJuIHRoaXMuZGVjb2Rlci5kZWNvZGUoZSl9fWNvbnN0IFZ5PSh7bmFtZTp0LHByZWZpeDplLGVuY29kZTpyLGRlY29kZTpufSk9Pm5ldyBVb2UodCxlLHIsbiksXzE9KHtwcmVmaXg6dCxuYW1lOmUsYWxwaGFiZXQ6cn0pPT57Y29uc3R7ZW5jb2RlOm4sZGVjb2RlOnN9PU9vZShyLGUpO3JldHVybiBWeSh7cHJlZml4OnQsbmFtZTplLGVuY29kZTpuLGRlY29kZTppPT5LRChzKGkpKX0pfSxGb2U9KHQsZSxyLG4pPT57Y29uc3Qgcz17fTtmb3IobGV0IGQ9MDtkPGUubGVuZ3RoOysrZClzW2VbZF1dPWQ7bGV0IGk9dC5sZW5ndGg7Zm9yKDt0W2ktMV09PT0iPSI7KS0taTtjb25zdCBvPW5ldyBVaW50OEFycmF5KGkqci84fDApO2xldCBhPTAsYz0wLGw9MDtmb3IobGV0IGQ9MDtkPGk7KytkKXtjb25zdCB1PXNbdFtkXV07aWYodT09PXZvaWQgMCl0aHJvdyBuZXcgU3ludGF4RXJyb3IoYE5vbi0ke259IGNoYXJhY3RlcmApO2M9Yzw8cnx1LGErPXIsYT49OCYmKGEtPTgsb1tsKytdPTI1NSZjPj5hKX1pZihhPj1yfHwyNTUmYzw8OC1hKXRocm93IG5ldyBTeW50YXhFcnJvcigiVW5leHBlY3RlZCBlbmQgb2YgZGF0YSIpO3JldHVybiBvfSxqb2U9KHQsZSxyKT0+e2NvbnN0IG49ZVtlLmxlbmd0aC0xXT09PSI9IixzPSgxPDxyKS0xO2xldCBpPSIiLG89MCxhPTA7Zm9yKGxldCBjPTA7Yzx0Lmxlbmd0aDsrK2MpZm9yKGE9YTw8OHx0W2NdLG8rPTg7bz5yOylvLT1yLGkrPWVbcyZhPj5vXTtpZihvJiYoaSs9ZVtzJmE8PHItb10pLG4pZm9yKDtpLmxlbmd0aCpyJjc7KWkrPSI9IjtyZXR1cm4gaX0sX249KHtuYW1lOnQscHJlZml4OmUsYml0c1BlckNoYXI6cixhbHBoYWJldDpufSk9PlZ5KHtwcmVmaXg6ZSxuYW1lOnQsZW5jb2RlKHMpe3JldHVybiBqb2UocyxuLHIpfSxkZWNvZGUocyl7cmV0dXJuIEZvZShzLG4scix0KX19KSx6b2U9Vnkoe3ByZWZpeDoiXDAiLG5hbWU6ImlkZW50aXR5IixlbmNvZGU6dD0+TW9lKHQpLGRlY29kZTp0PT4kb2UodCl9KTt2YXIgV29lPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGlkZW50aXR5OnpvZX0pO2NvbnN0IEhvZT1fbih7cHJlZml4OiIwIixuYW1lOiJiYXNlMiIsYWxwaGFiZXQ6IjAxIixiaXRzUGVyQ2hhcjoxfSk7dmFyIHFvZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxiYXNlMjpIb2V9KTtjb25zdCBWb2U9X24oe3ByZWZpeDoiNyIsbmFtZToiYmFzZTgiLGFscGhhYmV0OiIwMTIzNDU2NyIsYml0c1BlckNoYXI6M30pO3ZhciBHb2U9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsYmFzZTg6Vm9lfSk7Y29uc3QgS29lPV8xKHtwcmVmaXg6IjkiLG5hbWU6ImJhc2UxMCIsYWxwaGFiZXQ6IjAxMjM0NTY3ODkifSk7dmFyIFpvZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxiYXNlMTA6S29lfSk7Y29uc3QgWW9lPV9uKHtwcmVmaXg6ImYiLG5hbWU6ImJhc2UxNiIsYWxwaGFiZXQ6IjAxMjM0NTY3ODlhYmNkZWYiLGJpdHNQZXJDaGFyOjR9KSxKb2U9X24oe3ByZWZpeDoiRiIsbmFtZToiYmFzZTE2dXBwZXIiLGFscGhhYmV0OiIwMTIzNDU2Nzg5QUJDREVGIixiaXRzUGVyQ2hhcjo0fSk7dmFyIFhvZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxiYXNlMTY6WW9lLGJhc2UxNnVwcGVyOkpvZX0pO2NvbnN0IFFvZT1fbih7cHJlZml4OiJiIixuYW1lOiJiYXNlMzIiLGFscGhhYmV0OiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejIzNDU2NyIsYml0c1BlckNoYXI6NX0pLGVhZT1fbih7cHJlZml4OiJCIixuYW1lOiJiYXNlMzJ1cHBlciIsYWxwaGFiZXQ6IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMjM0NTY3IixiaXRzUGVyQ2hhcjo1fSksdGFlPV9uKHtwcmVmaXg6ImMiLG5hbWU6ImJhc2UzMnBhZCIsYWxwaGFiZXQ6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MjM0NTY3PSIsYml0c1BlckNoYXI6NX0pLHJhZT1fbih7cHJlZml4OiJDIixuYW1lOiJiYXNlMzJwYWR1cHBlciIsYWxwaGFiZXQ6IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMjM0NTY3PSIsYml0c1BlckNoYXI6NX0pLG5hZT1fbih7cHJlZml4OiJ2IixuYW1lOiJiYXNlMzJoZXgiLGFscGhhYmV0OiIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1diIsYml0c1BlckNoYXI6NX0pLGlhZT1fbih7cHJlZml4OiJWIixuYW1lOiJiYXNlMzJoZXh1cHBlciIsYWxwaGFiZXQ6IjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWIixiaXRzUGVyQ2hhcjo1fSksc2FlPV9uKHtwcmVmaXg6InQiLG5hbWU6ImJhc2UzMmhleHBhZCIsYWxwaGFiZXQ6IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2PSIsYml0c1BlckNoYXI6NX0pLG9hZT1fbih7cHJlZml4OiJUIixuYW1lOiJiYXNlMzJoZXhwYWR1cHBlciIsYWxwaGFiZXQ6IjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWPSIsYml0c1BlckNoYXI6NX0pLGFhZT1fbih7cHJlZml4OiJoIixuYW1lOiJiYXNlMzJ6IixhbHBoYWJldDoieWJuZHJmZzhlamttY3BxeG90MXV3aXN6YTM0NWg3NjkiLGJpdHNQZXJDaGFyOjV9KTt2YXIgY2FlPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGJhc2UzMjpRb2UsYmFzZTMydXBwZXI6ZWFlLGJhc2UzMnBhZDp0YWUsYmFzZTMycGFkdXBwZXI6cmFlLGJhc2UzMmhleDpuYWUsYmFzZTMyaGV4dXBwZXI6aWFlLGJhc2UzMmhleHBhZDpzYWUsYmFzZTMyaGV4cGFkdXBwZXI6b2FlLGJhc2UzMno6YWFlfSk7Y29uc3QgbGFlPV8xKHtwcmVmaXg6ImsiLG5hbWU6ImJhc2UzNiIsYWxwaGFiZXQ6IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiJ9KSx1YWU9XzEoe3ByZWZpeDoiSyIsbmFtZToiYmFzZTM2dXBwZXIiLGFscGhhYmV0OiIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoifSk7dmFyIGRhZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxiYXNlMzY6bGFlLGJhc2UzNnVwcGVyOnVhZX0pO2NvbnN0IGhhZT1fMSh7bmFtZToiYmFzZTU4YnRjIixwcmVmaXg6InoiLGFscGhhYmV0OiIxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6In0pLHBhZT1fMSh7bmFtZToiYmFzZTU4ZmxpY2tyIixwcmVmaXg6IloiLGFscGhhYmV0OiIxMjM0NTY3ODlhYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6QUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaIn0pO3ZhciBmYWU9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsYmFzZTU4YnRjOmhhZSxiYXNlNThmbGlja3I6cGFlfSk7Y29uc3QgbWFlPV9uKHtwcmVmaXg6Im0iLG5hbWU6ImJhc2U2NCIsYWxwaGFiZXQ6IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLGJpdHNQZXJDaGFyOjZ9KSxnYWU9X24oe3ByZWZpeDoiTSIsbmFtZToiYmFzZTY0cGFkIixhbHBoYWJldDoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iLGJpdHNQZXJDaGFyOjZ9KSx3YWU9X24oe3ByZWZpeDoidSIsbmFtZToiYmFzZTY0dXJsIixhbHBoYWJldDoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktXyIsYml0c1BlckNoYXI6Nn0pLGJhZT1fbih7cHJlZml4OiJVIixuYW1lOiJiYXNlNjR1cmxwYWQiLGFscGhhYmV0OiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fPSIsYml0c1BlckNoYXI6Nn0pO3ZhciB5YWU9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsYmFzZTY0Om1hZSxiYXNlNjRwYWQ6Z2FlLGJhc2U2NHVybDp3YWUsYmFzZTY0dXJscGFkOmJhZX0pO2NvbnN0IFlEPUFycmF5LmZyb20oIvCfmoDwn6qQ4piE8J+bsPCfjIzwn4yR8J+MkvCfjJPwn4yU8J+MlfCfjJbwn4yX8J+MmPCfjI3wn4yP8J+MjvCfkInimIDwn5K78J+WpfCfkr7wn5K/8J+YguKdpPCfmI3wn6Sj8J+YivCfmY/wn5KV8J+YrfCfmJjwn5GN8J+YhfCfkY/wn5iB8J+UpfCfpbDwn5KU8J+SlvCfkpnwn5ii8J+klPCfmIbwn5mE8J+SqvCfmInimLrwn5GM8J+kl/Cfkpzwn5iU8J+YjvCfmIfwn4y58J+kpvCfjonwn5Ke4pyM4pyo8J+kt/CfmLHwn5iM8J+MuPCfmYzwn5iL8J+Sl/Cfkprwn5iP8J+Sm/CfmYLwn5KT8J+kqfCfmITwn5iA8J+WpPCfmIPwn5Kv8J+ZiPCfkYfwn4628J+YkvCfpK3inaPwn5ic8J+Si/CfkYDwn5iq8J+YkfCfkqXwn5mL8J+YnvCfmKnwn5ih8J+kqvCfkYrwn6Wz8J+YpfCfpKTwn5GJ8J+Sg/CfmLPinIvwn5ia8J+YnfCfmLTwn4yf8J+YrPCfmYPwn42A8J+Mt/CfmLvwn5iT4q2Q4pyF8J+luvCfjIjwn5iI8J+kmPCfkqbinJTwn5ij8J+Pg/CfkpDimLnwn46K8J+SmPCfmKDimJ3wn5iV8J+MuvCfjoLwn4y78J+YkPCflpXwn5Kd8J+ZivCfmLnwn5ej8J+Sq/CfkoDwn5GR8J+OtfCfpJ7wn5ib8J+UtPCfmKTwn4y88J+Yq+KavfCfpJnimJXwn4+G8J+kq/CfkYjwn5iu8J+ZhvCfjbvwn42D8J+QtvCfkoHwn5iy8J+Mv/Cfp6Hwn46B4pqh8J+MnvCfjojinYzinIrwn5GL8J+YsPCfpKjwn5i28J+knfCfmrbwn5Kw8J+Nk/CfkqLwn6Sf8J+ZgfCfmqjwn5Ko8J+krOKciPCfjoDwn4268J+kk/CfmJnwn5Kf8J+MsfCfmJbwn5G28J+ltOKWtuKeoeKdk/Cfko7wn5K44qyH8J+YqPCfjJrwn6aL8J+Yt/CflbrimqDwn5mF8J+Yn/CfmLXwn5GO8J+ksvCfpKDwn6Sn8J+TjPCflLXwn5KF8J+nkPCfkL7wn42S8J+Yl/CfpJHwn4yK8J+kr/CfkLfimI7wn5Kn8J+Yr/Cfkobwn5GG8J+OpPCfmYfwn42R4p2E8J+MtPCfkqPwn5C48J+SjPCfk43wn6WA8J+kovCfkYXwn5Kh8J+SqfCfkZDwn5O48J+Ru/CfpJDwn6Su8J+OvPCfpbXwn5qp8J+NjvCfjYrwn5G88J+SjfCfk6Pwn6WCIiksdmFlPVlELnJlZHVjZSgodCxlLHIpPT4odFtyXT1lLHQpLFtdKSxFYWU9WUQucmVkdWNlKCh0LGUscik9Pih0W2UuY29kZVBvaW50QXQoMCldPXIsdCksW10pO2Z1bmN0aW9uIENhZSh0KXtyZXR1cm4gdC5yZWR1Y2UoKGUscik9PihlKz12YWVbcl0sZSksIiIpfWZ1bmN0aW9uIHhhZSh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCByIG9mIHQpe2NvbnN0IG49RWFlW3IuY29kZVBvaW50QXQoMCldO2lmKG49PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGBOb24tYmFzZTI1NmVtb2ppIGNoYXJhY3RlcjogJHtyfWApO2UucHVzaChuKX1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZSl9Y29uc3QgX2FlPVZ5KHtwcmVmaXg6IvCfmoAiLG5hbWU6ImJhc2UyNTZlbW9qaSIsZW5jb2RlOkNhZSxkZWNvZGU6eGFlfSk7dmFyIGthZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxiYXNlMjU2ZW1vamk6X2FlfSksU2FlPUpELGprPTEyOCxBYWU9LTEyOCxUYWU9TWF0aC5wb3coMiwzMSk7ZnVuY3Rpb24gSkQodCxlLHIpe2U9ZXx8W10scj1yfHwwO2Zvcih2YXIgbj1yO3Q+PVRhZTspZVtyKytdPXQmMjU1fGprLHQvPTEyODtmb3IoO3QmQWFlOyllW3IrK109dCYyNTV8amssdD4+Pj03O3JldHVybiBlW3JdPXR8MCxKRC5ieXRlcz1yLW4rMSxlfXZhciBJYWU9SXgsUmFlPTEyOCx6az0xMjc7ZnVuY3Rpb24gSXgodCxuKXt2YXIgcj0wLG49bnx8MCxzPTAsaT1uLG8sYT10Lmxlbmd0aDtkb3tpZihpPj1hKXRocm93IEl4LmJ5dGVzPTAsbmV3IFJhbmdlRXJyb3IoIkNvdWxkIG5vdCBkZWNvZGUgdmFyaW50Iik7bz10W2krK10scis9czwyOD8obyZ6ayk8PHM6KG8memspKk1hdGgucG93KDIscykscys9N313aGlsZShvPj1SYWUpO3JldHVybiBJeC5ieXRlcz1pLW4scn12YXIgTmFlPU1hdGgucG93KDIsNyksUGFlPU1hdGgucG93KDIsMTQpLE9hZT1NYXRoLnBvdygyLDIxKSwkYWU9TWF0aC5wb3coMiwyOCksTWFlPU1hdGgucG93KDIsMzUpLERhZT1NYXRoLnBvdygyLDQyKSxCYWU9TWF0aC5wb3coMiw0OSksTGFlPU1hdGgucG93KDIsNTYpLFVhZT1NYXRoLnBvdygyLDYzKSxGYWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ8TmFlPzE6dDxQYWU/Mjp0PE9hZT8zOnQ8JGFlPzQ6dDxNYWU/NTp0PERhZT82OnQ8QmFlPzc6dDxMYWU/ODp0PFVhZT85OjEwfSxqYWU9e2VuY29kZTpTYWUsZGVjb2RlOklhZSxlbmNvZGluZ0xlbmd0aDpGYWV9LFhEPWphZTtjb25zdCBXaz0odCxlLHI9MCk9PihYRC5lbmNvZGUodCxlLHIpLGUpLEhrPXQ9PlhELmVuY29kaW5nTGVuZ3RoKHQpLFJ4PSh0LGUpPT57Y29uc3Qgcj1lLmJ5dGVMZW5ndGgsbj1Iayh0KSxzPW4rSGsociksaT1uZXcgVWludDhBcnJheShzK3IpO3JldHVybiBXayh0LGksMCksV2socixpLG4pLGkuc2V0KGUscyksbmV3IHphZSh0LHIsZSxpKX07bGV0IHphZT1jbGFzc3tjb25zdHJ1Y3RvcihlLHIsbixzKXt0aGlzLmNvZGU9ZSx0aGlzLnNpemU9cix0aGlzLmRpZ2VzdD1uLHRoaXMuYnl0ZXM9c319O2NvbnN0IFFEPSh7bmFtZTp0LGNvZGU6ZSxlbmNvZGU6cn0pPT5uZXcgV2FlKHQsZSxyKTtjbGFzcyBXYWV7Y29uc3RydWN0b3IoZSxyLG4pe3RoaXMubmFtZT1lLHRoaXMuY29kZT1yLHRoaXMuZW5jb2RlPW59ZGlnZXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtjb25zdCByPXRoaXMuZW5jb2RlKGUpO3JldHVybiByIGluc3RhbmNlb2YgVWludDhBcnJheT9SeCh0aGlzLmNvZGUscik6ci50aGVuKG49PlJ4KHRoaXMuY29kZSxuKSl9ZWxzZSB0aHJvdyBFcnJvcigiVW5rbm93biB0eXBlLCBtdXN0IGJlIGJpbmFyeSB0eXBlIil9fWNvbnN0IGVCPXQ9PmFzeW5jIGU9Pm5ldyBVaW50OEFycmF5KGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KHQsZSkpLEhhZT1RRCh7bmFtZToic2hhMi0yNTYiLGNvZGU6MTgsZW5jb2RlOmVCKCJTSEEtMjU2Iil9KSxxYWU9UUQoe25hbWU6InNoYTItNTEyIixjb2RlOjE5LGVuY29kZTplQigiU0hBLTUxMiIpfSk7dmFyIFZhZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxzaGEyNTY6SGFlLHNoYTUxMjpxYWV9KTtjb25zdCB0Qj0wLEdhZT0iaWRlbnRpdHkiLHJCPUtELEthZT10PT5SeCh0QixyQih0KSksWmFlPXtjb2RlOnRCLG5hbWU6R2FlLGVuY29kZTpyQixkaWdlc3Q6S2FlfTt2YXIgWWFlPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGlkZW50aXR5OlphZX0pO25ldyBUZXh0RW5jb2RlcixuZXcgVGV4dERlY29kZXI7Y29uc3QgcWs9ey4uLldvZSwuLi5xb2UsLi4uR29lLC4uLlpvZSwuLi5Yb2UsLi4uY2FlLC4uLmRhZSwuLi5mYWUsLi4ueWFlLC4uLmthZX07KHsuLi5WYWUsLi4uWWFlfSk7ZnVuY3Rpb24gSmFlKHQ9MCl7cmV0dXJuIGdsb2JhbFRoaXMuQnVmZmVyIT1udWxsJiZnbG9iYWxUaGlzLkJ1ZmZlci5hbGxvY1Vuc2FmZSE9bnVsbD9nbG9iYWxUaGlzLkJ1ZmZlci5hbGxvY1Vuc2FmZSh0KTpuZXcgVWludDhBcnJheSh0KX1mdW5jdGlvbiBuQih0LGUscixuKXtyZXR1cm57bmFtZTp0LHByZWZpeDplLGVuY29kZXI6e25hbWU6dCxwcmVmaXg6ZSxlbmNvZGU6cn0sZGVjb2Rlcjp7ZGVjb2RlOm59fX1jb25zdCBWaz1uQigidXRmOCIsInUiLHQ9PiJ1IituZXcgVGV4dERlY29kZXIoInV0ZjgiKS5kZWNvZGUodCksdD0+bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHQuc3Vic3RyaW5nKDEpKSksdDM9bkIoImFzY2lpIiwiYSIsdD0+e2xldCBlPSJhIjtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyllKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbcl0pO3JldHVybiBlfSx0PT57dD10LnN1YnN0cmluZygxKTtjb25zdCBlPUphZSh0Lmxlbmd0aCk7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspZVtyXT10LmNoYXJDb2RlQXQocik7cmV0dXJuIGV9KSxYYWU9e3V0Zjg6VmssInV0Zi04IjpWayxoZXg6cWsuYmFzZTE2LGxhdGluMTp0Myxhc2NpaTp0MyxiaW5hcnk6dDMsLi4ucWt9O2Z1bmN0aW9uIFFhZSh0LGU9InV0ZjgiKXtjb25zdCByPVhhZVtlXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGVuY29kaW5nICIke2V9ImApO3JldHVybihlPT09InV0ZjgifHxlPT09InV0Zi04IikmJmdsb2JhbFRoaXMuQnVmZmVyIT1udWxsJiZnbG9iYWxUaGlzLkJ1ZmZlci5mcm9tIT1udWxsP2dsb2JhbFRoaXMuQnVmZmVyLmZyb20odCwidXRmOCIpOnIuZGVjb2Rlci5kZWNvZGUoYCR7ci5wcmVmaXh9JHt0fWApfXZhciBlY2U9T2JqZWN0LmRlZmluZVByb3BlcnR5LHRjZT0odCxlLHIpPT5lIGluIHQ/ZWNlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixvbz0odCxlLHIpPT50Y2UodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIHJjZXtjb25zdHJ1Y3RvcihlLHIpe3RoaXMuY29yZT1lLHRoaXMubG9nZ2VyPXIsb28odGhpcywia2V5Y2hhaW4iLG5ldyBNYXApLG9vKHRoaXMsIm5hbWUiLHJvZSksb28odGhpcywidmVyc2lvbiIsbm9lKSxvbyh0aGlzLCJpbml0aWFsaXplZCIsITEpLG9vKHRoaXMsInN0b3JhZ2VQcmVmaXgiLENvKSxvbyh0aGlzLCJpbml0Iixhc3luYygpPT57aWYoIXRoaXMuaW5pdGlhbGl6ZWQpe2NvbnN0IG49YXdhaXQgdGhpcy5nZXRLZXlDaGFpbigpO3R5cGVvZiBuPCJ1IiYmKHRoaXMua2V5Y2hhaW49biksdGhpcy5pbml0aWFsaXplZD0hMH19KSxvbyh0aGlzLCJoYXMiLG49Pih0aGlzLmlzSW5pdGlhbGl6ZWQoKSx0aGlzLmtleWNoYWluLmhhcyhuKSkpLG9vKHRoaXMsInNldCIsYXN5bmMobixzKT0+e3RoaXMuaXNJbml0aWFsaXplZCgpLHRoaXMua2V5Y2hhaW4uc2V0KG4scyksYXdhaXQgdGhpcy5wZXJzaXN0KCl9KSxvbyh0aGlzLCJnZXQiLG49Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtjb25zdCBzPXRoaXMua2V5Y2hhaW4uZ2V0KG4pO2lmKHR5cGVvZiBzPiJ1Iil7Y29uc3R7bWVzc2FnZTppfT1PZSgiTk9fTUFUQ0hJTkdfS0VZIixgJHt0aGlzLm5hbWV9OiAke259YCk7dGhyb3cgbmV3IEVycm9yKGkpfXJldHVybiBzfSksb28odGhpcywiZGVsIixhc3luYyBuPT57dGhpcy5pc0luaXRpYWxpemVkKCksdGhpcy5rZXljaGFpbi5kZWxldGUobiksYXdhaXQgdGhpcy5wZXJzaXN0KCl9KSx0aGlzLmNvcmU9ZSx0aGlzLmxvZ2dlcj1ObihyLHRoaXMubmFtZSl9Z2V0IGNvbnRleHQoKXtyZXR1cm4gcGkodGhpcy5sb2dnZXIpfWdldCBzdG9yYWdlS2V5KCl7cmV0dXJuIHRoaXMuc3RvcmFnZVByZWZpeCt0aGlzLnZlcnNpb24rdGhpcy5jb3JlLmN1c3RvbVN0b3JhZ2VQcmVmaXgrIi8vIit0aGlzLm5hbWV9YXN5bmMgc2V0S2V5Q2hhaW4oZSl7YXdhaXQgdGhpcy5jb3JlLnN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXksaHgoZSkpfWFzeW5jIGdldEtleUNoYWluKCl7Y29uc3QgZT1hd2FpdCB0aGlzLmNvcmUuc3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleSk7cmV0dXJuIHR5cGVvZiBlPCJ1Ij9weChlKTp2b2lkIDB9YXN5bmMgcGVyc2lzdCgpe2F3YWl0IHRoaXMuc2V0S2V5Q2hhaW4odGhpcy5rZXljaGFpbil9aXNJbml0aWFsaXplZCgpe2lmKCF0aGlzLmluaXRpYWxpemVkKXtjb25zdHttZXNzYWdlOmV9PU9lKCJOT1RfSU5JVElBTElaRUQiLHRoaXMubmFtZSk7dGhyb3cgbmV3IEVycm9yKGUpfX19dmFyIG5jZT1PYmplY3QuZGVmaW5lUHJvcGVydHksaWNlPSh0LGUscik9PmUgaW4gdD9uY2UodCxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpyfSk6dFtlXT1yLGduPSh0LGUscik9PmljZSh0LHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUscik7Y2xhc3Mgc2Nle2NvbnN0cnVjdG9yKGUscixuKXt0aGlzLmNvcmU9ZSx0aGlzLmxvZ2dlcj1yLGduKHRoaXMsIm5hbWUiLGVvZSksZ24odGhpcywia2V5Y2hhaW4iKSxnbih0aGlzLCJyYW5kb21TZXNzaW9uSWRlbnRpZmllciIseHgoKSksZ24odGhpcywiaW5pdGlhbGl6ZWQiLCExKSxnbih0aGlzLCJpbml0Iixhc3luYygpPT57dGhpcy5pbml0aWFsaXplZHx8KGF3YWl0IHRoaXMua2V5Y2hhaW4uaW5pdCgpLHRoaXMuaW5pdGlhbGl6ZWQ9ITApfSksZ24odGhpcywiaGFzS2V5cyIscz0+KHRoaXMuaXNJbml0aWFsaXplZCgpLHRoaXMua2V5Y2hhaW4uaGFzKHMpKSksZ24odGhpcywiZ2V0Q2xpZW50SWQiLGFzeW5jKCk9Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtjb25zdCBzPWF3YWl0IHRoaXMuZ2V0Q2xpZW50U2VlZCgpLGk9Zzkocyk7cmV0dXJuIHdNKGkucHVibGljS2V5KX0pLGduKHRoaXMsImdlbmVyYXRlS2V5UGFpciIsKCk9Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtjb25zdCBzPXBpZSgpO3JldHVybiB0aGlzLnNldFByaXZhdGVLZXkocy5wdWJsaWNLZXkscy5wcml2YXRlS2V5KX0pLGduKHRoaXMsInNpZ25KV1QiLGFzeW5jIHM9Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtjb25zdCBpPWF3YWl0IHRoaXMuZ2V0Q2xpZW50U2VlZCgpLG89ZzkoaSksYT10aGlzLnJhbmRvbVNlc3Npb25JZGVudGlmaWVyO3JldHVybiBhd2FpdCBCWChhLHMsdG9lLG8pfSksZ24odGhpcywiZ2VuZXJhdGVTaGFyZWRLZXkiLChzLGksbyk9Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtjb25zdCBhPXRoaXMuZ2V0UHJpdmF0ZUtleShzKSxjPWZpZShhLGkpO3JldHVybiB0aGlzLnNldFN5bUtleShjLG8pfSksZ24odGhpcywic2V0U3ltS2V5Iixhc3luYyhzLGkpPT57dGhpcy5pc0luaXRpYWxpemVkKCk7Y29uc3Qgbz1pfHx6dyhzKTtyZXR1cm4gYXdhaXQgdGhpcy5rZXljaGFpbi5zZXQobyxzKSxvfSksZ24odGhpcywiZGVsZXRlS2V5UGFpciIsYXN5bmMgcz0+e3RoaXMuaXNJbml0aWFsaXplZCgpLGF3YWl0IHRoaXMua2V5Y2hhaW4uZGVsKHMpfSksZ24odGhpcywiZGVsZXRlU3ltS2V5Iixhc3luYyBzPT57dGhpcy5pc0luaXRpYWxpemVkKCksYXdhaXQgdGhpcy5rZXljaGFpbi5kZWwocyl9KSxnbih0aGlzLCJlbmNvZGUiLGFzeW5jKHMsaSxvKT0+e3RoaXMuaXNJbml0aWFsaXplZCgpO2NvbnN0IGE9JEQobyksYz1nYShpKTtpZihFayhhKSlyZXR1cm4gd2llKGMsbz8uZW5jb2RpbmcpO2lmKHZrKGEpKXtjb25zdCBoPWEuc2VuZGVyUHVibGljS2V5LHA9YS5yZWNlaXZlclB1YmxpY0tleTtzPWF3YWl0IHRoaXMuZ2VuZXJhdGVTaGFyZWRLZXkoaCxwKX1jb25zdCBsPXRoaXMuZ2V0U3ltS2V5KHMpLHt0eXBlOmQsc2VuZGVyUHVibGljS2V5OnV9PWE7cmV0dXJuIG1pZSh7dHlwZTpkLHN5bUtleTpsLG1lc3NhZ2U6YyxzZW5kZXJQdWJsaWNLZXk6dSxlbmNvZGluZzpvPy5lbmNvZGluZ30pfSksZ24odGhpcywiZGVjb2RlIixhc3luYyhzLGksbyk9Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtjb25zdCBhPXlpZShpLG8pO2lmKEVrKGEpKXtjb25zdCBjPWJpZShpLG8/LmVuY29kaW5nKTtyZXR1cm4gYnUoYyl9aWYodmsoYSkpe2NvbnN0IGM9YS5yZWNlaXZlclB1YmxpY0tleSxsPWEuc2VuZGVyUHVibGljS2V5O3M9YXdhaXQgdGhpcy5nZW5lcmF0ZVNoYXJlZEtleShjLGwpfXRyeXtjb25zdCBjPXRoaXMuZ2V0U3ltS2V5KHMpLGw9Z2llKHtzeW1LZXk6YyxlbmNvZGVkOmksZW5jb2Rpbmc6bz8uZW5jb2Rpbmd9KTtyZXR1cm4gYnUobCl9Y2F0Y2goYyl7dGhpcy5sb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgbWVzc2FnZSBmcm9tIHRvcGljOiAnJHtzfScsIGNsaWVudElkOiAnJHthd2FpdCB0aGlzLmdldENsaWVudElkKCl9J2ApLHRoaXMubG9nZ2VyLmVycm9yKGMpfX0pLGduKHRoaXMsImdldFBheWxvYWRUeXBlIiwocyxpPUFzKT0+e2NvbnN0IG89WjAoe2VuY29kZWQ6cyxlbmNvZGluZzppfSk7cmV0dXJuIF91KG8udHlwZSl9KSxnbih0aGlzLCJnZXRQYXlsb2FkU2VuZGVyUHVibGljS2V5IiwocyxpPUFzKT0+e2NvbnN0IG89WjAoe2VuY29kZWQ6cyxlbmNvZGluZzppfSk7cmV0dXJuIG8uc2VuZGVyUHVibGljS2V5P2FpKG8uc2VuZGVyUHVibGljS2V5LERuKTp2b2lkIDB9KSx0aGlzLmNvcmU9ZSx0aGlzLmxvZ2dlcj1ObihyLHRoaXMubmFtZSksdGhpcy5rZXljaGFpbj1ufHxuZXcgcmNlKHRoaXMuY29yZSx0aGlzLmxvZ2dlcil9Z2V0IGNvbnRleHQoKXtyZXR1cm4gcGkodGhpcy5sb2dnZXIpfWFzeW5jIHNldFByaXZhdGVLZXkoZSxyKXtyZXR1cm4gYXdhaXQgdGhpcy5rZXljaGFpbi5zZXQoZSxyKSxlfWdldFByaXZhdGVLZXkoZSl7cmV0dXJuIHRoaXMua2V5Y2hhaW4uZ2V0KGUpfWFzeW5jIGdldENsaWVudFNlZWQoKXtsZXQgZT0iIjt0cnl7ZT10aGlzLmtleWNoYWluLmdldChMayl9Y2F0Y2h7ZT14eCgpLGF3YWl0IHRoaXMua2V5Y2hhaW4uc2V0KExrLGUpfXJldHVybiBRYWUoZSwiYmFzZTE2Iil9Z2V0U3ltS2V5KGUpe3JldHVybiB0aGlzLmtleWNoYWluLmdldChlKX1pc0luaXRpYWxpemVkKCl7aWYoIXRoaXMuaW5pdGlhbGl6ZWQpe2NvbnN0e21lc3NhZ2U6ZX09T2UoIk5PVF9JTklUSUFMSVpFRCIsdGhpcy5uYW1lKTt0aHJvdyBuZXcgRXJyb3IoZSl9fX12YXIgb2NlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxhY2U9T2JqZWN0LmRlZmluZVByb3BlcnRpZXMsY2NlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLEdrPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsbGNlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksdWNlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsTng9KHQsZSxyKT0+ZSBpbiB0P29jZSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsZGNlPSh0LGUpPT57Zm9yKHZhciByIGluIGV8fChlPXt9KSlsY2UuY2FsbChlLHIpJiZOeCh0LHIsZVtyXSk7aWYoR2spZm9yKHZhciByIG9mIEdrKGUpKXVjZS5jYWxsKGUscikmJk54KHQscixlW3JdKTtyZXR1cm4gdH0saGNlPSh0LGUpPT5hY2UodCxjY2UoZSkpLGJpPSh0LGUscik9Pk54KHQsdHlwZW9mIGUhPSJzeW1ib2wiP2UrIiI6ZSxyKTtjbGFzcyBwY2UgZXh0ZW5kcyBNWntjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKGUsciksdGhpcy5sb2dnZXI9ZSx0aGlzLmNvcmU9cixiaSh0aGlzLCJtZXNzYWdlcyIsbmV3IE1hcCksYmkodGhpcywibWVzc2FnZXNXaXRob3V0Q2xpZW50QWNrIixuZXcgTWFwKSxiaSh0aGlzLCJuYW1lIixpb2UpLGJpKHRoaXMsInZlcnNpb24iLHNvZSksYmkodGhpcywiaW5pdGlhbGl6ZWQiLCExKSxiaSh0aGlzLCJzdG9yYWdlUHJlZml4IixDbyksYmkodGhpcywiaW5pdCIsYXN5bmMoKT0+e2lmKCF0aGlzLmluaXRpYWxpemVkKXt0aGlzLmxvZ2dlci50cmFjZSgiSW5pdGlhbGl6ZWQiKTt0cnl7Y29uc3Qgbj1hd2FpdCB0aGlzLmdldFJlbGF5ZXJNZXNzYWdlcygpO3R5cGVvZiBuPCJ1IiYmKHRoaXMubWVzc2FnZXM9bik7Y29uc3Qgcz1hd2FpdCB0aGlzLmdldFJlbGF5ZXJNZXNzYWdlc1dpdGhvdXRDbGllbnRBY2soKTt0eXBlb2YgczwidSImJih0aGlzLm1lc3NhZ2VzV2l0aG91dENsaWVudEFjaz1zKSx0aGlzLmxvZ2dlci5kZWJ1ZyhgU3VjY2Vzc2Z1bGx5IFJlc3RvcmVkIHJlY29yZHMgZm9yICR7dGhpcy5uYW1lfWApLHRoaXMubG9nZ2VyLnRyYWNlKHt0eXBlOiJtZXRob2QiLG1ldGhvZDoicmVzdG9yZSIsc2l6ZTp0aGlzLm1lc3NhZ2VzLnNpemV9KX1jYXRjaChuKXt0aGlzLmxvZ2dlci5kZWJ1ZyhgRmFpbGVkIHRvIFJlc3RvcmUgcmVjb3JkcyBmb3IgJHt0aGlzLm5hbWV9YCksdGhpcy5sb2dnZXIuZXJyb3Iobil9ZmluYWxseXt0aGlzLmluaXRpYWxpemVkPSEwfX19KSxiaSh0aGlzLCJzZXQiLGFzeW5jKG4scyxpKT0+e3RoaXMuaXNJbml0aWFsaXplZCgpO2NvbnN0IG89Zm8ocyk7bGV0IGE9dGhpcy5tZXNzYWdlcy5nZXQobik7aWYodHlwZW9mIGE+InUiJiYoYT17fSksdHlwZW9mIGFbb108InUiKXJldHVybiBvO2lmKGFbb109cyx0aGlzLm1lc3NhZ2VzLnNldChuLGEpLGk9PT1Xdy5pbmJvdW5kKXtjb25zdCBjPXRoaXMubWVzc2FnZXNXaXRob3V0Q2xpZW50QWNrLmdldChuKXx8e307dGhpcy5tZXNzYWdlc1dpdGhvdXRDbGllbnRBY2suc2V0KG4saGNlKGRjZSh7fSxjKSx7W29dOnN9KSl9cmV0dXJuIGF3YWl0IHRoaXMucGVyc2lzdCgpLG99KSxiaSh0aGlzLCJnZXQiLG49Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtsZXQgcz10aGlzLm1lc3NhZ2VzLmdldChuKTtyZXR1cm4gdHlwZW9mIHM+InUiJiYocz17fSksc30pLGJpKHRoaXMsImdldFdpdGhvdXRBY2siLG49Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtjb25zdCBzPXt9O2Zvcihjb25zdCBpIG9mIG4pe2NvbnN0IG89dGhpcy5tZXNzYWdlc1dpdGhvdXRDbGllbnRBY2suZ2V0KGkpfHx7fTtzW2ldPU9iamVjdC52YWx1ZXMobyl9cmV0dXJuIHN9KSxiaSh0aGlzLCJoYXMiLChuLHMpPT57dGhpcy5pc0luaXRpYWxpemVkKCk7Y29uc3QgaT10aGlzLmdldChuKSxvPWZvKHMpO3JldHVybiB0eXBlb2YgaVtvXTwidSJ9KSxiaSh0aGlzLCJhY2siLGFzeW5jKG4scyk9Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtjb25zdCBpPXRoaXMubWVzc2FnZXNXaXRob3V0Q2xpZW50QWNrLmdldChuKTtpZih0eXBlb2YgaT4idSIpcmV0dXJuO2NvbnN0IG89Zm8ocyk7ZGVsZXRlIGlbb10sT2JqZWN0LmtleXMoaSkubGVuZ3RoPT09MD90aGlzLm1lc3NhZ2VzV2l0aG91dENsaWVudEFjay5kZWxldGUobik6dGhpcy5tZXNzYWdlc1dpdGhvdXRDbGllbnRBY2suc2V0KG4saSksYXdhaXQgdGhpcy5wZXJzaXN0KCl9KSxiaSh0aGlzLCJkZWwiLGFzeW5jIG49Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKSx0aGlzLm1lc3NhZ2VzLmRlbGV0ZShuKSx0aGlzLm1lc3NhZ2VzV2l0aG91dENsaWVudEFjay5kZWxldGUobiksYXdhaXQgdGhpcy5wZXJzaXN0KCl9KSx0aGlzLmxvZ2dlcj1ObihlLHRoaXMubmFtZSksdGhpcy5jb3JlPXJ9Z2V0IGNvbnRleHQoKXtyZXR1cm4gcGkodGhpcy5sb2dnZXIpfWdldCBzdG9yYWdlS2V5KCl7cmV0dXJuIHRoaXMuc3RvcmFnZVByZWZpeCt0aGlzLnZlcnNpb24rdGhpcy5jb3JlLmN1c3RvbVN0b3JhZ2VQcmVmaXgrIi8vIit0aGlzLm5hbWV9Z2V0IHN0b3JhZ2VLZXlXaXRob3V0Q2xpZW50QWNrKCl7cmV0dXJuIHRoaXMuc3RvcmFnZVByZWZpeCt0aGlzLnZlcnNpb24rdGhpcy5jb3JlLmN1c3RvbVN0b3JhZ2VQcmVmaXgrIi8vIit0aGlzLm5hbWUrIl93aXRob3V0Q2xpZW50QWNrIn1hc3luYyBzZXRSZWxheWVyTWVzc2FnZXMoZSl7YXdhaXQgdGhpcy5jb3JlLnN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXksaHgoZSkpfWFzeW5jIHNldFJlbGF5ZXJNZXNzYWdlc1dpdGhvdXRDbGllbnRBY2soZSl7YXdhaXQgdGhpcy5jb3JlLnN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlXaXRob3V0Q2xpZW50QWNrLGh4KGUpKX1hc3luYyBnZXRSZWxheWVyTWVzc2FnZXMoKXtjb25zdCBlPWF3YWl0IHRoaXMuY29yZS5zdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5KTtyZXR1cm4gdHlwZW9mIGU8InUiP3B4KGUpOnZvaWQgMH1hc3luYyBnZXRSZWxheWVyTWVzc2FnZXNXaXRob3V0Q2xpZW50QWNrKCl7Y29uc3QgZT1hd2FpdCB0aGlzLmNvcmUuc3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleVdpdGhvdXRDbGllbnRBY2spO3JldHVybiB0eXBlb2YgZTwidSI/cHgoZSk6dm9pZCAwfWFzeW5jIHBlcnNpc3QoKXthd2FpdCB0aGlzLnNldFJlbGF5ZXJNZXNzYWdlcyh0aGlzLm1lc3NhZ2VzKSxhd2FpdCB0aGlzLnNldFJlbGF5ZXJNZXNzYWdlc1dpdGhvdXRDbGllbnRBY2sodGhpcy5tZXNzYWdlc1dpdGhvdXRDbGllbnRBY2spfWlzSW5pdGlhbGl6ZWQoKXtpZighdGhpcy5pbml0aWFsaXplZCl7Y29uc3R7bWVzc2FnZTplfT1PZSgiTk9UX0lOSVRJQUxJWkVEIix0aGlzLm5hbWUpO3Rocm93IG5ldyBFcnJvcihlKX19fXZhciBmY2U9T2JqZWN0LmRlZmluZVByb3BlcnR5LG1jZT1PYmplY3QuZGVmaW5lUHJvcGVydGllcyxnY2U9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMsS2s9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyx3Y2U9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxiY2U9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxQeD0odCxlLHIpPT5lIGluIHQ/ZmNlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixUZz0odCxlKT0+e2Zvcih2YXIgciBpbiBlfHwoZT17fSkpd2NlLmNhbGwoZSxyKSYmUHgodCxyLGVbcl0pO2lmKEtrKWZvcih2YXIgciBvZiBLayhlKSliY2UuY2FsbChlLHIpJiZQeCh0LHIsZVtyXSk7cmV0dXJuIHR9LHIzPSh0LGUpPT5tY2UodCxnY2UoZSkpLGdzPSh0LGUscik9PlB4KHQsdHlwZW9mIGUhPSJzeW1ib2wiP2UrIiI6ZSxyKTtjbGFzcyB5Y2UgZXh0ZW5kcyBEWntjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKGUsciksdGhpcy5yZWxheWVyPWUsdGhpcy5sb2dnZXI9cixncyh0aGlzLCJldmVudHMiLG5ldyBvcy5FdmVudEVtaXR0ZXIpLGdzKHRoaXMsIm5hbWUiLG9vZSksZ3ModGhpcywicXVldWUiLG5ldyBNYXApLGdzKHRoaXMsInB1Ymxpc2hUaW1lb3V0IixQZS50b01pbGlzZWNvbmRzKFBlLk9ORV9NSU5VVEUpKSxncyh0aGlzLCJpbml0aWFsUHVibGlzaFRpbWVvdXQiLFBlLnRvTWlsaXNlY29uZHMoUGUuT05FX1NFQ09ORCoxNSkpLGdzKHRoaXMsIm5lZWRzVHJhbnNwb3J0UmVzdGFydCIsITEpLGdzKHRoaXMsInB1Ymxpc2giLGFzeW5jKG4scyxpKT0+e3ZhciBvO3RoaXMubG9nZ2VyLmRlYnVnKCJQdWJsaXNoaW5nIFBheWxvYWQiKSx0aGlzLmxvZ2dlci50cmFjZSh7dHlwZToibWV0aG9kIixtZXRob2Q6InB1Ymxpc2giLHBhcmFtczp7dG9waWM6bixtZXNzYWdlOnMsb3B0czppfX0pO2NvbnN0IGE9aT8udHRsfHxVayxjPXdiKGkpLGw9aT8ucHJvbXB0fHwhMSxkPWk/LnRhZ3x8MCx1PWk/LmlkfHxldSgpLnRvU3RyaW5nKCksaD17dG9waWM6bixtZXNzYWdlOnMsb3B0czp7dHRsOmEscmVsYXk6Yyxwcm9tcHQ6bCx0YWc6ZCxpZDp1LGF0dGVzdGF0aW9uOmk/LmF0dGVzdGF0aW9uLHR2ZjppPy50dmZ9fSxwPWBGYWlsZWQgdG8gcHVibGlzaCBwYXlsb2FkLCBwbGVhc2UgdHJ5IGFnYWluLiBpZDoke3V9IHRhZzoke2R9YDt0cnl7Y29uc3QgZj1uZXcgUHJvbWlzZShhc3luYyBtPT57Y29uc3Qgdz0oe2lkOnZ9KT0+e2gub3B0cy5pZD09PXYmJih0aGlzLnJlbW92ZVJlcXVlc3RGcm9tUXVldWUodiksdGhpcy5yZWxheWVyLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihhbi5wdWJsaXNoLHcpLG0oaCkpfTt0aGlzLnJlbGF5ZXIuZXZlbnRzLm9uKGFuLnB1Ymxpc2gsdyk7Y29uc3QgZz1jYyhuZXcgUHJvbWlzZSgodixFKT0+e3RoaXMucnBjUHVibGlzaCh7dG9waWM6bixtZXNzYWdlOnMsdHRsOmEscHJvbXB0OmwsdGFnOmQsaWQ6dSxhdHRlc3RhdGlvbjppPy5hdHRlc3RhdGlvbix0dmY6aT8udHZmfSkudGhlbih2KS5jYXRjaCh4PT57dGhpcy5sb2dnZXIud2Fybih4LHg/Lm1lc3NhZ2UpLEUoeCl9KX0pLHRoaXMuaW5pdGlhbFB1Ymxpc2hUaW1lb3V0LGBGYWlsZWQgaW5pdGlhbCBwdWJsaXNoLCByZXRyeWluZy4uLi4gaWQ6JHt1fSB0YWc6JHtkfWApO3RyeXthd2FpdCBnLHRoaXMuZXZlbnRzLnJlbW92ZUxpc3RlbmVyKGFuLnB1Ymxpc2gsdyl9Y2F0Y2godil7dGhpcy5xdWV1ZS5zZXQodSxyMyhUZyh7fSxoKSx7YXR0ZW1wdDoxfSkpLHRoaXMubG9nZ2VyLndhcm4odix2Py5tZXNzYWdlKX19KTt0aGlzLmxvZ2dlci50cmFjZSh7dHlwZToibWV0aG9kIixtZXRob2Q6InB1Ymxpc2giLHBhcmFtczp7aWQ6dSx0b3BpYzpuLG1lc3NhZ2U6cyxvcHRzOml9fSksYXdhaXQgY2MoZix0aGlzLnB1Ymxpc2hUaW1lb3V0LHApfWNhdGNoKGYpe2lmKHRoaXMubG9nZ2VyLmRlYnVnKCJGYWlsZWQgdG8gUHVibGlzaCBQYXlsb2FkIiksdGhpcy5sb2dnZXIuZXJyb3IoZiksKG89aT8uaW50ZXJuYWwpIT1udWxsJiZvLnRocm93T25GYWlsZWRQdWJsaXNoKXRocm93IGZ9ZmluYWxseXt0aGlzLnF1ZXVlLmRlbGV0ZSh1KX19KSxncyh0aGlzLCJvbiIsKG4scyk9Pnt0aGlzLmV2ZW50cy5vbihuLHMpfSksZ3ModGhpcywib25jZSIsKG4scyk9Pnt0aGlzLmV2ZW50cy5vbmNlKG4scyl9KSxncyh0aGlzLCJvZmYiLChuLHMpPT57dGhpcy5ldmVudHMub2ZmKG4scyl9KSxncyh0aGlzLCJyZW1vdmVMaXN0ZW5lciIsKG4scyk9Pnt0aGlzLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihuLHMpfSksdGhpcy5yZWxheWVyPWUsdGhpcy5sb2dnZXI9Tm4ocix0aGlzLm5hbWUpLHRoaXMucmVnaXN0ZXJFdmVudExpc3RlbmVycygpfWdldCBjb250ZXh0KCl7cmV0dXJuIHBpKHRoaXMubG9nZ2VyKX1hc3luYyBycGNQdWJsaXNoKGUpe3ZhciByLG4scyxpO2NvbnN0e3RvcGljOm8sbWVzc2FnZTphLHR0bDpjPVVrLHByb21wdDpsLHRhZzpkLGlkOnUsYXR0ZXN0YXRpb246aCx0dmY6cH09ZSxmPXttZXRob2Q6WmYod2IoKS5wcm90b2NvbCkucHVibGlzaCxwYXJhbXM6VGcoe3RvcGljOm8sbWVzc2FnZTphLHR0bDpjLHByb21wdDpsLHRhZzpkLGF0dGVzdGF0aW9uOmh9LHApLGlkOnV9O0VuKChyPWYucGFyYW1zKT09bnVsbD92b2lkIDA6ci5wcm9tcHQpJiYoKG49Zi5wYXJhbXMpPT1udWxsfHxkZWxldGUgbi5wcm9tcHQpLEVuKChzPWYucGFyYW1zKT09bnVsbD92b2lkIDA6cy50YWcpJiYoKGk9Zi5wYXJhbXMpPT1udWxsfHxkZWxldGUgaS50YWcpLHRoaXMubG9nZ2VyLmRlYnVnKCJPdXRnb2luZyBSZWxheSBQYXlsb2FkIiksdGhpcy5sb2dnZXIudHJhY2Uoe3R5cGU6Im1lc3NhZ2UiLGRpcmVjdGlvbjoib3V0Z29pbmciLHJlcXVlc3Q6Zn0pO2NvbnN0IG09YXdhaXQgdGhpcy5yZWxheWVyLnJlcXVlc3QoZik7cmV0dXJuIHRoaXMucmVsYXllci5ldmVudHMuZW1pdChhbi5wdWJsaXNoLGUpLHRoaXMubG9nZ2VyLmRlYnVnKCJTdWNjZXNzZnVsbHkgUHVibGlzaGVkIFBheWxvYWQiKSxtfXJlbW92ZVJlcXVlc3RGcm9tUXVldWUoZSl7dGhpcy5xdWV1ZS5kZWxldGUoZSl9Y2hlY2tRdWV1ZSgpe3RoaXMucXVldWUuZm9yRWFjaChhc3luYyhlLHIpPT57Y29uc3Qgbj1lLmF0dGVtcHQrMTt0aGlzLnF1ZXVlLnNldChyLHIzKFRnKHt9LGUpLHthdHRlbXB0Om59KSk7Y29uc3R7dG9waWM6cyxtZXNzYWdlOmksb3B0czpvLGF0dGVzdGF0aW9uOmF9PWU7dGhpcy5sb2dnZXIud2Fybih7fSxgUHVibGlzaGVyOiBxdWV1ZS0+cHVibGlzaGluZzogJHtlLm9wdHMuaWR9LCB0YWc6ICR7ZS5vcHRzLnRhZ30sIGF0dGVtcHQ6ICR7bn1gKSxhd2FpdCB0aGlzLnJwY1B1Ymxpc2gocjMoVGcoe30sZSkse3RvcGljOnMsbWVzc2FnZTppLHR0bDpvLnR0bCxwcm9tcHQ6by5wcm9tcHQsdGFnOm8udGFnLGlkOm8uaWQsYXR0ZXN0YXRpb246YSx0dmY6by50dmZ9KSksdGhpcy5sb2dnZXIud2Fybih7fSxgUHVibGlzaGVyOiBxdWV1ZS0+cHVibGlzaGVkOiAke2Uub3B0cy5pZH1gKX0pfXJlZ2lzdGVyRXZlbnRMaXN0ZW5lcnMoKXt0aGlzLnJlbGF5ZXIuY29yZS5oZWFydGJlYXQub24oY3AucHVsc2UsKCk9PntpZih0aGlzLm5lZWRzVHJhbnNwb3J0UmVzdGFydCl7dGhpcy5uZWVkc1RyYW5zcG9ydFJlc3RhcnQ9ITEsdGhpcy5yZWxheWVyLmV2ZW50cy5lbWl0KGFuLmNvbm5lY3Rpb25fc3RhbGxlZCk7cmV0dXJufXRoaXMuY2hlY2tRdWV1ZSgpfSksdGhpcy5yZWxheWVyLm9uKGFuLm1lc3NhZ2VfYWNrLGU9Pnt0aGlzLnJlbW92ZVJlcXVlc3RGcm9tUXVldWUoZS5pZC50b1N0cmluZygpKX0pfX12YXIgdmNlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxFY2U9KHQsZSxyKT0+ZSBpbiB0P3ZjZSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsUGQ9KHQsZSxyKT0+RWNlKHQsdHlwZW9mIGUhPSJzeW1ib2wiP2UrIiI6ZSxyKTtjbGFzcyBDY2V7Y29uc3RydWN0b3IoKXtQZCh0aGlzLCJtYXAiLG5ldyBNYXApLFBkKHRoaXMsInNldCIsKGUscik9Pntjb25zdCBuPXRoaXMuZ2V0KGUpO3RoaXMuZXhpc3RzKGUscil8fHRoaXMubWFwLnNldChlLFsuLi5uLHJdKX0pLFBkKHRoaXMsImdldCIsZT0+dGhpcy5tYXAuZ2V0KGUpfHxbXSksUGQodGhpcywiZXhpc3RzIiwoZSxyKT0+dGhpcy5nZXQoZSkuaW5jbHVkZXMocikpLFBkKHRoaXMsImRlbGV0ZSIsKGUscik9PntpZih0eXBlb2Ygcj4idSIpe3RoaXMubWFwLmRlbGV0ZShlKTtyZXR1cm59aWYoIXRoaXMubWFwLmhhcyhlKSlyZXR1cm47Y29uc3Qgbj10aGlzLmdldChlKTtpZighdGhpcy5leGlzdHMoZSxyKSlyZXR1cm47Y29uc3Qgcz1uLmZpbHRlcihpPT5pIT09cik7aWYoIXMubGVuZ3RoKXt0aGlzLm1hcC5kZWxldGUoZSk7cmV0dXJufXRoaXMubWFwLnNldChlLHMpfSksUGQodGhpcywiY2xlYXIiLCgpPT57dGhpcy5tYXAuY2xlYXIoKX0pfWdldCB0b3BpY3MoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLm1hcC5rZXlzKCkpfX12YXIgeGNlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxfY2U9T2JqZWN0LmRlZmluZVByb3BlcnRpZXMsa2NlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLFprPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsU2NlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQWNlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsT3g9KHQsZSxyKT0+ZSBpbiB0P3hjZSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsV3A9KHQsZSk9Pntmb3IodmFyIHIgaW4gZXx8KGU9e30pKVNjZS5jYWxsKGUscikmJk94KHQscixlW3JdKTtpZihaaylmb3IodmFyIHIgb2YgWmsoZSkpQWNlLmNhbGwoZSxyKSYmT3godCxyLGVbcl0pO3JldHVybiB0fSxuMz0odCxlKT0+X2NlKHQsa2NlKGUpKSxYdD0odCxlLHIpPT5PeCh0LHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUscik7Y2xhc3MgVGNlIGV4dGVuZHMgVVp7Y29uc3RydWN0b3IoZSxyKXtzdXBlcihlLHIpLHRoaXMucmVsYXllcj1lLHRoaXMubG9nZ2VyPXIsWHQodGhpcywic3Vic2NyaXB0aW9ucyIsbmV3IE1hcCksWHQodGhpcywidG9waWNNYXAiLG5ldyBDY2UpLFh0KHRoaXMsImV2ZW50cyIsbmV3IG9zLkV2ZW50RW1pdHRlciksWHQodGhpcywibmFtZSIscG9lKSxYdCh0aGlzLCJ2ZXJzaW9uIixmb2UpLFh0KHRoaXMsInBlbmRpbmciLG5ldyBNYXApLFh0KHRoaXMsImNhY2hlZCIsW10pLFh0KHRoaXMsImluaXRpYWxpemVkIiwhMSksWHQodGhpcywic3RvcmFnZVByZWZpeCIsQ28pLFh0KHRoaXMsInN1YnNjcmliZVRpbWVvdXQiLFBlLnRvTWlsaXNlY29uZHMoUGUuT05FX01JTlVURSkpLFh0KHRoaXMsImluaXRpYWxTdWJzY3JpYmVUaW1lb3V0IixQZS50b01pbGlzZWNvbmRzKFBlLk9ORV9TRUNPTkQqMTUpKSxYdCh0aGlzLCJjbGllbnRJZCIpLFh0KHRoaXMsImJhdGNoU3Vic2NyaWJlVG9waWNzTGltaXQiLDUwMCksWHQodGhpcywiaW5pdCIsYXN5bmMoKT0+e3RoaXMuaW5pdGlhbGl6ZWR8fCh0aGlzLmxvZ2dlci50cmFjZSgiSW5pdGlhbGl6ZWQiKSx0aGlzLnJlZ2lzdGVyRXZlbnRMaXN0ZW5lcnMoKSxhd2FpdCB0aGlzLnJlc3RvcmUoKSksdGhpcy5pbml0aWFsaXplZD0hMH0pLFh0KHRoaXMsInN1YnNjcmliZSIsYXN5bmMobixzKT0+e3RoaXMuaXNJbml0aWFsaXplZCgpLHRoaXMubG9nZ2VyLmRlYnVnKCJTdWJzY3JpYmluZyBUb3BpYyIpLHRoaXMubG9nZ2VyLnRyYWNlKHt0eXBlOiJtZXRob2QiLG1ldGhvZDoic3Vic2NyaWJlIixwYXJhbXM6e3RvcGljOm4sb3B0czpzfX0pO3RyeXtjb25zdCBpPXdiKHMpLG89e3RvcGljOm4scmVsYXk6aSx0cmFuc3BvcnRUeXBlOnM/LnRyYW5zcG9ydFR5cGV9O3RoaXMucGVuZGluZy5zZXQobixvKTtjb25zdCBhPWF3YWl0IHRoaXMucnBjU3Vic2NyaWJlKG4saSxzKTtyZXR1cm4gdHlwZW9mIGE9PSJzdHJpbmciJiYodGhpcy5vblN1YnNjcmliZShhLG8pLHRoaXMubG9nZ2VyLmRlYnVnKCJTdWNjZXNzZnVsbHkgU3Vic2NyaWJlZCBUb3BpYyIpLHRoaXMubG9nZ2VyLnRyYWNlKHt0eXBlOiJtZXRob2QiLG1ldGhvZDoic3Vic2NyaWJlIixwYXJhbXM6e3RvcGljOm4sb3B0czpzfX0pKSxhfWNhdGNoKGkpe3Rocm93IHRoaXMubG9nZ2VyLmRlYnVnKCJGYWlsZWQgdG8gU3Vic2NyaWJlIFRvcGljIiksdGhpcy5sb2dnZXIuZXJyb3IoaSksaX19KSxYdCh0aGlzLCJ1bnN1YnNjcmliZSIsYXN5bmMobixzKT0+e3RoaXMuaXNJbml0aWFsaXplZCgpLHR5cGVvZiBzPy5pZDwidSI/YXdhaXQgdGhpcy51bnN1YnNjcmliZUJ5SWQobixzLmlkLHMpOmF3YWl0IHRoaXMudW5zdWJzY3JpYmVCeVRvcGljKG4scyl9KSxYdCh0aGlzLCJpc1N1YnNjcmliZWQiLG49Pm5ldyBQcm9taXNlKHM9PntzKHRoaXMudG9waWNNYXAudG9waWNzLmluY2x1ZGVzKG4pKX0pKSxYdCh0aGlzLCJpc0tub3duVG9waWMiLG49Pm5ldyBQcm9taXNlKHM9PntzKHRoaXMudG9waWNNYXAudG9waWNzLmluY2x1ZGVzKG4pfHx0aGlzLnBlbmRpbmcuaGFzKG4pfHx0aGlzLmNhY2hlZC5zb21lKGk9PmkudG9waWM9PT1uKSl9KSksWHQodGhpcywib24iLChuLHMpPT57dGhpcy5ldmVudHMub24obixzKX0pLFh0KHRoaXMsIm9uY2UiLChuLHMpPT57dGhpcy5ldmVudHMub25jZShuLHMpfSksWHQodGhpcywib2ZmIiwobixzKT0+e3RoaXMuZXZlbnRzLm9mZihuLHMpfSksWHQodGhpcywicmVtb3ZlTGlzdGVuZXIiLChuLHMpPT57dGhpcy5ldmVudHMucmVtb3ZlTGlzdGVuZXIobixzKX0pLFh0KHRoaXMsInN0YXJ0Iixhc3luYygpPT57YXdhaXQgdGhpcy5vbkNvbm5lY3QoKX0pLFh0KHRoaXMsInN0b3AiLGFzeW5jKCk9Pnthd2FpdCB0aGlzLm9uRGlzY29ubmVjdCgpfSksWHQodGhpcywicmVzdGFydCIsYXN5bmMoKT0+e2F3YWl0IHRoaXMucmVzdG9yZSgpLGF3YWl0IHRoaXMub25SZXN0YXJ0KCl9KSxYdCh0aGlzLCJjaGVja1BlbmRpbmciLGFzeW5jKCk9PntpZih0aGlzLnBlbmRpbmcuc2l6ZT09PTAmJighdGhpcy5pbml0aWFsaXplZHx8IXRoaXMucmVsYXllci5jb25uZWN0ZWQpKXJldHVybjtjb25zdCBuPVtdO3RoaXMucGVuZGluZy5mb3JFYWNoKHM9PntuLnB1c2gocyl9KSxhd2FpdCB0aGlzLmJhdGNoU3Vic2NyaWJlKG4pfSksWHQodGhpcywicmVnaXN0ZXJFdmVudExpc3RlbmVycyIsKCk9Pnt0aGlzLnJlbGF5ZXIuY29yZS5oZWFydGJlYXQub24oY3AucHVsc2UsYXN5bmMoKT0+e2F3YWl0IHRoaXMuY2hlY2tQZW5kaW5nKCl9KSx0aGlzLmV2ZW50cy5vbih5aS5jcmVhdGVkLGFzeW5jIG49Pntjb25zdCBzPXlpLmNyZWF0ZWQ7dGhpcy5sb2dnZXIuaW5mbyhgRW1pdHRpbmcgJHtzfWApLHRoaXMubG9nZ2VyLmRlYnVnKHt0eXBlOiJldmVudCIsZXZlbnQ6cyxkYXRhOm59KSxhd2FpdCB0aGlzLnBlcnNpc3QoKX0pLHRoaXMuZXZlbnRzLm9uKHlpLmRlbGV0ZWQsYXN5bmMgbj0+e2NvbnN0IHM9eWkuZGVsZXRlZDt0aGlzLmxvZ2dlci5pbmZvKGBFbWl0dGluZyAke3N9YCksdGhpcy5sb2dnZXIuZGVidWcoe3R5cGU6ImV2ZW50IixldmVudDpzLGRhdGE6bn0pLGF3YWl0IHRoaXMucGVyc2lzdCgpfSl9KSx0aGlzLnJlbGF5ZXI9ZSx0aGlzLmxvZ2dlcj1ObihyLHRoaXMubmFtZSksdGhpcy5jbGllbnRJZD0iIn1nZXQgY29udGV4dCgpe3JldHVybiBwaSh0aGlzLmxvZ2dlcil9Z2V0IHN0b3JhZ2VLZXkoKXtyZXR1cm4gdGhpcy5zdG9yYWdlUHJlZml4K3RoaXMudmVyc2lvbit0aGlzLnJlbGF5ZXIuY29yZS5jdXN0b21TdG9yYWdlUHJlZml4KyIvLyIrdGhpcy5uYW1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5zdWJzY3JpcHRpb25zLnNpemV9Z2V0IGlkcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuc3Vic2NyaXB0aW9ucy5rZXlzKCkpfWdldCB2YWx1ZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnN1YnNjcmlwdGlvbnMudmFsdWVzKCkpfWdldCB0b3BpY3MoKXtyZXR1cm4gdGhpcy50b3BpY01hcC50b3BpY3N9Z2V0IGhhc0FueVRvcGljcygpe3JldHVybiB0aGlzLnRvcGljTWFwLnRvcGljcy5sZW5ndGg+MHx8dGhpcy5wZW5kaW5nLnNpemU+MHx8dGhpcy5jYWNoZWQubGVuZ3RoPjB8fHRoaXMuc3Vic2NyaXB0aW9ucy5zaXplPjB9aGFzU3Vic2NyaXB0aW9uKGUscil7bGV0IG49ITE7dHJ5e249dGhpcy5nZXRTdWJzY3JpcHRpb24oZSkudG9waWM9PT1yfWNhdGNoe31yZXR1cm4gbn1yZXNldCgpe3RoaXMuY2FjaGVkPVtdLHRoaXMuaW5pdGlhbGl6ZWQ9ITB9b25EaXNhYmxlKCl7dGhpcy52YWx1ZXMubGVuZ3RoPjAmJih0aGlzLmNhY2hlZD10aGlzLnZhbHVlcyksdGhpcy5zdWJzY3JpcHRpb25zLmNsZWFyKCksdGhpcy50b3BpY01hcC5jbGVhcigpfWFzeW5jIHVuc3Vic2NyaWJlQnlUb3BpYyhlLHIpe2NvbnN0IG49dGhpcy50b3BpY01hcC5nZXQoZSk7YXdhaXQgUHJvbWlzZS5hbGwobi5tYXAoYXN5bmMgcz0+YXdhaXQgdGhpcy51bnN1YnNjcmliZUJ5SWQoZSxzLHIpKSl9YXN5bmMgdW5zdWJzY3JpYmVCeUlkKGUscixuKXt0aGlzLmxvZ2dlci5kZWJ1ZygiVW5zdWJzY3JpYmluZyBUb3BpYyIpLHRoaXMubG9nZ2VyLnRyYWNlKHt0eXBlOiJtZXRob2QiLG1ldGhvZDoidW5zdWJzY3JpYmUiLHBhcmFtczp7dG9waWM6ZSxpZDpyLG9wdHM6bn19KTt0cnl7Y29uc3Qgcz13YihuKTthd2FpdCB0aGlzLnJlc3RhcnRUb0NvbXBsZXRlKHt0b3BpYzplLGlkOnIscmVsYXk6c30pLGF3YWl0IHRoaXMucnBjVW5zdWJzY3JpYmUoZSxyLHMpO2NvbnN0IGk9S3QoIlVTRVJfRElTQ09OTkVDVEVEIixgJHt0aGlzLm5hbWV9LCAke2V9YCk7YXdhaXQgdGhpcy5vblVuc3Vic2NyaWJlKGUscixpKSx0aGlzLmxvZ2dlci5kZWJ1ZygiU3VjY2Vzc2Z1bGx5IFVuc3Vic2NyaWJlZCBUb3BpYyIpLHRoaXMubG9nZ2VyLnRyYWNlKHt0eXBlOiJtZXRob2QiLG1ldGhvZDoidW5zdWJzY3JpYmUiLHBhcmFtczp7dG9waWM6ZSxpZDpyLG9wdHM6bn19KX1jYXRjaChzKXt0aHJvdyB0aGlzLmxvZ2dlci5kZWJ1ZygiRmFpbGVkIHRvIFVuc3Vic2NyaWJlIFRvcGljIiksdGhpcy5sb2dnZXIuZXJyb3Iocyksc319YXN5bmMgcnBjU3Vic2NyaWJlKGUscixuKXt2YXIgczsoIW58fG4/LnRyYW5zcG9ydFR5cGU9PT1jci5yZWxheSkmJmF3YWl0IHRoaXMucmVzdGFydFRvQ29tcGxldGUoe3RvcGljOmUsaWQ6ZSxyZWxheTpyfSk7Y29uc3QgaT17bWV0aG9kOlpmKHIucHJvdG9jb2wpLnN1YnNjcmliZSxwYXJhbXM6e3RvcGljOmV9fTt0aGlzLmxvZ2dlci5kZWJ1ZygiT3V0Z29pbmcgUmVsYXkgUGF5bG9hZCIpLHRoaXMubG9nZ2VyLnRyYWNlKHt0eXBlOiJwYXlsb2FkIixkaXJlY3Rpb246Im91dGdvaW5nIixyZXF1ZXN0Oml9KTtjb25zdCBvPShzPW4/LmludGVybmFsKT09bnVsbD92b2lkIDA6cy50aHJvd09uRmFpbGVkUHVibGlzaDt0cnl7Y29uc3QgYT1hd2FpdCB0aGlzLmdldFN1YnNjcmlwdGlvbklkKGUpO2lmKG4/LnRyYW5zcG9ydFR5cGU9PT1jci5saW5rX21vZGUpcmV0dXJuIHNldFRpbWVvdXQoKCk9PnsodGhpcy5yZWxheWVyLmNvbm5lY3RlZHx8dGhpcy5yZWxheWVyLmNvbm5lY3RpbmcpJiZ0aGlzLnJlbGF5ZXIucmVxdWVzdChpKS5jYXRjaChkPT50aGlzLmxvZ2dlci53YXJuKGQpKX0sUGUudG9NaWxpc2Vjb25kcyhQZS5PTkVfU0VDT05EKSksYTtjb25zdCBjPW5ldyBQcm9taXNlKGFzeW5jIGQ9Pntjb25zdCB1PWg9PntoLnRvcGljPT09ZSYmKHRoaXMuZXZlbnRzLnJlbW92ZUxpc3RlbmVyKHlpLmNyZWF0ZWQsdSksZChoLmlkKSl9O3RoaXMuZXZlbnRzLm9uKHlpLmNyZWF0ZWQsdSk7dHJ5e2NvbnN0IGg9YXdhaXQgY2MobmV3IFByb21pc2UoKHAsZik9Pnt0aGlzLnJlbGF5ZXIucmVxdWVzdChpKS5jYXRjaChtPT57dGhpcy5sb2dnZXIud2FybihtLG0/Lm1lc3NhZ2UpLGYobSl9KS50aGVuKHApfSksdGhpcy5pbml0aWFsU3Vic2NyaWJlVGltZW91dCxgU3Vic2NyaWJpbmcgdG8gJHtlfSBmYWlsZWQsIHBsZWFzZSB0cnkgYWdhaW5gKTt0aGlzLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcih5aS5jcmVhdGVkLHUpLGQoaCl9Y2F0Y2h7fX0pLGw9YXdhaXQgY2MoYyx0aGlzLnN1YnNjcmliZVRpbWVvdXQsYFN1YnNjcmliaW5nIHRvICR7ZX0gZmFpbGVkLCBwbGVhc2UgdHJ5IGFnYWluYCk7aWYoIWwmJm8pdGhyb3cgbmV3IEVycm9yKGBTdWJzY3JpYmluZyB0byAke2V9IGZhaWxlZCwgcGxlYXNlIHRyeSBhZ2FpbmApO3JldHVybiBsP2E6bnVsbH1jYXRjaChhKXtpZih0aGlzLmxvZ2dlci5kZWJ1ZygiT3V0Z29pbmcgUmVsYXkgU3Vic2NyaWJlIFBheWxvYWQgc3RhbGxlZCIpLHRoaXMucmVsYXllci5ldmVudHMuZW1pdChhbi5jb25uZWN0aW9uX3N0YWxsZWQpLG8pdGhyb3cgYX1yZXR1cm4gbnVsbH1hc3luYyBycGNCYXRjaFN1YnNjcmliZShlKXtpZighZS5sZW5ndGgpcmV0dXJuO2NvbnN0IHI9ZVswXS5yZWxheSxuPXttZXRob2Q6WmYoci5wcm90b2NvbCkuYmF0Y2hTdWJzY3JpYmUscGFyYW1zOnt0b3BpY3M6ZS5tYXAocz0+cy50b3BpYyl9fTt0aGlzLmxvZ2dlci5kZWJ1ZygiT3V0Z29pbmcgUmVsYXkgUGF5bG9hZCIpLHRoaXMubG9nZ2VyLnRyYWNlKHt0eXBlOiJwYXlsb2FkIixkaXJlY3Rpb246Im91dGdvaW5nIixyZXF1ZXN0Om59KTt0cnl7YXdhaXQgYXdhaXQgY2MobmV3IFByb21pc2Uocz0+e3RoaXMucmVsYXllci5yZXF1ZXN0KG4pLmNhdGNoKGk9PnRoaXMubG9nZ2VyLndhcm4oaSkpLnRoZW4ocyl9KSx0aGlzLnN1YnNjcmliZVRpbWVvdXQsInJwY0JhdGNoU3Vic2NyaWJlIGZhaWxlZCwgcGxlYXNlIHRyeSBhZ2FpbiIpfWNhdGNoe3RoaXMucmVsYXllci5ldmVudHMuZW1pdChhbi5jb25uZWN0aW9uX3N0YWxsZWQpfX1hc3luYyBycGNCYXRjaEZldGNoTWVzc2FnZXMoZSl7aWYoIWUubGVuZ3RoKXJldHVybjtjb25zdCByPWVbMF0ucmVsYXksbj17bWV0aG9kOlpmKHIucHJvdG9jb2wpLmJhdGNoRmV0Y2hNZXNzYWdlcyxwYXJhbXM6e3RvcGljczplLm1hcChpPT5pLnRvcGljKX19O3RoaXMubG9nZ2VyLmRlYnVnKCJPdXRnb2luZyBSZWxheSBQYXlsb2FkIiksdGhpcy5sb2dnZXIudHJhY2Uoe3R5cGU6InBheWxvYWQiLGRpcmVjdGlvbjoib3V0Z29pbmciLHJlcXVlc3Q6bn0pO2xldCBzO3RyeXtzPWF3YWl0IGF3YWl0IGNjKG5ldyBQcm9taXNlKChpLG8pPT57dGhpcy5yZWxheWVyLnJlcXVlc3QobikuY2F0Y2goYT0+e3RoaXMubG9nZ2VyLndhcm4oYSksbyhhKX0pLnRoZW4oaSl9KSx0aGlzLnN1YnNjcmliZVRpbWVvdXQsInJwY0JhdGNoRmV0Y2hNZXNzYWdlcyBmYWlsZWQsIHBsZWFzZSB0cnkgYWdhaW4iKX1jYXRjaHt0aGlzLnJlbGF5ZXIuZXZlbnRzLmVtaXQoYW4uY29ubmVjdGlvbl9zdGFsbGVkKX1yZXR1cm4gc31ycGNVbnN1YnNjcmliZShlLHIsbil7Y29uc3Qgcz17bWV0aG9kOlpmKG4ucHJvdG9jb2wpLnVuc3Vic2NyaWJlLHBhcmFtczp7dG9waWM6ZSxpZDpyfX07cmV0dXJuIHRoaXMubG9nZ2VyLmRlYnVnKCJPdXRnb2luZyBSZWxheSBQYXlsb2FkIiksdGhpcy5sb2dnZXIudHJhY2Uoe3R5cGU6InBheWxvYWQiLGRpcmVjdGlvbjoib3V0Z29pbmciLHJlcXVlc3Q6c30pLHRoaXMucmVsYXllci5yZXF1ZXN0KHMpfW9uU3Vic2NyaWJlKGUscil7dGhpcy5zZXRTdWJzY3JpcHRpb24oZSxuMyhXcCh7fSxyKSx7aWQ6ZX0pKSx0aGlzLnBlbmRpbmcuZGVsZXRlKHIudG9waWMpfW9uQmF0Y2hTdWJzY3JpYmUoZSl7ZS5sZW5ndGgmJmUuZm9yRWFjaChyPT57dGhpcy5zZXRTdWJzY3JpcHRpb24oci5pZCxXcCh7fSxyKSksdGhpcy5wZW5kaW5nLmRlbGV0ZShyLnRvcGljKX0pfWFzeW5jIG9uVW5zdWJzY3JpYmUoZSxyLG4pe3RoaXMuZXZlbnRzLnJlbW92ZUFsbExpc3RlbmVycyhyKSx0aGlzLmhhc1N1YnNjcmlwdGlvbihyLGUpJiZ0aGlzLmRlbGV0ZVN1YnNjcmlwdGlvbihyLG4pLGF3YWl0IHRoaXMucmVsYXllci5tZXNzYWdlcy5kZWwoZSl9YXN5bmMgc2V0UmVsYXllclN1YnNjcmlwdGlvbnMoZSl7YXdhaXQgdGhpcy5yZWxheWVyLmNvcmUuc3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleSxlKX1hc3luYyBnZXRSZWxheWVyU3Vic2NyaXB0aW9ucygpe3JldHVybiBhd2FpdCB0aGlzLnJlbGF5ZXIuY29yZS5zdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5KX1zZXRTdWJzY3JpcHRpb24oZSxyKXt0aGlzLmxvZ2dlci5kZWJ1ZygiU2V0dGluZyBzdWJzY3JpcHRpb24iKSx0aGlzLmxvZ2dlci50cmFjZSh7dHlwZToibWV0aG9kIixtZXRob2Q6InNldFN1YnNjcmlwdGlvbiIsaWQ6ZSxzdWJzY3JpcHRpb246cn0pLHRoaXMuYWRkU3Vic2NyaXB0aW9uKGUscil9YWRkU3Vic2NyaXB0aW9uKGUscil7dGhpcy5zdWJzY3JpcHRpb25zLnNldChlLFdwKHt9LHIpKSx0aGlzLnRvcGljTWFwLnNldChyLnRvcGljLGUpLHRoaXMuZXZlbnRzLmVtaXQoeWkuY3JlYXRlZCxyKX1nZXRTdWJzY3JpcHRpb24oZSl7dGhpcy5sb2dnZXIuZGVidWcoIkdldHRpbmcgc3Vic2NyaXB0aW9uIiksdGhpcy5sb2dnZXIudHJhY2Uoe3R5cGU6Im1ldGhvZCIsbWV0aG9kOiJnZXRTdWJzY3JpcHRpb24iLGlkOmV9KTtjb25zdCByPXRoaXMuc3Vic2NyaXB0aW9ucy5nZXQoZSk7aWYoIXIpe2NvbnN0e21lc3NhZ2U6bn09T2UoIk5PX01BVENISU5HX0tFWSIsYCR7dGhpcy5uYW1lfTogJHtlfWApO3Rocm93IG5ldyBFcnJvcihuKX1yZXR1cm4gcn1kZWxldGVTdWJzY3JpcHRpb24oZSxyKXt0aGlzLmxvZ2dlci5kZWJ1ZygiRGVsZXRpbmcgc3Vic2NyaXB0aW9uIiksdGhpcy5sb2dnZXIudHJhY2Uoe3R5cGU6Im1ldGhvZCIsbWV0aG9kOiJkZWxldGVTdWJzY3JpcHRpb24iLGlkOmUscmVhc29uOnJ9KTtjb25zdCBuPXRoaXMuZ2V0U3Vic2NyaXB0aW9uKGUpO3RoaXMuc3Vic2NyaXB0aW9ucy5kZWxldGUoZSksdGhpcy50b3BpY01hcC5kZWxldGUobi50b3BpYyxlKSx0aGlzLmV2ZW50cy5lbWl0KHlpLmRlbGV0ZWQsbjMoV3Aoe30sbikse3JlYXNvbjpyfSkpfWFzeW5jIHBlcnNpc3QoKXthd2FpdCB0aGlzLnNldFJlbGF5ZXJTdWJzY3JpcHRpb25zKHRoaXMudmFsdWVzKSx0aGlzLmV2ZW50cy5lbWl0KHlpLnN5bmMpfWFzeW5jIG9uUmVzdGFydCgpe2lmKHRoaXMuY2FjaGVkLmxlbmd0aCl7Y29uc3QgZT1bLi4udGhpcy5jYWNoZWRdLHI9TWF0aC5jZWlsKHRoaXMuY2FjaGVkLmxlbmd0aC90aGlzLmJhdGNoU3Vic2NyaWJlVG9waWNzTGltaXQpO2ZvcihsZXQgbj0wO248cjtuKyspe2NvbnN0IHM9ZS5zcGxpY2UoMCx0aGlzLmJhdGNoU3Vic2NyaWJlVG9waWNzTGltaXQpO2F3YWl0IHRoaXMuYmF0Y2hTdWJzY3JpYmUocyl9fXRoaXMuZXZlbnRzLmVtaXQoeWkucmVzdWJzY3JpYmVkKX1hc3luYyByZXN0b3JlKCl7dHJ5e2NvbnN0IGU9YXdhaXQgdGhpcy5nZXRSZWxheWVyU3Vic2NyaXB0aW9ucygpO2lmKHR5cGVvZiBlPiJ1Inx8IWUubGVuZ3RoKXJldHVybjtpZih0aGlzLnN1YnNjcmlwdGlvbnMuc2l6ZSl7Y29uc3R7bWVzc2FnZTpyfT1PZSgiUkVTVE9SRV9XSUxMX09WRVJSSURFIix0aGlzLm5hbWUpO3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHIpLHRoaXMubG9nZ2VyLmVycm9yKGAke3RoaXMubmFtZX06ICR7SlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZXMpfWApLG5ldyBFcnJvcihyKX10aGlzLmNhY2hlZD1lLHRoaXMubG9nZ2VyLmRlYnVnKGBTdWNjZXNzZnVsbHkgUmVzdG9yZWQgc3Vic2NyaXB0aW9ucyBmb3IgJHt0aGlzLm5hbWV9YCksdGhpcy5sb2dnZXIudHJhY2Uoe3R5cGU6Im1ldGhvZCIsbWV0aG9kOiJyZXN0b3JlIixzdWJzY3JpcHRpb25zOnRoaXMudmFsdWVzfSl9Y2F0Y2goZSl7dGhpcy5sb2dnZXIuZGVidWcoYEZhaWxlZCB0byBSZXN0b3JlIHN1YnNjcmlwdGlvbnMgZm9yICR7dGhpcy5uYW1lfWApLHRoaXMubG9nZ2VyLmVycm9yKGUpfX1hc3luYyBiYXRjaFN1YnNjcmliZShlKXtlLmxlbmd0aCYmKGF3YWl0IHRoaXMucnBjQmF0Y2hTdWJzY3JpYmUoZSksdGhpcy5vbkJhdGNoU3Vic2NyaWJlKGF3YWl0IFByb21pc2UuYWxsKGUubWFwKGFzeW5jIHI9Pm4zKFdwKHt9LHIpLHtpZDphd2FpdCB0aGlzLmdldFN1YnNjcmlwdGlvbklkKHIudG9waWMpfSkpKSkpfWFzeW5jIGJhdGNoRmV0Y2hNZXNzYWdlcyhlKXtpZighZS5sZW5ndGgpcmV0dXJuO3RoaXMubG9nZ2VyLnRyYWNlKGBGZXRjaGluZyBiYXRjaCBtZXNzYWdlcyBmb3IgJHtlLmxlbmd0aH0gc3Vic2NyaXB0aW9uc2ApO2NvbnN0IHI9YXdhaXQgdGhpcy5ycGNCYXRjaEZldGNoTWVzc2FnZXMoZSk7ciYmci5tZXNzYWdlcyYmKGF3YWl0IGVyZShQZS50b01pbGlzZWNvbmRzKFBlLk9ORV9TRUNPTkQpKSxhd2FpdCB0aGlzLnJlbGF5ZXIuaGFuZGxlQmF0Y2hNZXNzYWdlRXZlbnRzKHIubWVzc2FnZXMpKX1hc3luYyBvbkNvbm5lY3QoKXthd2FpdCB0aGlzLnJlc3RhcnQoKSx0aGlzLnJlc2V0KCl9b25EaXNjb25uZWN0KCl7dGhpcy5vbkRpc2FibGUoKX1pc0luaXRpYWxpemVkKCl7aWYoIXRoaXMuaW5pdGlhbGl6ZWQpe2NvbnN0e21lc3NhZ2U6ZX09T2UoIk5PVF9JTklUSUFMSVpFRCIsdGhpcy5uYW1lKTt0aHJvdyBuZXcgRXJyb3IoZSl9fWFzeW5jIHJlc3RhcnRUb0NvbXBsZXRlKGUpeyF0aGlzLnJlbGF5ZXIuY29ubmVjdGVkJiYhdGhpcy5yZWxheWVyLmNvbm5lY3RpbmcmJih0aGlzLmNhY2hlZC5wdXNoKGUpLGF3YWl0IHRoaXMucmVsYXllci50cmFuc3BvcnRPcGVuKCkpfWFzeW5jIGdldENsaWVudElkKCl7cmV0dXJuIHRoaXMuY2xpZW50SWR8fCh0aGlzLmNsaWVudElkPWF3YWl0IHRoaXMucmVsYXllci5jb3JlLmNyeXB0by5nZXRDbGllbnRJZCgpKSx0aGlzLmNsaWVudElkfWFzeW5jIGdldFN1YnNjcmlwdGlvbklkKGUpe3JldHVybiBmbyhlK2F3YWl0IHRoaXMuZ2V0Q2xpZW50SWQoKSl9fXZhciBJY2U9T2JqZWN0LmRlZmluZVByb3BlcnR5LFlrPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsUmNlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksTmNlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsJHg9KHQsZSxyKT0+ZSBpbiB0P0ljZSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsSms9KHQsZSk9Pntmb3IodmFyIHIgaW4gZXx8KGU9e30pKVJjZS5jYWxsKGUscikmJiR4KHQscixlW3JdKTtpZihZaylmb3IodmFyIHIgb2YgWWsoZSkpTmNlLmNhbGwoZSxyKSYmJHgodCxyLGVbcl0pO3JldHVybiB0fSxNdD0odCxlLHIpPT4keCh0LHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUscik7Y2xhc3MgUGNlIGV4dGVuZHMgQlp7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksTXQodGhpcywicHJvdG9jb2wiLCJ3YyIpLE10KHRoaXMsInZlcnNpb24iLDIpLE10KHRoaXMsImNvcmUiKSxNdCh0aGlzLCJsb2dnZXIiKSxNdCh0aGlzLCJldmVudHMiLG5ldyBvcy5FdmVudEVtaXR0ZXIpLE10KHRoaXMsInByb3ZpZGVyIiksTXQodGhpcywibWVzc2FnZXMiKSxNdCh0aGlzLCJzdWJzY3JpYmVyIiksTXQodGhpcywicHVibGlzaGVyIiksTXQodGhpcywibmFtZSIsY29lKSxNdCh0aGlzLCJ0cmFuc3BvcnRFeHBsaWNpdGx5Q2xvc2VkIiwhMSksTXQodGhpcywiaW5pdGlhbGl6ZWQiLCExKSxNdCh0aGlzLCJjb25uZWN0aW9uQXR0ZW1wdEluUHJvZ3Jlc3MiLCExKSxNdCh0aGlzLCJyZWxheVVybCIpLE10KHRoaXMsInByb2plY3RJZCIpLE10KHRoaXMsInBhY2thZ2VOYW1lIiksTXQodGhpcywiYnVuZGxlSWQiKSxNdCh0aGlzLCJoYXNFeHBlcmllbmNlZE5ldHdvcmtEaXNydXB0aW9uIiwhMSksTXQodGhpcywicGluZ1RpbWVvdXQiKSxNdCh0aGlzLCJoZWFydEJlYXRUaW1lb3V0IixQZS50b01pbGlzZWNvbmRzKFBlLlRISVJUWV9TRUNPTkRTK1BlLkZJVkVfU0VDT05EUykpLE10KHRoaXMsInJlY29ubmVjdFRpbWVvdXQiKSxNdCh0aGlzLCJjb25uZWN0UHJvbWlzZSIpLE10KHRoaXMsInJlY29ubmVjdEluUHJvZ3Jlc3MiLCExKSxNdCh0aGlzLCJyZXF1ZXN0c0luRmxpZ2h0IixbXSksTXQodGhpcywiY29ubmVjdFRpbWVvdXQiLFBlLnRvTWlsaXNlY29uZHMoUGUuT05FX1NFQ09ORCoxNSkpLE10KHRoaXMsInJlcXVlc3QiLGFzeW5jIHI9Pnt2YXIgbixzO3RoaXMubG9nZ2VyLmRlYnVnKCJQdWJsaXNoaW5nIFJlcXVlc3QgUGF5bG9hZCIpO2NvbnN0IGk9ci5pZHx8ZXUoKS50b1N0cmluZygpO2F3YWl0IHRoaXMudG9Fc3RhYmxpc2hDb25uZWN0aW9uKCk7dHJ5e3RoaXMubG9nZ2VyLnRyYWNlKHtpZDppLG1ldGhvZDpyLm1ldGhvZCx0b3BpYzoobj1yLnBhcmFtcyk9PW51bGw/dm9pZCAwOm4udG9waWN9LCJyZWxheWVyLnJlcXVlc3QgLSBwdWJsaXNoaW5nLi4uIik7Y29uc3Qgbz1gJHtpfTokeygocz1yLnBhcmFtcyk9PW51bGw/dm9pZCAwOnMudGFnKXx8IiJ9YDt0aGlzLnJlcXVlc3RzSW5GbGlnaHQucHVzaChvKTtjb25zdCBhPWF3YWl0IHRoaXMucHJvdmlkZXIucmVxdWVzdChyKTtyZXR1cm4gdGhpcy5yZXF1ZXN0c0luRmxpZ2h0PXRoaXMucmVxdWVzdHNJbkZsaWdodC5maWx0ZXIoYz0+YyE9PW8pLGF9Y2F0Y2gobyl7dGhyb3cgdGhpcy5sb2dnZXIuZGVidWcoYEZhaWxlZCB0byBQdWJsaXNoIFJlcXVlc3Q6ICR7aX1gKSxvfX0pLE10KHRoaXMsInJlc2V0UGluZ1RpbWVvdXQiLCgpPT57bWIoKSYmKGNsZWFyVGltZW91dCh0aGlzLnBpbmdUaW1lb3V0KSx0aGlzLnBpbmdUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pnt2YXIgcixuLHMsaTt0cnl7dGhpcy5sb2dnZXIuZGVidWcoe30sInBpbmdUaW1lb3V0OiBDb25uZWN0aW9uIHN0YWxsZWQsIHRlcm1pbmF0aW5nLi4uIiksKGk9KHM9KG49KHI9dGhpcy5wcm92aWRlcik9PW51bGw/dm9pZCAwOnIuY29ubmVjdGlvbik9PW51bGw/dm9pZCAwOm4uc29ja2V0KT09bnVsbD92b2lkIDA6cy50ZXJtaW5hdGUpPT1udWxsfHxpLmNhbGwocyl9Y2F0Y2gobyl7dGhpcy5sb2dnZXIud2FybihvLG8/Lm1lc3NhZ2UpfX0sdGhpcy5oZWFydEJlYXRUaW1lb3V0KSl9KSxNdCh0aGlzLCJvblBheWxvYWRIYW5kbGVyIixyPT57dGhpcy5vblByb3ZpZGVyUGF5bG9hZChyKSx0aGlzLnJlc2V0UGluZ1RpbWVvdXQoKX0pLE10KHRoaXMsIm9uQ29ubmVjdEhhbmRsZXIiLCgpPT57dGhpcy5sb2dnZXIud2Fybih7fSwiUmVsYXllciBjb25uZWN0ZWQg8J+bnCIpLHRoaXMuc3RhcnRQaW5nVGltZW91dCgpLHRoaXMuZXZlbnRzLmVtaXQoYW4uY29ubmVjdCl9KSxNdCh0aGlzLCJvbkRpc2Nvbm5lY3RIYW5kbGVyIiwoKT0+e3RoaXMubG9nZ2VyLndhcm4oe30sIlJlbGF5ZXIgZGlzY29ubmVjdGVkIPCfm5EiKSx0aGlzLnJlcXVlc3RzSW5GbGlnaHQ9W10sdGhpcy5vblByb3ZpZGVyRGlzY29ubmVjdCgpfSksTXQodGhpcywib25Qcm92aWRlckVycm9ySGFuZGxlciIscj0+e3RoaXMubG9nZ2VyLmZhdGFsKGBGYXRhbCBzb2NrZXQgZXJyb3I6ICR7ci5tZXNzYWdlfWApLHRoaXMuZXZlbnRzLmVtaXQoYW4uZXJyb3IsciksdGhpcy5sb2dnZXIuZmF0YWwoIkZhdGFsIHNvY2tldCBlcnJvciByZWNlaXZlZCwgY2xvc2luZyB0cmFuc3BvcnQiKSx0aGlzLnRyYW5zcG9ydENsb3NlKCl9KSxNdCh0aGlzLCJyZWdpc3RlclByb3ZpZGVyTGlzdGVuZXJzIiwoKT0+e3RoaXMucHJvdmlkZXIub24oamkucGF5bG9hZCx0aGlzLm9uUGF5bG9hZEhhbmRsZXIpLHRoaXMucHJvdmlkZXIub24oamkuY29ubmVjdCx0aGlzLm9uQ29ubmVjdEhhbmRsZXIpLHRoaXMucHJvdmlkZXIub24oamkuZGlzY29ubmVjdCx0aGlzLm9uRGlzY29ubmVjdEhhbmRsZXIpLHRoaXMucHJvdmlkZXIub24oamkuZXJyb3IsdGhpcy5vblByb3ZpZGVyRXJyb3JIYW5kbGVyKX0pLHRoaXMuY29yZT1lLmNvcmUsdGhpcy5sb2dnZXI9dHlwZW9mIGUubG9nZ2VyPCJ1IiYmdHlwZW9mIGUubG9nZ2VyIT0ic3RyaW5nIj9ObihlLmxvZ2dlcix0aGlzLm5hbWUpOnUxKGxwKHtsZXZlbDplLmxvZ2dlcnx8YW9lfSkpLHRoaXMubWVzc2FnZXM9bmV3IHBjZSh0aGlzLmxvZ2dlcixlLmNvcmUpLHRoaXMuc3Vic2NyaWJlcj1uZXcgVGNlKHRoaXMsdGhpcy5sb2dnZXIpLHRoaXMucHVibGlzaGVyPW5ldyB5Y2UodGhpcyx0aGlzLmxvZ2dlciksdGhpcy5yZWxheVVybD1lPy5yZWxheVVybHx8VkQsdGhpcy5wcm9qZWN0SWQ9ZS5wcm9qZWN0SWQsTHRlKCk/dGhpcy5wYWNrYWdlTmFtZT1IOSgpOlV0ZSgpJiYodGhpcy5idW5kbGVJZD1IOSgpKSx0aGlzLnByb3ZpZGVyPXt9fWFzeW5jIGluaXQoKXtpZih0aGlzLmxvZ2dlci50cmFjZSgiSW5pdGlhbGl6ZWQiKSx0aGlzLnJlZ2lzdGVyRXZlbnRMaXN0ZW5lcnMoKSxhd2FpdCBQcm9taXNlLmFsbChbdGhpcy5tZXNzYWdlcy5pbml0KCksdGhpcy5zdWJzY3JpYmVyLmluaXQoKV0pLHRoaXMuaW5pdGlhbGl6ZWQ9ITAsdGhpcy5zdWJzY3JpYmVyLmhhc0FueVRvcGljcyl0cnl7YXdhaXQgdGhpcy50cmFuc3BvcnRPcGVuKCl9Y2F0Y2goZSl7dGhpcy5sb2dnZXIud2FybihlLGU/Lm1lc3NhZ2UpfX1nZXQgY29udGV4dCgpe3JldHVybiBwaSh0aGlzLmxvZ2dlcil9Z2V0IGNvbm5lY3RlZCgpe3ZhciBlLHIsbjtyZXR1cm4oKG49KHI9KGU9dGhpcy5wcm92aWRlcik9PW51bGw/dm9pZCAwOmUuY29ubmVjdGlvbik9PW51bGw/dm9pZCAwOnIuc29ja2V0KT09bnVsbD92b2lkIDA6bi5yZWFkeVN0YXRlKT09PTF8fCExfWdldCBjb25uZWN0aW5nKCl7dmFyIGUscixuO3JldHVybigobj0ocj0oZT10aGlzLnByb3ZpZGVyKT09bnVsbD92b2lkIDA6ZS5jb25uZWN0aW9uKT09bnVsbD92b2lkIDA6ci5zb2NrZXQpPT1udWxsP3ZvaWQgMDpuLnJlYWR5U3RhdGUpPT09MHx8dGhpcy5jb25uZWN0UHJvbWlzZSE9PXZvaWQgMHx8ITF9YXN5bmMgcHVibGlzaChlLHIsbil7dGhpcy5pc0luaXRpYWxpemVkKCksYXdhaXQgdGhpcy5wdWJsaXNoZXIucHVibGlzaChlLHIsbiksYXdhaXQgdGhpcy5yZWNvcmRNZXNzYWdlRXZlbnQoe3RvcGljOmUsbWVzc2FnZTpyLHB1Ymxpc2hlZEF0OkRhdGUubm93KCksdHJhbnNwb3J0VHlwZTpjci5yZWxheX0sV3cub3V0Ym91bmQpfWFzeW5jIHN1YnNjcmliZShlLHIpe3ZhciBuLHMsaTt0aGlzLmlzSW5pdGlhbGl6ZWQoKSwoIShyIT1udWxsJiZyLnRyYW5zcG9ydFR5cGUpfHxyPy50cmFuc3BvcnRUeXBlPT09InJlbGF5IikmJmF3YWl0IHRoaXMudG9Fc3RhYmxpc2hDb25uZWN0aW9uKCk7Y29uc3Qgbz10eXBlb2YoKG49cj8uaW50ZXJuYWwpPT1udWxsP3ZvaWQgMDpuLnRocm93T25GYWlsZWRQdWJsaXNoKT4idSI/ITA6KHM9cj8uaW50ZXJuYWwpPT1udWxsP3ZvaWQgMDpzLnRocm93T25GYWlsZWRQdWJsaXNoO2xldCBhPSgoaT10aGlzLnN1YnNjcmliZXIudG9waWNNYXAuZ2V0KGUpKT09bnVsbD92b2lkIDA6aVswXSl8fCIiLGM7Y29uc3QgbD1kPT57ZC50b3BpYz09PWUmJih0aGlzLnN1YnNjcmliZXIub2ZmKHlpLmNyZWF0ZWQsbCksYygpKX07cmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKFtuZXcgUHJvbWlzZShkPT57Yz1kLHRoaXMuc3Vic2NyaWJlci5vbih5aS5jcmVhdGVkLGwpfSksbmV3IFByb21pc2UoYXN5bmMoZCx1KT0+e2E9YXdhaXQgdGhpcy5zdWJzY3JpYmVyLnN1YnNjcmliZShlLEprKHtpbnRlcm5hbDp7dGhyb3dPbkZhaWxlZFB1Ymxpc2g6b319LHIpKS5jYXRjaChoPT57byYmdShoKX0pfHxhLGQoKX0pXSksYX1hc3luYyB1bnN1YnNjcmliZShlLHIpe3RoaXMuaXNJbml0aWFsaXplZCgpLGF3YWl0IHRoaXMuc3Vic2NyaWJlci51bnN1YnNjcmliZShlLHIpfW9uKGUscil7dGhpcy5ldmVudHMub24oZSxyKX1vbmNlKGUscil7dGhpcy5ldmVudHMub25jZShlLHIpfW9mZihlLHIpe3RoaXMuZXZlbnRzLm9mZihlLHIpfXJlbW92ZUxpc3RlbmVyKGUscil7dGhpcy5ldmVudHMucmVtb3ZlTGlzdGVuZXIoZSxyKX1hc3luYyB0cmFuc3BvcnREaXNjb25uZWN0KCl7dGhpcy5wcm92aWRlci5kaXNjb25uZWN0JiYodGhpcy5oYXNFeHBlcmllbmNlZE5ldHdvcmtEaXNydXB0aW9ufHx0aGlzLmNvbm5lY3RlZCk/YXdhaXQgY2ModGhpcy5wcm92aWRlci5kaXNjb25uZWN0KCksMmUzLCJwcm92aWRlci5kaXNjb25uZWN0KCkiKS5jYXRjaCgoKT0+dGhpcy5vblByb3ZpZGVyRGlzY29ubmVjdCgpKTp0aGlzLm9uUHJvdmlkZXJEaXNjb25uZWN0KCl9YXN5bmMgdHJhbnNwb3J0Q2xvc2UoKXt0aGlzLnRyYW5zcG9ydEV4cGxpY2l0bHlDbG9zZWQ9ITAsYXdhaXQgdGhpcy50cmFuc3BvcnREaXNjb25uZWN0KCl9YXN5bmMgdHJhbnNwb3J0T3BlbihlKXtpZighdGhpcy5zdWJzY3JpYmVyLmhhc0FueVRvcGljcyl7dGhpcy5sb2dnZXIud2FybigiU3RhcnRpbmcgV1MgY29ubmVjdGlvbiBza2lwcGVkIGJlY2F1c2UgdGhlIGNsaWVudCBoYXMgbm8gdG9waWNzIHRvIHdvcmsgd2l0aC4iKTtyZXR1cm59aWYodGhpcy5jb25uZWN0UHJvbWlzZT8odGhpcy5sb2dnZXIuZGVidWcoe30sIldhaXRpbmcgZm9yIGV4aXN0aW5nIGNvbm5lY3Rpb24gYXR0ZW1wdCB0byByZXNvbHZlLi4uIiksYXdhaXQgdGhpcy5jb25uZWN0UHJvbWlzZSx0aGlzLmxvZ2dlci5kZWJ1Zyh7fSwiRXhpc3RpbmcgY29ubmVjdGlvbiBhdHRlbXB0IHJlc29sdmVkIikpOih0aGlzLmNvbm5lY3RQcm9taXNlPW5ldyBQcm9taXNlKGFzeW5jKHIsbik9Pnthd2FpdCB0aGlzLmNvbm5lY3QoZSkudGhlbihyKS5jYXRjaChuKS5maW5hbGx5KCgpPT57dGhpcy5jb25uZWN0UHJvbWlzZT12b2lkIDB9KX0pLGF3YWl0IHRoaXMuY29ubmVjdFByb21pc2UpLCF0aGlzLmNvbm5lY3RlZCl0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGVzdGFibGlzaCBzb2NrZXQgY29ubmVjdGlvbiB0byB0aGUgcmVsYXkgc2VydmVyOiAke3RoaXMucmVsYXlVcmx9YCl9YXN5bmMgcmVzdGFydFRyYW5zcG9ydChlKXt0aGlzLmxvZ2dlci5kZWJ1Zyh7fSwiUmVzdGFydGluZyB0cmFuc3BvcnQuLi4iKSwhdGhpcy5jb25uZWN0aW9uQXR0ZW1wdEluUHJvZ3Jlc3MmJih0aGlzLnJlbGF5VXJsPWV8fHRoaXMucmVsYXlVcmwsYXdhaXQgdGhpcy5jb25maXJtT25saW5lU3RhdGVPclRocm93KCksYXdhaXQgdGhpcy50cmFuc3BvcnRDbG9zZSgpLGF3YWl0IHRoaXMudHJhbnNwb3J0T3BlbigpKX1hc3luYyBjb25maXJtT25saW5lU3RhdGVPclRocm93KCl7aWYoIWF3YWl0IElrKCkpdGhyb3cgbmV3IEVycm9yKCJObyBpbnRlcm5ldCBjb25uZWN0aW9uIGRldGVjdGVkLiBQbGVhc2UgcmVzdGFydCB5b3VyIG5ldHdvcmsgYW5kIHRyeSBhZ2Fpbi4iKX1hc3luYyBoYW5kbGVCYXRjaE1lc3NhZ2VFdmVudHMoZSl7aWYoZT8ubGVuZ3RoPT09MCl7dGhpcy5sb2dnZXIudHJhY2UoIkJhdGNoIG1lc3NhZ2UgZXZlbnRzIGlzIGVtcHR5LiBJZ25vcmluZy4uLiIpO3JldHVybn1jb25zdCByPWUuc29ydCgobixzKT0+bi5wdWJsaXNoZWRBdC1zLnB1Ymxpc2hlZEF0KTt0aGlzLmxvZ2dlci5kZWJ1ZyhgQmF0Y2ggb2YgJHtyLmxlbmd0aH0gbWVzc2FnZSBldmVudHMgc29ydGVkYCk7Zm9yKGNvbnN0IG4gb2Ygcil0cnl7YXdhaXQgdGhpcy5vbk1lc3NhZ2VFdmVudChuKX1jYXRjaChzKXt0aGlzLmxvZ2dlci53YXJuKHMsIkVycm9yIHdoaWxlIHByb2Nlc3NpbmcgYmF0Y2ggbWVzc2FnZSBldmVudDogIitzPy5tZXNzYWdlKX10aGlzLmxvZ2dlci50cmFjZShgQmF0Y2ggb2YgJHtyLmxlbmd0aH0gbWVzc2FnZSBldmVudHMgcHJvY2Vzc2VkYCl9YXN5bmMgb25MaW5rTWVzc2FnZUV2ZW50KGUscil7Y29uc3R7dG9waWM6bn09ZTtpZighci5zZXNzaW9uRXhpc3RzKXtjb25zdCBzPVlyKFBlLkZJVkVfTUlOVVRFUyksaT17dG9waWM6bixleHBpcnk6cyxyZWxheTp7cHJvdG9jb2w6ImlybiJ9LGFjdGl2ZTohMX07YXdhaXQgdGhpcy5jb3JlLnBhaXJpbmcucGFpcmluZ3Muc2V0KG4saSl9dGhpcy5ldmVudHMuZW1pdChhbi5tZXNzYWdlLGUpLGF3YWl0IHRoaXMucmVjb3JkTWVzc2FnZUV2ZW50KGUsV3cuaW5ib3VuZCl9YXN5bmMgY29ubmVjdChlKXthd2FpdCB0aGlzLmNvbmZpcm1PbmxpbmVTdGF0ZU9yVGhyb3coKSxlJiZlIT09dGhpcy5yZWxheVVybCYmKHRoaXMucmVsYXlVcmw9ZSxhd2FpdCB0aGlzLnRyYW5zcG9ydERpc2Nvbm5lY3QoKSksdGhpcy5jb25uZWN0aW9uQXR0ZW1wdEluUHJvZ3Jlc3M9ITAsdGhpcy50cmFuc3BvcnRFeHBsaWNpdGx5Q2xvc2VkPSExO2xldCByPTE7Zm9yKDtyPDY7KXt0cnl7aWYodGhpcy50cmFuc3BvcnRFeHBsaWNpdGx5Q2xvc2VkKWJyZWFrO3RoaXMubG9nZ2VyLmRlYnVnKHt9LGBDb25uZWN0aW5nIHRvICR7dGhpcy5yZWxheVVybH0sIGF0dGVtcHQ6ICR7cn0uLi5gKSxhd2FpdCB0aGlzLmNyZWF0ZVByb3ZpZGVyKCksYXdhaXQgbmV3IFByb21pc2UoYXN5bmMobixzKT0+e2NvbnN0IGk9KCk9PntzKG5ldyBFcnJvcigiQ29ubmVjdGlvbiBpbnRlcnJ1cHRlZCB3aGlsZSB0cnlpbmcgdG8gc3Vic2NyaWJlIikpfTt0aGlzLnByb3ZpZGVyLm9uY2UoamkuZGlzY29ubmVjdCxpKSxhd2FpdCBjYyhuZXcgUHJvbWlzZSgobyxhKT0+e3RoaXMucHJvdmlkZXIuY29ubmVjdCgpLnRoZW4obykuY2F0Y2goYSl9KSx0aGlzLmNvbm5lY3RUaW1lb3V0LGBTb2NrZXQgc3RhbGxlZCB3aGVuIHRyeWluZyB0byBjb25uZWN0IHRvICR7dGhpcy5yZWxheVVybH1gKS5jYXRjaChvPT57cyhvKX0pLmZpbmFsbHkoKCk9Pnt0aGlzLnByb3ZpZGVyLm9mZihqaS5kaXNjb25uZWN0LGkpLGNsZWFyVGltZW91dCh0aGlzLnJlY29ubmVjdFRpbWVvdXQpfSksYXdhaXQgbmV3IFByb21pc2UoYXN5bmMobyxhKT0+e2NvbnN0IGM9KCk9PnthKG5ldyBFcnJvcigiQ29ubmVjdGlvbiBpbnRlcnJ1cHRlZCB3aGlsZSB0cnlpbmcgdG8gc3Vic2NyaWJlIikpfTt0aGlzLnByb3ZpZGVyLm9uY2UoamkuZGlzY29ubmVjdCxjKSxhd2FpdCB0aGlzLnN1YnNjcmliZXIuc3RhcnQoKS50aGVuKG8pLmNhdGNoKGEpLmZpbmFsbHkoKCk9Pnt0aGlzLnByb3ZpZGVyLm9mZihqaS5kaXNjb25uZWN0LGMpfSl9KSx0aGlzLmhhc0V4cGVyaWVuY2VkTmV0d29ya0Rpc3J1cHRpb249ITEsbigpfSl9Y2F0Y2gobil7YXdhaXQgdGhpcy5zdWJzY3JpYmVyLnN0b3AoKTtjb25zdCBzPW47dGhpcy5sb2dnZXIud2Fybih7fSxzLm1lc3NhZ2UpLHRoaXMuaGFzRXhwZXJpZW5jZWROZXR3b3JrRGlzcnVwdGlvbj0hMH1maW5hbGx5e3RoaXMuY29ubmVjdGlvbkF0dGVtcHRJblByb2dyZXNzPSExfWlmKHRoaXMuY29ubmVjdGVkKXt0aGlzLmxvZ2dlci5kZWJ1Zyh7fSxgQ29ubmVjdGVkIHRvICR7dGhpcy5yZWxheVVybH0gc3VjY2Vzc2Z1bGx5IG9uIGF0dGVtcHQ6ICR7cn1gKTticmVha31hd2FpdCBuZXcgUHJvbWlzZShuPT5zZXRUaW1lb3V0KG4sUGUudG9NaWxpc2Vjb25kcyhyKjEpKSkscisrfX1zdGFydFBpbmdUaW1lb3V0KCl7dmFyIGUscixuLHMsaTtpZihtYigpKXRyeXsocj0oZT10aGlzLnByb3ZpZGVyKT09bnVsbD92b2lkIDA6ZS5jb25uZWN0aW9uKSE9bnVsbCYmci5zb2NrZXQmJigoaT0ocz0obj10aGlzLnByb3ZpZGVyKT09bnVsbD92b2lkIDA6bi5jb25uZWN0aW9uKT09bnVsbD92b2lkIDA6cy5zb2NrZXQpPT1udWxsfHxpLm9uKCJwaW5nIiwoKT0+e3RoaXMucmVzZXRQaW5nVGltZW91dCgpfSkpLHRoaXMucmVzZXRQaW5nVGltZW91dCgpfWNhdGNoKG8pe3RoaXMubG9nZ2VyLndhcm4obyxvPy5tZXNzYWdlKX19YXN5bmMgY3JlYXRlUHJvdmlkZXIoKXt0aGlzLnByb3ZpZGVyLmNvbm5lY3Rpb24mJnRoaXMudW5yZWdpc3RlclByb3ZpZGVyTGlzdGVuZXJzKCk7Y29uc3QgZT1hd2FpdCB0aGlzLmNvcmUuY3J5cHRvLnNpZ25KV1QodGhpcy5yZWxheVVybCk7dGhpcy5wcm92aWRlcj1uZXcgYXMobmV3IFlzZShIdGUoe3Nka1ZlcnNpb246VHgscHJvdG9jb2w6dGhpcy5wcm90b2NvbCx2ZXJzaW9uOnRoaXMudmVyc2lvbixyZWxheVVybDp0aGlzLnJlbGF5VXJsLHByb2plY3RJZDp0aGlzLnByb2plY3RJZCxhdXRoOmUsdXNlT25DbG9zZUV2ZW50OiEwLGJ1bmRsZUlkOnRoaXMuYnVuZGxlSWQscGFja2FnZU5hbWU6dGhpcy5wYWNrYWdlTmFtZX0pKSksdGhpcy5yZWdpc3RlclByb3ZpZGVyTGlzdGVuZXJzKCl9YXN5bmMgcmVjb3JkTWVzc2FnZUV2ZW50KGUscil7Y29uc3R7dG9waWM6bixtZXNzYWdlOnN9PWU7YXdhaXQgdGhpcy5tZXNzYWdlcy5zZXQobixzLHIpfWFzeW5jIHNob3VsZElnbm9yZU1lc3NhZ2VFdmVudChlKXtjb25zdHt0b3BpYzpyLG1lc3NhZ2U6bn09ZTtpZighbnx8bi5sZW5ndGg9PT0wKXJldHVybiB0aGlzLmxvZ2dlci53YXJuKGBJZ25vcmluZyBpbnZhbGlkL2VtcHR5IG1lc3NhZ2U6ICR7bn1gKSwhMDtpZighYXdhaXQgdGhpcy5zdWJzY3JpYmVyLmlzS25vd25Ub3BpYyhyKSlyZXR1cm4gdGhpcy5sb2dnZXIud2FybihgSWdub3JpbmcgbWVzc2FnZSBmb3IgdW5rbm93biB0b3BpYyAke3J9YCksITA7Y29uc3Qgcz10aGlzLm1lc3NhZ2VzLmhhcyhyLG4pO3JldHVybiBzJiZ0aGlzLmxvZ2dlci53YXJuKGBJZ25vcmluZyBkdXBsaWNhdGUgbWVzc2FnZTogJHtufWApLHN9YXN5bmMgb25Qcm92aWRlclBheWxvYWQoZSl7aWYodGhpcy5sb2dnZXIuZGVidWcoIkluY29taW5nIFJlbGF5IFBheWxvYWQiKSx0aGlzLmxvZ2dlci50cmFjZSh7dHlwZToicGF5bG9hZCIsZGlyZWN0aW9uOiJpbmNvbWluZyIscGF5bG9hZDplfSkscTYoZSkpe2lmKCFlLm1ldGhvZC5lbmRzV2l0aChsb2UpKXJldHVybjtjb25zdCByPWUucGFyYW1zLHt0b3BpYzpuLG1lc3NhZ2U6cyxwdWJsaXNoZWRBdDppLGF0dGVzdGF0aW9uOm99PXIuZGF0YSxhPXt0b3BpYzpuLG1lc3NhZ2U6cyxwdWJsaXNoZWRBdDppLHRyYW5zcG9ydFR5cGU6Y3IucmVsYXksYXR0ZXN0YXRpb246b307dGhpcy5sb2dnZXIuZGVidWcoIkVtaXR0aW5nIFJlbGF5ZXIgUGF5bG9hZCIpLHRoaXMubG9nZ2VyLnRyYWNlKEprKHt0eXBlOiJldmVudCIsZXZlbnQ6ci5pZH0sYSkpLHRoaXMuZXZlbnRzLmVtaXQoci5pZCxhKSxhd2FpdCB0aGlzLmFja25vd2xlZGdlUGF5bG9hZChlKSxhd2FpdCB0aGlzLm9uTWVzc2FnZUV2ZW50KGEpfWVsc2UgcXkoZSkmJnRoaXMuZXZlbnRzLmVtaXQoYW4ubWVzc2FnZV9hY2ssZSl9YXN5bmMgb25NZXNzYWdlRXZlbnQoZSl7YXdhaXQgdGhpcy5zaG91bGRJZ25vcmVNZXNzYWdlRXZlbnQoZSl8fChhd2FpdCB0aGlzLnJlY29yZE1lc3NhZ2VFdmVudChlLFd3LmluYm91bmQpLHRoaXMuZXZlbnRzLmVtaXQoYW4ubWVzc2FnZSxlKSl9YXN5bmMgYWNrbm93bGVkZ2VQYXlsb2FkKGUpe2NvbnN0IHI9V3koZS5pZCwhMCk7YXdhaXQgdGhpcy5wcm92aWRlci5jb25uZWN0aW9uLnNlbmQocil9dW5yZWdpc3RlclByb3ZpZGVyTGlzdGVuZXJzKCl7dGhpcy5wcm92aWRlci5vZmYoamkucGF5bG9hZCx0aGlzLm9uUGF5bG9hZEhhbmRsZXIpLHRoaXMucHJvdmlkZXIub2ZmKGppLmNvbm5lY3QsdGhpcy5vbkNvbm5lY3RIYW5kbGVyKSx0aGlzLnByb3ZpZGVyLm9mZihqaS5kaXNjb25uZWN0LHRoaXMub25EaXNjb25uZWN0SGFuZGxlciksdGhpcy5wcm92aWRlci5vZmYoamkuZXJyb3IsdGhpcy5vblByb3ZpZGVyRXJyb3JIYW5kbGVyKSxjbGVhclRpbWVvdXQodGhpcy5waW5nVGltZW91dCl9YXN5bmMgcmVnaXN0ZXJFdmVudExpc3RlbmVycygpe2xldCBlPWF3YWl0IElrKCk7aXNlKGFzeW5jIHI9PntlIT09ciYmKGU9cixyP2F3YWl0IHRoaXMudHJhbnNwb3J0T3BlbigpLmNhdGNoKG49PnRoaXMubG9nZ2VyLmVycm9yKG4sbj8ubWVzc2FnZSkpOih0aGlzLmhhc0V4cGVyaWVuY2VkTmV0d29ya0Rpc3J1cHRpb249ITAsYXdhaXQgdGhpcy50cmFuc3BvcnREaXNjb25uZWN0KCksdGhpcy50cmFuc3BvcnRFeHBsaWNpdGx5Q2xvc2VkPSExKSl9KX1hc3luYyBvblByb3ZpZGVyRGlzY29ubmVjdCgpe2NsZWFyVGltZW91dCh0aGlzLnBpbmdUaW1lb3V0KSx0aGlzLmV2ZW50cy5lbWl0KGFuLmRpc2Nvbm5lY3QpLHRoaXMuY29ubmVjdGlvbkF0dGVtcHRJblByb2dyZXNzPSExLCF0aGlzLnJlY29ubmVjdEluUHJvZ3Jlc3MmJih0aGlzLnJlY29ubmVjdEluUHJvZ3Jlc3M9ITAsYXdhaXQgdGhpcy5zdWJzY3JpYmVyLnN0b3AoKSx0aGlzLnN1YnNjcmliZXIuaGFzQW55VG9waWNzJiYodGhpcy50cmFuc3BvcnRFeHBsaWNpdGx5Q2xvc2VkfHwodGhpcy5yZWNvbm5lY3RUaW1lb3V0PXNldFRpbWVvdXQoYXN5bmMoKT0+e2F3YWl0IHRoaXMudHJhbnNwb3J0T3BlbigpLmNhdGNoKGU9PnRoaXMubG9nZ2VyLmVycm9yKGUsZT8ubWVzc2FnZSkpLHRoaXMucmVjb25uZWN0VGltZW91dD12b2lkIDAsdGhpcy5yZWNvbm5lY3RJblByb2dyZXNzPSExfSxQZS50b01pbGlzZWNvbmRzKHVvZSkpKSkpfWlzSW5pdGlhbGl6ZWQoKXtpZighdGhpcy5pbml0aWFsaXplZCl7Y29uc3R7bWVzc2FnZTplfT1PZSgiTk9UX0lOSVRJQUxJWkVEIix0aGlzLm5hbWUpO3Rocm93IG5ldyBFcnJvcihlKX19YXN5bmMgdG9Fc3RhYmxpc2hDb25uZWN0aW9uKCl7aWYoYXdhaXQgdGhpcy5jb25maXJtT25saW5lU3RhdGVPclRocm93KCksIXRoaXMuY29ubmVjdGVkKXtpZih0aGlzLmNvbm5lY3RQcm9taXNlKXthd2FpdCB0aGlzLmNvbm5lY3RQcm9taXNlO3JldHVybn1hd2FpdCB0aGlzLmNvbm5lY3QoKX19fWZ1bmN0aW9uIE9jZSgpe31mdW5jdGlvbiBYayh0KXtpZighdHx8dHlwZW9mIHQhPSJvYmplY3QiKXJldHVybiExO2NvbnN0IGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO3JldHVybiBlPT09bnVsbHx8ZT09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PW51bGw/T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpPT09IltvYmplY3QgT2JqZWN0XSI6ITF9ZnVuY3Rpb24gUWsodCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkuZmlsdGVyKGU9Pk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0LGUpKX1mdW5jdGlvbiBlUyh0KXtyZXR1cm4gdD09bnVsbD90PT09dm9pZCAwPyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9Y29uc3QgJGNlPSJbb2JqZWN0IFJlZ0V4cF0iLE1jZT0iW29iamVjdCBTdHJpbmddIixEY2U9IltvYmplY3QgTnVtYmVyXSIsQmNlPSJbb2JqZWN0IEJvb2xlYW5dIix0Uz0iW29iamVjdCBBcmd1bWVudHNdIixMY2U9IltvYmplY3QgU3ltYm9sXSIsVWNlPSJbb2JqZWN0IERhdGVdIixGY2U9IltvYmplY3QgTWFwXSIsamNlPSJbb2JqZWN0IFNldF0iLHpjZT0iW29iamVjdCBBcnJheV0iLFdjZT0iW29iamVjdCBGdW5jdGlvbl0iLEhjZT0iW29iamVjdCBBcnJheUJ1ZmZlcl0iLGkzPSJbb2JqZWN0IE9iamVjdF0iLHFjZT0iW29iamVjdCBFcnJvcl0iLFZjZT0iW29iamVjdCBEYXRhVmlld10iLEdjZT0iW29iamVjdCBVaW50OEFycmF5XSIsS2NlPSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSIsWmNlPSJbb2JqZWN0IFVpbnQxNkFycmF5XSIsWWNlPSJbb2JqZWN0IFVpbnQzMkFycmF5XSIsSmNlPSJbb2JqZWN0IEJpZ1VpbnQ2NEFycmF5XSIsWGNlPSJbb2JqZWN0IEludDhBcnJheV0iLFFjZT0iW29iamVjdCBJbnQxNkFycmF5XSIsZWxlPSJbb2JqZWN0IEludDMyQXJyYXldIix0bGU9IltvYmplY3QgQmlnSW50NjRBcnJheV0iLHJsZT0iW29iamVjdCBGbG9hdDMyQXJyYXldIixubGU9IltvYmplY3QgRmxvYXQ2NEFycmF5XSI7ZnVuY3Rpb24gaWxlKHQsZSl7cmV0dXJuIHQ9PT1lfHxOdW1iZXIuaXNOYU4odCkmJk51bWJlci5pc05hTihlKX1mdW5jdGlvbiBzbGUodCxlLHIpe3JldHVybiBKZih0LGUsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIpfWZ1bmN0aW9uIEpmKHQsZSxyLG4scyxpLG8pe2NvbnN0IGE9byh0LGUscixuLHMsaSk7aWYoYSE9PXZvaWQgMClyZXR1cm4gYTtpZih0eXBlb2YgdD09dHlwZW9mIGUpc3dpdGNoKHR5cGVvZiB0KXtjYXNlImJpZ2ludCI6Y2FzZSJzdHJpbmciOmNhc2UiYm9vbGVhbiI6Y2FzZSJzeW1ib2wiOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4gdD09PWU7Y2FzZSJudW1iZXIiOnJldHVybiB0PT09ZXx8T2JqZWN0LmlzKHQsZSk7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuIHQ9PT1lO2Nhc2Uib2JqZWN0IjpyZXR1cm4gaTAodCxlLGksbyl9cmV0dXJuIGkwKHQsZSxpLG8pfWZ1bmN0aW9uIGkwKHQsZSxyLG4pe2lmKE9iamVjdC5pcyh0LGUpKXJldHVybiEwO2xldCBzPWVTKHQpLGk9ZVMoZSk7aWYocz09PXRTJiYocz1pMyksaT09PXRTJiYoaT1pMykscyE9PWkpcmV0dXJuITE7c3dpdGNoKHMpe2Nhc2UgTWNlOnJldHVybiB0LnRvU3RyaW5nKCk9PT1lLnRvU3RyaW5nKCk7Y2FzZSBEY2U6e2NvbnN0IGM9dC52YWx1ZU9mKCksbD1lLnZhbHVlT2YoKTtyZXR1cm4gaWxlKGMsbCl9Y2FzZSBCY2U6Y2FzZSBVY2U6Y2FzZSBMY2U6cmV0dXJuIE9iamVjdC5pcyh0LnZhbHVlT2YoKSxlLnZhbHVlT2YoKSk7Y2FzZSAkY2U6cmV0dXJuIHQuc291cmNlPT09ZS5zb3VyY2UmJnQuZmxhZ3M9PT1lLmZsYWdzO2Nhc2UgV2NlOnJldHVybiB0PT09ZX1yPXI/P25ldyBNYXA7Y29uc3Qgbz1yLmdldCh0KSxhPXIuZ2V0KGUpO2lmKG8hPW51bGwmJmEhPW51bGwpcmV0dXJuIG89PT1lO3Iuc2V0KHQsZSksci5zZXQoZSx0KTt0cnl7c3dpdGNoKHMpe2Nhc2UgRmNlOntpZih0LnNpemUhPT1lLnNpemUpcmV0dXJuITE7Zm9yKGNvbnN0W2MsbF1vZiB0LmVudHJpZXMoKSlpZighZS5oYXMoYyl8fCFKZihsLGUuZ2V0KGMpLGMsdCxlLHIsbikpcmV0dXJuITE7cmV0dXJuITB9Y2FzZSBqY2U6e2lmKHQuc2l6ZSE9PWUuc2l6ZSlyZXR1cm4hMTtjb25zdCBjPUFycmF5LmZyb20odC52YWx1ZXMoKSksbD1BcnJheS5mcm9tKGUudmFsdWVzKCkpO2ZvcihsZXQgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXtjb25zdCB1PWNbZF0saD1sLmZpbmRJbmRleChwPT5KZih1LHAsdm9pZCAwLHQsZSxyLG4pKTtpZihoPT09LTEpcmV0dXJuITE7bC5zcGxpY2UoaCwxKX1yZXR1cm4hMH1jYXNlIHpjZTpjYXNlIEdjZTpjYXNlIEtjZTpjYXNlIFpjZTpjYXNlIFljZTpjYXNlIEpjZTpjYXNlIFhjZTpjYXNlIFFjZTpjYXNlIGVsZTpjYXNlIHRsZTpjYXNlIHJsZTpjYXNlIG5sZTp7aWYodHlwZW9mIEJ1ZmZlcjwidSImJkJ1ZmZlci5pc0J1ZmZlcih0KSE9PUJ1ZmZlci5pc0J1ZmZlcihlKXx8dC5sZW5ndGghPT1lLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGM9MDtjPHQubGVuZ3RoO2MrKylpZighSmYodFtjXSxlW2NdLGMsdCxlLHIsbikpcmV0dXJuITE7cmV0dXJuITB9Y2FzZSBIY2U6cmV0dXJuIHQuYnl0ZUxlbmd0aCE9PWUuYnl0ZUxlbmd0aD8hMTppMChuZXcgVWludDhBcnJheSh0KSxuZXcgVWludDhBcnJheShlKSxyLG4pO2Nhc2UgVmNlOnJldHVybiB0LmJ5dGVMZW5ndGghPT1lLmJ5dGVMZW5ndGh8fHQuYnl0ZU9mZnNldCE9PWUuYnl0ZU9mZnNldD8hMTppMChuZXcgVWludDhBcnJheSh0KSxuZXcgVWludDhBcnJheShlKSxyLG4pO2Nhc2UgcWNlOnJldHVybiB0Lm5hbWU9PT1lLm5hbWUmJnQubWVzc2FnZT09PWUubWVzc2FnZTtjYXNlIGkzOntpZighKGkwKHQuY29uc3RydWN0b3IsZS5jb25zdHJ1Y3RvcixyLG4pfHxYayh0KSYmWGsoZSkpKXJldHVybiExO2NvbnN0IGM9Wy4uLk9iamVjdC5rZXlzKHQpLC4uLlFrKHQpXSxsPVsuLi5PYmplY3Qua2V5cyhlKSwuLi5RayhlKV07aWYoYy5sZW5ndGghPT1sLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGQ9MDtkPGMubGVuZ3RoO2QrKyl7Y29uc3QgdT1jW2RdLGg9dFt1XTtpZighT2JqZWN0Lmhhc093bihlLHUpKXJldHVybiExO2NvbnN0IHA9ZVt1XTtpZighSmYoaCxwLHUsdCxlLHIsbikpcmV0dXJuITF9cmV0dXJuITB9ZGVmYXVsdDpyZXR1cm4hMX19ZmluYWxseXtyLmRlbGV0ZSh0KSxyLmRlbGV0ZShlKX19ZnVuY3Rpb24gb2xlKHQsZSl7cmV0dXJuIHNsZSh0LGUsT2NlKX12YXIgYWxlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxyUz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGNsZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGxsZT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLE14PSh0LGUscik9PmUgaW4gdD9hbGUodCxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpyfSk6dFtlXT1yLG5TPSh0LGUpPT57Zm9yKHZhciByIGluIGV8fChlPXt9KSljbGUuY2FsbChlLHIpJiZNeCh0LHIsZVtyXSk7aWYoclMpZm9yKHZhciByIG9mIHJTKGUpKWxsZS5jYWxsKGUscikmJk14KHQscixlW3JdKTtyZXR1cm4gdH0sWm49KHQsZSxyKT0+TXgodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIFF1IGV4dGVuZHMgTFp7Y29uc3RydWN0b3IoZSxyLG4scz1DbyxpPXZvaWQgMCl7c3VwZXIoZSxyLG4scyksdGhpcy5jb3JlPWUsdGhpcy5sb2dnZXI9cix0aGlzLm5hbWU9bixabih0aGlzLCJtYXAiLG5ldyBNYXApLFpuKHRoaXMsInZlcnNpb24iLGRvZSksWm4odGhpcywiY2FjaGVkIixbXSksWm4odGhpcywiaW5pdGlhbGl6ZWQiLCExKSxabih0aGlzLCJnZXRLZXkiKSxabih0aGlzLCJzdG9yYWdlUHJlZml4IixDbyksWm4odGhpcywicmVjZW50bHlEZWxldGVkIixbXSksWm4odGhpcywicmVjZW50bHlEZWxldGVkTGltaXQiLDIwMCksWm4odGhpcywiaW5pdCIsYXN5bmMoKT0+e3RoaXMuaW5pdGlhbGl6ZWR8fCh0aGlzLmxvZ2dlci50cmFjZSgiSW5pdGlhbGl6ZWQiKSxhd2FpdCB0aGlzLnJlc3RvcmUoKSx0aGlzLmNhY2hlZC5mb3JFYWNoKG89Pnt0aGlzLmdldEtleSYmbyE9PW51bGwmJiFFbihvKT90aGlzLm1hcC5zZXQodGhpcy5nZXRLZXkobyksbyk6TWllKG8pP3RoaXMubWFwLnNldChvLmlkLG8pOkRpZShvKSYmdGhpcy5tYXAuc2V0KG8udG9waWMsbyl9KSx0aGlzLmNhY2hlZD1bXSx0aGlzLmluaXRpYWxpemVkPSEwKX0pLFpuKHRoaXMsInNldCIsYXN5bmMobyxhKT0+e3RoaXMuaXNJbml0aWFsaXplZCgpLHRoaXMubWFwLmhhcyhvKT9hd2FpdCB0aGlzLnVwZGF0ZShvLGEpOih0aGlzLmxvZ2dlci5kZWJ1ZygiU2V0dGluZyB2YWx1ZSIpLHRoaXMubG9nZ2VyLnRyYWNlKHt0eXBlOiJtZXRob2QiLG1ldGhvZDoic2V0IixrZXk6byx2YWx1ZTphfSksdGhpcy5tYXAuc2V0KG8sYSksYXdhaXQgdGhpcy5wZXJzaXN0KCkpfSksWm4odGhpcywiZ2V0IixvPT4odGhpcy5pc0luaXRpYWxpemVkKCksdGhpcy5sb2dnZXIuZGVidWcoIkdldHRpbmcgdmFsdWUiKSx0aGlzLmxvZ2dlci50cmFjZSh7dHlwZToibWV0aG9kIixtZXRob2Q6ImdldCIsa2V5Om99KSx0aGlzLmdldERhdGEobykpKSxabih0aGlzLCJnZXRBbGwiLG89Pih0aGlzLmlzSW5pdGlhbGl6ZWQoKSxvP3RoaXMudmFsdWVzLmZpbHRlcihhPT5PYmplY3Qua2V5cyhvKS5ldmVyeShjPT5vbGUoYVtjXSxvW2NdKSkpOnRoaXMudmFsdWVzKSksWm4odGhpcywidXBkYXRlIixhc3luYyhvLGEpPT57dGhpcy5pc0luaXRpYWxpemVkKCksdGhpcy5sb2dnZXIuZGVidWcoIlVwZGF0aW5nIHZhbHVlIiksdGhpcy5sb2dnZXIudHJhY2Uoe3R5cGU6Im1ldGhvZCIsbWV0aG9kOiJ1cGRhdGUiLGtleTpvLHVwZGF0ZTphfSk7Y29uc3QgYz1uUyhuUyh7fSx0aGlzLmdldERhdGEobykpLGEpO3RoaXMubWFwLnNldChvLGMpLGF3YWl0IHRoaXMucGVyc2lzdCgpfSksWm4odGhpcywiZGVsZXRlIixhc3luYyhvLGEpPT57dGhpcy5pc0luaXRpYWxpemVkKCksdGhpcy5tYXAuaGFzKG8pJiYodGhpcy5sb2dnZXIuZGVidWcoIkRlbGV0aW5nIHZhbHVlIiksdGhpcy5sb2dnZXIudHJhY2Uoe3R5cGU6Im1ldGhvZCIsbWV0aG9kOiJkZWxldGUiLGtleTpvLHJlYXNvbjphfSksdGhpcy5tYXAuZGVsZXRlKG8pLHRoaXMuYWRkVG9SZWNlbnRseURlbGV0ZWQobyksYXdhaXQgdGhpcy5wZXJzaXN0KCkpfSksdGhpcy5sb2dnZXI9Tm4ocix0aGlzLm5hbWUpLHRoaXMuc3RvcmFnZVByZWZpeD1zLHRoaXMuZ2V0S2V5PWl9Z2V0IGNvbnRleHQoKXtyZXR1cm4gcGkodGhpcy5sb2dnZXIpfWdldCBzdG9yYWdlS2V5KCl7cmV0dXJuIHRoaXMuc3RvcmFnZVByZWZpeCt0aGlzLnZlcnNpb24rdGhpcy5jb3JlLmN1c3RvbVN0b3JhZ2VQcmVmaXgrIi8vIit0aGlzLm5hbWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLm1hcC5zaXplfWdldCBrZXlzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5tYXAua2V5cygpKX1nZXQgdmFsdWVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5tYXAudmFsdWVzKCkpfWFkZFRvUmVjZW50bHlEZWxldGVkKGUpe3RoaXMucmVjZW50bHlEZWxldGVkLnB1c2goZSksdGhpcy5yZWNlbnRseURlbGV0ZWQubGVuZ3RoPj10aGlzLnJlY2VudGx5RGVsZXRlZExpbWl0JiZ0aGlzLnJlY2VudGx5RGVsZXRlZC5zcGxpY2UoMCx0aGlzLnJlY2VudGx5RGVsZXRlZExpbWl0LzIpfWFzeW5jIHNldERhdGFTdG9yZShlKXthd2FpdCB0aGlzLmNvcmUuc3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZUtleSxlKX1hc3luYyBnZXREYXRhU3RvcmUoKXtyZXR1cm4gYXdhaXQgdGhpcy5jb3JlLnN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXkpfWdldERhdGEoZSl7Y29uc3Qgcj10aGlzLm1hcC5nZXQoZSk7aWYoIXIpe2lmKHRoaXMucmVjZW50bHlEZWxldGVkLmluY2x1ZGVzKGUpKXtjb25zdHttZXNzYWdlOnN9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGBSZWNvcmQgd2FzIHJlY2VudGx5IGRlbGV0ZWQgLSAke3RoaXMubmFtZX06ICR7ZX1gKTt0aHJvdyB0aGlzLmxvZ2dlci5lcnJvcihzKSxuZXcgRXJyb3Iocyl9Y29uc3R7bWVzc2FnZTpufT1PZSgiTk9fTUFUQ0hJTkdfS0VZIixgJHt0aGlzLm5hbWV9OiAke2V9YCk7dGhyb3cgdGhpcy5sb2dnZXIuZXJyb3IobiksbmV3IEVycm9yKG4pfXJldHVybiByfWFzeW5jIHBlcnNpc3QoKXthd2FpdCB0aGlzLnNldERhdGFTdG9yZSh0aGlzLnZhbHVlcyl9YXN5bmMgcmVzdG9yZSgpe3RyeXtjb25zdCBlPWF3YWl0IHRoaXMuZ2V0RGF0YVN0b3JlKCk7aWYodHlwZW9mIGU+InUifHwhZS5sZW5ndGgpcmV0dXJuO2lmKHRoaXMubWFwLnNpemUpe2NvbnN0e21lc3NhZ2U6cn09T2UoIlJFU1RPUkVfV0lMTF9PVkVSUklERSIsdGhpcy5uYW1lKTt0aHJvdyB0aGlzLmxvZ2dlci5lcnJvcihyKSxuZXcgRXJyb3Iocil9dGhpcy5jYWNoZWQ9ZSx0aGlzLmxvZ2dlci5kZWJ1ZyhgU3VjY2Vzc2Z1bGx5IFJlc3RvcmVkIHZhbHVlIGZvciAke3RoaXMubmFtZX1gKSx0aGlzLmxvZ2dlci50cmFjZSh7dHlwZToibWV0aG9kIixtZXRob2Q6InJlc3RvcmUiLHZhbHVlOnRoaXMudmFsdWVzfSl9Y2F0Y2goZSl7dGhpcy5sb2dnZXIuZGVidWcoYEZhaWxlZCB0byBSZXN0b3JlIHZhbHVlIGZvciAke3RoaXMubmFtZX1gKSx0aGlzLmxvZ2dlci5lcnJvcihlKX19aXNJbml0aWFsaXplZCgpe2lmKCF0aGlzLmluaXRpYWxpemVkKXtjb25zdHttZXNzYWdlOmV9PU9lKCJOT1RfSU5JVElBTElaRUQiLHRoaXMubmFtZSk7dGhyb3cgbmV3IEVycm9yKGUpfX19dmFyIHVsZT1PYmplY3QuZGVmaW5lUHJvcGVydHksZGxlPSh0LGUscik9PmUgaW4gdD91bGUodCxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpyfSk6dFtlXT1yLF90PSh0LGUscik9PmRsZSh0LHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUscik7Y2xhc3MgaGxle2NvbnN0cnVjdG9yKGUscil7dGhpcy5jb3JlPWUsdGhpcy5sb2dnZXI9cixfdCh0aGlzLCJuYW1lIixtb2UpLF90KHRoaXMsInZlcnNpb24iLGdvZSksX3QodGhpcywiZXZlbnRzIixuZXcgeTYpLF90KHRoaXMsInBhaXJpbmdzIiksX3QodGhpcywiaW5pdGlhbGl6ZWQiLCExKSxfdCh0aGlzLCJzdG9yYWdlUHJlZml4IixDbyksX3QodGhpcywiaWdub3JlZFBheWxvYWRUeXBlcyIsW3VhXSksX3QodGhpcywicmVnaXN0ZXJlZE1ldGhvZHMiLFtdKSxfdCh0aGlzLCJpbml0Iixhc3luYygpPT57dGhpcy5pbml0aWFsaXplZHx8KGF3YWl0IHRoaXMucGFpcmluZ3MuaW5pdCgpLGF3YWl0IHRoaXMuY2xlYW51cCgpLHRoaXMucmVnaXN0ZXJSZWxheWVyRXZlbnRzKCksdGhpcy5yZWdpc3RlckV4cGlyZXJFdmVudHMoKSx0aGlzLmluaXRpYWxpemVkPSEwLHRoaXMubG9nZ2VyLnRyYWNlKCJJbml0aWFsaXplZCIpKX0pLF90KHRoaXMsInJlZ2lzdGVyIiwoe21ldGhvZHM6bn0pPT57dGhpcy5pc0luaXRpYWxpemVkKCksdGhpcy5yZWdpc3RlcmVkTWV0aG9kcz1bLi4ubmV3IFNldChbLi4udGhpcy5yZWdpc3RlcmVkTWV0aG9kcywuLi5uXSldfSksX3QodGhpcywiY3JlYXRlIixhc3luYyBuPT57dGhpcy5pc0luaXRpYWxpemVkKCk7Y29uc3Qgcz14eCgpLGk9YXdhaXQgdGhpcy5jb3JlLmNyeXB0by5zZXRTeW1LZXkocyksbz1ZcihQZS5GSVZFX01JTlVURVMpLGE9e3Byb3RvY29sOnFEfSxjPXt0b3BpYzppLGV4cGlyeTpvLHJlbGF5OmEsYWN0aXZlOiExLG1ldGhvZHM6bj8ubWV0aG9kc30sbD14ayh7cHJvdG9jb2w6dGhpcy5jb3JlLnByb3RvY29sLHZlcnNpb246dGhpcy5jb3JlLnZlcnNpb24sdG9waWM6aSxzeW1LZXk6cyxyZWxheTphLGV4cGlyeVRpbWVzdGFtcDpvLG1ldGhvZHM6bj8ubWV0aG9kc30pO3JldHVybiB0aGlzLmV2ZW50cy5lbWl0KFZsLmNyZWF0ZSxjKSx0aGlzLmNvcmUuZXhwaXJlci5zZXQoaSxvKSxhd2FpdCB0aGlzLnBhaXJpbmdzLnNldChpLGMpLGF3YWl0IHRoaXMuY29yZS5yZWxheWVyLnN1YnNjcmliZShpLHt0cmFuc3BvcnRUeXBlOm4/LnRyYW5zcG9ydFR5cGV9KSx7dG9waWM6aSx1cmk6bH19KSxfdCh0aGlzLCJwYWlyIixhc3luYyBuPT57dGhpcy5pc0luaXRpYWxpemVkKCk7Y29uc3Qgcz10aGlzLmNvcmUuZXZlbnRDbGllbnQuY3JlYXRlRXZlbnQoe3Byb3BlcnRpZXM6e3RvcGljOm4/LnVyaSx0cmFjZTpbdW8ucGFpcmluZ19zdGFydGVkXX19KTt0aGlzLmlzVmFsaWRQYWlyKG4scyk7Y29uc3R7dG9waWM6aSxzeW1LZXk6byxyZWxheTphLGV4cGlyeVRpbWVzdGFtcDpjLG1ldGhvZHM6bH09Q2sobi51cmkpO3MucHJvcHMucHJvcGVydGllcy50b3BpYz1pLHMuYWRkVHJhY2UodW8ucGFpcmluZ191cmlfdmFsaWRhdGlvbl9zdWNjZXNzKSxzLmFkZFRyYWNlKHVvLnBhaXJpbmdfdXJpX25vdF9leHBpcmVkKTtsZXQgZDtpZih0aGlzLnBhaXJpbmdzLmtleXMuaW5jbHVkZXMoaSkpe2lmKGQ9dGhpcy5wYWlyaW5ncy5nZXQoaSkscy5hZGRUcmFjZSh1by5leGlzdGluZ19wYWlyaW5nKSxkLmFjdGl2ZSl0aHJvdyBzLnNldEVycm9yKFhvLmFjdGl2ZV9wYWlyaW5nX2FscmVhZHlfZXhpc3RzKSxuZXcgRXJyb3IoYFBhaXJpbmcgYWxyZWFkeSBleGlzdHM6ICR7aX0uIFBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhIG5ldyBjb25uZWN0aW9uIFVSSS5gKTtzLmFkZFRyYWNlKHVvLnBhaXJpbmdfbm90X2V4cGlyZWQpfWNvbnN0IHU9Y3x8WXIoUGUuRklWRV9NSU5VVEVTKSxoPXt0b3BpYzppLHJlbGF5OmEsZXhwaXJ5OnUsYWN0aXZlOiExLG1ldGhvZHM6bH07dGhpcy5jb3JlLmV4cGlyZXIuc2V0KGksdSksYXdhaXQgdGhpcy5wYWlyaW5ncy5zZXQoaSxoKSxzLmFkZFRyYWNlKHVvLnN0b3JlX25ld19wYWlyaW5nKSxuLmFjdGl2YXRlUGFpcmluZyYmYXdhaXQgdGhpcy5hY3RpdmF0ZSh7dG9waWM6aX0pLHRoaXMuZXZlbnRzLmVtaXQoVmwuY3JlYXRlLGgpLHMuYWRkVHJhY2UodW8uZW1pdF9pbmFjdGl2ZV9wYWlyaW5nKSx0aGlzLmNvcmUuY3J5cHRvLmtleWNoYWluLmhhcyhpKXx8YXdhaXQgdGhpcy5jb3JlLmNyeXB0by5zZXRTeW1LZXkobyxpKSxzLmFkZFRyYWNlKHVvLnN1YnNjcmliaW5nX3BhaXJpbmdfdG9waWMpO3RyeXthd2FpdCB0aGlzLmNvcmUucmVsYXllci5jb25maXJtT25saW5lU3RhdGVPclRocm93KCl9Y2F0Y2h7cy5zZXRFcnJvcihYby5ub19pbnRlcm5ldF9jb25uZWN0aW9uKX10cnl7YXdhaXQgdGhpcy5jb3JlLnJlbGF5ZXIuc3Vic2NyaWJlKGkse3JlbGF5OmF9KX1jYXRjaChwKXt0aHJvdyBzLnNldEVycm9yKFhvLnN1YnNjcmliZV9wYWlyaW5nX3RvcGljX2ZhaWx1cmUpLHB9cmV0dXJuIHMuYWRkVHJhY2UodW8uc3Vic2NyaWJlX3BhaXJpbmdfdG9waWNfc3VjY2VzcyksaH0pLF90KHRoaXMsImFjdGl2YXRlIixhc3luYyh7dG9waWM6bn0pPT57dGhpcy5pc0luaXRpYWxpemVkKCk7Y29uc3Qgcz1ZcihQZS5GSVZFX01JTlVURVMpO3RoaXMuY29yZS5leHBpcmVyLnNldChuLHMpLGF3YWl0IHRoaXMucGFpcmluZ3MudXBkYXRlKG4se2FjdGl2ZTohMCxleHBpcnk6c30pfSksX3QodGhpcywicGluZyIsYXN5bmMgbj0+e3RoaXMuaXNJbml0aWFsaXplZCgpLGF3YWl0IHRoaXMuaXNWYWxpZFBpbmcobiksdGhpcy5sb2dnZXIud2FybigicGluZygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLiIpO2NvbnN0e3RvcGljOnN9PW47aWYodGhpcy5wYWlyaW5ncy5rZXlzLmluY2x1ZGVzKHMpKXtjb25zdCBpPWF3YWl0IHRoaXMuc2VuZFJlcXVlc3Qocywid2NfcGFpcmluZ1BpbmciLHt9KSx7ZG9uZTpvLHJlc29sdmU6YSxyZWplY3Q6Y309VWwoKTt0aGlzLmV2ZW50cy5vbmNlKEZ0KCJwYWlyaW5nX3BpbmciLGkpLCh7ZXJyb3I6bH0pPT57bD9jKGwpOmEoKX0pLGF3YWl0IG8oKX19KSxfdCh0aGlzLCJ1cGRhdGVFeHBpcnkiLGFzeW5jKHt0b3BpYzpuLGV4cGlyeTpzfSk9Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKSxhd2FpdCB0aGlzLnBhaXJpbmdzLnVwZGF0ZShuLHtleHBpcnk6c30pfSksX3QodGhpcywidXBkYXRlTWV0YWRhdGEiLGFzeW5jKHt0b3BpYzpuLG1ldGFkYXRhOnN9KT0+e3RoaXMuaXNJbml0aWFsaXplZCgpLGF3YWl0IHRoaXMucGFpcmluZ3MudXBkYXRlKG4se3BlZXJNZXRhZGF0YTpzfSl9KSxfdCh0aGlzLCJnZXRQYWlyaW5ncyIsKCk9Pih0aGlzLmlzSW5pdGlhbGl6ZWQoKSx0aGlzLnBhaXJpbmdzLnZhbHVlcykpLF90KHRoaXMsImRpc2Nvbm5lY3QiLGFzeW5jIG49Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKSxhd2FpdCB0aGlzLmlzVmFsaWREaXNjb25uZWN0KG4pO2NvbnN0e3RvcGljOnN9PW47dGhpcy5wYWlyaW5ncy5rZXlzLmluY2x1ZGVzKHMpJiYoYXdhaXQgdGhpcy5zZW5kUmVxdWVzdChzLCJ3Y19wYWlyaW5nRGVsZXRlIixLdCgiVVNFUl9ESVNDT05ORUNURUQiKSksYXdhaXQgdGhpcy5kZWxldGVQYWlyaW5nKHMpKX0pLF90KHRoaXMsImZvcm1hdFVyaUZyb21QYWlyaW5nIixuPT57dGhpcy5pc0luaXRpYWxpemVkKCk7Y29uc3R7dG9waWM6cyxyZWxheTppLGV4cGlyeTpvLG1ldGhvZHM6YX09bixjPXRoaXMuY29yZS5jcnlwdG8ua2V5Y2hhaW4uZ2V0KHMpO3JldHVybiB4ayh7cHJvdG9jb2w6dGhpcy5jb3JlLnByb3RvY29sLHZlcnNpb246dGhpcy5jb3JlLnZlcnNpb24sdG9waWM6cyxzeW1LZXk6YyxyZWxheTppLGV4cGlyeVRpbWVzdGFtcDpvLG1ldGhvZHM6YX0pfSksX3QodGhpcywic2VuZFJlcXVlc3QiLGFzeW5jKG4scyxpKT0+e2NvbnN0IG89bGMocyxpKSxhPWF3YWl0IHRoaXMuY29yZS5jcnlwdG8uZW5jb2RlKG4sbyksYz1qcFtzXS5yZXE7cmV0dXJuIHRoaXMuY29yZS5oaXN0b3J5LnNldChuLG8pLHRoaXMuY29yZS5yZWxheWVyLnB1Ymxpc2gobixhLGMpLG8uaWR9KSxfdCh0aGlzLCJzZW5kUmVzdWx0Iixhc3luYyhuLHMsaSk9Pntjb25zdCBvPVd5KG4saSksYT1hd2FpdCB0aGlzLmNvcmUuY3J5cHRvLmVuY29kZShzLG8pLGM9KGF3YWl0IHRoaXMuY29yZS5oaXN0b3J5LmdldChzLG4pKS5yZXF1ZXN0Lm1ldGhvZCxsPWpwW2NdLnJlczthd2FpdCB0aGlzLmNvcmUucmVsYXllci5wdWJsaXNoKHMsYSxsKSxhd2FpdCB0aGlzLmNvcmUuaGlzdG9yeS5yZXNvbHZlKG8pfSksX3QodGhpcywic2VuZEVycm9yIixhc3luYyhuLHMsaSk9Pntjb25zdCBvPUh5KG4saSksYT1hd2FpdCB0aGlzLmNvcmUuY3J5cHRvLmVuY29kZShzLG8pLGM9KGF3YWl0IHRoaXMuY29yZS5oaXN0b3J5LmdldChzLG4pKS5yZXF1ZXN0Lm1ldGhvZCxsPWpwW2NdP2pwW2NdLnJlczpqcC51bnJlZ2lzdGVyZWRfbWV0aG9kLnJlczthd2FpdCB0aGlzLmNvcmUucmVsYXllci5wdWJsaXNoKHMsYSxsKSxhd2FpdCB0aGlzLmNvcmUuaGlzdG9yeS5yZXNvbHZlKG8pfSksX3QodGhpcywiZGVsZXRlUGFpcmluZyIsYXN5bmMobixzKT0+e2F3YWl0IHRoaXMuY29yZS5yZWxheWVyLnVuc3Vic2NyaWJlKG4pLGF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBhaXJpbmdzLmRlbGV0ZShuLEt0KCJVU0VSX0RJU0NPTk5FQ1RFRCIpKSx0aGlzLmNvcmUuY3J5cHRvLmRlbGV0ZVN5bUtleShuKSxzP1Byb21pc2UucmVzb2x2ZSgpOnRoaXMuY29yZS5leHBpcmVyLmRlbChuKV0pfSksX3QodGhpcywiY2xlYW51cCIsYXN5bmMoKT0+e2NvbnN0IG49dGhpcy5wYWlyaW5ncy5nZXRBbGwoKS5maWx0ZXIocz0+aWMocy5leHBpcnkpKTthd2FpdCBQcm9taXNlLmFsbChuLm1hcChzPT50aGlzLmRlbGV0ZVBhaXJpbmcocy50b3BpYykpKX0pLF90KHRoaXMsIm9uUmVsYXlFdmVudFJlcXVlc3QiLGFzeW5jIG49Pntjb25zdHt0b3BpYzpzLHBheWxvYWQ6aX09bjtzd2l0Y2goaS5tZXRob2Qpe2Nhc2Uid2NfcGFpcmluZ1BpbmciOnJldHVybiBhd2FpdCB0aGlzLm9uUGFpcmluZ1BpbmdSZXF1ZXN0KHMsaSk7Y2FzZSJ3Y19wYWlyaW5nRGVsZXRlIjpyZXR1cm4gYXdhaXQgdGhpcy5vblBhaXJpbmdEZWxldGVSZXF1ZXN0KHMsaSk7ZGVmYXVsdDpyZXR1cm4gYXdhaXQgdGhpcy5vblVua25vd25ScGNNZXRob2RSZXF1ZXN0KHMsaSl9fSksX3QodGhpcywib25SZWxheUV2ZW50UmVzcG9uc2UiLGFzeW5jIG49Pntjb25zdHt0b3BpYzpzLHBheWxvYWQ6aX09bixvPShhd2FpdCB0aGlzLmNvcmUuaGlzdG9yeS5nZXQocyxpLmlkKSkucmVxdWVzdC5tZXRob2Q7c3dpdGNoKG8pe2Nhc2Uid2NfcGFpcmluZ1BpbmciOnJldHVybiB0aGlzLm9uUGFpcmluZ1BpbmdSZXNwb25zZShzLGkpO2RlZmF1bHQ6cmV0dXJuIHRoaXMub25Vbmtub3duUnBjTWV0aG9kUmVzcG9uc2Uobyl9fSksX3QodGhpcywib25QYWlyaW5nUGluZ1JlcXVlc3QiLGFzeW5jKG4scyk9Pntjb25zdHtpZDppfT1zO3RyeXt0aGlzLmlzVmFsaWRQaW5nKHt0b3BpYzpufSksYXdhaXQgdGhpcy5zZW5kUmVzdWx0KGksbiwhMCksdGhpcy5ldmVudHMuZW1pdChWbC5waW5nLHtpZDppLHRvcGljOm59KX1jYXRjaChvKXthd2FpdCB0aGlzLnNlbmRFcnJvcihpLG4sbyksdGhpcy5sb2dnZXIuZXJyb3Iobyl9fSksX3QodGhpcywib25QYWlyaW5nUGluZ1Jlc3BvbnNlIiwobixzKT0+e2NvbnN0e2lkOml9PXM7c2V0VGltZW91dCgoKT0+e3BvKHMpP3RoaXMuZXZlbnRzLmVtaXQoRnQoInBhaXJpbmdfcGluZyIsaSkse30pOllpKHMpJiZ0aGlzLmV2ZW50cy5lbWl0KEZ0KCJwYWlyaW5nX3BpbmciLGkpLHtlcnJvcjpzLmVycm9yfSl9LDUwMCl9KSxfdCh0aGlzLCJvblBhaXJpbmdEZWxldGVSZXF1ZXN0Iixhc3luYyhuLHMpPT57Y29uc3R7aWQ6aX09czt0cnl7dGhpcy5pc1ZhbGlkRGlzY29ubmVjdCh7dG9waWM6bn0pLGF3YWl0IHRoaXMuZGVsZXRlUGFpcmluZyhuKSx0aGlzLmV2ZW50cy5lbWl0KFZsLmRlbGV0ZSx7aWQ6aSx0b3BpYzpufSl9Y2F0Y2gobyl7YXdhaXQgdGhpcy5zZW5kRXJyb3IoaSxuLG8pLHRoaXMubG9nZ2VyLmVycm9yKG8pfX0pLF90KHRoaXMsIm9uVW5rbm93blJwY01ldGhvZFJlcXVlc3QiLGFzeW5jKG4scyk9Pntjb25zdHtpZDppLG1ldGhvZDpvfT1zO3RyeXtpZih0aGlzLnJlZ2lzdGVyZWRNZXRob2RzLmluY2x1ZGVzKG8pKXJldHVybjtjb25zdCBhPUt0KCJXQ19NRVRIT0RfVU5TVVBQT1JURUQiLG8pO2F3YWl0IHRoaXMuc2VuZEVycm9yKGksbixhKSx0aGlzLmxvZ2dlci5lcnJvcihhKX1jYXRjaChhKXthd2FpdCB0aGlzLnNlbmRFcnJvcihpLG4sYSksdGhpcy5sb2dnZXIuZXJyb3IoYSl9fSksX3QodGhpcywib25Vbmtub3duUnBjTWV0aG9kUmVzcG9uc2UiLG49Pnt0aGlzLnJlZ2lzdGVyZWRNZXRob2RzLmluY2x1ZGVzKG4pfHx0aGlzLmxvZ2dlci5lcnJvcihLdCgiV0NfTUVUSE9EX1VOU1VQUE9SVEVEIixuKSl9KSxfdCh0aGlzLCJpc1ZhbGlkUGFpciIsKG4scyk9Pnt2YXIgaTtpZighZWkobikpe2NvbnN0e21lc3NhZ2U6YX09T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYHBhaXIoKSBwYXJhbXM6ICR7bn1gKTt0aHJvdyBzLnNldEVycm9yKFhvLm1hbGZvcm1lZF9wYWlyaW5nX3VyaSksbmV3IEVycm9yKGEpfWlmKCEkaWUobi51cmkpKXtjb25zdHttZXNzYWdlOmF9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGBwYWlyKCkgdXJpOiAke24udXJpfWApO3Rocm93IHMuc2V0RXJyb3IoWG8ubWFsZm9ybWVkX3BhaXJpbmdfdXJpKSxuZXcgRXJyb3IoYSl9Y29uc3Qgbz1DayhuPy51cmkpO2lmKCEoKGk9bz8ucmVsYXkpIT1udWxsJiZpLnByb3RvY29sKSl7Y29uc3R7bWVzc2FnZTphfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIiwicGFpcigpIHVyaSNyZWxheS1wcm90b2NvbCIpO3Rocm93IHMuc2V0RXJyb3IoWG8ubWFsZm9ybWVkX3BhaXJpbmdfdXJpKSxuZXcgRXJyb3IoYSl9aWYoIShvIT1udWxsJiZvLnN5bUtleSkpe2NvbnN0e21lc3NhZ2U6YX09T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsInBhaXIoKSB1cmkjc3ltS2V5Iik7dGhyb3cgcy5zZXRFcnJvcihYby5tYWxmb3JtZWRfcGFpcmluZ191cmkpLG5ldyBFcnJvcihhKX1pZihvIT1udWxsJiZvLmV4cGlyeVRpbWVzdGFtcCYmUGUudG9NaWxpc2Vjb25kcyhvPy5leHBpcnlUaW1lc3RhbXApPERhdGUubm93KCkpe3Muc2V0RXJyb3IoWG8ucGFpcmluZ19leHBpcmVkKTtjb25zdHttZXNzYWdlOmF9PU9lKCJFWFBJUkVEIiwicGFpcigpIFVSSSBoYXMgZXhwaXJlZC4gUGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGEgbmV3IGNvbm5lY3Rpb24gVVJJLiIpO3Rocm93IG5ldyBFcnJvcihhKX19KSxfdCh0aGlzLCJpc1ZhbGlkUGluZyIsYXN5bmMgbj0+e2lmKCFlaShuKSl7Y29uc3R7bWVzc2FnZTppfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgcGluZygpIHBhcmFtczogJHtufWApO3Rocm93IG5ldyBFcnJvcihpKX1jb25zdHt0b3BpYzpzfT1uO2F3YWl0IHRoaXMuaXNWYWxpZFBhaXJpbmdUb3BpYyhzKX0pLF90KHRoaXMsImlzVmFsaWREaXNjb25uZWN0Iixhc3luYyBuPT57aWYoIWVpKG4pKXtjb25zdHttZXNzYWdlOml9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGBkaXNjb25uZWN0KCkgcGFyYW1zOiAke259YCk7dGhyb3cgbmV3IEVycm9yKGkpfWNvbnN0e3RvcGljOnN9PW47YXdhaXQgdGhpcy5pc1ZhbGlkUGFpcmluZ1RvcGljKHMpfSksX3QodGhpcywiaXNWYWxpZFBhaXJpbmdUb3BpYyIsYXN5bmMgbj0+e2lmKCFWcihuLCExKSl7Y29uc3R7bWVzc2FnZTpzfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgcGFpcmluZyB0b3BpYyBzaG91bGQgYmUgYSBzdHJpbmc6ICR7bn1gKTt0aHJvdyBuZXcgRXJyb3Iocyl9aWYoIXRoaXMucGFpcmluZ3Mua2V5cy5pbmNsdWRlcyhuKSl7Y29uc3R7bWVzc2FnZTpzfT1PZSgiTk9fTUFUQ0hJTkdfS0VZIixgcGFpcmluZyB0b3BpYyBkb2Vzbid0IGV4aXN0OiAke259YCk7dGhyb3cgbmV3IEVycm9yKHMpfWlmKGljKHRoaXMucGFpcmluZ3MuZ2V0KG4pLmV4cGlyeSkpe2F3YWl0IHRoaXMuZGVsZXRlUGFpcmluZyhuKTtjb25zdHttZXNzYWdlOnN9PU9lKCJFWFBJUkVEIixgcGFpcmluZyB0b3BpYzogJHtufWApO3Rocm93IG5ldyBFcnJvcihzKX19KSx0aGlzLmNvcmU9ZSx0aGlzLmxvZ2dlcj1ObihyLHRoaXMubmFtZSksdGhpcy5wYWlyaW5ncz1uZXcgUXUodGhpcy5jb3JlLHRoaXMubG9nZ2VyLHRoaXMubmFtZSx0aGlzLnN0b3JhZ2VQcmVmaXgpfWdldCBjb250ZXh0KCl7cmV0dXJuIHBpKHRoaXMubG9nZ2VyKX1pc0luaXRpYWxpemVkKCl7aWYoIXRoaXMuaW5pdGlhbGl6ZWQpe2NvbnN0e21lc3NhZ2U6ZX09T2UoIk5PVF9JTklUSUFMSVpFRCIsdGhpcy5uYW1lKTt0aHJvdyBuZXcgRXJyb3IoZSl9fXJlZ2lzdGVyUmVsYXllckV2ZW50cygpe3RoaXMuY29yZS5yZWxheWVyLm9uKGFuLm1lc3NhZ2UsYXN5bmMgZT0+e2NvbnN0e3RvcGljOnIsbWVzc2FnZTpuLHRyYW5zcG9ydFR5cGU6c309ZTtpZih0aGlzLnBhaXJpbmdzLmtleXMuaW5jbHVkZXMocikmJnMhPT1jci5saW5rX21vZGUmJiF0aGlzLmlnbm9yZWRQYXlsb2FkVHlwZXMuaW5jbHVkZXModGhpcy5jb3JlLmNyeXB0by5nZXRQYXlsb2FkVHlwZShuKSkpdHJ5e2NvbnN0IGk9YXdhaXQgdGhpcy5jb3JlLmNyeXB0by5kZWNvZGUocixuKTtxNihpKT8odGhpcy5jb3JlLmhpc3Rvcnkuc2V0KHIsaSksYXdhaXQgdGhpcy5vblJlbGF5RXZlbnRSZXF1ZXN0KHt0b3BpYzpyLHBheWxvYWQ6aX0pKTpxeShpKSYmKGF3YWl0IHRoaXMuY29yZS5oaXN0b3J5LnJlc29sdmUoaSksYXdhaXQgdGhpcy5vblJlbGF5RXZlbnRSZXNwb25zZSh7dG9waWM6cixwYXlsb2FkOml9KSx0aGlzLmNvcmUuaGlzdG9yeS5kZWxldGUocixpLmlkKSksYXdhaXQgdGhpcy5jb3JlLnJlbGF5ZXIubWVzc2FnZXMuYWNrKHIsbil9Y2F0Y2goaSl7dGhpcy5sb2dnZXIuZXJyb3IoaSl9fSl9cmVnaXN0ZXJFeHBpcmVyRXZlbnRzKCl7dGhpcy5jb3JlLmV4cGlyZXIub24oR2kuZXhwaXJlZCxhc3luYyBlPT57Y29uc3R7dG9waWM6cn09dEQoZS50YXJnZXQpO3ImJnRoaXMucGFpcmluZ3Mua2V5cy5pbmNsdWRlcyhyKSYmKGF3YWl0IHRoaXMuZGVsZXRlUGFpcmluZyhyLCEwKSx0aGlzLmV2ZW50cy5lbWl0KFZsLmV4cGlyZSx7dG9waWM6cn0pKX0pfX12YXIgcGxlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxmbGU9KHQsZSxyKT0+ZSBpbiB0P3BsZSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsd249KHQsZSxyKT0+ZmxlKHQsdHlwZW9mIGUhPSJzeW1ib2wiP2UrIiI6ZSxyKTtjbGFzcyBtbGUgZXh0ZW5kcyAkWntjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKGUsciksdGhpcy5jb3JlPWUsdGhpcy5sb2dnZXI9cix3bih0aGlzLCJyZWNvcmRzIixuZXcgTWFwKSx3bih0aGlzLCJldmVudHMiLG5ldyBvcy5FdmVudEVtaXR0ZXIpLHduKHRoaXMsIm5hbWUiLHdvZSksd24odGhpcywidmVyc2lvbiIsYm9lKSx3bih0aGlzLCJjYWNoZWQiLFtdKSx3bih0aGlzLCJpbml0aWFsaXplZCIsITEpLHduKHRoaXMsInN0b3JhZ2VQcmVmaXgiLENvKSx3bih0aGlzLCJpbml0Iixhc3luYygpPT57dGhpcy5pbml0aWFsaXplZHx8KHRoaXMubG9nZ2VyLnRyYWNlKCJJbml0aWFsaXplZCIpLGF3YWl0IHRoaXMucmVzdG9yZSgpLHRoaXMuY2FjaGVkLmZvckVhY2gobj0+dGhpcy5yZWNvcmRzLnNldChuLmlkLG4pKSx0aGlzLmNhY2hlZD1bXSx0aGlzLnJlZ2lzdGVyRXZlbnRMaXN0ZW5lcnMoKSx0aGlzLmluaXRpYWxpemVkPSEwKX0pLHduKHRoaXMsInNldCIsKG4scyxpKT0+e2lmKHRoaXMuaXNJbml0aWFsaXplZCgpLHRoaXMubG9nZ2VyLmRlYnVnKCJTZXR0aW5nIEpTT04tUlBDIHJlcXVlc3QgaGlzdG9yeSByZWNvcmQiKSx0aGlzLmxvZ2dlci50cmFjZSh7dHlwZToibWV0aG9kIixtZXRob2Q6InNldCIsdG9waWM6bixyZXF1ZXN0OnMsY2hhaW5JZDppfSksdGhpcy5yZWNvcmRzLmhhcyhzLmlkKSlyZXR1cm47Y29uc3Qgbz17aWQ6cy5pZCx0b3BpYzpuLHJlcXVlc3Q6e21ldGhvZDpzLm1ldGhvZCxwYXJhbXM6cy5wYXJhbXN8fG51bGx9LGNoYWluSWQ6aSxleHBpcnk6WXIoUGUuVEhJUlRZX0RBWVMpfTt0aGlzLnJlY29yZHMuc2V0KG8uaWQsbyksdGhpcy5wZXJzaXN0KCksdGhpcy5ldmVudHMuZW1pdChmcy5jcmVhdGVkLG8pfSksd24odGhpcywicmVzb2x2ZSIsYXN5bmMgbj0+e2lmKHRoaXMuaXNJbml0aWFsaXplZCgpLHRoaXMubG9nZ2VyLmRlYnVnKCJVcGRhdGluZyBKU09OLVJQQyByZXNwb25zZSBoaXN0b3J5IHJlY29yZCIpLHRoaXMubG9nZ2VyLnRyYWNlKHt0eXBlOiJtZXRob2QiLG1ldGhvZDoidXBkYXRlIixyZXNwb25zZTpufSksIXRoaXMucmVjb3Jkcy5oYXMobi5pZCkpcmV0dXJuO2NvbnN0IHM9YXdhaXQgdGhpcy5nZXRSZWNvcmQobi5pZCk7dHlwZW9mIHMucmVzcG9uc2U+InUiJiYocy5yZXNwb25zZT1ZaShuKT97ZXJyb3I6bi5lcnJvcn06e3Jlc3VsdDpuLnJlc3VsdH0sdGhpcy5yZWNvcmRzLnNldChzLmlkLHMpLHRoaXMucGVyc2lzdCgpLHRoaXMuZXZlbnRzLmVtaXQoZnMudXBkYXRlZCxzKSl9KSx3bih0aGlzLCJnZXQiLGFzeW5jKG4scyk9Pih0aGlzLmlzSW5pdGlhbGl6ZWQoKSx0aGlzLmxvZ2dlci5kZWJ1ZygiR2V0dGluZyByZWNvcmQiKSx0aGlzLmxvZ2dlci50cmFjZSh7dHlwZToibWV0aG9kIixtZXRob2Q6ImdldCIsdG9waWM6bixpZDpzfSksYXdhaXQgdGhpcy5nZXRSZWNvcmQocykpKSx3bih0aGlzLCJkZWxldGUiLChuLHMpPT57dGhpcy5pc0luaXRpYWxpemVkKCksdGhpcy5sb2dnZXIuZGVidWcoIkRlbGV0aW5nIHJlY29yZCIpLHRoaXMubG9nZ2VyLnRyYWNlKHt0eXBlOiJtZXRob2QiLG1ldGhvZDoiZGVsZXRlIixpZDpzfSksdGhpcy52YWx1ZXMuZm9yRWFjaChpPT57aWYoaS50b3BpYz09PW4pe2lmKHR5cGVvZiBzPCJ1IiYmaS5pZCE9PXMpcmV0dXJuO3RoaXMucmVjb3Jkcy5kZWxldGUoaS5pZCksdGhpcy5ldmVudHMuZW1pdChmcy5kZWxldGVkLGkpfX0pLHRoaXMucGVyc2lzdCgpfSksd24odGhpcywiZXhpc3RzIixhc3luYyhuLHMpPT4odGhpcy5pc0luaXRpYWxpemVkKCksdGhpcy5yZWNvcmRzLmhhcyhzKT8oYXdhaXQgdGhpcy5nZXRSZWNvcmQocykpLnRvcGljPT09bjohMSkpLHduKHRoaXMsIm9uIiwobixzKT0+e3RoaXMuZXZlbnRzLm9uKG4scyl9KSx3bih0aGlzLCJvbmNlIiwobixzKT0+e3RoaXMuZXZlbnRzLm9uY2UobixzKX0pLHduKHRoaXMsIm9mZiIsKG4scyk9Pnt0aGlzLmV2ZW50cy5vZmYobixzKX0pLHduKHRoaXMsInJlbW92ZUxpc3RlbmVyIiwobixzKT0+e3RoaXMuZXZlbnRzLnJlbW92ZUxpc3RlbmVyKG4scyl9KSx0aGlzLmxvZ2dlcj1ObihyLHRoaXMubmFtZSl9Z2V0IGNvbnRleHQoKXtyZXR1cm4gcGkodGhpcy5sb2dnZXIpfWdldCBzdG9yYWdlS2V5KCl7cmV0dXJuIHRoaXMuc3RvcmFnZVByZWZpeCt0aGlzLnZlcnNpb24rdGhpcy5jb3JlLmN1c3RvbVN0b3JhZ2VQcmVmaXgrIi8vIit0aGlzLm5hbWV9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5yZWNvcmRzLnNpemV9Z2V0IGtleXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnJlY29yZHMua2V5cygpKX1nZXQgdmFsdWVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5yZWNvcmRzLnZhbHVlcygpKX1nZXQgcGVuZGluZygpe2NvbnN0IGU9W107cmV0dXJuIHRoaXMudmFsdWVzLmZvckVhY2gocj0+e2lmKHR5cGVvZiByLnJlc3BvbnNlPCJ1IilyZXR1cm47Y29uc3Qgbj17dG9waWM6ci50b3BpYyxyZXF1ZXN0OmxjKHIucmVxdWVzdC5tZXRob2Qsci5yZXF1ZXN0LnBhcmFtcyxyLmlkKSxjaGFpbklkOnIuY2hhaW5JZH07cmV0dXJuIGUucHVzaChuKX0pLGV9YXN5bmMgc2V0SnNvblJwY1JlY29yZHMoZSl7YXdhaXQgdGhpcy5jb3JlLnN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXksZSl9YXN5bmMgZ2V0SnNvblJwY1JlY29yZHMoKXtyZXR1cm4gYXdhaXQgdGhpcy5jb3JlLnN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXkpfWdldFJlY29yZChlKXt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtjb25zdCByPXRoaXMucmVjb3Jkcy5nZXQoZSk7aWYoIXIpe2NvbnN0e21lc3NhZ2U6bn09T2UoIk5PX01BVENISU5HX0tFWSIsYCR7dGhpcy5uYW1lfTogJHtlfWApO3Rocm93IG5ldyBFcnJvcihuKX1yZXR1cm4gcn1hc3luYyBwZXJzaXN0KCl7YXdhaXQgdGhpcy5zZXRKc29uUnBjUmVjb3Jkcyh0aGlzLnZhbHVlcyksdGhpcy5ldmVudHMuZW1pdChmcy5zeW5jKX1hc3luYyByZXN0b3JlKCl7dHJ5e2NvbnN0IGU9YXdhaXQgdGhpcy5nZXRKc29uUnBjUmVjb3JkcygpO2lmKHR5cGVvZiBlPiJ1Inx8IWUubGVuZ3RoKXJldHVybjtpZih0aGlzLnJlY29yZHMuc2l6ZSl7Y29uc3R7bWVzc2FnZTpyfT1PZSgiUkVTVE9SRV9XSUxMX09WRVJSSURFIix0aGlzLm5hbWUpO3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHIpLG5ldyBFcnJvcihyKX10aGlzLmNhY2hlZD1lLHRoaXMubG9nZ2VyLmRlYnVnKGBTdWNjZXNzZnVsbHkgUmVzdG9yZWQgcmVjb3JkcyBmb3IgJHt0aGlzLm5hbWV9YCksdGhpcy5sb2dnZXIudHJhY2Uoe3R5cGU6Im1ldGhvZCIsbWV0aG9kOiJyZXN0b3JlIixyZWNvcmRzOnRoaXMudmFsdWVzfSl9Y2F0Y2goZSl7dGhpcy5sb2dnZXIuZGVidWcoYEZhaWxlZCB0byBSZXN0b3JlIHJlY29yZHMgZm9yICR7dGhpcy5uYW1lfWApLHRoaXMubG9nZ2VyLmVycm9yKGUpfX1yZWdpc3RlckV2ZW50TGlzdGVuZXJzKCl7dGhpcy5ldmVudHMub24oZnMuY3JlYXRlZCxlPT57Y29uc3Qgcj1mcy5jcmVhdGVkO3RoaXMubG9nZ2VyLmluZm8oYEVtaXR0aW5nICR7cn1gKSx0aGlzLmxvZ2dlci5kZWJ1Zyh7dHlwZToiZXZlbnQiLGV2ZW50OnIscmVjb3JkOmV9KX0pLHRoaXMuZXZlbnRzLm9uKGZzLnVwZGF0ZWQsZT0+e2NvbnN0IHI9ZnMudXBkYXRlZDt0aGlzLmxvZ2dlci5pbmZvKGBFbWl0dGluZyAke3J9YCksdGhpcy5sb2dnZXIuZGVidWcoe3R5cGU6ImV2ZW50IixldmVudDpyLHJlY29yZDplfSl9KSx0aGlzLmV2ZW50cy5vbihmcy5kZWxldGVkLGU9Pntjb25zdCByPWZzLmRlbGV0ZWQ7dGhpcy5sb2dnZXIuaW5mbyhgRW1pdHRpbmcgJHtyfWApLHRoaXMubG9nZ2VyLmRlYnVnKHt0eXBlOiJldmVudCIsZXZlbnQ6cixyZWNvcmQ6ZX0pfSksdGhpcy5jb3JlLmhlYXJ0YmVhdC5vbihjcC5wdWxzZSwoKT0+e3RoaXMuY2xlYW51cCgpfSl9Y2xlYW51cCgpe3RyeXt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtsZXQgZT0hMTt0aGlzLnJlY29yZHMuZm9yRWFjaChyPT57UGUudG9NaWxpc2Vjb25kcyhyLmV4cGlyeXx8MCktRGF0ZS5ub3coKTw9MCYmKHRoaXMubG9nZ2VyLmluZm8oYERlbGV0aW5nIGV4cGlyZWQgaGlzdG9yeSBsb2c6ICR7ci5pZH1gKSx0aGlzLnJlY29yZHMuZGVsZXRlKHIuaWQpLHRoaXMuZXZlbnRzLmVtaXQoZnMuZGVsZXRlZCxyLCExKSxlPSEwKX0pLGUmJnRoaXMucGVyc2lzdCgpfWNhdGNoKGUpe3RoaXMubG9nZ2VyLndhcm4oZSl9fWlzSW5pdGlhbGl6ZWQoKXtpZighdGhpcy5pbml0aWFsaXplZCl7Y29uc3R7bWVzc2FnZTplfT1PZSgiTk9UX0lOSVRJQUxJWkVEIix0aGlzLm5hbWUpO3Rocm93IG5ldyBFcnJvcihlKX19fXZhciBnbGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LHdsZT0odCxlLHIpPT5lIGluIHQ/Z2xlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixTbj0odCxlLHIpPT53bGUodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIGJsZSBleHRlbmRzIEZae2NvbnN0cnVjdG9yKGUscil7c3VwZXIoZSxyKSx0aGlzLmNvcmU9ZSx0aGlzLmxvZ2dlcj1yLFNuKHRoaXMsImV4cGlyYXRpb25zIixuZXcgTWFwKSxTbih0aGlzLCJldmVudHMiLG5ldyBvcy5FdmVudEVtaXR0ZXIpLFNuKHRoaXMsIm5hbWUiLHlvZSksU24odGhpcywidmVyc2lvbiIsdm9lKSxTbih0aGlzLCJjYWNoZWQiLFtdKSxTbih0aGlzLCJpbml0aWFsaXplZCIsITEpLFNuKHRoaXMsInN0b3JhZ2VQcmVmaXgiLENvKSxTbih0aGlzLCJpbml0Iixhc3luYygpPT57dGhpcy5pbml0aWFsaXplZHx8KHRoaXMubG9nZ2VyLnRyYWNlKCJJbml0aWFsaXplZCIpLGF3YWl0IHRoaXMucmVzdG9yZSgpLHRoaXMuY2FjaGVkLmZvckVhY2gobj0+dGhpcy5leHBpcmF0aW9ucy5zZXQobi50YXJnZXQsbikpLHRoaXMuY2FjaGVkPVtdLHRoaXMucmVnaXN0ZXJFdmVudExpc3RlbmVycygpLHRoaXMuaW5pdGlhbGl6ZWQ9ITApfSksU24odGhpcywiaGFzIixuPT57dHJ5e2NvbnN0IHM9dGhpcy5mb3JtYXRUYXJnZXQobik7cmV0dXJuIHR5cGVvZiB0aGlzLmdldEV4cGlyYXRpb24ocyk8InUifWNhdGNoe3JldHVybiExfX0pLFNuKHRoaXMsInNldCIsKG4scyk9Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKTtjb25zdCBpPXRoaXMuZm9ybWF0VGFyZ2V0KG4pLG89e3RhcmdldDppLGV4cGlyeTpzfTt0aGlzLmV4cGlyYXRpb25zLnNldChpLG8pLHRoaXMuY2hlY2tFeHBpcnkoaSxvKSx0aGlzLmV2ZW50cy5lbWl0KEdpLmNyZWF0ZWQse3RhcmdldDppLGV4cGlyYXRpb246b30pfSksU24odGhpcywiZ2V0IixuPT57dGhpcy5pc0luaXRpYWxpemVkKCk7Y29uc3Qgcz10aGlzLmZvcm1hdFRhcmdldChuKTtyZXR1cm4gdGhpcy5nZXRFeHBpcmF0aW9uKHMpfSksU24odGhpcywiZGVsIixuPT57aWYodGhpcy5pc0luaXRpYWxpemVkKCksdGhpcy5oYXMobikpe2NvbnN0IHM9dGhpcy5mb3JtYXRUYXJnZXQobiksaT10aGlzLmdldEV4cGlyYXRpb24ocyk7dGhpcy5leHBpcmF0aW9ucy5kZWxldGUocyksdGhpcy5ldmVudHMuZW1pdChHaS5kZWxldGVkLHt0YXJnZXQ6cyxleHBpcmF0aW9uOml9KX19KSxTbih0aGlzLCJvbiIsKG4scyk9Pnt0aGlzLmV2ZW50cy5vbihuLHMpfSksU24odGhpcywib25jZSIsKG4scyk9Pnt0aGlzLmV2ZW50cy5vbmNlKG4scyl9KSxTbih0aGlzLCJvZmYiLChuLHMpPT57dGhpcy5ldmVudHMub2ZmKG4scyl9KSxTbih0aGlzLCJyZW1vdmVMaXN0ZW5lciIsKG4scyk9Pnt0aGlzLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihuLHMpfSksdGhpcy5sb2dnZXI9Tm4ocix0aGlzLm5hbWUpfWdldCBjb250ZXh0KCl7cmV0dXJuIHBpKHRoaXMubG9nZ2VyKX1nZXQgc3RvcmFnZUtleSgpe3JldHVybiB0aGlzLnN0b3JhZ2VQcmVmaXgrdGhpcy52ZXJzaW9uK3RoaXMuY29yZS5jdXN0b21TdG9yYWdlUHJlZml4KyIvLyIrdGhpcy5uYW1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5leHBpcmF0aW9ucy5zaXplfWdldCBrZXlzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5leHBpcmF0aW9ucy5rZXlzKCkpfWdldCB2YWx1ZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmV4cGlyYXRpb25zLnZhbHVlcygpKX1mb3JtYXRUYXJnZXQoZSl7aWYodHlwZW9mIGU9PSJzdHJpbmciKXJldHVybiBxdGUoZSk7aWYodHlwZW9mIGU9PSJudW1iZXIiKXJldHVybiBWdGUoZSk7Y29uc3R7bWVzc2FnZTpyfT1PZSgiVU5LTk9XTl9UWVBFIixgVGFyZ2V0IHR5cGU6ICR7dHlwZW9mIGV9YCk7dGhyb3cgbmV3IEVycm9yKHIpfWFzeW5jIHNldEV4cGlyYXRpb25zKGUpe2F3YWl0IHRoaXMuY29yZS5zdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlS2V5LGUpfWFzeW5jIGdldEV4cGlyYXRpb25zKCl7cmV0dXJuIGF3YWl0IHRoaXMuY29yZS5zdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5KX1hc3luYyBwZXJzaXN0KCl7YXdhaXQgdGhpcy5zZXRFeHBpcmF0aW9ucyh0aGlzLnZhbHVlcyksdGhpcy5ldmVudHMuZW1pdChHaS5zeW5jKX1hc3luYyByZXN0b3JlKCl7dHJ5e2NvbnN0IGU9YXdhaXQgdGhpcy5nZXRFeHBpcmF0aW9ucygpO2lmKHR5cGVvZiBlPiJ1Inx8IWUubGVuZ3RoKXJldHVybjtpZih0aGlzLmV4cGlyYXRpb25zLnNpemUpe2NvbnN0e21lc3NhZ2U6cn09T2UoIlJFU1RPUkVfV0lMTF9PVkVSUklERSIsdGhpcy5uYW1lKTt0aHJvdyB0aGlzLmxvZ2dlci5lcnJvcihyKSxuZXcgRXJyb3Iocil9dGhpcy5jYWNoZWQ9ZSx0aGlzLmxvZ2dlci5kZWJ1ZyhgU3VjY2Vzc2Z1bGx5IFJlc3RvcmVkIGV4cGlyYXRpb25zIGZvciAke3RoaXMubmFtZX1gKSx0aGlzLmxvZ2dlci50cmFjZSh7dHlwZToibWV0aG9kIixtZXRob2Q6InJlc3RvcmUiLGV4cGlyYXRpb25zOnRoaXMudmFsdWVzfSl9Y2F0Y2goZSl7dGhpcy5sb2dnZXIuZGVidWcoYEZhaWxlZCB0byBSZXN0b3JlIGV4cGlyYXRpb25zIGZvciAke3RoaXMubmFtZX1gKSx0aGlzLmxvZ2dlci5lcnJvcihlKX19Z2V0RXhwaXJhdGlvbihlKXtjb25zdCByPXRoaXMuZXhwaXJhdGlvbnMuZ2V0KGUpO2lmKCFyKXtjb25zdHttZXNzYWdlOm59PU9lKCJOT19NQVRDSElOR19LRVkiLGAke3RoaXMubmFtZX06ICR7ZX1gKTt0aHJvdyB0aGlzLmxvZ2dlci53YXJuKG4pLG5ldyBFcnJvcihuKX1yZXR1cm4gcn1jaGVja0V4cGlyeShlLHIpe2NvbnN0e2V4cGlyeTpufT1yO1BlLnRvTWlsaXNlY29uZHMobiktRGF0ZS5ub3coKTw9MCYmdGhpcy5leHBpcmUoZSxyKX1leHBpcmUoZSxyKXt0aGlzLmV4cGlyYXRpb25zLmRlbGV0ZShlKSx0aGlzLmV2ZW50cy5lbWl0KEdpLmV4cGlyZWQse3RhcmdldDplLGV4cGlyYXRpb246cn0pfWNoZWNrRXhwaXJhdGlvbnMoKXt0aGlzLmNvcmUucmVsYXllci5jb25uZWN0ZWQmJnRoaXMuZXhwaXJhdGlvbnMuZm9yRWFjaCgoZSxyKT0+dGhpcy5jaGVja0V4cGlyeShyLGUpKX1yZWdpc3RlckV2ZW50TGlzdGVuZXJzKCl7dGhpcy5jb3JlLmhlYXJ0YmVhdC5vbihjcC5wdWxzZSwoKT0+dGhpcy5jaGVja0V4cGlyYXRpb25zKCkpLHRoaXMuZXZlbnRzLm9uKEdpLmNyZWF0ZWQsZT0+e2NvbnN0IHI9R2kuY3JlYXRlZDt0aGlzLmxvZ2dlci5pbmZvKGBFbWl0dGluZyAke3J9YCksdGhpcy5sb2dnZXIuZGVidWcoe3R5cGU6ImV2ZW50IixldmVudDpyLGRhdGE6ZX0pLHRoaXMucGVyc2lzdCgpfSksdGhpcy5ldmVudHMub24oR2kuZXhwaXJlZCxlPT57Y29uc3Qgcj1HaS5leHBpcmVkO3RoaXMubG9nZ2VyLmluZm8oYEVtaXR0aW5nICR7cn1gKSx0aGlzLmxvZ2dlci5kZWJ1Zyh7dHlwZToiZXZlbnQiLGV2ZW50OnIsZGF0YTplfSksdGhpcy5wZXJzaXN0KCl9KSx0aGlzLmV2ZW50cy5vbihHaS5kZWxldGVkLGU9Pntjb25zdCByPUdpLmRlbGV0ZWQ7dGhpcy5sb2dnZXIuaW5mbyhgRW1pdHRpbmcgJHtyfWApLHRoaXMubG9nZ2VyLmRlYnVnKHt0eXBlOiJldmVudCIsZXZlbnQ6cixkYXRhOmV9KSx0aGlzLnBlcnNpc3QoKX0pfWlzSW5pdGlhbGl6ZWQoKXtpZighdGhpcy5pbml0aWFsaXplZCl7Y29uc3R7bWVzc2FnZTplfT1PZSgiTk9UX0lOSVRJQUxJWkVEIix0aGlzLm5hbWUpO3Rocm93IG5ldyBFcnJvcihlKX19fXZhciB5bGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LHZsZT0odCxlLHIpPT5lIGluIHQ/eWxlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixxcj0odCxlLHIpPT52bGUodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIEVsZSBleHRlbmRzIGpae2NvbnN0cnVjdG9yKGUscixuKXtzdXBlcihlLHIsbiksdGhpcy5jb3JlPWUsdGhpcy5sb2dnZXI9cix0aGlzLnN0b3JlPW4scXIodGhpcywibmFtZSIsRW9lKSxxcih0aGlzLCJhYm9ydENvbnRyb2xsZXIiKSxxcih0aGlzLCJpc0RldkVudiIpLHFyKHRoaXMsInZlcmlmeVVybFYzIix4b2UpLHFyKHRoaXMsInN0b3JhZ2VQcmVmaXgiLENvKSxxcih0aGlzLCJ2ZXJzaW9uIixIRCkscXIodGhpcywicHVibGljS2V5IikscXIodGhpcywiZmV0Y2hQcm9taXNlIikscXIodGhpcywiaW5pdCIsYXN5bmMoKT0+e3ZhciBzO3RoaXMuaXNEZXZFbnZ8fCh0aGlzLnB1YmxpY0tleT1hd2FpdCB0aGlzLnN0b3JlLmdldEl0ZW0odGhpcy5zdG9yZUtleSksdGhpcy5wdWJsaWNLZXkmJlBlLnRvTWlsaXNlY29uZHMoKHM9dGhpcy5wdWJsaWNLZXkpPT1udWxsP3ZvaWQgMDpzLmV4cGlyZXNBdCk8RGF0ZS5ub3coKSYmKHRoaXMubG9nZ2VyLmRlYnVnKCJ2ZXJpZnkgdjIgcHVibGljIGtleSBleHBpcmVkIiksYXdhaXQgdGhpcy5yZW1vdmVQdWJsaWNLZXkoKSkpfSkscXIodGhpcywicmVnaXN0ZXIiLGFzeW5jIHM9PntpZighdzEoKXx8dGhpcy5pc0RldkVudilyZXR1cm47Y29uc3QgaT13aW5kb3cubG9jYXRpb24ub3JpZ2luLHtpZDpvLGRlY3J5cHRlZElkOmF9PXMsYz1gJHt0aGlzLnZlcmlmeVVybFYzfS9hdHRlc3RhdGlvbj9wcm9qZWN0SWQ9JHt0aGlzLmNvcmUucHJvamVjdElkfSZvcmlnaW49JHtpfSZpZD0ke299JmRlY3J5cHRlZElkPSR7YX1gO3RyeXtjb25zdCBsPXl1LmdldERvY3VtZW50KCksZD10aGlzLnN0YXJ0QWJvcnRUaW1lcihQZS5PTkVfU0VDT05EKjUpLHU9YXdhaXQgbmV3IFByb21pc2UoKGgscCk9Pntjb25zdCBmPSgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHcpLGwuYm9keS5yZW1vdmVDaGlsZChtKSxwKCJhdHRlc3RhdGlvbiBhYm9ydGVkIil9O3RoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsZik7Y29uc3QgbT1sLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO20uc3JjPWMsbS5zdHlsZS5kaXNwbGF5PSJub25lIixtLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixmLHtzaWduYWw6dGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsfSk7Y29uc3Qgdz1nPT57aWYoZy5kYXRhJiZ0eXBlb2YgZy5kYXRhPT0ic3RyaW5nIil0cnl7Y29uc3Qgdj1KU09OLnBhcnNlKGcuZGF0YSk7aWYodi50eXBlPT09InZlcmlmeV9hdHRlc3RhdGlvbiIpe2lmKGl4KHYuYXR0ZXN0YXRpb24pLnBheWxvYWQuaWQhPT1vKXJldHVybjtjbGVhckludGVydmFsKGQpLGwuYm9keS5yZW1vdmVDaGlsZChtKSx0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGYpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix3KSxoKHYuYXR0ZXN0YXRpb249PT1udWxsPyIiOnYuYXR0ZXN0YXRpb24pfX1jYXRjaCh2KXt0aGlzLmxvZ2dlci53YXJuKHYpfX07bC5ib2R5LmFwcGVuZENoaWxkKG0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix3LHtzaWduYWw6dGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsfSl9KTtyZXR1cm4gdGhpcy5sb2dnZXIuZGVidWcoImp3dCBhdHRlc3RhdGlvbiIsdSksdX1jYXRjaChsKXt0aGlzLmxvZ2dlci53YXJuKGwpfXJldHVybiIifSkscXIodGhpcywicmVzb2x2ZSIsYXN5bmMgcz0+e2lmKHRoaXMuaXNEZXZFbnYpcmV0dXJuIiI7Y29uc3R7YXR0ZXN0YXRpb25JZDppLGhhc2g6byxlbmNyeXB0ZWRJZDphfT1zO2lmKGk9PT0iIil7dGhpcy5sb2dnZXIuZGVidWcoInJlc29sdmU6IGF0dGVzdGF0aW9uSWQgaXMgZW1wdHksIHNraXBwaW5nIik7cmV0dXJufWlmKGkpe2lmKGl4KGkpLnBheWxvYWQuaWQhPT1hKXJldHVybjtjb25zdCBsPWF3YWl0IHRoaXMuaXNWYWxpZEp3dEF0dGVzdGF0aW9uKGkpO2lmKGwpe2lmKCFsLmlzVmVyaWZpZWQpe3RoaXMubG9nZ2VyLndhcm4oInJlc29sdmU6IGp3dCBhdHRlc3RhdGlvbjogb3JpZ2luIHVybCBub3QgdmVyaWZpZWQiKTtyZXR1cm59cmV0dXJuIGx9fWlmKCFvKXJldHVybjtjb25zdCBjPXRoaXMuZ2V0VmVyaWZ5VXJsKHM/LnZlcmlmeVVybCk7cmV0dXJuIHRoaXMuZmV0Y2hBdHRlc3RhdGlvbihvLGMpfSkscXIodGhpcywiZmV0Y2hBdHRlc3RhdGlvbiIsYXN5bmMocyxpKT0+e3RoaXMubG9nZ2VyLmRlYnVnKGByZXNvbHZpbmcgYXR0ZXN0YXRpb246ICR7c30gZnJvbSB1cmw6ICR7aX1gKTtjb25zdCBvPXRoaXMuc3RhcnRBYm9ydFRpbWVyKFBlLk9ORV9TRUNPTkQqNSksYT1hd2FpdCBmZXRjaChgJHtpfS9hdHRlc3RhdGlvbi8ke3N9P3YyU3VwcG9ydGVkPXRydWVgLHtzaWduYWw6dGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsfSk7cmV0dXJuIGNsZWFyVGltZW91dChvKSxhLnN0YXR1cz09PTIwMD9hd2FpdCBhLmpzb24oKTp2b2lkIDB9KSxxcih0aGlzLCJnZXRWZXJpZnlVcmwiLHM9PntsZXQgaT1zfHxuMDtyZXR1cm4gX29lLmluY2x1ZGVzKGkpfHwodGhpcy5sb2dnZXIuaW5mbyhgdmVyaWZ5IHVybDogJHtpfSwgbm90IGluY2x1ZGVkIGluIHRydXN0ZWQgbGlzdCwgYXNzaWduaW5nIGRlZmF1bHQ6ICR7bjB9YCksaT1uMCksaX0pLHFyKHRoaXMsImZldGNoUHVibGljS2V5Iixhc3luYygpPT57dHJ5e3RoaXMubG9nZ2VyLmRlYnVnKGBmZXRjaGluZyBwdWJsaWMga2V5IGZyb206ICR7dGhpcy52ZXJpZnlVcmxWM31gKTtjb25zdCBzPXRoaXMuc3RhcnRBYm9ydFRpbWVyKFBlLkZJVkVfU0VDT05EUyksaT1hd2FpdCBmZXRjaChgJHt0aGlzLnZlcmlmeVVybFYzfS9wdWJsaWMta2V5YCx7c2lnbmFsOnRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbH0pO3JldHVybiBjbGVhclRpbWVvdXQocyksYXdhaXQgaS5qc29uKCl9Y2F0Y2gocyl7dGhpcy5sb2dnZXIud2FybihzKX19KSxxcih0aGlzLCJwZXJzaXN0UHVibGljS2V5Iixhc3luYyBzPT57dGhpcy5sb2dnZXIuZGVidWcoInBlcnNpc3RpbmcgcHVibGljIGtleSB0byBsb2NhbCBzdG9yYWdlIixzKSxhd2FpdCB0aGlzLnN0b3JlLnNldEl0ZW0odGhpcy5zdG9yZUtleSxzKSx0aGlzLnB1YmxpY0tleT1zfSkscXIodGhpcywicmVtb3ZlUHVibGljS2V5Iixhc3luYygpPT57dGhpcy5sb2dnZXIuZGVidWcoInJlbW92aW5nIHZlcmlmeSB2MiBwdWJsaWMga2V5IGZyb20gc3RvcmFnZSIpLGF3YWl0IHRoaXMuc3RvcmUucmVtb3ZlSXRlbSh0aGlzLnN0b3JlS2V5KSx0aGlzLnB1YmxpY0tleT12b2lkIDB9KSxxcih0aGlzLCJpc1ZhbGlkSnd0QXR0ZXN0YXRpb24iLGFzeW5jIHM9Pntjb25zdCBpPWF3YWl0IHRoaXMuZ2V0UHVibGljS2V5KCk7dHJ5e2lmKGkpcmV0dXJuIHRoaXMudmFsaWRhdGVBdHRlc3RhdGlvbihzLGkpfWNhdGNoKGEpe3RoaXMubG9nZ2VyLmVycm9yKGEpLHRoaXMubG9nZ2VyLndhcm4oImVycm9yIHZhbGlkYXRpbmcgYXR0ZXN0YXRpb24iKX1jb25zdCBvPWF3YWl0IHRoaXMuZmV0Y2hBbmRQZXJzaXN0UHVibGljS2V5KCk7dHJ5e2lmKG8pcmV0dXJuIHRoaXMudmFsaWRhdGVBdHRlc3RhdGlvbihzLG8pfWNhdGNoKGEpe3RoaXMubG9nZ2VyLmVycm9yKGEpLHRoaXMubG9nZ2VyLndhcm4oImVycm9yIHZhbGlkYXRpbmcgYXR0ZXN0YXRpb24iKX19KSxxcih0aGlzLCJnZXRQdWJsaWNLZXkiLGFzeW5jKCk9PnRoaXMucHVibGljS2V5P3RoaXMucHVibGljS2V5OmF3YWl0IHRoaXMuZmV0Y2hBbmRQZXJzaXN0UHVibGljS2V5KCkpLHFyKHRoaXMsImZldGNoQW5kUGVyc2lzdFB1YmxpY0tleSIsYXN5bmMoKT0+e2lmKHRoaXMuZmV0Y2hQcm9taXNlKXJldHVybiBhd2FpdCB0aGlzLmZldGNoUHJvbWlzZSx0aGlzLnB1YmxpY0tleTt0aGlzLmZldGNoUHJvbWlzZT1uZXcgUHJvbWlzZShhc3luYyBpPT57Y29uc3Qgbz1hd2FpdCB0aGlzLmZldGNoUHVibGljS2V5KCk7byYmKGF3YWl0IHRoaXMucGVyc2lzdFB1YmxpY0tleShvKSxpKG8pKX0pO2NvbnN0IHM9YXdhaXQgdGhpcy5mZXRjaFByb21pc2U7cmV0dXJuIHRoaXMuZmV0Y2hQcm9taXNlPXZvaWQgMCxzfSkscXIodGhpcywidmFsaWRhdGVBdHRlc3RhdGlvbiIsKHMsaSk9Pntjb25zdCBvPUVpZShzLGkucHVibGljS2V5KSxhPXtoYXNFeHBpcmVkOlBlLnRvTWlsaXNlY29uZHMoby5leHApPERhdGUubm93KCkscGF5bG9hZDpvfTtpZihhLmhhc0V4cGlyZWQpdGhyb3cgdGhpcy5sb2dnZXIud2FybigicmVzb2x2ZTogand0IGF0dGVzdGF0aW9uIGV4cGlyZWQiKSxuZXcgRXJyb3IoIkpXVCBhdHRlc3RhdGlvbiBleHBpcmVkIik7cmV0dXJue29yaWdpbjphLnBheWxvYWQub3JpZ2luLGlzU2NhbTphLnBheWxvYWQuaXNTY2FtLGlzVmVyaWZpZWQ6YS5wYXlsb2FkLmlzVmVyaWZpZWR9fSksdGhpcy5sb2dnZXI9Tm4ocix0aGlzLm5hbWUpLHRoaXMuYWJvcnRDb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXIsdGhpcy5pc0RldkVudj1NNigpLHRoaXMuaW5pdCgpfWdldCBzdG9yZUtleSgpe3JldHVybiB0aGlzLnN0b3JhZ2VQcmVmaXgrdGhpcy52ZXJzaW9uK3RoaXMuY29yZS5jdXN0b21TdG9yYWdlUHJlZml4KyIvL3ZlcmlmeTpwdWJsaWM6a2V5In1nZXQgY29udGV4dCgpe3JldHVybiBwaSh0aGlzLmxvZ2dlcil9c3RhcnRBYm9ydFRpbWVyKGUpe3JldHVybiB0aGlzLmFib3J0Q29udHJvbGxlcj1uZXcgQWJvcnRDb250cm9sbGVyLHNldFRpbWVvdXQoKCk9PnRoaXMuYWJvcnRDb250cm9sbGVyLmFib3J0KCksUGUudG9NaWxpc2Vjb25kcyhlKSl9fXZhciBDbGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LHhsZT0odCxlLHIpPT5lIGluIHQ/Q2xlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixpUz0odCxlLHIpPT54bGUodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIF9sZSBleHRlbmRzIHpae2NvbnN0cnVjdG9yKGUscil7c3VwZXIoZSxyKSx0aGlzLnByb2plY3RJZD1lLHRoaXMubG9nZ2VyPXIsaVModGhpcywiY29udGV4dCIsa29lKSxpUyh0aGlzLCJyZWdpc3RlckRldmljZVRva2VuIixhc3luYyBuPT57Y29uc3R7Y2xpZW50SWQ6cyx0b2tlbjppLG5vdGlmaWNhdGlvblR5cGU6byxlbmFibGVFbmNyeXB0ZWQ6YT0hMX09bixjPWAke1NvZX0vJHt0aGlzLnByb2plY3RJZH0vY2xpZW50c2A7YXdhaXQgZmV0Y2goYyx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoe2NsaWVudF9pZDpzLHR5cGU6byx0b2tlbjppLGFsd2F5c19yYXc6YX0pfSl9KSx0aGlzLmxvZ2dlcj1ObihyLHRoaXMuY29udGV4dCl9fXZhciBrbGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LHNTPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsU2xlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQWxlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsRHg9KHQsZSxyKT0+ZSBpbiB0P2tsZSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsSHA9KHQsZSk9Pntmb3IodmFyIHIgaW4gZXx8KGU9e30pKVNsZS5jYWxsKGUscikmJkR4KHQscixlW3JdKTtpZihzUylmb3IodmFyIHIgb2Ygc1MoZSkpQWxlLmNhbGwoZSxyKSYmRHgodCxyLGVbcl0pO3JldHVybiB0fSxlbj0odCxlLHIpPT5EeCh0LHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUscik7Y2xhc3MgVGxlIGV4dGVuZHMgV1p7Y29uc3RydWN0b3IoZSxyLG49ITApe3N1cGVyKGUscixuKSx0aGlzLmNvcmU9ZSx0aGlzLmxvZ2dlcj1yLGVuKHRoaXMsImNvbnRleHQiLFRvZSksZW4odGhpcywic3RvcmFnZVByZWZpeCIsQ28pLGVuKHRoaXMsInN0b3JhZ2VWZXJzaW9uIixBb2UpLGVuKHRoaXMsImV2ZW50cyIsbmV3IE1hcCksZW4odGhpcywic2hvdWxkUGVyc2lzdCIsITEpLGVuKHRoaXMsImluaXQiLGFzeW5jKCk9PntpZighTTYoKSl0cnl7Y29uc3Qgcz17ZXZlbnRJZDpWOSgpLHRpbWVzdGFtcDpEYXRlLm5vdygpLGRvbWFpbjp0aGlzLmdldEFwcERvbWFpbigpLHByb3BzOntldmVudDoiSU5JVCIsdHlwZToiIixwcm9wZXJ0aWVzOntjbGllbnRfaWQ6YXdhaXQgdGhpcy5jb3JlLmNyeXB0by5nZXRDbGllbnRJZCgpLHVzZXJfYWdlbnQ6UU0odGhpcy5jb3JlLnJlbGF5ZXIucHJvdG9jb2wsdGhpcy5jb3JlLnJlbGF5ZXIudmVyc2lvbixUeCl9fX07YXdhaXQgdGhpcy5zZW5kRXZlbnQoW3NdKX1jYXRjaChzKXt0aGlzLmxvZ2dlci53YXJuKHMpfX0pLGVuKHRoaXMsImNyZWF0ZUV2ZW50IixzPT57Y29uc3R7ZXZlbnQ6aT0iRVJST1IiLHR5cGU6bz0iIixwcm9wZXJ0aWVzOnt0b3BpYzphLHRyYWNlOmN9fT1zLGw9VjkoKSxkPXRoaXMuY29yZS5wcm9qZWN0SWR8fCIiLHU9RGF0ZS5ub3coKSxoPUhwKHtldmVudElkOmwsdGltZXN0YW1wOnUscHJvcHM6e2V2ZW50OmksdHlwZTpvLHByb3BlcnRpZXM6e3RvcGljOmEsdHJhY2U6Y319LGJ1bmRsZUlkOmQsZG9tYWluOnRoaXMuZ2V0QXBwRG9tYWluKCl9LHRoaXMuc2V0TWV0aG9kcyhsKSk7cmV0dXJuIHRoaXMudGVsZW1ldHJ5RW5hYmxlZCYmKHRoaXMuZXZlbnRzLnNldChsLGgpLHRoaXMuc2hvdWxkUGVyc2lzdD0hMCksaH0pLGVuKHRoaXMsImdldEV2ZW50IixzPT57Y29uc3R7ZXZlbnRJZDppLHRvcGljOm99PXM7aWYoaSlyZXR1cm4gdGhpcy5ldmVudHMuZ2V0KGkpO2NvbnN0IGE9QXJyYXkuZnJvbSh0aGlzLmV2ZW50cy52YWx1ZXMoKSkuZmluZChjPT5jLnByb3BzLnByb3BlcnRpZXMudG9waWM9PT1vKTtpZihhKXJldHVybiBIcChIcCh7fSxhKSx0aGlzLnNldE1ldGhvZHMoYS5ldmVudElkKSl9KSxlbih0aGlzLCJkZWxldGVFdmVudCIscz0+e2NvbnN0e2V2ZW50SWQ6aX09czt0aGlzLmV2ZW50cy5kZWxldGUoaSksdGhpcy5zaG91bGRQZXJzaXN0PSEwfSksZW4odGhpcywic2V0RXZlbnRMaXN0ZW5lcnMiLCgpPT57dGhpcy5jb3JlLmhlYXJ0YmVhdC5vbihjcC5wdWxzZSxhc3luYygpPT57dGhpcy5zaG91bGRQZXJzaXN0JiZhd2FpdCB0aGlzLnBlcnNpc3QoKSx0aGlzLmV2ZW50cy5mb3JFYWNoKHM9PntQZS5mcm9tTWlsaXNlY29uZHMoRGF0ZS5ub3coKSktUGUuZnJvbU1pbGlzZWNvbmRzKHMudGltZXN0YW1wKT5Jb2UmJih0aGlzLmV2ZW50cy5kZWxldGUocy5ldmVudElkKSx0aGlzLnNob3VsZFBlcnNpc3Q9ITApfSl9KX0pLGVuKHRoaXMsInNldE1ldGhvZHMiLHM9Pih7YWRkVHJhY2U6aT0+dGhpcy5hZGRUcmFjZShzLGkpLHNldEVycm9yOmk9PnRoaXMuc2V0RXJyb3IocyxpKX0pKSxlbih0aGlzLCJhZGRUcmFjZSIsKHMsaSk9Pntjb25zdCBvPXRoaXMuZXZlbnRzLmdldChzKTtvJiYoby5wcm9wcy5wcm9wZXJ0aWVzLnRyYWNlLnB1c2goaSksdGhpcy5ldmVudHMuc2V0KHMsbyksdGhpcy5zaG91bGRQZXJzaXN0PSEwKX0pLGVuKHRoaXMsInNldEVycm9yIiwocyxpKT0+e2NvbnN0IG89dGhpcy5ldmVudHMuZ2V0KHMpO28mJihvLnByb3BzLnR5cGU9aSxvLnRpbWVzdGFtcD1EYXRlLm5vdygpLHRoaXMuZXZlbnRzLnNldChzLG8pLHRoaXMuc2hvdWxkUGVyc2lzdD0hMCl9KSxlbih0aGlzLCJwZXJzaXN0Iixhc3luYygpPT57YXdhaXQgdGhpcy5jb3JlLnN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXksQXJyYXkuZnJvbSh0aGlzLmV2ZW50cy52YWx1ZXMoKSkpLHRoaXMuc2hvdWxkUGVyc2lzdD0hMX0pLGVuKHRoaXMsInJlc3RvcmUiLGFzeW5jKCk9Pnt0cnl7Y29uc3Qgcz1hd2FpdCB0aGlzLmNvcmUuc3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleSl8fFtdO2lmKCFzLmxlbmd0aClyZXR1cm47cy5mb3JFYWNoKGk9Pnt0aGlzLmV2ZW50cy5zZXQoaS5ldmVudElkLEhwKEhwKHt9LGkpLHRoaXMuc2V0TWV0aG9kcyhpLmV2ZW50SWQpKSl9KX1jYXRjaChzKXt0aGlzLmxvZ2dlci53YXJuKHMpfX0pLGVuKHRoaXMsInN1Ym1pdCIsYXN5bmMoKT0+e2lmKCF0aGlzLnRlbGVtZXRyeUVuYWJsZWR8fHRoaXMuZXZlbnRzLnNpemU9PT0wKXJldHVybjtjb25zdCBzPVtdO2Zvcihjb25zdFtpLG9db2YgdGhpcy5ldmVudHMpby5wcm9wcy50eXBlJiZzLnB1c2gobyk7aWYocy5sZW5ndGghPT0wKXRyeXtpZigoYXdhaXQgdGhpcy5zZW5kRXZlbnQocykpLm9rKWZvcihjb25zdCBpIG9mIHMpdGhpcy5ldmVudHMuZGVsZXRlKGkuZXZlbnRJZCksdGhpcy5zaG91bGRQZXJzaXN0PSEwfWNhdGNoKGkpe3RoaXMubG9nZ2VyLndhcm4oaSl9fSksZW4odGhpcywic2VuZEV2ZW50Iixhc3luYyBzPT57Y29uc3QgaT10aGlzLmdldEFwcERvbWFpbigpPyIiOiImc3A9ZGVza3RvcCI7cmV0dXJuIGF3YWl0IGZldGNoKGAke1JvZX0/cHJvamVjdElkPSR7dGhpcy5jb3JlLnByb2plY3RJZH0mc3Q9ZXZlbnRzX3NkayZzdj1qcy0ke1R4fSR7aX1gLHttZXRob2Q6IlBPU1QiLGJvZHk6SlNPTi5zdHJpbmdpZnkocyl9KX0pLGVuKHRoaXMsImdldEFwcERvbWFpbiIsKCk9PlhNKCkudXJsKSx0aGlzLmxvZ2dlcj1ObihyLHRoaXMuY29udGV4dCksdGhpcy50ZWxlbWV0cnlFbmFibGVkPW4sbj90aGlzLnJlc3RvcmUoKS50aGVuKGFzeW5jKCk9Pnthd2FpdCB0aGlzLnN1Ym1pdCgpLHRoaXMuc2V0RXZlbnRMaXN0ZW5lcnMoKX0pOnRoaXMucGVyc2lzdCgpfWdldCBzdG9yYWdlS2V5KCl7cmV0dXJuIHRoaXMuc3RvcmFnZVByZWZpeCt0aGlzLnN0b3JhZ2VWZXJzaW9uK3RoaXMuY29yZS5jdXN0b21TdG9yYWdlUHJlZml4KyIvLyIrdGhpcy5jb250ZXh0fX12YXIgSWxlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxvUz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFJsZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LE5sZT1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLEJ4PSh0LGUscik9PmUgaW4gdD9JbGUodCxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpyfSk6dFtlXT1yLGFTPSh0LGUpPT57Zm9yKHZhciByIGluIGV8fChlPXt9KSlSbGUuY2FsbChlLHIpJiZCeCh0LHIsZVtyXSk7aWYob1MpZm9yKHZhciByIG9mIG9TKGUpKU5sZS5jYWxsKGUscikmJkJ4KHQscixlW3JdKTtyZXR1cm4gdH0scnI9KHQsZSxyKT0+QngodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2xldCBQbGU9Y2xhc3MgaUIgZXh0ZW5kcyBSWntjb25zdHJ1Y3RvcihlKXt2YXIgcjtzdXBlcihlKSxycih0aGlzLCJwcm90b2NvbCIsV0QpLHJyKHRoaXMsInZlcnNpb24iLEhEKSxycih0aGlzLCJuYW1lIixBeCkscnIodGhpcywicmVsYXlVcmwiKSxycih0aGlzLCJwcm9qZWN0SWQiKSxycih0aGlzLCJjdXN0b21TdG9yYWdlUHJlZml4IikscnIodGhpcywiZXZlbnRzIixuZXcgb3MuRXZlbnRFbWl0dGVyKSxycih0aGlzLCJsb2dnZXIiKSxycih0aGlzLCJoZWFydGJlYXQiKSxycih0aGlzLCJyZWxheWVyIikscnIodGhpcywiY3J5cHRvIikscnIodGhpcywic3RvcmFnZSIpLHJyKHRoaXMsImhpc3RvcnkiKSxycih0aGlzLCJleHBpcmVyIikscnIodGhpcywicGFpcmluZyIpLHJyKHRoaXMsInZlcmlmeSIpLHJyKHRoaXMsImVjaG9DbGllbnQiKSxycih0aGlzLCJsaW5rTW9kZVN1cHBvcnRlZEFwcHMiKSxycih0aGlzLCJldmVudENsaWVudCIpLHJyKHRoaXMsImluaXRpYWxpemVkIiwhMSkscnIodGhpcywibG9nQ2h1bmtDb250cm9sbGVyIikscnIodGhpcywib24iLChhLGMpPT50aGlzLmV2ZW50cy5vbihhLGMpKSxycih0aGlzLCJvbmNlIiwoYSxjKT0+dGhpcy5ldmVudHMub25jZShhLGMpKSxycih0aGlzLCJvZmYiLChhLGMpPT50aGlzLmV2ZW50cy5vZmYoYSxjKSkscnIodGhpcywicmVtb3ZlTGlzdGVuZXIiLChhLGMpPT50aGlzLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihhLGMpKSxycih0aGlzLCJkaXNwYXRjaEVudmVsb3BlIiwoe3RvcGljOmEsbWVzc2FnZTpjLHNlc3Npb25FeGlzdHM6bH0pPT57aWYoIWF8fCFjKXJldHVybjtjb25zdCBkPXt0b3BpYzphLG1lc3NhZ2U6YyxwdWJsaXNoZWRBdDpEYXRlLm5vdygpLHRyYW5zcG9ydFR5cGU6Y3IubGlua19tb2RlfTt0aGlzLnJlbGF5ZXIub25MaW5rTWVzc2FnZUV2ZW50KGQse3Nlc3Npb25FeGlzdHM6bH0pfSk7Y29uc3Qgbj10aGlzLmdldEdsb2JhbENvcmUoZT8uY3VzdG9tU3RvcmFnZVByZWZpeCk7aWYobil0cnl7cmV0dXJuIHRoaXMuY3VzdG9tU3RvcmFnZVByZWZpeD1uLmN1c3RvbVN0b3JhZ2VQcmVmaXgsdGhpcy5sb2dnZXI9bi5sb2dnZXIsdGhpcy5oZWFydGJlYXQ9bi5oZWFydGJlYXQsdGhpcy5jcnlwdG89bi5jcnlwdG8sdGhpcy5oaXN0b3J5PW4uaGlzdG9yeSx0aGlzLmV4cGlyZXI9bi5leHBpcmVyLHRoaXMuc3RvcmFnZT1uLnN0b3JhZ2UsdGhpcy5yZWxheWVyPW4ucmVsYXllcix0aGlzLnBhaXJpbmc9bi5wYWlyaW5nLHRoaXMudmVyaWZ5PW4udmVyaWZ5LHRoaXMuZWNob0NsaWVudD1uLmVjaG9DbGllbnQsdGhpcy5saW5rTW9kZVN1cHBvcnRlZEFwcHM9bi5saW5rTW9kZVN1cHBvcnRlZEFwcHMsdGhpcy5ldmVudENsaWVudD1uLmV2ZW50Q2xpZW50LHRoaXMuaW5pdGlhbGl6ZWQ9bi5pbml0aWFsaXplZCx0aGlzLmxvZ0NodW5rQ29udHJvbGxlcj1uLmxvZ0NodW5rQ29udHJvbGxlcixufWNhdGNoKGEpe2NvbnNvbGUud2FybigiRmFpbGVkIHRvIGNvcHkgZ2xvYmFsIGNvcmUiLGEpfXRoaXMucHJvamVjdElkPWU/LnByb2plY3RJZCx0aGlzLnJlbGF5VXJsPWU/LnJlbGF5VXJsfHxWRCx0aGlzLmN1c3RvbVN0b3JhZ2VQcmVmaXg9ZSE9bnVsbCYmZS5jdXN0b21TdG9yYWdlUHJlZml4P2A6JHtlLmN1c3RvbVN0b3JhZ2VQcmVmaXh9YDoiIjtjb25zdCBzPWxwKHtsZXZlbDp0eXBlb2YgZT8ubG9nZ2VyPT0ic3RyaW5nIiYmZS5sb2dnZXI/ZS5sb2dnZXI6WHNlLmxvZ2dlcixuYW1lOkF4fSkse2xvZ2dlcjppLGNodW5rTG9nZ2VyQ29udHJvbGxlcjpvfT1FNih7b3B0czpzLG1heFNpemVJbkJ5dGVzOmU/Lm1heExvZ0Jsb2JTaXplSW5CeXRlcyxsb2dnZXJPdmVycmlkZTplPy5sb2dnZXJ9KTt0aGlzLmxvZ0NodW5rQ29udHJvbGxlcj1vLChyPXRoaXMubG9nQ2h1bmtDb250cm9sbGVyKSE9bnVsbCYmci5kb3dubG9hZExvZ3NCbG9iSW5Ccm93c2VyJiYod2luZG93LmRvd25sb2FkTG9nc0Jsb2JJbkJyb3dzZXI9YXN5bmMoKT0+e3ZhciBhLGM7KGE9dGhpcy5sb2dDaHVua0NvbnRyb2xsZXIpIT1udWxsJiZhLmRvd25sb2FkTG9nc0Jsb2JJbkJyb3dzZXImJigoYz10aGlzLmxvZ0NodW5rQ29udHJvbGxlcik9PW51bGx8fGMuZG93bmxvYWRMb2dzQmxvYkluQnJvd3Nlcih7Y2xpZW50SWQ6YXdhaXQgdGhpcy5jcnlwdG8uZ2V0Q2xpZW50SWQoKX0pKX0pLHRoaXMubG9nZ2VyPU5uKGksdGhpcy5uYW1lKSx0aGlzLmhlYXJ0YmVhdD1uZXcgSUssdGhpcy5jcnlwdG89bmV3IHNjZSh0aGlzLHRoaXMubG9nZ2VyLGU/LmtleWNoYWluKSx0aGlzLmhpc3Rvcnk9bmV3IG1sZSh0aGlzLHRoaXMubG9nZ2VyKSx0aGlzLmV4cGlyZXI9bmV3IGJsZSh0aGlzLHRoaXMubG9nZ2VyKSx0aGlzLnN0b3JhZ2U9ZSE9bnVsbCYmZS5zdG9yYWdlP2Uuc3RvcmFnZTpuZXcgZFooYVMoYVMoe30sUXNlKSxlPy5zdG9yYWdlT3B0aW9ucykpLHRoaXMucmVsYXllcj1uZXcgUGNlKHtjb3JlOnRoaXMsbG9nZ2VyOnRoaXMubG9nZ2VyLHJlbGF5VXJsOnRoaXMucmVsYXlVcmwscHJvamVjdElkOnRoaXMucHJvamVjdElkfSksdGhpcy5wYWlyaW5nPW5ldyBobGUodGhpcyx0aGlzLmxvZ2dlciksdGhpcy52ZXJpZnk9bmV3IEVsZSh0aGlzLHRoaXMubG9nZ2VyLHRoaXMuc3RvcmFnZSksdGhpcy5lY2hvQ2xpZW50PW5ldyBfbGUodGhpcy5wcm9qZWN0SWR8fCIiLHRoaXMubG9nZ2VyKSx0aGlzLmxpbmtNb2RlU3VwcG9ydGVkQXBwcz1bXSx0aGlzLmV2ZW50Q2xpZW50PW5ldyBUbGUodGhpcyx0aGlzLmxvZ2dlcixlPy50ZWxlbWV0cnlFbmFibGVkKSx0aGlzLnNldEdsb2JhbENvcmUodGhpcyl9c3RhdGljIGFzeW5jIGluaXQoZSl7Y29uc3Qgcj1uZXcgaUIoZSk7YXdhaXQgci5pbml0aWFsaXplKCk7Y29uc3Qgbj1hd2FpdCByLmNyeXB0by5nZXRDbGllbnRJZCgpO3JldHVybiBhd2FpdCByLnN0b3JhZ2Uuc2V0SXRlbShob2Usbikscn1nZXQgY29udGV4dCgpe3JldHVybiBwaSh0aGlzLmxvZ2dlcil9YXN5bmMgc3RhcnQoKXt0aGlzLmluaXRpYWxpemVkfHxhd2FpdCB0aGlzLmluaXRpYWxpemUoKX1hc3luYyBnZXRMb2dzQmxvYigpe3ZhciBlO3JldHVybihlPXRoaXMubG9nQ2h1bmtDb250cm9sbGVyKT09bnVsbD92b2lkIDA6ZS5sb2dzVG9CbG9iKHtjbGllbnRJZDphd2FpdCB0aGlzLmNyeXB0by5nZXRDbGllbnRJZCgpfSl9YXN5bmMgYWRkTGlua01vZGVTdXBwb3J0ZWRBcHAoZSl7dGhpcy5saW5rTW9kZVN1cHBvcnRlZEFwcHMuaW5jbHVkZXMoZSl8fCh0aGlzLmxpbmtNb2RlU3VwcG9ydGVkQXBwcy5wdXNoKGUpLGF3YWl0IHRoaXMuc3RvcmFnZS5zZXRJdGVtKEZrLHRoaXMubGlua01vZGVTdXBwb3J0ZWRBcHBzKSl9YXN5bmMgaW5pdGlhbGl6ZSgpe3RoaXMubG9nZ2VyLnRyYWNlKCJJbml0aWFsaXplZCIpO3RyeXthd2FpdCB0aGlzLmNyeXB0by5pbml0KCksYXdhaXQgdGhpcy5oaXN0b3J5LmluaXQoKSxhd2FpdCB0aGlzLmV4cGlyZXIuaW5pdCgpLGF3YWl0IHRoaXMucmVsYXllci5pbml0KCksYXdhaXQgdGhpcy5oZWFydGJlYXQuaW5pdCgpLGF3YWl0IHRoaXMucGFpcmluZy5pbml0KCksdGhpcy5saW5rTW9kZVN1cHBvcnRlZEFwcHM9YXdhaXQgdGhpcy5zdG9yYWdlLmdldEl0ZW0oRmspfHxbXSx0aGlzLmluaXRpYWxpemVkPSEwLHRoaXMubG9nZ2VyLmluZm8oIkNvcmUgSW5pdGlhbGl6YXRpb24gU3VjY2VzcyIpfWNhdGNoKGUpe3Rocm93IHRoaXMubG9nZ2VyLndhcm4oYENvcmUgSW5pdGlhbGl6YXRpb24gRmFpbHVyZSBhdCBlcG9jaCAke0RhdGUubm93KCl9YCxlKSx0aGlzLmxvZ2dlci5lcnJvcihlLm1lc3NhZ2UpLGV9fWdldEdsb2JhbENvcmUoZT0iIil7dHJ5e2lmKHRoaXMuaXNHbG9iYWxDb3JlRGlzYWJsZWQoKSlyZXR1cm47Y29uc3Qgcj1gX3dhbGxldENvbm5lY3RDb3JlXyR7ZX1gLG49YCR7cn1fY291bnRgO3JldHVybiBnbG9iYWxUaGlzW25dPShnbG9iYWxUaGlzW25dfHwwKSsxLGdsb2JhbFRoaXNbbl0+MSYmY29uc29sZS53YXJuKGBXYWxsZXRDb25uZWN0IENvcmUgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4gVGhpcyBpcyBwcm9iYWJseSBhIG1pc3Rha2UgYW5kIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuIEluaXQoKSB3YXMgY2FsbGVkICR7Z2xvYmFsVGhpc1tuXX0gdGltZXMuYCksZ2xvYmFsVGhpc1tyXX1jYXRjaChyKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBnZXQgZ2xvYmFsIFdhbGxldENvbm5lY3QgY29yZSIscik7cmV0dXJufX1zZXRHbG9iYWxDb3JlKGUpe3ZhciByO3RyeXtpZih0aGlzLmlzR2xvYmFsQ29yZURpc2FibGVkKCkpcmV0dXJuO2NvbnN0IG49YF93YWxsZXRDb25uZWN0Q29yZV8keygocj1lLm9wdHMpPT1udWxsP3ZvaWQgMDpyLmN1c3RvbVN0b3JhZ2VQcmVmaXgpfHwiIn1gO2dsb2JhbFRoaXNbbl09ZX1jYXRjaChuKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBzZXQgZ2xvYmFsIFdhbGxldENvbm5lY3QgY29yZSIsbil9fWlzR2xvYmFsQ29yZURpc2FibGVkKCl7dHJ5e3JldHVybiB0eXBlb2YgcHJvY2VzczwidSImJkpzZS5ESVNBQkxFX0dMT0JBTF9DT1JFPT09InRydWUifWNhdGNoe3JldHVybiEwfX19O2NvbnN0IE9sZT1QbGUsc0I9IndjIixvQj0yLGFCPSJjbGllbnQiLFY2PWAke3NCfUAke29CfToke2FCfTpgLHMzPXtuYW1lOmFCLGxvZ2dlcjoiZXJyb3IifSxjUz0iV0FMTEVUQ09OTkVDVF9ERUVQTElOS19DSE9JQ0UiLCRsZT0icHJvcG9zYWwiLGxTPSJQcm9wb3NhbCBleHBpcmVkIixNbGU9InNlc3Npb24iLE9kPVBlLlNFVkVOX0RBWVMsRGxlPSJlbmdpbmUiLHRuPXt3Y19zZXNzaW9uUHJvcG9zZTp7cmVxOnt0dGw6UGUuRklWRV9NSU5VVEVTLHByb21wdDohMCx0YWc6MTEwMH0scmVzOnt0dGw6UGUuRklWRV9NSU5VVEVTLHByb21wdDohMSx0YWc6MTEwMX0scmVqZWN0Ont0dGw6UGUuRklWRV9NSU5VVEVTLHByb21wdDohMSx0YWc6MTEyMH0sYXV0b1JlamVjdDp7dHRsOlBlLkZJVkVfTUlOVVRFUyxwcm9tcHQ6ITEsdGFnOjExMjF9fSx3Y19zZXNzaW9uU2V0dGxlOntyZXE6e3R0bDpQZS5GSVZFX01JTlVURVMscHJvbXB0OiExLHRhZzoxMTAyfSxyZXM6e3R0bDpQZS5GSVZFX01JTlVURVMscHJvbXB0OiExLHRhZzoxMTAzfX0sd2Nfc2Vzc2lvblVwZGF0ZTp7cmVxOnt0dGw6UGUuT05FX0RBWSxwcm9tcHQ6ITEsdGFnOjExMDR9LHJlczp7dHRsOlBlLk9ORV9EQVkscHJvbXB0OiExLHRhZzoxMTA1fX0sd2Nfc2Vzc2lvbkV4dGVuZDp7cmVxOnt0dGw6UGUuT05FX0RBWSxwcm9tcHQ6ITEsdGFnOjExMDZ9LHJlczp7dHRsOlBlLk9ORV9EQVkscHJvbXB0OiExLHRhZzoxMTA3fX0sd2Nfc2Vzc2lvblJlcXVlc3Q6e3JlcTp7dHRsOlBlLkZJVkVfTUlOVVRFUyxwcm9tcHQ6ITAsdGFnOjExMDh9LHJlczp7dHRsOlBlLkZJVkVfTUlOVVRFUyxwcm9tcHQ6ITEsdGFnOjExMDl9fSx3Y19zZXNzaW9uRXZlbnQ6e3JlcTp7dHRsOlBlLkZJVkVfTUlOVVRFUyxwcm9tcHQ6ITAsdGFnOjExMTB9LHJlczp7dHRsOlBlLkZJVkVfTUlOVVRFUyxwcm9tcHQ6ITEsdGFnOjExMTF9fSx3Y19zZXNzaW9uRGVsZXRlOntyZXE6e3R0bDpQZS5PTkVfREFZLHByb21wdDohMSx0YWc6MTExMn0scmVzOnt0dGw6UGUuT05FX0RBWSxwcm9tcHQ6ITEsdGFnOjExMTN9fSx3Y19zZXNzaW9uUGluZzp7cmVxOnt0dGw6UGUuT05FX0RBWSxwcm9tcHQ6ITEsdGFnOjExMTR9LHJlczp7dHRsOlBlLk9ORV9EQVkscHJvbXB0OiExLHRhZzoxMTE1fX0sd2Nfc2Vzc2lvbkF1dGhlbnRpY2F0ZTp7cmVxOnt0dGw6UGUuT05FX0hPVVIscHJvbXB0OiEwLHRhZzoxMTE2fSxyZXM6e3R0bDpQZS5PTkVfSE9VUixwcm9tcHQ6ITEsdGFnOjExMTd9LHJlamVjdDp7dHRsOlBlLkZJVkVfTUlOVVRFUyxwcm9tcHQ6ITEsdGFnOjExMTh9LGF1dG9SZWplY3Q6e3R0bDpQZS5GSVZFX01JTlVURVMscHJvbXB0OiExLHRhZzoxMTE5fX19LG8zPXttaW46UGUuRklWRV9NSU5VVEVTLG1heDpQZS5TRVZFTl9EQVlTfSxhbz17aWRsZToiSURMRSIsYWN0aXZlOiJBQ1RJVkUifSx1Uz17ZXRoX3NlbmRUcmFuc2FjdGlvbjp7a2V5OiIifSxldGhfc2VuZFJhd1RyYW5zYWN0aW9uOntrZXk6IiJ9LHdhbGxldF9zZW5kQ2FsbHM6e2tleToiIn0sc29sYW5hX3NpZ25UcmFuc2FjdGlvbjp7a2V5OiJzaWduYXR1cmUifSxzb2xhbmFfc2lnbkFsbFRyYW5zYWN0aW9uczp7a2V5OiJ0cmFuc2FjdGlvbnMifSxzb2xhbmFfc2lnbkFuZFNlbmRUcmFuc2FjdGlvbjp7a2V5OiJzaWduYXR1cmUifX0sQmxlPSJyZXF1ZXN0IixMbGU9WyJ3Y19zZXNzaW9uUHJvcG9zZSIsIndjX3Nlc3Npb25SZXF1ZXN0Iiwid2NfYXV0aFJlcXVlc3QiLCJ3Y19zZXNzaW9uQXV0aGVudGljYXRlIl0sVWxlPSJ3YyIsRmxlPSJhdXRoIixqbGU9ImF1dGhLZXlzIix6bGU9InBhaXJpbmdUb3BpY3MiLFdsZT0icmVxdWVzdHMiLEd5PWAke1VsZX1AJHsxLjV9OiR7RmxlfTpgLEh3PWAke0d5fTpQVUJfS0VZYDt2YXIgSGxlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxxbGU9T2JqZWN0LmRlZmluZVByb3BlcnRpZXMsVmxlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLGRTPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsR2xlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksS2xlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsTHg9KHQsZSxyKT0+ZSBpbiB0P0hsZSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsUXQ9KHQsZSk9Pntmb3IodmFyIHIgaW4gZXx8KGU9e30pKUdsZS5jYWxsKGUscikmJkx4KHQscixlW3JdKTtpZihkUylmb3IodmFyIHIgb2YgZFMoZSkpS2xlLmNhbGwoZSxyKSYmTHgodCxyLGVbcl0pO3JldHVybiB0fSxQbj0odCxlKT0+cWxlKHQsVmxlKGUpKSxrZT0odCxlLHIpPT5MeCh0LHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUscik7Y2xhc3MgWmxlIGV4dGVuZHMgR1p7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksa2UodGhpcywibmFtZSIsRGxlKSxrZSh0aGlzLCJldmVudHMiLG5ldyB5Niksa2UodGhpcywiaW5pdGlhbGl6ZWQiLCExKSxrZSh0aGlzLCJyZXF1ZXN0UXVldWUiLHtzdGF0ZTphby5pZGxlLHF1ZXVlOltdfSksa2UodGhpcywic2Vzc2lvblJlcXVlc3RRdWV1ZSIse3N0YXRlOmFvLmlkbGUscXVldWU6W119KSxrZSh0aGlzLCJyZXF1ZXN0UXVldWVEZWxheSIsUGUuT05FX1NFQ09ORCksa2UodGhpcywiZXhwZWN0ZWRQYWlyaW5nTWV0aG9kTWFwIixuZXcgTWFwKSxrZSh0aGlzLCJyZWNlbnRseURlbGV0ZWRNYXAiLG5ldyBNYXApLGtlKHRoaXMsInJlY2VudGx5RGVsZXRlZExpbWl0IiwyMDApLGtlKHRoaXMsInJlbGF5TWVzc2FnZUNhY2hlIixbXSksa2UodGhpcywicGVuZGluZ1Nlc3Npb25zIixuZXcgTWFwKSxrZSh0aGlzLCJpbml0Iixhc3luYygpPT57dGhpcy5pbml0aWFsaXplZHx8KGF3YWl0IHRoaXMuY2xlYW51cCgpLHRoaXMucmVnaXN0ZXJSZWxheWVyRXZlbnRzKCksdGhpcy5yZWdpc3RlckV4cGlyZXJFdmVudHMoKSx0aGlzLnJlZ2lzdGVyUGFpcmluZ0V2ZW50cygpLGF3YWl0IHRoaXMucmVnaXN0ZXJMaW5rTW9kZUxpc3RlbmVycygpLHRoaXMuY2xpZW50LmNvcmUucGFpcmluZy5yZWdpc3Rlcih7bWV0aG9kczpPYmplY3Qua2V5cyh0bil9KSx0aGlzLmluaXRpYWxpemVkPSEwLHNldFRpbWVvdXQoYXN5bmMoKT0+e2F3YWl0IHRoaXMucHJvY2Vzc1BlbmRpbmdNZXNzYWdlRXZlbnRzKCksdGhpcy5zZXNzaW9uUmVxdWVzdFF1ZXVlLnF1ZXVlPXRoaXMuZ2V0UGVuZGluZ1Nlc3Npb25SZXF1ZXN0cygpLHRoaXMucHJvY2Vzc1Nlc3Npb25SZXF1ZXN0UXVldWUoKX0sUGUudG9NaWxpc2Vjb25kcyh0aGlzLnJlcXVlc3RRdWV1ZURlbGF5KSkpfSksa2UodGhpcywiY29ubmVjdCIsYXN5bmMgcj0+e3RoaXMuaXNJbml0aWFsaXplZCgpLGF3YWl0IHRoaXMuY29uZmlybU9ubGluZVN0YXRlT3JUaHJvdygpO2NvbnN0IG49UG4oUXQoe30scikse3JlcXVpcmVkTmFtZXNwYWNlczpyLnJlcXVpcmVkTmFtZXNwYWNlc3x8e30sb3B0aW9uYWxOYW1lc3BhY2VzOnIub3B0aW9uYWxOYW1lc3BhY2VzfHx7fX0pO2F3YWl0IHRoaXMuaXNWYWxpZENvbm5lY3Qobik7Y29uc3R7cGFpcmluZ1RvcGljOnMscmVxdWlyZWROYW1lc3BhY2VzOmksb3B0aW9uYWxOYW1lc3BhY2VzOm8sc2Vzc2lvblByb3BlcnRpZXM6YSxzY29wZWRQcm9wZXJ0aWVzOmMscmVsYXlzOmx9PW47bGV0IGQ9cyx1LGg9ITE7dHJ5e2lmKGQpe2NvbnN0IGs9dGhpcy5jbGllbnQuY29yZS5wYWlyaW5nLnBhaXJpbmdzLmdldChkKTt0aGlzLmNsaWVudC5sb2dnZXIud2FybigiY29ubmVjdCgpIHdpdGggZXhpc3RpbmcgcGFpcmluZyB0b3BpYyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4iKSxoPWsuYWN0aXZlfX1jYXRjaChrKXt0aHJvdyB0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3IoYGNvbm5lY3QoKSAtPiBwYWlyaW5nLmdldCgke2R9KSBmYWlsZWRgKSxrfWlmKCFkfHwhaCl7Y29uc3R7dG9waWM6ayx1cmk6QX09YXdhaXQgdGhpcy5jbGllbnQuY29yZS5wYWlyaW5nLmNyZWF0ZSgpO2Q9ayx1PUF9aWYoIWQpe2NvbnN0e21lc3NhZ2U6a309T2UoIk5PX01BVENISU5HX0tFWSIsYGNvbm5lY3QoKSBwYWlyaW5nIHRvcGljOiAke2R9YCk7dGhyb3cgbmV3IEVycm9yKGspfWNvbnN0IHA9YXdhaXQgdGhpcy5jbGllbnQuY29yZS5jcnlwdG8uZ2VuZXJhdGVLZXlQYWlyKCksZj10bi53Y19zZXNzaW9uUHJvcG9zZS5yZXEudHRsfHxQZS5GSVZFX01JTlVURVMsbT1ZcihmKSx3PVBuKFF0KFF0KHtyZXF1aXJlZE5hbWVzcGFjZXM6aSxvcHRpb25hbE5hbWVzcGFjZXM6byxyZWxheXM6bD8/W3twcm90b2NvbDpxRH1dLHByb3Bvc2VyOntwdWJsaWNLZXk6cCxtZXRhZGF0YTp0aGlzLmNsaWVudC5tZXRhZGF0YX0sZXhwaXJ5VGltZXN0YW1wOm0scGFpcmluZ1RvcGljOmR9LGEmJntzZXNzaW9uUHJvcGVydGllczphfSksYyYme3Njb3BlZFByb3BlcnRpZXM6Y30pLHtpZDpobygpfSksZz1GdCgic2Vzc2lvbl9jb25uZWN0Iix3LmlkKSx7cmVqZWN0OnYscmVzb2x2ZTpFLGRvbmU6eH09VWwoZixsUyksXz0oe2lkOmt9KT0+e2s9PT13LmlkJiYodGhpcy5jbGllbnQuZXZlbnRzLm9mZigicHJvcG9zYWxfZXhwaXJlIixfKSx0aGlzLnBlbmRpbmdTZXNzaW9ucy5kZWxldGUody5pZCksdGhpcy5ldmVudHMuZW1pdChnLHtlcnJvcjp7bWVzc2FnZTpsUyxjb2RlOjB9fSkpfTtyZXR1cm4gdGhpcy5jbGllbnQuZXZlbnRzLm9uKCJwcm9wb3NhbF9leHBpcmUiLF8pLHRoaXMuZXZlbnRzLm9uY2UoZywoe2Vycm9yOmssc2Vzc2lvbjpBfSk9Pnt0aGlzLmNsaWVudC5ldmVudHMub2ZmKCJwcm9wb3NhbF9leHBpcmUiLF8pLGs/dihrKTpBJiZFKEEpfSksYXdhaXQgdGhpcy5zZW5kUmVxdWVzdCh7dG9waWM6ZCxtZXRob2Q6IndjX3Nlc3Npb25Qcm9wb3NlIixwYXJhbXM6dyx0aHJvd09uRmFpbGVkUHVibGlzaDohMCxjbGllbnRScGNJZDp3LmlkfSksYXdhaXQgdGhpcy5zZXRQcm9wb3NhbCh3LmlkLHcpLHt1cmk6dSxhcHByb3ZhbDp4fX0pLGtlKHRoaXMsInBhaXIiLGFzeW5jIHI9Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKSxhd2FpdCB0aGlzLmNvbmZpcm1PbmxpbmVTdGF0ZU9yVGhyb3coKTt0cnl7cmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LmNvcmUucGFpcmluZy5wYWlyKHIpfWNhdGNoKG4pe3Rocm93IHRoaXMuY2xpZW50LmxvZ2dlci5lcnJvcigicGFpcigpIGZhaWxlZCIpLG59fSksa2UodGhpcywiYXBwcm92ZSIsYXN5bmMgcj0+e3ZhciBuLHMsaTtjb25zdCBvPXRoaXMuY2xpZW50LmNvcmUuZXZlbnRDbGllbnQuY3JlYXRlRXZlbnQoe3Byb3BlcnRpZXM6e3RvcGljOihuPXI/LmlkKT09bnVsbD92b2lkIDA6bi50b1N0cmluZygpLHRyYWNlOlttcy5zZXNzaW9uX2FwcHJvdmVfc3RhcnRlZF19fSk7dHJ5e3RoaXMuaXNJbml0aWFsaXplZCgpLGF3YWl0IHRoaXMuY29uZmlybU9ubGluZVN0YXRlT3JUaHJvdygpfWNhdGNoKFApe3Rocm93IG8uc2V0RXJyb3IobWwubm9faW50ZXJuZXRfY29ubmVjdGlvbiksUH10cnl7YXdhaXQgdGhpcy5pc1ZhbGlkUHJvcG9zYWxJZChyPy5pZCl9Y2F0Y2goUCl7dGhyb3cgdGhpcy5jbGllbnQubG9nZ2VyLmVycm9yKGBhcHByb3ZlKCkgLT4gcHJvcG9zYWwuZ2V0KCR7cj8uaWR9KSBmYWlsZWRgKSxvLnNldEVycm9yKG1sLnByb3Bvc2FsX25vdF9mb3VuZCksUH10cnl7YXdhaXQgdGhpcy5pc1ZhbGlkQXBwcm92ZShyKX1jYXRjaChQKXt0aHJvdyB0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3IoImFwcHJvdmUoKSAtPiBpc1ZhbGlkQXBwcm92ZSgpIGZhaWxlZCIpLG8uc2V0RXJyb3IobWwuc2Vzc2lvbl9hcHByb3ZlX25hbWVzcGFjZV92YWxpZGF0aW9uX2ZhaWx1cmUpLFB9Y29uc3R7aWQ6YSxyZWxheVByb3RvY29sOmMsbmFtZXNwYWNlczpsLHNlc3Npb25Qcm9wZXJ0aWVzOmQsc2NvcGVkUHJvcGVydGllczp1LHNlc3Npb25Db25maWc6aH09cixwPXRoaXMuY2xpZW50LnByb3Bvc2FsLmdldChhKTt0aGlzLmNsaWVudC5jb3JlLmV2ZW50Q2xpZW50LmRlbGV0ZUV2ZW50KHtldmVudElkOm8uZXZlbnRJZH0pO2NvbnN0e3BhaXJpbmdUb3BpYzpmLHByb3Bvc2VyOm0scmVxdWlyZWROYW1lc3BhY2VzOncsb3B0aW9uYWxOYW1lc3BhY2VzOmd9PXA7bGV0IHY9KHM9dGhpcy5jbGllbnQuY29yZS5ldmVudENsaWVudCk9PW51bGw/dm9pZCAwOnMuZ2V0RXZlbnQoe3RvcGljOmZ9KTt2fHwodj0oaT10aGlzLmNsaWVudC5jb3JlLmV2ZW50Q2xpZW50KT09bnVsbD92b2lkIDA6aS5jcmVhdGVFdmVudCh7dHlwZTptcy5zZXNzaW9uX2FwcHJvdmVfc3RhcnRlZCxwcm9wZXJ0aWVzOnt0b3BpYzpmLHRyYWNlOlttcy5zZXNzaW9uX2FwcHJvdmVfc3RhcnRlZCxtcy5zZXNzaW9uX25hbWVzcGFjZXNfdmFsaWRhdGlvbl9zdWNjZXNzXX19KSk7Y29uc3QgRT1hd2FpdCB0aGlzLmNsaWVudC5jb3JlLmNyeXB0by5nZW5lcmF0ZUtleVBhaXIoKSx4PW0ucHVibGljS2V5LF89YXdhaXQgdGhpcy5jbGllbnQuY29yZS5jcnlwdG8uZ2VuZXJhdGVTaGFyZWRLZXkoRSx4KSxrPVF0KFF0KFF0KHtyZWxheTp7cHJvdG9jb2w6Yz8/ImlybiJ9LG5hbWVzcGFjZXM6bCxjb250cm9sbGVyOntwdWJsaWNLZXk6RSxtZXRhZGF0YTp0aGlzLmNsaWVudC5tZXRhZGF0YX0sZXhwaXJ5OllyKE9kKX0sZCYme3Nlc3Npb25Qcm9wZXJ0aWVzOmR9KSx1JiZ7c2NvcGVkUHJvcGVydGllczp1fSksaCYme3Nlc3Npb25Db25maWc6aH0pLEE9Y3IucmVsYXk7di5hZGRUcmFjZShtcy5zdWJzY3JpYmluZ19zZXNzaW9uX3RvcGljKTt0cnl7YXdhaXQgdGhpcy5jbGllbnQuY29yZS5yZWxheWVyLnN1YnNjcmliZShfLHt0cmFuc3BvcnRUeXBlOkF9KX1jYXRjaChQKXt0aHJvdyB2LnNldEVycm9yKG1sLnN1YnNjcmliZV9zZXNzaW9uX3RvcGljX2ZhaWx1cmUpLFB9di5hZGRUcmFjZShtcy5zdWJzY3JpYmVfc2Vzc2lvbl90b3BpY19zdWNjZXNzKTtjb25zdCBNPVBuKFF0KHt9LGspLHt0b3BpYzpfLHJlcXVpcmVkTmFtZXNwYWNlczp3LG9wdGlvbmFsTmFtZXNwYWNlczpnLHBhaXJpbmdUb3BpYzpmLGFja25vd2xlZGdlZDohMSxzZWxmOmsuY29udHJvbGxlcixwZWVyOntwdWJsaWNLZXk6bS5wdWJsaWNLZXksbWV0YWRhdGE6bS5tZXRhZGF0YX0sY29udHJvbGxlcjpFLHRyYW5zcG9ydFR5cGU6Y3IucmVsYXl9KTthd2FpdCB0aGlzLmNsaWVudC5zZXNzaW9uLnNldChfLE0pLHYuYWRkVHJhY2UobXMuc3RvcmVfc2Vzc2lvbik7dHJ5e3YuYWRkVHJhY2UobXMucHVibGlzaGluZ19zZXNzaW9uX3NldHRsZSksYXdhaXQgdGhpcy5zZW5kUmVxdWVzdCh7dG9waWM6XyxtZXRob2Q6IndjX3Nlc3Npb25TZXR0bGUiLHBhcmFtczprLHRocm93T25GYWlsZWRQdWJsaXNoOiEwfSkuY2F0Y2goUD0+e3Rocm93IHY/LnNldEVycm9yKG1sLnNlc3Npb25fc2V0dGxlX3B1Ymxpc2hfZmFpbHVyZSksUH0pLHYuYWRkVHJhY2UobXMuc2Vzc2lvbl9zZXR0bGVfcHVibGlzaF9zdWNjZXNzKSx2LmFkZFRyYWNlKG1zLnB1Ymxpc2hpbmdfc2Vzc2lvbl9hcHByb3ZlKSxhd2FpdCB0aGlzLnNlbmRSZXN1bHQoe2lkOmEsdG9waWM6ZixyZXN1bHQ6e3JlbGF5Ontwcm90b2NvbDpjPz8iaXJuIn0scmVzcG9uZGVyUHVibGljS2V5OkV9LHRocm93T25GYWlsZWRQdWJsaXNoOiEwfSkuY2F0Y2goUD0+e3Rocm93IHY/LnNldEVycm9yKG1sLnNlc3Npb25fYXBwcm92ZV9wdWJsaXNoX2ZhaWx1cmUpLFB9KSx2LmFkZFRyYWNlKG1zLnNlc3Npb25fYXBwcm92ZV9wdWJsaXNoX3N1Y2Nlc3MpfWNhdGNoKFApe3Rocm93IHRoaXMuY2xpZW50LmxvZ2dlci5lcnJvcihQKSx0aGlzLmNsaWVudC5zZXNzaW9uLmRlbGV0ZShfLEt0KCJVU0VSX0RJU0NPTk5FQ1RFRCIpKSxhd2FpdCB0aGlzLmNsaWVudC5jb3JlLnJlbGF5ZXIudW5zdWJzY3JpYmUoXyksUH1yZXR1cm4gdGhpcy5jbGllbnQuY29yZS5ldmVudENsaWVudC5kZWxldGVFdmVudCh7ZXZlbnRJZDp2LmV2ZW50SWR9KSxhd2FpdCB0aGlzLmNsaWVudC5jb3JlLnBhaXJpbmcudXBkYXRlTWV0YWRhdGEoe3RvcGljOmYsbWV0YWRhdGE6bS5tZXRhZGF0YX0pLGF3YWl0IHRoaXMuY2xpZW50LnByb3Bvc2FsLmRlbGV0ZShhLEt0KCJVU0VSX0RJU0NPTk5FQ1RFRCIpKSxhd2FpdCB0aGlzLmNsaWVudC5jb3JlLnBhaXJpbmcuYWN0aXZhdGUoe3RvcGljOmZ9KSxhd2FpdCB0aGlzLnNldEV4cGlyeShfLFlyKE9kKSkse3RvcGljOl8sYWNrbm93bGVkZ2VkOigpPT5Qcm9taXNlLnJlc29sdmUodGhpcy5jbGllbnQuc2Vzc2lvbi5nZXQoXykpfX0pLGtlKHRoaXMsInJlamVjdCIsYXN5bmMgcj0+e3RoaXMuaXNJbml0aWFsaXplZCgpLGF3YWl0IHRoaXMuY29uZmlybU9ubGluZVN0YXRlT3JUaHJvdygpO3RyeXthd2FpdCB0aGlzLmlzVmFsaWRSZWplY3Qocil9Y2F0Y2gobyl7dGhyb3cgdGhpcy5jbGllbnQubG9nZ2VyLmVycm9yKCJyZWplY3QoKSAtPiBpc1ZhbGlkUmVqZWN0KCkgZmFpbGVkIiksb31jb25zdHtpZDpuLHJlYXNvbjpzfT1yO2xldCBpO3RyeXtpPXRoaXMuY2xpZW50LnByb3Bvc2FsLmdldChuKS5wYWlyaW5nVG9waWN9Y2F0Y2gobyl7dGhyb3cgdGhpcy5jbGllbnQubG9nZ2VyLmVycm9yKGByZWplY3QoKSAtPiBwcm9wb3NhbC5nZXQoJHtufSkgZmFpbGVkYCksb31pJiYoYXdhaXQgdGhpcy5zZW5kRXJyb3Ioe2lkOm4sdG9waWM6aSxlcnJvcjpzLHJwY09wdHM6dG4ud2Nfc2Vzc2lvblByb3Bvc2UucmVqZWN0fSksYXdhaXQgdGhpcy5jbGllbnQucHJvcG9zYWwuZGVsZXRlKG4sS3QoIlVTRVJfRElTQ09OTkVDVEVEIikpKX0pLGtlKHRoaXMsInVwZGF0ZSIsYXN5bmMgcj0+e3RoaXMuaXNJbml0aWFsaXplZCgpLGF3YWl0IHRoaXMuY29uZmlybU9ubGluZVN0YXRlT3JUaHJvdygpO3RyeXthd2FpdCB0aGlzLmlzVmFsaWRVcGRhdGUocil9Y2F0Y2godSl7dGhyb3cgdGhpcy5jbGllbnQubG9nZ2VyLmVycm9yKCJ1cGRhdGUoKSAtPiBpc1ZhbGlkVXBkYXRlKCkgZmFpbGVkIiksdX1jb25zdHt0b3BpYzpuLG5hbWVzcGFjZXM6c309cix7ZG9uZTppLHJlc29sdmU6byxyZWplY3Q6YX09VWwoKSxjPWhvKCksbD1ldSgpLnRvU3RyaW5nKCksZD10aGlzLmNsaWVudC5zZXNzaW9uLmdldChuKS5uYW1lc3BhY2VzO3JldHVybiB0aGlzLmV2ZW50cy5vbmNlKEZ0KCJzZXNzaW9uX3VwZGF0ZSIsYyksKHtlcnJvcjp1fSk9Pnt1P2EodSk6bygpfSksYXdhaXQgdGhpcy5jbGllbnQuc2Vzc2lvbi51cGRhdGUobix7bmFtZXNwYWNlczpzfSksYXdhaXQgdGhpcy5zZW5kUmVxdWVzdCh7dG9waWM6bixtZXRob2Q6IndjX3Nlc3Npb25VcGRhdGUiLHBhcmFtczp7bmFtZXNwYWNlczpzfSx0aHJvd09uRmFpbGVkUHVibGlzaDohMCxjbGllbnRScGNJZDpjLHJlbGF5UnBjSWQ6bH0pLmNhdGNoKHU9Pnt0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3IodSksdGhpcy5jbGllbnQuc2Vzc2lvbi51cGRhdGUobix7bmFtZXNwYWNlczpkfSksYSh1KX0pLHthY2tub3dsZWRnZWQ6aX19KSxrZSh0aGlzLCJleHRlbmQiLGFzeW5jIHI9Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKSxhd2FpdCB0aGlzLmNvbmZpcm1PbmxpbmVTdGF0ZU9yVGhyb3coKTt0cnl7YXdhaXQgdGhpcy5pc1ZhbGlkRXh0ZW5kKHIpfWNhdGNoKGMpe3Rocm93IHRoaXMuY2xpZW50LmxvZ2dlci5lcnJvcigiZXh0ZW5kKCkgLT4gaXNWYWxpZEV4dGVuZCgpIGZhaWxlZCIpLGN9Y29uc3R7dG9waWM6bn09cixzPWhvKCkse2RvbmU6aSxyZXNvbHZlOm8scmVqZWN0OmF9PVVsKCk7cmV0dXJuIHRoaXMuZXZlbnRzLm9uY2UoRnQoInNlc3Npb25fZXh0ZW5kIixzKSwoe2Vycm9yOmN9KT0+e2M/YShjKTpvKCl9KSxhd2FpdCB0aGlzLnNldEV4cGlyeShuLFlyKE9kKSksdGhpcy5zZW5kUmVxdWVzdCh7dG9waWM6bixtZXRob2Q6IndjX3Nlc3Npb25FeHRlbmQiLHBhcmFtczp7fSxjbGllbnRScGNJZDpzLHRocm93T25GYWlsZWRQdWJsaXNoOiEwfSkuY2F0Y2goYz0+e2EoYyl9KSx7YWNrbm93bGVkZ2VkOml9fSksa2UodGhpcywicmVxdWVzdCIsYXN5bmMgcj0+e3RoaXMuaXNJbml0aWFsaXplZCgpO3RyeXthd2FpdCB0aGlzLmlzVmFsaWRSZXF1ZXN0KHIpfWNhdGNoKGcpe3Rocm93IHRoaXMuY2xpZW50LmxvZ2dlci5lcnJvcigicmVxdWVzdCgpIC0+IGlzVmFsaWRSZXF1ZXN0KCkgZmFpbGVkIiksZ31jb25zdHtjaGFpbklkOm4scmVxdWVzdDpzLHRvcGljOmksZXhwaXJ5Om89dG4ud2Nfc2Vzc2lvblJlcXVlc3QucmVxLnR0bH09cixhPXRoaXMuY2xpZW50LnNlc3Npb24uZ2V0KGkpO2E/LnRyYW5zcG9ydFR5cGU9PT1jci5yZWxheSYmYXdhaXQgdGhpcy5jb25maXJtT25saW5lU3RhdGVPclRocm93KCk7Y29uc3QgYz1obygpLGw9ZXUoKS50b1N0cmluZygpLHtkb25lOmQscmVzb2x2ZTp1LHJlamVjdDpofT1VbChvLCJSZXF1ZXN0IGV4cGlyZWQuIFBsZWFzZSB0cnkgYWdhaW4uIik7dGhpcy5ldmVudHMub25jZShGdCgic2Vzc2lvbl9yZXF1ZXN0IixjKSwoe2Vycm9yOmcscmVzdWx0OnZ9KT0+e2c/aChnKTp1KHYpfSk7Y29uc3QgcD0id2Nfc2Vzc2lvblJlcXVlc3QiLGY9dGhpcy5nZXRBcHBMaW5rSWZFbmFibGVkKGEucGVlci5tZXRhZGF0YSxhLnRyYW5zcG9ydFR5cGUpO2lmKGYpcmV0dXJuIGF3YWl0IHRoaXMuc2VuZFJlcXVlc3Qoe2NsaWVudFJwY0lkOmMscmVsYXlScGNJZDpsLHRvcGljOmksbWV0aG9kOnAscGFyYW1zOntyZXF1ZXN0OlBuKFF0KHt9LHMpLHtleHBpcnlUaW1lc3RhbXA6WXIobyl9KSxjaGFpbklkOm59LGV4cGlyeTpvLHRocm93T25GYWlsZWRQdWJsaXNoOiEwLGFwcExpbms6Zn0pLmNhdGNoKGc9PmgoZykpLHRoaXMuY2xpZW50LmV2ZW50cy5lbWl0KCJzZXNzaW9uX3JlcXVlc3Rfc2VudCIse3RvcGljOmkscmVxdWVzdDpzLGNoYWluSWQ6bixpZDpjfSksYXdhaXQgZCgpO2NvbnN0IG09e3JlcXVlc3Q6UG4oUXQoe30scykse2V4cGlyeVRpbWVzdGFtcDpZcihvKX0pLGNoYWluSWQ6bn0sdz10aGlzLnNob3VsZFNldFRWRihwLG0pO3JldHVybiBhd2FpdCBQcm9taXNlLmFsbChbbmV3IFByb21pc2UoYXN5bmMgZz0+e2F3YWl0IHRoaXMuc2VuZFJlcXVlc3QoUXQoe2NsaWVudFJwY0lkOmMscmVsYXlScGNJZDpsLHRvcGljOmksbWV0aG9kOnAscGFyYW1zOm0sZXhwaXJ5Om8sdGhyb3dPbkZhaWxlZFB1Ymxpc2g6ITB9LHcmJnt0dmY6dGhpcy5nZXRUVkZQYXJhbXMoYyxtKX0pKS5jYXRjaCh2PT5oKHYpKSx0aGlzLmNsaWVudC5ldmVudHMuZW1pdCgic2Vzc2lvbl9yZXF1ZXN0X3NlbnQiLHt0b3BpYzppLHJlcXVlc3Q6cyxjaGFpbklkOm4saWQ6Y30pLGcoKX0pLG5ldyBQcm9taXNlKGFzeW5jIGc9Pnt2YXIgdjtpZighKCh2PWEuc2Vzc2lvbkNvbmZpZykhPW51bGwmJnYuZGlzYWJsZURlZXBMaW5rKSl7Y29uc3QgRT1hd2FpdCBZdGUodGhpcy5jbGllbnQuY29yZS5zdG9yYWdlLGNTKTthd2FpdCBHdGUoe2lkOmMsdG9waWM6aSx3Y0RlZXBMaW5rOkV9KX1nKCl9KSxkKCldKS50aGVuKGc9PmdbMl0pfSksa2UodGhpcywicmVzcG9uZCIsYXN5bmMgcj0+e3RoaXMuaXNJbml0aWFsaXplZCgpLGF3YWl0IHRoaXMuaXNWYWxpZFJlc3BvbmQocik7Y29uc3R7dG9waWM6bixyZXNwb25zZTpzfT1yLHtpZDppfT1zLG89dGhpcy5jbGllbnQuc2Vzc2lvbi5nZXQobik7by50cmFuc3BvcnRUeXBlPT09Y3IucmVsYXkmJmF3YWl0IHRoaXMuY29uZmlybU9ubGluZVN0YXRlT3JUaHJvdygpO2NvbnN0IGE9dGhpcy5nZXRBcHBMaW5rSWZFbmFibGVkKG8ucGVlci5tZXRhZGF0YSxvLnRyYW5zcG9ydFR5cGUpO3BvKHMpP2F3YWl0IHRoaXMuc2VuZFJlc3VsdCh7aWQ6aSx0b3BpYzpuLHJlc3VsdDpzLnJlc3VsdCx0aHJvd09uRmFpbGVkUHVibGlzaDohMCxhcHBMaW5rOmF9KTpZaShzKSYmYXdhaXQgdGhpcy5zZW5kRXJyb3Ioe2lkOmksdG9waWM6bixlcnJvcjpzLmVycm9yLGFwcExpbms6YX0pLHRoaXMuY2xlYW51cEFmdGVyUmVzcG9uc2Uocil9KSxrZSh0aGlzLCJwaW5nIixhc3luYyByPT57dGhpcy5pc0luaXRpYWxpemVkKCksYXdhaXQgdGhpcy5jb25maXJtT25saW5lU3RhdGVPclRocm93KCk7dHJ5e2F3YWl0IHRoaXMuaXNWYWxpZFBpbmcocil9Y2F0Y2gocyl7dGhyb3cgdGhpcy5jbGllbnQubG9nZ2VyLmVycm9yKCJwaW5nKCkgLT4gaXNWYWxpZFBpbmcoKSBmYWlsZWQiKSxzfWNvbnN0e3RvcGljOm59PXI7aWYodGhpcy5jbGllbnQuc2Vzc2lvbi5rZXlzLmluY2x1ZGVzKG4pKXtjb25zdCBzPWhvKCksaT1ldSgpLnRvU3RyaW5nKCkse2RvbmU6byxyZXNvbHZlOmEscmVqZWN0OmN9PVVsKCk7dGhpcy5ldmVudHMub25jZShGdCgic2Vzc2lvbl9waW5nIixzKSwoe2Vycm9yOmx9KT0+e2w/YyhsKTphKCl9KSxhd2FpdCBQcm9taXNlLmFsbChbdGhpcy5zZW5kUmVxdWVzdCh7dG9waWM6bixtZXRob2Q6IndjX3Nlc3Npb25QaW5nIixwYXJhbXM6e30sdGhyb3dPbkZhaWxlZFB1Ymxpc2g6ITAsY2xpZW50UnBjSWQ6cyxyZWxheVJwY0lkOml9KSxvKCldKX1lbHNlIHRoaXMuY2xpZW50LmNvcmUucGFpcmluZy5wYWlyaW5ncy5rZXlzLmluY2x1ZGVzKG4pJiYodGhpcy5jbGllbnQubG9nZ2VyLndhcm4oInBpbmcoKSBvbiBwYWlyaW5nIHRvcGljIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLiIpLGF3YWl0IHRoaXMuY2xpZW50LmNvcmUucGFpcmluZy5waW5nKHt0b3BpYzpufSkpfSksa2UodGhpcywiZW1pdCIsYXN5bmMgcj0+e3RoaXMuaXNJbml0aWFsaXplZCgpLGF3YWl0IHRoaXMuY29uZmlybU9ubGluZVN0YXRlT3JUaHJvdygpLGF3YWl0IHRoaXMuaXNWYWxpZEVtaXQocik7Y29uc3R7dG9waWM6bixldmVudDpzLGNoYWluSWQ6aX09cixvPWV1KCkudG9TdHJpbmcoKSxhPWhvKCk7YXdhaXQgdGhpcy5zZW5kUmVxdWVzdCh7dG9waWM6bixtZXRob2Q6IndjX3Nlc3Npb25FdmVudCIscGFyYW1zOntldmVudDpzLGNoYWluSWQ6aX0sdGhyb3dPbkZhaWxlZFB1Ymxpc2g6ITAscmVsYXlScGNJZDpvLGNsaWVudFJwY0lkOmF9KX0pLGtlKHRoaXMsImRpc2Nvbm5lY3QiLGFzeW5jIHI9Pnt0aGlzLmlzSW5pdGlhbGl6ZWQoKSxhd2FpdCB0aGlzLmNvbmZpcm1PbmxpbmVTdGF0ZU9yVGhyb3coKSxhd2FpdCB0aGlzLmlzVmFsaWREaXNjb25uZWN0KHIpO2NvbnN0e3RvcGljOm59PXI7aWYodGhpcy5jbGllbnQuc2Vzc2lvbi5rZXlzLmluY2x1ZGVzKG4pKWF3YWl0IHRoaXMuc2VuZFJlcXVlc3Qoe3RvcGljOm4sbWV0aG9kOiJ3Y19zZXNzaW9uRGVsZXRlIixwYXJhbXM6S3QoIlVTRVJfRElTQ09OTkVDVEVEIiksdGhyb3dPbkZhaWxlZFB1Ymxpc2g6ITB9KSxhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24oe3RvcGljOm4sZW1pdEV2ZW50OiExfSk7ZWxzZSBpZih0aGlzLmNsaWVudC5jb3JlLnBhaXJpbmcucGFpcmluZ3Mua2V5cy5pbmNsdWRlcyhuKSlhd2FpdCB0aGlzLmNsaWVudC5jb3JlLnBhaXJpbmcuZGlzY29ubmVjdCh7dG9waWM6bn0pO2Vsc2V7Y29uc3R7bWVzc2FnZTpzfT1PZSgiTUlTTUFUQ0hFRF9UT1BJQyIsYFNlc3Npb24gb3IgcGFpcmluZyB0b3BpYyBub3QgZm91bmQ6ICR7bn1gKTt0aHJvdyBuZXcgRXJyb3Iocyl9fSksa2UodGhpcywiZmluZCIscj0+KHRoaXMuaXNJbml0aWFsaXplZCgpLHRoaXMuY2xpZW50LnNlc3Npb24uZ2V0QWxsKCkuZmlsdGVyKG49PlBpZShuLHIpKSkpLGtlKHRoaXMsImdldFBlbmRpbmdTZXNzaW9uUmVxdWVzdHMiLCgpPT50aGlzLmNsaWVudC5wZW5kaW5nUmVxdWVzdC5nZXRBbGwoKSksa2UodGhpcywiYXV0aGVudGljYXRlIixhc3luYyhyLG4pPT57dmFyIHM7dGhpcy5pc0luaXRpYWxpemVkKCksdGhpcy5pc1ZhbGlkQXV0aGVudGljYXRlKHIpO2NvbnN0IGk9biYmdGhpcy5jbGllbnQuY29yZS5saW5rTW9kZVN1cHBvcnRlZEFwcHMuaW5jbHVkZXMobikmJigocz10aGlzLmNsaWVudC5tZXRhZGF0YS5yZWRpcmVjdCk9PW51bGw/dm9pZCAwOnMubGlua01vZGUpLG89aT9jci5saW5rX21vZGU6Y3IucmVsYXk7bz09PWNyLnJlbGF5JiZhd2FpdCB0aGlzLmNvbmZpcm1PbmxpbmVTdGF0ZU9yVGhyb3coKTtjb25zdHtjaGFpbnM6YSxzdGF0ZW1lbnQ6Yz0iIix1cmk6bCxkb21haW46ZCxub25jZTp1LHR5cGU6aCxleHA6cCxuYmY6ZixtZXRob2RzOm09W10sZXhwaXJ5Ond9PXIsZz1bLi4uci5yZXNvdXJjZXN8fFtdXSx7dG9waWM6dix1cmk6RX09YXdhaXQgdGhpcy5jbGllbnQuY29yZS5wYWlyaW5nLmNyZWF0ZSh7bWV0aG9kczpbIndjX3Nlc3Npb25BdXRoZW50aWNhdGUiXSx0cmFuc3BvcnRUeXBlOm99KTt0aGlzLmNsaWVudC5sb2dnZXIuaW5mbyh7bWVzc2FnZToiR2VuZXJhdGVkIG5ldyBwYWlyaW5nIixwYWlyaW5nOnt0b3BpYzp2LHVyaTpFfX0pO2NvbnN0IHg9YXdhaXQgdGhpcy5jbGllbnQuY29yZS5jcnlwdG8uZ2VuZXJhdGVLZXlQYWlyKCksXz16dyh4KTtpZihhd2FpdCBQcm9taXNlLmFsbChbdGhpcy5jbGllbnQuYXV0aC5hdXRoS2V5cy5zZXQoSHcse3Jlc3BvbnNlVG9waWM6XyxwdWJsaWNLZXk6eH0pLHRoaXMuY2xpZW50LmF1dGgucGFpcmluZ1RvcGljcy5zZXQoXyx7dG9waWM6XyxwYWlyaW5nVG9waWM6dn0pXSksYXdhaXQgdGhpcy5jbGllbnQuY29yZS5yZWxheWVyLnN1YnNjcmliZShfLHt0cmFuc3BvcnRUeXBlOm99KSx0aGlzLmNsaWVudC5sb2dnZXIuaW5mbyhgc2VuZGluZyByZXF1ZXN0IHRvIG5ldyBwYWlyaW5nIHRvcGljOiAke3Z9YCksbS5sZW5ndGg+MCl7Y29uc3R7bmFtZXNwYWNlOlJ9PWNoKGFbMF0pO2xldCBJPXpyZShSLCJyZXF1ZXN0IixtKTtqdyhnKSYmKEk9SHJlKEksZy5wb3AoKSkpLGcucHVzaChJKX1jb25zdCBrPXcmJnc+dG4ud2Nfc2Vzc2lvbkF1dGhlbnRpY2F0ZS5yZXEudHRsP3c6dG4ud2Nfc2Vzc2lvbkF1dGhlbnRpY2F0ZS5yZXEudHRsLEE9e2F1dGhQYXlsb2FkOnt0eXBlOmg/PyJjYWlwMTIyIixjaGFpbnM6YSxzdGF0ZW1lbnQ6YyxhdWQ6bCxkb21haW46ZCx2ZXJzaW9uOiIxIixub25jZTp1LGlhdDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksZXhwOnAsbmJmOmYscmVzb3VyY2VzOmd9LHJlcXVlc3Rlcjp7cHVibGljS2V5OngsbWV0YWRhdGE6dGhpcy5jbGllbnQubWV0YWRhdGF9LGV4cGlyeVRpbWVzdGFtcDpZcihrKX0sTT17ZWlwMTU1OntjaGFpbnM6YSxtZXRob2RzOlsuLi5uZXcgU2V0KFsicGVyc29uYWxfc2lnbiIsLi4ubV0pXSxldmVudHM6WyJjaGFpbkNoYW5nZWQiLCJhY2NvdW50c0NoYW5nZWQiXX19LFA9e3JlcXVpcmVkTmFtZXNwYWNlczp7fSxvcHRpb25hbE5hbWVzcGFjZXM6TSxyZWxheXM6W3twcm90b2NvbDoiaXJuIn1dLHBhaXJpbmdUb3BpYzp2LHByb3Bvc2VyOntwdWJsaWNLZXk6eCxtZXRhZGF0YTp0aGlzLmNsaWVudC5tZXRhZGF0YX0sZXhwaXJ5VGltZXN0YW1wOllyKHRuLndjX3Nlc3Npb25Qcm9wb3NlLnJlcS50dGwpLGlkOmhvKCl9LHtkb25lOmoscmVzb2x2ZTpVLHJlamVjdDpWfT1VbChrLCJSZXF1ZXN0IGV4cGlyZWQiKSxGPWhvKCksYj1GdCgic2Vzc2lvbl9jb25uZWN0IixQLmlkKSx5PUZ0KCJzZXNzaW9uX3JlcXVlc3QiLEYpLEM9YXN5bmMoe2Vycm9yOlIsc2Vzc2lvbjpJfSk9Pnt0aGlzLmV2ZW50cy5vZmYoeSxUKSxSP1YoUik6SSYmVSh7c2Vzc2lvbjpJfSl9LFQ9YXN5bmMgUj0+e3ZhciBJLEIsUztpZihhd2FpdCB0aGlzLmRlbGV0ZVBlbmRpbmdBdXRoUmVxdWVzdChGLHttZXNzYWdlOiJmdWxmaWxsZWQiLGNvZGU6MH0pLFIuZXJyb3Ipe2NvbnN0IGhlPUt0KCJXQ19NRVRIT0RfVU5TVVBQT1JURUQiLCJ3Y19zZXNzaW9uQXV0aGVudGljYXRlIik7cmV0dXJuIFIuZXJyb3IuY29kZT09PWhlLmNvZGU/dm9pZCAwOih0aGlzLmV2ZW50cy5vZmYoYixDKSxWKFIuZXJyb3IubWVzc2FnZSkpfWF3YWl0IHRoaXMuZGVsZXRlUHJvcG9zYWwoUC5pZCksdGhpcy5ldmVudHMub2ZmKGIsQyk7Y29uc3R7Y2FjYW9zOnoscmVzcG9uZGVyOlF9PVIucmVzdWx0LHJlPVtdLEo9W107Zm9yKGNvbnN0IGhlIG9mIHope2F3YWl0IGVrKHtjYWNhbzpoZSxwcm9qZWN0SWQ6dGhpcy5jbGllbnQuY29yZS5wcm9qZWN0SWR9KXx8KHRoaXMuY2xpZW50LmxvZ2dlci5lcnJvcihoZSwiU2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmYWlsZWQiKSxWKEt0KCJTRVNTSU9OX1NFVFRMRU1FTlRfRkFJTEVEIiwiU2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmYWlsZWQiKSkpO2NvbnN0e3A6U2V9PWhlLEs9ancoU2UucmVzb3VyY2VzKSxaPVtmeChTZS5pc3MpXSxtZT1nYihTZS5pc3MpO2lmKEspe2NvbnN0IHZlPXRrKEspLEZlPXJrKEspO3JlLnB1c2goLi4udmUpLFoucHVzaCguLi5GZSl9Zm9yKGNvbnN0IHZlIG9mIFopSi5wdXNoKGAke3ZlfToke21lfWApfWNvbnN0IGVlPWF3YWl0IHRoaXMuY2xpZW50LmNvcmUuY3J5cHRvLmdlbmVyYXRlU2hhcmVkS2V5KHgsUS5wdWJsaWNLZXkpO2xldCB0ZTtyZS5sZW5ndGg+MCYmKHRlPXt0b3BpYzplZSxhY2tub3dsZWRnZWQ6ITAsc2VsZjp7cHVibGljS2V5OngsbWV0YWRhdGE6dGhpcy5jbGllbnQubWV0YWRhdGF9LHBlZXI6USxjb250cm9sbGVyOlEucHVibGljS2V5LGV4cGlyeTpZcihPZCkscmVxdWlyZWROYW1lc3BhY2VzOnt9LG9wdGlvbmFsTmFtZXNwYWNlczp7fSxyZWxheTp7cHJvdG9jb2w6ImlybiJ9LHBhaXJpbmdUb3BpYzp2LG5hbWVzcGFjZXM6X2soWy4uLm5ldyBTZXQocmUpXSxbLi4ubmV3IFNldChKKV0pLHRyYW5zcG9ydFR5cGU6b30sYXdhaXQgdGhpcy5jbGllbnQuY29yZS5yZWxheWVyLnN1YnNjcmliZShlZSx7dHJhbnNwb3J0VHlwZTpvfSksYXdhaXQgdGhpcy5jbGllbnQuc2Vzc2lvbi5zZXQoZWUsdGUpLHYmJmF3YWl0IHRoaXMuY2xpZW50LmNvcmUucGFpcmluZy51cGRhdGVNZXRhZGF0YSh7dG9waWM6dixtZXRhZGF0YTpRLm1ldGFkYXRhfSksdGU9dGhpcy5jbGllbnQuc2Vzc2lvbi5nZXQoZWUpKSwoST10aGlzLmNsaWVudC5tZXRhZGF0YS5yZWRpcmVjdCkhPW51bGwmJkkubGlua01vZGUmJihCPVEubWV0YWRhdGEucmVkaXJlY3QpIT1udWxsJiZCLmxpbmtNb2RlJiYoUz1RLm1ldGFkYXRhLnJlZGlyZWN0KSE9bnVsbCYmUy51bml2ZXJzYWwmJm4mJih0aGlzLmNsaWVudC5jb3JlLmFkZExpbmtNb2RlU3VwcG9ydGVkQXBwKFEubWV0YWRhdGEucmVkaXJlY3QudW5pdmVyc2FsKSx0aGlzLmNsaWVudC5zZXNzaW9uLnVwZGF0ZShlZSx7dHJhbnNwb3J0VHlwZTpjci5saW5rX21vZGV9KSksVSh7YXV0aHM6eixzZXNzaW9uOnRlfSl9O3RoaXMuZXZlbnRzLm9uY2UoYixDKSx0aGlzLmV2ZW50cy5vbmNlKHksVCk7bGV0IE47dHJ5e2lmKGkpe2NvbnN0IFI9bGMoIndjX3Nlc3Npb25BdXRoZW50aWNhdGUiLEEsRik7dGhpcy5jbGllbnQuY29yZS5oaXN0b3J5LnNldCh2LFIpO2NvbnN0IEk9YXdhaXQgdGhpcy5jbGllbnQuY29yZS5jcnlwdG8uZW5jb2RlKCIiLFIse3R5cGU6eDEsZW5jb2Rpbmc6c2N9KTtOPUFnKG4sdixJKX1lbHNlIGF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnNlbmRSZXF1ZXN0KHt0b3BpYzp2LG1ldGhvZDoid2Nfc2Vzc2lvbkF1dGhlbnRpY2F0ZSIscGFyYW1zOkEsZXhwaXJ5OnIuZXhwaXJ5LHRocm93T25GYWlsZWRQdWJsaXNoOiEwLGNsaWVudFJwY0lkOkZ9KSx0aGlzLnNlbmRSZXF1ZXN0KHt0b3BpYzp2LG1ldGhvZDoid2Nfc2Vzc2lvblByb3Bvc2UiLHBhcmFtczpQLGV4cGlyeTp0bi53Y19zZXNzaW9uUHJvcG9zZS5yZXEudHRsLHRocm93T25GYWlsZWRQdWJsaXNoOiEwLGNsaWVudFJwY0lkOlAuaWR9KV0pfWNhdGNoKFIpe3Rocm93IHRoaXMuZXZlbnRzLm9mZihiLEMpLHRoaXMuZXZlbnRzLm9mZih5LFQpLFJ9cmV0dXJuIGF3YWl0IHRoaXMuc2V0UHJvcG9zYWwoUC5pZCxQKSxhd2FpdCB0aGlzLnNldEF1dGhSZXF1ZXN0KEYse3JlcXVlc3Q6UG4oUXQoe30sQSkse3ZlcmlmeUNvbnRleHQ6e319KSxwYWlyaW5nVG9waWM6dix0cmFuc3BvcnRUeXBlOm99KSx7dXJpOk4/P0UscmVzcG9uc2U6an19KSxrZSh0aGlzLCJhcHByb3ZlU2Vzc2lvbkF1dGhlbnRpY2F0ZSIsYXN5bmMgcj0+e2NvbnN0e2lkOm4sYXV0aHM6c309cixpPXRoaXMuY2xpZW50LmNvcmUuZXZlbnRDbGllbnQuY3JlYXRlRXZlbnQoe3Byb3BlcnRpZXM6e3RvcGljOm4udG9TdHJpbmcoKSx0cmFjZTpbZ2wuYXV0aGVudGljYXRlZF9zZXNzaW9uX2FwcHJvdmVfc3RhcnRlZF19fSk7dHJ5e3RoaXMuaXNJbml0aWFsaXplZCgpfWNhdGNoKHcpe3Rocm93IGkuc2V0RXJyb3IoenAubm9faW50ZXJuZXRfY29ubmVjdGlvbiksd31jb25zdCBvPXRoaXMuZ2V0UGVuZGluZ0F1dGhSZXF1ZXN0KG4pO2lmKCFvKXRocm93IGkuc2V0RXJyb3IoenAuYXV0aGVudGljYXRlZF9zZXNzaW9uX3BlbmRpbmdfcmVxdWVzdF9ub3RfZm91bmQpLG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgcGVuZGluZyBhdXRoIHJlcXVlc3Qgd2l0aCBpZCAke259YCk7Y29uc3QgYT1vLnRyYW5zcG9ydFR5cGV8fGNyLnJlbGF5O2E9PT1jci5yZWxheSYmYXdhaXQgdGhpcy5jb25maXJtT25saW5lU3RhdGVPclRocm93KCk7Y29uc3QgYz1vLnJlcXVlc3Rlci5wdWJsaWNLZXksbD1hd2FpdCB0aGlzLmNsaWVudC5jb3JlLmNyeXB0by5nZW5lcmF0ZUtleVBhaXIoKSxkPXp3KGMpLHU9e3R5cGU6dWEscmVjZWl2ZXJQdWJsaWNLZXk6YyxzZW5kZXJQdWJsaWNLZXk6bH0saD1bXSxwPVtdO2Zvcihjb25zdCB3IG9mIHMpe2lmKCFhd2FpdCBlayh7Y2FjYW86dyxwcm9qZWN0SWQ6dGhpcy5jbGllbnQuY29yZS5wcm9qZWN0SWR9KSl7aS5zZXRFcnJvcih6cC5pbnZhbGlkX2NhY2FvKTtjb25zdCBfPUt0KCJTRVNTSU9OX1NFVFRMRU1FTlRfRkFJTEVEIiwiU2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmYWlsZWQiKTt0aHJvdyBhd2FpdCB0aGlzLnNlbmRFcnJvcih7aWQ6bix0b3BpYzpkLGVycm9yOl8sZW5jb2RlT3B0czp1fSksbmV3IEVycm9yKF8ubWVzc2FnZSl9aS5hZGRUcmFjZShnbC5jYWNhb3NfdmVyaWZpZWQpO2NvbnN0e3A6Z309dyx2PWp3KGcucmVzb3VyY2VzKSxFPVtmeChnLmlzcyldLHg9Z2IoZy5pc3MpO2lmKHYpe2NvbnN0IF89dGsodiksaz1yayh2KTtoLnB1c2goLi4uXyksRS5wdXNoKC4uLmspfWZvcihjb25zdCBfIG9mIEUpcC5wdXNoKGAke199OiR7eH1gKX1jb25zdCBmPWF3YWl0IHRoaXMuY2xpZW50LmNvcmUuY3J5cHRvLmdlbmVyYXRlU2hhcmVkS2V5KGwsYyk7aS5hZGRUcmFjZShnbC5jcmVhdGVfYXV0aGVudGljYXRlZF9zZXNzaW9uX3RvcGljKTtsZXQgbTtpZihoPy5sZW5ndGg+MCl7bT17dG9waWM6ZixhY2tub3dsZWRnZWQ6ITAsc2VsZjp7cHVibGljS2V5OmwsbWV0YWRhdGE6dGhpcy5jbGllbnQubWV0YWRhdGF9LHBlZXI6e3B1YmxpY0tleTpjLG1ldGFkYXRhOm8ucmVxdWVzdGVyLm1ldGFkYXRhfSxjb250cm9sbGVyOmMsZXhwaXJ5OllyKE9kKSxhdXRoZW50aWNhdGlvbjpzLHJlcXVpcmVkTmFtZXNwYWNlczp7fSxvcHRpb25hbE5hbWVzcGFjZXM6e30scmVsYXk6e3Byb3RvY29sOiJpcm4ifSxwYWlyaW5nVG9waWM6by5wYWlyaW5nVG9waWMsbmFtZXNwYWNlczpfayhbLi4ubmV3IFNldChoKV0sWy4uLm5ldyBTZXQocCldKSx0cmFuc3BvcnRUeXBlOmF9LGkuYWRkVHJhY2UoZ2wuc3Vic2NyaWJpbmdfYXV0aGVudGljYXRlZF9zZXNzaW9uX3RvcGljKTt0cnl7YXdhaXQgdGhpcy5jbGllbnQuY29yZS5yZWxheWVyLnN1YnNjcmliZShmLHt0cmFuc3BvcnRUeXBlOmF9KX1jYXRjaCh3KXt0aHJvdyBpLnNldEVycm9yKHpwLnN1YnNjcmliZV9hdXRoZW50aWNhdGVkX3Nlc3Npb25fdG9waWNfZmFpbHVyZSksd31pLmFkZFRyYWNlKGdsLnN1YnNjcmliZV9hdXRoZW50aWNhdGVkX3Nlc3Npb25fdG9waWNfc3VjY2VzcyksYXdhaXQgdGhpcy5jbGllbnQuc2Vzc2lvbi5zZXQoZixtKSxpLmFkZFRyYWNlKGdsLnN0b3JlX2F1dGhlbnRpY2F0ZWRfc2Vzc2lvbiksYXdhaXQgdGhpcy5jbGllbnQuY29yZS5wYWlyaW5nLnVwZGF0ZU1ldGFkYXRhKHt0b3BpYzpvLnBhaXJpbmdUb3BpYyxtZXRhZGF0YTpvLnJlcXVlc3Rlci5tZXRhZGF0YX0pfWkuYWRkVHJhY2UoZ2wucHVibGlzaGluZ19hdXRoZW50aWNhdGVkX3Nlc3Npb25fYXBwcm92ZSk7dHJ5e2F3YWl0IHRoaXMuc2VuZFJlc3VsdCh7dG9waWM6ZCxpZDpuLHJlc3VsdDp7Y2FjYW9zOnMscmVzcG9uZGVyOntwdWJsaWNLZXk6bCxtZXRhZGF0YTp0aGlzLmNsaWVudC5tZXRhZGF0YX19LGVuY29kZU9wdHM6dSx0aHJvd09uRmFpbGVkUHVibGlzaDohMCxhcHBMaW5rOnRoaXMuZ2V0QXBwTGlua0lmRW5hYmxlZChvLnJlcXVlc3Rlci5tZXRhZGF0YSxhKX0pfWNhdGNoKHcpe3Rocm93IGkuc2V0RXJyb3IoenAuYXV0aGVudGljYXRlZF9zZXNzaW9uX2FwcHJvdmVfcHVibGlzaF9mYWlsdXJlKSx3fXJldHVybiBhd2FpdCB0aGlzLmNsaWVudC5hdXRoLnJlcXVlc3RzLmRlbGV0ZShuLHttZXNzYWdlOiJmdWxmaWxsZWQiLGNvZGU6MH0pLGF3YWl0IHRoaXMuY2xpZW50LmNvcmUucGFpcmluZy5hY3RpdmF0ZSh7dG9waWM6by5wYWlyaW5nVG9waWN9KSx0aGlzLmNsaWVudC5jb3JlLmV2ZW50Q2xpZW50LmRlbGV0ZUV2ZW50KHtldmVudElkOmkuZXZlbnRJZH0pLHtzZXNzaW9uOm19fSksa2UodGhpcywicmVqZWN0U2Vzc2lvbkF1dGhlbnRpY2F0ZSIsYXN5bmMgcj0+e3RoaXMuaXNJbml0aWFsaXplZCgpO2NvbnN0e2lkOm4scmVhc29uOnN9PXIsaT10aGlzLmdldFBlbmRpbmdBdXRoUmVxdWVzdChuKTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHBlbmRpbmcgYXV0aCByZXF1ZXN0IHdpdGggaWQgJHtufWApO2kudHJhbnNwb3J0VHlwZT09PWNyLnJlbGF5JiZhd2FpdCB0aGlzLmNvbmZpcm1PbmxpbmVTdGF0ZU9yVGhyb3coKTtjb25zdCBvPWkucmVxdWVzdGVyLnB1YmxpY0tleSxhPWF3YWl0IHRoaXMuY2xpZW50LmNvcmUuY3J5cHRvLmdlbmVyYXRlS2V5UGFpcigpLGM9encobyksbD17dHlwZTp1YSxyZWNlaXZlclB1YmxpY0tleTpvLHNlbmRlclB1YmxpY0tleTphfTthd2FpdCB0aGlzLnNlbmRFcnJvcih7aWQ6bix0b3BpYzpjLGVycm9yOnMsZW5jb2RlT3B0czpsLHJwY09wdHM6dG4ud2Nfc2Vzc2lvbkF1dGhlbnRpY2F0ZS5yZWplY3QsYXBwTGluazp0aGlzLmdldEFwcExpbmtJZkVuYWJsZWQoaS5yZXF1ZXN0ZXIubWV0YWRhdGEsaS50cmFuc3BvcnRUeXBlKX0pLGF3YWl0IHRoaXMuY2xpZW50LmF1dGgucmVxdWVzdHMuZGVsZXRlKG4se21lc3NhZ2U6InJlamVjdGVkIixjb2RlOjB9KSxhd2FpdCB0aGlzLmNsaWVudC5wcm9wb3NhbC5kZWxldGUobixLdCgiVVNFUl9ESVNDT05ORUNURUQiKSl9KSxrZSh0aGlzLCJmb3JtYXRBdXRoTWVzc2FnZSIscj0+e3RoaXMuaXNJbml0aWFsaXplZCgpO2NvbnN0e3JlcXVlc3Q6bixpc3M6c309cjtyZXR1cm4gdUQobixzKX0pLGtlKHRoaXMsInByb2Nlc3NSZWxheU1lc3NhZ2VDYWNoZSIsKCk9PntzZXRUaW1lb3V0KGFzeW5jKCk9PntpZih0aGlzLnJlbGF5TWVzc2FnZUNhY2hlLmxlbmd0aCE9PTApZm9yKDt0aGlzLnJlbGF5TWVzc2FnZUNhY2hlLmxlbmd0aD4wOyl0cnl7Y29uc3Qgcj10aGlzLnJlbGF5TWVzc2FnZUNhY2hlLnNoaWZ0KCk7ciYmYXdhaXQgdGhpcy5vblJlbGF5TWVzc2FnZShyKX1jYXRjaChyKXt0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3Iocil9fSw1MCl9KSxrZSh0aGlzLCJjbGVhbnVwRHVwbGljYXRlUGFpcmluZ3MiLGFzeW5jIHI9PntpZihyLnBhaXJpbmdUb3BpYyl0cnl7Y29uc3Qgbj10aGlzLmNsaWVudC5jb3JlLnBhaXJpbmcucGFpcmluZ3MuZ2V0KHIucGFpcmluZ1RvcGljKSxzPXRoaXMuY2xpZW50LmNvcmUucGFpcmluZy5wYWlyaW5ncy5nZXRBbGwoKS5maWx0ZXIoaT0+e3ZhciBvLGE7cmV0dXJuKChvPWkucGVlck1ldGFkYXRhKT09bnVsbD92b2lkIDA6by51cmwpJiYoKGE9aS5wZWVyTWV0YWRhdGEpPT1udWxsP3ZvaWQgMDphLnVybCk9PT1yLnBlZXIubWV0YWRhdGEudXJsJiZpLnRvcGljJiZpLnRvcGljIT09bi50b3BpY30pO2lmKHMubGVuZ3RoPT09MClyZXR1cm47dGhpcy5jbGllbnQubG9nZ2VyLmluZm8oYENsZWFuaW5nIHVwICR7cy5sZW5ndGh9IGR1cGxpY2F0ZSBwYWlyaW5nKHMpYCksYXdhaXQgUHJvbWlzZS5hbGwocy5tYXAoaT0+dGhpcy5jbGllbnQuY29yZS5wYWlyaW5nLmRpc2Nvbm5lY3Qoe3RvcGljOmkudG9waWN9KSkpLHRoaXMuY2xpZW50LmxvZ2dlci5pbmZvKCJEdXBsaWNhdGUgcGFpcmluZ3MgY2xlYW4gdXAgZmluaXNoZWQiKX1jYXRjaChuKXt0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3Iobil9fSksa2UodGhpcywiZGVsZXRlU2Vzc2lvbiIsYXN5bmMgcj0+e3ZhciBuO2NvbnN0e3RvcGljOnMsZXhwaXJlckhhc0RlbGV0ZWQ6aT0hMSxlbWl0RXZlbnQ6bz0hMCxpZDphPTB9PXIse3NlbGY6Y309dGhpcy5jbGllbnQuc2Vzc2lvbi5nZXQocyk7YXdhaXQgdGhpcy5jbGllbnQuY29yZS5yZWxheWVyLnVuc3Vic2NyaWJlKHMpLGF3YWl0IHRoaXMuY2xpZW50LnNlc3Npb24uZGVsZXRlKHMsS3QoIlVTRVJfRElTQ09OTkVDVEVEIikpLHRoaXMuYWRkVG9SZWNlbnRseURlbGV0ZWQocywic2Vzc2lvbiIpLHRoaXMuY2xpZW50LmNvcmUuY3J5cHRvLmtleWNoYWluLmhhcyhjLnB1YmxpY0tleSkmJmF3YWl0IHRoaXMuY2xpZW50LmNvcmUuY3J5cHRvLmRlbGV0ZUtleVBhaXIoYy5wdWJsaWNLZXkpLHRoaXMuY2xpZW50LmNvcmUuY3J5cHRvLmtleWNoYWluLmhhcyhzKSYmYXdhaXQgdGhpcy5jbGllbnQuY29yZS5jcnlwdG8uZGVsZXRlU3ltS2V5KHMpLGl8fHRoaXMuY2xpZW50LmNvcmUuZXhwaXJlci5kZWwocyksdGhpcy5jbGllbnQuY29yZS5zdG9yYWdlLnJlbW92ZUl0ZW0oY1MpLmNhdGNoKGw9PnRoaXMuY2xpZW50LmxvZ2dlci53YXJuKGwpKSx0aGlzLmdldFBlbmRpbmdTZXNzaW9uUmVxdWVzdHMoKS5mb3JFYWNoKGw9PntsLnRvcGljPT09cyYmdGhpcy5kZWxldGVQZW5kaW5nU2Vzc2lvblJlcXVlc3QobC5pZCxLdCgiVVNFUl9ESVNDT05ORUNURUQiKSl9KSxzPT09KChuPXRoaXMuc2Vzc2lvblJlcXVlc3RRdWV1ZS5xdWV1ZVswXSk9PW51bGw/dm9pZCAwOm4udG9waWMpJiYodGhpcy5zZXNzaW9uUmVxdWVzdFF1ZXVlLnN0YXRlPWFvLmlkbGUpLG8mJnRoaXMuY2xpZW50LmV2ZW50cy5lbWl0KCJzZXNzaW9uX2RlbGV0ZSIse2lkOmEsdG9waWM6c30pfSksa2UodGhpcywiZGVsZXRlUHJvcG9zYWwiLGFzeW5jKHIsbik9PntpZihuKXRyeXtjb25zdCBzPXRoaXMuY2xpZW50LnByb3Bvc2FsLmdldChyKTt0aGlzLmNsaWVudC5jb3JlLmV2ZW50Q2xpZW50LmdldEV2ZW50KHt0b3BpYzpzLnBhaXJpbmdUb3BpY30pPy5zZXRFcnJvcihtbC5wcm9wb3NhbF9leHBpcmVkKX1jYXRjaHt9YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMuY2xpZW50LnByb3Bvc2FsLmRlbGV0ZShyLEt0KCJVU0VSX0RJU0NPTk5FQ1RFRCIpKSxuP1Byb21pc2UucmVzb2x2ZSgpOnRoaXMuY2xpZW50LmNvcmUuZXhwaXJlci5kZWwocildKSx0aGlzLmFkZFRvUmVjZW50bHlEZWxldGVkKHIsInByb3Bvc2FsIil9KSxrZSh0aGlzLCJkZWxldGVQZW5kaW5nU2Vzc2lvblJlcXVlc3QiLGFzeW5jKHIsbixzPSExKT0+e2F3YWl0IFByb21pc2UuYWxsKFt0aGlzLmNsaWVudC5wZW5kaW5nUmVxdWVzdC5kZWxldGUocixuKSxzP1Byb21pc2UucmVzb2x2ZSgpOnRoaXMuY2xpZW50LmNvcmUuZXhwaXJlci5kZWwocildKSx0aGlzLmFkZFRvUmVjZW50bHlEZWxldGVkKHIsInJlcXVlc3QiKSx0aGlzLnNlc3Npb25SZXF1ZXN0UXVldWUucXVldWU9dGhpcy5zZXNzaW9uUmVxdWVzdFF1ZXVlLnF1ZXVlLmZpbHRlcihpPT5pLmlkIT09cikscyYmKHRoaXMuc2Vzc2lvblJlcXVlc3RRdWV1ZS5zdGF0ZT1hby5pZGxlLHRoaXMuY2xpZW50LmV2ZW50cy5lbWl0KCJzZXNzaW9uX3JlcXVlc3RfZXhwaXJlIix7aWQ6cn0pKX0pLGtlKHRoaXMsImRlbGV0ZVBlbmRpbmdBdXRoUmVxdWVzdCIsYXN5bmMocixuLHM9ITEpPT57YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMuY2xpZW50LmF1dGgucmVxdWVzdHMuZGVsZXRlKHIsbikscz9Qcm9taXNlLnJlc29sdmUoKTp0aGlzLmNsaWVudC5jb3JlLmV4cGlyZXIuZGVsKHIpXSl9KSxrZSh0aGlzLCJzZXRFeHBpcnkiLGFzeW5jKHIsbik9Pnt0aGlzLmNsaWVudC5zZXNzaW9uLmtleXMuaW5jbHVkZXMocikmJih0aGlzLmNsaWVudC5jb3JlLmV4cGlyZXIuc2V0KHIsbiksYXdhaXQgdGhpcy5jbGllbnQuc2Vzc2lvbi51cGRhdGUocix7ZXhwaXJ5Om59KSl9KSxrZSh0aGlzLCJzZXRQcm9wb3NhbCIsYXN5bmMocixuKT0+e3RoaXMuY2xpZW50LmNvcmUuZXhwaXJlci5zZXQocixZcih0bi53Y19zZXNzaW9uUHJvcG9zZS5yZXEudHRsKSksYXdhaXQgdGhpcy5jbGllbnQucHJvcG9zYWwuc2V0KHIsbil9KSxrZSh0aGlzLCJzZXRBdXRoUmVxdWVzdCIsYXN5bmMocixuKT0+e2NvbnN0e3JlcXVlc3Q6cyxwYWlyaW5nVG9waWM6aSx0cmFuc3BvcnRUeXBlOm89Y3IucmVsYXl9PW47dGhpcy5jbGllbnQuY29yZS5leHBpcmVyLnNldChyLHMuZXhwaXJ5VGltZXN0YW1wKSxhd2FpdCB0aGlzLmNsaWVudC5hdXRoLnJlcXVlc3RzLnNldChyLHthdXRoUGF5bG9hZDpzLmF1dGhQYXlsb2FkLHJlcXVlc3RlcjpzLnJlcXVlc3RlcixleHBpcnlUaW1lc3RhbXA6cy5leHBpcnlUaW1lc3RhbXAsaWQ6cixwYWlyaW5nVG9waWM6aSx2ZXJpZnlDb250ZXh0OnMudmVyaWZ5Q29udGV4dCx0cmFuc3BvcnRUeXBlOm99KX0pLGtlKHRoaXMsInNldFBlbmRpbmdTZXNzaW9uUmVxdWVzdCIsYXN5bmMgcj0+e2NvbnN0e2lkOm4sdG9waWM6cyxwYXJhbXM6aSx2ZXJpZnlDb250ZXh0Om99PXIsYT1pLnJlcXVlc3QuZXhwaXJ5VGltZXN0YW1wfHxZcih0bi53Y19zZXNzaW9uUmVxdWVzdC5yZXEudHRsKTt0aGlzLmNsaWVudC5jb3JlLmV4cGlyZXIuc2V0KG4sYSksYXdhaXQgdGhpcy5jbGllbnQucGVuZGluZ1JlcXVlc3Quc2V0KG4se2lkOm4sdG9waWM6cyxwYXJhbXM6aSx2ZXJpZnlDb250ZXh0Om99KX0pLGtlKHRoaXMsInNlbmRSZXF1ZXN0Iixhc3luYyByPT57Y29uc3R7dG9waWM6bixtZXRob2Q6cyxwYXJhbXM6aSxleHBpcnk6byxyZWxheVJwY0lkOmEsY2xpZW50UnBjSWQ6Yyx0aHJvd09uRmFpbGVkUHVibGlzaDpsLGFwcExpbms6ZCx0dmY6dX09cixoPWxjKHMsaSxjKTtsZXQgcDtjb25zdCBmPSEhZDt0cnl7Y29uc3QgZz1mP3NjOkFzO3A9YXdhaXQgdGhpcy5jbGllbnQuY29yZS5jcnlwdG8uZW5jb2RlKG4saCx7ZW5jb2Rpbmc6Z30pfWNhdGNoKGcpe3Rocm93IGF3YWl0IHRoaXMuY2xlYW51cCgpLHRoaXMuY2xpZW50LmxvZ2dlci5lcnJvcihgc2VuZFJlcXVlc3QoKSAtPiBjb3JlLmNyeXB0by5lbmNvZGUoKSBmb3IgdG9waWMgJHtufSBmYWlsZWRgKSxnfWxldCBtO2lmKExsZS5pbmNsdWRlcyhzKSl7Y29uc3QgZz1mbyhKU09OLnN0cmluZ2lmeShoKSksdj1mbyhwKTttPWF3YWl0IHRoaXMuY2xpZW50LmNvcmUudmVyaWZ5LnJlZ2lzdGVyKHtpZDp2LGRlY3J5cHRlZElkOmd9KX1jb25zdCB3PXRuW3NdLnJlcTtpZih3LmF0dGVzdGF0aW9uPW0sbyYmKHcudHRsPW8pLGEmJih3LmlkPWEpLHRoaXMuY2xpZW50LmNvcmUuaGlzdG9yeS5zZXQobixoKSxmKXtjb25zdCBnPUFnKGQsbixwKTthd2FpdCBnbG9iYWwuTGlua2luZy5vcGVuVVJMKGcsdGhpcy5jbGllbnQubmFtZSl9ZWxzZXtjb25zdCBnPXRuW3NdLnJlcTtvJiYoZy50dGw9byksYSYmKGcuaWQ9YSksZy50dmY9UG4oUXQoe30sdSkse2NvcnJlbGF0aW9uSWQ6aC5pZH0pLGw/KGcuaW50ZXJuYWw9UG4oUXQoe30sZy5pbnRlcm5hbCkse3Rocm93T25GYWlsZWRQdWJsaXNoOiEwfSksYXdhaXQgdGhpcy5jbGllbnQuY29yZS5yZWxheWVyLnB1Ymxpc2gobixwLGcpKTp0aGlzLmNsaWVudC5jb3JlLnJlbGF5ZXIucHVibGlzaChuLHAsZykuY2F0Y2godj0+dGhpcy5jbGllbnQubG9nZ2VyLmVycm9yKHYpKX1yZXR1cm4gaC5pZH0pLGtlKHRoaXMsInNlbmRSZXN1bHQiLGFzeW5jIHI9Pntjb25zdHtpZDpuLHRvcGljOnMscmVzdWx0OmksdGhyb3dPbkZhaWxlZFB1Ymxpc2g6byxlbmNvZGVPcHRzOmEsYXBwTGluazpjfT1yLGw9V3kobixpKTtsZXQgZDtjb25zdCB1PWMmJnR5cGVvZihnbG9iYWw9PW51bGw/dm9pZCAwOmdsb2JhbC5MaW5raW5nKTwidSI7dHJ5e2NvbnN0IGY9dT9zYzpBcztkPWF3YWl0IHRoaXMuY2xpZW50LmNvcmUuY3J5cHRvLmVuY29kZShzLGwsUG4oUXQoe30sYXx8e30pLHtlbmNvZGluZzpmfSkpfWNhdGNoKGYpe3Rocm93IGF3YWl0IHRoaXMuY2xlYW51cCgpLHRoaXMuY2xpZW50LmxvZ2dlci5lcnJvcihgc2VuZFJlc3VsdCgpIC0+IGNvcmUuY3J5cHRvLmVuY29kZSgpIGZvciB0b3BpYyAke3N9IGZhaWxlZGApLGZ9bGV0IGgscDt0cnl7aD1hd2FpdCB0aGlzLmNsaWVudC5jb3JlLmhpc3RvcnkuZ2V0KHMsbik7Y29uc3QgZj1oLnJlcXVlc3Q7dHJ5e3RoaXMuc2hvdWxkU2V0VFZGKGYubWV0aG9kLGYucGFyYW1zKSYmKHA9dGhpcy5nZXRUVkZQYXJhbXMobixmLnBhcmFtcyxpKSl9Y2F0Y2gobSl7dGhpcy5jbGllbnQubG9nZ2VyLndhcm4oInNlbmRSZXN1bHQoKSAtPiBnZXRUVkZQYXJhbXMoKSBmYWlsZWQiLG0pfX1jYXRjaChmKXt0aHJvdyB0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3IoYHNlbmRSZXN1bHQoKSAtPiBoaXN0b3J5LmdldCgke3N9LCAke259KSBmYWlsZWRgKSxmfWlmKHUpe2NvbnN0IGY9QWcoYyxzLGQpO2F3YWl0IGdsb2JhbC5MaW5raW5nLm9wZW5VUkwoZix0aGlzLmNsaWVudC5uYW1lKX1lbHNle2NvbnN0IGY9aC5yZXF1ZXN0Lm1ldGhvZCxtPXRuW2ZdLnJlczttLnR2Zj1QbihRdCh7fSxwKSx7Y29ycmVsYXRpb25JZDpufSksbz8obS5pbnRlcm5hbD1QbihRdCh7fSxtLmludGVybmFsKSx7dGhyb3dPbkZhaWxlZFB1Ymxpc2g6ITB9KSxhd2FpdCB0aGlzLmNsaWVudC5jb3JlLnJlbGF5ZXIucHVibGlzaChzLGQsbSkpOnRoaXMuY2xpZW50LmNvcmUucmVsYXllci5wdWJsaXNoKHMsZCxtKS5jYXRjaCh3PT50aGlzLmNsaWVudC5sb2dnZXIuZXJyb3IodykpfWF3YWl0IHRoaXMuY2xpZW50LmNvcmUuaGlzdG9yeS5yZXNvbHZlKGwpfSksa2UodGhpcywic2VuZEVycm9yIixhc3luYyByPT57Y29uc3R7aWQ6bix0b3BpYzpzLGVycm9yOmksZW5jb2RlT3B0czpvLHJwY09wdHM6YSxhcHBMaW5rOmN9PXIsbD1IeShuLGkpO2xldCBkO2NvbnN0IHU9YyYmdHlwZW9mKGdsb2JhbD09bnVsbD92b2lkIDA6Z2xvYmFsLkxpbmtpbmcpPCJ1Ijt0cnl7Y29uc3QgcD11P3NjOkFzO2Q9YXdhaXQgdGhpcy5jbGllbnQuY29yZS5jcnlwdG8uZW5jb2RlKHMsbCxQbihRdCh7fSxvfHx7fSkse2VuY29kaW5nOnB9KSl9Y2F0Y2gocCl7dGhyb3cgYXdhaXQgdGhpcy5jbGVhbnVwKCksdGhpcy5jbGllbnQubG9nZ2VyLmVycm9yKGBzZW5kRXJyb3IoKSAtPiBjb3JlLmNyeXB0by5lbmNvZGUoKSBmb3IgdG9waWMgJHtzfSBmYWlsZWRgKSxwfWxldCBoO3RyeXtoPWF3YWl0IHRoaXMuY2xpZW50LmNvcmUuaGlzdG9yeS5nZXQocyxuKX1jYXRjaChwKXt0aHJvdyB0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3IoYHNlbmRFcnJvcigpIC0+IGhpc3RvcnkuZ2V0KCR7c30sICR7bn0pIGZhaWxlZGApLHB9aWYodSl7Y29uc3QgcD1BZyhjLHMsZCk7YXdhaXQgZ2xvYmFsLkxpbmtpbmcub3BlblVSTChwLHRoaXMuY2xpZW50Lm5hbWUpfWVsc2V7Y29uc3QgcD1oLnJlcXVlc3QubWV0aG9kLGY9YXx8dG5bcF0ucmVzO3RoaXMuY2xpZW50LmNvcmUucmVsYXllci5wdWJsaXNoKHMsZCxmKX1hd2FpdCB0aGlzLmNsaWVudC5jb3JlLmhpc3RvcnkucmVzb2x2ZShsKX0pLGtlKHRoaXMsImNsZWFudXAiLGFzeW5jKCk9Pntjb25zdCByPVtdLG49W107dGhpcy5jbGllbnQuc2Vzc2lvbi5nZXRBbGwoKS5mb3JFYWNoKHM9PntsZXQgaT0hMTtpYyhzLmV4cGlyeSkmJihpPSEwKSx0aGlzLmNsaWVudC5jb3JlLmNyeXB0by5rZXljaGFpbi5oYXMocy50b3BpYyl8fChpPSEwKSxpJiZyLnB1c2gocy50b3BpYyl9KSx0aGlzLmNsaWVudC5wcm9wb3NhbC5nZXRBbGwoKS5mb3JFYWNoKHM9PntpYyhzLmV4cGlyeVRpbWVzdGFtcCkmJm4ucHVzaChzLmlkKX0pLGF3YWl0IFByb21pc2UuYWxsKFsuLi5yLm1hcChzPT50aGlzLmRlbGV0ZVNlc3Npb24oe3RvcGljOnN9KSksLi4ubi5tYXAocz0+dGhpcy5kZWxldGVQcm9wb3NhbChzKSldKX0pLGtlKHRoaXMsIm9uUHJvdmlkZXJNZXNzYWdlRXZlbnQiLGFzeW5jIHI9PnshdGhpcy5pbml0aWFsaXplZHx8dGhpcy5yZWxheU1lc3NhZ2VDYWNoZS5sZW5ndGg+MD90aGlzLnJlbGF5TWVzc2FnZUNhY2hlLnB1c2gocik6YXdhaXQgdGhpcy5vblJlbGF5TWVzc2FnZShyKX0pLGtlKHRoaXMsIm9uUmVsYXlFdmVudFJlcXVlc3QiLGFzeW5jIHI9Pnt0aGlzLnJlcXVlc3RRdWV1ZS5xdWV1ZS5wdXNoKHIpLGF3YWl0IHRoaXMucHJvY2Vzc1JlcXVlc3RzUXVldWUoKX0pLGtlKHRoaXMsInByb2Nlc3NSZXF1ZXN0c1F1ZXVlIixhc3luYygpPT57aWYodGhpcy5yZXF1ZXN0UXVldWUuc3RhdGU9PT1hby5hY3RpdmUpe3RoaXMuY2xpZW50LmxvZ2dlci5pbmZvKCJSZXF1ZXN0IHF1ZXVlIGFscmVhZHkgYWN0aXZlLCBza2lwcGluZy4uLiIpO3JldHVybn1mb3IodGhpcy5jbGllbnQubG9nZ2VyLmluZm8oYFJlcXVlc3QgcXVldWUgc3RhcnRpbmcgd2l0aCAke3RoaXMucmVxdWVzdFF1ZXVlLnF1ZXVlLmxlbmd0aH0gcmVxdWVzdHNgKTt0aGlzLnJlcXVlc3RRdWV1ZS5xdWV1ZS5sZW5ndGg+MDspe3RoaXMucmVxdWVzdFF1ZXVlLnN0YXRlPWFvLmFjdGl2ZTtjb25zdCByPXRoaXMucmVxdWVzdFF1ZXVlLnF1ZXVlLnNoaWZ0KCk7aWYocil0cnl7YXdhaXQgdGhpcy5wcm9jZXNzUmVxdWVzdChyKX1jYXRjaChuKXt0aGlzLmNsaWVudC5sb2dnZXIud2FybihuKX19dGhpcy5yZXF1ZXN0UXVldWUuc3RhdGU9YW8uaWRsZX0pLGtlKHRoaXMsInByb2Nlc3NSZXF1ZXN0Iixhc3luYyByPT57Y29uc3R7dG9waWM6bixwYXlsb2FkOnMsYXR0ZXN0YXRpb246aSx0cmFuc3BvcnRUeXBlOm8sZW5jcnlwdGVkSWQ6YX09cixjPXMubWV0aG9kO2lmKCF0aGlzLnNob3VsZElnbm9yZVBhaXJpbmdSZXF1ZXN0KHt0b3BpYzpuLHJlcXVlc3RNZXRob2Q6Y30pKXN3aXRjaChjKXtjYXNlIndjX3Nlc3Npb25Qcm9wb3NlIjpyZXR1cm4gYXdhaXQgdGhpcy5vblNlc3Npb25Qcm9wb3NlUmVxdWVzdCh7dG9waWM6bixwYXlsb2FkOnMsYXR0ZXN0YXRpb246aSxlbmNyeXB0ZWRJZDphfSk7Y2FzZSJ3Y19zZXNzaW9uU2V0dGxlIjpyZXR1cm4gYXdhaXQgdGhpcy5vblNlc3Npb25TZXR0bGVSZXF1ZXN0KG4scyk7Y2FzZSJ3Y19zZXNzaW9uVXBkYXRlIjpyZXR1cm4gYXdhaXQgdGhpcy5vblNlc3Npb25VcGRhdGVSZXF1ZXN0KG4scyk7Y2FzZSJ3Y19zZXNzaW9uRXh0ZW5kIjpyZXR1cm4gYXdhaXQgdGhpcy5vblNlc3Npb25FeHRlbmRSZXF1ZXN0KG4scyk7Y2FzZSJ3Y19zZXNzaW9uUGluZyI6cmV0dXJuIGF3YWl0IHRoaXMub25TZXNzaW9uUGluZ1JlcXVlc3QobixzKTtjYXNlIndjX3Nlc3Npb25EZWxldGUiOnJldHVybiBhd2FpdCB0aGlzLm9uU2Vzc2lvbkRlbGV0ZVJlcXVlc3QobixzKTtjYXNlIndjX3Nlc3Npb25SZXF1ZXN0IjpyZXR1cm4gYXdhaXQgdGhpcy5vblNlc3Npb25SZXF1ZXN0KHt0b3BpYzpuLHBheWxvYWQ6cyxhdHRlc3RhdGlvbjppLGVuY3J5cHRlZElkOmEsdHJhbnNwb3J0VHlwZTpvfSk7Y2FzZSJ3Y19zZXNzaW9uRXZlbnQiOnJldHVybiBhd2FpdCB0aGlzLm9uU2Vzc2lvbkV2ZW50UmVxdWVzdChuLHMpO2Nhc2Uid2Nfc2Vzc2lvbkF1dGhlbnRpY2F0ZSI6cmV0dXJuIGF3YWl0IHRoaXMub25TZXNzaW9uQXV0aGVudGljYXRlUmVxdWVzdCh7dG9waWM6bixwYXlsb2FkOnMsYXR0ZXN0YXRpb246aSxlbmNyeXB0ZWRJZDphLHRyYW5zcG9ydFR5cGU6b30pO2RlZmF1bHQ6cmV0dXJuIHRoaXMuY2xpZW50LmxvZ2dlci5pbmZvKGBVbnN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZCAke2N9YCl9fSksa2UodGhpcywib25SZWxheUV2ZW50UmVzcG9uc2UiLGFzeW5jIHI9Pntjb25zdHt0b3BpYzpuLHBheWxvYWQ6cyx0cmFuc3BvcnRUeXBlOml9PXIsbz0oYXdhaXQgdGhpcy5jbGllbnQuY29yZS5oaXN0b3J5LmdldChuLHMuaWQpKS5yZXF1ZXN0Lm1ldGhvZDtzd2l0Y2gobyl7Y2FzZSJ3Y19zZXNzaW9uUHJvcG9zZSI6cmV0dXJuIHRoaXMub25TZXNzaW9uUHJvcG9zZVJlc3BvbnNlKG4scyxpKTtjYXNlIndjX3Nlc3Npb25TZXR0bGUiOnJldHVybiB0aGlzLm9uU2Vzc2lvblNldHRsZVJlc3BvbnNlKG4scyk7Y2FzZSJ3Y19zZXNzaW9uVXBkYXRlIjpyZXR1cm4gdGhpcy5vblNlc3Npb25VcGRhdGVSZXNwb25zZShuLHMpO2Nhc2Uid2Nfc2Vzc2lvbkV4dGVuZCI6cmV0dXJuIHRoaXMub25TZXNzaW9uRXh0ZW5kUmVzcG9uc2UobixzKTtjYXNlIndjX3Nlc3Npb25QaW5nIjpyZXR1cm4gdGhpcy5vblNlc3Npb25QaW5nUmVzcG9uc2UobixzKTtjYXNlIndjX3Nlc3Npb25SZXF1ZXN0IjpyZXR1cm4gdGhpcy5vblNlc3Npb25SZXF1ZXN0UmVzcG9uc2UobixzKTtjYXNlIndjX3Nlc3Npb25BdXRoZW50aWNhdGUiOnJldHVybiB0aGlzLm9uU2Vzc2lvbkF1dGhlbnRpY2F0ZVJlc3BvbnNlKG4scyk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5jbGllbnQubG9nZ2VyLmluZm8oYFVuc3VwcG9ydGVkIHJlc3BvbnNlIG1ldGhvZCAke299YCl9fSksa2UodGhpcywib25SZWxheUV2ZW50VW5rbm93blBheWxvYWQiLHI9Pntjb25zdHt0b3BpYzpufT1yLHttZXNzYWdlOnN9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGBEZWNvZGVkIHBheWxvYWQgb24gdG9waWMgJHtufSBpcyBub3QgaWRlbnRpZmlhYmxlIGFzIGEgSlNPTi1SUEMgcmVxdWVzdCBvciBhIHJlc3BvbnNlLmApO3Rocm93IG5ldyBFcnJvcihzKX0pLGtlKHRoaXMsInNob3VsZElnbm9yZVBhaXJpbmdSZXF1ZXN0IixyPT57Y29uc3R7dG9waWM6bixyZXF1ZXN0TWV0aG9kOnN9PXIsaT10aGlzLmV4cGVjdGVkUGFpcmluZ01ldGhvZE1hcC5nZXQobik7cmV0dXJuIWl8fGkuaW5jbHVkZXMocyk/ITE6ISEoaS5pbmNsdWRlcygid2Nfc2Vzc2lvbkF1dGhlbnRpY2F0ZSIpJiZ0aGlzLmNsaWVudC5ldmVudHMubGlzdGVuZXJDb3VudCgic2Vzc2lvbl9hdXRoZW50aWNhdGUiKT4wKX0pLGtlKHRoaXMsIm9uU2Vzc2lvblByb3Bvc2VSZXF1ZXN0Iixhc3luYyByPT57Y29uc3R7dG9waWM6bixwYXlsb2FkOnMsYXR0ZXN0YXRpb246aSxlbmNyeXB0ZWRJZDpvfT1yLHtwYXJhbXM6YSxpZDpjfT1zO3RyeXtjb25zdCBsPXRoaXMuY2xpZW50LmNvcmUuZXZlbnRDbGllbnQuZ2V0RXZlbnQoe3RvcGljOm59KTt0aGlzLmNsaWVudC5ldmVudHMubGlzdGVuZXJDb3VudCgic2Vzc2lvbl9wcm9wb3NhbCIpPT09MCYmKGNvbnNvbGUud2FybigiTm8gbGlzdGVuZXIgZm9yIHNlc3Npb25fcHJvcG9zYWwgZXZlbnQiKSxsPy5zZXRFcnJvcihYby5wcm9wb3NhbF9saXN0ZW5lcl9ub3RfZm91bmQpKSx0aGlzLmlzVmFsaWRDb25uZWN0KFF0KHt9LHMucGFyYW1zKSk7Y29uc3QgZD1hLmV4cGlyeVRpbWVzdGFtcHx8WXIodG4ud2Nfc2Vzc2lvblByb3Bvc2UucmVxLnR0bCksdT1RdCh7aWQ6YyxwYWlyaW5nVG9waWM6bixleHBpcnlUaW1lc3RhbXA6ZH0sYSk7YXdhaXQgdGhpcy5zZXRQcm9wb3NhbChjLHUpO2NvbnN0IGg9YXdhaXQgdGhpcy5nZXRWZXJpZnlDb250ZXh0KHthdHRlc3RhdGlvbklkOmksaGFzaDpmbyhKU09OLnN0cmluZ2lmeShzKSksZW5jcnlwdGVkSWQ6byxtZXRhZGF0YTp1LnByb3Bvc2VyLm1ldGFkYXRhfSk7bD8uYWRkVHJhY2UodW8uZW1pdF9zZXNzaW9uX3Byb3Bvc2FsKSx0aGlzLmNsaWVudC5ldmVudHMuZW1pdCgic2Vzc2lvbl9wcm9wb3NhbCIse2lkOmMscGFyYW1zOnUsdmVyaWZ5Q29udGV4dDpofSl9Y2F0Y2gobCl7YXdhaXQgdGhpcy5zZW5kRXJyb3Ioe2lkOmMsdG9waWM6bixlcnJvcjpsLHJwY09wdHM6dG4ud2Nfc2Vzc2lvblByb3Bvc2UuYXV0b1JlamVjdH0pLHRoaXMuY2xpZW50LmxvZ2dlci5lcnJvcihsKX19KSxrZSh0aGlzLCJvblNlc3Npb25Qcm9wb3NlUmVzcG9uc2UiLGFzeW5jKHIsbixzKT0+e2NvbnN0e2lkOml9PW47aWYocG8obikpe2NvbnN0e3Jlc3VsdDpvfT1uO3RoaXMuY2xpZW50LmxvZ2dlci50cmFjZSh7dHlwZToibWV0aG9kIixtZXRob2Q6Im9uU2Vzc2lvblByb3Bvc2VSZXNwb25zZSIscmVzdWx0Om99KTtjb25zdCBhPXRoaXMuY2xpZW50LnByb3Bvc2FsLmdldChpKTt0aGlzLmNsaWVudC5sb2dnZXIudHJhY2Uoe3R5cGU6Im1ldGhvZCIsbWV0aG9kOiJvblNlc3Npb25Qcm9wb3NlUmVzcG9uc2UiLHByb3Bvc2FsOmF9KTtjb25zdCBjPWEucHJvcG9zZXIucHVibGljS2V5O3RoaXMuY2xpZW50LmxvZ2dlci50cmFjZSh7dHlwZToibWV0aG9kIixtZXRob2Q6Im9uU2Vzc2lvblByb3Bvc2VSZXNwb25zZSIsc2VsZlB1YmxpY0tleTpjfSk7Y29uc3QgbD1vLnJlc3BvbmRlclB1YmxpY0tleTt0aGlzLmNsaWVudC5sb2dnZXIudHJhY2Uoe3R5cGU6Im1ldGhvZCIsbWV0aG9kOiJvblNlc3Npb25Qcm9wb3NlUmVzcG9uc2UiLHBlZXJQdWJsaWNLZXk6bH0pO2NvbnN0IGQ9YXdhaXQgdGhpcy5jbGllbnQuY29yZS5jcnlwdG8uZ2VuZXJhdGVTaGFyZWRLZXkoYyxsKTt0aGlzLnBlbmRpbmdTZXNzaW9ucy5zZXQoaSx7c2Vzc2lvblRvcGljOmQscGFpcmluZ1RvcGljOnIscHJvcG9zYWxJZDppLHB1YmxpY0tleTpjfSk7Y29uc3QgdT1hd2FpdCB0aGlzLmNsaWVudC5jb3JlLnJlbGF5ZXIuc3Vic2NyaWJlKGQse3RyYW5zcG9ydFR5cGU6c30pO3RoaXMuY2xpZW50LmxvZ2dlci50cmFjZSh7dHlwZToibWV0aG9kIixtZXRob2Q6Im9uU2Vzc2lvblByb3Bvc2VSZXNwb25zZSIsc3Vic2NyaXB0aW9uSWQ6dX0pLGF3YWl0IHRoaXMuY2xpZW50LmNvcmUucGFpcmluZy5hY3RpdmF0ZSh7dG9waWM6cn0pfWVsc2UgaWYoWWkobikpe2F3YWl0IHRoaXMuY2xpZW50LnByb3Bvc2FsLmRlbGV0ZShpLEt0KCJVU0VSX0RJU0NPTk5FQ1RFRCIpKTtjb25zdCBvPUZ0KCJzZXNzaW9uX2Nvbm5lY3QiLGkpO2lmKHRoaXMuZXZlbnRzLmxpc3RlbmVyQ291bnQobyk9PT0wKXRocm93IG5ldyBFcnJvcihgZW1pdHRpbmcgJHtvfSB3aXRob3V0IGFueSBsaXN0ZW5lcnMsIDk1NGApO3RoaXMuZXZlbnRzLmVtaXQobyx7ZXJyb3I6bi5lcnJvcn0pfX0pLGtlKHRoaXMsIm9uU2Vzc2lvblNldHRsZVJlcXVlc3QiLGFzeW5jKHIsbik9Pntjb25zdHtpZDpzLHBhcmFtczppfT1uO3RyeXt0aGlzLmlzVmFsaWRTZXNzaW9uU2V0dGxlUmVxdWVzdChpKTtjb25zdHtyZWxheTpvLGNvbnRyb2xsZXI6YSxleHBpcnk6YyxuYW1lc3BhY2VzOmwsc2Vzc2lvblByb3BlcnRpZXM6ZCxzY29wZWRQcm9wZXJ0aWVzOnUsc2Vzc2lvbkNvbmZpZzpofT1uLnBhcmFtcyxwPVsuLi50aGlzLnBlbmRpbmdTZXNzaW9ucy52YWx1ZXMoKV0uZmluZCh3PT53LnNlc3Npb25Ub3BpYz09PXIpO2lmKCFwKXJldHVybiB0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3IoYFBlbmRpbmcgc2Vzc2lvbiBub3QgZm91bmQgZm9yIHRvcGljICR7cn1gKTtjb25zdCBmPXRoaXMuY2xpZW50LnByb3Bvc2FsLmdldChwLnByb3Bvc2FsSWQpLG09UG4oUXQoUXQoUXQoe3RvcGljOnIscmVsYXk6byxleHBpcnk6YyxuYW1lc3BhY2VzOmwsYWNrbm93bGVkZ2VkOiEwLHBhaXJpbmdUb3BpYzpwLnBhaXJpbmdUb3BpYyxyZXF1aXJlZE5hbWVzcGFjZXM6Zi5yZXF1aXJlZE5hbWVzcGFjZXMsb3B0aW9uYWxOYW1lc3BhY2VzOmYub3B0aW9uYWxOYW1lc3BhY2VzLGNvbnRyb2xsZXI6YS5wdWJsaWNLZXksc2VsZjp7cHVibGljS2V5OnAucHVibGljS2V5LG1ldGFkYXRhOnRoaXMuY2xpZW50Lm1ldGFkYXRhfSxwZWVyOntwdWJsaWNLZXk6YS5wdWJsaWNLZXksbWV0YWRhdGE6YS5tZXRhZGF0YX19LGQmJntzZXNzaW9uUHJvcGVydGllczpkfSksdSYme3Njb3BlZFByb3BlcnRpZXM6dX0pLGgmJntzZXNzaW9uQ29uZmlnOmh9KSx7dHJhbnNwb3J0VHlwZTpjci5yZWxheX0pO2F3YWl0IHRoaXMuY2xpZW50LnNlc3Npb24uc2V0KG0udG9waWMsbSksYXdhaXQgdGhpcy5zZXRFeHBpcnkobS50b3BpYyxtLmV4cGlyeSksYXdhaXQgdGhpcy5jbGllbnQuY29yZS5wYWlyaW5nLnVwZGF0ZU1ldGFkYXRhKHt0b3BpYzpwLnBhaXJpbmdUb3BpYyxtZXRhZGF0YTptLnBlZXIubWV0YWRhdGF9KSx0aGlzLmNsaWVudC5ldmVudHMuZW1pdCgic2Vzc2lvbl9jb25uZWN0Iix7c2Vzc2lvbjptfSksdGhpcy5ldmVudHMuZW1pdChGdCgic2Vzc2lvbl9jb25uZWN0IixwLnByb3Bvc2FsSWQpLHtzZXNzaW9uOm19KSx0aGlzLnBlbmRpbmdTZXNzaW9ucy5kZWxldGUocC5wcm9wb3NhbElkKSx0aGlzLmRlbGV0ZVByb3Bvc2FsKHAucHJvcG9zYWxJZCwhMSksdGhpcy5jbGVhbnVwRHVwbGljYXRlUGFpcmluZ3MobSksYXdhaXQgdGhpcy5zZW5kUmVzdWx0KHtpZDpuLmlkLHRvcGljOnIscmVzdWx0OiEwLHRocm93T25GYWlsZWRQdWJsaXNoOiEwfSl9Y2F0Y2gobyl7YXdhaXQgdGhpcy5zZW5kRXJyb3Ioe2lkOnMsdG9waWM6cixlcnJvcjpvfSksdGhpcy5jbGllbnQubG9nZ2VyLmVycm9yKG8pfX0pLGtlKHRoaXMsIm9uU2Vzc2lvblNldHRsZVJlc3BvbnNlIixhc3luYyhyLG4pPT57Y29uc3R7aWQ6c309bjtwbyhuKT8oYXdhaXQgdGhpcy5jbGllbnQuc2Vzc2lvbi51cGRhdGUocix7YWNrbm93bGVkZ2VkOiEwfSksdGhpcy5ldmVudHMuZW1pdChGdCgic2Vzc2lvbl9hcHByb3ZlIixzKSx7fSkpOllpKG4pJiYoYXdhaXQgdGhpcy5jbGllbnQuc2Vzc2lvbi5kZWxldGUocixLdCgiVVNFUl9ESVNDT05ORUNURUQiKSksdGhpcy5ldmVudHMuZW1pdChGdCgic2Vzc2lvbl9hcHByb3ZlIixzKSx7ZXJyb3I6bi5lcnJvcn0pKX0pLGtlKHRoaXMsIm9uU2Vzc2lvblVwZGF0ZVJlcXVlc3QiLGFzeW5jKHIsbik9Pntjb25zdHtwYXJhbXM6cyxpZDppfT1uO3RyeXtjb25zdCBvPWAke3J9X3Nlc3Npb25fdXBkYXRlYCxhPUZwLmdldChvKTtpZihhJiZ0aGlzLmlzUmVxdWVzdE91dE9mU3luYyhhLGkpKXt0aGlzLmNsaWVudC5sb2dnZXIud2FybihgRGlzY2FyZGluZyBvdXQgb2Ygc3luYyByZXF1ZXN0IC0gJHtpfWApLHRoaXMuc2VuZEVycm9yKHtpZDppLHRvcGljOnIsZXJyb3I6S3QoIklOVkFMSURfVVBEQVRFX1JFUVVFU1QiKX0pO3JldHVybn10aGlzLmlzVmFsaWRVcGRhdGUoUXQoe3RvcGljOnJ9LHMpKTt0cnl7RnAuc2V0KG8saSksYXdhaXQgdGhpcy5jbGllbnQuc2Vzc2lvbi51cGRhdGUocix7bmFtZXNwYWNlczpzLm5hbWVzcGFjZXN9KSxhd2FpdCB0aGlzLnNlbmRSZXN1bHQoe2lkOmksdG9waWM6cixyZXN1bHQ6ITAsdGhyb3dPbkZhaWxlZFB1Ymxpc2g6ITB9KX1jYXRjaChjKXt0aHJvdyBGcC5kZWxldGUobyksY310aGlzLmNsaWVudC5ldmVudHMuZW1pdCgic2Vzc2lvbl91cGRhdGUiLHtpZDppLHRvcGljOnIscGFyYW1zOnN9KX1jYXRjaChvKXthd2FpdCB0aGlzLnNlbmRFcnJvcih7aWQ6aSx0b3BpYzpyLGVycm9yOm99KSx0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3Iobyl9fSksa2UodGhpcywiaXNSZXF1ZXN0T3V0T2ZTeW5jIiwocixuKT0+bi50b1N0cmluZygpLnNsaWNlKDAsLTMpPHIudG9TdHJpbmcoKS5zbGljZSgwLC0zKSksa2UodGhpcywib25TZXNzaW9uVXBkYXRlUmVzcG9uc2UiLChyLG4pPT57Y29uc3R7aWQ6c309bixpPUZ0KCJzZXNzaW9uX3VwZGF0ZSIscyk7aWYodGhpcy5ldmVudHMubGlzdGVuZXJDb3VudChpKT09PTApdGhyb3cgbmV3IEVycm9yKGBlbWl0dGluZyAke2l9IHdpdGhvdXQgYW55IGxpc3RlbmVyc2ApO3BvKG4pP3RoaXMuZXZlbnRzLmVtaXQoRnQoInNlc3Npb25fdXBkYXRlIixzKSx7fSk6WWkobikmJnRoaXMuZXZlbnRzLmVtaXQoRnQoInNlc3Npb25fdXBkYXRlIixzKSx7ZXJyb3I6bi5lcnJvcn0pfSksa2UodGhpcywib25TZXNzaW9uRXh0ZW5kUmVxdWVzdCIsYXN5bmMocixuKT0+e2NvbnN0e2lkOnN9PW47dHJ5e3RoaXMuaXNWYWxpZEV4dGVuZCh7dG9waWM6cn0pLGF3YWl0IHRoaXMuc2V0RXhwaXJ5KHIsWXIoT2QpKSxhd2FpdCB0aGlzLnNlbmRSZXN1bHQoe2lkOnMsdG9waWM6cixyZXN1bHQ6ITAsdGhyb3dPbkZhaWxlZFB1Ymxpc2g6ITB9KSx0aGlzLmNsaWVudC5ldmVudHMuZW1pdCgic2Vzc2lvbl9leHRlbmQiLHtpZDpzLHRvcGljOnJ9KX1jYXRjaChpKXthd2FpdCB0aGlzLnNlbmRFcnJvcih7aWQ6cyx0b3BpYzpyLGVycm9yOml9KSx0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3IoaSl9fSksa2UodGhpcywib25TZXNzaW9uRXh0ZW5kUmVzcG9uc2UiLChyLG4pPT57Y29uc3R7aWQ6c309bixpPUZ0KCJzZXNzaW9uX2V4dGVuZCIscyk7aWYodGhpcy5ldmVudHMubGlzdGVuZXJDb3VudChpKT09PTApdGhyb3cgbmV3IEVycm9yKGBlbWl0dGluZyAke2l9IHdpdGhvdXQgYW55IGxpc3RlbmVyc2ApO3BvKG4pP3RoaXMuZXZlbnRzLmVtaXQoRnQoInNlc3Npb25fZXh0ZW5kIixzKSx7fSk6WWkobikmJnRoaXMuZXZlbnRzLmVtaXQoRnQoInNlc3Npb25fZXh0ZW5kIixzKSx7ZXJyb3I6bi5lcnJvcn0pfSksa2UodGhpcywib25TZXNzaW9uUGluZ1JlcXVlc3QiLGFzeW5jKHIsbik9Pntjb25zdHtpZDpzfT1uO3RyeXt0aGlzLmlzVmFsaWRQaW5nKHt0b3BpYzpyfSksYXdhaXQgdGhpcy5zZW5kUmVzdWx0KHtpZDpzLHRvcGljOnIscmVzdWx0OiEwLHRocm93T25GYWlsZWRQdWJsaXNoOiEwfSksdGhpcy5jbGllbnQuZXZlbnRzLmVtaXQoInNlc3Npb25fcGluZyIse2lkOnMsdG9waWM6cn0pfWNhdGNoKGkpe2F3YWl0IHRoaXMuc2VuZEVycm9yKHtpZDpzLHRvcGljOnIsZXJyb3I6aX0pLHRoaXMuY2xpZW50LmxvZ2dlci5lcnJvcihpKX19KSxrZSh0aGlzLCJvblNlc3Npb25QaW5nUmVzcG9uc2UiLChyLG4pPT57Y29uc3R7aWQ6c309bixpPUZ0KCJzZXNzaW9uX3BpbmciLHMpO3NldFRpbWVvdXQoKCk9PntpZih0aGlzLmV2ZW50cy5saXN0ZW5lckNvdW50KGkpPT09MCl0aHJvdyBuZXcgRXJyb3IoYGVtaXR0aW5nICR7aX0gd2l0aG91dCBhbnkgbGlzdGVuZXJzIDIxNzZgKTtwbyhuKT90aGlzLmV2ZW50cy5lbWl0KEZ0KCJzZXNzaW9uX3BpbmciLHMpLHt9KTpZaShuKSYmdGhpcy5ldmVudHMuZW1pdChGdCgic2Vzc2lvbl9waW5nIixzKSx7ZXJyb3I6bi5lcnJvcn0pfSw1MDApfSksa2UodGhpcywib25TZXNzaW9uRGVsZXRlUmVxdWVzdCIsYXN5bmMocixuKT0+e2NvbnN0e2lkOnN9PW47dHJ5e3RoaXMuaXNWYWxpZERpc2Nvbm5lY3Qoe3RvcGljOnIscmVhc29uOm4ucGFyYW1zfSksUHJvbWlzZS5hbGwoW25ldyBQcm9taXNlKGk9Pnt0aGlzLmNsaWVudC5jb3JlLnJlbGF5ZXIub25jZShhbi5wdWJsaXNoLGFzeW5jKCk9PntpKGF3YWl0IHRoaXMuZGVsZXRlU2Vzc2lvbih7dG9waWM6cixpZDpzfSkpfSl9KSx0aGlzLnNlbmRSZXN1bHQoe2lkOnMsdG9waWM6cixyZXN1bHQ6ITAsdGhyb3dPbkZhaWxlZFB1Ymxpc2g6ITB9KSx0aGlzLmNsZWFudXBQZW5kaW5nU2VudFJlcXVlc3RzRm9yVG9waWMoe3RvcGljOnIsZXJyb3I6S3QoIlVTRVJfRElTQ09OTkVDVEVEIil9KV0pLmNhdGNoKGk9PnRoaXMuY2xpZW50LmxvZ2dlci5lcnJvcihpKSl9Y2F0Y2goaSl7dGhpcy5jbGllbnQubG9nZ2VyLmVycm9yKGkpfX0pLGtlKHRoaXMsIm9uU2Vzc2lvblJlcXVlc3QiLGFzeW5jIHI9Pnt2YXIgbixzLGk7Y29uc3R7dG9waWM6byxwYXlsb2FkOmEsYXR0ZXN0YXRpb246YyxlbmNyeXB0ZWRJZDpsLHRyYW5zcG9ydFR5cGU6ZH09cix7aWQ6dSxwYXJhbXM6aH09YTt0cnl7YXdhaXQgdGhpcy5pc1ZhbGlkUmVxdWVzdChRdCh7dG9waWM6b30saCkpO2NvbnN0IHA9dGhpcy5jbGllbnQuc2Vzc2lvbi5nZXQobyksZj1hd2FpdCB0aGlzLmdldFZlcmlmeUNvbnRleHQoe2F0dGVzdGF0aW9uSWQ6YyxoYXNoOmZvKEpTT04uc3RyaW5naWZ5KGxjKCJ3Y19zZXNzaW9uUmVxdWVzdCIsaCx1KSkpLGVuY3J5cHRlZElkOmwsbWV0YWRhdGE6cC5wZWVyLm1ldGFkYXRhLHRyYW5zcG9ydFR5cGU6ZH0pLG09e2lkOnUsdG9waWM6byxwYXJhbXM6aCx2ZXJpZnlDb250ZXh0OmZ9O2F3YWl0IHRoaXMuc2V0UGVuZGluZ1Nlc3Npb25SZXF1ZXN0KG0pLGQ9PT1jci5saW5rX21vZGUmJihuPXAucGVlci5tZXRhZGF0YS5yZWRpcmVjdCkhPW51bGwmJm4udW5pdmVyc2FsJiZ0aGlzLmNsaWVudC5jb3JlLmFkZExpbmtNb2RlU3VwcG9ydGVkQXBwKChzPXAucGVlci5tZXRhZGF0YS5yZWRpcmVjdCk9PW51bGw/dm9pZCAwOnMudW5pdmVyc2FsKSwoaT10aGlzLmNsaWVudC5zaWduQ29uZmlnKSE9bnVsbCYmaS5kaXNhYmxlUmVxdWVzdFF1ZXVlP3RoaXMuZW1pdFNlc3Npb25SZXF1ZXN0KG0pOih0aGlzLmFkZFNlc3Npb25SZXF1ZXN0VG9TZXNzaW9uUmVxdWVzdFF1ZXVlKG0pLHRoaXMucHJvY2Vzc1Nlc3Npb25SZXF1ZXN0UXVldWUoKSl9Y2F0Y2gocCl7YXdhaXQgdGhpcy5zZW5kRXJyb3Ioe2lkOnUsdG9waWM6byxlcnJvcjpwfSksdGhpcy5jbGllbnQubG9nZ2VyLmVycm9yKHApfX0pLGtlKHRoaXMsIm9uU2Vzc2lvblJlcXVlc3RSZXNwb25zZSIsKHIsbik9Pntjb25zdHtpZDpzfT1uLGk9RnQoInNlc3Npb25fcmVxdWVzdCIscyk7aWYodGhpcy5ldmVudHMubGlzdGVuZXJDb3VudChpKT09PTApdGhyb3cgbmV3IEVycm9yKGBlbWl0dGluZyAke2l9IHdpdGhvdXQgYW55IGxpc3RlbmVyc2ApO3BvKG4pP3RoaXMuZXZlbnRzLmVtaXQoRnQoInNlc3Npb25fcmVxdWVzdCIscykse3Jlc3VsdDpuLnJlc3VsdH0pOllpKG4pJiZ0aGlzLmV2ZW50cy5lbWl0KEZ0KCJzZXNzaW9uX3JlcXVlc3QiLHMpLHtlcnJvcjpuLmVycm9yfSl9KSxrZSh0aGlzLCJvblNlc3Npb25FdmVudFJlcXVlc3QiLGFzeW5jKHIsbik9Pntjb25zdHtpZDpzLHBhcmFtczppfT1uO3RyeXtjb25zdCBvPWAke3J9X3Nlc3Npb25fZXZlbnRfJHtpLmV2ZW50Lm5hbWV9YCxhPUZwLmdldChvKTtpZihhJiZ0aGlzLmlzUmVxdWVzdE91dE9mU3luYyhhLHMpKXt0aGlzLmNsaWVudC5sb2dnZXIuaW5mbyhgRGlzY2FyZGluZyBvdXQgb2Ygc3luYyByZXF1ZXN0IC0gJHtzfWApO3JldHVybn10aGlzLmlzVmFsaWRFbWl0KFF0KHt0b3BpYzpyfSxpKSksdGhpcy5jbGllbnQuZXZlbnRzLmVtaXQoInNlc3Npb25fZXZlbnQiLHtpZDpzLHRvcGljOnIscGFyYW1zOml9KSxGcC5zZXQobyxzKX1jYXRjaChvKXthd2FpdCB0aGlzLnNlbmRFcnJvcih7aWQ6cyx0b3BpYzpyLGVycm9yOm99KSx0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3Iobyl9fSksa2UodGhpcywib25TZXNzaW9uQXV0aGVudGljYXRlUmVzcG9uc2UiLChyLG4pPT57Y29uc3R7aWQ6c309bjt0aGlzLmNsaWVudC5sb2dnZXIudHJhY2Uoe3R5cGU6Im1ldGhvZCIsbWV0aG9kOiJvblNlc3Npb25BdXRoZW50aWNhdGVSZXNwb25zZSIsdG9waWM6cixwYXlsb2FkOm59KSxwbyhuKT90aGlzLmV2ZW50cy5lbWl0KEZ0KCJzZXNzaW9uX3JlcXVlc3QiLHMpLHtyZXN1bHQ6bi5yZXN1bHR9KTpZaShuKSYmdGhpcy5ldmVudHMuZW1pdChGdCgic2Vzc2lvbl9yZXF1ZXN0IixzKSx7ZXJyb3I6bi5lcnJvcn0pfSksa2UodGhpcywib25TZXNzaW9uQXV0aGVudGljYXRlUmVxdWVzdCIsYXN5bmMgcj0+e3ZhciBuO2NvbnN0e3RvcGljOnMscGF5bG9hZDppLGF0dGVzdGF0aW9uOm8sZW5jcnlwdGVkSWQ6YSx0cmFuc3BvcnRUeXBlOmN9PXI7dHJ5e2NvbnN0e3JlcXVlc3RlcjpsLGF1dGhQYXlsb2FkOmQsZXhwaXJ5VGltZXN0YW1wOnV9PWkucGFyYW1zLGg9YXdhaXQgdGhpcy5nZXRWZXJpZnlDb250ZXh0KHthdHRlc3RhdGlvbklkOm8saGFzaDpmbyhKU09OLnN0cmluZ2lmeShpKSksZW5jcnlwdGVkSWQ6YSxtZXRhZGF0YTpsLm1ldGFkYXRhLHRyYW5zcG9ydFR5cGU6Y30pLHA9e3JlcXVlc3RlcjpsLHBhaXJpbmdUb3BpYzpzLGlkOmkuaWQsYXV0aFBheWxvYWQ6ZCx2ZXJpZnlDb250ZXh0OmgsZXhwaXJ5VGltZXN0YW1wOnV9O2F3YWl0IHRoaXMuc2V0QXV0aFJlcXVlc3QoaS5pZCx7cmVxdWVzdDpwLHBhaXJpbmdUb3BpYzpzLHRyYW5zcG9ydFR5cGU6Y30pLGM9PT1jci5saW5rX21vZGUmJihuPWwubWV0YWRhdGEucmVkaXJlY3QpIT1udWxsJiZuLnVuaXZlcnNhbCYmdGhpcy5jbGllbnQuY29yZS5hZGRMaW5rTW9kZVN1cHBvcnRlZEFwcChsLm1ldGFkYXRhLnJlZGlyZWN0LnVuaXZlcnNhbCksdGhpcy5jbGllbnQuZXZlbnRzLmVtaXQoInNlc3Npb25fYXV0aGVudGljYXRlIix7dG9waWM6cyxwYXJhbXM6aS5wYXJhbXMsaWQ6aS5pZCx2ZXJpZnlDb250ZXh0Omh9KX1jYXRjaChsKXt0aGlzLmNsaWVudC5sb2dnZXIuZXJyb3IobCk7Y29uc3QgZD1pLnBhcmFtcy5yZXF1ZXN0ZXIucHVibGljS2V5LHU9YXdhaXQgdGhpcy5jbGllbnQuY29yZS5jcnlwdG8uZ2VuZXJhdGVLZXlQYWlyKCksaD10aGlzLmdldEFwcExpbmtJZkVuYWJsZWQoaS5wYXJhbXMucmVxdWVzdGVyLm1ldGFkYXRhLGMpLHA9e3R5cGU6dWEscmVjZWl2ZXJQdWJsaWNLZXk6ZCxzZW5kZXJQdWJsaWNLZXk6dX07YXdhaXQgdGhpcy5zZW5kRXJyb3Ioe2lkOmkuaWQsdG9waWM6cyxlcnJvcjpsLGVuY29kZU9wdHM6cCxycGNPcHRzOnRuLndjX3Nlc3Npb25BdXRoZW50aWNhdGUuYXV0b1JlamVjdCxhcHBMaW5rOmh9KX19KSxrZSh0aGlzLCJhZGRTZXNzaW9uUmVxdWVzdFRvU2Vzc2lvblJlcXVlc3RRdWV1ZSIscj0+e3RoaXMuc2Vzc2lvblJlcXVlc3RRdWV1ZS5xdWV1ZS5wdXNoKHIpfSksa2UodGhpcywiY2xlYW51cEFmdGVyUmVzcG9uc2UiLHI9Pnt0aGlzLmRlbGV0ZVBlbmRpbmdTZXNzaW9uUmVxdWVzdChyLnJlc3BvbnNlLmlkLHttZXNzYWdlOiJmdWxmaWxsZWQiLGNvZGU6MH0pLHNldFRpbWVvdXQoKCk9Pnt0aGlzLnNlc3Npb25SZXF1ZXN0UXVldWUuc3RhdGU9YW8uaWRsZSx0aGlzLnByb2Nlc3NTZXNzaW9uUmVxdWVzdFF1ZXVlKCl9LFBlLnRvTWlsaXNlY29uZHModGhpcy5yZXF1ZXN0UXVldWVEZWxheSkpfSksa2UodGhpcywiY2xlYW51cFBlbmRpbmdTZW50UmVxdWVzdHNGb3JUb3BpYyIsKHt0b3BpYzpyLGVycm9yOm59KT0+e2NvbnN0IHM9dGhpcy5jbGllbnQuY29yZS5oaXN0b3J5LnBlbmRpbmc7cy5sZW5ndGg+MCYmcy5maWx0ZXIoaT0+aS50b3BpYz09PXImJmkucmVxdWVzdC5tZXRob2Q9PT0id2Nfc2Vzc2lvblJlcXVlc3QiKS5mb3JFYWNoKGk9Pntjb25zdCBvPWkucmVxdWVzdC5pZCxhPUZ0KCJzZXNzaW9uX3JlcXVlc3QiLG8pO2lmKHRoaXMuZXZlbnRzLmxpc3RlbmVyQ291bnQoYSk9PT0wKXRocm93IG5ldyBFcnJvcihgZW1pdHRpbmcgJHthfSB3aXRob3V0IGFueSBsaXN0ZW5lcnNgKTt0aGlzLmV2ZW50cy5lbWl0KEZ0KCJzZXNzaW9uX3JlcXVlc3QiLGkucmVxdWVzdC5pZCkse2Vycm9yOm59KX0pfSksa2UodGhpcywicHJvY2Vzc1Nlc3Npb25SZXF1ZXN0UXVldWUiLCgpPT57aWYodGhpcy5zZXNzaW9uUmVxdWVzdFF1ZXVlLnN0YXRlPT09YW8uYWN0aXZlKXt0aGlzLmNsaWVudC5sb2dnZXIuaW5mbygic2Vzc2lvbiByZXF1ZXN0IHF1ZXVlIGlzIGFscmVhZHkgYWN0aXZlLiIpO3JldHVybn1jb25zdCByPXRoaXMuc2Vzc2lvblJlcXVlc3RRdWV1ZS5xdWV1ZVswXTtpZighcil7dGhpcy5jbGllbnQubG9nZ2VyLmluZm8oInNlc3Npb24gcmVxdWVzdCBxdWV1ZSBpcyBlbXB0eS4iKTtyZXR1cm59dHJ5e3RoaXMuc2Vzc2lvblJlcXVlc3RRdWV1ZS5zdGF0ZT1hby5hY3RpdmUsdGhpcy5lbWl0U2Vzc2lvblJlcXVlc3Qocil9Y2F0Y2gobil7dGhpcy5jbGllbnQubG9nZ2VyLmVycm9yKG4pfX0pLGtlKHRoaXMsImVtaXRTZXNzaW9uUmVxdWVzdCIscj0+e3RoaXMuY2xpZW50LmV2ZW50cy5lbWl0KCJzZXNzaW9uX3JlcXVlc3QiLHIpfSksa2UodGhpcywib25QYWlyaW5nQ3JlYXRlZCIscj0+e2lmKHIubWV0aG9kcyYmdGhpcy5leHBlY3RlZFBhaXJpbmdNZXRob2RNYXAuc2V0KHIudG9waWMsci5tZXRob2RzKSxyLmFjdGl2ZSlyZXR1cm47Y29uc3Qgbj10aGlzLmNsaWVudC5wcm9wb3NhbC5nZXRBbGwoKS5maW5kKHM9PnMucGFpcmluZ1RvcGljPT09ci50b3BpYyk7biYmdGhpcy5vblNlc3Npb25Qcm9wb3NlUmVxdWVzdCh7dG9waWM6ci50b3BpYyxwYXlsb2FkOmxjKCJ3Y19zZXNzaW9uUHJvcG9zZSIsUG4oUXQoe30sbikse3JlcXVpcmVkTmFtZXNwYWNlczpuLnJlcXVpcmVkTmFtZXNwYWNlcyxvcHRpb25hbE5hbWVzcGFjZXM6bi5vcHRpb25hbE5hbWVzcGFjZXMscmVsYXlzOm4ucmVsYXlzLHByb3Bvc2VyOm4ucHJvcG9zZXIsc2Vzc2lvblByb3BlcnRpZXM6bi5zZXNzaW9uUHJvcGVydGllcyxzY29wZWRQcm9wZXJ0aWVzOm4uc2NvcGVkUHJvcGVydGllc30pLG4uaWQpfSl9KSxrZSh0aGlzLCJpc1ZhbGlkQ29ubmVjdCIsYXN5bmMgcj0+e2lmKCFlaShyKSl7Y29uc3R7bWVzc2FnZTpsfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgY29ubmVjdCgpIHBhcmFtczogJHtKU09OLnN0cmluZ2lmeShyKX1gKTt0aHJvdyBuZXcgRXJyb3IobCl9Y29uc3R7cGFpcmluZ1RvcGljOm4scmVxdWlyZWROYW1lc3BhY2VzOnMsb3B0aW9uYWxOYW1lc3BhY2VzOmksc2Vzc2lvblByb3BlcnRpZXM6byxzY29wZWRQcm9wZXJ0aWVzOmEscmVsYXlzOmN9PXI7aWYoRW4obil8fGF3YWl0IHRoaXMuaXNWYWxpZFBhaXJpbmdUb3BpYyhuKSwhSGllKGMpKXtjb25zdHttZXNzYWdlOmx9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGBjb25uZWN0KCkgcmVsYXlzOiAke2N9YCk7dGhyb3cgbmV3IEVycm9yKGwpfWlmKCFFbihzKSYmWTAocykhPT0wJiZ0aGlzLnZhbGlkYXRlTmFtZXNwYWNlcyhzLCJyZXF1aXJlZE5hbWVzcGFjZXMiKSwhRW4oaSkmJlkwKGkpIT09MCYmdGhpcy52YWxpZGF0ZU5hbWVzcGFjZXMoaSwib3B0aW9uYWxOYW1lc3BhY2VzIiksRW4obyl8fHRoaXMudmFsaWRhdGVTZXNzaW9uUHJvcHMobywic2Vzc2lvblByb3BlcnRpZXMiKSwhRW4oYSkpe3RoaXMudmFsaWRhdGVTZXNzaW9uUHJvcHMoYSwic2NvcGVkUHJvcGVydGllcyIpO2NvbnN0IGw9T2JqZWN0LmtleXMoc3x8e30pLmNvbmNhdChPYmplY3Qua2V5cyhpfHx7fSkpO2lmKCFPYmplY3Qua2V5cyhhKS5ldmVyeShkPT5sLmluY2x1ZGVzKGQpKSl0aHJvdyBuZXcgRXJyb3IoYFNjb3BlZCBwcm9wZXJ0aWVzIG11c3QgYmUgYSBzdWJzZXQgb2YgcmVxdWlyZWQvb3B0aW9uYWwgbmFtZXNwYWNlcywgcmVjZWl2ZWQ6ICR7SlNPTi5zdHJpbmdpZnkoYSl9LCByZXF1aXJlZC9vcHRpb25hbCBuYW1lc3BhY2VzOiAke0pTT04uc3RyaW5naWZ5KGwpfWApfX0pLGtlKHRoaXMsInZhbGlkYXRlTmFtZXNwYWNlcyIsKHIsbik9Pntjb25zdCBzPVdpZShyLCJjb25uZWN0KCkiLG4pO2lmKHMpdGhyb3cgbmV3IEVycm9yKHMubWVzc2FnZSl9KSxrZSh0aGlzLCJpc1ZhbGlkQXBwcm92ZSIsYXN5bmMgcj0+e2lmKCFlaShyKSl0aHJvdyBuZXcgRXJyb3IoT2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYGFwcHJvdmUoKSBwYXJhbXM6ICR7cn1gKS5tZXNzYWdlKTtjb25zdHtpZDpuLG5hbWVzcGFjZXM6cyxyZWxheVByb3RvY29sOmksc2Vzc2lvblByb3BlcnRpZXM6byxzY29wZWRQcm9wZXJ0aWVzOmF9PXI7dGhpcy5jaGVja1JlY2VudGx5RGVsZXRlZChuKSxhd2FpdCB0aGlzLmlzVmFsaWRQcm9wb3NhbElkKG4pO2NvbnN0IGM9dGhpcy5jbGllbnQucHJvcG9zYWwuZ2V0KG4pLGw9WDIocywiYXBwcm92ZSgpIik7aWYobCl0aHJvdyBuZXcgRXJyb3IobC5tZXNzYWdlKTtjb25zdCBkPUFrKGMucmVxdWlyZWROYW1lc3BhY2VzLHMsImFwcHJvdmUoKSIpO2lmKGQpdGhyb3cgbmV3IEVycm9yKGQubWVzc2FnZSk7aWYoIVZyKGksITApKXtjb25zdHttZXNzYWdlOnV9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGBhcHByb3ZlKCkgcmVsYXlQcm90b2NvbDogJHtpfWApO3Rocm93IG5ldyBFcnJvcih1KX1pZihFbihvKXx8dGhpcy52YWxpZGF0ZVNlc3Npb25Qcm9wcyhvLCJzZXNzaW9uUHJvcGVydGllcyIpLCFFbihhKSl7dGhpcy52YWxpZGF0ZVNlc3Npb25Qcm9wcyhhLCJzY29wZWRQcm9wZXJ0aWVzIik7Y29uc3QgdT1uZXcgU2V0KE9iamVjdC5rZXlzKHMpKTtpZighT2JqZWN0LmtleXMoYSkuZXZlcnkoaD0+dS5oYXMoaCkpKXRocm93IG5ldyBFcnJvcihgU2NvcGVkIHByb3BlcnRpZXMgbXVzdCBiZSBhIHN1YnNldCBvZiBhcHByb3ZlZCBuYW1lc3BhY2VzLCByZWNlaXZlZDogJHtKU09OLnN0cmluZ2lmeShhKX0sIGFwcHJvdmVkIG5hbWVzcGFjZXM6ICR7QXJyYXkuZnJvbSh1KS5qb2luKCIsICIpfWApfX0pLGtlKHRoaXMsImlzVmFsaWRSZWplY3QiLGFzeW5jIHI9PntpZighZWkocikpe2NvbnN0e21lc3NhZ2U6aX09T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYHJlamVjdCgpIHBhcmFtczogJHtyfWApO3Rocm93IG5ldyBFcnJvcihpKX1jb25zdHtpZDpuLHJlYXNvbjpzfT1yO2lmKHRoaXMuY2hlY2tSZWNlbnRseURlbGV0ZWQobiksYXdhaXQgdGhpcy5pc1ZhbGlkUHJvcG9zYWxJZChuKSwhVmllKHMpKXtjb25zdHttZXNzYWdlOml9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGByZWplY3QoKSByZWFzb246ICR7SlNPTi5zdHJpbmdpZnkocyl9YCk7dGhyb3cgbmV3IEVycm9yKGkpfX0pLGtlKHRoaXMsImlzVmFsaWRTZXNzaW9uU2V0dGxlUmVxdWVzdCIscj0+e2lmKCFlaShyKSl7Y29uc3R7bWVzc2FnZTpsfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgb25TZXNzaW9uU2V0dGxlUmVxdWVzdCgpIHBhcmFtczogJHtyfWApO3Rocm93IG5ldyBFcnJvcihsKX1jb25zdHtyZWxheTpuLGNvbnRyb2xsZXI6cyxuYW1lc3BhY2VzOmksZXhwaXJ5Om99PXI7aWYoIUREKG4pKXtjb25zdHttZXNzYWdlOmx9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLCJvblNlc3Npb25TZXR0bGVSZXF1ZXN0KCkgcmVsYXkgcHJvdG9jb2wgc2hvdWxkIGJlIGEgc3RyaW5nIik7dGhyb3cgbmV3IEVycm9yKGwpfWNvbnN0IGE9QmllKHMsIm9uU2Vzc2lvblNldHRsZVJlcXVlc3QoKSIpO2lmKGEpdGhyb3cgbmV3IEVycm9yKGEubWVzc2FnZSk7Y29uc3QgYz1YMihpLCJvblNlc3Npb25TZXR0bGVSZXF1ZXN0KCkiKTtpZihjKXRocm93IG5ldyBFcnJvcihjLm1lc3NhZ2UpO2lmKGljKG8pKXtjb25zdHttZXNzYWdlOmx9PU9lKCJFWFBJUkVEIiwib25TZXNzaW9uU2V0dGxlUmVxdWVzdCgpIik7dGhyb3cgbmV3IEVycm9yKGwpfX0pLGtlKHRoaXMsImlzVmFsaWRVcGRhdGUiLGFzeW5jIHI9PntpZighZWkocikpe2NvbnN0e21lc3NhZ2U6Y309T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYHVwZGF0ZSgpIHBhcmFtczogJHtyfWApO3Rocm93IG5ldyBFcnJvcihjKX1jb25zdHt0b3BpYzpuLG5hbWVzcGFjZXM6c309cjt0aGlzLmNoZWNrUmVjZW50bHlEZWxldGVkKG4pLGF3YWl0IHRoaXMuaXNWYWxpZFNlc3Npb25Ub3BpYyhuKTtjb25zdCBpPXRoaXMuY2xpZW50LnNlc3Npb24uZ2V0KG4pLG89WDIocywidXBkYXRlKCkiKTtpZihvKXRocm93IG5ldyBFcnJvcihvLm1lc3NhZ2UpO2NvbnN0IGE9QWsoaS5yZXF1aXJlZE5hbWVzcGFjZXMscywidXBkYXRlKCkiKTtpZihhKXRocm93IG5ldyBFcnJvcihhLm1lc3NhZ2UpfSksa2UodGhpcywiaXNWYWxpZEV4dGVuZCIsYXN5bmMgcj0+e2lmKCFlaShyKSl7Y29uc3R7bWVzc2FnZTpzfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgZXh0ZW5kKCkgcGFyYW1zOiAke3J9YCk7dGhyb3cgbmV3IEVycm9yKHMpfWNvbnN0e3RvcGljOm59PXI7dGhpcy5jaGVja1JlY2VudGx5RGVsZXRlZChuKSxhd2FpdCB0aGlzLmlzVmFsaWRTZXNzaW9uVG9waWMobil9KSxrZSh0aGlzLCJpc1ZhbGlkUmVxdWVzdCIsYXN5bmMgcj0+e2lmKCFlaShyKSl7Y29uc3R7bWVzc2FnZTpjfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgcmVxdWVzdCgpIHBhcmFtczogJHtyfWApO3Rocm93IG5ldyBFcnJvcihjKX1jb25zdHt0b3BpYzpuLHJlcXVlc3Q6cyxjaGFpbklkOmksZXhwaXJ5Om99PXI7dGhpcy5jaGVja1JlY2VudGx5RGVsZXRlZChuKSxhd2FpdCB0aGlzLmlzVmFsaWRTZXNzaW9uVG9waWMobik7Y29uc3R7bmFtZXNwYWNlczphfT10aGlzLmNsaWVudC5zZXNzaW9uLmdldChuKTtpZighU2soYSxpKSl7Y29uc3R7bWVzc2FnZTpjfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgcmVxdWVzdCgpIGNoYWluSWQ6ICR7aX1gKTt0aHJvdyBuZXcgRXJyb3IoYyl9aWYoIUdpZShzKSl7Y29uc3R7bWVzc2FnZTpjfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgcmVxdWVzdCgpICR7SlNPTi5zdHJpbmdpZnkocyl9YCk7dGhyb3cgbmV3IEVycm9yKGMpfWlmKCFZaWUoYSxpLHMubWV0aG9kKSl7Y29uc3R7bWVzc2FnZTpjfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgcmVxdWVzdCgpIG1ldGhvZDogJHtzLm1ldGhvZH1gKTt0aHJvdyBuZXcgRXJyb3IoYyl9aWYobyYmIWVzZShvLG8zKSl7Y29uc3R7bWVzc2FnZTpjfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgcmVxdWVzdCgpIGV4cGlyeTogJHtvfS4gRXhwaXJ5IG11c3QgYmUgYSBudW1iZXIgKGluIHNlY29uZHMpIGJldHdlZW4gJHtvMy5taW59IGFuZCAke28zLm1heH1gKTt0aHJvdyBuZXcgRXJyb3IoYyl9fSksa2UodGhpcywiaXNWYWxpZFJlc3BvbmQiLGFzeW5jIHI9Pnt2YXIgbjtpZighZWkocikpe2NvbnN0e21lc3NhZ2U6b309T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYHJlc3BvbmQoKSBwYXJhbXM6ICR7cn1gKTt0aHJvdyBuZXcgRXJyb3Iobyl9Y29uc3R7dG9waWM6cyxyZXNwb25zZTppfT1yO3RyeXthd2FpdCB0aGlzLmlzVmFsaWRTZXNzaW9uVG9waWMocyl9Y2F0Y2gobyl7dGhyb3cobj1yPy5yZXNwb25zZSkhPW51bGwmJm4uaWQmJnRoaXMuY2xlYW51cEFmdGVyUmVzcG9uc2Uociksb31pZighS2llKGkpKXtjb25zdHttZXNzYWdlOm99PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGByZXNwb25kKCkgcmVzcG9uc2U6ICR7SlNPTi5zdHJpbmdpZnkoaSl9YCk7dGhyb3cgbmV3IEVycm9yKG8pfX0pLGtlKHRoaXMsImlzVmFsaWRQaW5nIixhc3luYyByPT57aWYoIWVpKHIpKXtjb25zdHttZXNzYWdlOnN9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGBwaW5nKCkgcGFyYW1zOiAke3J9YCk7dGhyb3cgbmV3IEVycm9yKHMpfWNvbnN0e3RvcGljOm59PXI7YXdhaXQgdGhpcy5pc1ZhbGlkU2Vzc2lvbk9yUGFpcmluZ1RvcGljKG4pfSksa2UodGhpcywiaXNWYWxpZEVtaXQiLGFzeW5jIHI9PntpZighZWkocikpe2NvbnN0e21lc3NhZ2U6YX09T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYGVtaXQoKSBwYXJhbXM6ICR7cn1gKTt0aHJvdyBuZXcgRXJyb3IoYSl9Y29uc3R7dG9waWM6bixldmVudDpzLGNoYWluSWQ6aX09cjthd2FpdCB0aGlzLmlzVmFsaWRTZXNzaW9uVG9waWMobik7Y29uc3R7bmFtZXNwYWNlczpvfT10aGlzLmNsaWVudC5zZXNzaW9uLmdldChuKTtpZighU2sobyxpKSl7Y29uc3R7bWVzc2FnZTphfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgZW1pdCgpIGNoYWluSWQ6ICR7aX1gKTt0aHJvdyBuZXcgRXJyb3IoYSl9aWYoIVppZShzKSl7Y29uc3R7bWVzc2FnZTphfT1PZSgiTUlTU0lOR19PUl9JTlZBTElEIixgZW1pdCgpIGV2ZW50OiAke0pTT04uc3RyaW5naWZ5KHMpfWApO3Rocm93IG5ldyBFcnJvcihhKX1pZighSmllKG8saSxzLm5hbWUpKXtjb25zdHttZXNzYWdlOmF9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGBlbWl0KCkgZXZlbnQ6ICR7SlNPTi5zdHJpbmdpZnkocyl9YCk7dGhyb3cgbmV3IEVycm9yKGEpfX0pLGtlKHRoaXMsImlzVmFsaWREaXNjb25uZWN0Iixhc3luYyByPT57aWYoIWVpKHIpKXtjb25zdHttZXNzYWdlOnN9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGBkaXNjb25uZWN0KCkgcGFyYW1zOiAke3J9YCk7dGhyb3cgbmV3IEVycm9yKHMpfWNvbnN0e3RvcGljOm59PXI7YXdhaXQgdGhpcy5pc1ZhbGlkU2Vzc2lvbk9yUGFpcmluZ1RvcGljKG4pfSksa2UodGhpcywiaXNWYWxpZEF1dGhlbnRpY2F0ZSIscj0+e2NvbnN0e2NoYWluczpuLHVyaTpzLGRvbWFpbjppLG5vbmNlOm99PXI7aWYoIUFycmF5LmlzQXJyYXkobil8fG4ubGVuZ3RoPT09MCl0aHJvdyBuZXcgRXJyb3IoImNoYWlucyBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSIpO2lmKCFWcihzLCExKSl0aHJvdyBuZXcgRXJyb3IoInVyaSBpcyByZXF1aXJlZCBwYXJhbWV0ZXIiKTtpZighVnIoaSwhMSkpdGhyb3cgbmV3IEVycm9yKCJkb21haW4gaXMgcmVxdWlyZWQgcGFyYW1ldGVyIik7aWYoIVZyKG8sITEpKXRocm93IG5ldyBFcnJvcigibm9uY2UgaXMgcmVxdWlyZWQgcGFyYW1ldGVyIik7aWYoWy4uLm5ldyBTZXQobi5tYXAoYz0+Y2goYykubmFtZXNwYWNlKSldLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiTXVsdGktbmFtZXNwYWNlIHJlcXVlc3RzIGFyZSBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgcmVxdWVzdCBzaW5nbGUgbmFtZXNwYWNlIG9ubHkuIik7Y29uc3R7bmFtZXNwYWNlOmF9PWNoKG5bMF0pO2lmKGEhPT0iZWlwMTU1Iil0aHJvdyBuZXcgRXJyb3IoIk9ubHkgZWlwMTU1IG5hbWVzcGFjZSBpcyBzdXBwb3J0ZWQgZm9yIGF1dGhlbnRpY2F0ZWQgc2Vzc2lvbnMuIFBsZWFzZSB1c2UgLmNvbm5lY3QoKSBmb3Igbm9uLWVpcDE1NSBjaGFpbnMuIil9KSxrZSh0aGlzLCJnZXRWZXJpZnlDb250ZXh0Iixhc3luYyByPT57Y29uc3R7YXR0ZXN0YXRpb25JZDpuLGhhc2g6cyxlbmNyeXB0ZWRJZDppLG1ldGFkYXRhOm8sdHJhbnNwb3J0VHlwZTphfT1yLGM9e3ZlcmlmaWVkOnt2ZXJpZnlVcmw6by52ZXJpZnlVcmx8fG4wLHZhbGlkYXRpb246IlVOS05PV04iLG9yaWdpbjpvLnVybHx8IiJ9fTt0cnl7aWYoYT09PWNyLmxpbmtfbW9kZSl7Y29uc3QgZD10aGlzLmdldEFwcExpbmtJZkVuYWJsZWQobyxhKTtyZXR1cm4gYy52ZXJpZmllZC52YWxpZGF0aW9uPWQmJm5ldyBVUkwoZCkub3JpZ2luPT09bmV3IFVSTChvLnVybCkub3JpZ2luPyJWQUxJRCI6IklOVkFMSUQiLGN9Y29uc3QgbD1hd2FpdCB0aGlzLmNsaWVudC5jb3JlLnZlcmlmeS5yZXNvbHZlKHthdHRlc3RhdGlvbklkOm4saGFzaDpzLGVuY3J5cHRlZElkOmksdmVyaWZ5VXJsOm8udmVyaWZ5VXJsfSk7bCYmKGMudmVyaWZpZWQub3JpZ2luPWwub3JpZ2luLGMudmVyaWZpZWQuaXNTY2FtPWwuaXNTY2FtLGMudmVyaWZpZWQudmFsaWRhdGlvbj1sLm9yaWdpbj09PW5ldyBVUkwoby51cmwpLm9yaWdpbj8iVkFMSUQiOiJJTlZBTElEIil9Y2F0Y2gobCl7dGhpcy5jbGllbnQubG9nZ2VyLndhcm4obCl9cmV0dXJuIHRoaXMuY2xpZW50LmxvZ2dlci5kZWJ1ZyhgVmVyaWZ5IGNvbnRleHQ6ICR7SlNPTi5zdHJpbmdpZnkoYyl9YCksY30pLGtlKHRoaXMsInZhbGlkYXRlU2Vzc2lvblByb3BzIiwocixuKT0+e09iamVjdC52YWx1ZXMocikuZm9yRWFjaCgocyxpKT0+e2lmKHM9PW51bGwpe2NvbnN0e21lc3NhZ2U6b309T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYCR7bn0gbXVzdCBjb250YWluIGFuIGV4aXN0aW5nIHZhbHVlIGZvciBlYWNoIGtleS4gUmVjZWl2ZWQ6ICR7c30gZm9yIGtleSAke09iamVjdC5rZXlzKHIpW2ldfWApO3Rocm93IG5ldyBFcnJvcihvKX19KX0pLGtlKHRoaXMsImdldFBlbmRpbmdBdXRoUmVxdWVzdCIscj0+e2NvbnN0IG49dGhpcy5jbGllbnQuYXV0aC5yZXF1ZXN0cy5nZXQocik7cmV0dXJuIHR5cGVvZiBuPT0ib2JqZWN0Ij9uOnZvaWQgMH0pLGtlKHRoaXMsImFkZFRvUmVjZW50bHlEZWxldGVkIiwocixuKT0+e2lmKHRoaXMucmVjZW50bHlEZWxldGVkTWFwLnNldChyLG4pLHRoaXMucmVjZW50bHlEZWxldGVkTWFwLnNpemU+PXRoaXMucmVjZW50bHlEZWxldGVkTGltaXQpe2xldCBzPTA7Y29uc3QgaT10aGlzLnJlY2VudGx5RGVsZXRlZExpbWl0LzI7Zm9yKGNvbnN0IG8gb2YgdGhpcy5yZWNlbnRseURlbGV0ZWRNYXAua2V5cygpKXtpZihzKys+PWkpYnJlYWs7dGhpcy5yZWNlbnRseURlbGV0ZWRNYXAuZGVsZXRlKG8pfX19KSxrZSh0aGlzLCJjaGVja1JlY2VudGx5RGVsZXRlZCIscj0+e2NvbnN0IG49dGhpcy5yZWNlbnRseURlbGV0ZWRNYXAuZ2V0KHIpO2lmKG4pe2NvbnN0e21lc3NhZ2U6c309T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYFJlY29yZCB3YXMgcmVjZW50bHkgZGVsZXRlZCAtICR7bn06ICR7cn1gKTt0aHJvdyBuZXcgRXJyb3Iocyl9fSksa2UodGhpcywiaXNMaW5rTW9kZUVuYWJsZWQiLChyLG4pPT57dmFyIHMsaSxvLGEsYyxsLGQsdSxoO3JldHVybiFyfHxuIT09Y3IubGlua19tb2RlPyExOigoaT0ocz10aGlzLmNsaWVudC5tZXRhZGF0YSk9PW51bGw/dm9pZCAwOnMucmVkaXJlY3QpPT1udWxsP3ZvaWQgMDppLmxpbmtNb2RlKT09PSEwJiYoKGE9KG89dGhpcy5jbGllbnQubWV0YWRhdGEpPT1udWxsP3ZvaWQgMDpvLnJlZGlyZWN0KT09bnVsbD92b2lkIDA6YS51bml2ZXJzYWwpIT09dm9pZCAwJiYoKGw9KGM9dGhpcy5jbGllbnQubWV0YWRhdGEpPT1udWxsP3ZvaWQgMDpjLnJlZGlyZWN0KT09bnVsbD92b2lkIDA6bC51bml2ZXJzYWwpIT09IiImJigoZD1yPy5yZWRpcmVjdCk9PW51bGw/dm9pZCAwOmQudW5pdmVyc2FsKSE9PXZvaWQgMCYmKCh1PXI/LnJlZGlyZWN0KT09bnVsbD92b2lkIDA6dS51bml2ZXJzYWwpIT09IiImJigoaD1yPy5yZWRpcmVjdCk9PW51bGw/dm9pZCAwOmgubGlua01vZGUpPT09ITAmJnRoaXMuY2xpZW50LmNvcmUubGlua01vZGVTdXBwb3J0ZWRBcHBzLmluY2x1ZGVzKHIucmVkaXJlY3QudW5pdmVyc2FsKSYmdHlwZW9mKGdsb2JhbD09bnVsbD92b2lkIDA6Z2xvYmFsLkxpbmtpbmcpPCJ1In0pLGtlKHRoaXMsImdldEFwcExpbmtJZkVuYWJsZWQiLChyLG4pPT57dmFyIHM7cmV0dXJuIHRoaXMuaXNMaW5rTW9kZUVuYWJsZWQocixuKT8ocz1yPy5yZWRpcmVjdCk9PW51bGw/dm9pZCAwOnMudW5pdmVyc2FsOnZvaWQgMH0pLGtlKHRoaXMsImhhbmRsZUxpbmtNb2RlTWVzc2FnZSIsKHt1cmw6cn0pPT57aWYoIXJ8fCFyLmluY2x1ZGVzKCJ3Y19ldiIpfHwhci5pbmNsdWRlcygidG9waWMiKSlyZXR1cm47Y29uc3Qgbj1xOShyLCJ0b3BpYyIpfHwiIixzPWRlY29kZVVSSUNvbXBvbmVudChxOShyLCJ3Y19ldiIpfHwiIiksaT10aGlzLmNsaWVudC5zZXNzaW9uLmtleXMuaW5jbHVkZXMobik7aSYmdGhpcy5jbGllbnQuc2Vzc2lvbi51cGRhdGUobix7dHJhbnNwb3J0VHlwZTpjci5saW5rX21vZGV9KSx0aGlzLmNsaWVudC5jb3JlLmRpc3BhdGNoRW52ZWxvcGUoe3RvcGljOm4sbWVzc2FnZTpzLHNlc3Npb25FeGlzdHM6aX0pfSksa2UodGhpcywicmVnaXN0ZXJMaW5rTW9kZUxpc3RlbmVycyIsYXN5bmMoKT0+e3ZhciByO2lmKE02KCl8fEJjKCkmJihyPXRoaXMuY2xpZW50Lm1ldGFkYXRhLnJlZGlyZWN0KSE9bnVsbCYmci5saW5rTW9kZSl7Y29uc3Qgbj1nbG9iYWw9PW51bGw/dm9pZCAwOmdsb2JhbC5MaW5raW5nO2lmKHR5cGVvZiBuPCJ1Iil7bi5hZGRFdmVudExpc3RlbmVyKCJ1cmwiLHRoaXMuaGFuZGxlTGlua01vZGVNZXNzYWdlLHRoaXMuY2xpZW50Lm5hbWUpO2NvbnN0IHM9YXdhaXQgbi5nZXRJbml0aWFsVVJMKCk7cyYmc2V0VGltZW91dCgoKT0+e3RoaXMuaGFuZGxlTGlua01vZGVNZXNzYWdlKHt1cmw6c30pfSw1MCl9fX0pLGtlKHRoaXMsInNob3VsZFNldFRWRiIsKHIsbik9PntpZighbnx8ciE9PSJ3Y19zZXNzaW9uUmVxdWVzdCIpcmV0dXJuITE7Y29uc3R7cmVxdWVzdDpzfT1uO3JldHVybiBPYmplY3Qua2V5cyh1UykuaW5jbHVkZXMocy5tZXRob2QpfSksa2UodGhpcywiZ2V0VFZGUGFyYW1zIiwocixuLHMpPT57dmFyIGksbzt0cnl7Y29uc3QgYT1uLnJlcXVlc3QubWV0aG9kLGM9dGhpcy5leHRyYWN0VHhIYXNoZXNGcm9tUmVzdWx0KGEscyk7cmV0dXJuIFBuKFF0KHtjb3JyZWxhdGlvbklkOnIscnBjTWV0aG9kczpbYV0sY2hhaW5JZDpuLmNoYWluSWR9LHRoaXMuaXNWYWxpZENvbnRyYWN0RGF0YShuLnJlcXVlc3QucGFyYW1zKSYme2NvbnRyYWN0QWRkcmVzc2VzOlsobz0oaT1uLnJlcXVlc3QucGFyYW1zKT09bnVsbD92b2lkIDA6aVswXSk9PW51bGw/dm9pZCAwOm8udG9dfSkse3R4SGFzaGVzOmN9KX1jYXRjaChhKXt0aGlzLmNsaWVudC5sb2dnZXIud2FybigiRXJyb3IgZ2V0dGluZyBUVkYgcGFyYW1zIixhKX1yZXR1cm57fX0pLGtlKHRoaXMsImlzVmFsaWRDb250cmFjdERhdGEiLHI9Pnt2YXIgbjtpZighcilyZXR1cm4hMTt0cnl7Y29uc3Qgcz1yPy5kYXRhfHwoKG49cj8uWzBdKT09bnVsbD92b2lkIDA6bi5kYXRhKTtpZighcy5zdGFydHNXaXRoKCIweCIpKXJldHVybiExO2NvbnN0IGk9cy5zbGljZSgyKTtyZXR1cm4vXlswLTlhLWZBLUZdKiQvLnRlc3QoaSk/aS5sZW5ndGglMj09PTA6ITF9Y2F0Y2h7fXJldHVybiExfSksa2UodGhpcywiZXh0cmFjdFR4SGFzaGVzRnJvbVJlc3VsdCIsKHIsbik9Pnt0cnl7Y29uc3Qgcz11U1tyXTtpZih0eXBlb2Ygbj09InN0cmluZyIpcmV0dXJuW25dO2NvbnN0IGk9bltzLmtleV07aWYobWMoaSkpcmV0dXJuIHI9PT0ic29sYW5hX3NpZ25BbGxUcmFuc2FjdGlvbnMiP2kubWFwKG89PlRyZShvKSk6aTtpZih0eXBlb2YgaT09InN0cmluZyIpcmV0dXJuW2ldfWNhdGNoKHMpe3RoaXMuY2xpZW50LmxvZ2dlci53YXJuKCJFcnJvciBleHRyYWN0aW5nIHR4IGhhc2hlcyBmcm9tIHJlc3VsdCIscyl9cmV0dXJuW119KX1hc3luYyBwcm9jZXNzUGVuZGluZ01lc3NhZ2VFdmVudHMoKXt0cnl7Y29uc3QgZT10aGlzLmNsaWVudC5zZXNzaW9uLmtleXMscj10aGlzLmNsaWVudC5jb3JlLnJlbGF5ZXIubWVzc2FnZXMuZ2V0V2l0aG91dEFjayhlKTtmb3IoY29uc3RbbixzXW9mIE9iamVjdC5lbnRyaWVzKHIpKWZvcihjb25zdCBpIG9mIHMpdHJ5e2F3YWl0IHRoaXMub25Qcm92aWRlck1lc3NhZ2VFdmVudCh7dG9waWM6bixtZXNzYWdlOmkscHVibGlzaGVkQXQ6RGF0ZS5ub3coKX0pfWNhdGNoe3RoaXMuY2xpZW50LmxvZ2dlci53YXJuKGBFcnJvciBwcm9jZXNzaW5nIHBlbmRpbmcgbWVzc2FnZSBldmVudCBmb3IgdG9waWM6ICR7bn0sIG1lc3NhZ2U6ICR7aX1gKX19Y2F0Y2goZSl7dGhpcy5jbGllbnQubG9nZ2VyLndhcm4oInByb2Nlc3NQZW5kaW5nTWVzc2FnZUV2ZW50cyBmYWlsZWQiLGUpfX1pc0luaXRpYWxpemVkKCl7aWYoIXRoaXMuaW5pdGlhbGl6ZWQpe2NvbnN0e21lc3NhZ2U6ZX09T2UoIk5PVF9JTklUSUFMSVpFRCIsdGhpcy5uYW1lKTt0aHJvdyBuZXcgRXJyb3IoZSl9fWFzeW5jIGNvbmZpcm1PbmxpbmVTdGF0ZU9yVGhyb3coKXthd2FpdCB0aGlzLmNsaWVudC5jb3JlLnJlbGF5ZXIuY29uZmlybU9ubGluZVN0YXRlT3JUaHJvdygpfXJlZ2lzdGVyUmVsYXllckV2ZW50cygpe3RoaXMuY2xpZW50LmNvcmUucmVsYXllci5vbihhbi5tZXNzYWdlLGU9Pnt0aGlzLm9uUHJvdmlkZXJNZXNzYWdlRXZlbnQoZSl9KX1hc3luYyBvblJlbGF5TWVzc2FnZShlKXtjb25zdHt0b3BpYzpyLG1lc3NhZ2U6bixhdHRlc3RhdGlvbjpzLHRyYW5zcG9ydFR5cGU6aX09ZSx7cHVibGljS2V5Om99PXRoaXMuY2xpZW50LmF1dGguYXV0aEtleXMua2V5cy5pbmNsdWRlcyhIdyk/dGhpcy5jbGllbnQuYXV0aC5hdXRoS2V5cy5nZXQoSHcpOntwdWJsaWNLZXk6dm9pZCAwfTt0cnl7Y29uc3QgYT1hd2FpdCB0aGlzLmNsaWVudC5jb3JlLmNyeXB0by5kZWNvZGUocixuLHtyZWNlaXZlclB1YmxpY0tleTpvLGVuY29kaW5nOmk9PT1jci5saW5rX21vZGU/c2M6QXN9KTtxNihhKT8odGhpcy5jbGllbnQuY29yZS5oaXN0b3J5LnNldChyLGEpLGF3YWl0IHRoaXMub25SZWxheUV2ZW50UmVxdWVzdCh7dG9waWM6cixwYXlsb2FkOmEsYXR0ZXN0YXRpb246cyx0cmFuc3BvcnRUeXBlOmksZW5jcnlwdGVkSWQ6Zm8obil9KSk6cXkoYSk/KGF3YWl0IHRoaXMuY2xpZW50LmNvcmUuaGlzdG9yeS5yZXNvbHZlKGEpLGF3YWl0IHRoaXMub25SZWxheUV2ZW50UmVzcG9uc2Uoe3RvcGljOnIscGF5bG9hZDphLHRyYW5zcG9ydFR5cGU6aX0pLHRoaXMuY2xpZW50LmNvcmUuaGlzdG9yeS5kZWxldGUocixhLmlkKSk6YXdhaXQgdGhpcy5vblJlbGF5RXZlbnRVbmtub3duUGF5bG9hZCh7dG9waWM6cixwYXlsb2FkOmEsdHJhbnNwb3J0VHlwZTppfSksYXdhaXQgdGhpcy5jbGllbnQuY29yZS5yZWxheWVyLm1lc3NhZ2VzLmFjayhyLG4pfWNhdGNoKGEpe3RoaXMuY2xpZW50LmxvZ2dlci5lcnJvcihhKX19cmVnaXN0ZXJFeHBpcmVyRXZlbnRzKCl7dGhpcy5jbGllbnQuY29yZS5leHBpcmVyLm9uKEdpLmV4cGlyZWQsYXN5bmMgZT0+e2NvbnN0e3RvcGljOnIsaWQ6bn09dEQoZS50YXJnZXQpO2lmKG4mJnRoaXMuY2xpZW50LnBlbmRpbmdSZXF1ZXN0LmtleXMuaW5jbHVkZXMobikpcmV0dXJuIGF3YWl0IHRoaXMuZGVsZXRlUGVuZGluZ1Nlc3Npb25SZXF1ZXN0KG4sT2UoIkVYUElSRUQiKSwhMCk7aWYobiYmdGhpcy5jbGllbnQuYXV0aC5yZXF1ZXN0cy5rZXlzLmluY2x1ZGVzKG4pKXJldHVybiBhd2FpdCB0aGlzLmRlbGV0ZVBlbmRpbmdBdXRoUmVxdWVzdChuLE9lKCJFWFBJUkVEIiksITApO3I/dGhpcy5jbGllbnQuc2Vzc2lvbi5rZXlzLmluY2x1ZGVzKHIpJiYoYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKHt0b3BpYzpyLGV4cGlyZXJIYXNEZWxldGVkOiEwfSksdGhpcy5jbGllbnQuZXZlbnRzLmVtaXQoInNlc3Npb25fZXhwaXJlIix7dG9waWM6cn0pKTpuJiYoYXdhaXQgdGhpcy5kZWxldGVQcm9wb3NhbChuLCEwKSx0aGlzLmNsaWVudC5ldmVudHMuZW1pdCgicHJvcG9zYWxfZXhwaXJlIix7aWQ6bn0pKX0pfXJlZ2lzdGVyUGFpcmluZ0V2ZW50cygpe3RoaXMuY2xpZW50LmNvcmUucGFpcmluZy5ldmVudHMub24oVmwuY3JlYXRlLGU9PnRoaXMub25QYWlyaW5nQ3JlYXRlZChlKSksdGhpcy5jbGllbnQuY29yZS5wYWlyaW5nLmV2ZW50cy5vbihWbC5kZWxldGUsZT0+e3RoaXMuYWRkVG9SZWNlbnRseURlbGV0ZWQoZS50b3BpYywicGFpcmluZyIpfSl9aXNWYWxpZFBhaXJpbmdUb3BpYyhlKXtpZighVnIoZSwhMSkpe2NvbnN0e21lc3NhZ2U6cn09T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYHBhaXJpbmcgdG9waWMgc2hvdWxkIGJlIGEgc3RyaW5nOiAke2V9YCk7dGhyb3cgbmV3IEVycm9yKHIpfWlmKCF0aGlzLmNsaWVudC5jb3JlLnBhaXJpbmcucGFpcmluZ3Mua2V5cy5pbmNsdWRlcyhlKSl7Y29uc3R7bWVzc2FnZTpyfT1PZSgiTk9fTUFUQ0hJTkdfS0VZIixgcGFpcmluZyB0b3BpYyBkb2Vzbid0IGV4aXN0OiAke2V9YCk7dGhyb3cgbmV3IEVycm9yKHIpfWlmKGljKHRoaXMuY2xpZW50LmNvcmUucGFpcmluZy5wYWlyaW5ncy5nZXQoZSkuZXhwaXJ5KSl7Y29uc3R7bWVzc2FnZTpyfT1PZSgiRVhQSVJFRCIsYHBhaXJpbmcgdG9waWM6ICR7ZX1gKTt0aHJvdyBuZXcgRXJyb3Iocil9fWFzeW5jIGlzVmFsaWRTZXNzaW9uVG9waWMoZSl7aWYoIVZyKGUsITEpKXtjb25zdHttZXNzYWdlOnJ9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGBzZXNzaW9uIHRvcGljIHNob3VsZCBiZSBhIHN0cmluZzogJHtlfWApO3Rocm93IG5ldyBFcnJvcihyKX1pZih0aGlzLmNoZWNrUmVjZW50bHlEZWxldGVkKGUpLCF0aGlzLmNsaWVudC5zZXNzaW9uLmtleXMuaW5jbHVkZXMoZSkpe2NvbnN0e21lc3NhZ2U6cn09T2UoIk5PX01BVENISU5HX0tFWSIsYHNlc3Npb24gdG9waWMgZG9lc24ndCBleGlzdDogJHtlfWApO3Rocm93IG5ldyBFcnJvcihyKX1pZihpYyh0aGlzLmNsaWVudC5zZXNzaW9uLmdldChlKS5leHBpcnkpKXthd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24oe3RvcGljOmV9KTtjb25zdHttZXNzYWdlOnJ9PU9lKCJFWFBJUkVEIixgc2Vzc2lvbiB0b3BpYzogJHtlfWApO3Rocm93IG5ldyBFcnJvcihyKX1pZighdGhpcy5jbGllbnQuY29yZS5jcnlwdG8ua2V5Y2hhaW4uaGFzKGUpKXtjb25zdHttZXNzYWdlOnJ9PU9lKCJNSVNTSU5HX09SX0lOVkFMSUQiLGBzZXNzaW9uIHRvcGljIGRvZXMgbm90IGV4aXN0IGluIGtleWNoYWluOiAke2V9YCk7dGhyb3cgYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKHt0b3BpYzplfSksbmV3IEVycm9yKHIpfX1hc3luYyBpc1ZhbGlkU2Vzc2lvbk9yUGFpcmluZ1RvcGljKGUpe2lmKHRoaXMuY2hlY2tSZWNlbnRseURlbGV0ZWQoZSksdGhpcy5jbGllbnQuc2Vzc2lvbi5rZXlzLmluY2x1ZGVzKGUpKWF3YWl0IHRoaXMuaXNWYWxpZFNlc3Npb25Ub3BpYyhlKTtlbHNlIGlmKHRoaXMuY2xpZW50LmNvcmUucGFpcmluZy5wYWlyaW5ncy5rZXlzLmluY2x1ZGVzKGUpKXRoaXMuaXNWYWxpZFBhaXJpbmdUb3BpYyhlKTtlbHNlIGlmKFZyKGUsITEpKXtjb25zdHttZXNzYWdlOnJ9PU9lKCJOT19NQVRDSElOR19LRVkiLGBzZXNzaW9uIG9yIHBhaXJpbmcgdG9waWMgZG9lc24ndCBleGlzdDogJHtlfWApO3Rocm93IG5ldyBFcnJvcihyKX1lbHNle2NvbnN0e21lc3NhZ2U6cn09T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYHNlc3Npb24gb3IgcGFpcmluZyB0b3BpYyBzaG91bGQgYmUgYSBzdHJpbmc6ICR7ZX1gKTt0aHJvdyBuZXcgRXJyb3Iocil9fWFzeW5jIGlzVmFsaWRQcm9wb3NhbElkKGUpe2lmKCFxaWUoZSkpe2NvbnN0e21lc3NhZ2U6cn09T2UoIk1JU1NJTkdfT1JfSU5WQUxJRCIsYHByb3Bvc2FsIGlkIHNob3VsZCBiZSBhIG51bWJlcjogJHtlfWApO3Rocm93IG5ldyBFcnJvcihyKX1pZighdGhpcy5jbGllbnQucHJvcG9zYWwua2V5cy5pbmNsdWRlcyhlKSl7Y29uc3R7bWVzc2FnZTpyfT1PZSgiTk9fTUFUQ0hJTkdfS0VZIixgcHJvcG9zYWwgaWQgZG9lc24ndCBleGlzdDogJHtlfWApO3Rocm93IG5ldyBFcnJvcihyKX1pZihpYyh0aGlzLmNsaWVudC5wcm9wb3NhbC5nZXQoZSkuZXhwaXJ5VGltZXN0YW1wKSl7YXdhaXQgdGhpcy5kZWxldGVQcm9wb3NhbChlKTtjb25zdHttZXNzYWdlOnJ9PU9lKCJFWFBJUkVEIixgcHJvcG9zYWwgaWQ6ICR7ZX1gKTt0aHJvdyBuZXcgRXJyb3Iocil9fX1jbGFzcyBZbGUgZXh0ZW5kcyBRdXtjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKGUsciwkbGUsVjYpLHRoaXMuY29yZT1lLHRoaXMubG9nZ2VyPXJ9fWxldCBKbGU9Y2xhc3MgZXh0ZW5kcyBRdXtjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKGUscixNbGUsVjYpLHRoaXMuY29yZT1lLHRoaXMubG9nZ2VyPXJ9fTtjbGFzcyBYbGUgZXh0ZW5kcyBRdXtjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKGUscixCbGUsVjYsbj0+bi5pZCksdGhpcy5jb3JlPWUsdGhpcy5sb2dnZXI9cn19Y2xhc3MgUWxlIGV4dGVuZHMgUXV7Y29uc3RydWN0b3IoZSxyKXtzdXBlcihlLHIsamxlLEd5LCgpPT5IdyksdGhpcy5jb3JlPWUsdGhpcy5sb2dnZXI9cn19Y2xhc3MgZXVlIGV4dGVuZHMgUXV7Y29uc3RydWN0b3IoZSxyKXtzdXBlcihlLHIsemxlLEd5KSx0aGlzLmNvcmU9ZSx0aGlzLmxvZ2dlcj1yfX1jbGFzcyB0dWUgZXh0ZW5kcyBRdXtjb25zdHJ1Y3RvcihlLHIpe3N1cGVyKGUscixXbGUsR3ksbj0+bi5pZCksdGhpcy5jb3JlPWUsdGhpcy5sb2dnZXI9cn19dmFyIHJ1ZT1PYmplY3QuZGVmaW5lUHJvcGVydHksbnVlPSh0LGUscik9PmUgaW4gdD9ydWUodCxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpyfSk6dFtlXT1yLGEzPSh0LGUscik9Pm51ZSh0LHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUscik7Y2xhc3MgaXVle2NvbnN0cnVjdG9yKGUscil7dGhpcy5jb3JlPWUsdGhpcy5sb2dnZXI9cixhMyh0aGlzLCJhdXRoS2V5cyIpLGEzKHRoaXMsInBhaXJpbmdUb3BpY3MiKSxhMyh0aGlzLCJyZXF1ZXN0cyIpLHRoaXMuYXV0aEtleXM9bmV3IFFsZSh0aGlzLmNvcmUsdGhpcy5sb2dnZXIpLHRoaXMucGFpcmluZ1RvcGljcz1uZXcgZXVlKHRoaXMuY29yZSx0aGlzLmxvZ2dlciksdGhpcy5yZXF1ZXN0cz1uZXcgdHVlKHRoaXMuY29yZSx0aGlzLmxvZ2dlcil9YXN5bmMgaW5pdCgpe2F3YWl0IHRoaXMuYXV0aEtleXMuaW5pdCgpLGF3YWl0IHRoaXMucGFpcmluZ1RvcGljcy5pbml0KCksYXdhaXQgdGhpcy5yZXF1ZXN0cy5pbml0KCl9fXZhciBzdWU9T2JqZWN0LmRlZmluZVByb3BlcnR5LG91ZT0odCxlLHIpPT5lIGluIHQ/c3VlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixrdD0odCxlLHIpPT5vdWUodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2xldCBhdWU9Y2xhc3MgY0IgZXh0ZW5kcyBWWntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSxrdCh0aGlzLCJwcm90b2NvbCIsc0IpLGt0KHRoaXMsInZlcnNpb24iLG9CKSxrdCh0aGlzLCJuYW1lIixzMy5uYW1lKSxrdCh0aGlzLCJtZXRhZGF0YSIpLGt0KHRoaXMsImNvcmUiKSxrdCh0aGlzLCJsb2dnZXIiKSxrdCh0aGlzLCJldmVudHMiLG5ldyBvcy5FdmVudEVtaXR0ZXIpLGt0KHRoaXMsImVuZ2luZSIpLGt0KHRoaXMsInNlc3Npb24iKSxrdCh0aGlzLCJwcm9wb3NhbCIpLGt0KHRoaXMsInBlbmRpbmdSZXF1ZXN0Iiksa3QodGhpcywiYXV0aCIpLGt0KHRoaXMsInNpZ25Db25maWciKSxrdCh0aGlzLCJvbiIsKG4scyk9PnRoaXMuZXZlbnRzLm9uKG4scykpLGt0KHRoaXMsIm9uY2UiLChuLHMpPT50aGlzLmV2ZW50cy5vbmNlKG4scykpLGt0KHRoaXMsIm9mZiIsKG4scyk9PnRoaXMuZXZlbnRzLm9mZihuLHMpKSxrdCh0aGlzLCJyZW1vdmVMaXN0ZW5lciIsKG4scyk9PnRoaXMuZXZlbnRzLnJlbW92ZUxpc3RlbmVyKG4scykpLGt0KHRoaXMsInJlbW92ZUFsbExpc3RlbmVycyIsbj0+dGhpcy5ldmVudHMucmVtb3ZlQWxsTGlzdGVuZXJzKG4pKSxrdCh0aGlzLCJjb25uZWN0Iixhc3luYyBuPT57dHJ5e3JldHVybiBhd2FpdCB0aGlzLmVuZ2luZS5jb25uZWN0KG4pfWNhdGNoKHMpe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHMubWVzc2FnZSksc319KSxrdCh0aGlzLCJwYWlyIixhc3luYyBuPT57dHJ5e3JldHVybiBhd2FpdCB0aGlzLmVuZ2luZS5wYWlyKG4pfWNhdGNoKHMpe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHMubWVzc2FnZSksc319KSxrdCh0aGlzLCJhcHByb3ZlIixhc3luYyBuPT57dHJ5e3JldHVybiBhd2FpdCB0aGlzLmVuZ2luZS5hcHByb3ZlKG4pfWNhdGNoKHMpe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHMubWVzc2FnZSksc319KSxrdCh0aGlzLCJyZWplY3QiLGFzeW5jIG49Pnt0cnl7cmV0dXJuIGF3YWl0IHRoaXMuZW5naW5lLnJlamVjdChuKX1jYXRjaChzKXt0aHJvdyB0aGlzLmxvZ2dlci5lcnJvcihzLm1lc3NhZ2UpLHN9fSksa3QodGhpcywidXBkYXRlIixhc3luYyBuPT57dHJ5e3JldHVybiBhd2FpdCB0aGlzLmVuZ2luZS51cGRhdGUobil9Y2F0Y2gocyl7dGhyb3cgdGhpcy5sb2dnZXIuZXJyb3Iocy5tZXNzYWdlKSxzfX0pLGt0KHRoaXMsImV4dGVuZCIsYXN5bmMgbj0+e3RyeXtyZXR1cm4gYXdhaXQgdGhpcy5lbmdpbmUuZXh0ZW5kKG4pfWNhdGNoKHMpe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHMubWVzc2FnZSksc319KSxrdCh0aGlzLCJyZXF1ZXN0Iixhc3luYyBuPT57dHJ5e3JldHVybiBhd2FpdCB0aGlzLmVuZ2luZS5yZXF1ZXN0KG4pfWNhdGNoKHMpe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHMubWVzc2FnZSksc319KSxrdCh0aGlzLCJyZXNwb25kIixhc3luYyBuPT57dHJ5e3JldHVybiBhd2FpdCB0aGlzLmVuZ2luZS5yZXNwb25kKG4pfWNhdGNoKHMpe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHMubWVzc2FnZSksc319KSxrdCh0aGlzLCJwaW5nIixhc3luYyBuPT57dHJ5e3JldHVybiBhd2FpdCB0aGlzLmVuZ2luZS5waW5nKG4pfWNhdGNoKHMpe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHMubWVzc2FnZSksc319KSxrdCh0aGlzLCJlbWl0Iixhc3luYyBuPT57dHJ5e3JldHVybiBhd2FpdCB0aGlzLmVuZ2luZS5lbWl0KG4pfWNhdGNoKHMpe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHMubWVzc2FnZSksc319KSxrdCh0aGlzLCJkaXNjb25uZWN0Iixhc3luYyBuPT57dHJ5e3JldHVybiBhd2FpdCB0aGlzLmVuZ2luZS5kaXNjb25uZWN0KG4pfWNhdGNoKHMpe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHMubWVzc2FnZSksc319KSxrdCh0aGlzLCJmaW5kIixuPT57dHJ5e3JldHVybiB0aGlzLmVuZ2luZS5maW5kKG4pfWNhdGNoKHMpe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKHMubWVzc2FnZSksc319KSxrdCh0aGlzLCJnZXRQZW5kaW5nU2Vzc2lvblJlcXVlc3RzIiwoKT0+e3RyeXtyZXR1cm4gdGhpcy5lbmdpbmUuZ2V0UGVuZGluZ1Nlc3Npb25SZXF1ZXN0cygpfWNhdGNoKG4pe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKG4ubWVzc2FnZSksbn19KSxrdCh0aGlzLCJhdXRoZW50aWNhdGUiLGFzeW5jKG4scyk9Pnt0cnl7cmV0dXJuIGF3YWl0IHRoaXMuZW5naW5lLmF1dGhlbnRpY2F0ZShuLHMpfWNhdGNoKGkpe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKGkubWVzc2FnZSksaX19KSxrdCh0aGlzLCJmb3JtYXRBdXRoTWVzc2FnZSIsbj0+e3RyeXtyZXR1cm4gdGhpcy5lbmdpbmUuZm9ybWF0QXV0aE1lc3NhZ2Uobil9Y2F0Y2gocyl7dGhyb3cgdGhpcy5sb2dnZXIuZXJyb3Iocy5tZXNzYWdlKSxzfX0pLGt0KHRoaXMsImFwcHJvdmVTZXNzaW9uQXV0aGVudGljYXRlIixhc3luYyBuPT57dHJ5e3JldHVybiBhd2FpdCB0aGlzLmVuZ2luZS5hcHByb3ZlU2Vzc2lvbkF1dGhlbnRpY2F0ZShuKX1jYXRjaChzKXt0aHJvdyB0aGlzLmxvZ2dlci5lcnJvcihzLm1lc3NhZ2UpLHN9fSksa3QodGhpcywicmVqZWN0U2Vzc2lvbkF1dGhlbnRpY2F0ZSIsYXN5bmMgbj0+e3RyeXtyZXR1cm4gYXdhaXQgdGhpcy5lbmdpbmUucmVqZWN0U2Vzc2lvbkF1dGhlbnRpY2F0ZShuKX1jYXRjaChzKXt0aHJvdyB0aGlzLmxvZ2dlci5lcnJvcihzLm1lc3NhZ2UpLHN9fSksdGhpcy5uYW1lPWU/Lm5hbWV8fHMzLm5hbWUsdGhpcy5tZXRhZGF0YT1qdGUoZT8ubWV0YWRhdGEpLHRoaXMuc2lnbkNvbmZpZz1lPy5zaWduQ29uZmlnO2NvbnN0IHI9dHlwZW9mIGU/LmxvZ2dlcjwidSImJnR5cGVvZiBlPy5sb2dnZXIhPSJzdHJpbmciP2UubG9nZ2VyOnUxKGxwKHtsZXZlbDplPy5sb2dnZXJ8fHMzLmxvZ2dlcn0pKTt0aGlzLmNvcmU9ZT8uY29yZXx8bmV3IE9sZShlKSx0aGlzLmxvZ2dlcj1ObihyLHRoaXMubmFtZSksdGhpcy5zZXNzaW9uPW5ldyBKbGUodGhpcy5jb3JlLHRoaXMubG9nZ2VyKSx0aGlzLnByb3Bvc2FsPW5ldyBZbGUodGhpcy5jb3JlLHRoaXMubG9nZ2VyKSx0aGlzLnBlbmRpbmdSZXF1ZXN0PW5ldyBYbGUodGhpcy5jb3JlLHRoaXMubG9nZ2VyKSx0aGlzLmVuZ2luZT1uZXcgWmxlKHRoaXMpLHRoaXMuYXV0aD1uZXcgaXVlKHRoaXMuY29yZSx0aGlzLmxvZ2dlcil9c3RhdGljIGFzeW5jIGluaXQoZSl7Y29uc3Qgcj1uZXcgY0IoZSk7cmV0dXJuIGF3YWl0IHIuaW5pdGlhbGl6ZSgpLHJ9Z2V0IGNvbnRleHQoKXtyZXR1cm4gcGkodGhpcy5sb2dnZXIpfWdldCBwYWlyaW5nKCl7cmV0dXJuIHRoaXMuY29yZS5wYWlyaW5nLnBhaXJpbmdzfWFzeW5jIGluaXRpYWxpemUoKXt0aGlzLmxvZ2dlci50cmFjZSgiSW5pdGlhbGl6ZWQiKTt0cnl7YXdhaXQgdGhpcy5jb3JlLnN0YXJ0KCksYXdhaXQgdGhpcy5zZXNzaW9uLmluaXQoKSxhd2FpdCB0aGlzLnByb3Bvc2FsLmluaXQoKSxhd2FpdCB0aGlzLnBlbmRpbmdSZXF1ZXN0LmluaXQoKSxhd2FpdCB0aGlzLmF1dGguaW5pdCgpLGF3YWl0IHRoaXMuZW5naW5lLmluaXQoKSx0aGlzLmxvZ2dlci5pbmZvKCJTaWduQ2xpZW50IEluaXRpYWxpemF0aW9uIFN1Y2Nlc3MiKSxzZXRUaW1lb3V0KCgpPT57dGhpcy5lbmdpbmUucHJvY2Vzc1JlbGF5TWVzc2FnZUNhY2hlKCl9LFBlLnRvTWlsaXNlY29uZHMoUGUuT05FX1NFQ09ORCkpfWNhdGNoKGUpe3Rocm93IHRoaXMubG9nZ2VyLmluZm8oIlNpZ25DbGllbnQgSW5pdGlhbGl6YXRpb24gRmFpbHVyZSIpLHRoaXMubG9nZ2VyLmVycm9yKGUubWVzc2FnZSksZX19fTt2YXIgSWc9e2V4cG9ydHM6e319LGhTO2Z1bmN0aW9uIGN1ZSgpe3JldHVybiBoU3x8KGhTPTEsZnVuY3Rpb24odCxlKXt2YXIgcj10eXBlb2YgZ2xvYmFsVGhpczwidSImJmdsb2JhbFRoaXN8fHR5cGVvZiBzZWxmPCJ1IiYmc2VsZnx8dHlwZW9mIEFuPCJ1IiYmQW4sbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGkoKXt0aGlzLmZldGNoPSExLHRoaXMuRE9NRXhjZXB0aW9uPXIuRE9NRXhjZXB0aW9ufXJldHVybiBpLnByb3RvdHlwZT1yLG5ldyBpfSgpOyhmdW5jdGlvbihpKXsoZnVuY3Rpb24obyl7dmFyIGE9dHlwZW9mIGk8InUiJiZpfHx0eXBlb2Ygc2VsZjwidSImJnNlbGZ8fHR5cGVvZiBBbjwidSImJkFufHx7fSxjPXtzZWFyY2hQYXJhbXM6IlVSTFNlYXJjaFBhcmFtcyJpbiBhLGl0ZXJhYmxlOiJTeW1ib2wiaW4gYSYmIml0ZXJhdG9yImluIFN5bWJvbCxibG9iOiJGaWxlUmVhZGVyImluIGEmJiJCbG9iImluIGEmJmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQmxvYiwhMH1jYXRjaHtyZXR1cm4hMX19KCksZm9ybURhdGE6IkZvcm1EYXRhImluIGEsYXJyYXlCdWZmZXI6IkFycmF5QnVmZmVyImluIGF9O2Z1bmN0aW9uIGwoeSl7cmV0dXJuIHkmJkRhdGFWaWV3LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKHkpfWlmKGMuYXJyYXlCdWZmZXIpdmFyIGQ9WyJbb2JqZWN0IEludDhBcnJheV0iLCJbb2JqZWN0IFVpbnQ4QXJyYXldIiwiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iLCJbb2JqZWN0IEludDE2QXJyYXldIiwiW29iamVjdCBVaW50MTZBcnJheV0iLCJbb2JqZWN0IEludDMyQXJyYXldIiwiW29iamVjdCBVaW50MzJBcnJheV0iLCJbb2JqZWN0IEZsb2F0MzJBcnJheV0iLCJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXSx1PUFycmF5QnVmZmVyLmlzVmlld3x8ZnVuY3Rpb24oeSl7cmV0dXJuIHkmJmQuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeSkpPi0xfTtmdW5jdGlvbiBoKHkpe2lmKHR5cGVvZiB5IT0ic3RyaW5nIiYmKHk9U3RyaW5nKHkpKSwvW15hLXowLTlcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QoeSl8fHk9PT0iIil0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogIicreSsnIicpO3JldHVybiB5LnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gcCh5KXtyZXR1cm4gdHlwZW9mIHkhPSJzdHJpbmciJiYoeT1TdHJpbmcoeSkpLHl9ZnVuY3Rpb24gZih5KXt2YXIgQz17bmV4dDpmdW5jdGlvbigpe3ZhciBUPXkuc2hpZnQoKTtyZXR1cm57ZG9uZTpUPT09dm9pZCAwLHZhbHVlOlR9fX07cmV0dXJuIGMuaXRlcmFibGUmJihDW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gQ30pLEN9ZnVuY3Rpb24gbSh5KXt0aGlzLm1hcD17fSx5IGluc3RhbmNlb2YgbT95LmZvckVhY2goZnVuY3Rpb24oQyxUKXt0aGlzLmFwcGVuZChULEMpfSx0aGlzKTpBcnJheS5pc0FycmF5KHkpP3kuZm9yRWFjaChmdW5jdGlvbihDKXtpZihDLmxlbmd0aCE9Mil0aHJvdyBuZXcgVHlwZUVycm9yKCJIZWFkZXJzIGNvbnN0cnVjdG9yOiBleHBlY3RlZCBuYW1lL3ZhbHVlIHBhaXIgdG8gYmUgbGVuZ3RoIDIsIGZvdW5kIitDLmxlbmd0aCk7dGhpcy5hcHBlbmQoQ1swXSxDWzFdKX0sdGhpcyk6eSYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoeSkuZm9yRWFjaChmdW5jdGlvbihDKXt0aGlzLmFwcGVuZChDLHlbQ10pfSx0aGlzKX1tLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24oeSxDKXt5PWgoeSksQz1wKEMpO3ZhciBUPXRoaXMubWFwW3ldO3RoaXMubWFwW3ldPVQ/VCsiLCAiK0M6Q30sbS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHkpe2RlbGV0ZSB0aGlzLm1hcFtoKHkpXX0sbS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHkpe3JldHVybiB5PWgoeSksdGhpcy5oYXMoeSk/dGhpcy5tYXBbeV06bnVsbH0sbS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShoKHkpKX0sbS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHksQyl7dGhpcy5tYXBbaCh5KV09cChDKX0sbS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih5LEMpe2Zvcih2YXIgVCBpbiB0aGlzLm1hcCl0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShUKSYmeS5jYWxsKEMsdGhpcy5tYXBbVF0sVCx0aGlzKX0sbS5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3ZhciB5PVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24oQyxUKXt5LnB1c2goVCl9KSxmKHkpfSxtLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oKXt2YXIgeT1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKEMpe3kucHVzaChDKX0pLGYoeSl9LG0ucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXt2YXIgeT1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKEMsVCl7eS5wdXNoKFtULENdKX0pLGYoeSl9LGMuaXRlcmFibGUmJihtLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPW0ucHJvdG90eXBlLmVudHJpZXMpO2Z1bmN0aW9uIHcoeSl7aWYoIXkuX25vQm9keSl7aWYoeS5ib2R5VXNlZClyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcigiQWxyZWFkeSByZWFkIikpO3kuYm9keVVzZWQ9ITB9fWZ1bmN0aW9uIGcoeSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKEMsVCl7eS5vbmxvYWQ9ZnVuY3Rpb24oKXtDKHkucmVzdWx0KX0seS5vbmVycm9yPWZ1bmN0aW9uKCl7VCh5LmVycm9yKX19KX1mdW5jdGlvbiB2KHkpe3ZhciBDPW5ldyBGaWxlUmVhZGVyLFQ9ZyhDKTtyZXR1cm4gQy5yZWFkQXNBcnJheUJ1ZmZlcih5KSxUfWZ1bmN0aW9uIEUoeSl7dmFyIEM9bmV3IEZpbGVSZWFkZXIsVD1nKEMpLE49L2NoYXJzZXQ9KFtBLVphLXowLTlfLV0rKS8uZXhlYyh5LnR5cGUpLFI9Tj9OWzFdOiJ1dGYtOCI7cmV0dXJuIEMucmVhZEFzVGV4dCh5LFIpLFR9ZnVuY3Rpb24geCh5KXtmb3IodmFyIEM9bmV3IFVpbnQ4QXJyYXkoeSksVD1uZXcgQXJyYXkoQy5sZW5ndGgpLE49MDtOPEMubGVuZ3RoO04rKylUW05dPVN0cmluZy5mcm9tQ2hhckNvZGUoQ1tOXSk7cmV0dXJuIFQuam9pbigiIil9ZnVuY3Rpb24gXyh5KXtpZih5LnNsaWNlKXJldHVybiB5LnNsaWNlKDApO3ZhciBDPW5ldyBVaW50OEFycmF5KHkuYnl0ZUxlbmd0aCk7cmV0dXJuIEMuc2V0KG5ldyBVaW50OEFycmF5KHkpKSxDLmJ1ZmZlcn1mdW5jdGlvbiBrKCl7cmV0dXJuIHRoaXMuYm9keVVzZWQ9ITEsdGhpcy5faW5pdEJvZHk9ZnVuY3Rpb24oeSl7dGhpcy5ib2R5VXNlZD10aGlzLmJvZHlVc2VkLHRoaXMuX2JvZHlJbml0PXkseT90eXBlb2YgeT09InN0cmluZyI/dGhpcy5fYm9keVRleHQ9eTpjLmJsb2ImJkJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoeSk/dGhpcy5fYm9keUJsb2I9eTpjLmZvcm1EYXRhJiZGb3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZih5KT90aGlzLl9ib2R5Rm9ybURhdGE9eTpjLnNlYXJjaFBhcmFtcyYmVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKHkpP3RoaXMuX2JvZHlUZXh0PXkudG9TdHJpbmcoKTpjLmFycmF5QnVmZmVyJiZjLmJsb2ImJmwoeSk/KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcj1fKHkuYnVmZmVyKSx0aGlzLl9ib2R5SW5pdD1uZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpOmMuYXJyYXlCdWZmZXImJihBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZih5KXx8dSh5KSk/dGhpcy5fYm9keUFycmF5QnVmZmVyPV8oeSk6dGhpcy5fYm9keVRleHQ9eT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoeSk6KHRoaXMuX25vQm9keT0hMCx0aGlzLl9ib2R5VGV4dD0iIiksdGhpcy5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIil8fCh0eXBlb2YgeT09InN0cmluZyI/dGhpcy5oZWFkZXJzLnNldCgiY29udGVudC10eXBlIiwidGV4dC9wbGFpbjtjaGFyc2V0PVVURi04Iik6dGhpcy5fYm9keUJsb2ImJnRoaXMuX2JvZHlCbG9iLnR5cGU/dGhpcy5oZWFkZXJzLnNldCgiY29udGVudC10eXBlIix0aGlzLl9ib2R5QmxvYi50eXBlKTpjLnNlYXJjaFBhcmFtcyYmVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKHkpJiZ0aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCIpKX0sYy5ibG9iJiYodGhpcy5ibG9iPWZ1bmN0aW9uKCl7dmFyIHk9dyh0aGlzKTtpZih5KXJldHVybiB5O2lmKHRoaXMuX2JvZHlCbG9iKXJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpO2lmKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSk7aWYodGhpcy5fYm9keUZvcm1EYXRhKXRocm93IG5ldyBFcnJvcigiY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iIik7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSl9KSx0aGlzLmFycmF5QnVmZmVyPWZ1bmN0aW9uKCl7aWYodGhpcy5fYm9keUFycmF5QnVmZmVyKXt2YXIgeT13KHRoaXMpO3JldHVybiB5fHwoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcik/UHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5idWZmZXIuc2xpY2UodGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQrdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpKTpQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKSl9ZWxzZXtpZihjLmJsb2IpcmV0dXJuIHRoaXMuYmxvYigpLnRoZW4odik7dGhyb3cgbmV3IEVycm9yKCJjb3VsZCBub3QgcmVhZCBhcyBBcnJheUJ1ZmZlciIpfX0sdGhpcy50ZXh0PWZ1bmN0aW9uKCl7dmFyIHk9dyh0aGlzKTtpZih5KXJldHVybiB5O2lmKHRoaXMuX2JvZHlCbG9iKXJldHVybiBFKHRoaXMuX2JvZHlCbG9iKTtpZih0aGlzLl9ib2R5QXJyYXlCdWZmZXIpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh4KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpO2lmKHRoaXMuX2JvZHlGb3JtRGF0YSl0aHJvdyBuZXcgRXJyb3IoImNvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCIpO3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpfSxjLmZvcm1EYXRhJiYodGhpcy5mb3JtRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHQoKS50aGVuKGopfSksdGhpcy5qc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSl9LHRoaXN9dmFyIEE9WyJDT05ORUNUIiwiREVMRVRFIiwiR0VUIiwiSEVBRCIsIk9QVElPTlMiLCJQQVRDSCIsIlBPU1QiLCJQVVQiLCJUUkFDRSJdO2Z1bmN0aW9uIE0oeSl7dmFyIEM9eS50b1VwcGVyQ2FzZSgpO3JldHVybiBBLmluZGV4T2YoQyk+LTE/Qzp5fWZ1bmN0aW9uIFAoeSxDKXtpZighKHRoaXMgaW5zdGFuY2VvZiBQKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSAibmV3IiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKTtDPUN8fHt9O3ZhciBUPUMuYm9keTtpZih5IGluc3RhbmNlb2YgUCl7aWYoeS5ib2R5VXNlZCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBbHJlYWR5IHJlYWQiKTt0aGlzLnVybD15LnVybCx0aGlzLmNyZWRlbnRpYWxzPXkuY3JlZGVudGlhbHMsQy5oZWFkZXJzfHwodGhpcy5oZWFkZXJzPW5ldyBtKHkuaGVhZGVycykpLHRoaXMubWV0aG9kPXkubWV0aG9kLHRoaXMubW9kZT15Lm1vZGUsdGhpcy5zaWduYWw9eS5zaWduYWwsIVQmJnkuX2JvZHlJbml0IT1udWxsJiYoVD15Ll9ib2R5SW5pdCx5LmJvZHlVc2VkPSEwKX1lbHNlIHRoaXMudXJsPVN0cmluZyh5KTtpZih0aGlzLmNyZWRlbnRpYWxzPUMuY3JlZGVudGlhbHN8fHRoaXMuY3JlZGVudGlhbHN8fCJzYW1lLW9yaWdpbiIsKEMuaGVhZGVyc3x8IXRoaXMuaGVhZGVycykmJih0aGlzLmhlYWRlcnM9bmV3IG0oQy5oZWFkZXJzKSksdGhpcy5tZXRob2Q9TShDLm1ldGhvZHx8dGhpcy5tZXRob2R8fCJHRVQiKSx0aGlzLm1vZGU9Qy5tb2RlfHx0aGlzLm1vZGV8fG51bGwsdGhpcy5zaWduYWw9Qy5zaWduYWx8fHRoaXMuc2lnbmFsfHxmdW5jdGlvbigpe2lmKCJBYm9ydENvbnRyb2xsZXIiaW4gYSl7dmFyIEk9bmV3IEFib3J0Q29udHJvbGxlcjtyZXR1cm4gSS5zaWduYWx9fSgpLHRoaXMucmVmZXJyZXI9bnVsbCwodGhpcy5tZXRob2Q9PT0iR0VUInx8dGhpcy5tZXRob2Q9PT0iSEVBRCIpJiZUKXRocm93IG5ldyBUeXBlRXJyb3IoIkJvZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBIRUFEIHJlcXVlc3RzIik7aWYodGhpcy5faW5pdEJvZHkoVCksKHRoaXMubWV0aG9kPT09IkdFVCJ8fHRoaXMubWV0aG9kPT09IkhFQUQiKSYmKEMuY2FjaGU9PT0ibm8tc3RvcmUifHxDLmNhY2hlPT09Im5vLWNhY2hlIikpe3ZhciBOPS8oWz8mXSlfPVteJl0qLztpZihOLnRlc3QodGhpcy51cmwpKXRoaXMudXJsPXRoaXMudXJsLnJlcGxhY2UoTiwiJDFfPSIrbmV3IERhdGUoKS5nZXRUaW1lKCkpO2Vsc2V7dmFyIFI9L1w/Lzt0aGlzLnVybCs9KFIudGVzdCh0aGlzLnVybCk/IiYiOiI/IikrIl89IituZXcgRGF0ZSgpLmdldFRpbWUoKX19fVAucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQKHRoaXMse2JvZHk6dGhpcy5fYm9keUluaXR9KX07ZnVuY3Rpb24gaih5KXt2YXIgQz1uZXcgRm9ybURhdGE7cmV0dXJuIHkudHJpbSgpLnNwbGl0KCImIikuZm9yRWFjaChmdW5jdGlvbihUKXtpZihUKXt2YXIgTj1ULnNwbGl0KCI9IiksUj1OLnNoaWZ0KCkucmVwbGFjZSgvXCsvZywiICIpLEk9Ti5qb2luKCI9IikucmVwbGFjZSgvXCsvZywiICIpO0MuYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChSKSxkZWNvZGVVUklDb21wb25lbnQoSSkpfX0pLEN9ZnVuY3Rpb24gVSh5KXt2YXIgQz1uZXcgbSxUPXkucmVwbGFjZSgvXHI/XG5bXHQgXSsvZywiICIpO3JldHVybiBULnNwbGl0KCJcciIpLm1hcChmdW5jdGlvbihOKXtyZXR1cm4gTi5pbmRleE9mKGANCmApPT09MD9OLnN1YnN0cigxLE4ubGVuZ3RoKTpOfSkuZm9yRWFjaChmdW5jdGlvbihOKXt2YXIgUj1OLnNwbGl0KCI6IiksST1SLnNoaWZ0KCkudHJpbSgpO2lmKEkpe3ZhciBCPVIuam9pbigiOiIpLnRyaW0oKTt0cnl7Qy5hcHBlbmQoSSxCKX1jYXRjaChTKXtjb25zb2xlLndhcm4oIlJlc3BvbnNlICIrUy5tZXNzYWdlKX19fSksQ31rLmNhbGwoUC5wcm90b3R5cGUpO2Z1bmN0aW9uIFYoeSxDKXtpZighKHRoaXMgaW5zdGFuY2VvZiBWKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSAibmV3IiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKTtpZihDfHwoQz17fSksdGhpcy50eXBlPSJkZWZhdWx0Iix0aGlzLnN0YXR1cz1DLnN0YXR1cz09PXZvaWQgMD8yMDA6Qy5zdGF0dXMsdGhpcy5zdGF0dXM8MjAwfHx0aGlzLnN0YXR1cz41OTkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ1Jlc3BvbnNlJzogVGhlIHN0YXR1cyBwcm92aWRlZCAoMCkgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgWzIwMCwgNTk5XS4iKTt0aGlzLm9rPXRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMwMCx0aGlzLnN0YXR1c1RleHQ9Qy5zdGF0dXNUZXh0PT09dm9pZCAwPyIiOiIiK0Muc3RhdHVzVGV4dCx0aGlzLmhlYWRlcnM9bmV3IG0oQy5oZWFkZXJzKSx0aGlzLnVybD1DLnVybHx8IiIsdGhpcy5faW5pdEJvZHkoeSl9ay5jYWxsKFYucHJvdG90eXBlKSxWLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgVih0aGlzLl9ib2R5SW5pdCx7c3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6dGhpcy5zdGF0dXNUZXh0LGhlYWRlcnM6bmV3IG0odGhpcy5oZWFkZXJzKSx1cmw6dGhpcy51cmx9KX0sVi5lcnJvcj1mdW5jdGlvbigpe3ZhciB5PW5ldyBWKG51bGwse3N0YXR1czoyMDAsc3RhdHVzVGV4dDoiIn0pO3JldHVybiB5Lm9rPSExLHkuc3RhdHVzPTAseS50eXBlPSJlcnJvciIseX07dmFyIEY9WzMwMSwzMDIsMzAzLDMwNywzMDhdO1YucmVkaXJlY3Q9ZnVuY3Rpb24oeSxDKXtpZihGLmluZGV4T2YoQyk9PT0tMSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBzdGF0dXMgY29kZSIpO3JldHVybiBuZXcgVihudWxsLHtzdGF0dXM6QyxoZWFkZXJzOntsb2NhdGlvbjp5fX0pfSxvLkRPTUV4Y2VwdGlvbj1hLkRPTUV4Y2VwdGlvbjt0cnl7bmV3IG8uRE9NRXhjZXB0aW9ufWNhdGNoe28uRE9NRXhjZXB0aW9uPWZ1bmN0aW9uKEMsVCl7dGhpcy5tZXNzYWdlPUMsdGhpcy5uYW1lPVQ7dmFyIE49RXJyb3IoQyk7dGhpcy5zdGFjaz1OLnN0YWNrfSxvLkRPTUV4Y2VwdGlvbi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLG8uRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1vLkRPTUV4Y2VwdGlvbn1mdW5jdGlvbiBiKHksQyl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKFQsTil7dmFyIFI9bmV3IFAoeSxDKTtpZihSLnNpZ25hbCYmUi5zaWduYWwuYWJvcnRlZClyZXR1cm4gTihuZXcgby5ET01FeGNlcHRpb24oIkFib3J0ZWQiLCJBYm9ydEVycm9yIikpO3ZhciBJPW5ldyBYTUxIdHRwUmVxdWVzdDtmdW5jdGlvbiBCKCl7SS5hYm9ydCgpfUkub25sb2FkPWZ1bmN0aW9uKCl7dmFyIFE9e3N0YXR1c1RleHQ6SS5zdGF0dXNUZXh0LGhlYWRlcnM6VShJLmdldEFsbFJlc3BvbnNlSGVhZGVycygpfHwiIil9O1IudXJsLmluZGV4T2YoImZpbGU6Ly8iKT09PTAmJihJLnN0YXR1czwyMDB8fEkuc3RhdHVzPjU5OSk/US5zdGF0dXM9MjAwOlEuc3RhdHVzPUkuc3RhdHVzLFEudXJsPSJyZXNwb25zZVVSTCJpbiBJP0kucmVzcG9uc2VVUkw6US5oZWFkZXJzLmdldCgiWC1SZXF1ZXN0LVVSTCIpO3ZhciByZT0icmVzcG9uc2UiaW4gST9JLnJlc3BvbnNlOkkucmVzcG9uc2VUZXh0O3NldFRpbWVvdXQoZnVuY3Rpb24oKXtUKG5ldyBWKHJlLFEpKX0sMCl9LEkub25lcnJvcj1mdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtOKG5ldyBUeXBlRXJyb3IoIk5ldHdvcmsgcmVxdWVzdCBmYWlsZWQiKSl9LDApfSxJLm9udGltZW91dD1mdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtOKG5ldyBUeXBlRXJyb3IoIk5ldHdvcmsgcmVxdWVzdCB0aW1lZCBvdXQiKSl9LDApfSxJLm9uYWJvcnQ9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TihuZXcgby5ET01FeGNlcHRpb24oIkFib3J0ZWQiLCJBYm9ydEVycm9yIikpfSwwKX07ZnVuY3Rpb24gUyhRKXt0cnl7cmV0dXJuIFE9PT0iIiYmYS5sb2NhdGlvbi5ocmVmP2EubG9jYXRpb24uaHJlZjpRfWNhdGNoe3JldHVybiBRfX1pZihJLm9wZW4oUi5tZXRob2QsUyhSLnVybCksITApLFIuY3JlZGVudGlhbHM9PT0iaW5jbHVkZSI/SS53aXRoQ3JlZGVudGlhbHM9ITA6Ui5jcmVkZW50aWFscz09PSJvbWl0IiYmKEkud2l0aENyZWRlbnRpYWxzPSExKSwicmVzcG9uc2VUeXBlImluIEkmJihjLmJsb2I/SS5yZXNwb25zZVR5cGU9ImJsb2IiOmMuYXJyYXlCdWZmZXImJihJLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiKSksQyYmdHlwZW9mIEMuaGVhZGVycz09Im9iamVjdCImJiEoQy5oZWFkZXJzIGluc3RhbmNlb2YgbXx8YS5IZWFkZXJzJiZDLmhlYWRlcnMgaW5zdGFuY2VvZiBhLkhlYWRlcnMpKXt2YXIgej1bXTtPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhDLmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24oUSl7ei5wdXNoKGgoUSkpLEkuc2V0UmVxdWVzdEhlYWRlcihRLHAoQy5oZWFkZXJzW1FdKSl9KSxSLmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihRLHJlKXt6LmluZGV4T2YocmUpPT09LTEmJkkuc2V0UmVxdWVzdEhlYWRlcihyZSxRKX0pfWVsc2UgUi5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oUSxyZSl7SS5zZXRSZXF1ZXN0SGVhZGVyKHJlLFEpfSk7Ui5zaWduYWwmJihSLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsQiksSS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtJLnJlYWR5U3RhdGU9PT00JiZSLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsQil9KSxJLnNlbmQodHlwZW9mIFIuX2JvZHlJbml0PiJ1Ij9udWxsOlIuX2JvZHlJbml0KX0pfXJldHVybiBiLnBvbHlmaWxsPSEwLGEuZmV0Y2h8fChhLmZldGNoPWIsYS5IZWFkZXJzPW0sYS5SZXF1ZXN0PVAsYS5SZXNwb25zZT1WKSxvLkhlYWRlcnM9bSxvLlJlcXVlc3Q9UCxvLlJlc3BvbnNlPVYsby5mZXRjaD1iLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxvfSkoe30pfSkobiksbi5mZXRjaC5wb255ZmlsbD0hMCxkZWxldGUgbi5mZXRjaC5wb2x5ZmlsbDt2YXIgcz1yLmZldGNoP3I6bjtlPXMuZmV0Y2gsZS5kZWZhdWx0PXMuZmV0Y2gsZS5mZXRjaD1zLmZldGNoLGUuSGVhZGVycz1zLkhlYWRlcnMsZS5SZXF1ZXN0PXMuUmVxdWVzdCxlLlJlc3BvbnNlPXMuUmVzcG9uc2UsdC5leHBvcnRzPWV9KElnLElnLmV4cG9ydHMpKSxJZy5leHBvcnRzfXZhciBsdWU9Y3VlKCk7Y29uc3QgcFM9enMobHVlKTt2YXIgdXVlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxkdWU9T2JqZWN0LmRlZmluZVByb3BlcnRpZXMsaHVlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLGZTPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMscHVlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksZnVlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsbVM9KHQsZSxyKT0+ZSBpbiB0P3V1ZSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsZ1M9KHQsZSk9Pntmb3IodmFyIHIgaW4gZXx8KGU9e30pKXB1ZS5jYWxsKGUscikmJm1TKHQscixlW3JdKTtpZihmUylmb3IodmFyIHIgb2YgZlMoZSkpZnVlLmNhbGwoZSxyKSYmbVModCxyLGVbcl0pO3JldHVybiB0fSx3Uz0odCxlKT0+ZHVlKHQsaHVlKGUpKTtjb25zdCBtdWU9e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiIsIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxndWU9IlBPU1QiLGJTPXtoZWFkZXJzOm11ZSxtZXRob2Q6Z3VlfSx5Uz0xMDtsZXQgcXM9Y2xhc3N7Y29uc3RydWN0b3IoZSxyPSExKXtpZih0aGlzLnVybD1lLHRoaXMuZGlzYWJsZVByb3ZpZGVyUGluZz1yLHRoaXMuZXZlbnRzPW5ldyBvcy5FdmVudEVtaXR0ZXIsdGhpcy5pc0F2YWlsYWJsZT0hMSx0aGlzLnJlZ2lzdGVyaW5nPSExLCEkayhlKSl0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGVkIFVSTCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEhUVFAgY29ubmVjdGlvbjogJHtlfWApO3RoaXMudXJsPWUsdGhpcy5kaXNhYmxlUHJvdmlkZXJQaW5nPXJ9Z2V0IGNvbm5lY3RlZCgpe3JldHVybiB0aGlzLmlzQXZhaWxhYmxlfWdldCBjb25uZWN0aW5nKCl7cmV0dXJuIHRoaXMucmVnaXN0ZXJpbmd9b24oZSxyKXt0aGlzLmV2ZW50cy5vbihlLHIpfW9uY2UoZSxyKXt0aGlzLmV2ZW50cy5vbmNlKGUscil9b2ZmKGUscil7dGhpcy5ldmVudHMub2ZmKGUscil9cmVtb3ZlTGlzdGVuZXIoZSxyKXt0aGlzLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihlLHIpfWFzeW5jIG9wZW4oZT10aGlzLnVybCl7YXdhaXQgdGhpcy5yZWdpc3RlcihlKX1hc3luYyBjbG9zZSgpe2lmKCF0aGlzLmlzQXZhaWxhYmxlKXRocm93IG5ldyBFcnJvcigiQ29ubmVjdGlvbiBhbHJlYWR5IGNsb3NlZCIpO3RoaXMub25DbG9zZSgpfWFzeW5jIHNlbmQoZSl7dGhpcy5pc0F2YWlsYWJsZXx8YXdhaXQgdGhpcy5yZWdpc3RlcigpO3RyeXtjb25zdCByPWdhKGUpLG49YXdhaXQoYXdhaXQgcFModGhpcy51cmwsd1MoZ1Moe30sYlMpLHtib2R5OnJ9KSkpLmpzb24oKTt0aGlzLm9uUGF5bG9hZCh7ZGF0YTpufSl9Y2F0Y2gocil7dGhpcy5vbkVycm9yKGUuaWQscil9fWFzeW5jIHJlZ2lzdGVyKGU9dGhpcy51cmwpe2lmKCEkayhlKSl0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGVkIFVSTCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEhUVFAgY29ubmVjdGlvbjogJHtlfWApO2lmKHRoaXMucmVnaXN0ZXJpbmcpe2NvbnN0IHI9dGhpcy5ldmVudHMuZ2V0TWF4TGlzdGVuZXJzKCk7cmV0dXJuKHRoaXMuZXZlbnRzLmxpc3RlbmVyQ291bnQoInJlZ2lzdGVyX2Vycm9yIik+PXJ8fHRoaXMuZXZlbnRzLmxpc3RlbmVyQ291bnQoIm9wZW4iKT49cikmJnRoaXMuZXZlbnRzLnNldE1heExpc3RlbmVycyhyKzEpLG5ldyBQcm9taXNlKChuLHMpPT57dGhpcy5ldmVudHMub25jZSgicmVnaXN0ZXJfZXJyb3IiLGk9Pnt0aGlzLnJlc2V0TWF4TGlzdGVuZXJzKCkscyhpKX0pLHRoaXMuZXZlbnRzLm9uY2UoIm9wZW4iLCgpPT57aWYodGhpcy5yZXNldE1heExpc3RlbmVycygpLHR5cGVvZiB0aGlzLmlzQXZhaWxhYmxlPiJ1IilyZXR1cm4gcyhuZXcgRXJyb3IoIkhUVFAgY29ubmVjdGlvbiBpcyBtaXNzaW5nIG9yIGludmFsaWQiKSk7bigpfSl9KX10aGlzLnVybD1lLHRoaXMucmVnaXN0ZXJpbmc9ITA7dHJ5e2lmKCF0aGlzLmRpc2FibGVQcm92aWRlclBpbmcpe2NvbnN0IHI9Z2Eoe2lkOjEsanNvbnJwYzoiMi4wIixtZXRob2Q6InRlc3QiLHBhcmFtczpbXX0pO2F3YWl0IHBTKGUsd1MoZ1Moe30sYlMpLHtib2R5OnJ9KSl9dGhpcy5vbk9wZW4oKX1jYXRjaChyKXtjb25zdCBuPXRoaXMucGFyc2VFcnJvcihyKTt0aHJvdyB0aGlzLmV2ZW50cy5lbWl0KCJyZWdpc3Rlcl9lcnJvciIsbiksdGhpcy5vbkNsb3NlKCksbn19b25PcGVuKCl7dGhpcy5pc0F2YWlsYWJsZT0hMCx0aGlzLnJlZ2lzdGVyaW5nPSExLHRoaXMuZXZlbnRzLmVtaXQoIm9wZW4iKX1vbkNsb3NlKCl7dGhpcy5pc0F2YWlsYWJsZT0hMSx0aGlzLnJlZ2lzdGVyaW5nPSExLHRoaXMuZXZlbnRzLmVtaXQoImNsb3NlIil9b25QYXlsb2FkKGUpe2lmKHR5cGVvZiBlLmRhdGE+InUiKXJldHVybjtjb25zdCByPXR5cGVvZiBlLmRhdGE9PSJzdHJpbmciP2J1KGUuZGF0YSk6ZS5kYXRhO3RoaXMuZXZlbnRzLmVtaXQoInBheWxvYWQiLHIpfW9uRXJyb3IoZSxyKXtjb25zdCBuPXRoaXMucGFyc2VFcnJvcihyKSxzPW4ubWVzc2FnZXx8bi50b1N0cmluZygpLGk9SHkoZSxzKTt0aGlzLmV2ZW50cy5lbWl0KCJwYXlsb2FkIixpKX1wYXJzZUVycm9yKGUscj10aGlzLnVybCl7cmV0dXJuIFVEKGUsciwiSFRUUCIpfXJlc2V0TWF4TGlzdGVuZXJzKCl7dGhpcy5ldmVudHMuZ2V0TWF4TGlzdGVuZXJzKCk+eVMmJnRoaXMuZXZlbnRzLnNldE1heExpc3RlbmVycyh5Uyl9fTtjb25zdCB2Uz0iZXJyb3IiLHd1ZT0id3NzOi8vcmVsYXkud2FsbGV0Y29ubmVjdC5vcmciLGJ1ZT0id2MiLHl1ZT0idW5pdmVyc2FsX3Byb3ZpZGVyIixSZz1gJHtidWV9QDI6JHt5dWV9OmAsbEI9Imh0dHBzOi8vcnBjLndhbGxldGNvbm5lY3Qub3JnL3YxLyIsSmQ9ImdlbmVyaWMiLHZ1ZT1gJHtsQn1idW5kbGVyYCxjcz17REVGQVVMVF9DSEFJTl9DSEFOR0VEOiJkZWZhdWx0X2NoYWluX2NoYW5nZWQifTtmdW5jdGlvbiBFdWUoKXt9ZnVuY3Rpb24gRzYodCl7cmV0dXJuIHQ9PW51bGx8fHR5cGVvZiB0IT0ib2JqZWN0IiYmdHlwZW9mIHQhPSJmdW5jdGlvbiJ9ZnVuY3Rpb24gSzYodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIEN1ZSh0KXtpZihHNih0KSlyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpfHxLNih0KXx8dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHx0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI8InUiJiZ0IGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXIpcmV0dXJuIHQuc2xpY2UoMCk7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCkscj1lLmNvbnN0cnVjdG9yO2lmKHQgaW5zdGFuY2VvZiBEYXRlfHx0IGluc3RhbmNlb2YgTWFwfHx0IGluc3RhbmNlb2YgU2V0KXJldHVybiBuZXcgcih0KTtpZih0IGluc3RhbmNlb2YgUmVnRXhwKXtjb25zdCBuPW5ldyByKHQpO3JldHVybiBuLmxhc3RJbmRleD10Lmxhc3RJbmRleCxufWlmKHQgaW5zdGFuY2VvZiBEYXRhVmlldylyZXR1cm4gbmV3IHIodC5idWZmZXIuc2xpY2UoMCkpO2lmKHQgaW5zdGFuY2VvZiBFcnJvcil7Y29uc3Qgbj1uZXcgcih0Lm1lc3NhZ2UpO3JldHVybiBuLnN0YWNrPXQuc3RhY2ssbi5uYW1lPXQubmFtZSxuLmNhdXNlPXQuY2F1c2Usbn1pZih0eXBlb2YgRmlsZTwidSImJnQgaW5zdGFuY2VvZiBGaWxlKXJldHVybiBuZXcgcihbdF0sdC5uYW1lLHt0eXBlOnQudHlwZSxsYXN0TW9kaWZpZWQ6dC5sYXN0TW9kaWZpZWR9KTtpZih0eXBlb2YgdD09Im9iamVjdCIpe2NvbnN0IG49T2JqZWN0LmNyZWF0ZShlKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihuLHQpfXJldHVybiB0fWZ1bmN0aW9uIEVTKHQpe3JldHVybiB0eXBlb2YgdD09Im9iamVjdCImJnQhPT1udWxsfWZ1bmN0aW9uIHVCKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpLmZpbHRlcihlPT5PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodCxlKSl9ZnVuY3Rpb24gZEIodCl7cmV0dXJuIHQ9PW51bGw/dD09PXZvaWQgMD8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWNvbnN0IHh1ZT0iW29iamVjdCBSZWdFeHBdIixoQj0iW29iamVjdCBTdHJpbmddIixwQj0iW29iamVjdCBOdW1iZXJdIixmQj0iW29iamVjdCBCb29sZWFuXSIsbUI9IltvYmplY3QgQXJndW1lbnRzXSIsX3VlPSJbb2JqZWN0IFN5bWJvbF0iLGt1ZT0iW29iamVjdCBEYXRlXSIsU3VlPSJbb2JqZWN0IE1hcF0iLEF1ZT0iW29iamVjdCBTZXRdIixUdWU9IltvYmplY3QgQXJyYXldIixJdWU9IltvYmplY3QgQXJyYXlCdWZmZXJdIixSdWU9IltvYmplY3QgT2JqZWN0XSIsTnVlPSJbb2JqZWN0IERhdGFWaWV3XSIsUHVlPSJbb2JqZWN0IFVpbnQ4QXJyYXldIixPdWU9IltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIiwkdWU9IltvYmplY3QgVWludDE2QXJyYXldIixNdWU9IltvYmplY3QgVWludDMyQXJyYXldIixEdWU9IltvYmplY3QgSW50OEFycmF5XSIsQnVlPSJbb2JqZWN0IEludDE2QXJyYXldIixMdWU9IltvYmplY3QgSW50MzJBcnJheV0iLFV1ZT0iW29iamVjdCBGbG9hdDMyQXJyYXldIixGdWU9IltvYmplY3QgRmxvYXQ2NEFycmF5XSI7ZnVuY3Rpb24ganVlKHQsZSl7cmV0dXJuIHJoKHQsdm9pZCAwLHQsbmV3IE1hcCxlKX1mdW5jdGlvbiByaCh0LGUscixuPW5ldyBNYXAscz12b2lkIDApe2NvbnN0IGk9cz8uKHQsZSxyLG4pO2lmKGkhPW51bGwpcmV0dXJuIGk7aWYoRzYodCkpcmV0dXJuIHQ7aWYobi5oYXModCkpcmV0dXJuIG4uZ2V0KHQpO2lmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IG89bmV3IEFycmF5KHQubGVuZ3RoKTtuLnNldCh0LG8pO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKW9bYV09cmgodFthXSxhLHIsbixzKTtyZXR1cm4gT2JqZWN0Lmhhc093bih0LCJpbmRleCIpJiYoby5pbmRleD10LmluZGV4KSxPYmplY3QuaGFzT3duKHQsImlucHV0IikmJihvLmlucHV0PXQuaW5wdXQpLG99aWYodCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIG5ldyBEYXRlKHQuZ2V0VGltZSgpKTtpZih0IGluc3RhbmNlb2YgUmVnRXhwKXtjb25zdCBvPW5ldyBSZWdFeHAodC5zb3VyY2UsdC5mbGFncyk7cmV0dXJuIG8ubGFzdEluZGV4PXQubGFzdEluZGV4LG99aWYodCBpbnN0YW5jZW9mIE1hcCl7Y29uc3Qgbz1uZXcgTWFwO24uc2V0KHQsbyk7Zm9yKGNvbnN0W2EsY11vZiB0KW8uc2V0KGEscmgoYyxhLHIsbixzKSk7cmV0dXJuIG99aWYodCBpbnN0YW5jZW9mIFNldCl7Y29uc3Qgbz1uZXcgU2V0O24uc2V0KHQsbyk7Zm9yKGNvbnN0IGEgb2YgdClvLmFkZChyaChhLHZvaWQgMCxyLG4scykpO3JldHVybiBvfWlmKHR5cGVvZiBCdWZmZXI8InUiJiZCdWZmZXIuaXNCdWZmZXIodCkpcmV0dXJuIHQuc3ViYXJyYXkoKTtpZihLNih0KSl7Y29uc3Qgbz1uZXcoT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jb25zdHJ1Y3Rvcih0Lmxlbmd0aCk7bi5zZXQodCxvKTtmb3IobGV0IGE9MDthPHQubGVuZ3RoO2ErKylvW2FdPXJoKHRbYV0sYSxyLG4scyk7cmV0dXJuIG99aWYodCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHx0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI8InUiJiZ0IGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXIpcmV0dXJuIHQuc2xpY2UoMCk7aWYodCBpbnN0YW5jZW9mIERhdGFWaWV3KXtjb25zdCBvPW5ldyBEYXRhVmlldyh0LmJ1ZmZlci5zbGljZSgwKSx0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKTtyZXR1cm4gbi5zZXQodCxvKSxHbChvLHQscixuLHMpLG99aWYodHlwZW9mIEZpbGU8InUiJiZ0IGluc3RhbmNlb2YgRmlsZSl7Y29uc3Qgbz1uZXcgRmlsZShbdF0sdC5uYW1lLHt0eXBlOnQudHlwZX0pO3JldHVybiBuLnNldCh0LG8pLEdsKG8sdCxyLG4scyksb31pZih0IGluc3RhbmNlb2YgQmxvYil7Y29uc3Qgbz1uZXcgQmxvYihbdF0se3R5cGU6dC50eXBlfSk7cmV0dXJuIG4uc2V0KHQsbyksR2wobyx0LHIsbixzKSxvfWlmKHQgaW5zdGFuY2VvZiBFcnJvcil7Y29uc3Qgbz1uZXcgdC5jb25zdHJ1Y3RvcjtyZXR1cm4gbi5zZXQodCxvKSxvLm1lc3NhZ2U9dC5tZXNzYWdlLG8ubmFtZT10Lm5hbWUsby5zdGFjaz10LnN0YWNrLG8uY2F1c2U9dC5jYXVzZSxHbChvLHQscixuLHMpLG99aWYodHlwZW9mIHQ9PSJvYmplY3QiJiZ6dWUodCkpe2NvbnN0IG89T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpO3JldHVybiBuLnNldCh0LG8pLEdsKG8sdCxyLG4scyksb31yZXR1cm4gdH1mdW5jdGlvbiBHbCh0LGUscj10LG4scyl7Y29uc3QgaT1bLi4uT2JqZWN0LmtleXMoZSksLi4udUIoZSldO2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKXtjb25zdCBhPWlbb10sYz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsYSk7KGM9PW51bGx8fGMud3JpdGFibGUpJiYodFthXT1yaChlW2FdLGEscixuLHMpKX19ZnVuY3Rpb24genVlKHQpe3N3aXRjaChkQih0KSl7Y2FzZSBtQjpjYXNlIFR1ZTpjYXNlIEl1ZTpjYXNlIE51ZTpjYXNlIGZCOmNhc2Uga3VlOmNhc2UgVXVlOmNhc2UgRnVlOmNhc2UgRHVlOmNhc2UgQnVlOmNhc2UgTHVlOmNhc2UgU3VlOmNhc2UgcEI6Y2FzZSBSdWU6Y2FzZSB4dWU6Y2FzZSBBdWU6Y2FzZSBoQjpjYXNlIF91ZTpjYXNlIFB1ZTpjYXNlIE91ZTpjYXNlICR1ZTpjYXNlIE11ZTpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBXdWUodCxlKXtyZXR1cm4ganVlKHQsKHIsbixzLGkpPT57aWYodHlwZW9mIHQ9PSJvYmplY3QiKXN3aXRjaChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkpe2Nhc2UgcEI6Y2FzZSBoQjpjYXNlIGZCOntjb25zdCBvPW5ldyB0LmNvbnN0cnVjdG9yKHQ/LnZhbHVlT2YoKSk7cmV0dXJuIEdsKG8sdCksb31jYXNlIG1COntjb25zdCBvPXt9O3JldHVybiBHbChvLHQpLG8ubGVuZ3RoPXQubGVuZ3RoLG9bU3ltYm9sLml0ZXJhdG9yXT10W1N5bWJvbC5pdGVyYXRvcl0sb31kZWZhdWx0OnJldHVybn19KX1mdW5jdGlvbiBDUyh0KXtyZXR1cm4gV3VlKHQpfWZ1bmN0aW9uIHhTKHQpe3JldHVybiB0IT09bnVsbCYmdHlwZW9mIHQ9PSJvYmplY3QiJiZkQih0KT09PSJbb2JqZWN0IEFyZ3VtZW50c10ifWZ1bmN0aW9uIEh1ZSh0KXtyZXR1cm4gSzYodCl9ZnVuY3Rpb24gcXVlKHQpe2lmKHR5cGVvZiB0IT0ib2JqZWN0Inx8dD09bnVsbClyZXR1cm4hMTtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1udWxsKXJldHVybiEwO2lmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSE9PSJbb2JqZWN0IE9iamVjdF0iKXtjb25zdCByPXRbU3ltYm9sLnRvU3RyaW5nVGFnXTtyZXR1cm4gcj09bnVsbHx8IU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxTeW1ib2wudG9TdHJpbmdUYWcpPy53cml0YWJsZT8hMTp0LnRvU3RyaW5nKCk9PT1gW29iamVjdCAke3J9XWB9bGV0IGU9dDtmb3IoO09iamVjdC5nZXRQcm90b3R5cGVPZihlKSE9PW51bGw7KWU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1lfWZ1bmN0aW9uIFZ1ZSh0LC4uLmUpe2NvbnN0IHI9ZS5zbGljZSgwLC0xKSxuPWVbZS5sZW5ndGgtMV07bGV0IHM9dDtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7Y29uc3Qgbz1yW2ldO3M9VXgocyxvLG4sbmV3IE1hcCl9cmV0dXJuIHN9ZnVuY3Rpb24gVXgodCxlLHIsbil7aWYoRzYodCkmJih0PU9iamVjdCh0KSksZT09bnVsbHx8dHlwZW9mIGUhPSJvYmplY3QiKXJldHVybiB0O2lmKG4uaGFzKGUpKXJldHVybiBDdWUobi5nZXQoZSkpO2lmKG4uc2V0KGUsdCksQXJyYXkuaXNBcnJheShlKSl7ZT1lLnNsaWNlKCk7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspZVtpXT1lW2ldPz92b2lkIDB9Y29uc3Qgcz1bLi4uT2JqZWN0LmtleXMoZSksLi4udUIoZSldO2ZvcihsZXQgaT0wO2k8cy5sZW5ndGg7aSsrKXtjb25zdCBvPXNbaV07bGV0IGE9ZVtvXSxjPXRbb107aWYoeFMoYSkmJihhPXsuLi5hfSkseFMoYykmJihjPXsuLi5jfSksdHlwZW9mIEJ1ZmZlcjwidSImJkJ1ZmZlci5pc0J1ZmZlcihhKSYmKGE9Q1MoYSkpLEFycmF5LmlzQXJyYXkoYSkpaWYodHlwZW9mIGM9PSJvYmplY3QiJiZjIT1udWxsKXtjb25zdCBkPVtdLHU9UmVmbGVjdC5vd25LZXlzKGMpO2ZvcihsZXQgaD0wO2g8dS5sZW5ndGg7aCsrKXtjb25zdCBwPXVbaF07ZFtwXT1jW3BdfWM9ZH1lbHNlIGM9W107Y29uc3QgbD1yKGMsYSxvLHQsZSxuKTtsIT1udWxsP3Rbb109bDpBcnJheS5pc0FycmF5KGEpfHxFUyhjKSYmRVMoYSk/dFtvXT1VeChjLGEscixuKTpjPT1udWxsJiZxdWUoYSk/dFtvXT1VeCh7fSxhLHIsbik6Yz09bnVsbCYmSHVlKGEpP3Rbb109Q1MoYSk6KGM9PT12b2lkIDB8fGEhPT12b2lkIDApJiYodFtvXT1hKX1yZXR1cm4gdH1mdW5jdGlvbiBHdWUodCwuLi5lKXtyZXR1cm4gVnVlKHQsLi4uZSxFdWUpfXZhciBLdWU9T2JqZWN0LmRlZmluZVByb3BlcnR5LFp1ZT1PYmplY3QuZGVmaW5lUHJvcGVydGllcyxZdWU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMsX1M9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxKdWU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxYdWU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxrUz0odCxlLHIpPT5lIGluIHQ/S3VlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixOZz0odCxlKT0+e2Zvcih2YXIgciBpbiBlfHwoZT17fSkpSnVlLmNhbGwoZSxyKSYma1ModCxyLGVbcl0pO2lmKF9TKWZvcih2YXIgciBvZiBfUyhlKSlYdWUuY2FsbChlLHIpJiZrUyh0LHIsZVtyXSk7cmV0dXJuIHR9LFF1ZT0odCxlKT0+WnVlKHQsWXVlKGUpKTtmdW5jdGlvbiBUaSh0LGUscil7dmFyIG47Y29uc3Qgcz1jaCh0KTtyZXR1cm4oKG49ZS5ycGNNYXApPT1udWxsP3ZvaWQgMDpuW3MucmVmZXJlbmNlXSl8fGAke2xCfT9jaGFpbklkPSR7cy5uYW1lc3BhY2V9OiR7cy5yZWZlcmVuY2V9JnByb2plY3RJZD0ke3J9YH1mdW5jdGlvbiBlZCh0KXtyZXR1cm4gdC5pbmNsdWRlcygiOiIpP3Quc3BsaXQoIjoiKVsxXTp0fWZ1bmN0aW9uIGdCKHQpe3JldHVybiB0Lm1hcChlPT5gJHtlLnNwbGl0KCI6IilbMF19OiR7ZS5zcGxpdCgiOiIpWzFdfWApfWZ1bmN0aW9uIGVkZSh0LGUpe2NvbnN0IHI9T2JqZWN0LmtleXMoZS5uYW1lc3BhY2VzKS5maWx0ZXIocz0+cy5pbmNsdWRlcyh0KSk7aWYoIXIubGVuZ3RoKXJldHVybltdO2NvbnN0IG49W107cmV0dXJuIHIuZm9yRWFjaChzPT57Y29uc3QgaT1lLm5hbWVzcGFjZXNbc10uYWNjb3VudHM7bi5wdXNoKC4uLmkpfSksbn1mdW5jdGlvbiBjMyh0PXt9LGU9e30pe2NvbnN0IHI9U1ModCksbj1TUyhlKTtyZXR1cm4gR3VlKHIsbil9ZnVuY3Rpb24gU1ModCl7dmFyIGUscixuLHM7Y29uc3QgaT17fTtpZighWTAodCkpcmV0dXJuIGk7Zm9yKGNvbnN0W28sYV1vZiBPYmplY3QuZW50cmllcyh0KSl7Y29uc3QgYz16NihvKT9bb106YS5jaGFpbnMsbD1hLm1ldGhvZHN8fFtdLGQ9YS5ldmVudHN8fFtdLHU9YS5ycGNNYXB8fHt9LGg9WWYobyk7aVtoXT1RdWUoTmcoTmcoe30saVtoXSksYSkse2NoYWluczpGdyhjLChlPWlbaF0pPT1udWxsP3ZvaWQgMDplLmNoYWlucyksbWV0aG9kczpGdyhsLChyPWlbaF0pPT1udWxsP3ZvaWQgMDpyLm1ldGhvZHMpLGV2ZW50czpGdyhkLChuPWlbaF0pPT1udWxsP3ZvaWQgMDpuLmV2ZW50cykscnBjTWFwOk5nKE5nKHt9LHUpLChzPWlbaF0pPT1udWxsP3ZvaWQgMDpzLnJwY01hcCl9KX1yZXR1cm4gaX1mdW5jdGlvbiBBUyh0KXtyZXR1cm4gdC5pbmNsdWRlcygiOiIpP3Quc3BsaXQoIjoiKVsyXTp0fWZ1bmN0aW9uIFRTKHQpe2NvbnN0IGU9e307Zm9yKGNvbnN0W3Isbl1vZiBPYmplY3QuZW50cmllcyh0KSl7Y29uc3Qgcz1uLm1ldGhvZHN8fFtdLGk9bi5ldmVudHN8fFtdLG89bi5hY2NvdW50c3x8W10sYT16NihyKT9bcl06bi5jaGFpbnM/bi5jaGFpbnM6Z0Iobi5hY2NvdW50cyk7ZVtyXT17Y2hhaW5zOmEsbWV0aG9kczpzLGV2ZW50czppLGFjY291bnRzOm99fXJldHVybiBlfWZ1bmN0aW9uIGwzKHQpe3JldHVybiB0eXBlb2YgdD09Im51bWJlciI/dDp0LmluY2x1ZGVzKCIweCIpP3BhcnNlSW50KHQsMTYpOih0PXQuaW5jbHVkZXMoIjoiKT90LnNwbGl0KCI6IilbMV06dCxpc05hTihOdW1iZXIodCkpP3Q6TnVtYmVyKHQpKX1jb25zdCB3Qj17fSxCdD10PT53Qlt0XSx1Mz0odCxlKT0+e3dCW3RdPWV9O3ZhciB0ZGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LHJkZT0odCxlLHIpPT5lIGluIHQ/dGRlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09ciwkZD0odCxlLHIpPT5yZGUodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIG5kZXtjb25zdHJ1Y3RvcihlKXskZCh0aGlzLCJuYW1lIiwicG9sa2Fkb3QiKSwkZCh0aGlzLCJjbGllbnQiKSwkZCh0aGlzLCJodHRwUHJvdmlkZXJzIiksJGQodGhpcywiZXZlbnRzIiksJGQodGhpcywibmFtZXNwYWNlIiksJGQodGhpcywiY2hhaW5JZCIpLHRoaXMubmFtZXNwYWNlPWUubmFtZXNwYWNlLHRoaXMuZXZlbnRzPUJ0KCJldmVudHMiKSx0aGlzLmNsaWVudD1CdCgiY2xpZW50IiksdGhpcy5jaGFpbklkPXRoaXMuZ2V0RGVmYXVsdENoYWluKCksdGhpcy5odHRwUHJvdmlkZXJzPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVycygpfXVwZGF0ZU5hbWVzcGFjZShlKXt0aGlzLm5hbWVzcGFjZT1PYmplY3QuYXNzaWduKHRoaXMubmFtZXNwYWNlLGUpfXJlcXVlc3RBY2NvdW50cygpe3JldHVybiB0aGlzLmdldEFjY291bnRzKCl9Z2V0RGVmYXVsdENoYWluKCl7aWYodGhpcy5jaGFpbklkKXJldHVybiB0aGlzLmNoYWluSWQ7aWYodGhpcy5uYW1lc3BhY2UuZGVmYXVsdENoYWluKXJldHVybiB0aGlzLm5hbWVzcGFjZS5kZWZhdWx0Q2hhaW47Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5jaGFpbnNbMF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDaGFpbklkIG5vdCBmb3VuZCIpO3JldHVybiBlLnNwbGl0KCI6IilbMV19cmVxdWVzdChlKXtyZXR1cm4gdGhpcy5uYW1lc3BhY2UubWV0aG9kcy5pbmNsdWRlcyhlLnJlcXVlc3QubWV0aG9kKT90aGlzLmNsaWVudC5yZXF1ZXN0KGUpOnRoaXMuZ2V0SHR0cFByb3ZpZGVyKCkucmVxdWVzdChlLnJlcXVlc3QpfXNldERlZmF1bHRDaGFpbihlLHIpe3RoaXMuaHR0cFByb3ZpZGVyc1tlXXx8dGhpcy5zZXRIdHRwUHJvdmlkZXIoZSxyKSx0aGlzLmNoYWluSWQ9ZSx0aGlzLmV2ZW50cy5lbWl0KGNzLkRFRkFVTFRfQ0hBSU5fQ0hBTkdFRCxgJHt0aGlzLm5hbWV9OiR7ZX1gKX1nZXRBY2NvdW50cygpe2NvbnN0IGU9dGhpcy5uYW1lc3BhY2UuYWNjb3VudHM7cmV0dXJuIGU/ZS5maWx0ZXIocj0+ci5zcGxpdCgiOiIpWzFdPT09dGhpcy5jaGFpbklkLnRvU3RyaW5nKCkpLm1hcChyPT5yLnNwbGl0KCI6IilbMl0pfHxbXTpbXX1jcmVhdGVIdHRwUHJvdmlkZXJzKCl7Y29uc3QgZT17fTtyZXR1cm4gdGhpcy5uYW1lc3BhY2UuY2hhaW5zLmZvckVhY2gocj0+e3ZhciBuO2NvbnN0IHM9ZWQocik7ZVtzXT10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcihzLChuPXRoaXMubmFtZXNwYWNlLnJwY01hcCk9PW51bGw/dm9pZCAwOm5bcl0pfSksZX1nZXRIdHRwUHJvdmlkZXIoKXtjb25zdCBlPWAke3RoaXMubmFtZX06JHt0aGlzLmNoYWluSWR9YCxyPXRoaXMuaHR0cFByb3ZpZGVyc1tlXTtpZih0eXBlb2Ygcj4idSIpdGhyb3cgbmV3IEVycm9yKGBKU09OLVJQQyBwcm92aWRlciBmb3IgJHtlfSBub3QgZm91bmRgKTtyZXR1cm4gcn1zZXRIdHRwUHJvdmlkZXIoZSxyKXtjb25zdCBuPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVyKGUscik7biYmKHRoaXMuaHR0cFByb3ZpZGVyc1tlXT1uKX1jcmVhdGVIdHRwUHJvdmlkZXIoZSxyKXtjb25zdCBuPXJ8fFRpKGUsdGhpcy5uYW1lc3BhY2UsdGhpcy5jbGllbnQuY29yZS5wcm9qZWN0SWQpO2lmKCFuKXRocm93IG5ldyBFcnJvcihgTm8gUlBDIHVybCBwcm92aWRlZCBmb3IgY2hhaW5JZDogJHtlfWApO3JldHVybiBuZXcgYXMobmV3IHFzKG4sQnQoImRpc2FibGVQcm92aWRlclBpbmciKSkpfX12YXIgaWRlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxzZGU9T2JqZWN0LmRlZmluZVByb3BlcnRpZXMsb2RlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLElTPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsYWRlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksY2RlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsRng9KHQsZSxyKT0+ZSBpbiB0P2lkZSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsUlM9KHQsZSk9Pntmb3IodmFyIHIgaW4gZXx8KGU9e30pKWFkZS5jYWxsKGUscikmJkZ4KHQscixlW3JdKTtpZihJUylmb3IodmFyIHIgb2YgSVMoZSkpY2RlLmNhbGwoZSxyKSYmRngodCxyLGVbcl0pO3JldHVybiB0fSxOUz0odCxlKT0+c2RlKHQsb2RlKGUpKSxNZD0odCxlLHIpPT5GeCh0LHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUscik7Y2xhc3MgbGRle2NvbnN0cnVjdG9yKGUpe01kKHRoaXMsIm5hbWUiLCJlaXAxNTUiKSxNZCh0aGlzLCJjbGllbnQiKSxNZCh0aGlzLCJjaGFpbklkIiksTWQodGhpcywibmFtZXNwYWNlIiksTWQodGhpcywiaHR0cFByb3ZpZGVycyIpLE1kKHRoaXMsImV2ZW50cyIpLHRoaXMubmFtZXNwYWNlPWUubmFtZXNwYWNlLHRoaXMuZXZlbnRzPUJ0KCJldmVudHMiKSx0aGlzLmNsaWVudD1CdCgiY2xpZW50IiksdGhpcy5odHRwUHJvdmlkZXJzPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVycygpLHRoaXMuY2hhaW5JZD1wYXJzZUludCh0aGlzLmdldERlZmF1bHRDaGFpbigpKX1hc3luYyByZXF1ZXN0KGUpe3N3aXRjaChlLnJlcXVlc3QubWV0aG9kKXtjYXNlImV0aF9yZXF1ZXN0QWNjb3VudHMiOnJldHVybiB0aGlzLmdldEFjY291bnRzKCk7Y2FzZSJldGhfYWNjb3VudHMiOnJldHVybiB0aGlzLmdldEFjY291bnRzKCk7Y2FzZSJ3YWxsZXRfc3dpdGNoRXRoZXJldW1DaGFpbiI6cmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlU3dpdGNoQ2hhaW4oZSk7Y2FzZSJldGhfY2hhaW5JZCI6cmV0dXJuIHBhcnNlSW50KHRoaXMuZ2V0RGVmYXVsdENoYWluKCkpO2Nhc2Uid2FsbGV0X2dldENhcGFiaWxpdGllcyI6cmV0dXJuIGF3YWl0IHRoaXMuZ2V0Q2FwYWJpbGl0aWVzKGUpO2Nhc2Uid2FsbGV0X2dldENhbGxzU3RhdHVzIjpyZXR1cm4gYXdhaXQgdGhpcy5nZXRDYWxsU3RhdHVzKGUpfXJldHVybiB0aGlzLm5hbWVzcGFjZS5tZXRob2RzLmluY2x1ZGVzKGUucmVxdWVzdC5tZXRob2QpP2F3YWl0IHRoaXMuY2xpZW50LnJlcXVlc3QoZSk6dGhpcy5nZXRIdHRwUHJvdmlkZXIoKS5yZXF1ZXN0KGUucmVxdWVzdCl9dXBkYXRlTmFtZXNwYWNlKGUpe3RoaXMubmFtZXNwYWNlPU9iamVjdC5hc3NpZ24odGhpcy5uYW1lc3BhY2UsZSl9c2V0RGVmYXVsdENoYWluKGUscil7dGhpcy5odHRwUHJvdmlkZXJzW2VdfHx0aGlzLnNldEh0dHBQcm92aWRlcihwYXJzZUludChlKSxyKSx0aGlzLmNoYWluSWQ9cGFyc2VJbnQoZSksdGhpcy5ldmVudHMuZW1pdChjcy5ERUZBVUxUX0NIQUlOX0NIQU5HRUQsYCR7dGhpcy5uYW1lfToke2V9YCl9cmVxdWVzdEFjY291bnRzKCl7cmV0dXJuIHRoaXMuZ2V0QWNjb3VudHMoKX1nZXREZWZhdWx0Q2hhaW4oKXtpZih0aGlzLmNoYWluSWQpcmV0dXJuIHRoaXMuY2hhaW5JZC50b1N0cmluZygpO2lmKHRoaXMubmFtZXNwYWNlLmRlZmF1bHRDaGFpbilyZXR1cm4gdGhpcy5uYW1lc3BhY2UuZGVmYXVsdENoYWluO2NvbnN0IGU9dGhpcy5uYW1lc3BhY2UuY2hhaW5zWzBdO2lmKCFlKXRocm93IG5ldyBFcnJvcigiQ2hhaW5JZCBub3QgZm91bmQiKTtyZXR1cm4gZS5zcGxpdCgiOiIpWzFdfWNyZWF0ZUh0dHBQcm92aWRlcihlLHIpe2NvbnN0IG49cnx8VGkoYCR7dGhpcy5uYW1lfToke2V9YCx0aGlzLm5hbWVzcGFjZSx0aGlzLmNsaWVudC5jb3JlLnByb2plY3RJZCk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBObyBSUEMgdXJsIHByb3ZpZGVkIGZvciBjaGFpbklkOiAke2V9YCk7cmV0dXJuIG5ldyBhcyhuZXcgcXMobixCdCgiZGlzYWJsZVByb3ZpZGVyUGluZyIpKSl9c2V0SHR0cFByb3ZpZGVyKGUscil7Y29uc3Qgbj10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcihlLHIpO24mJih0aGlzLmh0dHBQcm92aWRlcnNbZV09bil9Y3JlYXRlSHR0cFByb3ZpZGVycygpe2NvbnN0IGU9e307cmV0dXJuIHRoaXMubmFtZXNwYWNlLmNoYWlucy5mb3JFYWNoKHI9Pnt2YXIgbjtjb25zdCBzPXBhcnNlSW50KGVkKHIpKTtlW3NdPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVyKHMsKG49dGhpcy5uYW1lc3BhY2UucnBjTWFwKT09bnVsbD92b2lkIDA6bltyXSl9KSxlfWdldEFjY291bnRzKCl7Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5hY2NvdW50cztyZXR1cm4gZT9bLi4ubmV3IFNldChlLmZpbHRlcihyPT5yLnNwbGl0KCI6IilbMV09PT10aGlzLmNoYWluSWQudG9TdHJpbmcoKSkubWFwKHI9PnIuc3BsaXQoIjoiKVsyXSkpXTpbXX1nZXRIdHRwUHJvdmlkZXIoKXtjb25zdCBlPXRoaXMuY2hhaW5JZCxyPXRoaXMuaHR0cFByb3ZpZGVyc1tlXTtpZih0eXBlb2Ygcj4idSIpdGhyb3cgbmV3IEVycm9yKGBKU09OLVJQQyBwcm92aWRlciBmb3IgJHtlfSBub3QgZm91bmRgKTtyZXR1cm4gcn1hc3luYyBoYW5kbGVTd2l0Y2hDaGFpbihlKXt2YXIgcixuO2xldCBzPWUucmVxdWVzdC5wYXJhbXM/KHI9ZS5yZXF1ZXN0LnBhcmFtc1swXSk9PW51bGw/dm9pZCAwOnIuY2hhaW5JZDoiMHgwIjtzPXMuc3RhcnRzV2l0aCgiMHgiKT9zOmAweCR7c31gO2NvbnN0IGk9cGFyc2VJbnQocywxNik7aWYodGhpcy5pc0NoYWluQXBwcm92ZWQoaSkpdGhpcy5zZXREZWZhdWx0Q2hhaW4oYCR7aX1gKTtlbHNlIGlmKHRoaXMubmFtZXNwYWNlLm1ldGhvZHMuaW5jbHVkZXMoIndhbGxldF9zd2l0Y2hFdGhlcmV1bUNoYWluIikpYXdhaXQgdGhpcy5jbGllbnQucmVxdWVzdCh7dG9waWM6ZS50b3BpYyxyZXF1ZXN0OnttZXRob2Q6ZS5yZXF1ZXN0Lm1ldGhvZCxwYXJhbXM6W3tjaGFpbklkOnN9XX0sY2hhaW5JZDoobj10aGlzLm5hbWVzcGFjZS5jaGFpbnMpPT1udWxsP3ZvaWQgMDpuWzBdfSksdGhpcy5zZXREZWZhdWx0Q2hhaW4oYCR7aX1gKTtlbHNlIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHN3aXRjaCB0byBjaGFpbiAnZWlwMTU1OiR7aX0nLiBUaGUgY2hhaW4gaXMgbm90IGFwcHJvdmVkIG9yIHRoZSB3YWxsZXQgZG9lcyBub3Qgc3VwcG9ydCAnd2FsbGV0X3N3aXRjaEV0aGVyZXVtQ2hhaW4nIG1ldGhvZC5gKTtyZXR1cm4gbnVsbH1pc0NoYWluQXBwcm92ZWQoZSl7cmV0dXJuIHRoaXMubmFtZXNwYWNlLmNoYWlucy5pbmNsdWRlcyhgJHt0aGlzLm5hbWV9OiR7ZX1gKX1hc3luYyBnZXRDYXBhYmlsaXRpZXMoZSl7dmFyIHIsbixzO2NvbnN0IGk9KG49KHI9ZS5yZXF1ZXN0KT09bnVsbD92b2lkIDA6ci5wYXJhbXMpPT1udWxsP3ZvaWQgMDpuWzBdO2lmKCFpKXRocm93IG5ldyBFcnJvcigiTWlzc2luZyBhZGRyZXNzIHBhcmFtZXRlciBpbiBgd2FsbGV0X2dldENhcGFiaWxpdGllc2AgcmVxdWVzdCIpO2NvbnN0IG89dGhpcy5jbGllbnQuc2Vzc2lvbi5nZXQoZS50b3BpYyksYT0oKHM9bz8uc2Vzc2lvblByb3BlcnRpZXMpPT1udWxsP3ZvaWQgMDpzLmNhcGFiaWxpdGllcyl8fHt9O2lmKGEhPW51bGwmJmFbaV0pcmV0dXJuIGE/LltpXTtjb25zdCBjPWF3YWl0IHRoaXMuY2xpZW50LnJlcXVlc3QoZSk7dHJ5e2F3YWl0IHRoaXMuY2xpZW50LnNlc3Npb24udXBkYXRlKGUudG9waWMse3Nlc3Npb25Qcm9wZXJ0aWVzOk5TKFJTKHt9LG8uc2Vzc2lvblByb3BlcnRpZXN8fHt9KSx7Y2FwYWJpbGl0aWVzOk5TKFJTKHt9LGF8fHt9KSx7W2ldOmN9KX0pfSl9Y2F0Y2gobCl7Y29uc29sZS53YXJuKCJGYWlsZWQgdG8gdXBkYXRlIHNlc3Npb24gd2l0aCBjYXBhYmlsaXRpZXMiLGwpfXJldHVybiBjfWFzeW5jIGdldENhbGxTdGF0dXMoZSl7dmFyIHIsbjtjb25zdCBzPXRoaXMuY2xpZW50LnNlc3Npb24uZ2V0KGUudG9waWMpLGk9KHI9cy5zZXNzaW9uUHJvcGVydGllcyk9PW51bGw/dm9pZCAwOnIuYnVuZGxlcl9uYW1lO2lmKGkpe2NvbnN0IGE9dGhpcy5nZXRCdW5kbGVyVXJsKGUuY2hhaW5JZCxpKTt0cnl7cmV0dXJuIGF3YWl0IHRoaXMuZ2V0VXNlck9wZXJhdGlvblJlY2VpcHQoYSxlKX1jYXRjaChjKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBmZXRjaCBjYWxsIHN0YXR1cyBmcm9tIGJ1bmRsZXIiLGMsYSl9fWNvbnN0IG89KG49cy5zZXNzaW9uUHJvcGVydGllcyk9PW51bGw/dm9pZCAwOm4uYnVuZGxlcl91cmw7aWYobyl0cnl7cmV0dXJuIGF3YWl0IHRoaXMuZ2V0VXNlck9wZXJhdGlvblJlY2VpcHQobyxlKX1jYXRjaChhKXtjb25zb2xlLndhcm4oIkZhaWxlZCB0byBmZXRjaCBjYWxsIHN0YXR1cyBmcm9tIGN1c3RvbSBidW5kbGVyIixhLG8pfWlmKHRoaXMubmFtZXNwYWNlLm1ldGhvZHMuaW5jbHVkZXMoZS5yZXF1ZXN0Lm1ldGhvZCkpcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50LnJlcXVlc3QoZSk7dGhyb3cgbmV3IEVycm9yKCJGZXRjaGluZyBjYWxsIHN0YXR1cyBub3QgYXBwcm92ZWQgYnkgdGhlIHdhbGxldC4iKX1hc3luYyBnZXRVc2VyT3BlcmF0aW9uUmVjZWlwdChlLHIpe3ZhciBuO2NvbnN0IHM9bmV3IFVSTChlKSxpPWF3YWl0IGZldGNoKHMse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxib2R5OkpTT04uc3RyaW5naWZ5KGxjKCJldGhfZ2V0VXNlck9wZXJhdGlvblJlY2VpcHQiLFsobj1yLnJlcXVlc3QucGFyYW1zKT09bnVsbD92b2lkIDA6blswXV0pKX0pO2lmKCFpLm9rKXRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGZldGNoIHVzZXIgb3BlcmF0aW9uIHJlY2VpcHQgLSAke2kuc3RhdHVzfWApO3JldHVybiBhd2FpdCBpLmpzb24oKX1nZXRCdW5kbGVyVXJsKGUscil7cmV0dXJuYCR7dnVlfT9wcm9qZWN0SWQ9JHt0aGlzLmNsaWVudC5jb3JlLnByb2plY3RJZH0mY2hhaW5JZD0ke2V9JmJ1bmRsZXI9JHtyfWB9fXZhciB1ZGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LGRkZT0odCxlLHIpPT5lIGluIHQ/dWRlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixEZD0odCxlLHIpPT5kZGUodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIGhkZXtjb25zdHJ1Y3RvcihlKXtEZCh0aGlzLCJuYW1lIiwic29sYW5hIiksRGQodGhpcywiY2xpZW50IiksRGQodGhpcywiaHR0cFByb3ZpZGVycyIpLERkKHRoaXMsImV2ZW50cyIpLERkKHRoaXMsIm5hbWVzcGFjZSIpLERkKHRoaXMsImNoYWluSWQiKSx0aGlzLm5hbWVzcGFjZT1lLm5hbWVzcGFjZSx0aGlzLmV2ZW50cz1CdCgiZXZlbnRzIiksdGhpcy5jbGllbnQ9QnQoImNsaWVudCIpLHRoaXMuY2hhaW5JZD10aGlzLmdldERlZmF1bHRDaGFpbigpLHRoaXMuaHR0cFByb3ZpZGVycz10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcnMoKX11cGRhdGVOYW1lc3BhY2UoZSl7dGhpcy5uYW1lc3BhY2U9T2JqZWN0LmFzc2lnbih0aGlzLm5hbWVzcGFjZSxlKX1yZXF1ZXN0QWNjb3VudHMoKXtyZXR1cm4gdGhpcy5nZXRBY2NvdW50cygpfXJlcXVlc3QoZSl7cmV0dXJuIHRoaXMubmFtZXNwYWNlLm1ldGhvZHMuaW5jbHVkZXMoZS5yZXF1ZXN0Lm1ldGhvZCk/dGhpcy5jbGllbnQucmVxdWVzdChlKTp0aGlzLmdldEh0dHBQcm92aWRlcigpLnJlcXVlc3QoZS5yZXF1ZXN0KX1zZXREZWZhdWx0Q2hhaW4oZSxyKXt0aGlzLmh0dHBQcm92aWRlcnNbZV18fHRoaXMuc2V0SHR0cFByb3ZpZGVyKGUsciksdGhpcy5jaGFpbklkPWUsdGhpcy5ldmVudHMuZW1pdChjcy5ERUZBVUxUX0NIQUlOX0NIQU5HRUQsYCR7dGhpcy5uYW1lfToke2V9YCl9Z2V0RGVmYXVsdENoYWluKCl7aWYodGhpcy5jaGFpbklkKXJldHVybiB0aGlzLmNoYWluSWQ7aWYodGhpcy5uYW1lc3BhY2UuZGVmYXVsdENoYWluKXJldHVybiB0aGlzLm5hbWVzcGFjZS5kZWZhdWx0Q2hhaW47Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5jaGFpbnNbMF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDaGFpbklkIG5vdCBmb3VuZCIpO3JldHVybiBlLnNwbGl0KCI6IilbMV19Z2V0QWNjb3VudHMoKXtjb25zdCBlPXRoaXMubmFtZXNwYWNlLmFjY291bnRzO3JldHVybiBlP1suLi5uZXcgU2V0KGUuZmlsdGVyKHI9PnIuc3BsaXQoIjoiKVsxXT09PXRoaXMuY2hhaW5JZC50b1N0cmluZygpKS5tYXAocj0+ci5zcGxpdCgiOiIpWzJdKSldOltdfWNyZWF0ZUh0dHBQcm92aWRlcnMoKXtjb25zdCBlPXt9O3JldHVybiB0aGlzLm5hbWVzcGFjZS5jaGFpbnMuZm9yRWFjaChyPT57dmFyIG47Y29uc3Qgcz1lZChyKTtlW3NdPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVyKHMsKG49dGhpcy5uYW1lc3BhY2UucnBjTWFwKT09bnVsbD92b2lkIDA6bltyXSl9KSxlfWdldEh0dHBQcm92aWRlcigpe2NvbnN0IGU9YCR7dGhpcy5uYW1lfToke3RoaXMuY2hhaW5JZH1gLHI9dGhpcy5odHRwUHJvdmlkZXJzW2VdO2lmKHR5cGVvZiByPiJ1Iil0aHJvdyBuZXcgRXJyb3IoYEpTT04tUlBDIHByb3ZpZGVyIGZvciAke2V9IG5vdCBmb3VuZGApO3JldHVybiByfXNldEh0dHBQcm92aWRlcihlLHIpe2NvbnN0IG49dGhpcy5jcmVhdGVIdHRwUHJvdmlkZXIoZSxyKTtuJiYodGhpcy5odHRwUHJvdmlkZXJzW2VdPW4pfWNyZWF0ZUh0dHBQcm92aWRlcihlLHIpe2NvbnN0IG49cnx8VGkoZSx0aGlzLm5hbWVzcGFjZSx0aGlzLmNsaWVudC5jb3JlLnByb2plY3RJZCk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBObyBSUEMgdXJsIHByb3ZpZGVkIGZvciBjaGFpbklkOiAke2V9YCk7cmV0dXJuIG5ldyBhcyhuZXcgcXMobixCdCgiZGlzYWJsZVByb3ZpZGVyUGluZyIpKSl9fXZhciBwZGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LGZkZT0odCxlLHIpPT5lIGluIHQ/cGRlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixCZD0odCxlLHIpPT5mZGUodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIG1kZXtjb25zdHJ1Y3RvcihlKXtCZCh0aGlzLCJuYW1lIiwiY29zbW9zIiksQmQodGhpcywiY2xpZW50IiksQmQodGhpcywiaHR0cFByb3ZpZGVycyIpLEJkKHRoaXMsImV2ZW50cyIpLEJkKHRoaXMsIm5hbWVzcGFjZSIpLEJkKHRoaXMsImNoYWluSWQiKSx0aGlzLm5hbWVzcGFjZT1lLm5hbWVzcGFjZSx0aGlzLmV2ZW50cz1CdCgiZXZlbnRzIiksdGhpcy5jbGllbnQ9QnQoImNsaWVudCIpLHRoaXMuY2hhaW5JZD10aGlzLmdldERlZmF1bHRDaGFpbigpLHRoaXMuaHR0cFByb3ZpZGVycz10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcnMoKX11cGRhdGVOYW1lc3BhY2UoZSl7dGhpcy5uYW1lc3BhY2U9T2JqZWN0LmFzc2lnbih0aGlzLm5hbWVzcGFjZSxlKX1yZXF1ZXN0QWNjb3VudHMoKXtyZXR1cm4gdGhpcy5nZXRBY2NvdW50cygpfWdldERlZmF1bHRDaGFpbigpe2lmKHRoaXMuY2hhaW5JZClyZXR1cm4gdGhpcy5jaGFpbklkO2lmKHRoaXMubmFtZXNwYWNlLmRlZmF1bHRDaGFpbilyZXR1cm4gdGhpcy5uYW1lc3BhY2UuZGVmYXVsdENoYWluO2NvbnN0IGU9dGhpcy5uYW1lc3BhY2UuY2hhaW5zWzBdO2lmKCFlKXRocm93IG5ldyBFcnJvcigiQ2hhaW5JZCBub3QgZm91bmQiKTtyZXR1cm4gZS5zcGxpdCgiOiIpWzFdfXJlcXVlc3QoZSl7cmV0dXJuIHRoaXMubmFtZXNwYWNlLm1ldGhvZHMuaW5jbHVkZXMoZS5yZXF1ZXN0Lm1ldGhvZCk/dGhpcy5jbGllbnQucmVxdWVzdChlKTp0aGlzLmdldEh0dHBQcm92aWRlcigpLnJlcXVlc3QoZS5yZXF1ZXN0KX1zZXREZWZhdWx0Q2hhaW4oZSxyKXt0aGlzLmh0dHBQcm92aWRlcnNbZV18fHRoaXMuc2V0SHR0cFByb3ZpZGVyKGUsciksdGhpcy5jaGFpbklkPWUsdGhpcy5ldmVudHMuZW1pdChjcy5ERUZBVUxUX0NIQUlOX0NIQU5HRUQsYCR7dGhpcy5uYW1lfToke3RoaXMuY2hhaW5JZH1gKX1nZXRBY2NvdW50cygpe2NvbnN0IGU9dGhpcy5uYW1lc3BhY2UuYWNjb3VudHM7cmV0dXJuIGU/Wy4uLm5ldyBTZXQoZS5maWx0ZXIocj0+ci5zcGxpdCgiOiIpWzFdPT09dGhpcy5jaGFpbklkLnRvU3RyaW5nKCkpLm1hcChyPT5yLnNwbGl0KCI6IilbMl0pKV06W119Y3JlYXRlSHR0cFByb3ZpZGVycygpe2NvbnN0IGU9e307cmV0dXJuIHRoaXMubmFtZXNwYWNlLmNoYWlucy5mb3JFYWNoKHI9Pnt2YXIgbjtjb25zdCBzPWVkKHIpO2Vbc109dGhpcy5jcmVhdGVIdHRwUHJvdmlkZXIocywobj10aGlzLm5hbWVzcGFjZS5ycGNNYXApPT1udWxsP3ZvaWQgMDpuW3JdKX0pLGV9Z2V0SHR0cFByb3ZpZGVyKCl7Y29uc3QgZT1gJHt0aGlzLm5hbWV9OiR7dGhpcy5jaGFpbklkfWAscj10aGlzLmh0dHBQcm92aWRlcnNbZV07aWYodHlwZW9mIHI+InUiKXRocm93IG5ldyBFcnJvcihgSlNPTi1SUEMgcHJvdmlkZXIgZm9yICR7ZX0gbm90IGZvdW5kYCk7cmV0dXJuIHJ9c2V0SHR0cFByb3ZpZGVyKGUscil7Y29uc3Qgbj10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcihlLHIpO24mJih0aGlzLmh0dHBQcm92aWRlcnNbZV09bil9Y3JlYXRlSHR0cFByb3ZpZGVyKGUscil7Y29uc3Qgbj1yfHxUaShlLHRoaXMubmFtZXNwYWNlLHRoaXMuY2xpZW50LmNvcmUucHJvamVjdElkKTtpZighbil0aHJvdyBuZXcgRXJyb3IoYE5vIFJQQyB1cmwgcHJvdmlkZWQgZm9yIGNoYWluSWQ6ICR7ZX1gKTtyZXR1cm4gbmV3IGFzKG5ldyBxcyhuLEJ0KCJkaXNhYmxlUHJvdmlkZXJQaW5nIikpKX19dmFyIGdkZT1PYmplY3QuZGVmaW5lUHJvcGVydHksd2RlPSh0LGUscik9PmUgaW4gdD9nZGUodCxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpyfSk6dFtlXT1yLExkPSh0LGUscik9PndkZSh0LHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUscik7Y2xhc3MgYmRle2NvbnN0cnVjdG9yKGUpe0xkKHRoaXMsIm5hbWUiLCJhbGdvcmFuZCIpLExkKHRoaXMsImNsaWVudCIpLExkKHRoaXMsImh0dHBQcm92aWRlcnMiKSxMZCh0aGlzLCJldmVudHMiKSxMZCh0aGlzLCJuYW1lc3BhY2UiKSxMZCh0aGlzLCJjaGFpbklkIiksdGhpcy5uYW1lc3BhY2U9ZS5uYW1lc3BhY2UsdGhpcy5ldmVudHM9QnQoImV2ZW50cyIpLHRoaXMuY2xpZW50PUJ0KCJjbGllbnQiKSx0aGlzLmNoYWluSWQ9dGhpcy5nZXREZWZhdWx0Q2hhaW4oKSx0aGlzLmh0dHBQcm92aWRlcnM9dGhpcy5jcmVhdGVIdHRwUHJvdmlkZXJzKCl9dXBkYXRlTmFtZXNwYWNlKGUpe3RoaXMubmFtZXNwYWNlPU9iamVjdC5hc3NpZ24odGhpcy5uYW1lc3BhY2UsZSl9cmVxdWVzdEFjY291bnRzKCl7cmV0dXJuIHRoaXMuZ2V0QWNjb3VudHMoKX1yZXF1ZXN0KGUpe3JldHVybiB0aGlzLm5hbWVzcGFjZS5tZXRob2RzLmluY2x1ZGVzKGUucmVxdWVzdC5tZXRob2QpP3RoaXMuY2xpZW50LnJlcXVlc3QoZSk6dGhpcy5nZXRIdHRwUHJvdmlkZXIoKS5yZXF1ZXN0KGUucmVxdWVzdCl9c2V0RGVmYXVsdENoYWluKGUscil7aWYoIXRoaXMuaHR0cFByb3ZpZGVyc1tlXSl7Y29uc3Qgbj1yfHxUaShgJHt0aGlzLm5hbWV9OiR7ZX1gLHRoaXMubmFtZXNwYWNlLHRoaXMuY2xpZW50LmNvcmUucHJvamVjdElkKTtpZighbil0aHJvdyBuZXcgRXJyb3IoYE5vIFJQQyB1cmwgcHJvdmlkZWQgZm9yIGNoYWluSWQ6ICR7ZX1gKTt0aGlzLnNldEh0dHBQcm92aWRlcihlLG4pfXRoaXMuY2hhaW5JZD1lLHRoaXMuZXZlbnRzLmVtaXQoY3MuREVGQVVMVF9DSEFJTl9DSEFOR0VELGAke3RoaXMubmFtZX06JHt0aGlzLmNoYWluSWR9YCl9Z2V0RGVmYXVsdENoYWluKCl7aWYodGhpcy5jaGFpbklkKXJldHVybiB0aGlzLmNoYWluSWQ7aWYodGhpcy5uYW1lc3BhY2UuZGVmYXVsdENoYWluKXJldHVybiB0aGlzLm5hbWVzcGFjZS5kZWZhdWx0Q2hhaW47Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5jaGFpbnNbMF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDaGFpbklkIG5vdCBmb3VuZCIpO3JldHVybiBlLnNwbGl0KCI6IilbMV19Z2V0QWNjb3VudHMoKXtjb25zdCBlPXRoaXMubmFtZXNwYWNlLmFjY291bnRzO3JldHVybiBlP1suLi5uZXcgU2V0KGUuZmlsdGVyKHI9PnIuc3BsaXQoIjoiKVsxXT09PXRoaXMuY2hhaW5JZC50b1N0cmluZygpKS5tYXAocj0+ci5zcGxpdCgiOiIpWzJdKSldOltdfWNyZWF0ZUh0dHBQcm92aWRlcnMoKXtjb25zdCBlPXt9O3JldHVybiB0aGlzLm5hbWVzcGFjZS5jaGFpbnMuZm9yRWFjaChyPT57dmFyIG47ZVtyXT10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcihyLChuPXRoaXMubmFtZXNwYWNlLnJwY01hcCk9PW51bGw/dm9pZCAwOm5bcl0pfSksZX1nZXRIdHRwUHJvdmlkZXIoKXtjb25zdCBlPWAke3RoaXMubmFtZX06JHt0aGlzLmNoYWluSWR9YCxyPXRoaXMuaHR0cFByb3ZpZGVyc1tlXTtpZih0eXBlb2Ygcj4idSIpdGhyb3cgbmV3IEVycm9yKGBKU09OLVJQQyBwcm92aWRlciBmb3IgJHtlfSBub3QgZm91bmRgKTtyZXR1cm4gcn1zZXRIdHRwUHJvdmlkZXIoZSxyKXtjb25zdCBuPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVyKGUscik7biYmKHRoaXMuaHR0cFByb3ZpZGVyc1tlXT1uKX1jcmVhdGVIdHRwUHJvdmlkZXIoZSxyKXtjb25zdCBuPXJ8fFRpKGUsdGhpcy5uYW1lc3BhY2UsdGhpcy5jbGllbnQuY29yZS5wcm9qZWN0SWQpO3JldHVybiB0eXBlb2Ygbj4idSI/dm9pZCAwOm5ldyBhcyhuZXcgcXMobixCdCgiZGlzYWJsZVByb3ZpZGVyUGluZyIpKSl9fXZhciB5ZGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LHZkZT0odCxlLHIpPT5lIGluIHQ/eWRlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixVZD0odCxlLHIpPT52ZGUodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIEVkZXtjb25zdHJ1Y3RvcihlKXtVZCh0aGlzLCJuYW1lIiwiY2lwMzQiKSxVZCh0aGlzLCJjbGllbnQiKSxVZCh0aGlzLCJodHRwUHJvdmlkZXJzIiksVWQodGhpcywiZXZlbnRzIiksVWQodGhpcywibmFtZXNwYWNlIiksVWQodGhpcywiY2hhaW5JZCIpLHRoaXMubmFtZXNwYWNlPWUubmFtZXNwYWNlLHRoaXMuZXZlbnRzPUJ0KCJldmVudHMiKSx0aGlzLmNsaWVudD1CdCgiY2xpZW50IiksdGhpcy5jaGFpbklkPXRoaXMuZ2V0RGVmYXVsdENoYWluKCksdGhpcy5odHRwUHJvdmlkZXJzPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVycygpfXVwZGF0ZU5hbWVzcGFjZShlKXt0aGlzLm5hbWVzcGFjZT1PYmplY3QuYXNzaWduKHRoaXMubmFtZXNwYWNlLGUpfXJlcXVlc3RBY2NvdW50cygpe3JldHVybiB0aGlzLmdldEFjY291bnRzKCl9Z2V0RGVmYXVsdENoYWluKCl7aWYodGhpcy5jaGFpbklkKXJldHVybiB0aGlzLmNoYWluSWQ7aWYodGhpcy5uYW1lc3BhY2UuZGVmYXVsdENoYWluKXJldHVybiB0aGlzLm5hbWVzcGFjZS5kZWZhdWx0Q2hhaW47Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5jaGFpbnNbMF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDaGFpbklkIG5vdCBmb3VuZCIpO3JldHVybiBlLnNwbGl0KCI6IilbMV19cmVxdWVzdChlKXtyZXR1cm4gdGhpcy5uYW1lc3BhY2UubWV0aG9kcy5pbmNsdWRlcyhlLnJlcXVlc3QubWV0aG9kKT90aGlzLmNsaWVudC5yZXF1ZXN0KGUpOnRoaXMuZ2V0SHR0cFByb3ZpZGVyKCkucmVxdWVzdChlLnJlcXVlc3QpfXNldERlZmF1bHRDaGFpbihlLHIpe3RoaXMuaHR0cFByb3ZpZGVyc1tlXXx8dGhpcy5zZXRIdHRwUHJvdmlkZXIoZSxyKSx0aGlzLmNoYWluSWQ9ZSx0aGlzLmV2ZW50cy5lbWl0KGNzLkRFRkFVTFRfQ0hBSU5fQ0hBTkdFRCxgJHt0aGlzLm5hbWV9OiR7dGhpcy5jaGFpbklkfWApfWdldEFjY291bnRzKCl7Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5hY2NvdW50cztyZXR1cm4gZT9bLi4ubmV3IFNldChlLmZpbHRlcihyPT5yLnNwbGl0KCI6IilbMV09PT10aGlzLmNoYWluSWQudG9TdHJpbmcoKSkubWFwKHI9PnIuc3BsaXQoIjoiKVsyXSkpXTpbXX1jcmVhdGVIdHRwUHJvdmlkZXJzKCl7Y29uc3QgZT17fTtyZXR1cm4gdGhpcy5uYW1lc3BhY2UuY2hhaW5zLmZvckVhY2gocj0+e2NvbnN0IG49dGhpcy5nZXRDYXJkYW5vUlBDVXJsKHIpLHM9ZWQocik7ZVtzXT10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcihzLG4pfSksZX1nZXRIdHRwUHJvdmlkZXIoKXtjb25zdCBlPWAke3RoaXMubmFtZX06JHt0aGlzLmNoYWluSWR9YCxyPXRoaXMuaHR0cFByb3ZpZGVyc1tlXTtpZih0eXBlb2Ygcj4idSIpdGhyb3cgbmV3IEVycm9yKGBKU09OLVJQQyBwcm92aWRlciBmb3IgJHtlfSBub3QgZm91bmRgKTtyZXR1cm4gcn1nZXRDYXJkYW5vUlBDVXJsKGUpe2NvbnN0IHI9dGhpcy5uYW1lc3BhY2UucnBjTWFwO2lmKHIpcmV0dXJuIHJbZV19c2V0SHR0cFByb3ZpZGVyKGUscil7Y29uc3Qgbj10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcihlLHIpO24mJih0aGlzLmh0dHBQcm92aWRlcnNbZV09bil9Y3JlYXRlSHR0cFByb3ZpZGVyKGUscil7Y29uc3Qgbj1yfHx0aGlzLmdldENhcmRhbm9SUENVcmwoZSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBObyBSUEMgdXJsIHByb3ZpZGVkIGZvciBjaGFpbklkOiAke2V9YCk7cmV0dXJuIG5ldyBhcyhuZXcgcXMobixCdCgiZGlzYWJsZVByb3ZpZGVyUGluZyIpKSl9fXZhciBDZGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LHhkZT0odCxlLHIpPT5lIGluIHQ/Q2RlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixGZD0odCxlLHIpPT54ZGUodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIF9kZXtjb25zdHJ1Y3RvcihlKXtGZCh0aGlzLCJuYW1lIiwiZWxyb25kIiksRmQodGhpcywiY2xpZW50IiksRmQodGhpcywiaHR0cFByb3ZpZGVycyIpLEZkKHRoaXMsImV2ZW50cyIpLEZkKHRoaXMsIm5hbWVzcGFjZSIpLEZkKHRoaXMsImNoYWluSWQiKSx0aGlzLm5hbWVzcGFjZT1lLm5hbWVzcGFjZSx0aGlzLmV2ZW50cz1CdCgiZXZlbnRzIiksdGhpcy5jbGllbnQ9QnQoImNsaWVudCIpLHRoaXMuY2hhaW5JZD10aGlzLmdldERlZmF1bHRDaGFpbigpLHRoaXMuaHR0cFByb3ZpZGVycz10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcnMoKX11cGRhdGVOYW1lc3BhY2UoZSl7dGhpcy5uYW1lc3BhY2U9T2JqZWN0LmFzc2lnbih0aGlzLm5hbWVzcGFjZSxlKX1yZXF1ZXN0QWNjb3VudHMoKXtyZXR1cm4gdGhpcy5nZXRBY2NvdW50cygpfXJlcXVlc3QoZSl7cmV0dXJuIHRoaXMubmFtZXNwYWNlLm1ldGhvZHMuaW5jbHVkZXMoZS5yZXF1ZXN0Lm1ldGhvZCk/dGhpcy5jbGllbnQucmVxdWVzdChlKTp0aGlzLmdldEh0dHBQcm92aWRlcigpLnJlcXVlc3QoZS5yZXF1ZXN0KX1zZXREZWZhdWx0Q2hhaW4oZSxyKXt0aGlzLmh0dHBQcm92aWRlcnNbZV18fHRoaXMuc2V0SHR0cFByb3ZpZGVyKGUsciksdGhpcy5jaGFpbklkPWUsdGhpcy5ldmVudHMuZW1pdChjcy5ERUZBVUxUX0NIQUlOX0NIQU5HRUQsYCR7dGhpcy5uYW1lfToke2V9YCl9Z2V0RGVmYXVsdENoYWluKCl7aWYodGhpcy5jaGFpbklkKXJldHVybiB0aGlzLmNoYWluSWQ7aWYodGhpcy5uYW1lc3BhY2UuZGVmYXVsdENoYWluKXJldHVybiB0aGlzLm5hbWVzcGFjZS5kZWZhdWx0Q2hhaW47Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5jaGFpbnNbMF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDaGFpbklkIG5vdCBmb3VuZCIpO3JldHVybiBlLnNwbGl0KCI6IilbMV19Z2V0QWNjb3VudHMoKXtjb25zdCBlPXRoaXMubmFtZXNwYWNlLmFjY291bnRzO3JldHVybiBlP1suLi5uZXcgU2V0KGUuZmlsdGVyKHI9PnIuc3BsaXQoIjoiKVsxXT09PXRoaXMuY2hhaW5JZC50b1N0cmluZygpKS5tYXAocj0+ci5zcGxpdCgiOiIpWzJdKSldOltdfWNyZWF0ZUh0dHBQcm92aWRlcnMoKXtjb25zdCBlPXt9O3JldHVybiB0aGlzLm5hbWVzcGFjZS5jaGFpbnMuZm9yRWFjaChyPT57dmFyIG47Y29uc3Qgcz1lZChyKTtlW3NdPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVyKHMsKG49dGhpcy5uYW1lc3BhY2UucnBjTWFwKT09bnVsbD92b2lkIDA6bltyXSl9KSxlfWdldEh0dHBQcm92aWRlcigpe2NvbnN0IGU9YCR7dGhpcy5uYW1lfToke3RoaXMuY2hhaW5JZH1gLHI9dGhpcy5odHRwUHJvdmlkZXJzW2VdO2lmKHR5cGVvZiByPiJ1Iil0aHJvdyBuZXcgRXJyb3IoYEpTT04tUlBDIHByb3ZpZGVyIGZvciAke2V9IG5vdCBmb3VuZGApO3JldHVybiByfXNldEh0dHBQcm92aWRlcihlLHIpe2NvbnN0IG49dGhpcy5jcmVhdGVIdHRwUHJvdmlkZXIoZSxyKTtuJiYodGhpcy5odHRwUHJvdmlkZXJzW2VdPW4pfWNyZWF0ZUh0dHBQcm92aWRlcihlLHIpe2NvbnN0IG49cnx8VGkoZSx0aGlzLm5hbWVzcGFjZSx0aGlzLmNsaWVudC5jb3JlLnByb2plY3RJZCk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBObyBSUEMgdXJsIHByb3ZpZGVkIGZvciBjaGFpbklkOiAke2V9YCk7cmV0dXJuIG5ldyBhcyhuZXcgcXMobixCdCgiZGlzYWJsZVByb3ZpZGVyUGluZyIpKSl9fXZhciBrZGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LFNkZT0odCxlLHIpPT5lIGluIHQ/a2RlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixqZD0odCxlLHIpPT5TZGUodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIEFkZXtjb25zdHJ1Y3RvcihlKXtqZCh0aGlzLCJuYW1lIiwibXVsdGl2ZXJzeCIpLGpkKHRoaXMsImNsaWVudCIpLGpkKHRoaXMsImh0dHBQcm92aWRlcnMiKSxqZCh0aGlzLCJldmVudHMiKSxqZCh0aGlzLCJuYW1lc3BhY2UiKSxqZCh0aGlzLCJjaGFpbklkIiksdGhpcy5uYW1lc3BhY2U9ZS5uYW1lc3BhY2UsdGhpcy5ldmVudHM9QnQoImV2ZW50cyIpLHRoaXMuY2xpZW50PUJ0KCJjbGllbnQiKSx0aGlzLmNoYWluSWQ9dGhpcy5nZXREZWZhdWx0Q2hhaW4oKSx0aGlzLmh0dHBQcm92aWRlcnM9dGhpcy5jcmVhdGVIdHRwUHJvdmlkZXJzKCl9dXBkYXRlTmFtZXNwYWNlKGUpe3RoaXMubmFtZXNwYWNlPU9iamVjdC5hc3NpZ24odGhpcy5uYW1lc3BhY2UsZSl9cmVxdWVzdEFjY291bnRzKCl7cmV0dXJuIHRoaXMuZ2V0QWNjb3VudHMoKX1yZXF1ZXN0KGUpe3JldHVybiB0aGlzLm5hbWVzcGFjZS5tZXRob2RzLmluY2x1ZGVzKGUucmVxdWVzdC5tZXRob2QpP3RoaXMuY2xpZW50LnJlcXVlc3QoZSk6dGhpcy5nZXRIdHRwUHJvdmlkZXIoKS5yZXF1ZXN0KGUucmVxdWVzdCl9c2V0RGVmYXVsdENoYWluKGUscil7dGhpcy5odHRwUHJvdmlkZXJzW2VdfHx0aGlzLnNldEh0dHBQcm92aWRlcihlLHIpLHRoaXMuY2hhaW5JZD1lLHRoaXMuZXZlbnRzLmVtaXQoY3MuREVGQVVMVF9DSEFJTl9DSEFOR0VELGAke3RoaXMubmFtZX06JHtlfWApfWdldERlZmF1bHRDaGFpbigpe2lmKHRoaXMuY2hhaW5JZClyZXR1cm4gdGhpcy5jaGFpbklkO2lmKHRoaXMubmFtZXNwYWNlLmRlZmF1bHRDaGFpbilyZXR1cm4gdGhpcy5uYW1lc3BhY2UuZGVmYXVsdENoYWluO2NvbnN0IGU9dGhpcy5uYW1lc3BhY2UuY2hhaW5zWzBdO2lmKCFlKXRocm93IG5ldyBFcnJvcigiQ2hhaW5JZCBub3QgZm91bmQiKTtyZXR1cm4gZS5zcGxpdCgiOiIpWzFdfWdldEFjY291bnRzKCl7Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5hY2NvdW50cztyZXR1cm4gZT9bLi4ubmV3IFNldChlLmZpbHRlcihyPT5yLnNwbGl0KCI6IilbMV09PT10aGlzLmNoYWluSWQudG9TdHJpbmcoKSkubWFwKHI9PnIuc3BsaXQoIjoiKVsyXSkpXTpbXX1jcmVhdGVIdHRwUHJvdmlkZXJzKCl7Y29uc3QgZT17fTtyZXR1cm4gdGhpcy5uYW1lc3BhY2UuY2hhaW5zLmZvckVhY2gocj0+e3ZhciBuO2NvbnN0IHM9ZWQocik7ZVtzXT10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcihzLChuPXRoaXMubmFtZXNwYWNlLnJwY01hcCk9PW51bGw/dm9pZCAwOm5bcl0pfSksZX1nZXRIdHRwUHJvdmlkZXIoKXtjb25zdCBlPWAke3RoaXMubmFtZX06JHt0aGlzLmNoYWluSWR9YCxyPXRoaXMuaHR0cFByb3ZpZGVyc1tlXTtpZih0eXBlb2Ygcj4idSIpdGhyb3cgbmV3IEVycm9yKGBKU09OLVJQQyBwcm92aWRlciBmb3IgJHtlfSBub3QgZm91bmRgKTtyZXR1cm4gcn1zZXRIdHRwUHJvdmlkZXIoZSxyKXtjb25zdCBuPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVyKGUscik7biYmKHRoaXMuaHR0cFByb3ZpZGVyc1tlXT1uKX1jcmVhdGVIdHRwUHJvdmlkZXIoZSxyKXtjb25zdCBuPXJ8fFRpKGUsdGhpcy5uYW1lc3BhY2UsdGhpcy5jbGllbnQuY29yZS5wcm9qZWN0SWQpO2lmKCFuKXRocm93IG5ldyBFcnJvcihgTm8gUlBDIHVybCBwcm92aWRlZCBmb3IgY2hhaW5JZDogJHtlfWApO3JldHVybiBuZXcgYXMobmV3IHFzKG4sQnQoImRpc2FibGVQcm92aWRlclBpbmciKSkpfX12YXIgVGRlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxJZGU9KHQsZSxyKT0+ZSBpbiB0P1RkZSh0LGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KTp0W2VdPXIsemQ9KHQsZSxyKT0+SWRlKHQsdHlwZW9mIGUhPSJzeW1ib2wiP2UrIiI6ZSxyKTtjbGFzcyBSZGV7Y29uc3RydWN0b3IoZSl7emQodGhpcywibmFtZSIsIm5lYXIiKSx6ZCh0aGlzLCJjbGllbnQiKSx6ZCh0aGlzLCJodHRwUHJvdmlkZXJzIiksemQodGhpcywiZXZlbnRzIiksemQodGhpcywibmFtZXNwYWNlIiksemQodGhpcywiY2hhaW5JZCIpLHRoaXMubmFtZXNwYWNlPWUubmFtZXNwYWNlLHRoaXMuZXZlbnRzPUJ0KCJldmVudHMiKSx0aGlzLmNsaWVudD1CdCgiY2xpZW50IiksdGhpcy5jaGFpbklkPXRoaXMuZ2V0RGVmYXVsdENoYWluKCksdGhpcy5odHRwUHJvdmlkZXJzPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVycygpfXVwZGF0ZU5hbWVzcGFjZShlKXt0aGlzLm5hbWVzcGFjZT1PYmplY3QuYXNzaWduKHRoaXMubmFtZXNwYWNlLGUpfXJlcXVlc3RBY2NvdW50cygpe3JldHVybiB0aGlzLmdldEFjY291bnRzKCl9Z2V0RGVmYXVsdENoYWluKCl7aWYodGhpcy5jaGFpbklkKXJldHVybiB0aGlzLmNoYWluSWQ7aWYodGhpcy5uYW1lc3BhY2UuZGVmYXVsdENoYWluKXJldHVybiB0aGlzLm5hbWVzcGFjZS5kZWZhdWx0Q2hhaW47Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5jaGFpbnNbMF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDaGFpbklkIG5vdCBmb3VuZCIpO3JldHVybiBlLnNwbGl0KCI6IilbMV19cmVxdWVzdChlKXtyZXR1cm4gdGhpcy5uYW1lc3BhY2UubWV0aG9kcy5pbmNsdWRlcyhlLnJlcXVlc3QubWV0aG9kKT90aGlzLmNsaWVudC5yZXF1ZXN0KGUpOnRoaXMuZ2V0SHR0cFByb3ZpZGVyKCkucmVxdWVzdChlLnJlcXVlc3QpfXNldERlZmF1bHRDaGFpbihlLHIpe2lmKHRoaXMuY2hhaW5JZD1lLCF0aGlzLmh0dHBQcm92aWRlcnNbZV0pe2NvbnN0IG49cnx8VGkoYCR7dGhpcy5uYW1lfToke2V9YCx0aGlzLm5hbWVzcGFjZSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBObyBSUEMgdXJsIHByb3ZpZGVkIGZvciBjaGFpbklkOiAke2V9YCk7dGhpcy5zZXRIdHRwUHJvdmlkZXIoZSxuKX10aGlzLmV2ZW50cy5lbWl0KGNzLkRFRkFVTFRfQ0hBSU5fQ0hBTkdFRCxgJHt0aGlzLm5hbWV9OiR7dGhpcy5jaGFpbklkfWApfWdldEFjY291bnRzKCl7Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5hY2NvdW50cztyZXR1cm4gZT9lLmZpbHRlcihyPT5yLnNwbGl0KCI6IilbMV09PT10aGlzLmNoYWluSWQudG9TdHJpbmcoKSkubWFwKHI9PnIuc3BsaXQoIjoiKVsyXSl8fFtdOltdfWNyZWF0ZUh0dHBQcm92aWRlcnMoKXtjb25zdCBlPXt9O3JldHVybiB0aGlzLm5hbWVzcGFjZS5jaGFpbnMuZm9yRWFjaChyPT57dmFyIG47ZVtyXT10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcihyLChuPXRoaXMubmFtZXNwYWNlLnJwY01hcCk9PW51bGw/dm9pZCAwOm5bcl0pfSksZX1nZXRIdHRwUHJvdmlkZXIoKXtjb25zdCBlPWAke3RoaXMubmFtZX06JHt0aGlzLmNoYWluSWR9YCxyPXRoaXMuaHR0cFByb3ZpZGVyc1tlXTtpZih0eXBlb2Ygcj4idSIpdGhyb3cgbmV3IEVycm9yKGBKU09OLVJQQyBwcm92aWRlciBmb3IgJHtlfSBub3QgZm91bmRgKTtyZXR1cm4gcn1zZXRIdHRwUHJvdmlkZXIoZSxyKXtjb25zdCBuPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVyKGUscik7biYmKHRoaXMuaHR0cFByb3ZpZGVyc1tlXT1uKX1jcmVhdGVIdHRwUHJvdmlkZXIoZSxyKXtjb25zdCBuPXJ8fFRpKGUsdGhpcy5uYW1lc3BhY2UpO3JldHVybiB0eXBlb2Ygbj4idSI/dm9pZCAwOm5ldyBhcyhuZXcgcXMobixCdCgiZGlzYWJsZVByb3ZpZGVyUGluZyIpKSl9fXZhciBOZGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LFBkZT0odCxlLHIpPT5lIGluIHQ/TmRlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixXZD0odCxlLHIpPT5QZGUodCx0eXBlb2YgZSE9InN5bWJvbCI/ZSsiIjplLHIpO2NsYXNzIE9kZXtjb25zdHJ1Y3RvcihlKXtXZCh0aGlzLCJuYW1lIiwidGV6b3MiKSxXZCh0aGlzLCJjbGllbnQiKSxXZCh0aGlzLCJodHRwUHJvdmlkZXJzIiksV2QodGhpcywiZXZlbnRzIiksV2QodGhpcywibmFtZXNwYWNlIiksV2QodGhpcywiY2hhaW5JZCIpLHRoaXMubmFtZXNwYWNlPWUubmFtZXNwYWNlLHRoaXMuZXZlbnRzPUJ0KCJldmVudHMiKSx0aGlzLmNsaWVudD1CdCgiY2xpZW50IiksdGhpcy5jaGFpbklkPXRoaXMuZ2V0RGVmYXVsdENoYWluKCksdGhpcy5odHRwUHJvdmlkZXJzPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVycygpfXVwZGF0ZU5hbWVzcGFjZShlKXt0aGlzLm5hbWVzcGFjZT1PYmplY3QuYXNzaWduKHRoaXMubmFtZXNwYWNlLGUpfXJlcXVlc3RBY2NvdW50cygpe3JldHVybiB0aGlzLmdldEFjY291bnRzKCl9Z2V0RGVmYXVsdENoYWluKCl7aWYodGhpcy5jaGFpbklkKXJldHVybiB0aGlzLmNoYWluSWQ7aWYodGhpcy5uYW1lc3BhY2UuZGVmYXVsdENoYWluKXJldHVybiB0aGlzLm5hbWVzcGFjZS5kZWZhdWx0Q2hhaW47Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5jaGFpbnNbMF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDaGFpbklkIG5vdCBmb3VuZCIpO3JldHVybiBlLnNwbGl0KCI6IilbMV19cmVxdWVzdChlKXtyZXR1cm4gdGhpcy5uYW1lc3BhY2UubWV0aG9kcy5pbmNsdWRlcyhlLnJlcXVlc3QubWV0aG9kKT90aGlzLmNsaWVudC5yZXF1ZXN0KGUpOnRoaXMuZ2V0SHR0cFByb3ZpZGVyKCkucmVxdWVzdChlLnJlcXVlc3QpfXNldERlZmF1bHRDaGFpbihlLHIpe2lmKHRoaXMuY2hhaW5JZD1lLCF0aGlzLmh0dHBQcm92aWRlcnNbZV0pe2NvbnN0IG49cnx8VGkoYCR7dGhpcy5uYW1lfToke2V9YCx0aGlzLm5hbWVzcGFjZSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBObyBSUEMgdXJsIHByb3ZpZGVkIGZvciBjaGFpbklkOiAke2V9YCk7dGhpcy5zZXRIdHRwUHJvdmlkZXIoZSxuKX10aGlzLmV2ZW50cy5lbWl0KGNzLkRFRkFVTFRfQ0hBSU5fQ0hBTkdFRCxgJHt0aGlzLm5hbWV9OiR7dGhpcy5jaGFpbklkfWApfWdldEFjY291bnRzKCl7Y29uc3QgZT10aGlzLm5hbWVzcGFjZS5hY2NvdW50cztyZXR1cm4gZT9lLmZpbHRlcihyPT5yLnNwbGl0KCI6IilbMV09PT10aGlzLmNoYWluSWQudG9TdHJpbmcoKSkubWFwKHI9PnIuc3BsaXQoIjoiKVsyXSl8fFtdOltdfWNyZWF0ZUh0dHBQcm92aWRlcnMoKXtjb25zdCBlPXt9O3JldHVybiB0aGlzLm5hbWVzcGFjZS5jaGFpbnMuZm9yRWFjaChyPT57ZVtyXT10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcihyKX0pLGV9Z2V0SHR0cFByb3ZpZGVyKCl7Y29uc3QgZT1gJHt0aGlzLm5hbWV9OiR7dGhpcy5jaGFpbklkfWAscj10aGlzLmh0dHBQcm92aWRlcnNbZV07aWYodHlwZW9mIHI+InUiKXRocm93IG5ldyBFcnJvcihgSlNPTi1SUEMgcHJvdmlkZXIgZm9yICR7ZX0gbm90IGZvdW5kYCk7cmV0dXJuIHJ9c2V0SHR0cFByb3ZpZGVyKGUscil7Y29uc3Qgbj10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcihlLHIpO24mJih0aGlzLmh0dHBQcm92aWRlcnNbZV09bil9Y3JlYXRlSHR0cFByb3ZpZGVyKGUscil7Y29uc3Qgbj1yfHxUaShlLHRoaXMubmFtZXNwYWNlKTtyZXR1cm4gdHlwZW9mIG4+InUiP3ZvaWQgMDpuZXcgYXMobmV3IHFzKG4pKX19dmFyICRkZT1PYmplY3QuZGVmaW5lUHJvcGVydHksTWRlPSh0LGUscik9PmUgaW4gdD8kZGUodCxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpyfSk6dFtlXT1yLEhkPSh0LGUscik9Pk1kZSh0LHR5cGVvZiBlIT0ic3ltYm9sIj9lKyIiOmUscik7Y2xhc3MgRGRle2NvbnN0cnVjdG9yKGUpe0hkKHRoaXMsIm5hbWUiLEpkKSxIZCh0aGlzLCJjbGllbnQiKSxIZCh0aGlzLCJodHRwUHJvdmlkZXJzIiksSGQodGhpcywiZXZlbnRzIiksSGQodGhpcywibmFtZXNwYWNlIiksSGQodGhpcywiY2hhaW5JZCIpLHRoaXMubmFtZXNwYWNlPWUubmFtZXNwYWNlLHRoaXMuZXZlbnRzPUJ0KCJldmVudHMiKSx0aGlzLmNsaWVudD1CdCgiY2xpZW50IiksdGhpcy5jaGFpbklkPXRoaXMuZ2V0RGVmYXVsdENoYWluKCksdGhpcy5odHRwUHJvdmlkZXJzPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVycygpfXVwZGF0ZU5hbWVzcGFjZShlKXt0aGlzLm5hbWVzcGFjZS5jaGFpbnM9Wy4uLm5ldyBTZXQoKHRoaXMubmFtZXNwYWNlLmNoYWluc3x8W10pLmNvbmNhdChlLmNoYWluc3x8W10pKV0sdGhpcy5uYW1lc3BhY2UuYWNjb3VudHM9Wy4uLm5ldyBTZXQoKHRoaXMubmFtZXNwYWNlLmFjY291bnRzfHxbXSkuY29uY2F0KGUuYWNjb3VudHN8fFtdKSldLHRoaXMubmFtZXNwYWNlLm1ldGhvZHM9Wy4uLm5ldyBTZXQoKHRoaXMubmFtZXNwYWNlLm1ldGhvZHN8fFtdKS5jb25jYXQoZS5tZXRob2RzfHxbXSkpXSx0aGlzLm5hbWVzcGFjZS5ldmVudHM9Wy4uLm5ldyBTZXQoKHRoaXMubmFtZXNwYWNlLmV2ZW50c3x8W10pLmNvbmNhdChlLmV2ZW50c3x8W10pKV0sdGhpcy5odHRwUHJvdmlkZXJzPXRoaXMuY3JlYXRlSHR0cFByb3ZpZGVycygpfXJlcXVlc3RBY2NvdW50cygpe3JldHVybiB0aGlzLmdldEFjY291bnRzKCl9cmVxdWVzdChlKXtyZXR1cm4gdGhpcy5uYW1lc3BhY2UubWV0aG9kcy5pbmNsdWRlcyhlLnJlcXVlc3QubWV0aG9kKT90aGlzLmNsaWVudC5yZXF1ZXN0KGUpOnRoaXMuZ2V0SHR0cFByb3ZpZGVyKGUuY2hhaW5JZCkucmVxdWVzdChlLnJlcXVlc3QpfXNldERlZmF1bHRDaGFpbihlLHIpe3RoaXMuaHR0cFByb3ZpZGVyc1tlXXx8dGhpcy5zZXRIdHRwUHJvdmlkZXIoZSxyKSx0aGlzLmNoYWluSWQ9ZSx0aGlzLmV2ZW50cy5lbWl0KGNzLkRFRkFVTFRfQ0hBSU5fQ0hBTkdFRCxgJHt0aGlzLm5hbWV9OiR7ZX1gKX1nZXREZWZhdWx0Q2hhaW4oKXtpZih0aGlzLmNoYWluSWQpcmV0dXJuIHRoaXMuY2hhaW5JZDtpZih0aGlzLm5hbWVzcGFjZS5kZWZhdWx0Q2hhaW4pcmV0dXJuIHRoaXMubmFtZXNwYWNlLmRlZmF1bHRDaGFpbjtjb25zdCBlPXRoaXMubmFtZXNwYWNlLmNoYWluc1swXTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkNoYWluSWQgbm90IGZvdW5kIik7cmV0dXJuIGUuc3BsaXQoIjoiKVsxXX1nZXRBY2NvdW50cygpe2NvbnN0IGU9dGhpcy5uYW1lc3BhY2UuYWNjb3VudHM7cmV0dXJuIGU/Wy4uLm5ldyBTZXQoZS5maWx0ZXIocj0+ci5zcGxpdCgiOiIpWzFdPT09dGhpcy5jaGFpbklkLnRvU3RyaW5nKCkpLm1hcChyPT5yLnNwbGl0KCI6IilbMl0pKV06W119Y3JlYXRlSHR0cFByb3ZpZGVycygpe3ZhciBlLHI7Y29uc3Qgbj17fTtyZXR1cm4ocj0oZT10aGlzLm5hbWVzcGFjZSk9PW51bGw/dm9pZCAwOmUuYWNjb3VudHMpPT1udWxsfHxyLmZvckVhY2gocz0+e2NvbnN0IGk9Y2gocyk7bltgJHtpLm5hbWVzcGFjZX06JHtpLnJlZmVyZW5jZX1gXT10aGlzLmNyZWF0ZUh0dHBQcm92aWRlcihzKX0pLG59Z2V0SHR0cFByb3ZpZGVyKGUpe2NvbnN0IHI9dGhpcy5odHRwUHJvdmlkZXJzW2VdO2lmKHR5cGVvZiByPiJ1Iil0aHJvdyBuZXcgRXJyb3IoYEpTT04tUlBDIHByb3ZpZGVyIGZvciAke2V9IG5vdCBmb3VuZGApO3JldHVybiByfXNldEh0dHBQcm92aWRlcihlLHIpe2NvbnN0IG49dGhpcy5jcmVhdGVIdHRwUHJvdmlkZXIoZSxyKTtuJiYodGhpcy5odHRwUHJvdmlkZXJzW2VdPW4pfWNyZWF0ZUh0dHBQcm92aWRlcihlLHIpe2NvbnN0IG49cnx8VGkoZSx0aGlzLm5hbWVzcGFjZSx0aGlzLmNsaWVudC5jb3JlLnByb2plY3RJZCk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBObyBSUEMgdXJsIHByb3ZpZGVkIGZvciBjaGFpbklkOiAke2V9YCk7cmV0dXJuIG5ldyBhcyhuZXcgcXMobixCdCgiZGlzYWJsZVByb3ZpZGVyUGluZyIpKSl9fXZhciBCZGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LExkZT1PYmplY3QuZGVmaW5lUHJvcGVydGllcyxVZGU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMsUFM9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxGZGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxqZGU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxqeD0odCxlLHIpPT5lIGluIHQ/QmRlKHQsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cn0pOnRbZV09cixQZz0odCxlKT0+e2Zvcih2YXIgciBpbiBlfHwoZT17fSkpRmRlLmNhbGwoZSxyKSYmangodCxyLGVbcl0pO2lmKFBTKWZvcih2YXIgciBvZiBQUyhlKSlqZGUuY2FsbChlLHIpJiZqeCh0LHIsZVtyXSk7cmV0dXJuIHR9LGQzPSh0LGUpPT5MZGUodCxVZGUoZSkpLHppPSh0LGUscik9Pmp4KHQsdHlwZW9mIGUhPSJzeW1ib2wiP2UrIiI6ZSxyKTtsZXQgemRlPWNsYXNzIGJCe2NvbnN0cnVjdG9yKGUpe3ppKHRoaXMsImNsaWVudCIpLHppKHRoaXMsIm5hbWVzcGFjZXMiKSx6aSh0aGlzLCJvcHRpb25hbE5hbWVzcGFjZXMiKSx6aSh0aGlzLCJzZXNzaW9uUHJvcGVydGllcyIpLHppKHRoaXMsInNjb3BlZFByb3BlcnRpZXMiKSx6aSh0aGlzLCJldmVudHMiLG5ldyB5NiksemkodGhpcywicnBjUHJvdmlkZXJzIix7fSksemkodGhpcywic2Vzc2lvbiIpLHppKHRoaXMsInByb3ZpZGVyT3B0cyIpLHppKHRoaXMsImxvZ2dlciIpLHppKHRoaXMsInVyaSIpLHppKHRoaXMsImRpc2FibGVQcm92aWRlclBpbmciLCExKSx0aGlzLnByb3ZpZGVyT3B0cz1lLHRoaXMubG9nZ2VyPXR5cGVvZiBlPy5sb2dnZXI8InUiJiZ0eXBlb2YgZT8ubG9nZ2VyIT0ic3RyaW5nIj9lLmxvZ2dlcjp1MShscCh7bGV2ZWw6ZT8ubG9nZ2VyfHx2U30pKSx0aGlzLmRpc2FibGVQcm92aWRlclBpbmc9ZT8uZGlzYWJsZVByb3ZpZGVyUGluZ3x8ITF9c3RhdGljIGFzeW5jIGluaXQoZSl7Y29uc3Qgcj1uZXcgYkIoZSk7cmV0dXJuIGF3YWl0IHIuaW5pdGlhbGl6ZSgpLHJ9YXN5bmMgcmVxdWVzdChlLHIsbil7Y29uc3RbcyxpXT10aGlzLnZhbGlkYXRlQ2hhaW4ocik7aWYoIXRoaXMuc2Vzc2lvbil0aHJvdyBuZXcgRXJyb3IoIlBsZWFzZSBjYWxsIGNvbm5lY3QoKSBiZWZvcmUgcmVxdWVzdCgpIik7cmV0dXJuIGF3YWl0IHRoaXMuZ2V0UHJvdmlkZXIocykucmVxdWVzdCh7cmVxdWVzdDpQZyh7fSxlKSxjaGFpbklkOmAke3N9OiR7aX1gLHRvcGljOnRoaXMuc2Vzc2lvbi50b3BpYyxleHBpcnk6bn0pfXNlbmRBc3luYyhlLHIsbixzKXtjb25zdCBpPW5ldyBEYXRlKCkuZ2V0VGltZSgpO3RoaXMucmVxdWVzdChlLG4scykudGhlbihvPT5yKG51bGwsV3koaSxvKSkpLmNhdGNoKG89PnIobyx2b2lkIDApKX1hc3luYyBlbmFibGUoKXtpZighdGhpcy5jbGllbnQpdGhyb3cgbmV3IEVycm9yKCJTaWduIENsaWVudCBub3QgaW5pdGlhbGl6ZWQiKTtyZXR1cm4gdGhpcy5zZXNzaW9ufHxhd2FpdCB0aGlzLmNvbm5lY3Qoe25hbWVzcGFjZXM6dGhpcy5uYW1lc3BhY2VzLG9wdGlvbmFsTmFtZXNwYWNlczp0aGlzLm9wdGlvbmFsTmFtZXNwYWNlcyxzZXNzaW9uUHJvcGVydGllczp0aGlzLnNlc3Npb25Qcm9wZXJ0aWVzLHNjb3BlZFByb3BlcnRpZXM6dGhpcy5zY29wZWRQcm9wZXJ0aWVzfSksYXdhaXQgdGhpcy5yZXF1ZXN0QWNjb3VudHMoKX1hc3luYyBkaXNjb25uZWN0KCl7dmFyIGU7aWYoIXRoaXMuc2Vzc2lvbil0aHJvdyBuZXcgRXJyb3IoIlBsZWFzZSBjYWxsIGNvbm5lY3QoKSBiZWZvcmUgZW5hYmxlKCkiKTthd2FpdCB0aGlzLmNsaWVudC5kaXNjb25uZWN0KHt0b3BpYzooZT10aGlzLnNlc3Npb24pPT1udWxsP3ZvaWQgMDplLnRvcGljLHJlYXNvbjpLdCgiVVNFUl9ESVNDT05ORUNURUQiKX0pLGF3YWl0IHRoaXMuY2xlYW51cCgpfWFzeW5jIGNvbm5lY3QoZSl7aWYoIXRoaXMuY2xpZW50KXRocm93IG5ldyBFcnJvcigiU2lnbiBDbGllbnQgbm90IGluaXRpYWxpemVkIik7aWYodGhpcy5zZXROYW1lc3BhY2VzKGUpLGF3YWl0IHRoaXMuY2xlYW51cFBlbmRpbmdQYWlyaW5ncygpLCFlLnNraXBQYWlyaW5nKXJldHVybiBhd2FpdCB0aGlzLnBhaXIoZS5wYWlyaW5nVG9waWMpfWFzeW5jIGF1dGhlbnRpY2F0ZShlLHIpe2lmKCF0aGlzLmNsaWVudCl0aHJvdyBuZXcgRXJyb3IoIlNpZ24gQ2xpZW50IG5vdCBpbml0aWFsaXplZCIpO3RoaXMuc2V0TmFtZXNwYWNlcyhlKSxhd2FpdCB0aGlzLmNsZWFudXBQZW5kaW5nUGFpcmluZ3MoKTtjb25zdHt1cmk6bixyZXNwb25zZTpzfT1hd2FpdCB0aGlzLmNsaWVudC5hdXRoZW50aWNhdGUoZSxyKTtuJiYodGhpcy51cmk9bix0aGlzLmV2ZW50cy5lbWl0KCJkaXNwbGF5X3VyaSIsbikpO2NvbnN0IGk9YXdhaXQgcygpO2lmKHRoaXMuc2Vzc2lvbj1pLnNlc3Npb24sdGhpcy5zZXNzaW9uKXtjb25zdCBvPVRTKHRoaXMuc2Vzc2lvbi5uYW1lc3BhY2VzKTt0aGlzLm5hbWVzcGFjZXM9YzModGhpcy5uYW1lc3BhY2VzLG8pLGF3YWl0IHRoaXMucGVyc2lzdCgibmFtZXNwYWNlcyIsdGhpcy5uYW1lc3BhY2VzKSx0aGlzLm9uQ29ubmVjdCgpfXJldHVybiBpfW9uKGUscil7dGhpcy5ldmVudHMub24oZSxyKX1vbmNlKGUscil7dGhpcy5ldmVudHMub25jZShlLHIpfXJlbW92ZUxpc3RlbmVyKGUscil7dGhpcy5ldmVudHMucmVtb3ZlTGlzdGVuZXIoZSxyKX1vZmYoZSxyKXt0aGlzLmV2ZW50cy5vZmYoZSxyKX1nZXQgaXNXYWxsZXRDb25uZWN0KCl7cmV0dXJuITB9YXN5bmMgcGFpcihlKXtjb25zdHt1cmk6cixhcHByb3ZhbDpufT1hd2FpdCB0aGlzLmNsaWVudC5jb25uZWN0KHtwYWlyaW5nVG9waWM6ZSxyZXF1aXJlZE5hbWVzcGFjZXM6dGhpcy5uYW1lc3BhY2VzLG9wdGlvbmFsTmFtZXNwYWNlczp0aGlzLm9wdGlvbmFsTmFtZXNwYWNlcyxzZXNzaW9uUHJvcGVydGllczp0aGlzLnNlc3Npb25Qcm9wZXJ0aWVzLHNjb3BlZFByb3BlcnRpZXM6dGhpcy5zY29wZWRQcm9wZXJ0aWVzfSk7ciYmKHRoaXMudXJpPXIsdGhpcy5ldmVudHMuZW1pdCgiZGlzcGxheV91cmkiLHIpKTtjb25zdCBzPWF3YWl0IG4oKTt0aGlzLnNlc3Npb249cztjb25zdCBpPVRTKHMubmFtZXNwYWNlcyk7cmV0dXJuIHRoaXMubmFtZXNwYWNlcz1jMyh0aGlzLm5hbWVzcGFjZXMsaSksYXdhaXQgdGhpcy5wZXJzaXN0KCJuYW1lc3BhY2VzIix0aGlzLm5hbWVzcGFjZXMpLGF3YWl0IHRoaXMucGVyc2lzdCgib3B0aW9uYWxOYW1lc3BhY2VzIix0aGlzLm9wdGlvbmFsTmFtZXNwYWNlcyksdGhpcy5vbkNvbm5lY3QoKSx0aGlzLnNlc3Npb259c2V0RGVmYXVsdENoYWluKGUscil7dHJ5e2lmKCF0aGlzLnNlc3Npb24pcmV0dXJuO2NvbnN0W24sc109dGhpcy52YWxpZGF0ZUNoYWluKGUpLGk9dGhpcy5nZXRQcm92aWRlcihuKTtpLm5hbWU9PT1KZD9pLnNldERlZmF1bHRDaGFpbihgJHtufToke3N9YCxyKTppLnNldERlZmF1bHRDaGFpbihzLHIpfWNhdGNoKG4pe2lmKCEvUGxlYXNlIGNhbGwgY29ubmVjdC8udGVzdChuLm1lc3NhZ2UpKXRocm93IG59fWFzeW5jIGNsZWFudXBQZW5kaW5nUGFpcmluZ3MoZT17fSl7dGhpcy5sb2dnZXIuaW5mbygiQ2xlYW5pbmcgdXAgaW5hY3RpdmUgcGFpcmluZ3MuLi4iKTtjb25zdCByPXRoaXMuY2xpZW50LnBhaXJpbmcuZ2V0QWxsKCk7aWYobWMocikpe2Zvcihjb25zdCBuIG9mIHIpZS5kZWxldGVQYWlyaW5ncz90aGlzLmNsaWVudC5jb3JlLmV4cGlyZXIuc2V0KG4udG9waWMsMCk6YXdhaXQgdGhpcy5jbGllbnQuY29yZS5yZWxheWVyLnN1YnNjcmliZXIudW5zdWJzY3JpYmUobi50b3BpYyk7dGhpcy5sb2dnZXIuaW5mbyhgSW5hY3RpdmUgcGFpcmluZ3MgY2xlYXJlZDogJHtyLmxlbmd0aH1gKX19YWJvcnRQYWlyaW5nQXR0ZW1wdCgpe3RoaXMubG9nZ2VyLndhcm4oImFib3J0UGFpcmluZ0F0dGVtcHQgaXMgZGVwcmVjYXRlZC4gVGhpcyBpcyBub3cgYSBuby1vcC4iKX1hc3luYyBjaGVja1N0b3JhZ2UoKXt0aGlzLm5hbWVzcGFjZXM9YXdhaXQgdGhpcy5nZXRGcm9tU3RvcmUoIm5hbWVzcGFjZXMiKXx8e30sdGhpcy5vcHRpb25hbE5hbWVzcGFjZXM9YXdhaXQgdGhpcy5nZXRGcm9tU3RvcmUoIm9wdGlvbmFsTmFtZXNwYWNlcyIpfHx7fSx0aGlzLnNlc3Npb24mJnRoaXMuY3JlYXRlUHJvdmlkZXJzKCl9YXN5bmMgaW5pdGlhbGl6ZSgpe3RoaXMubG9nZ2VyLnRyYWNlKCJJbml0aWFsaXplZCIpLGF3YWl0IHRoaXMuY3JlYXRlQ2xpZW50KCksYXdhaXQgdGhpcy5jaGVja1N0b3JhZ2UoKSx0aGlzLnJlZ2lzdGVyRXZlbnRMaXN0ZW5lcnMoKX1hc3luYyBjcmVhdGVDbGllbnQoKXt2YXIgZSxyO2lmKHRoaXMuY2xpZW50PXRoaXMucHJvdmlkZXJPcHRzLmNsaWVudHx8YXdhaXQgYXVlLmluaXQoe2NvcmU6dGhpcy5wcm92aWRlck9wdHMuY29yZSxsb2dnZXI6dGhpcy5wcm92aWRlck9wdHMubG9nZ2VyfHx2UyxyZWxheVVybDp0aGlzLnByb3ZpZGVyT3B0cy5yZWxheVVybHx8d3VlLHByb2plY3RJZDp0aGlzLnByb3ZpZGVyT3B0cy5wcm9qZWN0SWQsbWV0YWRhdGE6dGhpcy5wcm92aWRlck9wdHMubWV0YWRhdGEsc3RvcmFnZU9wdGlvbnM6dGhpcy5wcm92aWRlck9wdHMuc3RvcmFnZU9wdGlvbnMsc3RvcmFnZTp0aGlzLnByb3ZpZGVyT3B0cy5zdG9yYWdlLG5hbWU6dGhpcy5wcm92aWRlck9wdHMubmFtZSxjdXN0b21TdG9yYWdlUHJlZml4OnRoaXMucHJvdmlkZXJPcHRzLmN1c3RvbVN0b3JhZ2VQcmVmaXgsdGVsZW1ldHJ5RW5hYmxlZDp0aGlzLnByb3ZpZGVyT3B0cy50ZWxlbWV0cnlFbmFibGVkfSksdGhpcy5wcm92aWRlck9wdHMuc2Vzc2lvbil0cnl7dGhpcy5zZXNzaW9uPXRoaXMuY2xpZW50LnNlc3Npb24uZ2V0KHRoaXMucHJvdmlkZXJPcHRzLnNlc3Npb24udG9waWMpfWNhdGNoKG4pe3Rocm93IHRoaXMubG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gZ2V0IHNlc3Npb24iLG4pLG5ldyBFcnJvcihgVGhlIHByb3ZpZGVkIHNlc3Npb246ICR7KHI9KGU9dGhpcy5wcm92aWRlck9wdHMpPT1udWxsP3ZvaWQgMDplLnNlc3Npb24pPT1udWxsP3ZvaWQgMDpyLnRvcGljfSBkb2Vzbid0IGV4aXN0IGluIHRoZSBTaWduIGNsaWVudGApfWVsc2V7Y29uc3Qgbj10aGlzLmNsaWVudC5zZXNzaW9uLmdldEFsbCgpO3RoaXMuc2Vzc2lvbj1uWzBdfXRoaXMubG9nZ2VyLnRyYWNlKCJTaWduQ2xpZW50IEluaXRpYWxpemVkIil9Y3JlYXRlUHJvdmlkZXJzKCl7aWYoIXRoaXMuY2xpZW50KXRocm93IG5ldyBFcnJvcigiU2lnbiBDbGllbnQgbm90IGluaXRpYWxpemVkIik7aWYoIXRoaXMuc2Vzc2lvbil0aHJvdyBuZXcgRXJyb3IoIlNlc3Npb24gbm90IGluaXRpYWxpemVkLiBQbGVhc2UgY2FsbCBjb25uZWN0KCkgYmVmb3JlIGVuYWJsZSgpIik7Y29uc3QgZT1bLi4ubmV3IFNldChPYmplY3Qua2V5cyh0aGlzLnNlc3Npb24ubmFtZXNwYWNlcykubWFwKHI9PllmKHIpKSldO3UzKCJjbGllbnQiLHRoaXMuY2xpZW50KSx1MygiZXZlbnRzIix0aGlzLmV2ZW50cyksdTMoImRpc2FibGVQcm92aWRlclBpbmciLHRoaXMuZGlzYWJsZVByb3ZpZGVyUGluZyksZS5mb3JFYWNoKHI9PntpZighdGhpcy5zZXNzaW9uKXJldHVybjtjb25zdCBuPWVkZShyLHRoaXMuc2Vzc2lvbikscz1nQihuKSxpPWMzKHRoaXMubmFtZXNwYWNlcyx0aGlzLm9wdGlvbmFsTmFtZXNwYWNlcyksbz1kMyhQZyh7fSxpW3JdKSx7YWNjb3VudHM6bixjaGFpbnM6c30pO3N3aXRjaChyKXtjYXNlImVpcDE1NSI6dGhpcy5ycGNQcm92aWRlcnNbcl09bmV3IGxkZSh7bmFtZXNwYWNlOm99KTticmVhaztjYXNlImFsZ29yYW5kIjp0aGlzLnJwY1Byb3ZpZGVyc1tyXT1uZXcgYmRlKHtuYW1lc3BhY2U6b30pO2JyZWFrO2Nhc2Uic29sYW5hIjp0aGlzLnJwY1Byb3ZpZGVyc1tyXT1uZXcgaGRlKHtuYW1lc3BhY2U6b30pO2JyZWFrO2Nhc2UiY29zbW9zIjp0aGlzLnJwY1Byb3ZpZGVyc1tyXT1uZXcgbWRlKHtuYW1lc3BhY2U6b30pO2JyZWFrO2Nhc2UicG9sa2Fkb3QiOnRoaXMucnBjUHJvdmlkZXJzW3JdPW5ldyBuZGUoe25hbWVzcGFjZTpvfSk7YnJlYWs7Y2FzZSJjaXAzNCI6dGhpcy5ycGNQcm92aWRlcnNbcl09bmV3IEVkZSh7bmFtZXNwYWNlOm99KTticmVhaztjYXNlImVscm9uZCI6dGhpcy5ycGNQcm92aWRlcnNbcl09bmV3IF9kZSh7bmFtZXNwYWNlOm99KTticmVhaztjYXNlIm11bHRpdmVyc3giOnRoaXMucnBjUHJvdmlkZXJzW3JdPW5ldyBBZGUoe25hbWVzcGFjZTpvfSk7YnJlYWs7Y2FzZSJuZWFyIjp0aGlzLnJwY1Byb3ZpZGVyc1tyXT1uZXcgUmRlKHtuYW1lc3BhY2U6b30pO2JyZWFrO2Nhc2UidGV6b3MiOnRoaXMucnBjUHJvdmlkZXJzW3JdPW5ldyBPZGUoe25hbWVzcGFjZTpvfSk7YnJlYWs7ZGVmYXVsdDp0aGlzLnJwY1Byb3ZpZGVyc1tKZF0/dGhpcy5ycGNQcm92aWRlcnNbSmRdLnVwZGF0ZU5hbWVzcGFjZShvKTp0aGlzLnJwY1Byb3ZpZGVyc1tKZF09bmV3IERkZSh7bmFtZXNwYWNlOm99KX19KX1yZWdpc3RlckV2ZW50TGlzdGVuZXJzKCl7aWYodHlwZW9mIHRoaXMuY2xpZW50PiJ1Iil0aHJvdyBuZXcgRXJyb3IoIlNpZ24gQ2xpZW50IGlzIG5vdCBpbml0aWFsaXplZCIpO3RoaXMuY2xpZW50Lm9uKCJzZXNzaW9uX3BpbmciLGU9Pnt2YXIgcjtjb25zdHt0b3BpYzpufT1lO249PT0oKHI9dGhpcy5zZXNzaW9uKT09bnVsbD92b2lkIDA6ci50b3BpYykmJnRoaXMuZXZlbnRzLmVtaXQoInNlc3Npb25fcGluZyIsZSl9KSx0aGlzLmNsaWVudC5vbigic2Vzc2lvbl9ldmVudCIsZT0+e3ZhciByO2NvbnN0e3BhcmFtczpuLHRvcGljOnN9PWU7aWYocyE9PSgocj10aGlzLnNlc3Npb24pPT1udWxsP3ZvaWQgMDpyLnRvcGljKSlyZXR1cm47Y29uc3R7ZXZlbnQ6aX09bjtpZihpLm5hbWU9PT0iYWNjb3VudHNDaGFuZ2VkIil7Y29uc3Qgbz1pLmRhdGE7byYmbWMobykmJnRoaXMuZXZlbnRzLmVtaXQoImFjY291bnRzQ2hhbmdlZCIsby5tYXAoQVMpKX1lbHNlIGlmKGkubmFtZT09PSJjaGFpbkNoYW5nZWQiKXtjb25zdCBvPW4uY2hhaW5JZCxhPW4uZXZlbnQuZGF0YSxjPVlmKG8pLGw9bDMobykhPT1sMyhhKT9gJHtjfToke2wzKGEpfWA6bzt0aGlzLm9uQ2hhaW5DaGFuZ2VkKGwpfWVsc2UgdGhpcy5ldmVudHMuZW1pdChpLm5hbWUsaS5kYXRhKTt0aGlzLmV2ZW50cy5lbWl0KCJzZXNzaW9uX2V2ZW50IixlKX0pLHRoaXMuY2xpZW50Lm9uKCJzZXNzaW9uX3VwZGF0ZSIsKHt0b3BpYzplLHBhcmFtczpyfSk9Pnt2YXIgbixzO2lmKGUhPT0oKG49dGhpcy5zZXNzaW9uKT09bnVsbD92b2lkIDA6bi50b3BpYykpcmV0dXJuO2NvbnN0e25hbWVzcGFjZXM6aX09cixvPShzPXRoaXMuY2xpZW50KT09bnVsbD92b2lkIDA6cy5zZXNzaW9uLmdldChlKTt0aGlzLnNlc3Npb249ZDMoUGcoe30sbykse25hbWVzcGFjZXM6aX0pLHRoaXMub25TZXNzaW9uVXBkYXRlKCksdGhpcy5ldmVudHMuZW1pdCgic2Vzc2lvbl91cGRhdGUiLHt0b3BpYzplLHBhcmFtczpyfSl9KSx0aGlzLmNsaWVudC5vbigic2Vzc2lvbl9kZWxldGUiLGFzeW5jIGU9Pnt2YXIgcjtlLnRvcGljPT09KChyPXRoaXMuc2Vzc2lvbik9PW51bGw/dm9pZCAwOnIudG9waWMpJiYoYXdhaXQgdGhpcy5jbGVhbnVwKCksdGhpcy5ldmVudHMuZW1pdCgic2Vzc2lvbl9kZWxldGUiLGUpLHRoaXMuZXZlbnRzLmVtaXQoImRpc2Nvbm5lY3QiLGQzKFBnKHt9LEt0KCJVU0VSX0RJU0NPTk5FQ1RFRCIpKSx7ZGF0YTplLnRvcGljfSkpKX0pLHRoaXMub24oY3MuREVGQVVMVF9DSEFJTl9DSEFOR0VELGU9Pnt0aGlzLm9uQ2hhaW5DaGFuZ2VkKGUsITApfSl9Z2V0UHJvdmlkZXIoZSl7cmV0dXJuIHRoaXMucnBjUHJvdmlkZXJzW2VdfHx0aGlzLnJwY1Byb3ZpZGVyc1tKZF19b25TZXNzaW9uVXBkYXRlKCl7T2JqZWN0LmtleXModGhpcy5ycGNQcm92aWRlcnMpLmZvckVhY2goZT0+e3ZhciByO3RoaXMuZ2V0UHJvdmlkZXIoZSkudXBkYXRlTmFtZXNwYWNlKChyPXRoaXMuc2Vzc2lvbik9PW51bGw/dm9pZCAwOnIubmFtZXNwYWNlc1tlXSl9KX1zZXROYW1lc3BhY2VzKGUpe2NvbnN0e25hbWVzcGFjZXM6cixvcHRpb25hbE5hbWVzcGFjZXM6bixzZXNzaW9uUHJvcGVydGllczpzLHNjb3BlZFByb3BlcnRpZXM6aX09ZTtyJiZPYmplY3Qua2V5cyhyKS5sZW5ndGgmJih0aGlzLm5hbWVzcGFjZXM9ciksbiYmT2JqZWN0LmtleXMobikubGVuZ3RoJiYodGhpcy5vcHRpb25hbE5hbWVzcGFjZXM9biksdGhpcy5zZXNzaW9uUHJvcGVydGllcz1zLHRoaXMuc2NvcGVkUHJvcGVydGllcz1pfXZhbGlkYXRlQ2hhaW4oZSl7Y29uc3RbcixuXT1lPy5zcGxpdCgiOiIpfHxbIiIsIiJdO2lmKCF0aGlzLm5hbWVzcGFjZXN8fCFPYmplY3Qua2V5cyh0aGlzLm5hbWVzcGFjZXMpLmxlbmd0aClyZXR1cm5bcixuXTtpZihyJiYhT2JqZWN0LmtleXModGhpcy5uYW1lc3BhY2VzfHx7fSkubWFwKG89PllmKG8pKS5pbmNsdWRlcyhyKSl0aHJvdyBuZXcgRXJyb3IoYE5hbWVzcGFjZSAnJHtyfScgaXMgbm90IGNvbmZpZ3VyZWQuIFBsZWFzZSBjYWxsIGNvbm5lY3QoKSBmaXJzdCB3aXRoIG5hbWVzcGFjZSBjb25maWcuYCk7aWYociYmbilyZXR1cm5bcixuXTtjb25zdCBzPVlmKE9iamVjdC5rZXlzKHRoaXMubmFtZXNwYWNlcylbMF0pLGk9dGhpcy5ycGNQcm92aWRlcnNbc10uZ2V0RGVmYXVsdENoYWluKCk7cmV0dXJuW3MsaV19YXN5bmMgcmVxdWVzdEFjY291bnRzKCl7Y29uc3RbZV09dGhpcy52YWxpZGF0ZUNoYWluKCk7cmV0dXJuIGF3YWl0IHRoaXMuZ2V0UHJvdmlkZXIoZSkucmVxdWVzdEFjY291bnRzKCl9YXN5bmMgb25DaGFpbkNoYW5nZWQoZSxyPSExKXtpZighdGhpcy5uYW1lc3BhY2VzKXJldHVybjtjb25zdFtuLHNdPXRoaXMudmFsaWRhdGVDaGFpbihlKTtpZighcylyZXR1cm47dGhpcy51cGRhdGVOYW1lc3BhY2VDaGFpbihuLHMpLHRoaXMuZXZlbnRzLmVtaXQoImNoYWluQ2hhbmdlZCIscyk7Y29uc3QgaT10aGlzLmdldFByb3ZpZGVyKG4pLmdldERlZmF1bHRDaGFpbigpO3J8fHRoaXMuZ2V0UHJvdmlkZXIobikuc2V0RGVmYXVsdENoYWluKHMpLHRoaXMuZW1pdEFjY291bnRzQ2hhbmdlZE9uQ2hhaW5DaGFuZ2Uoe25hbWVzcGFjZTpuLHByZXZpb3VzQ2hhaW5JZDppLG5ld0NoYWluSWQ6ZX0pLGF3YWl0IHRoaXMucGVyc2lzdCgibmFtZXNwYWNlcyIsdGhpcy5uYW1lc3BhY2VzKX1lbWl0QWNjb3VudHNDaGFuZ2VkT25DaGFpbkNoYW5nZSh7bmFtZXNwYWNlOmUscHJldmlvdXNDaGFpbklkOnIsbmV3Q2hhaW5JZDpufSl7dmFyIHMsaTt0cnl7aWYocj09PW4pcmV0dXJuO2NvbnN0IG89KGk9KHM9dGhpcy5zZXNzaW9uKT09bnVsbD92b2lkIDA6cy5uYW1lc3BhY2VzW2VdKT09bnVsbD92b2lkIDA6aS5hY2NvdW50cztpZighbylyZXR1cm47Y29uc3QgYT1vLmZpbHRlcihjPT5jLmluY2x1ZGVzKGAke259OmApKS5tYXAoQVMpO2lmKCFtYyhhKSlyZXR1cm47dGhpcy5ldmVudHMuZW1pdCgiYWNjb3VudHNDaGFuZ2VkIixhKX1jYXRjaChvKXt0aGlzLmxvZ2dlci53YXJuKCJGYWlsZWQgdG8gZW1pdCBhY2NvdW50c0NoYW5nZWQgb24gY2hhaW4gY2hhbmdlIixvKX19dXBkYXRlTmFtZXNwYWNlQ2hhaW4oZSxyKXtpZighdGhpcy5uYW1lc3BhY2VzKXJldHVybjtjb25zdCBuPXRoaXMubmFtZXNwYWNlc1tlXT9lOmAke2V9OiR7cn1gLHM9e2NoYWluczpbXSxtZXRob2RzOltdLGV2ZW50czpbXSxkZWZhdWx0Q2hhaW46cn07dGhpcy5uYW1lc3BhY2VzW25dP3RoaXMubmFtZXNwYWNlc1tuXSYmKHRoaXMubmFtZXNwYWNlc1tuXS5kZWZhdWx0Q2hhaW49cik6dGhpcy5uYW1lc3BhY2VzW25dPXN9b25Db25uZWN0KCl7dGhpcy5jcmVhdGVQcm92aWRlcnMoKSx0aGlzLmV2ZW50cy5lbWl0KCJjb25uZWN0Iix7c2Vzc2lvbjp0aGlzLnNlc3Npb259KX1hc3luYyBjbGVhbnVwKCl7dGhpcy5uYW1lc3BhY2VzPXZvaWQgMCx0aGlzLm9wdGlvbmFsTmFtZXNwYWNlcz12b2lkIDAsdGhpcy5zZXNzaW9uUHJvcGVydGllcz12b2lkIDAsYXdhaXQgdGhpcy5kZWxldGVGcm9tU3RvcmUoIm5hbWVzcGFjZXMiKSxhd2FpdCB0aGlzLmRlbGV0ZUZyb21TdG9yZSgib3B0aW9uYWxOYW1lc3BhY2VzIiksYXdhaXQgdGhpcy5kZWxldGVGcm9tU3RvcmUoInNlc3Npb25Qcm9wZXJ0aWVzIiksdGhpcy5zZXNzaW9uPXZvaWQgMCxhd2FpdCB0aGlzLmNsZWFudXBQZW5kaW5nUGFpcmluZ3Moe2RlbGV0ZVBhaXJpbmdzOiEwfSksYXdhaXQgdGhpcy5jbGVhbnVwU3RvcmFnZSgpfWFzeW5jIHBlcnNpc3QoZSxyKXt2YXIgbjtjb25zdCBzPSgobj10aGlzLnNlc3Npb24pPT1udWxsP3ZvaWQgMDpuLnRvcGljKXx8IiI7YXdhaXQgdGhpcy5jbGllbnQuY29yZS5zdG9yYWdlLnNldEl0ZW0oYCR7Umd9LyR7ZX0ke3N9YCxyKX1hc3luYyBnZXRGcm9tU3RvcmUoZSl7dmFyIHI7Y29uc3Qgbj0oKHI9dGhpcy5zZXNzaW9uKT09bnVsbD92b2lkIDA6ci50b3BpYyl8fCIiO3JldHVybiBhd2FpdCB0aGlzLmNsaWVudC5jb3JlLnN0b3JhZ2UuZ2V0SXRlbShgJHtSZ30vJHtlfSR7bn1gKX1hc3luYyBkZWxldGVGcm9tU3RvcmUoZSl7dmFyIHI7Y29uc3Qgbj0oKHI9dGhpcy5zZXNzaW9uKT09bnVsbD92b2lkIDA6ci50b3BpYyl8fCIiO2F3YWl0IHRoaXMuY2xpZW50LmNvcmUuc3RvcmFnZS5yZW1vdmVJdGVtKGAke1JnfS8ke2V9JHtufWApfWFzeW5jIGNsZWFudXBTdG9yYWdlKCl7dmFyIGU7dHJ5e2lmKCgoZT10aGlzLmNsaWVudCk9PW51bGw/dm9pZCAwOmUuc2Vzc2lvbi5sZW5ndGgpPjApcmV0dXJuO2NvbnN0IHI9YXdhaXQgdGhpcy5jbGllbnQuY29yZS5zdG9yYWdlLmdldEtleXMoKTtmb3IoY29uc3QgbiBvZiByKW4uc3RhcnRzV2l0aChSZykmJmF3YWl0IHRoaXMuY2xpZW50LmNvcmUuc3RvcmFnZS5yZW1vdmVJdGVtKG4pfWNhdGNoKHIpe3RoaXMubG9nZ2VyLndhcm4oIkZhaWxlZCB0byBjbGVhbnVwIHN0b3JhZ2UiLHIpfX19O3ZhciBSaD17fTtjb25zdCBXZGU9Imh0dHBzOi8vc2VjdXJlLndhbGxldGNvbm5lY3Qub3JnL3NkayIsSGRlPSh0eXBlb2YgcHJvY2VzczwidSImJnR5cGVvZiBSaDwidSI/UmguTkVYVF9QVUJMSUNfU0VDVVJFX1NJVEVfU0RLX1VSTDp2b2lkIDApfHxXZGUscWRlPSh0eXBlb2YgcHJvY2VzczwidSImJnR5cGVvZiBSaDwidSI/UmguTkVYVF9QVUJMSUNfREVGQVVMVF9MT0dfTEVWRUw6dm9pZCAwKXx8ImVycm9yIixWZGU9KHR5cGVvZiBwcm9jZXNzPCJ1IiYmdHlwZW9mIFJoPCJ1Ij9SaC5ORVhUX1BVQkxJQ19TRUNVUkVfU0lURV9TREtfVkVSU0lPTjp2b2lkIDApfHwiNCIsSGU9e0FQUF9FVkVOVF9LRVk6IkB3M20tYXBwLyIsRlJBTUVfRVZFTlRfS0VZOiJAdzNtLWZyYW1lLyIsUlBDX01FVEhPRF9LRVk6IlJQQ18iLFNUT1JBR0VfS0VZOiJAYXBwa2l0LXdhbGxldC8iLFNFU1NJT05fVE9LRU5fS0VZOiJTRVNTSU9OX1RPS0VOX0tFWSIsRU1BSUxfTE9HSU5fVVNFRF9LRVk6IkVNQUlMX0xPR0lOX1VTRURfS0VZIixMQVNUX1VTRURfQ0hBSU5fS0VZOiJMQVNUX1VTRURfQ0hBSU5fS0VZIixMQVNUX0VNQUlMX0xPR0lOX1RJTUU6IkxBU1RfRU1BSUxfTE9HSU5fVElNRSIsRU1BSUw6IkVNQUlMIixQUkVGRVJSRURfQUNDT1VOVF9UWVBFOiJQUkVGRVJSRURfQUNDT1VOVF9UWVBFIixTTUFSVF9BQ0NPVU5UX0VOQUJMRUQ6IlNNQVJUX0FDQ09VTlRfRU5BQkxFRCIsU01BUlRfQUNDT1VOVF9FTkFCTEVEX05FVFdPUktTOiJTTUFSVF9BQ0NPVU5UX0VOQUJMRURfTkVUV09SS1MiLFNPQ0lBTF9VU0VSTkFNRToiU09DSUFMX1VTRVJOQU1FIixBUFBfU1dJVENIX05FVFdPUks6IkB3M20tYXBwL1NXSVRDSF9ORVRXT1JLIixBUFBfQ09OTkVDVF9FTUFJTDoiQHczbS1hcHAvQ09OTkVDVF9FTUFJTCIsQVBQX0NPTk5FQ1RfREVWSUNFOiJAdzNtLWFwcC9DT05ORUNUX0RFVklDRSIsQVBQX0NPTk5FQ1RfT1RQOiJAdzNtLWFwcC9DT05ORUNUX09UUCIsQVBQX0NPTk5FQ1RfU09DSUFMOiJAdzNtLWFwcC9DT05ORUNUX1NPQ0lBTCIsQVBQX0dFVF9TT0NJQUxfUkVESVJFQ1RfVVJJOiJAdzNtLWFwcC9HRVRfU09DSUFMX1JFRElSRUNUX1VSSSIsQVBQX0dFVF9VU0VSOiJAdzNtLWFwcC9HRVRfVVNFUiIsQVBQX1NJR05fT1VUOiJAdzNtLWFwcC9TSUdOX09VVCIsQVBQX0lTX0NPTk5FQ1RFRDoiQHczbS1hcHAvSVNfQ09OTkVDVEVEIixBUFBfR0VUX0NIQUlOX0lEOiJAdzNtLWFwcC9HRVRfQ0hBSU5fSUQiLEFQUF9SUENfUkVRVUVTVDoiQHczbS1hcHAvUlBDX1JFUVVFU1QiLEFQUF9VUERBVEVfRU1BSUw6IkB3M20tYXBwL1VQREFURV9FTUFJTCIsQVBQX1VQREFURV9FTUFJTF9QUklNQVJZX09UUDoiQHczbS1hcHAvVVBEQVRFX0VNQUlMX1BSSU1BUllfT1RQIixBUFBfVVBEQVRFX0VNQUlMX1NFQ09OREFSWV9PVFA6IkB3M20tYXBwL1VQREFURV9FTUFJTF9TRUNPTkRBUllfT1RQIixBUFBfQVdBSVRfVVBEQVRFX0VNQUlMOiJAdzNtLWFwcC9BV0FJVF9VUERBVEVfRU1BSUwiLEFQUF9TWU5DX1RIRU1FOiJAdzNtLWFwcC9TWU5DX1RIRU1FIixBUFBfU1lOQ19EQVBQX0RBVEE6IkB3M20tYXBwL1NZTkNfREFQUF9EQVRBIixBUFBfR0VUX1NNQVJUX0FDQ09VTlRfRU5BQkxFRF9ORVRXT1JLUzoiQHczbS1hcHAvR0VUX1NNQVJUX0FDQ09VTlRfRU5BQkxFRF9ORVRXT1JLUyIsQVBQX0lOSVRfU01BUlRfQUNDT1VOVDoiQHczbS1hcHAvSU5JVF9TTUFSVF9BQ0NPVU5UIixBUFBfU0VUX1BSRUZFUlJFRF9BQ0NPVU5UOiJAdzNtLWFwcC9TRVRfUFJFRkVSUkVEX0FDQ09VTlQiLEFQUF9DT05ORUNUX0ZBUkNBU1RFUjoiQHczbS1hcHAvQ09OTkVDVF9GQVJDQVNURVIiLEFQUF9HRVRfRkFSQ0FTVEVSX1VSSToiQHczbS1hcHAvR0VUX0ZBUkNBU1RFUl9VUkkiLEFQUF9SRUxPQUQ6IkB3M20tYXBwL1JFTE9BRCIsRlJBTUVfU1dJVENIX05FVFdPUktfRVJST1I6IkB3M20tZnJhbWUvU1dJVENIX05FVFdPUktfRVJST1IiLEZSQU1FX1NXSVRDSF9ORVRXT1JLX1NVQ0NFU1M6IkB3M20tZnJhbWUvU1dJVENIX05FVFdPUktfU1VDQ0VTUyIsRlJBTUVfQ09OTkVDVF9FTUFJTF9FUlJPUjoiQHczbS1mcmFtZS9DT05ORUNUX0VNQUlMX0VSUk9SIixGUkFNRV9DT05ORUNUX0VNQUlMX1NVQ0NFU1M6IkB3M20tZnJhbWUvQ09OTkVDVF9FTUFJTF9TVUNDRVNTIixGUkFNRV9DT05ORUNUX0RFVklDRV9FUlJPUjoiQHczbS1mcmFtZS9DT05ORUNUX0RFVklDRV9FUlJPUiIsRlJBTUVfQ09OTkVDVF9ERVZJQ0VfU1VDQ0VTUzoiQHczbS1mcmFtZS9DT05ORUNUX0RFVklDRV9TVUNDRVNTIixGUkFNRV9DT05ORUNUX09UUF9TVUNDRVNTOiJAdzNtLWZyYW1lL0NPTk5FQ1RfT1RQX1NVQ0NFU1MiLEZSQU1FX0NPTk5FQ1RfT1RQX0VSUk9SOiJAdzNtLWZyYW1lL0NPTk5FQ1RfT1RQX0VSUk9SIixGUkFNRV9DT05ORUNUX1NPQ0lBTF9TVUNDRVNTOiJAdzNtLWZyYW1lL0NPTk5FQ1RfU09DSUFMX1NVQ0NFU1MiLEZSQU1FX0NPTk5FQ1RfU09DSUFMX0VSUk9SOiJAdzNtLWZyYW1lL0NPTk5FQ1RfU09DSUFMX0VSUk9SIixGUkFNRV9DT05ORUNUX0ZBUkNBU1RFUl9TVUNDRVNTOiJAdzNtLWZyYW1lL0NPTk5FQ1RfRkFSQ0FTVEVSX1NVQ0NFU1MiLEZSQU1FX0NPTk5FQ1RfRkFSQ0FTVEVSX0VSUk9SOiJAdzNtLWZyYW1lL0NPTk5FQ1RfRkFSQ0FTVEVSX0VSUk9SIixGUkFNRV9HRVRfRkFSQ0FTVEVSX1VSSV9TVUNDRVNTOiJAdzNtLWZyYW1lL0dFVF9GQVJDQVNURVJfVVJJX1NVQ0NFU1MiLEZSQU1FX0dFVF9GQVJDQVNURVJfVVJJX0VSUk9SOiJAdzNtLWZyYW1lL0dFVF9GQVJDQVNURVJfVVJJX0VSUk9SIixGUkFNRV9HRVRfU09DSUFMX1JFRElSRUNUX1VSSV9TVUNDRVNTOiJAdzNtLWZyYW1lL0dFVF9TT0NJQUxfUkVESVJFQ1RfVVJJX1NVQ0NFU1MiLEZSQU1FX0dFVF9TT0NJQUxfUkVESVJFQ1RfVVJJX0VSUk9SOiJAdzNtLWZyYW1lL0dFVF9TT0NJQUxfUkVESVJFQ1RfVVJJX0VSUk9SIixGUkFNRV9HRVRfVVNFUl9TVUNDRVNTOiJAdzNtLWZyYW1lL0dFVF9VU0VSX1NVQ0NFU1MiLEZSQU1FX0dFVF9VU0VSX0VSUk9SOiJAdzNtLWZyYW1lL0dFVF9VU0VSX0VSUk9SIixGUkFNRV9TSUdOX09VVF9TVUNDRVNTOiJAdzNtLWZyYW1lL1NJR05fT1VUX1NVQ0NFU1MiLEZSQU1FX1NJR05fT1VUX0VSUk9SOiJAdzNtLWZyYW1lL1NJR05fT1VUX0VSUk9SIixGUkFNRV9JU19DT05ORUNURURfU1VDQ0VTUzoiQHczbS1mcmFtZS9JU19DT05ORUNURURfU1VDQ0VTUyIsRlJBTUVfSVNfQ09OTkVDVEVEX0VSUk9SOiJAdzNtLWZyYW1lL0lTX0NPTk5FQ1RFRF9FUlJPUiIsRlJBTUVfR0VUX0NIQUlOX0lEX1NVQ0NFU1M6IkB3M20tZnJhbWUvR0VUX0NIQUlOX0lEX1NVQ0NFU1MiLEZSQU1FX0dFVF9DSEFJTl9JRF9FUlJPUjoiQHczbS1mcmFtZS9HRVRfQ0hBSU5fSURfRVJST1IiLEZSQU1FX1JQQ19SRVFVRVNUX1NVQ0NFU1M6IkB3M20tZnJhbWUvUlBDX1JFUVVFU1RfU1VDQ0VTUyIsRlJBTUVfUlBDX1JFUVVFU1RfRVJST1I6IkB3M20tZnJhbWUvUlBDX1JFUVVFU1RfRVJST1IiLEZSQU1FX1NFU1NJT05fVVBEQVRFOiJAdzNtLWZyYW1lL1NFU1NJT05fVVBEQVRFIixGUkFNRV9VUERBVEVfRU1BSUxfU1VDQ0VTUzoiQHczbS1mcmFtZS9VUERBVEVfRU1BSUxfU1VDQ0VTUyIsRlJBTUVfVVBEQVRFX0VNQUlMX0VSUk9SOiJAdzNtLWZyYW1lL1VQREFURV9FTUFJTF9FUlJPUiIsRlJBTUVfVVBEQVRFX0VNQUlMX1BSSU1BUllfT1RQX1NVQ0NFU1M6IkB3M20tZnJhbWUvVVBEQVRFX0VNQUlMX1BSSU1BUllfT1RQX1NVQ0NFU1MiLEZSQU1FX1VQREFURV9FTUFJTF9QUklNQVJZX09UUF9FUlJPUjoiQHczbS1mcmFtZS9VUERBVEVfRU1BSUxfUFJJTUFSWV9PVFBfRVJST1IiLEZSQU1FX1VQREFURV9FTUFJTF9TRUNPTkRBUllfT1RQX1NVQ0NFU1M6IkB3M20tZnJhbWUvVVBEQVRFX0VNQUlMX1NFQ09OREFSWV9PVFBfU1VDQ0VTUyIsRlJBTUVfVVBEQVRFX0VNQUlMX1NFQ09OREFSWV9PVFBfRVJST1I6IkB3M20tZnJhbWUvVVBEQVRFX0VNQUlMX1NFQ09OREFSWV9PVFBfRVJST1IiLEZSQU1FX1NZTkNfVEhFTUVfU1VDQ0VTUzoiQHczbS1mcmFtZS9TWU5DX1RIRU1FX1NVQ0NFU1MiLEZSQU1FX1NZTkNfVEhFTUVfRVJST1I6IkB3M20tZnJhbWUvU1lOQ19USEVNRV9FUlJPUiIsRlJBTUVfU1lOQ19EQVBQX0RBVEFfU1VDQ0VTUzoiQHczbS1mcmFtZS9TWU5DX0RBUFBfREFUQV9TVUNDRVNTIixGUkFNRV9TWU5DX0RBUFBfREFUQV9FUlJPUjoiQHczbS1mcmFtZS9TWU5DX0RBUFBfREFUQV9FUlJPUiIsRlJBTUVfR0VUX1NNQVJUX0FDQ09VTlRfRU5BQkxFRF9ORVRXT1JLU19TVUNDRVNTOiJAdzNtLWZyYW1lL0dFVF9TTUFSVF9BQ0NPVU5UX0VOQUJMRURfTkVUV09SS1NfU1VDQ0VTUyIsRlJBTUVfR0VUX1NNQVJUX0FDQ09VTlRfRU5BQkxFRF9ORVRXT1JLU19FUlJPUjoiQHczbS1mcmFtZS9HRVRfU01BUlRfQUNDT1VOVF9FTkFCTEVEX05FVFdPUktTX0VSUk9SIixGUkFNRV9JTklUX1NNQVJUX0FDQ09VTlRfU1VDQ0VTUzoiQHczbS1mcmFtZS9JTklUX1NNQVJUX0FDQ09VTlRfU1VDQ0VTUyIsRlJBTUVfSU5JVF9TTUFSVF9BQ0NPVU5UX0VSUk9SOiJAdzNtLWZyYW1lL0lOSVRfU01BUlRfQUNDT1VOVF9FUlJPUiIsRlJBTUVfU0VUX1BSRUZFUlJFRF9BQ0NPVU5UX1NVQ0NFU1M6IkB3M20tZnJhbWUvU0VUX1BSRUZFUlJFRF9BQ0NPVU5UX1NVQ0NFU1MiLEZSQU1FX1NFVF9QUkVGRVJSRURfQUNDT1VOVF9FUlJPUjoiQHczbS1mcmFtZS9TRVRfUFJFRkVSUkVEX0FDQ09VTlRfRVJST1IiLEZSQU1FX1JFQURZOiJAdzNtLWZyYW1lL1JFQURZIixGUkFNRV9SRUxPQURfU1VDQ0VTUzoiQHczbS1mcmFtZS9SRUxPQURfU1VDQ0VTUyIsRlJBTUVfUkVMT0FEX0VSUk9SOiJAdzNtLWZyYW1lL1JFTE9BRF9FUlJPUiIsUlBDX1JFU1BPTlNFX1RZUEVfRVJST1I6IlJQQ19SRVNQT05TRV9FUlJPUiIsUlBDX1JFU1BPTlNFX1RZUEVfVFg6IlJQQ19SRVNQT05TRV9UUkFOU0FDVElPTl9IQVNIIixSUENfUkVTUE9OU0VfVFlQRV9PQkpFQ1Q6IlJQQ19SRVNQT05TRV9PQkpFQ1QifSxmdD17U0FGRV9SUENfTUVUSE9EUzpbImV0aF9hY2NvdW50cyIsImV0aF9ibG9ja051bWJlciIsImV0aF9jYWxsIiwiZXRoX2NoYWluSWQiLCJldGhfZXN0aW1hdGVHYXMiLCJldGhfZmVlSGlzdG9yeSIsImV0aF9nYXNQcmljZSIsImV0aF9nZXRBY2NvdW50IiwiZXRoX2dldEJhbGFuY2UiLCJldGhfZ2V0QmxvY2tCeUhhc2giLCJldGhfZ2V0QmxvY2tCeU51bWJlciIsImV0aF9nZXRCbG9ja1JlY2VpcHRzIiwiZXRoX2dldEJsb2NrVHJhbnNhY3Rpb25Db3VudEJ5SGFzaCIsImV0aF9nZXRCbG9ja1RyYW5zYWN0aW9uQ291bnRCeU51bWJlciIsImV0aF9nZXRDb2RlIiwiZXRoX2dldEZpbHRlckNoYW5nZXMiLCJldGhfZ2V0RmlsdGVyTG9ncyIsImV0aF9nZXRMb2dzIiwiZXRoX2dldFByb29mIiwiZXRoX2dldFN0b3JhZ2VBdCIsImV0aF9nZXRUcmFuc2FjdGlvbkJ5QmxvY2tIYXNoQW5kSW5kZXgiLCJldGhfZ2V0VHJhbnNhY3Rpb25CeUJsb2NrTnVtYmVyQW5kSW5kZXgiLCJldGhfZ2V0VHJhbnNhY3Rpb25CeUhhc2giLCJldGhfZ2V0VHJhbnNhY3Rpb25Db3VudCIsImV0aF9nZXRUcmFuc2FjdGlvblJlY2VpcHQiLCJldGhfZ2V0VW5jbGVDb3VudEJ5QmxvY2tIYXNoIiwiZXRoX2dldFVuY2xlQ291bnRCeUJsb2NrTnVtYmVyIiwiZXRoX21heFByaW9yaXR5RmVlUGVyR2FzIiwiZXRoX25ld0Jsb2NrRmlsdGVyIiwiZXRoX25ld0ZpbHRlciIsImV0aF9uZXdQZW5kaW5nVHJhbnNhY3Rpb25GaWx0ZXIiLCJldGhfc2VuZFJhd1RyYW5zYWN0aW9uIiwiZXRoX3N5bmNpbmciLCJldGhfdW5pbnN0YWxsRmlsdGVyIiwid2FsbGV0X2dldENhcGFiaWxpdGllcyIsIndhbGxldF9nZXRDYWxsc1N0YXR1cyIsImV0aF9nZXRVc2VyT3BlcmF0aW9uUmVjZWlwdCIsImV0aF9lc3RpbWF0ZVVzZXJPcGVyYXRpb25HYXMiLCJldGhfZ2V0VXNlck9wZXJhdGlvbkJ5SGFzaCIsImV0aF9zdXBwb3J0ZWRFbnRyeVBvaW50cyIsIndhbGxldF9nZXRBc3NldHMiXSxOT1RfU0FGRV9SUENfTUVUSE9EUzpbInBlcnNvbmFsX3NpZ24iLCJldGhfc2lnblR5cGVkRGF0YV92NCIsImV0aF9zZW5kVHJhbnNhY3Rpb24iLCJzb2xhbmFfc2lnbk1lc3NhZ2UiLCJzb2xhbmFfc2lnblRyYW5zYWN0aW9uIiwic29sYW5hX3NpZ25BbGxUcmFuc2FjdGlvbnMiLCJzb2xhbmFfc2lnbkFuZFNlbmRUcmFuc2FjdGlvbiIsIndhbGxldF9zZW5kQ2FsbHMiLCJ3YWxsZXRfZ3JhbnRQZXJtaXNzaW9ucyIsIndhbGxldF9yZXZva2VQZXJtaXNzaW9ucyIsImV0aF9zZW5kVXNlck9wZXJhdGlvbiJdLEdFVF9DSEFJTl9JRDoiZXRoX2NoYWluSWQiLFJQQ19NRVRIT0RfTk9UX0FMTE9XRURfTUVTU0FHRToiUmVxdWVzdGVkIFJQQyBjYWxsIGlzIG5vdCBhbGxvd2VkIixSUENfTUVUSE9EX05PVF9BTExPV0VEX1VJX01FU1NBR0U6IkFjdGlvbiBub3QgYWxsb3dlZCIsQUNDT1VOVF9UWVBFUzp7RU9BOiJlb2EiLFNNQVJUX0FDQ09VTlQ6InNtYXJ0QWNjb3VudCJ9fSxGbD1PYmplY3QuZnJlZXplKHttZXNzYWdlOiIiLHZhcmlhbnQ6InN1Y2Nlc3MiLHN2Zzp2b2lkIDAsb3BlbjohMSxhdXRvQ2xvc2U6ITB9KSxacj16dCh7Li4uRmx9KSxHZGU9e3N0YXRlOlpyLHN1YnNjcmliZUtleSh0LGUpe3JldHVybiBXcihacix0LGUpfSxzaG93TG9hZGluZyh0LGU9e30pe3RoaXMuX3Nob3dNZXNzYWdlKHttZXNzYWdlOnQsdmFyaWFudDoibG9hZGluZyIsLi4uZX0pfSxzaG93U3VjY2Vzcyh0KXt0aGlzLl9zaG93TWVzc2FnZSh7bWVzc2FnZTp0LHZhcmlhbnQ6InN1Y2Nlc3MifSl9LHNob3dTdmcodCxlKXt0aGlzLl9zaG93TWVzc2FnZSh7bWVzc2FnZTp0LHN2ZzplfSl9LHNob3dFcnJvcih0KXtjb25zdCBlPXVlLnBhcnNlRXJyb3IodCk7dGhpcy5fc2hvd01lc3NhZ2Uoe21lc3NhZ2U6ZSx2YXJpYW50OiJlcnJvciJ9KX0saGlkZSgpe1pyLm1lc3NhZ2U9RmwubWVzc2FnZSxaci52YXJpYW50PUZsLnZhcmlhbnQsWnIuc3ZnPUZsLnN2Zyxaci5vcGVuPUZsLm9wZW4sWnIuYXV0b0Nsb3NlPUZsLmF1dG9DbG9zZX0sX3Nob3dNZXNzYWdlKHttZXNzYWdlOnQsc3ZnOmUsdmFyaWFudDpyPSJzdWNjZXNzIixhdXRvQ2xvc2U6bj1GbC5hdXRvQ2xvc2V9KXtaci5vcGVuPyhaci5vcGVuPSExLHNldFRpbWVvdXQoKCk9Pntaci5tZXNzYWdlPXQsWnIudmFyaWFudD1yLFpyLnN2Zz1lLFpyLm9wZW49ITAsWnIuYXV0b0Nsb3NlPW59LDE1MCkpOihaci5tZXNzYWdlPXQsWnIudmFyaWFudD1yLFpyLnN2Zz1lLFpyLm9wZW49ITAsWnIuYXV0b0Nsb3NlPW4pfX0sRGU9R2RlLGRhPXtnZXRTSVdYKCl7cmV0dXJuIGNlLnN0YXRlLnNpd3h9LGFzeW5jIGluaXRpYWxpemVJZkVuYWJsZWQoKXtjb25zdCB0PWNlLnN0YXRlLnNpd3gsZT1XLmdldEFjdGl2ZUNhaXBBZGRyZXNzKCk7aWYoISh0JiZlKSlyZXR1cm47Y29uc3RbcixuLHNdPWUuc3BsaXQoIjoiKTtpZihXLmNoZWNrSWZTdXBwb3J0ZWROZXR3b3JrKHIpKXRyeXtpZigoYXdhaXQgdC5nZXRTZXNzaW9ucyhgJHtyfToke259YCxzKSkubGVuZ3RoKXJldHVybjthd2FpdCBCZS5vcGVuKHt2aWV3OiJTSVdYU2lnbk1lc3NhZ2UifSl9Y2F0Y2goaSl7Y29uc29sZS5lcnJvcigiU0lXWFV0aWw6aW5pdGlhbGl6ZUlmRW5hYmxlZCIsaSksSWUuc2VuZEV2ZW50KHt0eXBlOiJ0cmFjayIsZXZlbnQ6IlNJV1hfQVVUSF9FUlJPUiIscHJvcGVydGllczp0aGlzLmdldFNJV1hFdmVudFByb3BlcnRpZXMoKX0pLGF3YWl0IHhlLl9nZXRDbGllbnQoKT8uZGlzY29ubmVjdCgpLmNhdGNoKGNvbnNvbGUuZXJyb3IpLG5lLnJlc2V0KCJDb25uZWN0IiksRGUuc2hvd0Vycm9yKCJBIHByb2JsZW0gb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIGluaXRpYWxpemUgYXV0aGVudGljYXRpb24iKX19LGFzeW5jIHJlcXVlc3RTaWduTWVzc2FnZSgpe2NvbnN0IHQ9Y2Uuc3RhdGUuc2l3eCxlPXVlLmdldFBsYWluQWRkcmVzcyhXLmdldEFjdGl2ZUNhaXBBZGRyZXNzKCkpLHI9Vy5nZXRBY3RpdmVDYWlwTmV0d29yaygpLG49eGUuX2dldENsaWVudCgpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiU0lXWCBpcyBub3QgZW5hYmxlZCIpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiTm8gQWN0aXZlQ2FpcEFkZHJlc3MgZm91bmQiKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIk5vIEFjdGl2ZUNhaXBOZXR3b3JrIG9yIGNsaWVudCBmb3VuZCIpO2lmKCFuKXRocm93IG5ldyBFcnJvcigiTm8gQ29ubmVjdGlvbkNvbnRyb2xsZXIgY2xpZW50IGZvdW5kIik7dHJ5e2NvbnN0IHM9YXdhaXQgdC5jcmVhdGVNZXNzYWdlKHtjaGFpbklkOnIuY2FpcE5ldHdvcmtJZCxhY2NvdW50QWRkcmVzczplfSksaT1zLnRvU3RyaW5nKCk7ZmUuZ2V0Q29ubmVjdG9ySWQoci5jaGFpbk5hbWVzcGFjZSk9PT15ZS5DT05ORUNUT1JfSUQuQVVUSCYmbmUucHVzaFRyYW5zYWN0aW9uU3RhY2soe30pO2NvbnN0IGE9YXdhaXQgbi5zaWduTWVzc2FnZShpKTthd2FpdCB0LmFkZFNlc3Npb24oe2RhdGE6cyxtZXNzYWdlOmksc2lnbmF0dXJlOmF9KSxCZS5jbG9zZSgpLEllLnNlbmRFdmVudCh7dHlwZToidHJhY2siLGV2ZW50OiJTSVdYX0FVVEhfU1VDQ0VTUyIscHJvcGVydGllczp0aGlzLmdldFNJV1hFdmVudFByb3BlcnRpZXMoKX0pfWNhdGNoKHMpe2NvbnN0IGk9dGhpcy5nZXRTSVdYRXZlbnRQcm9wZXJ0aWVzKCk7KCFCZS5zdGF0ZS5vcGVufHxuZS5zdGF0ZS52aWV3PT09IkFwcHJvdmVUcmFuc2FjdGlvbiIpJiZhd2FpdCBCZS5vcGVuKHt2aWV3OiJTSVdYU2lnbk1lc3NhZ2UifSksaS5pc1NtYXJ0QWNjb3VudD9EZS5zaG93RXJyb3IoIlRoaXMgYXBwbGljYXRpb24gbWlnaHQgbm90IHN1cHBvcnQgU21hcnQgQWNjb3VudHMiKTpEZS5zaG93RXJyb3IoIlNpZ25hdHVyZSBkZWNsaW5lZCIpLEllLnNlbmRFdmVudCh7dHlwZToidHJhY2siLGV2ZW50OiJTSVdYX0FVVEhfRVJST1IiLHByb3BlcnRpZXM6aX0pLGNvbnNvbGUuZXJyb3IoIlNXSVhVdGlsOnJlcXVlc3RTaWduTWVzc2FnZSIscyl9fSxhc3luYyBjYW5jZWxTaWduTWVzc2FnZSgpe3RyeXt0aGlzLmdldFNJV1goKT8uZ2V0UmVxdWlyZWQ/LigpP2F3YWl0IHhlLmRpc2Nvbm5lY3QoKTpCZS5jbG9zZSgpLG5lLnJlc2V0KCJDb25uZWN0IiksSWUuc2VuZEV2ZW50KHtldmVudDoiQ0xJQ0tfQ0FOQ0VMX1NJV1giLHR5cGU6InRyYWNrIixwcm9wZXJ0aWVzOnRoaXMuZ2V0U0lXWEV2ZW50UHJvcGVydGllcygpfSl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiU0lXWFV0aWw6Y2FuY2VsU2lnbk1lc3NhZ2UiLHQpfX0sYXN5bmMgZ2V0U2Vzc2lvbnMoKXtjb25zdCB0PWNlLnN0YXRlLnNpd3gsZT11ZS5nZXRQbGFpbkFkZHJlc3MoVy5nZXRBY3RpdmVDYWlwQWRkcmVzcygpKSxyPVcuZ2V0QWN0aXZlQ2FpcE5ldHdvcmsoKTtyZXR1cm4gdCYmZSYmcj90LmdldFNlc3Npb25zKHIuY2FpcE5ldHdvcmtJZCxlKTpbXX0sYXN5bmMgaXNTSVdYQ2xvc2VEaXNhYmxlZCgpe2NvbnN0IHQ9dGhpcy5nZXRTSVdYKCk7aWYodCl7Y29uc3QgZT1uZS5zdGF0ZS52aWV3PT09IkFwcHJvdmVUcmFuc2FjdGlvbiIscj1uZS5zdGF0ZS52aWV3PT09IlNJV1hTaWduTWVzc2FnZSI7aWYoZXx8cilyZXR1cm4gdC5nZXRSZXF1aXJlZD8uKCkmJihhd2FpdCB0aGlzLmdldFNlc3Npb25zKCkpLmxlbmd0aD09PTB9cmV0dXJuITF9LGFzeW5jIHVuaXZlcnNhbFByb3ZpZGVyQXV0aGVudGljYXRlKHt1bml2ZXJzYWxQcm92aWRlcjp0LGNoYWluczplLG1ldGhvZHM6cn0pe2NvbnN0IG49ZGEuZ2V0U0lXWCgpLHM9bmV3IFNldChlLm1hcChhPT5hLnNwbGl0KCI6IilbMF0pKTtpZighbnx8cy5zaXplIT09MXx8IXMuaGFzKCJlaXAxNTUiKSlyZXR1cm4hMTtjb25zdCBpPWF3YWl0IG4uY3JlYXRlTWVzc2FnZSh7Y2hhaW5JZDpXLmdldEFjdGl2ZUNhaXBOZXR3b3JrKCk/LmNhaXBOZXR3b3JrSWR8fCIiLGFjY291bnRBZGRyZXNzOiIifSksbz1hd2FpdCB0LmF1dGhlbnRpY2F0ZSh7bm9uY2U6aS5ub25jZSxkb21haW46aS5kb21haW4sdXJpOmkudXJpLGV4cDppLmV4cGlyYXRpb25UaW1lLGlhdDppLmlzc3VlZEF0LG5iZjppLm5vdEJlZm9yZSxyZXF1ZXN0SWQ6aS5yZXF1ZXN0SWQsdmVyc2lvbjppLnZlcnNpb24scmVzb3VyY2VzOmkucmVzb3VyY2VzLHN0YXRlbWVudDppLnN0YXRlbWVudCxjaGFpbklkOmkuY2hhaW5JZCxtZXRob2RzOnIsY2hhaW5zOltpLmNoYWluSWQsLi4uZS5maWx0ZXIoYT0+YSE9PWkuY2hhaW5JZCldfSk7aWYoRGUuc2hvd0xvYWRpbmcoIkF1dGhlbnRpY2F0aW5nLi4uIix7YXV0b0Nsb3NlOiExfSksb2Uuc2V0Q29ubmVjdGVkV2FsbGV0SW5mbyh7Li4uby5zZXNzaW9uLnBlZXIubWV0YWRhdGEsbmFtZTpvLnNlc3Npb24ucGVlci5tZXRhZGF0YS5uYW1lLGljb246by5zZXNzaW9uLnBlZXIubWV0YWRhdGEuaWNvbnM/LlswXSx0eXBlOiJXQUxMRVRfQ09OTkVDVCJ9LEFycmF5LmZyb20ocylbMF0pLG8/LmF1dGhzPy5sZW5ndGgpe2NvbnN0IGE9by5hdXRocy5tYXAoYz0+e2NvbnN0IGw9dC5jbGllbnQuZm9ybWF0QXV0aE1lc3NhZ2Uoe3JlcXVlc3Q6Yy5wLGlzczpjLnAuaXNzfSk7cmV0dXJue2RhdGE6ey4uLmMucCxhY2NvdW50QWRkcmVzczpjLnAuaXNzLnNwbGl0KCI6Iikuc2xpY2UoLTEpLmpvaW4oIiIpLGNoYWluSWQ6Yy5wLmlzcy5zcGxpdCgiOiIpLnNsaWNlKDIsNCkuam9pbigiOiIpLHVyaTpjLnAuYXVkLHZlcnNpb246Yy5wLnZlcnNpb258fGkudmVyc2lvbixleHBpcmF0aW9uVGltZTpjLnAuZXhwLGlzc3VlZEF0OmMucC5pYXQsbm90QmVmb3JlOmMucC5uYmZ9LG1lc3NhZ2U6bCxzaWduYXR1cmU6Yy5zLnMsY2FjYW86Y319KTt0cnl7YXdhaXQgbi5zZXRTZXNzaW9ucyhhKSxJZS5zZW5kRXZlbnQoe3R5cGU6InRyYWNrIixldmVudDoiU0lXWF9BVVRIX1NVQ0NFU1MiLHByb3BlcnRpZXM6ZGEuZ2V0U0lXWEV2ZW50UHJvcGVydGllcygpfSl9Y2F0Y2goYyl7dGhyb3cgY29uc29sZS5lcnJvcigiU0lXWDp1bml2ZXJzYWxQcm92aWRlckF1dGggLSBmYWlsZWQgdG8gc2V0IHNlc3Npb25zIixjKSxJZS5zZW5kRXZlbnQoe3R5cGU6InRyYWNrIixldmVudDoiU0lXWF9BVVRIX0VSUk9SIixwcm9wZXJ0aWVzOmRhLmdldFNJV1hFdmVudFByb3BlcnRpZXMoKX0pLGF3YWl0IHQuZGlzY29ubmVjdCgpLmNhdGNoKGNvbnNvbGUuZXJyb3IpLGN9ZmluYWxseXtEZS5oaWRlKCl9fXJldHVybiEwfSxnZXRTSVdYRXZlbnRQcm9wZXJ0aWVzKCl7Y29uc3QgdD1XLnN0YXRlLmFjdGl2ZUNoYWluO3JldHVybntuZXR3b3JrOlcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWR8fCIiLGlzU21hcnRBY2NvdW50Om9lLnN0YXRlLnByZWZlcnJlZEFjY291bnRUeXBlcz8uW3RdPT09ZnQuQUNDT1VOVF9UWVBFUy5TTUFSVF9BQ0NPVU5UfX0sYXN5bmMgY2xlYXJTZXNzaW9ucygpe2NvbnN0IHQ9dGhpcy5nZXRTSVdYKCk7dCYmYXdhaXQgdC5zZXRTZXNzaW9ucyhbXSl9fSxucj16dCh7dHJhbnNhY3Rpb25zOltdLGNvaW5iYXNlVHJhbnNhY3Rpb25zOnt9LHRyYW5zYWN0aW9uc0J5WWVhcjp7fSxsYXN0TmV0d29ya0luVmlldzp2b2lkIDAsbG9hZGluZzohMSxlbXB0eTohMSxuZXh0OnZvaWQgMH0pLEtkZT17c3RhdGU6bnIsc3Vic2NyaWJlKHQpe3JldHVybiBLcihuciwoKT0+dChucikpfSxzZXRMYXN0TmV0d29ya0luVmlldyh0KXtuci5sYXN0TmV0d29ya0luVmlldz10fSxhc3luYyBmZXRjaFRyYW5zYWN0aW9ucyh0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiVHJhbnNhY3Rpb25zIGNhbid0IGJlIGZldGNoZWQgd2l0aG91dCBhbiBhY2NvdW50QWRkcmVzcyIpO25yLmxvYWRpbmc9ITA7dHJ5e2NvbnN0IHI9YXdhaXQgR2UuZmV0Y2hUcmFuc2FjdGlvbnMoe2FjY291bnQ6dCxjdXJzb3I6bnIubmV4dCxvbnJhbXA6ZSxjYWNoZTplPT09ImNvaW5iYXNlIj8ibm8tY2FjaGUiOnZvaWQgMCxjaGFpbklkOlcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWR9KSxuPUlyLmZpbHRlclNwYW1UcmFuc2FjdGlvbnMoci5kYXRhKSxzPUlyLmZpbHRlckJ5Q29ubmVjdGVkQ2hhaW4obiksaT1bLi4ubnIudHJhbnNhY3Rpb25zLC4uLnNdO25yLmxvYWRpbmc9ITEsZT09PSJjb2luYmFzZSI/bnIuY29pbmJhc2VUcmFuc2FjdGlvbnM9SXIuZ3JvdXBUcmFuc2FjdGlvbnNCeVllYXJBbmRNb250aChuci5jb2luYmFzZVRyYW5zYWN0aW9ucyxyLmRhdGEpOihuci50cmFuc2FjdGlvbnM9aSxuci50cmFuc2FjdGlvbnNCeVllYXI9SXIuZ3JvdXBUcmFuc2FjdGlvbnNCeVllYXJBbmRNb250aChuci50cmFuc2FjdGlvbnNCeVllYXIscykpLG5yLmVtcHR5PWkubGVuZ3RoPT09MCxuci5uZXh0PXIubmV4dD9yLm5leHQ6dm9pZCAwfWNhdGNoe2NvbnN0IG49Vy5zdGF0ZS5hY3RpdmVDaGFpbjtJZS5zZW5kRXZlbnQoe3R5cGU6InRyYWNrIixldmVudDoiRVJST1JfRkVUQ0hfVFJBTlNBQ1RJT05TIixwcm9wZXJ0aWVzOnthZGRyZXNzOnQscHJvamVjdElkOmNlLnN0YXRlLnByb2plY3RJZCxjdXJzb3I6bnIubmV4dCxpc1NtYXJ0QWNjb3VudDpvZS5zdGF0ZS5wcmVmZXJyZWRBY2NvdW50VHlwZXM/LltuXT09PWZ0LkFDQ09VTlRfVFlQRVMuU01BUlRfQUNDT1VOVH19KSxEZS5zaG93RXJyb3IoIkZhaWxlZCB0byBmZXRjaCB0cmFuc2FjdGlvbnMiKSxuci5sb2FkaW5nPSExLG5yLmVtcHR5PSEwLG5yLm5leHQ9dm9pZCAwfX0sZ3JvdXBUcmFuc2FjdGlvbnNCeVllYXJBbmRNb250aCh0PXt9LGU9W10pe2NvbnN0IHI9dDtyZXR1cm4gZS5mb3JFYWNoKG49Pntjb25zdCBzPW5ldyBEYXRlKG4ubWV0YWRhdGEubWluZWRBdCkuZ2V0RnVsbFllYXIoKSxpPW5ldyBEYXRlKG4ubWV0YWRhdGEubWluZWRBdCkuZ2V0TW9udGgoKSxvPXJbc10/P3t9LGM9KG9baV0/P1tdKS5maWx0ZXIobD0+bC5pZCE9PW4uaWQpO3Jbc109ey4uLm8sW2ldOlsuLi5jLG5dLnNvcnQoKGwsZCk9Pm5ldyBEYXRlKGQubWV0YWRhdGEubWluZWRBdCkuZ2V0VGltZSgpLW5ldyBEYXRlKGwubWV0YWRhdGEubWluZWRBdCkuZ2V0VGltZSgpKX19KSxyfSxmaWx0ZXJTcGFtVHJhbnNhY3Rpb25zKHQpe3JldHVybiB0LmZpbHRlcihlPT4hZS50cmFuc2ZlcnMuZXZlcnkobj0+bi5uZnRfaW5mbz8uZmxhZ3MuaXNfc3BhbT09PSEwKSl9LGZpbHRlckJ5Q29ubmVjdGVkQ2hhaW4odCl7Y29uc3QgZT1XLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkO3JldHVybiB0LmZpbHRlcihuPT5uLm1ldGFkYXRhLmNoYWluPT09ZSl9LGNsZWFyQ3Vyc29yKCl7bnIubmV4dD12b2lkIDB9LHJlc2V0VHJhbnNhY3Rpb25zKCl7bnIudHJhbnNhY3Rpb25zPVtdLG5yLnRyYW5zYWN0aW9uc0J5WWVhcj17fSxuci5sYXN0TmV0d29ya0luVmlldz12b2lkIDAsbnIubG9hZGluZz0hMSxuci5lbXB0eT0hMSxuci5uZXh0PXZvaWQgMH19LElyPVduKEtkZSwiQVBJX0VSUk9SIiksYXI9enQoe2Nvbm5lY3Rpb25zOm5ldyBNYXAsd2NFcnJvcjohMSxidWZmZXJpbmc6ITEsc3RhdHVzOiJkaXNjb25uZWN0ZWQifSk7bGV0IHdsO2NvbnN0IFpkZT17c3RhdGU6YXIsc3Vic2NyaWJlS2V5KHQsZSl7cmV0dXJuIFdyKGFyLHQsZSl9LF9nZXRDbGllbnQoKXtyZXR1cm4gYXIuX2NsaWVudH0sc2V0Q2xpZW50KHQpe2FyLl9jbGllbnQ9d3UodCl9LGFzeW5jIGNvbm5lY3RXYWxsZXRDb25uZWN0KCl7aWYodWUuaXNUZWxlZ3JhbSgpfHx1ZS5pc1NhZmFyaSgpJiZ1ZS5pc0lvcygpKXtpZih3bCl7YXdhaXQgd2wsd2w9dm9pZCAwO3JldHVybn1pZighdWUuaXNQYWlyaW5nRXhwaXJlZChhcj8ud2NQYWlyaW5nRXhwaXJ5KSl7Y29uc3QgdD1hci53Y1VyaTthci53Y1VyaT10O3JldHVybn13bD14ZS5fZ2V0Q2xpZW50KCk/LmNvbm5lY3RXYWxsZXRDb25uZWN0Py4oKS5jYXRjaCgoKT0+e30pLHhlLnN0YXRlLnN0YXR1cz0iY29ubmVjdGluZyIsYXdhaXQgd2wsd2w9dm9pZCAwLGFyLndjUGFpcmluZ0V4cGlyeT12b2lkIDAseGUuc3RhdGUuc3RhdHVzPSJjb25uZWN0ZWQifWVsc2UgYXdhaXQgeGUuX2dldENsaWVudCgpPy5jb25uZWN0V2FsbGV0Q29ubmVjdD8uKCl9LGFzeW5jIGNvbm5lY3RFeHRlcm5hbCh0LGUscj0hMCl7YXdhaXQgeGUuX2dldENsaWVudCgpPy5jb25uZWN0RXh0ZXJuYWw/Lih0KSxyJiZXLnNldEFjdGl2ZU5hbWVzcGFjZShlKX0sYXN5bmMgcmVjb25uZWN0RXh0ZXJuYWwodCl7YXdhaXQgeGUuX2dldENsaWVudCgpPy5yZWNvbm5lY3RFeHRlcm5hbD8uKHQpO2NvbnN0IGU9dC5jaGFpbnx8Vy5zdGF0ZS5hY3RpdmVDaGFpbjtlJiZmZS5zZXRDb25uZWN0b3JJZCh0LmlkLGUpfSxhc3luYyBzZXRQcmVmZXJyZWRBY2NvdW50VHlwZSh0LGUpe0JlLnNldExvYWRpbmcoITAsVy5zdGF0ZS5hY3RpdmVDaGFpbik7Y29uc3Qgcj1mZS5nZXRBdXRoQ29ubmVjdG9yKCk7ciYmKG9lLnNldFByZWZlcnJlZEFjY291bnRUeXBlKHQsZSksYXdhaXQgci5wcm92aWRlci5zZXRQcmVmZXJyZWRBY2NvdW50KHQpLCRlLnNldFByZWZlcnJlZEFjY291bnRUeXBlcyhvZS5zdGF0ZS5wcmVmZXJyZWRBY2NvdW50VHlwZXM/P3tbZV06dH0pLGF3YWl0IHhlLnJlY29ubmVjdEV4dGVybmFsKHIpLEJlLnNldExvYWRpbmcoITEsVy5zdGF0ZS5hY3RpdmVDaGFpbiksSWUuc2VuZEV2ZW50KHt0eXBlOiJ0cmFjayIsZXZlbnQ6IlNFVF9QUkVGRVJSRURfQUNDT1VOVF9UWVBFIixwcm9wZXJ0aWVzOnthY2NvdW50VHlwZTp0LG5ldHdvcms6Vy5zdGF0ZS5hY3RpdmVDYWlwTmV0d29yaz8uY2FpcE5ldHdvcmtJZHx8IiJ9fSkpfSxhc3luYyBzaWduTWVzc2FnZSh0KXtyZXR1cm4geGUuX2dldENsaWVudCgpPy5zaWduTWVzc2FnZSh0KX0scGFyc2VVbml0cyh0LGUpe3JldHVybiB4ZS5fZ2V0Q2xpZW50KCk/LnBhcnNlVW5pdHModCxlKX0sZm9ybWF0VW5pdHModCxlKXtyZXR1cm4geGUuX2dldENsaWVudCgpPy5mb3JtYXRVbml0cyh0LGUpfSxhc3luYyBzZW5kVHJhbnNhY3Rpb24odCl7cmV0dXJuIHhlLl9nZXRDbGllbnQoKT8uc2VuZFRyYW5zYWN0aW9uKHQpfSxhc3luYyBnZXRDYXBhYmlsaXRpZXModCl7cmV0dXJuIHhlLl9nZXRDbGllbnQoKT8uZ2V0Q2FwYWJpbGl0aWVzKHQpfSxhc3luYyBncmFudFBlcm1pc3Npb25zKHQpe3JldHVybiB4ZS5fZ2V0Q2xpZW50KCk/LmdyYW50UGVybWlzc2lvbnModCl9LGFzeW5jIHdhbGxldEdldEFzc2V0cyh0KXtyZXR1cm4geGUuX2dldENsaWVudCgpPy53YWxsZXRHZXRBc3NldHModCk/P3t9fSxhc3luYyBlc3RpbWF0ZUdhcyh0KXtyZXR1cm4geGUuX2dldENsaWVudCgpPy5lc3RpbWF0ZUdhcyh0KX0sYXN5bmMgd3JpdGVDb250cmFjdCh0KXtyZXR1cm4geGUuX2dldENsaWVudCgpPy53cml0ZUNvbnRyYWN0KHQpfSxhc3luYyBnZXRFbnNBZGRyZXNzKHQpe3JldHVybiB4ZS5fZ2V0Q2xpZW50KCk/LmdldEVuc0FkZHJlc3ModCl9LGFzeW5jIGdldEVuc0F2YXRhcih0KXtyZXR1cm4geGUuX2dldENsaWVudCgpPy5nZXRFbnNBdmF0YXIodCl9LGNoZWNrSW5zdGFsbGVkKHQpe3JldHVybiB4ZS5fZ2V0Q2xpZW50KCk/LmNoZWNrSW5zdGFsbGVkPy4odCl8fCExfSxyZXNldFdjQ29ubmVjdGlvbigpe2FyLndjVXJpPXZvaWQgMCxhci53Y1BhaXJpbmdFeHBpcnk9dm9pZCAwLGFyLndjTGlua2luZz12b2lkIDAsYXIucmVjZW50V2FsbGV0PXZvaWQgMCxhci5zdGF0dXM9ImRpc2Nvbm5lY3RlZCIsSXIucmVzZXRUcmFuc2FjdGlvbnMoKSwkZS5kZWxldGVXYWxsZXRDb25uZWN0RGVlcExpbmsoKX0scmVzZXRVcmkoKXthci53Y1VyaT12b2lkIDAsYXIud2NQYWlyaW5nRXhwaXJ5PXZvaWQgMCx3bD12b2lkIDB9LGZpbmFsaXplV2NDb25uZWN0aW9uKCl7Y29uc3R7d2NMaW5raW5nOnQscmVjZW50V2FsbGV0OmV9PXhlLnN0YXRlO3QmJiRlLnNldFdhbGxldENvbm5lY3REZWVwTGluayh0KSxlJiYkZS5zZXRBcHBLaXRSZWNlbnQoZSksSWUuc2VuZEV2ZW50KHt0eXBlOiJ0cmFjayIsZXZlbnQ6IkNPTk5FQ1RfU1VDQ0VTUyIscHJvcGVydGllczp7bWV0aG9kOnQ/Im1vYmlsZSI6InFyY29kZSIsbmFtZTpuZS5zdGF0ZS5kYXRhPy53YWxsZXQ/Lm5hbWV8fCJVbmtub3duIn19KX0sc2V0V2NCYXNpYyh0KXthci53Y0Jhc2ljPXR9LHNldFVyaSh0KXthci53Y1VyaT10LGFyLndjUGFpcmluZ0V4cGlyeT11ZS5nZXRQYWlyaW5nRXhwaXJ5KCl9LHNldFdjTGlua2luZyh0KXthci53Y0xpbmtpbmc9dH0sc2V0V2NFcnJvcih0KXthci53Y0Vycm9yPXQsYXIuYnVmZmVyaW5nPSExfSxzZXRSZWNlbnRXYWxsZXQodCl7YXIucmVjZW50V2FsbGV0PXR9LHNldEJ1ZmZlcmluZyh0KXthci5idWZmZXJpbmc9dH0sc2V0U3RhdHVzKHQpe2FyLnN0YXR1cz10fSxhc3luYyBkaXNjb25uZWN0KHQpe3RyeXtCZS5zZXRMb2FkaW5nKCEwLHQpLGF3YWl0IGRhLmNsZWFyU2Vzc2lvbnMoKSxhd2FpdCBXLmRpc2Nvbm5lY3QodCksQmUuc2V0TG9hZGluZyghMSx0KSxmZS5zZXRGaWx0ZXJCeU5hbWVzcGFjZSh2b2lkIDApfWNhdGNoKGUpe3Rocm93IG5ldyBqMCgiRmFpbGVkIHRvIGRpc2Nvbm5lY3QiLCJJTlRFUk5BTF9TREtfRVJST1IiLGUpfX0sc2V0Q29ubmVjdGlvbnModCxlKXthci5jb25uZWN0aW9ucy5zZXQoZSx0KX0sc3dpdGNoQWNjb3VudCh7Y29ubmVjdGlvbjp0LGFkZHJlc3M6ZSxuYW1lc3BhY2U6cn0pe2lmKGZlLnN0YXRlLmFjdGl2ZUNvbm5lY3Rvcklkc1tyXT09PXQuY29ubmVjdG9ySWQpe2NvbnN0IGk9Vy5zdGF0ZS5hY3RpdmVDYWlwTmV0d29yaztpZihpKXtjb25zdCBvPWAke3J9OiR7aS5pZH06JHtlfWA7b2Uuc2V0Q2FpcEFkZHJlc3MobyxyKX1lbHNlIGNvbnNvbGUud2FybihgTm8gY3VycmVudCBuZXR3b3JrIGZvdW5kIGZvciBuYW1lc3BhY2UgIiR7cn0iYCl9ZWxzZXtjb25zdCBpPWZlLmdldENvbm5lY3Rvcih0LmNvbm5lY3RvcklkKTtpP3hlLmNvbm5lY3RFeHRlcm5hbChpLHIpOmNvbnNvbGUud2FybihgTm8gY29ubmVjdG9yIGZvdW5kIGZvciBuYW1lc3BhY2UgIiR7cn0iYCl9fX0seGU9V24oWmRlKSxxZD16dCh7bG9hZGluZzohMSxvcGVuOiExLHNlbGVjdGVkTmV0d29ya0lkOnZvaWQgMCxhY3RpdmVDaGFpbjp2b2lkIDAsaW5pdGlhbGl6ZWQ6ITF9KSx5bz17c3RhdGU6cWQsc3Vic2NyaWJlKHQpe3JldHVybiBLcihxZCwoKT0+dChxZCkpfSxzdWJzY3JpYmVPcGVuKHQpe3JldHVybiBXcihxZCwib3BlbiIsdCl9LHNldCh0KXtPYmplY3QuYXNzaWduKHFkLHsuLi5xZCwuLi50fSl9fSxoMz17Y3JlYXRlQmFsYW5jZSh0LGUpe2NvbnN0IHI9e25hbWU6dC5tZXRhZGF0YS5uYW1lfHwiIixzeW1ib2w6dC5tZXRhZGF0YS5zeW1ib2x8fCIiLGRlY2ltYWxzOnQubWV0YWRhdGEuZGVjaW1hbHN8fDAsdmFsdWU6dC5tZXRhZGF0YS52YWx1ZXx8MCxwcmljZTp0Lm1ldGFkYXRhLnByaWNlfHwwLGljb25Vcmw6dC5tZXRhZGF0YS5pY29uVXJsfHwiIn07cmV0dXJue25hbWU6ci5uYW1lLHN5bWJvbDpyLnN5bWJvbCxjaGFpbklkOmUsYWRkcmVzczp0LmFkZHJlc3M9PT0ibmF0aXZlIj92b2lkIDA6dGhpcy5jb252ZXJ0QWRkcmVzc1RvQ0FJUDEwQWRkcmVzcyh0LmFkZHJlc3MsZSksdmFsdWU6ci52YWx1ZSxwcmljZTpyLnByaWNlLHF1YW50aXR5OntkZWNpbWFsczpyLmRlY2ltYWxzLnRvU3RyaW5nKCksbnVtZXJpYzp0aGlzLmNvbnZlcnRIZXhUb0JhbGFuY2Uoe2hleDp0LmJhbGFuY2UsZGVjaW1hbHM6ci5kZWNpbWFsc30pfSxpY29uVXJsOnIuaWNvblVybH19LGNvbnZlcnRIZXhUb0JhbGFuY2Uoe2hleDp0LGRlY2ltYWxzOmV9KXtyZXR1cm4gaXAoQmlnSW50KHQpLGUpfSxjb252ZXJ0QWRkcmVzc1RvQ0FJUDEwQWRkcmVzcyh0LGUpe3JldHVybmAke2V9OiR7dH1gfSxjcmVhdGVDQUlQMkNoYWluSWQodCxlKXtyZXR1cm5gJHtlfToke3BhcnNlSW50KHQsMTYpfWB9LGdldENoYWluSWRIZXhGcm9tQ0FJUDJDaGFpbklkKHQpe2NvbnN0IGU9dC5zcGxpdCgiOiIpO2lmKGUubGVuZ3RoPDJ8fCFlWzFdKXJldHVybiIweDAiO2NvbnN0IHI9ZVsxXSxuPXBhcnNlSW50KHIsMTApO3JldHVybiBpc05hTihuKT8iMHgwIjpgMHgke24udG9TdHJpbmcoMTYpfWB9LGlzV2FsbGV0R2V0QXNzZXRzUmVzcG9uc2UodCl7cmV0dXJuIHR5cGVvZiB0IT0ib2JqZWN0Inx8dD09PW51bGw/ITE6T2JqZWN0LnZhbHVlcyh0KS5ldmVyeShlPT5BcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KHI9PnRoaXMuaXNWYWxpZEFzc2V0KHIpKSl9LGlzVmFsaWRBc3NldCh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJvYmplY3QiJiZ0IT09bnVsbCYmdHlwZW9mIHQuYWRkcmVzcz09InN0cmluZyImJnR5cGVvZiB0LmJhbGFuY2U9PSJzdHJpbmciJiYodC50eXBlPT09IkVSQzIwInx8dC50eXBlPT09Ik5BVElWRSIpJiZ0eXBlb2YgdC5tZXRhZGF0YT09Im9iamVjdCImJnQubWV0YWRhdGEhPT1udWxsJiZ0eXBlb2YgdC5tZXRhZGF0YS5uYW1lPT0ic3RyaW5nIiYmdHlwZW9mIHQubWV0YWRhdGEuc3ltYm9sPT0ic3RyaW5nIiYmdHlwZW9mIHQubWV0YWRhdGEuZGVjaW1hbHM9PSJudW1iZXIiJiZ0eXBlb2YgdC5tZXRhZGF0YS5wcmljZT09Im51bWJlciImJnR5cGVvZiB0Lm1ldGFkYXRhLmljb25Vcmw9PSJzdHJpbmcifX0seWI9e2FzeW5jIGdldE15VG9rZW5zV2l0aEJhbGFuY2UodCl7Y29uc3QgZT1vZS5zdGF0ZS5hZGRyZXNzLHI9Vy5zdGF0ZS5hY3RpdmVDYWlwTmV0d29yaztpZighZXx8IXIpcmV0dXJuW107aWYoci5jaGFpbk5hbWVzcGFjZT09PSJlaXAxNTUiKXtjb25zdCBzPWF3YWl0IHRoaXMuZ2V0RUlQMTU1QmFsYW5jZXMoZSxyKTtpZihzKXJldHVybiB0aGlzLmZpbHRlckxvd1F1YWxpdHlUb2tlbnMocyl9Y29uc3Qgbj1hd2FpdCBHZS5nZXRCYWxhbmNlKGUsci5jYWlwTmV0d29ya0lkLHQpO3JldHVybiB0aGlzLmZpbHRlckxvd1F1YWxpdHlUb2tlbnMobi5iYWxhbmNlcyl9LGFzeW5jIGdldEVJUDE1NUJhbGFuY2VzKHQsZSl7dHJ5e2NvbnN0IHI9aDMuZ2V0Q2hhaW5JZEhleEZyb21DQUlQMkNoYWluSWQoZS5jYWlwTmV0d29ya0lkKTtpZighKGF3YWl0IHhlLmdldENhcGFiaWxpdGllcyh0KSk/LltyXT8uYXNzZXREaXNjb3Zlcnk/LnN1cHBvcnRlZClyZXR1cm4gbnVsbDtjb25zdCBzPWF3YWl0IHhlLndhbGxldEdldEFzc2V0cyh7YWNjb3VudDp0LGNoYWluRmlsdGVyOltyXX0pO3JldHVybiBoMy5pc1dhbGxldEdldEFzc2V0c1Jlc3BvbnNlKHMpPyhzW3JdfHxbXSkubWFwKG89PmgzLmNyZWF0ZUJhbGFuY2UobyxlLmNhaXBOZXR3b3JrSWQpKTpudWxsfWNhdGNoe3JldHVybiBudWxsfX0sZmlsdGVyTG93UXVhbGl0eVRva2Vucyh0KXtyZXR1cm4gdC5maWx0ZXIoZT0+ZS5xdWFudGl0eS5kZWNpbWFscyE9PSIwIil9LG1hcEJhbGFuY2VzVG9Td2FwVG9rZW5zKHQpe3JldHVybiB0Py5tYXAoZT0+KHsuLi5lLGFkZHJlc3M6ZT8uYWRkcmVzcz9lLmFkZHJlc3M6Vy5nZXRBY3RpdmVOZXR3b3JrVG9rZW5BZGRyZXNzKCksZGVjaW1hbHM6cGFyc2VJbnQoZS5xdWFudGl0eS5kZWNpbWFscywxMCksbG9nb1VyaTplLmljb25VcmwsZWlwMjYxMjohMX0pKXx8W119fSxIdD16dCh7dG9rZW5CYWxhbmNlczpbXSxsb2FkaW5nOiExfSksWWRlPXtzdGF0ZTpIdCxzdWJzY3JpYmUodCl7cmV0dXJuIEtyKEh0LCgpPT50KEh0KSl9LHN1YnNjcmliZUtleSh0LGUpe3JldHVybiBXcihIdCx0LGUpfSxzZXRUb2tlbih0KXt0JiYoSHQudG9rZW49d3UodCkpfSxzZXRUb2tlbkFtb3VudCh0KXtIdC5zZW5kVG9rZW5BbW91bnQ9dH0sc2V0UmVjZWl2ZXJBZGRyZXNzKHQpe0h0LnJlY2VpdmVyQWRkcmVzcz10fSxzZXRSZWNlaXZlclByb2ZpbGVJbWFnZVVybCh0KXtIdC5yZWNlaXZlclByb2ZpbGVJbWFnZVVybD10fSxzZXRSZWNlaXZlclByb2ZpbGVOYW1lKHQpe0h0LnJlY2VpdmVyUHJvZmlsZU5hbWU9dH0sc2V0TmV0d29ya0JhbGFuY2VJblVzZCh0KXtIdC5uZXR3b3JrQmFsYW5jZUluVVNEPXR9LHNldExvYWRpbmcodCl7SHQubG9hZGluZz10fSxhc3luYyBzZW5kVG9rZW4oKXt0cnl7c3dpdGNoKFZlLnNldExvYWRpbmcoITApLFcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNoYWluTmFtZXNwYWNlKXtjYXNlImVpcDE1NSI6YXdhaXQgVmUuc2VuZEV2bVRva2VuKCk7cmV0dXJuO2Nhc2Uic29sYW5hIjphd2FpdCBWZS5zZW5kU29sYW5hVG9rZW4oKTtyZXR1cm47ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGNoYWluIil9fWZpbmFsbHl7VmUuc2V0TG9hZGluZyghMSl9fSxhc3luYyBzZW5kRXZtVG9rZW4oKXtjb25zdCB0PVcuc3RhdGUuYWN0aXZlQ2hhaW4sZT1vZS5zdGF0ZS5wcmVmZXJyZWRBY2NvdW50VHlwZXM/Llt0XTtpZighVmUuc3RhdGUuc2VuZFRva2VuQW1vdW50fHwhVmUuc3RhdGUucmVjZWl2ZXJBZGRyZXNzKXRocm93IG5ldyBFcnJvcigiQW4gYW1vdW50IGFuZCByZWNlaXZlciBhZGRyZXNzIGFyZSByZXF1aXJlZCIpO2lmKCFWZS5zdGF0ZS50b2tlbil0aHJvdyBuZXcgRXJyb3IoIkEgdG9rZW4gaXMgcmVxdWlyZWQiKTtWZS5zdGF0ZS50b2tlbj8uYWRkcmVzcz8oSWUuc2VuZEV2ZW50KHt0eXBlOiJ0cmFjayIsZXZlbnQ6IlNFTkRfSU5JVElBVEVEIixwcm9wZXJ0aWVzOntpc1NtYXJ0QWNjb3VudDplPT09ZnQuQUNDT1VOVF9UWVBFUy5TTUFSVF9BQ0NPVU5ULHRva2VuOlZlLnN0YXRlLnRva2VuLmFkZHJlc3MsYW1vdW50OlZlLnN0YXRlLnNlbmRUb2tlbkFtb3VudCxuZXR3b3JrOlcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWR8fCIifX0pLGF3YWl0IFZlLnNlbmRFUkMyMFRva2VuKHtyZWNlaXZlckFkZHJlc3M6VmUuc3RhdGUucmVjZWl2ZXJBZGRyZXNzLHRva2VuQWRkcmVzczpWZS5zdGF0ZS50b2tlbi5hZGRyZXNzLHNlbmRUb2tlbkFtb3VudDpWZS5zdGF0ZS5zZW5kVG9rZW5BbW91bnQsZGVjaW1hbHM6VmUuc3RhdGUudG9rZW4ucXVhbnRpdHkuZGVjaW1hbHN9KSk6KEllLnNlbmRFdmVudCh7dHlwZToidHJhY2siLGV2ZW50OiJTRU5EX0lOSVRJQVRFRCIscHJvcGVydGllczp7aXNTbWFydEFjY291bnQ6ZT09PWZ0LkFDQ09VTlRfVFlQRVMuU01BUlRfQUNDT1VOVCx0b2tlbjpWZS5zdGF0ZS50b2tlbi5zeW1ib2x8fCIiLGFtb3VudDpWZS5zdGF0ZS5zZW5kVG9rZW5BbW91bnQsbmV0d29yazpXLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkfHwiIn19KSxhd2FpdCBWZS5zZW5kTmF0aXZlVG9rZW4oe3JlY2VpdmVyQWRkcmVzczpWZS5zdGF0ZS5yZWNlaXZlckFkZHJlc3Msc2VuZFRva2VuQW1vdW50OlZlLnN0YXRlLnNlbmRUb2tlbkFtb3VudCxkZWNpbWFsczpWZS5zdGF0ZS50b2tlbi5xdWFudGl0eS5kZWNpbWFsc30pKX0sYXN5bmMgZmV0Y2hUb2tlbkJhbGFuY2UodCl7SHQubG9hZGluZz0hMDtjb25zdCBlPVcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWQscj1XLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jaGFpbk5hbWVzcGFjZSxuPVcuc3RhdGUuYWN0aXZlQ2FpcEFkZHJlc3Mscz1uP3VlLmdldFBsYWluQWRkcmVzcyhuKTp2b2lkIDA7aWYoSHQubGFzdFJldHJ5JiYhdWUuaXNBbGxvd2VkUmV0cnkoSHQubGFzdFJldHJ5LDMwKnR0Lk9ORV9TRUNfTVMpKXJldHVybiBIdC5sb2FkaW5nPSExLFtdO3RyeXtpZihzJiZlJiZyKXtjb25zdCBpPWF3YWl0IHliLmdldE15VG9rZW5zV2l0aEJhbGFuY2UoKTtyZXR1cm4gSHQudG9rZW5CYWxhbmNlcz1pLEh0Lmxhc3RSZXRyeT12b2lkIDAsaX19Y2F0Y2goaSl7SHQubGFzdFJldHJ5PURhdGUubm93KCksdD8uKGkpLERlLnNob3dFcnJvcigiVG9rZW4gQmFsYW5jZSBVbmF2YWlsYWJsZSIpfWZpbmFsbHl7SHQubG9hZGluZz0hMX1yZXR1cm5bXX0sZmV0Y2hOZXR3b3JrQmFsYW5jZSgpe2lmKEh0LnRva2VuQmFsYW5jZXMubGVuZ3RoPT09MClyZXR1cm47Y29uc3QgdD15Yi5tYXBCYWxhbmNlc1RvU3dhcFRva2VucyhIdC50b2tlbkJhbGFuY2VzKTtpZighdClyZXR1cm47Y29uc3QgZT10LmZpbmQocj0+ci5hZGRyZXNzPT09Vy5nZXRBY3RpdmVOZXR3b3JrVG9rZW5BZGRyZXNzKCkpO2UmJihIdC5uZXR3b3JrQmFsYW5jZUluVVNEPWU/TnQubXVsdGlwbHkoZS5xdWFudGl0eS5udW1lcmljLGUucHJpY2UpLnRvU3RyaW5nKCk6IjAiKX0sYXN5bmMgc2VuZE5hdGl2ZVRva2VuKHQpe25lLnB1c2hUcmFuc2FjdGlvblN0YWNrKHt9KTtjb25zdCBlPXQucmVjZWl2ZXJBZGRyZXNzLHI9b2Uuc3RhdGUuYWRkcmVzcyxuPXhlLnBhcnNlVW5pdHModC5zZW5kVG9rZW5BbW91bnQudG9TdHJpbmcoKSxOdW1iZXIodC5kZWNpbWFscykpO2F3YWl0IHhlLnNlbmRUcmFuc2FjdGlvbih7Y2hhaW5OYW1lc3BhY2U6ImVpcDE1NSIsdG86ZSxhZGRyZXNzOnIsZGF0YToiMHgiLHZhbHVlOm4/P0JpZ0ludCgwKX0pLEllLnNlbmRFdmVudCh7dHlwZToidHJhY2siLGV2ZW50OiJTRU5EX1NVQ0NFU1MiLHByb3BlcnRpZXM6e2lzU21hcnRBY2NvdW50Om9lLnN0YXRlLnByZWZlcnJlZEFjY291bnRUeXBlcz8uZWlwMTU1PT09ZnQuQUNDT1VOVF9UWVBFUy5TTUFSVF9BQ0NPVU5ULHRva2VuOlZlLnN0YXRlLnRva2VuPy5zeW1ib2x8fCIiLGFtb3VudDp0LnNlbmRUb2tlbkFtb3VudCxuZXR3b3JrOlcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWR8fCIifX0pLHhlLl9nZXRDbGllbnQoKT8udXBkYXRlQmFsYW5jZSgiZWlwMTU1IiksVmUucmVzZXRTZW5kKCl9LGFzeW5jIHNlbmRFUkMyMFRva2VuKHQpe25lLnB1c2hUcmFuc2FjdGlvblN0YWNrKHtvblN1Y2Nlc3MoKXtuZS5yZXBsYWNlKCJBY2NvdW50Iil9fSk7Y29uc3QgZT14ZS5wYXJzZVVuaXRzKHQuc2VuZFRva2VuQW1vdW50LnRvU3RyaW5nKCksTnVtYmVyKHQuZGVjaW1hbHMpKTtpZihvZS5zdGF0ZS5hZGRyZXNzJiZ0LnNlbmRUb2tlbkFtb3VudCYmdC5yZWNlaXZlckFkZHJlc3MmJnQudG9rZW5BZGRyZXNzKXtjb25zdCByPXVlLmdldFBsYWluQWRkcmVzcyh0LnRva2VuQWRkcmVzcyk7YXdhaXQgeGUud3JpdGVDb250cmFjdCh7ZnJvbUFkZHJlc3M6b2Uuc3RhdGUuYWRkcmVzcyx0b2tlbkFkZHJlc3M6cixhcmdzOlt0LnJlY2VpdmVyQWRkcmVzcyxlPz9CaWdJbnQoMCldLG1ldGhvZDoidHJhbnNmZXIiLGFiaTokJC5nZXRFUkMyMEFiaShyKSxjaGFpbk5hbWVzcGFjZToiZWlwMTU1In0pLFZlLnJlc2V0U2VuZCgpfX0sYXN5bmMgc2VuZFNvbGFuYVRva2VuKCl7aWYoIVZlLnN0YXRlLnNlbmRUb2tlbkFtb3VudHx8IVZlLnN0YXRlLnJlY2VpdmVyQWRkcmVzcyl0aHJvdyBuZXcgRXJyb3IoIkFuIGFtb3VudCBhbmQgcmVjZWl2ZXIgYWRkcmVzcyBhcmUgcmVxdWlyZWQiKTtuZS5wdXNoVHJhbnNhY3Rpb25TdGFjayh7b25TdWNjZXNzKCl7bmUucmVwbGFjZSgiQWNjb3VudCIpfX0pLGF3YWl0IHhlLnNlbmRUcmFuc2FjdGlvbih7Y2hhaW5OYW1lc3BhY2U6InNvbGFuYSIsdG86VmUuc3RhdGUucmVjZWl2ZXJBZGRyZXNzLHZhbHVlOlZlLnN0YXRlLnNlbmRUb2tlbkFtb3VudH0pLHhlLl9nZXRDbGllbnQoKT8udXBkYXRlQmFsYW5jZSgic29sYW5hIiksVmUucmVzZXRTZW5kKCl9LHJlc2V0U2VuZCgpe0h0LnRva2VuPXZvaWQgMCxIdC5zZW5kVG9rZW5BbW91bnQ9dm9pZCAwLEh0LnJlY2VpdmVyQWRkcmVzcz12b2lkIDAsSHQucmVjZWl2ZXJQcm9maWxlSW1hZ2VVcmw9dm9pZCAwLEh0LnJlY2VpdmVyUHJvZmlsZU5hbWU9dm9pZCAwLEh0LmxvYWRpbmc9ITEsSHQudG9rZW5CYWxhbmNlcz1bXX19LFZlPVduKFlkZSkscDM9e2N1cnJlbnRUYWI6MCx0b2tlbkJhbGFuY2U6W10sc21hcnRBY2NvdW50RGVwbG95ZWQ6ITEsYWRkcmVzc0xhYmVsczpuZXcgTWFwLGFsbEFjY291bnRzOltdLHVzZXI6dm9pZCAwfSxPZz17Y2FpcE5ldHdvcms6dm9pZCAwLHN1cHBvcnRzQWxsTmV0d29ya3M6ITAsc21hcnRBY2NvdW50RW5hYmxlZE5ldHdvcmtzOltdfSxNZT16dCh7Y2hhaW5zOnJHKCksYWN0aXZlQ2FpcEFkZHJlc3M6dm9pZCAwLGFjdGl2ZUNoYWluOnZvaWQgMCxhY3RpdmVDYWlwTmV0d29yazp2b2lkIDAsbm9BZGFwdGVyczohMSx1bml2ZXJzYWxBZGFwdGVyOntuZXR3b3JrQ29udHJvbGxlckNsaWVudDp2b2lkIDAsY29ubmVjdGlvbkNvbnRyb2xsZXJDbGllbnQ6dm9pZCAwfSxpc1N3aXRjaGluZ05hbWVzcGFjZTohMX0pLEpkZT17c3RhdGU6TWUsc3Vic2NyaWJlKHQpe3JldHVybiBLcihNZSwoKT0+e3QoTWUpfSl9LHN1YnNjcmliZUtleSh0LGUpe3JldHVybiBXcihNZSx0LGUpfSxzdWJzY3JpYmVDaGFpblByb3AodCxlLHIpe2xldCBuO3JldHVybiBLcihNZS5jaGFpbnMsKCk9Pntjb25zdCBzPXJ8fE1lLmFjdGl2ZUNoYWluO2lmKHMpe2NvbnN0IGk9TWUuY2hhaW5zLmdldChzKT8uW3RdO24hPT1pJiYobj1pLGUoaSkpfX0pfSxpbml0aWFsaXplKHQsZSxyKXtjb25zdHtjaGFpbklkOm4sbmFtZXNwYWNlOnN9PSRlLmdldEFjdGl2ZU5ldHdvcmtQcm9wcygpLGk9ZT8uZmluZChkPT5kLmlkLnRvU3RyaW5nKCk9PT1uPy50b1N0cmluZygpKSxhPXQuZmluZChkPT5kPy5uYW1lc3BhY2U9PT1zKXx8dD8uWzBdLGM9dC5tYXAoZD0+ZC5uYW1lc3BhY2UpLmZpbHRlcihkPT5kIT09dm9pZCAwKSxsPWNlLnN0YXRlLmVuYWJsZUVtYmVkZGVkP25ldyBTZXQoWy4uLmNdKTpuZXcgU2V0KFsuLi5lPy5tYXAoZD0+ZC5jaGFpbk5hbWVzcGFjZSk/P1tdXSk7KHQ/Lmxlbmd0aD09PTB8fCFhKSYmKE1lLm5vQWRhcHRlcnM9ITApLE1lLm5vQWRhcHRlcnN8fChNZS5hY3RpdmVDaGFpbj1hPy5uYW1lc3BhY2UsTWUuYWN0aXZlQ2FpcE5ldHdvcms9aSxXLnNldENoYWluTmV0d29ya0RhdGEoYT8ubmFtZXNwYWNlLHtjYWlwTmV0d29yazppfSksTWUuYWN0aXZlQ2hhaW4mJnlvLnNldCh7YWN0aXZlQ2hhaW46YT8ubmFtZXNwYWNlfSkpLGwuZm9yRWFjaChkPT57Y29uc3QgdT1lPy5maWx0ZXIoaD0+aC5jaGFpbk5hbWVzcGFjZT09PWQpO1cuc3RhdGUuY2hhaW5zLnNldChkLHtuYW1lc3BhY2U6ZCxuZXR3b3JrU3RhdGU6enQoey4uLk9nLGNhaXBOZXR3b3JrOnU/LlswXX0pLGFjY291bnRTdGF0ZTp6dChwMyksY2FpcE5ldHdvcmtzOnU/P1tdLC4uLnJ9KSxXLnNldFJlcXVlc3RlZENhaXBOZXR3b3Jrcyh1Pz9bXSxkKX0pfSxyZW1vdmVBZGFwdGVyKHQpe2lmKE1lLmFjdGl2ZUNoYWluPT09dCl7Y29uc3QgZT1BcnJheS5mcm9tKE1lLmNoYWlucy5lbnRyaWVzKCkpLmZpbmQoKFtyXSk9PnIhPT10KTtpZihlKXtjb25zdCByPWVbMV0/LmNhaXBOZXR3b3Jrcz8uWzBdO3ImJlcuc2V0QWN0aXZlQ2FpcE5ldHdvcmsocil9fU1lLmNoYWlucy5kZWxldGUodCl9LGFkZEFkYXB0ZXIodCx7bmV0d29ya0NvbnRyb2xsZXJDbGllbnQ6ZSxjb25uZWN0aW9uQ29udHJvbGxlckNsaWVudDpyfSxuKXtNZS5jaGFpbnMuc2V0KHQubmFtZXNwYWNlLHtuYW1lc3BhY2U6dC5uYW1lc3BhY2UsbmV0d29ya1N0YXRlOnsuLi5PZyxjYWlwTmV0d29yazpuWzBdfSxhY2NvdW50U3RhdGU6cDMsY2FpcE5ldHdvcmtzOm4sY29ubmVjdGlvbkNvbnRyb2xsZXJDbGllbnQ6cixuZXR3b3JrQ29udHJvbGxlckNsaWVudDplfSksVy5zZXRSZXF1ZXN0ZWRDYWlwTmV0d29ya3Mobj8uZmlsdGVyKHM9PnMuY2hhaW5OYW1lc3BhY2U9PT10Lm5hbWVzcGFjZSk/P1tdLHQubmFtZXNwYWNlKX0sYWRkTmV0d29yayh0KXtjb25zdCBlPU1lLmNoYWlucy5nZXQodC5jaGFpbk5hbWVzcGFjZSk7aWYoZSl7Y29uc3Qgcj1bLi4uZS5jYWlwTmV0d29ya3N8fFtdXTtlLmNhaXBOZXR3b3Jrcz8uZmluZChuPT5uLmlkPT09dC5pZCl8fHIucHVzaCh0KSxNZS5jaGFpbnMuc2V0KHQuY2hhaW5OYW1lc3BhY2Usey4uLmUsY2FpcE5ldHdvcmtzOnJ9KSxXLnNldFJlcXVlc3RlZENhaXBOZXR3b3JrcyhyLHQuY2hhaW5OYW1lc3BhY2UpLGZlLmZpbHRlckJ5TmFtZXNwYWNlKHQuY2hhaW5OYW1lc3BhY2UsITApfX0scmVtb3ZlTmV0d29yayh0LGUpe2NvbnN0IHI9TWUuY2hhaW5zLmdldCh0KTtpZihyKXtjb25zdCBuPU1lLmFjdGl2ZUNhaXBOZXR3b3JrPy5pZD09PWUscz1bLi4uci5jYWlwTmV0d29ya3M/LmZpbHRlcihpPT5pLmlkIT09ZSl8fFtdXTtuJiZyPy5jYWlwTmV0d29ya3M/LlswXSYmVy5zZXRBY3RpdmVDYWlwTmV0d29yayhyLmNhaXBOZXR3b3Jrc1swXSksTWUuY2hhaW5zLnNldCh0LHsuLi5yLGNhaXBOZXR3b3JrczpzfSksVy5zZXRSZXF1ZXN0ZWRDYWlwTmV0d29ya3Moc3x8W10sdCkscy5sZW5ndGg9PT0wJiZmZS5maWx0ZXJCeU5hbWVzcGFjZSh0LCExKX19LHNldEFkYXB0ZXJOZXR3b3JrU3RhdGUodCxlKXtjb25zdCByPU1lLmNoYWlucy5nZXQodCk7ciYmKHIubmV0d29ya1N0YXRlPXsuLi5yLm5ldHdvcmtTdGF0ZXx8T2csLi4uZX0sTWUuY2hhaW5zLnNldCh0LHIpKX0sc2V0Q2hhaW5BY2NvdW50RGF0YSh0LGUscj0hMCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJDaGFpbiBpcyByZXF1aXJlZCB0byB1cGRhdGUgY2hhaW4gYWNjb3VudCBkYXRhIik7Y29uc3Qgbj1NZS5jaGFpbnMuZ2V0KHQpO2lmKG4pe2NvbnN0IHM9ey4uLm4uYWNjb3VudFN0YXRlfHxwMywuLi5lfTtNZS5jaGFpbnMuc2V0KHQsey4uLm4sYWNjb3VudFN0YXRlOnN9KSwoTWUuY2hhaW5zLnNpemU9PT0xfHxNZS5hY3RpdmVDaGFpbj09PXQpJiYoZS5jYWlwQWRkcmVzcyYmKE1lLmFjdGl2ZUNhaXBBZGRyZXNzPWUuY2FpcEFkZHJlc3MpLG9lLnJlcGxhY2VTdGF0ZShzKSl9fSxzZXRDaGFpbk5ldHdvcmtEYXRhKHQsZSl7aWYoIXQpcmV0dXJuO2NvbnN0IHI9TWUuY2hhaW5zLmdldCh0KTtpZihyKXtjb25zdCBuPXsuLi5yLm5ldHdvcmtTdGF0ZXx8T2csLi4uZX07TWUuY2hhaW5zLnNldCh0LHsuLi5yLG5ldHdvcmtTdGF0ZTpufSl9fSxzZXRBY2NvdW50UHJvcCh0LGUscixuPSEwKXtXLnNldENoYWluQWNjb3VudERhdGEocix7W3RdOmV9LG4pLHQ9PT0ic3RhdHVzIiYmZT09PSJkaXNjb25uZWN0ZWQiJiZyJiZmZS5yZW1vdmVDb25uZWN0b3JJZChyKX0sc2V0QWN0aXZlTmFtZXNwYWNlKHQpe01lLmFjdGl2ZUNoYWluPXQ7Y29uc3QgZT10P01lLmNoYWlucy5nZXQodCk6dm9pZCAwLHI9ZT8ubmV0d29ya1N0YXRlPy5jYWlwTmV0d29yaztyPy5pZCYmdCYmKE1lLmFjdGl2ZUNhaXBBZGRyZXNzPWU/LmFjY291bnRTdGF0ZT8uY2FpcEFkZHJlc3MsTWUuYWN0aXZlQ2FpcE5ldHdvcms9cixXLnNldENoYWluTmV0d29ya0RhdGEodCx7Y2FpcE5ldHdvcms6cn0pLCRlLnNldEFjdGl2ZUNhaXBOZXR3b3JrSWQocj8uY2FpcE5ldHdvcmtJZCkseW8uc2V0KHthY3RpdmVDaGFpbjp0LHNlbGVjdGVkTmV0d29ya0lkOnI/LmNhaXBOZXR3b3JrSWR9KSl9LHNldEFjdGl2ZUNhaXBOZXR3b3JrKHQpe2lmKCF0KXJldHVybjtNZS5hY3RpdmVDaGFpbiE9PXQuY2hhaW5OYW1lc3BhY2UmJlcuc2V0SXNTd2l0Y2hpbmdOYW1lc3BhY2UoITApO2NvbnN0IGU9TWUuY2hhaW5zLmdldCh0LmNoYWluTmFtZXNwYWNlKTtNZS5hY3RpdmVDaGFpbj10LmNoYWluTmFtZXNwYWNlLE1lLmFjdGl2ZUNhaXBOZXR3b3JrPXQsVy5zZXRDaGFpbk5ldHdvcmtEYXRhKHQuY2hhaW5OYW1lc3BhY2Use2NhaXBOZXR3b3JrOnR9KSxlPy5hY2NvdW50U3RhdGU/LmFkZHJlc3M/TWUuYWN0aXZlQ2FpcEFkZHJlc3M9YCR7dC5jaGFpbk5hbWVzcGFjZX06JHt0LmlkfToke2U/LmFjY291bnRTdGF0ZT8uYWRkcmVzc31gOk1lLmFjdGl2ZUNhaXBBZGRyZXNzPXZvaWQgMCxXLnNldEFjY291bnRQcm9wKCJjYWlwQWRkcmVzcyIsTWUuYWN0aXZlQ2FpcEFkZHJlc3MsdC5jaGFpbk5hbWVzcGFjZSksZSYmb2UucmVwbGFjZVN0YXRlKGUuYWNjb3VudFN0YXRlKSxWZS5yZXNldFNlbmQoKSx5by5zZXQoe2FjdGl2ZUNoYWluOk1lLmFjdGl2ZUNoYWluLHNlbGVjdGVkTmV0d29ya0lkOk1lLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkfSksJGUuc2V0QWN0aXZlQ2FpcE5ldHdvcmtJZCh0LmNhaXBOZXR3b3JrSWQpLCFXLmNoZWNrSWZTdXBwb3J0ZWROZXR3b3JrKHQuY2hhaW5OYW1lc3BhY2UpJiZjZS5zdGF0ZS5lbmFibGVOZXR3b3JrU3dpdGNoJiYhY2Uuc3RhdGUuYWxsb3dVbnN1cHBvcnRlZENoYWluJiYheGUuc3RhdGUud2NCYXNpYyYmVy5zaG93VW5zdXBwb3J0ZWRDaGFpblVJKCl9LGFkZENhaXBOZXR3b3JrKHQpe2lmKCF0KXJldHVybjtjb25zdCBlPU1lLmNoYWlucy5nZXQodC5jaGFpbk5hbWVzcGFjZSk7ZSYmZT8uY2FpcE5ldHdvcmtzPy5wdXNoKHQpfSxhc3luYyBzd2l0Y2hBY3RpdmVOYW1lc3BhY2UodCl7aWYoIXQpcmV0dXJuO2NvbnN0IGU9dCE9PVcuc3RhdGUuYWN0aXZlQ2hhaW4scj1XLmdldE5ldHdvcmtEYXRhKHQpPy5jYWlwTmV0d29yayxuPVcuZ2V0Q2FpcE5ldHdvcmtCeU5hbWVzcGFjZSh0LHI/LmlkKTtlJiZuJiZhd2FpdCBXLnN3aXRjaEFjdGl2ZU5ldHdvcmsobil9LGFzeW5jIHN3aXRjaEFjdGl2ZU5ldHdvcmsodCl7Y29uc3Qgcj0hVy5zdGF0ZS5jaGFpbnMuZ2V0KFcuc3RhdGUuYWN0aXZlQ2hhaW4pPy5jYWlwTmV0d29ya3M/LnNvbWUocz0+cy5pZD09PU1lLmFjdGl2ZUNhaXBOZXR3b3JrPy5pZCksbj1XLmdldE5ldHdvcmtDb250cm9sbGVyQ2xpZW50KHQuY2hhaW5OYW1lc3BhY2UpO2lmKG4pe3RyeXthd2FpdCBuLnN3aXRjaENhaXBOZXR3b3JrKHQpLHImJkJlLmNsb3NlKCl9Y2F0Y2h7bmUuZ29CYWNrKCl9SWUuc2VuZEV2ZW50KHt0eXBlOiJ0cmFjayIsZXZlbnQ6IlNXSVRDSF9ORVRXT1JLIixwcm9wZXJ0aWVzOntuZXR3b3JrOnQuY2FpcE5ldHdvcmtJZH19KX19LGdldE5ldHdvcmtDb250cm9sbGVyQ2xpZW50KHQpe2NvbnN0IGU9dHx8TWUuYWN0aXZlQ2hhaW4scj1NZS5jaGFpbnMuZ2V0KGUpO2lmKCFyKXRocm93IG5ldyBFcnJvcigiQ2hhaW4gYWRhcHRlciBub3QgZm91bmQiKTtpZighci5uZXR3b3JrQ29udHJvbGxlckNsaWVudCl0aHJvdyBuZXcgRXJyb3IoIk5ldHdvcmtDb250cm9sbGVyIGNsaWVudCBub3Qgc2V0Iik7cmV0dXJuIHIubmV0d29ya0NvbnRyb2xsZXJDbGllbnR9LGdldENvbm5lY3Rpb25Db250cm9sbGVyQ2xpZW50KHQpe2NvbnN0IGU9dHx8TWUuYWN0aXZlQ2hhaW47aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDaGFpbiBpcyByZXF1aXJlZCB0byBnZXQgY29ubmVjdGlvbiBjb250cm9sbGVyIGNsaWVudCIpO2NvbnN0IHI9TWUuY2hhaW5zLmdldChlKTtpZighcj8uY29ubmVjdGlvbkNvbnRyb2xsZXJDbGllbnQpdGhyb3cgbmV3IEVycm9yKCJDb25uZWN0aW9uQ29udHJvbGxlciBjbGllbnQgbm90IHNldCIpO3JldHVybiByLmNvbm5lY3Rpb25Db250cm9sbGVyQ2xpZW50fSxnZXRBY2NvdW50UHJvcCh0LGUpe2xldCByPU1lLmFjdGl2ZUNoYWluO2lmKGUmJihyPWUpLCFyKXJldHVybjtjb25zdCBuPU1lLmNoYWlucy5nZXQocik/LmFjY291bnRTdGF0ZTtpZihuKXJldHVybiBuW3RdfSxnZXROZXR3b3JrUHJvcCh0LGUpe2NvbnN0IHI9TWUuY2hhaW5zLmdldChlKT8ubmV0d29ya1N0YXRlO2lmKHIpcmV0dXJuIHJbdF19LGdldFJlcXVlc3RlZENhaXBOZXR3b3Jrcyh0KXtjb25zdCBlPU1lLmNoYWlucy5nZXQodCkse2FwcHJvdmVkQ2FpcE5ldHdvcmtJZHM6cj1bXSxyZXF1ZXN0ZWRDYWlwTmV0d29ya3M6bj1bXX09ZT8ubmV0d29ya1N0YXRlfHx7fTtyZXR1cm4gdWUuc29ydFJlcXVlc3RlZE5ldHdvcmtzKHIsbil9LGdldEFsbFJlcXVlc3RlZENhaXBOZXR3b3Jrcygpe2NvbnN0IHQ9W107cmV0dXJuIE1lLmNoYWlucy5mb3JFYWNoKGU9Pntjb25zdCByPVcuZ2V0UmVxdWVzdGVkQ2FpcE5ldHdvcmtzKGUubmFtZXNwYWNlKTt0LnB1c2goLi4ucil9KSx0fSxzZXRSZXF1ZXN0ZWRDYWlwTmV0d29ya3ModCxlKXtXLnNldEFkYXB0ZXJOZXR3b3JrU3RhdGUoZSx7cmVxdWVzdGVkQ2FpcE5ldHdvcmtzOnR9KTtjb25zdCBuPVcuZ2V0QWxsUmVxdWVzdGVkQ2FpcE5ldHdvcmtzKCkubWFwKGk9PmkuY2hhaW5OYW1lc3BhY2UpLHM9QXJyYXkuZnJvbShuZXcgU2V0KG4pKTtmZS5maWx0ZXJCeU5hbWVzcGFjZXMocyl9LGdldEFsbEFwcHJvdmVkQ2FpcE5ldHdvcmtJZHMoKXtjb25zdCB0PVtdO3JldHVybiBNZS5jaGFpbnMuZm9yRWFjaChlPT57Y29uc3Qgcj1XLmdldEFwcHJvdmVkQ2FpcE5ldHdvcmtJZHMoZS5uYW1lc3BhY2UpO3QucHVzaCguLi5yKX0pLHR9LGdldEFjdGl2ZUNhaXBOZXR3b3JrKCl7cmV0dXJuIE1lLmFjdGl2ZUNhaXBOZXR3b3JrfSxnZXRBY3RpdmVDYWlwQWRkcmVzcygpe3JldHVybiBNZS5hY3RpdmVDYWlwQWRkcmVzc30sZ2V0QXBwcm92ZWRDYWlwTmV0d29ya0lkcyh0KXtyZXR1cm4gTWUuY2hhaW5zLmdldCh0KT8ubmV0d29ya1N0YXRlPy5hcHByb3ZlZENhaXBOZXR3b3JrSWRzfHxbXX0sYXN5bmMgc2V0QXBwcm92ZWRDYWlwTmV0d29ya3NEYXRhKHQpe2NvbnN0IHI9YXdhaXQgVy5nZXROZXR3b3JrQ29udHJvbGxlckNsaWVudCgpPy5nZXRBcHByb3ZlZENhaXBOZXR3b3Jrc0RhdGEoKTtXLnNldEFkYXB0ZXJOZXR3b3JrU3RhdGUodCx7YXBwcm92ZWRDYWlwTmV0d29ya0lkczpyPy5hcHByb3ZlZENhaXBOZXR3b3JrSWRzLHN1cHBvcnRzQWxsTmV0d29ya3M6cj8uc3VwcG9ydHNBbGxOZXR3b3Jrc30pfSxjaGVja0lmU3VwcG9ydGVkTmV0d29yayh0LGUpe2NvbnN0IHI9ZXx8TWUuYWN0aXZlQ2FpcE5ldHdvcmssbj1XLmdldFJlcXVlc3RlZENhaXBOZXR3b3Jrcyh0KTtyZXR1cm4gbi5sZW5ndGg/bj8uc29tZShzPT5zLmlkPT09cj8uaWQpOiEwfSxjaGVja0lmU3VwcG9ydGVkQ2hhaW5JZCh0KXtyZXR1cm4gTWUuYWN0aXZlQ2hhaW4/Vy5nZXRSZXF1ZXN0ZWRDYWlwTmV0d29ya3MoTWUuYWN0aXZlQ2hhaW4pPy5zb21lKHI9PnIuaWQ9PT10KTohMH0sc2V0U21hcnRBY2NvdW50RW5hYmxlZE5ldHdvcmtzKHQsZSl7Vy5zZXRBZGFwdGVyTmV0d29ya1N0YXRlKGUse3NtYXJ0QWNjb3VudEVuYWJsZWROZXR3b3Jrczp0fSl9LGNoZWNrSWZTbWFydEFjY291bnRFbmFibGVkKCl7Y29uc3QgdD1GMC5jYWlwTmV0d29ya0lkVG9OdW1iZXIoTWUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWQpLGU9TWUuYWN0aXZlQ2hhaW47cmV0dXJuIWV8fCF0PyExOiEhVy5nZXROZXR3b3JrUHJvcCgic21hcnRBY2NvdW50RW5hYmxlZE5ldHdvcmtzIixlKT8uaW5jbHVkZXMoTnVtYmVyKHQpKX0sZ2V0QWN0aXZlTmV0d29ya1Rva2VuQWRkcmVzcygpe2NvbnN0IHQ9TWUuYWN0aXZlQ2FpcE5ldHdvcms/LmNoYWluTmFtZXNwYWNlfHwiZWlwMTU1IixlPU1lLmFjdGl2ZUNhaXBOZXR3b3JrPy5pZHx8MSxyPXR0Lk5BVElWRV9UT0tFTl9BRERSRVNTW3RdO3JldHVybmAke3R9OiR7ZX06JHtyfWB9LHNob3dVbnN1cHBvcnRlZENoYWluVUkoKXtCZS5vcGVuKHt2aWV3OiJVbnN1cHBvcnRlZENoYWluIn0pfSxjaGVja0lmTmFtZXNTdXBwb3J0ZWQoKXtjb25zdCB0PU1lLmFjdGl2ZUNhaXBOZXR3b3JrO3JldHVybiEhKHQ/LmNoYWluTmFtZXNwYWNlJiZ0dC5OQU1FU19TVVBQT1JURURfQ0hBSU5fTkFNRVNQQUNFUy5pbmNsdWRlcyh0LmNoYWluTmFtZXNwYWNlKSl9LHJlc2V0TmV0d29yayh0KXtXLnNldEFkYXB0ZXJOZXR3b3JrU3RhdGUodCx7YXBwcm92ZWRDYWlwTmV0d29ya0lkczp2b2lkIDAsc3VwcG9ydHNBbGxOZXR3b3JrczohMCxzbWFydEFjY291bnRFbmFibGVkTmV0d29ya3M6W119KX0scmVzZXRBY2NvdW50KHQpe2NvbnN0IGU9dDtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkNoYWluIGlzIHJlcXVpcmVkIHRvIHNldCBhY2NvdW50IHByb3AiKTtNZS5hY3RpdmVDYWlwQWRkcmVzcz12b2lkIDAsVy5zZXRDaGFpbkFjY291bnREYXRhKGUse3NtYXJ0QWNjb3VudERlcGxveWVkOiExLGN1cnJlbnRUYWI6MCxjYWlwQWRkcmVzczp2b2lkIDAsYWRkcmVzczp2b2lkIDAsYmFsYW5jZTp2b2lkIDAsYmFsYW5jZVN5bWJvbDp2b2lkIDAscHJvZmlsZU5hbWU6dm9pZCAwLHByb2ZpbGVJbWFnZTp2b2lkIDAsYWRkcmVzc0V4cGxvcmVyVXJsOnZvaWQgMCx0b2tlbkJhbGFuY2U6W10sY29ubmVjdGVkV2FsbGV0SW5mbzp2b2lkIDAscHJlZmVycmVkQWNjb3VudFR5cGVzOnZvaWQgMCxzb2NpYWxQcm92aWRlcjp2b2lkIDAsc29jaWFsV2luZG93OnZvaWQgMCxmYXJjYXN0ZXJVcmw6dm9pZCAwLGFsbEFjY291bnRzOltdLHVzZXI6dm9pZCAwLHN0YXR1czoiZGlzY29ubmVjdGVkIn0pLGZlLnJlbW92ZUNvbm5lY3RvcklkKGUpfSxhc3luYyBkaXNjb25uZWN0KHQpe2NvbnN0IGU9WEcodCk7dHJ5e1ZlLnJlc2V0U2VuZCgpO2NvbnN0IHI9YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKGUubWFwKGFzeW5jKFtzLGldKT0+e3RyeXtjb25zdHtjYWlwQWRkcmVzczpvfT1XLmdldEFjY291bnREYXRhKHMpfHx7fTtvJiZpLmNvbm5lY3Rpb25Db250cm9sbGVyQ2xpZW50Py5kaXNjb25uZWN0JiZhd2FpdCBpLmNvbm5lY3Rpb25Db250cm9sbGVyQ2xpZW50LmRpc2Nvbm5lY3QocyksVy5yZXNldEFjY291bnQocyksVy5yZXNldE5ldHdvcmsocyl9Y2F0Y2gobyl7dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGlzY29ubmVjdCBjaGFpbiAke3N9OiAke28ubWVzc2FnZX1gKX19KSk7eGUucmVzZXRXY0Nvbm5lY3Rpb24oKTtjb25zdCBuPXIuZmlsdGVyKHM9PnMuc3RhdHVzPT09InJlamVjdGVkIik7aWYobi5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3Iobi5tYXAocz0+cy5yZWFzb24ubWVzc2FnZSkuam9pbigiLCAiKSk7JGUuZGVsZXRlQ29ubmVjdGVkU29jaWFsUHJvdmlkZXIoKSx0P2ZlLnJlbW92ZUNvbm5lY3RvcklkKHQpOmZlLnJlc2V0Q29ubmVjdG9ySWRzKCksSWUuc2VuZEV2ZW50KHt0eXBlOiJ0cmFjayIsZXZlbnQ6IkRJU0NPTk5FQ1RfU1VDQ0VTUyIscHJvcGVydGllczp7bmFtZXNwYWNlOnR8fCJhbGwifX0pfWNhdGNoKHIpe2NvbnNvbGUuZXJyb3Ioci5tZXNzYWdlfHwiRmFpbGVkIHRvIGRpc2Nvbm5lY3QgY2hhaW5zIiksSWUuc2VuZEV2ZW50KHt0eXBlOiJ0cmFjayIsZXZlbnQ6IkRJU0NPTk5FQ1RfRVJST1IiLHByb3BlcnRpZXM6e21lc3NhZ2U6ci5tZXNzYWdlfHwiRmFpbGVkIHRvIGRpc2Nvbm5lY3QgY2hhaW5zIn19KX19LHNldElzU3dpdGNoaW5nTmFtZXNwYWNlKHQpe01lLmlzU3dpdGNoaW5nTmFtZXNwYWNlPXR9LGdldEZpcnN0Q2FpcE5ldHdvcmtTdXBwb3J0c0F1dGhDb25uZWN0b3IoKXtjb25zdCB0PVtdO2xldCBlO2lmKE1lLmNoYWlucy5mb3JFYWNoKHI9Pnt5ZS5BVVRIX0NPTk5FQ1RPUl9TVVBQT1JURURfQ0hBSU5TLmZpbmQobj0+bj09PXIubmFtZXNwYWNlKSYmci5uYW1lc3BhY2UmJnQucHVzaChyLm5hbWVzcGFjZSl9KSx0Lmxlbmd0aD4wKXtjb25zdCByPXRbMF07cmV0dXJuIGU9cj9NZS5jaGFpbnMuZ2V0KHIpPy5jYWlwTmV0d29ya3M/LlswXTp2b2lkIDAsZX19LGdldEFjY291bnREYXRhKHQpe3JldHVybiB0P1cuc3RhdGUuY2hhaW5zLmdldCh0KT8uYWNjb3VudFN0YXRlOm9lLnN0YXRlfSxnZXROZXR3b3JrRGF0YSh0KXtjb25zdCBlPXR8fE1lLmFjdGl2ZUNoYWluO2lmKGUpcmV0dXJuIFcuc3RhdGUuY2hhaW5zLmdldChlKT8ubmV0d29ya1N0YXRlfSxnZXRDYWlwTmV0d29ya0J5TmFtZXNwYWNlKHQsZSl7aWYoIXQpcmV0dXJuO2NvbnN0IHI9Vy5zdGF0ZS5jaGFpbnMuZ2V0KHQpLG49cj8uY2FpcE5ldHdvcmtzPy5maW5kKHM9PnMuaWQ9PT1lKTtyZXR1cm4gbnx8cj8ubmV0d29ya1N0YXRlPy5jYWlwTmV0d29ya3x8cj8uY2FpcE5ldHdvcmtzPy5bMF19LGdldFJlcXVlc3RlZENhaXBOZXR3b3JrSWRzKCl7Y29uc3QgdD1mZS5zdGF0ZS5maWx0ZXJCeU5hbWVzcGFjZTtyZXR1cm4odD9bTWUuY2hhaW5zLmdldCh0KV06QXJyYXkuZnJvbShNZS5jaGFpbnMudmFsdWVzKCkpKS5mbGF0TWFwKHI9PnI/LmNhaXBOZXR3b3Jrc3x8W10pLm1hcChyPT5yLmNhaXBOZXR3b3JrSWQpfSxnZXRDYWlwTmV0d29ya3ModCl7cmV0dXJuIHQ/Vy5nZXRSZXF1ZXN0ZWRDYWlwTmV0d29ya3ModCk6Vy5nZXRBbGxSZXF1ZXN0ZWRDYWlwTmV0d29ya3MoKX19LFc9V24oSmRlKSxYZGU9e3B1cmNoYXNlQ3VycmVuY2llczpbe2lkOiIyYjkyMzE1ZC1lYWI3LTViZWYtODRmYS0wODlhMTMxMzMzZjUiLG5hbWU6IlVTRCBDb2luIixzeW1ib2w6IlVTREMiLG5ldHdvcmtzOlt7bmFtZToiZXRoZXJldW0tbWFpbm5ldCIsZGlzcGxheV9uYW1lOiJFdGhlcmV1bSIsY2hhaW5faWQ6IjEiLGNvbnRyYWN0X2FkZHJlc3M6IjB4QTBiODY5OTFjNjIxOGIzNmMxZDE5RDRhMmU5RWIwY0UzNjA2ZUI0OCJ9LHtuYW1lOiJwb2x5Z29uLW1haW5uZXQiLGRpc3BsYXlfbmFtZToiUG9seWdvbiIsY2hhaW5faWQ6IjEzNyIsY29udHJhY3RfYWRkcmVzczoiMHgyNzkxQmNhMWYyZGU0NjYxRUQ4OEEzMEM5OUE3YTk0NDlBYTg0MTc0In1dfSx7aWQ6IjJiOTIzMTVkLWVhYjctNWJlZi04NGZhLTA4OWExMzEzMzNmNSIsbmFtZToiRXRoZXIiLHN5bWJvbDoiRVRIIixuZXR3b3Jrczpbe25hbWU6ImV0aGVyZXVtLW1haW5uZXQiLGRpc3BsYXlfbmFtZToiRXRoZXJldW0iLGNoYWluX2lkOiIxIixjb250cmFjdF9hZGRyZXNzOiIweEEwYjg2OTkxYzYyMThiMzZjMWQxOUQ0YTJlOUViMGNFMzYwNmVCNDgifSx7bmFtZToicG9seWdvbi1tYWlubmV0IixkaXNwbGF5X25hbWU6IlBvbHlnb24iLGNoYWluX2lkOiIxMzciLGNvbnRyYWN0X2FkZHJlc3M6IjB4Mjc5MUJjYTFmMmRlNDY2MUVEODhBMzBDOTlBN2E5NDQ5QWE4NDE3NCJ9XX1dLHBheW1lbnRDdXJyZW5jaWVzOlt7aWQ6IlVTRCIscGF5bWVudF9tZXRob2RfbGltaXRzOlt7aWQ6ImNhcmQiLG1pbjoiMTAuMDAiLG1heDoiNzUwMC4wMCJ9LHtpZDoiYWNoX2JhbmtfYWNjb3VudCIsbWluOiIxMC4wMCIsbWF4OiIyNTAwMC4wMCJ9XX0se2lkOiJFVVIiLHBheW1lbnRfbWV0aG9kX2xpbWl0czpbe2lkOiJjYXJkIixtaW46IjEwLjAwIixtYXg6Ijc1MDAuMDAifSx7aWQ6ImFjaF9iYW5rX2FjY291bnQiLG1pbjoiMTAuMDAiLG1heDoiMjUwMDAuMDAifV19XX0seUI9dWUuZ2V0QmxvY2tjaGFpbkFwaVVybCgpLFluPXp0KHtjbGllbnRJZDpudWxsLGFwaTpuZXcgYTEoe2Jhc2VVcmw6eUIsY2xpZW50SWQ6bnVsbH0pLHN1cHBvcnRlZENoYWluczp7aHR0cDpbXSx3czpbXX19KSxHZT17c3RhdGU6WW4sYXN5bmMgZ2V0KHQpe2NvbnN0e3N0OmUsc3Y6cn09R2UuZ2V0U2RrUHJvcGVydGllcygpLG49Y2Uuc3RhdGUucHJvamVjdElkLHM9ey4uLnQucGFyYW1zfHx7fSxzdDplLHN2OnIscHJvamVjdElkOm59O3JldHVybiBZbi5hcGkuZ2V0KHsuLi50LHBhcmFtczpzfSl9LGdldFNka1Byb3BlcnRpZXMoKXtjb25zdHtzZGtUeXBlOnQsc2RrVmVyc2lvbjplfT1jZS5zdGF0ZTtyZXR1cm57c3Q6dHx8InVua25vd24iLHN2OmV8fCJ1bmtub3duIn19LGFzeW5jIGlzTmV0d29ya1N1cHBvcnRlZCh0KXtpZighdClyZXR1cm4hMTt0cnl7WW4uc3VwcG9ydGVkQ2hhaW5zLmh0dHAubGVuZ3RofHxhd2FpdCBHZS5nZXRTdXBwb3J0ZWROZXR3b3JrcygpfWNhdGNoe3JldHVybiExfXJldHVybiBZbi5zdXBwb3J0ZWRDaGFpbnMuaHR0cC5pbmNsdWRlcyh0KX0sYXN5bmMgZ2V0U3VwcG9ydGVkTmV0d29ya3MoKXt0cnl7Y29uc3QgdD1hd2FpdCBHZS5nZXQoe3BhdGg6InYxL3N1cHBvcnRlZC1jaGFpbnMifSk7cmV0dXJuIFluLnN1cHBvcnRlZENoYWlucz10LHR9Y2F0Y2h7cmV0dXJuIFluLnN1cHBvcnRlZENoYWluc319LGFzeW5jIGZldGNoSWRlbnRpdHkoe2FkZHJlc3M6dCxjYWlwTmV0d29ya0lkOmV9KXtpZighYXdhaXQgR2UuaXNOZXR3b3JrU3VwcG9ydGVkKGUpKXJldHVybnthdmF0YXI6IiIsbmFtZToiIn07Y29uc3Qgbj0kZS5nZXRJZGVudGl0eUZyb21DYWNoZUZvckFkZHJlc3ModCk7aWYobilyZXR1cm4gbjtjb25zdCBzPWF3YWl0IEdlLmdldCh7cGF0aDpgL3YxL2lkZW50aXR5LyR7dH1gLHBhcmFtczp7c2VuZGVyOlcuc3RhdGUuYWN0aXZlQ2FpcEFkZHJlc3M/dWUuZ2V0UGxhaW5BZGRyZXNzKFcuc3RhdGUuYWN0aXZlQ2FpcEFkZHJlc3MpOnZvaWQgMH19KTtyZXR1cm4gJGUudXBkYXRlSWRlbnRpdHlDYWNoZSh7YWRkcmVzczp0LGlkZW50aXR5OnMsdGltZXN0YW1wOkRhdGUubm93KCl9KSxzfSxhc3luYyBmZXRjaFRyYW5zYWN0aW9ucyh7YWNjb3VudDp0LGN1cnNvcjplLG9ucmFtcDpyLHNpZ25hbDpuLGNhY2hlOnMsY2hhaW5JZDppfSl7cmV0dXJuIGF3YWl0IEdlLmlzTmV0d29ya1N1cHBvcnRlZChXLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkKT9HZS5nZXQoe3BhdGg6YC92MS9hY2NvdW50LyR7dH0vaGlzdG9yeWAscGFyYW1zOntjdXJzb3I6ZSxvbnJhbXA6cixjaGFpbklkOml9LHNpZ25hbDpuLGNhY2hlOnN9KTp7ZGF0YTpbXSxuZXh0OnZvaWQgMH19LGFzeW5jIGZldGNoU3dhcFF1b3RlKHthbW91bnQ6dCx1c2VyQWRkcmVzczplLGZyb206cix0bzpuLGdhc1ByaWNlOnN9KXtyZXR1cm4gYXdhaXQgR2UuaXNOZXR3b3JrU3VwcG9ydGVkKFcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWQpP0dlLmdldCh7cGF0aDoiL3YxL2NvbnZlcnQvcXVvdGVzIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LHBhcmFtczp7YW1vdW50OnQsdXNlckFkZHJlc3M6ZSxmcm9tOnIsdG86bixnYXNQcmljZTpzfX0pOntxdW90ZXM6W119fSxhc3luYyBmZXRjaFN3YXBUb2tlbnMoe2NoYWluSWQ6dH0pe3JldHVybiBhd2FpdCBHZS5pc05ldHdvcmtTdXBwb3J0ZWQoVy5zdGF0ZS5hY3RpdmVDYWlwTmV0d29yaz8uY2FpcE5ldHdvcmtJZCk/R2UuZ2V0KHtwYXRoOiIvdjEvY29udmVydC90b2tlbnMiLHBhcmFtczp7Y2hhaW5JZDp0fX0pOnt0b2tlbnM6W119fSxhc3luYyBmZXRjaFRva2VuUHJpY2Uoe2FkZHJlc3Nlczp0fSl7cmV0dXJuIGF3YWl0IEdlLmlzTmV0d29ya1N1cHBvcnRlZChXLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkKT9Zbi5hcGkucG9zdCh7cGF0aDoiL3YxL2Z1bmdpYmxlL3ByaWNlIixib2R5OntjdXJyZW5jeToidXNkIixhZGRyZXNzZXM6dCxwcm9qZWN0SWQ6Y2Uuc3RhdGUucHJvamVjdElkfSxoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9fSk6e2Z1bmdpYmxlczpbXX19LGFzeW5jIGZldGNoU3dhcEFsbG93YW5jZSh7dG9rZW5BZGRyZXNzOnQsdXNlckFkZHJlc3M6ZX0pe3JldHVybiBhd2FpdCBHZS5pc05ldHdvcmtTdXBwb3J0ZWQoVy5zdGF0ZS5hY3RpdmVDYWlwTmV0d29yaz8uY2FpcE5ldHdvcmtJZCk/R2UuZ2V0KHtwYXRoOiIvdjEvY29udmVydC9hbGxvd2FuY2UiLHBhcmFtczp7dG9rZW5BZGRyZXNzOnQsdXNlckFkZHJlc3M6ZX0saGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifX0pOnthbGxvd2FuY2U6IjAifX0sYXN5bmMgZmV0Y2hHYXNQcmljZSh7Y2hhaW5JZDp0fSl7Y29uc3R7c3Q6ZSxzdjpyfT1HZS5nZXRTZGtQcm9wZXJ0aWVzKCk7aWYoIWF3YWl0IEdlLmlzTmV0d29ya1N1cHBvcnRlZChXLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkKSl0aHJvdyBuZXcgRXJyb3IoIk5ldHdvcmsgbm90IHN1cHBvcnRlZCBmb3IgR2FzIFByaWNlIik7cmV0dXJuIEdlLmdldCh7cGF0aDoiL3YxL2NvbnZlcnQvZ2FzLXByaWNlIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LHBhcmFtczp7Y2hhaW5JZDp0LHN0OmUsc3Y6cn19KX0sYXN5bmMgZ2VuZXJhdGVTd2FwQ2FsbGRhdGEoe2Ftb3VudDp0LGZyb206ZSx0bzpyLHVzZXJBZGRyZXNzOm4sZGlzYWJsZUVzdGltYXRlOnN9KXtpZighYXdhaXQgR2UuaXNOZXR3b3JrU3VwcG9ydGVkKFcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWQpKXRocm93IG5ldyBFcnJvcigiTmV0d29yayBub3Qgc3VwcG9ydGVkIGZvciBTd2FwcyIpO3JldHVybiBZbi5hcGkucG9zdCh7cGF0aDoiL3YxL2NvbnZlcnQvYnVpbGQtdHJhbnNhY3Rpb24iLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTp7YW1vdW50OnQsZWlwMTU1OntzbGlwcGFnZTp0dC5DT05WRVJUX1NMSVBQQUdFX1RPTEVSQU5DRX0scHJvamVjdElkOmNlLnN0YXRlLnByb2plY3RJZCxmcm9tOmUsdG86cix1c2VyQWRkcmVzczpuLGRpc2FibGVFc3RpbWF0ZTpzfX0pfSxhc3luYyBnZW5lcmF0ZUFwcHJvdmVDYWxsZGF0YSh7ZnJvbTp0LHRvOmUsdXNlckFkZHJlc3M6cn0pe2NvbnN0e3N0Om4sc3Y6c309R2UuZ2V0U2RrUHJvcGVydGllcygpO2lmKCFhd2FpdCBHZS5pc05ldHdvcmtTdXBwb3J0ZWQoVy5zdGF0ZS5hY3RpdmVDYWlwTmV0d29yaz8uY2FpcE5ldHdvcmtJZCkpdGhyb3cgbmV3IEVycm9yKCJOZXR3b3JrIG5vdCBzdXBwb3J0ZWQgZm9yIFN3YXBzIik7cmV0dXJuIEdlLmdldCh7cGF0aDoiL3YxL2NvbnZlcnQvYnVpbGQtYXBwcm92ZSIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxwYXJhbXM6e3VzZXJBZGRyZXNzOnIsZnJvbTp0LHRvOmUsc3Q6bixzdjpzfX0pfSxhc3luYyBnZXRCYWxhbmNlKHQsZSxyKXtjb25zdHtzdDpuLHN2OnN9PUdlLmdldFNka1Byb3BlcnRpZXMoKTtpZighYXdhaXQgR2UuaXNOZXR3b3JrU3VwcG9ydGVkKFcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWQpKXJldHVybiBEZS5zaG93RXJyb3IoIlRva2VuIEJhbGFuY2UgVW5hdmFpbGFibGUiKSx7YmFsYW5jZXM6W119O2NvbnN0IG89YCR7ZX06JHt0fWAsYT0kZS5nZXRCYWxhbmNlQ2FjaGVGb3JDYWlwQWRkcmVzcyhvKTtpZihhKXJldHVybiBhO2NvbnN0IGM9YXdhaXQgR2UuZ2V0KHtwYXRoOmAvdjEvYWNjb3VudC8ke3R9L2JhbGFuY2VgLHBhcmFtczp7Y3VycmVuY3k6InVzZCIsY2hhaW5JZDplLGZvcmNlVXBkYXRlOnIsc3Q6bixzdjpzfX0pO3JldHVybiAkZS51cGRhdGVCYWxhbmNlQ2FjaGUoe2NhaXBBZGRyZXNzOm8sYmFsYW5jZTpjLHRpbWVzdGFtcDpEYXRlLm5vdygpfSksY30sYXN5bmMgbG9va3VwRW5zTmFtZSh0KXtyZXR1cm4gYXdhaXQgR2UuaXNOZXR3b3JrU3VwcG9ydGVkKFcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWQpP0dlLmdldCh7cGF0aDpgL3YxL3Byb2ZpbGUvYWNjb3VudC8ke3R9YCxwYXJhbXM6e2FwaVZlcnNpb246IjIifX0pOnthZGRyZXNzZXM6e30sYXR0cmlidXRlczpbXX19LGFzeW5jIHJldmVyc2VMb29rdXBFbnNOYW1lKHthZGRyZXNzOnR9KXtyZXR1cm4gYXdhaXQgR2UuaXNOZXR3b3JrU3VwcG9ydGVkKFcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWQpP0dlLmdldCh7cGF0aDpgL3YxL3Byb2ZpbGUvcmV2ZXJzZS8ke3R9YCxwYXJhbXM6e3NlbmRlcjpvZS5zdGF0ZS5hZGRyZXNzLGFwaVZlcnNpb246IjIifX0pOltdfSxhc3luYyBnZXRFbnNOYW1lU3VnZ2VzdGlvbnModCl7cmV0dXJuIGF3YWl0IEdlLmlzTmV0d29ya1N1cHBvcnRlZChXLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkKT9HZS5nZXQoe3BhdGg6YC92MS9wcm9maWxlL3N1Z2dlc3Rpb25zLyR7dH1gLHBhcmFtczp7em9uZToicmVvd24uaWQifX0pOntzdWdnZXN0aW9uczpbXX19LGFzeW5jIHJlZ2lzdGVyRW5zTmFtZSh7Y29pblR5cGU6dCxhZGRyZXNzOmUsbWVzc2FnZTpyLHNpZ25hdHVyZTpufSl7cmV0dXJuIGF3YWl0IEdlLmlzTmV0d29ya1N1cHBvcnRlZChXLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkKT9Zbi5hcGkucG9zdCh7cGF0aDoiL3YxL3Byb2ZpbGUvYWNjb3VudCIsYm9keTp7Y29pbl90eXBlOnQsYWRkcmVzczplLG1lc3NhZ2U6cixzaWduYXR1cmU6bn0saGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifX0pOntzdWNjZXNzOiExfX0sYXN5bmMgZ2VuZXJhdGVPblJhbXBVUkwoe2Rlc3RpbmF0aW9uV2FsbGV0czp0LHBhcnRuZXJVc2VySWQ6ZSxkZWZhdWx0TmV0d29yazpyLHB1cmNoYXNlQW1vdW50Om4scGF5bWVudEFtb3VudDpzfSl7cmV0dXJuIGF3YWl0IEdlLmlzTmV0d29ya1N1cHBvcnRlZChXLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkKT8oYXdhaXQgWW4uYXBpLnBvc3Qoe3BhdGg6Ii92MS9nZW5lcmF0b3JzL29ucmFtcHVybCIscGFyYW1zOntwcm9qZWN0SWQ6Y2Uuc3RhdGUucHJvamVjdElkfSxib2R5OntkZXN0aW5hdGlvbldhbGxldHM6dCxkZWZhdWx0TmV0d29yazpyLHBhcnRuZXJVc2VySWQ6ZSxkZWZhdWx0RXhwZXJpZW5jZToiYnV5IixwcmVzZXRDcnlwdG9BbW91bnQ6bixwcmVzZXRGaWF0QW1vdW50OnN9fSkpLnVybDoiIn0sYXN5bmMgZ2V0T25yYW1wT3B0aW9ucygpe2lmKCFhd2FpdCBHZS5pc05ldHdvcmtTdXBwb3J0ZWQoVy5zdGF0ZS5hY3RpdmVDYWlwTmV0d29yaz8uY2FpcE5ldHdvcmtJZCkpcmV0dXJue3BheW1lbnRDdXJyZW5jaWVzOltdLHB1cmNoYXNlQ3VycmVuY2llczpbXX07dHJ5e3JldHVybiBhd2FpdCBHZS5nZXQoe3BhdGg6Ii92MS9vbnJhbXAvb3B0aW9ucyJ9KX1jYXRjaHtyZXR1cm4gWGRlfX0sYXN5bmMgZ2V0T25yYW1wUXVvdGUoe3B1cmNoYXNlQ3VycmVuY3k6dCxwYXltZW50Q3VycmVuY3k6ZSxhbW91bnQ6cixuZXR3b3JrOm59KXt0cnl7cmV0dXJuIGF3YWl0IEdlLmlzTmV0d29ya1N1cHBvcnRlZChXLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkKT9hd2FpdCBZbi5hcGkucG9zdCh7cGF0aDoiL3YxL29ucmFtcC9xdW90ZSIscGFyYW1zOntwcm9qZWN0SWQ6Y2Uuc3RhdGUucHJvamVjdElkfSxib2R5OntwdXJjaGFzZUN1cnJlbmN5OnQscGF5bWVudEN1cnJlbmN5OmUsYW1vdW50OnIsbmV0d29yazpufX0pOm51bGx9Y2F0Y2h7cmV0dXJue2NvaW5iYXNlRmVlOnthbW91bnQ6cixjdXJyZW5jeTplLmlkfSxuZXR3b3JrRmVlOnthbW91bnQ6cixjdXJyZW5jeTplLmlkfSxwYXltZW50U3VidG90YWw6e2Ftb3VudDpyLGN1cnJlbmN5OmUuaWR9LHBheW1lbnRUb3RhbDp7YW1vdW50OnIsY3VycmVuY3k6ZS5pZH0scHVyY2hhc2VBbW91bnQ6e2Ftb3VudDpyLGN1cnJlbmN5OmUuaWR9LHF1b3RlSWQ6Im1vY2tlZC1xdW90ZS1pZCJ9fX0sYXN5bmMgZ2V0U21hcnRTZXNzaW9ucyh0KXtyZXR1cm4gYXdhaXQgR2UuaXNOZXR3b3JrU3VwcG9ydGVkKFcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWQpP0dlLmdldCh7cGF0aDpgL3YxL3Nlc3Npb25zLyR7dH1gfSk6W119LGFzeW5jIHJldm9rZVNtYXJ0U2Vzc2lvbih0LGUscil7cmV0dXJuIGF3YWl0IEdlLmlzTmV0d29ya1N1cHBvcnRlZChXLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkKT9Zbi5hcGkucG9zdCh7cGF0aDpgL3YxL3Nlc3Npb25zLyR7dH0vcmV2b2tlYCxwYXJhbXM6e3Byb2plY3RJZDpjZS5zdGF0ZS5wcm9qZWN0SWR9LGJvZHk6e3BjaTplLHNpZ25hdHVyZTpyfX0pOntzdWNjZXNzOiExfX0sc2V0Q2xpZW50SWQodCl7WW4uY2xpZW50SWQ9dCxZbi5hcGk9bmV3IGExKHtiYXNlVXJsOnlCLGNsaWVudElkOnR9KX19LFdpPXp0KHtjdXJyZW50VGFiOjAsdG9rZW5CYWxhbmNlOltdLHNtYXJ0QWNjb3VudERlcGxveWVkOiExLGFkZHJlc3NMYWJlbHM6bmV3IE1hcCxhbGxBY2NvdW50czpbXX0pLFFkZT17c3RhdGU6V2kscmVwbGFjZVN0YXRlKHQpe3QmJk9iamVjdC5hc3NpZ24oV2ksd3UodCkpfSxzdWJzY3JpYmUodCl7cmV0dXJuIFcuc3Vic2NyaWJlQ2hhaW5Qcm9wKCJhY2NvdW50U3RhdGUiLGU9PntpZihlKXJldHVybiB0KGUpfSl9LHN1YnNjcmliZUtleSh0LGUscil7bGV0IG47cmV0dXJuIFcuc3Vic2NyaWJlQ2hhaW5Qcm9wKCJhY2NvdW50U3RhdGUiLHM9PntpZihzKXtjb25zdCBpPXNbdF07biE9PWkmJihuPWksZShpKSl9fSxyKX0sc2V0U3RhdHVzKHQsZSl7Vy5zZXRBY2NvdW50UHJvcCgic3RhdHVzIix0LGUpfSxnZXRDYWlwQWRkcmVzcyh0KXtyZXR1cm4gVy5nZXRBY2NvdW50UHJvcCgiY2FpcEFkZHJlc3MiLHQpfSxzZXRDYWlwQWRkcmVzcyh0LGUpe2NvbnN0IHI9dD91ZS5nZXRQbGFpbkFkZHJlc3ModCk6dm9pZCAwO2U9PT1XLnN0YXRlLmFjdGl2ZUNoYWluJiYoVy5zdGF0ZS5hY3RpdmVDYWlwQWRkcmVzcz10KSxXLnNldEFjY291bnRQcm9wKCJjYWlwQWRkcmVzcyIsdCxlKSxXLnNldEFjY291bnRQcm9wKCJhZGRyZXNzIixyLGUpfSxzZXRCYWxhbmNlKHQsZSxyKXtXLnNldEFjY291bnRQcm9wKCJiYWxhbmNlIix0LHIpLFcuc2V0QWNjb3VudFByb3AoImJhbGFuY2VTeW1ib2wiLGUscil9LHNldFByb2ZpbGVOYW1lKHQsZSl7Vy5zZXRBY2NvdW50UHJvcCgicHJvZmlsZU5hbWUiLHQsZSl9LHNldFByb2ZpbGVJbWFnZSh0LGUpe1cuc2V0QWNjb3VudFByb3AoInByb2ZpbGVJbWFnZSIsdCxlKX0sc2V0VXNlcih0LGUpe1cuc2V0QWNjb3VudFByb3AoInVzZXIiLHQsZSl9LHNldEFkZHJlc3NFeHBsb3JlclVybCh0LGUpe1cuc2V0QWNjb3VudFByb3AoImFkZHJlc3NFeHBsb3JlclVybCIsdCxlKX0sc2V0U21hcnRBY2NvdW50RGVwbG95ZWQodCxlKXtXLnNldEFjY291bnRQcm9wKCJzbWFydEFjY291bnREZXBsb3llZCIsdCxlKX0sc2V0Q3VycmVudFRhYih0KXtXLnNldEFjY291bnRQcm9wKCJjdXJyZW50VGFiIix0LFcuc3RhdGUuYWN0aXZlQ2hhaW4pfSxzZXRUb2tlbkJhbGFuY2UodCxlKXt0JiZXLnNldEFjY291bnRQcm9wKCJ0b2tlbkJhbGFuY2UiLHQsZSl9LHNldFNob3VsZFVwZGF0ZVRvQWRkcmVzcyh0LGUpe1cuc2V0QWNjb3VudFByb3AoInNob3VsZFVwZGF0ZVRvQWRkcmVzcyIsdCxlKX0sc2V0QWxsQWNjb3VudHModCxlKXtXLnNldEFjY291bnRQcm9wKCJhbGxBY2NvdW50cyIsdCxlKX0sYWRkQWRkcmVzc0xhYmVsKHQsZSxyKXtjb25zdCBuPVcuZ2V0QWNjb3VudFByb3AoImFkZHJlc3NMYWJlbHMiLHIpfHxuZXcgTWFwO24uc2V0KHQsZSksVy5zZXRBY2NvdW50UHJvcCgiYWRkcmVzc0xhYmVscyIsbixyKX0scmVtb3ZlQWRkcmVzc0xhYmVsKHQsZSl7Y29uc3Qgcj1XLmdldEFjY291bnRQcm9wKCJhZGRyZXNzTGFiZWxzIixlKXx8bmV3IE1hcDtyLmRlbGV0ZSh0KSxXLnNldEFjY291bnRQcm9wKCJhZGRyZXNzTGFiZWxzIixyLGUpfSxzZXRDb25uZWN0ZWRXYWxsZXRJbmZvKHQsZSl7Vy5zZXRBY2NvdW50UHJvcCgiY29ubmVjdGVkV2FsbGV0SW5mbyIsdCxlLCExKX0sc2V0UHJlZmVycmVkQWNjb3VudFR5cGUodCxlKXtXLnNldEFjY291bnRQcm9wKCJwcmVmZXJyZWRBY2NvdW50VHlwZXMiLHsuLi5XaS5wcmVmZXJyZWRBY2NvdW50VHlwZXMsW2VdOnR9LGUpfSxzZXRQcmVmZXJyZWRBY2NvdW50VHlwZXModCl7V2kucHJlZmVycmVkQWNjb3VudFR5cGVzPXR9LHNldFNvY2lhbFByb3ZpZGVyKHQsZSl7dCYmVy5zZXRBY2NvdW50UHJvcCgic29jaWFsUHJvdmlkZXIiLHQsZSl9LHNldFNvY2lhbFdpbmRvdyh0LGUpe1cuc2V0QWNjb3VudFByb3AoInNvY2lhbFdpbmRvdyIsdD93dSh0KTp2b2lkIDAsZSl9LHNldEZhcmNhc3RlclVybCh0LGUpe1cuc2V0QWNjb3VudFByb3AoImZhcmNhc3RlclVybCIsdCxlKX0sYXN5bmMgZmV0Y2hUb2tlbkJhbGFuY2UodCl7V2kuYmFsYW5jZUxvYWRpbmc9ITA7Y29uc3QgZT1XLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkLHI9Vy5zdGF0ZS5hY3RpdmVDYWlwTmV0d29yaz8uY2hhaW5OYW1lc3BhY2Usbj1XLnN0YXRlLmFjdGl2ZUNhaXBBZGRyZXNzLHM9bj91ZS5nZXRQbGFpbkFkZHJlc3Mobik6dm9pZCAwO2lmKFdpLmxhc3RSZXRyeSYmIXVlLmlzQWxsb3dlZFJldHJ5KFdpLmxhc3RSZXRyeSwzMCp0dC5PTkVfU0VDX01TKSlyZXR1cm4gV2kuYmFsYW5jZUxvYWRpbmc9ITEsW107dHJ5e2lmKHMmJmUmJnIpe2NvbnN0IG89KGF3YWl0IEdlLmdldEJhbGFuY2UocyxlKSkuYmFsYW5jZXMuZmlsdGVyKGE9PmEucXVhbnRpdHkuZGVjaW1hbHMhPT0iMCIpO3JldHVybiBvZS5zZXRUb2tlbkJhbGFuY2UobyxyKSxXaS5sYXN0UmV0cnk9dm9pZCAwLFdpLmJhbGFuY2VMb2FkaW5nPSExLG99fWNhdGNoKGkpe1dpLmxhc3RSZXRyeT1EYXRlLm5vdygpLHQ/LihpKSxEZS5zaG93RXJyb3IoIlRva2VuIEJhbGFuY2UgVW5hdmFpbGFibGUiKX1maW5hbGx5e1dpLmJhbGFuY2VMb2FkaW5nPSExfXJldHVybltdfSxyZXNldEFjY291bnQodCl7Vy5yZXNldEFjY291bnQodCl9fSxvZT1XbihRZGUpLEpuPXp0KHtsb2FkaW5nOiExLGxvYWRpbmdOYW1lc3BhY2VNYXA6bmV3IE1hcCxvcGVuOiExLHNoYWtlOiExLG5hbWVzcGFjZTp2b2lkIDB9KSxlaGU9e3N0YXRlOkpuLHN1YnNjcmliZSh0KXtyZXR1cm4gS3IoSm4sKCk9PnQoSm4pKX0sc3Vic2NyaWJlS2V5KHQsZSl7cmV0dXJuIFdyKEpuLHQsZSl9LGFzeW5jIG9wZW4odCl7Y29uc3QgZT1vZS5zdGF0ZS5zdGF0dXM9PT0iY29ubmVjdGVkIjt4ZS5zdGF0ZS53Y0Jhc2ljP1JlLnByZWZldGNoKHtmZXRjaE5ldHdvcmtJbWFnZXM6ITEsZmV0Y2hDb25uZWN0b3JJbWFnZXM6ITF9KTphd2FpdCBSZS5wcmVmZXRjaCh7ZmV0Y2hDb25uZWN0b3JJbWFnZXM6IWUsZmV0Y2hGZWF0dXJlZFdhbGxldHM6IWUsZmV0Y2hSZWNvbW1lbmRlZFdhbGxldHM6IWV9KSx0Py5uYW1lc3BhY2U/KGF3YWl0IFcuc3dpdGNoQWN0aXZlTmFtZXNwYWNlKHQubmFtZXNwYWNlKSxCZS5zZXRMb2FkaW5nKCEwLHQubmFtZXNwYWNlKSk6QmUuc2V0TG9hZGluZyghMCksZmUuc2V0RmlsdGVyQnlOYW1lc3BhY2UodD8ubmFtZXNwYWNlKTtjb25zdCByPVcuZ2V0QWNjb3VudERhdGEodD8ubmFtZXNwYWNlKT8uY2FpcEFkZHJlc3Msbj1XLnN0YXRlLm5vQWRhcHRlcnM7Y2Uuc3RhdGUubWFudWFsV0NDb250cm9sfHxuJiYhcj91ZS5pc01vYmlsZSgpP25lLnJlc2V0KCJBbGxXYWxsZXRzIik6bmUucmVzZXQoIkNvbm5lY3RpbmdXYWxsZXRDb25uZWN0QmFzaWMiKTp0Py52aWV3P25lLnJlc2V0KHQudmlldyx0LmRhdGEpOnI/bmUucmVzZXQoIkFjY291bnQiKTpuZS5yZXNldCgiQ29ubmVjdCIpLEpuLm9wZW49ITAseW8uc2V0KHtvcGVuOiEwfSksSWUuc2VuZEV2ZW50KHt0eXBlOiJ0cmFjayIsZXZlbnQ6Ik1PREFMX09QRU4iLHByb3BlcnRpZXM6e2Nvbm5lY3RlZDohIXJ9fSl9LGNsb3NlKCl7Y29uc3QgdD1jZS5zdGF0ZS5lbmFibGVFbWJlZGRlZCxlPSEhVy5zdGF0ZS5hY3RpdmVDYWlwQWRkcmVzcztKbi5vcGVuJiZJZS5zZW5kRXZlbnQoe3R5cGU6InRyYWNrIixldmVudDoiTU9EQUxfQ0xPU0UiLHByb3BlcnRpZXM6e2Nvbm5lY3RlZDplfX0pLEpuLm9wZW49ITEsQmUuY2xlYXJMb2FkaW5nKCksdD9lP25lLnJlcGxhY2UoIkFjY291bnQiKTpuZS5wdXNoKCJDb25uZWN0Iik6eW8uc2V0KHtvcGVuOiExfSkseGUucmVzZXRVcmkoKX0sc2V0TG9hZGluZyh0LGUpe2UmJkpuLmxvYWRpbmdOYW1lc3BhY2VNYXAuc2V0KGUsdCksSm4ubG9hZGluZz10LHlvLnNldCh7bG9hZGluZzp0fSl9LGNsZWFyTG9hZGluZygpe0puLmxvYWRpbmdOYW1lc3BhY2VNYXAuY2xlYXIoKSxKbi5sb2FkaW5nPSExfSxzaGFrZSgpe0puLnNoYWtlfHwoSm4uc2hha2U9ITAsc2V0VGltZW91dCgoKT0+e0puLnNoYWtlPSExfSw1MDApKX19LEJlPVduKGVoZSksczA9e2lkOiIyYjkyMzE1ZC1lYWI3LTViZWYtODRmYS0wODlhMTMxMzMzZjUiLG5hbWU6IlVTRCBDb2luIixzeW1ib2w6IlVTREMiLG5ldHdvcmtzOlt7bmFtZToiZXRoZXJldW0tbWFpbm5ldCIsZGlzcGxheV9uYW1lOiJFdGhlcmV1bSIsY2hhaW5faWQ6IjEiLGNvbnRyYWN0X2FkZHJlc3M6IjB4QTBiODY5OTFjNjIxOGIzNmMxZDE5RDRhMmU5RWIwY0UzNjA2ZUI0OCJ9LHtuYW1lOiJwb2x5Z29uLW1haW5uZXQiLGRpc3BsYXlfbmFtZToiUG9seWdvbiIsY2hhaW5faWQ6IjEzNyIsY29udHJhY3RfYWRkcmVzczoiMHgyNzkxQmNhMWYyZGU0NjYxRUQ4OEEzMEM5OUE3YTk0NDlBYTg0MTc0In1dfSx6eD17aWQ6IlVTRCIscGF5bWVudF9tZXRob2RfbGltaXRzOlt7aWQ6ImNhcmQiLG1pbjoiMTAuMDAiLG1heDoiNzUwMC4wMCJ9LHtpZDoiYWNoX2JhbmtfYWNjb3VudCIsbWluOiIxMC4wMCIsbWF4OiIyNTAwMC4wMCJ9XX0sdGhlPXtwcm92aWRlcnM6RCQsc2VsZWN0ZWRQcm92aWRlcjpudWxsLGVycm9yOm51bGwscHVyY2hhc2VDdXJyZW5jeTpzMCxwYXltZW50Q3VycmVuY3k6engscHVyY2hhc2VDdXJyZW5jaWVzOltzMF0scGF5bWVudEN1cnJlbmNpZXM6W10scXVvdGVzTG9hZGluZzohMX0sSXQ9enQodGhlKSxyaGU9e3N0YXRlOkl0LHN1YnNjcmliZSh0KXtyZXR1cm4gS3IoSXQsKCk9PnQoSXQpKX0sc3Vic2NyaWJlS2V5KHQsZSl7cmV0dXJuIFdyKEl0LHQsZSl9LHNldFNlbGVjdGVkUHJvdmlkZXIodCl7aWYodCYmdC5uYW1lPT09Im1lbGQiKXtjb25zdCBlPVcuc3RhdGUuYWN0aXZlQ2hhaW49PT15ZS5DSEFJTi5TT0xBTkE/IlNPTCI6IlVTREMiLHI9b2Uuc3RhdGUuYWRkcmVzcz8/IiIsbj1uZXcgVVJMKHQudXJsKTtuLnNlYXJjaFBhcmFtcy5hcHBlbmQoInB1YmxpY0tleSIsT0cpLG4uc2VhcmNoUGFyYW1zLmFwcGVuZCgiZGVzdGluYXRpb25DdXJyZW5jeUNvZGUiLGUpLG4uc2VhcmNoUGFyYW1zLmFwcGVuZCgid2FsbGV0QWRkcmVzcyIsciksbi5zZWFyY2hQYXJhbXMuYXBwZW5kKCJleHRlcm5hbEN1c3RvbWVySWQiLGNlLnN0YXRlLnByb2plY3RJZCksSXQuc2VsZWN0ZWRQcm92aWRlcj17Li4udCx1cmw6bi50b1N0cmluZygpfX1lbHNlIEl0LnNlbGVjdGVkUHJvdmlkZXI9dH0sc2V0T25yYW1wUHJvdmlkZXJzKHQpe2lmKEFycmF5LmlzQXJyYXkodCkmJnQuZXZlcnkoZT0+dHlwZW9mIGU9PSJzdHJpbmciKSl7Y29uc3QgZT10LHI9RCQuZmlsdGVyKG49PmUuaW5jbHVkZXMobi5uYW1lKSk7SXQucHJvdmlkZXJzPXJ9ZWxzZSBJdC5wcm92aWRlcnM9W119LHNldFB1cmNoYXNlQ3VycmVuY3kodCl7SXQucHVyY2hhc2VDdXJyZW5jeT10fSxzZXRQYXltZW50Q3VycmVuY3kodCl7SXQucGF5bWVudEN1cnJlbmN5PXR9LHNldFB1cmNoYXNlQW1vdW50KHQpe1R0LnN0YXRlLnB1cmNoYXNlQW1vdW50PXR9LHNldFBheW1lbnRBbW91bnQodCl7VHQuc3RhdGUucGF5bWVudEFtb3VudD10fSxhc3luYyBnZXRBdmFpbGFibGVDdXJyZW5jaWVzKCl7Y29uc3QgdD1hd2FpdCBHZS5nZXRPbnJhbXBPcHRpb25zKCk7SXQucHVyY2hhc2VDdXJyZW5jaWVzPXQucHVyY2hhc2VDdXJyZW5jaWVzLEl0LnBheW1lbnRDdXJyZW5jaWVzPXQucGF5bWVudEN1cnJlbmNpZXMsSXQucGF5bWVudEN1cnJlbmN5PXQucGF5bWVudEN1cnJlbmNpZXNbMF18fHp4LEl0LnB1cmNoYXNlQ3VycmVuY3k9dC5wdXJjaGFzZUN1cnJlbmNpZXNbMF18fHMwLGF3YWl0IFJlLmZldGNoQ3VycmVuY3lJbWFnZXModC5wYXltZW50Q3VycmVuY2llcy5tYXAoZT0+ZS5pZCkpLGF3YWl0IFJlLmZldGNoVG9rZW5JbWFnZXModC5wdXJjaGFzZUN1cnJlbmNpZXMubWFwKGU9PmUuc3ltYm9sKSl9LGFzeW5jIGdldFF1b3RlKCl7SXQucXVvdGVzTG9hZGluZz0hMDt0cnl7Y29uc3QgdD1hd2FpdCBHZS5nZXRPbnJhbXBRdW90ZSh7cHVyY2hhc2VDdXJyZW5jeTpJdC5wdXJjaGFzZUN1cnJlbmN5LHBheW1lbnRDdXJyZW5jeTpJdC5wYXltZW50Q3VycmVuY3ksYW1vdW50Okl0LnBheW1lbnRBbW91bnQ/LnRvU3RyaW5nKCl8fCIwIixuZXR3b3JrOkl0LnB1cmNoYXNlQ3VycmVuY3k/LnN5bWJvbH0pO3JldHVybiBJdC5xdW90ZXNMb2FkaW5nPSExLEl0LnB1cmNoYXNlQW1vdW50PU51bWJlcih0Py5wdXJjaGFzZUFtb3VudC5hbW91bnQpLHR9Y2F0Y2godCl7cmV0dXJuIEl0LmVycm9yPXQubWVzc2FnZSxJdC5xdW90ZXNMb2FkaW5nPSExLG51bGx9ZmluYWxseXtJdC5xdW90ZXNMb2FkaW5nPSExfX0scmVzZXRTdGF0ZSgpe0l0LnNlbGVjdGVkUHJvdmlkZXI9bnVsbCxJdC5lcnJvcj1udWxsLEl0LnB1cmNoYXNlQ3VycmVuY3k9czAsSXQucGF5bWVudEN1cnJlbmN5PXp4LEl0LnB1cmNoYXNlQ3VycmVuY2llcz1bczBdLEl0LnBheW1lbnRDdXJyZW5jaWVzPVtdLEl0LnBheW1lbnRBbW91bnQ9dm9pZCAwLEl0LnB1cmNoYXNlQW1vdW50PXZvaWQgMCxJdC5xdW90ZXNMb2FkaW5nPSExfX0sVHQ9V24ocmhlKSxmMz17YXN5bmMgZ2V0VG9rZW5MaXN0KCl7Y29uc3QgdD1XLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrO3JldHVybihhd2FpdCBHZS5mZXRjaFN3YXBUb2tlbnMoe2NoYWluSWQ6dD8uY2FpcE5ldHdvcmtJZH0pKT8udG9rZW5zPy5tYXAobj0+KHsuLi5uLGVpcDI2MTI6ITEscXVhbnRpdHk6e2RlY2ltYWxzOiIwIixudW1lcmljOiIwIn0scHJpY2U6MCx2YWx1ZTowfSkpfHxbXX0sYXN5bmMgZmV0Y2hHYXNQcmljZSgpe2NvbnN0IHQ9Vy5zdGF0ZS5hY3RpdmVDYWlwTmV0d29yaztpZighdClyZXR1cm4gbnVsbDt0cnl7c3dpdGNoKHQuY2hhaW5OYW1lc3BhY2Upe2Nhc2Uic29sYW5hIjpjb25zdCBlPShhd2FpdCB4ZT8uZXN0aW1hdGVHYXMoe2NoYWluTmFtZXNwYWNlOiJzb2xhbmEifSkpPy50b1N0cmluZygpO3JldHVybntzdGFuZGFyZDplLGZhc3Q6ZSxpbnN0YW50OmV9O2Nhc2UiZWlwMTU1IjpkZWZhdWx0OnJldHVybiBhd2FpdCBHZS5mZXRjaEdhc1ByaWNlKHtjaGFpbklkOnQuY2FpcE5ldHdvcmtJZH0pfX1jYXRjaHtyZXR1cm4gbnVsbH19LGFzeW5jIGZldGNoU3dhcEFsbG93YW5jZSh7dG9rZW5BZGRyZXNzOnQsdXNlckFkZHJlc3M6ZSxzb3VyY2VUb2tlbkFtb3VudDpyLHNvdXJjZVRva2VuRGVjaW1hbHM6bn0pe2NvbnN0IHM9YXdhaXQgR2UuZmV0Y2hTd2FwQWxsb3dhbmNlKHt0b2tlbkFkZHJlc3M6dCx1c2VyQWRkcmVzczplfSk7aWYocz8uYWxsb3dhbmNlJiZyJiZuKXtjb25zdCBpPXhlLnBhcnNlVW5pdHMocixuKXx8MDtyZXR1cm4gQmlnSW50KHMuYWxsb3dhbmNlKT49aX1yZXR1cm4hMX0sYXN5bmMgZ2V0TXlUb2tlbnNXaXRoQmFsYW5jZSh0KXtjb25zdCBlPW9lLnN0YXRlLmFkZHJlc3Mscj1XLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrO2lmKCFlfHwhcilyZXR1cm5bXTtjb25zdCBzPShhd2FpdCBHZS5nZXRCYWxhbmNlKGUsci5jYWlwTmV0d29ya0lkLHQpKS5iYWxhbmNlcy5maWx0ZXIoaT0+aS5xdWFudGl0eS5kZWNpbWFscyE9PSIwIik7cmV0dXJuIG9lLnNldFRva2VuQmFsYW5jZShzLFcuc3RhdGUuYWN0aXZlQ2hhaW4pLHRoaXMubWFwQmFsYW5jZXNUb1N3YXBUb2tlbnMocyl9LG1hcEJhbGFuY2VzVG9Td2FwVG9rZW5zKHQpe3JldHVybiB0Py5tYXAoZT0+KHsuLi5lLGFkZHJlc3M6ZT8uYWRkcmVzcz9lLmFkZHJlc3M6Vy5nZXRBY3RpdmVOZXR3b3JrVG9rZW5BZGRyZXNzKCksZGVjaW1hbHM6cGFyc2VJbnQoZS5xdWFudGl0eS5kZWNpbWFscywxMCksbG9nb1VyaTplLmljb25VcmwsZWlwMjYxMjohMX0pKXx8W119fSxlYz17Z2V0R2FzUHJpY2VJbkV0aGVyKHQsZSl7Y29uc3Qgcj1lKnQ7cmV0dXJuIE51bWJlcihyKS8xZTE4fSxnZXRHYXNQcmljZUluVVNEKHQsZSxyKXtjb25zdCBuPWVjLmdldEdhc1ByaWNlSW5FdGhlcihlLHIpO3JldHVybiBOdC5iaWdOdW1iZXIodCkudGltZXMobikudG9OdW1iZXIoKX0sZ2V0UHJpY2VJbXBhY3Qoe3NvdXJjZVRva2VuQW1vdW50OnQsc291cmNlVG9rZW5QcmljZUluVVNEOmUsdG9Ub2tlblByaWNlSW5VU0Q6cix0b1Rva2VuQW1vdW50Om59KXtjb25zdCBzPU50LmJpZ051bWJlcih0KS50aW1lcyhlKSxpPU50LmJpZ051bWJlcihuKS50aW1lcyhyKTtyZXR1cm4gcy5taW51cyhpKS5kaXYocykudGltZXMoMTAwKS50b051bWJlcigpfSxnZXRNYXhTbGlwcGFnZSh0LGUpe2NvbnN0IHI9TnQuYmlnTnVtYmVyKHQpLmRpdigxMDApO3JldHVybiBOdC5tdWx0aXBseShlLHIpLnRvTnVtYmVyKCl9LGdldFByb3ZpZGVyRmVlKHQsZT0uMDA4NSl7cmV0dXJuIE50LmJpZ051bWJlcih0KS50aW1lcyhlKS50b1N0cmluZygpfSxpc0luc3VmZmljaWVudE5ldHdvcmtUb2tlbkZvckdhcyh0LGUpe2NvbnN0IHI9ZXx8IjAiO3JldHVybiBOdC5iaWdOdW1iZXIodCkuZXEoMCk/ITA6TnQuYmlnTnVtYmVyKE50LmJpZ051bWJlcihyKSkuZ3QodCl9LGlzSW5zdWZmaWNpZW50U291cmNlVG9rZW5Gb3JTd2FwKHQsZSxyKXtjb25zdCBuPXI/LmZpbmQoaT0+aS5hZGRyZXNzPT09ZSk/LnF1YW50aXR5Py5udW1lcmljO3JldHVybiBOdC5iaWdOdW1iZXIobnx8IjAiKS5sdCh0KX0sZ2V0VG9Ub2tlbkFtb3VudCh7c291cmNlVG9rZW46dCx0b1Rva2VuOmUsc291cmNlVG9rZW5QcmljZTpyLHRvVG9rZW5QcmljZTpuLHNvdXJjZVRva2VuQW1vdW50OnN9KXtpZihzPT09IjAifHwhdHx8IWUpcmV0dXJuIjAiO2NvbnN0IGk9dC5kZWNpbWFscyxvPXIsYT1lLmRlY2ltYWxzLGM9bjtpZihjPD0wKXJldHVybiIwIjtjb25zdCBsPU50LmJpZ051bWJlcihzKS50aW1lcyguMDA4NSksdT1OdC5iaWdOdW1iZXIocykubWludXMobCkudGltZXMoTnQuYmlnTnVtYmVyKDEwKS5wb3coaSkpLGg9TnQuYmlnTnVtYmVyKG8pLmRpdihjKSxwPWktYTtyZXR1cm4gdS50aW1lcyhoKS5kaXYoTnQuYmlnTnVtYmVyKDEwKS5wb3cocCkpLmRpdihOdC5iaWdOdW1iZXIoMTApLnBvdyhhKSkudG9GaXhlZChhKS50b1N0cmluZygpfX0sT1M9MTVlNCxuaGU9NixPbj17aW5pdGlhbGl6aW5nOiExLGluaXRpYWxpemVkOiExLGxvYWRpbmdQcmljZXM6ITEsbG9hZGluZ1F1b3RlOiExLGxvYWRpbmdBcHByb3ZhbFRyYW5zYWN0aW9uOiExLGxvYWRpbmdCdWlsZFRyYW5zYWN0aW9uOiExLGxvYWRpbmdUcmFuc2FjdGlvbjohMSxmZXRjaEVycm9yOiExLGFwcHJvdmFsVHJhbnNhY3Rpb246dm9pZCAwLHN3YXBUcmFuc2FjdGlvbjp2b2lkIDAsdHJhbnNhY3Rpb25FcnJvcjp2b2lkIDAsc291cmNlVG9rZW46dm9pZCAwLHNvdXJjZVRva2VuQW1vdW50OiIiLHNvdXJjZVRva2VuUHJpY2VJblVTRDowLHRvVG9rZW46dm9pZCAwLHRvVG9rZW5BbW91bnQ6IiIsdG9Ub2tlblByaWNlSW5VU0Q6MCxuZXR3b3JrUHJpY2U6IjAiLG5ldHdvcmtCYWxhbmNlSW5VU0Q6IjAiLG5ldHdvcmtUb2tlblN5bWJvbDoiIixpbnB1dEVycm9yOnZvaWQgMCxzbGlwcGFnZTp0dC5DT05WRVJUX1NMSVBQQUdFX1RPTEVSQU5DRSx0b2tlbnM6dm9pZCAwLHBvcHVsYXJUb2tlbnM6dm9pZCAwLHN1Z2dlc3RlZFRva2Vuczp2b2lkIDAsZm91bmRUb2tlbnM6dm9pZCAwLG15VG9rZW5zV2l0aEJhbGFuY2U6dm9pZCAwLHRva2Vuc1ByaWNlTWFwOnt9LGdhc0ZlZToiMCIsZ2FzUHJpY2VJblVTRDowLHByaWNlSW1wYWN0OnZvaWQgMCxtYXhTbGlwcGFnZTp2b2lkIDAscHJvdmlkZXJGZWU6dm9pZCAwfSxkZT16dChPbikscXc9e3N0YXRlOmRlLHN1YnNjcmliZSh0KXtyZXR1cm4gS3IoZGUsKCk9PnQoZGUpKX0sc3Vic2NyaWJlS2V5KHQsZSl7cmV0dXJuIFdyKGRlLHQsZSl9LGdldFBhcmFtcygpe2NvbnN0IHQ9Vy5zdGF0ZS5hY3RpdmVDYWlwQWRkcmVzcyxlPVcuc3RhdGUuYWN0aXZlQ2hhaW4scj11ZS5nZXRQbGFpbkFkZHJlc3ModCksbj1XLmdldEFjdGl2ZU5ldHdvcmtUb2tlbkFkZHJlc3MoKSxzPWZlLmdldENvbm5lY3RvcklkKGUpO2lmKCFyKXRocm93IG5ldyBFcnJvcigiTm8gYWRkcmVzcyBmb3VuZCB0byBzd2FwIHRoZSB0b2tlbnMgZnJvbS4iKTtjb25zdCBpPSFkZS50b1Rva2VuPy5hZGRyZXNzfHwhZGUudG9Ub2tlbj8uZGVjaW1hbHMsbz0hZGUuc291cmNlVG9rZW4/LmFkZHJlc3N8fCFkZS5zb3VyY2VUb2tlbj8uZGVjaW1hbHN8fCFOdC5iaWdOdW1iZXIoZGUuc291cmNlVG9rZW5BbW91bnQpLmd0KDApLGE9IWRlLnNvdXJjZVRva2VuQW1vdW50O3JldHVybntuZXR3b3JrQWRkcmVzczpuLGZyb21BZGRyZXNzOnIsZnJvbUNhaXBBZGRyZXNzOnQsc291cmNlVG9rZW5BZGRyZXNzOmRlLnNvdXJjZVRva2VuPy5hZGRyZXNzLHRvVG9rZW5BZGRyZXNzOmRlLnRvVG9rZW4/LmFkZHJlc3MsdG9Ub2tlbkFtb3VudDpkZS50b1Rva2VuQW1vdW50LHRvVG9rZW5EZWNpbWFsczpkZS50b1Rva2VuPy5kZWNpbWFscyxzb3VyY2VUb2tlbkFtb3VudDpkZS5zb3VyY2VUb2tlbkFtb3VudCxzb3VyY2VUb2tlbkRlY2ltYWxzOmRlLnNvdXJjZVRva2VuPy5kZWNpbWFscyxpbnZhbGlkVG9Ub2tlbjppLGludmFsaWRTb3VyY2VUb2tlbjpvLGludmFsaWRTb3VyY2VUb2tlbkFtb3VudDphLGF2YWlsYWJsZVRvU3dhcDp0JiYhaSYmIW8mJiFhLGlzQXV0aENvbm5lY3RvcjpzPT09eWUuQ09OTkVDVE9SX0lELkFVVEh9fSxzZXRTb3VyY2VUb2tlbih0KXtpZighdCl7ZGUuc291cmNlVG9rZW49dCxkZS5zb3VyY2VUb2tlbkFtb3VudD0iIixkZS5zb3VyY2VUb2tlblByaWNlSW5VU0Q9MDtyZXR1cm59ZGUuc291cmNlVG9rZW49dCxiZS5zZXRUb2tlblByaWNlKHQuYWRkcmVzcywic291cmNlVG9rZW4iKX0sc2V0U291cmNlVG9rZW5BbW91bnQodCl7ZGUuc291cmNlVG9rZW5BbW91bnQ9dH0sc2V0VG9Ub2tlbih0KXtpZighdCl7ZGUudG9Ub2tlbj10LGRlLnRvVG9rZW5BbW91bnQ9IiIsZGUudG9Ub2tlblByaWNlSW5VU0Q9MDtyZXR1cm59ZGUudG9Ub2tlbj10LGJlLnNldFRva2VuUHJpY2UodC5hZGRyZXNzLCJ0b1Rva2VuIil9LHNldFRvVG9rZW5BbW91bnQodCl7ZGUudG9Ub2tlbkFtb3VudD10P050LmZvcm1hdE51bWJlclRvTG9jYWxTdHJpbmcodCxuaGUpOiIifSxhc3luYyBzZXRUb2tlblByaWNlKHQsZSl7bGV0IHI9ZGUudG9rZW5zUHJpY2VNYXBbdF18fDA7cnx8KGRlLmxvYWRpbmdQcmljZXM9ITAscj1hd2FpdCBiZS5nZXRBZGRyZXNzUHJpY2UodCkpLGU9PT0ic291cmNlVG9rZW4iP2RlLnNvdXJjZVRva2VuUHJpY2VJblVTRD1yOmU9PT0idG9Ub2tlbiImJihkZS50b1Rva2VuUHJpY2VJblVTRD1yKSxkZS5sb2FkaW5nUHJpY2VzJiYoZGUubG9hZGluZ1ByaWNlcz0hMSksYmUuZ2V0UGFyYW1zKCkuYXZhaWxhYmxlVG9Td2FwJiZiZS5zd2FwVG9rZW5zKCl9LHN3aXRjaFRva2Vucygpe2lmKGRlLmluaXRpYWxpemluZ3x8IWRlLmluaXRpYWxpemVkKXJldHVybjtjb25zdCB0PWRlLnRvVG9rZW4/ey4uLmRlLnRvVG9rZW59OnZvaWQgMCxlPWRlLnNvdXJjZVRva2VuP3suLi5kZS5zb3VyY2VUb2tlbn06dm9pZCAwLHI9dCYmZGUudG9Ub2tlbkFtb3VudD09PSIiPyIxIjpkZS50b1Rva2VuQW1vdW50O2JlLnNldFNvdXJjZVRva2VuKHQpLGJlLnNldFRvVG9rZW4oZSksYmUuc2V0U291cmNlVG9rZW5BbW91bnQociksYmUuc2V0VG9Ub2tlbkFtb3VudCgiIiksYmUuc3dhcFRva2VucygpfSxyZXNldFN0YXRlKCl7ZGUubXlUb2tlbnNXaXRoQmFsYW5jZT1Pbi5teVRva2Vuc1dpdGhCYWxhbmNlLGRlLnRva2Vuc1ByaWNlTWFwPU9uLnRva2Vuc1ByaWNlTWFwLGRlLmluaXRpYWxpemVkPU9uLmluaXRpYWxpemVkLGRlLnNvdXJjZVRva2VuPU9uLnNvdXJjZVRva2VuLGRlLnNvdXJjZVRva2VuQW1vdW50PU9uLnNvdXJjZVRva2VuQW1vdW50LGRlLnNvdXJjZVRva2VuUHJpY2VJblVTRD1Pbi5zb3VyY2VUb2tlblByaWNlSW5VU0QsZGUudG9Ub2tlbj1Pbi50b1Rva2VuLGRlLnRvVG9rZW5BbW91bnQ9T24udG9Ub2tlbkFtb3VudCxkZS50b1Rva2VuUHJpY2VJblVTRD1Pbi50b1Rva2VuUHJpY2VJblVTRCxkZS5uZXR3b3JrUHJpY2U9T24ubmV0d29ya1ByaWNlLGRlLm5ldHdvcmtUb2tlblN5bWJvbD1Pbi5uZXR3b3JrVG9rZW5TeW1ib2wsZGUubmV0d29ya0JhbGFuY2VJblVTRD1Pbi5uZXR3b3JrQmFsYW5jZUluVVNELGRlLmlucHV0RXJyb3I9T24uaW5wdXRFcnJvcixkZS5teVRva2Vuc1dpdGhCYWxhbmNlPU9uLm15VG9rZW5zV2l0aEJhbGFuY2V9LHJlc2V0VmFsdWVzKCl7Y29uc3R7bmV0d29ya0FkZHJlc3M6dH09YmUuZ2V0UGFyYW1zKCksZT1kZS50b2tlbnM/LmZpbmQocj0+ci5hZGRyZXNzPT09dCk7YmUuc2V0U291cmNlVG9rZW4oZSksYmUuc2V0VG9Ub2tlbih2b2lkIDApfSxnZXRBcHByb3ZhbExvYWRpbmdTdGF0ZSgpe3JldHVybiBkZS5sb2FkaW5nQXBwcm92YWxUcmFuc2FjdGlvbn0sY2xlYXJFcnJvcigpe2RlLnRyYW5zYWN0aW9uRXJyb3I9dm9pZCAwfSxhc3luYyBpbml0aWFsaXplU3RhdGUoKXtpZighZGUuaW5pdGlhbGl6aW5nKXtpZihkZS5pbml0aWFsaXppbmc9ITAsIWRlLmluaXRpYWxpemVkKXRyeXthd2FpdCBiZS5mZXRjaFRva2VucygpLGRlLmluaXRpYWxpemVkPSEwfWNhdGNoe2RlLmluaXRpYWxpemVkPSExLERlLnNob3dFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgc3dhcCIpLG5lLmdvQmFjaygpfWRlLmluaXRpYWxpemluZz0hMX19LGFzeW5jIGZldGNoVG9rZW5zKCl7Y29uc3R7bmV0d29ya0FkZHJlc3M6dH09YmUuZ2V0UGFyYW1zKCk7YXdhaXQgYmUuZ2V0VG9rZW5MaXN0KCksYXdhaXQgYmUuZ2V0TmV0d29ya1Rva2VuUHJpY2UoKSxhd2FpdCBiZS5nZXRNeVRva2Vuc1dpdGhCYWxhbmNlKCk7Y29uc3QgZT1kZS50b2tlbnM/LmZpbmQocj0+ci5hZGRyZXNzPT09dCk7ZSYmKGRlLm5ldHdvcmtUb2tlblN5bWJvbD1lLnN5bWJvbCxiZS5zZXRTb3VyY2VUb2tlbihlKSxiZS5zZXRTb3VyY2VUb2tlbkFtb3VudCgiMSIpKX0sYXN5bmMgZ2V0VG9rZW5MaXN0KCl7Y29uc3QgdD1hd2FpdCBmMy5nZXRUb2tlbkxpc3QoKTtkZS50b2tlbnM9dCxkZS5wb3B1bGFyVG9rZW5zPXQuc29ydCgoZSxyKT0+ZS5zeW1ib2w8ci5zeW1ib2w/LTE6ZS5zeW1ib2w+ci5zeW1ib2w/MTowKSxkZS5zdWdnZXN0ZWRUb2tlbnM9dC5maWx0ZXIoZT0+ISF0dC5TV0FQX1NVR0dFU1RFRF9UT0tFTlMuaW5jbHVkZXMoZS5zeW1ib2wpLHt9KX0sYXN5bmMgZ2V0QWRkcmVzc1ByaWNlKHQpe2NvbnN0IGU9ZGUudG9rZW5zUHJpY2VNYXBbdF07aWYoZSlyZXR1cm4gZTtjb25zdCBuPShhd2FpdCBHZS5mZXRjaFRva2VuUHJpY2Uoe2FkZHJlc3NlczpbdF19KSk/LmZ1bmdpYmxlc3x8W10saT1bLi4uZGUudG9rZW5zfHxbXSwuLi5kZS5teVRva2Vuc1dpdGhCYWxhbmNlfHxbXV0/LmZpbmQoYz0+Yy5hZGRyZXNzPT09dCk/LnN5bWJvbCxvPW4uZmluZChjPT5jLnN5bWJvbC50b0xvd2VyQ2FzZSgpPT09aT8udG9Mb3dlckNhc2UoKSk/LnByaWNlfHwwLGE9cGFyc2VGbG9hdChvLnRvU3RyaW5nKCkpO3JldHVybiBkZS50b2tlbnNQcmljZU1hcFt0XT1hLGF9LGFzeW5jIGdldE5ldHdvcmtUb2tlblByaWNlKCl7Y29uc3R7bmV0d29ya0FkZHJlc3M6dH09YmUuZ2V0UGFyYW1zKCkscj0oYXdhaXQgR2UuZmV0Y2hUb2tlblByaWNlKHthZGRyZXNzZXM6W3RdfSkuY2F0Y2goKCk9PihEZS5zaG93RXJyb3IoIkZhaWxlZCB0byBmZXRjaCBuZXR3b3JrIHRva2VuIHByaWNlIikse2Z1bmdpYmxlczpbXX0pKSkuZnVuZ2libGVzPy5bMF0sbj1yPy5wcmljZS50b1N0cmluZygpfHwiMCI7ZGUudG9rZW5zUHJpY2VNYXBbdF09cGFyc2VGbG9hdChuKSxkZS5uZXR3b3JrVG9rZW5TeW1ib2w9cj8uc3ltYm9sfHwiIixkZS5uZXR3b3JrUHJpY2U9bn0sYXN5bmMgZ2V0TXlUb2tlbnNXaXRoQmFsYW5jZSh0KXtjb25zdCBlPWF3YWl0IHliLmdldE15VG9rZW5zV2l0aEJhbGFuY2UodCkscj15Yi5tYXBCYWxhbmNlc1RvU3dhcFRva2VucyhlKTtyJiYoYXdhaXQgYmUuZ2V0SW5pdGlhbEdhc1ByaWNlKCksYmUuc2V0QmFsYW5jZXMocikpfSxzZXRCYWxhbmNlcyh0KXtjb25zdHtuZXR3b3JrQWRkcmVzczplfT1iZS5nZXRQYXJhbXMoKSxyPVcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms7aWYoIXIpcmV0dXJuO2NvbnN0IG49dC5maW5kKHM9PnMuYWRkcmVzcz09PWUpO3QuZm9yRWFjaChzPT57ZGUudG9rZW5zUHJpY2VNYXBbcy5hZGRyZXNzXT1zLnByaWNlfHwwfSksZGUubXlUb2tlbnNXaXRoQmFsYW5jZT10LmZpbHRlcihzPT5zLmFkZHJlc3Muc3RhcnRzV2l0aChyLmNhaXBOZXR3b3JrSWQpKSxkZS5uZXR3b3JrQmFsYW5jZUluVVNEPW4/TnQubXVsdGlwbHkobi5xdWFudGl0eS5udW1lcmljLG4ucHJpY2UpLnRvU3RyaW5nKCk6IjAifSxhc3luYyBnZXRJbml0aWFsR2FzUHJpY2UoKXtjb25zdCB0PWF3YWl0IGYzLmZldGNoR2FzUHJpY2UoKTtpZighdClyZXR1cm57Z2FzUHJpY2U6bnVsbCxnYXNQcmljZUluVVNEOm51bGx9O3N3aXRjaChXLnN0YXRlPy5hY3RpdmVDYWlwTmV0d29yaz8uY2hhaW5OYW1lc3BhY2Upe2Nhc2Uic29sYW5hIjpyZXR1cm4gZGUuZ2FzRmVlPXQuc3RhbmRhcmQ/PyIwIixkZS5nYXNQcmljZUluVVNEPU50Lm11bHRpcGx5KHQuc3RhbmRhcmQsZGUubmV0d29ya1ByaWNlKS5kaXYoMWU5KS50b051bWJlcigpLHtnYXNQcmljZTpCaWdJbnQoZGUuZ2FzRmVlKSxnYXNQcmljZUluVVNEOk51bWJlcihkZS5nYXNQcmljZUluVVNEKX07Y2FzZSJlaXAxNTUiOmRlZmF1bHQ6Y29uc3QgZT10LnN0YW5kYXJkPz8iMCIscj1CaWdJbnQoZSksbj1CaWdJbnQoT1MpLHM9ZWMuZ2V0R2FzUHJpY2VJblVTRChkZS5uZXR3b3JrUHJpY2UsbixyKTtyZXR1cm4gZGUuZ2FzRmVlPWUsZGUuZ2FzUHJpY2VJblVTRD1zLHtnYXNQcmljZTpyLGdhc1ByaWNlSW5VU0Q6c319fSxhc3luYyBzd2FwVG9rZW5zKCl7Y29uc3QgdD1vZS5zdGF0ZS5hZGRyZXNzLGU9ZGUuc291cmNlVG9rZW4scj1kZS50b1Rva2VuLG49TnQuYmlnTnVtYmVyKGRlLnNvdXJjZVRva2VuQW1vdW50KS5ndCgwKTtpZihufHxiZS5zZXRUb1Rva2VuQW1vdW50KCIiKSwhcnx8IWV8fGRlLmxvYWRpbmdQcmljZXN8fCFuKXJldHVybjtkZS5sb2FkaW5nUXVvdGU9ITA7Y29uc3Qgcz1OdC5iaWdOdW1iZXIoZGUuc291cmNlVG9rZW5BbW91bnQpLnRpbWVzKDEwKiplLmRlY2ltYWxzKS5yb3VuZCgwKTt0cnl7Y29uc3QgaT1hd2FpdCBHZS5mZXRjaFN3YXBRdW90ZSh7dXNlckFkZHJlc3M6dCxmcm9tOmUuYWRkcmVzcyx0bzpyLmFkZHJlc3MsZ2FzUHJpY2U6ZGUuZ2FzRmVlLGFtb3VudDpzLnRvU3RyaW5nKCl9KTtkZS5sb2FkaW5nUXVvdGU9ITE7Y29uc3Qgbz1pPy5xdW90ZXM/LlswXT8udG9BbW91bnQ7aWYoIW8pe1ByLm9wZW4oe3Nob3J0TWVzc2FnZToiSW5jb3JyZWN0IGFtb3VudCIsbG9uZ01lc3NhZ2U6IlBsZWFzZSBlbnRlciBhIHZhbGlkIGFtb3VudCJ9LCJlcnJvciIpO3JldHVybn1jb25zdCBhPU50LmJpZ051bWJlcihvKS5kaXYoMTAqKnIuZGVjaW1hbHMpLnRvU3RyaW5nKCk7YmUuc2V0VG9Ub2tlbkFtb3VudChhKSxiZS5oYXNJbnN1ZmZpY2llbnRUb2tlbihkZS5zb3VyY2VUb2tlbkFtb3VudCxlLmFkZHJlc3MpP2RlLmlucHV0RXJyb3I9Ikluc3VmZmljaWVudCBiYWxhbmNlIjooZGUuaW5wdXRFcnJvcj12b2lkIDAsYmUuc2V0VHJhbnNhY3Rpb25EZXRhaWxzKCkpfWNhdGNoe2RlLmxvYWRpbmdRdW90ZT0hMSxkZS5pbnB1dEVycm9yPSJJbnN1ZmZpY2llbnQgYmFsYW5jZSJ9fSxhc3luYyBnZXRUcmFuc2FjdGlvbigpe2NvbnN0e2Zyb21DYWlwQWRkcmVzczp0LGF2YWlsYWJsZVRvU3dhcDplfT1iZS5nZXRQYXJhbXMoKSxyPWRlLnNvdXJjZVRva2VuLG49ZGUudG9Ub2tlbjtpZighKCF0fHwhZXx8IXJ8fCFufHxkZS5sb2FkaW5nUXVvdGUpKXRyeXtkZS5sb2FkaW5nQnVpbGRUcmFuc2FjdGlvbj0hMDtjb25zdCBzPWF3YWl0IGYzLmZldGNoU3dhcEFsbG93YW5jZSh7dXNlckFkZHJlc3M6dCx0b2tlbkFkZHJlc3M6ci5hZGRyZXNzLHNvdXJjZVRva2VuQW1vdW50OmRlLnNvdXJjZVRva2VuQW1vdW50LHNvdXJjZVRva2VuRGVjaW1hbHM6ci5kZWNpbWFsc30pO2xldCBpO3JldHVybiBzP2k9YXdhaXQgYmUuY3JlYXRlU3dhcFRyYW5zYWN0aW9uKCk6aT1hd2FpdCBiZS5jcmVhdGVBbGxvd2FuY2VUcmFuc2FjdGlvbigpLGRlLmxvYWRpbmdCdWlsZFRyYW5zYWN0aW9uPSExLGRlLmZldGNoRXJyb3I9ITEsaX1jYXRjaHtuZS5nb0JhY2soKSxEZS5zaG93RXJyb3IoIkZhaWxlZCB0byBjaGVjayBhbGxvd2FuY2UiKSxkZS5sb2FkaW5nQnVpbGRUcmFuc2FjdGlvbj0hMSxkZS5hcHByb3ZhbFRyYW5zYWN0aW9uPXZvaWQgMCxkZS5zd2FwVHJhbnNhY3Rpb249dm9pZCAwLGRlLmZldGNoRXJyb3I9ITA7cmV0dXJufX0sYXN5bmMgY3JlYXRlQWxsb3dhbmNlVHJhbnNhY3Rpb24oKXtjb25zdHtmcm9tQ2FpcEFkZHJlc3M6dCxzb3VyY2VUb2tlbkFkZHJlc3M6ZSx0b1Rva2VuQWRkcmVzczpyfT1iZS5nZXRQYXJhbXMoKTtpZighKCF0fHwhcikpe2lmKCFlKXRocm93IG5ldyBFcnJvcigiY3JlYXRlQWxsb3dhbmNlVHJhbnNhY3Rpb24gLSBObyBzb3VyY2UgdG9rZW4gYWRkcmVzcyBmb3VuZC4iKTt0cnl7Y29uc3Qgbj1hd2FpdCBHZS5nZW5lcmF0ZUFwcHJvdmVDYWxsZGF0YSh7ZnJvbTplLHRvOnIsdXNlckFkZHJlc3M6dH0pLHM9e2RhdGE6bi50eC5kYXRhLHRvOnVlLmdldFBsYWluQWRkcmVzcyhuLnR4LmZyb20pLGdhc1ByaWNlOkJpZ0ludChuLnR4LmVpcDE1NS5nYXNQcmljZSksdmFsdWU6QmlnSW50KG4udHgudmFsdWUpLHRvQW1vdW50OmRlLnRvVG9rZW5BbW91bnR9O3JldHVybiBkZS5zd2FwVHJhbnNhY3Rpb249dm9pZCAwLGRlLmFwcHJvdmFsVHJhbnNhY3Rpb249e2RhdGE6cy5kYXRhLHRvOnMudG8sZ2FzUHJpY2U6cy5nYXNQcmljZSx2YWx1ZTpzLnZhbHVlLHRvQW1vdW50OnMudG9BbW91bnR9LHtkYXRhOnMuZGF0YSx0bzpzLnRvLGdhc1ByaWNlOnMuZ2FzUHJpY2UsdmFsdWU6cy52YWx1ZSx0b0Ftb3VudDpzLnRvQW1vdW50fX1jYXRjaHtuZS5nb0JhY2soKSxEZS5zaG93RXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgYXBwcm92YWwgdHJhbnNhY3Rpb24iKSxkZS5hcHByb3ZhbFRyYW5zYWN0aW9uPXZvaWQgMCxkZS5zd2FwVHJhbnNhY3Rpb249dm9pZCAwLGRlLmZldGNoRXJyb3I9ITA7cmV0dXJufX19LGFzeW5jIGNyZWF0ZVN3YXBUcmFuc2FjdGlvbigpe2NvbnN0e25ldHdvcmtBZGRyZXNzOnQsZnJvbUNhaXBBZGRyZXNzOmUsc291cmNlVG9rZW5BbW91bnQ6cn09YmUuZ2V0UGFyYW1zKCksbj1kZS5zb3VyY2VUb2tlbixzPWRlLnRvVG9rZW47aWYoIWV8fCFyfHwhbnx8IXMpcmV0dXJuO2NvbnN0IGk9eGUucGFyc2VVbml0cyhyLG4uZGVjaW1hbHMpPy50b1N0cmluZygpO3RyeXtjb25zdCBvPWF3YWl0IEdlLmdlbmVyYXRlU3dhcENhbGxkYXRhKHt1c2VyQWRkcmVzczplLGZyb206bi5hZGRyZXNzLHRvOnMuYWRkcmVzcyxhbW91bnQ6aSxkaXNhYmxlRXN0aW1hdGU6ITB9KSxhPW4uYWRkcmVzcz09PXQsYz1CaWdJbnQoby50eC5laXAxNTUuZ2FzKSxsPUJpZ0ludChvLnR4LmVpcDE1NS5nYXNQcmljZSksZD17ZGF0YTpvLnR4LmRhdGEsdG86dWUuZ2V0UGxhaW5BZGRyZXNzKG8udHgudG8pLGdhczpjLGdhc1ByaWNlOmwsdmFsdWU6QmlnSW50KGE/aT8/IjAiOiIwIiksdG9BbW91bnQ6ZGUudG9Ub2tlbkFtb3VudH07cmV0dXJuIGRlLmdhc1ByaWNlSW5VU0Q9ZWMuZ2V0R2FzUHJpY2VJblVTRChkZS5uZXR3b3JrUHJpY2UsYyxsKSxkZS5hcHByb3ZhbFRyYW5zYWN0aW9uPXZvaWQgMCxkZS5zd2FwVHJhbnNhY3Rpb249ZCxkfWNhdGNoe25lLmdvQmFjaygpLERlLnNob3dFcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSB0cmFuc2FjdGlvbiIpLGRlLmFwcHJvdmFsVHJhbnNhY3Rpb249dm9pZCAwLGRlLnN3YXBUcmFuc2FjdGlvbj12b2lkIDAsZGUuZmV0Y2hFcnJvcj0hMDtyZXR1cm59fSxhc3luYyBzZW5kVHJhbnNhY3Rpb25Gb3JBcHByb3ZhbCh0KXtjb25zdHtmcm9tQWRkcmVzczplLGlzQXV0aENvbm5lY3RvcjpyfT1iZS5nZXRQYXJhbXMoKTtkZS5sb2FkaW5nQXBwcm92YWxUcmFuc2FjdGlvbj0hMDtjb25zdCBuPSJBcHByb3ZlIGxpbWl0IGluY3JlYXNlIGluIHlvdXIgd2FsbGV0IjtyP25lLnB1c2hUcmFuc2FjdGlvblN0YWNrKHtvblN1Y2Nlc3MoKXtEZS5zaG93TG9hZGluZyhuKX19KTpEZS5zaG93TG9hZGluZyhuKTt0cnl7YXdhaXQgeGUuc2VuZFRyYW5zYWN0aW9uKHthZGRyZXNzOmUsdG86dC50byxkYXRhOnQuZGF0YSx2YWx1ZTp0LnZhbHVlLGNoYWluTmFtZXNwYWNlOiJlaXAxNTUifSksYXdhaXQgYmUuc3dhcFRva2VucygpLGF3YWl0IGJlLmdldFRyYW5zYWN0aW9uKCksZGUuYXBwcm92YWxUcmFuc2FjdGlvbj12b2lkIDAsZGUubG9hZGluZ0FwcHJvdmFsVHJhbnNhY3Rpb249ITF9Y2F0Y2gocyl7Y29uc3QgaT1zO2RlLnRyYW5zYWN0aW9uRXJyb3I9aT8uc2hvcnRNZXNzYWdlLGRlLmxvYWRpbmdBcHByb3ZhbFRyYW5zYWN0aW9uPSExLERlLnNob3dFcnJvcihpPy5zaG9ydE1lc3NhZ2V8fCJUcmFuc2FjdGlvbiBlcnJvciIpLEllLnNlbmRFdmVudCh7dHlwZToidHJhY2siLGV2ZW50OiJTV0FQX0FQUFJPVkFMX0VSUk9SIixwcm9wZXJ0aWVzOnttZXNzYWdlOmk/LnNob3J0TWVzc2FnZXx8aT8ubWVzc2FnZXx8IlVua25vd24iLG5ldHdvcms6Vy5zdGF0ZS5hY3RpdmVDYWlwTmV0d29yaz8uY2FpcE5ldHdvcmtJZHx8IiIsc3dhcEZyb21Ub2tlbjpiZS5zdGF0ZS5zb3VyY2VUb2tlbj8uc3ltYm9sfHwiIixzd2FwVG9Ub2tlbjpiZS5zdGF0ZS50b1Rva2VuPy5zeW1ib2x8fCIiLHN3YXBGcm9tQW1vdW50OmJlLnN0YXRlLnNvdXJjZVRva2VuQW1vdW50fHwiIixzd2FwVG9BbW91bnQ6YmUuc3RhdGUudG9Ub2tlbkFtb3VudHx8IiIsaXNTbWFydEFjY291bnQ6b2Uuc3RhdGUucHJlZmVycmVkQWNjb3VudFR5cGVzPy5laXAxNTU9PT1mdC5BQ0NPVU5UX1RZUEVTLlNNQVJUX0FDQ09VTlR9fSl9fSxhc3luYyBzZW5kVHJhbnNhY3Rpb25Gb3JTd2FwKHQpe2lmKCF0KXJldHVybjtjb25zdHtmcm9tQWRkcmVzczplLHRvVG9rZW5BbW91bnQ6cixpc0F1dGhDb25uZWN0b3I6bn09YmUuZ2V0UGFyYW1zKCk7ZGUubG9hZGluZ1RyYW5zYWN0aW9uPSEwO2NvbnN0IHM9YFN3YXBwaW5nICR7ZGUuc291cmNlVG9rZW4/LnN5bWJvbH0gdG8gJHtOdC5mb3JtYXROdW1iZXJUb0xvY2FsU3RyaW5nKHIsMyl9ICR7ZGUudG9Ub2tlbj8uc3ltYm9sfWAsaT1gU3dhcHBlZCAke2RlLnNvdXJjZVRva2VuPy5zeW1ib2x9IHRvICR7TnQuZm9ybWF0TnVtYmVyVG9Mb2NhbFN0cmluZyhyLDMpfSAke2RlLnRvVG9rZW4/LnN5bWJvbH1gO24/bmUucHVzaFRyYW5zYWN0aW9uU3RhY2soe29uU3VjY2Vzcygpe25lLnJlcGxhY2UoIkFjY291bnQiKSxEZS5zaG93TG9hZGluZyhzKSxxdy5yZXNldFN0YXRlKCl9fSk6RGUuc2hvd0xvYWRpbmcoIkNvbmZpcm0gdHJhbnNhY3Rpb24gaW4geW91ciB3YWxsZXQiKTt0cnl7Y29uc3Qgbz1bZGUuc291cmNlVG9rZW4/LmFkZHJlc3MsZGUudG9Ub2tlbj8uYWRkcmVzc10uam9pbigiLCIpLGE9YXdhaXQgeGUuc2VuZFRyYW5zYWN0aW9uKHthZGRyZXNzOmUsdG86dC50byxkYXRhOnQuZGF0YSx2YWx1ZTp0LnZhbHVlLGNoYWluTmFtZXNwYWNlOiJlaXAxNTUifSk7cmV0dXJuIGRlLmxvYWRpbmdUcmFuc2FjdGlvbj0hMSxEZS5zaG93U3VjY2VzcyhpKSxJZS5zZW5kRXZlbnQoe3R5cGU6InRyYWNrIixldmVudDoiU1dBUF9TVUNDRVNTIixwcm9wZXJ0aWVzOntuZXR3b3JrOlcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms/LmNhaXBOZXR3b3JrSWR8fCIiLHN3YXBGcm9tVG9rZW46YmUuc3RhdGUuc291cmNlVG9rZW4/LnN5bWJvbHx8IiIsc3dhcFRvVG9rZW46YmUuc3RhdGUudG9Ub2tlbj8uc3ltYm9sfHwiIixzd2FwRnJvbUFtb3VudDpiZS5zdGF0ZS5zb3VyY2VUb2tlbkFtb3VudHx8IiIsc3dhcFRvQW1vdW50OmJlLnN0YXRlLnRvVG9rZW5BbW91bnR8fCIiLGlzU21hcnRBY2NvdW50Om9lLnN0YXRlLnByZWZlcnJlZEFjY291bnRUeXBlcz8uZWlwMTU1PT09ZnQuQUNDT1VOVF9UWVBFUy5TTUFSVF9BQ0NPVU5UfX0pLHF3LnJlc2V0U3RhdGUoKSxufHxuZS5yZXBsYWNlKCJBY2NvdW50IikscXcuZ2V0TXlUb2tlbnNXaXRoQmFsYW5jZShvKSxhfWNhdGNoKG8pe2NvbnN0IGE9bztkZS50cmFuc2FjdGlvbkVycm9yPWE/LnNob3J0TWVzc2FnZSxkZS5sb2FkaW5nVHJhbnNhY3Rpb249ITEsRGUuc2hvd0Vycm9yKGE/LnNob3J0TWVzc2FnZXx8IlRyYW5zYWN0aW9uIGVycm9yIiksSWUuc2VuZEV2ZW50KHt0eXBlOiJ0cmFjayIsZXZlbnQ6IlNXQVBfRVJST1IiLHByb3BlcnRpZXM6e21lc3NhZ2U6YT8uc2hvcnRNZXNzYWdlfHxhPy5tZXNzYWdlfHwiVW5rbm93biIsbmV0d29yazpXLnN0YXRlLmFjdGl2ZUNhaXBOZXR3b3JrPy5jYWlwTmV0d29ya0lkfHwiIixzd2FwRnJvbVRva2VuOmJlLnN0YXRlLnNvdXJjZVRva2VuPy5zeW1ib2x8fCIiLHN3YXBUb1Rva2VuOmJlLnN0YXRlLnRvVG9rZW4/LnN5bWJvbHx8IiIsc3dhcEZyb21BbW91bnQ6YmUuc3RhdGUuc291cmNlVG9rZW5BbW91bnR8fCIiLHN3YXBUb0Ftb3VudDpiZS5zdGF0ZS50b1Rva2VuQW1vdW50fHwiIixpc1NtYXJ0QWNjb3VudDpvZS5zdGF0ZS5wcmVmZXJyZWRBY2NvdW50VHlwZXM/LmVpcDE1NT09PWZ0LkFDQ09VTlRfVFlQRVMuU01BUlRfQUNDT1VOVH19KTtyZXR1cm59fSxoYXNJbnN1ZmZpY2llbnRUb2tlbih0LGUpe3JldHVybiBlYy5pc0luc3VmZmljaWVudFNvdXJjZVRva2VuRm9yU3dhcCh0LGUsZGUubXlUb2tlbnNXaXRoQmFsYW5jZSl9LHNldFRyYW5zYWN0aW9uRGV0YWlscygpe2NvbnN0e3RvVG9rZW5BZGRyZXNzOnQsdG9Ub2tlbkRlY2ltYWxzOmV9PWJlLmdldFBhcmFtcygpOyF0fHwhZXx8KGRlLmdhc1ByaWNlSW5VU0Q9ZWMuZ2V0R2FzUHJpY2VJblVTRChkZS5uZXR3b3JrUHJpY2UsQmlnSW50KGRlLmdhc0ZlZSksQmlnSW50KE9TKSksZGUucHJpY2VJbXBhY3Q9ZWMuZ2V0UHJpY2VJbXBhY3Qoe3NvdXJjZVRva2VuQW1vdW50OmRlLnNvdXJjZVRva2VuQW1vdW50LHNvdXJjZVRva2VuUHJpY2VJblVTRDpkZS5zb3VyY2VUb2tlblByaWNlSW5VU0QsdG9Ub2tlblByaWNlSW5VU0Q6ZGUudG9Ub2tlblByaWNlSW5VU0QsdG9Ub2tlbkFtb3VudDpkZS50b1Rva2VuQW1vdW50fSksZGUubWF4U2xpcHBhZ2U9ZWMuZ2V0TWF4U2xpcHBhZ2UoZGUuc2xpcHBhZ2UsZGUudG9Ub2tlbkFtb3VudCksZGUucHJvdmlkZXJGZWU9ZWMuZ2V0UHJvdmlkZXJGZWUoZGUuc291cmNlVG9rZW5BbW91bnQpKX19LGJlPVduKHF3KSx3cz16dCh7bWVzc2FnZToiIixvcGVuOiExLHRyaWdnZXJSZWN0Ont3aWR0aDowLGhlaWdodDowLHRvcDowLGxlZnQ6MH0sdmFyaWFudDoic2hhZGUifSksaWhlPXtzdGF0ZTp3cyxzdWJzY3JpYmUodCl7cmV0dXJuIEtyKHdzLCgpPT50KHdzKSl9LHN1YnNjcmliZUtleSh0LGUpe3JldHVybiBXcih3cyx0LGUpfSxzaG93VG9vbHRpcCh7bWVzc2FnZTp0LHRyaWdnZXJSZWN0OmUsdmFyaWFudDpyfSl7d3Mub3Blbj0hMCx3cy5tZXNzYWdlPXQsd3MudHJpZ2dlclJlY3Q9ZSx3cy52YXJpYW50PXJ9LGhpZGUoKXt3cy5vcGVuPSExLHdzLm1lc3NhZ2U9IiIsd3MudHJpZ2dlclJlY3Q9e3dpZHRoOjAsaGVpZ2h0OjAsdG9wOjAsbGVmdDowfX19LHhpPVduKGloZSksJFM9MjE0NzQ4MzY0OCxzaGU9e2NvbnZlcnRFVk1DaGFpbklkVG9Db2luVHlwZSh0KXtpZih0Pj0kUyl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY2hhaW5JZCIpO3JldHVybigkU3x0KT4+PjB9fSxIaT16dCh7c3VnZ2VzdGlvbnM6W10sbG9hZGluZzohMX0pLG9oZT17c3RhdGU6SGksc3Vic2NyaWJlKHQpe3JldHVybiBLcihIaSwoKT0+dChIaSkpfSxzdWJzY3JpYmVLZXkodCxlKXtyZXR1cm4gV3IoSGksdCxlKX0sYXN5bmMgcmVzb2x2ZU5hbWUodCl7dHJ5e3JldHVybiBhd2FpdCBHZS5sb29rdXBFbnNOYW1lKHQpfWNhdGNoKGUpe2NvbnN0IHI9ZTt0aHJvdyBuZXcgRXJyb3Iocj8ucmVhc29ucz8uWzBdPy5kZXNjcmlwdGlvbnx8IkVycm9yIHJlc29sdmluZyBuYW1lIil9fSxhc3luYyBpc05hbWVSZWdpc3RlcmVkKHQpe3RyeXtyZXR1cm4gYXdhaXQgR2UubG9va3VwRW5zTmFtZSh0KSwhMH1jYXRjaHtyZXR1cm4hMX19LGFzeW5jIGdldFN1Z2dlc3Rpb25zKHQpe3RyeXtIaS5sb2FkaW5nPSEwLEhpLnN1Z2dlc3Rpb25zPVtdO2NvbnN0IGU9YXdhaXQgR2UuZ2V0RW5zTmFtZVN1Z2dlc3Rpb25zKHQpO3JldHVybiBIaS5zdWdnZXN0aW9ucz1lLnN1Z2dlc3Rpb25zLm1hcChyPT4oey4uLnIsbmFtZTpyLm5hbWV9KSl8fFtdLEhpLnN1Z2dlc3Rpb25zfWNhdGNoKGUpe2NvbnN0IHI9RWkucGFyc2VFbnNBcGlFcnJvcihlLCJFcnJvciBmZXRjaGluZyBuYW1lIHN1Z2dlc3Rpb25zIik7dGhyb3cgbmV3IEVycm9yKHIpfWZpbmFsbHl7SGkubG9hZGluZz0hMX19LGFzeW5jIGdldE5hbWVzRm9yQWRkcmVzcyh0KXt0cnl7aWYoIVcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcmspcmV0dXJuW107Y29uc3Qgcj0kZS5nZXRFbnNGcm9tQ2FjaGVGb3JBZGRyZXNzKHQpO2lmKHIpcmV0dXJuIHI7Y29uc3Qgbj1hd2FpdCBHZS5yZXZlcnNlTG9va3VwRW5zTmFtZSh7YWRkcmVzczp0fSk7cmV0dXJuICRlLnVwZGF0ZUVuc0NhY2hlKHthZGRyZXNzOnQsZW5zOm4sdGltZXN0YW1wOkRhdGUubm93KCl9KSxufWNhdGNoKGUpe2NvbnN0IHI9RWkucGFyc2VFbnNBcGlFcnJvcihlLCJFcnJvciBmZXRjaGluZyBuYW1lcyBmb3IgYWRkcmVzcyIpO3Rocm93IG5ldyBFcnJvcihyKX19LGFzeW5jIHJlZ2lzdGVyTmFtZSh0KXtjb25zdCBlPVcuc3RhdGUuYWN0aXZlQ2FpcE5ldHdvcms7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJOZXR3b3JrIG5vdCBmb3VuZCIpO2NvbnN0IHI9b2Uuc3RhdGUuYWRkcmVzcyxuPWZlLmdldEF1dGhDb25uZWN0b3IoKTtpZighcnx8IW4pdGhyb3cgbmV3IEVycm9yKCJBZGRyZXNzIG9yIGF1dGggY29ubmVjdG9yIG5vdCBmb3VuZCIpO0hpLmxvYWRpbmc9ITA7dHJ5e2NvbnN0IHM9SlNPTi5zdHJpbmdpZnkoe25hbWU6dCxhdHRyaWJ1dGVzOnt9LHRpbWVzdGFtcDpNYXRoLmZsb29yKERhdGUubm93KCkvMWUzKX0pO25lLnB1c2hUcmFuc2FjdGlvblN0YWNrKHtvbkNhbmNlbCgpe25lLnJlcGxhY2UoIlJlZ2lzdGVyQWNjb3VudE5hbWUiKX19KTtjb25zdCBpPWF3YWl0IHhlLnNpZ25NZXNzYWdlKHMpO0hpLmxvYWRpbmc9ITE7Y29uc3Qgbz1lLmlkO2lmKCFvKXRocm93IG5ldyBFcnJvcigiTmV0d29yayBub3QgZm91bmQiKTtjb25zdCBhPXNoZS5jb252ZXJ0RVZNQ2hhaW5JZFRvQ29pblR5cGUoTnVtYmVyKG8pKTthd2FpdCBHZS5yZWdpc3RlckVuc05hbWUoe2NvaW5UeXBlOmEsYWRkcmVzczpyLHNpZ25hdHVyZTppLG1lc3NhZ2U6c30pLG9lLnNldFByb2ZpbGVOYW1lKHQsZS5jaGFpbk5hbWVzcGFjZSksbmUucmVwbGFjZSgiUmVnaXN0ZXJBY2NvdW50TmFtZVN1Y2Nlc3MiKX1jYXRjaChzKXtjb25zdCBpPUVpLnBhcnNlRW5zQXBpRXJyb3IocyxgRXJyb3IgcmVnaXN0ZXJpbmcgbmFtZSAke3R9YCk7dGhyb3cgbmUucmVwbGFjZSgiUmVnaXN0ZXJBY2NvdW50TmFtZSIpLG5ldyBFcnJvcihpKX1maW5hbGx5e0hpLmxvYWRpbmc9ITF9fSx2YWxpZGF0ZU5hbWUodCl7cmV0dXJuL15bYS16QS1aMC05LV17NCx9JC91LnRlc3QodCl9LHBhcnNlRW5zQXBpRXJyb3IodCxlKXtyZXR1cm4gdD8ucmVhc29ucz8uWzBdPy5kZXNjcmlwdGlvbnx8ZX19LEVpPVduKG9oZSkscXA9enQoe2lzTGVnYWxDaGVja2JveENoZWNrZWQ6ITF9KSxBaT17c3RhdGU6cXAsc3Vic2NyaWJlKHQpe3JldHVybiBLcihxcCwoKT0+dChxcCkpfSxzdWJzY3JpYmVLZXkodCxlKXtyZXR1cm4gV3IocXAsdCxlKX0sc2V0SXNMZWdhbENoZWNrYm94Q2hlY2tlZCh0KXtxcC5pc0xlZ2FsQ2hlY2tib3hDaGVja2VkPXR9fSx2Qj17aXNVbnN1cHBvcnRlZENoYWluVmlldygpe3JldHVybiBuZS5zdGF0ZS52aWV3PT09IlVuc3VwcG9ydGVkQ2hhaW4ifHxuZS5zdGF0ZS52aWV3PT09IlN3aXRjaE5ldHdvcmsiJiZuZS5zdGF0ZS5oaXN0b3J5LmluY2x1ZGVzKCJVbnN1cHBvcnRlZENoYWluIil9LGFzeW5jIHNhZmVDbG9zZSgpe2lmKHRoaXMuaXNVbnN1cHBvcnRlZENoYWluVmlldygpKXtCZS5zaGFrZSgpO3JldHVybn1pZihhd2FpdCBkYS5pc1NJV1hDbG9zZURpc2FibGVkKCkpe0JlLnNoYWtlKCk7cmV0dXJufUJlLmNsb3NlKCl9fTtmdW5jdGlvbiBhaGUoKXt0cnl7cmV0dXJuIHVlLnJldHVybk9wZW5IcmVmKGAke3llLlNFQ1VSRV9TSVRFX1NES19PUklHSU59L2xvYWRpbmdgLCJwb3B1cFdpbmRvdyIsIndpZHRoPTYwMCxoZWlnaHQ9ODAwLHNjcm9sbGJhcnM9eWVzIil9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJDb3VsZCBub3Qgb3BlbiBzb2NpYWwgcG9wdXAiKX19YXN5bmMgZnVuY3Rpb24gY2hlKCl7bmUucHVzaCgiQ29ubmVjdGluZ0ZhcmNhc3RlciIpO2NvbnN0IHQ9ZmUuZ2V0QXV0aENvbm5lY3RvcigpO2lmKHQmJiFvZS5zdGF0ZS5mYXJjYXN0ZXJVcmwpdHJ5e2NvbnN0e3VybDplfT1hd2FpdCB0LnByb3ZpZGVyLmdldEZhcmNhc3RlclVyaSgpO29lLnNldEZhcmNhc3RlclVybChlLFcuc3RhdGUuYWN0aXZlQ2hhaW4pfWNhdGNoKGUpe25lLmdvQmFjaygpLERlLnNob3dFcnJvcihlKX19YXN5bmMgZnVuY3Rpb24gbGhlKHQpe25lLnB1c2goIkNvbm5lY3RpbmdTb2NpYWwiKTtjb25zdCBlPWZlLmdldEF1dGhDb25uZWN0b3IoKTtsZXQgcj1udWxsO3RyeXtjb25zdCBuPXNldFRpbWVvdXQoKCk9Pnt0aHJvdyBuZXcgRXJyb3IoIlNvY2lhbCBsb2dpbiB0aW1lZCBvdXQuIFBsZWFzZSB0cnkgYWdhaW4uIil9LDQ1ZTMpO2lmKGUmJnQpe2lmKHVlLmlzVGVsZWdyYW0oKXx8KHI9YWhlKCkpLHIpb2Uuc2V0U29jaWFsV2luZG93KHIsVy5zdGF0ZS5hY3RpdmVDaGFpbik7ZWxzZSBpZighdWUuaXNUZWxlZ3JhbSgpKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGNyZWF0ZSBzb2NpYWwgcG9wdXAiKTtjb25zdHt1cmk6c309YXdhaXQgZS5wcm92aWRlci5nZXRTb2NpYWxSZWRpcmVjdFVyaSh7cHJvdmlkZXI6dH0pO2lmKCFzKXRocm93IHI/LmNsb3NlKCksbmV3IEVycm9yKCJDb3VsZCBub3QgZmV0Y2ggdGhlIHNvY2lhbCByZWRpcmVjdCB1cmkiKTtpZihyJiYoci5sb2NhdGlvbi5ocmVmPXMpLHVlLmlzVGVsZWdyYW0oKSl7JGUuc2V0VGVsZWdyYW1Tb2NpYWxQcm92aWRlcih0KTtjb25zdCBpPXVlLmZvcm1hdFRlbGVncmFtU29jaWFsTG9naW5Vcmwocyk7dWUub3BlbkhyZWYoaSwiX3RvcCIpfWNsZWFyVGltZW91dChuKX19Y2F0Y2gobil7cj8uY2xvc2UoKSxEZS5zaG93RXJyb3Iobj8ubWVzc2FnZSl9fWFzeW5jIGZ1bmN0aW9uIEVCKHQpe29lLnNldFNvY2lhbFByb3ZpZGVyKHQsVy5zdGF0ZS5hY3RpdmVDaGFpbiksSWUuc2VuZEV2ZW50KHt0eXBlOiJ0cmFjayIsZXZlbnQ6IlNPQ0lBTF9MT0dJTl9TVEFSVEVEIixwcm9wZXJ0aWVzOntwcm92aWRlcjp0fX0pLHQ9PT0iZmFyY2FzdGVyIj9hd2FpdCBjaGUoKTphd2FpdCBsaGUodCl9Y29uc3QgZXI9e01FVE1BU0tfQ09OTkVDVE9SX05BTUU6Ik1ldGFNYXNrIixUUlVTVF9DT05ORUNUT1JfTkFNRToiVHJ1c3QgV2FsbGV0IixTT0xGTEFSRV9DT05ORUNUT1JfTkFNRToiU29sZmxhcmUiLFBIQU5UT01fQ09OTkVDVE9SX05BTUU6IlBoYW50b20iLENPSU45OF9DT05ORUNUT1JfTkFNRToiQ29pbjk4IixNQUdJQ19FREVOX0NPTk5FQ1RPUl9OQU1FOiJNYWdpYyBFZGVuIixCQUNLUEFDS19DT05ORUNUT1JfTkFNRToiQmFja3BhY2siLEJJVEdFVF9DT05ORUNUT1JfTkFNRToiQml0Z2V0IFdhbGxldCIsRlJPTlRJRVJfQ09OTkVDVE9SX05BTUU6IkZyb250aWVyIixYVkVSU0VfQ09OTkVDVE9SX05BTUU6Ilh2ZXJzZSBXYWxsZXQiLExFQVRIRVJfQ09OTkVDVE9SX05BTUU6IkxlYXRoZXIiLEVJUDE1NToiZWlwMTU1IixBRERfQ0hBSU5fTUVUSE9EOiJ3YWxsZXRfYWRkRXRoZXJldW1DaGFpbiIsRUlQNjk2M19BTk5PVU5DRV9FVkVOVDoiZWlwNjk2Mzphbm5vdW5jZVByb3ZpZGVyIixFSVA2OTYzX1JFUVVFU1RfRVZFTlQ6ImVpcDY5NjM6cmVxdWVzdFByb3ZpZGVyIixDT05ORUNUT1JfUkROU19NQVA6e2NvaW5iYXNlV2FsbGV0OiJjb20uY29pbmJhc2Uud2FsbGV0Iixjb2luYmFzZVdhbGxldFNESzoiY29tLmNvaW5iYXNlLndhbGxldCJ9LENPTk5FQ1RPUl9UWVBFX0VYVEVSTkFMOiJFWFRFUk5BTCIsQ09OTkVDVE9SX1RZUEVfV0FMTEVUX0NPTk5FQ1Q6IldBTExFVF9DT05ORUNUIixDT05ORUNUT1JfVFlQRV9JTkpFQ1RFRDoiSU5KRUNURUQiLENPTk5FQ1RPUl9UWVBFX0FOTk9VTkNFRDoiQU5OT1VOQ0VEIixDT05ORUNUT1JfVFlQRV9BVVRIOiJBVVRIIixDT05ORUNUT1JfVFlQRV9NVUxUSV9DSEFJTjoiTVVMVElfQ0hBSU4iLENPTk5FQ1RPUl9UWVBFX1czTV9BVVRIOiJJRF9BVVRIIn0sdWM9e0Nvbm5lY3RvckV4cGxvcmVySWRzOntbeWUuQ09OTkVDVE9SX0lELkNPSU5CQVNFXToiZmQyMGRjNDI2ZmIzNzU2NmQ4MDMyMDViMTliYmMxZDQwOTZiMjQ4YWMwNDU0OGUzY2ZiNmIzYTM4YmQwMzNhYSIsW3llLkNPTk5FQ1RPUl9JRC5DT0lOQkFTRV9TREtdOiJmZDIwZGM0MjZmYjM3NTY2ZDgwMzIwNWIxOWJiYzFkNDA5NmIyNDhhYzA0NTQ4ZTNjZmI2YjNhMzhiZDAzM2FhIixbeWUuQ09OTkVDVE9SX0lELlNBRkVdOiIyMjVhZmZiMTc2Nzc4NTY5Mjc2ZTQ4NGUxYjkyNjM3YWQwNjFiMDFlMTNhMDQ4YjM1YTlkMjgwYzNiNTg5NzBmIixbeWUuQ09OTkVDVE9SX0lELkxFREdFUl06IjE5MTc3YTk4MjUyZTA3ZGRmYzlhZjIwODNiYThlMDdlZjYyN2NiNjEwMzQ2N2ZmZWJiM2Y4ZjQyMDVmZDc5MjciLFt5ZS5DT05ORUNUT1JfSUQuT0tYXToiOTcxZTY4OWQwYTViZTUyN2JhYzc5NjI5YjRlZTliOTI1ZTgyMjA4ZTUxNjhiNzMzNDk2YTA5YzBmYWVkMDcwOSIsW2VyLk1FVE1BU0tfQ09OTkVDVE9SX05BTUVdOiJjNTdjYTk1YjQ3NTY5Nzc4YTgyOGQxOTE3ODExNGY0ZGIxODhiODliNzYzYzg5OWJhMGJlMjc0ZTk3MjY3ZDk2IixbZXIuVFJVU1RfQ09OTkVDVE9SX05BTUVdOiI0NjIyYTJiMmQ2YWYxYzk4NDQ5NDQyOTFlNWU3MzUxYTZhYTI0Y2Q3YjIzMDk5ZWZhYzFiMmZkODc1ZGEzMWEwIixbZXIuU09MRkxBUkVfQ09OTkVDVE9SX05BTUVdOiIxY2EwYmRkNDc0NzU3ODcwNWIxOTM5YWYwMjNkMTIwNjc3YzY0ZmU2Y2E3NmFkZDgxZmRhMzZlMzUwNjA1ZTc5IixbZXIuUEhBTlRPTV9DT05ORUNUT1JfTkFNRV06ImE3OTdhYTM1YzBmYWRiZmMxYTUzZTdmNjc1MTYyZWQ1MjI2OTY4YjQ0YTE5ZWUzZDI0Mzg1YzY0ZDFkM2MzOTMiLFtlci5DT0lOOThfQ09OTkVDVE9SX05BTUVdOiIyYTNjODkwNDBhYzNiNzIzYTE5NzJhMzNhMTI1YjFkYjExZTI1OGE2OTc1ZDNhNjEyNTJjZDY0ZTZlYTVlYTAxIixbZXIuTUFHSUNfRURFTl9DT05ORUNUT1JfTkFNRV06IjhiODMwYTJiNzI0YTljM2ZiYWI2M2FmNmY1NWVkMjljOWRmYThhNTVlNzMyZGM4OGM4MGExOTZhMmJhMTM2YzYiLFtlci5CQUNLUEFDS19DT05ORUNUT1JfTkFNRV06IjJiZDhjMTRlMDM1YzJkNDhmMTg0YWFhMTY4NTU5ZTg2YjBlMzQzMzIyOGQzYzQwNzU5MDBhMjIxNzg1MDE5YjAiLFtlci5CSVRHRVRfQ09OTkVDVE9SX05BTUVdOiIzOGY1ZDE4YmQ4NTIyYzI0NGJkZDcwY2I0YTY4ZTBlNzE4ODY1MTU1ODExYzA0M2YwNTJmYjlmMWM1MWRlNjYyIixbZXIuRlJPTlRJRVJfQ09OTkVDVE9SX05BTUVdOiI4NWRiNDMxNDkyYWEyZTg2NzJlOTNmNGVhN2FjZjEwYzg4Yjk3Yjg2N2IwZDM3MzEwN2FmNjNkYzQ4ODBmMDQxIixbZXIuWFZFUlNFX0NPTk5FQ1RPUl9OQU1FXToiMmE4N2Q3NGFlMDJlMTBiZGQxZjUxZjdjZTZjNGUxY2M1M2NkNWYyYzBiNmI1YWQwZDdiMzAwN2QyYjEzZGU3YiIsW2VyLkxFQVRIRVJfQ09OTkVDVE9SX05BTUVdOiI0ODNhZmUxZGYxZGY2M2RhZjMxMzEwOTk3MWZmM2VmODM1NmRkZjFjYzRlNDU4NzdkMjA1ZWVlMGI3ODkzYTEzIn0sTmV0d29ya0ltYWdlSWRzOnsxOiJiYTBiYTBjZC0xN2M2LTQ4MDYtYWQ5My1mOWQxNzRmMTc5MDAiLDQyMTYxOiIzYmZmOTU0ZC01Y2IwLTQ3YTAtOWEyMy1kMjAxOTJlNzQ2MDAiLDQzMTE0OiIzMGM0NmU1My1lOTg5LTQ1ZmItNDU0OS1iZTNiZDRlYjNiMDAiLDU2OiI5MzU2NDE1Ny0yZThlLTRjZTctODFkZi1iMjY0ZGJlZTliMDAiLDI1MDoiMDZiMjYyOTctZmUwYy00NzMzLTVkNmItZmZhNTQ5OGFhYzAwIiwxMDoiYWI5YzE4NmEtYzUyZi00NjRiLTI5MDYtY2E1OWQ3NjBhNDAwIiwxMzc6IjQxZDA0ZDQyLWRhM2ItNDQ1My04NTA2LTY2OGNjMDcyNzkwMCIsNWUzOiJlODZmYWU5Yi1iNzcwLTRlZWEtZTUyMC0xNTBlMTJjODExMDAiLDI5NToiNmE5N2Q1MTAtY2FjOC00ZTU4LWM3Y2UtZTg2ODFiMDQ0YzAwIiwxMTE1NTExMToiZTkwOWVhMGEtZjkyYS00NTEyLWM4ZmMtNzQ4MDQ0ZWE2ODAwIiw4NDUzMjoiYTE4YTdlY2QtZTMwNy00MzYwLTQ3NDYtMjgzMTgyMjI4ZTAwIiwxMzAxOiI0ZWVlYTdlZi0wMDE0LTQ2NDktNWQxZC0wNzI3MWE4MGY2MDAiLDEzMDoiMjI1Nzk4MGEtMzQ2My00OGM2LWNiYWMtYTQyZDJhOTU2ZTAwIiwxMDE0MzoiMGE3MjhlODMtYmFjYi00NmRiLTc4NDQtOTQ4ZjA1NDM0OTAwIiwxMDA6IjAyYjUzZjZhLWUzZDQtNDc5ZS0xY2I0LTIxMTc4OTg3ZDEwMCIsOTAwMToiZjkyNmZmNDEtMjYwZC00MDI4LTYzNWUtOTE5MTNmYzI4ZTAwIiwzMjQ6ImIzMTBmMDdmLTRlZjctNDlmMy03MDczLTJhMGEzOTY4NTgwMCIsMzE0OiI1YTczYjNkZC1hZjc0LTQyNGUtY2FlMC0wZGU4NTllZTk0MDAiLDQ2ODk6IjM0ZTY4NzU0LWU1MzYtNDBkYS1jMTUzLTZlZjJlNzE4OGEwMCIsMTA4ODoiMzg5N2E2NmQtNDBiOS00ODMzLTE2MmYtYTJjOTA1MzFjOTAwIiwxMjg0OiIxNjEwMzhkYS00NGFlLTRlYzctMTIwOC0wZWE1Njk0NTRiMDAiLDEyODU6ImYxZDczYmI2LTU0NTAtNGUxOC0zOGY3LWZiNjQ4NDI2NGEwMCIsNzc3Nzc3NzoiODQ1YzYwZGYtZDQyOS00OTkxLWU2ODctOTFhZTQ1NzkxNjAwIiw0MjIyMDoiYWI3ODFiYmMtY2NjNi00MThkLWQzMmQtNzg5YjE1ZGExZjAwIiw4NDUzOiI3Mjg5YzMzNi0zOTgxLTQwODEtYzVmNC1lZmMyNmFjNjRhMDAiLDEzMTMxNjE1NTQ6IjNmZjczNDM5LWE2MTktNDg5NC05MjYyLTQ0NzBjNzczYTEwMCIsMjAyMDoiYjgxMDFmYzAtOWMxOS00YjZmLWVjNjUtZjZkZmZmMTA2ZTAwIiwyMDIxOiJiODEwMWZjMC05YzE5LTRiNmYtZWM2NS1mNmRmZmYxMDZlMDAiLDgwMDk0OiJlMzI5YzJjOS01OWIwLTRhMDItODNlNC0yMTJmZjM3Nzk5MDAiLDI3NDE6ImZjMjQyN2QxLTVhZjktNGE5Yy04ZGE1LTZmOTQ2MjdjZDkwMCIsIjVleWt0NFVzRnY4UDhOSmRUUkVwWTF2enFLcVpLdmRwIjoiYTFiNTg4OTktZjY3MS00Mjc2LTZhNWUtNTZjYTViZDU5NzAwIiwiNHVoY1ZKeVU5cEprdlF5Uzg4dVJEaXN3SFhTQ2tZM3oiOiJhMWI1ODg5OS1mNjcxLTQyNzYtNmE1ZS01NmNhNWJkNTk3MDAiLEV0V1RSQUJaYVlxNmlNZmVZS291UnUxNjZWVTJ4cWExOiJhMWI1ODg5OS1mNjcxLTQyNzYtNmE1ZS01NmNhNWJkNTk3MDAiLCIwMDAwMDAwMDAwMTlkNjY4OWMwODVhZTE2NTgzMWU5MyI6IjBiNDgzOGRiLTAxNjEtNGZmZS0wMjJkLTUzMmJmMDNkYmEwMCIsIjAwMDAwMDAwMDkzM2VhMDFhZDBlZTk4NDIwOTc3OWJhIjoiMzkzNTQwNjQtZDc5Yi00MjBiLTA2NWQtZjk4MGM0Yjc4MjAwIn0sQ29ubmVjdG9ySW1hZ2VJZHM6e1t5ZS5DT05ORUNUT1JfSUQuQ09JTkJBU0VdOiIwYzI4NDBjMy01YjA0LTRjNDQtOTY2MS1mYmQ0YjQ5ZTE4MDAiLFt5ZS5DT05ORUNUT1JfSUQuQ09JTkJBU0VfU0RLXToiMGMyODQwYzMtNWIwNC00YzQ0LTk2NjEtZmJkNGI0OWUxODAwIixbeWUuQ09OTkVDVE9SX0lELlNBRkVdOiI0NjFkYjYzNy04NjE2LTQzY2UtMDM1YS1kODliOGExZDU4MDAiLFt5ZS5DT05ORUNUT1JfSUQuTEVER0VSXToiNTRhMWFhNzctZDIwMi00ZjhkLTBmYjItNWQyYmI2ZGIwMzAwIixbeWUuQ09OTkVDVE9SX0lELldBTExFVF9DT05ORUNUXToiZWYxYTFmY2YtN2ZlOC00ZDY5LWJkNmQtZmRhMTM0NWI0NDAwIixbeWUuQ09OTkVDVE9SX0lELklOSkVDVEVEXToiMDdiYTg3ZWQtNDNhYS00YWRmLTQ1NDAtOWU2YTJiOWNhZTAwIn0sQ29ubmVjdG9yTmFtZXNNYXA6e1t5ZS5DT05ORUNUT1JfSUQuSU5KRUNURURdOiJCcm93c2VyIFdhbGxldCIsW3llLkNPTk5FQ1RPUl9JRC5XQUxMRVRfQ09OTkVDVF06IldhbGxldENvbm5lY3QiLFt5ZS5DT05ORUNUT1JfSUQuQ09JTkJBU0VdOiJDb2luYmFzZSIsW3llLkNPTk5FQ1RPUl9JRC5DT0lOQkFTRV9TREtdOiJDb2luYmFzZSIsW3llLkNPTk5FQ1RPUl9JRC5MRURHRVJdOiJMZWRnZXIiLFt5ZS5DT05ORUNUT1JfSUQuU0FGRV06IlNhZmUifSxDb25uZWN0b3JUeXBlc01hcDp7W3llLkNPTk5FQ1RPUl9JRC5JTkpFQ1RFRF06IklOSkVDVEVEIixbeWUuQ09OTkVDVE9SX0lELldBTExFVF9DT05ORUNUXToiV0FMTEVUX0NPTk5FQ1QiLFt5ZS5DT05ORUNUT1JfSUQuRUlQNjk2M106IkFOTk9VTkNFRCIsW3llLkNPTk5FQ1RPUl9JRC5BVVRIXToiQVVUSCJ9fSxLeT17Z2V0Q2FpcFRva2Vucyh0KXtpZighdClyZXR1cm47Y29uc3QgZT17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoW3Isbl0pPT57ZVtgJHtlci5FSVAxNTV9OiR7cn1gXT1ufSksZX0saXNMb3dlckNhc2VNYXRjaCh0LGUpe3JldHVybiB0Py50b0xvd2VyQ2FzZSgpPT09ZT8udG9Mb3dlckNhc2UoKX19LHVoZT1uZXcgQWJvcnRDb250cm9sbGVyLFhyPXtFbWJlZGRlZFdhbGxldEFib3J0Q29udHJvbGxlcjp1aGUsVW5pdmVyc2FsUHJvdmlkZXJFcnJvcnM6e1VOQVVUSE9SSVpFRF9ET01BSU5fTk9UX0FMTE9XRUQ6e21lc3NhZ2U6IlVuYXV0aG9yaXplZDogb3JpZ2luIG5vdCBhbGxvd2VkIixhbGVydEVycm9yS2V5OiJJTlZBTElEX0FQUF9DT05GSUdVUkFUSU9OIn0sSldUX1ZBTElEQVRJT05fRVJST1I6e21lc3NhZ2U6IkpXVCB2YWxpZGF0aW9uIGVycm9yOiBKV1QgVG9rZW4gaXMgbm90IHlldCB2YWxpZCIsYWxlcnRFcnJvcktleToiSldUX1RPS0VOX05PVF9WQUxJRCJ9LElOVkFMSURfS0VZOnttZXNzYWdlOiJVbmF1dGhvcml6ZWQ6IGludmFsaWQga2V5IixhbGVydEVycm9yS2V5OiJJTlZBTElEX1BST0pFQ1RfSUQifX0sQUxFUlRfRVJST1JTOntTV0lUQ0hfTkVUV09SS19OT1RfRk9VTkQ6e3Nob3J0TWVzc2FnZToiTmV0d29yayBOb3QgRm91bmQiLGxvbmdNZXNzYWdlOiJOZXR3b3JrIG5vdCBmb3VuZCAtIHBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgaW5jbHVkZWQgaW4gJ25ldHdvcmtzJyBhcnJheSBpbiBjcmVhdGVBcHBLaXQgZnVuY3Rpb24ifSxJTlZBTElEX0FQUF9DT05GSUdVUkFUSU9OOntzaG9ydE1lc3NhZ2U6IkludmFsaWQgQXBwIENvbmZpZ3VyYXRpb24iLGxvbmdNZXNzYWdlOigpPT5gT3JpZ2luICR7ZGhlKCk/d2luZG93Lm9yaWdpbjoidW5rbm93biJ9IG5vdCBmb3VuZCBvbiBBbGxvd2xpc3QgLSB1cGRhdGUgY29uZmlndXJhdGlvbiBvbiBjbG91ZC5yZW93bi5jb21gfSxJRlJBTUVfTE9BRF9GQUlMRUQ6e3Nob3J0TWVzc2FnZToiTmV0d29yayBFcnJvciAtIENvdWxkIG5vdCBsb2FkIGVtYmVkZGVkIHdhbGxldCIsbG9uZ01lc3NhZ2U6KCk9PiJUaGVyZSB3YXMgYW4gaXNzdWUgbG9hZGluZyB0aGUgZW1iZWRkZWQgd2FsbGV0LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLiJ9LElGUkFNRV9SRVFVRVNUX1RJTUVPVVQ6e3Nob3J0TWVzc2FnZToiRW1iZWRkZWQgV2FsbGV0IFJlcXVlc3QgVGltZWQgT3V0Iixsb25nTWVzc2FnZTooKT0+IlRoZXJlIHdhcyBhbiBpc3N1ZSBkb2luZyB0aGUgcmVxdWVzdCB0byB0aGUgZW1iZWRkZWQgd2FsbGV0LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLiJ9LFVOVkVSSUZJRURfRE9NQUlOOntzaG9ydE1lc3NhZ2U6IkludmFsaWQgQXBwIENvbmZpZ3VyYXRpb24iLGxvbmdNZXNzYWdlOigpPT4iVGhlcmUgd2FzIGFuIGlzc3VlIGxvYWRpbmcgdGhlIGVtYmVkZGVkIHdhbGxldC4gUGxlYXNlIHZlcmlmeSB0aGF0IHlvdXIgZG9tYWluIGlzIGFsbG93ZWQgYXQgY2xvdWQucmVvd24uY29tIn0sSldUX1RPS0VOX05PVF9WQUxJRDp7c2hvcnRNZXNzYWdlOiJTZXNzaW9uIEV4cGlyZWQiLGxvbmdNZXNzYWdlOiJJbnZhbGlkIHNlc3Npb24gZm91bmQgb24gVW5pdmVyc2FsUHJvdmlkZXIgLSBwbGVhc2UgY2hlY2sgeW91ciB0aW1lIHNldHRpbmdzIGFuZCBjb25uZWN0IGFnYWluIn0sSU5WQUxJRF9QUk9KRUNUX0lEOntzaG9ydE1lc3NhZ2U6IkludmFsaWQgQXBwIENvbmZpZ3VyYXRpb24iLGxvbmdNZXNzYWdlOiJJbnZhbGlkIFByb2plY3QgSUQgLSB1cGRhdGUgY29uZmlndXJhdGlvbiJ9LFBST0pFQ1RfSURfTk9UX0NPTkZJR1VSRUQ6e3Nob3J0TWVzc2FnZToiUHJvamVjdCBJRCBOb3QgQ29uZmlndXJlZCIsbG9uZ01lc3NhZ2U6IlByb2plY3QgSUQgTm90IENvbmZpZ3VyZWQgLSB1cGRhdGUgY29uZmlndXJhdGlvbiBvbiBjbG91ZC5yZW93bi5jb20ifX19O2Z1bmN0aW9uIGRoZSgpe3JldHVybiB0eXBlb2Ygd2luZG93PCJ1In1jb25zdCBoaGU9e2NyZWF0ZUxvZ2dlcih0LGU9ImVycm9yIil7Y29uc3Qgcj1scCh7bGV2ZWw6ZX0pLHtsb2dnZXI6bn09RTYoe29wdHM6cn0pO3JldHVybiBuLmVycm9yPSguLi5zKT0+e2Zvcihjb25zdCBpIG9mIHMpaWYoaSBpbnN0YW5jZW9mIEVycm9yKXt0KGksLi4ucyk7cmV0dXJufXQodm9pZCAwLC4uLnMpfSxufX0scGhlPSJycGMud2FsbGV0Y29ubmVjdC5vcmciO2Z1bmN0aW9uIE1TKHQsZSl7Y29uc3Qgcj1uZXcgVVJMKCJodHRwczovL3JwYy53YWxsZXRjb25uZWN0Lm9yZy92MS8iKTtyZXR1cm4gci5zZWFyY2hQYXJhbXMuc2V0KCJjaGFpbklkIix0KSxyLnNlYXJjaFBhcmFtcy5zZXQoInByb2plY3RJZCIsZSksci50b1N0cmluZygpfWNvbnN0IG0zPVsibmVhcjptYWlubmV0Iiwic29sYW5hOjVleWt0NFVzRnY4UDhOSmRUUkVwWTF2enFLcVpLdmRwIiwiZWlwMTU1OjExMDEiLCJlaXAxNTU6NTYiLCJlaXAxNTU6NDIxNjEiLCJlaXAxNTU6Nzc3Nzc3NyIsImVpcDE1NTo1OTE0NCIsImVpcDE1NTozMjQiLCJzb2xhbmE6RXRXVFJBQlphWXE2aU1mZVlLb3VSdTE2NlZVMnhxYTEiLCJlaXAxNTU6NTAwMCIsInNvbGFuYTo0c2dqbXcxc3VuaHpzeGdzcHVocHFsZHg2d2l5am50eiIsImVpcDE1NTo4MDA4NCIsImVpcDE1NTo1MDAzIiwiZWlwMTU1OjEwMCIsImVpcDE1NTo4NDUzIiwiZWlwMTU1OjQyMjIwIiwiZWlwMTU1OjEzMTMxNjE1NTUiLCJlaXAxNTU6MTcwMDAiLCJlaXAxNTU6MSIsImVpcDE1NTozMDAiLCJlaXAxNTU6MTMxMzE2MTU1NCIsImVpcDE1NToxMzI5IiwiZWlwMTU1Ojg0NTMyIiwiZWlwMTU1OjQyMTYxNCIsImVpcDE1NToxMTE1NTExMSIsImVpcDE1NTo4MjE3IiwiZWlwMTU1OjQzMTE0Iiwic29sYW5hOjR1aGNWSnlVOXBKa3ZReVM4OHVSRGlzd0hYU0NrWTN6IiwiZWlwMTU1Ojk5OTk5OTk5OSIsImVpcDE1NToxMTE1NTQyMCIsImVpcDE1NTo4MDAwMiIsImVpcDE1NTo5NyIsImVpcDE1NTo0MzExMyIsImVpcDE1NToxMzciLCJlaXAxNTU6MTAiLCJlaXAxNTU6MTMwMSIsImJpcDEyMjowMDAwMDAwMDAwMTlkNjY4OWMwODVhZTE2NTgzMWU5MyIsImJpcDEyMjowMDAwMDAwMDA5MzNlYTAxYWQwZWU5ODQyMDk3NzliYSJdLG1vPXtleHRlbmRScGNVcmxXaXRoUHJvamVjdElkKHQsZSl7bGV0IHI9ITE7dHJ5e3I9bmV3IFVSTCh0KS5ob3N0PT09cGhlfWNhdGNoe3I9ITF9aWYocil7Y29uc3Qgbj1uZXcgVVJMKHQpO3JldHVybiBuLnNlYXJjaFBhcmFtcy5oYXMoInByb2plY3RJZCIpfHxuLnNlYXJjaFBhcmFtcy5zZXQoInByb2plY3RJZCIsZSksbi50b1N0cmluZygpfXJldHVybiB0fSxpc0NhaXBOZXR3b3JrKHQpe3JldHVybiJjaGFpbk5hbWVzcGFjZSJpbiB0JiYiY2FpcE5ldHdvcmtJZCJpbiB0fSxnZXRDaGFpbk5hbWVzcGFjZSh0KXtyZXR1cm4gdGhpcy5pc0NhaXBOZXR3b3JrKHQpP3QuY2hhaW5OYW1lc3BhY2U6eWUuQ0hBSU4uRVZNfSxnZXRDYWlwTmV0d29ya0lkKHQpe3JldHVybiB0aGlzLmlzQ2FpcE5ldHdvcmsodCk/dC5jYWlwTmV0d29ya0lkOmAke3llLkNIQUlOLkVWTX06JHt0LmlkfWB9LGdldERlZmF1bHRScGNVcmwodCxlLHIpe2NvbnN0IG49dC5ycGNVcmxzPy5kZWZhdWx0Py5odHRwPy5bMF07cmV0dXJuIG0zLmluY2x1ZGVzKGUpP01TKGUscik6bnx8IiJ9LGV4dGVuZENhaXBOZXR3b3JrKHQse2N1c3RvbU5ldHdvcmtJbWFnZVVybHM6ZSxwcm9qZWN0SWQ6cixjdXN0b21ScGNVcmxzOm59KXtjb25zdCBzPXRoaXMuZ2V0Q2hhaW5OYW1lc3BhY2UodCksaT10aGlzLmdldENhaXBOZXR3b3JrSWQodCksbz10LnJwY1VybHMuZGVmYXVsdC5odHRwPy5bMF0sYT10aGlzLmdldERlZmF1bHRScGNVcmwodCxpLHIpLGM9dD8ucnBjVXJscz8uY2hhaW5EZWZhdWx0Py5odHRwPy5bMF18fG8sbD1uPy5baV0/Lm1hcChoPT5oLnVybCl8fFtdLGQ9Wy4uLmwsYV0sdT1bLi4ubF07cmV0dXJuIGMmJiF1LmluY2x1ZGVzKGMpJiZ1LnB1c2goYyksey4uLnQsY2hhaW5OYW1lc3BhY2U6cyxjYWlwTmV0d29ya0lkOmksYXNzZXRzOntpbWFnZUlkOnVjLk5ldHdvcmtJbWFnZUlkc1t0LmlkXSxpbWFnZVVybDplPy5bdC5pZF19LHJwY1VybHM6ey4uLnQucnBjVXJscyxkZWZhdWx0OntodHRwOmR9LGNoYWluRGVmYXVsdDp7aHR0cDp1fX19fSxleHRlbmRDYWlwTmV0d29ya3ModCx7Y3VzdG9tTmV0d29ya0ltYWdlVXJsczplLHByb2plY3RJZDpyLGN1c3RvbVJwY1VybHM6bn0pe3JldHVybiB0Lm1hcChzPT5tby5leHRlbmRDYWlwTmV0d29yayhzLHtjdXN0b21OZXR3b3JrSW1hZ2VVcmxzOmUsY3VzdG9tUnBjVXJsczpuLHByb2plY3RJZDpyfSkpfSxnZXRWaWVtVHJhbnNwb3J0KHQsZSxyKXtjb25zdCBuPVtdO3JldHVybiByPy5mb3JFYWNoKHM9PntuLnB1c2godWcocy51cmwscy5jb25maWcpKX0pLG0zLmluY2x1ZGVzKHQuY2FpcE5ldHdvcmtJZCkmJm4ucHVzaCh1ZyhNUyh0LmNhaXBOZXR3b3JrSWQsZSkse2ZldGNoT3B0aW9uczp7aGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6InRleHQvcGxhaW4ifX19KSksdD8ucnBjVXJscz8uZGVmYXVsdD8uaHR0cD8uZm9yRWFjaChzPT57bi5wdXNoKHVnKHMpKX0pLHM3KG4pfSxleHRlbmRXYWdtaVRyYW5zcG9ydHModCxlLHIpe2lmKG0zLmluY2x1ZGVzKHQuY2FpcE5ldHdvcmtJZCkpe2NvbnN0IG49dGhpcy5nZXREZWZhdWx0UnBjVXJsKHQsdC5jYWlwTmV0d29ya0lkLGUpO3JldHVybiBzNyhbcix1ZyhuKV0pfXJldHVybiByfSxnZXRVbnN1cHBvcnRlZE5ldHdvcmsodCl7cmV0dXJue2lkOnQuc3BsaXQoIjoiKVsxXSxjYWlwTmV0d29ya0lkOnQsbmFtZTp5ZS5VTlNVUFBPUlRFRF9ORVRXT1JLX05BTUUsY2hhaW5OYW1lc3BhY2U6dC5zcGxpdCgiOiIpWzBdLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiIiLGRlY2ltYWxzOjAsc3ltYm9sOiIifSxycGNVcmxzOntkZWZhdWx0OntodHRwOltdfX19fSxnZXRDYWlwTmV0d29ya0Zyb21TdG9yYWdlKHQpe2NvbnN0IGU9JGUuZ2V0QWN0aXZlQ2FpcE5ldHdvcmtJZCgpLHI9Vy5nZXRBbGxSZXF1ZXN0ZWRDYWlwTmV0d29ya3MoKSxuPUFycmF5LmZyb20oVy5zdGF0ZS5jaGFpbnM/LmtleXMoKXx8W10pLHM9ZT8uc3BsaXQoIjoiKVswXSxpPXM/bi5pbmNsdWRlcyhzKTohMSxvPXI/LmZpbmQoYz0+Yy5jYWlwTmV0d29ya0lkPT09ZSk7cmV0dXJuIGkmJiFvJiZlP3RoaXMuZ2V0VW5zdXBwb3J0ZWROZXR3b3JrKGUpOm98fHR8fHI/LlswXX19LHZiPXtlaXAxNTU6dm9pZCAwLHNvbGFuYTp2b2lkIDAscG9sa2Fkb3Q6dm9pZCAwLGJpcDEyMjp2b2lkIDAsY29zbW9zOnZvaWQgMH0sWG49enQoe3Byb3ZpZGVyczp7Li4udmJ9LHByb3ZpZGVySWRzOnsuLi52Yn19KSxVdD17c3RhdGU6WG4sc3Vic2NyaWJlS2V5KHQsZSl7cmV0dXJuIFdyKFhuLHQsZSl9LHN1YnNjcmliZSh0KXtyZXR1cm4gS3IoWG4sKCk9Pnt0KFhuKX0pfSxzdWJzY3JpYmVQcm92aWRlcnModCl7cmV0dXJuIEtyKFhuLnByb3ZpZGVycywoKT0+dChYbi5wcm92aWRlcnMpKX0sc2V0UHJvdmlkZXIodCxlKXtlJiYoWG4ucHJvdmlkZXJzW3RdPXd1KGUpKX0sZ2V0UHJvdmlkZXIodCl7cmV0dXJuIFhuLnByb3ZpZGVyc1t0XX0sc2V0UHJvdmlkZXJJZCh0LGUpe2UmJihYbi5wcm92aWRlcklkc1t0XT1lKX0sZ2V0UHJvdmlkZXJJZCh0KXtpZih0KXJldHVybiBYbi5wcm92aWRlcklkc1t0XX0scmVzZXQoKXtYbi5wcm92aWRlcnM9ey4uLnZifSxYbi5wcm92aWRlcklkcz17Li4udmJ9fSxyZXNldENoYWluKHQpe1huLnByb3ZpZGVyc1t0XT12b2lkIDAsWG4ucHJvdmlkZXJJZHNbdF09dm9pZCAwfX07dmFyIGczPXt9LFZwPXt9LERTO2Z1bmN0aW9uIGZoZSgpe2lmKERTKXJldHVybiBWcDtEUz0xLFZwLmJ5dGVMZW5ndGg9YSxWcC50b0J5dGVBcnJheT1sLFZwLmZyb21CeXRlQXJyYXk9aDtmb3IodmFyIHQ9W10sZT1bXSxyPXR5cGVvZiBVaW50OEFycmF5PCJ1Ij9VaW50OEFycmF5OkFycmF5LG49IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLHM9MCxpPW4ubGVuZ3RoO3M8aTsrK3MpdFtzXT1uW3NdLGVbbi5jaGFyQ29kZUF0KHMpXT1zO2VbNDVdPTYyLGVbOTVdPTYzO2Z1bmN0aW9uIG8ocCl7dmFyIGY9cC5sZW5ndGg7aWYoZiU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7dmFyIG09cC5pbmRleE9mKCI9Iik7bT09PS0xJiYobT1mKTt2YXIgdz1tPT09Zj8wOjQtbSU0O3JldHVyblttLHddfWZ1bmN0aW9uIGEocCl7dmFyIGY9byhwKSxtPWZbMF0sdz1mWzFdO3JldHVybihtK3cpKjMvNC13fWZ1bmN0aW9uIGMocCxmLG0pe3JldHVybihmK20pKjMvNC1tfWZ1bmN0aW9uIGwocCl7dmFyIGYsbT1vKHApLHc9bVswXSxnPW1bMV0sdj1uZXcgcihjKHAsdyxnKSksRT0wLHg9Zz4wP3ctNDp3LF87Zm9yKF89MDtfPHg7Xys9NClmPWVbcC5jaGFyQ29kZUF0KF8pXTw8MTh8ZVtwLmNoYXJDb2RlQXQoXysxKV08PDEyfGVbcC5jaGFyQ29kZUF0KF8rMildPDw2fGVbcC5jaGFyQ29kZUF0KF8rMyldLHZbRSsrXT1mPj4xNiYyNTUsdltFKytdPWY+PjgmMjU1LHZbRSsrXT1mJjI1NTtyZXR1cm4gZz09PTImJihmPWVbcC5jaGFyQ29kZUF0KF8pXTw8MnxlW3AuY2hhckNvZGVBdChfKzEpXT4+NCx2W0UrK109ZiYyNTUpLGc9PT0xJiYoZj1lW3AuY2hhckNvZGVBdChfKV08PDEwfGVbcC5jaGFyQ29kZUF0KF8rMSldPDw0fGVbcC5jaGFyQ29kZUF0KF8rMildPj4yLHZbRSsrXT1mPj44JjI1NSx2W0UrK109ZiYyNTUpLHZ9ZnVuY3Rpb24gZChwKXtyZXR1cm4gdFtwPj4xOCY2M10rdFtwPj4xMiY2M10rdFtwPj42JjYzXSt0W3AmNjNdfWZ1bmN0aW9uIHUocCxmLG0pe2Zvcih2YXIgdyxnPVtdLHY9Zjt2PG07dis9Myl3PShwW3ZdPDwxNiYxNjcxMTY4MCkrKHBbdisxXTw8OCY2NTI4MCkrKHBbdisyXSYyNTUpLGcucHVzaChkKHcpKTtyZXR1cm4gZy5qb2luKCIiKX1mdW5jdGlvbiBoKHApe2Zvcih2YXIgZixtPXAubGVuZ3RoLHc9bSUzLGc9W10sdj0xNjM4MyxFPTAseD1tLXc7RTx4O0UrPXYpZy5wdXNoKHUocCxFLEUrdj54P3g6RSt2KSk7cmV0dXJuIHc9PT0xPyhmPXBbbS0xXSxnLnB1c2godFtmPj4yXSt0W2Y8PDQmNjNdKyI9PSIpKTp3PT09MiYmKGY9KHBbbS0yXTw8OCkrcFttLTFdLGcucHVzaCh0W2Y+PjEwXSt0W2Y+PjQmNjNdK3RbZjw8MiY2M10rIj0iKSksZy5qb2luKCIiKX1yZXR1cm4gVnB9dmFyICRnPXt9Oy8qISBpZWVlNzU0LiBCU0QtMy1DbGF1c2UgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovdmFyIEJTO2Z1bmN0aW9uIG1oZSgpe3JldHVybiBCU3x8KEJTPTEsJGcucmVhZD1mdW5jdGlvbih0LGUscixuLHMpe3ZhciBpLG8sYT1zKjgtbi0xLGM9KDE8PGEpLTEsbD1jPj4xLGQ9LTcsdT1yP3MtMTowLGg9cj8tMToxLHA9dFtlK3VdO2Zvcih1Kz1oLGk9cCYoMTw8LWQpLTEscD4+PS1kLGQrPWE7ZD4wO2k9aSoyNTYrdFtlK3VdLHUrPWgsZC09OCk7Zm9yKG89aSYoMTw8LWQpLTEsaT4+PS1kLGQrPW47ZD4wO289byoyNTYrdFtlK3VdLHUrPWgsZC09OCk7aWYoaT09PTApaT0xLWw7ZWxzZXtpZihpPT09YylyZXR1cm4gbz9OYU46KHA/LTE6MSkqKDEvMCk7bz1vK01hdGgucG93KDIsbiksaT1pLWx9cmV0dXJuKHA/LTE6MSkqbypNYXRoLnBvdygyLGktbil9LCRnLndyaXRlPWZ1bmN0aW9uKHQsZSxyLG4scyxpKXt2YXIgbyxhLGMsbD1pKjgtcy0xLGQ9KDE8PGwpLTEsdT1kPj4xLGg9cz09PTIzP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxwPW4/MDppLTEsZj1uPzE6LTEsbT1lPDB8fGU9PT0wJiYxL2U8MD8xOjA7Zm9yKGU9TWF0aC5hYnMoZSksaXNOYU4oZSl8fGU9PT0xLzA/KGE9aXNOYU4oZSk/MTowLG89ZCk6KG89TWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMiksZSooYz1NYXRoLnBvdygyLC1vKSk8MSYmKG8tLSxjKj0yKSxvK3U+PTE/ZSs9aC9jOmUrPWgqTWF0aC5wb3coMiwxLXUpLGUqYz49MiYmKG8rKyxjLz0yKSxvK3U+PWQ/KGE9MCxvPWQpOm8rdT49MT8oYT0oZSpjLTEpKk1hdGgucG93KDIscyksbz1vK3UpOihhPWUqTWF0aC5wb3coMix1LTEpKk1hdGgucG93KDIscyksbz0wKSk7cz49ODt0W3IrcF09YSYyNTUscCs9ZixhLz0yNTYscy09OCk7Zm9yKG89bzw8c3xhLGwrPXM7bD4wO3RbcitwXT1vJjI1NSxwKz1mLG8vPTI1NixsLT04KTt0W3IrcC1mXXw9bSoxMjh9KSwkZ30vKiENCiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLg0KICoNCiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+DQogKiBAbGljZW5zZSAgTUlUDQogKi92YXIgTFM7ZnVuY3Rpb24gWnkoKXtyZXR1cm4gTFN8fChMUz0xLGZ1bmN0aW9uKHQpe2NvbnN0IGU9ZmhlKCkscj1taGUoKSxuPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuZm9yPT0iZnVuY3Rpb24iP1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIik6bnVsbDt0LkJ1ZmZlcj1hLHQuU2xvd0J1ZmZlcj12LHQuSU5TUEVDVF9NQVhfQllURVM9NTA7Y29uc3Qgcz0yMTQ3NDgzNjQ3O3Qua01heExlbmd0aD1zLGEuVFlQRURfQVJSQVlfU1VQUE9SVD1pKCksIWEuVFlQRURfQVJSQVlfU1VQUE9SVCYmdHlwZW9mIGNvbnNvbGU8InUiJiZ0eXBlb2YgY29uc29sZS5lcnJvcj09ImZ1bmN0aW9uIiYmY29uc29sZS5lcnJvcigiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IGBidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuIik7ZnVuY3Rpb24gaSgpe3RyeXtjb25zdCBxPW5ldyBVaW50OEFycmF5KDEpLE89e2ZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19O3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoTyxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKHEsTykscS5mb28oKT09PTQyfWNhdGNoe3JldHVybiExfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoYS5wcm90b3R5cGUsInBhcmVudCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYoYS5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5idWZmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEucHJvdG90eXBlLCJvZmZzZXQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKGEuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnl0ZU9mZnNldH19KTtmdW5jdGlvbiBvKHEpe2lmKHE+cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlICInK3ErJyIgaXMgaW52YWxpZCBmb3Igb3B0aW9uICJzaXplIicpO2NvbnN0IE89bmV3IFVpbnQ4QXJyYXkocSk7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihPLGEucHJvdG90eXBlKSxPfWZ1bmN0aW9uIGEocSxPLEwpe2lmKHR5cGVvZiBxPT0ibnVtYmVyIil7aWYodHlwZW9mIE89PSJzdHJpbmciKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAic3RyaW5nIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlIG51bWJlcicpO3JldHVybiB1KHEpfXJldHVybiBjKHEsTyxMKX1hLnBvb2xTaXplPTgxOTI7ZnVuY3Rpb24gYyhxLE8sTCl7aWYodHlwZW9mIHE9PSJzdHJpbmciKXJldHVybiBoKHEsTyk7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHEpKXJldHVybiBmKHEpO2lmKHE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgcSk7aWYoTHQocSxBcnJheUJ1ZmZlcil8fHEmJkx0KHEuYnVmZmVyLEFycmF5QnVmZmVyKXx8dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyPCJ1IiYmKEx0KHEsU2hhcmVkQXJyYXlCdWZmZXIpfHxxJiZMdChxLmJ1ZmZlcixTaGFyZWRBcnJheUJ1ZmZlcikpKXJldHVybiBtKHEsTyxMKTtpZih0eXBlb2YgcT09Im51bWJlciIpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7Y29uc3QgWD1xLnZhbHVlT2YmJnEudmFsdWVPZigpO2lmKFghPW51bGwmJlghPT1xKXJldHVybiBhLmZyb20oWCxPLEwpO2NvbnN0IGllPXcocSk7aWYoaWUpcmV0dXJuIGllO2lmKHR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wudG9QcmltaXRpdmUhPW51bGwmJnR5cGVvZiBxW1N5bWJvbC50b1ByaW1pdGl2ZV09PSJmdW5jdGlvbiIpcmV0dXJuIGEuZnJvbShxW1N5bWJvbC50b1ByaW1pdGl2ZV0oInN0cmluZyIpLE8sTCk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgIit0eXBlb2YgcSl9YS5mcm9tPWZ1bmN0aW9uKHEsTyxMKXtyZXR1cm4gYyhxLE8sTCl9LE9iamVjdC5zZXRQcm90b3R5cGVPZihhLnByb3RvdHlwZSxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKGEsVWludDhBcnJheSk7ZnVuY3Rpb24gbChxKXtpZih0eXBlb2YgcSE9Im51bWJlciIpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKTtpZihxPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSAiJytxKyciIGlzIGludmFsaWQgZm9yIG9wdGlvbiAic2l6ZSInKX1mdW5jdGlvbiBkKHEsTyxMKXtyZXR1cm4gbChxKSxxPD0wP28ocSk6TyE9PXZvaWQgMD90eXBlb2YgTD09InN0cmluZyI/byhxKS5maWxsKE8sTCk6byhxKS5maWxsKE8pOm8ocSl9YS5hbGxvYz1mdW5jdGlvbihxLE8sTCl7cmV0dXJuIGQocSxPLEwpfTtmdW5jdGlvbiB1KHEpe3JldHVybiBsKHEpLG8ocTwwPzA6ZyhxKXwwKX1hLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHEpe3JldHVybiB1KHEpfSxhLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihxKXtyZXR1cm4gdShxKX07ZnVuY3Rpb24gaChxLE8pe2lmKCh0eXBlb2YgTyE9InN0cmluZyJ8fE89PT0iIikmJihPPSJ1dGY4IiksIWEuaXNFbmNvZGluZyhPKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK08pO2NvbnN0IEw9RShxLE8pfDA7bGV0IFg9byhMKTtjb25zdCBpZT1YLndyaXRlKHEsTyk7cmV0dXJuIGllIT09TCYmKFg9WC5zbGljZSgwLGllKSksWH1mdW5jdGlvbiBwKHEpe2NvbnN0IE89cS5sZW5ndGg8MD8wOmcocS5sZW5ndGgpfDAsTD1vKE8pO2ZvcihsZXQgWD0wO1g8TztYKz0xKUxbWF09cVtYXSYyNTU7cmV0dXJuIEx9ZnVuY3Rpb24gZihxKXtpZihMdChxLFVpbnQ4QXJyYXkpKXtjb25zdCBPPW5ldyBVaW50OEFycmF5KHEpO3JldHVybiBtKE8uYnVmZmVyLE8uYnl0ZU9mZnNldCxPLmJ5dGVMZW5ndGgpfXJldHVybiBwKHEpfWZ1bmN0aW9uIG0ocSxPLEwpe2lmKE88MHx8cS5ieXRlTGVuZ3RoPE8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJvZmZzZXQiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2lmKHEuYnl0ZUxlbmd0aDxPKyhMfHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignImxlbmd0aCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7bGV0IFg7cmV0dXJuIE89PT12b2lkIDAmJkw9PT12b2lkIDA/WD1uZXcgVWludDhBcnJheShxKTpMPT09dm9pZCAwP1g9bmV3IFVpbnQ4QXJyYXkocSxPKTpYPW5ldyBVaW50OEFycmF5KHEsTyxMKSxPYmplY3Quc2V0UHJvdG90eXBlT2YoWCxhLnByb3RvdHlwZSksWH1mdW5jdGlvbiB3KHEpe2lmKGEuaXNCdWZmZXIocSkpe2NvbnN0IE89ZyhxLmxlbmd0aCl8MCxMPW8oTyk7cmV0dXJuIEwubGVuZ3RoPT09MHx8cS5jb3B5KEwsMCwwLE8pLEx9aWYocS5sZW5ndGghPT12b2lkIDApcmV0dXJuIHR5cGVvZiBxLmxlbmd0aCE9Im51bWJlciJ8fEV0KHEubGVuZ3RoKT9vKDApOnAocSk7aWYocS50eXBlPT09IkJ1ZmZlciImJkFycmF5LmlzQXJyYXkocS5kYXRhKSlyZXR1cm4gcChxLmRhdGEpfWZ1bmN0aW9uIGcocSl7aWYocT49cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweCIrcy50b1N0cmluZygxNikrIiBieXRlcyIpO3JldHVybiBxfDB9ZnVuY3Rpb24gdihxKXtyZXR1cm4rcSE9cSYmKHE9MCksYS5hbGxvYygrcSl9YS5pc0J1ZmZlcj1mdW5jdGlvbihPKXtyZXR1cm4gTyE9bnVsbCYmTy5faXNCdWZmZXI9PT0hMCYmTyE9PWEucHJvdG90eXBlfSxhLmNvbXBhcmU9ZnVuY3Rpb24oTyxMKXtpZihMdChPLFVpbnQ4QXJyYXkpJiYoTz1hLmZyb20oTyxPLm9mZnNldCxPLmJ5dGVMZW5ndGgpKSxMdChMLFVpbnQ4QXJyYXkpJiYoTD1hLmZyb20oTCxMLm9mZnNldCxMLmJ5dGVMZW5ndGgpKSwhYS5pc0J1ZmZlcihPKXx8IWEuaXNCdWZmZXIoTCkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlICJidWYxIiwgImJ1ZjIiIGFyZ3VtZW50cyBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5Jyk7aWYoTz09PUwpcmV0dXJuIDA7bGV0IFg9Ty5sZW5ndGgsaWU9TC5sZW5ndGg7Zm9yKGxldCBsZT0wLHdlPU1hdGgubWluKFgsaWUpO2xlPHdlOysrbGUpaWYoT1tsZV0hPT1MW2xlXSl7WD1PW2xlXSxpZT1MW2xlXTticmVha31yZXR1cm4gWDxpZT8tMTppZTxYPzE6MH0sYS5pc0VuY29kaW5nPWZ1bmN0aW9uKE8pe3N3aXRjaChTdHJpbmcoTykudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxhLmNvbmNhdD1mdW5jdGlvbihPLEwpe2lmKCFBcnJheS5pc0FycmF5KE8pKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZihPLmxlbmd0aD09PTApcmV0dXJuIGEuYWxsb2MoMCk7bGV0IFg7aWYoTD09PXZvaWQgMClmb3IoTD0wLFg9MDtYPE8ubGVuZ3RoOysrWClMKz1PW1hdLmxlbmd0aDtjb25zdCBpZT1hLmFsbG9jVW5zYWZlKEwpO2xldCBsZT0wO2ZvcihYPTA7WDxPLmxlbmd0aDsrK1gpe2xldCB3ZT1PW1hdO2lmKEx0KHdlLFVpbnQ4QXJyYXkpKWxlK3dlLmxlbmd0aD5pZS5sZW5ndGg/KGEuaXNCdWZmZXIod2UpfHwod2U9YS5mcm9tKHdlKSksd2UuY29weShpZSxsZSkpOlVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGllLHdlLGxlKTtlbHNlIGlmKGEuaXNCdWZmZXIod2UpKXdlLmNvcHkoaWUsbGUpO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2xlKz13ZS5sZW5ndGh9cmV0dXJuIGllfTtmdW5jdGlvbiBFKHEsTyl7aWYoYS5pc0J1ZmZlcihxKSlyZXR1cm4gcS5sZW5ndGg7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KHEpfHxMdChxLEFycmF5QnVmZmVyKSlyZXR1cm4gcS5ieXRlTGVuZ3RoO2lmKHR5cGVvZiBxIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInN0cmluZyIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgb3IgQXJyYXlCdWZmZXIuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgcSk7Y29uc3QgTD1xLmxlbmd0aCxYPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdPT09ITA7aWYoIVgmJkw9PT0wKXJldHVybiAwO2xldCBpZT0hMTtmb3IoOzspc3dpdGNoKE8pe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIEw7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gS2UocSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gTCoyO2Nhc2UiaGV4IjpyZXR1cm4gTD4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiB4dChxKS5sZW5ndGg7ZGVmYXVsdDppZihpZSlyZXR1cm4gWD8tMTpLZShxKS5sZW5ndGg7Tz0oIiIrTykudG9Mb3dlckNhc2UoKSxpZT0hMH19YS5ieXRlTGVuZ3RoPUU7ZnVuY3Rpb24geChxLE8sTCl7bGV0IFg9ITE7aWYoKE89PT12b2lkIDB8fE88MCkmJihPPTApLE8+dGhpcy5sZW5ndGh8fCgoTD09PXZvaWQgMHx8TD50aGlzLmxlbmd0aCkmJihMPXRoaXMubGVuZ3RoKSxMPD0wKXx8KEw+Pj49MCxPPj4+PTAsTDw9TykpcmV0dXJuIiI7Zm9yKHF8fChxPSJ1dGY4Iik7Oylzd2l0Y2gocSl7Y2FzZSJoZXgiOnJldHVybiBSKHRoaXMsTyxMKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBiKHRoaXMsTyxMKTtjYXNlImFzY2lpIjpyZXR1cm4gVCh0aGlzLE8sTCk7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gTih0aGlzLE8sTCk7Y2FzZSJiYXNlNjQiOnJldHVybiBGKHRoaXMsTyxMKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIEkodGhpcyxPLEwpO2RlZmF1bHQ6aWYoWCl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK3EpO3E9KHErIiIpLnRvTG93ZXJDYXNlKCksWD0hMH19YS5wcm90b3R5cGUuX2lzQnVmZmVyPSEwO2Z1bmN0aW9uIF8ocSxPLEwpe2NvbnN0IFg9cVtPXTtxW09dPXFbTF0scVtMXT1YfWEucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe2NvbnN0IE89dGhpcy5sZW5ndGg7aWYoTyUyIT09MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IobGV0IEw9MDtMPE87TCs9MilfKHRoaXMsTCxMKzEpO3JldHVybiB0aGlzfSxhLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXtjb25zdCBPPXRoaXMubGVuZ3RoO2lmKE8lNCE9PTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzIik7Zm9yKGxldCBMPTA7TDxPO0wrPTQpXyh0aGlzLEwsTCszKSxfKHRoaXMsTCsxLEwrMik7cmV0dXJuIHRoaXN9LGEucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbigpe2NvbnN0IE89dGhpcy5sZW5ndGg7aWYoTyU4IT09MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IobGV0IEw9MDtMPE87TCs9OClfKHRoaXMsTCxMKzcpLF8odGhpcyxMKzEsTCs2KSxfKHRoaXMsTCsyLEwrNSksXyh0aGlzLEwrMyxMKzQpO3JldHVybiB0aGlzfSxhLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2NvbnN0IE89dGhpcy5sZW5ndGg7cmV0dXJuIE89PT0wPyIiOmFyZ3VtZW50cy5sZW5ndGg9PT0wP2IodGhpcywwLE8pOnguYXBwbHkodGhpcyxhcmd1bWVudHMpfSxhLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZz1hLnByb3RvdHlwZS50b1N0cmluZyxhLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oTyl7aWYoIWEuaXNCdWZmZXIoTykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09Tz8hMDphLmNvbXBhcmUodGhpcyxPKT09PTB9LGEucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtsZXQgTz0iIjtjb25zdCBMPXQuSU5TUEVDVF9NQVhfQllURVM7cmV0dXJuIE89dGhpcy50b1N0cmluZygiaGV4IiwwLEwpLnJlcGxhY2UoLyguezJ9KS9nLCIkMSAiKS50cmltKCksdGhpcy5sZW5ndGg+TCYmKE8rPSIgLi4uICIpLCI8QnVmZmVyICIrTysiPiJ9LG4mJihhLnByb3RvdHlwZVtuXT1hLnByb3RvdHlwZS5pbnNwZWN0KSxhLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKE8sTCxYLGllLGxlKXtpZihMdChPLFVpbnQ4QXJyYXkpJiYoTz1hLmZyb20oTyxPLm9mZnNldCxPLmJ5dGVMZW5ndGgpKSwhYS5pc0J1ZmZlcihPKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgInRhcmdldCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBPKTtpZihMPT09dm9pZCAwJiYoTD0wKSxYPT09dm9pZCAwJiYoWD1PP08ubGVuZ3RoOjApLGllPT09dm9pZCAwJiYoaWU9MCksbGU9PT12b2lkIDAmJihsZT10aGlzLmxlbmd0aCksTDwwfHxYPk8ubGVuZ3RofHxpZTwwfHxsZT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYoaWU+PWxlJiZMPj1YKXJldHVybiAwO2lmKGllPj1sZSlyZXR1cm4tMTtpZihMPj1YKXJldHVybiAxO2lmKEw+Pj49MCxYPj4+PTAsaWU+Pj49MCxsZT4+Pj0wLHRoaXM9PT1PKXJldHVybiAwO2xldCB3ZT1sZS1pZSxjdD1YLUw7Y29uc3Qgc3Q9TWF0aC5taW4od2UsY3QpLHJ0PXRoaXMuc2xpY2UoaWUsbGUpLFd0PU8uc2xpY2UoTCxYKTtmb3IobGV0IFhlPTA7WGU8c3Q7KytYZSlpZihydFtYZV0hPT1XdFtYZV0pe3dlPXJ0W1hlXSxjdD1XdFtYZV07YnJlYWt9cmV0dXJuIHdlPGN0Py0xOmN0PHdlPzE6MH07ZnVuY3Rpb24gayhxLE8sTCxYLGllKXtpZihxLmxlbmd0aD09PTApcmV0dXJuLTE7aWYodHlwZW9mIEw9PSJzdHJpbmciPyhYPUwsTD0wKTpMPjIxNDc0ODM2NDc/TD0yMTQ3NDgzNjQ3Okw8LTIxNDc0ODM2NDgmJihMPS0yMTQ3NDgzNjQ4KSxMPStMLEV0KEwpJiYoTD1pZT8wOnEubGVuZ3RoLTEpLEw8MCYmKEw9cS5sZW5ndGgrTCksTD49cS5sZW5ndGgpe2lmKGllKXJldHVybi0xO0w9cS5sZW5ndGgtMX1lbHNlIGlmKEw8MClpZihpZSlMPTA7ZWxzZSByZXR1cm4tMTtpZih0eXBlb2YgTz09InN0cmluZyImJihPPWEuZnJvbShPLFgpKSxhLmlzQnVmZmVyKE8pKXJldHVybiBPLmxlbmd0aD09PTA/LTE6QShxLE8sTCxYLGllKTtpZih0eXBlb2YgTz09Im51bWJlciIpcmV0dXJuIE89TyYyNTUsdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y9PSJmdW5jdGlvbiI/aWU/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHEsTyxMKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKHEsTyxMKTpBKHEsW09dLEwsWCxpZSk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gQShxLE8sTCxYLGllKXtsZXQgbGU9MSx3ZT1xLmxlbmd0aCxjdD1PLmxlbmd0aDtpZihYIT09dm9pZCAwJiYoWD1TdHJpbmcoWCkudG9Mb3dlckNhc2UoKSxYPT09InVjczIifHxYPT09InVjcy0yInx8WD09PSJ1dGYxNmxlInx8WD09PSJ1dGYtMTZsZSIpKXtpZihxLmxlbmd0aDwyfHxPLmxlbmd0aDwyKXJldHVybi0xO2xlPTIsd2UvPTIsY3QvPTIsTC89Mn1mdW5jdGlvbiBzdChXdCxYZSl7cmV0dXJuIGxlPT09MT9XdFtYZV06V3QucmVhZFVJbnQxNkJFKFhlKmxlKX1sZXQgcnQ7aWYoaWUpe2xldCBXdD0tMTtmb3IocnQ9TDtydDx3ZTtydCsrKWlmKHN0KHEscnQpPT09c3QoTyxXdD09PS0xPzA6cnQtV3QpKXtpZihXdD09PS0xJiYoV3Q9cnQpLHJ0LVd0KzE9PT1jdClyZXR1cm4gV3QqbGV9ZWxzZSBXdCE9PS0xJiYocnQtPXJ0LVd0KSxXdD0tMX1lbHNlIGZvcihMK2N0PndlJiYoTD13ZS1jdCkscnQ9TDtydD49MDtydC0tKXtsZXQgV3Q9ITA7Zm9yKGxldCBYZT0wO1hlPGN0O1hlKyspaWYoc3QocSxydCtYZSkhPT1zdChPLFhlKSl7V3Q9ITE7YnJlYWt9aWYoV3QpcmV0dXJuIHJ0fXJldHVybi0xfWEucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKE8sTCxYKXtyZXR1cm4gdGhpcy5pbmRleE9mKE8sTCxYKSE9PS0xfSxhLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKE8sTCxYKXtyZXR1cm4gayh0aGlzLE8sTCxYLCEwKX0sYS5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oTyxMLFgpe3JldHVybiBrKHRoaXMsTyxMLFgsITEpfTtmdW5jdGlvbiBNKHEsTyxMLFgpe0w9TnVtYmVyKEwpfHwwO2NvbnN0IGllPXEubGVuZ3RoLUw7WD8oWD1OdW1iZXIoWCksWD5pZSYmKFg9aWUpKTpYPWllO2NvbnN0IGxlPU8ubGVuZ3RoO1g+bGUvMiYmKFg9bGUvMik7bGV0IHdlO2Zvcih3ZT0wO3dlPFg7Kyt3ZSl7Y29uc3QgY3Q9cGFyc2VJbnQoTy5zdWJzdHIod2UqMiwyKSwxNik7aWYoRXQoY3QpKXJldHVybiB3ZTtxW0wrd2VdPWN0fXJldHVybiB3ZX1mdW5jdGlvbiBQKHEsTyxMLFgpe3JldHVybiBpdChLZShPLHEubGVuZ3RoLUwpLHEsTCxYKX1mdW5jdGlvbiBqKHEsTyxMLFgpe3JldHVybiBpdCh2dChPKSxxLEwsWCl9ZnVuY3Rpb24gVShxLE8sTCxYKXtyZXR1cm4gaXQoeHQoTykscSxMLFgpfWZ1bmN0aW9uIFYocSxPLEwsWCl7cmV0dXJuIGl0KGZuKE8scS5sZW5ndGgtTCkscSxMLFgpfWEucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKE8sTCxYLGllKXtpZihMPT09dm9pZCAwKWllPSJ1dGY4IixYPXRoaXMubGVuZ3RoLEw9MDtlbHNlIGlmKFg9PT12b2lkIDAmJnR5cGVvZiBMPT0ic3RyaW5nIilpZT1MLFg9dGhpcy5sZW5ndGgsTD0wO2Vsc2UgaWYoaXNGaW5pdGUoTCkpTD1MPj4+MCxpc0Zpbml0ZShYKT8oWD1YPj4+MCxpZT09PXZvaWQgMCYmKGllPSJ1dGY4IikpOihpZT1YLFg9dm9pZCAwKTtlbHNlIHRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTtjb25zdCBsZT10aGlzLmxlbmd0aC1MO2lmKChYPT09dm9pZCAwfHxYPmxlKSYmKFg9bGUpLE8ubGVuZ3RoPjAmJihYPDB8fEw8MCl8fEw+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7aWV8fChpZT0idXRmOCIpO2xldCB3ZT0hMTtmb3IoOzspc3dpdGNoKGllKXtjYXNlImhleCI6cmV0dXJuIE0odGhpcyxPLEwsWCk7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gUCh0aGlzLE8sTCxYKTtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBqKHRoaXMsTyxMLFgpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gVSh0aGlzLE8sTCxYKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIFYodGhpcyxPLEwsWCk7ZGVmYXVsdDppZih3ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2llKTtpZT0oIiIraWUpLnRvTG93ZXJDYXNlKCksd2U9ITB9fSxhLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O2Z1bmN0aW9uIEYocSxPLEwpe3JldHVybiBPPT09MCYmTD09PXEubGVuZ3RoP2UuZnJvbUJ5dGVBcnJheShxKTplLmZyb21CeXRlQXJyYXkocS5zbGljZShPLEwpKX1mdW5jdGlvbiBiKHEsTyxMKXtMPU1hdGgubWluKHEubGVuZ3RoLEwpO2NvbnN0IFg9W107bGV0IGllPU87Zm9yKDtpZTxMOyl7Y29uc3QgbGU9cVtpZV07bGV0IHdlPW51bGwsY3Q9bGU+MjM5PzQ6bGU+MjIzPzM6bGU+MTkxPzI6MTtpZihpZStjdDw9TCl7bGV0IHN0LHJ0LFd0LFhlO3N3aXRjaChjdCl7Y2FzZSAxOmxlPDEyOCYmKHdlPWxlKTticmVhaztjYXNlIDI6c3Q9cVtpZSsxXSwoc3QmMTkyKT09PTEyOCYmKFhlPShsZSYzMSk8PDZ8c3QmNjMsWGU+MTI3JiYod2U9WGUpKTticmVhaztjYXNlIDM6c3Q9cVtpZSsxXSxydD1xW2llKzJdLChzdCYxOTIpPT09MTI4JiYocnQmMTkyKT09PTEyOCYmKFhlPShsZSYxNSk8PDEyfChzdCY2Myk8PDZ8cnQmNjMsWGU+MjA0NyYmKFhlPDU1Mjk2fHxYZT41NzM0MykmJih3ZT1YZSkpO2JyZWFrO2Nhc2UgNDpzdD1xW2llKzFdLHJ0PXFbaWUrMl0sV3Q9cVtpZSszXSwoc3QmMTkyKT09PTEyOCYmKHJ0JjE5Mik9PT0xMjgmJihXdCYxOTIpPT09MTI4JiYoWGU9KGxlJjE1KTw8MTh8KHN0JjYzKTw8MTJ8KHJ0JjYzKTw8NnxXdCY2MyxYZT42NTUzNSYmWGU8MTExNDExMiYmKHdlPVhlKSl9fXdlPT09bnVsbD8od2U9NjU1MzMsY3Q9MSk6d2U+NjU1MzUmJih3ZS09NjU1MzYsWC5wdXNoKHdlPj4+MTAmMTAyM3w1NTI5Niksd2U9NTYzMjB8d2UmMTAyMyksWC5wdXNoKHdlKSxpZSs9Y3R9cmV0dXJuIEMoWCl9Y29uc3QgeT00MDk2O2Z1bmN0aW9uIEMocSl7Y29uc3QgTz1xLmxlbmd0aDtpZihPPD15KXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxxKTtsZXQgTD0iIixYPTA7Zm9yKDtYPE87KUwrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHEuc2xpY2UoWCxYKz15KSk7cmV0dXJuIEx9ZnVuY3Rpb24gVChxLE8sTCl7bGV0IFg9IiI7TD1NYXRoLm1pbihxLmxlbmd0aCxMKTtmb3IobGV0IGllPU87aWU8TDsrK2llKVgrPVN0cmluZy5mcm9tQ2hhckNvZGUocVtpZV0mMTI3KTtyZXR1cm4gWH1mdW5jdGlvbiBOKHEsTyxMKXtsZXQgWD0iIjtMPU1hdGgubWluKHEubGVuZ3RoLEwpO2ZvcihsZXQgaWU9TztpZTxMOysraWUpWCs9U3RyaW5nLmZyb21DaGFyQ29kZShxW2llXSk7cmV0dXJuIFh9ZnVuY3Rpb24gUihxLE8sTCl7Y29uc3QgWD1xLmxlbmd0aDsoIU98fE88MCkmJihPPTApLCghTHx8TDwwfHxMPlgpJiYoTD1YKTtsZXQgaWU9IiI7Zm9yKGxldCBsZT1PO2xlPEw7KytsZSlpZSs9U3RbcVtsZV1dO3JldHVybiBpZX1mdW5jdGlvbiBJKHEsTyxMKXtjb25zdCBYPXEuc2xpY2UoTyxMKTtsZXQgaWU9IiI7Zm9yKGxldCBsZT0wO2xlPFgubGVuZ3RoLTE7bGUrPTIpaWUrPVN0cmluZy5mcm9tQ2hhckNvZGUoWFtsZV0rWFtsZSsxXSoyNTYpO3JldHVybiBpZX1hLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihPLEwpe2NvbnN0IFg9dGhpcy5sZW5ndGg7Tz1+fk8sTD1MPT09dm9pZCAwP1g6fn5MLE88MD8oTys9WCxPPDAmJihPPTApKTpPPlgmJihPPVgpLEw8MD8oTCs9WCxMPDAmJihMPTApKTpMPlgmJihMPVgpLEw8TyYmKEw9Tyk7Y29uc3QgaWU9dGhpcy5zdWJhcnJheShPLEwpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoaWUsYS5wcm90b3R5cGUpLGllfTtmdW5jdGlvbiBCKHEsTyxMKXtpZihxJTEhPT0wfHxxPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKHErTz5MKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9YS5wcm90b3R5cGUucmVhZFVpbnRMRT1hLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKE8sTCxYKXtPPU8+Pj4wLEw9TD4+PjAsWHx8QihPLEwsdGhpcy5sZW5ndGgpO2xldCBpZT10aGlzW09dLGxlPTEsd2U9MDtmb3IoOysrd2U8TCYmKGxlKj0yNTYpOylpZSs9dGhpc1tPK3dlXSpsZTtyZXR1cm4gaWV9LGEucHJvdG90eXBlLnJlYWRVaW50QkU9YS5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbihPLEwsWCl7Tz1PPj4+MCxMPUw+Pj4wLFh8fEIoTyxMLHRoaXMubGVuZ3RoKTtsZXQgaWU9dGhpc1tPKy0tTF0sbGU9MTtmb3IoO0w+MCYmKGxlKj0yNTYpOylpZSs9dGhpc1tPKy0tTF0qbGU7cmV0dXJuIGllfSxhLnByb3RvdHlwZS5yZWFkVWludDg9YS5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKE8sTCl7cmV0dXJuIE89Tz4+PjAsTHx8QihPLDEsdGhpcy5sZW5ndGgpLHRoaXNbT119LGEucHJvdG90eXBlLnJlYWRVaW50MTZMRT1hLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oTyxMKXtyZXR1cm4gTz1PPj4+MCxMfHxCKE8sMix0aGlzLmxlbmd0aCksdGhpc1tPXXx0aGlzW08rMV08PDh9LGEucHJvdG90eXBlLnJlYWRVaW50MTZCRT1hLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oTyxMKXtyZXR1cm4gTz1PPj4+MCxMfHxCKE8sMix0aGlzLmxlbmd0aCksdGhpc1tPXTw8OHx0aGlzW08rMV19LGEucHJvdG90eXBlLnJlYWRVaW50MzJMRT1hLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oTyxMKXtyZXR1cm4gTz1PPj4+MCxMfHxCKE8sNCx0aGlzLmxlbmd0aCksKHRoaXNbT118dGhpc1tPKzFdPDw4fHRoaXNbTysyXTw8MTYpK3RoaXNbTyszXSoxNjc3NzIxNn0sYS5wcm90b3R5cGUucmVhZFVpbnQzMkJFPWEucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihPLEwpe3JldHVybiBPPU8+Pj4wLEx8fEIoTyw0LHRoaXMubGVuZ3RoKSx0aGlzW09dKjE2Nzc3MjE2Kyh0aGlzW08rMV08PDE2fHRoaXNbTysyXTw8OHx0aGlzW08rM10pfSxhLnByb3RvdHlwZS5yZWFkQmlnVUludDY0TEU9TXIoZnVuY3Rpb24oTyl7Tz1PPj4+MCxtZShPLCJvZmZzZXQiKTtjb25zdCBMPXRoaXNbT10sWD10aGlzW08rN107KEw9PT12b2lkIDB8fFg9PT12b2lkIDApJiZ2ZShPLHRoaXMubGVuZ3RoLTgpO2NvbnN0IGllPUwrdGhpc1srK09dKjIqKjgrdGhpc1srK09dKjIqKjE2K3RoaXNbKytPXSoyKioyNCxsZT10aGlzWysrT10rdGhpc1srK09dKjIqKjgrdGhpc1srK09dKjIqKjE2K1gqMioqMjQ7cmV0dXJuIEJpZ0ludChpZSkrKEJpZ0ludChsZSk8PEJpZ0ludCgzMikpfSksYS5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NEJFPU1yKGZ1bmN0aW9uKE8pe089Tz4+PjAsbWUoTywib2Zmc2V0Iik7Y29uc3QgTD10aGlzW09dLFg9dGhpc1tPKzddOyhMPT09dm9pZCAwfHxYPT09dm9pZCAwKSYmdmUoTyx0aGlzLmxlbmd0aC04KTtjb25zdCBpZT1MKjIqKjI0K3RoaXNbKytPXSoyKioxNit0aGlzWysrT10qMioqOCt0aGlzWysrT10sbGU9dGhpc1srK09dKjIqKjI0K3RoaXNbKytPXSoyKioxNit0aGlzWysrT10qMioqOCtYO3JldHVybihCaWdJbnQoaWUpPDxCaWdJbnQoMzIpKStCaWdJbnQobGUpfSksYS5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKE8sTCxYKXtPPU8+Pj4wLEw9TD4+PjAsWHx8QihPLEwsdGhpcy5sZW5ndGgpO2xldCBpZT10aGlzW09dLGxlPTEsd2U9MDtmb3IoOysrd2U8TCYmKGxlKj0yNTYpOylpZSs9dGhpc1tPK3dlXSpsZTtyZXR1cm4gbGUqPTEyOCxpZT49bGUmJihpZS09TWF0aC5wb3coMiw4KkwpKSxpZX0sYS5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKE8sTCxYKXtPPU8+Pj4wLEw9TD4+PjAsWHx8QihPLEwsdGhpcy5sZW5ndGgpO2xldCBpZT1MLGxlPTEsd2U9dGhpc1tPKy0taWVdO2Zvcig7aWU+MCYmKGxlKj0yNTYpOyl3ZSs9dGhpc1tPKy0taWVdKmxlO3JldHVybiBsZSo9MTI4LHdlPj1sZSYmKHdlLT1NYXRoLnBvdygyLDgqTCkpLHdlfSxhLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbihPLEwpe3JldHVybiBPPU8+Pj4wLEx8fEIoTywxLHRoaXMubGVuZ3RoKSx0aGlzW09dJjEyOD8oMjU1LXRoaXNbT10rMSkqLTE6dGhpc1tPXX0sYS5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oTyxMKXtPPU8+Pj4wLEx8fEIoTywyLHRoaXMubGVuZ3RoKTtjb25zdCBYPXRoaXNbT118dGhpc1tPKzFdPDw4O3JldHVybiBYJjMyNzY4P1h8NDI5NDkwMTc2MDpYfSxhLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihPLEwpe089Tz4+PjAsTHx8QihPLDIsdGhpcy5sZW5ndGgpO2NvbnN0IFg9dGhpc1tPKzFdfHRoaXNbT108PDg7cmV0dXJuIFgmMzI3Njg/WHw0Mjk0OTAxNzYwOlh9LGEucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKE8sTCl7cmV0dXJuIE89Tz4+PjAsTHx8QihPLDQsdGhpcy5sZW5ndGgpLHRoaXNbT118dGhpc1tPKzFdPDw4fHRoaXNbTysyXTw8MTZ8dGhpc1tPKzNdPDwyNH0sYS5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oTyxMKXtyZXR1cm4gTz1PPj4+MCxMfHxCKE8sNCx0aGlzLmxlbmd0aCksdGhpc1tPXTw8MjR8dGhpc1tPKzFdPDwxNnx0aGlzW08rMl08PDh8dGhpc1tPKzNdfSxhLnByb3RvdHlwZS5yZWFkQmlnSW50NjRMRT1NcihmdW5jdGlvbihPKXtPPU8+Pj4wLG1lKE8sIm9mZnNldCIpO2NvbnN0IEw9dGhpc1tPXSxYPXRoaXNbTys3XTsoTD09PXZvaWQgMHx8WD09PXZvaWQgMCkmJnZlKE8sdGhpcy5sZW5ndGgtOCk7Y29uc3QgaWU9dGhpc1tPKzRdK3RoaXNbTys1XSoyKio4K3RoaXNbTys2XSoyKioxNisoWDw8MjQpO3JldHVybihCaWdJbnQoaWUpPDxCaWdJbnQoMzIpKStCaWdJbnQoTCt0aGlzWysrT10qMioqOCt0aGlzWysrT10qMioqMTYrdGhpc1srK09dKjIqKjI0KX0pLGEucHJvdG90eXBlLnJlYWRCaWdJbnQ2NEJFPU1yKGZ1bmN0aW9uKE8pe089Tz4+PjAsbWUoTywib2Zmc2V0Iik7Y29uc3QgTD10aGlzW09dLFg9dGhpc1tPKzddOyhMPT09dm9pZCAwfHxYPT09dm9pZCAwKSYmdmUoTyx0aGlzLmxlbmd0aC04KTtjb25zdCBpZT0oTDw8MjQpK3RoaXNbKytPXSoyKioxNit0aGlzWysrT10qMioqOCt0aGlzWysrT107cmV0dXJuKEJpZ0ludChpZSk8PEJpZ0ludCgzMikpK0JpZ0ludCh0aGlzWysrT10qMioqMjQrdGhpc1srK09dKjIqKjE2K3RoaXNbKytPXSoyKio4K1gpfSksYS5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oTyxMKXtyZXR1cm4gTz1PPj4+MCxMfHxCKE8sNCx0aGlzLmxlbmd0aCksci5yZWFkKHRoaXMsTywhMCwyMyw0KX0sYS5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24oTyxMKXtyZXR1cm4gTz1PPj4+MCxMfHxCKE8sNCx0aGlzLmxlbmd0aCksci5yZWFkKHRoaXMsTywhMSwyMyw0KX0sYS5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKE8sTCl7cmV0dXJuIE89Tz4+PjAsTHx8QihPLDgsdGhpcy5sZW5ndGgpLHIucmVhZCh0aGlzLE8sITAsNTIsOCl9LGEucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihPLEwpe3JldHVybiBPPU8+Pj4wLEx8fEIoTyw4LHRoaXMubGVuZ3RoKSxyLnJlYWQodGhpcyxPLCExLDUyLDgpfTtmdW5jdGlvbiBTKHEsTyxMLFgsaWUsbGUpe2lmKCFhLmlzQnVmZmVyKHEpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZihPPmllfHxPPGxlKXRocm93IG5ldyBSYW5nZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKTtpZihMK1g+cS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWEucHJvdG90eXBlLndyaXRlVWludExFPWEucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKE8sTCxYLGllKXtpZihPPStPLEw9TD4+PjAsWD1YPj4+MCwhaWUpe2NvbnN0IGN0PU1hdGgucG93KDIsOCpYKS0xO1ModGhpcyxPLEwsWCxjdCwwKX1sZXQgbGU9MSx3ZT0wO2Zvcih0aGlzW0xdPU8mMjU1Oysrd2U8WCYmKGxlKj0yNTYpOyl0aGlzW0wrd2VdPU8vbGUmMjU1O3JldHVybiBMK1h9LGEucHJvdG90eXBlLndyaXRlVWludEJFPWEucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKE8sTCxYLGllKXtpZihPPStPLEw9TD4+PjAsWD1YPj4+MCwhaWUpe2NvbnN0IGN0PU1hdGgucG93KDIsOCpYKS0xO1ModGhpcyxPLEwsWCxjdCwwKX1sZXQgbGU9WC0xLHdlPTE7Zm9yKHRoaXNbTCtsZV09TyYyNTU7LS1sZT49MCYmKHdlKj0yNTYpOyl0aGlzW0wrbGVdPU8vd2UmMjU1O3JldHVybiBMK1h9LGEucHJvdG90eXBlLndyaXRlVWludDg9YS5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbihPLEwsWCl7cmV0dXJuIE89K08sTD1MPj4+MCxYfHxTKHRoaXMsTyxMLDEsMjU1LDApLHRoaXNbTF09TyYyNTUsTCsxfSxhLnByb3RvdHlwZS53cml0ZVVpbnQxNkxFPWEucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oTyxMLFgpe3JldHVybiBPPStPLEw9TD4+PjAsWHx8Uyh0aGlzLE8sTCwyLDY1NTM1LDApLHRoaXNbTF09TyYyNTUsdGhpc1tMKzFdPU8+Pj44LEwrMn0sYS5wcm90b3R5cGUud3JpdGVVaW50MTZCRT1hLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKE8sTCxYKXtyZXR1cm4gTz0rTyxMPUw+Pj4wLFh8fFModGhpcyxPLEwsMiw2NTUzNSwwKSx0aGlzW0xdPU8+Pj44LHRoaXNbTCsxXT1PJjI1NSxMKzJ9LGEucHJvdG90eXBlLndyaXRlVWludDMyTEU9YS5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihPLEwsWCl7cmV0dXJuIE89K08sTD1MPj4+MCxYfHxTKHRoaXMsTyxMLDQsNDI5NDk2NzI5NSwwKSx0aGlzW0wrM109Tz4+PjI0LHRoaXNbTCsyXT1PPj4+MTYsdGhpc1tMKzFdPU8+Pj44LHRoaXNbTF09TyYyNTUsTCs0fSxhLnByb3RvdHlwZS53cml0ZVVpbnQzMkJFPWEucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oTyxMLFgpe3JldHVybiBPPStPLEw9TD4+PjAsWHx8Uyh0aGlzLE8sTCw0LDQyOTQ5NjcyOTUsMCksdGhpc1tMXT1PPj4+MjQsdGhpc1tMKzFdPU8+Pj4xNix0aGlzW0wrMl09Tz4+PjgsdGhpc1tMKzNdPU8mMjU1LEwrNH07ZnVuY3Rpb24geihxLE8sTCxYLGllKXtaKE8sWCxpZSxxLEwsNyk7bGV0IGxlPU51bWJlcihPJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7cVtMKytdPWxlLGxlPWxlPj44LHFbTCsrXT1sZSxsZT1sZT4+OCxxW0wrK109bGUsbGU9bGU+PjgscVtMKytdPWxlO2xldCB3ZT1OdW1iZXIoTz4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5NSkpO3JldHVybiBxW0wrK109d2Usd2U9d2U+PjgscVtMKytdPXdlLHdlPXdlPj44LHFbTCsrXT13ZSx3ZT13ZT4+OCxxW0wrK109d2UsTH1mdW5jdGlvbiBRKHEsTyxMLFgsaWUpe1ooTyxYLGllLHEsTCw3KTtsZXQgbGU9TnVtYmVyKE8mQmlnSW50KDQyOTQ5NjcyOTUpKTtxW0wrN109bGUsbGU9bGU+PjgscVtMKzZdPWxlLGxlPWxlPj44LHFbTCs1XT1sZSxsZT1sZT4+OCxxW0wrNF09bGU7bGV0IHdlPU51bWJlcihPPj5CaWdJbnQoMzIpJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7cmV0dXJuIHFbTCszXT13ZSx3ZT13ZT4+OCxxW0wrMl09d2Usd2U9d2U+PjgscVtMKzFdPXdlLHdlPXdlPj44LHFbTF09d2UsTCs4fWEucHJvdG90eXBlLndyaXRlQmlnVUludDY0TEU9TXIoZnVuY3Rpb24oTyxMPTApe3JldHVybiB6KHRoaXMsTyxMLEJpZ0ludCgwKSxCaWdJbnQoIjB4ZmZmZmZmZmZmZmZmZmZmZiIpKX0pLGEucHJvdG90eXBlLndyaXRlQmlnVUludDY0QkU9TXIoZnVuY3Rpb24oTyxMPTApe3JldHVybiBRKHRoaXMsTyxMLEJpZ0ludCgwKSxCaWdJbnQoIjB4ZmZmZmZmZmZmZmZmZmZmZiIpKX0pLGEucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oTyxMLFgsaWUpe2lmKE89K08sTD1MPj4+MCwhaWUpe2NvbnN0IHN0PU1hdGgucG93KDIsOCpYLTEpO1ModGhpcyxPLEwsWCxzdC0xLC1zdCl9bGV0IGxlPTAsd2U9MSxjdD0wO2Zvcih0aGlzW0xdPU8mMjU1OysrbGU8WCYmKHdlKj0yNTYpOylPPDAmJmN0PT09MCYmdGhpc1tMK2xlLTFdIT09MCYmKGN0PTEpLHRoaXNbTCtsZV09KE8vd2U+PjApLWN0JjI1NTtyZXR1cm4gTCtYfSxhLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKE8sTCxYLGllKXtpZihPPStPLEw9TD4+PjAsIWllKXtjb25zdCBzdD1NYXRoLnBvdygyLDgqWC0xKTtTKHRoaXMsTyxMLFgsc3QtMSwtc3QpfWxldCBsZT1YLTEsd2U9MSxjdD0wO2Zvcih0aGlzW0wrbGVdPU8mMjU1Oy0tbGU+PTAmJih3ZSo9MjU2KTspTzwwJiZjdD09PTAmJnRoaXNbTCtsZSsxXSE9PTAmJihjdD0xKSx0aGlzW0wrbGVdPShPL3dlPj4wKS1jdCYyNTU7cmV0dXJuIEwrWH0sYS5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKE8sTCxYKXtyZXR1cm4gTz0rTyxMPUw+Pj4wLFh8fFModGhpcyxPLEwsMSwxMjcsLTEyOCksTzwwJiYoTz0yNTUrTysxKSx0aGlzW0xdPU8mMjU1LEwrMX0sYS5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKE8sTCxYKXtyZXR1cm4gTz0rTyxMPUw+Pj4wLFh8fFModGhpcyxPLEwsMiwzMjc2NywtMzI3NjgpLHRoaXNbTF09TyYyNTUsdGhpc1tMKzFdPU8+Pj44LEwrMn0sYS5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKE8sTCxYKXtyZXR1cm4gTz0rTyxMPUw+Pj4wLFh8fFModGhpcyxPLEwsMiwzMjc2NywtMzI3NjgpLHRoaXNbTF09Tz4+PjgsdGhpc1tMKzFdPU8mMjU1LEwrMn0sYS5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKE8sTCxYKXtyZXR1cm4gTz0rTyxMPUw+Pj4wLFh8fFModGhpcyxPLEwsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW0xdPU8mMjU1LHRoaXNbTCsxXT1PPj4+OCx0aGlzW0wrMl09Tz4+PjE2LHRoaXNbTCszXT1PPj4+MjQsTCs0fSxhLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oTyxMLFgpe3JldHVybiBPPStPLEw9TD4+PjAsWHx8Uyh0aGlzLE8sTCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLE88MCYmKE89NDI5NDk2NzI5NStPKzEpLHRoaXNbTF09Tz4+PjI0LHRoaXNbTCsxXT1PPj4+MTYsdGhpc1tMKzJdPU8+Pj44LHRoaXNbTCszXT1PJjI1NSxMKzR9LGEucHJvdG90eXBlLndyaXRlQmlnSW50NjRMRT1NcihmdW5jdGlvbihPLEw9MCl7cmV0dXJuIHoodGhpcyxPLEwsLUJpZ0ludCgiMHg4MDAwMDAwMDAwMDAwMDAwIiksQmlnSW50KCIweDdmZmZmZmZmZmZmZmZmZmYiKSl9KSxhLnByb3RvdHlwZS53cml0ZUJpZ0ludDY0QkU9TXIoZnVuY3Rpb24oTyxMPTApe3JldHVybiBRKHRoaXMsTyxMLC1CaWdJbnQoIjB4ODAwMDAwMDAwMDAwMDAwMCIpLEJpZ0ludCgiMHg3ZmZmZmZmZmZmZmZmZmZmIikpfSk7ZnVuY3Rpb24gcmUocSxPLEwsWCxpZSxsZSl7aWYoTCtYPnEubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihMPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIEoocSxPLEwsWCxpZSl7cmV0dXJuIE89K08sTD1MPj4+MCxpZXx8cmUocSxPLEwsNCksci53cml0ZShxLE8sTCxYLDIzLDQpLEwrNH1hLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oTyxMLFgpe3JldHVybiBKKHRoaXMsTyxMLCEwLFgpfSxhLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oTyxMLFgpe3JldHVybiBKKHRoaXMsTyxMLCExLFgpfTtmdW5jdGlvbiBlZShxLE8sTCxYLGllKXtyZXR1cm4gTz0rTyxMPUw+Pj4wLGllfHxyZShxLE8sTCw4KSxyLndyaXRlKHEsTyxMLFgsNTIsOCksTCs4fWEucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oTyxMLFgpe3JldHVybiBlZSh0aGlzLE8sTCwhMCxYKX0sYS5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihPLEwsWCl7cmV0dXJuIGVlKHRoaXMsTyxMLCExLFgpfSxhLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKE8sTCxYLGllKXtpZighYS5pc0J1ZmZlcihPKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZmZXIiKTtpZihYfHwoWD0wKSwhaWUmJmllIT09MCYmKGllPXRoaXMubGVuZ3RoKSxMPj1PLmxlbmd0aCYmKEw9Ty5sZW5ndGgpLEx8fChMPTApLGllPjAmJmllPFgmJihpZT1YKSxpZT09PVh8fE8ubGVuZ3RoPT09MHx8dGhpcy5sZW5ndGg9PT0wKXJldHVybiAwO2lmKEw8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKFg8MHx8WD49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKGllPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzIik7aWU+dGhpcy5sZW5ndGgmJihpZT10aGlzLmxlbmd0aCksTy5sZW5ndGgtTDxpZS1YJiYoaWU9Ty5sZW5ndGgtTCtYKTtjb25zdCBsZT1pZS1YO3JldHVybiB0aGlzPT09TyYmdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW49PSJmdW5jdGlvbiI/dGhpcy5jb3B5V2l0aGluKEwsWCxpZSk6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoTyx0aGlzLnN1YmFycmF5KFgsaWUpLEwpLGxlfSxhLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKE8sTCxYLGllKXtpZih0eXBlb2YgTz09InN0cmluZyIpe2lmKHR5cGVvZiBMPT0ic3RyaW5nIj8oaWU9TCxMPTAsWD10aGlzLmxlbmd0aCk6dHlwZW9mIFg9PSJzdHJpbmciJiYoaWU9WCxYPXRoaXMubGVuZ3RoKSxpZSE9PXZvaWQgMCYmdHlwZW9mIGllIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYodHlwZW9mIGllPT0ic3RyaW5nIiYmIWEuaXNFbmNvZGluZyhpZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitpZSk7aWYoTy5sZW5ndGg9PT0xKXtjb25zdCB3ZT1PLmNoYXJDb2RlQXQoMCk7KGllPT09InV0ZjgiJiZ3ZTwxMjh8fGllPT09ImxhdGluMSIpJiYoTz13ZSl9fWVsc2UgdHlwZW9mIE89PSJudW1iZXIiP089TyYyNTU6dHlwZW9mIE89PSJib29sZWFuIiYmKE89TnVtYmVyKE8pKTtpZihMPDB8fHRoaXMubGVuZ3RoPEx8fHRoaXMubGVuZ3RoPFgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKFg8PUwpcmV0dXJuIHRoaXM7TD1MPj4+MCxYPVg9PT12b2lkIDA/dGhpcy5sZW5ndGg6WD4+PjAsT3x8KE89MCk7bGV0IGxlO2lmKHR5cGVvZiBPPT0ibnVtYmVyIilmb3IobGU9TDtsZTxYOysrbGUpdGhpc1tsZV09TztlbHNle2NvbnN0IHdlPWEuaXNCdWZmZXIoTyk/TzphLmZyb20oTyxpZSksY3Q9d2UubGVuZ3RoO2lmKGN0PT09MCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgdmFsdWUgIicrTysnIiBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCAidmFsdWUiJyk7Zm9yKGxlPTA7bGU8WC1MOysrbGUpdGhpc1tsZStMXT13ZVtsZSVjdF19cmV0dXJuIHRoaXN9O2NvbnN0IHRlPXt9O2Z1bmN0aW9uIGhlKHEsTyxMKXt0ZVtxXT1jbGFzcyBleHRlbmRzIEx7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJtZXNzYWdlIix7dmFsdWU6Ty5hcHBseSh0aGlzLGFyZ3VtZW50cyksd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdGhpcy5uYW1lPWAke3RoaXMubmFtZX0gWyR7cX1dYCx0aGlzLnN0YWNrLGRlbGV0ZSB0aGlzLm5hbWV9Z2V0IGNvZGUoKXtyZXR1cm4gcX1zZXQgY29kZShpZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImNvZGUiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTppZSx3cml0YWJsZTohMH0pfXRvU3RyaW5nKCl7cmV0dXJuYCR7dGhpcy5uYW1lfSBbJHtxfV06ICR7dGhpcy5tZXNzYWdlfWB9fX1oZSgiRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTIixmdW5jdGlvbihxKXtyZXR1cm4gcT9gJHtxfSBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHNgOiJBdHRlbXB0IHRvIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBidWZmZXIgYm91bmRzIn0sUmFuZ2VFcnJvciksaGUoIkVSUl9JTlZBTElEX0FSR19UWVBFIixmdW5jdGlvbihxLE8pe3JldHVybmBUaGUgIiR7cX0iIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgT31gfSxUeXBlRXJyb3IpLGhlKCJFUlJfT1VUX09GX1JBTkdFIixmdW5jdGlvbihxLE8sTCl7bGV0IFg9YFRoZSB2YWx1ZSBvZiAiJHtxfSIgaXMgb3V0IG9mIHJhbmdlLmAsaWU9TDtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihMKSYmTWF0aC5hYnMoTCk+MioqMzI/aWU9U2UoU3RyaW5nKEwpKTp0eXBlb2YgTD09ImJpZ2ludCImJihpZT1TdHJpbmcoTCksKEw+QmlnSW50KDIpKipCaWdJbnQoMzIpfHxMPC0oQmlnSW50KDIpKipCaWdJbnQoMzIpKSkmJihpZT1TZShpZSkpLGllKz0ibiIpLFgrPWAgSXQgbXVzdCBiZSAke099LiBSZWNlaXZlZCAke2llfWAsWH0sUmFuZ2VFcnJvcik7ZnVuY3Rpb24gU2UocSl7bGV0IE89IiIsTD1xLmxlbmd0aDtjb25zdCBYPXFbMF09PT0iLSI/MTowO2Zvcig7TD49WCs0O0wtPTMpTz1gXyR7cS5zbGljZShMLTMsTCl9JHtPfWA7cmV0dXJuYCR7cS5zbGljZSgwLEwpfSR7T31gfWZ1bmN0aW9uIEsocSxPLEwpe21lKE8sIm9mZnNldCIpLChxW09dPT09dm9pZCAwfHxxW08rTF09PT12b2lkIDApJiZ2ZShPLHEubGVuZ3RoLShMKzEpKX1mdW5jdGlvbiBaKHEsTyxMLFgsaWUsbGUpe2lmKHE+THx8cTxPKXtjb25zdCB3ZT10eXBlb2YgTz09ImJpZ2ludCI/Im4iOiIiO2xldCBjdDt0aHJvdyBPPT09MHx8Tz09PUJpZ0ludCgwKT9jdD1gPj0gMCR7d2V9IGFuZCA8IDIke3dlfSAqKiAkeyhsZSsxKSo4fSR7d2V9YDpjdD1gPj0gLSgyJHt3ZX0gKiogJHsobGUrMSkqOC0xfSR7d2V9KSBhbmQgPCAyICoqICR7KGxlKzEpKjgtMX0ke3dlfWAsbmV3IHRlLkVSUl9PVVRfT0ZfUkFOR0UoInZhbHVlIixjdCxxKX1LKFgsaWUsbGUpfWZ1bmN0aW9uIG1lKHEsTyl7aWYodHlwZW9mIHEhPSJudW1iZXIiKXRocm93IG5ldyB0ZS5FUlJfSU5WQUxJRF9BUkdfVFlQRShPLCJudW1iZXIiLHEpfWZ1bmN0aW9uIHZlKHEsTyxMKXt0aHJvdyBNYXRoLmZsb29yKHEpIT09cT8obWUocSxMKSxuZXcgdGUuRVJSX09VVF9PRl9SQU5HRSgib2Zmc2V0IiwiYW4gaW50ZWdlciIscSkpOk88MD9uZXcgdGUuRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTOm5ldyB0ZS5FUlJfT1VUX09GX1JBTkdFKCJvZmZzZXQiLGA+PSAwIGFuZCA8PSAke099YCxxKX1jb25zdCBGZT0vW14rLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIGV0KHEpe2lmKHE9cS5zcGxpdCgiPSIpWzBdLHE9cS50cmltKCkucmVwbGFjZShGZSwiIikscS5sZW5ndGg8MilyZXR1cm4iIjtmb3IoO3EubGVuZ3RoJTQhPT0wOylxPXErIj0iO3JldHVybiBxfWZ1bmN0aW9uIEtlKHEsTyl7Tz1PfHwxLzA7bGV0IEw7Y29uc3QgWD1xLmxlbmd0aDtsZXQgaWU9bnVsbDtjb25zdCBsZT1bXTtmb3IobGV0IHdlPTA7d2U8WDsrK3dlKXtpZihMPXEuY2hhckNvZGVBdCh3ZSksTD41NTI5NSYmTDw1NzM0NCl7aWYoIWllKXtpZihMPjU2MzE5KXsoTy09Myk+LTEmJmxlLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWVsc2UgaWYod2UrMT09PVgpeyhPLT0zKT4tMSYmbGUucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWU9TDtjb250aW51ZX1pZihMPDU2MzIwKXsoTy09Myk+LTEmJmxlLnB1c2goMjM5LDE5MSwxODkpLGllPUw7Y29udGludWV9TD0oaWUtNTUyOTY8PDEwfEwtNTYzMjApKzY1NTM2fWVsc2UgaWUmJihPLT0zKT4tMSYmbGUucHVzaCgyMzksMTkxLDE4OSk7aWYoaWU9bnVsbCxMPDEyOCl7aWYoKE8tPTEpPDApYnJlYWs7bGUucHVzaChMKX1lbHNlIGlmKEw8MjA0OCl7aWYoKE8tPTIpPDApYnJlYWs7bGUucHVzaChMPj42fDE5MixMJjYzfDEyOCl9ZWxzZSBpZihMPDY1NTM2KXtpZigoTy09Myk8MClicmVhaztsZS5wdXNoKEw+PjEyfDIyNCxMPj42JjYzfDEyOCxMJjYzfDEyOCl9ZWxzZSBpZihMPDExMTQxMTIpe2lmKChPLT00KTwwKWJyZWFrO2xlLnB1c2goTD4+MTh8MjQwLEw+PjEyJjYzfDEyOCxMPj42JjYzfDEyOCxMJjYzfDEyOCl9ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpfXJldHVybiBsZX1mdW5jdGlvbiB2dChxKXtjb25zdCBPPVtdO2ZvcihsZXQgTD0wO0w8cS5sZW5ndGg7KytMKU8ucHVzaChxLmNoYXJDb2RlQXQoTCkmMjU1KTtyZXR1cm4gT31mdW5jdGlvbiBmbihxLE8pe2xldCBMLFgsaWU7Y29uc3QgbGU9W107Zm9yKGxldCB3ZT0wO3dlPHEubGVuZ3RoJiYhKChPLT0yKTwwKTsrK3dlKUw9cS5jaGFyQ29kZUF0KHdlKSxYPUw+PjgsaWU9TCUyNTYsbGUucHVzaChpZSksbGUucHVzaChYKTtyZXR1cm4gbGV9ZnVuY3Rpb24geHQocSl7cmV0dXJuIGUudG9CeXRlQXJyYXkoZXQocSkpfWZ1bmN0aW9uIGl0KHEsTyxMLFgpe2xldCBpZTtmb3IoaWU9MDtpZTxYJiYhKGllK0w+PU8ubGVuZ3RofHxpZT49cS5sZW5ndGgpOysraWUpT1tpZStMXT1xW2llXTtyZXR1cm4gaWV9ZnVuY3Rpb24gTHQocSxPKXtyZXR1cm4gcSBpbnN0YW5jZW9mIE98fHEhPW51bGwmJnEuY29uc3RydWN0b3IhPW51bGwmJnEuY29uc3RydWN0b3IubmFtZSE9bnVsbCYmcS5jb25zdHJ1Y3Rvci5uYW1lPT09Ty5uYW1lfWZ1bmN0aW9uIEV0KHEpe3JldHVybiBxIT09cX1jb25zdCBTdD1mdW5jdGlvbigpe2NvbnN0IHE9IjAxMjM0NTY3ODlhYmNkZWYiLE89bmV3IEFycmF5KDI1Nik7Zm9yKGxldCBMPTA7TDwxNjsrK0wpe2NvbnN0IFg9TCoxNjtmb3IobGV0IGllPTA7aWU8MTY7KytpZSlPW1graWVdPXFbTF0rcVtpZV19cmV0dXJuIE99KCk7ZnVuY3Rpb24gTXIocSl7cmV0dXJuIHR5cGVvZiBCaWdJbnQ+InUiP0F0OnF9ZnVuY3Rpb24gQXQoKXt0aHJvdyBuZXcgRXJyb3IoIkJpZ0ludCBub3Qgc3VwcG9ydGVkIil9fShnMykpLGczfWNvbnN0IFVTPXt0cmFuc2FjdGlvbkhhc2g6L14weCg/OltBLUZhLWYwLTldezY0fSkkL3Usc2lnbmVkTWVzc2FnZTovXjB4KD86W2EtZkEtRjAtOV17NjIsfSkkL3V9LHluPXtzZXQodCxlKXtUbi5pc0NsaWVudCYmbG9jYWxTdG9yYWdlLnNldEl0ZW0oYCR7SGUuU1RPUkFHRV9LRVl9JHt0fWAsZSl9LGdldCh0KXtyZXR1cm4gVG4uaXNDbGllbnQ/bG9jYWxTdG9yYWdlLmdldEl0ZW0oYCR7SGUuU1RPUkFHRV9LRVl9JHt0fWApOm51bGx9LGRlbGV0ZSh0LGUpe1RuLmlzQ2xpZW50JiYoZT9sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0KTpsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgJHtIZS5TVE9SQUdFX0tFWX0ke3R9YCkpfX0sTWc9MzAqMWUzLFRuPXtjaGVja0lmQWxsb3dlZFRvVHJpZ2dlckVtYWlsKCl7Y29uc3QgdD15bi5nZXQoSGUuTEFTVF9FTUFJTF9MT0dJTl9USU1FKTtpZih0KXtjb25zdCBlPURhdGUubm93KCktTnVtYmVyKHQpO2lmKGU8TWcpe2NvbnN0IHI9TWF0aC5jZWlsKChNZy1lKS8xZTMpO3Rocm93IG5ldyBFcnJvcihgUGxlYXNlIHRyeSBhZ2FpbiBhZnRlciAke3J9IHNlY29uZHNgKX19fSxnZXRUaW1lVG9OZXh0RW1haWxMb2dpbigpe2NvbnN0IHQ9eW4uZ2V0KEhlLkxBU1RfRU1BSUxfTE9HSU5fVElNRSk7aWYodCl7Y29uc3QgZT1EYXRlLm5vdygpLU51bWJlcih0KTtpZihlPE1nKXJldHVybiBNYXRoLmNlaWwoKE1nLWUpLzFlMyl9cmV0dXJuIDB9LGNoZWNrSWZSZXF1ZXN0RXhpc3RzKHQpe3JldHVybiBmdC5OT1RfU0FGRV9SUENfTUVUSE9EUy5pbmNsdWRlcyh0Lm1ldGhvZCl8fGZ0LlNBRkVfUlBDX01FVEhPRFMuaW5jbHVkZXModC5tZXRob2QpfSxnZXRSZXNwb25zZVR5cGUodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIiYmKHQ/Lm1hdGNoKFVTLnRyYW5zYWN0aW9uSGFzaCl8fHQ/Lm1hdGNoKFVTLnNpZ25lZE1lc3NhZ2UpKT9IZS5SUENfUkVTUE9OU0VfVFlQRV9UWDpIZS5SUENfUkVTUE9OU0VfVFlQRV9PQkpFQ1R9LGNoZWNrSWZSZXF1ZXN0SXNTYWZlKHQpe3JldHVybiBmdC5TQUZFX1JQQ19NRVRIT0RTLmluY2x1ZGVzKHQubWV0aG9kKX0saXNDbGllbnQ6dHlwZW9mIHdpbmRvdzwidSJ9O3ZhciBEdDsoZnVuY3Rpb24odCl7dC5hc3NlcnRFcXVhbD1zPT5zO2Z1bmN0aW9uIGUocyl7fXQuYXNzZXJ0SXM9ZTtmdW5jdGlvbiByKHMpe3Rocm93IG5ldyBFcnJvcn10LmFzc2VydE5ldmVyPXIsdC5hcnJheVRvRW51bT1zPT57Y29uc3QgaT17fTtmb3IoY29uc3QgbyBvZiBzKWlbb109bztyZXR1cm4gaX0sdC5nZXRWYWxpZEVudW1WYWx1ZXM9cz0+e2NvbnN0IGk9dC5vYmplY3RLZXlzKHMpLmZpbHRlcihhPT50eXBlb2Ygc1tzW2FdXSE9Im51bWJlciIpLG89e307Zm9yKGNvbnN0IGEgb2YgaSlvW2FdPXNbYV07cmV0dXJuIHQub2JqZWN0VmFsdWVzKG8pfSx0Lm9iamVjdFZhbHVlcz1zPT50Lm9iamVjdEtleXMocykubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBzW2ldfSksdC5vYmplY3RLZXlzPXR5cGVvZiBPYmplY3Qua2V5cz09ImZ1bmN0aW9uIj9zPT5PYmplY3Qua2V5cyhzKTpzPT57Y29uc3QgaT1bXTtmb3IoY29uc3QgbyBpbiBzKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLG8pJiZpLnB1c2gobyk7cmV0dXJuIGl9LHQuZmluZD0ocyxpKT0+e2Zvcihjb25zdCBvIG9mIHMpaWYoaShvKSlyZXR1cm4gb30sdC5pc0ludGVnZXI9dHlwZW9mIE51bWJlci5pc0ludGVnZXI9PSJmdW5jdGlvbiI/cz0+TnVtYmVyLmlzSW50ZWdlcihzKTpzPT50eXBlb2Ygcz09Im51bWJlciImJmlzRmluaXRlKHMpJiZNYXRoLmZsb29yKHMpPT09cztmdW5jdGlvbiBuKHMsaT0iIHwgIil7cmV0dXJuIHMubWFwKG89PnR5cGVvZiBvPT0ic3RyaW5nIj9gJyR7b30nYDpvKS5qb2luKGkpfXQuam9pblZhbHVlcz1uLHQuanNvblN0cmluZ2lmeVJlcGxhY2VyPShzLGkpPT50eXBlb2YgaT09ImJpZ2ludCI/aS50b1N0cmluZygpOml9KShEdHx8KER0PXt9KSk7dmFyIFd4OyhmdW5jdGlvbih0KXt0Lm1lcmdlU2hhcGVzPShlLHIpPT4oey4uLmUsLi4ucn0pfSkoV3h8fChXeD17fSkpO2NvbnN0IFVlPUR0LmFycmF5VG9FbnVtKFsic3RyaW5nIiwibmFuIiwibnVtYmVyIiwiaW50ZWdlciIsImZsb2F0IiwiYm9vbGVhbiIsImRhdGUiLCJiaWdpbnQiLCJzeW1ib2wiLCJmdW5jdGlvbiIsInVuZGVmaW5lZCIsIm51bGwiLCJhcnJheSIsIm9iamVjdCIsInVua25vd24iLCJwcm9taXNlIiwidm9pZCIsIm5ldmVyIiwibWFwIiwic2V0Il0pLG9jPXQ9Pntzd2l0Y2godHlwZW9mIHQpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4gVWUudW5kZWZpbmVkO2Nhc2Uic3RyaW5nIjpyZXR1cm4gVWUuc3RyaW5nO2Nhc2UibnVtYmVyIjpyZXR1cm4gaXNOYU4odCk/VWUubmFuOlVlLm51bWJlcjtjYXNlImJvb2xlYW4iOnJldHVybiBVZS5ib29sZWFuO2Nhc2UiZnVuY3Rpb24iOnJldHVybiBVZS5mdW5jdGlvbjtjYXNlImJpZ2ludCI6cmV0dXJuIFVlLmJpZ2ludDtjYXNlInN5bWJvbCI6cmV0dXJuIFVlLnN5bWJvbDtjYXNlIm9iamVjdCI6cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/VWUuYXJyYXk6dD09PW51bGw/VWUubnVsbDp0LnRoZW4mJnR5cGVvZiB0LnRoZW49PSJmdW5jdGlvbiImJnQuY2F0Y2gmJnR5cGVvZiB0LmNhdGNoPT0iZnVuY3Rpb24iP1VlLnByb21pc2U6dHlwZW9mIE1hcDwidSImJnQgaW5zdGFuY2VvZiBNYXA/VWUubWFwOnR5cGVvZiBTZXQ8InUiJiZ0IGluc3RhbmNlb2YgU2V0P1VlLnNldDp0eXBlb2YgRGF0ZTwidSImJnQgaW5zdGFuY2VvZiBEYXRlP1VlLmRhdGU6VWUub2JqZWN0O2RlZmF1bHQ6cmV0dXJuIFVlLnVua25vd259fSxOZT1EdC5hcnJheVRvRW51bShbImludmFsaWRfdHlwZSIsImludmFsaWRfbGl0ZXJhbCIsImN1c3RvbSIsImludmFsaWRfdW5pb24iLCJpbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3IiLCJpbnZhbGlkX2VudW1fdmFsdWUiLCJ1bnJlY29nbml6ZWRfa2V5cyIsImludmFsaWRfYXJndW1lbnRzIiwiaW52YWxpZF9yZXR1cm5fdHlwZSIsImludmFsaWRfZGF0ZSIsImludmFsaWRfc3RyaW5nIiwidG9vX3NtYWxsIiwidG9vX2JpZyIsImludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzIiwibm90X211bHRpcGxlX29mIiwibm90X2Zpbml0ZSJdKSxnaGU9dD0+SlNPTi5zdHJpbmdpZnkodCxudWxsLDIpLnJlcGxhY2UoLyIoW14iXSspIjovZywiJDE6Iik7Y2xhc3MgUnMgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuaXNzdWVzPVtdLHRoaXMuYWRkSXNzdWU9bj0+e3RoaXMuaXNzdWVzPVsuLi50aGlzLmlzc3VlcyxuXX0sdGhpcy5hZGRJc3N1ZXM9KG49W10pPT57dGhpcy5pc3N1ZXM9Wy4uLnRoaXMuaXNzdWVzLC4uLm5dfTtjb25zdCByPW5ldy50YXJnZXQucHJvdG90eXBlO09iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxyKTp0aGlzLl9fcHJvdG9fXz1yLHRoaXMubmFtZT0iWm9kRXJyb3IiLHRoaXMuaXNzdWVzPWV9Z2V0IGVycm9ycygpe3JldHVybiB0aGlzLmlzc3Vlc31mb3JtYXQoZSl7Y29uc3Qgcj1lfHxmdW5jdGlvbihpKXtyZXR1cm4gaS5tZXNzYWdlfSxuPXtfZXJyb3JzOltdfSxzPWk9Pntmb3IoY29uc3QgbyBvZiBpLmlzc3VlcylpZihvLmNvZGU9PT0iaW52YWxpZF91bmlvbiIpby51bmlvbkVycm9ycy5tYXAocyk7ZWxzZSBpZihvLmNvZGU9PT0iaW52YWxpZF9yZXR1cm5fdHlwZSIpcyhvLnJldHVyblR5cGVFcnJvcik7ZWxzZSBpZihvLmNvZGU9PT0iaW52YWxpZF9hcmd1bWVudHMiKXMoby5hcmd1bWVudHNFcnJvcik7ZWxzZSBpZihvLnBhdGgubGVuZ3RoPT09MCluLl9lcnJvcnMucHVzaChyKG8pKTtlbHNle2xldCBhPW4sYz0wO2Zvcig7YzxvLnBhdGgubGVuZ3RoOyl7Y29uc3QgbD1vLnBhdGhbY107Yz09PW8ucGF0aC5sZW5ndGgtMT8oYVtsXT1hW2xdfHx7X2Vycm9yczpbXX0sYVtsXS5fZXJyb3JzLnB1c2gocihvKSkpOmFbbF09YVtsXXx8e19lcnJvcnM6W119LGE9YVtsXSxjKyt9fX07cmV0dXJuIHModGhpcyksbn10b1N0cmluZygpe3JldHVybiB0aGlzLm1lc3NhZ2V9Z2V0IG1lc3NhZ2UoKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5pc3N1ZXMsRHQuanNvblN0cmluZ2lmeVJlcGxhY2VyLDIpfWdldCBpc0VtcHR5KCl7cmV0dXJuIHRoaXMuaXNzdWVzLmxlbmd0aD09PTB9ZmxhdHRlbihlPXI9PnIubWVzc2FnZSl7Y29uc3Qgcj17fSxuPVtdO2Zvcihjb25zdCBzIG9mIHRoaXMuaXNzdWVzKXMucGF0aC5sZW5ndGg+MD8ocltzLnBhdGhbMF1dPXJbcy5wYXRoWzBdXXx8W10scltzLnBhdGhbMF1dLnB1c2goZShzKSkpOm4ucHVzaChlKHMpKTtyZXR1cm57Zm9ybUVycm9yczpuLGZpZWxkRXJyb3JzOnJ9fWdldCBmb3JtRXJyb3JzKCl7cmV0dXJuIHRoaXMuZmxhdHRlbigpfX1Scy5jcmVhdGU9dD0+bmV3IFJzKHQpO2NvbnN0IFgwPSh0LGUpPT57bGV0IHI7c3dpdGNoKHQuY29kZSl7Y2FzZSBOZS5pbnZhbGlkX3R5cGU6dC5yZWNlaXZlZD09PVVlLnVuZGVmaW5lZD9yPSJSZXF1aXJlZCI6cj1gRXhwZWN0ZWQgJHt0LmV4cGVjdGVkfSwgcmVjZWl2ZWQgJHt0LnJlY2VpdmVkfWA7YnJlYWs7Y2FzZSBOZS5pbnZhbGlkX2xpdGVyYWw6cj1gSW52YWxpZCBsaXRlcmFsIHZhbHVlLCBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KHQuZXhwZWN0ZWQsRHQuanNvblN0cmluZ2lmeVJlcGxhY2VyKX1gO2JyZWFrO2Nhc2UgTmUudW5yZWNvZ25pemVkX2tleXM6cj1gVW5yZWNvZ25pemVkIGtleShzKSBpbiBvYmplY3Q6ICR7RHQuam9pblZhbHVlcyh0LmtleXMsIiwgIil9YDticmVhaztjYXNlIE5lLmludmFsaWRfdW5pb246cj0iSW52YWxpZCBpbnB1dCI7YnJlYWs7Y2FzZSBOZS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I6cj1gSW52YWxpZCBkaXNjcmltaW5hdG9yIHZhbHVlLiBFeHBlY3RlZCAke0R0LmpvaW5WYWx1ZXModC5vcHRpb25zKX1gO2JyZWFrO2Nhc2UgTmUuaW52YWxpZF9lbnVtX3ZhbHVlOnI9YEludmFsaWQgZW51bSB2YWx1ZS4gRXhwZWN0ZWQgJHtEdC5qb2luVmFsdWVzKHQub3B0aW9ucyl9LCByZWNlaXZlZCAnJHt0LnJlY2VpdmVkfSdgO2JyZWFrO2Nhc2UgTmUuaW52YWxpZF9hcmd1bWVudHM6cj0iSW52YWxpZCBmdW5jdGlvbiBhcmd1bWVudHMiO2JyZWFrO2Nhc2UgTmUuaW52YWxpZF9yZXR1cm5fdHlwZTpyPSJJbnZhbGlkIGZ1bmN0aW9uIHJldHVybiB0eXBlIjticmVhaztjYXNlIE5lLmludmFsaWRfZGF0ZTpyPSJJbnZhbGlkIGRhdGUiO2JyZWFrO2Nhc2UgTmUuaW52YWxpZF9zdHJpbmc6dHlwZW9mIHQudmFsaWRhdGlvbj09Im9iamVjdCI/ImluY2x1ZGVzImluIHQudmFsaWRhdGlvbj8ocj1gSW52YWxpZCBpbnB1dDogbXVzdCBpbmNsdWRlICIke3QudmFsaWRhdGlvbi5pbmNsdWRlc30iYCx0eXBlb2YgdC52YWxpZGF0aW9uLnBvc2l0aW9uPT0ibnVtYmVyIiYmKHI9YCR7cn0gYXQgb25lIG9yIG1vcmUgcG9zaXRpb25zIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke3QudmFsaWRhdGlvbi5wb3NpdGlvbn1gKSk6InN0YXJ0c1dpdGgiaW4gdC52YWxpZGF0aW9uP3I9YEludmFsaWQgaW5wdXQ6IG11c3Qgc3RhcnQgd2l0aCAiJHt0LnZhbGlkYXRpb24uc3RhcnRzV2l0aH0iYDoiZW5kc1dpdGgiaW4gdC52YWxpZGF0aW9uP3I9YEludmFsaWQgaW5wdXQ6IG11c3QgZW5kIHdpdGggIiR7dC52YWxpZGF0aW9uLmVuZHNXaXRofSJgOkR0LmFzc2VydE5ldmVyKHQudmFsaWRhdGlvbik6dC52YWxpZGF0aW9uIT09InJlZ2V4Ij9yPWBJbnZhbGlkICR7dC52YWxpZGF0aW9ufWA6cj0iSW52YWxpZCI7YnJlYWs7Y2FzZSBOZS50b29fc21hbGw6dC50eXBlPT09ImFycmF5Ij9yPWBBcnJheSBtdXN0IGNvbnRhaW4gJHt0LmV4YWN0PyJleGFjdGx5Ijp0LmluY2x1c2l2ZT8iYXQgbGVhc3QiOiJtb3JlIHRoYW4ifSAke3QubWluaW11bX0gZWxlbWVudChzKWA6dC50eXBlPT09InN0cmluZyI/cj1gU3RyaW5nIG11c3QgY29udGFpbiAke3QuZXhhY3Q/ImV4YWN0bHkiOnQuaW5jbHVzaXZlPyJhdCBsZWFzdCI6Im92ZXIifSAke3QubWluaW11bX0gY2hhcmFjdGVyKHMpYDp0LnR5cGU9PT0ibnVtYmVyIj9yPWBOdW1iZXIgbXVzdCBiZSAke3QuZXhhY3Q/ImV4YWN0bHkgZXF1YWwgdG8gIjp0LmluY2x1c2l2ZT8iZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICI6ImdyZWF0ZXIgdGhhbiAifSR7dC5taW5pbXVtfWA6dC50eXBlPT09ImRhdGUiP3I9YERhdGUgbXVzdCBiZSAke3QuZXhhY3Q/ImV4YWN0bHkgZXF1YWwgdG8gIjp0LmluY2x1c2l2ZT8iZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICI6ImdyZWF0ZXIgdGhhbiAifSR7bmV3IERhdGUoTnVtYmVyKHQubWluaW11bSkpfWA6cj0iSW52YWxpZCBpbnB1dCI7YnJlYWs7Y2FzZSBOZS50b29fYmlnOnQudHlwZT09PSJhcnJheSI/cj1gQXJyYXkgbXVzdCBjb250YWluICR7dC5leGFjdD8iZXhhY3RseSI6dC5pbmNsdXNpdmU/ImF0IG1vc3QiOiJsZXNzIHRoYW4ifSAke3QubWF4aW11bX0gZWxlbWVudChzKWA6dC50eXBlPT09InN0cmluZyI/cj1gU3RyaW5nIG11c3QgY29udGFpbiAke3QuZXhhY3Q/ImV4YWN0bHkiOnQuaW5jbHVzaXZlPyJhdCBtb3N0IjoidW5kZXIifSAke3QubWF4aW11bX0gY2hhcmFjdGVyKHMpYDp0LnR5cGU9PT0ibnVtYmVyIj9yPWBOdW1iZXIgbXVzdCBiZSAke3QuZXhhY3Q/ImV4YWN0bHkiOnQuaW5jbHVzaXZlPyJsZXNzIHRoYW4gb3IgZXF1YWwgdG8iOiJsZXNzIHRoYW4ifSAke3QubWF4aW11bX1gOnQudHlwZT09PSJiaWdpbnQiP3I9YEJpZ0ludCBtdXN0IGJlICR7dC5leGFjdD8iZXhhY3RseSI6dC5pbmNsdXNpdmU/Imxlc3MgdGhhbiBvciBlcXVhbCB0byI6Imxlc3MgdGhhbiJ9ICR7dC5tYXhpbXVtfWA6dC50eXBlPT09ImRhdGUiP3I9YERhdGUgbXVzdCBiZSAke3QuZXhhY3Q/ImV4YWN0bHkiOnQuaW5jbHVzaXZlPyJzbWFsbGVyIHRoYW4gb3IgZXF1YWwgdG8iOiJzbWFsbGVyIHRoYW4ifSAke25ldyBEYXRlKE51bWJlcih0Lm1heGltdW0pKX1gOnI9IkludmFsaWQgaW5wdXQiO2JyZWFrO2Nhc2UgTmUuY3VzdG9tOnI9IkludmFsaWQgaW5wdXQiO2JyZWFrO2Nhc2UgTmUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXM6cj0iSW50ZXJzZWN0aW9uIHJlc3VsdHMgY291bGQgbm90IGJlIG1lcmdlZCI7YnJlYWs7Y2FzZSBOZS5ub3RfbXVsdGlwbGVfb2Y6cj1gTnVtYmVyIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke3QubXVsdGlwbGVPZn1gO2JyZWFrO2Nhc2UgTmUubm90X2Zpbml0ZTpyPSJOdW1iZXIgbXVzdCBiZSBmaW5pdGUiO2JyZWFrO2RlZmF1bHQ6cj1lLmRlZmF1bHRFcnJvcixEdC5hc3NlcnROZXZlcih0KX1yZXR1cm57bWVzc2FnZTpyfX07bGV0IENCPVgwO2Z1bmN0aW9uIHdoZSh0KXtDQj10fWZ1bmN0aW9uIEViKCl7cmV0dXJuIENCfWNvbnN0IENiPXQ9Pntjb25zdHtkYXRhOmUscGF0aDpyLGVycm9yTWFwczpuLGlzc3VlRGF0YTpzfT10LGk9Wy4uLnIsLi4ucy5wYXRofHxbXV0sbz17Li4ucyxwYXRoOml9O2xldCBhPSIiO2NvbnN0IGM9bi5maWx0ZXIobD0+ISFsKS5zbGljZSgpLnJldmVyc2UoKTtmb3IoY29uc3QgbCBvZiBjKWE9bChvLHtkYXRhOmUsZGVmYXVsdEVycm9yOmF9KS5tZXNzYWdlO3JldHVybnsuLi5zLHBhdGg6aSxtZXNzYWdlOnMubWVzc2FnZXx8YX19LGJoZT1bXTtmdW5jdGlvbiBXZSh0LGUpe2NvbnN0IHI9Q2Ioe2lzc3VlRGF0YTplLGRhdGE6dC5kYXRhLHBhdGg6dC5wYXRoLGVycm9yTWFwczpbdC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLHQuc2NoZW1hRXJyb3JNYXAsRWIoKSxYMF0uZmlsdGVyKG49PiEhbil9KTt0LmNvbW1vbi5pc3N1ZXMucHVzaChyKX1jbGFzcyBJbntjb25zdHJ1Y3Rvcigpe3RoaXMudmFsdWU9InZhbGlkIn1kaXJ0eSgpe3RoaXMudmFsdWU9PT0idmFsaWQiJiYodGhpcy52YWx1ZT0iZGlydHkiKX1hYm9ydCgpe3RoaXMudmFsdWUhPT0iYWJvcnRlZCImJih0aGlzLnZhbHVlPSJhYm9ydGVkIil9c3RhdGljIG1lcmdlQXJyYXkoZSxyKXtjb25zdCBuPVtdO2Zvcihjb25zdCBzIG9mIHIpe2lmKHMuc3RhdHVzPT09ImFib3J0ZWQiKXJldHVybiBsdDtzLnN0YXR1cz09PSJkaXJ0eSImJmUuZGlydHkoKSxuLnB1c2gocy52YWx1ZSl9cmV0dXJue3N0YXR1czplLnZhbHVlLHZhbHVlOm59fXN0YXRpYyBhc3luYyBtZXJnZU9iamVjdEFzeW5jKGUscil7Y29uc3Qgbj1bXTtmb3IoY29uc3QgcyBvZiByKW4ucHVzaCh7a2V5OmF3YWl0IHMua2V5LHZhbHVlOmF3YWl0IHMudmFsdWV9KTtyZXR1cm4gSW4ubWVyZ2VPYmplY3RTeW5jKGUsbil9c3RhdGljIG1lcmdlT2JqZWN0U3luYyhlLHIpe2NvbnN0IG49e307Zm9yKGNvbnN0IHMgb2Ygcil7Y29uc3R7a2V5OmksdmFsdWU6b309cztpZihpLnN0YXR1cz09PSJhYm9ydGVkInx8by5zdGF0dXM9PT0iYWJvcnRlZCIpcmV0dXJuIGx0O2kuc3RhdHVzPT09ImRpcnR5IiYmZS5kaXJ0eSgpLG8uc3RhdHVzPT09ImRpcnR5IiYmZS5kaXJ0eSgpLGkudmFsdWUhPT0iX19wcm90b19fIiYmKHR5cGVvZiBvLnZhbHVlPCJ1Inx8cy5hbHdheXNTZXQpJiYobltpLnZhbHVlXT1vLnZhbHVlKX1yZXR1cm57c3RhdHVzOmUudmFsdWUsdmFsdWU6bn19fWNvbnN0IGx0PU9iamVjdC5mcmVlemUoe3N0YXR1czoiYWJvcnRlZCJ9KSx4Qj10PT4oe3N0YXR1czoiZGlydHkiLHZhbHVlOnR9KSxMbj10PT4oe3N0YXR1czoidmFsaWQiLHZhbHVlOnR9KSxIeD10PT50LnN0YXR1cz09PSJhYm9ydGVkIixxeD10PT50LnN0YXR1cz09PSJkaXJ0eSIsUTA9dD0+dC5zdGF0dXM9PT0idmFsaWQiLHhiPXQ9PnR5cGVvZiBQcm9taXNlPCJ1IiYmdCBpbnN0YW5jZW9mIFByb21pc2U7dmFyIEplOyhmdW5jdGlvbih0KXt0LmVyclRvT2JqPWU9PnR5cGVvZiBlPT0ic3RyaW5nIj97bWVzc2FnZTplfTplfHx7fSx0LnRvU3RyaW5nPWU9PnR5cGVvZiBlPT0ic3RyaW5nIj9lOmU/Lm1lc3NhZ2V9KShKZXx8KEplPXt9KSk7Y2xhc3MgeG97Y29uc3RydWN0b3IoZSxyLG4scyl7dGhpcy5fY2FjaGVkUGF0aD1bXSx0aGlzLnBhcmVudD1lLHRoaXMuZGF0YT1yLHRoaXMuX3BhdGg9bix0aGlzLl9rZXk9c31nZXQgcGF0aCgpe3JldHVybiB0aGlzLl9jYWNoZWRQYXRoLmxlbmd0aHx8KHRoaXMuX2tleSBpbnN0YW5jZW9mIEFycmF5P3RoaXMuX2NhY2hlZFBhdGgucHVzaCguLi50aGlzLl9wYXRoLC4uLnRoaXMuX2tleSk6dGhpcy5fY2FjaGVkUGF0aC5wdXNoKC4uLnRoaXMuX3BhdGgsdGhpcy5fa2V5KSksdGhpcy5fY2FjaGVkUGF0aH19Y29uc3QgRlM9KHQsZSk9PntpZihRMChlKSlyZXR1cm57c3VjY2VzczohMCxkYXRhOmUudmFsdWV9O2lmKCF0LmNvbW1vbi5pc3N1ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVmFsaWRhdGlvbiBmYWlsZWQgYnV0IG5vIGlzc3VlcyBkZXRlY3RlZC4iKTtyZXR1cm57c3VjY2VzczohMSxnZXQgZXJyb3IoKXtpZih0aGlzLl9lcnJvcilyZXR1cm4gdGhpcy5fZXJyb3I7Y29uc3Qgcj1uZXcgUnModC5jb21tb24uaXNzdWVzKTtyZXR1cm4gdGhpcy5fZXJyb3I9cix0aGlzLl9lcnJvcn19fTtmdW5jdGlvbiBtdCh0KXtpZighdClyZXR1cm57fTtjb25zdHtlcnJvck1hcDplLGludmFsaWRfdHlwZV9lcnJvcjpyLHJlcXVpcmVkX2Vycm9yOm4sZGVzY3JpcHRpb246c309dDtpZihlJiYocnx8bikpdGhyb3cgbmV3IEVycm9yKGBDYW4ndCB1c2UgImludmFsaWRfdHlwZV9lcnJvciIgb3IgInJlcXVpcmVkX2Vycm9yIiBpbiBjb25qdW5jdGlvbiB3aXRoIGN1c3RvbSBlcnJvciBtYXAuYCk7cmV0dXJuIGU/e2Vycm9yTWFwOmUsZGVzY3JpcHRpb246c306e2Vycm9yTWFwOihvLGEpPT5vLmNvZGUhPT0iaW52YWxpZF90eXBlIj97bWVzc2FnZTphLmRlZmF1bHRFcnJvcn06dHlwZW9mIGEuZGF0YT4idSI/e21lc3NhZ2U6bj8/YS5kZWZhdWx0RXJyb3J9OnttZXNzYWdlOnI/P2EuZGVmYXVsdEVycm9yfSxkZXNjcmlwdGlvbjpzfX1jbGFzcyB5dHtjb25zdHJ1Y3RvcihlKXt0aGlzLnNwYT10aGlzLnNhZmVQYXJzZUFzeW5jLHRoaXMuX2RlZj1lLHRoaXMucGFyc2U9dGhpcy5wYXJzZS5iaW5kKHRoaXMpLHRoaXMuc2FmZVBhcnNlPXRoaXMuc2FmZVBhcnNlLmJpbmQodGhpcyksdGhpcy5wYXJzZUFzeW5jPXRoaXMucGFyc2VBc3luYy5iaW5kKHRoaXMpLHRoaXMuc2FmZVBhcnNlQXN5bmM9dGhpcy5zYWZlUGFyc2VBc3luYy5iaW5kKHRoaXMpLHRoaXMuc3BhPXRoaXMuc3BhLmJpbmQodGhpcyksdGhpcy5yZWZpbmU9dGhpcy5yZWZpbmUuYmluZCh0aGlzKSx0aGlzLnJlZmluZW1lbnQ9dGhpcy5yZWZpbmVtZW50LmJpbmQodGhpcyksdGhpcy5zdXBlclJlZmluZT10aGlzLnN1cGVyUmVmaW5lLmJpbmQodGhpcyksdGhpcy5vcHRpb25hbD10aGlzLm9wdGlvbmFsLmJpbmQodGhpcyksdGhpcy5udWxsYWJsZT10aGlzLm51bGxhYmxlLmJpbmQodGhpcyksdGhpcy5udWxsaXNoPXRoaXMubnVsbGlzaC5iaW5kKHRoaXMpLHRoaXMuYXJyYXk9dGhpcy5hcnJheS5iaW5kKHRoaXMpLHRoaXMucHJvbWlzZT10aGlzLnByb21pc2UuYmluZCh0aGlzKSx0aGlzLm9yPXRoaXMub3IuYmluZCh0aGlzKSx0aGlzLmFuZD10aGlzLmFuZC5iaW5kKHRoaXMpLHRoaXMudHJhbnNmb3JtPXRoaXMudHJhbnNmb3JtLmJpbmQodGhpcyksdGhpcy5icmFuZD10aGlzLmJyYW5kLmJpbmQodGhpcyksdGhpcy5kZWZhdWx0PXRoaXMuZGVmYXVsdC5iaW5kKHRoaXMpLHRoaXMuY2F0Y2g9dGhpcy5jYXRjaC5iaW5kKHRoaXMpLHRoaXMuZGVzY3JpYmU9dGhpcy5kZXNjcmliZS5iaW5kKHRoaXMpLHRoaXMucGlwZT10aGlzLnBpcGUuYmluZCh0aGlzKSx0aGlzLnJlYWRvbmx5PXRoaXMucmVhZG9ubHkuYmluZCh0aGlzKSx0aGlzLmlzTnVsbGFibGU9dGhpcy5pc051bGxhYmxlLmJpbmQodGhpcyksdGhpcy5pc09wdGlvbmFsPXRoaXMuaXNPcHRpb25hbC5iaW5kKHRoaXMpfWdldCBkZXNjcmlwdGlvbigpe3JldHVybiB0aGlzLl9kZWYuZGVzY3JpcHRpb259X2dldFR5cGUoZSl7cmV0dXJuIG9jKGUuZGF0YSl9X2dldE9yUmV0dXJuQ3R4KGUscil7cmV0dXJuIHJ8fHtjb21tb246ZS5wYXJlbnQuY29tbW9uLGRhdGE6ZS5kYXRhLHBhcnNlZFR5cGU6b2MoZS5kYXRhKSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGF0aDplLnBhdGgscGFyZW50OmUucGFyZW50fX1fcHJvY2Vzc0lucHV0UGFyYW1zKGUpe3JldHVybntzdGF0dXM6bmV3IEluLGN0eDp7Y29tbW9uOmUucGFyZW50LmNvbW1vbixkYXRhOmUuZGF0YSxwYXJzZWRUeXBlOm9jKGUuZGF0YSksc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhdGg6ZS5wYXRoLHBhcmVudDplLnBhcmVudH19fV9wYXJzZVN5bmMoZSl7Y29uc3Qgcj10aGlzLl9wYXJzZShlKTtpZih4YihyKSl0aHJvdyBuZXcgRXJyb3IoIlN5bmNocm9ub3VzIHBhcnNlIGVuY291bnRlcmVkIHByb21pc2UuIik7cmV0dXJuIHJ9X3BhcnNlQXN5bmMoZSl7Y29uc3Qgcj10aGlzLl9wYXJzZShlKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpfXBhcnNlKGUscil7Y29uc3Qgbj10aGlzLnNhZmVQYXJzZShlLHIpO2lmKG4uc3VjY2VzcylyZXR1cm4gbi5kYXRhO3Rocm93IG4uZXJyb3J9c2FmZVBhcnNlKGUscil7dmFyIG47Y29uc3Qgcz17Y29tbW9uOntpc3N1ZXM6W10sYXN5bmM6KG49cj8uYXN5bmMpIT09bnVsbCYmbiE9PXZvaWQgMD9uOiExLGNvbnRleHR1YWxFcnJvck1hcDpyPy5lcnJvck1hcH0scGF0aDpyPy5wYXRofHxbXSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGFyZW50Om51bGwsZGF0YTplLHBhcnNlZFR5cGU6b2MoZSl9LGk9dGhpcy5fcGFyc2VTeW5jKHtkYXRhOmUscGF0aDpzLnBhdGgscGFyZW50OnN9KTtyZXR1cm4gRlMocyxpKX1hc3luYyBwYXJzZUFzeW5jKGUscil7Y29uc3Qgbj1hd2FpdCB0aGlzLnNhZmVQYXJzZUFzeW5jKGUscik7aWYobi5zdWNjZXNzKXJldHVybiBuLmRhdGE7dGhyb3cgbi5lcnJvcn1hc3luYyBzYWZlUGFyc2VBc3luYyhlLHIpe2NvbnN0IG49e2NvbW1vbjp7aXNzdWVzOltdLGNvbnRleHR1YWxFcnJvck1hcDpyPy5lcnJvck1hcCxhc3luYzohMH0scGF0aDpyPy5wYXRofHxbXSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGFyZW50Om51bGwsZGF0YTplLHBhcnNlZFR5cGU6b2MoZSl9LHM9dGhpcy5fcGFyc2Uoe2RhdGE6ZSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pLGk9YXdhaXQoeGIocyk/czpQcm9taXNlLnJlc29sdmUocykpO3JldHVybiBGUyhuLGkpfXJlZmluZShlLHIpe2NvbnN0IG49cz0+dHlwZW9mIHI9PSJzdHJpbmcifHx0eXBlb2Ygcj4idSI/e21lc3NhZ2U6cn06dHlwZW9mIHI9PSJmdW5jdGlvbiI/cihzKTpyO3JldHVybiB0aGlzLl9yZWZpbmVtZW50KChzLGkpPT57Y29uc3Qgbz1lKHMpLGE9KCk9PmkuYWRkSXNzdWUoe2NvZGU6TmUuY3VzdG9tLC4uLm4ocyl9KTtyZXR1cm4gdHlwZW9mIFByb21pc2U8InUiJiZvIGluc3RhbmNlb2YgUHJvbWlzZT9vLnRoZW4oYz0+Yz8hMDooYSgpLCExKSk6bz8hMDooYSgpLCExKX0pfXJlZmluZW1lbnQoZSxyKXtyZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgobixzKT0+ZShuKT8hMDoocy5hZGRJc3N1ZSh0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yKG4scyk6ciksITEpKX1fcmVmaW5lbWVudChlKXtyZXR1cm4gbmV3IE9zKHtzY2hlbWE6dGhpcyx0eXBlTmFtZTpudC5ab2RFZmZlY3RzLGVmZmVjdDp7dHlwZToicmVmaW5lbWVudCIscmVmaW5lbWVudDplfX0pfXN1cGVyUmVmaW5lKGUpe3JldHVybiB0aGlzLl9yZWZpbmVtZW50KGUpfW9wdGlvbmFsKCl7cmV0dXJuIGhhLmNyZWF0ZSh0aGlzLHRoaXMuX2RlZil9bnVsbGFibGUoKXtyZXR1cm4gQXUuY3JlYXRlKHRoaXMsdGhpcy5fZGVmKX1udWxsaXNoKCl7cmV0dXJuIHRoaXMubnVsbGFibGUoKS5vcHRpb25hbCgpfWFycmF5KCl7cmV0dXJuIE5zLmNyZWF0ZSh0aGlzLHRoaXMuX2RlZil9cHJvbWlzZSgpe3JldHVybiBQaC5jcmVhdGUodGhpcyx0aGlzLl9kZWYpfW9yKGUpe3JldHVybiBubS5jcmVhdGUoW3RoaXMsZV0sdGhpcy5fZGVmKX1hbmQoZSl7cmV0dXJuIGltLmNyZWF0ZSh0aGlzLGUsdGhpcy5fZGVmKX10cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBPcyh7Li4ubXQodGhpcy5fZGVmKSxzY2hlbWE6dGhpcyx0eXBlTmFtZTpudC5ab2RFZmZlY3RzLGVmZmVjdDp7dHlwZToidHJhbnNmb3JtIix0cmFuc2Zvcm06ZX19KX1kZWZhdWx0KGUpe2NvbnN0IHI9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTooKT0+ZTtyZXR1cm4gbmV3IGxtKHsuLi5tdCh0aGlzLl9kZWYpLGlubmVyVHlwZTp0aGlzLGRlZmF1bHRWYWx1ZTpyLHR5cGVOYW1lOm50LlpvZERlZmF1bHR9KX1icmFuZCgpe3JldHVybiBuZXcga0Ioe3R5cGVOYW1lOm50LlpvZEJyYW5kZWQsdHlwZTp0aGlzLC4uLm10KHRoaXMuX2RlZil9KX1jYXRjaChlKXtjb25zdCByPXR5cGVvZiBlPT0iZnVuY3Rpb24iP2U6KCk9PmU7cmV0dXJuIG5ldyBBYih7Li4ubXQodGhpcy5fZGVmKSxpbm5lclR5cGU6dGhpcyxjYXRjaFZhbHVlOnIsdHlwZU5hbWU6bnQuWm9kQ2F0Y2h9KX1kZXNjcmliZShlKXtjb25zdCByPXRoaXMuY29uc3RydWN0b3I7cmV0dXJuIG5ldyByKHsuLi50aGlzLl9kZWYsZGVzY3JpcHRpb246ZX0pfXBpcGUoZSl7cmV0dXJuIGsxLmNyZWF0ZSh0aGlzLGUpfXJlYWRvbmx5KCl7cmV0dXJuIEliLmNyZWF0ZSh0aGlzKX1pc09wdGlvbmFsKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKHZvaWQgMCkuc3VjY2Vzc31pc051bGxhYmxlKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3N9fWNvbnN0IHloZT0vXmNbXlxzLV17OCx9JC9pLHZoZT0vXlthLXpdW2EtejAtOV0qJC8sRWhlPS9eWzAtOUEtSEpLTU5QLVRWLVpdezI2fSQvLENoZT0vXlswLTlhLWZBLUZdezh9XGItWzAtOWEtZkEtRl17NH1cYi1bMC05YS1mQS1GXXs0fVxiLVswLTlhLWZBLUZdezR9XGItWzAtOWEtZkEtRl17MTJ9JC9pLHhoZT0vXig/IVwuKSg/IS4qXC5cLikoW0EtWjAtOV8rLVwuXSopW0EtWjAtOV8rLV1AKFtBLVowLTldW0EtWjAtOVwtXSpcLikrW0EtWl17Mix9JC9pLF9oZT0iXihcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXHB7RW1vamlfQ29tcG9uZW50fSkrJCI7bGV0IHczO2NvbnN0IGtoZT0vXigoKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKVwuKXszfSgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpJC8sU2hlPS9eKChbYS1mMC05XXsxLDR9Oil7N318OjooW2EtZjAtOV17MSw0fTopezAsNn18KFthLWYwLTldezEsNH06KXsxfTooW2EtZjAtOV17MSw0fTopezAsNX18KFthLWYwLTldezEsNH06KXsyfTooW2EtZjAtOV17MSw0fTopezAsNH18KFthLWYwLTldezEsNH06KXszfTooW2EtZjAtOV17MSw0fTopezAsM318KFthLWYwLTldezEsNH06KXs0fTooW2EtZjAtOV17MSw0fTopezAsMn18KFthLWYwLTldezEsNH06KXs1fTooW2EtZjAtOV17MSw0fTopezAsMX0pKFthLWYwLTldezEsNH18KCgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpXC4pezN9KCgyNVswLTVdKXwoMlswLTRdWzAtOV0pfCgxWzAtOV17Mn0pfChbMC05XXsxLDJ9KSkpJC8sQWhlPXQ9PnQucHJlY2lzaW9uP3Qub2Zmc2V0P25ldyBSZWdFeHAoYF5cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfVxcLlxcZHske3QucHJlY2lzaW9ufX0oKFsrLV1cXGR7Mn0oOj9cXGR7Mn0pPyl8WikkYCk6bmV3IFJlZ0V4cChgXlxcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9XFwuXFxkeyR7dC5wcmVjaXNpb259fVokYCk6dC5wcmVjaXNpb249PT0wP3Qub2Zmc2V0P25ldyBSZWdFeHAoIl5cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfSgoWystXVxcZHsyfSg6P1xcZHsyfSk/KXxaKSQiKTpuZXcgUmVnRXhwKCJeXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn1aJCIpOnQub2Zmc2V0P25ldyBSZWdFeHAoIl5cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfShcXC5cXGQrKT8oKFsrLV1cXGR7Mn0oOj9cXGR7Mn0pPyl8WikkIik6bmV3IFJlZ0V4cCgiXlxcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9KFxcLlxcZCspP1okIik7ZnVuY3Rpb24gVGhlKHQsZSl7cmV0dXJuISEoKGU9PT0idjQifHwhZSkmJmtoZS50ZXN0KHQpfHwoZT09PSJ2NiJ8fCFlKSYmU2hlLnRlc3QodCkpfWNsYXNzIFRzIGV4dGVuZHMgeXR7X3BhcnNlKGUpe2lmKHRoaXMuX2RlZi5jb2VyY2UmJihlLmRhdGE9U3RyaW5nKGUuZGF0YSkpLHRoaXMuX2dldFR5cGUoZSkhPT1VZS5zdHJpbmcpe2NvbnN0IGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuIFdlKGkse2NvZGU6TmUuaW52YWxpZF90eXBlLGV4cGVjdGVkOlVlLnN0cmluZyxyZWNlaXZlZDppLnBhcnNlZFR5cGV9KSxsdH1jb25zdCBuPW5ldyBJbjtsZXQgcztmb3IoY29uc3QgaSBvZiB0aGlzLl9kZWYuY2hlY2tzKWlmKGkua2luZD09PSJtaW4iKWUuZGF0YS5sZW5ndGg8aS52YWx1ZSYmKHM9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxzKSxXZShzLHtjb2RlOk5lLnRvb19zbWFsbCxtaW5pbXVtOmkudmFsdWUsdHlwZToic3RyaW5nIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTppLm1lc3NhZ2V9KSxuLmRpcnR5KCkpO2Vsc2UgaWYoaS5raW5kPT09Im1heCIpZS5kYXRhLmxlbmd0aD5pLnZhbHVlJiYocz10aGlzLl9nZXRPclJldHVybkN0eChlLHMpLFdlKHMse2NvZGU6TmUudG9vX2JpZyxtYXhpbXVtOmkudmFsdWUsdHlwZToic3RyaW5nIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTppLm1lc3NhZ2V9KSxuLmRpcnR5KCkpO2Vsc2UgaWYoaS5raW5kPT09Imxlbmd0aCIpe2NvbnN0IG89ZS5kYXRhLmxlbmd0aD5pLnZhbHVlLGE9ZS5kYXRhLmxlbmd0aDxpLnZhbHVlOyhvfHxhKSYmKHM9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxzKSxvP1dlKHMse2NvZGU6TmUudG9vX2JpZyxtYXhpbXVtOmkudmFsdWUsdHlwZToic3RyaW5nIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsbWVzc2FnZTppLm1lc3NhZ2V9KTphJiZXZShzLHtjb2RlOk5lLnRvb19zbWFsbCxtaW5pbXVtOmkudmFsdWUsdHlwZToic3RyaW5nIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsbWVzc2FnZTppLm1lc3NhZ2V9KSxuLmRpcnR5KCkpfWVsc2UgaWYoaS5raW5kPT09ImVtYWlsIil4aGUudGVzdChlLmRhdGEpfHwocz10aGlzLl9nZXRPclJldHVybkN0eChlLHMpLFdlKHMse3ZhbGlkYXRpb246ImVtYWlsIixjb2RlOk5lLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6aS5tZXNzYWdlfSksbi5kaXJ0eSgpKTtlbHNlIGlmKGkua2luZD09PSJlbW9qaSIpdzN8fCh3Mz1uZXcgUmVnRXhwKF9oZSwidSIpKSx3My50ZXN0KGUuZGF0YSl8fChzPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUscyksV2Uocyx7dmFsaWRhdGlvbjoiZW1vamkiLGNvZGU6TmUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTppLm1lc3NhZ2V9KSxuLmRpcnR5KCkpO2Vsc2UgaWYoaS5raW5kPT09InV1aWQiKUNoZS50ZXN0KGUuZGF0YSl8fChzPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUscyksV2Uocyx7dmFsaWRhdGlvbjoidXVpZCIsY29kZTpOZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmkubWVzc2FnZX0pLG4uZGlydHkoKSk7ZWxzZSBpZihpLmtpbmQ9PT0iY3VpZCIpeWhlLnRlc3QoZS5kYXRhKXx8KHM9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxzKSxXZShzLHt2YWxpZGF0aW9uOiJjdWlkIixjb2RlOk5lLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6aS5tZXNzYWdlfSksbi5kaXJ0eSgpKTtlbHNlIGlmKGkua2luZD09PSJjdWlkMiIpdmhlLnRlc3QoZS5kYXRhKXx8KHM9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxzKSxXZShzLHt2YWxpZGF0aW9uOiJjdWlkMiIsY29kZTpOZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmkubWVzc2FnZX0pLG4uZGlydHkoKSk7ZWxzZSBpZihpLmtpbmQ9PT0idWxpZCIpRWhlLnRlc3QoZS5kYXRhKXx8KHM9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxzKSxXZShzLHt2YWxpZGF0aW9uOiJ1bGlkIixjb2RlOk5lLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6aS5tZXNzYWdlfSksbi5kaXJ0eSgpKTtlbHNlIGlmKGkua2luZD09PSJ1cmwiKXRyeXtuZXcgVVJMKGUuZGF0YSl9Y2F0Y2h7cz10aGlzLl9nZXRPclJldHVybkN0eChlLHMpLFdlKHMse3ZhbGlkYXRpb246InVybCIsY29kZTpOZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmkubWVzc2FnZX0pLG4uZGlydHkoKX1lbHNlIGkua2luZD09PSJyZWdleCI/KGkucmVnZXgubGFzdEluZGV4PTAsaS5yZWdleC50ZXN0KGUuZGF0YSl8fChzPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUscyksV2Uocyx7dmFsaWRhdGlvbjoicmVnZXgiLGNvZGU6TmUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTppLm1lc3NhZ2V9KSxuLmRpcnR5KCkpKTppLmtpbmQ9PT0idHJpbSI/ZS5kYXRhPWUuZGF0YS50cmltKCk6aS5raW5kPT09ImluY2x1ZGVzIj9lLmRhdGEuaW5jbHVkZXMoaS52YWx1ZSxpLnBvc2l0aW9uKXx8KHM9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxzKSxXZShzLHtjb2RlOk5lLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246e2luY2x1ZGVzOmkudmFsdWUscG9zaXRpb246aS5wb3NpdGlvbn0sbWVzc2FnZTppLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOmkua2luZD09PSJ0b0xvd2VyQ2FzZSI/ZS5kYXRhPWUuZGF0YS50b0xvd2VyQ2FzZSgpOmkua2luZD09PSJ0b1VwcGVyQ2FzZSI/ZS5kYXRhPWUuZGF0YS50b1VwcGVyQ2FzZSgpOmkua2luZD09PSJzdGFydHNXaXRoIj9lLmRhdGEuc3RhcnRzV2l0aChpLnZhbHVlKXx8KHM9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxzKSxXZShzLHtjb2RlOk5lLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246e3N0YXJ0c1dpdGg6aS52YWx1ZX0sbWVzc2FnZTppLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOmkua2luZD09PSJlbmRzV2l0aCI/ZS5kYXRhLmVuZHNXaXRoKGkudmFsdWUpfHwocz10aGlzLl9nZXRPclJldHVybkN0eChlLHMpLFdlKHMse2NvZGU6TmUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjp7ZW5kc1dpdGg6aS52YWx1ZX0sbWVzc2FnZTppLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOmkua2luZD09PSJkYXRldGltZSI/QWhlKGkpLnRlc3QoZS5kYXRhKXx8KHM9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxzKSxXZShzLHtjb2RlOk5lLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246ImRhdGV0aW1lIixtZXNzYWdlOmkubWVzc2FnZX0pLG4uZGlydHkoKSk6aS5raW5kPT09ImlwIj9UaGUoZS5kYXRhLGkudmVyc2lvbil8fChzPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUscyksV2Uocyx7dmFsaWRhdGlvbjoiaXAiLGNvZGU6TmUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTppLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOkR0LmFzc2VydE5ldmVyKGkpO3JldHVybntzdGF0dXM6bi52YWx1ZSx2YWx1ZTplLmRhdGF9fV9yZWdleChlLHIsbil7cmV0dXJuIHRoaXMucmVmaW5lbWVudChzPT5lLnRlc3Qocykse3ZhbGlkYXRpb246cixjb2RlOk5lLmludmFsaWRfc3RyaW5nLC4uLkplLmVyclRvT2JqKG4pfSl9X2FkZENoZWNrKGUpe3JldHVybiBuZXcgVHMoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3MsZV19KX1lbWFpbChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6ImVtYWlsIiwuLi5KZS5lcnJUb09iaihlKX0pfXVybChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6InVybCIsLi4uSmUuZXJyVG9PYmooZSl9KX1lbW9qaShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6ImVtb2ppIiwuLi5KZS5lcnJUb09iaihlKX0pfXV1aWQoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJ1dWlkIiwuLi5KZS5lcnJUb09iaihlKX0pfWN1aWQoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJjdWlkIiwuLi5KZS5lcnJUb09iaihlKX0pfWN1aWQyKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoiY3VpZDIiLC4uLkplLmVyclRvT2JqKGUpfSl9dWxpZChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6InVsaWQiLC4uLkplLmVyclRvT2JqKGUpfSl9aXAoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJpcCIsLi4uSmUuZXJyVG9PYmooZSl9KX1kYXRldGltZShlKXt2YXIgcjtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciP3RoaXMuX2FkZENoZWNrKHtraW5kOiJkYXRldGltZSIscHJlY2lzaW9uOm51bGwsb2Zmc2V0OiExLG1lc3NhZ2U6ZX0pOnRoaXMuX2FkZENoZWNrKHtraW5kOiJkYXRldGltZSIscHJlY2lzaW9uOnR5cGVvZiBlPy5wcmVjaXNpb24+InUiP251bGw6ZT8ucHJlY2lzaW9uLG9mZnNldDoocj1lPy5vZmZzZXQpIT09bnVsbCYmciE9PXZvaWQgMD9yOiExLC4uLkplLmVyclRvT2JqKGU/Lm1lc3NhZ2UpfSl9cmVnZXgoZSxyKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6InJlZ2V4IixyZWdleDplLC4uLkplLmVyclRvT2JqKHIpfSl9aW5jbHVkZXMoZSxyKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6ImluY2x1ZGVzIix2YWx1ZTplLHBvc2l0aW9uOnI/LnBvc2l0aW9uLC4uLkplLmVyclRvT2JqKHI/Lm1lc3NhZ2UpfSl9c3RhcnRzV2l0aChlLHIpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoic3RhcnRzV2l0aCIsdmFsdWU6ZSwuLi5KZS5lcnJUb09iaihyKX0pfWVuZHNXaXRoKGUscil7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJlbmRzV2l0aCIsdmFsdWU6ZSwuLi5KZS5lcnJUb09iaihyKX0pfW1pbihlLHIpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoibWluIix2YWx1ZTplLC4uLkplLmVyclRvT2JqKHIpfSl9bWF4KGUscil7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtYXgiLHZhbHVlOmUsLi4uSmUuZXJyVG9PYmoocil9KX1sZW5ndGgoZSxyKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Imxlbmd0aCIsdmFsdWU6ZSwuLi5KZS5lcnJUb09iaihyKX0pfW5vbmVtcHR5KGUpe3JldHVybiB0aGlzLm1pbigxLEplLmVyclRvT2JqKGUpKX10cmltKCl7cmV0dXJuIG5ldyBUcyh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDoidHJpbSJ9XX0pfXRvTG93ZXJDYXNlKCl7cmV0dXJuIG5ldyBUcyh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDoidG9Mb3dlckNhc2UifV19KX10b1VwcGVyQ2FzZSgpe3JldHVybiBuZXcgVHMoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3Mse2tpbmQ6InRvVXBwZXJDYXNlIn1dfSl9Z2V0IGlzRGF0ZXRpbWUoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5lLmtpbmQ9PT0iZGF0ZXRpbWUiKX1nZXQgaXNFbWFpbCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PmUua2luZD09PSJlbWFpbCIpfWdldCBpc1VSTCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PmUua2luZD09PSJ1cmwiKX1nZXQgaXNFbW9qaSgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PmUua2luZD09PSJlbW9qaSIpfWdldCBpc1VVSUQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5lLmtpbmQ9PT0idXVpZCIpfWdldCBpc0NVSUQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5lLmtpbmQ9PT0iY3VpZCIpfWdldCBpc0NVSUQyKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+ZS5raW5kPT09ImN1aWQyIil9Z2V0IGlzVUxJRCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PmUua2luZD09PSJ1bGlkIil9Z2V0IGlzSVAoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5lLmtpbmQ9PT0iaXAiKX1nZXQgbWluTGVuZ3RoKCl7bGV0IGU9bnVsbDtmb3IoY29uc3QgciBvZiB0aGlzLl9kZWYuY2hlY2tzKXIua2luZD09PSJtaW4iJiYoZT09PW51bGx8fHIudmFsdWU+ZSkmJihlPXIudmFsdWUpO3JldHVybiBlfWdldCBtYXhMZW5ndGgoKXtsZXQgZT1udWxsO2Zvcihjb25zdCByIG9mIHRoaXMuX2RlZi5jaGVja3Mpci5raW5kPT09Im1heCImJihlPT09bnVsbHx8ci52YWx1ZTxlKSYmKGU9ci52YWx1ZSk7cmV0dXJuIGV9fVRzLmNyZWF0ZT10PT57dmFyIGU7cmV0dXJuIG5ldyBUcyh7Y2hlY2tzOltdLHR5cGVOYW1lOm50LlpvZFN0cmluZyxjb2VyY2U6KGU9dD8uY29lcmNlKSE9PW51bGwmJmUhPT12b2lkIDA/ZTohMSwuLi5tdCh0KX0pfTtmdW5jdGlvbiBJaGUodCxlKXtjb25zdCByPSh0LnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXXx8IiIpLmxlbmd0aCxuPShlLnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXXx8IiIpLmxlbmd0aCxzPXI+bj9yOm4saT1wYXJzZUludCh0LnRvRml4ZWQocykucmVwbGFjZSgiLiIsIiIpKSxvPXBhcnNlSW50KGUudG9GaXhlZChzKS5yZXBsYWNlKCIuIiwiIikpO3JldHVybiBpJW8vTWF0aC5wb3coMTAscyl9Y2xhc3MgdmMgZXh0ZW5kcyB5dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5taW49dGhpcy5ndGUsdGhpcy5tYXg9dGhpcy5sdGUsdGhpcy5zdGVwPXRoaXMubXVsdGlwbGVPZn1fcGFyc2UoZSl7aWYodGhpcy5fZGVmLmNvZXJjZSYmKGUuZGF0YT1OdW1iZXIoZS5kYXRhKSksdGhpcy5fZ2V0VHlwZShlKSE9PVVlLm51bWJlcil7Y29uc3QgaT10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4gV2UoaSx7Y29kZTpOZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6VWUubnVtYmVyLHJlY2VpdmVkOmkucGFyc2VkVHlwZX0pLGx0fWxldCBuO2NvbnN0IHM9bmV3IEluO2Zvcihjb25zdCBpIG9mIHRoaXMuX2RlZi5jaGVja3MpaS5raW5kPT09ImludCI/RHQuaXNJbnRlZ2VyKGUuZGF0YSl8fChuPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbiksV2Uobix7Y29kZTpOZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6ImludGVnZXIiLHJlY2VpdmVkOiJmbG9hdCIsbWVzc2FnZTppLm1lc3NhZ2V9KSxzLmRpcnR5KCkpOmkua2luZD09PSJtaW4iPyhpLmluY2x1c2l2ZT9lLmRhdGE8aS52YWx1ZTplLmRhdGE8PWkudmFsdWUpJiYobj10aGlzLl9nZXRPclJldHVybkN0eChlLG4pLFdlKG4se2NvZGU6TmUudG9vX3NtYWxsLG1pbmltdW06aS52YWx1ZSx0eXBlOiJudW1iZXIiLGluY2x1c2l2ZTppLmluY2x1c2l2ZSxleGFjdDohMSxtZXNzYWdlOmkubWVzc2FnZX0pLHMuZGlydHkoKSk6aS5raW5kPT09Im1heCI/KGkuaW5jbHVzaXZlP2UuZGF0YT5pLnZhbHVlOmUuZGF0YT49aS52YWx1ZSkmJihuPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbiksV2Uobix7Y29kZTpOZS50b29fYmlnLG1heGltdW06aS52YWx1ZSx0eXBlOiJudW1iZXIiLGluY2x1c2l2ZTppLmluY2x1c2l2ZSxleGFjdDohMSxtZXNzYWdlOmkubWVzc2FnZX0pLHMuZGlydHkoKSk6aS5raW5kPT09Im11bHRpcGxlT2YiP0loZShlLmRhdGEsaS52YWx1ZSkhPT0wJiYobj10aGlzLl9nZXRPclJldHVybkN0eChlLG4pLFdlKG4se2NvZGU6TmUubm90X211bHRpcGxlX29mLG11bHRpcGxlT2Y6aS52YWx1ZSxtZXNzYWdlOmkubWVzc2FnZX0pLHMuZGlydHkoKSk6aS5raW5kPT09ImZpbml0ZSI/TnVtYmVyLmlzRmluaXRlKGUuZGF0YSl8fChuPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbiksV2Uobix7Y29kZTpOZS5ub3RfZmluaXRlLG1lc3NhZ2U6aS5tZXNzYWdlfSkscy5kaXJ0eSgpKTpEdC5hc3NlcnROZXZlcihpKTtyZXR1cm57c3RhdHVzOnMudmFsdWUsdmFsdWU6ZS5kYXRhfX1ndGUoZSxyKXtyZXR1cm4gdGhpcy5zZXRMaW1pdCgibWluIixlLCEwLEplLnRvU3RyaW5nKHIpKX1ndChlLHIpe3JldHVybiB0aGlzLnNldExpbWl0KCJtaW4iLGUsITEsSmUudG9TdHJpbmcocikpfWx0ZShlLHIpe3JldHVybiB0aGlzLnNldExpbWl0KCJtYXgiLGUsITAsSmUudG9TdHJpbmcocikpfWx0KGUscil7cmV0dXJuIHRoaXMuc2V0TGltaXQoIm1heCIsZSwhMSxKZS50b1N0cmluZyhyKSl9c2V0TGltaXQoZSxyLG4scyl7cmV0dXJuIG5ldyB2Yyh7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyx7a2luZDplLHZhbHVlOnIsaW5jbHVzaXZlOm4sbWVzc2FnZTpKZS50b1N0cmluZyhzKX1dfSl9X2FkZENoZWNrKGUpe3JldHVybiBuZXcgdmMoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3MsZV19KX1pbnQoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJpbnQiLG1lc3NhZ2U6SmUudG9TdHJpbmcoZSl9KX1wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im1pbiIsdmFsdWU6MCxpbmNsdXNpdmU6ITEsbWVzc2FnZTpKZS50b1N0cmluZyhlKX0pfW5lZ2F0aXZlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoibWF4Iix2YWx1ZTowLGluY2x1c2l2ZTohMSxtZXNzYWdlOkplLnRvU3RyaW5nKGUpfSl9bm9ucG9zaXRpdmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtYXgiLHZhbHVlOjAsaW5jbHVzaXZlOiEwLG1lc3NhZ2U6SmUudG9TdHJpbmcoZSl9KX1ub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im1pbiIsdmFsdWU6MCxpbmNsdXNpdmU6ITAsbWVzc2FnZTpKZS50b1N0cmluZyhlKX0pfW11bHRpcGxlT2YoZSxyKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im11bHRpcGxlT2YiLHZhbHVlOmUsbWVzc2FnZTpKZS50b1N0cmluZyhyKX0pfWZpbml0ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6ImZpbml0ZSIsbWVzc2FnZTpKZS50b1N0cmluZyhlKX0pfXNhZmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtaW4iLGluY2x1c2l2ZTohMCx2YWx1ZTpOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixtZXNzYWdlOkplLnRvU3RyaW5nKGUpfSkuX2FkZENoZWNrKHtraW5kOiJtYXgiLGluY2x1c2l2ZTohMCx2YWx1ZTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixtZXNzYWdlOkplLnRvU3RyaW5nKGUpfSl9Z2V0IG1pblZhbHVlKCl7bGV0IGU9bnVsbDtmb3IoY29uc3QgciBvZiB0aGlzLl9kZWYuY2hlY2tzKXIua2luZD09PSJtaW4iJiYoZT09PW51bGx8fHIudmFsdWU+ZSkmJihlPXIudmFsdWUpO3JldHVybiBlfWdldCBtYXhWYWx1ZSgpe2xldCBlPW51bGw7Zm9yKGNvbnN0IHIgb2YgdGhpcy5fZGVmLmNoZWNrcylyLmtpbmQ9PT0ibWF4IiYmKGU9PT1udWxsfHxyLnZhbHVlPGUpJiYoZT1yLnZhbHVlKTtyZXR1cm4gZX1nZXQgaXNJbnQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5lLmtpbmQ9PT0iaW50Inx8ZS5raW5kPT09Im11bHRpcGxlT2YiJiZEdC5pc0ludGVnZXIoZS52YWx1ZSkpfWdldCBpc0Zpbml0ZSgpe2xldCBlPW51bGwscj1udWxsO2Zvcihjb25zdCBuIG9mIHRoaXMuX2RlZi5jaGVja3Mpe2lmKG4ua2luZD09PSJmaW5pdGUifHxuLmtpbmQ9PT0iaW50Inx8bi5raW5kPT09Im11bHRpcGxlT2YiKXJldHVybiEwO24ua2luZD09PSJtaW4iPyhyPT09bnVsbHx8bi52YWx1ZT5yKSYmKHI9bi52YWx1ZSk6bi5raW5kPT09Im1heCImJihlPT09bnVsbHx8bi52YWx1ZTxlKSYmKGU9bi52YWx1ZSl9cmV0dXJuIE51bWJlci5pc0Zpbml0ZShyKSYmTnVtYmVyLmlzRmluaXRlKGUpfX12Yy5jcmVhdGU9dD0+bmV3IHZjKHtjaGVja3M6W10sdHlwZU5hbWU6bnQuWm9kTnVtYmVyLGNvZXJjZTp0Py5jb2VyY2V8fCExLC4uLm10KHQpfSk7Y2xhc3MgRWMgZXh0ZW5kcyB5dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5taW49dGhpcy5ndGUsdGhpcy5tYXg9dGhpcy5sdGV9X3BhcnNlKGUpe2lmKHRoaXMuX2RlZi5jb2VyY2UmJihlLmRhdGE9QmlnSW50KGUuZGF0YSkpLHRoaXMuX2dldFR5cGUoZSkhPT1VZS5iaWdpbnQpe2NvbnN0IGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuIFdlKGkse2NvZGU6TmUuaW52YWxpZF90eXBlLGV4cGVjdGVkOlVlLmJpZ2ludCxyZWNlaXZlZDppLnBhcnNlZFR5cGV9KSxsdH1sZXQgbjtjb25zdCBzPW5ldyBJbjtmb3IoY29uc3QgaSBvZiB0aGlzLl9kZWYuY2hlY2tzKWkua2luZD09PSJtaW4iPyhpLmluY2x1c2l2ZT9lLmRhdGE8aS52YWx1ZTplLmRhdGE8PWkudmFsdWUpJiYobj10aGlzLl9nZXRPclJldHVybkN0eChlLG4pLFdlKG4se2NvZGU6TmUudG9vX3NtYWxsLHR5cGU6ImJpZ2ludCIsbWluaW11bTppLnZhbHVlLGluY2x1c2l2ZTppLmluY2x1c2l2ZSxtZXNzYWdlOmkubWVzc2FnZX0pLHMuZGlydHkoKSk6aS5raW5kPT09Im1heCI/KGkuaW5jbHVzaXZlP2UuZGF0YT5pLnZhbHVlOmUuZGF0YT49aS52YWx1ZSkmJihuPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbiksV2Uobix7Y29kZTpOZS50b29fYmlnLHR5cGU6ImJpZ2ludCIsbWF4aW11bTppLnZhbHVlLGluY2x1c2l2ZTppLmluY2x1c2l2ZSxtZXNzYWdlOmkubWVzc2FnZX0pLHMuZGlydHkoKSk6aS5raW5kPT09Im11bHRpcGxlT2YiP2UuZGF0YSVpLnZhbHVlIT09QmlnSW50KDApJiYobj10aGlzLl9nZXRPclJldHVybkN0eChlLG4pLFdlKG4se2NvZGU6TmUubm90X211bHRpcGxlX29mLG11bHRpcGxlT2Y6aS52YWx1ZSxtZXNzYWdlOmkubWVzc2FnZX0pLHMuZGlydHkoKSk6RHQuYXNzZXJ0TmV2ZXIoaSk7cmV0dXJue3N0YXR1czpzLnZhbHVlLHZhbHVlOmUuZGF0YX19Z3RlKGUscil7cmV0dXJuIHRoaXMuc2V0TGltaXQoIm1pbiIsZSwhMCxKZS50b1N0cmluZyhyKSl9Z3QoZSxyKXtyZXR1cm4gdGhpcy5zZXRMaW1pdCgibWluIixlLCExLEplLnRvU3RyaW5nKHIpKX1sdGUoZSxyKXtyZXR1cm4gdGhpcy5zZXRMaW1pdCgibWF4IixlLCEwLEplLnRvU3RyaW5nKHIpKX1sdChlLHIpe3JldHVybiB0aGlzLnNldExpbWl0KCJtYXgiLGUsITEsSmUudG9TdHJpbmcocikpfXNldExpbWl0KGUscixuLHMpe3JldHVybiBuZXcgRWMoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3Mse2tpbmQ6ZSx2YWx1ZTpyLGluY2x1c2l2ZTpuLG1lc3NhZ2U6SmUudG9TdHJpbmcocyl9XX0pfV9hZGRDaGVjayhlKXtyZXR1cm4gbmV3IEVjKHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLGVdfSl9cG9zaXRpdmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtaW4iLHZhbHVlOkJpZ0ludCgwKSxpbmNsdXNpdmU6ITEsbWVzc2FnZTpKZS50b1N0cmluZyhlKX0pfW5lZ2F0aXZlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDoibWF4Iix2YWx1ZTpCaWdJbnQoMCksaW5jbHVzaXZlOiExLG1lc3NhZ2U6SmUudG9TdHJpbmcoZSl9KX1ub25wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im1heCIsdmFsdWU6QmlnSW50KDApLGluY2x1c2l2ZTohMCxtZXNzYWdlOkplLnRvU3RyaW5nKGUpfSl9bm9ubmVnYXRpdmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtaW4iLHZhbHVlOkJpZ0ludCgwKSxpbmNsdXNpdmU6ITAsbWVzc2FnZTpKZS50b1N0cmluZyhlKX0pfW11bHRpcGxlT2YoZSxyKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im11bHRpcGxlT2YiLHZhbHVlOmUsbWVzc2FnZTpKZS50b1N0cmluZyhyKX0pfWdldCBtaW5WYWx1ZSgpe2xldCBlPW51bGw7Zm9yKGNvbnN0IHIgb2YgdGhpcy5fZGVmLmNoZWNrcylyLmtpbmQ9PT0ibWluIiYmKGU9PT1udWxsfHxyLnZhbHVlPmUpJiYoZT1yLnZhbHVlKTtyZXR1cm4gZX1nZXQgbWF4VmFsdWUoKXtsZXQgZT1udWxsO2Zvcihjb25zdCByIG9mIHRoaXMuX2RlZi5jaGVja3Mpci5raW5kPT09Im1heCImJihlPT09bnVsbHx8ci52YWx1ZTxlKSYmKGU9ci52YWx1ZSk7cmV0dXJuIGV9fUVjLmNyZWF0ZT10PT57dmFyIGU7cmV0dXJuIG5ldyBFYyh7Y2hlY2tzOltdLHR5cGVOYW1lOm50LlpvZEJpZ0ludCxjb2VyY2U6KGU9dD8uY29lcmNlKSE9PW51bGwmJmUhPT12b2lkIDA/ZTohMSwuLi5tdCh0KX0pfTtjbGFzcyBlbSBleHRlbmRzIHl0e19wYXJzZShlKXtpZih0aGlzLl9kZWYuY29lcmNlJiYoZS5kYXRhPSEhZS5kYXRhKSx0aGlzLl9nZXRUeXBlKGUpIT09VWUuYm9vbGVhbil7Y29uc3Qgbj10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4gV2Uobix7Y29kZTpOZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6VWUuYm9vbGVhbixyZWNlaXZlZDpuLnBhcnNlZFR5cGV9KSxsdH1yZXR1cm4gTG4oZS5kYXRhKX19ZW0uY3JlYXRlPXQ9Pm5ldyBlbSh7dHlwZU5hbWU6bnQuWm9kQm9vbGVhbixjb2VyY2U6dD8uY29lcmNlfHwhMSwuLi5tdCh0KX0pO2NsYXNzIGt1IGV4dGVuZHMgeXR7X3BhcnNlKGUpe2lmKHRoaXMuX2RlZi5jb2VyY2UmJihlLmRhdGE9bmV3IERhdGUoZS5kYXRhKSksdGhpcy5fZ2V0VHlwZShlKSE9PVVlLmRhdGUpe2NvbnN0IGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuIFdlKGkse2NvZGU6TmUuaW52YWxpZF90eXBlLGV4cGVjdGVkOlVlLmRhdGUscmVjZWl2ZWQ6aS5wYXJzZWRUeXBlfSksbHR9aWYoaXNOYU4oZS5kYXRhLmdldFRpbWUoKSkpe2NvbnN0IGk9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuIFdlKGkse2NvZGU6TmUuaW52YWxpZF9kYXRlfSksbHR9Y29uc3Qgbj1uZXcgSW47bGV0IHM7Zm9yKGNvbnN0IGkgb2YgdGhpcy5fZGVmLmNoZWNrcylpLmtpbmQ9PT0ibWluIj9lLmRhdGEuZ2V0VGltZSgpPGkudmFsdWUmJihzPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUscyksV2Uocyx7Y29kZTpOZS50b29fc21hbGwsbWVzc2FnZTppLm1lc3NhZ2UsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1pbmltdW06aS52YWx1ZSx0eXBlOiJkYXRlIn0pLG4uZGlydHkoKSk6aS5raW5kPT09Im1heCI/ZS5kYXRhLmdldFRpbWUoKT5pLnZhbHVlJiYocz10aGlzLl9nZXRPclJldHVybkN0eChlLHMpLFdlKHMse2NvZGU6TmUudG9vX2JpZyxtZXNzYWdlOmkubWVzc2FnZSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWF4aW11bTppLnZhbHVlLHR5cGU6ImRhdGUifSksbi5kaXJ0eSgpKTpEdC5hc3NlcnROZXZlcihpKTtyZXR1cm57c3RhdHVzOm4udmFsdWUsdmFsdWU6bmV3IERhdGUoZS5kYXRhLmdldFRpbWUoKSl9fV9hZGRDaGVjayhlKXtyZXR1cm4gbmV3IGt1KHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLGVdfSl9bWluKGUscil7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOiJtaW4iLHZhbHVlOmUuZ2V0VGltZSgpLG1lc3NhZ2U6SmUudG9TdHJpbmcocil9KX1tYXgoZSxyKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6Im1heCIsdmFsdWU6ZS5nZXRUaW1lKCksbWVzc2FnZTpKZS50b1N0cmluZyhyKX0pfWdldCBtaW5EYXRlKCl7bGV0IGU9bnVsbDtmb3IoY29uc3QgciBvZiB0aGlzLl9kZWYuY2hlY2tzKXIua2luZD09PSJtaW4iJiYoZT09PW51bGx8fHIudmFsdWU+ZSkmJihlPXIudmFsdWUpO3JldHVybiBlIT1udWxsP25ldyBEYXRlKGUpOm51bGx9Z2V0IG1heERhdGUoKXtsZXQgZT1udWxsO2Zvcihjb25zdCByIG9mIHRoaXMuX2RlZi5jaGVja3Mpci5raW5kPT09Im1heCImJihlPT09bnVsbHx8ci52YWx1ZTxlKSYmKGU9ci52YWx1ZSk7cmV0dXJuIGUhPW51bGw/bmV3IERhdGUoZSk6bnVsbH19a3UuY3JlYXRlPXQ9Pm5ldyBrdSh7Y2hlY2tzOltdLGNvZXJjZTp0Py5jb2VyY2V8fCExLHR5cGVOYW1lOm50LlpvZERhdGUsLi4ubXQodCl9KTtjbGFzcyBfYiBleHRlbmRzIHl0e19wYXJzZShlKXtpZih0aGlzLl9nZXRUeXBlKGUpIT09VWUuc3ltYm9sKXtjb25zdCBuPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybiBXZShuLHtjb2RlOk5lLmludmFsaWRfdHlwZSxleHBlY3RlZDpVZS5zeW1ib2wscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksbHR9cmV0dXJuIExuKGUuZGF0YSl9fV9iLmNyZWF0ZT10PT5uZXcgX2Ioe3R5cGVOYW1lOm50LlpvZFN5bWJvbCwuLi5tdCh0KX0pO2NsYXNzIHRtIGV4dGVuZHMgeXR7X3BhcnNlKGUpe2lmKHRoaXMuX2dldFR5cGUoZSkhPT1VZS51bmRlZmluZWQpe2NvbnN0IG49dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuIFdlKG4se2NvZGU6TmUuaW52YWxpZF90eXBlLGV4cGVjdGVkOlVlLnVuZGVmaW5lZCxyZWNlaXZlZDpuLnBhcnNlZFR5cGV9KSxsdH1yZXR1cm4gTG4oZS5kYXRhKX19dG0uY3JlYXRlPXQ9Pm5ldyB0bSh7dHlwZU5hbWU6bnQuWm9kVW5kZWZpbmVkLC4uLm10KHQpfSk7Y2xhc3Mgcm0gZXh0ZW5kcyB5dHtfcGFyc2UoZSl7aWYodGhpcy5fZ2V0VHlwZShlKSE9PVVlLm51bGwpe2NvbnN0IG49dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuIFdlKG4se2NvZGU6TmUuaW52YWxpZF90eXBlLGV4cGVjdGVkOlVlLm51bGwscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksbHR9cmV0dXJuIExuKGUuZGF0YSl9fXJtLmNyZWF0ZT10PT5uZXcgcm0oe3R5cGVOYW1lOm50LlpvZE51bGwsLi4ubXQodCl9KTtjbGFzcyBOaCBleHRlbmRzIHl0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9hbnk9ITB9X3BhcnNlKGUpe3JldHVybiBMbihlLmRhdGEpfX1OaC5jcmVhdGU9dD0+bmV3IE5oKHt0eXBlTmFtZTpudC5ab2RBbnksLi4ubXQodCl9KTtjbGFzcyBsdSBleHRlbmRzIHl0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl91bmtub3duPSEwfV9wYXJzZShlKXtyZXR1cm4gTG4oZS5kYXRhKX19bHUuY3JlYXRlPXQ9Pm5ldyBsdSh7dHlwZU5hbWU6bnQuWm9kVW5rbm93biwuLi5tdCh0KX0pO2NsYXNzIHdhIGV4dGVuZHMgeXR7X3BhcnNlKGUpe2NvbnN0IHI9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuIFdlKHIse2NvZGU6TmUuaW52YWxpZF90eXBlLGV4cGVjdGVkOlVlLm5ldmVyLHJlY2VpdmVkOnIucGFyc2VkVHlwZX0pLGx0fX13YS5jcmVhdGU9dD0+bmV3IHdhKHt0eXBlTmFtZTpudC5ab2ROZXZlciwuLi5tdCh0KX0pO2NsYXNzIGtiIGV4dGVuZHMgeXR7X3BhcnNlKGUpe2lmKHRoaXMuX2dldFR5cGUoZSkhPT1VZS51bmRlZmluZWQpe2NvbnN0IG49dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuIFdlKG4se2NvZGU6TmUuaW52YWxpZF90eXBlLGV4cGVjdGVkOlVlLnZvaWQscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksbHR9cmV0dXJuIExuKGUuZGF0YSl9fWtiLmNyZWF0ZT10PT5uZXcga2Ioe3R5cGVOYW1lOm50LlpvZFZvaWQsLi4ubXQodCl9KTtjbGFzcyBOcyBleHRlbmRzIHl0e19wYXJzZShlKXtjb25zdHtjdHg6cixzdGF0dXM6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpLHM9dGhpcy5fZGVmO2lmKHIucGFyc2VkVHlwZSE9PVVlLmFycmF5KXJldHVybiBXZShyLHtjb2RlOk5lLmludmFsaWRfdHlwZSxleHBlY3RlZDpVZS5hcnJheSxyZWNlaXZlZDpyLnBhcnNlZFR5cGV9KSxsdDtpZihzLmV4YWN0TGVuZ3RoIT09bnVsbCl7Y29uc3Qgbz1yLmRhdGEubGVuZ3RoPnMuZXhhY3RMZW5ndGgudmFsdWUsYT1yLmRhdGEubGVuZ3RoPHMuZXhhY3RMZW5ndGgudmFsdWU7KG98fGEpJiYoV2Uocix7Y29kZTpvP05lLnRvb19iaWc6TmUudG9vX3NtYWxsLG1pbmltdW06YT9zLmV4YWN0TGVuZ3RoLnZhbHVlOnZvaWQgMCxtYXhpbXVtOm8/cy5leGFjdExlbmd0aC52YWx1ZTp2b2lkIDAsdHlwZToiYXJyYXkiLGluY2x1c2l2ZTohMCxleGFjdDohMCxtZXNzYWdlOnMuZXhhY3RMZW5ndGgubWVzc2FnZX0pLG4uZGlydHkoKSl9aWYocy5taW5MZW5ndGghPT1udWxsJiZyLmRhdGEubGVuZ3RoPHMubWluTGVuZ3RoLnZhbHVlJiYoV2Uocix7Y29kZTpOZS50b29fc21hbGwsbWluaW11bTpzLm1pbkxlbmd0aC52YWx1ZSx0eXBlOiJhcnJheSIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6cy5taW5MZW5ndGgubWVzc2FnZX0pLG4uZGlydHkoKSkscy5tYXhMZW5ndGghPT1udWxsJiZyLmRhdGEubGVuZ3RoPnMubWF4TGVuZ3RoLnZhbHVlJiYoV2Uocix7Y29kZTpOZS50b29fYmlnLG1heGltdW06cy5tYXhMZW5ndGgudmFsdWUsdHlwZToiYXJyYXkiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOnMubWF4TGVuZ3RoLm1lc3NhZ2V9KSxuLmRpcnR5KCkpLHIuY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLmFsbChbLi4uci5kYXRhXS5tYXAoKG8sYSk9PnMudHlwZS5fcGFyc2VBc3luYyhuZXcgeG8ocixvLHIucGF0aCxhKSkpKS50aGVuKG89PkluLm1lcmdlQXJyYXkobixvKSk7Y29uc3QgaT1bLi4uci5kYXRhXS5tYXAoKG8sYSk9PnMudHlwZS5fcGFyc2VTeW5jKG5ldyB4byhyLG8sci5wYXRoLGEpKSk7cmV0dXJuIEluLm1lcmdlQXJyYXkobixpKX1nZXQgZWxlbWVudCgpe3JldHVybiB0aGlzLl9kZWYudHlwZX1taW4oZSxyKXtyZXR1cm4gbmV3IE5zKHsuLi50aGlzLl9kZWYsbWluTGVuZ3RoOnt2YWx1ZTplLG1lc3NhZ2U6SmUudG9TdHJpbmcocil9fSl9bWF4KGUscil7cmV0dXJuIG5ldyBOcyh7Li4udGhpcy5fZGVmLG1heExlbmd0aDp7dmFsdWU6ZSxtZXNzYWdlOkplLnRvU3RyaW5nKHIpfX0pfWxlbmd0aChlLHIpe3JldHVybiBuZXcgTnMoey4uLnRoaXMuX2RlZixleGFjdExlbmd0aDp7dmFsdWU6ZSxtZXNzYWdlOkplLnRvU3RyaW5nKHIpfX0pfW5vbmVtcHR5KGUpe3JldHVybiB0aGlzLm1pbigxLGUpfX1Ocy5jcmVhdGU9KHQsZSk9Pm5ldyBOcyh7dHlwZTp0LG1pbkxlbmd0aDpudWxsLG1heExlbmd0aDpudWxsLGV4YWN0TGVuZ3RoOm51bGwsdHlwZU5hbWU6bnQuWm9kQXJyYXksLi4ubXQoZSl9KTtmdW5jdGlvbiBYZCh0KXtpZih0IGluc3RhbmNlb2YgUnIpe2NvbnN0IGU9e307Zm9yKGNvbnN0IHIgaW4gdC5zaGFwZSl7Y29uc3Qgbj10LnNoYXBlW3JdO2Vbcl09aGEuY3JlYXRlKFhkKG4pKX1yZXR1cm4gbmV3IFJyKHsuLi50Ll9kZWYsc2hhcGU6KCk9PmV9KX1lbHNlIHJldHVybiB0IGluc3RhbmNlb2YgTnM/bmV3IE5zKHsuLi50Ll9kZWYsdHlwZTpYZCh0LmVsZW1lbnQpfSk6dCBpbnN0YW5jZW9mIGhhP2hhLmNyZWF0ZShYZCh0LnVud3JhcCgpKSk6dCBpbnN0YW5jZW9mIEF1P0F1LmNyZWF0ZShYZCh0LnVud3JhcCgpKSk6dCBpbnN0YW5jZW9mIF9vP19vLmNyZWF0ZSh0Lml0ZW1zLm1hcChlPT5YZChlKSkpOnR9Y2xhc3MgUnIgZXh0ZW5kcyB5dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fY2FjaGVkPW51bGwsdGhpcy5ub25zdHJpY3Q9dGhpcy5wYXNzdGhyb3VnaCx0aGlzLmF1Z21lbnQ9dGhpcy5leHRlbmR9X2dldENhY2hlZCgpe2lmKHRoaXMuX2NhY2hlZCE9PW51bGwpcmV0dXJuIHRoaXMuX2NhY2hlZDtjb25zdCBlPXRoaXMuX2RlZi5zaGFwZSgpLHI9RHQub2JqZWN0S2V5cyhlKTtyZXR1cm4gdGhpcy5fY2FjaGVkPXtzaGFwZTplLGtleXM6cn19X3BhcnNlKGUpe2lmKHRoaXMuX2dldFR5cGUoZSkhPT1VZS5vYmplY3Qpe2NvbnN0IGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuIFdlKGwse2NvZGU6TmUuaW52YWxpZF90eXBlLGV4cGVjdGVkOlVlLm9iamVjdCxyZWNlaXZlZDpsLnBhcnNlZFR5cGV9KSxsdH1jb25zdHtzdGF0dXM6bixjdHg6c309dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpLHtzaGFwZTppLGtleXM6b309dGhpcy5fZ2V0Q2FjaGVkKCksYT1bXTtpZighKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIHdhJiZ0aGlzLl9kZWYudW5rbm93bktleXM9PT0ic3RyaXAiKSlmb3IoY29uc3QgbCBpbiBzLmRhdGEpby5pbmNsdWRlcyhsKXx8YS5wdXNoKGwpO2NvbnN0IGM9W107Zm9yKGNvbnN0IGwgb2Ygbyl7Y29uc3QgZD1pW2xdLHU9cy5kYXRhW2xdO2MucHVzaCh7a2V5OntzdGF0dXM6InZhbGlkIix2YWx1ZTpsfSx2YWx1ZTpkLl9wYXJzZShuZXcgeG8ocyx1LHMucGF0aCxsKSksYWx3YXlzU2V0OmwgaW4gcy5kYXRhfSl9aWYodGhpcy5fZGVmLmNhdGNoYWxsIGluc3RhbmNlb2Ygd2Epe2NvbnN0IGw9dGhpcy5fZGVmLnVua25vd25LZXlzO2lmKGw9PT0icGFzc3Rocm91Z2giKWZvcihjb25zdCBkIG9mIGEpYy5wdXNoKHtrZXk6e3N0YXR1czoidmFsaWQiLHZhbHVlOmR9LHZhbHVlOntzdGF0dXM6InZhbGlkIix2YWx1ZTpzLmRhdGFbZF19fSk7ZWxzZSBpZihsPT09InN0cmljdCIpYS5sZW5ndGg+MCYmKFdlKHMse2NvZGU6TmUudW5yZWNvZ25pemVkX2tleXMsa2V5czphfSksbi5kaXJ0eSgpKTtlbHNlIGlmKGwhPT0ic3RyaXAiKXRocm93IG5ldyBFcnJvcigiSW50ZXJuYWwgWm9kT2JqZWN0IGVycm9yOiBpbnZhbGlkIHVua25vd25LZXlzIHZhbHVlLiIpfWVsc2V7Y29uc3QgbD10aGlzLl9kZWYuY2F0Y2hhbGw7Zm9yKGNvbnN0IGQgb2YgYSl7Y29uc3QgdT1zLmRhdGFbZF07Yy5wdXNoKHtrZXk6e3N0YXR1czoidmFsaWQiLHZhbHVlOmR9LHZhbHVlOmwuX3BhcnNlKG5ldyB4byhzLHUscy5wYXRoLGQpKSxhbHdheXNTZXQ6ZCBpbiBzLmRhdGF9KX19cmV0dXJuIHMuY29tbW9uLmFzeW5jP1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMoKT0+e2NvbnN0IGw9W107Zm9yKGNvbnN0IGQgb2YgYyl7Y29uc3QgdT1hd2FpdCBkLmtleTtsLnB1c2goe2tleTp1LHZhbHVlOmF3YWl0IGQudmFsdWUsYWx3YXlzU2V0OmQuYWx3YXlzU2V0fSl9cmV0dXJuIGx9KS50aGVuKGw9PkluLm1lcmdlT2JqZWN0U3luYyhuLGwpKTpJbi5tZXJnZU9iamVjdFN5bmMobixjKX1nZXQgc2hhcGUoKXtyZXR1cm4gdGhpcy5fZGVmLnNoYXBlKCl9c3RyaWN0KGUpe3JldHVybiBKZS5lcnJUb09iaixuZXcgUnIoey4uLnRoaXMuX2RlZix1bmtub3duS2V5czoic3RyaWN0IiwuLi5lIT09dm9pZCAwP3tlcnJvck1hcDoocixuKT0+e3ZhciBzLGksbyxhO2NvbnN0IGM9KG89KGk9KHM9dGhpcy5fZGVmKS5lcnJvck1hcCk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmNhbGwocyxyLG4pLm1lc3NhZ2UpIT09bnVsbCYmbyE9PXZvaWQgMD9vOm4uZGVmYXVsdEVycm9yO3JldHVybiByLmNvZGU9PT0idW5yZWNvZ25pemVkX2tleXMiP3ttZXNzYWdlOihhPUplLmVyclRvT2JqKGUpLm1lc3NhZ2UpIT09bnVsbCYmYSE9PXZvaWQgMD9hOmN9OnttZXNzYWdlOmN9fX06e319KX1zdHJpcCgpe3JldHVybiBuZXcgUnIoey4uLnRoaXMuX2RlZix1bmtub3duS2V5czoic3RyaXAifSl9cGFzc3Rocm91Z2goKXtyZXR1cm4gbmV3IFJyKHsuLi50aGlzLl9kZWYsdW5rbm93bktleXM6InBhc3N0aHJvdWdoIn0pfWV4dGVuZChlKXtyZXR1cm4gbmV3IFJyKHsuLi50aGlzLl9kZWYsc2hhcGU6KCk9Pih7Li4udGhpcy5fZGVmLnNoYXBlKCksLi4uZX0pfSl9bWVyZ2UoZSl7cmV0dXJuIG5ldyBScih7dW5rbm93bktleXM6ZS5fZGVmLnVua25vd25LZXlzLGNhdGNoYWxsOmUuX2RlZi5jYXRjaGFsbCxzaGFwZTooKT0+KHsuLi50aGlzLl9kZWYuc2hhcGUoKSwuLi5lLl9kZWYuc2hhcGUoKX0pLHR5cGVOYW1lOm50LlpvZE9iamVjdH0pfXNldEtleShlLHIpe3JldHVybiB0aGlzLmF1Z21lbnQoe1tlXTpyfSl9Y2F0Y2hhbGwoZSl7cmV0dXJuIG5ldyBScih7Li4udGhpcy5fZGVmLGNhdGNoYWxsOmV9KX1waWNrKGUpe2NvbnN0IHI9e307cmV0dXJuIER0Lm9iamVjdEtleXMoZSkuZm9yRWFjaChuPT57ZVtuXSYmdGhpcy5zaGFwZVtuXSYmKHJbbl09dGhpcy5zaGFwZVtuXSl9KSxuZXcgUnIoey4uLnRoaXMuX2RlZixzaGFwZTooKT0+cn0pfW9taXQoZSl7Y29uc3Qgcj17fTtyZXR1cm4gRHQub2JqZWN0S2V5cyh0aGlzLnNoYXBlKS5mb3JFYWNoKG49PntlW25dfHwocltuXT10aGlzLnNoYXBlW25dKX0pLG5ldyBScih7Li4udGhpcy5fZGVmLHNoYXBlOigpPT5yfSl9ZGVlcFBhcnRpYWwoKXtyZXR1cm4gWGQodGhpcyl9cGFydGlhbChlKXtjb25zdCByPXt9O3JldHVybiBEdC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpLmZvckVhY2gobj0+e2NvbnN0IHM9dGhpcy5zaGFwZVtuXTtlJiYhZVtuXT9yW25dPXM6cltuXT1zLm9wdGlvbmFsKCl9KSxuZXcgUnIoey4uLnRoaXMuX2RlZixzaGFwZTooKT0+cn0pfXJlcXVpcmVkKGUpe2NvbnN0IHI9e307cmV0dXJuIER0Lm9iamVjdEtleXModGhpcy5zaGFwZSkuZm9yRWFjaChuPT57aWYoZSYmIWVbbl0pcltuXT10aGlzLnNoYXBlW25dO2Vsc2V7bGV0IGk9dGhpcy5zaGFwZVtuXTtmb3IoO2kgaW5zdGFuY2VvZiBoYTspaT1pLl9kZWYuaW5uZXJUeXBlO3Jbbl09aX19KSxuZXcgUnIoey4uLnRoaXMuX2RlZixzaGFwZTooKT0+cn0pfWtleW9mKCl7cmV0dXJuIF9CKER0Lm9iamVjdEtleXModGhpcy5zaGFwZSkpfX1Sci5jcmVhdGU9KHQsZSk9Pm5ldyBScih7c2hhcGU6KCk9PnQsdW5rbm93bktleXM6InN0cmlwIixjYXRjaGFsbDp3YS5jcmVhdGUoKSx0eXBlTmFtZTpudC5ab2RPYmplY3QsLi4ubXQoZSl9KTtSci5zdHJpY3RDcmVhdGU9KHQsZSk9Pm5ldyBScih7c2hhcGU6KCk9PnQsdW5rbm93bktleXM6InN0cmljdCIsY2F0Y2hhbGw6d2EuY3JlYXRlKCksdHlwZU5hbWU6bnQuWm9kT2JqZWN0LC4uLm10KGUpfSk7UnIubGF6eWNyZWF0ZT0odCxlKT0+bmV3IFJyKHtzaGFwZTp0LHVua25vd25LZXlzOiJzdHJpcCIsY2F0Y2hhbGw6d2EuY3JlYXRlKCksdHlwZU5hbWU6bnQuWm9kT2JqZWN0LC4uLm10KGUpfSk7Y2xhc3Mgbm0gZXh0ZW5kcyB5dHtfcGFyc2UoZSl7Y29uc3R7Y3R4OnJ9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKSxuPXRoaXMuX2RlZi5vcHRpb25zO2Z1bmN0aW9uIHMoaSl7Zm9yKGNvbnN0IGEgb2YgaSlpZihhLnJlc3VsdC5zdGF0dXM9PT0idmFsaWQiKXJldHVybiBhLnJlc3VsdDtmb3IoY29uc3QgYSBvZiBpKWlmKGEucmVzdWx0LnN0YXR1cz09PSJkaXJ0eSIpcmV0dXJuIHIuY29tbW9uLmlzc3Vlcy5wdXNoKC4uLmEuY3R4LmNvbW1vbi5pc3N1ZXMpLGEucmVzdWx0O2NvbnN0IG89aS5tYXAoYT0+bmV3IFJzKGEuY3R4LmNvbW1vbi5pc3N1ZXMpKTtyZXR1cm4gV2Uocix7Y29kZTpOZS5pbnZhbGlkX3VuaW9uLHVuaW9uRXJyb3JzOm99KSxsdH1pZihyLmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5hbGwobi5tYXAoYXN5bmMgaT0+e2NvbnN0IG89ey4uLnIsY29tbW9uOnsuLi5yLmNvbW1vbixpc3N1ZXM6W119LHBhcmVudDpudWxsfTtyZXR1cm57cmVzdWx0OmF3YWl0IGkuX3BhcnNlQXN5bmMoe2RhdGE6ci5kYXRhLHBhdGg6ci5wYXRoLHBhcmVudDpvfSksY3R4Om99fSkpLnRoZW4ocyk7e2xldCBpO2NvbnN0IG89W107Zm9yKGNvbnN0IGMgb2Ygbil7Y29uc3QgbD17Li4ucixjb21tb246ey4uLnIuY29tbW9uLGlzc3VlczpbXX0scGFyZW50Om51bGx9LGQ9Yy5fcGFyc2VTeW5jKHtkYXRhOnIuZGF0YSxwYXRoOnIucGF0aCxwYXJlbnQ6bH0pO2lmKGQuc3RhdHVzPT09InZhbGlkIilyZXR1cm4gZDtkLnN0YXR1cz09PSJkaXJ0eSImJiFpJiYoaT17cmVzdWx0OmQsY3R4Omx9KSxsLmNvbW1vbi5pc3N1ZXMubGVuZ3RoJiZvLnB1c2gobC5jb21tb24uaXNzdWVzKX1pZihpKXJldHVybiByLmNvbW1vbi5pc3N1ZXMucHVzaCguLi5pLmN0eC5jb21tb24uaXNzdWVzKSxpLnJlc3VsdDtjb25zdCBhPW8ubWFwKGM9Pm5ldyBScyhjKSk7cmV0dXJuIFdlKHIse2NvZGU6TmUuaW52YWxpZF91bmlvbix1bmlvbkVycm9yczphfSksbHR9fWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zfX1ubS5jcmVhdGU9KHQsZSk9Pm5ldyBubSh7b3B0aW9uczp0LHR5cGVOYW1lOm50LlpvZFVuaW9uLC4uLm10KGUpfSk7Y29uc3QgVnc9dD0+dCBpbnN0YW5jZW9mIG9tP1Z3KHQuc2NoZW1hKTp0IGluc3RhbmNlb2YgT3M/VncodC5pbm5lclR5cGUoKSk6dCBpbnN0YW5jZW9mIGFtP1t0LnZhbHVlXTp0IGluc3RhbmNlb2YgQ2M/dC5vcHRpb25zOnQgaW5zdGFuY2VvZiBjbT9PYmplY3Qua2V5cyh0LmVudW0pOnQgaW5zdGFuY2VvZiBsbT9Wdyh0Ll9kZWYuaW5uZXJUeXBlKTp0IGluc3RhbmNlb2YgdG0/W3ZvaWQgMF06dCBpbnN0YW5jZW9mIHJtP1tudWxsXTpudWxsO2NsYXNzIFl5IGV4dGVuZHMgeXR7X3BhcnNlKGUpe2NvbnN0e2N0eDpyfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYoci5wYXJzZWRUeXBlIT09VWUub2JqZWN0KXJldHVybiBXZShyLHtjb2RlOk5lLmludmFsaWRfdHlwZSxleHBlY3RlZDpVZS5vYmplY3QscmVjZWl2ZWQ6ci5wYXJzZWRUeXBlfSksbHQ7Y29uc3Qgbj10aGlzLmRpc2NyaW1pbmF0b3Iscz1yLmRhdGFbbl0saT10aGlzLm9wdGlvbnNNYXAuZ2V0KHMpO3JldHVybiBpP3IuY29tbW9uLmFzeW5jP2kuX3BhcnNlQXN5bmMoe2RhdGE6ci5kYXRhLHBhdGg6ci5wYXRoLHBhcmVudDpyfSk6aS5fcGFyc2VTeW5jKHtkYXRhOnIuZGF0YSxwYXRoOnIucGF0aCxwYXJlbnQ6cn0pOihXZShyLHtjb2RlOk5lLmludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvcixvcHRpb25zOkFycmF5LmZyb20odGhpcy5vcHRpb25zTWFwLmtleXMoKSkscGF0aDpbbl19KSxsdCl9Z2V0IGRpc2NyaW1pbmF0b3IoKXtyZXR1cm4gdGhpcy5fZGVmLmRpc2NyaW1pbmF0b3J9Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fZGVmLm9wdGlvbnN9Z2V0IG9wdGlvbnNNYXAoKXtyZXR1cm4gdGhpcy5fZGVmLm9wdGlvbnNNYXB9c3RhdGljIGNyZWF0ZShlLHIsbil7Y29uc3Qgcz1uZXcgTWFwO2Zvcihjb25zdCBpIG9mIHIpe2NvbnN0IG89VncoaS5zaGFwZVtlXSk7aWYoIW8pdGhyb3cgbmV3IEVycm9yKGBBIGRpc2NyaW1pbmF0b3IgdmFsdWUgZm9yIGtleSBcYCR7ZX1cYCBjb3VsZCBub3QgYmUgZXh0cmFjdGVkIGZyb20gYWxsIHNjaGVtYSBvcHRpb25zYCk7Zm9yKGNvbnN0IGEgb2Ygbyl7aWYocy5oYXMoYSkpdGhyb3cgbmV3IEVycm9yKGBEaXNjcmltaW5hdG9yIHByb3BlcnR5ICR7U3RyaW5nKGUpfSBoYXMgZHVwbGljYXRlIHZhbHVlICR7U3RyaW5nKGEpfWApO3Muc2V0KGEsaSl9fXJldHVybiBuZXcgWXkoe3R5cGVOYW1lOm50LlpvZERpc2NyaW1pbmF0ZWRVbmlvbixkaXNjcmltaW5hdG9yOmUsb3B0aW9uczpyLG9wdGlvbnNNYXA6cywuLi5tdChuKX0pfX1mdW5jdGlvbiBWeCh0LGUpe2NvbnN0IHI9b2ModCksbj1vYyhlKTtpZih0PT09ZSlyZXR1cm57dmFsaWQ6ITAsZGF0YTp0fTtpZihyPT09VWUub2JqZWN0JiZuPT09VWUub2JqZWN0KXtjb25zdCBzPUR0Lm9iamVjdEtleXMoZSksaT1EdC5vYmplY3RLZXlzKHQpLmZpbHRlcihhPT5zLmluZGV4T2YoYSkhPT0tMSksbz17Li4udCwuLi5lfTtmb3IoY29uc3QgYSBvZiBpKXtjb25zdCBjPVZ4KHRbYV0sZVthXSk7aWYoIWMudmFsaWQpcmV0dXJue3ZhbGlkOiExfTtvW2FdPWMuZGF0YX1yZXR1cm57dmFsaWQ6ITAsZGF0YTpvfX1lbHNlIGlmKHI9PT1VZS5hcnJheSYmbj09PVVlLmFycmF5KXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybnt2YWxpZDohMX07Y29uc3Qgcz1bXTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3Qgbz10W2ldLGE9ZVtpXSxjPVZ4KG8sYSk7aWYoIWMudmFsaWQpcmV0dXJue3ZhbGlkOiExfTtzLnB1c2goYy5kYXRhKX1yZXR1cm57dmFsaWQ6ITAsZGF0YTpzfX1lbHNlIHJldHVybiByPT09VWUuZGF0ZSYmbj09PVVlLmRhdGUmJit0PT0rZT97dmFsaWQ6ITAsZGF0YTp0fTp7dmFsaWQ6ITF9fWNsYXNzIGltIGV4dGVuZHMgeXR7X3BhcnNlKGUpe2NvbnN0e3N0YXR1czpyLGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSkscz0oaSxvKT0+e2lmKEh4KGkpfHxIeChvKSlyZXR1cm4gbHQ7Y29uc3QgYT1WeChpLnZhbHVlLG8udmFsdWUpO3JldHVybiBhLnZhbGlkPygocXgoaSl8fHF4KG8pKSYmci5kaXJ0eSgpLHtzdGF0dXM6ci52YWx1ZSx2YWx1ZTphLmRhdGF9KTooV2Uobix7Y29kZTpOZS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlc30pLGx0KX07cmV0dXJuIG4uY29tbW9uLmFzeW5jP1Byb21pc2UuYWxsKFt0aGlzLl9kZWYubGVmdC5fcGFyc2VBc3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KSx0aGlzLl9kZWYucmlnaHQuX3BhcnNlQXN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSldKS50aGVuKChbaSxvXSk9PnMoaSxvKSk6cyh0aGlzLl9kZWYubGVmdC5fcGFyc2VTeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pLHRoaXMuX2RlZi5yaWdodC5fcGFyc2VTeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pKX19aW0uY3JlYXRlPSh0LGUscik9Pm5ldyBpbSh7bGVmdDp0LHJpZ2h0OmUsdHlwZU5hbWU6bnQuWm9kSW50ZXJzZWN0aW9uLC4uLm10KHIpfSk7Y2xhc3MgX28gZXh0ZW5kcyB5dHtfcGFyc2UoZSl7Y29uc3R7c3RhdHVzOnIsY3R4Om59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtpZihuLnBhcnNlZFR5cGUhPT1VZS5hcnJheSlyZXR1cm4gV2Uobix7Y29kZTpOZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6VWUuYXJyYXkscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksbHQ7aWYobi5kYXRhLmxlbmd0aDx0aGlzLl9kZWYuaXRlbXMubGVuZ3RoKXJldHVybiBXZShuLHtjb2RlOk5lLnRvb19zbWFsbCxtaW5pbXVtOnRoaXMuX2RlZi5pdGVtcy5sZW5ndGgsaW5jbHVzaXZlOiEwLGV4YWN0OiExLHR5cGU6ImFycmF5In0pLGx0OyF0aGlzLl9kZWYucmVzdCYmbi5kYXRhLmxlbmd0aD50aGlzLl9kZWYuaXRlbXMubGVuZ3RoJiYoV2Uobix7Y29kZTpOZS50b29fYmlnLG1heGltdW06dGhpcy5fZGVmLml0ZW1zLmxlbmd0aCxpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsdHlwZToiYXJyYXkifSksci5kaXJ0eSgpKTtjb25zdCBpPVsuLi5uLmRhdGFdLm1hcCgobyxhKT0+e2NvbnN0IGM9dGhpcy5fZGVmLml0ZW1zW2FdfHx0aGlzLl9kZWYucmVzdDtyZXR1cm4gYz9jLl9wYXJzZShuZXcgeG8obixvLG4ucGF0aCxhKSk6bnVsbH0pLmZpbHRlcihvPT4hIW8pO3JldHVybiBuLmNvbW1vbi5hc3luYz9Qcm9taXNlLmFsbChpKS50aGVuKG89PkluLm1lcmdlQXJyYXkocixvKSk6SW4ubWVyZ2VBcnJheShyLGkpfWdldCBpdGVtcygpe3JldHVybiB0aGlzLl9kZWYuaXRlbXN9cmVzdChlKXtyZXR1cm4gbmV3IF9vKHsuLi50aGlzLl9kZWYscmVzdDplfSl9fV9vLmNyZWF0ZT0odCxlKT0+e2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBFcnJvcigiWW91IG11c3QgcGFzcyBhbiBhcnJheSBvZiBzY2hlbWFzIHRvIHoudHVwbGUoWyAuLi4gXSkiKTtyZXR1cm4gbmV3IF9vKHtpdGVtczp0LHR5cGVOYW1lOm50LlpvZFR1cGxlLHJlc3Q6bnVsbCwuLi5tdChlKX0pfTtjbGFzcyBzbSBleHRlbmRzIHl0e2dldCBrZXlTY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLmtleVR5cGV9Z2V0IHZhbHVlU2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGV9X3BhcnNlKGUpe2NvbnN0e3N0YXR1czpyLGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYobi5wYXJzZWRUeXBlIT09VWUub2JqZWN0KXJldHVybiBXZShuLHtjb2RlOk5lLmludmFsaWRfdHlwZSxleHBlY3RlZDpVZS5vYmplY3QscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksbHQ7Y29uc3Qgcz1bXSxpPXRoaXMuX2RlZi5rZXlUeXBlLG89dGhpcy5fZGVmLnZhbHVlVHlwZTtmb3IoY29uc3QgYSBpbiBuLmRhdGEpcy5wdXNoKHtrZXk6aS5fcGFyc2UobmV3IHhvKG4sYSxuLnBhdGgsYSkpLHZhbHVlOm8uX3BhcnNlKG5ldyB4byhuLG4uZGF0YVthXSxuLnBhdGgsYSkpfSk7cmV0dXJuIG4uY29tbW9uLmFzeW5jP0luLm1lcmdlT2JqZWN0QXN5bmMocixzKTpJbi5tZXJnZU9iamVjdFN5bmMocixzKX1nZXQgZWxlbWVudCgpe3JldHVybiB0aGlzLl9kZWYudmFsdWVUeXBlfXN0YXRpYyBjcmVhdGUoZSxyLG4pe3JldHVybiByIGluc3RhbmNlb2YgeXQ/bmV3IHNtKHtrZXlUeXBlOmUsdmFsdWVUeXBlOnIsdHlwZU5hbWU6bnQuWm9kUmVjb3JkLC4uLm10KG4pfSk6bmV3IHNtKHtrZXlUeXBlOlRzLmNyZWF0ZSgpLHZhbHVlVHlwZTplLHR5cGVOYW1lOm50LlpvZFJlY29yZCwuLi5tdChyKX0pfX1jbGFzcyBTYiBleHRlbmRzIHl0e2dldCBrZXlTY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLmtleVR5cGV9Z2V0IHZhbHVlU2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGV9X3BhcnNlKGUpe2NvbnN0e3N0YXR1czpyLGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYobi5wYXJzZWRUeXBlIT09VWUubWFwKXJldHVybiBXZShuLHtjb2RlOk5lLmludmFsaWRfdHlwZSxleHBlY3RlZDpVZS5tYXAscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksbHQ7Y29uc3Qgcz10aGlzLl9kZWYua2V5VHlwZSxpPXRoaXMuX2RlZi52YWx1ZVR5cGUsbz1bLi4ubi5kYXRhLmVudHJpZXMoKV0ubWFwKChbYSxjXSxsKT0+KHtrZXk6cy5fcGFyc2UobmV3IHhvKG4sYSxuLnBhdGgsW2wsImtleSJdKSksdmFsdWU6aS5fcGFyc2UobmV3IHhvKG4sYyxuLnBhdGgsW2wsInZhbHVlIl0pKX0pKTtpZihuLmNvbW1vbi5hc3luYyl7Y29uc3QgYT1uZXcgTWFwO3JldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGFzeW5jKCk9Pntmb3IoY29uc3QgYyBvZiBvKXtjb25zdCBsPWF3YWl0IGMua2V5LGQ9YXdhaXQgYy52YWx1ZTtpZihsLnN0YXR1cz09PSJhYm9ydGVkInx8ZC5zdGF0dXM9PT0iYWJvcnRlZCIpcmV0dXJuIGx0OyhsLnN0YXR1cz09PSJkaXJ0eSJ8fGQuc3RhdHVzPT09ImRpcnR5IikmJnIuZGlydHkoKSxhLnNldChsLnZhbHVlLGQudmFsdWUpfXJldHVybntzdGF0dXM6ci52YWx1ZSx2YWx1ZTphfX0pfWVsc2V7Y29uc3QgYT1uZXcgTWFwO2Zvcihjb25zdCBjIG9mIG8pe2NvbnN0IGw9Yy5rZXksZD1jLnZhbHVlO2lmKGwuc3RhdHVzPT09ImFib3J0ZWQifHxkLnN0YXR1cz09PSJhYm9ydGVkIilyZXR1cm4gbHQ7KGwuc3RhdHVzPT09ImRpcnR5Inx8ZC5zdGF0dXM9PT0iZGlydHkiKSYmci5kaXJ0eSgpLGEuc2V0KGwudmFsdWUsZC52YWx1ZSl9cmV0dXJue3N0YXR1czpyLnZhbHVlLHZhbHVlOmF9fX19U2IuY3JlYXRlPSh0LGUscik9Pm5ldyBTYih7dmFsdWVUeXBlOmUsa2V5VHlwZTp0LHR5cGVOYW1lOm50LlpvZE1hcCwuLi5tdChyKX0pO2NsYXNzIFN1IGV4dGVuZHMgeXR7X3BhcnNlKGUpe2NvbnN0e3N0YXR1czpyLGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYobi5wYXJzZWRUeXBlIT09VWUuc2V0KXJldHVybiBXZShuLHtjb2RlOk5lLmludmFsaWRfdHlwZSxleHBlY3RlZDpVZS5zZXQscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksbHQ7Y29uc3Qgcz10aGlzLl9kZWY7cy5taW5TaXplIT09bnVsbCYmbi5kYXRhLnNpemU8cy5taW5TaXplLnZhbHVlJiYoV2Uobix7Y29kZTpOZS50b29fc21hbGwsbWluaW11bTpzLm1pblNpemUudmFsdWUsdHlwZToic2V0IixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTpzLm1pblNpemUubWVzc2FnZX0pLHIuZGlydHkoKSkscy5tYXhTaXplIT09bnVsbCYmbi5kYXRhLnNpemU+cy5tYXhTaXplLnZhbHVlJiYoV2Uobix7Y29kZTpOZS50b29fYmlnLG1heGltdW06cy5tYXhTaXplLnZhbHVlLHR5cGU6InNldCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6cy5tYXhTaXplLm1lc3NhZ2V9KSxyLmRpcnR5KCkpO2NvbnN0IGk9dGhpcy5fZGVmLnZhbHVlVHlwZTtmdW5jdGlvbiBvKGMpe2NvbnN0IGw9bmV3IFNldDtmb3IoY29uc3QgZCBvZiBjKXtpZihkLnN0YXR1cz09PSJhYm9ydGVkIilyZXR1cm4gbHQ7ZC5zdGF0dXM9PT0iZGlydHkiJiZyLmRpcnR5KCksbC5hZGQoZC52YWx1ZSl9cmV0dXJue3N0YXR1czpyLnZhbHVlLHZhbHVlOmx9fWNvbnN0IGE9Wy4uLm4uZGF0YS52YWx1ZXMoKV0ubWFwKChjLGwpPT5pLl9wYXJzZShuZXcgeG8obixjLG4ucGF0aCxsKSkpO3JldHVybiBuLmNvbW1vbi5hc3luYz9Qcm9taXNlLmFsbChhKS50aGVuKGM9Pm8oYykpOm8oYSl9bWluKGUscil7cmV0dXJuIG5ldyBTdSh7Li4udGhpcy5fZGVmLG1pblNpemU6e3ZhbHVlOmUsbWVzc2FnZTpKZS50b1N0cmluZyhyKX19KX1tYXgoZSxyKXtyZXR1cm4gbmV3IFN1KHsuLi50aGlzLl9kZWYsbWF4U2l6ZTp7dmFsdWU6ZSxtZXNzYWdlOkplLnRvU3RyaW5nKHIpfX0pfXNpemUoZSxyKXtyZXR1cm4gdGhpcy5taW4oZSxyKS5tYXgoZSxyKX1ub25lbXB0eShlKXtyZXR1cm4gdGhpcy5taW4oMSxlKX19U3UuY3JlYXRlPSh0LGUpPT5uZXcgU3Uoe3ZhbHVlVHlwZTp0LG1pblNpemU6bnVsbCxtYXhTaXplOm51bGwsdHlwZU5hbWU6bnQuWm9kU2V0LC4uLm10KGUpfSk7Y2xhc3MgbGggZXh0ZW5kcyB5dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy52YWxpZGF0ZT10aGlzLmltcGxlbWVudH1fcGFyc2UoZSl7Y29uc3R7Y3R4OnJ9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtpZihyLnBhcnNlZFR5cGUhPT1VZS5mdW5jdGlvbilyZXR1cm4gV2Uocix7Y29kZTpOZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6VWUuZnVuY3Rpb24scmVjZWl2ZWQ6ci5wYXJzZWRUeXBlfSksbHQ7ZnVuY3Rpb24gbihhLGMpe3JldHVybiBDYih7ZGF0YTphLHBhdGg6ci5wYXRoLGVycm9yTWFwczpbci5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLHIuc2NoZW1hRXJyb3JNYXAsRWIoKSxYMF0uZmlsdGVyKGw9PiEhbCksaXNzdWVEYXRhOntjb2RlOk5lLmludmFsaWRfYXJndW1lbnRzLGFyZ3VtZW50c0Vycm9yOmN9fSl9ZnVuY3Rpb24gcyhhLGMpe3JldHVybiBDYih7ZGF0YTphLHBhdGg6ci5wYXRoLGVycm9yTWFwczpbci5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLHIuc2NoZW1hRXJyb3JNYXAsRWIoKSxYMF0uZmlsdGVyKGw9PiEhbCksaXNzdWVEYXRhOntjb2RlOk5lLmludmFsaWRfcmV0dXJuX3R5cGUscmV0dXJuVHlwZUVycm9yOmN9fSl9Y29uc3QgaT17ZXJyb3JNYXA6ci5jb21tb24uY29udGV4dHVhbEVycm9yTWFwfSxvPXIuZGF0YTtpZih0aGlzLl9kZWYucmV0dXJucyBpbnN0YW5jZW9mIFBoKXtjb25zdCBhPXRoaXM7cmV0dXJuIExuKGFzeW5jIGZ1bmN0aW9uKC4uLmMpe2NvbnN0IGw9bmV3IFJzKFtdKSxkPWF3YWl0IGEuX2RlZi5hcmdzLnBhcnNlQXN5bmMoYyxpKS5jYXRjaChwPT57dGhyb3cgbC5hZGRJc3N1ZShuKGMscCkpLGx9KSx1PWF3YWl0IFJlZmxlY3QuYXBwbHkobyx0aGlzLGQpO3JldHVybiBhd2FpdCBhLl9kZWYucmV0dXJucy5fZGVmLnR5cGUucGFyc2VBc3luYyh1LGkpLmNhdGNoKHA9Pnt0aHJvdyBsLmFkZElzc3VlKHModSxwKSksbH0pfSl9ZWxzZXtjb25zdCBhPXRoaXM7cmV0dXJuIExuKGZ1bmN0aW9uKC4uLmMpe2NvbnN0IGw9YS5fZGVmLmFyZ3Muc2FmZVBhcnNlKGMsaSk7aWYoIWwuc3VjY2Vzcyl0aHJvdyBuZXcgUnMoW24oYyxsLmVycm9yKV0pO2NvbnN0IGQ9UmVmbGVjdC5hcHBseShvLHRoaXMsbC5kYXRhKSx1PWEuX2RlZi5yZXR1cm5zLnNhZmVQYXJzZShkLGkpO2lmKCF1LnN1Y2Nlc3MpdGhyb3cgbmV3IFJzKFtzKGQsdS5lcnJvcildKTtyZXR1cm4gdS5kYXRhfSl9fXBhcmFtZXRlcnMoKXtyZXR1cm4gdGhpcy5fZGVmLmFyZ3N9cmV0dXJuVHlwZSgpe3JldHVybiB0aGlzLl9kZWYucmV0dXJuc31hcmdzKC4uLmUpe3JldHVybiBuZXcgbGgoey4uLnRoaXMuX2RlZixhcmdzOl9vLmNyZWF0ZShlKS5yZXN0KGx1LmNyZWF0ZSgpKX0pfXJldHVybnMoZSl7cmV0dXJuIG5ldyBsaCh7Li4udGhpcy5fZGVmLHJldHVybnM6ZX0pfWltcGxlbWVudChlKXtyZXR1cm4gdGhpcy5wYXJzZShlKX1zdHJpY3RJbXBsZW1lbnQoZSl7cmV0dXJuIHRoaXMucGFyc2UoZSl9c3RhdGljIGNyZWF0ZShlLHIsbil7cmV0dXJuIG5ldyBsaCh7YXJnczplfHxfby5jcmVhdGUoW10pLnJlc3QobHUuY3JlYXRlKCkpLHJldHVybnM6cnx8bHUuY3JlYXRlKCksdHlwZU5hbWU6bnQuWm9kRnVuY3Rpb24sLi4ubXQobil9KX19Y2xhc3Mgb20gZXh0ZW5kcyB5dHtnZXQgc2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi5nZXR0ZXIoKX1fcGFyc2UoZSl7Y29uc3R7Y3R4OnJ9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtyZXR1cm4gdGhpcy5fZGVmLmdldHRlcigpLl9wYXJzZSh7ZGF0YTpyLmRhdGEscGF0aDpyLnBhdGgscGFyZW50OnJ9KX19b20uY3JlYXRlPSh0LGUpPT5uZXcgb20oe2dldHRlcjp0LHR5cGVOYW1lOm50LlpvZExhenksLi4ubXQoZSl9KTtjbGFzcyBhbSBleHRlbmRzIHl0e19wYXJzZShlKXtpZihlLmRhdGEhPT10aGlzLl9kZWYudmFsdWUpe2NvbnN0IHI9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuIFdlKHIse3JlY2VpdmVkOnIuZGF0YSxjb2RlOk5lLmludmFsaWRfbGl0ZXJhbCxleHBlY3RlZDp0aGlzLl9kZWYudmFsdWV9KSxsdH1yZXR1cm57c3RhdHVzOiJ2YWxpZCIsdmFsdWU6ZS5kYXRhfX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlfX1hbS5jcmVhdGU9KHQsZSk9Pm5ldyBhbSh7dmFsdWU6dCx0eXBlTmFtZTpudC5ab2RMaXRlcmFsLC4uLm10KGUpfSk7ZnVuY3Rpb24gX0IodCxlKXtyZXR1cm4gbmV3IENjKHt2YWx1ZXM6dCx0eXBlTmFtZTpudC5ab2RFbnVtLC4uLm10KGUpfSl9Y2xhc3MgQ2MgZXh0ZW5kcyB5dHtfcGFyc2UoZSl7aWYodHlwZW9mIGUuZGF0YSE9InN0cmluZyIpe2NvbnN0IHI9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSksbj10aGlzLl9kZWYudmFsdWVzO3JldHVybiBXZShyLHtleHBlY3RlZDpEdC5qb2luVmFsdWVzKG4pLHJlY2VpdmVkOnIucGFyc2VkVHlwZSxjb2RlOk5lLmludmFsaWRfdHlwZX0pLGx0fWlmKHRoaXMuX2RlZi52YWx1ZXMuaW5kZXhPZihlLmRhdGEpPT09LTEpe2NvbnN0IHI9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSksbj10aGlzLl9kZWYudmFsdWVzO3JldHVybiBXZShyLHtyZWNlaXZlZDpyLmRhdGEsY29kZTpOZS5pbnZhbGlkX2VudW1fdmFsdWUsb3B0aW9uczpufSksbHR9cmV0dXJuIExuKGUuZGF0YSl9Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlc31nZXQgZW51bSgpe2NvbnN0IGU9e307Zm9yKGNvbnN0IHIgb2YgdGhpcy5fZGVmLnZhbHVlcyllW3JdPXI7cmV0dXJuIGV9Z2V0IFZhbHVlcygpe2NvbnN0IGU9e307Zm9yKGNvbnN0IHIgb2YgdGhpcy5fZGVmLnZhbHVlcyllW3JdPXI7cmV0dXJuIGV9Z2V0IEVudW0oKXtjb25zdCBlPXt9O2Zvcihjb25zdCByIG9mIHRoaXMuX2RlZi52YWx1ZXMpZVtyXT1yO3JldHVybiBlfWV4dHJhY3QoZSl7cmV0dXJuIENjLmNyZWF0ZShlKX1leGNsdWRlKGUpe3JldHVybiBDYy5jcmVhdGUodGhpcy5vcHRpb25zLmZpbHRlcihyPT4hZS5pbmNsdWRlcyhyKSkpfX1DYy5jcmVhdGU9X0I7Y2xhc3MgY20gZXh0ZW5kcyB5dHtfcGFyc2UoZSl7Y29uc3Qgcj1EdC5nZXRWYWxpZEVudW1WYWx1ZXModGhpcy5fZGVmLnZhbHVlcyksbj10aGlzLl9nZXRPclJldHVybkN0eChlKTtpZihuLnBhcnNlZFR5cGUhPT1VZS5zdHJpbmcmJm4ucGFyc2VkVHlwZSE9PVVlLm51bWJlcil7Y29uc3Qgcz1EdC5vYmplY3RWYWx1ZXMocik7cmV0dXJuIFdlKG4se2V4cGVjdGVkOkR0LmpvaW5WYWx1ZXMocykscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlLGNvZGU6TmUuaW52YWxpZF90eXBlfSksbHR9aWYoci5pbmRleE9mKGUuZGF0YSk9PT0tMSl7Y29uc3Qgcz1EdC5vYmplY3RWYWx1ZXMocik7cmV0dXJuIFdlKG4se3JlY2VpdmVkOm4uZGF0YSxjb2RlOk5lLmludmFsaWRfZW51bV92YWx1ZSxvcHRpb25zOnN9KSxsdH1yZXR1cm4gTG4oZS5kYXRhKX1nZXQgZW51bSgpe3JldHVybiB0aGlzLl9kZWYudmFsdWVzfX1jbS5jcmVhdGU9KHQsZSk9Pm5ldyBjbSh7dmFsdWVzOnQsdHlwZU5hbWU6bnQuWm9kTmF0aXZlRW51bSwuLi5tdChlKX0pO2NsYXNzIFBoIGV4dGVuZHMgeXR7dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi50eXBlfV9wYXJzZShlKXtjb25zdHtjdHg6cn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO2lmKHIucGFyc2VkVHlwZSE9PVVlLnByb21pc2UmJnIuY29tbW9uLmFzeW5jPT09ITEpcmV0dXJuIFdlKHIse2NvZGU6TmUuaW52YWxpZF90eXBlLGV4cGVjdGVkOlVlLnByb21pc2UscmVjZWl2ZWQ6ci5wYXJzZWRUeXBlfSksbHQ7Y29uc3Qgbj1yLnBhcnNlZFR5cGU9PT1VZS5wcm9taXNlP3IuZGF0YTpQcm9taXNlLnJlc29sdmUoci5kYXRhKTtyZXR1cm4gTG4obi50aGVuKHM9PnRoaXMuX2RlZi50eXBlLnBhcnNlQXN5bmMocyx7cGF0aDpyLnBhdGgsZXJyb3JNYXA6ci5jb21tb24uY29udGV4dHVhbEVycm9yTWFwfSkpKX19UGguY3JlYXRlPSh0LGUpPT5uZXcgUGgoe3R5cGU6dCx0eXBlTmFtZTpudC5ab2RQcm9taXNlLC4uLm10KGUpfSk7Y2xhc3MgT3MgZXh0ZW5kcyB5dHtpbm5lclR5cGUoKXtyZXR1cm4gdGhpcy5fZGVmLnNjaGVtYX1zb3VyY2VUeXBlKCl7cmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX2RlZi50eXBlTmFtZT09PW50LlpvZEVmZmVjdHM/dGhpcy5fZGVmLnNjaGVtYS5zb3VyY2VUeXBlKCk6dGhpcy5fZGVmLnNjaGVtYX1fcGFyc2UoZSl7Y29uc3R7c3RhdHVzOnIsY3R4Om59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKSxzPXRoaXMuX2RlZi5lZmZlY3R8fG51bGwsaT17YWRkSXNzdWU6bz0+e1dlKG4sbyksby5mYXRhbD9yLmFib3J0KCk6ci5kaXJ0eSgpfSxnZXQgcGF0aCgpe3JldHVybiBuLnBhdGh9fTtpZihpLmFkZElzc3VlPWkuYWRkSXNzdWUuYmluZChpKSxzLnR5cGU9PT0icHJlcHJvY2VzcyIpe2NvbnN0IG89cy50cmFuc2Zvcm0obi5kYXRhLGkpO3JldHVybiBuLmNvbW1vbi5pc3N1ZXMubGVuZ3RoP3tzdGF0dXM6ImRpcnR5Iix2YWx1ZTpuLmRhdGF9Om4uY29tbW9uLmFzeW5jP1Byb21pc2UucmVzb2x2ZShvKS50aGVuKGE9PnRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoe2RhdGE6YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pKTp0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe2RhdGE6byxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pfWlmKHMudHlwZT09PSJyZWZpbmVtZW50Iil7Y29uc3Qgbz1hPT57Y29uc3QgYz1zLnJlZmluZW1lbnQoYSxpKTtpZihuLmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGMpO2lmKGMgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgcmVmaW5lbWVudCBlbmNvdW50ZXJlZCBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2Ugb3BlcmF0aW9uLiBVc2UgLnBhcnNlQXN5bmMgaW5zdGVhZC4iKTtyZXR1cm4gYX07aWYobi5jb21tb24uYXN5bmM9PT0hMSl7Y29uc3QgYT10aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSk7cmV0dXJuIGEuc3RhdHVzPT09ImFib3J0ZWQiP2x0OihhLnN0YXR1cz09PSJkaXJ0eSImJnIuZGlydHkoKSxvKGEudmFsdWUpLHtzdGF0dXM6ci52YWx1ZSx2YWx1ZTphLnZhbHVlfSl9ZWxzZSByZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KS50aGVuKGE9PmEuc3RhdHVzPT09ImFib3J0ZWQiP2x0OihhLnN0YXR1cz09PSJkaXJ0eSImJnIuZGlydHkoKSxvKGEudmFsdWUpLnRoZW4oKCk9Pih7c3RhdHVzOnIudmFsdWUsdmFsdWU6YS52YWx1ZX0pKSkpfWlmKHMudHlwZT09PSJ0cmFuc2Zvcm0iKWlmKG4uY29tbW9uLmFzeW5jPT09ITEpe2NvbnN0IG89dGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pO2lmKCFRMChvKSlyZXR1cm4gbztjb25zdCBhPXMudHJhbnNmb3JtKG8udmFsdWUsaSk7aWYoYSBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luY2hyb25vdXMgdHJhbnNmb3JtIGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLiIpO3JldHVybntzdGF0dXM6ci52YWx1ZSx2YWx1ZTphfX1lbHNlIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZUFzeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pLnRoZW4obz0+UTAobyk/UHJvbWlzZS5yZXNvbHZlKHMudHJhbnNmb3JtKG8udmFsdWUsaSkpLnRoZW4oYT0+KHtzdGF0dXM6ci52YWx1ZSx2YWx1ZTphfSkpOm8pO0R0LmFzc2VydE5ldmVyKHMpfX1Pcy5jcmVhdGU9KHQsZSxyKT0+bmV3IE9zKHtzY2hlbWE6dCx0eXBlTmFtZTpudC5ab2RFZmZlY3RzLGVmZmVjdDplLC4uLm10KHIpfSk7T3MuY3JlYXRlV2l0aFByZXByb2Nlc3M9KHQsZSxyKT0+bmV3IE9zKHtzY2hlbWE6ZSxlZmZlY3Q6e3R5cGU6InByZXByb2Nlc3MiLHRyYW5zZm9ybTp0fSx0eXBlTmFtZTpudC5ab2RFZmZlY3RzLC4uLm10KHIpfSk7Y2xhc3MgaGEgZXh0ZW5kcyB5dHtfcGFyc2UoZSl7cmV0dXJuIHRoaXMuX2dldFR5cGUoZSk9PT1VZS51bmRlZmluZWQ/TG4odm9pZCAwKTp0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZShlKX11bndyYXAoKXtyZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZX19aGEuY3JlYXRlPSh0LGUpPT5uZXcgaGEoe2lubmVyVHlwZTp0LHR5cGVOYW1lOm50LlpvZE9wdGlvbmFsLC4uLm10KGUpfSk7Y2xhc3MgQXUgZXh0ZW5kcyB5dHtfcGFyc2UoZSl7cmV0dXJuIHRoaXMuX2dldFR5cGUoZSk9PT1VZS5udWxsP0xuKG51bGwpOnRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGUpfXVud3JhcCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX1BdS5jcmVhdGU9KHQsZSk9Pm5ldyBBdSh7aW5uZXJUeXBlOnQsdHlwZU5hbWU6bnQuWm9kTnVsbGFibGUsLi4ubXQoZSl9KTtjbGFzcyBsbSBleHRlbmRzIHl0e19wYXJzZShlKXtjb25zdHtjdHg6cn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO2xldCBuPXIuZGF0YTtyZXR1cm4gci5wYXJzZWRUeXBlPT09VWUudW5kZWZpbmVkJiYobj10aGlzLl9kZWYuZGVmYXVsdFZhbHVlKCkpLHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKHtkYXRhOm4scGF0aDpyLnBhdGgscGFyZW50OnJ9KX1yZW1vdmVEZWZhdWx0KCl7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGV9fWxtLmNyZWF0ZT0odCxlKT0+bmV3IGxtKHtpbm5lclR5cGU6dCx0eXBlTmFtZTpudC5ab2REZWZhdWx0LGRlZmF1bHRWYWx1ZTp0eXBlb2YgZS5kZWZhdWx0PT0iZnVuY3Rpb24iP2UuZGVmYXVsdDooKT0+ZS5kZWZhdWx0LC4uLm10KGUpfSk7Y2xhc3MgQWIgZXh0ZW5kcyB5dHtfcGFyc2UoZSl7Y29uc3R7Y3R4OnJ9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKSxuPXsuLi5yLGNvbW1vbjp7Li4uci5jb21tb24saXNzdWVzOltdfX0scz10aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZSh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50OnsuLi5ufX0pO3JldHVybiB4YihzKT9zLnRoZW4oaT0+KHtzdGF0dXM6InZhbGlkIix2YWx1ZTppLnN0YXR1cz09PSJ2YWxpZCI/aS52YWx1ZTp0aGlzLl9kZWYuY2F0Y2hWYWx1ZSh7Z2V0IGVycm9yKCl7cmV0dXJuIG5ldyBScyhuLmNvbW1vbi5pc3N1ZXMpfSxpbnB1dDpuLmRhdGF9KX0pKTp7c3RhdHVzOiJ2YWxpZCIsdmFsdWU6cy5zdGF0dXM9PT0idmFsaWQiP3MudmFsdWU6dGhpcy5fZGVmLmNhdGNoVmFsdWUoe2dldCBlcnJvcigpe3JldHVybiBuZXcgUnMobi5jb21tb24uaXNzdWVzKX0saW5wdXQ6bi5kYXRhfSl9fXJlbW92ZUNhdGNoKCl7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGV9fUFiLmNyZWF0ZT0odCxlKT0+bmV3IEFiKHtpbm5lclR5cGU6dCx0eXBlTmFtZTpudC5ab2RDYXRjaCxjYXRjaFZhbHVlOnR5cGVvZiBlLmNhdGNoPT0iZnVuY3Rpb24iP2UuY2F0Y2g6KCk9PmUuY2F0Y2gsLi4ubXQoZSl9KTtjbGFzcyBUYiBleHRlbmRzIHl0e19wYXJzZShlKXtpZih0aGlzLl9nZXRUeXBlKGUpIT09VWUubmFuKXtjb25zdCBuPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybiBXZShuLHtjb2RlOk5lLmludmFsaWRfdHlwZSxleHBlY3RlZDpVZS5uYW4scmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksbHR9cmV0dXJue3N0YXR1czoidmFsaWQiLHZhbHVlOmUuZGF0YX19fVRiLmNyZWF0ZT10PT5uZXcgVGIoe3R5cGVOYW1lOm50LlpvZE5hTiwuLi5tdCh0KX0pO2NvbnN0IFJoZT1TeW1ib2woInpvZF9icmFuZCIpO2NsYXNzIGtCIGV4dGVuZHMgeXR7X3BhcnNlKGUpe2NvbnN0e2N0eDpyfT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSksbj1yLmRhdGE7cmV0dXJuIHRoaXMuX2RlZi50eXBlLl9wYXJzZSh7ZGF0YTpuLHBhdGg6ci5wYXRoLHBhcmVudDpyfSl9dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi50eXBlfX1jbGFzcyBrMSBleHRlbmRzIHl0e19wYXJzZShlKXtjb25zdHtzdGF0dXM6cixjdHg6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO2lmKG4uY29tbW9uLmFzeW5jKXJldHVybihhc3luYygpPT57Y29uc3QgaT1hd2FpdCB0aGlzLl9kZWYuaW4uX3BhcnNlQXN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSk7cmV0dXJuIGkuc3RhdHVzPT09ImFib3J0ZWQiP2x0Omkuc3RhdHVzPT09ImRpcnR5Ij8oci5kaXJ0eSgpLHhCKGkudmFsdWUpKTp0aGlzLl9kZWYub3V0Ll9wYXJzZUFzeW5jKHtkYXRhOmkudmFsdWUscGF0aDpuLnBhdGgscGFyZW50Om59KX0pKCk7e2NvbnN0IHM9dGhpcy5fZGVmLmluLl9wYXJzZVN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSk7cmV0dXJuIHMuc3RhdHVzPT09ImFib3J0ZWQiP2x0OnMuc3RhdHVzPT09ImRpcnR5Ij8oci5kaXJ0eSgpLHtzdGF0dXM6ImRpcnR5Iix2YWx1ZTpzLnZhbHVlfSk6dGhpcy5fZGVmLm91dC5fcGFyc2VTeW5jKHtkYXRhOnMudmFsdWUscGF0aDpuLnBhdGgscGFyZW50Om59KX19c3RhdGljIGNyZWF0ZShlLHIpe3JldHVybiBuZXcgazEoe2luOmUsb3V0OnIsdHlwZU5hbWU6bnQuWm9kUGlwZWxpbmV9KX19Y2xhc3MgSWIgZXh0ZW5kcyB5dHtfcGFyc2UoZSl7Y29uc3Qgcj10aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZShlKTtyZXR1cm4gUTAocikmJihyLnZhbHVlPU9iamVjdC5mcmVlemUoci52YWx1ZSkpLHJ9fUliLmNyZWF0ZT0odCxlKT0+bmV3IEliKHtpbm5lclR5cGU6dCx0eXBlTmFtZTpudC5ab2RSZWFkb25seSwuLi5tdChlKX0pO2NvbnN0IFNCPSh0LGU9e30scik9PnQ/TmguY3JlYXRlKCkuc3VwZXJSZWZpbmUoKG4scyk9Pnt2YXIgaSxvO2lmKCF0KG4pKXtjb25zdCBhPXR5cGVvZiBlPT0iZnVuY3Rpb24iP2Uobik6dHlwZW9mIGU9PSJzdHJpbmciP3ttZXNzYWdlOmV9OmUsYz0obz0oaT1hLmZhdGFsKSE9PW51bGwmJmkhPT12b2lkIDA/aTpyKSE9PW51bGwmJm8hPT12b2lkIDA/bzohMCxsPXR5cGVvZiBhPT0ic3RyaW5nIj97bWVzc2FnZTphfTphO3MuYWRkSXNzdWUoe2NvZGU6ImN1c3RvbSIsLi4ubCxmYXRhbDpjfSl9fSk6TmguY3JlYXRlKCksTmhlPXtvYmplY3Q6UnIubGF6eWNyZWF0ZX07dmFyIG50OyhmdW5jdGlvbih0KXt0LlpvZFN0cmluZz0iWm9kU3RyaW5nIix0LlpvZE51bWJlcj0iWm9kTnVtYmVyIix0LlpvZE5hTj0iWm9kTmFOIix0LlpvZEJpZ0ludD0iWm9kQmlnSW50Iix0LlpvZEJvb2xlYW49IlpvZEJvb2xlYW4iLHQuWm9kRGF0ZT0iWm9kRGF0ZSIsdC5ab2RTeW1ib2w9IlpvZFN5bWJvbCIsdC5ab2RVbmRlZmluZWQ9IlpvZFVuZGVmaW5lZCIsdC5ab2ROdWxsPSJab2ROdWxsIix0LlpvZEFueT0iWm9kQW55Iix0LlpvZFVua25vd249IlpvZFVua25vd24iLHQuWm9kTmV2ZXI9IlpvZE5ldmVyIix0LlpvZFZvaWQ9IlpvZFZvaWQiLHQuWm9kQXJyYXk9IlpvZEFycmF5Iix0LlpvZE9iamVjdD0iWm9kT2JqZWN0Iix0LlpvZFVuaW9uPSJab2RVbmlvbiIsdC5ab2REaXNjcmltaW5hdGVkVW5pb249IlpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsdC5ab2RJbnRlcnNlY3Rpb249IlpvZEludGVyc2VjdGlvbiIsdC5ab2RUdXBsZT0iWm9kVHVwbGUiLHQuWm9kUmVjb3JkPSJab2RSZWNvcmQiLHQuWm9kTWFwPSJab2RNYXAiLHQuWm9kU2V0PSJab2RTZXQiLHQuWm9kRnVuY3Rpb249IlpvZEZ1bmN0aW9uIix0LlpvZExhenk9IlpvZExhenkiLHQuWm9kTGl0ZXJhbD0iWm9kTGl0ZXJhbCIsdC5ab2RFbnVtPSJab2RFbnVtIix0LlpvZEVmZmVjdHM9IlpvZEVmZmVjdHMiLHQuWm9kTmF0aXZlRW51bT0iWm9kTmF0aXZlRW51bSIsdC5ab2RPcHRpb25hbD0iWm9kT3B0aW9uYWwiLHQuWm9kTnVsbGFibGU9IlpvZE51bGxhYmxlIix0LlpvZERlZmF1bHQ9IlpvZERlZmF1bHQiLHQuWm9kQ2F0Y2g9IlpvZENhdGNoIix0LlpvZFByb21pc2U9IlpvZFByb21pc2UiLHQuWm9kQnJhbmRlZD0iWm9kQnJhbmRlZCIsdC5ab2RQaXBlbGluZT0iWm9kUGlwZWxpbmUiLHQuWm9kUmVhZG9ubHk9IlpvZFJlYWRvbmx5In0pKG50fHwobnQ9e30pKTtjb25zdCBQaGU9KHQsZT17bWVzc2FnZTpgSW5wdXQgbm90IGluc3RhbmNlIG9mICR7dC5uYW1lfWB9KT0+U0Iocj0+ciBpbnN0YW5jZW9mIHQsZSksQUI9VHMuY3JlYXRlLFRCPXZjLmNyZWF0ZSxPaGU9VGIuY3JlYXRlLCRoZT1FYy5jcmVhdGUsSUI9ZW0uY3JlYXRlLE1oZT1rdS5jcmVhdGUsRGhlPV9iLmNyZWF0ZSxCaGU9dG0uY3JlYXRlLExoZT1ybS5jcmVhdGUsVWhlPU5oLmNyZWF0ZSxGaGU9bHUuY3JlYXRlLGpoZT13YS5jcmVhdGUsemhlPWtiLmNyZWF0ZSxXaGU9TnMuY3JlYXRlLEhoZT1Sci5jcmVhdGUscWhlPVJyLnN0cmljdENyZWF0ZSxWaGU9bm0uY3JlYXRlLEdoZT1ZeS5jcmVhdGUsS2hlPWltLmNyZWF0ZSxaaGU9X28uY3JlYXRlLFloZT1zbS5jcmVhdGUsSmhlPVNiLmNyZWF0ZSxYaGU9U3UuY3JlYXRlLFFoZT1saC5jcmVhdGUsZXBlPW9tLmNyZWF0ZSx0cGU9YW0uY3JlYXRlLHJwZT1DYy5jcmVhdGUsbnBlPWNtLmNyZWF0ZSxpcGU9UGguY3JlYXRlLGpTPU9zLmNyZWF0ZSxzcGU9aGEuY3JlYXRlLG9wZT1BdS5jcmVhdGUsYXBlPU9zLmNyZWF0ZVdpdGhQcmVwcm9jZXNzLGNwZT1rMS5jcmVhdGUsbHBlPSgpPT5BQigpLm9wdGlvbmFsKCksdXBlPSgpPT5UQigpLm9wdGlvbmFsKCksZHBlPSgpPT5JQigpLm9wdGlvbmFsKCksaHBlPXtzdHJpbmc6dD0+VHMuY3JlYXRlKHsuLi50LGNvZXJjZTohMH0pLG51bWJlcjp0PT52Yy5jcmVhdGUoey4uLnQsY29lcmNlOiEwfSksYm9vbGVhbjp0PT5lbS5jcmVhdGUoey4uLnQsY29lcmNlOiEwfSksYmlnaW50OnQ9PkVjLmNyZWF0ZSh7Li4udCxjb2VyY2U6ITB9KSxkYXRlOnQ9Pmt1LmNyZWF0ZSh7Li4udCxjb2VyY2U6ITB9KX0scHBlPWx0O3ZhciBHPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGRlZmF1bHRFcnJvck1hcDpYMCxzZXRFcnJvck1hcDp3aGUsZ2V0RXJyb3JNYXA6RWIsbWFrZUlzc3VlOkNiLEVNUFRZX1BBVEg6YmhlLGFkZElzc3VlVG9Db250ZXh0OldlLFBhcnNlU3RhdHVzOkluLElOVkFMSUQ6bHQsRElSVFk6eEIsT0s6TG4saXNBYm9ydGVkOkh4LGlzRGlydHk6cXgsaXNWYWxpZDpRMCxpc0FzeW5jOnhiLGdldCB1dGlsKCl7cmV0dXJuIER0fSxnZXQgb2JqZWN0VXRpbCgpe3JldHVybiBXeH0sWm9kUGFyc2VkVHlwZTpVZSxnZXRQYXJzZWRUeXBlOm9jLFpvZFR5cGU6eXQsWm9kU3RyaW5nOlRzLFpvZE51bWJlcjp2Yyxab2RCaWdJbnQ6RWMsWm9kQm9vbGVhbjplbSxab2REYXRlOmt1LFpvZFN5bWJvbDpfYixab2RVbmRlZmluZWQ6dG0sWm9kTnVsbDpybSxab2RBbnk6TmgsWm9kVW5rbm93bjpsdSxab2ROZXZlcjp3YSxab2RWb2lkOmtiLFpvZEFycmF5Ok5zLFpvZE9iamVjdDpScixab2RVbmlvbjpubSxab2REaXNjcmltaW5hdGVkVW5pb246WXksWm9kSW50ZXJzZWN0aW9uOmltLFpvZFR1cGxlOl9vLFpvZFJlY29yZDpzbSxab2RNYXA6U2IsWm9kU2V0OlN1LFpvZEZ1bmN0aW9uOmxoLFpvZExhenk6b20sWm9kTGl0ZXJhbDphbSxab2RFbnVtOkNjLFpvZE5hdGl2ZUVudW06Y20sWm9kUHJvbWlzZTpQaCxab2RFZmZlY3RzOk9zLFpvZFRyYW5zZm9ybWVyOk9zLFpvZE9wdGlvbmFsOmhhLFpvZE51bGxhYmxlOkF1LFpvZERlZmF1bHQ6bG0sWm9kQ2F0Y2g6QWIsWm9kTmFOOlRiLEJSQU5EOlJoZSxab2RCcmFuZGVkOmtCLFpvZFBpcGVsaW5lOmsxLFpvZFJlYWRvbmx5OkliLGN1c3RvbTpTQixTY2hlbWE6eXQsWm9kU2NoZW1hOnl0LGxhdGU6TmhlLGdldCBab2RGaXJzdFBhcnR5VHlwZUtpbmQoKXtyZXR1cm4gbnR9LGNvZXJjZTpocGUsYW55OlVoZSxhcnJheTpXaGUsYmlnaW50OiRoZSxib29sZWFuOklCLGRhdGU6TWhlLGRpc2NyaW1pbmF0ZWRVbmlvbjpHaGUsZWZmZWN0OmpTLGVudW06cnBlLGZ1bmN0aW9uOlFoZSxpbnN0YW5jZW9mOlBoZSxpbnRlcnNlY3Rpb246S2hlLGxhenk6ZXBlLGxpdGVyYWw6dHBlLG1hcDpKaGUsbmFuOk9oZSxuYXRpdmVFbnVtOm5wZSxuZXZlcjpqaGUsbnVsbDpMaGUsbnVsbGFibGU6b3BlLG51bWJlcjpUQixvYmplY3Q6SGhlLG9ib29sZWFuOmRwZSxvbnVtYmVyOnVwZSxvcHRpb25hbDpzcGUsb3N0cmluZzpscGUscGlwZWxpbmU6Y3BlLHByZXByb2Nlc3M6YXBlLHByb21pc2U6aXBlLHJlY29yZDpZaGUsc2V0OlhoZSxzdHJpY3RPYmplY3Q6cWhlLHN0cmluZzpBQixzeW1ib2w6RGhlLHRyYW5zZm9ybWVyOmpTLHR1cGxlOlpoZSx1bmRlZmluZWQ6QmhlLHVuaW9uOlZoZSx1bmtub3duOkZoZSx2b2lkOnpoZSxORVZFUjpwcGUsWm9kSXNzdWVDb2RlOk5lLHF1b3RlbGVzc0pzb246Z2hlLFpvZEVycm9yOlJzfSk7Y29uc3QgT3I9Ry5vYmplY3Qoe21lc3NhZ2U6Ry5zdHJpbmcoKX0pO2Z1bmN0aW9uIGplKHQpe3JldHVybiBHLmxpdGVyYWwoSGVbdF0pfUcub2JqZWN0KHthY2Nlc3NMaXN0OkcuYXJyYXkoRy5zdHJpbmcoKSksYmxvY2tIYXNoOkcuc3RyaW5nKCkubnVsbGFibGUoKSxibG9ja051bWJlcjpHLnN0cmluZygpLm51bGxhYmxlKCksY2hhaW5JZDpHLnN0cmluZygpLm9yKEcubnVtYmVyKCkpLGZyb206Ry5zdHJpbmcoKSxnYXM6Ry5zdHJpbmcoKSxoYXNoOkcuc3RyaW5nKCksaW5wdXQ6Ry5zdHJpbmcoKS5udWxsYWJsZSgpLG1heEZlZVBlckdhczpHLnN0cmluZygpLG1heFByaW9yaXR5RmVlUGVyR2FzOkcuc3RyaW5nKCksbm9uY2U6Ry5zdHJpbmcoKSxyOkcuc3RyaW5nKCksczpHLnN0cmluZygpLHRvOkcuc3RyaW5nKCksdHJhbnNhY3Rpb25JbmRleDpHLnN0cmluZygpLm51bGxhYmxlKCksdHlwZTpHLnN0cmluZygpLHY6Ry5zdHJpbmcoKSx2YWx1ZTpHLnN0cmluZygpfSk7Y29uc3QgZnBlPUcub2JqZWN0KHtjaGFpbklkOkcuc3RyaW5nKCkub3IoRy5udW1iZXIoKSl9KSxtcGU9Ry5vYmplY3Qoe2VtYWlsOkcuc3RyaW5nKCkuZW1haWwoKX0pLGdwZT1HLm9iamVjdCh7b3RwOkcuc3RyaW5nKCl9KSx3cGU9Ry5vYmplY3Qoe3VyaTpHLnN0cmluZygpLHByZWZlcnJlZEFjY291bnRUeXBlOkcub3B0aW9uYWwoRy5zdHJpbmcoKSksY2hhaW5JZDpHLm9wdGlvbmFsKEcuc3RyaW5nKCkub3IoRy5udW1iZXIoKSkpfSksYnBlPUcub2JqZWN0KHtjaGFpbklkOkcub3B0aW9uYWwoRy5zdHJpbmcoKS5vcihHLm51bWJlcigpKSkscHJlZmVycmVkQWNjb3VudFR5cGU6Ry5vcHRpb25hbChHLnN0cmluZygpKSxzb2NpYWxVcmk6Ry5vcHRpb25hbChHLnN0cmluZygpKX0pLHlwZT1HLm9iamVjdCh7cHJvdmlkZXI6Ry5lbnVtKFsiZ29vZ2xlIiwiZ2l0aHViIiwiYXBwbGUiLCJmYWNlYm9vayIsIngiLCJkaXNjb3JkIl0pfSksdnBlPUcub2JqZWN0KHtlbWFpbDpHLnN0cmluZygpLmVtYWlsKCl9KSxFcGU9Ry5vYmplY3Qoe290cDpHLnN0cmluZygpfSksQ3BlPUcub2JqZWN0KHtvdHA6Ry5zdHJpbmcoKX0pLHhwZT1HLm9iamVjdCh7dGhlbWVNb2RlOkcub3B0aW9uYWwoRy5lbnVtKFsibGlnaHQiLCJkYXJrIl0pKSx0aGVtZVZhcmlhYmxlczpHLm9wdGlvbmFsKEcucmVjb3JkKEcuc3RyaW5nKCksRy5zdHJpbmcoKS5vcihHLm51bWJlcigpKSkpLHczbVRoZW1lVmFyaWFibGVzOkcub3B0aW9uYWwoRy5yZWNvcmQoRy5zdHJpbmcoKSxHLnN0cmluZygpKSl9KSxfcGU9Ry5vYmplY3Qoe21ldGFkYXRhOkcub2JqZWN0KHtuYW1lOkcuc3RyaW5nKCksZGVzY3JpcHRpb246Ry5zdHJpbmcoKSx1cmw6Ry5zdHJpbmcoKSxpY29uczpHLmFycmF5KEcuc3RyaW5nKCkpfSkub3B0aW9uYWwoKSxzZGtWZXJzaW9uOkcuc3RyaW5nKCkub3B0aW9uYWwoKSxzZGtUeXBlOkcuc3RyaW5nKCkub3B0aW9uYWwoKSxwcm9qZWN0SWQ6Ry5zdHJpbmcoKX0pLGtwZT1HLm9iamVjdCh7dHlwZTpHLnN0cmluZygpfSksU3BlPUcub2JqZWN0KHthY3Rpb246Ry5lbnVtKFsiVkVSSUZZX0RFVklDRSIsIlZFUklGWV9PVFAiLCJDT05ORUNUIl0pfSksQXBlPUcub2JqZWN0KHt1cmw6Ry5zdHJpbmcoKX0pLFRwZT1HLm9iamVjdCh7dXNlck5hbWU6Ry5zdHJpbmcoKX0pLElwZT1HLm9iamVjdCh7ZW1haWw6Ry5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCksYWRkcmVzczpHLnN0cmluZygpLGNoYWluSWQ6Ry5zdHJpbmcoKS5vcihHLm51bWJlcigpKSxhY2NvdW50czpHLmFycmF5KEcub2JqZWN0KHthZGRyZXNzOkcuc3RyaW5nKCksdHlwZTpHLmVudW0oW2Z0LkFDQ09VTlRfVFlQRVMuRU9BLGZ0LkFDQ09VTlRfVFlQRVMuU01BUlRfQUNDT1VOVF0pfSkpLm9wdGlvbmFsKCksdXNlck5hbWU6Ry5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKCkscHJlZmVycmVkQWNjb3VudFR5cGU6Ry5vcHRpb25hbChHLnN0cmluZygpKX0pLFJwZT1HLm9iamVjdCh7YWN0aW9uOkcuZW51bShbIlZFUklGWV9QUklNQVJZX09UUCIsIlZFUklGWV9TRUNPTkRBUllfT1RQIl0pfSksTnBlPUcub2JqZWN0KHtlbWFpbDpHLnN0cmluZygpLmVtYWlsKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpLGFkZHJlc3M6Ry5zdHJpbmcoKSxjaGFpbklkOkcuc3RyaW5nKCkub3IoRy5udW1iZXIoKSksc21hcnRBY2NvdW50RGVwbG95ZWQ6Ry5vcHRpb25hbChHLmJvb2xlYW4oKSksYWNjb3VudHM6Ry5hcnJheShHLm9iamVjdCh7YWRkcmVzczpHLnN0cmluZygpLHR5cGU6Ry5lbnVtKFtmdC5BQ0NPVU5UX1RZUEVTLkVPQSxmdC5BQ0NPVU5UX1RZUEVTLlNNQVJUX0FDQ09VTlRdKX0pKS5vcHRpb25hbCgpLHByZWZlcnJlZEFjY291bnRUeXBlOkcub3B0aW9uYWwoRy5zdHJpbmcoKSl9KSxQcGU9Ry5vYmplY3Qoe3VyaTpHLnN0cmluZygpfSksT3BlPUcub2JqZWN0KHtpc0Nvbm5lY3RlZDpHLmJvb2xlYW4oKX0pLCRwZT1HLm9iamVjdCh7Y2hhaW5JZDpHLnN0cmluZygpLm9yKEcubnVtYmVyKCkpfSksTXBlPUcub2JqZWN0KHtjaGFpbklkOkcuc3RyaW5nKCkub3IoRy5udW1iZXIoKSl9KSxEcGU9Ry5vYmplY3Qoe25ld0VtYWlsOkcuc3RyaW5nKCkuZW1haWwoKX0pLEJwZT1HLm9iamVjdCh7c21hcnRBY2NvdW50RW5hYmxlZE5ldHdvcmtzOkcuYXJyYXkoRy5udW1iZXIoKSl9KTtHLm9iamVjdCh7YWRkcmVzczpHLnN0cmluZygpLGlzRGVwbG95ZWQ6Ry5ib29sZWFuKCl9KTtjb25zdCBMcGU9Ry5vYmplY3Qoe3ZlcnNpb246Ry5zdHJpbmcoKS5vcHRpb25hbCgpfSksVXBlPUcub2JqZWN0KHt0eXBlOkcuc3RyaW5nKCksYWRkcmVzczpHLnN0cmluZygpfSksRnBlPUcuYW55KCksanBlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJldGhfYWNjb3VudHMiKX0pLHpwZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX2Jsb2NrTnVtYmVyIil9KSxXcGU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9jYWxsIikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxIcGU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9jaGFpbklkIil9KSxxcGU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9lc3RpbWF0ZUdhcyIpLHBhcmFtczpHLmFycmF5KEcuYW55KCkpfSksVnBlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJldGhfZmVlSGlzdG9yeSIpLHBhcmFtczpHLmFycmF5KEcuYW55KCkpfSksR3BlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJldGhfZ2FzUHJpY2UiKX0pLEtwZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX2dldEFjY291bnQiKSxwYXJhbXM6Ry5hcnJheShHLmFueSgpKX0pLFpwZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX2dldEJhbGFuY2UiKSxwYXJhbXM6Ry5hcnJheShHLmFueSgpKX0pLFlwZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX2dldEJsb2NrQnlIYXNoIikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxKcGU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9nZXRCbG9ja0J5TnVtYmVyIikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxYcGU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9nZXRCbG9ja1JlY2VpcHRzIikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxRcGU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9nZXRCbG9ja1RyYW5zYWN0aW9uQ291bnRCeUhhc2giKSxwYXJhbXM6Ry5hcnJheShHLmFueSgpKX0pLGVmZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX2dldEJsb2NrVHJhbnNhY3Rpb25Db3VudEJ5TnVtYmVyIikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSx0ZmU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9nZXRDb2RlIikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxyZmU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9nZXRGaWx0ZXJDaGFuZ2VzIikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxuZmU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9nZXRGaWx0ZXJMb2dzIikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxpZmU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9nZXRMb2dzIikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxzZmU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9nZXRQcm9vZiIpLHBhcmFtczpHLmFycmF5KEcuYW55KCkpfSksb2ZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJldGhfZ2V0U3RvcmFnZUF0IikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxhZmU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9nZXRUcmFuc2FjdGlvbkJ5QmxvY2tIYXNoQW5kSW5kZXgiKSxwYXJhbXM6Ry5hcnJheShHLmFueSgpKX0pLGNmZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX2dldFRyYW5zYWN0aW9uQnlCbG9ja051bWJlckFuZEluZGV4IikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxsZmU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9nZXRUcmFuc2FjdGlvbkJ5SGFzaCIpLHBhcmFtczpHLmFycmF5KEcuYW55KCkpfSksdWZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJldGhfZ2V0VHJhbnNhY3Rpb25Db3VudCIpLHBhcmFtczpHLmFycmF5KEcuYW55KCkpfSksZGZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJldGhfZ2V0VHJhbnNhY3Rpb25SZWNlaXB0IikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxoZmU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9nZXRVbmNsZUNvdW50QnlCbG9ja0hhc2giKSxwYXJhbXM6Ry5hcnJheShHLmFueSgpKX0pLHBmZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX2dldFVuY2xlQ291bnRCeUJsb2NrTnVtYmVyIikscGFyYW1zOkcuYXJyYXkoRy5hbnkoKSl9KSxmZmU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9tYXhQcmlvcml0eUZlZVBlckdhcyIpfSksbWZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJldGhfbmV3QmxvY2tGaWx0ZXIiKX0pLGdmZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX25ld0ZpbHRlciIpLHBhcmFtczpHLmFycmF5KEcuYW55KCkpfSksd2ZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJldGhfbmV3UGVuZGluZ1RyYW5zYWN0aW9uRmlsdGVyIil9KSxiZmU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoImV0aF9zZW5kUmF3VHJhbnNhY3Rpb24iKSxwYXJhbXM6Ry5hcnJheShHLmFueSgpKX0pLHlmZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX3N5bmNpbmciKSxwYXJhbXM6Ry5hcnJheShHLmFueSgpKX0pLHZmZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX3VuaW5zdGFsbEZpbHRlciIpLHBhcmFtczpHLmFycmF5KEcuYW55KCkpfSkselM9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoInBlcnNvbmFsX3NpZ24iKSxwYXJhbXM6Ry5hcnJheShHLmFueSgpKX0pLEVmZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX3NpZ25UeXBlZERhdGFfdjQiKSxwYXJhbXM6Ry5hcnJheShHLmFueSgpKX0pLENmZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgiZXRoX3NlbmRUcmFuc2FjdGlvbiIpLHBhcmFtczpHLmFycmF5KEcuYW55KCkpfSkseGZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJzb2xhbmFfc2lnbk1lc3NhZ2UiKSxwYXJhbXM6Ry5vYmplY3Qoe21lc3NhZ2U6Ry5zdHJpbmcoKSxwdWJrZXk6Ry5zdHJpbmcoKX0pfSksX2ZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJzb2xhbmFfc2lnblRyYW5zYWN0aW9uIikscGFyYW1zOkcub2JqZWN0KHt0cmFuc2FjdGlvbjpHLnN0cmluZygpfSl9KSxrZmU9Ry5vYmplY3Qoe21ldGhvZDpHLmxpdGVyYWwoInNvbGFuYV9zaWduQWxsVHJhbnNhY3Rpb25zIikscGFyYW1zOkcub2JqZWN0KHt0cmFuc2FjdGlvbnM6Ry5hcnJheShHLnN0cmluZygpKX0pfSksU2ZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJzb2xhbmFfc2lnbkFuZFNlbmRUcmFuc2FjdGlvbiIpLHBhcmFtczpHLm9iamVjdCh7dHJhbnNhY3Rpb246Ry5zdHJpbmcoKSxvcHRpb25zOkcub2JqZWN0KHtza2lwUHJlZmxpZ2h0OkcuYm9vbGVhbigpLm9wdGlvbmFsKCkscHJlZmxpZ2h0Q29tbWl0bWVudDpHLmVudW0oWyJwcm9jZXNzZWQiLCJjb25maXJtZWQiLCJmaW5hbGl6ZWQiLCJyZWNlbnQiLCJzaW5nbGUiLCJzaW5nbGVHb3NzaXAiLCJyb290IiwibWF4Il0pLm9wdGlvbmFsKCksbWF4UmV0cmllczpHLm51bWJlcigpLm9wdGlvbmFsKCksbWluQ29udGV4dFNsb3Q6Ry5udW1iZXIoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pfSksQWZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJ3YWxsZXRfc2VuZENhbGxzIikscGFyYW1zOkcuYXJyYXkoRy5vYmplY3Qoe2NoYWluSWQ6Ry5zdHJpbmcoKS5vcihHLm51bWJlcigpKS5vcHRpb25hbCgpLGZyb206Ry5zdHJpbmcoKS5vcHRpb25hbCgpLHZlcnNpb246Ry5zdHJpbmcoKS5vcHRpb25hbCgpLGNhcGFiaWxpdGllczpHLmFueSgpLm9wdGlvbmFsKCksY2FsbHM6Ry5hcnJheShHLm9iamVjdCh7dG86Ry5zdHJpbmcoKS5zdGFydHNXaXRoKCIweCIpLGRhdGE6Ry5zdHJpbmcoKS5zdGFydHNXaXRoKCIweCIpLm9wdGlvbmFsKCksdmFsdWU6Ry5zdHJpbmcoKS5vcHRpb25hbCgpfSkpfSkpfSksVGZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJ3YWxsZXRfZ2V0Q2FsbHNTdGF0dXMiKSxwYXJhbXM6Ry5hcnJheShHLnN0cmluZygpKX0pLElmZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgid2FsbGV0X2dldENhcGFiaWxpdGllcyIpfSksUmZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJ3YWxsZXRfZ3JhbnRQZXJtaXNzaW9ucyIpLHBhcmFtczpHLmFycmF5KEcuYW55KCkpfSksTmZlPUcub2JqZWN0KHttZXRob2Q6Ry5saXRlcmFsKCJ3YWxsZXRfcmV2b2tlUGVybWlzc2lvbnMiKSxwYXJhbXM6Ry5hbnkoKX0pLFBmZT1HLm9iamVjdCh7bWV0aG9kOkcubGl0ZXJhbCgid2FsbGV0X2dldEFzc2V0cyIpLHBhcmFtczpHLmFueSgpfSksV1M9Ry5vYmplY3Qoe3Rva2VuOkcuc3RyaW5nKCl9KSx6ZT1HLm9iamVjdCh7aWQ6Ry5zdHJpbmcoKS5vcHRpb25hbCgpfSksR3A9e2FwcEV2ZW50OnplLmV4dGVuZCh7dHlwZTpqZSgiQVBQX1NXSVRDSF9ORVRXT1JLIikscGF5bG9hZDpmcGV9KS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkFQUF9DT05ORUNUX0VNQUlMIikscGF5bG9hZDptcGV9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJBUFBfQ09OTkVDVF9ERVZJQ0UiKX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkFQUF9DT05ORUNUX09UUCIpLHBheWxvYWQ6Z3BlfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiQVBQX0NPTk5FQ1RfU09DSUFMIikscGF5bG9hZDp3cGV9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJBUFBfR0VUX0ZBUkNBU1RFUl9VUkkiKX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkFQUF9DT05ORUNUX0ZBUkNBU1RFUiIpfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiQVBQX0dFVF9VU0VSIikscGF5bG9hZDpHLm9wdGlvbmFsKGJwZSl9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJBUFBfR0VUX1NPQ0lBTF9SRURJUkVDVF9VUkkiKSxwYXlsb2FkOnlwZX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkFQUF9TSUdOX09VVCIpfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiQVBQX0lTX0NPTk5FQ1RFRCIpLHBheWxvYWQ6Ry5vcHRpb25hbChXUyl9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJBUFBfR0VUX0NIQUlOX0lEIil9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJBUFBfR0VUX1NNQVJUX0FDQ09VTlRfRU5BQkxFRF9ORVRXT1JLUyIpfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiQVBQX0lOSVRfU01BUlRfQUNDT1VOVCIpfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiQVBQX1NFVF9QUkVGRVJSRURfQUNDT1VOVCIpLHBheWxvYWQ6a3BlfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiQVBQX1JQQ19SRVFVRVNUIikscGF5bG9hZDp6Uy5vcihQZmUpLm9yKGpwZSkub3IoenBlKS5vcihXcGUpLm9yKEhwZSkub3IocXBlKS5vcihWcGUpLm9yKEdwZSkub3IoS3BlKS5vcihacGUpLm9yKFlwZSkub3IoSnBlKS5vcihYcGUpLm9yKFFwZSkub3IoZWZlKS5vcih0ZmUpLm9yKHJmZSkub3IobmZlKS5vcihpZmUpLm9yKHNmZSkub3Iob2ZlKS5vcihhZmUpLm9yKGNmZSkub3IobGZlKS5vcih1ZmUpLm9yKGRmZSkub3IoaGZlKS5vcihwZmUpLm9yKGZmZSkub3IobWZlKS5vcihnZmUpLm9yKHdmZSkub3IoYmZlKS5vcih5ZmUpLm9yKHZmZSkub3IoelMpLm9yKEVmZSkub3IoQ2ZlKS5vcih4ZmUpLm9yKF9mZSkub3Ioa2ZlKS5vcihTZmUpLm9yKFRmZSkub3IoQWZlKS5vcihJZmUpLm9yKFJmZSkub3IoTmZlKX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkFQUF9VUERBVEVfRU1BSUwiKSxwYXlsb2FkOnZwZX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkFQUF9VUERBVEVfRU1BSUxfUFJJTUFSWV9PVFAiKSxwYXlsb2FkOkVwZX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkFQUF9VUERBVEVfRU1BSUxfU0VDT05EQVJZX09UUCIpLHBheWxvYWQ6Q3BlfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiQVBQX1NZTkNfVEhFTUUiKSxwYXlsb2FkOnhwZX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkFQUF9TWU5DX0RBUFBfREFUQSIpLHBheWxvYWQ6X3BlfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiQVBQX1JFTE9BRCIpfSkpLGZyYW1lRXZlbnQ6emUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9TV0lUQ0hfTkVUV09SS19FUlJPUiIpLHBheWxvYWQ6T3J9KS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkZSQU1FX1NXSVRDSF9ORVRXT1JLX1NVQ0NFU1MiKSxwYXlsb2FkOk1wZX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkZSQU1FX0NPTk5FQ1RfRU1BSUxfU1VDQ0VTUyIpLHBheWxvYWQ6U3BlfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiRlJBTUVfQ09OTkVDVF9FTUFJTF9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9HRVRfRkFSQ0FTVEVSX1VSSV9TVUNDRVNTIikscGF5bG9hZDpBcGV9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9HRVRfRkFSQ0FTVEVSX1VSSV9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9DT05ORUNUX0ZBUkNBU1RFUl9TVUNDRVNTIikscGF5bG9hZDpUcGV9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9DT05ORUNUX0ZBUkNBU1RFUl9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9DT05ORUNUX09UUF9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9DT05ORUNUX09UUF9TVUNDRVNTIil9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9DT05ORUNUX0RFVklDRV9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9DT05ORUNUX0RFVklDRV9TVUNDRVNTIil9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9DT05ORUNUX1NPQ0lBTF9TVUNDRVNTIikscGF5bG9hZDpJcGV9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9DT05ORUNUX1NPQ0lBTF9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9HRVRfVVNFUl9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9HRVRfVVNFUl9TVUNDRVNTIikscGF5bG9hZDpOcGV9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9HRVRfU09DSUFMX1JFRElSRUNUX1VSSV9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9HRVRfU09DSUFMX1JFRElSRUNUX1VSSV9TVUNDRVNTIikscGF5bG9hZDpQcGV9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9TSUdOX09VVF9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9TSUdOX09VVF9TVUNDRVNTIil9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9JU19DT05ORUNURURfRVJST1IiKSxwYXlsb2FkOk9yfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiRlJBTUVfSVNfQ09OTkVDVEVEX1NVQ0NFU1MiKSxwYXlsb2FkOk9wZX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkZSQU1FX0dFVF9DSEFJTl9JRF9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9HRVRfQ0hBSU5fSURfU1VDQ0VTUyIpLHBheWxvYWQ6JHBlfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiRlJBTUVfUlBDX1JFUVVFU1RfRVJST1IiKSxwYXlsb2FkOk9yfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiRlJBTUVfUlBDX1JFUVVFU1RfU1VDQ0VTUyIpLHBheWxvYWQ6RnBlfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiRlJBTUVfU0VTU0lPTl9VUERBVEUiKSxwYXlsb2FkOldTfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiRlJBTUVfVVBEQVRFX0VNQUlMX0VSUk9SIikscGF5bG9hZDpPcn0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkZSQU1FX1VQREFURV9FTUFJTF9TVUNDRVNTIikscGF5bG9hZDpScGV9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9VUERBVEVfRU1BSUxfUFJJTUFSWV9PVFBfRVJST1IiKSxwYXlsb2FkOk9yfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiRlJBTUVfVVBEQVRFX0VNQUlMX1BSSU1BUllfT1RQX1NVQ0NFU1MiKX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkZSQU1FX1VQREFURV9FTUFJTF9TRUNPTkRBUllfT1RQX0VSUk9SIikscGF5bG9hZDpPcn0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkZSQU1FX1VQREFURV9FTUFJTF9TRUNPTkRBUllfT1RQX1NVQ0NFU1MiKSxwYXlsb2FkOkRwZX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkZSQU1FX1NZTkNfVEhFTUVfRVJST1IiKSxwYXlsb2FkOk9yfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiRlJBTUVfU1lOQ19USEVNRV9TVUNDRVNTIil9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9TWU5DX0RBUFBfREFUQV9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9TWU5DX0RBUFBfREFUQV9TVUNDRVNTIil9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9HRVRfU01BUlRfQUNDT1VOVF9FTkFCTEVEX05FVFdPUktTX1NVQ0NFU1MiKSxwYXlsb2FkOkJwZX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkZSQU1FX0dFVF9TTUFSVF9BQ0NPVU5UX0VOQUJMRURfTkVUV09SS1NfRVJST1IiKSxwYXlsb2FkOk9yfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiRlJBTUVfSU5JVF9TTUFSVF9BQ0NPVU5UX0VSUk9SIikscGF5bG9hZDpPcn0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkZSQU1FX1NFVF9QUkVGRVJSRURfQUNDT1VOVF9TVUNDRVNTIikscGF5bG9hZDpVcGV9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9TRVRfUFJFRkVSUkVEX0FDQ09VTlRfRVJST1IiKSxwYXlsb2FkOk9yfSkpLm9yKHplLmV4dGVuZCh7dHlwZTpqZSgiRlJBTUVfUkVBRFkiKSxwYXlsb2FkOkxwZX0pKS5vcih6ZS5leHRlbmQoe3R5cGU6amUoIkZSQU1FX1JFTE9BRF9FUlJPUiIpLHBheWxvYWQ6T3J9KSkub3IoemUuZXh0ZW5kKHt0eXBlOmplKCJGUkFNRV9SRUxPQURfU1VDQ0VTUyIpfSkpfTtmdW5jdGlvbiBiMyh0LGU9e30pe3JldHVybiB0eXBlb2YgZT8udHlwZT09InN0cmluZyImJmU/LnR5cGU/LmluY2x1ZGVzKHQpfWNsYXNzIE9mZXtjb25zdHJ1Y3Rvcih7cHJvamVjdElkOmUsaXNBcHBDbGllbnQ6cj0hMSxjaGFpbklkOm49ImVpcDE1NToxIixlbmFibGVMb2dnZXI6cz0hMH0pe2lmKHRoaXMuaWZyYW1lPW51bGwsdGhpcy5pZnJhbWVJc1JlYWR5PSExLHRoaXMucnBjVXJsPXllLkJMT0NLQ0hBSU5fQVBJX1JQQ19VUkwsdGhpcy5pbml0RnJhbWU9KCk9Pntjb25zdCBpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3M20taWZyYW1lIik7dGhpcy5pZnJhbWUmJiFpJiZkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuaWZyYW1lKX0sdGhpcy5ldmVudHM9e3JlZ2lzdGVyRnJhbWVFdmVudEhhbmRsZXI6KGksbyxhKT0+e2Z1bmN0aW9uIGMoe2RhdGE6bH0pe2lmKCFiMyhIZS5GUkFNRV9FVkVOVF9LRVksbCkpcmV0dXJuO2NvbnN0IGQ9R3AuZnJhbWVFdmVudC5wYXJzZShsKTtkLmlkPT09aSYmKG8oZCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGMpKX1Ubi5pc0NsaWVudCYmKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixjKSxhLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixjKX0pKX0sb25GcmFtZUV2ZW50Omk9PntUbi5pc0NsaWVudCYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh7ZGF0YTpvfSk9PntpZighYjMoSGUuRlJBTUVfRVZFTlRfS0VZLG8pKXJldHVybjtjb25zdCBhPUdwLmZyYW1lRXZlbnQucGFyc2Uobyk7aShhKX0pfSxvbkFwcEV2ZW50Omk9PntUbi5pc0NsaWVudCYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh7ZGF0YTpvfSk9PntpZighYjMoSGUuQVBQX0VWRU5UX0tFWSxvKSlyZXR1cm47Y29uc3QgYT1HcC5hcHBFdmVudC5wYXJzZShvKTtpKGEpfSl9LHBvc3RBcHBFdmVudDppPT57aWYoVG4uaXNDbGllbnQpe2lmKCF0aGlzLmlmcmFtZT8uY29udGVudFdpbmRvdyl0aHJvdyBuZXcgRXJyb3IoIlczbUZyYW1lOiBpZnJhbWUgaXMgbm90IHNldCIpO0dwLmFwcEV2ZW50LnBhcnNlKGkpLHRoaXMuaWZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoaSwiKiIpfX0scG9zdEZyYW1lRXZlbnQ6aT0+e2lmKFRuLmlzQ2xpZW50KXtpZighcGFyZW50KXRocm93IG5ldyBFcnJvcigiVzNtRnJhbWU6IHBhcmVudCBpcyBub3Qgc2V0Iik7R3AuZnJhbWVFdmVudC5wYXJzZShpKSxwYXJlbnQucG9zdE1lc3NhZ2UoaSwiKiIpfX19LHRoaXMucHJvamVjdElkPWUsdGhpcy5mcmFtZUxvYWRQcm9taXNlPW5ldyBQcm9taXNlKChpLG8pPT57dGhpcy5mcmFtZUxvYWRQcm9taXNlUmVzb2x2ZXI9e3Jlc29sdmU6aSxyZWplY3Q6b319KSxyJiYodGhpcy5mcmFtZUxvYWRQcm9taXNlPW5ldyBQcm9taXNlKChpLG8pPT57dGhpcy5mcmFtZUxvYWRQcm9taXNlUmVzb2x2ZXI9e3Jlc29sdmU6aSxyZWplY3Q6b319KSxUbi5pc0NsaWVudCkpe2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7aS5pZD0idzNtLWlmcmFtZSIsaS5zcmM9YCR7SGRlfT9wcm9qZWN0SWQ9JHtlfSZjaGFpbklkPSR7bn0mdmVyc2lvbj0ke1ZkZX0mZW5hYmxlTG9nZ2VyPSR7c31gLGkubmFtZT0idzNtLXNlY3VyZS1pZnJhbWUiLGkuc3R5bGUucG9zaXRpb249ImZpeGVkIixpLnN0eWxlLnpJbmRleD0iOTk5OTk5IixpLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGkuc3R5bGUuYm9yZGVyPSJub25lIixpLnN0eWxlLmFuaW1hdGlvbkRlbGF5PSIwcywgNTBtcyIsaS5zdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzPSJjbGFtcCgwcHgsIHZhcigtLXd1aS1ib3JkZXItcmFkaXVzLWwpLCA0NHB4KSIsaS5zdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cz0iY2xhbXAoMHB4LCB2YXIoLS13dWktYm9yZGVyLXJhZGl1cy1sKSwgNDRweCkiLHRoaXMuaWZyYW1lPWksdGhpcy5pZnJhbWUub25lcnJvcj0oKT0+e3RoaXMuZnJhbWVMb2FkUHJvbWlzZVJlc29sdmVyPy5yZWplY3QoIlVuYWJsZSB0byBsb2FkIGVtYWlsIGxvZ2luIGRlcGVuZGVuY3kiKX0sdGhpcy5ldmVudHMub25GcmFtZUV2ZW50KG89PntvLnR5cGU9PT0iQHczbS1mcmFtZS9SRUFEWSImJih0aGlzLmlmcmFtZUlzUmVhZHk9ITAsdGhpcy5mcmFtZUxvYWRQcm9taXNlUmVzb2x2ZXI/LnJlc29sdmUodm9pZCAwKSl9KX19Z2V0IG5ldHdvcmtzKCl7Y29uc3QgZT1bImVpcDE1NToxIiwiZWlwMTU1OjUiLCJlaXAxNTU6MTExNTUxMTEiLCJlaXAxNTU6MTAiLCJlaXAxNTU6NDIwIiwiZWlwMTU1OjQyMTYxIiwiZWlwMTU1OjQyMTYxMyIsImVpcDE1NToxMzciLCJlaXAxNTU6ODAwMDEiLCJlaXAxNTU6NDIyMjAiLCJlaXAxNTU6MTMxMzE2MTU1NCIsImVpcDE1NToxMzEzMTYxNTU1IiwiZWlwMTU1OjU2IiwiZWlwMTU1Ojk3IiwiZWlwMTU1OjQzMTE0IiwiZWlwMTU1OjQzMTEzIiwiZWlwMTU1OjMyNCIsImVpcDE1NToyODAiLCJlaXAxNTU6MTAwIiwiZWlwMTU1Ojg0NTMiLCJlaXAxNTU6ODQ1MzEiLCJlaXAxNTU6ODQ1MzIiLCJlaXAxNTU6Nzc3Nzc3NyIsImVpcDE1NTo5OTkiLCJzb2xhbmE6NWV5a3Q0VXNGdjhQOE5KZFRSRXBZMXZ6cUtxWkt2ZHAiLCJzb2xhbmE6NHVoY1ZKeVU5cEprdlF5Uzg4dVJEaXN3SFhTQ2tZM3oiLCJzb2xhbmE6RXRXVFJBQlphWXE2aU1mZVlLb3VSdTE2NlZVMnhxYTEiXS5tYXAocj0+KHtbcl06e3JwY1VybDpgJHt0aGlzLnJwY1VybH0vdjEvP2NoYWluSWQ9JHtyfSZwcm9qZWN0SWQ9JHt0aGlzLnByb2plY3RJZH1gLGNoYWluSWQ6cn19KSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sLi4uZSl9fWNsYXNzICRmZXtjb25zdHJ1Y3RvcihlKXtjb25zdCByPWxwKHtsZXZlbDpxZGV9KSx7bG9nZ2VyOm4sY2h1bmtMb2dnZXJDb250cm9sbGVyOnN9PUU2KHtvcHRzOnJ9KTt0aGlzLmxvZ2dlcj1ObihuLHRoaXMuY29uc3RydWN0b3IubmFtZSksdGhpcy5jaHVua0xvZ2dlckNvbnRyb2xsZXI9cyx0eXBlb2Ygd2luZG93PCJ1IiYmdGhpcy5jaHVua0xvZ2dlckNvbnRyb2xsZXI/LmRvd25sb2FkTG9nc0Jsb2JJbkJyb3dzZXImJih3aW5kb3cuZG93bmxvYWRBcHBLaXRMb2dzQmxvYnx8KHdpbmRvdy5kb3dubG9hZEFwcEtpdExvZ3NCbG9iPXt9KSx3aW5kb3cuZG93bmxvYWRBcHBLaXRMb2dzQmxvYi5zZGs9KCk9Pnt0aGlzLmNodW5rTG9nZ2VyQ29udHJvbGxlcj8uZG93bmxvYWRMb2dzQmxvYkluQnJvd3NlciYmdGhpcy5jaHVua0xvZ2dlckNvbnRyb2xsZXIuZG93bmxvYWRMb2dzQmxvYkluQnJvd3Nlcih7cHJvamVjdElkOmV9KX0pfX1jbGFzcyBaNntjb25zdHJ1Y3Rvcih7cHJvamVjdElkOmUsY2hhaW5JZDpyLGVuYWJsZUxvZ2dlcjpuPSEwLG9uVGltZW91dDpzLGFib3J0Q29udHJvbGxlcjppfSl7dGhpcy5vcGVuUnBjUmVxdWVzdHM9W10sdGhpcy5pc0luaXRpYWxpemVkPSExLG4mJih0aGlzLnczbUxvZ2dlcj1uZXcgJGZlKGUpKSx0aGlzLmFib3J0Q29udHJvbGxlcj1pLHRoaXMudzNtRnJhbWU9bmV3IE9mZSh7cHJvamVjdElkOmUsaXNBcHBDbGllbnQ6ITAsY2hhaW5JZDpyLGVuYWJsZUxvZ2dlcjpufSksdGhpcy5vblRpbWVvdXQ9cyx0aGlzLmdldExvZ2luRW1haWxVc2VkKCkmJnRoaXMuY3JlYXRlRnJhbWUoKX1hc3luYyBjcmVhdGVGcmFtZSgpe3RoaXMudzNtRnJhbWUuaW5pdEZyYW1lKCksdGhpcy5pbml0UHJvbWlzZT1uZXcgUHJvbWlzZShlPT57dGhpcy53M21GcmFtZS5ldmVudHMub25GcmFtZUV2ZW50KHI9PntyLnR5cGU9PT1IZS5GUkFNRV9SRUFEWSYmc2V0VGltZW91dCgoKT0+e2UoKX0sNTAwKX0pfSksYXdhaXQgdGhpcy5pbml0UHJvbWlzZSx0aGlzLmlzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5pbml0UHJvbWlzZT12b2lkIDB9YXN5bmMgaW5pdCgpe2lmKCF0aGlzLmlzSW5pdGlhbGl6ZWQpe2lmKHRoaXMuaW5pdFByb21pc2Upe2F3YWl0IHRoaXMuaW5pdFByb21pc2U7cmV0dXJufWF3YWl0IHRoaXMuY3JlYXRlRnJhbWUoKX19Z2V0TG9naW5FbWFpbFVzZWQoKXtyZXR1cm4hIXluLmdldChIZS5FTUFJTF9MT0dJTl9VU0VEX0tFWSl9Z2V0RW1haWwoKXtyZXR1cm4geW4uZ2V0KEhlLkVNQUlMKX1nZXRVc2VybmFtZSgpe3JldHVybiB5bi5nZXQoSGUuU09DSUFMX1VTRVJOQU1FKX1hc3luYyByZWxvYWQoKXt0cnl7YXdhaXQgdGhpcy5hcHBFdmVudCh7dHlwZTpIZS5BUFBfUkVMT0FEfSl9Y2F0Y2goZSl7dGhyb3cgdGhpcy53M21Mb2dnZXI/LmxvZ2dlci5lcnJvcih7ZXJyb3I6ZX0sIkVycm9yIHJlbG9hZGluZyBpZnJhbWUiKSxlfX1hc3luYyBjb25uZWN0RW1haWwoZSl7dHJ5e1RuLmNoZWNrSWZBbGxvd2VkVG9UcmlnZ2VyRW1haWwoKSxhd2FpdCB0aGlzLmluaXQoKTtjb25zdCByPWF3YWl0IHRoaXMuYXBwRXZlbnQoe3R5cGU6SGUuQVBQX0NPTk5FQ1RfRU1BSUwscGF5bG9hZDplfSk7cmV0dXJuIHRoaXMuc2V0TmV3TGFzdEVtYWlsTG9naW5UaW1lKCkscn1jYXRjaChyKXt0aHJvdyB0aGlzLnczbUxvZ2dlcj8ubG9nZ2VyLmVycm9yKHtlcnJvcjpyfSwiRXJyb3IgY29ubmVjdGluZyBlbWFpbCIpLHJ9fWFzeW5jIGNvbm5lY3REZXZpY2UoKXt0cnl7cmV0dXJuIHRoaXMuYXBwRXZlbnQoe3R5cGU6SGUuQVBQX0NPTk5FQ1RfREVWSUNFfSl9Y2F0Y2goZSl7dGhyb3cgdGhpcy53M21Mb2dnZXI/LmxvZ2dlci5lcnJvcih7ZXJyb3I6ZX0sIkVycm9yIGNvbm5lY3RpbmcgZGV2aWNlIiksZX19YXN5bmMgY29ubmVjdE90cChlKXt0cnl7cmV0dXJuIHRoaXMuYXBwRXZlbnQoe3R5cGU6SGUuQVBQX0NPTk5FQ1RfT1RQLHBheWxvYWQ6ZX0pfWNhdGNoKHIpe3Rocm93IHRoaXMudzNtTG9nZ2VyPy5sb2dnZXIuZXJyb3Ioe2Vycm9yOnJ9LCJFcnJvciBjb25uZWN0aW5nIG90cCIpLHJ9fWFzeW5jIGlzQ29ubmVjdGVkKCl7dHJ5e2lmKCF0aGlzLmdldExvZ2luRW1haWxVc2VkKCkpcmV0dXJue2lzQ29ubmVjdGVkOiExfTtjb25zdCBlPWF3YWl0IHRoaXMuYXBwRXZlbnQoe3R5cGU6SGUuQVBQX0lTX0NPTk5FQ1RFRH0pO3JldHVybiBlPy5pc0Nvbm5lY3RlZHx8dGhpcy5kZWxldGVBdXRoTG9naW5DYWNoZSgpLGV9Y2F0Y2goZSl7dGhyb3cgdGhpcy5kZWxldGVBdXRoTG9naW5DYWNoZSgpLHRoaXMudzNtTG9nZ2VyPy5sb2dnZXIuZXJyb3Ioe2Vycm9yOmV9LCJFcnJvciBjaGVja2luZyBjb25uZWN0aW9uIiksZX19YXN5bmMgZ2V0Q2hhaW5JZCgpe3RyeXtjb25zdCBlPWF3YWl0IHRoaXMuYXBwRXZlbnQoe3R5cGU6SGUuQVBQX0dFVF9DSEFJTl9JRH0pO3JldHVybiB0aGlzLnNldExhc3RVc2VkQ2hhaW5JZChlLmNoYWluSWQpLGV9Y2F0Y2goZSl7dGhyb3cgdGhpcy53M21Mb2dnZXI/LmxvZ2dlci5lcnJvcih7ZXJyb3I6ZX0sIkVycm9yIGdldHRpbmcgY2hhaW4gaWQiKSxlfX1hc3luYyBnZXRTb2NpYWxSZWRpcmVjdFVyaShlKXt0cnl7cmV0dXJuIGF3YWl0IHRoaXMuaW5pdCgpLHRoaXMuYXBwRXZlbnQoe3R5cGU6SGUuQVBQX0dFVF9TT0NJQUxfUkVESVJFQ1RfVVJJLHBheWxvYWQ6ZX0pfWNhdGNoKHIpe3Rocm93IHRoaXMudzNtTG9nZ2VyPy5sb2dnZXIuZXJyb3Ioe2Vycm9yOnJ9LCJFcnJvciBnZXR0aW5nIHNvY2lhbCByZWRpcmVjdCB1cmkiKSxyfX1hc3luYyB1cGRhdGVFbWFpbChlKXt0cnl7Y29uc3Qgcj1hd2FpdCB0aGlzLmFwcEV2ZW50KHt0eXBlOkhlLkFQUF9VUERBVEVfRU1BSUwscGF5bG9hZDplfSk7cmV0dXJuIHRoaXMuc2V0TmV3TGFzdEVtYWlsTG9naW5UaW1lKCkscn1jYXRjaChyKXt0aHJvdyB0aGlzLnczbUxvZ2dlcj8ubG9nZ2VyLmVycm9yKHtlcnJvcjpyfSwiRXJyb3IgdXBkYXRpbmcgZW1haWwiKSxyfX1hc3luYyB1cGRhdGVFbWFpbFByaW1hcnlPdHAoZSl7dHJ5e3JldHVybiB0aGlzLmFwcEV2ZW50KHt0eXBlOkhlLkFQUF9VUERBVEVfRU1BSUxfUFJJTUFSWV9PVFAscGF5bG9hZDplfSl9Y2F0Y2gocil7dGhyb3cgdGhpcy53M21Mb2dnZXI/LmxvZ2dlci5lcnJvcih7ZXJyb3I6cn0sIkVycm9yIHVwZGF0aW5nIGVtYWlsIHByaW1hcnkgb3RwIikscn19YXN5bmMgdXBkYXRlRW1haWxTZWNvbmRhcnlPdHAoZSl7dHJ5e2NvbnN0IHI9YXdhaXQgdGhpcy5hcHBFdmVudCh7dHlwZTpIZS5BUFBfVVBEQVRFX0VNQUlMX1NFQ09OREFSWV9PVFAscGF5bG9hZDplfSk7cmV0dXJuIHRoaXMuc2V0TG9naW5TdWNjZXNzKHIubmV3RW1haWwpLHJ9Y2F0Y2gocil7dGhyb3cgdGhpcy53M21Mb2dnZXI/LmxvZ2dlci5lcnJvcih7ZXJyb3I6cn0sIkVycm9yIHVwZGF0aW5nIGVtYWlsIHNlY29uZGFyeSBvdHAiKSxyfX1hc3luYyBzeW5jVGhlbWUoZSl7dHJ5e3JldHVybiB0aGlzLmFwcEV2ZW50KHt0eXBlOkhlLkFQUF9TWU5DX1RIRU1FLHBheWxvYWQ6ZX0pfWNhdGNoKHIpe3Rocm93IHRoaXMudzNtTG9nZ2VyPy5sb2dnZXIuZXJyb3Ioe2Vycm9yOnJ9LCJFcnJvciBzeW5jaW5nIHRoZW1lIikscn19YXN5bmMgc3luY0RhcHBEYXRhKGUpe3RyeXtyZXR1cm4gdGhpcy5hcHBFdmVudCh7dHlwZTpIZS5BUFBfU1lOQ19EQVBQX0RBVEEscGF5bG9hZDplfSl9Y2F0Y2gocil7dGhyb3cgdGhpcy53M21Mb2dnZXI/LmxvZ2dlci5lcnJvcih7ZXJyb3I6cn0sIkVycm9yIHN5bmNpbmcgZGFwcCBkYXRhIikscn19YXN5bmMgZ2V0U21hcnRBY2NvdW50RW5hYmxlZE5ldHdvcmtzKCl7dHJ5e2NvbnN0IGU9YXdhaXQgdGhpcy5hcHBFdmVudCh7dHlwZTpIZS5BUFBfR0VUX1NNQVJUX0FDQ09VTlRfRU5BQkxFRF9ORVRXT1JLU30pO3JldHVybiB0aGlzLnBlcnNpc3RTbWFydEFjY291bnRFbmFibGVkTmV0d29ya3MoZS5zbWFydEFjY291bnRFbmFibGVkTmV0d29ya3MpLGV9Y2F0Y2goZSl7dGhyb3cgdGhpcy5wZXJzaXN0U21hcnRBY2NvdW50RW5hYmxlZE5ldHdvcmtzKFtdKSx0aGlzLnczbUxvZ2dlcj8ubG9nZ2VyLmVycm9yKHtlcnJvcjplfSwiRXJyb3IgZ2V0dGluZyBzbWFydCBhY2NvdW50IGVuYWJsZWQgbmV0d29ya3MiKSxlfX1hc3luYyBzZXRQcmVmZXJyZWRBY2NvdW50KGUpe3RyeXtyZXR1cm4gdGhpcy5hcHBFdmVudCh7dHlwZTpIZS5BUFBfU0VUX1BSRUZFUlJFRF9BQ0NPVU5ULHBheWxvYWQ6e3R5cGU6ZX19KX1jYXRjaChyKXt0aHJvdyB0aGlzLnczbUxvZ2dlcj8ubG9nZ2VyLmVycm9yKHtlcnJvcjpyfSwiRXJyb3Igc2V0dGluZyBwcmVmZXJyZWQgYWNjb3VudCIpLHJ9fWFzeW5jIGNvbm5lY3QoZSl7aWYoZT8uc29jaWFsVXJpKXRyeXthd2FpdCB0aGlzLmluaXQoKTtjb25zdCByPWF3YWl0IHRoaXMuYXBwRXZlbnQoe3R5cGU6SGUuQVBQX0NPTk5FQ1RfU09DSUFMLHBheWxvYWQ6e3VyaTplLnNvY2lhbFVyaSxwcmVmZXJyZWRBY2NvdW50VHlwZTplLnByZWZlcnJlZEFjY291bnRUeXBlLGNoYWluSWQ6ZS5jaGFpbklkfX0pO3JldHVybiByLnVzZXJOYW1lJiZ0aGlzLnNldFNvY2lhbExvZ2luU3VjY2VzcyhyLnVzZXJOYW1lKSx0aGlzLnNldExvZ2luU3VjY2VzcyhyLmVtYWlsKSx0aGlzLnNldExhc3RVc2VkQ2hhaW5JZChyLmNoYWluSWQpLHRoaXMudXNlcj1yLHJ9Y2F0Y2gocil7dGhyb3cgdGhpcy53M21Mb2dnZXI/LmxvZ2dlci5lcnJvcih7ZXJyb3I6cn0sIkVycm9yIGNvbm5lY3Rpbmcgc29jaWFsIikscn1lbHNlIHRyeXtjb25zdCByPWU/LmNoYWluSWR8fHRoaXMuZ2V0TGFzdFVzZWRDaGFpbklkKCl8fDEsbj1hd2FpdCB0aGlzLmdldFVzZXIoe2NoYWluSWQ6cixwcmVmZXJyZWRBY2NvdW50VHlwZTplPy5wcmVmZXJyZWRBY2NvdW50VHlwZX0pO3JldHVybiB0aGlzLnNldExvZ2luU3VjY2VzcyhuLmVtYWlsKSx0aGlzLnNldExhc3RVc2VkQ2hhaW5JZChuLmNoYWluSWQpLHRoaXMudXNlcj1uLG59Y2F0Y2gocil7dGhyb3cgdGhpcy53M21Mb2dnZXI/LmxvZ2dlci5lcnJvcih7ZXJyb3I6cn0sIkVycm9yIGNvbm5lY3RpbmciKSxyfX1hc3luYyBnZXRVc2VyKGUpe3RyeXthd2FpdCB0aGlzLmluaXQoKTtjb25zdCByPWU/LmNoYWluSWR8fHRoaXMuZ2V0TGFzdFVzZWRDaGFpbklkKCl8fDEsbj1hd2FpdCB0aGlzLmFwcEV2ZW50KHt0eXBlOkhlLkFQUF9HRVRfVVNFUixwYXlsb2FkOnsuLi5lLGNoYWluSWQ6cn19KTtyZXR1cm4gdGhpcy51c2VyPW4sbn1jYXRjaChyKXt0aHJvdyB0aGlzLnczbUxvZ2dlcj8ubG9nZ2VyLmVycm9yKHtlcnJvcjpyfSwiRXJyb3IgY29ubmVjdGluZyIpLHJ9fWFzeW5jIGNvbm5lY3RTb2NpYWwoZSl7dHJ5e2F3YWl0IHRoaXMuaW5pdCgpO2NvbnN0IHI9YXdhaXQgdGhpcy5hcHBFdmVudCh7dHlwZTpIZS5BUFBfQ09OTkVDVF9TT0NJQUwscGF5bG9hZDp7dXJpOmV9fSk7cmV0dXJuIHIudXNlck5hbWUmJnRoaXMuc2V0U29jaWFsTG9naW5TdWNjZXNzKHIudXNlck5hbWUpLHJ9Y2F0Y2gocil7dGhyb3cgdGhpcy53M21Mb2dnZXI/LmxvZ2dlci5lcnJvcih7ZXJyb3I6cn0sIkVycm9yIGNvbm5lY3Rpbmcgc29jaWFsIikscn19YXN5bmMgZ2V0RmFyY2FzdGVyVXJpKCl7dHJ5e3JldHVybiBhd2FpdCB0aGlzLmluaXQoKSxhd2FpdCB0aGlzLmFwcEV2ZW50KHt0eXBlOkhlLkFQUF9HRVRfRkFSQ0FTVEVSX1VSSX0pfWNhdGNoKGUpe3Rocm93IHRoaXMudzNtTG9nZ2VyPy5sb2dnZXIuZXJyb3Ioe2Vycm9yOmV9LCJFcnJvciBnZXR0aW5nIGZhcmNhc3RlciB1cmkiKSxlfX1hc3luYyBjb25uZWN0RmFyY2FzdGVyKCl7dHJ5e2NvbnN0IGU9YXdhaXQgdGhpcy5hcHBFdmVudCh7dHlwZTpIZS5BUFBfQ09OTkVDVF9GQVJDQVNURVJ9KTtyZXR1cm4gZS51c2VyTmFtZSYmdGhpcy5zZXRTb2NpYWxMb2dpblN1Y2Nlc3MoZS51c2VyTmFtZSksZX1jYXRjaChlKXt0aHJvdyB0aGlzLnczbUxvZ2dlcj8ubG9nZ2VyLmVycm9yKHtlcnJvcjplfSwiRXJyb3IgY29ubmVjdGluZyBmYXJjYXN0ZXIiKSxlfX1hc3luYyBzd2l0Y2hOZXR3b3JrKGUpe3RyeXtjb25zdCByPWF3YWl0IHRoaXMuYXBwRXZlbnQoe3R5cGU6SGUuQVBQX1NXSVRDSF9ORVRXT1JLLHBheWxvYWQ6e2NoYWluSWQ6ZX19KTtyZXR1cm4gdGhpcy5zZXRMYXN0VXNlZENoYWluSWQoci5jaGFpbklkKSxyfWNhdGNoKHIpe3Rocm93IHRoaXMudzNtTG9nZ2VyPy5sb2dnZXIuZXJyb3Ioe2Vycm9yOnJ9LCJFcnJvciBzd2l0Y2hpbmcgbmV0d29yayIpLHJ9fWFzeW5jIGRpc2Nvbm5lY3QoKXt0cnl7cmV0dXJuIHRoaXMuZGVsZXRlQXV0aExvZ2luQ2FjaGUoKSxhd2FpdCBuZXcgUHJvbWlzZShhc3luYyByPT57Y29uc3Qgbj1zZXRUaW1lb3V0KCgpPT57cigpfSwzZTMpO2F3YWl0IHRoaXMuYXBwRXZlbnQoe3R5cGU6SGUuQVBQX1NJR05fT1VUfSksY2xlYXJUaW1lb3V0KG4pLHIoKX0pfWNhdGNoKGUpe3Rocm93IHRoaXMudzNtTG9nZ2VyPy5sb2dnZXIuZXJyb3Ioe2Vycm9yOmV9LCJFcnJvciBkaXNjb25uZWN0aW5nIiksZX19YXN5bmMgcmVxdWVzdChlKXt0cnl7aWYoZnQuR0VUX0NIQUlOX0lEPT09ZS5tZXRob2QpcmV0dXJuIHRoaXMuZ2V0TGFzdFVzZWRDaGFpbklkKCk7dGhpcy5ycGNSZXF1ZXN0SGFuZGxlcj8uKGUpO2NvbnN0IHI9YXdhaXQgdGhpcy5hcHBFdmVudCh7dHlwZTpIZS5BUFBfUlBDX1JFUVVFU1QscGF5bG9hZDplfSk7cmV0dXJuIHRoaXMucnBjU3VjY2Vzc0hhbmRsZXI/LihyLGUpLHJ9Y2F0Y2gocil7dGhyb3cgdGhpcy5ycGNFcnJvckhhbmRsZXI/LihyLGUpLHRoaXMudzNtTG9nZ2VyPy5sb2dnZXIuZXJyb3Ioe2Vycm9yOnJ9LCJFcnJvciByZXF1ZXN0aW5nIikscn19b25ScGNSZXF1ZXN0KGUpe3RoaXMucnBjUmVxdWVzdEhhbmRsZXI9ZX1vblJwY1N1Y2Nlc3MoZSl7dGhpcy5ycGNTdWNjZXNzSGFuZGxlcj1lfW9uUnBjRXJyb3IoZSl7dGhpcy5ycGNFcnJvckhhbmRsZXI9ZX1vbklzQ29ubmVjdGVkKGUpe3RoaXMudzNtRnJhbWUuZXZlbnRzLm9uRnJhbWVFdmVudChyPT57ci50eXBlPT09SGUuRlJBTUVfSVNfQ09OTkVDVEVEX1NVQ0NFU1MmJnIucGF5bG9hZC5pc0Nvbm5lY3RlZCYmZSgpfSl9b25Ob3RDb25uZWN0ZWQoZSl7dGhpcy53M21GcmFtZS5ldmVudHMub25GcmFtZUV2ZW50KHI9PntyLnR5cGU9PT1IZS5GUkFNRV9JU19DT05ORUNURURfRVJST1ImJmUoKSxyLnR5cGU9PT1IZS5GUkFNRV9JU19DT05ORUNURURfU1VDQ0VTUyYmIXIucGF5bG9hZC5pc0Nvbm5lY3RlZCYmZSgpfSl9b25Db25uZWN0KGUpe3RoaXMudzNtRnJhbWUuZXZlbnRzLm9uRnJhbWVFdmVudChyPT57ci50eXBlPT09SGUuRlJBTUVfR0VUX1VTRVJfU1VDQ0VTUyYmZShyLnBheWxvYWQpfSl9b25Tb2NpYWxDb25uZWN0ZWQoZSl7dGhpcy53M21GcmFtZS5ldmVudHMub25GcmFtZUV2ZW50KHI9PntyLnR5cGU9PT1IZS5GUkFNRV9DT05ORUNUX1NPQ0lBTF9TVUNDRVNTJiZlKHIucGF5bG9hZCl9KX1hc3luYyBnZXRDYXBhYmlsaXRpZXMoKXt0cnl7cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ3YWxsZXRfZ2V0Q2FwYWJpbGl0aWVzIn0pfHx7fX1jYXRjaHtyZXR1cm57fX19b25TZXRQcmVmZXJyZWRBY2NvdW50KGUpe3RoaXMudzNtRnJhbWUuZXZlbnRzLm9uRnJhbWVFdmVudChyPT57ci50eXBlPT09SGUuRlJBTUVfU0VUX1BSRUZFUlJFRF9BQ0NPVU5UX1NVQ0NFU1M/ZShyLnBheWxvYWQpOnIudHlwZT09PUhlLkZSQU1FX1NFVF9QUkVGRVJSRURfQUNDT1VOVF9FUlJPUiYmZSh7dHlwZTpmdC5BQ0NPVU5UX1RZUEVTLkVPQX0pfSl9b25HZXRTbWFydEFjY291bnRFbmFibGVkTmV0d29ya3MoZSl7dGhpcy53M21GcmFtZS5ldmVudHMub25GcmFtZUV2ZW50KHI9PntyLnR5cGU9PT1IZS5GUkFNRV9HRVRfU01BUlRfQUNDT1VOVF9FTkFCTEVEX05FVFdPUktTX1NVQ0NFU1M/ZShyLnBheWxvYWQuc21hcnRBY2NvdW50RW5hYmxlZE5ldHdvcmtzKTpyLnR5cGU9PT1IZS5GUkFNRV9HRVRfU01BUlRfQUNDT1VOVF9FTkFCTEVEX05FVFdPUktTX0VSUk9SJiZlKFtdKX0pfWdldEF2YWlsYWJsZUNoYWluSWRzKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMudzNtRnJhbWUubmV0d29ya3MpfXJlamVjdFJwY1JlcXVlc3RzKCl7dHJ5e3RoaXMub3BlblJwY1JlcXVlc3RzLmZvckVhY2goKHthYm9ydENvbnRyb2xsZXI6ZSxtZXRob2Q6cn0pPT57ZnQuU0FGRV9SUENfTUVUSE9EUy5pbmNsdWRlcyhyKXx8ZS5hYm9ydCgpfSksdGhpcy5vcGVuUnBjUmVxdWVzdHM9W119Y2F0Y2goZSl7dGhpcy53M21Mb2dnZXI/LmxvZ2dlci5lcnJvcih7ZXJyb3I6ZX0sIkVycm9yIGFib3J0aW5nIFJQQyByZXF1ZXN0Iil9fWFzeW5jIGFwcEV2ZW50KGUpe2xldCByLG47ZnVuY3Rpb24gcyhjKXtyZXR1cm4gYy5yZXBsYWNlKCJAdzNtLWFwcC8iLCIiKX1jb25zdCBpPVtIZS5BUFBfU1lOQ19EQVBQX0RBVEEsSGUuQVBQX1NZTkNfVEhFTUUsSGUuQVBQX1NFVF9QUkVGRVJSRURfQUNDT1VOVF0sbz1zKGUudHlwZSk7cmV0dXJuIXRoaXMudzNtRnJhbWUuaWZyYW1lSXNSZWFkeSYmIWkuaW5jbHVkZXMoZS50eXBlKSYmKG49c2V0VGltZW91dCgoKT0+e3RoaXMub25UaW1lb3V0Py4oImlmcmFtZV9sb2FkX2ZhaWxlZCIpLHRoaXMuYWJvcnRDb250cm9sbGVyLmFib3J0KCl9LDJlNCkpLGF3YWl0IHRoaXMudzNtRnJhbWUuZnJhbWVMb2FkUHJvbWlzZSxjbGVhclRpbWVvdXQobiksW0hlLkFQUF9DT05ORUNUX0VNQUlMLEhlLkFQUF9DT05ORUNUX0RFVklDRSxIZS5BUFBfQ09OTkVDVF9PVFAsSGUuQVBQX0NPTk5FQ1RfU09DSUFMLEhlLkFQUF9HRVRfU09DSUFMX1JFRElSRUNUX1VSSV0ubWFwKHMpLmluY2x1ZGVzKG8pJiYocj1zZXRUaW1lb3V0KCgpPT57dGhpcy5vblRpbWVvdXQ/LigiaWZyYW1lX3JlcXVlc3RfdGltZW91dCIpLHRoaXMuYWJvcnRDb250cm9sbGVyLmFib3J0KCl9LDNlNCkpLG5ldyBQcm9taXNlKChjLGwpPT57Y29uc3QgZD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNyk7dGhpcy53M21Mb2dnZXI/LmxvZ2dlci5pbmZvPy4oe2V2ZW50OmUsaWQ6ZH0sIlNlbmRpbmcgYXBwIGV2ZW50IiksdGhpcy53M21GcmFtZS5ldmVudHMucG9zdEFwcEV2ZW50KHsuLi5lLGlkOmR9KTtjb25zdCB1PW5ldyBBYm9ydENvbnRyb2xsZXI7aWYobz09PSJSUENfUkVRVUVTVCIpe2NvbnN0IHA9ZTt0aGlzLm9wZW5ScGNSZXF1ZXN0cz1bLi4udGhpcy5vcGVuUnBjUmVxdWVzdHMsey4uLnAucGF5bG9hZCxhYm9ydENvbnRyb2xsZXI6dX1dfXUuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e289PT0iUlBDX1JFUVVFU1QiP2wobmV3IEVycm9yKCJSZXF1ZXN0IHdhcyBhYm9ydGVkIikpOm8hPT0iR0VUX0ZBUkNBU1RFUl9VUkkiJiZsKG5ldyBFcnJvcigiU29tZXRoaW5nIHdlbnQgd3JvbmciKSl9KTtmdW5jdGlvbiBoKHAsZil7cC5pZD09PWQmJihmPy5sb2dnZXIuaW5mbz8uKHtmcmFtRXZlbnQ6cCxpZDpkfSwiUmVjZWl2ZWQgZnJhbWUgcmVzcG9uc2UiKSxwLnR5cGU9PT1gQHczbS1mcmFtZS8ke299X1NVQ0NFU1NgPyhyJiZjbGVhclRpbWVvdXQociksbiYmY2xlYXJUaW1lb3V0KG4pLCJwYXlsb2FkImluIHAmJmMocC5wYXlsb2FkKSxjKHZvaWQgMCkpOnAudHlwZT09PWBAdzNtLWZyYW1lLyR7b31fRVJST1JgJiYociYmY2xlYXJUaW1lb3V0KHIpLG4mJmNsZWFyVGltZW91dChuKSwicGF5bG9hZCJpbiBwJiZsKG5ldyBFcnJvcihwLnBheWxvYWQ/Lm1lc3NhZ2V8fCJBbiBlcnJvciBvY2N1cnJlZCIpKSxsKG5ldyBFcnJvcigiQW4gZXJyb3Igb2NjdXJyZWQiKSkpKX10aGlzLnczbUZyYW1lLmV2ZW50cy5yZWdpc3RlckZyYW1lRXZlbnRIYW5kbGVyKGQscD0+aChwLHRoaXMudzNtTG9nZ2VyKSx0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWwpfSl9c2V0TmV3TGFzdEVtYWlsTG9naW5UaW1lKCl7eW4uc2V0KEhlLkxBU1RfRU1BSUxfTE9HSU5fVElNRSxEYXRlLm5vdygpLnRvU3RyaW5nKCkpfXNldFNvY2lhbExvZ2luU3VjY2VzcyhlKXt5bi5zZXQoSGUuU09DSUFMX1VTRVJOQU1FLGUpfXNldExvZ2luU3VjY2VzcyhlKXtlJiZ5bi5zZXQoSGUuRU1BSUwsZSkseW4uc2V0KEhlLkVNQUlMX0xPR0lOX1VTRURfS0VZLCJ0cnVlIikseW4uZGVsZXRlKEhlLkxBU1RfRU1BSUxfTE9HSU5fVElNRSl9ZGVsZXRlQXV0aExvZ2luQ2FjaGUoKXt5bi5kZWxldGUoSGUuRU1BSUxfTE9HSU5fVVNFRF9LRVkpLHluLmRlbGV0ZShIZS5FTUFJTCkseW4uZGVsZXRlKEhlLkxBU1RfVVNFRF9DSEFJTl9LRVkpLHluLmRlbGV0ZShIZS5TT0NJQUxfVVNFUk5BTUUpfXNldExhc3RVc2VkQ2hhaW5JZChlKXtlJiZ5bi5zZXQoSGUuTEFTVF9VU0VEX0NIQUlOX0tFWSxTdHJpbmcoZSkpfWdldExhc3RVc2VkQ2hhaW5JZCgpe2NvbnN0IGU9eW4uZ2V0KEhlLkxBU1RfVVNFRF9DSEFJTl9LRVkpPz92b2lkIDAscj1OdW1iZXIoZSk7cmV0dXJuIGlzTmFOKHIpP2U6cn1wZXJzaXN0U21hcnRBY2NvdW50RW5hYmxlZE5ldHdvcmtzKGUpe3luLnNldChIZS5TTUFSVF9BQ0NPVU5UX0VOQUJMRURfTkVUV09SS1MsZS5qb2luKCIsIikpfX1jbGFzcyB1dXtjb25zdHJ1Y3Rvcigpe31zdGF0aWMgZ2V0SW5zdGFuY2Uoe3Byb2plY3RJZDplLGNoYWluSWQ6cixlbmFibGVMb2dnZXI6bixvblRpbWVvdXQ6cyxhYm9ydENvbnRyb2xsZXI6aX0pe3JldHVybiB1dS5pbnN0YW5jZXx8KHV1Lmluc3RhbmNlPW5ldyBaNih7cHJvamVjdElkOmUsY2hhaW5JZDpyLGVuYWJsZUxvZ2dlcjpuLG9uVGltZW91dDpzLGFib3J0Q29udHJvbGxlcjppfSkpLHV1Lmluc3RhbmNlfX12YXIgSFM9e307Y29uc3QgSXM9e0FDQ09VTlRfVEFCUzpbe2xhYmVsOiJUb2tlbnMifSx7bGFiZWw6Ik5GVHMifSx7bGFiZWw6IkFjdGl2aXR5In1dLFNFQ1VSRV9TSVRFX09SSUdJTjoodHlwZW9mIHByb2Nlc3M8InUiJiZ0eXBlb2YgSFM8InUiP0hTLk5FWFRfUFVCTElDX1NFQ1VSRV9TSVRFX09SSUdJTjp2b2lkIDApfHwiaHR0cHM6Ly9zZWN1cmUud2FsbGV0Y29ubmVjdC5vcmciLFZJRVdfRElSRUNUSU9OOntOZXh0OiJuZXh0IixQcmV2OiJwcmV2In0sREVGQVVMVF9DT05ORUNUX01FVEhPRF9PUkRFUjpbImVtYWlsIiwic29jaWFsIiwid2FsbGV0Il0sQU5JTUFUSU9OX0RVUkFUSU9OUzp7SGVhZGVyVGV4dDoxMjAsTW9kYWxIZWlnaHQ6MTUwLFZpZXdUcmFuc2l0aW9uOjE1MH19LGJhPXtmaWx0ZXJPdXREdXBsaWNhdGVzQnlSRE5TKHQpe2NvbnN0IGU9Y2Uuc3RhdGUuZW5hYmxlRUlQNjk2Mz9mZS5zdGF0ZS5jb25uZWN0b3JzOltdLHI9JGUuZ2V0UmVjZW50V2FsbGV0cygpLG49ZS5tYXAoYT0+YS5pbmZvPy5yZG5zKS5maWx0ZXIoQm9vbGVhbikscz1yLm1hcChhPT5hLnJkbnMpLmZpbHRlcihCb29sZWFuKSxpPW4uY29uY2F0KHMpO2lmKGkuaW5jbHVkZXMoImlvLm1ldGFtYXNrLm1vYmlsZSIpJiZ1ZS5pc01vYmlsZSgpKXtjb25zdCBhPWkuaW5kZXhPZigiaW8ubWV0YW1hc2subW9iaWxlIik7aVthXT0iaW8ubWV0YW1hc2sifXJldHVybiB0LmZpbHRlcihhPT4haS5pbmNsdWRlcyhTdHJpbmcoYT8ucmRucykpKX0sZmlsdGVyT3V0RHVwbGljYXRlc0J5SWRzKHQpe2NvbnN0IGU9ZmUuc3RhdGUuY29ubmVjdG9ycy5maWx0ZXIoYT0+YS50eXBlPT09IkFOTk9VTkNFRCJ8fGEudHlwZT09PSJJTkpFQ1RFRCIpLHI9JGUuZ2V0UmVjZW50V2FsbGV0cygpLG49ZS5tYXAoYT0+YS5leHBsb3JlcklkKSxzPXIubWFwKGE9PmEuaWQpLGk9bi5jb25jYXQocyk7cmV0dXJuIHQuZmlsdGVyKGE9PiFpLmluY2x1ZGVzKGE/LmlkKSl9LGZpbHRlck91dER1cGxpY2F0ZVdhbGxldHModCl7Y29uc3QgZT10aGlzLmZpbHRlck91dER1cGxpY2F0ZXNCeVJETlModCk7cmV0dXJuIHRoaXMuZmlsdGVyT3V0RHVwbGljYXRlc0J5SWRzKGUpfSxtYXJrV2FsbGV0c0FzSW5zdGFsbGVkKHQpe2NvbnN0e2Nvbm5lY3RvcnM6ZX09ZmUuc3RhdGUse2ZlYXR1cmVkV2FsbGV0SWRzOnJ9PWNlLnN0YXRlLG49ZS5maWx0ZXIobz0+by50eXBlPT09IkFOTk9VTkNFRCIpLnJlZHVjZSgobyxhKT0+KGEuaW5mbz8ucmRucyYmKG9bYS5pbmZvLnJkbnNdPSEwKSxvKSx7fSk7cmV0dXJuIHQubWFwKG89Pih7Li4ubyxpbnN0YWxsZWQ6ISFvLnJkbnMmJiEhbltvLnJkbnM/PyIiXX0pKS5zb3J0KChvLGEpPT57Y29uc3QgYz1OdW1iZXIoYS5pbnN0YWxsZWQpLU51bWJlcihvLmluc3RhbGxlZCk7aWYoYyE9PTApcmV0dXJuIGM7aWYocj8ubGVuZ3RoKXtjb25zdCBsPXIuaW5kZXhPZihvLmlkKSxkPXIuaW5kZXhPZihhLmlkKTtpZihsIT09LTEmJmQhPT0tMSlyZXR1cm4gbC1kO2lmKGwhPT0tMSlyZXR1cm4tMTtpZihkIT09LTEpcmV0dXJuIDF9cmV0dXJuIDB9KX0sZ2V0Q29ubmVjdE9yZGVyTWV0aG9kKHQsZSl7Y29uc3Qgcj10Py5jb25uZWN0TWV0aG9kc09yZGVyfHxjZS5zdGF0ZS5mZWF0dXJlcz8uY29ubmVjdE1ldGhvZHNPcmRlcixuPWV8fGZlLnN0YXRlLmNvbm5lY3RvcnM7aWYocilyZXR1cm4gcjtjb25zdHtpbmplY3RlZDpzLGFubm91bmNlZDppfT1wYS5nZXRDb25uZWN0b3JzQnlUeXBlKG4sUmUuc3RhdGUucmVjb21tZW5kZWQsUmUuc3RhdGUuZmVhdHVyZWQpLG89cy5maWx0ZXIocGEuc2hvd0Nvbm5lY3RvciksYT1pLmZpbHRlcihwYS5zaG93Q29ubmVjdG9yKTtyZXR1cm4gby5sZW5ndGh8fGEubGVuZ3RoP1sid2FsbGV0IiwiZW1haWwiLCJzb2NpYWwiXTpJcy5ERUZBVUxUX0NPTk5FQ1RfTUVUSE9EX09SREVSfSxpc0V4Y2x1ZGVkKHQpe2NvbnN0IGU9ISF0LnJkbnMmJlJlLnN0YXRlLmV4Y2x1ZGVkV2FsbGV0cy5zb21lKG49Pm4ucmRucz09PXQucmRucykscj0hIXQubmFtZSYmUmUuc3RhdGUuZXhjbHVkZWRXYWxsZXRzLnNvbWUobj0+S3kuaXNMb3dlckNhc2VNYXRjaChuLm5hbWUsdC5uYW1lKSk7cmV0dXJuIGV8fHJ9fSxwYT17Z2V0Q29ubmVjdG9yc0J5VHlwZSh0LGUscil7Y29uc3R7Y3VzdG9tV2FsbGV0czpufT1jZS5zdGF0ZSxzPSRlLmdldFJlY2VudFdhbGxldHMoKSxpPWJhLmZpbHRlck91dER1cGxpY2F0ZVdhbGxldHMoZSksbz1iYS5maWx0ZXJPdXREdXBsaWNhdGVXYWxsZXRzKHIpLGE9dC5maWx0ZXIodT0+dS50eXBlPT09Ik1VTFRJX0NIQUlOIiksYz10LmZpbHRlcih1PT51LnR5cGU9PT0iQU5OT1VOQ0VEIiksbD10LmZpbHRlcih1PT51LnR5cGU9PT0iSU5KRUNURUQiKSxkPXQuZmlsdGVyKHU9PnUudHlwZT09PSJFWFRFUk5BTCIpO3JldHVybntjdXN0b206bixyZWNlbnQ6cyxleHRlcm5hbDpkLG11bHRpQ2hhaW46YSxhbm5vdW5jZWQ6YyxpbmplY3RlZDpsLHJlY29tbWVuZGVkOmksZmVhdHVyZWQ6b319LHNob3dDb25uZWN0b3IodCl7Y29uc3QgZT10LmluZm8/LnJkbnMscj0hIWUmJlJlLnN0YXRlLmV4Y2x1ZGVkV2FsbGV0cy5zb21lKHM9PiEhcy5yZG5zJiZzLnJkbnM9PT1lKSxuPSEhdC5uYW1lJiZSZS5zdGF0ZS5leGNsdWRlZFdhbGxldHMuc29tZShzPT5LeS5pc0xvd2VyQ2FzZU1hdGNoKHMubmFtZSx0Lm5hbWUpKTtyZXR1cm4hKHQudHlwZT09PSJJTkpFQ1RFRCImJih0Lm5hbWU9PT0iQnJvd3NlciBXYWxsZXQiJiYoIXVlLmlzTW9iaWxlKCl8fHVlLmlzTW9iaWxlKCkmJiFlJiYheGUuY2hlY2tJbnN0YWxsZWQoKSl8fHJ8fG4pfHwodC50eXBlPT09IkFOTk9VTkNFRCJ8fHQudHlwZT09PSJFWFRFUk5BTCIpJiYocnx8bikpfSxnZXRJc0Nvbm5lY3RlZFdpdGhXQygpe3JldHVybiBBcnJheS5mcm9tKFcuc3RhdGUuY2hhaW5zLnZhbHVlcygpKS5zb21lKHI9PmZlLmdldENvbm5lY3RvcklkKHIubmFtZXNwYWNlKT09PXllLkNPTk5FQ1RPUl9JRC5XQUxMRVRfQ09OTkVDVCl9LGdldENvbm5lY3RvclR5cGVPcmRlcih7cmVjb21tZW5kZWQ6dCxmZWF0dXJlZDplLGN1c3RvbTpyLHJlY2VudDpuLGFubm91bmNlZDpzLGluamVjdGVkOmksbXVsdGlDaGFpbjpvLGV4dGVybmFsOmEsb3ZlcnJpZGRlbkNvbm5lY3RvcnM6Yz1jZS5zdGF0ZS5mZWF0dXJlcz8uY29ubmVjdG9yVHlwZU9yZGVyPz9bXX0pe2NvbnN0IGw9cGEuZ2V0SXNDb25uZWN0ZWRXaXRoV0MoKSxoPVt7dHlwZToid2FsbGV0Q29ubmVjdCIsaXNFbmFibGVkOmNlLnN0YXRlLmVuYWJsZVdhbGxldENvbm5lY3QmJiFsfSx7dHlwZToicmVjZW50Iixpc0VuYWJsZWQ6bi5sZW5ndGg+MH0se3R5cGU6ImluamVjdGVkIixpc0VuYWJsZWQ6Wy4uLmksLi4ucywuLi5vXS5sZW5ndGg+MH0se3R5cGU6ImZlYXR1cmVkIixpc0VuYWJsZWQ6ZS5sZW5ndGg+MH0se3R5cGU6ImN1c3RvbSIsaXNFbmFibGVkOnImJnIubGVuZ3RoPjB9LHt0eXBlOiJleHRlcm5hbCIsaXNFbmFibGVkOmEubGVuZ3RoPjB9LHt0eXBlOiJyZWNvbW1lbmRlZCIsaXNFbmFibGVkOnQubGVuZ3RoPjB9XS5maWx0ZXIodz0+dy5pc0VuYWJsZWQpLHA9bmV3IFNldChoLm1hcCh3PT53LnR5cGUpKSxmPWMuZmlsdGVyKHc9PnAuaGFzKHcpKS5tYXAodz0+KHt0eXBlOncsaXNFbmFibGVkOiEwfSkpLG09aC5maWx0ZXIoKHt0eXBlOnd9KT0+IWYuc29tZSgoe3R5cGU6dn0pPT52PT09dykpO3JldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoWy4uLmYsLi4ubV0ubWFwKCh7dHlwZTp3fSk9PncpKSl9fSxuaD17aW50ZXJwb2xhdGUodCxlLHIpe2lmKHQubGVuZ3RoIT09Mnx8ZS5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcigiaW5wdXRSYW5nZSBhbmQgb3V0cHV0UmFuZ2UgbXVzdCBiZSBhbiBhcnJheSBvZiBsZW5ndGggMiIpO2NvbnN0IG49dFswXXx8MCxzPXRbMV18fDAsaT1lWzBdfHwwLG89ZVsxXXx8MDtyZXR1cm4gcjxuP2k6cj5zP286KG8taSkvKHMtbikqKHItbikraX19Oy8qKg0KICogQGxpY2Vuc2UNCiAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMNCiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCiAqL2NvbnN0IEd3PWdsb2JhbFRoaXMsWTY9R3cuU2hhZG93Um9vdCYmKEd3LlNoYWR5Q1NTPT09dm9pZCAwfHxHdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3cpJiYiYWRvcHRlZFN0eWxlU2hlZXRzImluIERvY3VtZW50LnByb3RvdHlwZSYmInJlcGxhY2UiaW4gQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUsSjY9U3ltYm9sKCkscVM9bmV3IFdlYWtNYXA7bGV0IFJCPWNsYXNze2NvbnN0cnVjdG9yKGUscixuKXtpZih0aGlzLl8kY3NzUmVzdWx0JD0hMCxuIT09SjYpdGhyb3cgRXJyb3IoIkNTU1Jlc3VsdCBpcyBub3QgY29uc3RydWN0YWJsZS4gVXNlIGB1bnNhZmVDU1NgIG9yIGBjc3NgIGluc3RlYWQuIik7dGhpcy5jc3NUZXh0PWUsdGhpcy50PXJ9Z2V0IHN0eWxlU2hlZXQoKXtsZXQgZT10aGlzLm87Y29uc3Qgcj10aGlzLnQ7aWYoWTYmJmU9PT12b2lkIDApe2NvbnN0IG49ciE9PXZvaWQgMCYmci5sZW5ndGg9PT0xO24mJihlPXFTLmdldChyKSksZT09PXZvaWQgMCYmKCh0aGlzLm89ZT1uZXcgQ1NTU3R5bGVTaGVldCkucmVwbGFjZVN5bmModGhpcy5jc3NUZXh0KSxuJiZxUy5zZXQocixlKSl9cmV0dXJuIGV9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5jc3NUZXh0fX07Y29uc3QgVmk9dD0+bmV3IFJCKHR5cGVvZiB0PT0ic3RyaW5nIj90OnQrIiIsdm9pZCAwLEo2KSxwZT0odCwuLi5lKT0+e2NvbnN0IHI9dC5sZW5ndGg9PT0xP3RbMF06ZS5yZWR1Y2UoKG4scyxpKT0+bisobz0+e2lmKG8uXyRjc3NSZXN1bHQkPT09ITApcmV0dXJuIG8uY3NzVGV4dDtpZih0eXBlb2Ygbz09Im51bWJlciIpcmV0dXJuIG87dGhyb3cgRXJyb3IoIlZhbHVlIHBhc3NlZCB0byAnY3NzJyBmdW5jdGlvbiBtdXN0IGJlIGEgJ2NzcycgZnVuY3Rpb24gcmVzdWx0OiAiK28rIi4gVXNlICd1bnNhZmVDU1MnIHRvIHBhc3Mgbm9uLWxpdGVyYWwgdmFsdWVzLCBidXQgdGFrZSBjYXJlIHRvIGVuc3VyZSBwYWdlIHNlY3VyaXR5LiIpfSkocykrdFtpKzFdLHRbMF0pO3JldHVybiBuZXcgUkIocix0LEo2KX0sTWZlPSh0LGUpPT57aWYoWTYpdC5hZG9wdGVkU3R5bGVTaGVldHM9ZS5tYXAocj0+ciBpbnN0YW5jZW9mIENTU1N0eWxlU2hlZXQ/cjpyLnN0eWxlU2hlZXQpO2Vsc2UgZm9yKGNvbnN0IHIgb2YgZSl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLHM9R3cubGl0Tm9uY2U7cyE9PXZvaWQgMCYmbi5zZXRBdHRyaWJ1dGUoIm5vbmNlIixzKSxuLnRleHRDb250ZW50PXIuY3NzVGV4dCx0LmFwcGVuZENoaWxkKG4pfX0sVlM9WTY/dD0+dDp0PT50IGluc3RhbmNlb2YgQ1NTU3R5bGVTaGVldD8oZT0+e2xldCByPSIiO2Zvcihjb25zdCBuIG9mIGUuY3NzUnVsZXMpcis9bi5jc3NUZXh0O3JldHVybiBWaShyKX0pKHQpOnQ7LyoqDQogKiBAbGljZW5zZQ0KICogQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQw0KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KICovY29uc3R7aXM6RGZlLGRlZmluZVByb3BlcnR5OkJmZSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6TGZlLGdldE93blByb3BlcnR5TmFtZXM6VWZlLGdldE93blByb3BlcnR5U3ltYm9sczpGZmUsZ2V0UHJvdG90eXBlT2Y6amZlfT1PYmplY3QsSnk9Z2xvYmFsVGhpcyxHUz1KeS50cnVzdGVkVHlwZXMsemZlPUdTP0dTLmVtcHR5U2NyaXB0OiIiLFdmZT1KeS5yZWFjdGl2ZUVsZW1lbnRQb2x5ZmlsbFN1cHBvcnQsbzA9KHQsZSk9PnQsUmI9e3RvQXR0cmlidXRlKHQsZSl7c3dpdGNoKGUpe2Nhc2UgQm9vbGVhbjp0PXQ/emZlOm51bGw7YnJlYWs7Y2FzZSBPYmplY3Q6Y2FzZSBBcnJheTp0PXQ9PW51bGw/dDpKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gdH0sZnJvbUF0dHJpYnV0ZSh0LGUpe2xldCByPXQ7c3dpdGNoKGUpe2Nhc2UgQm9vbGVhbjpyPXQhPT1udWxsO2JyZWFrO2Nhc2UgTnVtYmVyOnI9dD09PW51bGw/bnVsbDpOdW1iZXIodCk7YnJlYWs7Y2FzZSBPYmplY3Q6Y2FzZSBBcnJheTp0cnl7cj1KU09OLnBhcnNlKHQpfWNhdGNoe3I9bnVsbH19cmV0dXJuIHJ9fSxYNj0odCxlKT0+IURmZSh0LGUpLEtTPXthdHRyaWJ1dGU6ITAsdHlwZTpTdHJpbmcsY29udmVydGVyOlJiLHJlZmxlY3Q6ITEsdXNlRGVmYXVsdDohMSxoYXNDaGFuZ2VkOlg2fTtTeW1ib2wubWV0YWRhdGE/Pz1TeW1ib2woIm1ldGFkYXRhIiksSnkubGl0UHJvcGVydHlNZXRhZGF0YT8/PW5ldyBXZWFrTWFwO2xldCBRZD1jbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50e3N0YXRpYyBhZGRJbml0aWFsaXplcihlKXt0aGlzLl8kRWkoKSwodGhpcy5sPz89W10pLnB1c2goZSl9c3RhdGljIGdldCBvYnNlcnZlZEF0dHJpYnV0ZXMoKXtyZXR1cm4gdGhpcy5maW5hbGl6ZSgpLHRoaXMuXyRFaCYmWy4uLnRoaXMuXyRFaC5rZXlzKCldfXN0YXRpYyBjcmVhdGVQcm9wZXJ0eShlLHI9S1Mpe2lmKHIuc3RhdGUmJihyLmF0dHJpYnV0ZT0hMSksdGhpcy5fJEVpKCksdGhpcy5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoZSkmJigocj1PYmplY3QuY3JlYXRlKHIpKS53cmFwcGVkPSEwKSx0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzLnNldChlLHIpLCFyLm5vQWNjZXNzb3Ipe2NvbnN0IG49U3ltYm9sKCkscz10aGlzLmdldFByb3BlcnR5RGVzY3JpcHRvcihlLG4scik7cyE9PXZvaWQgMCYmQmZlKHRoaXMucHJvdG90eXBlLGUscyl9fXN0YXRpYyBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoZSxyLG4pe2NvbnN0e2dldDpzLHNldDppfT1MZmUodGhpcy5wcm90b3R5cGUsZSk/P3tnZXQoKXtyZXR1cm4gdGhpc1tyXX0sc2V0KG8pe3RoaXNbcl09b319O3JldHVybntnZXQ6cyxzZXQobyl7Y29uc3QgYT1zPy5jYWxsKHRoaXMpO2k/LmNhbGwodGhpcyxvKSx0aGlzLnJlcXVlc3RVcGRhdGUoZSxhLG4pfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH19c3RhdGljIGdldFByb3BlcnR5T3B0aW9ucyhlKXtyZXR1cm4gdGhpcy5lbGVtZW50UHJvcGVydGllcy5nZXQoZSk/P0tTfXN0YXRpYyBfJEVpKCl7aWYodGhpcy5oYXNPd25Qcm9wZXJ0eShvMCgiZWxlbWVudFByb3BlcnRpZXMiKSkpcmV0dXJuO2NvbnN0IGU9amZlKHRoaXMpO2UuZmluYWxpemUoKSxlLmwhPT12b2lkIDAmJih0aGlzLmw9Wy4uLmUubF0pLHRoaXMuZWxlbWVudFByb3BlcnRpZXM9bmV3IE1hcChlLmVsZW1lbnRQcm9wZXJ0aWVzKX1zdGF0aWMgZmluYWxpemUoKXtpZih0aGlzLmhhc093blByb3BlcnR5KG8wKCJmaW5hbGl6ZWQiKSkpcmV0dXJuO2lmKHRoaXMuZmluYWxpemVkPSEwLHRoaXMuXyRFaSgpLHRoaXMuaGFzT3duUHJvcGVydHkobzAoInByb3BlcnRpZXMiKSkpe2NvbnN0IHI9dGhpcy5wcm9wZXJ0aWVzLG49Wy4uLlVmZShyKSwuLi5GZmUocildO2Zvcihjb25zdCBzIG9mIG4pdGhpcy5jcmVhdGVQcm9wZXJ0eShzLHJbc10pfWNvbnN0IGU9dGhpc1tTeW1ib2wubWV0YWRhdGFdO2lmKGUhPT1udWxsKXtjb25zdCByPWxpdFByb3BlcnR5TWV0YWRhdGEuZ2V0KGUpO2lmKHIhPT12b2lkIDApZm9yKGNvbnN0W24sc11vZiByKXRoaXMuZWxlbWVudFByb3BlcnRpZXMuc2V0KG4scyl9dGhpcy5fJEVoPW5ldyBNYXA7Zm9yKGNvbnN0W3Isbl1vZiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzKXtjb25zdCBzPXRoaXMuXyRFdShyLG4pO3MhPT12b2lkIDAmJnRoaXMuXyRFaC5zZXQocyxyKX10aGlzLmVsZW1lbnRTdHlsZXM9dGhpcy5maW5hbGl6ZVN0eWxlcyh0aGlzLnN0eWxlcyl9c3RhdGljIGZpbmFsaXplU3R5bGVzKGUpe2NvbnN0IHI9W107aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3Qgbj1uZXcgU2V0KGUuZmxhdCgxLzApLnJldmVyc2UoKSk7Zm9yKGNvbnN0IHMgb2YgbilyLnVuc2hpZnQoVlMocykpfWVsc2UgZSE9PXZvaWQgMCYmci5wdXNoKFZTKGUpKTtyZXR1cm4gcn1zdGF0aWMgXyRFdShlLHIpe2NvbnN0IG49ci5hdHRyaWJ1dGU7cmV0dXJuIG49PT0hMT92b2lkIDA6dHlwZW9mIG49PSJzdHJpbmciP246dHlwZW9mIGU9PSJzdHJpbmciP2UudG9Mb3dlckNhc2UoKTp2b2lkIDB9Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuXyRFcD12b2lkIDAsdGhpcy5pc1VwZGF0ZVBlbmRpbmc9ITEsdGhpcy5oYXNVcGRhdGVkPSExLHRoaXMuXyRFbT1udWxsLHRoaXMuXyRFdigpfV8kRXYoKXt0aGlzLl8kRVM9bmV3IFByb21pc2UoZT0+dGhpcy5lbmFibGVVcGRhdGluZz1lKSx0aGlzLl8kQUw9bmV3IE1hcCx0aGlzLl8kRV8oKSx0aGlzLnJlcXVlc3RVcGRhdGUoKSx0aGlzLmNvbnN0cnVjdG9yLmw/LmZvckVhY2goZT0+ZSh0aGlzKSl9YWRkQ29udHJvbGxlcihlKXsodGhpcy5fJEVPPz89bmV3IFNldCkuYWRkKGUpLHRoaXMucmVuZGVyUm9vdCE9PXZvaWQgMCYmdGhpcy5pc0Nvbm5lY3RlZCYmZS5ob3N0Q29ubmVjdGVkPy4oKX1yZW1vdmVDb250cm9sbGVyKGUpe3RoaXMuXyRFTz8uZGVsZXRlKGUpfV8kRV8oKXtjb25zdCBlPW5ldyBNYXAscj10aGlzLmNvbnN0cnVjdG9yLmVsZW1lbnRQcm9wZXJ0aWVzO2Zvcihjb25zdCBuIG9mIHIua2V5cygpKXRoaXMuaGFzT3duUHJvcGVydHkobikmJihlLnNldChuLHRoaXNbbl0pLGRlbGV0ZSB0aGlzW25dKTtlLnNpemU+MCYmKHRoaXMuXyRFcD1lKX1jcmVhdGVSZW5kZXJSb290KCl7Y29uc3QgZT10aGlzLnNoYWRvd1Jvb3Q/P3RoaXMuYXR0YWNoU2hhZG93KHRoaXMuY29uc3RydWN0b3Iuc2hhZG93Um9vdE9wdGlvbnMpO3JldHVybiBNZmUoZSx0aGlzLmNvbnN0cnVjdG9yLmVsZW1lbnRTdHlsZXMpLGV9Y29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLnJlbmRlclJvb3Q/Pz10aGlzLmNyZWF0ZVJlbmRlclJvb3QoKSx0aGlzLmVuYWJsZVVwZGF0aW5nKCEwKSx0aGlzLl8kRU8/LmZvckVhY2goZT0+ZS5ob3N0Q29ubmVjdGVkPy4oKSl9ZW5hYmxlVXBkYXRpbmcoZSl7fWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fJEVPPy5mb3JFYWNoKGU9PmUuaG9zdERpc2Nvbm5lY3RlZD8uKCkpfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhlLHIsbil7dGhpcy5fJEFLKGUsbil9XyRFVChlLHIpe2NvbnN0IG49dGhpcy5jb25zdHJ1Y3Rvci5lbGVtZW50UHJvcGVydGllcy5nZXQoZSkscz10aGlzLmNvbnN0cnVjdG9yLl8kRXUoZSxuKTtpZihzIT09dm9pZCAwJiZuLnJlZmxlY3Q9PT0hMCl7Y29uc3QgaT0obi5jb252ZXJ0ZXI/LnRvQXR0cmlidXRlIT09dm9pZCAwP24uY29udmVydGVyOlJiKS50b0F0dHJpYnV0ZShyLG4udHlwZSk7dGhpcy5fJEVtPWUsaT09bnVsbD90aGlzLnJlbW92ZUF0dHJpYnV0ZShzKTp0aGlzLnNldEF0dHJpYnV0ZShzLGkpLHRoaXMuXyRFbT1udWxsfX1fJEFLKGUscil7Y29uc3Qgbj10aGlzLmNvbnN0cnVjdG9yLHM9bi5fJEVoLmdldChlKTtpZihzIT09dm9pZCAwJiZ0aGlzLl8kRW0hPT1zKXtjb25zdCBpPW4uZ2V0UHJvcGVydHlPcHRpb25zKHMpLG89dHlwZW9mIGkuY29udmVydGVyPT0iZnVuY3Rpb24iP3tmcm9tQXR0cmlidXRlOmkuY29udmVydGVyfTppLmNvbnZlcnRlcj8uZnJvbUF0dHJpYnV0ZSE9PXZvaWQgMD9pLmNvbnZlcnRlcjpSYjt0aGlzLl8kRW09cyx0aGlzW3NdPW8uZnJvbUF0dHJpYnV0ZShyLGkudHlwZSk/P3RoaXMuXyRFaj8uZ2V0KHMpPz9udWxsLHRoaXMuXyRFbT1udWxsfX1yZXF1ZXN0VXBkYXRlKGUscixuKXtpZihlIT09dm9pZCAwKXtjb25zdCBzPXRoaXMuY29uc3RydWN0b3IsaT10aGlzW2VdO2lmKG4/Pz1zLmdldFByb3BlcnR5T3B0aW9ucyhlKSwhKChuLmhhc0NoYW5nZWQ/P1g2KShpLHIpfHxuLnVzZURlZmF1bHQmJm4ucmVmbGVjdCYmaT09PXRoaXMuXyRFaj8uZ2V0KGUpJiYhdGhpcy5oYXNBdHRyaWJ1dGUocy5fJEV1KGUsbikpKSlyZXR1cm47dGhpcy5DKGUscixuKX10aGlzLmlzVXBkYXRlUGVuZGluZz09PSExJiYodGhpcy5fJEVTPXRoaXMuXyRFUCgpKX1DKGUscix7dXNlRGVmYXVsdDpuLHJlZmxlY3Q6cyx3cmFwcGVkOml9LG8pe24mJiEodGhpcy5fJEVqPz89bmV3IE1hcCkuaGFzKGUpJiYodGhpcy5fJEVqLnNldChlLG8/P3I/P3RoaXNbZV0pLGkhPT0hMHx8byE9PXZvaWQgMCl8fCh0aGlzLl8kQUwuaGFzKGUpfHwodGhpcy5oYXNVcGRhdGVkfHxufHwocj12b2lkIDApLHRoaXMuXyRBTC5zZXQoZSxyKSkscz09PSEwJiZ0aGlzLl8kRW0hPT1lJiYodGhpcy5fJEVxPz89bmV3IFNldCkuYWRkKGUpKX1hc3luYyBfJEVQKCl7dGhpcy5pc1VwZGF0ZVBlbmRpbmc9ITA7dHJ5e2F3YWl0IHRoaXMuXyRFU31jYXRjaChyKXtQcm9taXNlLnJlamVjdChyKX1jb25zdCBlPXRoaXMuc2NoZWR1bGVVcGRhdGUoKTtyZXR1cm4gZSE9bnVsbCYmYXdhaXQgZSwhdGhpcy5pc1VwZGF0ZVBlbmRpbmd9c2NoZWR1bGVVcGRhdGUoKXtyZXR1cm4gdGhpcy5wZXJmb3JtVXBkYXRlKCl9cGVyZm9ybVVwZGF0ZSgpe2lmKCF0aGlzLmlzVXBkYXRlUGVuZGluZylyZXR1cm47aWYoIXRoaXMuaGFzVXBkYXRlZCl7aWYodGhpcy5yZW5kZXJSb290Pz89dGhpcy5jcmVhdGVSZW5kZXJSb290KCksdGhpcy5fJEVwKXtmb3IoY29uc3RbcyxpXW9mIHRoaXMuXyRFcCl0aGlzW3NdPWk7dGhpcy5fJEVwPXZvaWQgMH1jb25zdCBuPXRoaXMuY29uc3RydWN0b3IuZWxlbWVudFByb3BlcnRpZXM7aWYobi5zaXplPjApZm9yKGNvbnN0W3MsaV1vZiBuKXtjb25zdHt3cmFwcGVkOm99PWksYT10aGlzW3NdO28hPT0hMHx8dGhpcy5fJEFMLmhhcyhzKXx8YT09PXZvaWQgMHx8dGhpcy5DKHMsdm9pZCAwLGksYSl9fWxldCBlPSExO2NvbnN0IHI9dGhpcy5fJEFMO3RyeXtlPXRoaXMuc2hvdWxkVXBkYXRlKHIpLGU/KHRoaXMud2lsbFVwZGF0ZShyKSx0aGlzLl8kRU8/LmZvckVhY2gobj0+bi5ob3N0VXBkYXRlPy4oKSksdGhpcy51cGRhdGUocikpOnRoaXMuXyRFTSgpfWNhdGNoKG4pe3Rocm93IGU9ITEsdGhpcy5fJEVNKCksbn1lJiZ0aGlzLl8kQUUocil9d2lsbFVwZGF0ZShlKXt9XyRBRShlKXt0aGlzLl8kRU8/LmZvckVhY2gocj0+ci5ob3N0VXBkYXRlZD8uKCkpLHRoaXMuaGFzVXBkYXRlZHx8KHRoaXMuaGFzVXBkYXRlZD0hMCx0aGlzLmZpcnN0VXBkYXRlZChlKSksdGhpcy51cGRhdGVkKGUpfV8kRU0oKXt0aGlzLl8kQUw9bmV3IE1hcCx0aGlzLmlzVXBkYXRlUGVuZGluZz0hMX1nZXQgdXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5nZXRVcGRhdGVDb21wbGV0ZSgpfWdldFVwZGF0ZUNvbXBsZXRlKCl7cmV0dXJuIHRoaXMuXyRFU31zaG91bGRVcGRhdGUoZSl7cmV0dXJuITB9dXBkYXRlKGUpe3RoaXMuXyRFcSYmPXRoaXMuXyRFcS5mb3JFYWNoKHI9PnRoaXMuXyRFVChyLHRoaXNbcl0pKSx0aGlzLl8kRU0oKX11cGRhdGVkKGUpe31maXJzdFVwZGF0ZWQoZSl7fX07UWQuZWxlbWVudFN0eWxlcz1bXSxRZC5zaGFkb3dSb290T3B0aW9ucz17bW9kZToib3BlbiJ9LFFkW28wKCJlbGVtZW50UHJvcGVydGllcyIpXT1uZXcgTWFwLFFkW28wKCJmaW5hbGl6ZWQiKV09bmV3IE1hcCxXZmU/Lih7UmVhY3RpdmVFbGVtZW50OlFkfSksKEp5LnJlYWN0aXZlRWxlbWVudFZlcnNpb25zPz89W10pLnB1c2goIjIuMS4wIik7LyoqDQogKiBAbGljZW5zZQ0KICogQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQw0KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KICovY29uc3QgUTY9Z2xvYmFsVGhpcyxOYj1RNi50cnVzdGVkVHlwZXMsWlM9TmI/TmIuY3JlYXRlUG9saWN5KCJsaXQtaHRtbCIse2NyZWF0ZUhUTUw6dD0+dH0pOnZvaWQgMCxOQj0iJGxpdCQiLGFjPWBsaXQkJHtNYXRoLnJhbmRvbSgpLnRvRml4ZWQoOSkuc2xpY2UoMil9JGAsUEI9Ij8iK2FjLEhmZT1gPCR7UEJ9PmAsVHU9ZG9jdW1lbnQsdW09KCk9PlR1LmNyZWF0ZUNvbW1lbnQoIiIpLGRtPXQ9PnQ9PT1udWxsfHx0eXBlb2YgdCE9Im9iamVjdCImJnR5cGVvZiB0IT0iZnVuY3Rpb24iLGVfPUFycmF5LmlzQXJyYXkscWZlPXQ9PmVfKHQpfHx0eXBlb2YgdD8uW1N5bWJvbC5pdGVyYXRvcl09PSJmdW5jdGlvbiIseTM9YFsgCQ0KXGZccl1gLEtwPS88KD86KCEtLXxcL1teYS16QS1aXSl8KFwvP1thLXpBLVpdW14+XHNdKil8KFwvPyQpKS9nLFlTPS8tLT4vZyxKUz0vPi9nLGJsPVJlZ0V4cChgPnwke3kzfSg/OihbXlxccyInPj0vXSspKCR7eTN9Kj0ke3kzfSooPzpbXiAJDQpcZlxyIidcYDw+PV18KCJ8Jyl8KSl8JClgLCJnIiksWFM9LycvZyxRUz0vIi9nLE9CPS9eKD86c2NyaXB0fHN0eWxlfHRleHRhcmVhfHRpdGxlKSQvaSwkQj10PT4oZSwuLi5yKT0+KHtfJGxpdFR5cGUkOnQsc3RyaW5nczplLHZhbHVlczpyfSksRD0kQigxKSxDZT0kQigyKSx5YT1TeW1ib2wuZm9yKCJsaXQtbm9DaGFuZ2UiKSxGcj1TeW1ib2wuZm9yKCJsaXQtbm90aGluZyIpLGVBPW5ldyBXZWFrTWFwLHR1PVR1LmNyZWF0ZVRyZWVXYWxrZXIoVHUsMTI5KTtmdW5jdGlvbiBNQih0LGUpe2lmKCFlXyh0KXx8IXQuaGFzT3duUHJvcGVydHkoInJhdyIpKXRocm93IEVycm9yKCJpbnZhbGlkIHRlbXBsYXRlIHN0cmluZ3MgYXJyYXkiKTtyZXR1cm4gWlMhPT12b2lkIDA/WlMuY3JlYXRlSFRNTChlKTplfWNvbnN0IFZmZT0odCxlKT0+e2NvbnN0IHI9dC5sZW5ndGgtMSxuPVtdO2xldCBzLGk9ZT09PTI/Ijxzdmc+IjplPT09Mz8iPG1hdGg+IjoiIixvPUtwO2ZvcihsZXQgYT0wO2E8cjthKyspe2NvbnN0IGM9dFthXTtsZXQgbCxkLHU9LTEsaD0wO2Zvcig7aDxjLmxlbmd0aCYmKG8ubGFzdEluZGV4PWgsZD1vLmV4ZWMoYyksZCE9PW51bGwpOyloPW8ubGFzdEluZGV4LG89PT1LcD9kWzFdPT09IiEtLSI/bz1ZUzpkWzFdIT09dm9pZCAwP289SlM6ZFsyXSE9PXZvaWQgMD8oT0IudGVzdChkWzJdKSYmKHM9UmVnRXhwKCI8LyIrZFsyXSwiZyIpKSxvPWJsKTpkWzNdIT09dm9pZCAwJiYobz1ibCk6bz09PWJsP2RbMF09PT0iPiI/KG89cz8/S3AsdT0tMSk6ZFsxXT09PXZvaWQgMD91PS0yOih1PW8ubGFzdEluZGV4LWRbMl0ubGVuZ3RoLGw9ZFsxXSxvPWRbM109PT12b2lkIDA/Ymw6ZFszXT09PSciJz9RUzpYUyk6bz09PVFTfHxvPT09WFM/bz1ibDpvPT09WVN8fG89PT1KUz9vPUtwOihvPWJsLHM9dm9pZCAwKTtjb25zdCBwPW89PT1ibCYmdFthKzFdLnN0YXJ0c1dpdGgoIi8+Iik/IiAiOiIiO2krPW89PT1LcD9jK0hmZTp1Pj0wPyhuLnB1c2gobCksYy5zbGljZSgwLHUpK05CK2Muc2xpY2UodSkrYWMrcCk6YythYysodT09PS0yP2E6cCl9cmV0dXJuW01CKHQsaSsodFtyXXx8Ijw/PiIpKyhlPT09Mj8iPC9zdmc+IjplPT09Mz8iPC9tYXRoPiI6IiIpKSxuXX07bGV0IEd4PWNsYXNzIERCe2NvbnN0cnVjdG9yKHtzdHJpbmdzOmUsXyRsaXRUeXBlJDpyfSxuKXtsZXQgczt0aGlzLnBhcnRzPVtdO2xldCBpPTAsbz0wO2NvbnN0IGE9ZS5sZW5ndGgtMSxjPXRoaXMucGFydHMsW2wsZF09VmZlKGUscik7aWYodGhpcy5lbD1EQi5jcmVhdGVFbGVtZW50KGwsbiksdHUuY3VycmVudE5vZGU9dGhpcy5lbC5jb250ZW50LHI9PT0yfHxyPT09Myl7Y29uc3QgdT10aGlzLmVsLmNvbnRlbnQuZmlyc3RDaGlsZDt1LnJlcGxhY2VXaXRoKC4uLnUuY2hpbGROb2Rlcyl9Zm9yKDsocz10dS5uZXh0Tm9kZSgpKSE9PW51bGwmJmMubGVuZ3RoPGE7KXtpZihzLm5vZGVUeXBlPT09MSl7aWYocy5oYXNBdHRyaWJ1dGVzKCkpZm9yKGNvbnN0IHUgb2Ygcy5nZXRBdHRyaWJ1dGVOYW1lcygpKWlmKHUuZW5kc1dpdGgoTkIpKXtjb25zdCBoPWRbbysrXSxwPXMuZ2V0QXR0cmlidXRlKHUpLnNwbGl0KGFjKSxmPS8oWy4/QF0pPyguKikvLmV4ZWMoaCk7Yy5wdXNoKHt0eXBlOjEsaW5kZXg6aSxuYW1lOmZbMl0sc3RyaW5nczpwLGN0b3I6ZlsxXT09PSIuIj9LZmU6ZlsxXT09PSI/Ij9aZmU6ZlsxXT09PSJAIj9ZZmU6WHl9KSxzLnJlbW92ZUF0dHJpYnV0ZSh1KX1lbHNlIHUuc3RhcnRzV2l0aChhYykmJihjLnB1c2goe3R5cGU6NixpbmRleDppfSkscy5yZW1vdmVBdHRyaWJ1dGUodSkpO2lmKE9CLnRlc3Qocy50YWdOYW1lKSl7Y29uc3QgdT1zLnRleHRDb250ZW50LnNwbGl0KGFjKSxoPXUubGVuZ3RoLTE7aWYoaD4wKXtzLnRleHRDb250ZW50PU5iP05iLmVtcHR5U2NyaXB0OiIiO2ZvcihsZXQgcD0wO3A8aDtwKyspcy5hcHBlbmQodVtwXSx1bSgpKSx0dS5uZXh0Tm9kZSgpLGMucHVzaCh7dHlwZToyLGluZGV4OisraX0pO3MuYXBwZW5kKHVbaF0sdW0oKSl9fX1lbHNlIGlmKHMubm9kZVR5cGU9PT04KWlmKHMuZGF0YT09PVBCKWMucHVzaCh7dHlwZToyLGluZGV4Oml9KTtlbHNle2xldCB1PS0xO2Zvcig7KHU9cy5kYXRhLmluZGV4T2YoYWMsdSsxKSkhPT0tMTspYy5wdXNoKHt0eXBlOjcsaW5kZXg6aX0pLHUrPWFjLmxlbmd0aC0xfWkrK319c3RhdGljIGNyZWF0ZUVsZW1lbnQoZSxyKXtjb25zdCBuPVR1LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7cmV0dXJuIG4uaW5uZXJIVE1MPWUsbn19O2Z1bmN0aW9uIE9oKHQsZSxyPXQsbil7aWYoZT09PXlhKXJldHVybiBlO2xldCBzPW4hPT12b2lkIDA/ci5fJENvPy5bbl06ci5fJENsO2NvbnN0IGk9ZG0oZSk/dm9pZCAwOmUuXyRsaXREaXJlY3RpdmUkO3JldHVybiBzPy5jb25zdHJ1Y3RvciE9PWkmJihzPy5fJEFPPy4oITEpLGk9PT12b2lkIDA/cz12b2lkIDA6KHM9bmV3IGkodCkscy5fJEFUKHQscixuKSksbiE9PXZvaWQgMD8oci5fJENvPz89W10pW25dPXM6ci5fJENsPXMpLHMhPT12b2lkIDAmJihlPU9oKHQscy5fJEFTKHQsZS52YWx1ZXMpLHMsbikpLGV9bGV0IEdmZT1jbGFzc3tjb25zdHJ1Y3RvcihlLHIpe3RoaXMuXyRBVj1bXSx0aGlzLl8kQU49dm9pZCAwLHRoaXMuXyRBRD1lLHRoaXMuXyRBTT1yfWdldCBwYXJlbnROb2RlKCl7cmV0dXJuIHRoaXMuXyRBTS5wYXJlbnROb2RlfWdldCBfJEFVKCl7cmV0dXJuIHRoaXMuXyRBTS5fJEFVfXUoZSl7Y29uc3R7ZWw6e2NvbnRlbnQ6cn0scGFydHM6bn09dGhpcy5fJEFELHM9KGU/LmNyZWF0aW9uU2NvcGU/P1R1KS5pbXBvcnROb2RlKHIsITApO3R1LmN1cnJlbnROb2RlPXM7bGV0IGk9dHUubmV4dE5vZGUoKSxvPTAsYT0wLGM9blswXTtmb3IoO2MhPT12b2lkIDA7KXtpZihvPT09Yy5pbmRleCl7bGV0IGw7Yy50eXBlPT09Mj9sPW5ldyBTMShpLGkubmV4dFNpYmxpbmcsdGhpcyxlKTpjLnR5cGU9PT0xP2w9bmV3IGMuY3RvcihpLGMubmFtZSxjLnN0cmluZ3MsdGhpcyxlKTpjLnR5cGU9PT02JiYobD1uZXcgSmZlKGksdGhpcyxlKSksdGhpcy5fJEFWLnB1c2gobCksYz1uWysrYV19byE9PWM/LmluZGV4JiYoaT10dS5uZXh0Tm9kZSgpLG8rKyl9cmV0dXJuIHR1LmN1cnJlbnROb2RlPVR1LHN9cChlKXtsZXQgcj0wO2Zvcihjb25zdCBuIG9mIHRoaXMuXyRBViluIT09dm9pZCAwJiYobi5zdHJpbmdzIT09dm9pZCAwPyhuLl8kQUkoZSxuLHIpLHIrPW4uc3RyaW5ncy5sZW5ndGgtMik6bi5fJEFJKGVbcl0pKSxyKyt9fTtjbGFzcyBTMXtnZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0/Ll8kQVU/P3RoaXMuXyRDdn1jb25zdHJ1Y3RvcihlLHIsbixzKXt0aGlzLnR5cGU9Mix0aGlzLl8kQUg9RnIsdGhpcy5fJEFOPXZvaWQgMCx0aGlzLl8kQUE9ZSx0aGlzLl8kQUI9cix0aGlzLl8kQU09bix0aGlzLm9wdGlvbnM9cyx0aGlzLl8kQ3Y9cz8uaXNDb25uZWN0ZWQ/PyEwfWdldCBwYXJlbnROb2RlKCl7bGV0IGU9dGhpcy5fJEFBLnBhcmVudE5vZGU7Y29uc3Qgcj10aGlzLl8kQU07cmV0dXJuIHIhPT12b2lkIDAmJmU/Lm5vZGVUeXBlPT09MTEmJihlPXIucGFyZW50Tm9kZSksZX1nZXQgc3RhcnROb2RlKCl7cmV0dXJuIHRoaXMuXyRBQX1nZXQgZW5kTm9kZSgpe3JldHVybiB0aGlzLl8kQUJ9XyRBSShlLHI9dGhpcyl7ZT1PaCh0aGlzLGUsciksZG0oZSk/ZT09PUZyfHxlPT1udWxsfHxlPT09IiI/KHRoaXMuXyRBSCE9PUZyJiZ0aGlzLl8kQVIoKSx0aGlzLl8kQUg9RnIpOmUhPT10aGlzLl8kQUgmJmUhPT15YSYmdGhpcy5fKGUpOmUuXyRsaXRUeXBlJCE9PXZvaWQgMD90aGlzLiQoZSk6ZS5ub2RlVHlwZSE9PXZvaWQgMD90aGlzLlQoZSk6cWZlKGUpP3RoaXMuayhlKTp0aGlzLl8oZSl9TyhlKXtyZXR1cm4gdGhpcy5fJEFBLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcy5fJEFCKX1UKGUpe3RoaXMuXyRBSCE9PWUmJih0aGlzLl8kQVIoKSx0aGlzLl8kQUg9dGhpcy5PKGUpKX1fKGUpe3RoaXMuXyRBSCE9PUZyJiZkbSh0aGlzLl8kQUgpP3RoaXMuXyRBQS5uZXh0U2libGluZy5kYXRhPWU6dGhpcy5UKFR1LmNyZWF0ZVRleHROb2RlKGUpKSx0aGlzLl8kQUg9ZX0kKGUpe2NvbnN0e3ZhbHVlczpyLF8kbGl0VHlwZSQ6bn09ZSxzPXR5cGVvZiBuPT0ibnVtYmVyIj90aGlzLl8kQUMoZSk6KG4uZWw9PT12b2lkIDAmJihuLmVsPUd4LmNyZWF0ZUVsZW1lbnQoTUIobi5oLG4uaFswXSksdGhpcy5vcHRpb25zKSksbik7aWYodGhpcy5fJEFIPy5fJEFEPT09cyl0aGlzLl8kQUgucChyKTtlbHNle2NvbnN0IGk9bmV3IEdmZShzLHRoaXMpLG89aS51KHRoaXMub3B0aW9ucyk7aS5wKHIpLHRoaXMuVChvKSx0aGlzLl8kQUg9aX19XyRBQyhlKXtsZXQgcj1lQS5nZXQoZS5zdHJpbmdzKTtyZXR1cm4gcj09PXZvaWQgMCYmZUEuc2V0KGUuc3RyaW5ncyxyPW5ldyBHeChlKSkscn1rKGUpe2VfKHRoaXMuXyRBSCl8fCh0aGlzLl8kQUg9W10sdGhpcy5fJEFSKCkpO2NvbnN0IHI9dGhpcy5fJEFIO2xldCBuLHM9MDtmb3IoY29uc3QgaSBvZiBlKXM9PT1yLmxlbmd0aD9yLnB1c2gobj1uZXcgUzEodGhpcy5PKHVtKCkpLHRoaXMuTyh1bSgpKSx0aGlzLHRoaXMub3B0aW9ucykpOm49cltzXSxuLl8kQUkoaSkscysrO3M8ci5sZW5ndGgmJih0aGlzLl8kQVIobiYmbi5fJEFCLm5leHRTaWJsaW5nLHMpLHIubGVuZ3RoPXMpfV8kQVIoZT10aGlzLl8kQUEubmV4dFNpYmxpbmcscil7Zm9yKHRoaXMuXyRBUD8uKCExLCEwLHIpO2UmJmUhPT10aGlzLl8kQUI7KXtjb25zdCBuPWUubmV4dFNpYmxpbmc7ZS5yZW1vdmUoKSxlPW59fXNldENvbm5lY3RlZChlKXt0aGlzLl8kQU09PT12b2lkIDAmJih0aGlzLl8kQ3Y9ZSx0aGlzLl8kQVA/LihlKSl9fWxldCBYeT1jbGFzc3tnZXQgdGFnTmFtZSgpe3JldHVybiB0aGlzLmVsZW1lbnQudGFnTmFtZX1nZXQgXyRBVSgpe3JldHVybiB0aGlzLl8kQU0uXyRBVX1jb25zdHJ1Y3RvcihlLHIsbixzLGkpe3RoaXMudHlwZT0xLHRoaXMuXyRBSD1Gcix0aGlzLl8kQU49dm9pZCAwLHRoaXMuZWxlbWVudD1lLHRoaXMubmFtZT1yLHRoaXMuXyRBTT1zLHRoaXMub3B0aW9ucz1pLG4ubGVuZ3RoPjJ8fG5bMF0hPT0iInx8blsxXSE9PSIiPyh0aGlzLl8kQUg9QXJyYXkobi5sZW5ndGgtMSkuZmlsbChuZXcgU3RyaW5nKSx0aGlzLnN0cmluZ3M9bik6dGhpcy5fJEFIPUZyfV8kQUkoZSxyPXRoaXMsbixzKXtjb25zdCBpPXRoaXMuc3RyaW5ncztsZXQgbz0hMTtpZihpPT09dm9pZCAwKWU9T2godGhpcyxlLHIsMCksbz0hZG0oZSl8fGUhPT10aGlzLl8kQUgmJmUhPT15YSxvJiYodGhpcy5fJEFIPWUpO2Vsc2V7Y29uc3QgYT1lO2xldCBjLGw7Zm9yKGU9aVswXSxjPTA7YzxpLmxlbmd0aC0xO2MrKylsPU9oKHRoaXMsYVtuK2NdLHIsYyksbD09PXlhJiYobD10aGlzLl8kQUhbY10pLG98fD0hZG0obCl8fGwhPT10aGlzLl8kQUhbY10sbD09PUZyP2U9RnI6ZSE9PUZyJiYoZSs9KGw/PyIiKStpW2MrMV0pLHRoaXMuXyRBSFtjXT1sfW8mJiFzJiZ0aGlzLmooZSl9aihlKXtlPT09RnI/dGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSh0aGlzLm5hbWUpOnRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLGU/PyIiKX19LEtmZT1jbGFzcyBleHRlbmRzIFh5e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9M31qKGUpe3RoaXMuZWxlbWVudFt0aGlzLm5hbWVdPWU9PT1Gcj92b2lkIDA6ZX19LFpmZT1jbGFzcyBleHRlbmRzIFh5e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnR5cGU9NH1qKGUpe3RoaXMuZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUodGhpcy5uYW1lLCEhZSYmZSE9PUZyKX19LFlmZT1jbGFzcyBleHRlbmRzIFh5e2NvbnN0cnVjdG9yKGUscixuLHMsaSl7c3VwZXIoZSxyLG4scyxpKSx0aGlzLnR5cGU9NX1fJEFJKGUscj10aGlzKXtpZigoZT1PaCh0aGlzLGUsciwwKT8/RnIpPT09eWEpcmV0dXJuO2NvbnN0IG49dGhpcy5fJEFILHM9ZT09PUZyJiZuIT09RnJ8fGUuY2FwdHVyZSE9PW4uY2FwdHVyZXx8ZS5vbmNlIT09bi5vbmNlfHxlLnBhc3NpdmUhPT1uLnBhc3NpdmUsaT1lIT09RnImJihuPT09RnJ8fHMpO3MmJnRoaXMuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMubmFtZSx0aGlzLG4pLGkmJnRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHRoaXMubmFtZSx0aGlzLGUpLHRoaXMuXyRBSD1lfWhhbmRsZUV2ZW50KGUpe3R5cGVvZiB0aGlzLl8kQUg9PSJmdW5jdGlvbiI/dGhpcy5fJEFILmNhbGwodGhpcy5vcHRpb25zPy5ob3N0Pz90aGlzLmVsZW1lbnQsZSk6dGhpcy5fJEFILmhhbmRsZUV2ZW50KGUpfX0sSmZlPWNsYXNze2NvbnN0cnVjdG9yKGUscixuKXt0aGlzLmVsZW1lbnQ9ZSx0aGlzLnR5cGU9Nix0aGlzLl8kQU49dm9pZCAwLHRoaXMuXyRBTT1yLHRoaXMub3B0aW9ucz1ufWdldCBfJEFVKCl7cmV0dXJuIHRoaXMuXyRBTS5fJEFVfV8kQUkoZSl7T2godGhpcyxlKX19O2NvbnN0IFhmZT1RNi5saXRIdG1sUG9seWZpbGxTdXBwb3J0O1hmZT8uKEd4LFMxKSwoUTYubGl0SHRtbFZlcnNpb25zPz89W10pLnB1c2goIjMuMy4wIik7Y29uc3QgUWZlPSh0LGUscik9Pntjb25zdCBuPXI/LnJlbmRlckJlZm9yZT8/ZTtsZXQgcz1uLl8kbGl0UGFydCQ7aWYocz09PXZvaWQgMCl7Y29uc3QgaT1yPy5yZW5kZXJCZWZvcmU/P251bGw7bi5fJGxpdFBhcnQkPXM9bmV3IFMxKGUuaW5zZXJ0QmVmb3JlKHVtKCksaSksaSx2b2lkIDAscj8/e30pfXJldHVybiBzLl8kQUkodCksc307LyoqDQogKiBAbGljZW5zZQ0KICogQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQw0KICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KICovY29uc3QgdF89Z2xvYmFsVGhpcztsZXQgYWU9Y2xhc3MgZXh0ZW5kcyBRZHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZW5kZXJPcHRpb25zPXtob3N0OnRoaXN9LHRoaXMuXyREbz12b2lkIDB9Y3JlYXRlUmVuZGVyUm9vdCgpe2NvbnN0IGU9c3VwZXIuY3JlYXRlUmVuZGVyUm9vdCgpO3JldHVybiB0aGlzLnJlbmRlck9wdGlvbnMucmVuZGVyQmVmb3JlPz89ZS5maXJzdENoaWxkLGV9dXBkYXRlKGUpe2NvbnN0IHI9dGhpcy5yZW5kZXIoKTt0aGlzLmhhc1VwZGF0ZWR8fCh0aGlzLnJlbmRlck9wdGlvbnMuaXNDb25uZWN0ZWQ9dGhpcy5pc0Nvbm5lY3RlZCksc3VwZXIudXBkYXRlKGUpLHRoaXMuXyREbz1RZmUocix0aGlzLnJlbmRlclJvb3QsdGhpcy5yZW5kZXJPcHRpb25zKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fJERvPy5zZXRDb25uZWN0ZWQoITApfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl8kRG8/LnNldENvbm5lY3RlZCghMSl9cmVuZGVyKCl7cmV0dXJuIHlhfX07YWUuXyRsaXRFbGVtZW50JD0hMCxhZS5maW5hbGl6ZWQ9ITAsdF8ubGl0RWxlbWVudEh5ZHJhdGVTdXBwb3J0Py4oe0xpdEVsZW1lbnQ6YWV9KTtjb25zdCBlMGU9dF8ubGl0RWxlbWVudFBvbHlmaWxsU3VwcG9ydDtlMGU/Lih7TGl0RWxlbWVudDphZX0pOyh0Xy5saXRFbGVtZW50VmVyc2lvbnM/Pz1bXSkucHVzaCgiNC4yLjAiKTtsZXQgYTAsZ2Msd2M7ZnVuY3Rpb24gdDBlKHQsZSl7YTA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSxnYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLHdjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksYTAudGV4dENvbnRlbnQ9dWgodCkuY29yZS5jc3NUZXh0LGdjLnRleHRDb250ZW50PXVoKHQpLmRhcmsuY3NzVGV4dCx3Yy50ZXh0Q29udGVudD11aCh0KS5saWdodC5jc3NUZXh0LGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYTApLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZ2MpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQod2MpLEJCKGUpfWZ1bmN0aW9uIEJCKHQpe2djJiZ3YyYmKHQ9PT0ibGlnaHQiPyhnYy5yZW1vdmVBdHRyaWJ1dGUoIm1lZGlhIiksd2MubWVkaWE9ImVuYWJsZWQiKTood2MucmVtb3ZlQXR0cmlidXRlKCJtZWRpYSIpLGdjLm1lZGlhPSJlbmFibGVkIikpfWZ1bmN0aW9uIHIwZSh0KXthMCYmZ2MmJndjJiYoYTAudGV4dENvbnRlbnQ9dWgodCkuY29yZS5jc3NUZXh0LGdjLnRleHRDb250ZW50PXVoKHQpLmRhcmsuY3NzVGV4dCx3Yy50ZXh0Q29udGVudD11aCh0KS5saWdodC5jc3NUZXh0KX1mdW5jdGlvbiB1aCh0KXtyZXR1cm57Y29yZTpwZWANCiAgICAgIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCcpOw0KICAgICAgQGtleWZyYW1lcyB3M20tc2hha2Ugew0KICAgICAgICAwJSB7DQogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGUoMGRlZyk7DQogICAgICAgIH0NCiAgICAgICAgMjAlIHsNCiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgtMWRlZyk7DQogICAgICAgIH0NCiAgICAgICAgNDAlIHsNCiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgxLjVkZWcpOw0KICAgICAgICB9DQogICAgICAgIDYwJSB7DQogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGUoLTEuNWRlZyk7DQogICAgICAgIH0NCiAgICAgICAgODAlIHsNCiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgxZGVnKTsNCiAgICAgICAgfQ0KICAgICAgICAxMDAlIHsNCiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgwZGVnKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgQGtleWZyYW1lcyB3M20taWZyYW1lLWZhZGUtb3V0IHsNCiAgICAgICAgMCUgew0KICAgICAgICAgIG9wYWNpdHk6IDE7DQogICAgICAgIH0NCiAgICAgICAgMTAwJSB7DQogICAgICAgICAgb3BhY2l0eTogMDsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgQGtleWZyYW1lcyB3M20taWZyYW1lLXpvb20taW4gew0KICAgICAgICAwJSB7DQogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUwcHgpOw0KICAgICAgICAgIG9wYWNpdHk6IDA7DQogICAgICAgIH0NCiAgICAgICAgMTAwJSB7DQogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7DQogICAgICAgICAgb3BhY2l0eTogMTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgQGtleWZyYW1lcyB3M20taWZyYW1lLXpvb20taW4tbW9iaWxlIHsNCiAgICAgICAgMCUgew0KICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7DQogICAgICAgICAgb3BhY2l0eTogMDsNCiAgICAgICAgfQ0KICAgICAgICAxMDAlIHsNCiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOw0KICAgICAgICAgIG9wYWNpdHk6IDE7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIDpyb290IHsNCiAgICAgICAgLS13M20tbW9kYWwtd2lkdGg6IDM2MHB4Ow0KICAgICAgICAtLXczbS1jb2xvci1taXgtc3RyZW5ndGg6ICR7VmkodD8uWyItLXczbS1jb2xvci1taXgtc3RyZW5ndGgiXT9gJHt0WyItLXczbS1jb2xvci1taXgtc3RyZW5ndGgiXX0lYDoiMCUiKX07DQogICAgICAgIC0tdzNtLWZvbnQtZmFtaWx5OiAke1ZpKHQ/LlsiLS13M20tZm9udC1mYW1pbHkiXXx8IkludGVyLCBTZWdvZSBVSSwgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCBGaXJhIFNhbnMsIERyb2lkIFNhbnMsIEhlbHZldGljYSBOZXVlLCBzYW5zLXNlcmlmOyIpfTsNCiAgICAgICAgLS13M20tZm9udC1zaXplLW1hc3RlcjogJHtWaSh0Py5bIi0tdzNtLWZvbnQtc2l6ZS1tYXN0ZXIiXXx8IjEwcHgiKX07DQogICAgICAgIC0tdzNtLWJvcmRlci1yYWRpdXMtbWFzdGVyOiAke1ZpKHQ/LlsiLS13M20tYm9yZGVyLXJhZGl1cy1tYXN0ZXIiXXx8IjRweCIpfTsNCiAgICAgICAgLS13M20tei1pbmRleDogJHtWaSh0Py5bIi0tdzNtLXotaW5kZXgiXXx8OTk5KX07DQoNCiAgICAgICAgLS13dWktZm9udC1mYW1pbHk6IHZhcigtLXczbS1mb250LWZhbWlseSk7DQoNCiAgICAgICAgLS13dWktZm9udC1zaXplLW1pbmk6IGNhbGModmFyKC0tdzNtLWZvbnQtc2l6ZS1tYXN0ZXIpICogMC44KTsNCiAgICAgICAgLS13dWktZm9udC1zaXplLW1pY3JvOiB2YXIoLS13M20tZm9udC1zaXplLW1hc3Rlcik7DQogICAgICAgIC0td3VpLWZvbnQtc2l6ZS10aW55OiBjYWxjKHZhcigtLXczbS1mb250LXNpemUtbWFzdGVyKSAqIDEuMik7DQogICAgICAgIC0td3VpLWZvbnQtc2l6ZS1zbWFsbDogY2FsYyh2YXIoLS13M20tZm9udC1zaXplLW1hc3RlcikgKiAxLjQpOw0KICAgICAgICAtLXd1aS1mb250LXNpemUtcGFyYWdyYXBoOiBjYWxjKHZhcigtLXczbS1mb250LXNpemUtbWFzdGVyKSAqIDEuNik7DQogICAgICAgIC0td3VpLWZvbnQtc2l6ZS1tZWRpdW06IGNhbGModmFyKC0tdzNtLWZvbnQtc2l6ZS1tYXN0ZXIpICogMS44KTsNCiAgICAgICAgLS13dWktZm9udC1zaXplLWxhcmdlOiBjYWxjKHZhcigtLXczbS1mb250LXNpemUtbWFzdGVyKSAqIDIpOw0KICAgICAgICAtLXd1aS1mb250LXNpemUtdGl0bGUtNjogY2FsYyh2YXIoLS13M20tZm9udC1zaXplLW1hc3RlcikgKiAyLjIpOw0KICAgICAgICAtLXd1aS1mb250LXNpemUtbWVkaXVtLXRpdGxlOiBjYWxjKHZhcigtLXczbS1mb250LXNpemUtbWFzdGVyKSAqIDIuNCk7DQogICAgICAgIC0td3VpLWZvbnQtc2l6ZS0yeGw6IGNhbGModmFyKC0tdzNtLWZvbnQtc2l6ZS1tYXN0ZXIpICogNCk7DQoNCiAgICAgICAgLS13dWktYm9yZGVyLXJhZGl1cy01eHM6IHZhcigtLXczbS1ib3JkZXItcmFkaXVzLW1hc3Rlcik7DQogICAgICAgIC0td3VpLWJvcmRlci1yYWRpdXMtNHhzOiBjYWxjKHZhcigtLXczbS1ib3JkZXItcmFkaXVzLW1hc3RlcikgKiAxLjUpOw0KICAgICAgICAtLXd1aS1ib3JkZXItcmFkaXVzLTN4czogY2FsYyh2YXIoLS13M20tYm9yZGVyLXJhZGl1cy1tYXN0ZXIpICogMik7DQogICAgICAgIC0td3VpLWJvcmRlci1yYWRpdXMteHhzOiBjYWxjKHZhcigtLXczbS1ib3JkZXItcmFkaXVzLW1hc3RlcikgKiAzKTsNCiAgICAgICAgLS13dWktYm9yZGVyLXJhZGl1cy14czogY2FsYyh2YXIoLS13M20tYm9yZGVyLXJhZGl1cy1tYXN0ZXIpICogNCk7DQogICAgICAgIC0td3VpLWJvcmRlci1yYWRpdXMtczogY2FsYyh2YXIoLS13M20tYm9yZGVyLXJhZGl1cy1tYXN0ZXIpICogNSk7DQogICAgICAgIC0td3VpLWJvcmRlci1yYWRpdXMtbTogY2FsYyh2YXIoLS13M20tYm9yZGVyLXJhZGl1cy1tYXN0ZXIpICogNyk7DQogICAgICAgIC0td3VpLWJvcmRlci1yYWRpdXMtbDogY2FsYyh2YXIoLS13M20tYm9yZGVyLXJhZGl1cy1tYXN0ZXIpICogOSk7DQogICAgICAgIC0td3VpLWJvcmRlci1yYWRpdXMtM3hsOiBjYWxjKHZhcigtLXczbS1ib3JkZXItcmFkaXVzLW1hc3RlcikgKiAyMCk7DQoNCiAgICAgICAgLS13dWktZm9udC13ZWlnaHQtbGlnaHQ6IDQwMDsNCiAgICAgICAgLS13dWktZm9udC13ZWlnaHQtcmVndWxhcjogNTAwOw0KICAgICAgICAtLXd1aS1mb250LXdlaWdodC1tZWRpdW06IDYwMDsNCiAgICAgICAgLS13dWktZm9udC13ZWlnaHQtYm9sZDogNzAwOw0KDQogICAgICAgIC0td3VpLWxldHRlci1zcGFjaW5nLTJ4bDogLTEuNnB4Ow0KICAgICAgICAtLXd1aS1sZXR0ZXItc3BhY2luZy1tZWRpdW0tdGl0bGU6IC0wLjk2cHg7DQogICAgICAgIC0td3VpLWxldHRlci1zcGFjaW5nLXRpdGxlLTY6IC0wLjg4cHg7DQogICAgICAgIC0td3VpLWxldHRlci1zcGFjaW5nLWxhcmdlOiAtMC44cHg7DQogICAgICAgIC0td3VpLWxldHRlci1zcGFjaW5nLW1lZGl1bTogLTAuNzJweDsNCiAgICAgICAgLS13dWktbGV0dGVyLXNwYWNpbmctcGFyYWdyYXBoOiAtMC42NHB4Ow0KICAgICAgICAtLXd1aS1sZXR0ZXItc3BhY2luZy1zbWFsbDogLTAuNTZweDsNCiAgICAgICAgLS13dWktbGV0dGVyLXNwYWNpbmctdGlueTogLTAuNDhweDsNCiAgICAgICAgLS13dWktbGV0dGVyLXNwYWNpbmctbWljcm86IC0wLjJweDsNCiAgICAgICAgLS13dWktbGV0dGVyLXNwYWNpbmctbWluaTogLTAuMTZweDsNCg0KICAgICAgICAtLXd1aS1zcGFjaW5nLTA6IDBweDsNCiAgICAgICAgLS13dWktc3BhY2luZy00eHM6IDJweDsNCiAgICAgICAgLS13dWktc3BhY2luZy0zeHM6IDRweDsNCiAgICAgICAgLS13dWktc3BhY2luZy14eHM6IDZweDsNCiAgICAgICAgLS13dWktc3BhY2luZy0yeHM6IDdweDsNCiAgICAgICAgLS13dWktc3BhY2luZy14czogOHB4Ow0KICAgICAgICAtLXd1aS1zcGFjaW5nLTF4czogMTBweDsNCiAgICAgICAgLS13dWktc3BhY2luZy1zOiAxMnB4Ow0KICAgICAgICAtLXd1aS1zcGFjaW5nLW06IDE0cHg7DQogICAgICAgIC0td3VpLXNwYWNpbmctbDogMTZweDsNCiAgICAgICAgLS13dWktc3BhY2luZy0ybDogMThweDsNCiAgICAgICAgLS13dWktc3BhY2luZy14bDogMjBweDsNCiAgICAgICAgLS13dWktc3BhY2luZy14eGw6IDI0cHg7DQogICAgICAgIC0td3VpLXNwYWNpbmctMnhsOiAzMnB4Ow0KICAgICAgICAtLXd1aS1zcGFjaW5nLTN4bDogNDBweDsNCiAgICAgICAgLS13dWktc3BhY2luZy00eGw6IDkwcHg7DQogICAgICAgIC0td3VpLXNwYWNpbmctNXhsOiA5NXB4Ow0KDQogICAgICAgIC0td3VpLWljb24tYm94LXNpemUteHhzOiAxNHB4Ow0KICAgICAgICAtLXd1aS1pY29uLWJveC1zaXplLXhzOiAyMHB4Ow0KICAgICAgICAtLXd1aS1pY29uLWJveC1zaXplLXNtOiAyNHB4Ow0KICAgICAgICAtLXd1aS1pY29uLWJveC1zaXplLW1kOiAzMnB4Ow0KICAgICAgICAtLXd1aS1pY29uLWJveC1zaXplLW1kbDogMzZweDsNCiAgICAgICAgLS13dWktaWNvbi1ib3gtc2l6ZS1sZzogNDBweDsNCiAgICAgICAgLS13dWktaWNvbi1ib3gtc2l6ZS0ybGc6IDQ4cHg7DQogICAgICAgIC0td3VpLWljb24tYm94LXNpemUteGw6IDY0cHg7DQoNCiAgICAgICAgLS13dWktaWNvbi1zaXplLWluaGVyaXQ6IGluaGVyaXQ7DQogICAgICAgIC0td3VpLWljb24tc2l6ZS14eHM6IDEwcHg7DQogICAgICAgIC0td3VpLWljb24tc2l6ZS14czogMTJweDsNCiAgICAgICAgLS13dWktaWNvbi1zaXplLXNtOiAxNHB4Ow0KICAgICAgICAtLXd1aS1pY29uLXNpemUtbWQ6IDE2cHg7DQogICAgICAgIC0td3VpLWljb24tc2l6ZS1tZGw6IDE4cHg7DQogICAgICAgIC0td3VpLWljb24tc2l6ZS1sZzogMjBweDsNCiAgICAgICAgLS13dWktaWNvbi1zaXplLXhsOiAyNHB4Ow0KICAgICAgICAtLXd1aS1pY29uLXNpemUteHhsOiAyOHB4Ow0KDQogICAgICAgIC0td3VpLXdhbGxldC1pbWFnZS1zaXplLWluaGVyaXQ6IGluaGVyaXQ7DQogICAgICAgIC0td3VpLXdhbGxldC1pbWFnZS1zaXplLXNtOiA0MHB4Ow0KICAgICAgICAtLXd1aS13YWxsZXQtaW1hZ2Utc2l6ZS1tZDogNTZweDsNCiAgICAgICAgLS13dWktd2FsbGV0LWltYWdlLXNpemUtbGc6IDgwcHg7DQoNCiAgICAgICAgLS13dWktdmlzdWFsLXNpemUtc2l6ZS1pbmhlcml0OiBpbmhlcml0Ow0KICAgICAgICAtLXd1aS12aXN1YWwtc2l6ZS1zbTogNDBweDsNCiAgICAgICAgLS13dWktdmlzdWFsLXNpemUtbWQ6IDU1cHg7DQogICAgICAgIC0td3VpLXZpc3VhbC1zaXplLWxnOiA4MHB4Ow0KDQogICAgICAgIC0td3VpLWJveC1zaXplLW1kOiAxMDBweDsNCiAgICAgICAgLS13dWktYm94LXNpemUtbGc6IDEyMHB4Ow0KDQogICAgICAgIC0td3VpLWVhc2Utb3V0LXBvd2VyLTI6IGN1YmljLWJlemllcigwLCAwLCAwLjIyLCAxKTsNCiAgICAgICAgLS13dWktZWFzZS1vdXQtcG93ZXItMTogY3ViaWMtYmV6aWVyKDAsIDAsIDAuNTUsIDEpOw0KDQogICAgICAgIC0td3VpLWVhc2UtaW4tcG93ZXItMzogY3ViaWMtYmV6aWVyKDAuNjYsIDAsIDEsIDEpOw0KICAgICAgICAtLXd1aS1lYXNlLWluLXBvd2VyLTI6IGN1YmljLWJlemllcigwLjQ1LCAwLCAxLCAxKTsNCiAgICAgICAgLS13dWktZWFzZS1pbi1wb3dlci0xOiBjdWJpYy1iZXppZXIoMC4zLCAwLCAxLCAxKTsNCg0KICAgICAgICAtLXd1aS1lYXNlLWlub3V0LXBvd2VyLTE6IGN1YmljLWJlemllcigwLjQ1LCAwLCAwLjU1LCAxKTsNCg0KICAgICAgICAtLXd1aS1kdXJhdGlvbi1sZzogMjAwbXM7DQogICAgICAgIC0td3VpLWR1cmF0aW9uLW1kOiAxMjVtczsNCiAgICAgICAgLS13dWktZHVyYXRpb24tc206IDc1bXM7DQoNCiAgICAgICAgLS13dWktcGF0aC1uZXR3b3JrLXNtOiBwYXRoKA0KICAgICAgICAgICdNMTUuNCAyLjFhNS4yMSA1LjIxIDAgMCAxIDUuMiAwbDExLjYxIDYuN2E1LjIxIDUuMjEgMCAwIDEgMi42MSA0LjUydjEzLjRjMCAxLjg3LTEgMy41OS0yLjYgNC41MmwtMTEuNjEgNi43Yy0xLjYyLjkzLTMuNi45My01LjIyIDBsLTExLjYtNi43YTUuMjEgNS4yMSAwIDAgMS0yLjYxLTQuNTF2LTEzLjRjMC0xLjg3IDEtMy42IDIuNi00LjUyTDE1LjQgMi4xWicNCiAgICAgICAgKTsNCg0KICAgICAgICAtLXd1aS1wYXRoLW5ldHdvcmstbWQ6IHBhdGgoDQogICAgICAgICAgJ000My40NjA1IDEwLjcyNDhMMjguMDQ4NSAxLjYxMDg5QzI1LjU0MzggMC4xMjk3MDUgMjIuNDU2MiAwLjEyOTcwNSAxOS45NTE1IDEuNjEwODhMNC41Mzk1MSAxMC43MjQ4QzIuMDM2MjYgMTIuMjA1MSAwLjUgMTQuOTM2NSAwLjUgMTcuODg2VjM2LjExMzlDMC41IDM5LjA2MzUgMi4wMzYyNiA0MS43OTQ5IDQuNTM5NTEgNDMuMjc1MkwxOS45NTE1IDUyLjM4OTFDMjIuNDU2MiA1My44NzAzIDI1LjU0MzggNTMuODcwMyAyOC4wNDg1IDUyLjM4OTFMNDMuNDYwNSA0My4yNzUyQzQ1Ljk2MzcgNDEuNzk0OSA0Ny41IDM5LjA2MzUgNDcuNSAzNi4xMTRWMTcuODg2MUM0Ny41IDE0LjkzNjUgNDUuOTYzNyAxMi4yMDUxIDQzLjQ2MDUgMTAuNzI0OFonDQogICAgICAgICk7DQoNCiAgICAgICAgLS13dWktcGF0aC1uZXR3b3JrLWxnOiBwYXRoKA0KICAgICAgICAgICdNNzguMzI0NCAxOC45MjZMNTAuMTgwOCAyLjQ1MDc4QzQ1LjczNzYgLTAuMTUwMjYxIDQwLjI2MjQgLTAuMTUwMjYyIDM1LjgxOTIgMi40NTA3OEw3LjY3NTYgMTguOTI2QzMuMjMzMjIgMjEuNTI2NiAwLjUgMjYuMzMwMSAwLjUgMzEuNTI0OFY2NC40NzUyQzAuNSA2OS42Njk5IDMuMjMzMjIgNzQuNDczNCA3LjY3NTYgNzcuMDc0TDM1LjgxOTIgOTMuNTQ5MkM0MC4yNjI0IDk2LjE1MDMgNDUuNzM3NiA5Ni4xNTAzIDUwLjE4MDggOTMuNTQ5Mkw3OC4zMjQ0IDc3LjA3NEM4Mi43NjY4IDc0LjQ3MzQgODUuNSA2OS42Njk5IDg1LjUgNjQuNDc1MlYzMS41MjQ4Qzg1LjUgMjYuMzMwMSA4Mi43NjY4IDIxLjUyNjYgNzguMzI0NCAxOC45MjZaJw0KICAgICAgICApOw0KDQogICAgICAgIC0td3VpLXdpZHRoLW5ldHdvcmstc206IDM2cHg7DQogICAgICAgIC0td3VpLXdpZHRoLW5ldHdvcmstbWQ6IDQ4cHg7DQogICAgICAgIC0td3VpLXdpZHRoLW5ldHdvcmstbGc6IDg2cHg7DQoNCiAgICAgICAgLS13dWktaGVpZ2h0LW5ldHdvcmstc206IDQwcHg7DQogICAgICAgIC0td3VpLWhlaWdodC1uZXR3b3JrLW1kOiA1NHB4Ow0KICAgICAgICAtLXd1aS1oZWlnaHQtbmV0d29yay1sZzogOTZweDsNCg0KICAgICAgICAtLXd1aS1pY29uLXNpemUtbmV0d29yay14czogMTJweDsNCiAgICAgICAgLS13dWktaWNvbi1zaXplLW5ldHdvcmstc206IDE2cHg7DQogICAgICAgIC0td3VpLWljb24tc2l6ZS1uZXR3b3JrLW1kOiAyNHB4Ow0KICAgICAgICAtLXd1aS1pY29uLXNpemUtbmV0d29yay1sZzogNDJweDsNCg0KICAgICAgICAtLXd1aS1jb2xvci1pbmhlcml0OiBpbmhlcml0Ow0KDQogICAgICAgIC0td3VpLWNvbG9yLWludmVyc2UtMTAwOiAjZmZmOw0KICAgICAgICAtLXd1aS1jb2xvci1pbnZlcnNlLTAwMDogIzAwMDsNCg0KICAgICAgICAtLXd1aS1jb3ZlcjogcmdiYSgyMCwgMjAsIDIwLCAwLjgpOw0KDQogICAgICAgIC0td3VpLWNvbG9yLW1vZGFsLWJnOiB2YXIoLS13dWktY29sb3ItbW9kYWwtYmctYmFzZSk7DQoNCiAgICAgICAgLS13dWktY29sb3ItYWNjZW50LTEwMDogdmFyKC0td3VpLWNvbG9yLWFjY2VudC1iYXNlLTEwMCk7DQogICAgICAgIC0td3VpLWNvbG9yLWFjY2VudC0wOTA6IHZhcigtLXd1aS1jb2xvci1hY2NlbnQtYmFzZS0wOTApOw0KICAgICAgICAtLXd1aS1jb2xvci1hY2NlbnQtMDgwOiB2YXIoLS13dWktY29sb3ItYWNjZW50LWJhc2UtMDgwKTsNCg0KICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLTEwMDogdmFyKC0td3VpLWNvbG9yLXN1Y2Nlc3MtYmFzZS0xMDApOw0KICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLTEyNTogdmFyKC0td3VpLWNvbG9yLXN1Y2Nlc3MtYmFzZS0xMjUpOw0KDQogICAgICAgIC0td3VpLWNvbG9yLXdhcm5pbmctMTAwOiB2YXIoLS13dWktY29sb3Itd2FybmluZy1iYXNlLTEwMCk7DQoNCiAgICAgICAgLS13dWktY29sb3ItZXJyb3ItMTAwOiB2YXIoLS13dWktY29sb3ItZXJyb3ItYmFzZS0xMDApOw0KICAgICAgICAtLXd1aS1jb2xvci1lcnJvci0xMjU6IHZhcigtLXd1aS1jb2xvci1lcnJvci1iYXNlLTEyNSk7DQoNCiAgICAgICAgLS13dWktY29sb3ItYmx1ZS0xMDA6IHZhcigtLXd1aS1jb2xvci1ibHVlLWJhc2UtMTAwKTsNCiAgICAgICAgLS13dWktY29sb3ItYmx1ZS05MDogdmFyKC0td3VpLWNvbG9yLWJsdWUtYmFzZS05MCk7DQoNCiAgICAgICAgLS13dWktaWNvbi1ib3gtYmctZXJyb3ItMTAwOiB2YXIoLS13dWktaWNvbi1ib3gtYmctZXJyb3ItYmFzZS0xMDApOw0KICAgICAgICAtLXd1aS1pY29uLWJveC1iZy1ibHVlLTEwMDogdmFyKC0td3VpLWljb24tYm94LWJnLWJsdWUtYmFzZS0xMDApOw0KICAgICAgICAtLXd1aS1pY29uLWJveC1iZy1zdWNjZXNzLTEwMDogdmFyKC0td3VpLWljb24tYm94LWJnLXN1Y2Nlc3MtYmFzZS0xMDApOw0KICAgICAgICAtLXd1aS1pY29uLWJveC1iZy1pbnZlcnNlLTEwMDogdmFyKC0td3VpLWljb24tYm94LWJnLWludmVyc2UtYmFzZS0xMDApOw0KDQogICAgICAgIC0td3VpLWFsbC13YWxsZXRzLWJnLTEwMDogdmFyKC0td3VpLWFsbC13YWxsZXRzLWJnLTEwMCk7DQoNCiAgICAgICAgLS13dWktYXZhdGFyLWJvcmRlcjogdmFyKC0td3VpLWF2YXRhci1ib3JkZXItYmFzZSk7DQoNCiAgICAgICAgLS13dWktdGh1bWJuYWlsLWJvcmRlcjogdmFyKC0td3VpLXRodW1ibmFpbC1ib3JkZXItYmFzZSk7DQoNCiAgICAgICAgLS13dWktd2FsbGV0LWJ1dHRvbi1iZzogdmFyKC0td3VpLXdhbGxldC1idXR0b24tYmctYmFzZSk7DQoNCiAgICAgICAgLS13dWktYm94LXNoYWRvdy1ibHVlOiB2YXIoLS13dWktY29sb3ItYWNjZW50LWdsYXNzLTAyMCk7DQogICAgICB9DQoNCiAgICAgIEBzdXBwb3J0cyAoYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHdoaXRlIDUwJSwgYmxhY2spKSB7DQogICAgICAgIDpyb290IHsNCiAgICAgICAgICAtLXd1aS1jb2xvci1tb2RhbC1iZzogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLW1vZGFsLWJnLWJhc2UpDQogICAgICAgICAgKTsNCg0KICAgICAgICAgIC0td3VpLWJveC1zaGFkb3ctYmx1ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXd1aS1jb2xvci1hY2NlbnQtMTAwKSAyMCUsIHRyYW5zcGFyZW50KTsNCg0KICAgICAgICAgIC0td3VpLWNvbG9yLWFjY2VudC0xMDA6IGNvbG9yLW1peCgNCiAgICAgICAgICAgIGluIHNyZ2IsDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYWNjZW50LWJhc2UtMTAwKSAxMDAlLA0KICAgICAgICAgICAgdHJhbnNwYXJlbnQNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWFjY2VudC0wOTA6IGNvbG9yLW1peCgNCiAgICAgICAgICAgIGluIHNyZ2IsDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYWNjZW50LWJhc2UtMTAwKSA5MCUsDQogICAgICAgICAgICB0cmFuc3BhcmVudA0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYWNjZW50LTA4MDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXd1aS1jb2xvci1hY2NlbnQtYmFzZS0xMDApIDgwJSwNCiAgICAgICAgICAgIHRyYW5zcGFyZW50DQogICAgICAgICAgKTsNCiAgICAgICAgICAtLXd1aS1jb2xvci1hY2NlbnQtZ2xhc3MtMDkwOiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWFjY2VudC1iYXNlLTEwMCkgOTAlLA0KICAgICAgICAgICAgdHJhbnNwYXJlbnQNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWFjY2VudC1nbGFzcy0wODA6IGNvbG9yLW1peCgNCiAgICAgICAgICAgIGluIHNyZ2IsDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYWNjZW50LWJhc2UtMTAwKSA4MCUsDQogICAgICAgICAgICB0cmFuc3BhcmVudA0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYWNjZW50LWdsYXNzLTAyMDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXd1aS1jb2xvci1hY2NlbnQtYmFzZS0xMDApIDIwJSwNCiAgICAgICAgICAgIHRyYW5zcGFyZW50DQogICAgICAgICAgKTsNCiAgICAgICAgICAtLXd1aS1jb2xvci1hY2NlbnQtZ2xhc3MtMDE1OiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWFjY2VudC1iYXNlLTEwMCkgMTUlLA0KICAgICAgICAgICAgdHJhbnNwYXJlbnQNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWFjY2VudC1nbGFzcy0wMTA6IGNvbG9yLW1peCgNCiAgICAgICAgICAgIGluIHNyZ2IsDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYWNjZW50LWJhc2UtMTAwKSAxMCUsDQogICAgICAgICAgICB0cmFuc3BhcmVudA0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYWNjZW50LWdsYXNzLTAwNTogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXd1aS1jb2xvci1hY2NlbnQtYmFzZS0xMDApIDUlLA0KICAgICAgICAgICAgdHJhbnNwYXJlbnQNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWFjY2VudC0wMDI6IGNvbG9yLW1peCgNCiAgICAgICAgICAgIGluIHNyZ2IsDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYWNjZW50LWJhc2UtMTAwKSAyJSwNCiAgICAgICAgICAgIHRyYW5zcGFyZW50DQogICAgICAgICAgKTsNCg0KICAgICAgICAgIC0td3VpLWNvbG9yLWZnLTEwMDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWZnLTEwMCkNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWZnLTEyNTogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWZnLTEyNSkNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWZnLTE1MDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWZnLTE1MCkNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWZnLTE3NTogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWZnLTE3NSkNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWZnLTIwMDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWZnLTIwMCkNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWZnLTIyNTogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWZnLTIyNSkNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWZnLTI1MDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWZnLTI1MCkNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWZnLTI3NTogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWZnLTI3NSkNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWZnLTMwMDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWZnLTMwMCkNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWZnLTMyNTogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWZnLTMyNSkNCiAgICAgICAgICApOw0KICAgICAgICAgIC0td3VpLWNvbG9yLWZnLTM1MDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWZnLTM1MCkNCiAgICAgICAgICApOw0KDQogICAgICAgICAgLS13dWktY29sb3ItYmctMTAwOiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmctMTAwKQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYmctMTI1OiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmctMTI1KQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYmctMTUwOiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmctMTUwKQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYmctMTc1OiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmctMTc1KQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYmctMjAwOiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmctMjAwKQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYmctMjI1OiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmctMjI1KQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYmctMjUwOiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmctMjUwKQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYmctMjc1OiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmctMjc1KQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYmctMzAwOiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmctMzAwKQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYmctMzI1OiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmctMzI1KQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItYmctMzUwOiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmctMzUwKQ0KICAgICAgICAgICk7DQoNCiAgICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLTEwMDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLXN1Y2Nlc3MtYmFzZS0xMDApDQogICAgICAgICAgKTsNCiAgICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLTEyNTogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLXN1Y2Nlc3MtYmFzZS0xMjUpDQogICAgICAgICAgKTsNCg0KICAgICAgICAgIC0td3VpLWNvbG9yLXdhcm5pbmctMTAwOiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3Itd2FybmluZy1iYXNlLTEwMCkNCiAgICAgICAgICApOw0KDQogICAgICAgICAgLS13dWktY29sb3ItZXJyb3ItMTAwOiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItZXJyb3ItYmFzZS0xMDApDQogICAgICAgICAgKTsNCiAgICAgICAgICAtLXd1aS1jb2xvci1ibHVlLTEwMDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWNvbG9yLWJsdWUtYmFzZS0xMDApDQogICAgICAgICAgKTsNCiAgICAgICAgICAtLXd1aS1jb2xvci1ibHVlLTkwOiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItYmx1ZS1iYXNlLTkwKQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktY29sb3ItZXJyb3ItMTI1OiBjb2xvci1taXgoDQogICAgICAgICAgICBpbiBzcmdiLA0KICAgICAgICAgICAgdmFyKC0tdzNtLWNvbG9yLW1peCkgdmFyKC0tdzNtLWNvbG9yLW1peC1zdHJlbmd0aCksDQogICAgICAgICAgICB2YXIoLS13dWktY29sb3ItZXJyb3ItYmFzZS0xMjUpDQogICAgICAgICAgKTsNCg0KICAgICAgICAgIC0td3VpLWljb24tYm94LWJnLWVycm9yLTEwMDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWljb24tYm94LWJnLWVycm9yLWJhc2UtMTAwKQ0KICAgICAgICAgICk7DQogICAgICAgICAgLS13dWktaWNvbi1ib3gtYmctYWNjZW50LTEwMDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWljb24tYm94LWJnLWJsdWUtYmFzZS0xMDApDQogICAgICAgICAgKTsNCiAgICAgICAgICAtLXd1aS1pY29uLWJveC1iZy1zdWNjZXNzLTEwMDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWljb24tYm94LWJnLXN1Y2Nlc3MtYmFzZS0xMDApDQogICAgICAgICAgKTsNCiAgICAgICAgICAtLXd1aS1pY29uLWJveC1iZy1pbnZlcnNlLTEwMDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWljb24tYm94LWJnLWludmVyc2UtYmFzZS0xMDApDQogICAgICAgICAgKTsNCg0KICAgICAgICAgIC0td3VpLWFsbC13YWxsZXRzLWJnLTEwMDogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWFsbC13YWxsZXRzLWJnLTEwMCkNCiAgICAgICAgICApOw0KDQogICAgICAgICAgLS13dWktYXZhdGFyLWJvcmRlcjogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLWF2YXRhci1ib3JkZXItYmFzZSkNCiAgICAgICAgICApOw0KDQogICAgICAgICAgLS13dWktdGh1bWJuYWlsLWJvcmRlcjogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLXRodW1ibmFpbC1ib3JkZXItYmFzZSkNCiAgICAgICAgICApOw0KDQogICAgICAgICAgLS13dWktd2FsbGV0LWJ1dHRvbi1iZzogY29sb3ItbWl4KA0KICAgICAgICAgICAgaW4gc3JnYiwNCiAgICAgICAgICAgIHZhcigtLXczbS1jb2xvci1taXgpIHZhcigtLXczbS1jb2xvci1taXgtc3RyZW5ndGgpLA0KICAgICAgICAgICAgdmFyKC0td3VpLXdhbGxldC1idXR0b24tYmctYmFzZSkNCiAgICAgICAgICApOw0KICAgICAgICB9DQogICAgICB9DQogICAgYCxsaWdodDpwZWANCiAgICAgIDpyb290IHsNCiAgICAgICAgLS13M20tY29sb3ItbWl4OiAke1ZpKHQ/LlsiLS13M20tY29sb3ItbWl4Il18fCIjZmZmIil9Ow0KICAgICAgICAtLXczbS1hY2NlbnQ6ICR7VmkoZ28odCwiZGFyayIpWyItLXczbS1hY2NlbnQiXSl9Ow0KICAgICAgICAtLXczbS1kZWZhdWx0OiAjZmZmOw0KDQogICAgICAgIC0td3VpLWNvbG9yLW1vZGFsLWJnLWJhc2U6ICR7VmkoZ28odCwiZGFyayIpWyItLXczbS1iYWNrZ3JvdW5kIl0pfTsNCiAgICAgICAgLS13dWktY29sb3ItYWNjZW50LWJhc2UtMTAwOiB2YXIoLS13M20tYWNjZW50KTsNCg0KICAgICAgICAtLXd1aS1jb2xvci1ibHVlYmVycnktMTAwOiBoc2xhKDIzMCwgMTAwJSwgNjclLCAxKTsNCiAgICAgICAgLS13dWktY29sb3ItYmx1ZWJlcnJ5LTA5MDogaHNsYSgyMzEsIDc2JSwgNjElLCAxKTsNCiAgICAgICAgLS13dWktY29sb3ItYmx1ZWJlcnJ5LTA4MDogaHNsYSgyMzAsIDU5JSwgNTUlLCAxKTsNCiAgICAgICAgLS13dWktY29sb3ItYmx1ZWJlcnJ5LTA1MDogaHNsYSgyMzEsIDEwMCUsIDcwJSwgMC4xKTsNCg0KICAgICAgICAtLXd1aS1jb2xvci1mZy0xMDA6ICNlNGU3ZTc7DQogICAgICAgIC0td3VpLWNvbG9yLWZnLTEyNTogI2QwZDVkNTsNCiAgICAgICAgLS13dWktY29sb3ItZmctMTUwOiAjYThiMWIxOw0KICAgICAgICAtLXd1aS1jb2xvci1mZy0xNzU6ICNhOGIwYjA7DQogICAgICAgIC0td3VpLWNvbG9yLWZnLTIwMDogIzk0OWU5ZTsNCiAgICAgICAgLS13dWktY29sb3ItZmctMjI1OiAjODY4ZjhmOw0KICAgICAgICAtLXd1aS1jb2xvci1mZy0yNTA6ICM3ODgwODA7DQogICAgICAgIC0td3VpLWNvbG9yLWZnLTI3NTogIzc4ODE4MTsNCiAgICAgICAgLS13dWktY29sb3ItZmctMzAwOiAjNmU3Nzc3Ow0KICAgICAgICAtLXd1aS1jb2xvci1mZy0zMjU6ICM5YTlhOWE7DQogICAgICAgIC0td3VpLWNvbG9yLWZnLTM1MDogIzM2MzYzNjsNCg0KICAgICAgICAtLXd1aS1jb2xvci1iZy0xMDA6ICMxNDE0MTQ7DQogICAgICAgIC0td3VpLWNvbG9yLWJnLTEyNTogIzE5MWExYTsNCiAgICAgICAgLS13dWktY29sb3ItYmctMTUwOiAjMWUxZjFmOw0KICAgICAgICAtLXd1aS1jb2xvci1iZy0xNzU6ICMyMjI1MjU7DQogICAgICAgIC0td3VpLWNvbG9yLWJnLTIwMDogIzI3MmEyYTsNCiAgICAgICAgLS13dWktY29sb3ItYmctMjI1OiAjMmMzMDMwOw0KICAgICAgICAtLXd1aS1jb2xvci1iZy0yNTA6ICMzMTM1MzU7DQogICAgICAgIC0td3VpLWNvbG9yLWJnLTI3NTogIzM2M2IzYjsNCiAgICAgICAgLS13dWktY29sb3ItYmctMzAwOiAjM2I0MDQwOw0KICAgICAgICAtLXd1aS1jb2xvci1iZy0zMjU6ICMyNTI1MjU7DQogICAgICAgIC0td3VpLWNvbG9yLWJnLTM1MDogI2ZmZmZmZjsNCg0KICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLWJhc2UtMTAwOiAjMjZkOTYyOw0KICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLWJhc2UtMTI1OiAjMzBhNDZiOw0KDQogICAgICAgIC0td3VpLWNvbG9yLXdhcm5pbmctYmFzZS0xMDA6ICNmM2ExM2Y7DQoNCiAgICAgICAgLS13dWktY29sb3ItZXJyb3ItYmFzZS0xMDA6ICNmMjVhNjc7DQogICAgICAgIC0td3VpLWNvbG9yLWVycm9yLWJhc2UtMTI1OiAjZGY0YTM0Ow0KDQogICAgICAgIC0td3VpLWNvbG9yLWJsdWUtYmFzZS0xMDA6IHJnYmEoMTAyLCAxMjUsIDI1NSwgMSk7DQogICAgICAgIC0td3VpLWNvbG9yLWJsdWUtYmFzZS05MDogcmdiYSgxMDIsIDEyNSwgMjU1LCAwLjkpOw0KDQogICAgICAgIC0td3VpLWNvbG9yLXN1Y2Nlc3MtZ2xhc3MtMDAxOiByZ2JhKDM4LCAyMTcsIDk4LCAwLjAxKTsNCiAgICAgICAgLS13dWktY29sb3Itc3VjY2Vzcy1nbGFzcy0wMDI6IHJnYmEoMzgsIDIxNywgOTgsIDAuMDIpOw0KICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLWdsYXNzLTAwNTogcmdiYSgzOCwgMjE3LCA5OCwgMC4wNSk7DQogICAgICAgIC0td3VpLWNvbG9yLXN1Y2Nlc3MtZ2xhc3MtMDEwOiByZ2JhKDM4LCAyMTcsIDk4LCAwLjEpOw0KICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLWdsYXNzLTAxNTogcmdiYSgzOCwgMjE3LCA5OCwgMC4xNSk7DQogICAgICAgIC0td3VpLWNvbG9yLXN1Y2Nlc3MtZ2xhc3MtMDIwOiByZ2JhKDM4LCAyMTcsIDk4LCAwLjIpOw0KICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLWdsYXNzLTAyNTogcmdiYSgzOCwgMjE3LCA5OCwgMC4yNSk7DQogICAgICAgIC0td3VpLWNvbG9yLXN1Y2Nlc3MtZ2xhc3MtMDMwOiByZ2JhKDM4LCAyMTcsIDk4LCAwLjMpOw0KICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLWdsYXNzLTA2MDogcmdiYSgzOCwgMjE3LCA5OCwgMC42KTsNCiAgICAgICAgLS13dWktY29sb3Itc3VjY2Vzcy1nbGFzcy0wODA6IHJnYmEoMzgsIDIxNywgOTgsIDAuOCk7DQoNCiAgICAgICAgLS13dWktY29sb3Itc3VjY2Vzcy1nbGFzcy1yZW93bi0wMjA6IHJnYmEoNDgsIDE2NCwgMTA3LCAwLjIpOw0KDQogICAgICAgIC0td3VpLWNvbG9yLXdhcm5pbmctZ2xhc3MtcmVvd24tMDIwOiByZ2JhKDI0MywgMTYxLCA2MywgMC4yKTsNCg0KICAgICAgICAtLXd1aS1jb2xvci1lcnJvci1nbGFzcy0wMDE6IHJnYmEoMjQyLCA5MCwgMTAzLCAwLjAxKTsNCiAgICAgICAgLS13dWktY29sb3ItZXJyb3ItZ2xhc3MtMDAyOiByZ2JhKDI0MiwgOTAsIDEwMywgMC4wMik7DQogICAgICAgIC0td3VpLWNvbG9yLWVycm9yLWdsYXNzLTAwNTogcmdiYSgyNDIsIDkwLCAxMDMsIDAuMDUpOw0KICAgICAgICAtLXd1aS1jb2xvci1lcnJvci1nbGFzcy0wMTA6IHJnYmEoMjQyLCA5MCwgMTAzLCAwLjEpOw0KICAgICAgICAtLXd1aS1jb2xvci1lcnJvci1nbGFzcy0wMTU6IHJnYmEoMjQyLCA5MCwgMTAzLCAwLjE1KTsNCiAgICAgICAgLS13dWktY29sb3ItZXJyb3ItZ2xhc3MtMDIwOiByZ2JhKDI0MiwgOTAsIDEwMywgMC4yKTsNCiAgICAgICAgLS13dWktY29sb3ItZXJyb3ItZ2xhc3MtMDI1OiByZ2JhKDI0MiwgOTAsIDEwMywgMC4yNSk7DQogICAgICAgIC0td3VpLWNvbG9yLWVycm9yLWdsYXNzLTAzMDogcmdiYSgyNDIsIDkwLCAxMDMsIDAuMyk7DQogICAgICAgIC0td3VpLWNvbG9yLWVycm9yLWdsYXNzLTA2MDogcmdiYSgyNDIsIDkwLCAxMDMsIDAuNik7DQogICAgICAgIC0td3VpLWNvbG9yLWVycm9yLWdsYXNzLTA4MDogcmdiYSgyNDIsIDkwLCAxMDMsIDAuOCk7DQoNCiAgICAgICAgLS13dWktY29sb3ItZXJyb3ItZ2xhc3MtcmVvd24tMDIwOiByZ2JhKDIyMywgNzQsIDUyLCAwLjIpOw0KDQogICAgICAgIC0td3VpLWNvbG9yLWdyYXktZ2xhc3MtMDAxOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDEpOw0KICAgICAgICAtLXd1aS1jb2xvci1ncmF5LWdsYXNzLTAwMjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAyKTsNCiAgICAgICAgLS13dWktY29sb3ItZ3JheS1nbGFzcy0wMDU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7DQogICAgICAgIC0td3VpLWNvbG9yLWdyYXktZ2xhc3MtMDEwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7DQogICAgICAgIC0td3VpLWNvbG9yLWdyYXktZ2xhc3MtMDE1OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOw0KICAgICAgICAtLXd1aS1jb2xvci1ncmF5LWdsYXNzLTAyMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOw0KICAgICAgICAtLXd1aS1jb2xvci1ncmF5LWdsYXNzLTAyNTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsNCiAgICAgICAgLS13dWktY29sb3ItZ3JheS1nbGFzcy0wMzA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsNCiAgICAgICAgLS13dWktY29sb3ItZ3JheS1nbGFzcy0wNjA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTsNCiAgICAgICAgLS13dWktY29sb3ItZ3JheS1nbGFzcy0wODA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsNCiAgICAgICAgLS13dWktY29sb3ItZ3JheS1nbGFzcy0wOTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsNCg0KICAgICAgICAtLXd1aS1jb2xvci1kYXJrLWdsYXNzLTEwMDogcmdiYSg0MiwgNDIsIDQyLCAxKTsNCg0KICAgICAgICAtLXd1aS1pY29uLWJveC1iZy1lcnJvci1iYXNlLTEwMDogIzNjMjQyNjsNCiAgICAgICAgLS13dWktaWNvbi1ib3gtYmctYmx1ZS1iYXNlLTEwMDogIzIwMzAzZjsNCiAgICAgICAgLS13dWktaWNvbi1ib3gtYmctc3VjY2Vzcy1iYXNlLTEwMDogIzFmM2EyODsNCiAgICAgICAgLS13dWktaWNvbi1ib3gtYmctaW52ZXJzZS1iYXNlLTEwMDogIzI0MzI0MDsNCg0KICAgICAgICAtLXd1aS1hbGwtd2FsbGV0cy1iZy0xMDA6ICMyMjJiMzU7DQoNCiAgICAgICAgLS13dWktYXZhdGFyLWJvcmRlci1iYXNlOiAjMjUyNTI1Ow0KDQogICAgICAgIC0td3VpLXRodW1ibmFpbC1ib3JkZXItYmFzZTogIzI1MjUyNTsNCg0KICAgICAgICAtLXd1aS13YWxsZXQtYnV0dG9uLWJnLWJhc2U6IHZhcigtLXd1aS1jb2xvci1iZy0xMjUpOw0KDQogICAgICAgIC0tdzNtLWNhcmQtZW1iZWRkZWQtc2hhZG93LWNvbG9yOiByZ2IoMTcgMTcgMTggLyAyNSUpOw0KICAgICAgfQ0KICAgIGAsZGFyazpwZWANCiAgICAgIDpyb290IHsNCiAgICAgICAgLS13M20tY29sb3ItbWl4OiAke1ZpKHQ/LlsiLS13M20tY29sb3ItbWl4Il18fCIjMDAwIil9Ow0KICAgICAgICAtLXczbS1hY2NlbnQ6ICR7VmkoZ28odCwibGlnaHQiKVsiLS13M20tYWNjZW50Il0pfTsNCiAgICAgICAgLS13M20tZGVmYXVsdDogIzAwMDsNCg0KICAgICAgICAtLXd1aS1jb2xvci1tb2RhbC1iZy1iYXNlOiAke1ZpKGdvKHQsImxpZ2h0IilbIi0tdzNtLWJhY2tncm91bmQiXSl9Ow0KICAgICAgICAtLXd1aS1jb2xvci1hY2NlbnQtYmFzZS0xMDA6IHZhcigtLXczbS1hY2NlbnQpOw0KDQogICAgICAgIC0td3VpLWNvbG9yLWJsdWViZXJyeS0xMDA6IGhzbGEoMjMxLCAxMDAlLCA3MCUsIDEpOw0KICAgICAgICAtLXd1aS1jb2xvci1ibHVlYmVycnktMDkwOiBoc2xhKDIzMSwgOTclLCA3MiUsIDEpOw0KICAgICAgICAtLXd1aS1jb2xvci1ibHVlYmVycnktMDgwOiBoc2xhKDIzMSwgOTIlLCA3NCUsIDEpOw0KDQogICAgICAgIC0td3VpLWNvbG9yLWZnLTEwMDogIzE0MTQxNDsNCiAgICAgICAgLS13dWktY29sb3ItZmctMTI1OiAjMmQzMTMxOw0KICAgICAgICAtLXd1aS1jb2xvci1mZy0xNTA6ICM0NzRkNGQ7DQogICAgICAgIC0td3VpLWNvbG9yLWZnLTE3NTogIzYzNmQ2ZDsNCiAgICAgICAgLS13dWktY29sb3ItZmctMjAwOiAjNzk4Njg2Ow0KICAgICAgICAtLXd1aS1jb2xvci1mZy0yMjU6ICM4MjhmOGY7DQogICAgICAgIC0td3VpLWNvbG9yLWZnLTI1MDogIzhiOTc5NzsNCiAgICAgICAgLS13dWktY29sb3ItZmctMjc1OiAjOTVhMGEwOw0KICAgICAgICAtLXd1aS1jb2xvci1mZy0zMDA6ICM5ZWE5YTk7DQogICAgICAgIC0td3VpLWNvbG9yLWZnLTMyNTogIzlhOWE5YTsNCiAgICAgICAgLS13dWktY29sb3ItZmctMzUwOiAjZDBkMGQwOw0KDQogICAgICAgIC0td3VpLWNvbG9yLWJnLTEwMDogI2ZmZmZmZjsNCiAgICAgICAgLS13dWktY29sb3ItYmctMTI1OiAjZjVmYWZhOw0KICAgICAgICAtLXd1aS1jb2xvci1iZy0xNTA6ICNmM2Y4Zjg7DQogICAgICAgIC0td3VpLWNvbG9yLWJnLTE3NTogI2VlZjRmNDsNCiAgICAgICAgLS13dWktY29sb3ItYmctMjAwOiAjZWFmMWYxOw0KICAgICAgICAtLXd1aS1jb2xvci1iZy0yMjU6ICNlNWVkZWQ7DQogICAgICAgIC0td3VpLWNvbG9yLWJnLTI1MDogI2UxZTllOTsNCiAgICAgICAgLS13dWktY29sb3ItYmctMjc1OiAjZGNlN2U3Ow0KICAgICAgICAtLXd1aS1jb2xvci1iZy0zMDA6ICNkOGUzZTM7DQogICAgICAgIC0td3VpLWNvbG9yLWJnLTMyNTogI2YzZjNmMzsNCiAgICAgICAgLS13dWktY29sb3ItYmctMzUwOiAjMjAyMDIwOw0KDQogICAgICAgIC0td3VpLWNvbG9yLXN1Y2Nlc3MtYmFzZS0xMDA6ICMyNmI1NjI7DQogICAgICAgIC0td3VpLWNvbG9yLXN1Y2Nlc3MtYmFzZS0xMjU6ICMzMGE0NmI7DQoNCiAgICAgICAgLS13dWktY29sb3Itd2FybmluZy1iYXNlLTEwMDogI2YzYTEzZjsNCg0KICAgICAgICAtLXd1aS1jb2xvci1lcnJvci1iYXNlLTEwMDogI2YwNTE0MjsNCiAgICAgICAgLS13dWktY29sb3ItZXJyb3ItYmFzZS0xMjU6ICNkZjRhMzQ7DQoNCiAgICAgICAgLS13dWktY29sb3ItYmx1ZS1iYXNlLTEwMDogcmdiYSgxMDIsIDEyNSwgMjU1LCAxKTsNCiAgICAgICAgLS13dWktY29sb3ItYmx1ZS1iYXNlLTkwOiByZ2JhKDEwMiwgMTI1LCAyNTUsIDAuOSk7DQoNCiAgICAgICAgLS13dWktY29sb3Itc3VjY2Vzcy1nbGFzcy0wMDE6IHJnYmEoMzgsIDE4MSwgOTgsIDAuMDEpOw0KICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLWdsYXNzLTAwMjogcmdiYSgzOCwgMTgxLCA5OCwgMC4wMik7DQogICAgICAgIC0td3VpLWNvbG9yLXN1Y2Nlc3MtZ2xhc3MtMDA1OiByZ2JhKDM4LCAxODEsIDk4LCAwLjA1KTsNCiAgICAgICAgLS13dWktY29sb3Itc3VjY2Vzcy1nbGFzcy0wMTA6IHJnYmEoMzgsIDE4MSwgOTgsIDAuMSk7DQogICAgICAgIC0td3VpLWNvbG9yLXN1Y2Nlc3MtZ2xhc3MtMDE1OiByZ2JhKDM4LCAxODEsIDk4LCAwLjE1KTsNCiAgICAgICAgLS13dWktY29sb3Itc3VjY2Vzcy1nbGFzcy0wMjA6IHJnYmEoMzgsIDE4MSwgOTgsIDAuMik7DQogICAgICAgIC0td3VpLWNvbG9yLXN1Y2Nlc3MtZ2xhc3MtMDI1OiByZ2JhKDM4LCAxODEsIDk4LCAwLjI1KTsNCiAgICAgICAgLS13dWktY29sb3Itc3VjY2Vzcy1nbGFzcy0wMzA6IHJnYmEoMzgsIDE4MSwgOTgsIDAuMyk7DQogICAgICAgIC0td3VpLWNvbG9yLXN1Y2Nlc3MtZ2xhc3MtMDYwOiByZ2JhKDM4LCAxODEsIDk4LCAwLjYpOw0KICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLWdsYXNzLTA4MDogcmdiYSgzOCwgMTgxLCA5OCwgMC44KTsNCg0KICAgICAgICAtLXd1aS1jb2xvci1zdWNjZXNzLWdsYXNzLXJlb3duLTAyMDogcmdiYSg0OCwgMTY0LCAxMDcsIDAuMik7DQoNCiAgICAgICAgLS13dWktY29sb3Itd2FybmluZy1nbGFzcy1yZW93bi0wMjA6IHJnYmEoMjQzLCAxNjEsIDYzLCAwLjIpOw0KDQogICAgICAgIC0td3VpLWNvbG9yLWVycm9yLWdsYXNzLTAwMTogcmdiYSgyNDAsIDgxLCA2NiwgMC4wMSk7DQogICAgICAgIC0td3VpLWNvbG9yLWVycm9yLWdsYXNzLTAwMjogcmdiYSgyNDAsIDgxLCA2NiwgMC4wMik7DQogICAgICAgIC0td3VpLWNvbG9yLWVycm9yLWdsYXNzLTAwNTogcmdiYSgyNDAsIDgxLCA2NiwgMC4wNSk7DQogICAgICAgIC0td3VpLWNvbG9yLWVycm9yLWdsYXNzLTAxMDogcmdiYSgyNDAsIDgxLCA2NiwgMC4xKTsNCiAgICAgICAgLS13dWktY29sb3ItZXJyb3ItZ2xhc3MtMDE1OiByZ2JhKDI0MCwgODEsIDY2LCAwLjE1KTsNCiAgICAgICAgLS13dWktY29sb3ItZXJyb3ItZ2xhc3MtMDIwOiByZ2JhKDI0MCwgODEsIDY2LCAwLjIpOw0KICAgICAgICAtLXd1aS1jb2xvci1lcnJvci1nbGFzcy0wMjU6IHJnYmEoMjQwLCA4MSwgNjYsIDAuMjUpOw0KICAgICAgICAtLXd1aS1jb2xvci1lcnJvci1nbGFzcy0wMzA6IHJnYmEoMjQwLCA4MSwgNjYsIDAuMyk7DQogICAgICAgIC0td3VpLWNvbG9yLWVycm9yLWdsYXNzLTA2MDogcmdiYSgyNDAsIDgxLCA2NiwgMC42KTsNCiAgICAgICAgLS13dWktY29sb3ItZXJyb3ItZ2xhc3MtMDgwOiByZ2JhKDI0MCwgODEsIDY2LCAwLjgpOw0KDQogICAgICAgIC0td3VpLWNvbG9yLWVycm9yLWdsYXNzLXJlb3duLTAyMDogcmdiYSgyMjMsIDc0LCA1MiwgMC4yKTsNCg0KICAgICAgICAtLXd1aS1pY29uLWJveC1iZy1lcnJvci1iYXNlLTEwMDogI2Y0ZGZkZDsNCiAgICAgICAgLS13dWktaWNvbi1ib3gtYmctYmx1ZS1iYXNlLTEwMDogI2Q5ZWNmYjsNCiAgICAgICAgLS13dWktaWNvbi1ib3gtYmctc3VjY2Vzcy1iYXNlLTEwMDogI2RhZjBlNDsNCiAgICAgICAgLS13dWktaWNvbi1ib3gtYmctaW52ZXJzZS1iYXNlLTEwMDogI2RjZWNmYzsNCg0KICAgICAgICAtLXd1aS1hbGwtd2FsbGV0cy1iZy0xMDA6ICNlOGYxZmE7DQoNCiAgICAgICAgLS13dWktYXZhdGFyLWJvcmRlci1iYXNlOiAjZjNmNGY0Ow0KDQogICAgICAgIC0td3VpLXRodW1ibmFpbC1ib3JkZXItYmFzZTogI2VhZWZlZjsNCg0KICAgICAgICAtLXd1aS13YWxsZXQtYnV0dG9uLWJnLWJhc2U6IHZhcigtLXd1aS1jb2xvci1iZy0xMjUpOw0KDQogICAgICAgIC0td3VpLWNvbG9yLWdyYXktZ2xhc3MtMDAxOiByZ2JhKDAsIDAsIDAsIDAuMDEpOw0KICAgICAgICAtLXd1aS1jb2xvci1ncmF5LWdsYXNzLTAwMjogcmdiYSgwLCAwLCAwLCAwLjAyKTsNCiAgICAgICAgLS13dWktY29sb3ItZ3JheS1nbGFzcy0wMDU6IHJnYmEoMCwgMCwgMCwgMC4wNSk7DQogICAgICAgIC0td3VpLWNvbG9yLWdyYXktZ2xhc3MtMDEwOiByZ2JhKDAsIDAsIDAsIDAuMSk7DQogICAgICAgIC0td3VpLWNvbG9yLWdyYXktZ2xhc3MtMDE1OiByZ2JhKDAsIDAsIDAsIDAuMTUpOw0KICAgICAgICAtLXd1aS1jb2xvci1ncmF5LWdsYXNzLTAyMDogcmdiYSgwLCAwLCAwLCAwLjIpOw0KICAgICAgICAtLXd1aS1jb2xvci1ncmF5LWdsYXNzLTAyNTogcmdiYSgwLCAwLCAwLCAwLjI1KTsNCiAgICAgICAgLS13dWktY29sb3ItZ3JheS1nbGFzcy0wMzA6IHJnYmEoMCwgMCwgMCwgMC4zKTsNCiAgICAgICAgLS13dWktY29sb3ItZ3JheS1nbGFzcy0wNjA6IHJnYmEoMCwgMCwgMCwgMC42KTsNCiAgICAgICAgLS13dWktY29sb3ItZ3JheS1nbGFzcy0wODA6IHJnYmEoMCwgMCwgMCwgMC44KTsNCiAgICAgICAgLS13dWktY29sb3ItZ3JheS1nbGFzcy0wOTA6IHJnYmEoMCwgMCwgMCwgMC45KTsNCg0KICAgICAgICAtLXd1aS1jb2xvci1kYXJrLWdsYXNzLTEwMDogcmdiYSgyMzMsIDIzMywgMjMzLCAxKTsNCg0KICAgICAgICAtLXczbS1jYXJkLWVtYmVkZGVkLXNoYWRvdy1jb2xvcjogcmdiKDIyNCAyMjUgMjMzIC8gMjUlKTsNCiAgICAgIH0NCiAgICBgfX1jb25zdCBMZT1wZWANCiAgKiwNCiAgKjo6YWZ0ZXIsDQogICo6OmJlZm9yZSwNCiAgOmhvc3Qgew0KICAgIG1hcmdpbjogMDsNCiAgICBwYWRkaW5nOiAwOw0KICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7DQogICAgZm9udC1zdHlsZTogbm9ybWFsOw0KICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZVNwZWVkOw0KICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOw0KICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7DQogICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsNCiAgICBmb250LWZhbWlseTogdmFyKC0td3VpLWZvbnQtZmFtaWx5KTsNCiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47DQogIH0NCmAsZ3Q9cGVgDQogIGJ1dHRvbiwNCiAgYSB7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGRpc3BsYXk6IGZsZXg7DQogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7DQogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsNCiAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgdHJhbnNpdGlvbjoNCiAgICAgIGNvbG9yIHZhcigtLXd1aS1kdXJhdGlvbi1sZykgdmFyKC0td3VpLWVhc2Utb3V0LXBvd2VyLTEpLA0KICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS13dWktZHVyYXRpb24tbGcpIHZhcigtLXd1aS1lYXNlLW91dC1wb3dlci0xKSwNCiAgICAgIGJvcmRlciB2YXIoLS13dWktZHVyYXRpb24tbGcpIHZhcigtLXd1aS1lYXNlLW91dC1wb3dlci0xKSwNCiAgICAgIGJvcmRlci1yYWRpdXMgdmFyKC0td3VpLWR1cmF0aW9uLWxnKSB2YXIoLS13dWktZWFzZS1vdXQtcG93ZXItMSksDQogICAgICBib3gtc2hhZG93IHZhcigtLXd1aS1kdXJhdGlvbi1sZykgdmFyKC0td3VpLWVhc2Utb3V0LXBvd2VyLTEpOw0KICAgIHdpbGwtY2hhbmdlOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvciwgYm9yZGVyLCBib3gtc2hhZG93LCBib3JkZXItcmFkaXVzOw0KICAgIG91dGxpbmU6IG5vbmU7DQogICAgYm9yZGVyOiBub25lOw0KICAgIGNvbHVtbi1nYXA6IHZhcigtLXd1aS1zcGFjaW5nLTN4cyk7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7DQogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICB9DQoNCiAgd3VpLWZsZXggew0KICAgIHRyYW5zaXRpb246IGJvcmRlci1yYWRpdXMgdmFyKC0td3VpLWR1cmF0aW9uLWxnKSB2YXIoLS13dWktZWFzZS1vdXQtcG93ZXItMSk7DQogICAgd2lsbC1jaGFuZ2U6IGJvcmRlci1yYWRpdXM7DQogIH0NCg0KICBidXR0b246ZGlzYWJsZWQgPiB3dWktd2FsbGV0LWltYWdlLA0KICBidXR0b246ZGlzYWJsZWQgPiB3dWktYWxsLXdhbGxldHMtaW1hZ2UsDQogIGJ1dHRvbjpkaXNhYmxlZCA+IHd1aS1uZXR3b3JrLWltYWdlLA0KICBidXR0b246ZGlzYWJsZWQgPiB3dWktaW1hZ2UsDQogIGJ1dHRvbjpkaXNhYmxlZCA+IHd1aS10cmFuc2FjdGlvbi12aXN1YWwsDQogIGJ1dHRvbjpkaXNhYmxlZCA+IHd1aS1sb2dvIHsNCiAgICBmaWx0ZXI6IGdyYXlzY2FsZSgxKTsNCiAgfQ0KDQogIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSBhbmQgKHBvaW50ZXI6IGZpbmUpIHsNCiAgICBidXR0b246aG92ZXI6ZW5hYmxlZCB7DQogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13dWktY29sb3ItZ3JheS1nbGFzcy0wMDUpOw0KICAgIH0NCg0KICAgIGJ1dHRvbjphY3RpdmU6ZW5hYmxlZCB7DQogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13dWktY29sb3ItZ3JheS1nbGFzcy0wMTApOw0KICAgIH0NCiAgfQ0KDQogIGJ1dHRvbjpkaXNhYmxlZCA+IHd1aS1pY29uLWJveCB7DQogICAgb3BhY2l0eTogMC41Ow0KICB9DQoNCiAgaW5wdXQgew0KICAgIGJvcmRlcjogbm9uZTsNCiAgICBvdXRsaW5lOiBub25lOw0KICAgIGFwcGVhcmFuY2U6IG5vbmU7DQogIH0NCmAsQTE9cGVgDQogIC53dWktY29sb3ItaW5oZXJpdCB7DQogICAgY29sb3I6IHZhcigtLXd1aS1jb2xvci1pbmhlcml0KTsNCiAgfQ0KDQogIC53dWktY29sb3ItYWNjZW50LTEwMCB7DQogICAgY29sb3I6IHZhcigtLXd1aS1jb2xvci1hY2NlbnQtMTAwKTsNCiAgfQ0KDQogIC53dWktY29sb3ItZXJyb3ItMTAwIHsNCiAgICBjb2xvcjogdmFyKC0td3VpLWNvbG9yLWVycm9yLTEwMCk7DQogIH0NCg0KICAud3VpLWNvbG9yLWJsdWUtMTAwIHsNCiAgICBjb2xvcjogdmFyKC0td3VpLWNvbG9yLWJsdWUtMTAwKTsNCiAgfQ0KDQogIC53dWktY29sb3ItYmx1ZS05MCB7DQogICAgY29sb3I6IHZhcigtLXd1aS1jb2xvci1ibHVlLTkwKTsNCiAgfQ0KDQogIC53dWktY29sb3ItZXJyb3ItMTI1IHsNCiAgICBjb2xvcjogdmFyKC0td3VpLWNvbG9yLWVycm9yLTEyNSk7DQogIH0NCg0KICAud3VpLWNvbG9yLXN1Y2Nlc3MtMTAwIHsNCiAgICBjb2xvcjogdmFyKC0td3VpLWNvbG9yLXN1Y2Nlc3MtMTAwKTsNCiAgfQ0KDQogIC53dWktY29sb3Itc3VjY2Vzcy0xMjUgew0KICAgIGNvbG9yOiB2YXIoLS13dWktY29sb3Itc3VjY2Vzcy0xMjUpOw0KICB9DQoNCiAgLnd1aS1jb2xvci1pbnZlcnNlLTEwMCB7DQogICAgY29sb3I6IHZhcigtLXd1aS1jb2xvci1pbnZlcnNlLTEwMCk7DQogIH0NCg0KICAud3VpLWNvbG9yLWludmVyc2UtMDAwIHsNCiAgICBjb2xvcjogdmFyKC0td3VpLWNvbG9yLWludmVyc2UtMDAwKTsNCiAgfQ0KDQogIC53dWktY29sb3ItZmctMTAwIHsNCiAgICBjb2xvcjogdmFyKC0td3VpLWNvbG9yLWZnLTEwMCk7DQogIH0NCg0KICAud3VpLWNvbG9yLWZnLTIwMCB7DQogICAgY29sb3I6IHZhcigtLXd1aS1jb2xvci1mZy0yMDApOw0KICB9DQoNCiAgLnd1aS1jb2xvci1mZy0zMDAgew0KICAgIGNvbG9yOiB2YXIoLS13dWktY29sb3ItZmctMzAwKTsNCiAgfQ0KDQogIC53dWktY29sb3ItZmctMzI1IHsNCiAgICBjb2xvcjogdmFyKC0td3VpLWNvbG9yLWZnLTMyNSk7DQogIH0NCg0KICAud3VpLWNvbG9yLWZnLTM1MCB7DQogICAgY29sb3I6IHZhcigtLXd1aS1jb2xvci1mZy0zNTApOw0KICB9DQoNCiAgLnd1aS1iZy1jb2xvci1pbmhlcml0IHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13dWktY29sb3ItaW5oZXJpdCk7DQogIH0NCg0KICAud3VpLWJnLWNvbG9yLWJsdWUtMTAwIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13dWktY29sb3ItYWNjZW50LTEwMCk7DQogIH0NCg0KICAud3VpLWJnLWNvbG9yLWVycm9yLTEwMCB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3VpLWNvbG9yLWVycm9yLTEwMCk7DQogIH0NCg0KICAud3VpLWJnLWNvbG9yLWVycm9yLTEyNSB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3VpLWNvbG9yLWVycm9yLTEyNSk7DQogIH0NCg0KICAud3VpLWJnLWNvbG9yLXN1Y2Nlc3MtMTAwIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13dWktY29sb3Itc3VjY2Vzcy0xMDApOw0KICB9DQoNCiAgLnd1aS1iZy1jb2xvci1zdWNjZXNzLTEyNSB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3VpLWNvbG9yLXN1Y2Nlc3MtMTAwKTsNCiAgfQ0KDQogIC53dWktYmctY29sb3ItaW52ZXJzZS0xMDAgew0KICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXd1aS1jb2xvci1pbnZlcnNlLTEwMCk7DQogIH0NCg0KICAud3VpLWJnLWNvbG9yLWludmVyc2UtMDAwIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13dWktY29sb3ItaW52ZXJzZS0wMDApOw0KICB9DQoNCiAgLnd1aS1iZy1jb2xvci1mZy0xMDAgew0KICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXd1aS1jb2xvci1mZy0xMDApOw0KICB9DQoNCiAgLnd1aS1iZy1jb2xvci1mZy0yMDAgew0KICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXd1aS1jb2xvci1mZy0yMDApOw0KICB9DQoNCiAgLnd1aS1iZy1jb2xvci1mZy0zMDAgew0KICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXd1aS1jb2xvci1mZy0zMDApOw0KICB9DQoNCiAgLnd1aS1jb2xvci1mZy0zMjUgew0KICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXd1aS1jb2xvci1mZy0zMjUpOw0KICB9DQoNCiAgLnd1aS1jb2xvci1mZy0zNTAgew0KICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXd1aS1jb2xvci1mZy0zNTApOw0KICB9DQpgLFllPXtnZXRTcGFjaW5nU3R5bGVzKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdFtlXT9gdmFyKC0td3VpLXNwYWNpbmctJHt0W2VdfSlgOnZvaWQgMDtpZih0eXBlb2YgdD09InN0cmluZyIpcmV0dXJuYHZhcigtLXd1aS1zcGFjaW5nLSR7dH0pYH0sZ2V0Rm9ybWF0dGVkRGF0ZSh0KXtyZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIix7bW9udGg6InNob3J0IixkYXk6Im51bWVyaWMifSkuZm9ybWF0KHQpfSxnZXRIb3N0TmFtZSh0KXt0cnl7cmV0dXJuIG5ldyBVUkwodCkuaG9zdG5hbWV9Y2F0Y2h7cmV0dXJuIiJ9fSxnZXRUcnVuY2F0ZVN0cmluZyh7c3RyaW5nOnQsY2hhcnNTdGFydDplLGNoYXJzRW5kOnIsdHJ1bmNhdGU6bn0pe3JldHVybiB0Lmxlbmd0aDw9ZStyP3Q6bj09PSJlbmQiP2Ake3Quc3Vic3RyaW5nKDAsZSl9Li4uYDpuPT09InN0YXJ0Ij9gLi4uJHt0LnN1YnN0cmluZyh0Lmxlbmd0aC1yKX1gOmAke3Quc3Vic3RyaW5nKDAsTWF0aC5mbG9vcihlKSl9Li4uJHt0LnN1YnN0cmluZyh0Lmxlbmd0aC1NYXRoLmZsb29yKHIpKX1gfSxnZW5lcmF0ZUF2YXRhckNvbG9ycyh0KXtjb25zdCByPXQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eMHgvaXUsIiIpLnJlcGxhY2UoL1teYS1mMC05XS9ndSwiIikuc3Vic3RyaW5nKDAsNikucGFkRW5kKDYsIjAiKSxuPXRoaXMuaGV4VG9SZ2Iocikscz1nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgiLS13M20tYm9yZGVyLXJhZGl1cy1tYXN0ZXIiKSxvPTEwMC0zKk51bWJlcihzPy5yZXBsYWNlKCJweCIsIiIpKSxhPWAke299JSAke299JSBhdCA2NSUgNDAlYCxjPVtdO2ZvcihsZXQgbD0wO2w8NTtsKz0xKXtjb25zdCBkPXRoaXMudGludENvbG9yKG4sLjE1KmwpO2MucHVzaChgcmdiKCR7ZFswXX0sICR7ZFsxXX0sICR7ZFsyXX0pYCl9cmV0dXJuYA0KICAgIC0tbG9jYWwtY29sb3ItMTogJHtjWzBdfTsNCiAgICAtLWxvY2FsLWNvbG9yLTI6ICR7Y1sxXX07DQogICAgLS1sb2NhbC1jb2xvci0zOiAke2NbMl19Ow0KICAgIC0tbG9jYWwtY29sb3ItNDogJHtjWzNdfTsNCiAgICAtLWxvY2FsLWNvbG9yLTU6ICR7Y1s0XX07DQogICAgLS1sb2NhbC1yYWRpYWwtY2lyY2xlOiAke2F9DQogICBgfSxoZXhUb1JnYih0KXtjb25zdCBlPXBhcnNlSW50KHQsMTYpLHI9ZT4+MTYmMjU1LG49ZT4+OCYyNTUscz1lJjI1NTtyZXR1cm5bcixuLHNdfSx0aW50Q29sb3IodCxlKXtjb25zdFtyLG4sc109dCxpPU1hdGgucm91bmQocisoMjU1LXIpKmUpLG89TWF0aC5yb3VuZChuKygyNTUtbikqZSksYT1NYXRoLnJvdW5kKHMrKDI1NS1zKSplKTtyZXR1cm5baSxvLGFdfSxpc051bWJlcih0KXtyZXR1cm57bnVtYmVyOi9eWzAtOV0rJC91fS5udW1iZXIudGVzdCh0KX0sZ2V0Q29sb3JUaGVtZSh0KXtyZXR1cm4gdHx8KHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cubWF0Y2hNZWRpYT93aW5kb3cubWF0Y2hNZWRpYSgiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIpPy5tYXRjaGVzPyJkYXJrIjoibGlnaHQiOiJkYXJrIil9LHNwbGl0QmFsYW5jZSh0KXtjb25zdCBlPXQuc3BsaXQoIi4iKTtyZXR1cm4gZS5sZW5ndGg9PT0yP1tlWzBdLGVbMV1dOlsiMCIsIjAwIl19LHJvdW5kTnVtYmVyKHQsZSxyKXtyZXR1cm4gdC50b1N0cmluZygpLmxlbmd0aD49ZT9OdW1iZXIodCkudG9GaXhlZChyKTp0fSxmb3JtYXROdW1iZXJUb0xvY2FsU3RyaW5nKHQsZT0yKXtyZXR1cm4gdD09PXZvaWQgMD8iMC4wMCI6dHlwZW9mIHQ9PSJudW1iZXIiP3QudG9Mb2NhbGVTdHJpbmcoImVuLVVTIix7bWF4aW11bUZyYWN0aW9uRGlnaXRzOmUsbWluaW11bUZyYWN0aW9uRGlnaXRzOmV9KTpwYXJzZUZsb2F0KHQpLnRvTG9jYWxlU3RyaW5nKCJlbi1VUyIse21heGltdW1GcmFjdGlvbkRpZ2l0czplLG1pbmltdW1GcmFjdGlvbkRpZ2l0czplfSl9fSxuMGU9MyxpMGU9WyJyZWNlaXZlIiwiZGVwb3NpdCIsImJvcnJvdyIsImNsYWltIl0sczBlPVsid2l0aGRyYXciLCJyZXBheSIsImJ1cm4iXSxydT17Z2V0VHJhbnNhY3Rpb25Hcm91cFRpdGxlKHQsZSl7Y29uc3Qgcj1sYi5nZXRZZWFyKCksbj1sYi5nZXRNb250aE5hbWVCeUluZGV4KGUpO3JldHVybiB0PT09cj9uOmAke259ICR7dH1gfSxnZXRUcmFuc2FjdGlvbkltYWdlcyh0KXtjb25zdFtlLHJdPXQsbj0hIWUmJnQ/LmV2ZXJ5KG89PiEhby5uZnRfaW5mbykscz10Py5sZW5ndGg+MTtyZXR1cm4gdD8ubGVuZ3RoPT09MiYmIW4/W3RoaXMuZ2V0VHJhbnNhY3Rpb25JbWFnZShlKSx0aGlzLmdldFRyYW5zYWN0aW9uSW1hZ2UocildOnM/dC5tYXAobz0+dGhpcy5nZXRUcmFuc2FjdGlvbkltYWdlKG8pKTpbdGhpcy5nZXRUcmFuc2FjdGlvbkltYWdlKGUpXX0sZ2V0VHJhbnNhY3Rpb25JbWFnZSh0KXtyZXR1cm57dHlwZTpydS5nZXRUcmFuc2FjdGlvblRyYW5zZmVyVG9rZW5UeXBlKHQpLHVybDpydS5nZXRUcmFuc2FjdGlvbkltYWdlVVJMKHQpfX0sZ2V0VHJhbnNhY3Rpb25JbWFnZVVSTCh0KXtsZXQgZTtjb25zdCByPSEhdD8ubmZ0X2luZm8sbj0hIXQ/LmZ1bmdpYmxlX2luZm87cmV0dXJuIHQmJnI/ZT10Py5uZnRfaW5mbz8uY29udGVudD8ucHJldmlldz8udXJsOnQmJm4mJihlPXQ/LmZ1bmdpYmxlX2luZm8/Lmljb24/LnVybCksZX0sZ2V0VHJhbnNhY3Rpb25UcmFuc2ZlclRva2VuVHlwZSh0KXtpZih0Py5mdW5naWJsZV9pbmZvKXJldHVybiJGVU5HSUJMRSI7aWYodD8ubmZ0X2luZm8pcmV0dXJuIk5GVCJ9LGdldFRyYW5zYWN0aW9uRGVzY3JpcHRpb25zKHQpe2NvbnN0IGU9dD8ubWV0YWRhdGE/Lm9wZXJhdGlvblR5cGUscj10Py50cmFuc2ZlcnMsbj10Py50cmFuc2ZlcnM/Lmxlbmd0aD4wLHM9dD8udHJhbnNmZXJzPy5sZW5ndGg+MSxpPW4mJnI/LmV2ZXJ5KHU9PiEhdT8uZnVuZ2libGVfaW5mbyksW28sYV09cjtsZXQgYz10aGlzLmdldFRyYW5zZmVyRGVzY3JpcHRpb24obyksbD10aGlzLmdldFRyYW5zZmVyRGVzY3JpcHRpb24oYSk7aWYoIW4pcmV0dXJuKGU9PT0ic2VuZCJ8fGU9PT0icmVjZWl2ZSIpJiZpPyhjPVllLmdldFRydW5jYXRlU3RyaW5nKHtzdHJpbmc6dD8ubWV0YWRhdGEuc2VudEZyb20sY2hhcnNTdGFydDo0LGNoYXJzRW5kOjYsdHJ1bmNhdGU6Im1pZGRsZSJ9KSxsPVllLmdldFRydW5jYXRlU3RyaW5nKHtzdHJpbmc6dD8ubWV0YWRhdGEuc2VudFRvLGNoYXJzU3RhcnQ6NCxjaGFyc0VuZDo2LHRydW5jYXRlOiJtaWRkbGUifSksW2MsbF0pOlt0Lm1ldGFkYXRhLnN0YXR1c107aWYocylyZXR1cm4gci5tYXAodT0+dGhpcy5nZXRUcmFuc2ZlckRlc2NyaXB0aW9uKHUpKTtsZXQgZD0iIjtyZXR1cm4gaTBlLmluY2x1ZGVzKGUpP2Q9IisiOnMwZS5pbmNsdWRlcyhlKSYmKGQ9Ii0iKSxjPWQuY29uY2F0KGMpLFtjXX0sZ2V0VHJhbnNmZXJEZXNjcmlwdGlvbih0KXtsZXQgZT0iIjtyZXR1cm4gdCYmKHQ/Lm5mdF9pbmZvP2U9dD8ubmZ0X2luZm8/Lm5hbWV8fCItIjp0Py5mdW5naWJsZV9pbmZvJiYoZT10aGlzLmdldEZ1bmdpYmxlVHJhbnNmZXJEZXNjcmlwdGlvbih0KXx8Ii0iKSksZX0sZ2V0RnVuZ2libGVUcmFuc2ZlckRlc2NyaXB0aW9uKHQpe3JldHVybiB0P1t0aGlzLmdldFF1YW50aXR5Rml4ZWRWYWx1ZSh0Py5xdWFudGl0eS5udW1lcmljKSx0Py5mdW5naWJsZV9pbmZvPy5zeW1ib2xdLmpvaW4oIiAiKS50cmltKCk6bnVsbH0sZ2V0UXVhbnRpdHlGaXhlZFZhbHVlKHQpe3JldHVybiB0P3BhcnNlRmxvYXQodCkudG9GaXhlZChuMGUpOm51bGx9fTtmdW5jdGlvbiBvMGUodCxlKXtjb25zdHtraW5kOnIsZWxlbWVudHM6bn09ZTtyZXR1cm57a2luZDpyLGVsZW1lbnRzOm4sZmluaXNoZXIocyl7Y3VzdG9tRWxlbWVudHMuZ2V0KHQpfHxjdXN0b21FbGVtZW50cy5kZWZpbmUodCxzKX19fWZ1bmN0aW9uIGEwZSh0LGUpe3JldHVybiBjdXN0b21FbGVtZW50cy5nZXQodCl8fGN1c3RvbUVsZW1lbnRzLmRlZmluZSh0LGUpLGV9ZnVuY3Rpb24gc2UodCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0eXBlb2Ygcj09ImZ1bmN0aW9uIj9hMGUodCxyKTpvMGUodCxyKX19Y29uc3QgWGY9e0VSUk9SX0NPREVfVU5SRUNPR05JWkVEX0NIQUlOX0lEOjQ5MDIsRVJST1JfQ09ERV9ERUZBVUxUOjVlMyxFUlJPUl9JTlZBTElEX0NIQUlOX0lEOjMyNjAzLERFRkFVTFRfQUxMT1dFRF9BTkNFU1RPUlM6WyJodHRwOi8vbG9jYWxob3N0OioiLCJodHRwczovLyoucGFnZXMuZGV2IiwiaHR0cHM6Ly8qLnZlcmNlbC5hcHAiLCJodHRwczovLyoubmdyb2stZnJlZS5hcHAiLCJodHRwczovL3NlY3VyZS1tb2JpbGUud2FsbGV0Y29ubmVjdC5jb20iLCJodHRwczovL3NlY3VyZS1tb2JpbGUud2FsbGV0Y29ubmVjdC5vcmciXX0sYzBlPSQoe2lkOjE3OSxuYW1lOiJBQkVZIE1haW5uZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJBQkVZIixzeW1ib2w6IkFCRVkiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuYWJleWNoYWluLmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFiZXkgU2NhbiIsdXJsOiJodHRwczovL2FiZXlzY2FuLmNvbSJ9fSx0ZXN0bmV0OiExfSkscl89NTAwMDBuLHRBPWJ6KjMybixMQj17YmxvY2s6dDYoe2Zvcm1hdCh0KXtjb25zdCBlPXQudHJhbnNhY3Rpb25zPy5tYXAocj0+e2lmKHR5cGVvZiByPT0ic3RyaW5nIilyZXR1cm4gcjtjb25zdCBuPUxCLnRyYW5zYWN0aW9uPy5mb3JtYXQocik7cmV0dXJuIG4udHlwZUhleD09PSIweDcxIj9uLnR5cGU9ImVpcDcxMiI6bi50eXBlSGV4PT09IjB4ZmYiJiYobi50eXBlPSJwcmlvcml0eSIpLG59KTtyZXR1cm57bDFCYXRjaE51bWJlcjp0LmwxQmF0Y2hOdW1iZXI/c3IodC5sMUJhdGNoTnVtYmVyKTpudWxsLGwxQmF0Y2hUaW1lc3RhbXA6dC5sMUJhdGNoVGltZXN0YW1wP3NyKHQubDFCYXRjaFRpbWVzdGFtcCk6bnVsbCx0cmFuc2FjdGlvbnM6ZX19fSksdHJhbnNhY3Rpb246ZTYoe2Zvcm1hdCh0KXtjb25zdCBlPXt9O3JldHVybiB0LnR5cGU9PT0iMHg3MSI/ZS50eXBlPSJlaXA3MTIiOnQudHlwZT09PSIweGZmIiYmKGUudHlwZT0icHJpb3JpdHkiKSx7Li4uZSxsMUJhdGNoTnVtYmVyOnQubDFCYXRjaE51bWJlcj9zcih0LmwxQmF0Y2hOdW1iZXIpOm51bGwsbDFCYXRjaFR4SW5kZXg6dC5sMUJhdGNoVHhJbmRleD9zcih0LmwxQmF0Y2hUeEluZGV4KTpudWxsfX19KSx0cmFuc2FjdGlvblJlY2VpcHQ6R08oe2Zvcm1hdCh0KXtyZXR1cm57bDFCYXRjaE51bWJlcjp0LmwxQmF0Y2hOdW1iZXI/c3IodC5sMUJhdGNoTnVtYmVyKTpudWxsLGwxQmF0Y2hUeEluZGV4OnQubDFCYXRjaFR4SW5kZXg/c3IodC5sMUJhdGNoVHhJbmRleCk6bnVsbCxsb2dzOnQubG9ncy5tYXAoZT0+KHsuLi51NihlKSxsMUJhdGNoTnVtYmVyOmUubDFCYXRjaE51bWJlcj9zcihlLmwxQmF0Y2hOdW1iZXIpOm51bGwsdHJhbnNhY3Rpb25Mb2dJbmRleDptYShlLnRyYW5zYWN0aW9uTG9nSW5kZXgpLGxvZ1R5cGU6ZS5sb2dUeXBlfSkpLGwyVG9MMUxvZ3M6dC5sMlRvTDFMb2dzLm1hcChlPT4oe2Jsb2NrTnVtYmVyOnNyKGUuYmxvY2tIYXNoKSxibG9ja0hhc2g6ZS5ibG9ja0hhc2gsbDFCYXRjaE51bWJlcjplLmwxQmF0Y2hOdW1iZXI/c3IoZS5sMUJhdGNoTnVtYmVyKTpudWxsLHRyYW5zYWN0aW9uSW5kZXg6c3IoZS50cmFuc2FjdGlvbkluZGV4KSxzaGFyZElkOnNyKGUuc2hhcmRJZCksaXNTZXJ2aWNlOmUuaXNTZXJ2aWNlLHNlbmRlcjplLnNlbmRlcixrZXk6ZS5rZXksdmFsdWU6ZS52YWx1ZSx0cmFuc2FjdGlvbkhhc2g6ZS50cmFuc2FjdGlvbkhhc2gsbG9nSW5kZXg6c3IoZS5sb2dJbmRleCl9KSl9fX0pLHRyYW5zYWN0aW9uUmVxdWVzdDpKUCh7ZXhjbHVkZTpbImN1c3RvbVNpZ25hdHVyZSIsImZhY3RvcnlEZXBzIiwiZ2FzUGVyUHViZGF0YSIsInBheW1hc3RlciIsInBheW1hc3RlcklucHV0Il0sZm9ybWF0KHQpe3JldHVybiB0Lmdhc1BlclB1YmRhdGF8fHQucGF5bWFzdGVyJiZ0LnBheW1hc3RlcklucHV0fHx0LmZhY3RvcnlEZXBzfHx0LmN1c3RvbVNpZ25hdHVyZT97ZWlwNzEyTWV0YTp7Li4udC5nYXNQZXJQdWJkYXRhP3tnYXNQZXJQdWJkYXRhOnFlKHQuZ2FzUGVyUHViZGF0YSl9OntnYXNQZXJQdWJkYXRhOnFlKHJfKX0sLi4udC5wYXltYXN0ZXImJnQucGF5bWFzdGVySW5wdXQ/e3BheW1hc3RlclBhcmFtczp7cGF5bWFzdGVyOnQucGF5bWFzdGVyLHBheW1hc3RlcklucHV0OkFycmF5LmZyb20oU2kodC5wYXltYXN0ZXJJbnB1dCkpfX06e30sLi4udC5mYWN0b3J5RGVwcz97ZmFjdG9yeURlcHM6dC5mYWN0b3J5RGVwcy5tYXAoZT0+QXJyYXkuZnJvbShTaShlKSkpfTp7fSwuLi50LmN1c3RvbVNpZ25hdHVyZT97Y3VzdG9tU2lnbmF0dXJlOkFycmF5LmZyb20oU2kodC5jdXN0b21TaWduYXR1cmUpKX06e319LHR5cGU6IjB4NzEifTp7fX19KX07Y2xhc3MgbDBlIGV4dGVuZHMgRWV7Y29uc3RydWN0b3IoKXtzdXBlcihbIlRyYW5zYWN0aW9uIGlzIG5vdCBhbiBFSVA3MTIgdHJhbnNhY3Rpb24uIiwiIiwiVHJhbnNhY3Rpb24gbXVzdDoiLCcgIC0gaW5jbHVkZSBgdHlwZTogImVpcDcxMiJgJywiICAtIGluY2x1ZGUgb25lIG9mIHRoZSBmb2xsb3dpbmc6IGBjdXN0b21TaWduYXR1cmVgLCBgcGF5bWFzdGVyYCwgYHBheW1hc3RlcklucHV0YCwgYGdhc1BlclB1YmRhdGFgLCBgZmFjdG9yeURlcHNgIl0uam9pbihgDQpgKSx7bmFtZToiSW52YWxpZEVpcDcxMlRyYW5zYWN0aW9uRXJyb3IifSl9fWZ1bmN0aW9uIFVCKHQpe3JldHVybiEhKHQudHlwZT09PSJlaXA3MTIifHwiY3VzdG9tU2lnbmF0dXJlImluIHQmJnQuY3VzdG9tU2lnbmF0dXJlfHwicGF5bWFzdGVyImluIHQmJnQucGF5bWFzdGVyfHwicGF5bWFzdGVySW5wdXQiaW4gdCYmdC5wYXltYXN0ZXJJbnB1dHx8Imdhc1BlclB1YmRhdGEiaW4gdCYmdHlwZW9mIHQuZ2FzUGVyUHViZGF0YT09ImJpZ2ludCJ8fCJmYWN0b3J5RGVwcyJpbiB0JiZ0LmZhY3RvcnlEZXBzKX1mdW5jdGlvbiBGQih0KXtjb25zdHtjaGFpbklkOmUsdG86cixmcm9tOm4scGF5bWFzdGVyOnMscGF5bWFzdGVySW5wdXQ6aX09dDtpZighVUIodCkpdGhyb3cgbmV3IGwwZTtpZighZXx8ZTw9MCl0aHJvdyBuZXcgbnAoe2NoYWluSWQ6ZX0pO2lmKHImJiEkcihyKSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6cn0pO2lmKG4mJiEkcihuKSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6bn0pO2lmKHMmJiEkcihzKSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6c30pO2lmKHMmJiFpKXRocm93IG5ldyBFZSgiYHBheW1hc3RlcklucHV0YCBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gYHBheW1hc3RlcmAgaXMgZGVmaW5lZCIpO2lmKCFzJiZpKXRocm93IG5ldyBFZSgiYHBheW1hc3RlcmAgbXVzdCBiZSBwcm92aWRlZCB3aGVuIGBwYXltYXN0ZXJJbnB1dGAgaXMgZGVmaW5lZCIpfWZ1bmN0aW9uIHUwZSh0LGUpe3JldHVybiBVQih0KT9oMGUodCk6Sk8odCxlKX1jb25zdCBkMGU9e3RyYW5zYWN0aW9uOnUwZX07ZnVuY3Rpb24gaDBlKHQpe2NvbnN0e2NoYWluSWQ6ZSxnYXM6cixub25jZTpuLHRvOnMsZnJvbTppLHZhbHVlOm8sbWF4RmVlUGVyR2FzOmEsbWF4UHJpb3JpdHlGZWVQZXJHYXM6YyxjdXN0b21TaWduYXR1cmU6bCxmYWN0b3J5RGVwczpkLHBheW1hc3Rlcjp1LHBheW1hc3RlcklucHV0OmgsZ2FzUGVyUHViZGF0YTpwLGRhdGE6Zn09dDtGQih0KTtjb25zdCBtPVtuP3FlKG4pOiIweCIsYz9xZShjKToiMHgiLGE/cWUoYSk6IjB4IixyP3FlKHIpOiIweCIscz8/IjB4IixvP3FlKG8pOiIweCIsZj8/IjB4IixxZShlKSxxZSgiIikscWUoIiIpLHFlKGUpLGk/PyIweCIscWUocHx8cl8pLGQ/P1tdLGw/PyIweCIsdSYmaD9bdSxoXTpbXV07cmV0dXJuIGlzKFsiMHg3MSIsRW8obSldKX1jbGFzcyBwMGUgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7Z2l2ZW5MZW5ndGg6ZSxtYXhCeXRlY29kZVNpemU6cn0pe3N1cGVyKGBCeXRlY29kZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gJHtyfSBieXRlcy4gR2l2ZW4gbGVuZ3RoOiAke2V9YCx7bmFtZToiQnl0ZWNvZGVMZW5ndGhFeGNlZWRzTWF4U2l6ZUVycm9yIn0pfX1jbGFzcyBmMGUgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7Z2l2ZW5MZW5ndGhJbldvcmRzOmV9KXtzdXBlcihgQnl0ZWNvZGUgbGVuZ3RoIGluIDMyLWJ5dGUgd29yZHMgbXVzdCBiZSBvZGQuIEdpdmVuIGxlbmd0aCBpbiB3b3JkczogJHtlfWAse25hbWU6IkJ5dGVjb2RlTGVuZ3RoSW5Xb3Jkc011c3RCZU9kZEVycm9yIn0pfX1jbGFzcyBtMGUgZXh0ZW5kcyBFZXtjb25zdHJ1Y3Rvcih7Z2l2ZW5MZW5ndGg6ZX0pe3N1cGVyKGBUaGUgYnl0ZWNvZGUgbGVuZ3RoIGluIGJ5dGVzIG11c3QgYmUgZGl2aXNpYmxlIGJ5IDMyLiBHaXZlbiBsZW5ndGg6ICR7ZX1gLHtuYW1lOiJCeXRlY29kZUxlbmd0aE11c3RCZURpdmlzaWJsZUJ5MzJFcnJvciJ9KX19ZnVuY3Rpb24gZzBlKHQpe2NvbnN0IGU9bnUodCk7aWYoZS5sZW5ndGglMzIhPT0wKXRocm93IG5ldyBtMGUoe2dpdmVuTGVuZ3RoOmUubGVuZ3RofSk7aWYoZS5sZW5ndGg+dEEpdGhyb3cgbmV3IHAwZSh7Z2l2ZW5MZW5ndGg6ZS5sZW5ndGgsbWF4Qnl0ZWNvZGVTaXplOnRBfSk7Y29uc3Qgcj1jTyhlKSxuPW51KHIpLHM9ZS5sZW5ndGgvMzI7aWYocyUyPT09MCl0aHJvdyBuZXcgZjBlKHtnaXZlbkxlbmd0aEluV29yZHM6c30pO2NvbnN0IGk9bnUocyksbz1HdShpLHtzaXplOjJ9KSxhPW5ldyBVaW50OEFycmF5KFsxLDBdKTtyZXR1cm4gbi5zZXQoYSwwKSxuLnNldChvLDIpLG59Y29uc3QgdzBlPXQ9PntGQih0KTtjb25zdCBlPWIwZSh0KTtyZXR1cm57ZG9tYWluOntuYW1lOiJ6a1N5bmMiLHZlcnNpb246IjIiLGNoYWluSWQ6dC5jaGFpbklkfSx0eXBlczp7VHJhbnNhY3Rpb246W3tuYW1lOiJ0eFR5cGUiLHR5cGU6InVpbnQyNTYifSx7bmFtZToiZnJvbSIsdHlwZToidWludDI1NiJ9LHtuYW1lOiJ0byIsdHlwZToidWludDI1NiJ9LHtuYW1lOiJnYXNMaW1pdCIsdHlwZToidWludDI1NiJ9LHtuYW1lOiJnYXNQZXJQdWJkYXRhQnl0ZUxpbWl0Iix0eXBlOiJ1aW50MjU2In0se25hbWU6Im1heEZlZVBlckdhcyIsdHlwZToidWludDI1NiJ9LHtuYW1lOiJtYXhQcmlvcml0eUZlZVBlckdhcyIsdHlwZToidWludDI1NiJ9LHtuYW1lOiJwYXltYXN0ZXIiLHR5cGU6InVpbnQyNTYifSx7bmFtZToibm9uY2UiLHR5cGU6InVpbnQyNTYifSx7bmFtZToidmFsdWUiLHR5cGU6InVpbnQyNTYifSx7bmFtZToiZGF0YSIsdHlwZToiYnl0ZXMifSx7bmFtZToiZmFjdG9yeURlcHMiLHR5cGU6ImJ5dGVzMzJbXSJ9LHtuYW1lOiJwYXltYXN0ZXJJbnB1dCIsdHlwZToiYnl0ZXMifV19LHByaW1hcnlUeXBlOiJUcmFuc2FjdGlvbiIsbWVzc2FnZTplfX07ZnVuY3Rpb24gYjBlKHQpe2NvbnN0e2dhczplLG5vbmNlOnIsdG86bixmcm9tOnMsdmFsdWU6aSxtYXhGZWVQZXJHYXM6byxtYXhQcmlvcml0eUZlZVBlckdhczphLGZhY3RvcnlEZXBzOmMscGF5bWFzdGVyOmwscGF5bWFzdGVySW5wdXQ6ZCxnYXNQZXJQdWJkYXRhOnUsZGF0YTpofT10O3JldHVybnt0eFR5cGU6MTEzbixmcm9tOkJpZ0ludChzKSx0bzpuP0JpZ0ludChuKTowbixnYXNMaW1pdDplPz8wbixnYXNQZXJQdWJkYXRhQnl0ZUxpbWl0OnU/P3JfLG1heEZlZVBlckdhczpvPz8wbixtYXhQcmlvcml0eUZlZVBlckdhczphPz8wbixwYXltYXN0ZXI6bD9CaWdJbnQobCk6MG4sbm9uY2U6cj9CaWdJbnQocik6MG4sdmFsdWU6aT8/MG4sZGF0YTpoPz8iMHgiLGZhY3RvcnlEZXBzOmM/Lm1hcChwPT5xZShnMGUocCkpKT8/W10scGF5bWFzdGVySW5wdXQ6ZHx8IjB4In19Y29uc3QgTWk9e2Zvcm1hdHRlcnM6TEIsc2VyaWFsaXplcnM6ZDBlLGN1c3RvbTp7Z2V0RWlwNzEyRG9tYWluOncwZX19LHkwZT0kKHsuLi5NaSxpZDoyNzQxLG5hbWU6IkFic3RyYWN0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRVRIIixzeW1ib2w6IkVUSCJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2FwaS5tYWlubmV0LmFicy54eXoiXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly9hcGkubWFpbm5ldC5hYnMueHl6L3dzIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRXRoZXJzY2FuIix1cmw6Imh0dHBzOi8vYWJzY2FuLm9yZyJ9LG5hdGl2ZTp7bmFtZToiQWJzdHJhY3QgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci5tYWlubmV0LmFicy54eXoifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweEFhNERlNDFkYmEwQ2E1ZENCYjI4OGI3Y0M2YjcwOEYzYWFDNzU5RTciLGJsb2NrQ3JlYXRlZDo1Mjg4fSx1bml2ZXJzYWxTaWduYXR1cmVWZXJpZmllcjp7YWRkcmVzczoiMHhmQjY4ODMzMDM3OTk3NkRBODFlQjY0RmU0QkY1MGQ3NDAxNzYzQjlDIixibG9ja0NyZWF0ZWQ6NTI2M319fSksdjBlPSQoey4uLk1pLGlkOjExMTI0LG5hbWU6IkFic3RyYWN0IFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJFVEgiLHN5bWJvbDoiRVRIIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vYXBpLnRlc3RuZXQuYWJzLnh5eiJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkV0aGVyc2NhbiIsdXJsOiJodHRwczovL3NlcG9saWEuYWJzY2FuLm9yZyJ9LG5hdGl2ZTp7bmFtZToiQWJzdHJhY3QgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci50ZXN0bmV0LmFicy54eXoifX0sdGVzdG5ldDohMCxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4RjljZGE2MjRGQkM3ZTA1OTM1NWNlOThhMzE2OTNkMjk5RkFDZDk2MyIsYmxvY2tDcmVhdGVkOjM1ODM0OX0sdW5pdmVyc2FsU2lnbmF0dXJlVmVyaWZpZXI6e2FkZHJlc3M6IjB4ZkI2ODgzMzAzNzk5NzZEQTgxZUI2NEZlNEJGNTBkNzQwMTc2M0I5QyIsYmxvY2tDcmVhdGVkOjQzMTY4Mn19fSksRTBlPSQoe2lkOjc4NyxuYW1lOiJBY2FsYSIsbmV0d29yazoiYWNhbGEiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJBY2FsYSIsc3ltYm9sOiJBQ0EiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ldGgtcnBjLWFjYWxhLmFjYS1hcGkubmV0d29yayJdLHdlYlNvY2tldDpbIndzczovL2V0aC1ycGMtYWNhbGEuYWNhLWFwaS5uZXR3b3JrIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQWNhbGEgQmxvY2tzY291dCIsdXJsOiJodHRwczovL2Jsb2Nrc2NvdXQuYWNhbGEubmV0d29yayIsYXBpVXJsOiJodHRwczovL2Jsb2Nrc2NvdXQuYWNhbGEubmV0d29yay9hcGkifX0sdGVzdG5ldDohMX0pLEMwZT0kKHtpZDo0NyxuYW1lOiJBY3JpYSBJbnRlbGxpQ2hhaW4iLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJBQ1JJQSIsc3ltYm9sOiJBQ1JJQSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2FpYy5hY3JpYS5haSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFjcmlhIEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZXhwbG9yZXIuYWNyaWEuYWkifX0sdGVzdG5ldDohMX0pLHgwZT0kKHtpZDoxMjE1LG5hbWU6IkFERiBDaGFpbiIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkFEREZJTEwiLHN5bWJvbDoiQURGIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vbWFpbm5ldC5hZGZ0ZWNobm9sb2d5LmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFERiBNYWlubmV0IEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZXhwbG9yZXIuYWRmdGVjaG5vbG9neS5jb20ifX0sdGVzdG5ldDohMX0pLF8wZT0kKHtpZDoxNjgsbmFtZToiQUlPWiBOZXR3b3JrIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQUlPWiIsc3ltYm9sOiJBSU9aIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vZXRoLWRhdGFzZWVkLmFpb3oubmV0d29yayJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFJT1ogRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci5haW96Lm5ldHdvcmsifX0sdGVzdG5ldDohMX0pLGswZT0kKHtpZDo0MTQ1NSxuYW1lOiJBbGVwaCBaZXJvIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiQWxlcGggWmVybyIsc3ltYm9sOiJBWkVSTyIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5hbGVwaHplcm8ucmFhcy5nZWxhdG8uY2xvdWQiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJBbGVwaCBaZXJvIEVWTSBFeHBsb3JlciIsdXJsOiJodHRwczovL2V2bS1leHBsb3Jlci5hbGVwaHplcm8ub3JnIixhcGlVcmw6Imh0dHBzOi8vZXZtLWV4cGxvcmVyLmFsZXBoemVyby5vcmcvYXBpIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6NDYwMzM3N319fSksUzBlPSQoe2lkOjIwMzksbmFtZToiQWxlcGggWmVybyBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7bmFtZToiVFpFUk8iLHN5bWJvbDoiVFpFUk8iLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuYWxlcGh6ZXJvLXRlc3RuZXQuZ2VsYXRvLmRpZ2l0YWwiXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly93cy5hbGVwaHplcm8tdGVzdG5ldC5nZWxhdG8uZGlnaXRhbCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFsZXBoIFplcm8gRVZNIFRlc3RuZXQgZXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9ldm0tZXhwbG9yZXItdGVzdG5ldC5hbGVwaHplcm8ub3JnIixhcGlVcmw6Imh0dHBzOi8vZXZtLWV4cGxvcmVyLXRlc3RuZXQuYWxlcGh6ZXJvLm9yZy9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNhMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYmUyYTE3Mzk3NmNhMTEiLGJsb2NrQ3JlYXRlZDoyODYxNzQ1fX0sdGVzdG5ldDohMH0pLEEwZT0kKHtpZDoxMDI0MTAyNCxuYW1lOiJBbGllblggTWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkV0aGVyIixzeW1ib2w6IkVUSCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5hbGllbnhjaGFpbi5pby9odHRwIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQWxpZW5YIEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZXhwbG9yZXIuYWxpZW54Y2hhaW4uaW8ifX0sdGVzdG5ldDohMX0pLFQwZT0kKHtpZDoxMDI0MTAyNSxuYW1lOiJBTElFTlggSGFsIFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJFdGhlciIsc3ltYm9sOiJFVEgiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9oYWwtcnBjLmFsaWVueGNoYWluLmlvL2h0dHAiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJBbGllblggRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9oYWwtZXhwbG9yZXIuYWxpZW54Y2hhaW4uaW8ifX0sdGVzdG5ldDohMH0pLGpCPXtnYXNQcmljZU9yYWNsZTp7YWRkcmVzczoiMHg0MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGIn0sbDFCbG9jazp7YWRkcmVzczoiMHg0MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE1In0sbDJDcm9zc0RvbWFpbk1lc3Nlbmdlcjp7YWRkcmVzczoiMHg0MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3In0sbDJFcmM3MjFCcmlkZ2U6e2FkZHJlc3M6IjB4NDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNCJ9LGwyU3RhbmRhcmRCcmlkZ2U6e2FkZHJlc3M6IjB4NDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMCJ9LGwyVG9MMU1lc3NhZ2VQYXNzZXI6e2FkZHJlc3M6IjB4NDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNiJ9fSxuXz17YmxvY2s6dDYoe2Zvcm1hdCh0KXtyZXR1cm57dHJhbnNhY3Rpb25zOnQudHJhbnNhY3Rpb25zPy5tYXAocj0+e2lmKHR5cGVvZiByPT0ic3RyaW5nIilyZXR1cm4gcjtjb25zdCBuPVhtKHIpO3JldHVybiBuLnR5cGVIZXg9PT0iMHg3ZSImJihuLmlzU3lzdGVtVHg9ci5pc1N5c3RlbVR4LG4ubWludD1yLm1pbnQ/c3Ioci5taW50KTp2b2lkIDAsbi5zb3VyY2VIYXNoPXIuc291cmNlSGFzaCxuLnR5cGU9ImRlcG9zaXQiKSxufSksc3RhdGVSb290OnQuc3RhdGVSb290fX19KSx0cmFuc2FjdGlvbjplNih7Zm9ybWF0KHQpe2NvbnN0IGU9e307cmV0dXJuIHQudHlwZT09PSIweDdlIiYmKGUuaXNTeXN0ZW1UeD10LmlzU3lzdGVtVHgsZS5taW50PXQubWludD9zcih0Lm1pbnQpOnZvaWQgMCxlLnNvdXJjZUhhc2g9dC5zb3VyY2VIYXNoLGUudHlwZT0iZGVwb3NpdCIpLGV9fSksdHJhbnNhY3Rpb25SZWNlaXB0OkdPKHtmb3JtYXQodCl7cmV0dXJue2wxR2FzUHJpY2U6dC5sMUdhc1ByaWNlP3NyKHQubDFHYXNQcmljZSk6bnVsbCxsMUdhc1VzZWQ6dC5sMUdhc1VzZWQ/c3IodC5sMUdhc1VzZWQpOm51bGwsbDFGZWU6dC5sMUZlZT9zcih0LmwxRmVlKTpudWxsLGwxRmVlU2NhbGFyOnQubDFGZWVTY2FsYXI/TnVtYmVyKHQubDFGZWVTY2FsYXIpOm51bGx9fX0pfTtmdW5jdGlvbiB6Qih0LGUpe3JldHVybiBOMGUodCk/UjBlKHQpOkpPKHQsZSl9Y29uc3QgSTBlPXt0cmFuc2FjdGlvbjp6Qn07ZnVuY3Rpb24gUjBlKHQpe1AwZSh0KTtjb25zdHtzb3VyY2VIYXNoOmUsZGF0YTpyLGZyb206bixnYXM6cyxpc1N5c3RlbVR4OmksbWludDpvLHRvOmEsdmFsdWU6Y309dCxsPVtlLG4sYT8/IjB4IixvP3FlKG8pOiIweCIsYz9xZShjKToiMHgiLHM/cWUocyk6IjB4IixpPyIweDEiOiIweCIscj8/IjB4Il07cmV0dXJuIGlzKFsiMHg3ZSIsRW8obCldKX1mdW5jdGlvbiBOMGUodCl7cmV0dXJuIHQudHlwZT09PSJkZXBvc2l0Inx8dHlwZW9mIHQuc291cmNlSGFzaDwidSJ9ZnVuY3Rpb24gUDBlKHQpe2NvbnN0e2Zyb206ZSx0bzpyfT10O2lmKGUmJiEkcihlKSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6ZX0pO2lmKHImJiEkcihyKSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6cn0pfWNvbnN0IF9lPXtjb250cmFjdHM6akIsZm9ybWF0dGVyczpuXyxzZXJpYWxpemVyczpJMGV9LERnPTEsTzBlPSQoey4uLl9lLGlkOjg4ODg4ODg4OCxuYW1lOiJBbmNpZW50OCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkV0aGVyIixzeW1ib2w6IkVUSCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5hbmNpZW50OC5nZyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFuY2llbnQ4IGV4cGxvcmVyIix1cmw6Imh0dHBzOi8vc2Nhbi5hbmNpZW50OC5nZyIsYXBpVXJsOiJodHRwczovL3NjYW4uYW5jaWVudDguZ2cvYXBpIn19LGNvbnRyYWN0czp7Li4uX2UuY29udHJhY3RzLGwyT3V0cHV0T3JhY2xlOntbRGddOnthZGRyZXNzOiIweEIwOURDMDg0MjhDOGI0RUZCNGZmOUMwODI3Mzg2Q0RGMzQyNzc5OTYifX0scG9ydGFsOntbRGddOnthZGRyZXNzOiIweDYzOUYyQUVDRTM5OEFhNzZiMDdlNTllRjZhYmUyY0ZlMzJiYWNiNjgiLGJsb2NrQ3JlYXRlZDoxOTA3MDU3MX19LGwxU3RhbmRhcmRCcmlkZ2U6e1tEZ106e2FkZHJlc3M6IjB4ZDVlM2VEZjViNjgxMzVENTU5RDU3MkUyNmJGODYzRkJDMTk1MDAzMyIsYmxvY2tDcmVhdGVkOjE5MDcwNTcxfX19LHNvdXJjZUlkOkRnfSksQmc9MTExNTUxMTEsJDBlPSQoey4uLl9lLGlkOjI4MTIyMDI0LG5hbWU6IkFuY2llbnQ4IFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJFdGhlciIsc3ltYm9sOiJFVEgiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGN2Mi10ZXN0bmV0LmFuY2llbnQ4LmdnIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQW5jaWVudDggQ2VsZXN0aWEgVGVzdG5ldCBleHBsb3JlciIsdXJsOiJodHRwczovL3NjYW52Mi10ZXN0bmV0LmFuY2llbnQ4LmdnIixhcGlVcmw6Imh0dHBzOi8vc2NhbnYyLXRlc3RuZXQuYW5jaWVudDguZ2cvYXBpIn19LGNvbnRyYWN0czp7Li4uX2UuY29udHJhY3RzLGwyT3V0cHV0T3JhY2xlOntbQmddOnthZGRyZXNzOiIweDk0MmZENTAxN2MwRjYwNTc1OTMwRDg1NzRFYWNhMTNCRWNENmUxYkIifX0scG9ydGFsOntbQmddOnthZGRyZXNzOiIweGZhMWQ5RTI2QTZhQ0Q3YjIyMTE1RDI3NTcyYzEyMjFCOTgwM2M5NjAiLGJsb2NrQ3JlYXRlZDo0OTcyOTA4fX0sbDFTdGFuZGFyZEJyaWRnZTp7W0JnXTp7YWRkcmVzczoiMHhGNkJjMDE0NmQzYzc0RDQ4MzA2ZTc5QWUxMzRBMjYwRTQxOEM5MzM1IixibG9ja0NyZWF0ZWQ6NDk3MjkwOH19fSxzb3VyY2VJZDpCZ30pLE0wZT0kKHtpZDozMTMzNyxuYW1lOiJBbnZpbCIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkV0aGVyIixzeW1ib2w6IkVUSCJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwOi8vMTI3LjAuMC4xOjg1NDUiXSx3ZWJTb2NrZXQ6WyJ3czovLzEyNy4wLjAuMTo4NTQ1Il19fX0pLEQwZT00MjE2MSxCMGU9JCh7aWQ6MzMxMzksbmFtZToiQXBlIENoYWluIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiQXBlQ29pbiIsc3ltYm9sOiJBUEUiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuYXBlY2hhaW4uY29tL2h0dHAiXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly9ycGMuYXBlY2hhaW4uY29tL3dzIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQXBlc2NhbiIsdXJsOiJodHRwczovL2FwZXNjYW4uaW8iLGFwaVVybDoiaHR0cHM6Ly9hcGkuYXBlc2Nhbi5pby9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNBMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYkUyYTE3Mzk3NkNBMTEiLGJsb2NrQ3JlYXRlZDoyMDg4OX19LHNvdXJjZUlkOkQwZX0pLEwwZT0kKHtpZDozOTkzLG5hbWU6IkFQRVggVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkV0aGVyIixzeW1ib2w6IkVUSCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy10ZXN0bmV0LmFwZXhsYXllci54eXoiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCbG9ja3Njb3V0Iix1cmw6Imh0dHBzOi8vZXhwLXRlc3RuZXQuYXBleGxheWVyLnh5eiIsYXBpVXJsOiJodHRwczovL2V4cC10ZXN0bmV0LmFwZXhsYXllci54eXovYXBpIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhmNzY0MmJlMzNhNmIxOEQxNmE5OTU2NTdhZGI1YTY4Q0QwNDM4YUUyIixibG9ja0NyZWF0ZWQ6MjgzNzc1fX0sdGVzdG5ldDohMH0pLFUwZT0kKHtpZDo0MjE2MSxuYW1lOiJBcmJpdHJ1bSBPbmUiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJFdGhlciIsc3ltYm9sOiJFVEgiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9hcmIxLmFyYml0cnVtLmlvL3JwYyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFyYmlzY2FuIix1cmw6Imh0dHBzOi8vYXJiaXNjYW4uaW8iLGFwaVVybDoiaHR0cHM6Ly9hcGkuYXJiaXNjYW4uaW8vYXBpIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6NzY1NDcwN319fSksRjBlPSQoe2lkOjQyMTYxMyxuYW1lOiJBcmJpdHJ1bSBHb2VybGkiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJBcmJpdHJ1bSBHb2VybGkgRXRoZXIiLHN5bWJvbDoiRVRIIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vZ29lcmxpLXJvbGx1cC5hcmJpdHJ1bS5pby9ycGMiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJBcmJpc2NhbiIsdXJsOiJodHRwczovL2dvZXJsaS5hcmJpc2Nhbi5pbyJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjg4MTE0fX0sdGVzdG5ldDohMH0pLGowZT0kKHtpZDo0MjE3MCxuYW1lOiJBcmJpdHJ1bSBOb3ZhIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiRXRoZXIiLHN5bWJvbDoiRVRIIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vbm92YS5hcmJpdHJ1bS5pby9ycGMiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJBcmJpc2NhbiIsdXJsOiJodHRwczovL25vdmEuYXJiaXNjYW4uaW8iLGFwaVVybDoiaHR0cHM6Ly9hcGktbm92YS5hcmJpc2Nhbi5pby9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNhMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYmUyYTE3Mzk3NmNhMTEiLGJsb2NrQ3JlYXRlZDoxNzQ2OTYzfX19KSx6MGU9JCh7aWQ6NDIxNjE0LG5hbWU6IkFyYml0cnVtIFNlcG9saWEiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJBcmJpdHJ1bSBTZXBvbGlhIEV0aGVyIixzeW1ib2w6IkVUSCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3NlcG9saWEtcm9sbHVwLmFyYml0cnVtLmlvL3JwYyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFyYmlzY2FuIix1cmw6Imh0dHBzOi8vc2Vwb2xpYS5hcmJpc2Nhbi5pbyIsYXBpVXJsOiJodHRwczovL2FwaS1zZXBvbGlhLmFyYmlzY2FuLmlvL2FwaSJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjgxOTMwfX0sdGVzdG5ldDohMH0pLFcwZT0kKHtpZDo3ODk3LG5hbWU6IkFyZW5hLVoiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJFdGhlciIsc3ltYm9sOiJFVEgiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuYXJlbmEtei5nZyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFyZW5hLVogRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci5hcmVuYS16LmdnIixhcGlVcmw6Imh0dHBzOi8vZXhwbG9yZXIuYXJlbmEtei5nZyJ9fX0pLEgwZT0kKHtpZDo0NjMsbmFtZToiQXJlb24gTmV0d29yayIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkFSRUEiLHN5bWJvbDoiQVJFQSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL21haW5uZXQtcnBjLmFyZW9uLm5ldHdvcmsiXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly9tYWlubmV0LXdzLmFyZW9uLm5ldHdvcmsiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJBcmVvbnNjYW4iLHVybDoiaHR0cHM6Ly9hcmVvbnNjYW4uY29tIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjQTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJFMmExNzM5NzZDQTExIixibG9ja0NyZWF0ZWQ6MzUzMjg2fX0sdGVzdG5ldDohMX0pLHEwZT0kKHtpZDo0NjIsbmFtZToiQXJlb24gTmV0d29yayBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiVEFSRUEiLHN5bWJvbDoiVEFSRUEifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly90ZXN0bmV0LXJwYy5hcmVvbi5uZXR3b3JrIl0sd2ViU29ja2V0Olsid3NzOi8vdGVzdG5ldC13cy5hcmVvbi5uZXR3b3JrIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQXJlb25zY2FuIix1cmw6Imh0dHBzOi8vYXJlb25zY2FuLmNvbSJ9fSx0ZXN0bmV0OiEwfSksVjBlPSQoe2lkOjExODIyLG5hbWU6IkFydGVsYSBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7bmFtZToiQVJUIixzeW1ib2w6IkFSVCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2JldGFuZXQtcnBjMS5hcnRlbGEubmV0d29yayJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFydGVsYSIsdXJsOiJodHRwczovL2JldGFuZXQtc2Nhbi5hcnRlbGEubmV0d29yayIsYXBpVXJsOiJodHRwczovL2JldGFuZXQtc2Nhbi5hcnRlbGEubmV0d29yay9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGQwN2M4NjM1Zjc2ZTg3NDVFZTcwOTJmYmI2ZThmYmM1RmVGMDlERDciLGJsb2NrQ3JlYXRlZDo3MDAxODcxfX0sdGVzdG5ldDohMH0pLEcwZT0kKHtpZDoxMDI0MixuYW1lOiJBcnRoZXJhIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiQXJ0aGVyYSIsc3ltYm9sOiJBQSIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5hcnRoZXJhLm5ldCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFydGhlcmEgRVZNIEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZXhwbG9yZXIuYXJ0aGVyYS5uZXQiLGFwaVVybDoiaHR0cHM6Ly9leHBsb3Jlci5hcnRoZXJhLm5ldC9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNhMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYmUyYTE3Mzk3NmNhMTEiLGJsb2NrQ3JlYXRlZDo0NTAyNzkxfX19KSxLMGU9JCh7aWQ6MTAyNDMsbmFtZToiQXJ0aGVyYSBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7bmFtZToiQXJ0aGVyYSIsc3ltYm9sOiJBQSIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy10ZXN0LmFydGhlcmEubmV0Il19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQXJ0aGVyYSBFVk0gRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci10ZXN0LmFydGhlcmEubmV0IixhcGlVcmw6Imh0dHBzOi8vZXhwbG9yZXItdGVzdC5hcnRoZXJhLm5ldC9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNhMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYmUyYTE3Mzk3NmNhMTEiLGJsb2NrQ3JlYXRlZDoyMjA1MX19fSksWjBlPSQoe2lkOjQyNDIwLG5hbWU6IkFzc2V0Q2hhaW4gTWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IlJlYWwgV29ybGQgQXNzZXQiLHN5bWJvbDoiUldBIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vbWFpbm5ldC1ycGMuYXNzZXRjaGFpbi5vcmciXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJBc3NldCBDaGFpbiBFeHBsb3JlciIsdXJsOiJodHRwczovL3NjYW4uYXNzZXRjaGFpbi5vcmciLGFwaVVybDoiaHR0cHM6Ly9zY2FuLmFzc2V0Y2hhaW4ub3JnL2FwaSJ9fSx0ZXN0bmV0OiExLGNvbnRyYWN0czp7fX0pLFkwZT0kKHtpZDo0MjQyMSxuYW1lOiJBc3NldENoYWluIFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJSZWFsIFdvcmxkIEFzc2V0IixzeW1ib2w6IlJXQSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2VudWd1LXJwYy5hc3NldGNoYWluLm9yZyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkFzc2V0IENoYWluIFRlc3RuZXQgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9zY2FuLXRlc3RuZXQuYXNzZXRjaGFpbi5vcmciLGFwaVVybDoiaHR0cHM6Ly9zY2FuLXRlc3RuZXQuYXNzZXRjaGFpbi5vcmcvYXBpIn19LHRlc3RuZXQ6ITAsY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweDk4OUY4MzJEMzU5ODhjYjVlM2VCMDAxRmEyRmU3ODk0NjlFQzMxRWEiLGJsb2NrQ3JlYXRlZDoxNzE3N319fSksSjBlPSQoe2lkOjU5MixuYW1lOiJBc3RhciIsbmV0d29yazoiYXN0YXItbWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkFzdGFyIixzeW1ib2w6IkFTVFIiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9hc3Rhci5hcGkub25maW5hbGl0eS5pby9wdWJsaWMiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJBc3RhciBTdWJzY2FuIix1cmw6Imh0dHBzOi8vYXN0YXIuc3Vic2Nhbi5pbyJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjc2MTc5NH19LHRlc3RuZXQ6ITF9KSxYMGU9JCh7aWQ6Mzc3NixuYW1lOiJBc3RhciB6a0VWTSIsbmV0d29yazoiQXN0YXJaa0VWTSIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkV0aGVyIixzeW1ib2w6IkVUSCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy16a2V2bS5hc3Rhci5uZXR3b3JrIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQXN0YXIgemtFVk0gRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9hc3Rhci16a2V2bS5leHBsb3Jlci5zdGFydGFsZS5jb20ifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNhMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYmUyYTE3Mzk3NmNhMTEiLGJsb2NrQ3JlYXRlZDo5MzUyOH19LHRlc3RuZXQ6ITF9KSxRMGU9JCh7aWQ6NjAzODM2MSxuYW1lOiJBc3RhciB6a0VWTSBUZXN0bmV0IHpLeW90byIsbmV0d29yazoiekt5b3RvIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiRXRoZXIiLHN5bWJvbDoiRVRIIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLnN0YXJ0YWxlLmNvbS96a3lvdG8iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJ6S3lvdG8gRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly96a3lvdG8uZXhwbG9yZXIuc3RhcnRhbGUuY29tIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6MTk2MTUzfX0sdGVzdG5ldDohMH0pLGVtZT0kKHtpZDoyMzQwLG5hbWU6IkF0bGV0YSBPbHltcGlhIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQXRsYSIsc3ltYm9sOiJBVExBIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vdGVzdG5ldC1ycGMuYXRsZXRhLm5ldHdvcms6OTk0NCIsImh0dHBzOi8vdGVzdG5ldC1ycGMuYXRsZXRhLm5ldHdvcmsiXSx3czpbIndzczovL3Rlc3RuZXQtcnBjLmF0bGV0YS5uZXR3b3JrOjk5NDQiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJBdGxldGEgT2x5bXBpYSBFeHBsb3JlciIsdXJsOiJodHRwczovL2Jsb2Nrc2NvdXQuYXRsZXRhLm5ldHdvcmsiLGFwaVVybDoiaHR0cHM6Ly9ibG9ja3Njb3V0LmF0bGV0YS5uZXR3b3JrL2FwaSJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4MTQ3MmVjNjM5MjE4MGZiODRGMzQ1ZDI0NTViQ0M3NUIyNjU3NzExNSIsYmxvY2tDcmVhdGVkOjEwNzY0NzN9fSx0ZXN0bmV0OiEwfSksdG1lPSQoe2lkOjEzMTMxNjE1NTQsbmFtZToiQXVyb3JhIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRXRoZXIiLHN5bWJvbDoiRVRIIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vbWFpbm5ldC5hdXJvcmEuZGV2Il19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQXVyb3Jhc2NhbiIsdXJsOiJodHRwczovL2F1cm9yYXNjYW4uZGV2IixhcGlVcmw6Imh0dHBzOi8vYXVyb3Jhc2Nhbi5kZXYvYXBpIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6NjI5MDc4MTZ9fX0pLHJtZT0kKHtpZDoxMzEzMTYxNTU1LG5hbWU6IkF1cm9yYSBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRXRoZXIiLHN5bWJvbDoiRVRIIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vdGVzdG5ldC5hdXJvcmEuZGV2Il19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQXVyb3Jhc2NhbiIsdXJsOiJodHRwczovL3Rlc3RuZXQuYXVyb3Jhc2Nhbi5kZXYiLGFwaVVybDoiaHR0cHM6Ly90ZXN0bmV0LmF1cm9yYXNjYW4uZGV2L2FwaSJ9fSx0ZXN0bmV0OiEwfSksbm1lPSQoe2lkOjIwNTIwNSxuYW1lOiJBdXJvcmlhIFRlc3RuZXQiLG5ldHdvcms6ImF1cm9yaWEiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJBdXJvcmlhIFN0cmF0aXMiLHN5bWJvbDoidFNUUkFYIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vYXVyb3JpYS5ycGMuc3RyYXRpc2V2bS5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJBdXJvcmlhIFRlc3RuZXQgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9hdXJvcmlhLmV4cGxvcmVyLnN0cmF0aXNldm0uY29tIn19LHRlc3RuZXQ6ITB9KSxpbWU9JCh7aWQ6NDMxMTQsbmFtZToiQXZhbGFuY2hlIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQXZhbGFuY2hlIixzeW1ib2w6IkFWQVgifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9hcGkuYXZheC5uZXR3b3JrL2V4dC9iYy9DL3JwYyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IlNub3dUcmFjZSIsdXJsOiJodHRwczovL3Nub3d0cmFjZS5pbyIsYXBpVXJsOiJodHRwczovL2FwaS5zbm93dHJhY2UuaW8ifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNhMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYmUyYTE3Mzk3NmNhMTEiLGJsb2NrQ3JlYXRlZDoxMTkwNzkzNH19fSksc21lPSQoe2lkOjQzMTEzLG5hbWU6IkF2YWxhbmNoZSBGdWppIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQXZhbGFuY2hlIEZ1amkiLHN5bWJvbDoiQVZBWCJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2FwaS5hdmF4LXRlc3QubmV0d29yay9leHQvYmMvQy9ycGMiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJTbm93VHJhY2UiLHVybDoiaHR0cHM6Ly90ZXN0bmV0LnNub3d0cmFjZS5pbyIsYXBpVXJsOiJodHRwczovL2FwaS10ZXN0bmV0LnNub3d0cmFjZS5pbyJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjcwOTY5NTl9fSx0ZXN0bmV0OiEwfSksb21lPTg0NTMsYW1lPSQoe2lkOjgzMzMsbmFtZToiQjMiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJFdGhlciIsc3ltYm9sOiJFVEgiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9tYWlubmV0LXJwYy5iMy5mdW4vaHR0cCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJsb2Nrc2NvdXQiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci5iMy5mdW4ifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNhMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYmUyYTE3Mzk3NmNhMTEiLGJsb2NrQ3JlYXRlZDowfX0sc291cmNlSWQ6b21lfSksY21lPTE2ODU4Nzc3MyxsbWU9JCh7aWQ6MTk5MyxuYW1lOiJCMyBTZXBvbGlhIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiRXRoZXIiLHN5bWJvbDoiRVRIIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vc2Vwb2xpYS5iMy5mdW4vaHR0cCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJsb2Nrc2NvdXQiLHVybDoiaHR0cHM6Ly9zZXBvbGlhLmV4cGxvcmVyLmIzLmZ1biJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjB9fSx0ZXN0bmV0OiEwLHNvdXJjZUlkOmNtZX0pLHVtZT0kKHtpZDo1MTY1LG5ldHdvcms6ImJhaGFtdXQiLG5hbWU6IkJhaGFtdXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJGYXN0dG9rZW4iLHN5bWJvbDoiRlROIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjMS5iYWhhbXV0LmlvIiwiaHR0cHM6Ly9iYWhhbXV0LXJwYy5wdWJsaWNub2RlLmNvbSIsImh0dHBzOi8vcnBjMi5iYWhhbXV0LmlvIl0sd2ViU29ja2V0Olsid3NzOi8vd3MxLnNhaGFyYS5iYWhhbXV0Y2hhaW4uY29tIiwid3NzOi8vYmFoYW11dC1ycGMucHVibGljbm9kZS5jb20iLCJ3c3M6Ly93czIuc2FoYXJhLmJhaGFtdXRjaGFpbi5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJGdG5zY2FuIix1cmw6Imh0dHBzOi8vd3d3LmZ0bnNjYW4uY29tIixhcGlVcmw6Imh0dHBzOi8vd3d3LmZ0bnNjYW4uY29tL2FwaSJ9fX0pLFpwPTEsZG1lPSQoey4uLl9lLGlkOjg0NTMsbmFtZToiQmFzZSIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkV0aGVyIixzeW1ib2w6IkVUSCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL21haW5uZXQuYmFzZS5vcmciXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCYXNlc2NhbiIsdXJsOiJodHRwczovL2Jhc2VzY2FuLm9yZyIsYXBpVXJsOiJodHRwczovL2FwaS5iYXNlc2Nhbi5vcmcvYXBpIn19LGNvbnRyYWN0czp7Li4uX2UuY29udHJhY3RzLGRpc3B1dGVHYW1lRmFjdG9yeTp7W1pwXTp7YWRkcmVzczoiMHg0M2VkQjg4QzRCODBmREQyQWRGRjI0MTJBN0JlYkY5ZEY0MmNCNDBlIn19LGwyT3V0cHV0T3JhY2xlOntbWnBdOnthZGRyZXNzOiIweDU2MzE1YjkwYzQwNzMwOTI1ZWM1NDg1Y2YwMDRkODM1MDU4NTE4QTAifX0sbXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6NTAyMn0scG9ydGFsOntbWnBdOnthZGRyZXNzOiIweDQ5MDQ4MDQ0RDU3ZTFDOTJBNzdmNzk5ODhkMjFGYThmQUY3NEU5N2UiLGJsb2NrQ3JlYXRlZDoxNzQ4MjE0M319LGwxU3RhbmRhcmRCcmlkZ2U6e1tacF06e2FkZHJlc3M6IjB4MzE1NENmMTZjY2RiNEM2ZDkyMjYyOTY2NDE3NGI5MDRkODBGMkMzNSIsYmxvY2tDcmVhdGVkOjE3NDgyMTQzfX19LHNvdXJjZUlkOlpwfSksaG1lPSQoe2lkOjEyMzQyMDAwMTExNCxuYW1lOiJCYXNlY2FtcCBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQ2FtcCIsc3ltYm9sOiJDQU1QIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLmJhc2VjYW1wLnQucmFhcy5nZWxhdG8uY2xvdWQiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJiYXNlY2FtcCIsdXJsOiJodHRwczovL2Jhc2VjYW1wLmNsb3VkLmJsb2Nrc2NvdXQuY29tIn19LHRlc3RuZXQ6ITB9KSxMZz01LHBtZT0kKHsuLi5fZSxpZDo4NDUzMSxuYW1lOiJCYXNlIEdvZXJsaSIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkdvZXJsaSBFdGhlciIsc3ltYm9sOiJFVEgiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9nb2VybGkuYmFzZS5vcmciXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCYXNlc2NhbiIsdXJsOiJodHRwczovL2dvZXJsaS5iYXNlc2Nhbi5vcmciLGFwaVVybDoiaHR0cHM6Ly9nb2VybGkuYmFzZXNjYW4ub3JnL2FwaSJ9fSxjb250cmFjdHM6ey4uLl9lLmNvbnRyYWN0cyxsMk91dHB1dE9yYWNsZTp7W0xnXTp7YWRkcmVzczoiMHgyQTM1ODkxZmYzMDMxM0NjRmE2Q0U4OGRjZjM4NThiYjA3NUEyMjk4In19LG11bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjEzNzY5ODh9LHBvcnRhbDp7W0xnXTp7YWRkcmVzczoiMHhlOTNjOGNEMEQ0MDkzNDEyMDVBNTkyZjhjNEFjMUE1ZmU1NTg1Y2ZBIn19LGwxU3RhbmRhcmRCcmlkZ2U6e1tMZ106e2FkZHJlc3M6IjB4ZkE2RDhFZTVCRTc3MEY4NEZDMDAxRDA5OEM0YkQ2MDRGZTAxMjg0YSJ9fX0sdGVzdG5ldDohMCxzb3VyY2VJZDpMZ30pLFlwPTExMTU1MTExLGZtZT0kKHsuLi5fZSxpZDo4NDUzMixuZXR3b3JrOiJiYXNlLXNlcG9saWEiLG5hbWU6IkJhc2UgU2Vwb2xpYSIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IlNlcG9saWEgRXRoZXIiLHN5bWJvbDoiRVRIIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vc2Vwb2xpYS5iYXNlLm9yZyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJhc2VzY2FuIix1cmw6Imh0dHBzOi8vc2Vwb2xpYS5iYXNlc2Nhbi5vcmciLGFwaVVybDoiaHR0cHM6Ly9hcGktc2Vwb2xpYS5iYXNlc2Nhbi5vcmcvYXBpIn19LGNvbnRyYWN0czp7Li4uX2UuY29udHJhY3RzLGRpc3B1dGVHYW1lRmFjdG9yeTp7W1lwXTp7YWRkcmVzczoiMHhkNkU2ZEJmNEY3RUEwYWM0MTJmRDhiNjVFRDI5N2U2NEJCN2EwNkUxIn19LGwyT3V0cHV0T3JhY2xlOntbWXBdOnthZGRyZXNzOiIweDg0NDU3Y2E5RDAxNjNGYkM0YmJmZTREZmJiMjBiYTQ2ZTQ4REYyNTQifX0scG9ydGFsOntbWXBdOnthZGRyZXNzOiIweDQ5ZjUzZTQxNDUyYzc0NTg5ZTg1Y2ExNjc3NDI2YmE0MjY0NTllODUiLGJsb2NrQ3JlYXRlZDo0NDQ2Njc3fX0sbDFTdGFuZGFyZEJyaWRnZTp7W1lwXTp7YWRkcmVzczoiMHhmZDBCZjcxRjYwNjYwRTJmNjA4ZWQ1NmUxNjU5QzQ1MGVCMTEzMTIwIixibG9ja0NyZWF0ZWQ6NDQ0NjY3N319LG11bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjEwNTk2NDd9fSx0ZXN0bmV0OiEwLHNvdXJjZUlkOllwfSksbW1lPSQoe2lkOjQzMzcsbmFtZToiQmVhbSIsbmV0d29yazoiYmVhbSIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkJlYW0iLHN5bWJvbDoiQkVBTSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2J1aWxkLm9uYmVhbS5jb20vcnBjIl0sd2ViU29ja2V0Olsid3NzOi8vYnVpbGQub25iZWFtLmNvbS93cyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJlYW0gRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9zdWJuZXRzLmF2YXgubmV0d29yay9iZWFtIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHg0OTU2ZjE1ZWZkYzNkYzE2NjQ1ZTkwY2MzNTZlYWZhNjVmZmM2NWVjIixibG9ja0NyZWF0ZWQ6MX19fSksZ21lPSQoe2lkOjEzMzM3LG5hbWU6IkJlYW0gVGVzdG5ldCIsbmV0d29yazoiYmVhbSIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkJlYW0iLHN5bWJvbDoiQkVBTSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2J1aWxkLm9uYmVhbS5jb20vcnBjL3Rlc3RuZXQiXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly9idWlsZC5vbmJlYW0uY29tL3dzL3Rlc3RuZXQiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCZWFtIEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vc3VibmV0cy10ZXN0LmF2YXgubmV0d29yay9iZWFtIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHg5YmY0OWI3MDRlZTJhMDk1Yjk1YzFmMmQ0ZWI5MDEwNTEwYzQxYzllIixibG9ja0NyZWF0ZWQ6M319LHRlc3RuZXQ6ITB9KSx3bWU9JCh7aWQ6NjQxMjMwLG5hbWU6IkJlYXIgTmV0d29yayBDaGFpbiBNYWlubmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQmVhck5ldHdvcmtDaGFpbiIsc3ltYm9sOiJCUk5LQyJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2JybmtjLW1haW5uZXQuYmVhcm5ldHdvcmsubmV0Il19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQnJua1NjYW4iLHVybDoiaHR0cHM6Ly9icm5rc2Nhbi5iZWFybmV0d29yay5uZXQiLGFwaVVybDoiaHR0cHM6Ly9icm5rc2Nhbi5iZWFybmV0d29yay5uZXQvYXBpIn19fSksYm1lPSQoe2lkOjc1MTIzMCxuYW1lOiJCZWFyIE5ldHdvcmsgQ2hhaW4gVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6InRCUk5LQyIsc3ltYm9sOiJ0QlJOS0MifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9icm5rYy10ZXN0LmJlYXJuZXR3b3JrLm5ldCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJybmtUZXN0U2NhbiIsdXJsOiJodHRwczovL2Jybmt0ZXN0LXNjYW4uYmVhcm5ldHdvcmsubmV0IixhcGlVcmw6Imh0dHBzOi8vYnJua3Rlc3Qtc2Nhbi5iZWFybmV0d29yay5uZXQvYXBpIn19LHRlc3RuZXQ6ITB9KSx5bWU9JCh7aWQ6ODAwOTQsbmFtZToiQmVyYWNoYWluIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQkVSQSBUb2tlbiIsc3ltYm9sOiJCRVJBIn0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNBMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYkUyYTE3Mzk3NkNBMTEiLGJsb2NrQ3JlYXRlZDowfSxlbnNSZWdpc3RyeTp7YWRkcmVzczoiMHg1YjIyMjgwODg2YTJmNWUwOWE0OWJlYTdlMzIwZWFiMGU1MzIwZTI4IixibG9ja0NyZWF0ZWQ6ODc3MDA3fSxlbnNVbml2ZXJzYWxSZXNvbHZlcjp7YWRkcmVzczoiMHhkZGZiMTg4ODhhOTQ2NjY4ODIzNTg4N2RlYzJhMTBjNGY1ZWZmZWU5IixibG9ja0NyZWF0ZWQ6ODc3MDA4fX0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLmJlcmFjaGFpbi5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCZXJhc2NhbiIsdXJsOiJodHRwczovL2JlcmFzY2FuLmNvbSJ9fSxlbnNUbGRzOlsiLmJlcmEiXSx0ZXN0bmV0OiExfSksdm1lPSQoe2lkOjgwMDY5LG5hbWU6IkJlcmFjaGFpbiBCZXBvbGlhIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQkVSQSBUb2tlbiIsc3ltYm9sOiJCRVJBIn0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNBMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYkUyYTE3Mzk3NkNBMTEiLGJsb2NrQ3JlYXRlZDowfX0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vYmVwb2xpYS5ycGMuYmVyYWNoYWluLmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJlcmFzY2FuIix1cmw6Imh0dHBzOi8vYmVwb2xpYS5iZXJhdHJhaWwuaW8ifX0sdGVzdG5ldDohMH0pLEVtZT0kKHtpZDo4MDA4NSxuYW1lOiJCZXJhY2hhaW4gQXJ0aW8iLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJCRVJBIFRva2VuIixzeW1ib2w6IkJFUkEifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9hcnRpby5ycGMuYmVyYWNoYWluLmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJlcmFjaGFpbiIsdXJsOiJodHRwczovL2FydGlvLmJlcmF0cmFpbC5pbyJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y0ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiRTJhMTczOTc2Q0ExMSIsYmxvY2tDcmVhdGVkOjg2NjkyNH19LHRlc3RuZXQ6ITB9KSxDbWU9JCh7aWQ6ODAwODQsbmFtZToiQmVyYWNoYWluIGJBcnRpbyIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkJFUkEgVG9rZW4iLHN5bWJvbDoiQkVSQSJ9LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjQTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJFMmExNzM5NzZDQTExIixibG9ja0NyZWF0ZWQ6MTA5MjY5fSxlbnNSZWdpc3RyeTp7YWRkcmVzczoiMHhCMGVlZjE4OTcxMjkwYjMzMzQ1MDU4NkQzM2RjQTZjRTEyMjY1MUQyIixibG9ja0NyZWF0ZWQ6NzczNjc5NH0sZW5zVW5pdmVyc2FsUmVzb2x2ZXI6e2FkZHJlc3M6IjB4NDE2OTJFZjFFQTBDNzlFNmI3MzA3N0U0QTY3NTcyRDJCRGJENzA1NyIsYmxvY2tDcmVhdGVkOjc3MzY3OTV9fSxlbnNUbGRzOlsiLmJlcmEiXSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9iYXJ0aW8ucnBjLmJlcmFjaGFpbi5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCZXJhY2hhaW4gYkFydGlvIEJlcmF0cmFpbCIsdXJsOiJodHRwczovL2JhcnRpby5iZXJhdHJhaWwuaW8ifX0sdGVzdG5ldDohMH0pLHhtZT0kKHtpZDoxMTUwMSxuYW1lOiJCRVZNIE1haW5uZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJCaXRjb2luIixzeW1ib2w6IkJUQyIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy1tYWlubmV0LTEuYmV2bS5pbyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJldm1zY2FuIix1cmw6Imh0dHBzOi8vc2Nhbi1tYWlubmV0LmJldm0uaW8iLGFwaVVybDoiaHR0cHM6Ly9zY2FuLW1haW5uZXQtYXBpLmJldm0uaW8vYXBpIn19fSksX21lPSQoe2lkOjMwNjgsbmFtZToiQmlmcm9zdCBNYWlubmV0IixuYXRpdmVDdXJyZW5jeTp7bmFtZToiQkZDIixzeW1ib2w6IkJGQyIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3B1YmxpYy0wMS5tYWlubmV0LmJpZnJvc3RuZXR3b3JrLmNvbS9ycGMiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCaWZyb3N0IEJsb2Nrc2NvdXQiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci5tYWlubmV0LmJpZnJvc3RuZXR3b3JrLmNvbSJ9fSx0ZXN0bmV0OiExfSksa21lPSQoe2lkOjMyNTIwLG5hbWU6IkJpdGdlcnQgTWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkJyaXNlIixzeW1ib2w6IkJyaXNlIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLWJpdGdlcnQuaWNlY3JlYW1zd2FwLmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJpdGdlcnQgU2NhbiIsdXJsOiJodHRwczovL2JyaXNlc2Nhbi5jb20ifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNBMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYkUyYTE3Mzk3NkNBMTEiLGJsb2NrQ3JlYXRlZDoyMTE4MDM0fX0sdGVzdG5ldDohMX0pLFNtZT0kKHtpZDo5NixuYW1lOiJLVUIgTWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IktVQiBDb2luIixzeW1ib2w6IktVQiIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5iaXRrdWJjaGFpbi5pbyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IktVQiBDaGFpbiBNYWlubmV0IEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vd3d3LmJrY3NjYW4uY29tIixhcGlVcmw6Imh0dHBzOi8vd3d3LmJrY3NjYW4uY29tL2FwaSJ9fX0pLEFtZT0kKHtpZDoyNTkyNSxuYW1lOiJCaXRrdWIgVGVzdG5ldCIsbmV0d29yazoiQml0a3ViIFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJCaXRrdWIgVGVzdCIsc3ltYm9sOiJ0S1VCIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLXRlc3RuZXQuYml0a3ViY2hhaW4uaW8iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCaXRrdWIgQ2hhaW4gVGVzdG5ldCBFeHBsb3JlciIsdXJsOiJodHRwczovL3Rlc3RuZXQuYmtjc2Nhbi5jb20iLGFwaVVybDoiaHR0cHM6Ly90ZXN0bmV0LmJrY3NjYW4uY29tL2FwaSJ9fSx0ZXN0bmV0OiEwfSksVG1lPSQoe2lkOjIwMDkwMSxuYW1lOiJCaXRsYXllciBNYWlubmV0IixuYXRpdmVDdXJyZW5jeTp7bmFtZToiQlRDIixzeW1ib2w6IkJUQyIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5iaXRsYXllci5vcmciXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly93cy5iaXRsYXllci5vcmciXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJiaXRsYXllciBtYWlubmV0IHNjYW4iLHVybDoiaHR0cHM6Ly93d3cuYnRyc2Nhbi5jb20ifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweDVCMjU2ZkU5ZTk5MzkwMmVDZTQ5RDEzOGE1YjExNjJjQmI1Mjk0NzQiLGJsb2NrQ3JlYXRlZDoyNDIxOTYzfX19KSxJbWU9JCh7aWQ6MjAwODEwLG5hbWU6IkJpdGxheWVyIFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJCVEMiLHN5bWJvbDoiQlRDIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vdGVzdG5ldC1ycGMuYml0bGF5ZXIub3JnIl0sd2ViU29ja2V0Olsid3NzOi8vdGVzdG5ldC13cy5iaXRsYXllci5vcmciXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJiaXRsYXllciB0ZXN0bmV0IHNjYW4iLHVybDoiaHR0cHM6Ly90ZXN0bmV0LmJ0cnNjYW4uY29tIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHg1QjI1NmZFOWU5OTM5MDJlQ2U0OUQxMzhhNWIxMTYyY0JiNTI5NDc0IixibG9ja0NyZWF0ZWQ6NDEzNTY3MX19LHRlc3RuZXQ6ITB9KSxSbWU9JCh7aWQ6NzE3MSxuYW1lOiJCaXRyb2NrIE1haW5uZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJCUk9DSyIsc3ltYm9sOiJCUk9DSyIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2Jyb2NrcnBjLmlvIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQml0cm9jayBFeHBsb3JlciIsdXJsOiJodHRwczovL2V4cGxvcmVyLmJpdC1yb2NrLmlvIn19LHRlc3RuZXQ6ITF9KSxObWU9JCh7aWQ6MTk5LG5hbWU6IkJpdFRvcnJlbnQiLG5ldHdvcms6ImJpdHRvcnJlbnQtY2hhaW4tbWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkJpdFRvcnJlbnQiLHN5bWJvbDoiQlRUIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLmJpdHRvcnJlbnRjaGFpbi5pbyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJ0dGNzY2FuIix1cmw6Imh0dHBzOi8vYnR0Y3NjYW4uY29tIixhcGlVcmw6Imh0dHBzOi8vYXBpLmJ0dGNzY2FuLmNvbS9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNBMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYkUyYTE3Mzk3NkNBMTEiLGJsb2NrQ3JlYXRlZDozMTA3ODU1Mn19fSksUG1lPSQoe2lkOjEwMjgsbmFtZToiQml0VG9ycmVudCBDaGFpbiBUZXN0bmV0IixuZXR3b3JrOiJiaXR0b3JyZW50LWNoYWluLXRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJCaXRUb3JyZW50IixzeW1ib2w6IkJUVCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3Rlc3RycGMuYml0dG9ycmVudGNoYWluLmlvIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQnR0Y3NjYW4iLHVybDoiaHR0cHM6Ly90ZXN0bmV0LmJ0dGNzY2FuLmNvbSIsYXBpVXJsOiJodHRwczovL3Rlc3RuZXQuYnR0Y3NjYW4uY29tL2FwaSJ9fSx0ZXN0bmV0OiEwfSksT21lPSQoe2lkOjUzNDU2LG5hbWU6IkJpcmRMYXllciIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkV0aGVyIixzeW1ib2w6IkVUSCJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5iaXJkbGF5ZXIueHl6IiwiaHR0cHM6Ly9ycGMxLmJpcmRsYXllci54eXoiXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly9ycGMuYmlyZGxheWVyLnh5ei93cyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJpcmRMYXllciBFeHBsb3JlciIsdXJsOiJodHRwczovL3NjYW4uYmlyZGxheWVyLnh5eiJ9fX0pLCRtZT0xLE1tZT0kKHsuLi5fZSxpZDo4MTQ1NyxuYW1lOiJCbGFzdCIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkV0aGVyIixzeW1ib2w6IkVUSCJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5ibGFzdC5pbyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJsYXN0c2NhbiIsdXJsOiJodHRwczovL2JsYXN0c2Nhbi5pbyIsYXBpVXJsOiJodHRwczovL2FwaS5ibGFzdHNjYW4uaW8vYXBpIn19LGNvbnRyYWN0czp7Li4uX2UuY29udHJhY3RzLG11bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y0ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiRTJhMTczOTc2Q0ExMSIsYmxvY2tDcmVhdGVkOjIxMjkyOX19LHNvdXJjZUlkOiRtZX0pLERtZT0xMTE1NTExMSxCbWU9JCh7aWQ6MTY4NTg3NzczLG5hbWU6IkJsYXN0IFNlcG9saWEiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJFdGhlciIsc3ltYm9sOiJFVEgiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9zZXBvbGlhLmJsYXN0LmlvIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQmxhc3RzY2FuIix1cmw6Imh0dHBzOi8vc2Vwb2xpYS5ibGFzdHNjYW4uaW8iLGFwaVVybDoiaHR0cHM6Ly9hcGktc2Vwb2xpYS5ibGFzdHNjYW4uaW8vYXBpIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6NzU2NjkwfX0sdGVzdG5ldDohMCxzb3VyY2VJZDpEbWV9KSx2Mz0xLExtZT0kKHsuLi5fZSxpZDo2MDgwOCxuYW1lOiJCT0IiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJFVEgiLHN5bWJvbDoiRVRIIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLmdvYm9iLnh5eiJdLHdlYlNvY2tldDpbIndzczovL3JwYy5nb2JvYi54eXoiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCT0IgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci5nb2JvYi54eXoifX0sY29udHJhY3RzOnsuLi5fZS5jb250cmFjdHMsbXVsdGljYWxsMzp7YWRkcmVzczoiMHhjQTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJFMmExNzM5NzZDQTExIixibG9ja0NyZWF0ZWQ6MjMxMzF9LGwyT3V0cHV0T3JhY2xlOntbdjNdOnthZGRyZXNzOiIweGREYTUzRTIzZjhhMzI2NDBiMDRENzI1NmU2NTFDMWRiOThkQjExQzEiLGJsb2NrQ3JlYXRlZDo0NDYyNjE1fX0scG9ydGFsOntbdjNdOnthZGRyZXNzOiIweDhBZGVFMTI0NDQ3NDM1ZkUwM2UzQ0QyNGRGM2Y0Y0FFMzJFNjVhM0UiLGJsb2NrQ3JlYXRlZDo0NDYyNjE1fX19LHNvdXJjZUlkOnYzfSksVW1lPSQoe2lkOjI4OCxuYW1lOiJCb2JhIE5ldHdvcmsiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJFdGhlciIsc3ltYm9sOiJFVEgifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9tYWlubmV0LmJvYmEubmV0d29yayJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJPQkFTY2FuIix1cmw6Imh0dHBzOi8vYm9iYXNjYW4uY29tIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6NDQ2ODU5fX19KSxGbWU9JCh7aWQ6Mjg4ODIsbmFtZToiQm9iYSBTZXBvbGlhIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiRXRoZXIiLHN5bWJvbDoiRVRIIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vc2Vwb2xpYS5ib2JhLm5ldHdvcmsiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCT0JBU2NhbiIsdXJsOiJodHRwczovL3Rlc3RuZXQuYm9iYXNjYW4uY29tIn19LHRlc3RuZXQ6ITB9KSxFMz0xMTE1NTExMSxqbWU9JCh7Li4uX2UsaWQ6ODA4ODEzLG5hbWU6IkJPQiBTZXBvbGlhIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRVRIIixzeW1ib2w6IkVUSCJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2JvYi1zZXBvbGlhLnJwYy5nb2JvYi54eXoiXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly9ib2Itc2Vwb2xpYS5ycGMuZ29ib2IueHl6Il19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQk9CIFNlcG9saWEgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9ib2Itc2Vwb2xpYS5leHBsb3Jlci5nb2JvYi54eXoifX0sY29udHJhY3RzOnsuLi5fZS5jb250cmFjdHMsbXVsdGljYWxsMzp7YWRkcmVzczoiMHhjQTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJFMmExNzM5NzZDQTExIixibG9ja0NyZWF0ZWQ6MzU2Nzd9LGwyT3V0cHV0T3JhY2xlOntbRTNdOnthZGRyZXNzOiIweDE0RDAwNjk0NTJiNEFFMmIyNTBCMzk1YjhhZEFiNzcxRTQyNjdkMmYiLGJsb2NrQ3JlYXRlZDo0NDYyNjE1fX0scG9ydGFsOntbRTNdOnthZGRyZXNzOiIweDg2N0IxQWE4NzJiOUM4Y0I1RTlGNzc1NWZlREM0NUJCMjRBZDBhZTQiLGJsb2NrQ3JlYXRlZDo0NDYyNjE1fX19LHRlc3RuZXQ6ITAsc291cmNlSWQ6RTN9KSx6bWU9JCh7aWQ6MTExMDAsbmFtZToiQm9vbCBCZXRhIE1haW5uZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJCT0wiLHN5bWJvbDoiQk9MIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vYmV0YS1ycGMtbm9kZS1odHRwLmJvb2wubmV0d29yayJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJvb2xTY2FuIix1cmw6Imh0dHBzOi8vYmV0YS1tYWlubmV0LmJvb2xzY2FuLmNvbS8ifX0sdGVzdG5ldDohMX0pLFdtZT0kKHtpZDozNjM2LG5hbWU6IkJvdGFuaXggVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkJvdGFuaXgiLHN5bWJvbDoiQlRDIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vbm9kZS5ib3Rhbml4bGFicy5kZXYiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCb3Rhbml4IFRlc3RuZXQgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly90ZXN0bmV0LmJvdGFuaXhzY2FuLmlvIn19LHRlc3RuZXQ6ITB9KSxIbWU9JCh7aWQ6NjAwMSxuYW1lOiJCb3VuY2VCaXQgTWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkJvdW5jZUJpdCIsc3ltYm9sOiJCQiIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2Z1bGxub2RlLW1haW5uZXQuYm91bmNlYml0YXBpLmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJCIFNjYW4iLHVybDoiaHR0cHM6Ly9iYnNjYW4uaW8ifX0sdGVzdG5ldDohMX0pLHFtZT0kKHtpZDo2ZTMsbmFtZToiQm91bmNlQml0IFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJCb3VuY2VCaXQiLHN5bWJvbDoiQkIiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9mdWxsbm9kZS10ZXN0bmV0LmJvdW5jZWJpdGFwaS5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCQiBTY2FuIix1cmw6Imh0dHBzOi8vdGVzdG5ldC5iYnNjYW4uaW8ifX0sdGVzdG5ldDohMH0pLFZtZT0kKHtpZDoxMDM5LG5hbWU6IkJyb25vcyIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkJSTyIsc3ltYm9sOiJCUk8ifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ldm0uYnJvbm9zLm9yZyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJyb25vU2NhbiIsdXJsOiJodHRwczovL2Jyb3NjYW4uYnJvbm9zLm9yZyJ9fX0pLEdtZT0kKHtpZDoxMDM4LG5hbWU6IkJyb25vcyBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQnJvbm9zIENvaW4iLHN5bWJvbDoidEJSTyJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2V2bS10ZXN0bmV0LmJyb25vcy5vcmciXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCcm9ub1NjYW4iLHVybDoiaHR0cHM6Ly90YnJvc2Nhbi5icm9ub3Mub3JnIn19LHRlc3RuZXQ6ITB9KSxLbWU9JCh7aWQ6NTYsbmFtZToiQk5CIFNtYXJ0IENoYWluIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQk5CIixzeW1ib2w6IkJOQiJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovLzU2LnJwYy50aGlyZHdlYi5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCc2NTY2FuIix1cmw6Imh0dHBzOi8vYnNjc2Nhbi5jb20iLGFwaVVybDoiaHR0cHM6Ly9hcGkuYnNjc2Nhbi5jb20vYXBpIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6MTU5MjE0NTJ9fX0pLFptZT0kKHtpZDoxMDE3LG5hbWU6IkJOQiBHcmVlbmZpZWxkIENoYWluIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQk5CIixzeW1ib2w6IkJOQiJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2dyZWVuZmllbGQtY2hhaW4uYm5iY2hhaW4ub3JnIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQk5CIEdyZWVuZmllbGQgTWFpbm5ldCBTY2FuIix1cmw6Imh0dHBzOi8vZ3JlZW5maWVsZHNjYW4uY29tIn19LHRlc3RuZXQ6ITF9KSxZbWU9JCh7aWQ6OTcsbmFtZToiQmluYW5jZSBTbWFydCBDaGFpbiBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQk5CIixzeW1ib2w6InRCTkIifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9kYXRhLXNlZWQtcHJlYnNjLTEtczEuYm5iY2hhaW4ub3JnOjg1NDUiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCc2NTY2FuIix1cmw6Imh0dHBzOi8vdGVzdG5ldC5ic2NzY2FuLmNvbSIsYXBpVXJsOiJodHRwczovL2FwaS10ZXN0bmV0LmJzY3NjYW4uY29tL2FwaSJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjE3NDIyNDgzfX0sdGVzdG5ldDohMH0pLEptZT0kKHtpZDoyMjMsbmFtZToiQjIiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJCaXRjb2luIixzeW1ib2w6IkJUQyIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5ic3F1YXJlZC5uZXR3b3JrIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiYmxvY2tzY291dCIsdXJsOiJodHRwczovL2V4cGxvcmVyLmJzcXVhcmVkLm5ldHdvcmsifX19KSxYbWU9JCh7aWQ6MTEyMyxuYW1lOiJCMiBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7bmFtZToiQml0Y29pbiIsc3ltYm9sOiJCVEMiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly90ZXN0bmV0LXJwYy5ic3F1YXJlZC5uZXR3b3JrIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiYmxvY2tzY291dCIsdXJsOiJodHRwczovL3Rlc3RuZXQtZXhwbG9yZXIuYnNxdWFyZWQubmV0d29yayJ9fSx0ZXN0bmV0OiEwfSksUW1lPSQoe2lkOjIwMDkwMSxuYW1lOiJCaXRsYXllciIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkJpdGNvaW4iLHN5bWJvbDoiQlRDIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLmJpdGxheWVyLm9yZyIsImh0dHBzOi8vcnBjLmJpdGxheWVyLXJwYy5jb20iXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly93cy5iaXRsYXllci5vcmciLCJ3c3M6Ly93cy5iaXRsYXllci1ycGMuY29tIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQml0bGF5ZXIoQlRSKSBTY2FuIix1cmw6Imh0dHBzOi8vd3d3LmJ0cnNjYW4uY29tIn19fSksZTFlPSQoe2lkOjIwMDgxMCxuYW1lOiJCaXRsYXllciBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7bmFtZToiQml0Y29pbiIsc3ltYm9sOiJCVEMiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly90ZXN0bmV0LXJwYy5iaXRsYXllci5vcmciXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly90ZXN0bmV0LXdzLmJpdGxheWVyLm9yZyIsIndzczovL3Rlc3RuZXQtd3MuYml0bGF5ZXItcnBjLmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJpdGxheWVyKEJUUikgU2NhbiIsdXJsOiJodHRwczovL3Rlc3RuZXQuYnRyc2Nhbi5jb20ifX0sdGVzdG5ldDohMH0pLHQxZT0kKHtpZDo0OTk5LG5hbWU6IkJsYWNrRm9ydCBFeGNoYW5nZSBOZXR3b3JrIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiQmxhY2tGb3J0IFRva2VuIixzeW1ib2w6IkJYTiIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL21haW5uZXQuYmxhY2tmb3J0Lm5ldHdvcmsvcnBjIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQmxvY2tzY291dCIsdXJsOiJodHRwczovL2V4cGxvcmVyLmJsYWNrZm9ydC5uZXR3b3JrIixhcGlVcmw6Imh0dHBzOi8vZXhwbG9yZXIuYmxhY2tmb3J0Lm5ldHdvcmsvYXBpIn19fSkscjFlPSQoe2lkOjQ3NzcsbmFtZToiQmxhY2tGb3J0IEV4Y2hhbmdlIE5ldHdvcmsgVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkJsYWNrRm9ydCBUZXN0bmV0IFRva2VuIixzeW1ib2w6IlRCWE4iLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly90ZXN0bmV0LmJsYWNrZm9ydC5uZXR3b3JrL3JwYyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJsb2Nrc2NvdXQiLHVybDoiaHR0cHM6Ly90ZXN0bmV0LWV4cGxvcmVyLmJsYWNrZm9ydC5uZXR3b3JrIixhcGlVcmw6Imh0dHBzOi8vdGVzdG5ldC1leHBsb3Jlci5ibGFja2ZvcnQubmV0d29yay9hcGkifX0sdGVzdG5ldDohMH0pLG4xZT0kKHtpZDoxMzM3MCxuYW1lOiJDYW5ub24iLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJFdGhlciIsc3ltYm9sOiJFVEgifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cDovLzEyNy4wLjAuMTo4NTQ1Il19fX0pLGkxZT0kKHtpZDo3NzAwLG5hbWU6IkNhbnRvIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQ2FudG8iLHN5bWJvbDoiQ0FOVE8ifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9jYW50by5ncmF2aXR5Y2hhaW4uaW8iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJUdWJlci5CdWlsZCAoQmxvY2tzY291dCkiLHVybDoiaHR0cHM6Ly90dWJlci5idWlsZCJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjI5MDU3ODl9fX0pLHMxZT17ZXN0aW1hdGVGZWVzUGVyR2FzOmFzeW5jIHQ9PntpZighdC5yZXF1ZXN0Py5mZWVDdXJyZW5jeSlyZXR1cm4gbnVsbDtjb25zdFtlLHJdPWF3YWl0IFByb21pc2UuYWxsKFtvMWUodC5jbGllbnQsdC5yZXF1ZXN0LmZlZUN1cnJlbmN5KSxhMWUodC5jbGllbnQsdC5yZXF1ZXN0LmZlZUN1cnJlbmN5KV0pO3JldHVybnttYXhGZWVQZXJHYXM6dC5tdWx0aXBseShlLXIpK3IsbWF4UHJpb3JpdHlGZWVQZXJHYXM6cn19fTthc3luYyBmdW5jdGlvbiBvMWUodCxlKXtjb25zdCByPWF3YWl0IHQucmVxdWVzdCh7bWV0aG9kOiJldGhfZ2FzUHJpY2UiLHBhcmFtczpbZV19KTtyZXR1cm4gQmlnSW50KHIpfWFzeW5jIGZ1bmN0aW9uIGExZSh0LGUpe2NvbnN0IHI9YXdhaXQgdC5yZXF1ZXN0KHttZXRob2Q6ImV0aF9tYXhQcmlvcml0eUZlZVBlckdhcyIscGFyYW1zOltlXX0pO3JldHVybiBCaWdJbnQocil9ZnVuY3Rpb24gV0IodCl7cmV0dXJuIHQ9PT0wfHx0PT09MG58fHQ9PT12b2lkIDB8fHQ9PT1udWxsfHx0PT09IjAifHx0PT09IiJ8fHR5cGVvZiB0PT0ic3RyaW5nIiYmKFBzKHQpLnRvTG93ZXJDYXNlKCk9PT0iMHgifHxQcyh0KS50b0xvd2VyQ2FzZSgpPT09IjB4MDAiKX1mdW5jdGlvbiBRZih0KXtyZXR1cm4hV0IodCl9ZnVuY3Rpb24gYzFlKHQpe3JldHVybiB0eXBlb2YgdC5tYXhGZWVQZXJHYXM8InUiJiZ0eXBlb2YgdC5tYXhQcmlvcml0eUZlZVBlckdhczwidSJ9ZnVuY3Rpb24gSEIodCl7cmV0dXJuIHQudHlwZT09PSJjaXA2NCI/ITA6YzFlKHQpJiZRZih0LmZlZUN1cnJlbmN5KX1jb25zdCBsMWU9e2Jsb2NrOnQ2KHtmb3JtYXQodCl7cmV0dXJue3RyYW5zYWN0aW9uczp0LnRyYW5zYWN0aW9ucz8ubWFwKHI9PnR5cGVvZiByPT0ic3RyaW5nIj9yOnsuLi5YbShyKSwuLi5yLmdhdGV3YXlGZWU/e2dhdGV3YXlGZWU6c3Ioci5nYXRld2F5RmVlKSxnYXRld2F5RmVlUmVjaXBpZW50OnIuZ2F0ZXdheUZlZVJlY2lwaWVudH06e30sZmVlQ3VycmVuY3k6ci5mZWVDdXJyZW5jeX0pfX19KSx0cmFuc2FjdGlvbjplNih7Zm9ybWF0KHQpe2lmKHQudHlwZT09PSIweDdlIilyZXR1cm57aXNTeXN0ZW1UeDp0LmlzU3lzdGVtVHgsbWludDp0Lm1pbnQ/c3IodC5taW50KTp2b2lkIDAsc291cmNlSGFzaDp0LnNvdXJjZUhhc2gsdHlwZToiZGVwb3NpdCJ9O2NvbnN0IGU9e2ZlZUN1cnJlbmN5OnQuZmVlQ3VycmVuY3l9O3JldHVybiB0LnR5cGU9PT0iMHg3YiI/ZS50eXBlPSJjaXA2NCI6KHQudHlwZT09PSIweDdjIiYmKGUudHlwZT0iY2lwNDIiKSxlLmdhdGV3YXlGZWU9dC5nYXRld2F5RmVlP3NyKHQuZ2F0ZXdheUZlZSk6bnVsbCxlLmdhdGV3YXlGZWVSZWNpcGllbnQ9dC5nYXRld2F5RmVlUmVjaXBpZW50KSxlfX0pLHRyYW5zYWN0aW9uUmVxdWVzdDpKUCh7Zm9ybWF0KHQpe2NvbnN0IGU9e307cmV0dXJuIHQuZmVlQ3VycmVuY3kmJihlLmZlZUN1cnJlbmN5PXQuZmVlQ3VycmVuY3kpLEhCKHQpJiYoZS50eXBlPSIweDdiIiksZX19KX07ZnVuY3Rpb24gdTFlKHQsZSl7cmV0dXJuIEhCKHQpP2gxZSh0LGUpOnpCKHQsZSl9Y29uc3QgZDFlPXt0cmFuc2FjdGlvbjp1MWV9O2Z1bmN0aW9uIGgxZSh0LGUpe2YxZSh0KTtjb25zdHtjaGFpbklkOnIsZ2FzOm4sbm9uY2U6cyx0bzppLHZhbHVlOm8sbWF4RmVlUGVyR2FzOmEsbWF4UHJpb3JpdHlGZWVQZXJHYXM6YyxhY2Nlc3NMaXN0OmwsZmVlQ3VycmVuY3k6ZCxkYXRhOnV9PXQsaD1bcWUocikscz9xZShzKToiMHgiLGM/cWUoYyk6IjB4IixhP3FlKGEpOiIweCIsbj9xZShuKToiMHgiLGk/PyIweCIsbz9xZShvKToiMHgiLHU/PyIweCIscjEobCksZCwuLi5vcCh0LGUpXTtyZXR1cm4gaXMoWyIweDdiIixFbyhoKV0pfWNvbnN0IHAxZT1ZbTtmdW5jdGlvbiBmMWUodCl7Y29uc3R7Y2hhaW5JZDplLG1heFByaW9yaXR5RmVlUGVyR2FzOnIsZ2FzUHJpY2U6bixtYXhGZWVQZXJHYXM6cyx0bzppLGZlZUN1cnJlbmN5Om99PXQ7aWYoZTw9MCl0aHJvdyBuZXcgbnAoe2NoYWluSWQ6ZX0pO2lmKGkmJiEkcihpKSl0aHJvdyBuZXcgZG4oe2FkZHJlc3M6aX0pO2lmKG4pdGhyb3cgbmV3IEVlKCJgZ2FzUHJpY2VgIGlzIG5vdCBhIHZhbGlkIENJUC02NCBUcmFuc2FjdGlvbiBhdHRyaWJ1dGUuIik7aWYoUWYocykmJnM+cDFlKXRocm93IG5ldyB5Yyh7bWF4RmVlUGVyR2FzOnN9KTtpZihRZihyKSYmUWYocykmJnI+cyl0aHJvdyBuZXcgbWgoe21heEZlZVBlckdhczpzLG1heFByaW9yaXR5RmVlUGVyR2FzOnJ9KTtpZihRZihvKSYmISRyKG8pKXRocm93IG5ldyBFZSgiYGZlZUN1cnJlbmN5YCBNVVNUIGJlIGEgdG9rZW4gYWRkcmVzcyBmb3IgQ0lQLTY0IHRyYW5zYWN0aW9ucy4iKTtpZihXQihvKSl0aHJvdyBuZXcgRWUoImBmZWVDdXJyZW5jeWAgbXVzdCBiZSBwcm92aWRlZCBmb3IgQ0lQLTY0IHRyYW5zYWN0aW9ucy4iKX1jb25zdCBLeD17Y29udHJhY3RzOmpCLGZvcm1hdHRlcnM6bDFlLHNlcmlhbGl6ZXJzOmQxZSxmZWVzOnMxZX0sbTFlPSQoey4uLkt4LGlkOjQyMjIwLG5hbWU6IkNlbG8iLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJDRUxPIixzeW1ib2w6IkNFTE8ifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9mb3Juby5jZWxvLm9yZyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkNlbG8gRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9jZWxvc2Nhbi5pbyIsYXBpVXJsOiJodHRwczovL2FwaS5jZWxvc2Nhbi5pby9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNBMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYkUyYTE3Mzk3NkNBMTEiLGJsb2NrQ3JlYXRlZDoxMzExMjU5OX19LHRlc3RuZXQ6ITF9KSxVZz0xN2UzLGcxZT0kKHsuLi5LeCxpZDo0NDc4NyxuYW1lOiJBbGZham9yZXMiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJDRUxPIixzeW1ib2w6IkEtQ0VMTyJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2FsZmFqb3Jlcy1mb3Juby5jZWxvLXRlc3RuZXQub3JnIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQ2VsbyBBbGZham9yZXMgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9jZWxvLWFsZmFqb3Jlcy5ibG9ja3Njb3V0LmNvbSIsYXBpVXJsOiJodHRwczovL2NlbG8tYWxmYWpvcmVzLmJsb2Nrc2NvdXQuY29tL2FwaSJ9fSxjb250cmFjdHM6ey4uLkt4LmNvbnRyYWN0cyxtdWx0aWNhbGwzOnthZGRyZXNzOiIweGNBMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYkUyYTE3Mzk3NkNBMTEiLGJsb2NrQ3JlYXRlZDoxNDU2OTAwMX0scG9ydGFsOntbVWddOnthZGRyZXNzOiIweDgyNTI3MzUzOTI3ZDhEMDY5YjNCNDUyOTA0Yzk0MmRBMTQ5QkEzODEiLGJsb2NrQ3JlYXRlZDoyNDExMzI0fX0sZGlzcHV0ZUdhbWVGYWN0b3J5OntbVWddOnthZGRyZXNzOiIweEUyOEFBZGNkOTg4Mzc0NmMwZTUwNjhGNThmOWVhMDYwMjdiMjE0Y2IiLGJsb2NrQ3JlYXRlZDoyNDExMzI0fX0sbDJPdXRwdXRPcmFjbGU6e1tVZ106e2FkZHJlc3M6IjB4NGEyNjM1ZTllNGY2ZTQ1ODE3YjFENDAyYWM0OTA0YzFkMTc1MjQzOCIsYmxvY2tDcmVhdGVkOjI0MTEzMjR9fSxsMVN0YW5kYXJkQnJpZGdlOntbVWddOnthZGRyZXNzOiIweEQxQjBFMDU4MTk3M2M5ZUI3Zjg4Njk2N0E2MDZiOTQ0MUE4OTcwMzciLGJsb2NrQ3JlYXRlZDoyNDExMzI0fX19LHRlc3RuZXQ6ITB9KSx3MWU9JCh7aWQ6NTg1OCxuYW1lOiJDaGFuZyBDaGFpbiBGb3VuZGF0aW9uIE1haW5uZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJDVEgiLHN5bWJvbDoiQ1RIIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLmN0aHNjYW4uY29tIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQ2hhbmcgQ2hhaW4gZXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9jdGhzY2FuLmNvbSJ9fX0pLGIxZT0kKHtpZDo4ODg4OCxuYW1lOiJDaGlsaXogQ2hhaW4iLG5ldHdvcms6ImNoaWxpei1jaGFpbiIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkNIWiIsc3ltYm9sOiJDSFoifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuY2hpbGl6LmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkNoaWxpeiBFeHBsb3JlciIsdXJsOiJodHRwczovL3NjYW4uY2hpbGl6LmNvbSIsYXBpVXJsOiJodHRwczovL3NjYW4uY2hpbGl6LmNvbS9hcGkifX19KSx5MWU9JCh7aWQ6Mjg4MixuYW1lOiJDaGlwcyBOZXR3b3JrIixuZXR3b3JrOiJDSElQUyIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IklPVEEiLHN5bWJvbDoiSU9UQSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL25vZGUuY2hpcHMub29vL3dhc3AvYXBpL3YxL2NoYWlucy9pb3RhMXBwM2QzbW5hcDN1Zm1ncW5qc253MzQ0c3FtZjVzdmpoMjZ5Mmtobm1jODlzdjY3ODh5M3IyMDdhOGZuL2V2bSJdfX19KSx2MWU9JCh7aWQ6NTExNSxuYW1lOiJDaXRyZWEgVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6ImNCVEMiLHN5bWJvbDoiY0JUQyIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy50ZXN0bmV0LmNpdHJlYS54eXoiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJDaXRyZWEgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci50ZXN0bmV0LmNpdHJlYS54eXoiLGFwaVVybDoiaHR0cHM6Ly9leHBsb3Jlci50ZXN0bmV0LmNpdHJlYS54eXovYXBpIn19LHRlc3RuZXQ6ITB9KSxFMWU9JCh7aWQ6NjEsbmFtZToiRXRoZXJldW0gQ2xhc3NpYyIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkVUQyIsc3ltYm9sOiJFVEMifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ldGMucml2ZXQubGluayJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJsb2Nrc2NvdXQiLHVybDoiaHR0cHM6Ly9ibG9ja3Njb3V0LmNvbS9ldGMvbWFpbm5ldCJ9fX0pLEMxZT0kKHtpZDoxMTIsbmFtZToiQ29pbmJpdCBNYWlubmV0IixuYXRpdmVDdXJyZW5jeTp7bmFtZToiR0lEUiIsc3ltYm9sOiJHSURSIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vY29pbmJpdC1ycGMtbWFpbm5ldC5jaGFpbi5zYmNyeXB0by5hcHAiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJDb2luYml0IEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vY29pbmJpdC1leHBsb3Jlci5jaGFpbi5zYmNyeXB0by5hcHAifX0sdGVzdG5ldDohMX0pLHgxZT0kKHtpZDo1MixuYW1lOiJDb2luRXggTWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6ImNldCIsc3ltYm9sOiJjZXQiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuY29pbmV4Lm5ldCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkNvaW5FeCBFeHBsb3JlciIsdXJsOiJodHRwczovL3d3dy5jb2luZXgubmV0In19LHRlc3RuZXQ6ITF9KSxfMWU9JCh7aWQ6MTAzMCxuYW1lOiJDb25mbHV4IGVTcGFjZSIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkNvbmZsdXgiLHN5bWJvbDoiQ0ZYIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vZXZtLmNvbmZsdXhycGMuY29tIl0sd2ViU29ja2V0Olsid3NzOi8vZXZtLmNvbmZsdXhycGMuY29tL3dzIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQ29uZmx1eFNjYW4iLHVybDoiaHR0cHM6Ly9ldm0uY29uZmx1eHNjYW4ub3JnIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhFRmYwMDc4OTEwZjYzOGNkODE5OTZjYzExN2JjY0QzZURmMkIwNzJGIixibG9ja0NyZWF0ZWQ6Njg2MDI5MzV9fX0pLGsxZT0kKHtpZDo3MSxuYW1lOiJDb25mbHV4IGVTcGFjZSBUZXN0bmV0IixuZXR3b3JrOiJjZngtZXNwYWNlLXRlc3RuZXQiLHRlc3RuZXQ6ITAsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkNvbmZsdXgiLHN5bWJvbDoiQ0ZYIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vZXZtdGVzdG5ldC5jb25mbHV4cnBjLmNvbSJdLHdlYlNvY2tldDpbIndzczovL2V2bXRlc3RuZXQuY29uZmx1eHJwYy5jb20vd3MiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJDb25mbHV4U2NhbiIsdXJsOiJodHRwczovL2V2bXRlc3RuZXQuY29uZmx1eHNjYW4ub3JnIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhFRmYwMDc4OTEwZjYzOGNkODE5OTZjYzExN2JjY0QzZURmMkIwNzJGIixibG9ja0NyZWF0ZWQ6MTE3NDk5MDUwfX19KSxTMWU9JCh7aWQ6MTExNixuYW1lOiJDb3JlIERhbyIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkNvcmUiLHN5bWJvbDoiQ09SRSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5jb3JlZGFvLm9yZyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkNvcmVEYW8iLHVybDoiaHR0cHM6Ly9zY2FuLmNvcmVkYW8ub3JnIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjQTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJFMmExNzM5NzZDQTExIixibG9ja0NyZWF0ZWQ6MTE5MDc5MzR9fSx0ZXN0bmV0OiExfSksQTFlPSQoe2lkOjExMTUsbmFtZToiQ29yZSBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToidENvcmUiLHN5bWJvbDoiVENPUkUifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMudGVzdC5idGNzLm5ldHdvcmsiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJDb3JlIFRlc3RuZXQiLHVybDoiaHR0cHM6Ly9zY2FuLnRlc3QuYnRjcy5uZXR3b3JrIixhcGlVcmw6Imh0dHBzOi8vYXBpLnRlc3QuYnRjcy5uZXR3b3JrL2FwaSJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Q2NkZEYyMEExOTMyNTM3MTIzQzJFNDhCZDhlMDBiMTA4QjhmNzU2OSIsYmxvY2tDcmVhdGVkOjI5MzUwNTA5fX0sdGVzdG5ldDohMH0pLFQxZT0kKHtpZDoxMTE0LG5hbWU6IkNvcmUgVGVzdG5ldDIiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJ0Q29yZTIiLHN5bWJvbDoiVENPUkUyIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLnRlc3QyLmJ0Y3MubmV0d29yayJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkNvcmUgVGVzdG5ldDIiLHVybDoiaHR0cHM6Ly9zY2FuLnRlc3QyLmJ0Y3MubmV0d29yayIsYXBpVXJsOiJodHRwczovL2FwaS50ZXN0Mi5idGNzLm5ldHdvcmsvYXBpIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHgzQ0IyODVmZjNDZDVDN0M3ZTU3MGIxRTdERTNEZTE3QTBmOTg1ZTU2IixibG9ja0NyZWF0ZWQ6MzgzODYwMH19LHRlc3RuZXQ6ITB9KSxJMWU9MSxSMWU9JCh7aWQ6MjFlNixuYW1lOiJDb3JuIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQml0Y29ybiIsc3ltYm9sOiJCVENOIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vMjEwMDAwMDAucnBjLnRoaXJkd2ViLmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkNvcm4gRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9jb3Juc2Nhbi5pbyIsYXBpVXJsOiJodHRwczovL2FwaS5yb3V0ZXNjYW4uaW8vdjIvbmV0d29yay9tYWlubmV0L2V2bS8yMTAwMDAwMC9ldGhlcnNjYW4vYXBpIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjQTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJFMmExNzM5NzZDQTExIixibG9ja0NyZWF0ZWQ6MzIyOH19LHNvdXJjZUlkOkkxZX0pLE4xZT0xMTE1NTExMSxQMWU9JCh7aWQ6MjEwMDAwMDEsbmFtZToiQ29ybiBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiQml0Y29ybiIsc3ltYm9sOiJCVENOIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vMjEwMDAwMDEucnBjLnRoaXJkd2ViLmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkNvcm4gVGVzdG5ldCBFeHBsb3JlciIsdXJsOiJodHRwczovL3Rlc3RuZXQuY29ybnNjYW4uaW8iLGFwaVVybDoiaHR0cHM6Ly9hcGkucm91dGVzY2FuLmlvL3YyL25ldHdvcmsvdGVzdG5ldC9ldm0vMjEwMDAwMDEvZXRoZXJzY2FuL2FwaSJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y0ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiRTJhMTczOTc2Q0ExMSIsYmxvY2tDcmVhdGVkOjQ4ODZ9fSx0ZXN0bmV0OiEwLHNvdXJjZUlkOk4xZX0pLE8xZT0kKHtpZDo0NCxuYW1lOiJDcmFiIE5ldHdvcmsiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJDcmFiIE5ldHdvcmsgTmF0aXZlIFRva2VuIixzeW1ib2w6IkNSQUIifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9jcmFiLXJwYy5kYXJ3aW5pYS5uZXR3b3JrIl0sd2ViU29ja2V0Olsid3NzOi8vY3JhYi1ycGMuZGFyd2luaWEubmV0d29yayJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJsb2Nrc2NvdXQiLHVybDoiaHR0cHM6Ly9jcmFiLXNjYW4uZGFyd2luaWEubmV0d29yayJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjMwMzI1OTN9fX0pLCQxZT0kKHtpZDo2NjY2NSxuYW1lOiJDcmVhdG9yIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRXRoZXIiLHN5bWJvbDoiRVRIIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLmNyZWF0b3JjaGFpbi5pbyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZXhwbG9yZXIuY3JlYXRvcmNoYWluLmlvIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjQTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJFMmExNzM5NzZDQTExIn19LHRlc3RuZXQ6ITB9KSxNMWU9JCh7aWQ6MTAyMDMwLG5hbWU6IkNyZWRpdGNvaW4zIE1haW5uZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJDcmVkaXRjb2luMyBNYWlubmV0IixzeW1ib2w6IkNUQyIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL21haW5uZXQzLmNyZWRpdGNvaW4ubmV0d29yayJdLHdlYlNvY2tldDpbIndzczovL21haW5uZXQzLmNyZWRpdGNvaW4ubmV0d29yayJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkJsb2Nrc2NvdXQiLHVybDoiaHR0cHM6Ly9jcmVkaXRjb2luLmJsb2Nrc2NvdXQuY29tIixhcGlVcmw6Imh0dHBzOi8vY3JlZGl0Y29pbi5ibG9ja3Njb3V0LmNvbS9hcGkifX0sdGVzdG5ldDohMX0pLEQxZT0kKHtpZDoxMDIwMzEsbmFtZToiQ3JlZGl0Y29pbjMgVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkNyZWRpdGNvaW4zIFRlc3RuZXQiLHN5bWJvbDoiVENUQyIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5jYzMtdGVzdG5ldC5jcmVkaXRjb2luLm5ldHdvcmsiXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly9ycGMuY2MzLXRlc3RuZXQuY3JlZGl0Y29pbi5uZXR3b3JrIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQmxvY2tzY291dCIsdXJsOiJodHRwczovL2NyZWRpdGNvaW4tdGVzdG5ldC5ibG9ja3Njb3V0LmNvbSIsYXBpVXJsOiJodHRwczovL2NyZWRpdGNvaW4tdGVzdG5ldC5ibG9ja3Njb3V0LmNvbS9hcGkifX0sdGVzdG5ldDohMH0pLEIxZT0kKHtpZDoyNSxuYW1lOiJDcm9ub3MgTWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkNyb25vcyIsc3ltYm9sOiJDUk8ifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ldm0uY3Jvbm9zLm9yZyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkNyb25vcyBFeHBsb3JlciIsdXJsOiJodHRwczovL2V4cGxvcmVyLmNyb25vcy5vcmciLGFwaVVybDoiaHR0cHM6Ly9leHBsb3Jlci1hcGkuY3Jvbm9zLm9yZy9tYWlubmV0L2FwaSJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y0ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiRTJhMTczOTc2Q0ExMSIsYmxvY2tDcmVhdGVkOjE5NjMxMTJ9fX0pLEwxZT0kKHtpZDozMzgsbmFtZToiQ3Jvbm9zIFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJDUk8iLHN5bWJvbDoidENSTyJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2V2bS10My5jcm9ub3Mub3JnIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQ3Jvbm9zIEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vY3Jvbm9zLm9yZy9leHBsb3Jlci90ZXN0bmV0MyJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y0ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiRTJhMTczOTc2Q0ExMSIsYmxvY2tDcmVhdGVkOjEwMTkxMjUxfX0sdGVzdG5ldDohMH0pLFUxZT0kKHtpZDozODgsbmFtZToiQ3Jvbm9zIHprRVZNIE1haW5uZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJDcm9ub3MgemtFVk0gQ1JPIixzeW1ib2w6InprQ1JPIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vbWFpbm5ldC56a2V2bS5jcm9ub3Mub3JnIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQ3Jvbm9zIHprRVZNIChNYWlubmV0KSBDaGFpbiBFeHBsb3JlciIsdXJsOiJodHRwczovL2V4cGxvcmVyLnprZXZtLmNyb25vcy5vcmcifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweDA2ZjQ0ODdkN2M0YTU5ODNkMjY2MGRiOTY1Y2M2ZDI1NjVlNGNmYWEiLGJsb2NrQ3JlYXRlZDo3Mn19fSksRjFlPSQoe2lkOjI4MixuYW1lOiJDcm9ub3MgemtFVk0gVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkNyb25vcyB6a0VWTSBUZXN0IENvaW4iLHN5bWJvbDoiemtUQ1JPIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vdGVzdG5ldC56a2V2bS5jcm9ub3Mub3JnIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQ3Jvbm9zIHprRVZNIFRlc3RuZXQgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci56a2V2bS5jcm9ub3Mub3JnL3Rlc3RuZXQifX0sdGVzdG5ldDohMH0pLGoxZT0kKHtpZDozNzM3LG5hbWU6IkNyb3NzYmVsbCIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkNTQiIsc3ltYm9sOiJDU0IifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuY3Jvc3NiZWxsLmlvIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQ3Jvc3NTY2FuIix1cmw6Imh0dHBzOi8vc2Nhbi5jcm9zc2JlbGwuaW8iLGFwaVVybDoiaHR0cHM6Ly9zY2FuLmNyb3NzYmVsbC5pby9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNBMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYkUyYTE3Mzk3NkNBMTEiLGJsb2NrQ3JlYXRlZDozODI0NjAzMX19fSksejFlPSQoe2lkOjMzMTExLG5hbWU6IkN1cnRpcyIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkFwZUNvaW4iLHN5bWJvbDoiQVBFIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLmN1cnRpcy5hcGVjaGFpbi5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJDdXJ0aXMgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci5jdXJ0aXMuYXBlY2hhaW4uY29tIn19LHRlc3RuZXQ6ITB9KSxXMWU9JCh7aWQ6NzU2MCxuYW1lOiJDeWJlciIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkV0aGVyIixzeW1ib2w6IkVUSCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2N5YmVyLmFsdC50ZWNobm9sb2d5Il19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQmxvY2tzY291dCIsdXJsOiJodHRwczovL2N5YmVyc2Nhbi5jbyIsYXBpVXJsOiJodHRwczovL2N5YmVyc2Nhbi5jby9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNBMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYkUyYTE3Mzk3NkNBMTEiLGJsb2NrQ3JlYXRlZDowfX19KSxIMWU9JCh7aWQ6MTExNTU3NTYwLG5hbWU6IkN5YmVyIFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJFdGhlciIsc3ltYm9sOiJFVEgiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9jeWJlci10ZXN0bmV0LmFsdC50ZWNobm9sb2d5Il19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiQmxvY2tzY291dCIsdXJsOiJodHRwczovL3Rlc3RuZXQuY3liZXJzY2FuLmNvIixhcGlVcmw6Imh0dHBzOi8vdGVzdG5ldC5jeWJlcnNjYW4uY28vYXBpIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhmZmMzOTFGMDAxODI2OWQ0NzU4QUVBMWExNDQ3NzJFOEZCOTk1NDVFIixibG9ja0NyZWF0ZWQ6MzA0NTQ1fX0sdGVzdG5ldDohMH0pLHExZT0kKHtpZDo4MjQsbmFtZToiRGFpbHkgTmV0d29yayBNYWlubmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRGFpbHkiLHN5bWJvbDoiRExZIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLm1haW5uZXQuZGFpbHljcnlwdG8ubmV0Il19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRGFpbHkgTWFpbm5ldCBFeHBsb3JlciIsdXJsOiJodHRwczovL2V4cGxvcmVyLm1haW5uZXQuZGFpbHljcnlwdG8ubmV0In19LHRlc3RuZXQ6ITF9KSxWMWU9JCh7aWQ6ODI1LG5hbWU6IkRhaWx5IE5ldHdvcmsgVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkRhaWx5IixzeW1ib2w6IkRMWSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy50ZXN0bmV0LmRhaWx5Y3J5cHRvLm5ldCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkRhaWx5IFRlc3RuZXQgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci50ZXN0bmV0LmRhaWx5Y3J5cHRvLm5ldCJ9fSx0ZXN0bmV0OiEwfSksRzFlPSQoe2lkOjQ2LG5hbWU6IkRhcndpbmlhIE5ldHdvcmsiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJSSU5HIixzeW1ib2w6IlJJTkcifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuZGFyd2luaWEubmV0d29yayJdLHdlYlNvY2tldDpbIndzczovL3JwYy5kYXJ3aW5pYS5uZXR3b3JrIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci5kYXJ3aW5pYS5uZXR3b3JrIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6Njk0MjB9fX0pLEsxZT0kKHtpZDoyMDI0MDYwMyxuYW1lOiJEQksgY2hhaW4iLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJFdGhlciIsc3ltYm9sOiJFVEgiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMubWFpbm5ldC5kYmtjaGFpbi5pbyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkRCSyBDaGFpbiBFeHBsb3JlciIsdXJsOiJodHRwczovL3NjYW4uZGJrY2hhaW4uaW8ifX0sdGVzdG5ldDohMX0pLFoxZT0kKHsuLi5fZSxpZDoyNzE2NDQ2NDI5ODM3ZTMsbmFtZToiRGNoYWluIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiRXRoZXIiLHN5bWJvbDoiRVRIIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vZGNoYWluLTI3MTY0NDY0Mjk4MzcwMDAtMS5qc29ucnBjLnNhZ2FycGMuaW8iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJEY2hhaW4gRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9kY2hhaW4tMjcxNjQ0NjQyOTgzNzAwMC0xLnNhZ2FleHBsb3Jlci5pbyIsYXBpVXJsOiJodHRwczovL2FwaS1kY2hhaW4tMjcxNjQ0NjQyOTgzNzAwMC0xLnNhZ2FleHBsb3Jlci5pby9hcGkifX0sY29udHJhY3RzOnsuLi5fZS5jb250cmFjdHN9fSksWTFlPSQoey4uLl9lLGlkOjI3MTMwMTc5OTc1NzhlMyxuYW1lOiJEY2hhaW4gVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkV0aGVyIixzeW1ib2w6IkVUSCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2RjaGFpbnRlc3RuZXQtMjcxMzAxNzk5NzU3ODAwMC0xLmpzb25ycGMudGVzdG5ldC5zYWdhcnBjLmlvIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRGNoYWluIEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZGNoYWludGVzdG5ldC0yNzEzMDE3OTk3NTc4MDAwLTEudGVzdG5ldC5zYWdhZXhwbG9yZXIuaW8iLGFwaVVybDoiaHR0cHM6Ly9hcGktZGNoYWludGVzdG5ldC0yNzEzMDE3OTk3NTc4MDAwLTEudGVzdG5ldC5zYWdhZXhwbG9yZXIuaW8vYXBpIn19LGNvbnRyYWN0czp7Li4uX2UuY29udHJhY3RzfX0pLEoxZT0kKHtpZDoxMTMwLG5ldHdvcms6ImRlZmljaGFpbi1ldm0iLG5hbWU6IkRlRmlDaGFpbiBFVk0gTWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkRlRmlDaGFpbiIsc3ltYm9sOiJERkkiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ldGgubWFpbm5ldC5vY2Vhbi5qZWxseWZpc2hzZGsuY29tIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRGVGaVNjYW4iLHVybDoiaHR0cHM6Ly9tZXRhLmRlZmlzY2FuLmxpdmUifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNBMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYkUyYTE3Mzk3NkNBMTEiLGJsb2NrQ3JlYXRlZDoxMzc4NTJ9fX0pLFgxZT0kKHtpZDoxMTMxLG5ldHdvcms6ImRlZmljaGFpbi1ldm0tdGVzdG5ldCIsbmFtZToiRGVGaUNoYWluIEVWTSBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7bmFtZToiRGVGaUNoYWluIixzeW1ib2w6IkRGSSIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2V0aC50ZXN0bmV0Lm9jZWFuLmplbGx5ZmlzaHNkay5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJEZUZpU2NhbiIsdXJsOiJodHRwczovL21ldGEuZGVmaXNjYW4ubGl2ZS8/bmV0d29yaz1UZXN0TmV0In19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjQTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJFMmExNzM5NzZDQTExIixibG9ja0NyZWF0ZWQ6MTU2NDYyfX0sdGVzdG5ldDohMH0pLFExZT0kKHtpZDo2NjY2NjY2NjYsbmFtZToiRGVnZW4iLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJEZWdlbiIsc3ltYm9sOiJERUdFTiJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5kZWdlbi50aXBzIl0sd2ViU29ja2V0Olsid3NzOi8vcnBjLmRlZ2VuLnRpcHMiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJEZWdlbiBDaGFpbiBFeHBsb3JlciIsdXJsOiJodHRwczovL2V4cGxvcmVyLmRlZ2VuLnRpcHMiLGFwaVVybDoiaHR0cHM6Ly9leHBsb3Jlci5kZWdlbi50aXBzL2FwaS92MiJ9fX0pLGVnZT0kKHtpZDo1MzkzNSxuYW1lOiJERksgQ2hhaW4iLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJKZXdlbCIsc3ltYm9sOiJKRVdFTCJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3N1Ym5ldHMuYXZheC5uZXR3b3JrL2RlZmkta2luZ2RvbXMvZGZrLWNoYWluL3JwYyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkRGS1N1Ym5ldFNjYW4iLHVybDoiaHR0cHM6Ly9zdWJuZXRzLmF2YXgubmV0d29yay9kZWZpLWtpbmdkb21zIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6MTQ3OTA1NTF9fX0pLHRnZT0kKHtpZDoxNSxuYW1lOiJEaW9kZSBQcmVuZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJESU9ERSIsc3ltYm9sOiJESU9ERSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3ByZW5ldC5kaW9kZS5pbzo4NDQzIl0sd2ViU29ja2V0Olsid3NzOi8vcHJlbmV0LmRpb2RlLmlvOjg0NDMvd3MiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJEaW9kZSBFeHBsb3JlciIsdXJsOiJodHRwczovL2Rpb2RlLmlvL3ByZW5ldCJ9fSx0ZXN0bmV0OiExfSkscmdlPSQoe2lkOjUxMzEwMCxuYW1lOiJEaXNDaGFpbiIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkRJUyIsc3ltYm9sOiJESVMifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuZGlzY2hhaW4ueHl6Il19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRGlzQ2hhaW4gRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly93d3cub2tsaW5rLmNvbS9kaXMifX19KSxuZ2U9JCh7aWQ6NTM0NTcsbmFtZToiRE9ET2NoYWluIFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJET0RPIixzeW1ib2w6IkRPRE8ifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9kb2RvY2hhaW4tdGVzdG5ldC5hbHQudGVjaG5vbG9neSJdLHdlYlNvY2tldDpbIndzczovL2RvZG9jaGFpbi10ZXN0bmV0LmFsdC50ZWNobm9sb2d5L3dzIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRE9ET2NoYWluIFRlc3RuZXQgKFNlcG9saWEpIEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vdGVzdG5ldC1zY2FuLmRvZG9jaGFpbi5jb20ifX0sdGVzdG5ldDohMH0pLGlnZT0kKHtpZDoyZTMsbmFtZToiRG9nZWNoYWluIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiV3JhcHBlZCBEb2dlY29pbiIsc3ltYm9sOiJXRE9HRSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5kb2dlY2hhaW4uZG9nIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRG9nZUNoYWluRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci5kb2dlY2hhaW4uZG9nIixhcGlVcmw6Imh0dHBzOi8vZXhwbG9yZXIuZG9nZWNoYWluLmRvZy9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweDY4YTg2MDlhNjBhMDA4RUZBNjMzZGZkZWM1OTJjMDNCMDMwY0M1MDgiLGJsb2NrQ3JlYXRlZDoyNTM4NDAzMX19fSksc2dlPSQoe2lkOjQyMDI2LG5hbWU6IkRvbmF0dXoiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJFdGhlciIsc3ltYm9sOiJFVEgifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuZG9uYXR1ei5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJEb25hdHV6IEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZXhwbG9yZXIuZG9uYXR1ei5jb20ifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNhMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYmUyYTE3Mzk3NmNhMTEiLGJsb2NrQ3JlYXRlZDowfX19KSxvZ2U9JCh7aWQ6Nzk3OSxuYW1lOiJET1MgQ2hhaW4iLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJET1MgQ2hhaW4iLHN5bWJvbDoiRE9TIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vbWFpbi5kb3NjaGFpbi5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJET1MgQ2hhaW4gRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9kb3NjYW4uaW8iLGFwaVVybDoiaHR0cHM6Ly9hcGkuZG9zY2FuLmlvIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6MTYxOTA4fX19KSxhZ2U9JCh7aWQ6MzkzOSxuYW1lOiJET1MgQ2hhaW4gVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkRPUyBDaGFpbiBUZXN0bmV0IixzeW1ib2w6IkRPUyJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3Rlc3QuZG9zY2hhaW4uY29tIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRE9TIENoYWluIFRlc3RuZXQgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly90ZXN0LmRvc2Nhbi5pbyIsYXBpVXJsOiJodHRwczovL2FwaS10ZXN0LmRvc2Nhbi5pbyJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjY5NjIzfX0sdGVzdG5ldDohMH0pLGNnZT0kKHtpZDoyMzQ1MSxuYW1lOiJEcmV5ZXJYIE1haW5uZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJEcmV5ZXJYIixzeW1ib2w6IkRSWCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5kcmV5ZXJ4LmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkRyZXllclggU2NhbiIsdXJsOiJodHRwczovL3NjYW4uZHJleWVyeC5jb20ifX19KSxsZ2U9JCh7aWQ6MjM0NTIsbmFtZToiRHJleWVyWCBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7bmFtZToiRHJleWVyWCIsc3ltYm9sOiJEUlgiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cDovL3Rlc3RuZXQtcnBjLmRyZXllcnguY29tIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRHJleWVyWCBUZXN0bmV0IFNjYW4iLHVybDoiaHR0cHM6Ly90ZXN0bmV0LXNjYW4uZHJleWVyeC5jb20ifX0sdGVzdG5ldDohMH0pLHVnZT0kKHtpZDo1NTU4ODgsbmFtZToiRHVzdEJveSBJb1QiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJFdGhlciIsc3ltYm9sOiJEU1QiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9kdXN0Ym95LXJwYy5qaWJsMi5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJCbG9ja3Njb3V0Iix1cmw6Imh0dHBzOi8vZHVzdGJveS5qaWJsMi5jb20iLGFwaVVybDoiaHR0cHM6Ly9kdXN0Ym95LmppYmwyLmNvbS9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweEZGRDM0YWEyQzYyQjJENTJFMDBBMzYxZTQ2NkMyMjk3ODhmNGVENmEiLGJsb2NrQ3JlYXRlZDo1MjY1Njl9fSx0ZXN0bmV0OiExfSksZGdlPSQoe2lkOjExMDAsbmFtZToiRHltZW5zaW9uIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiRFlNIixzeW1ib2w6IkRZTSIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2R5bWVuc2lvbi1ldm0tcnBjLnB1YmxpY25vZGUuY29tIl0sd2ViU29ja2V0Olsid3NzOi8vZHltZW5zaW9uLWV2bS1ycGMucHVibGljbm9kZS5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJEeW0gRllJIix1cmw6Imh0dHBzOi8vZHltLmZ5aSJ9fSx0ZXN0bmV0OiExfSksaGdlPSQoe2lkOjE5OTUsbmFtZToiZWRlWGEgVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6ImVkZVhhIixzeW1ib2w6InRFRFgiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMudGVzdG5ldC5lZGV4YS5uZXR3b3JrIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiZWRlWGEgVGVzdG5ldCBFeHBsb3JlciIsdXJsOiJodHRwczovL2V4cGxvcmVyLnRlc3RuZXQuZWRleGEubmV0d29yayIsYXBpVXJsOiJodHRwczovL2V4cGxvcmVyLnRlc3RuZXQuZWRleGEubmV0d29yay9hcGkvdjIifX0sdGVzdG5ldDohMH0pLHBnZT0kKHtpZDo1NDI0LG5hbWU6ImVkZVhhIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiZWRlWGEiLHN5bWJvbDoiRURYIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLmVkZXhhLm5ldHdvcmsiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJlZGVYYSBFeHBsb3JlciIsdXJsOiJodHRwczovL2V4cGxvcmVyLmVkZXhhLm5ldHdvcmsiLGFwaVVybDoiaHR0cHM6Ly9leHBsb3Jlci5lZGV4YS5uZXR3b3JrL2FwaS92MiJ9fX0pLGZnZT0kKHtpZDoyMDI2LG5hbWU6IkVkZ2VsZXNzIE5ldHdvcmsiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJFZGdlbGVzcyBXcmFwcGVkIEVUSCIsc3ltYm9sOiJFd0VUSCIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5lZGdlbGVzcy5uZXR3b3JrL2h0dHAiXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly9ycGMuZWRnZWxlc3MubmV0d29yay93cyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkVkZ2VsZXNzIEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZXhwbG9yZXIuZWRnZWxlc3MubmV0d29yayJ9fX0pLG1nZT0kKHtpZDoyMDIsbmFtZToiRWRnZWxlc3MgVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkVkZ2VsZXNzIFdyYXBwZWQgRVRIIixzeW1ib2w6IkV3RVRIIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vZWRnZWxlc3MtdGVzdG5ldC5ycGMuY2FsZGVyYS54eXovaHR0cCJdLHdlYlNvY2tldDpbIndzczovL2VkZ2VsZXNzLXRlc3RuZXQucnBjLmNhbGRlcmEueHl6L3dzIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRWRnZWxlc3MgVGVzdG5ldCBFeHBsb3JlciIsdXJsOiJodHRwczovL3Rlc3RuZXQuZXhwbG9yZXIuZWRnZWxlc3MubmV0d29yayJ9fX0pLGdnZT0kKHtpZDoyMDIxLG5hbWU6IkVkZ2V3YXJlIEVkZ2VFVk0gTWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkVkZ2V3YXJlIixzeW1ib2w6IkVERyJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2VkZ2V3YXJlLWV2bS5qZWxsaWVkb3dsLm5ldCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkVkZ3NjYW4gYnkgQmhhcmF0aGNvb3JnIix1cmw6Imh0dHBzOi8vZWRnc2Nhbi5saXZlIixhcGlVcmw6Imh0dHBzOi8vZWRnc2Nhbi5saXZlL2FwaSJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjE4MTE3ODcyfX19KSx3Z2U9JCh7aWQ6MjAyMixuYW1lOiJCZXJlc2hlZXQgQmVyZUVWTSBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiVGVzdG5ldCBFREciLHN5bWJvbDoidEVERyJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2JlcmVzaGVldC1ldm0uamVsbGllZG93bC5uZXQiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJFZGdzY2FuIGJ5IEJoYXJhdGhjb29yZyIsdXJsOiJodHRwczovL3Rlc3RuZXQuZWRnc2Nhbi5saXZlIixhcGlVcmw6Imh0dHBzOi8vdGVzdG5ldC5lZGdzY2FuLmxpdmUvYXBpIn19fSksYmdlPSQoe2lkOjQxOTIzLG5hbWU6IkVEVSBDaGFpbiIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkVEVSIsc3ltYm9sOiJFRFUifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuZWR1LWNoYWluLnJhYXMuZ2VsYXRvLmNsb3VkIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRURVIENoYWluIEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZWR1Y2hhaW4uYmxvY2tzY291dC5jb20vIn19LHRlc3RuZXQ6ITF9KSx5Z2U9JCh7aWQ6NjU2NDc2LG5hbWU6IkVEVSBDaGFpbiBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRURVIixzeW1ib2w6IkVEVSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5vcGVuLWNhbXB1cy1jb2RleC5nZWxhdG8uZGlnaXRhbC8iXSx3ZWJTb2NrZXQ6WyJ3c3M6Ly93cy5vcGVuLWNhbXB1cy1jb2RleC5nZWxhdG8uZGlnaXRhbCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkVEVSBDaGFpbiBUZXN0bmV0IEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vb3BlbmNhbXB1cy1jb2RleC5ibG9ja3Njb3V0LmNvbSIsYXBpVXJsOiJodHRwczovL29wZW5jYW1wdXMtY29kZXguYmxvY2tzY291dC5jb20vYXBpIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjQTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJFMmExNzM5NzZDQTExIixibG9ja0NyZWF0ZWQ6MTU1MTQxMzN9fSx0ZXN0bmV0OiEwfSksdmdlPSQoe2lkOjE5OTQsbmFtZToiRWt0YSIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkVLVEEiLHN5bWJvbDoiRUtUQSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL21haW4uZWt0YS5pbyJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkVrdGFzY2FuIix1cmw6Imh0dHBzOi8vZWt0YXNjYW4uaW8iLGFwaVVybDoiaHR0cHM6Ly9la3Rhc2Nhbi5pby9hcGkifX19KSxFZ2U9JCh7aWQ6MTAwNCxuYW1lOiJFa3RhIFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJFS1RBIixzeW1ib2w6IkVLVEEifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly90ZXN0LmVrdGEuaW86ODU0NSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IlRlc3QgRWt0YXNjYW4iLHVybDoiaHR0cHM6Ly90ZXN0LmVrdGFzY2FuLmlvIixhcGlVcmw6Imh0dHBzOi8vdGVzdC5la3Rhc2Nhbi5pby9hcGkifX0sdGVzdG5ldDohMH0pLENnZT0kKHtpZDoyMCxuYW1lOiJFbGFzdG9zIFNtYXJ0IENoYWluIixuYXRpdmVDdXJyZW5jeTp7bmFtZToiRUxBIixzeW1ib2w6IkVMQSIsZGVjaW1hbHM6MTh9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2FwaTIuZWxhc3Rvcy5pby9ldGgiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJFbGFzdG9zIEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZXNjLmVsYXN0b3MuaW8ifX0sdGVzdG5ldDohMX0pLHhnZT0kKHtpZDoyMSxuYW1lOiJFbGFzdG9zIFNtYXJ0IENoYWluIFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJ0RUxBIixzeW1ib2w6InRFTEEiLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9hcGktdGVzdG5ldC5lbGFzdG9zLmlvL2V0aCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkVsYXN0b3MgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9lc2MtdGVzdG5ldC5lbGFzdG9zLmlvIn19LHRlc3RuZXQ6ITB9KSxfZ2U9JCh7aWQ6NTIwMTQsbmFtZToiRWxlY3Ryb25ldW0gTWFpbm5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkVUTiIsc3ltYm9sOiJFVE4iLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ycGMuZWxlY3Ryb25ldW0uY29tIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRWxlY3Ryb25ldW0gQmxvY2sgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9ibG9ja2V4cGxvcmVyLmVsZWN0cm9uZXVtLmNvbSJ9fSx0ZXN0bmV0OiExfSksa2dlPSQoe2lkOjUyMDE0MjAsbmFtZToiRWxlY3Ryb25ldW0gVGVzdG5ldCIsbmF0aXZlQ3VycmVuY3k6e25hbWU6IkVUTiIsc3ltYm9sOiJFVE4iLGRlY2ltYWxzOjE4fSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly90ZXN0bmV0LXJwYy5lbGVjdHJvbmV1bS5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJFbGVjdHJvbmV1bSBCbG9jayBFeHBsb3JlciIsdXJsOiJodHRwczovL2Jsb2NrZXhwbG9yZXIudGhlc2VjdXJpdHl0ZWFtLnJvY2tzIn19LHRlc3RuZXQ6ITB9KSxTZ2U9JCh7Li4uX2UsaWQ6MTMzOCxuYW1lOiJFbHlzaXVtIFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJMQVZBIixzeW1ib2w6IkxBVkEifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9lbHlzaXVtLXRlc3QtcnBjLnZ1bGNhbmZvcmdlZC5jb20iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJFbHlzaXVtIHRlc3RuZXQgZXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9lbHlzaXVtLWV4cGxvcmVyLnZ1bGNhbmZvcmdlZC5jb20ifX0sdGVzdG5ldDohMH0pLEFnZT0kKHtpZDoyNDYsbmFtZToiRW5lcmd5IE1haW5uZXQiLG5hdGl2ZUN1cnJlbmN5OntuYW1lOiJFV1QiLHN5bWJvbDoiRVdUIixkZWNpbWFsczoxOH0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vcnBjLmVuZXJneXdlYi5vcmciXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJFbmVyZ3lXZWIgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci5lbmVyZ3l3ZWIub3JnIn19LHRlc3RuZXQ6ITF9KSxUZ2U9JCh7aWQ6MTE5LG5hbWU6IkVOVUxTIE1haW5uZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJOVUxTIixzeW1ib2w6Ik5VTFMifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ldm1hcGkyLm51bHMuaW8iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJFTlVMUyBFeHBsb3JlciIsdXJsOiJodHRwczovL2V2bXNjYW4ubnVscy5pbyJ9fSx0ZXN0bmV0OiExfSksSWdlPSQoe2lkOjczMzIsbmFtZToiSG9yaXplbiBFT04iLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJaRU4iLHN5bWJvbDoiWkVOIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vZW9uLXJwYy5ob3JpemVubGFicy5pby9ldGh2MSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkVPTiBFeHBsb3JlciIsdXJsOiJodHRwczovL2Vvbi1leHBsb3Jlci5ob3JpemVubGFicy5pbyJ9fSxjb250cmFjdHM6e319KSxSZ2U9JCh7aWQ6MTc3NzcsbmFtZToiRU9TIEVWTSIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkVPUyIsc3ltYm9sOiJFT1MifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9hcGkuZXZtLmVvc25ldHdvcmsuY29tIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRU9TIEVWTSBFeHBsb3JlciIsdXJsOiJodHRwczovL2V4cGxvcmVyLmV2bS5lb3NuZXR3b3JrLmNvbSIsYXBpVXJsOiJodHRwczovL2V4cGxvcmVyLmV2bS5lb3NuZXR3b3JrLmNvbS9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNhMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYmUyYTE3Mzk3NmNhMTEiLGJsb2NrQ3JlYXRlZDo3OTQzOTMzfX19KSxOZ2U9JCh7aWQ6MTU1NTcsbmFtZToiRU9TIEVWTSBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRU9TIixzeW1ib2w6IkVPUyJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL2FwaS50ZXN0bmV0LmV2bS5lb3NuZXR3b3JrLmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkVPUyBFVk0gVGVzdG5ldCBFeHBsb3JlciIsdXJsOiJodHRwczovL2V4cGxvcmVyLnRlc3RuZXQuZXZtLmVvc25ldHdvcmsuY29tIixhcGlVcmw6Imh0dHBzOi8vZXhwbG9yZXIudGVzdG5ldC5ldm0uZW9zbmV0d29yay5jb20vYXBpIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjYTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJlMmExNzM5NzZjYTExIixibG9ja0NyZWF0ZWQ6OTA2Nzk0MH19LHRlc3RuZXQ6ITB9KSxQZ2U9JCh7aWQ6NDI3OTMsbmFtZToiRXRoZXJsaW5rIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiVGV6IixzeW1ib2w6IlhUWiJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL25vZGUubWFpbm5ldC5ldGhlcmxpbmsuY29tIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRXRoZXJsaW5rIix1cmw6Imh0dHBzOi8vZXhwbG9yZXIuZXRoZXJsaW5rLmNvbSJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y0ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiRTJhMTczOTc2Q0ExMSIsYmxvY2tDcmVhdGVkOjMzODk5fX19KSxPZ2U9JCh7aWQ6MTI4MTIzLG5hbWU6IkV0aGVybGluayBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiVGV6IixzeW1ib2w6IlhUWiJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL25vZGUuZ2hvc3RuZXQuZXRoZXJsaW5rLmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkV0aGVybGluayBUZXN0bmV0Iix1cmw6Imh0dHBzOi8vdGVzdG5ldC5leHBsb3Jlci5ldGhlcmxpbmsuY29tIn19LHRlc3RuZXQ6ITB9KSwkZ2U9JCh7aWQ6MTgzLG5hbWU6IkV0aGVybml0eSIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkV0aGVyIixzeW1ib2w6IkVUSCJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL21haW5uZXQuZXRoZXJuaXR5Y2hhaW4uaW8iXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJFdGhlcm5pdHkgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9lcm5zY2FuLmlvIn19LGNvbnRyYWN0czp7bXVsdGljYWxsMzp7YWRkcmVzczoiMHhjQTExYmRlMDU5NzdiMzYzMTE2NzAyODg2MmJFMmExNzM5NzZDQTExIixibG9ja0NyZWF0ZWQ6MH19LHRlc3RuZXQ6ITF9KSxNZ2U9JCh7aWQ6MjAyNTY3ODksbmFtZToiRVRQIE1haW5uZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJFVFAgQ2hhaW4gTmF0aXZlIFRva2VuIixzeW1ib2w6IkVUUCJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy5ldHBzY2FuLnh5eiJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkVUUCBTY2FuIix1cmw6Imh0dHBzOi8vZXRwc2Nhbi54eXoifX19KSxEZ2U9JCh7aWQ6OTAwMSxuYW1lOiJFdm1vcyIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkV2bW9zIixzeW1ib2w6IkVWTU9TIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vZXRoLmJkLmV2bW9zLm9yZzo4NTQ1Il19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRXZtb3MgQmxvY2sgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9lc2Nhbi5saXZlIn19fSksQmdlPSQoe2lkOjllMyxuYW1lOiJFdm1vcyBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRXZtb3MiLHN5bWJvbDoiRVZNT1MifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ldGguYmQuZXZtb3MuZGV2Ojg1NDUiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJFdm1vcyBUZXN0bmV0IEJsb2NrIEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZXZtLmV2bW9zLmRldi8ifX19KSxMZ2U9JCh7aWQ6MjIwNTIwMDIsbmFtZToiRXhjZWxvbiBNYWlubmV0IixuZXR3b3JrOiJYTE9OIixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRXhjZWxvbiIsc3ltYm9sOiJ4bG9uIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vZWRnZXdhbGxldDEueGxvbi5vcmciXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJFeGNlbG9uIGV4cGxvcmVyIix1cmw6Imh0dHBzOi8vZXhwbG9yZXIuZXhjZWxvbi5pbyJ9fX0pLFVnZT0kKHtpZDoyLG5hbWU6IkV4cGFuc2UgTmV0d29yayIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkVYUCIsc3ltYm9sOiJFWFAifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9ub2RlLmV4cGFuc2UudGVjaCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkV4cGFuc2UgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9leHBsb3Jlci5leHBhbnNlLnRlY2gifX0sdGVzdG5ldDohMX0pLEZnZT0kKHtpZDo3MjAwLG5hbWU6ImV4U2F0IE5ldHdvcmsiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJCVEMiLHN5bWJvbDoiQlRDIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vZXZtLmV4c2F0Lm5ldHdvcmsiXX19LGJsb2NrRXhwbG9yZXJzOntkZWZhdWx0OntuYW1lOiJleFNhdCBFeHBsb3JlciIsdXJsOiJodHRwczovL3NjYW4uZXhzYXQubmV0d29yayIsYXBpVXJsOiJodHRwczovL3NjYW4uZXhzYXQubmV0d29yay9hcGkifX19KSxqZ2U9JCh7aWQ6ODM5OTk5LG5hbWU6ImV4U2F0IFRlc3RuZXQiLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJCVEMiLHN5bWJvbDoiQlRDIn0scnBjVXJsczp7ZGVmYXVsdDp7aHR0cDpbImh0dHBzOi8vZXZtLXRzdDMuZXhzYXQubmV0d29yayJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6ImV4U2F0IEV4cGxvcmVyIix1cmw6Imh0dHBzOi8vc2Nhbi10ZXN0bmV0LmV4c2F0Lm5ldHdvcmsiLGFwaVVybDoiaHR0cHM6Ly9zY2FuLXRlc3RuZXQuZXhzYXQubmV0d29yay9hcGkifX19KSx6Z2U9JCh7aWQ6MjUwLG5hbWU6IkZhbnRvbSIsbmF0aXZlQ3VycmVuY3k6e2RlY2ltYWxzOjE4LG5hbWU6IkZhbnRvbSIsc3ltYm9sOiJGVE0ifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly8yNTAucnBjLnRoaXJkd2ViLmNvbSJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkZUTVNjYW4iLHVybDoiaHR0cHM6Ly9mdG1zY2FuLmNvbSIsYXBpVXJsOiJodHRwczovL2FwaS5mdG1zY2FuLmNvbS9hcGkifX0sY29udHJhY3RzOnttdWx0aWNhbGwzOnthZGRyZXNzOiIweGNhMTFiZGUwNTk3N2IzNjMxMTY3MDI4ODYyYmUyYTE3Mzk3NmNhMTEiLGJsb2NrQ3JlYXRlZDozMzAwMTk4N319fSksV2dlPSQoe2lkOjY0MjQwLG5hbWU6IkZhbnRvbSBTb25pYyBPcGVuIFRlc3RuZXQiLG5ldHdvcms6ImZhbnRvbS1zb25pYy10ZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRmFudG9tIixzeW1ib2w6IkZUTSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwY2FwaS5zb25pYy5mYW50b20ubmV0d29yayJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkZhbnRvbSBTb25pYyBPcGVuIFRlc3RuZXQgRXhwbG9yZXIiLHVybDoiaHR0cHM6Ly9wdWJsaWMtc29uaWMuZmFudG9tLm5ldHdvcmsifX0sdGVzdG5ldDohMH0pLEhnZT0kKHtpZDo0MDAyLG5hbWU6IkZhbnRvbSBUZXN0bmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFtZToiRmFudG9tIixzeW1ib2w6IkZUTSJ9LHJwY1VybHM6e2RlZmF1bHQ6e2h0dHA6WyJodHRwczovL3JwYy50ZXN0bmV0LmZhbnRvbS5uZXR3b3JrIl19fSxibG9ja0V4cGxvcmVyczp7ZGVmYXVsdDp7bmFtZToiRlRNU2NhbiIsdXJsOiJodHRwczovL3Rlc3RuZXQuZnRtc2Nhbi5jb20iLGFwaVVybDoiaHR0cHM6Ly90ZXN0bmV0LmZ0bXNjYW4uY29tL2FwaSJ9fSxjb250cmFjdHM6e211bHRpY2FsbDM6e2FkZHJlc3M6IjB4Y2ExMWJkZTA1OTc3YjM2MzExNjcwMjg4NjJiZTJhMTczOTc2Y2ExMSIsYmxvY2tDcmVhdGVkOjgzMjg2ODh9fSx0ZXN0bmV0OiEwfSkscWdlPSQoe2lkOjEyMzA2LG5hbWU6IkZpYm8gQ2hhaW4iLG5hdGl2ZUN1cnJlbmN5OntkZWNpbWFsczoxOCxuYW1lOiJmaWJvIixzeW1ib2w6IkZJQk8ifSxycGNVcmxzOntkZWZhdWx0OntodHRwOlsiaHR0cHM6Ly9uZXR3b3JrLmh6cm9jLmFydCJdfX0sYmxvY2tFeHBsb3JlcnM6e2RlZmF1bHQ6e25hbWU6IkZpYm9TY2FuIix1cmw6Imh0dHBzOi8vc2Nhbi5maWJvY2hhaW4ub3JnIn19fSksVmdlPSQoe2lkOjMxNCxuYW1lOiJGaWxlY29pbiBNYWlubmV0IixuYXRpdmVDdXJyZW5jeTp7ZGVjaW1hbHM6MTgsbmFt"}},"time_used":777,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":64,"receive":713,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null}],"urlquery":null}},{"url":{"schema":"http","addr":"sahnesirince.com/modals.js","fqdn":"sahnesirince.com","domain":"sahnesirince.com","tld":"com"},"ip":{"addr":"94.73.150.176","port":80,"asn":34619,"as":"Cizgi Telekomunikasyon Anonim Sirketi","country":"Türkiye","country_code":"TR"},"is_navigation_request":false,"resource_type":"script","requested_by":"http://sahnesirince.com/","date":"2026-07-27T00:57:56.607Z","timestamp":1785113876607,"http_version":"HTTP/1.1","security_state":"insecure","security_info":null,"request":{"raw":"GET /modals.js HTTP/1.1\r\nHost: sahnesirince.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: http://sahnesirince.com/\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nConnection: Keep-Alive\r\nKeep-Alive: timeout=5, max=100\r\nCache-Control: public, max-age=604800\r\nExpires: Mon, 03 Aug 2026 00:57:56 GMT\r\nContent-Type: application/javascript\r\nLast-Modified: Wed, 01 Oct 2025 05:48:45 GMT\r\nAccept-Ranges: bytes\r\nContent-Encoding: gzip\r\nVary: Accept-Encoding\r\nContent-Length: 7519\r\nDate: Mon, 27 Jul 2026 00:57:56 GMT\r\nServer: LiteSpeed\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":52833,"size_decoded":7904,"mime_type":"application/javascript","magic":"Unicode text, UTF-8 text, with very long lines (52831), with no line terminators","md5":"ecbc5043a1e25f2bd5bbd6e3c3be49f0","sha1":"d66eb695679871221c52958d94029c6358b7613d","sha256":"6d0c2c8d032982e9a86a1bed14f709911058b6b693abb5d46335a0106c12c411","sha512":"38b9aedf74859ade1e5445634b338f560c4d0520ab126de202ad98942bc0f34e740b93c7123a3bc53dcdded31944c174ad06bf1ca006e137cb4e06a949e86088","ssdeep":"768:ywjvL/eQ0ae2vBKRDpoKvTQv4n59+Y44U7kFlaoGHv5:ywz2n59J4inM5","tlshash":"943311071cbe31361daf0fa3b7cc1a1b4e2eb351e612aaee71bd1446438bd74c5a5618","first_seen":"2025-07-20T10:23:41.460008Z","last_seen":"2026-07-27T00:59:02.776062Z","times_seen":745,"resource_available":true,"data":"ZnVuY3Rpb24gaW5qZWN0UG9wdXAoKXtjb25zdCBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO28uaWQ9ImN1c3RvbS1tb2RhbC1jb250YWluZXIiLG8uc3R5bGUucG9zaXRpb249ImZpeGVkIixvLnN0eWxlLmluc2V0PSIwIixvLnN0eWxlLnpJbmRleD0iOTk5OTk5IixvLnN0eWxlLmRpc3BsYXk9Im5vbmUiLG8uc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvKTtjb25zdCB0PW8uYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIn0pLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTthLnRleHRDb250ZW50PSJcbiAgICAud2ViYy1wb3B1cC1yb290IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLW92ZXJsYXktcG9zdGZpeCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuICAgICAgICAvKiBGb250IGltcG9ydHMgKGdsb2JhbCBidXQgaXNvbGF0ZWQgaW4gdXNhZ2UpICovXG4gICAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgICBmb250LXdlaWdodDogMTAwIDkwMDtcbiAgICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgICAgICAgc3JjOiB1cltdKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MTkvVWNDbTNGd3JLM2lMVGN2blV3a1Q5bkEyLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICAgICAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7XG4gICAgICAgIH1cbiAgICAgICAgLyogY3lyaWxsaWMgKi9cbiAgICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICAgICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICAgICAgICBzcmM6IHVyW10oaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YxOS9VY0NtM0Z3ckszaUxUY3ZuVXdBVDluQTIud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgICAgICAgICB1bmljb2RlLXJhbmdlOiBVKzAzMDEsIFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcbiAgICAgICAgfVxuICAgICAgICAvKiBncmVlay1leHQgKi9cbiAgICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICAgICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICAgICAgICBzcmM6IHVyW10oaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YxOS9VY0NtM0Z3ckszaUxUY3ZuVXdnVDluQTIud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgICAgICAgICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjtcbiAgICAgICAgfVxuICAgICAgICAvKiBncmVlayAqL1xuICAgICAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgICBmb250LWZhbWlseTogJ0ludGVyJztcbiAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gICAgICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgICAgICAgIHNyYzogdXJbXShodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjE5L1VjQ20zRndySzNpTFRjdm5Vd2NUOW5BMi53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGO1xuICAgICAgICB9XG4gICAgICAgIC8qIHZpZXRuYW1lc2UgKi9cbiAgICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICAgICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICAgICAgICBzcmM6IHVyW10oaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YxOS9VY0NtM0Z3ckszaUxUY3ZuVXdzVDluQTIud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgICAgICAgICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbiAgICAgICAgfVxuICAgICAgICAvKiBsYXRpbi1leHQgKi9cbiAgICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICAgICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICAgICAgICBzcmM6IHVyW10oaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YxOS9VY0NtM0Z3ckszaUxUY3ZuVXdvVDluQTIud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgICAgICAgICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcbiAgICAgICAgfVxuICAgICAgICAvKiBsYXRpbiAqL1xuICAgICAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgICBmb250LWZhbWlseTogJ0ludGVyJztcbiAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7XG4gICAgICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgICAgICAgIHNyYzogdXJbXShodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaW50ZXIvdjE5L1VjQ20zRndySzNpTFRjdm5Vd1FUOWcud29mZjIpIGZvcm1hdCgnd29mZjInKTtcbiAgICAgICAgICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDtcbiAgICAgICAgfVxuICAgICAgICAvKiBjeXJpbGxpYy1leHQgKi9cbiAgICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICAgICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICAgICAgICBzcmM6IHVyW10oaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YxOS9VY0NvM0Z3ckszaUxUY3Z2WXdZTDhnLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICAgICAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzhBLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7XG4gICAgICAgIH1cbiAgICAgICAgLyogY3lyaWxsaWMgKi9cbiAgICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICAgICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICAgICAgICBzcmM6IHVyW10oaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YxOS9VY0NvM0Z3ckszaUxUY3ZtWXdZTDhnLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICAgICAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XG4gICAgICAgIH1cbiAgICAgICAgLyogZ3JlZWstZXh0ICovXG4gICAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXdlaWdodDogMTAwIDkwMDtcbiAgICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgICAgICAgc3JjOiB1cltdKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MTkvVWNDbzNGd3JLM2lMVGN2dVl3WUw4Zy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgICAgIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xuICAgICAgICB9XG4gICAgICAgIC8qIGdyZWVrICovXG4gICAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXdlaWdodDogMTAwIDkwMDtcbiAgICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgICAgICAgc3JjOiB1cltdKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MTkvVWNDbzNGd3JLM2lMVGN2aFl3WUw4Zy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wMzc3LCBVKzAzN0EtMDM3RiwgVSswMzg0LTAzOEEsIFUrMDM4QywgVSswMzhFLTAzQTEsIFUrMDNBMy0wM0ZGO1xuICAgICAgICB9XG4gICAgICAgIC8qIHZpZXRuYW1lc2UgKi9cbiAgICAgICAgQGZvbnQtZmFjZSB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcic7XG4gICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAgOTAwO1xuICAgICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICAgICAgICBzcmM6IHVyW10oaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2ludGVyL3YxOS9VY0NvM0Z3ckszaUxUY3Z0WXdZTDhnLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICAgICAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzAxMjgtMDEyOSwgVSswMTY4LTAxNjksIFUrMDFBMC0wMUExLCBVKzAxQUYtMDFCMCwgVSswMzAwLTAzMDEsIFUrMDMwMy0wMzA0LCBVKzAzMDgtMDMwOSwgVSswMzIzLCBVKzAzMjksIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG4gICAgICAgIH1cbiAgICAgICAgLyogbGF0aW4tZXh0ICovXG4gICAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXdlaWdodDogMTAwIDkwMDtcbiAgICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgICAgICAgc3JjOiB1cltdKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MTkvVWNDbzNGd3JLM2lMVGN2c1l3WUw4Zy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xuICAgICAgICB9XG4gICAgICAgIC8qIGxhdGluICovXG4gICAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInO1xuICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXdlaWdodDogMTAwIDkwMDtcbiAgICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgICAgICAgc3JjOiB1cltdKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9pbnRlci92MTkvVWNDbzNGd3JLM2lMVGN2aVl3WS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogdmlldG5hbWVzZSAqL1xuICAgICAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgICBmb250LWZhbWlseTogJ1ZUMzIzJztcbiAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgICAgICAgc3JjOiB1cltdKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy92dDMyMy92MTcvcHhpS3lwMGloSUVGMmlzUUZKWEdkZy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xuICAgICAgICB9XG4gICAgICAgIC8qIGxhdGluLWV4dCAqL1xuICAgICAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgICBmb250LWZhbWlseTogJ1ZUMzIzJztcbiAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgICAgICAgc3JjOiB1cltdKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy92dDMyMy92MTcvcHhpS3lwMGloSUVGMmlzUkZKWEdkZy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xuICAgICAgICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xuICAgICAgICB9XG4gICAgICAgIC8qIGxhdGluICovXG4gICAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiAnVlQzMjMnO1xuICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICAgICAgICBzcmM6IHVyW10oaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3Z0MzIzL3YxNy9weGlLeXAwaWhJRUYyaXNmRkpVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgICAgICAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzIwMDAtMjA2RiwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBTY29wZWQgY29udGFpbmVyIHJvb3QgKG5vIGdsb2JhbCByZXNldHMpICovXG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3Qge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcicsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICAtLXR3Mi1ib3JkZXItc3BhY2luZy14OiAwO1xuICAgICAgICAgICAgLS10dzItYm9yZGVyLXNwYWNpbmcteTogMDtcbiAgICAgICAgICAgIC0tdHcyLXRyYW5zbGF0ZS14OiAwO1xuICAgICAgICAgICAgLS10dzItdHJhbnNsYXRlLXk6IDA7XG4gICAgICAgICAgICAtLXR3Mi1yb3RhdGU6IDA7XG4gICAgICAgICAgICAtLXR3Mi1za2V3LXg6IDA7XG4gICAgICAgICAgICAtLXR3Mi1za2V3LXk6IDA7XG4gICAgICAgICAgICAtLXR3Mi1zY2FsZS14OiAxO1xuICAgICAgICAgICAgLS10dzItc2NhbGUteTogMTtcbiAgICAgICAgICAgIC0tdHcyLXBhbi14OiA7XG4gICAgICAgICAgICAtLXR3Mi1wYW4teTogO1xuICAgICAgICAgICAgLS10dzItcGluY2gtem9vbTogO1xuICAgICAgICAgICAgLS10dzItc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczogcHJveGltaXR5O1xuICAgICAgICAgICAgLS10dzItZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogO1xuICAgICAgICAgICAgLS10dzItZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiA7XG4gICAgICAgICAgICAtLXR3Mi1ncmFkaWVudC10by1wb3NpdGlvbjogO1xuICAgICAgICAgICAgLS10dzItb3JkaW5hbDogO1xuICAgICAgICAgICAgLS10dzItc2xhc2hlZC16ZXJvOiA7XG4gICAgICAgICAgICAtLXR3Mi1udW1lcmljLWZpZ3VyZTogO1xuICAgICAgICAgICAgLS10dzItbnVtZXJpYy1zcGFjaW5nOiA7XG4gICAgICAgICAgICAtLXR3Mi1udW1lcmljLWZyYWN0aW9uOiA7XG4gICAgICAgICAgICAtLXR3Mi1yaW5nLWluc2V0OiA7XG4gICAgICAgICAgICAtLXR3Mi1yaW5nLW9mZnNldC13aWR0aDogMHB4O1xuICAgICAgICAgICAgLS10dzItcmluZy1vZmZzZXQtY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAtLXR3Mi1yaW5nLWNvbG9yOiByZ2JhKDU5LCAxMzAsIDI0NiwgLjUpO1xuICAgICAgICAgICAgLS10dzItcmluZy1vZmZzZXQtc2hhZG93OiAwIDAgIzAwMDA7XG4gICAgICAgICAgICAtLXR3Mi1yaW5nLXNoYWRvdzogMCAwICMwMDAwO1xuICAgICAgICAgICAgLS10dzItc2hhZG93OiAwIDAgIzAwMDA7XG4gICAgICAgICAgICAtLXR3Mi1zaGFkb3ctY29sb3JlZDogMCAwICMwMDAwO1xuICAgICAgICAgICAgLS10dzItYmx1cjogO1xuICAgICAgICAgICAgLS10dzItYnJpZ2h0bmVzczogO1xuICAgICAgICAgICAgLS10dzItY29udHJhc3Q6IDtcbiAgICAgICAgICAgIC0tdHcyLWdyYXlzY2FsZTogO1xuICAgICAgICAgICAgLS10dzItaHVlLXJvdGF0ZTogO1xuICAgICAgICAgICAgLS10dzItaW52ZXJ0OiA7XG4gICAgICAgICAgICAtLXR3Mi1zYXR1cmF0ZTogO1xuICAgICAgICAgICAgLS10dzItc2VwaWE6IDtcbiAgICAgICAgICAgIC0tdHcyLWRyb3Atc2hhZG93OiA7XG4gICAgICAgICAgICAtLXR3Mi1iYWNrZHJvcC1ibHVyOiA7XG4gICAgICAgICAgICAtLXR3Mi1iYWNrZHJvcC1icmlnaHRuZXNzOiA7XG4gICAgICAgICAgICAtLXR3Mi1iYWNrZHJvcC1jb250cmFzdDogO1xuICAgICAgICAgICAgLS10dzItYmFja2Ryb3AtZ3JheXNjYWxlOiA7XG4gICAgICAgICAgICAtLXR3Mi1iYWNrZHJvcC1odWUtcm90YXRlOiA7XG4gICAgICAgICAgICAtLXR3Mi1iYWNrZHJvcC1pbnZlcnQ6IDtcbiAgICAgICAgICAgIC0tdHcyLWJhY2tkcm9wLW9wYWNpdHk6IDtcbiAgICAgICAgICAgIC0tdHcyLWJhY2tkcm9wLXNhdHVyYXRlOiA7XG4gICAgICAgICAgICAtLXR3Mi1iYWNrZHJvcC1zZXBpYTogO1xuICAgICAgICAgICAgLS10dzItY29udGFpbi1zaXplOiA7XG4gICAgICAgICAgICAtLXR3Mi1jb250YWluLWxheW91dDogO1xuICAgICAgICAgICAgLS10dzItY29udGFpbi1wYWludDogO1xuICAgICAgICAgICAgLS10dzItY29udGFpbi1zdHlsZTogO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogU2NvcGUgQUxMIHNlbGVjdG9ycyB0byAud2ViYy1wb3B1cC1yb290ICovXG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtcG9pbnRlci1ldmVudHMtbm9uZSB7IHBvaW50ZXItZXZlbnRzOiBub25lOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtZml4ZWQgeyBwb3NpdGlvbjogZml4ZWQ7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1hYnNvbHV0ZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXJlbGF0aXZlIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtaW5zZXQtMCB7IGluc2V0OiAwcHg7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1yaWdodC00IHsgcmlnaHQ6IDFyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My10b3AtNCB7IHRvcDogMXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXotOTk5OCB7IHotaW5kZXg6IDk5OTg7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My16LTk5OTkgeyB6LWluZGV4OiA5OTk5OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtbS0xIHsgbWFyZ2luOiAwLjI1cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtbWItMSB7IG1hcmdpbi1ib3R0b206IDAuMjVyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1tYi0yIHsgbWFyZ2luLWJvdHRvbTogMC41cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtbWItMyB7IG1hcmdpbi1ib3R0b206IDAuNzVyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1tYi00IHsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLW1iLTUgeyBtYXJnaW4tYm90dG9tOiAxLjI1cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtbWItNiB7IG1hcmdpbi1ib3R0b206IDEuNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLW10LTIwIHsgbWFyZ2luLXRvcDogNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWZsZXggeyBkaXNwbGF5OiBmbGV4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtZ3JpZCB7IGRpc3BsYXk6IGdyaWQ7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtaC0xIHsgaGVpZ2h0OiAwLjI1cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtaC0xMiB7IGhlaWdodDogMTJweDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWgtMjAgeyBoZWlnaHQ6IDVyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1oLTI0IHsgaGVpZ2h0OiA2cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtaC0zIHsgaGVpZ2h0OiAwLjc1cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtaC0zMiB7IGhlaWdodDogMzJweDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWgtNCB7IGhlaWdodDogMXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWgtNDggeyBoZWlnaHQ6IDQ4cHg7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1oLTUgeyBoZWlnaHQ6IDEuMjVyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1oLTYgeyBoZWlnaHQ6IDEuNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWgtOCB7IGhlaWdodDogMnJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWgtODAgeyBoZWlnaHQ6IDgwcHg7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1taW4taC00MDAgeyBtaW4taGVpZ2h0OiA0MDBweDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXctMTAgeyB3aWR0aDogMi41cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdy0xMiB7IHdpZHRoOiAxMnB4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdy0xNiB7IHdpZHRoOiAxNnB4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdy0yIHsgd2lkdGg6IDAuNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXctMjAgeyB3aWR0aDogNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXctMjQgeyB3aWR0aDogNnJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXctMyB7IHdpZHRoOiAwLjc1cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdy0zMiB7IHdpZHRoOiAzMnB4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdy00IHsgd2lkdGg6IDFyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My13LTQ4IHsgd2lkdGg6IDQ4cHg7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My13LTUgeyB3aWR0aDogMS4yNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXctNiB7IHdpZHRoOiAxLjVyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My13LTggeyB3aWR0aDogMnJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXctODAgeyB3aWR0aDogODBweDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXctZnVsbCB7IHdpZHRoOiAxMDAlOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdy1taW4geyB3aWR0aDogbWluLWNvbnRlbnQ7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1tYXgtdy0zNjAgeyBtYXgtd2lkdGg6IDM2MHB4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtc2VsZWN0LW5vbmUgeyB1c2VyLXNlbGVjdDogbm9uZTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWl0ZW1zLWNlbnRlciB7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1qdXN0aWZ5LXN0YXJ0IHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtanVzdGlmeS1lbmQgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtanVzdGlmeS1jZW50ZXIgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWp1c3RpZnktYmV0d2VlbiB7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWdhcC14LTEgeyBjb2x1bW4tZ2FwOiAwLjI1cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtZ2FwLXgtMiB7IGNvbHVtbi1nYXA6IDAuNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWdhcC14LTQgeyBjb2x1bW4tZ2FwOiAxcmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtZ2FwLXktMSB7IHJvdy1nYXA6IDAuMjVyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1nYXAteS0yIHsgcm93LWdhcDogMC41cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtZ2FwLXktMyB7IHJvdy1nYXA6IDAuNzVyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1nYXAteS00IHsgcm93LWdhcDogMXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLW92ZXJmbG93LWhpZGRlbiB7IG92ZXJmbG93OiBoaWRkZW47IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1yb3VuZGVkLTI4IHsgYm9yZGVyLXJhZGl1czogMjhweDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXJvdW5kZWQtMnhsIHsgYm9yZGVyLXJhZGl1czogMXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXJvdW5kZWQtMzggeyBib3JkZXItcmFkaXVzOiAzOHB4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtcm91bmRlZC1mdWxsIHsgYm9yZGVyLXJhZGl1czogOTk5OXB4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtcm91bmRlZC1sZyB7IGJvcmRlci1yYWRpdXM6IDAuNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXJvdW5kZWQtYi0xNiB7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxNnB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAxNnB4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtcm91bmRlZC10LTE2IHsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTZweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDE2cHg7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1ib3JkZXIgeyBib3JkZXItd2lkdGg6IDFweDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWJvcmRlci1jdXN0b20tMGE5MGYwIHsgLS10dzItYm9yZGVyLW9wYWNpdHk6IDE7IGJvcmRlci1jb2xvcjogcmdiKDEwIDE0NCAyNDAvdmFyKC0tdHcyLWJvcmRlci1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1ib3JkZXItY3VzdG9tLWFkYWRhZCB7IC0tdHcyLWJvcmRlci1vcGFjaXR5OiAxOyBib3JkZXItY29sb3I6IHJnYigxNzMgMTczIDE3My92YXIoLS10dzItYm9yZGVyLW9wYWNpdHksIDEpKTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWJvcmRlci1jdXN0b20tZGRkZGRkIHsgLS10dzItYm9yZGVyLW9wYWNpdHk6IDE7IGJvcmRlci1jb2xvcjogcmdiKDIyMSAyMjEgMjIxL3ZhcigtLXR3Mi1ib3JkZXItb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctYmxhY2sgeyAtLXR3Mi1iZy1vcGFjaXR5OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCAwIDAvdmFyKC0tdHcyLWJnLW9wYWNpdHksIDEpKTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWJnLWN1c3RvbS0wMDAwMDMgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDEpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctY3VzdG9tLTAwMDAwNSB7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wMik7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1iZy1jdXN0b20tMDU3N2M5MjkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDUsIDExOSwgMjAxLCAwLjE2KTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWJnLWN1c3RvbS0wYTkwZjAgeyAtLXR3Mi1iZy1vcGFjaXR5OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTAgMTQ0IDI0MC92YXIoLS10dzItYmctb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctY3VzdG9tLTE0MTQxNCB7IC0tdHcyLWJnLW9wYWNpdHk6IDE7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMCAyMCAyMC92YXIoLS10dzItYmctb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctY3VzdG9tLTc5ODY4NiB7IC0tdHcyLWJnLW9wYWNpdHk6IDE7IGJhY2tncm91bmQtY29sb3I6IHJnYigxMjEgMTM0IDEzNC92YXIoLS10dzItYmctb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctY3VzdG9tLWQ1ZDVkNSB7IC0tdHcyLWJnLW9wYWNpdHk6IDE7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMTMgMjEzIDIxMy92YXIoLS10dzItYmctb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctY3VzdG9tLWYyZjRmNiB7IC0tdHcyLWJnLW9wYWNpdHk6IDE7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDIgMjQ0IDI0Ni92YXIoLS10dzItYmctb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctY3VzdG9tLWYzZjNmMyB7IC0tdHcyLWJnLW9wYWNpdHk6IDE7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDMgMjQzIDI0My92YXIoLS10dzItYmctb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctY3VzdG9tLWZiZTllOCB7IC0tdHcyLWJnLW9wYWNpdHk6IDE7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTEgMjMzIDIzMi92YXIoLS10dzItYmctb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctY3VzdG9tLWZmNTA1MCB7IC0tdHcyLWJnLW9wYWNpdHk6IDE7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUgODAgODAvdmFyKC0tdHcyLWJnLW9wYWNpdHksIDEpKTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWJnLWN1c3RvbS1mZjdjN2MgeyAtLXR3Mi1iZy1vcGFjaXR5OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1IDEyNCAxMjQvdmFyKC0tdHcyLWJnLW9wYWNpdHksIDEpKTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWJnLWdyYXktODAwIHsgLS10dzItYmctb3BhY2l0eTogMTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDMxIDQxIDU1L3ZhcigtLXR3Mi1iZy1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1iZy10cmFuc3BhcmVudCB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctd2hpdGUgeyAtLXR3Mi1iZy1vcGFjaXR5OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdHcyLWJnLW9wYWNpdHksIDEpKTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWJnLW9wYWNpdHktNTAgeyAtLXR3Mi1iZy1vcGFjaXR5OiAwLjU7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1iZy1ncmFkaWVudC1jdXN0b20tMSB7IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiKDEzMywgMTY4LCAxOTkpLCByZ2IoNTIsIDk2LCAxMzYpKTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWJnLWdyYWRpZW50LWN1c3RvbS0yIHsgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2IoMTM1LCAyMzIsIDEyMCksIHJnYig1NiwgMTYzLCAzOSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctZ3JhZGllbnQtY3VzdG9tLTMgeyBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYigxNTgsIDI1MCwgMTIxKSwgcmdiKDgwLCAxOTcsIDM0KSk7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1iZy1ncmFkaWVudC1jdXN0b20tNCB7IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiKDE3MCwgMjU0LCAyNTUpLCByZ2IoMjIsIDE5MiwgMTk0KSk7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1iZy1ncmFkaWVudC1jdXN0b20tNSB7IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiKDE5MywgMTgyLCAyNTUpLCByZ2IoODksIDY1LCAyMjcpKTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWJnLWdyYWRpZW50LWN1c3RvbS02IHsgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2IoMjE1LCAyNTUsIDg1KSwgcmdiKDE0MSwgMTc5LCAxOCkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtYmctZ3JhZGllbnQtY3VzdG9tLTcgeyBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYigyNTUsIDE2NywgMjM1KSwgcmdiKDE5NCwgNTUsIDE2MykpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtcC0xIHsgcGFkZGluZzogMC4yNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXAtMiB7IHBhZGRpbmc6IDAuNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXAtNCB7IHBhZGRpbmc6IDFyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1wLTcgeyBwYWRkaW5nOiA3cHg7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1weC0xOCB7IHBhZGRpbmctbGVmdDogMThweDsgcGFkZGluZy1yaWdodDogMThweDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXB4LTIgeyBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsgcGFkZGluZy1yaWdodDogMC41cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtcHgtMyB7IHBhZGRpbmctbGVmdDogMC43NXJlbTsgcGFkZGluZy1yaWdodDogMC43NXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXB4LTQgeyBwYWRkaW5nLWxlZnQ6IDFyZW07IHBhZGRpbmctcmlnaHQ6IDFyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1weS0xIHsgcGFkZGluZy10b3A6IDAuMjVyZW07IHBhZGRpbmctYm90dG9tOiAwLjI1cmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtcHktMTYgeyBwYWRkaW5nLXRvcDogMTZweDsgcGFkZGluZy1ib3R0b206IDE2cHg7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1weS0yIHsgcGFkZGluZy10b3A6IDAuNXJlbTsgcGFkZGluZy1ib3R0b206IDAuNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXB5LTQgeyBwYWRkaW5nLXRvcDogMXJlbTsgcGFkZGluZy1ib3R0b206IDFyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1wYi0zIHsgcGFkZGluZy1ib3R0b206IDAuNzVyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1wYi00IHsgcGFkZGluZy1ib3R0b206IDFyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1wdC0xIHsgcGFkZGluZy10b3A6IDAuMjVyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1wdC00IHsgcGFkZGluZy10b3A6IDFyZW07IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My10ZXh0LWNlbnRlciB7IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXRleHQtMTMgeyBmb250LXNpemU6IDEzcHg7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My10ZXh0LTE4IHsgZm9udC1zaXplOiAxOHB4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdGV4dC0yMCB7IGZvbnQtc2l6ZTogMjBweDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXRleHQtYmFzZSB7IGZvbnQtc2l6ZTogMXJlbTsgbGluZS1oZWlnaHQ6IDEuNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXRleHQtc20geyBmb250LXNpemU6IDAuODc1cmVtOyBsaW5lLWhlaWdodDogMS4yNXJlbTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXRleHQteHMgeyBmb250LXNpemU6IDAuNzVyZW07IGxpbmUtaGVpZ2h0OiAxcmVtOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtZm9udC1ib2xkIHsgZm9udC13ZWlnaHQ6IDcwMDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWZvbnQtbWVkaXVtIHsgZm9udC13ZWlnaHQ6IDUwMDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWZvbnQtbm9ybWFsIHsgZm9udC13ZWlnaHQ6IDQwMDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWZvbnQtc2VtaWJvbGQgeyBmb250LXdlaWdodDogNjAwOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdXBwZXJjYXNlIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXRleHQtY3VzdG9tLTBhOTBmMCB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigxMCAxNDQgMjQwL3ZhcigtLXR3Mi10ZXh0LW9wYWNpdHksIDEpKTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXRleHQtY3VzdG9tLTE0MTQxNCB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigyMCAyMCAyMC92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My10ZXh0LWN1c3RvbS01NTU1NTUgeyAtLXR3Mi10ZXh0LW9wYWNpdHk6IDE7IGNvbG9yOiByZ2IoODUgODUgODUvdmFyKC0tdHcyLXRleHQtb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdGV4dC1jdXN0b20tNmE3MzdkIHsgLS10dzItdGV4dC1vcGFjaXR5OiAxOyBjb2xvcjogcmdiKDEwNiAxMTUgMTI1L3ZhcigtLXR3Mi10ZXh0LW9wYWNpdHksIDEpKTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXRleHQtY3VzdG9tLTc5ODY4NiB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigxMjEgMTM0IDEzNC92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My10ZXh0LWN1c3RvbS03YzdjN2MgeyAtLXR3Mi10ZXh0LW9wYWNpdHk6IDE7IGNvbG9yOiByZ2IoMTI0IDEyNCAxMjQvdmFyKC0tdHcyLXRleHQtb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdGV4dC1jdXN0b20tYWRhZGFkIHsgLS10dzItdGV4dC1vcGFjaXR5OiAxOyBjb2xvcjogcmdiKDE3MyAxNzMgMTczL3ZhcigtLXR3Mi10ZXh0LW9wYWNpdHksIDEpKTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLXRleHQtY3VzdG9tLWU0ZTdlNyB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigyMjggMjMxIDIzMS92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My10ZXh0LWN1c3RvbS1mNWY1ZjUgeyAtLXR3Mi10ZXh0LW9wYWNpdHk6IDE7IGNvbG9yOiByZ2IoMjQ1IDI0NSAyNDUvdmFyKC0tdHcyLXRleHQtb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdGV4dC13aGl0ZSB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigyNTUgMjU1IDI1NS92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWx2My1vcGFjaXR5LTAgeyBvcGFjaXR5OiAwOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsdjMtdHJhbnNpdGlvbi1hbGwgeyB0cmFuc2l0aW9uLXByb3BlcnR5OiBhbGw7IHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE1czsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbHYzLWR1cmF0aW9uLTMwMCB7IHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAuaG92ZXJcXDptb2RhbHYzLWJnLWN1c3RvbS0wMDAwMDAwZDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLWJnLWN1c3RvbS0xOTFhMWEgeyAtLXR3Mi1iZy1vcGFjaXR5OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjUgMjYgMjYvdmFyKC0tdHcyLWJnLW9wYWNpdHksIDEpKTsgfVxuICAgICAgICA6d2hlcmUoW2RhdGEtdGhlbWUtY3VzdG9tPVwiZGFya1wiXSkgLndlYmMtcG9wdXAtcm9vdCAubW9kYWwtZGFya1xcOm1vZGFsdjMtYmctY3VzdG9tLTFlMWUxZSB7IC0tdHcyLWJnLW9wYWNpdHk6IDE7IGJhY2tncm91bmQtY29sb3I6IHJnYigzMCAzMCAzMC92YXIoLS10dzItYmctb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIDp3aGVyZShbZGF0YS10aGVtZS1jdXN0b209XCJkYXJrXCJdKSAud2ViYy1wb3B1cC1yb290IC5tb2RhbC1kYXJrXFw6bW9kYWx2My1iZy1jdXN0b20tMjQyNDI0IHsgLS10dzItYmctb3BhY2l0eTogMTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDM2IDM2IDM2L3ZhcigtLXR3Mi1iZy1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLWJnLWN1c3RvbS1kZDRiNGIgeyAtLXR3Mi1iZy1vcGFjaXR5OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjIxIDc1IDc1L3ZhcigtLXR3Mi1iZy1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLWJnLWN1c3RvbS1lNGU3ZTcgeyAtLXR3Mi1iZy1vcGFjaXR5OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjI4IDIzMSAyMzEvdmFyKC0tdHcyLWJnLW9wYWNpdHksIDEpKTsgfVxuICAgICAgICA6d2hlcmUoW2RhdGEtdGhlbWUtY3VzdG9tPVwiZGFya1wiXSkgLndlYmMtcG9wdXAtcm9vdCAubW9kYWwtZGFya1xcOm1vZGFsdjMtYmctY3VzdG9tLWYzZjNmMyB7IC0tdHcyLWJnLW9wYWNpdHk6IDE7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDMgMjQzIDI0My92YXIoLS10dzItYmctb3BhY2l0eSwgMSkpOyB9XG4gICAgICAgIDp3aGVyZShbZGF0YS10aGVtZS1jdXN0b209XCJkYXJrXCJdKSAud2ViYy1wb3B1cC1yb290IC5tb2RhbC1kYXJrXFw6bW9kYWx2My1iZy1jdXN0b20tZmY2OTY5IHsgLS10dzItYmctb3BhY2l0eTogMTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSAxMDUgMTA1L3ZhcigtLXR3Mi1iZy1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLWJnLWN1c3RvbS1mZmFiYTcyNiB7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAxNzEsIDE2NywgMC4xNSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLWJnLWN1c3RvbS1mZmZmZmYwNSB7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMik7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLXRleHQtY3VzdG9tLTE0MTQxNCB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigyMCAyMCAyMC92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLXRleHQtY3VzdG9tLTIyMjMyMyB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigzNCAzNSAzNS92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLXRleHQtY3VzdG9tLTk0OWU5ZSB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigxNDggMTU4IDE1OC92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLXRleHQtY3VzdG9tLWIzYjNiMyB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigxNzkgMTc5IDE3OS92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLXRleHQtY3VzdG9tLWI2YjZiNiB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigxODIgMTgyIDE4Mi92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLXRleHQtY3VzdG9tLWJiYzBjNSB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigxODcgMTkyIDE5Ny92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLXRleHQtY3VzdG9tLWUxZTFlMSB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigyMjUgMjI1IDIyNS92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDptb2RhbHYzLXRleHQtY3VzdG9tLWU0ZTdlNyB7IC0tdHcyLXRleHQtb3BhY2l0eTogMTsgY29sb3I6IHJnYigyMjggMjMxIDIzMS92YXIoLS10dzItdGV4dC1vcGFjaXR5LCAxKSk7IH1cbiAgICAgICAgOndoZXJlKFtkYXRhLXRoZW1lLWN1c3RvbT1cImRhcmtcIl0pIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLWRhcmtcXDpob3ZlclxcOm1vZGFsdjMtYmctY3VzdG9tLWZmZmZmZjBkOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5mb250LWludGVyLXBvc3RmaXggeyBmb250LWZhbWlseTogSW50ZXIsIFwiU2Vnb2UgVUlcIiwgVGFob21hLCBHZW5ldmEsIFZlcmRhbmEsIHNhbnMtc2VyaWY7IH1cbiAgICAgICAgLyogQW5pbWF0aW9ucyBhbmQga2V5ZnJhbWVzIChnbG9iYWwgYnV0IHNhZmUpICovXG4gICAgICAgIEBrZXlmcmFtZXMgc2xpZGVJblBvc3RmaXggeyBcbiAgICAgICAgICAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHB4KTsgb3BhY2l0eTogMDsgfVxuICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsgb3BhY2l0eTogMTsgfVxuICAgICAgICB9XG4gICAgICAgIEBrZXlmcmFtZXMgc2xpZGVPdXRQb3N0Zml4IHsgXG4gICAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsgb3BhY2l0eTogMTsgfVxuICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpOyBvcGFjaXR5OiAwOyB9XG4gICAgICAgIH1cbiAgICAgICAgQGtleWZyYW1lcyBmYWRlSW5Qb3N0Zml4IHsgXG4gICAgICAgICAgMCUgeyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7IH1cbiAgICAgICAgICAxMDAlIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7IH1cbiAgICAgICAgfVxuICAgICAgICBAa2V5ZnJhbWVzIGZhZGVPdXRQb3N0Zml4IHsgXG4gICAgICAgICAgMCUgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsgfVxuICAgICAgICAgIDEwMCUgeyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpOyB9XG4gICAgICAgIH1cbiAgICAgICAgQGtleWZyYW1lcyB0ZXh0UmV2ZWFsIHsgXG4gICAgICAgICAgMCUgeyB3aWR0aDogMHB4OyBvcGFjaXR5OiAwOyB9XG4gICAgICAgICAgMTAwJSB7IG9wYWNpdHk6IDE7IH1cbiAgICAgICAgfVxuICAgICAgICBAa2V5ZnJhbWVzIGJ1dHRvblNoaW5lUG9zdGZpeCB7IFxuICAgICAgICAgIDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKSBza2V3WCgtMTVkZWcpOyB9XG4gICAgICAgICAgNTAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMCUpIHNrZXdYKC0xNWRlZyk7IH1cbiAgICAgICAgfVxuICAgICAgICBAa2V5ZnJhbWVzIGJ1dHRvblB1bHNlIHsgXG4gICAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOyBib3gtc2hhZG93OiByZ2JhKDMsIDExOCwgMjAxLCAwLjQpIDBweCAwcHggMHB4IDBweDsgfVxuICAgICAgICAgIDcwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7IGJveC1zaGFkb3c6IHJnYmEoMywgMTE4LCAyMDEsIDApIDBweCAwcHggMHB4IDEwcHg7IH1cbiAgICAgICAgICAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgYm94LXNoYWRvdzogcmdiYSgzLCAxMTgsIDIwMSwgMCkgMHB4IDBweCAwcHggMHB4OyB9XG4gICAgICAgIH1cbiAgICAgICAgQGtleWZyYW1lcyBzbGlkZU91dFBvc3RmaXhMZWZ0IHsgXG4gICAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTsgb3BhY2l0eTogMTsgfVxuICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwcHgpOyBvcGFjaXR5OiAwOyB9XG4gICAgICAgIH1cbiAgICAgICAgQGtleWZyYW1lcyBzbGlkZUluUG9zdGZpeFJpZ2h0IHsgXG4gICAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzBweCk7IG9wYWNpdHk6IDA7IH1cbiAgICAgICAgICAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDBweCk7IG9wYWNpdHk6IDE7IH1cbiAgICAgICAgfVxuICAgICAgICBAa2V5ZnJhbWVzIGZvbGxvd1BhdGhQb3N0Zml4IHsgXG4gICAgICAgICAgMTAwJSB7IHN0cm9rZS1kYXNob2Zmc2V0OiAwcHg7IH1cbiAgICAgICAgfVxuICAgICAgICBAa2V5ZnJhbWVzIHczbS1zaGFrZSB7IFxuICAgICAgICAgIDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGUoMGRlZyk7IH1cbiAgICAgICAgICAyMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgtMWRlZyk7IH1cbiAgICAgICAgICA0MCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgxLjVkZWcpOyB9XG4gICAgICAgICAgNjAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGUoLTEuNWRlZyk7IH1cbiAgICAgICAgICA4MCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgxZGVnKTsgfVxuICAgICAgICAgIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgwZGVnKTsgfVxuICAgICAgICB9XG4gICAgICAgIEBrZXlmcmFtZXMgdzNtLWlmcmFtZS1mYWRlLW91dCB7IFxuICAgICAgICAgIDAlIHsgb3BhY2l0eTogMTsgfVxuICAgICAgICAgIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gICAgICAgIH1cbiAgICAgICAgQGtleWZyYW1lcyB6b29tSW57MCV7dHJhbnNmb3JtOnNjYWxlKC45NSl9MTAwJXt0cmFuc2Zvcm06c2NhbGUoMSl9fVxuICAgICAgICBAa2V5ZnJhbWVzIHB1bHNlezAle29wYWNpdHk6MX01MCV7b3BhY2l0eTouNX0xMDAle29wYWNpdHk6MX19XG5cbiAgICAgICAgLyogRXJyb3IgbW9kYWwgc3R5bGVzIChzY29wZWQpICovXG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLW92ZXJsYXktZXJye1xuICAgICAgICAgIHotaW5kZXg6OTk5OTk5O3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ZGlzcGxheTpmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO1xuICAgICAgICAgIGJhY2tncm91bmQ6IzAwMDAwMGJmO2JhY2tkcm9wLWZpbHRlcjpibHVyKDZweCk7XG4gICAgICAgICAgb3BhY2l0eTowO3Zpc2liaWxpdHk6aGlkZGVuO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZS1vdXQ7XG4gICAgICAgIH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWwtb3ZlcmxheS1lcnIub3BlbntvcGFjaXR5OjE7dmlzaWJpbGl0eTp2aXNpYmxlfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbC1jYXJkLWVycntcbiAgICAgICAgICBtYXgtd2lkdGg6MzYwcHg7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kOiMxMjEzMTM7Y29sb3I6I2ZmZjtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOjI0cHg7Ym94LXNoYWRvdzowIDhweCAzMnB4IHJnYmEoMCwwLDAsLjMyKTtcbiAgICAgICAgICBhbmltYXRpb246em9vbUluIC4ycyBlYXNlLW91dDtwYWRkaW5nOjIwcHggMjBweCAyOHB4O1xuICAgICAgICAgIHRleHQtYWxpZ246Y2VudGVyO2ZvbnQtZmFtaWx5OkludGVyLEFyaWFsLHNhbnMtc2VyaWY7XG4gICAgICAgIH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAuZG90e3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2ZmM2IzMDtcbiAgICAgICAgICAgICBhbmltYXRpb246cHVsc2UgMnMgaW5maW5pdGU7bWFyZ2luLXJpZ2h0OjhweH1cblxuICAgICAgICAvKiBPdGhlciBzdHlsZXMgc2NvcGVkICovXG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLnNwaW5uZXItc3ZnLXBvc3RmaXggeyBwb3NpdGlvbjogYWJzb2x1dGU7IGluc2V0OiAtNHB4OyB3aWR0aDogY2FsYygxMDAlICsgOHB4KTsgaGVpZ2h0OiBjYWxjKDEwMCUgKyA4cHgpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLnNwaW5uZXItcGF0aC1wb3N0Zml4IHsgc3Ryb2tlLWRhc2hhcnJheTogMTE2LCAyNDU7IHN0cm9rZS1kYXNob2Zmc2V0OiAzNjA7IGFuaW1hdGlvbjogMXMgbGluZWFyIDBzIGluZmluaXRlIG5vcm1hbCBub25lIHJ1bm5pbmcgZm9sbG93UGF0aFBvc3RmaXg7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAuc2xpZGUtb3V0LWxlZnQtcG9zdGZpeCB7IGFuaW1hdGlvbjogMC41cyBlYXNlLW91dCAwcyAxIG5vcm1hbCBmb3J3YXJkcyBydW5uaW5nIHNsaWRlT3V0UG9zdGZpeExlZnQ7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAuc2xpZGUtaW4tcmlnaHQtcG9zdGZpeCB7IGFuaW1hdGlvbjogMC41cyBlYXNlLW91dCAwcyAxIG5vcm1hbCBmb3J3YXJkcyBydW5uaW5nIHNsaWRlSW5Qb3N0Zml4UmlnaHQ7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAuc3RlcHMtY29udGFpbmVyLXBvc3RmaXggeyBwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAxMDAlOyBtaW4taGVpZ2h0OiAyNjBweDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5zcGVuZGluZy1jYXAtcG9wdXAtc3RlcCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGxlZnQ6IDBweDsgcmlnaHQ6IDBweDsgd2lkdGg6IDEwMCU7IG9wYWNpdHk6IDA7IHZpc2liaWxpdHk6IGhpZGRlbjsgdHJhbnNpdGlvbjogMC42cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLnNwZW5kaW5nLWNhcC1wb3B1cC1zdGVwLmFjdGl2ZSB7IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IHZpc2libGU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwcHgpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLnNwZW5kaW5nLWNhcC1wb3B1cC1zdGVwLTEgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5zcGVuZGluZy1jYXAtcG9wdXAtc3RlcC0xLnNsaWRlLW91dCB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7IG9wYWNpdHk6IDA7IHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5zcGVuZGluZy1jYXAtcG9wdXAtc3RlcC0yIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLnNwZW5kaW5nLWNhcC1wb3B1cC1zdGVwLTIuc2xpZGUtaW4geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTsgb3BhY2l0eTogMTsgdmlzaWJpbGl0eTogdmlzaWJsZTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5tb2RhbC1vdmVybGF5LXBvc3RmaXggeyBvcGFjaXR5OiAwOyB2aXNpYmlsaXR5OiBoaWRkZW47IHRyYW5zaXRpb246IDAuNXMgZWFzZS1pbi1vdXQ7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWwtb3ZlcmxheS1wb3N0Zml4LmFjdGl2ZSB7IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IHZpc2libGU7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAubW9kYWwtY29udGVudC1wb3N0Zml4IHsgdHJhbnNmb3JtOiBzY2FsZSgwLjcpOyBvcGFjaXR5OiAwOyB0cmFuc2l0aW9uOiAwLjVzIGVhc2UtaW4tb3V0OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLm1vZGFsLW92ZXJsYXktcG9zdGZpeC5hY3RpdmUgLm1vZGFsLWNvbnRlbnQtcG9zdGZpeCB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IG9wYWNpdHk6IDE7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAuYnV0dG9uLXNoaW5lLXBvc3RmaXggeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMHB4OyBsZWZ0OiAwcHg7IHdpZHRoOiA1MCU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMykgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDEwMCUpOyBhbmltYXRpb246IDNzIGVhc2UgMHMgaW5maW5pdGUgbm9ybWFsIG5vbmUgcnVubmluZyBidXR0b25TaGluZVBvc3RmaXg7IHRyYW5zZm9ybTogc2tld1goLTE1ZGVnKTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC50YXJnZXQtYnV0dG9uLXBvc3RmaXggeyBhbmltYXRpb246IDJzIGVhc2UgMHMgaW5maW5pdGUgbm9ybWFsIG5vbmUgcnVubmluZyBidXR0b25QdWxzZTsgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3M7IH1cbiAgICAgICAgLndlYmMtcG9wdXAtcm9vdCAudGFyZ2V0LWJ1dHRvbi1wb3N0Zml4OmhvdmVyIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5hbmltYXRlLXNsaWRlLWluLXBvc3RmaXggeyBhbmltYXRpb246IDEuMnMgZWFzZS1vdXQgMHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyBzbGlkZUluUG9zdGZpeDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5hbmltYXRlLXNsaWRlLW91dC1wb3N0Zml4IHsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDBzIDEgbm9ybWFsIGZvcndhcmRzIHJ1bm5pbmcgc2xpZGVPdXRQb3N0Zml4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLmFuaW1hdGUtZmFkZS1pbi1wb3N0Zml4IHsgb3BhY2l0eTogMDsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDBzIDEgbm9ybWFsIGZvcndhcmRzIHJ1bm5pbmcgZmFkZUluUG9zdGZpeDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5hbmltYXRlLXRleHQtcmV2ZWFsLXBvc3RmaXggeyBvcGFjaXR5OiAwOyBhbmltYXRpb246IGF1dG8gZWFzZSAwcyAxIG5vcm1hbCBub25lIHJ1bm5pbmcgbm9uZTsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5wb3B1cC1jb250ZW50LXBvc3RmaXggPiAqIHsgb3BhY2l0eTogMDsgdHJhbnNpdGlvbjogb3BhY2l0eSAxLjJzIGVhc2UtaW4tb3V0OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLnBvcHVwLWNvbnRlbnQtcG9zdGZpeC5hbmltYXRlLXN0YXJ0LXBvc3RmaXggPiA6bnRoLWNoaWxkKDEpIHsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDAuMnMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyBmYWRlSW5Qb3N0Zml4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLnBvcHVwLWNvbnRlbnQtcG9zdGZpeC5hbmltYXRlLXN0YXJ0LXBvc3RmaXggPiA6bnRoLWNoaWxkKDIpIHsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDAuNHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyBmYWRlSW5Qb3N0Zml4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLnBvcHVwLWNvbnRlbnQtcG9zdGZpeC5hbmltYXRlLXN0YXJ0LXBvc3RmaXggPiA6bnRoLWNoaWxkKDMpIHsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDAuNnMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyBmYWRlSW5Qb3N0Zml4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLnBvcHVwLWNvbnRlbnQtcG9zdGZpeC5hbmltYXRlLXN0YXJ0LXBvc3RmaXggPiA6bnRoLWNoaWxkKDQpIHsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDAuOHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyBmYWRlSW5Qb3N0Zml4OyB9XG4gICAgICAgIC53ZWJjLXBvcHVwLXJvb3QgLnBvcHVwLWNvbnRlbnQtcG9zdGZpeC5hbmltYXRlLXN0YXJ0LXBvc3RmaXggPiA6bnRoLWNoaWxkKDUpIHsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDFzIDEgbm9ybWFsIGZvcndhcmRzIHJ1bm5pbmcgZmFkZUluUG9zdGZpeDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5wb3B1cC1jb250ZW50LXBvc3RmaXguZmFkZS1vdXQgPiA6bnRoLWNoaWxkKDUpIHsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDAuMnMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyBmYWRlT3V0UG9zdGZpeDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5wb3B1cC1jb250ZW50LXBvc3RmaXguZmFkZS1vdXQgPiA6bnRoLWNoaWxkKDQpIHsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDAuNHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyBmYWRlT3V0UG9zdGZpeDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5wb3B1cC1jb250ZW50LXBvc3RmaXguZmFkZS1vdXQgPiA6bnRoLWNoaWxkKDMpIHsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDAuNnMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyBmYWRlT3V0UG9zdGZpeDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5wb3B1cC1jb250ZW50LXBvc3RmaXguZmFkZS1vdXQgPiA6bnRoLWNoaWxkKDIpIHsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDAuOHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyBmYWRlT3V0UG9zdGZpeDsgfVxuICAgICAgICAud2ViYy1wb3B1cC1yb290IC5wb3B1cC1jb250ZW50LXBvc3RmaXguZmFkZS1vdXQgPiA6bnRoLWNoaWxkKDEpIHsgYW5pbWF0aW9uOiAxLjJzIGVhc2Utb3V0IDFzIDEgbm9ybWFsIGZvcndhcmRzIHJ1bm5pbmcgZmFkZU91dFBvc3RmaXg7IH1cbiAgICAgICAgQGltcG9ydCB1cmwoXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcFwiKTtcbiAgICAiLHQuYXBwZW5kQ2hpbGQoYSk7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtuLmNsYXNzTmFtZT0id2ViYy1wb3B1cC1yb290IixuLmlubmVySFRNTD0nXG4gICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLW92ZXJsYXktcG9zdGZpeCBtb2RhbHYzLWZsZXggbW9kYWx2My1pdGVtcy1jZW50ZXIgbW9kYWx2My1qdXN0aWZ5LWNlbnRlciBtb2RhbHYzLWJnLWJsYWNrIG1vZGFsdjMtYmctb3BhY2l0eS01MCBtb2RhbHYzLXRyYW5zaXRpb24tYWxsIG1vZGFsdjMtZHVyYXRpb24tMzAwIG1vZGFsdjMtaGlkZGVuIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudC1wb3N0Zml4IG1vZGFsdjMtbWF4LXctMzYwIG1vZGFsdjMtdy1mdWxsIG1vZGFsdjMtcm91bmRlZC0zOCBtb2RhbHYzLWJnLXdoaXRlIG1vZGFsdjMtcC00IG1vZGFsdjMtc2hhZG93LWxnIG1vZGFsdjMtcmVsYXRpdmUgbW9kYWx2My16LTk5OTkiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFwcHJvdmVtZW50LXBvcHVwIHBvcHVwLWNvbnRlbnQtcG9zdGZpeCBtb2RhbHYzLXNlbGVjdC1ub25lIG1vZGFsdjMtcG9pbnRlci1ldmVudHMtbm9uZSBhbmltYXRlLXNsaWRlLWluLXBvc3RmaXggbW9kYWx2My1oaWRkZW4iIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtcm91bmRlZC0yeGwgbW9kYWx2My1wLTIgbW9kYWx2My1iZy1jdXN0b20tMDAwMDA1XG4gICAgICAgICAgICAgICAgICAgIG1vZGFsLWRhcms6bW9kYWx2My1iZy1jdXN0b20tZmZmZmZmMDUiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My1wLTEiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtdy1mdWxsIG1vZGFsdjMtcHgtMiBtb2RhbHYzLXB5LTIgbW9kYWx2My1mbGV4IG1vZGFsdjMtaXRlbXMtY2VudGVyIG1vZGFsdjMtanVzdGlmeS1iZXR3ZWVuIG1vZGFsdjMtZ2FwLXgtNCBtb2RhbHYzLXJvdW5kZWQtMnhsIG1vZGFsdjMtbWItNCBtb2RhbHYzLWJnLXdoaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwtZGFyazptb2RhbHYzLWJnLWN1c3RvbS0xOTFhMWEiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLWZsZXggbW9kYWx2My1pdGVtcy1jZW50ZXIgbW9kYWx2My1qdXN0aWZ5LXN0YXJ0IG1vZGFsdjMtZ2FwLXgtMiI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLXJvdW5kZWQtZnVsbCBtb2RhbHYzLW92ZXJmbG93LWhpZGRlbiBtb2RhbHYzLXctMzIgbW9kYWx2My1oLTMyIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjAiIHk9IjAiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4yOTk1MTUzNTA1MzU5NjUyMyAtMC44MTI4NzgxOTIxMzc2NTUzKSByb3RhdGUoMzgyLjkgMTYgMTYpIiBmaWxsPSIjRjJEMjAyIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIuNDgwMTU3Mjc2MjI3ODE5IDE2LjU4NzE1OTExOTI3MDk5Nikgcm90YXRlKDE5OS43IDE2IDE2KSIgZmlsbD0iIzIzM0NFMSI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMy45NzMzODMyODg1OTM4MDUgLTI0LjQ5ODgwMTM2MTU5MTY1KSByb3RhdGUoMzIyLjMgMTYgMTYpIiBmaWxsPSIjMDMzRDVFIj48L3JlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtZmxleCBtb2RhbHYzLWl0ZW1zLWNlbnRlciBtb2RhbHYzLWp1c3RpZnktc3RhcnQgbW9kYWx2My1nYXAteC0xIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLXctOCBtb2RhbHYzLWgtMSBtb2RhbHYzLWJnLWN1c3RvbS0xNDE0MTQgbW9kYWx2My1yb3VuZGVkLWZ1bGwgYW5pbWF0ZS10ZXh0LXJldmVhbC1wb3N0Zml4IG1vZGFsdjMtb3BhY2l0eS0wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwtZGFyazptb2RhbHYzLWJnLWN1c3RvbS1mM2YzZjMiIHN0eWxlPSJhbmltYXRpb246IDJzIGVhc2Utb3V0IDBzIDEgbm9ybWFsIGZvcndhcmRzIHJ1bm5pbmcgdGV4dFJldmVhbDsiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtdy00IG1vZGFsdjMtaC0xIG1vZGFsdjMtYmctY3VzdG9tLTE0MTQxNCBtb2RhbHYzLXJvdW5kZWQtZnVsbCBhbmltYXRlLXRleHQtcmV2ZWFsLXBvc3RmaXggbW9kYWx2My1vcGFjaXR5LTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC1kYXJrOm1vZGFsdjMtYmctY3VzdG9tLWYzZjNmMyIgc3R5bGU9ImFuaW1hdGlvbjogMnMgZWFzZS1vdXQgMHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyB0ZXh0UmV2ZWFsOyI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLWJvcmRlciBtb2RhbHYzLWJvcmRlci1jdXN0b20tYWRhZGFkIG1vZGFsdjMtcC0xIG1vZGFsdjMtcm91bmRlZC1mdWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC1kYXJrOmJvcmRlci1jdXN0b20tYjZiNmI2Ij5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJtb2RhbHYzLXctNCBtb2RhbHYzLWgtNCBtb2RhbHYzLXRleHQtY3VzdG9tLWFkYWRhZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLWRhcms6bW9kYWx2My10ZXh0LWN1c3RvbS1iNmI2YjYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTUgMTJoMTQiPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0ibTEyIDUgNyA3LTcgNyI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLWZsZXggbW9kYWx2My1pdGVtcy1jZW50ZXIgbW9kYWx2My1qdXN0aWZ5LWVuZCBtb2RhbHYzLWdhcC14LTIiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My1iZy1jdXN0b20tZjNmM2YzIG1vZGFsdjMtcHgtMiBtb2RhbHYzLXB5LTEgbW9kYWx2My1yb3VuZGVkLWZ1bGwgbW9kYWx2My1mbGV4IG1vZGFsdjMtaXRlbXMtY2VudGVyIG1vZGFsdjMtZ2FwLXgtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwtZGFyazptb2RhbHYzLWJnLWN1c3RvbS0xZTFlMWUiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtYmctY3VzdG9tLTE0MTQxNCBtb2RhbHYzLXAtMSBtb2RhbHYzLXJvdW5kZWQtZnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLWRhcms6bW9kYWx2My1iZy1jdXN0b20tZTRlN2U3Ij5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibW9kYWx2My13LTMgbW9kYWx2My1oLTMgbW9kYWx2My10ZXh0LWN1c3RvbS1lNGU3ZTdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC1kYXJrOm1vZGFsdjMtdGV4dC1jdXN0b20tMTQxNDE0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOS4xMTI0MSA3LjgyMjAxQzkuNDQ3NTYgNi44MzY2NiAxMC41NTUxIDYgMTIgNkMxMy43ODY1IDYgMTUgNy4yNDA1NCAxNSA4LjVDMTUgOS43NTk0NiAxMy43ODY1IDExIDEyIDExQzExLjQ0NzcgMTEgMTEgMTEuNDQ3NyAxMSAxMkwxMSAxNEMxMSAxNC41NTIzIDExLjQ0NzcgMTUgMTIgMTVDMTIuNTUyMyAxNSAxMyAxNC41NTIzIDEzIDE0TDEzIDEyLjkwODJDMTUuMjAzIDEyLjUwMDEgMTcgMTAuNzcwNiAxNyA4LjVDMTcgNS44OTM0NyAxNC42MzE5IDQgMTIgNEM5LjgyMDk3IDQgNy44NjcyOCA1LjI3MTg1IDcuMjE4OTQgNy4xNzc5OUM3LjA0MTEgNy43MDA4NSA3LjMyMDggOC4yNjg4OSA3Ljg0MzY2IDguNDQ2NzNDOC4zNjY1MyA4LjYyNDU4IDguOTM0NTcgOC4zNDQ4OCA5LjExMjQxIDcuODIyMDFaTTEyIDIwQzEyLjgyODUgMjAgMTMuNSAxOS4zMjg0IDEzLjUgMTguNUMxMy41IDE3LjY3MTYgMTIuODI4NSAxNyAxMiAxN0MxMS4xNzE2IDE3IDEwLjUgMTcuNjcxNiAxMC41IDE4LjVDMTAuNSAxOS4zMjg0IDExLjE3MTYgMjAgMTIgMjBaIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtZmxleCBtb2RhbHYzLWl0ZW1zLWNlbnRlciBtb2RhbHYzLWp1c3RpZnktc3RhcnQgbW9kYWx2My1nYXAteC0xIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My13LTE2IG1vZGFsdjMtaC0xIG1vZGFsdjMtYmctY3VzdG9tLTE0MTQxNCBtb2RhbHYzLXJvdW5kZWQtZnVsbCBhbmltYXRlLXRleHQtcmV2ZWFsLXBvc3RmaXggbW9kYWx2My1vcGFjaXR5LTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC1kYXJrOm1vZGFsdjMtYmctY3VzdG9tLWYzZjNmMyIgc3R5bGU9ImFuaW1hdGlvbjogMnMgZWFzZS1vdXQgMHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyB0ZXh0UmV2ZWFsOyI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My1ncmlkIG1vZGFsdjMtaXRlbXMtY2VudGVyIG1vZGFsdjMtZ2FwLXktMyBtb2RhbHYzLW1iLTUiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLWdyaWQgbW9kYWx2My1pdGVtcy1jZW50ZXIgbW9kYWx2My1nYXAteS0yIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtZ3JpZCBtb2RhbHYzLWl0ZW1zLWNlbnRlciBtb2RhbHYzLWp1c3RpZnktc3RhcnQgbW9kYWx2My1nYXAteS0zIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLXctOCBtb2RhbHYzLWgtOCBtb2RhbHYzLWJnLWdyYWRpZW50LWN1c3RvbS02IG1vZGFsdjMtcm91bmRlZC1mdWxsIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My13LTE2IG1vZGFsdjMtaC0xIG1vZGFsdjMtYmctY3VzdG9tLTE0MTQxNCBtb2RhbHYzLXJvdW5kZWQtZnVsbCBhbmltYXRlLXRleHQtcmV2ZWFsLXBvc3RmaXggbW9kYWx2My1vcGFjaXR5LTBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwtZGFyazptb2RhbHYzLWJnLWN1c3RvbS1mM2YzZjMiIHN0eWxlPSJhbmltYXRpb246IDJzIGVhc2Utb3V0IDBzIDEgbm9ybWFsIGZvcndhcmRzIHJ1bm5pbmcgdGV4dFJldmVhbDsiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtdy1mdWxsIG1vZGFsdjMtcm91bmRlZC0yeGwgbW9kYWx2My1tYi02IG1vZGFsdjMtYmctd2hpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC1kYXJrOm1vZGFsdjMtYmctY3VzdG9tLTE5MWExYSI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtcHgtNCBtb2RhbHYzLXBiLTMgbW9kYWx2My1wdC00Ij5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtZmxleCBtb2RhbHYzLWl0ZW1zLWNlbnRlciBtb2RhbHYzLWp1c3RpZnktc3RhcnQgbW9kYWx2My1nYXAteC00Ij5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLWJnLWN1c3RvbS0wNTc3YzkyOSBtb2RhbHYzLXB4LTMgbW9kYWx2My1weS0xIG1vZGFsdjMtcm91bmRlZC1mdWxsIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im1vZGFsdjMtdGV4dC1jdXN0b20tNTU1NTU1IG1vZGFsdjMtZm9udC1ub3JtYWwgbW9kYWx2My10ZXh0LXNtIGZvbnQtaW50ZXItcG9zdGZpeCBtb2RhbHYzLXVwcGVyY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC1kYXJrOm1vZGFsdjMtdGV4dC1jdXN0b20tZTFlMWUxIj5EZXRhaWxzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJtb2RhbHYzLXRleHQtY3VzdG9tLTc5ODY4NiBtb2RhbHYzLWZvbnQtbm9ybWFsIG1vZGFsdjMtdGV4dC1zbSBmb250LWludGVyLXBvc3RmaXggbW9kYWx2My11cHBlcmNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwtZGFyazptb2RhbHYzLXRleHQtY3VzdG9tLTk0OWU5ZSI+SGV4PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLXB4LTMgbW9kYWx2My1weS0xIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtcm91bmRlZC0yeGwgbW9kYWx2My1weC0zIG1vZGFsdjMtcHktNCBtb2RhbHYzLWJnLWN1c3RvbS0wMDAwMDVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC1kYXJrOm1vZGFsdjMtYmctY3VzdG9tLWZmZmZmZjA1Ij5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLWdyaWQgbW9kYWx2My1pdGVtcy1jZW50ZXIgbW9kYWx2My1nYXAteS0zIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My1mbGV4IG1vZGFsdjMtaXRlbXMtY2VudGVyIG1vZGFsdjMtanVzdGlmeS1zdGFydCBtb2RhbHYzLWdhcC14LTIgbW9kYWx2My1tYi0yIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im1vZGFsdjMtdGV4dC1jdXN0b20tMTQxNDE0IG1vZGFsdjMtZm9udC1zZW1pYm9sZCBtb2RhbHYzLXRleHQtMTMgZm9udC1pbnRlci1wb3N0Zml4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLWRhcms6bW9kYWx2My10ZXh0LWN1c3RvbS1lNGU3ZTciPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFc3RpbWF0ZWQgY2hhbmdlczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My1iZy1jdXN0b20tZDVkNWQ1IG1vZGFsdjMtcC0wLjUgbW9kYWx2My1yb3VuZGVkLWZ1bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbC1kYXJrOm1vZGFsdjMtYmctY3VzdG9tLWU0ZTdlNyI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ibW9kYWx2My13LTMgbW9kYWx2My1oLTMgbW9kYWx2My10ZXh0LXdoaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwtZGFyazptb2RhbHYzLXRleHQtY3VzdG9tLTE0MTQxNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJjdXJyZW50Q29sb3IiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOS4xMTI0MSA3LjgyMjAxQzkuNDQ3NTYgNi44MzY2NiAxMC41NTUxIDYgMTIgNkMxMy43ODY1IDYgMTUgNy4yNDA1NCAxNSA4LjVDMTUgOS43NTk0NiAxMy43ODY1IDExIDEyIDExQzExLjQ0NzcgMTEgMTEgMTEuNDQ3NyAxMSAxMkwxMSAxNEMxMSAxNC41NTIzIDExLjQ0NzcgMTUgMTIgMTVDMTIuNTUyMyAxNSAxMyAxNC41NTIzIDEzIDE0TDEzIDEyLjkwODJDMTUuMjAzIDEyLjUwMDEgMTcgMTAuNzcwNiAxNyA4LjVDMTcgNS44OTM0NyAxNC42MzE5IDQgMTIgNEM5LjgyMDk3IDQgNy44NjcyOCA1LjI3MTg1IDcuMjE4OTQgNy4xNzc5OUM3LjA0MTEgNy43MDA4NSA3LjMyMDggOC4yNjg4OSA3Ljg0MzY2IDguNDQ2NzNDOC4zNjY1MyA4LjYyNDU4IDguOTM0NTcgOC4zNDQ4OCA5LjExMjQxIDcuODIyMDFaTTEyIDIwQzEyLjgyODUgMjAgMTMuNSAxOS4zMjg0IDEzLjUgMTguNUMxMy41IDE3LjY3MTYgMTIuODI4NSAxNyAxMiAxN0MxMS4xNzE2IDE3IDEwLjUgMTcuNjcxNiAxMC41IDE4LjVDMTAuNSAxOS4zMjg0IDExLjE3MTYgMjAgMTIgMjBaIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtZmxleCBtb2RhbHYzLWl0ZW1zLWNlbnRlciBtb2RhbHYzLWp1c3RpZnktc3RhcnQgbW9kYWx2My1nYXAteC0xIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtdy0xNiBtb2RhbHYzLWgtMSBtb2RhbHYzLWJnLWN1c3RvbS03OTg2ODYgbW9kYWx2My1yb3VuZGVkLWZ1bGwgYW5pbWF0ZS10ZXh0LXJldmVhbC1wb3N0Zml4IG1vZGFsdjMtb3BhY2l0eS0wIiBzdHlsZT0iYW5pbWF0aW9uOiAycyBlYXNlLW91dCAwcyAxIG5vcm1hbCBmb3J3YXJkcyBydW5uaW5nIHRleHRSZXZlYWw7Ij48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtdy04IG1vZGFsdjMtaC0xIG1vZGFsdjMtYmctY3VzdG9tLTc5ODY4NiBtb2RhbHYzLXJvdW5kZWQtZnVsbCBhbmltYXRlLXRleHQtcmV2ZWFsLXBvc3RmaXggbW9kYWx2My1vcGFjaXR5LTAiIHN0eWxlPSJhbmltYXRpb246IDJzIGVhc2Utb3V0IDBzIDEgbm9ybWFsIGZvcndhcmRzIHJ1bm5pbmcgdGV4dFJldmVhbDsiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My13LTEyIG1vZGFsdjMtaC0xIG1vZGFsdjMtYmctY3VzdG9tLTc5ODY4NiBtb2RhbHYzLXJvdW5kZWQtZnVsbCBhbmltYXRlLXRleHQtcmV2ZWFsLXBvc3RmaXggbW9kYWx2My1vcGFjaXR5LTAiIHN0eWxlPSJhbmltYXRpb246IDJzIGVhc2Utb3V0IDBzIDEgbm9ybWFsIGZvcndhcmRzIHJ1bm5pbmcgdGV4dFJldmVhbDsiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My13LTQgbW9kYWx2My1oLTEgbW9kYWx2My1iZy1jdXN0b20tNzk4Njg2IG1vZGFsdjMtcm91bmRlZC1mdWxsIGFuaW1hdGUtdGV4dC1yZXZlYWwtcG9zdGZpeCBtb2RhbHYzLW9wYWNpdHktMCIgc3R5bGU9ImFuaW1hdGlvbjogMnMgZWFzZS1vdXQgMHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyB0ZXh0UmV2ZWFsOyI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLXB4LTMgbW9kYWx2My1wdC0xIG1vZGFsdjMtcGItNCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLXJvdW5kZWQtMnhsIG1vZGFsdjMtcHgtMyBtb2RhbHYzLXB5LTQgbW9kYWx2My1iZy1jdXN0b20tMDAwMDA1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwtZGFyazptb2RhbHYzLWJnLWN1c3RvbS1mZmZmZmYwNSI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My1ncmlkIG1vZGFsdjMtaXRlbXMtY2VudGVyIG1vZGFsdjMtZ2FwLXktMyI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtZmxleCBtb2RhbHYzLWl0ZW1zLWNlbnRlciBtb2RhbHYzLWp1c3RpZnktYmV0d2VlbiBtb2RhbHYzLWdhcC14LTIgbW9kYWx2My1tYi0yIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Im1vZGFsdjMtdGV4dC1jdXN0b20tMTQxNDE0IG1vZGFsdjMtZm9udC1zZW1pYm9sZCBtb2RhbHYzLXRleHQtMTMgZm9udC1pbnRlci1wb3N0Zml4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLWRhcms6bW9kYWx2My10ZXh0LWN1c3RvbS1lNGU3ZTciPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFc3RpbWF0ZWQgZmVlPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtdy0xNiBtb2RhbHYzLWgtMSBtb2RhbHYzLWJnLWN1c3RvbS0xNDE0MTQgbW9kYWx2My1yb3VuZGVkLWZ1bGwgYW5pbWF0ZS10ZXh0LXJldmVhbC1wb3N0Zml4IG1vZGFsdjMtb3BhY2l0eS0wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsLWRhcms6bW9kYWx2My1iZy1jdXN0b20tZjNmM2YzIiBzdHlsZT0iYW5pbWF0aW9uOiAycyBlYXNlLW91dCAwcyAxIG5vcm1hbCBmb3J3YXJkcyBydW5uaW5nIHRleHRSZXZlYWw7Ij48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My1mbGV4IG1vZGFsdjMtaXRlbXMtY2VudGVyIG1vZGFsdjMtanVzdGlmeS1iZXR3ZWVuIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtZmxleCBtb2RhbHYzLWl0ZW1zLWNlbnRlciBtb2RhbHYzLWp1c3RpZnktc3RhcnQgbW9kYWx2My1nYXAteC0xIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbHYzLXctMTIgbW9kYWx2My1oLTEgbW9kYWx2My1iZy1jdXN0b20tNzk4Njg2IG1vZGFsdjMtcm91bmRlZC1mdWxsIGFuaW1hdGUtdGV4dC1yZXZlYWwtcG9zdGZpeCBtb2RhbHYzLW9wYWNpdHktMCIgc3R5bGU9ImFuaW1hdGlvbjogMnMgZWFzZS1vdXQgMHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyB0ZXh0UmV2ZWFsOyI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My13LTggbW9kYWx2My1oLTEgbW9kYWx2My1iZy1jdXN0b20tNzk4Njg2IG1vZGFsdjMtcm91bmRlZC1mdWxsIGFuaW1hdGUtdGV4dC1yZXZlYWwtcG9zdGZpeCBtb2RhbHYzLW9wYWNpdHktMCIgc3R5bGU9ImFuaW1hdGlvbjogMnMgZWFzZS1vdXQgMHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyB0ZXh0UmV2ZWFsOyI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtZmxleCBtb2RhbHYzLWl0ZW1zLWNlbnRlciBtb2RhbHYzLWp1c3RpZnktZW5kIG1vZGFsdjMtZ2FwLXgtMSI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My13LTggbW9kYWx2My1oLTEgbW9kYWx2My1iZy1jdXN0b20tNzk4Njg2IG1vZGFsdjMtcm91bmRlZC1mdWxsIGFuaW1hdGUtdGV4dC1yZXZlYWwtcG9zdGZpeCBtb2RhbHYzLW9wYWNpdHktMCIgc3R5bGU9ImFuaW1hdGlvbjogMnMgZWFzZS1vdXQgMHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyB0ZXh0UmV2ZWFsOyI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My13LTQgbW9kYWx2My1oLTEgbW9kYWx2My1iZy1jdXN0b20tNzk4Njg2IG1vZGFsdjMtcm91bmRlZC1mdWxsIGFuaW1hdGUtdGV4dC1yZXZlYWwtcG9zdGZpeCBtb2RhbHYzLW9wYWNpdHktMCIgc3R5bGU9ImFuaW1hdGlvbjogMnMgZWFzZS1vdXQgMHMgMSBub3JtYWwgZm9yd2FyZHMgcnVubmluZyB0ZXh0UmV2ZWFsOyI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My13LTEwIG1vZGFsdjMtaC0xIG1vZGFsdjMtYmctY3VzdG9tLTc5ODY4NiBtb2RhbHYzLXJvdW5kZWQtZnVsbCBhbmltYXRlLXRleHQtcmV2ZWFsLXBvc3RmaXggbW9kYWx2My1vcGFjaXR5LTAiIHN0eWxlPSJhbmltYXRpb246IDJzIGVhc2Utb3V0IDBzIDEgbm9ybWFsIGZvcndhcmRzIHJ1bm5pbmcgdGV4dFJldmVhbDsiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsdjMtZmxleCBtb2RhbHYzLWl0ZW1zLWNlbnRlciBtb2RhbHYzLWp1c3RpZnktY2VudGVyIG1vZGFsdjMtZ2FwLXgtNCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibW9kYWx2My1mbGV4IG1vZGFsdjMtaXRlbXMtY2VudGVyIG1vZGFsdjMtanVzdGlmeS1jZW50ZXIgbW9kYWx2My1iZy10cmFuc3BhcmVudCBtb2RhbHYzLWJvcmRlciBtb2RhbHYzLWJvcmRlci1jdXN0b20tMGE5MGYwIG1vZGFsdjMtcm91bmRlZC1mdWxsIG1vZGFsdjMtaC00OCBtb2RhbHYzLXctZnVsbCBtb2RhbHYzLXB4LTQiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWx2My13LTE2IG1vZGFsdjMtaC0xIG1vZGFsdjMtYmctY3VzdG9tLTBhOTBmMCBtb2RhbHYzLXJvdW5kZWQtZnVsbCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InRhcmdldC1idXR0b24tcG9zdGZpeCBtb2RhbHYzLWZsZXggbW9kYWx2My1pdGVtcy1jZW50ZXIgbW9kYWx2My1qdXN0aWZ5LWNlbnRlciBtb2RhbHYzLWJnLWN1c3RvbS0wYTkwZjAgbW9kYWx2My1ib3JkZXIgbW9kYWx2My1ib3JkZXItY3VzdG9tLTBhOTBmMCBtb2RhbHYzLXJvdW5kZWQtZnVsbCBtb2RhbHYzLWgtNDggbW9kYWx2My13LWZ1bGwgbW9kYWx2My1weC00IG1vZGFsdjMtcmVsYXRpdmUgbW9kYWx2My1vdmVyZmxvdy1oaWRkZW4iPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1vZGFsdjMtdGV4dC13aGl0ZSBtb2RhbHYzLWZvbnQtbWVkaXVtIG1vZGFsdjMtdGV4dC1zbSBmb250LWludGVyLXBvc3RmaXggbW9kYWx2My1yZWxhdGl2ZSBtb2RhbHYzLXotOTk5OSI+Q29uZmlybTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ1dHRvbi1zaGluZS1wb3N0Zml4Ij48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgJyx0LmFwcGVuZENoaWxkKG4pO2NvbnN0IGU9YT0+eyhvPT57aWYodC5nZXRFbGVtZW50QnlJZCgidHhNb2RhbCIpKXJldHVybjtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuaWQ9InR4TW9kYWwiLGEuY2xhc3NOYW1lPSJtb2RhbC1vdmVybGF5LWVyciIsbi5hcHBlbmRDaGlsZChhKTtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NOYW1lPSJtb2RhbC1jYXJkLWVyciIsYS5hcHBlbmRDaGlsZChlKSxlLmlubmVySFRNTD1gXG4gIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyNHB4Ij5cbiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMCI+XG4gICAgICA8c3BhbiBjbGFzcz0iZG90Ij48L3NwYW4+U3RhdHVzXG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiBpZD0ibW1FcnJDbG9zZSIgc3R5bGU9ImJhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjojZTRlN2U3O2ZvbnQtc2l6ZToyMHB4O2N1cnNvcjpwb2ludGVyIj7inJU8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGltZ1xuICAgIHNyYz0ke299XG4gICAgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiXG4gICAgc3R5bGU9ImJvcmRlci1yYWRpdXM6MCU7ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvIj5cblxuPHAgc3R5bGU9Im1hcmdpbjoyNHB4IDAgMHB4O2NvbG9yOiM5NDllOWU7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc2l6ZToxNHB4OyI+XG4gIFNvbWV0aGluZyB3ZW50IHdyb25nITxicj5QbGVhc2UgdHJ5IGEgZGlmZmVyZW50IHdhbGxldC5cbjwvcD5cbmAsZS5xdWVyeVNlbGVjdG9yKCIjbW1FcnJDbG9zZSIpLm9uY2xpY2s9cixhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwobz0+e28udGFyZ2V0PT09YSYmcigpfSkpfSkoYSksdC5nZXRFbGVtZW50QnlJZCgidHhNb2RhbCIpLmNsYXNzTGlzdC5hZGQoIm9wZW4iKSxvLnN0eWxlLmRpc3BsYXk9ImZsZXgiLG8uc3R5bGUucG9pbnRlckV2ZW50cz0iYXV0byJ9O2Z1bmN0aW9uIHIoKXt0LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tb2RhbC1vdmVybGF5LXBvc3RmaXgsIC5wb3B1cC1jb250ZW50LXBvc3RmaXgiKS5mb3JFYWNoKChvPT57by5zdHlsZS5kaXNwbGF5PSJub25lIixvLmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGUtc3RhcnQtcG9zdGZpeCIpLG8uY2xhc3NMaXN0LmFkZCgibW9kYWx2My1oaWRkZW4iKX0pKTtjb25zdCBhPXQuZ2V0RWxlbWVudEJ5SWQoInR4TW9kYWwiKTthJiZhLmNsYXNzTGlzdC5yZW1vdmUoIm9wZW4iKSxvLnN0eWxlLmRpc3BsYXk9Im5vbmUiLG8uc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSJ9d2luZG93LnNob3dQb3B1cD1mdW5jdGlvbihhLG4pe2lmKCJlcnJvciI9PT1hfHwiZXJyb3ItcG9wdXAiPT09YSlyZXR1cm4gcigpLHZvaWQgZShuKTtyKCk7Y29uc3QgZD10LnF1ZXJ5U2VsZWN0b3IoIi5tb2RhbC1vdmVybGF5LXBvc3RmaXgiKSxwPXQucXVlcnlTZWxlY3RvcihgLiR7YX1gKTtpZighZHx8IXApcmV0dXJuIGNvbnNvbGUud2FybigiUG9wdXAgb3Igb3ZlcmxheSBub3QgZm91bmQ6IixhKTtkLnN0eWxlLmRpc3BsYXk9ImZsZXgiLGQuY2xhc3NMaXN0LmFkZCgiYWN0aXZlIikscC5zdHlsZS5kaXNwbGF5PSJibG9jayIsZC5jbGFzc0xpc3QucmVtb3ZlKCJtb2RhbHYzLWhpZGRlbiIpLHAuY2xhc3NMaXN0LnJlbW92ZSgibW9kYWx2My1oaWRkZW4iKSxwLmNsYXNzTGlzdC5hZGQoImFuaW1hdGUtc3RhcnQtcG9zdGZpeCIpLG8uc3R5bGUuZGlzcGxheT0iZmxleCIsby5zdHlsZS5wb2ludGVyRXZlbnRzPSJhdXRvIn0sd2luZG93LmhpZGVBbGxQb3B1cHM9cjtjb25zdCBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Quc3R5bGUubWFyZ2luPSIxMHB4IixkLnN0eWxlLmRpc3BsYXk9ImZsZXgiLGQuc3R5bGUuZmxleFdyYXA9IndyYXAiLGQuc3R5bGUuZ2FwPSI4cHgiLGQuc3R5bGUucG9zaXRpb249ImZpeGVkIixkLnN0eWxlLmJvdHRvbT0iMCIsZC5zdHlsZS5sZWZ0PSIwIixkLnN0eWxlLnpJbmRleD0iOTk5OTk4Iixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGQpfWluamVjdFBvcHVwKCk7"}},"time_used":414,"timings":{"blocked":0,"dns":0,"connect":65,"send":0,"wait":349,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"sahnesirince.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}}]}
