{"report_id":"617cfb1e-a1d3-4a2c-8fa4-d21429e9f88d","version":0,"status":"done","tags":[],"date":"2026-07-27T14:08:19Z","url":{"schema":"http","addr":"elxr24.shop","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":0,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"final":{"url":{"schema":"https","addr":"elxr24.shop/","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"title":"ELIXIR","dom":{"size":14546,"mime_type":"text/html; charset=utf-8","magic":"JavaScript source, Unicode text, UTF-8 text","md5":"261f06e5baea6bd4c9a7893074163fba","sha1":"1fd40fce75baa69105a684447c759296385be0f1","sha256":"d08b061a6a413e99b1fcb4442194657d3cd570baa3a5774d64cb0f97b5ec2735","sha512":"3a1b0af86bda555ff47329ff5b90230b0d13e5a4ef7fecec2519e36a27b063eda3ccb358279913d549b4f30d965770317e9eb91edc4b8005d49d1b86e5c27cd1","ssdeep":"192:QVXLXg4dNSNUvG6pRYkQMe6I0R6d6I0R16I0df4mMsAsKXiA:wXLxWPABv","tlshash":"78629ba071f40ef74683a5c39415df4a3dc496abd54a334071ac0be6aff2c519a9bc3a","dom_hash":"domhash467c361e46f72f6884b042f225313282","first_seen":"2026-07-27T10:31:02.528057Z","last_seen":"2026-07-27T14:08:21.624867Z","times_seen":2,"resource_available":false,"data":null}},"submit":{"url":{"schema":"http","addr":"elxr24.shop","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":0,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T14:08:19Z","useragent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0","referer":"","cookies":null,"exit_node":"qguvgzjxzsgb3vs"},"stats":{"alert_count":{"ids":0,"urlquery":0,"analyzer":0}},"detection":{"ids":null,"analyzer":null,"urlquery":null},"summary":[{"fqdn":"elxr24.shop","ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"domain_registered":"unknown","domain_rank":0,"first_seen":"2026-07-27T10:30:57.59979Z","last_seen":"2026-07-27T10:30:57.59979Z","alert_count":0,"request_count":9,"received_data":208437,"sent_data":4270,"comment":"","tags":null,"fingerprints":[{"name":"Google Tag Manager","description":"Google Tag Manager is a tag management system (TMS) that allows you to quickly and easily update measurement codes and related code fragments collectively known as tags on your website or mobile app.","website":"https://www.google.com/tagmanager","common_platform_enumeration":"","icon":"Google Tag Manager.svg","categories":["Tag managers"]},{"name":"jQuery:3.7.1","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"Nginx:1.22.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}]},{"fqdn":"fonts.gstatic.com","ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":0,"first_seen":"2014-04-02T10:51:04Z","last_seen":"2026-07-26T22:19:52.505461Z","alert_count":0,"request_count":5,"received_data":160739,"sent_data":2804,"comment":"","tags":null,"fingerprints":null},{"fqdn":"www.googletagmanager.com","ip":{"addr":"142.250.178.104","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2011-11-11","domain_rank":283,"first_seen":"2012-10-04T01:07:32Z","last_seen":"2026-07-26T22:31:28.839046Z","alert_count":0,"request_count":2,"received_data":852970,"sent_data":963,"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":"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":5293,"sent_data":559,"comment":"","tags":null,"fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]}],"files":null,"artifacts":{"windows_shortcuts":null,"files":null,"telegram":null,"pdfs":null,"clipboard":null},"sensors":{"ids":null,"analyzer":null,"urlquery":null},"javascript":{"script":[{"url":{"schema":"https","addr":"www.googletagmanager.com/gtm.js?id=GTM-KQGH4H3R","fqdn":"www.googletagmanager.com","domain":"googletagmanager.com","tld":"com"},"ip":{"addr":"142.250.178.104","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"debc151d877c62dd2b75e55a0a0546f9","sha1":"b361340ade8069c845cc626bedf59eb26aacd1ff","sha256":"85ebcc9dcf13380620ddbd4dba8de48b354d59c425ff42d087da716251ff76ba","sha512":"c2ae6674a3d22dccb926c61f7e4f14dcf7ad85aeace3f01167bbc54d7c29e9e3e4cfe161518b06982a967a082b4ffaf30b2dfc990ba0d9abd8fe1f0b4f108015","ssdeep":"6144:JR6U0jN97P69uMxlMrHScPmfxNf3Ejf7oXtJfj:JRjYRP69bW7OtJfj","tlshash":"9074f8cdb3da74629392e478503f018ba27a68d2f44cc899f185dcd42e7469a8277f7c","size":363172,"data":"","first_seen":"2026-07-27T10:31:02.534361Z","last_seen":"2026-07-27T14:08:21.641345Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.googletagmanager.com/gtag/js?id=G-5RFXXLH8D1\u0026cx=c\u0026gtm=4e67m0","fqdn":"www.googletagmanager.com","domain":"googletagmanager.com","tld":"com"},"ip":{"addr":"142.250.178.104","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"82686a203e5115b534eeb65b1962e66d","sha1":"4d3550d940706120922ed1c74cd2ddb4de0b9794","sha256":"b5bfec9999da2ec856b5eedd5d84bd1a87777092837e7ee793d0499f01cf93a0","sha512":"6c71124d637f176c31f82d68f77012d56d7ce7af85998ebcfcdef910a14f319d831c5560958cf4af2a02c31a603a1c92c6eb6451099afb90b2a6a8aeef643bc9","ssdeep":"6144:3AHk4U0jIWXbP69FMxmRknhqsScPmfxNf3EjUxVGaZoXzRYGg:3Kk11WLP69VwqxVZOvg","tlshash":"93a4f8cdb3d674225396f478903f018ba57b29e2b44cc899f189cce42e7465a8267f7c","size":488564,"data":"","first_seen":"2026-07-27T10:31:02.540629Z","last_seen":"2026-07-27T14:08:21.637616Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"introduction_type":"scriptElement","is_inline":true,"md5":"7515db127cb1af450b56c4f6a20f3703","sha1":"4007ef31067cf538b91647ffed6b62f390a5edc5","sha256":"74e1d9d1bbbd0e7cc6317907d1a3f724ef07375aedfc34ff34729424bd89c5cb","sha512":"30e064d23d8699603a521d344ce69370ec748b06f05fd4da6c8ad1f28a60cf4eff40d7041b26c6eed51edf6d98dbbca5eecfeeff2923f4f26b8e31de71df9e02","ssdeep":"","tlshash":"64e028da74110c7170ed05f533b1a1197153250878091c22cdfdc914281c5c78c135cc","size":342,"data":"","first_seen":"2026-07-27T10:31:02.543641Z","last_seen":"2026-07-27T14:08:21.643411Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/assets/js/jquery-3.7.1.min.js","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"introduction_type":"scriptElement","is_inline":false,"md5":"2c872dbe60f4ba70fb85356113d8b35e","sha1":"ee48592d1fff952fcf06ce0b666ed4785493afdc","sha256":"fc9a93dd241f6b045cbff0481cf4e1901becd0e12fb45166a8f17f95823f0b1a","sha512":"bf6089ed4698cb8270a8b0c8ad9508ff886a7a842278e98064d5c1790ca3a36d5d69d9f047ef196882554fc104da2c88eb5395f1ee8cf0f3f6ff8869408350fe","ssdeep":"1536:0RUX9uDgwxcy2KVBNwchN6SLaHEk2BSrBESp+a/IEk4aAocVi8SMBQ47GKr:sHNwcv9VBQpLl88SMBQ47GKr","tlshash":"3983f8df77ca702247ab30b9006f550bf276199d684d4400f159d8e9bcb8a4a827bf7e","size":87533,"data":"","first_seen":"2023-08-31T16:03:19Z","last_seen":"2026-08-15T13:44:01.979592Z","times_seen":185855,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/assets/js/app.js","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"introduction_type":"scriptElement","is_inline":false,"md5":"6ae26e65b729f85b89ed58490bffe876","sha1":"87b8e236cf17573e2787f27a43e530376d1423ba","sha256":"e495a71a30086694129d8cf8e7dc991d2861c12134962b91a8af6c9c24c864cc","sha512":"8847b27f061616c33e7d47a1c16770c8944d02278f0a976b725451c6bc6653958f02866236d99b5b43b32b1be014c5f9b9d30d84412ca38978d9262e2092e0b4","ssdeep":"96:zXy+f7ooPPlZeBefGsezXkugz7vYcofZeBefGsYNugz7vYwofZeBefGsIl9WoYUU:B4sezXkpf5sYNpf/smQ9sXXd73yiG","tlshash":"0d02e060713b35317253aaafaf57190c139c206b3202ed5db7ada9c13fc1a30a3b5d68","size":8483,"data":"","first_seen":"2026-07-27T10:31:02.539338Z","last_seen":"2026-07-27T14:08:21.635448Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/assets/js/test.js","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"introduction_type":"scriptElement","is_inline":false,"md5":"52a1c02288e96f4b9b9df100e2c8c179","sha1":"a71f9a70892474f17e5d836461e94217b7ea53da","sha256":"ffd68b0994c95b78693a8f0f9b3ca252db51a7c65e394114d6a3723f2a6f1b3a","sha512":"03375cf883e0b346ea52394403d6ccaba1f0bf5b53ed603aba7529b47d4171c486b80b2e769593977184b395b942a106580e3ded358b9e5c1ab44dd728efffb1","ssdeep":"48:jti8nmRP7DwcN1lRsAiBiATzLly4eWWwZMoe4Z+utnYATNUVcwlsNOyQ82gDt98H:55mNZsA6/L3XZdZ+SnROz8PDt2","tlshash":"5d91788594f911794022f076a2b71606bebc40ff79f67638395e662c5fcb91c82f708a","size":4605,"data":"","first_seen":"2026-07-27T10:31:02.535883Z","last_seen":"2026-07-27T14:08:21.631597Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":null},"http":[{"url":{"schema":"https","addr":"elxr24.shop/","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T14:07:51.334Z","timestamp":1785161271334,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"elxr24.cc","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 03 Jun 2026 07:35:05 GMT","end":"Tue, 01 Sep 2026 07:35:04 GMT"},"fingerprint":{"sha1":"12:3F:CB:7D:FB:C0:91:E3:23:CA:98:8C:CB:80:67:4C:9D:50:FF:C4","sha256":"DD:B7:2F:32:FE:FB:45:B3:5D:1F:1F:45:3E:4F:FD:35:65:70:79:E3:29:04:54:1D:C3:AC:CC:DC:56:40:57:6F"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: elxr24.shop\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nUpgrade-Insecure-Requests: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nServer: nginx/1.22.1\r\nDate: Mon, 27 Jul 2026 14:07:51 GMT\r\nContent-Type: text/html\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\nContent-Encoding: gzip\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Google Tag Manager","description":"Google Tag Manager is a tag management system (TMS) that allows you to quickly and easily update measurement codes and related code fragments collectively known as tags on your website or mobile app.","website":"https://www.google.com/tagmanager","common_platform_enumeration":"","icon":"Google Tag Manager.svg","categories":["Tag managers"]},{"name":"jQuery:3.7.1","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"Nginx:1.22.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":15316,"size_decoded":3206,"mime_type":"text/html","magic":"HTML document, Unicode text, UTF-8 text","md5":"c49e2de412daa00ce8914588fba6b5ce","sha1":"32e98a3765663e5ba2bbe1581c42ed5d9c268fea","sha256":"1588fa687aae569312ab79e82273ddcaa9b847fea0dada125baba9f23ad1c86a","sha512":"d5138cb436f7e2359c880cdfb918170958f46c0cd799f3b8f3e79e7285de3f29c62ca4a77fab40342d0a853b66e165cfa317c86ae858975f8fa024fcaad2346d","ssdeep":"192:EsLXg4dINFrvG67IPhQ5G6IKIOf6IKIW6IK8f+r1s7:EsLkFAam","tlshash":"1462bba031f80ef7468361d35556df4a3dc496a7c64a334071ac0ae6aff2c519b9bc3a","first_seen":"2026-07-27T10:31:02.529349Z","last_seen":"2026-07-27T14:08:21.628919Z","times_seen":2,"resource_available":false,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiIC8+CiAgICA8dGl0bGU+RUxJWElSPC90aXRsZT4KICAgIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSIgLz4KICAgIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4gLz4KICAgIDxsaW5rCiAgICAgIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9RGF5cytPbmUmZmFtaWx5PU1vbnRzZXJyYXQ6aXRhbCx3Z2h0QDAsMTAwLi45MDA7MSwxMDAuLjkwMCZkaXNwbGF5PXN3YXAiCiAgICAgIHJlbD0ic3R5bGVzaGVldCIKICAgIC8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4vYXNzZXRzL2Nzcy9tYWluLmNzcyIgLz4KPCEtLSBHb29nbGUgVGFnIE1hbmFnZXIgLS0+CjxzY3JpcHQ+KGZ1bmN0aW9uKHcsZCxzLGwsaSl7d1tsXT13W2xdfHxbXTt3W2xdLnB1c2goeydndG0uc3RhcnQnOgpuZXcgRGF0ZSgpLmdldFRpbWUoKSxldmVudDonZ3RtLmpzJ30pO3ZhciBmPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF0sCmo9ZC5jcmVhdGVFbGVtZW50KHMpLGRsPWwhPSdkYXRhTGF5ZXInPycmbD0nK2w6Jyc7ai5hc3luYz10cnVlO2ouc3JjPQonaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RtLmpzP2lkPScraStkbDtmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGosZik7Cn0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnZGF0YUxheWVyJywnR1RNLUtRR0g0SDNSJyk7PC9zY3JpcHQ+CjwhLS0gRW5kIEdvb2dsZSBUYWcgTWFuYWdlciAtLT4KCiAgPC9oZWFkPgogIDxib2R5Pgo8IS0tIEdvb2dsZSBUYWcgTWFuYWdlciAobm9zY3JpcHQpIC0tPgo8bm9zY3JpcHQ+PGlmcmFtZSBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL25zLmh0bWw/aWQ9R1RNLUtRR0g0SDNSIgpoZWlnaHQ9IjAiIHdpZHRoPSIwIiBzdHlsZT0iZGlzcGxheTpub25lO3Zpc2liaWxpdHk6aGlkZGVuIj48L2lmcmFtZT48L25vc2NyaXB0Pgo8IS0tIEVuZCBHb29nbGUgVGFnIE1hbmFnZXIgKG5vc2NyaXB0KSAtLT4KICAgIDxkaXYgY2xhc3M9IndyYXBwZXIiPgogICAgICA8ZGl2IGNsYXNzPSJoZXJvIj4KICAgICAgICA8aW1nIGNsYXNzPSJoZXJvX19sb2dvIiBzcmM9Ii4vYXNzZXRzL2ltZy9sb2dvLnBuZyIgYWx0PSJFTElYSVIiIC8+CiAgICAgICAgPGgxIGNsYXNzPSJoZXJvX190aXRsZSI+0JTQvtCx0YDQviDQv9C+0LbQsNC70L7QstCw0YLRjCDRgdGC0YDQsNC90L3QuNC6PC9oMT4KICAgICAgICA8cCBjbGFzcz0iaGVyb19fdGV4dCI+CiAgICAgICAgICDQlNC+0LHRgNC+INC/0L7QttCw0LvQvtCy0LDRgtGMINCyIEVMSVhJUiDigJQg0LzQsNCz0LDQt9C40L0sINC60L7RgtC+0YDQvtC80YMg0LTQvtCy0LXRgNGP0Y7Rgi4g0JzRiyDRg9C20LUg0L3QtQogICAgICAgICAg0L/QtdGA0LLRi9C5INCz0L7QtCDQvdCwINGA0YvQvdC60LUg0Lgg0LfQsCDRjdGC0L4g0LLRgNC10LzRjyDQt9Cw0YDQsNCx0L7RgtCw0LvQuCDRgNC10L/Rg9GC0LDRhtC40Y4g0L3QsNC00ZHQttC90L7Qs9C+CiAgICAgICAgICDQv9Cw0YDRgtC90ZHRgNCwLjxiciAvPgogICAgICAgICAg0J3QsNGIINC+0L/Ri9GCIOKAlCDQstCw0YjQsCDQs9Cw0YDQsNC90YLQuNGPINGD0LLQtdGA0LXQvdC90YvRhSDQv9C+0LrRg9C/0L7Qui48YnIgLz48YnIgLz4KICAgICAgICAgINCc0Ysg0L/RgNC10LTQu9Cw0LPQsNC10Lwg0YLQvtC70YzQutC+INC+0YLQsdC+0YDQvdGL0Lkg0Lgg0L/RgNC+0LLQtdGA0LXQvdC90YvQuSDRgtC+0LLQsNGALiDQktGB0Y8g0L/RgNC+0LTRg9C60YbQuNGPCiAgICAgICAgICDQv9GA0L7RhdC+0LTQuNGCINGB0YLRgNC+0LPQuNC5INC60L7QvdGC0YDQvtC70Ywg0LrQsNGH0LXRgdGC0LLQsCwg0L/QvtGN0YLQvtC80YMg0LLRiyDQvNC+0LbQtdGC0LUg0LHRi9GC0Ywg0YPQstC10YDQtdC90Ys6INGDCiAgICAgICAgICDQvdCw0YEg4oCUINGC0L7Qu9GM0LrQviDQu9GD0YfRiNC10LUuINCc0Ysg0L3QtSDQuNC00ZHQvCDQvdCwINC60L7QvNC/0YDQvtC80LjRgdGB0YssINC60L7Qs9C00LAg0YDQtdGH0Ywg0LjQtNGR0YIg0L4KICAgICAgICAgINC60LDRh9C10YHRgtCy0LUuCiAgICAgICAgPC9wPgogICAgICAgIDxkaXYgY2xhc3M9Imhlcm9fX2xpbmtzIj4KICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdC5tZS9FTElYSVJfU0hPUDRfQm90IiB0YXJnZXQ9Il9ibGFuayI+VGVsZWdyYW08L2E+CiAgICAgICAgICA8YSBocmVmPSJodHRwczovL2VseHIyNC52aXAiIHRhcmdldD0iX2JsYW5rIj7QnNCw0LPQsNC30LjQvTwvYT4KICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdC5tZS9FTElYSVI0ZGlzcGF0Y2hlcl9ib3QiIHRhcmdldD0iX2JsYW5rIj7QoNCw0LHQvtGC0LA8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJiYW5uZXIiPgogICAgICAgIDxpbWcgc3JjPSIuL2Fzc2V0cy9pbWcvYmFubmVyLmpwZyIgYWx0PSIiIC8+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19pbm5lciI+CiAgICAgICAgICA8aDIgY2xhc3M9ImNhbGN1bGF0b3JfX3RpdGxlIj7QmtCw0LvRjNC60YPQu9GP0YLQvtGAINC00L7RhdC+0LTQsDwvaDI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cCI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYWxjdWxhdG9yX19sYWJlbCI+0J/RgNC+0YTQtdGB0YHQuNGPPC9zcGFuPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cC1yb3ciIGRhdGEtZ3JvdXA9IndvcmsiPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNhbGN1bGF0b3JfX2J0biBhY3RpdmUiIGRhdGEtdmFsdWU9IjEiPgogICAgICAgICAgICAgICAg0JrRg9GA0YzQtdGACiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSIyIj4KICAgICAgICAgICAgICAgINCe0L/RgtC+0LLRi9C5INC60YPRgNGM0LXRgAogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNhbGN1bGF0b3JfX2J0biIgZGF0YS12YWx1ZT0iMyI+0KHQutC70LDQtDwvYnV0dG9uPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNhbGN1bGF0b3JfX2J0biIgZGF0YS12YWx1ZT0iNCI+0J/QtdGA0LXQstC+0LfRh9C40Lo8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwLWZpZWxkcyIgaWQ9Imdyb3VwMSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FsY3VsYXRvcl9fbGFiZWwiPtCT0L7RgNC+0LQ8L3NwYW4+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAtcm93IiBkYXRhLWdyb3VwPSJjaXR5Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNhbGN1bGF0b3JfX2J0biIgZGF0YS12YWx1ZT0iMSI+0JzQvtGB0LrQstCwPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjIiPgogICAgICAgICAgICAgICAgICDQnNC+0YHQutC+0LLRgdC60LDRjyDQvtCx0LvQsNGB0YLRjAogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjMiPgogICAgICAgICAgICAgICAgICDQodCw0L3QutGCLdCf0LXRgtC10YDQsdGD0YDQswogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjQiPgogICAgICAgICAgICAgICAgICDQlNGA0YPQs9C40LUg0LPQvtGA0L7QtNCwCiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FsY3VsYXRvcl9fbGFiZWwiPtCi0LjQvyDQutC70LDQtNCwPC9zcGFuPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwLXJvdyIgZGF0YS1ncm91cD0idHlwZSI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjEiPgogICAgICAgICAgICAgICAgICDQnNCw0LPQvdC40YIv0J/QvtC00YrQtdC30LQKICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSIyIj7QotCw0LnQvdC40Lo8L2J1dHRvbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FsY3VsYXRvcl9fbGFiZWwiPtCk0LDRgdC+0LLQutCwPC9zcGFuPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwLXJvdyIgZGF0YS1ncm91cD0id2VpZ2h0Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNhbGN1bGF0b3JfX2J0biIgZGF0YS12YWx1ZT0iMSI+MC4xLTAuM9CzPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjIiPjAuNdCzPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjMiPjHQszwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSI0Ij4y0LM8L2J1dHRvbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FsY3VsYXRvcl9fbGFiZWwiPtCg0LDQsdC+0YfQuNC1INC00L3QuCDQsiDQvNC10YHRj9GGPC9zcGFuPgogICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgbmFtZT0id29yay1kYXlzIgogICAgICAgICAgICAgICAgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwLWlucHV0IgogICAgICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICAgICAgbWluPSIxIgogICAgICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgICAgIG1heD0iMzAiCiAgICAgICAgICAgICAgLz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2FsY3VsYXRvcl9fbGFiZWwiPtCX0LDQutCw0LfRiyDQsiDQtNC10L3RjDwvc3Bhbj4KICAgICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICAgIG5hbWU9Im9yZGVycyIKICAgICAgICAgICAgICAgIGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cC1pbnB1dCIKICAgICAgICAgICAgICAgIHR5cGU9Im51bWJlciIKICAgICAgICAgICAgICAgIG1pbj0iMSIKICAgICAgICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICAgICAgICBtYXg9IjUwMCIKICAgICAgICAgICAgICAvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsY3VsYXRvcl9fc3dpdGNoLXJvdyIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDI1cHgiPgogICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iY2FsY3VsYXRvcl9fc3dpdGNoIHN3aXRjaCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJjYW8iIG5hbWU9ImNhbyIgLz4KICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+CiAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImNhbGN1bGF0b3JfX3N3aXRjaC1sYWJlbCIgZm9yPSJjYW8iPtCm0JDQnjwvbGFiZWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19zd2l0Y2gtcm93Ij4KICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImNhbGN1bGF0b3JfX3N3aXRjaCBzd2l0Y2giPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0icHJlbWl1bSIgbmFtZT0icHJlbWl1bSIgLz4KICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+CiAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImNhbGN1bGF0b3JfX3N3aXRjaC1sYWJlbCIgZm9yPSJwcmVtaXVtIgogICAgICAgICAgICAgICAgPtCh0YLQsNGC0YPRgSDQv9GA0LXQvNC40YPQvDwvbGFiZWwKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cC1maWVsZHMiCiAgICAgICAgICAgIGlkPSJncm91cDIiCiAgICAgICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lIgogICAgICAgICAgPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cCI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhbGN1bGF0b3JfX2xhYmVsIj7Qk9C+0YDQvtC0PC9zcGFuPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwLXJvdyIgZGF0YS1ncm91cD0iY2l0eSI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjEiPtCc0L7RgdC60LLQsDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSIyIj4KICAgICAgICAgICAgICAgICAg0JzQvtGB0LrQvtCy0YHQutCw0Y8g0L7QsdC70LDRgdGC0YwKICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSIzIj4KICAgICAgICAgICAgICAgICAg0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMKICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSI0Ij4KICAgICAgICAgICAgICAgICAg0JTRgNGD0LPQuNC1INCz0L7RgNC+0LTQsAogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cCI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhbGN1bGF0b3JfX2xhYmVsIj7QpNCw0YHQvtCy0LrQsDwvc3Bhbj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cC1yb3ciIGRhdGEtZ3JvdXA9IndlaWdodCI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjEiPjXQszwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSIyIj4xMNCzPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjMiPjIw0LM8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNhbGN1bGF0b3JfX2J0biIgZGF0YS12YWx1ZT0iNCI+NTDQszwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSI1Ij4xMDDQszwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYWxjdWxhdG9yX19sYWJlbCI+0KDQsNCx0L7Rh9C40LUg0LTQvdC4INCyINC80LXRgdGP0YY8L3NwYW4+CiAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICBuYW1lPSJ3b3JrLWRheXMiCiAgICAgICAgICAgICAgICBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAtaW5wdXQiCiAgICAgICAgICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgICAgICAgICBtaW49IjEiCiAgICAgICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICAgICAgbWF4PSIzMCIKICAgICAgICAgICAgICAvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYWxjdWxhdG9yX19sYWJlbCI+0JfQsNC60LDQt9GLINCyINC00LXQvdGMPC9zcGFuPgogICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgbmFtZT0ib3JkZXJzIgogICAgICAgICAgICAgICAgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwLWlucHV0IgogICAgICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICAgICAgbWluPSIxIgogICAgICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgICAgIG1heD0iNTAwIgogICAgICAgICAgICAgIC8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19zd2l0Y2gtcm93Ij4KICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImNhbGN1bGF0b3JfX3N3aXRjaCBzd2l0Y2giPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0icHJlbWl1bSIgbmFtZT0icHJlbWl1bSIgLz4KICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+CiAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImNhbGN1bGF0b3JfX3N3aXRjaC1sYWJlbCIgZm9yPSJwcmVtaXVtIgogICAgICAgICAgICAgICAgPtCh0YLQsNGC0YPRgSDQv9GA0LXQvNC40YPQvDwvbGFiZWwKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cC1maWVsZHMiCiAgICAgICAgICAgIGlkPSJncm91cDMiCiAgICAgICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lIgogICAgICAgICAgPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cCI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhbGN1bGF0b3JfX2xhYmVsIj7Qk9C+0YDQvtC0PC9zcGFuPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwLXJvdyIgZGF0YS1ncm91cD0iY2l0eSI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjEiPtCc0L7RgdC60LLQsDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSIyIj4KICAgICAgICAgICAgICAgICAg0JzQvtGB0LrQvtCy0YHQutCw0Y8g0L7QsdC70LDRgdGC0YwKICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSIzIj4KICAgICAgICAgICAgICAgICAg0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMKICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSI0Ij4KICAgICAgICAgICAgICAgICAg0JTRgNGD0LPQuNC1INCz0L7RgNC+0LTQsAogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cCI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhbGN1bGF0b3JfX2xhYmVsIj7QpNCw0YHQvtCy0LrQsDwvc3Bhbj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cC1yb3ciIGRhdGEtZ3JvdXA9IndlaWdodCI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjEiPjXQszwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSIyIj4xMNCzPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjMiPjIw0LM8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNhbGN1bGF0b3JfX2J0biIgZGF0YS12YWx1ZT0iNCI+NTDQszwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSI1Ij4xMDDQszwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYWxjdWxhdG9yX19sYWJlbCI+0KDQsNCx0L7Rh9C40LUg0LTQvdC4INCyINC80LXRgdGP0YY8L3NwYW4+CiAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICBuYW1lPSJ3b3JrLWRheXMiCiAgICAgICAgICAgICAgICBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAtaW5wdXQiCiAgICAgICAgICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgICAgICAgICBtaW49IjEiCiAgICAgICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICAgICAgbWF4PSIzMCIKICAgICAgICAgICAgICAvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYWxjdWxhdG9yX19sYWJlbCI+0JfQsNC60LDQt9GLINCyINC00LXQvdGMPC9zcGFuPgogICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgbmFtZT0ib3JkZXJzIgogICAgICAgICAgICAgICAgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwLWlucHV0IgogICAgICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICAgICAgbWluPSIxIgogICAgICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgICAgIG1heD0iNTAwIgogICAgICAgICAgICAgIC8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cC1maWVsZHMiCiAgICAgICAgICAgIGlkPSJncm91cDQiCiAgICAgICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lIgogICAgICAgICAgPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cCI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhbGN1bGF0b3JfX2xhYmVsIj7Qk9C+0YDQvtC0PC9zcGFuPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGN1bGF0b3JfX2dyb3VwLXJvdyIgZGF0YS1ncm91cD0iY2l0eSI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjEiPtCc0L7RgdC60LLQsDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSIyIj4KICAgICAgICAgICAgICAgICAg0JzQvtGB0LrQvtCy0YHQutCw0Y8g0L7QsdC70LDRgdGC0YwKICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSIzIj4KICAgICAgICAgICAgICAgICAg0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMKICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSI0Ij4KICAgICAgICAgICAgICAgICAg0JTRgNGD0LPQuNC1INCz0L7RgNC+0LTQsAogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cCI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhbGN1bGF0b3JfX2xhYmVsIj7QpNCw0YHQvtCy0LrQsDwvc3Bhbj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19ncm91cC1yb3ciIGRhdGEtZ3JvdXA9IndlaWdodCI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjEiPjXQszwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSIyIj4xMNCzPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19idG4iIGRhdGEtdmFsdWU9IjMiPjIw0LM8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImNhbGN1bGF0b3JfX2J0biIgZGF0YS12YWx1ZT0iNCI+NTDQszwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iY2FsY3VsYXRvcl9fYnRuIiBkYXRhLXZhbHVlPSI1Ij4xMDDQszwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYWxjdWxhdG9yX19sYWJlbCI+0KDQsNCx0L7Rh9C40LUg0LTQvdC4INCyINC80LXRgdGP0YY8L3NwYW4+CiAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICBuYW1lPSJ3b3JrLWRheXMiCiAgICAgICAgICAgICAgICBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAtaW5wdXQiCiAgICAgICAgICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgICAgICAgICBtaW49IjEiCiAgICAgICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICAgICAgbWF4PSIzMCIKICAgICAgICAgICAgICAvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYWxjdWxhdG9yX19sYWJlbCI+0JLQtdGBINCyINGA0LXQudGB0LUgKNC60LMpPC9zcGFuPgogICAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgbmFtZT0idHJpcC13ZWlnaHQiCiAgICAgICAgICAgICAgICBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAtaW5wdXQiCiAgICAgICAgICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgICAgICAgICBtaW49IjAuNSIKICAgICAgICAgICAgICAgIHN0ZXA9IjAuMSIKICAgICAgICAgICAgICAgIG1heD0iNTAwMCIKICAgICAgICAgICAgICAvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYWxjdWxhdG9yX19sYWJlbCI+0JrQuNC70L7QvNC10YLRgNC+0LIg0LIg0LTQtdC90Yw8L3NwYW4+CiAgICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgICBuYW1lPSJkYXktZGlzdGFuY2UiCiAgICAgICAgICAgICAgICBjbGFzcz0iY2FsY3VsYXRvcl9fZ3JvdXAtaW5wdXQiCiAgICAgICAgICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgICAgICAgICBtaW49IjEiCiAgICAgICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICAgICAgbWF4PSI1MDAwIgogICAgICAgICAgICAgIC8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJjYWxjdWxhdG9yX19zdWJtaXQiPtCg0LDRgdGB0YfQuNGC0LDRgtGMPC9idXR0b24+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYWxjdWxhdG9yX19yZXN1bHQiPtCS0LDRiCDQtNC+0YXQvtC0OiAwJm5ic3A74oK9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJ0ZXN0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0X19pbm5lciI+CiAgICAgICAgICA8aDMgY2xhc3M9InRlc3RfX3RpdGxlIj7QmtCw0LrQvtC5INGC0Ysg0YHQvtGC0YDRg9C00L3QuNC6PzwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0idGVzdF9fdGV4dCI+CiAgICAgICAgICAgINCf0YDQvtC50LTQuCDQvdC10LHQvtC70YzRiNC+0Lkg0YLQtdGB0YIsINGH0YLQvtCx0Ysg0YPQt9C90LDRgtGMLCDQutCw0LrQvtC5INGC0LjQvyDRgNCw0LHQvtGC0Ysg0YLQtdCx0LUg0L/QvtC00YXQvtC00LjRgiEKICAgICAgICAgIDwvcD4KICAgICAgICAgIDxwIGNsYXNzPSJ0ZXN0X19xdWVzdGlvbiI+PC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0idGVzdF9fYW5zd2VycyI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJmb290ZXIiPgogICAgICAgIDxoMiBjbGFzcz0iZm9vdGVyX190aXRsZSI+0KMg0LLQsNGBINC+0YHRgtCw0LvQuNGB0Ywg0LLQvtC/0YDQvtGB0Ys/PC9oMj4KICAgICAgICA8cCBjbGFzcz0iZm9vdGVyX190ZXh0Ij4KICAgICAgICAgINCd0LDRiNC4INC80LXQvdC10LTQttC10YDRiyDQstGB0LXQs9C00LAg0L3QsCDRgdCy0Y/Qt9C4INC4INCz0L7RgtC+0LLRiyDQktCw0YEg0L/RgNC+0LrQvtC90YHRg9C70YzRgtC40YDQvtCy0LDRgtGMCiAgICAgICAgPC9wPgogICAgICAgIDxhIGNsYXNzPSJmb290ZXJfX2J0biIgaHJlZj0iaHR0cHM6Ly90Lm1lL0VMSVhJUjRkaXNwYXRjaGVyX2JvdCIgdGFyZ2V0PSJfYmxhbmsiPtCe0L/QtdGA0LDRgtC+0YAgVEc8L2E+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8c2NyaXB0IHNyYz0iLi9hc3NldHMvanMvanF1ZXJ5LTMuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi9hc3NldHMvanMvYXBwLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIuL2Fzc2V0cy9qcy90ZXN0LmpzIj48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg=="}},"time_used":245,"timings":{"blocked":0,"dns":174,"connect":15,"send":0,"wait":17,"receive":0,"ssl":39},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/assets/js/jquery-3.7.1.min.js","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:51.931Z","timestamp":1785161271931,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"elxr24.cc","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 03 Jun 2026 07:35:05 GMT","end":"Tue, 01 Sep 2026 07:35:04 GMT"},"fingerprint":{"sha1":"12:3F:CB:7D:FB:C0:91:E3:23:CA:98:8C:CB:80:67:4C:9D:50:FF:C4","sha256":"DD:B7:2F:32:FE:FB:45:B3:5D:1F:1F:45:3E:4F:FD:35:65:70:79:E3:29:04:54:1D:C3:AC:CC:DC:56:40:57:6F"}}},"request":{"raw":"GET /assets/js/jquery-3.7.1.min.js HTTP/1.1\r\nHost: elxr24.shop\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://elxr24.shop/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nServer: nginx/1.22.1\r\nDate: Mon, 27 Jul 2026 14:07:51 GMT\r\nContent-Type: application/javascript\r\nContent-Length: 87533\r\nLast-Modified: Thu, 02 Oct 2025 07:35:16 GMT\r\nConnection: keep-alive\r\nETag: \"68de2b34-155ed\"\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.22.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":87533,"size_decoded":87788,"mime_type":"application/javascript","magic":"JavaScript source, ASCII text, with very long lines (65447)","md5":"2c872dbe60f4ba70fb85356113d8b35e","sha1":"ee48592d1fff952fcf06ce0b666ed4785493afdc","sha256":"fc9a93dd241f6b045cbff0481cf4e1901becd0e12fb45166a8f17f95823f0b1a","sha512":"bf6089ed4698cb8270a8b0c8ad9508ff886a7a842278e98064d5c1790ca3a36d5d69d9f047ef196882554fc104da2c88eb5395f1ee8cf0f3f6ff8869408350fe","ssdeep":"1536:0RUX9uDgwxcy2KVBNwchN6SLaHEk2BSrBESp+a/IEk4aAocVi8SMBQ47GKr:sHNwcv9VBQpLl88SMBQ47GKr","tlshash":"3983f8df77ca702247ab30b9006f550bf276199d684d4400f159d8e9bcb8a4a827bf7e","first_seen":"2023-08-31T16:03:19Z","last_seen":"2026-08-15T13:44:01.979592Z","times_seen":185855,"resource_available":true,"data":"LyohIGpRdWVyeSB2My43LjEgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZS5kb2N1bWVudD90KGUsITApOmZ1bmN0aW9uKGUpe2lmKCFlLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiB0KGUpfTp0KGUpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihpZSxlKXsidXNlIHN0cmljdCI7dmFyIG9lPVtdLHI9T2JqZWN0LmdldFByb3RvdHlwZU9mLGFlPW9lLnNsaWNlLGc9b2UuZmxhdD9mdW5jdGlvbihlKXtyZXR1cm4gb2UuZmxhdC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gb2UuY29uY2F0LmFwcGx5KFtdLGUpfSxzPW9lLnB1c2gsc2U9b2UuaW5kZXhPZixuPXt9LGk9bi50b1N0cmluZyx1ZT1uLmhhc093blByb3BlcnR5LG89dWUudG9TdHJpbmcsYT1vLmNhbGwoT2JqZWN0KSxsZT17fSx2PWZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYibnVtYmVyIiE9dHlwZW9mIGUubm9kZVR5cGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLml0ZW19LHk9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJmU9PT1lLndpbmRvd30sQz1pZS5kb2N1bWVudCx1PXt0eXBlOiEwLHNyYzohMCxub25jZTohMCxub01vZHVsZTohMH07ZnVuY3Rpb24gbShlLHQsbil7dmFyIHIsaSxvPShuPW58fEMpLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2lmKG8udGV4dD1lLHQpZm9yKHIgaW4gdSkoaT10W3JdfHx0LmdldEF0dHJpYnV0ZSYmdC5nZXRBdHRyaWJ1dGUocikpJiZvLnNldEF0dHJpYnV0ZShyLGkpO24uaGVhZC5hcHBlbmRDaGlsZChvKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pfWZ1bmN0aW9uIHgoZSl7cmV0dXJuIG51bGw9PWU/ZSsiIjoib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlP25baS5jYWxsKGUpXXx8Im9iamVjdCI6dHlwZW9mIGV9dmFyIHQ9IjMuNy4xIixsPS9IVE1MJC9pLGNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBjZS5mbi5pbml0KGUsdCl9O2Z1bmN0aW9uIGMoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49eChlKTtyZXR1cm4hdihlKSYmIXkoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9ZnVuY3Rpb24gZmUoZSx0KXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dC50b0xvd2VyQ2FzZSgpfWNlLmZuPWNlLnByb3RvdHlwZT17anF1ZXJ5OnQsY29uc3RydWN0b3I6Y2UsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBhZS5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/YWUuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Y2UubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGUpO3JldHVybiB0LnByZXZPYmplY3Q9dGhpcyx0fSxlYWNoOmZ1bmN0aW9uKGUpe3JldHVybiBjZS5lYWNoKHRoaXMsZSl9LG1hcDpmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soY2UubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYWUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXZlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhjZS5ncmVwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4odCsxKSUyfSkpfSxvZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soY2UuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQlMn0pKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgsbj0rZSsoZTwwP3Q6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PW4mJm48dD9bdGhpc1tuXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6cyxzb3J0Om9lLnNvcnQsc3BsaWNlOm9lLnNwbGljZX0sY2UuZXh0ZW5kPWNlLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBlLHQsbixyLGksbyxhPWFyZ3VtZW50c1swXXx8e30scz0xLHU9YXJndW1lbnRzLmxlbmd0aCxsPSExO2ZvcigiYm9vbGVhbiI9PXR5cGVvZiBhJiYobD1hLGE9YXJndW1lbnRzW3NdfHx7fSxzKyspLCJvYmplY3QiPT10eXBlb2YgYXx8dihhKXx8KGE9e30pLHM9PT11JiYoYT10aGlzLHMtLSk7czx1O3MrKylpZihudWxsIT0oZT1hcmd1bWVudHNbc10pKWZvcih0IGluIGUpcj1lW3RdLCJfX3Byb3RvX18iIT09dCYmYSE9PXImJihsJiZyJiYoY2UuaXNQbGFpbk9iamVjdChyKXx8KGk9QXJyYXkuaXNBcnJheShyKSkpPyhuPWFbdF0sbz1pJiYhQXJyYXkuaXNBcnJheShuKT9bXTppfHxjZS5pc1BsYWluT2JqZWN0KG4pP246e30saT0hMSxhW3RdPWNlLmV4dGVuZChsLG8scikpOnZvaWQgMCE9PXImJihhW3RdPXIpKTtyZXR1cm4gYX0sY2UuZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyh0K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGUpfSxub29wOmZ1bmN0aW9uKCl7fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuISghZXx8IltvYmplY3QgT2JqZWN0XSIhPT1pLmNhbGwoZSkpJiYoISh0PXIoZSkpfHwiZnVuY3Rpb24iPT10eXBlb2Yobj11ZS5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3IpJiZvLmNhbGwobik9PT1hKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGUsdCxuKXttKGUse25vbmNlOnQmJnQubm9uY2V9LG4pfSxlYWNoOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wO2lmKGMoZSkpe2ZvcihuPWUubGVuZ3RoO3I8bjtyKyspaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrfWVsc2UgZm9yKHIgaW4gZSlpZighMT09PXQuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWs7cmV0dXJuIGV9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj0iIixyPTAsaT1lLm5vZGVUeXBlO2lmKCFpKXdoaWxlKHQ9ZVtyKytdKW4rPWNlLnRleHQodCk7cmV0dXJuIDE9PT1pfHwxMT09PWk/ZS50ZXh0Q29udGVudDo5PT09aT9lLmRvY3VtZW50RWxlbWVudC50ZXh0Q29udGVudDozPT09aXx8ND09PWk/ZS5ub2RlVmFsdWU6bn0sbWFrZUFycmF5OmZ1bmN0aW9uKGUsdCl7dmFyIG49dHx8W107cmV0dXJuIG51bGwhPWUmJihjKE9iamVjdChlKSk/Y2UubWVyZ2Uobiwic3RyaW5nIj09dHlwZW9mIGU/W2VdOmUpOnMuY2FsbChuLGUpKSxufSxpbkFycmF5OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09dD8tMTpzZS5jYWxsKHQsZSxuKX0saXNYTUxEb2M6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5uYW1lc3BhY2VVUkksbj1lJiYoZS5vd25lckRvY3VtZW50fHxlKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIWwudGVzdCh0fHxuJiZuLm5vZGVOYW1lfHwiSFRNTCIpfSxtZXJnZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0rdC5sZW5ndGgscj0wLGk9ZS5sZW5ndGg7cjxuO3IrKyllW2krK109dFtyXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9W10saT0wLG89ZS5sZW5ndGgsYT0hbjtpPG87aSsrKSF0KGVbaV0saSkhPT1hJiZyLnB1c2goZVtpXSk7cmV0dXJuIHJ9LG1hcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPTAsYT1bXTtpZihjKGUpKWZvcihyPWUubGVuZ3RoO288cjtvKyspbnVsbCE9KGk9dChlW29dLG8sbikpJiZhLnB1c2goaSk7ZWxzZSBmb3IobyBpbiBlKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO3JldHVybiBnKGEpfSxndWlkOjEsc3VwcG9ydDpsZX0pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihjZS5mbltTeW1ib2wuaXRlcmF0b3JdPW9lW1N5bWJvbC5pdGVyYXRvcl0pLGNlLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7blsiW29iamVjdCAiK3QrIl0iXT10LnRvTG93ZXJDYXNlKCl9KTt2YXIgcGU9b2UucG9wLGRlPW9lLnNvcnQsaGU9b2Uuc3BsaWNlLGdlPSJbXFx4MjBcXHRcXHJcXG5cXGZdIix2ZT1uZXcgUmVnRXhwKCJeIitnZSsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitnZSsiKyQiLCJnIik7Y2UuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10JiZ0LnBhcmVudE5vZGU7cmV0dXJuIGU9PT1ufHwhKCFufHwxIT09bi5ub2RlVHlwZXx8IShlLmNvbnRhaW5zP2UuY29udGFpbnMobik6ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmMTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuKSkpfTt2YXIgZj0vKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlx4ODAtXHVGRkZGXHctXS9nO2Z1bmN0aW9uIHAoZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfWNlLmVzY2FwZVNlbGVjdG9yPWZ1bmN0aW9uKGUpe3JldHVybihlKyIiKS5yZXBsYWNlKGYscCl9O3ZhciB5ZT1DLG1lPXM7IWZ1bmN0aW9uKCl7dmFyIGUsYix3LG8sYSxULHIsQyxkLGksaz1tZSxTPWNlLmV4cGFuZG8sRT0wLG49MCxzPVcoKSxjPVcoKSx1PVcoKSxoPVcoKSxsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10JiYoYT0hMCksMH0sZj0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLHQ9Iig/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9IitnZSsiP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlwwLVxceDdmXSkrIixwPSJcXFsiK2dlKyIqKCIrdCsiKSg/OiIrZ2UrIiooWypeJHwhfl0/PSkiK2dlKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrdCsiKSl8KSIrZ2UrIipcXF0iLGc9IjooIit0KyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitwKyIpKil8LiopXFwpfCkiLHY9bmV3IFJlZ0V4cChnZSsiKyIsImciKSx5PW5ldyBSZWdFeHAoIl4iK2dlKyIqLCIrZ2UrIioiKSxtPW5ldyBSZWdFeHAoIl4iK2dlKyIqKFs+K35dfCIrZ2UrIikiK2dlKyIqIikseD1uZXcgUmVnRXhwKGdlKyJ8PiIpLGo9bmV3IFJlZ0V4cChnKSxBPW5ldyBSZWdFeHAoIl4iK3QrIiQiKSxEPXtJRDpuZXcgUmVnRXhwKCJeIygiK3QrIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrdCsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrdCsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK3ApLFBTRVVETzpuZXcgUmVnRXhwKCJeIitnKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK2dlKyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitnZSsiKig/OihbKy1dfCkiK2dlKyIqKFxcZCspfCkpIitnZSsiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgiXig/OiIrZisiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK2dlKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK2dlKyIqKCg/Oi1cXGQpP1xcZCopIitnZSsiKlxcKXwpKD89W14tXXwkKSIsImkiKX0sTj0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLHE9L15oXGQkL2ksTD0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLEg9L1srfl0vLE89bmV3IFJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn0iK2dlKyI/fFxcXFwoW15cXHJcXG5cXGZdKSIsImciKSxQPWZ1bmN0aW9uKGUsdCl7dmFyIG49IjB4IitlLnNsaWNlKDEpLTY1NTM2O3JldHVybiB0fHwobjwwP1N0cmluZy5mcm9tQ2hhckNvZGUobis2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShuPj4xMHw1NTI5NiwxMDIzJm58NTYzMjApKX0sTT1mdW5jdGlvbigpe1YoKX0sUj1KKGZ1bmN0aW9uKGUpe3JldHVybiEwPT09ZS5kaXNhYmxlZCYmZmUoZSwiZmllbGRzZXQiKX0se2RpcjoicGFyZW50Tm9kZSIsbmV4dDoibGVnZW5kIn0pO3RyeXtrLmFwcGx5KG9lPWFlLmNhbGwoeWUuY2hpbGROb2RlcykseWUuY2hpbGROb2Rlcyksb2VbeWUuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGUpe2s9e2FwcGx5OmZ1bmN0aW9uKGUsdCl7bWUuYXBwbHkoZSxhZS5jYWxsKHQpKX0sY2FsbDpmdW5jdGlvbihlKXttZS5hcHBseShlLGFlLmNhbGwoYXJndW1lbnRzLDEpKX19fWZ1bmN0aW9uIEkodCxlLG4scil7dmFyIGksbyxhLHMsdSxsLGMsZj1lJiZlLm93bmVyRG9jdW1lbnQscD1lP2Uubm9kZVR5cGU6OTtpZihuPW58fFtdLCJzdHJpbmciIT10eXBlb2YgdHx8IXR8fDEhPT1wJiY5IT09cCYmMTEhPT1wKXJldHVybiBuO2lmKCFyJiYoVihlKSxlPWV8fFQsQykpe2lmKDExIT09cCYmKHU9TC5leGVjKHQpKSlpZihpPXVbMV0pe2lmKDk9PT1wKXtpZighKGE9ZS5nZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIG47aWYoYS5pZD09PWkpcmV0dXJuIGsuY2FsbChuLGEpLG59ZWxzZSBpZihmJiYoYT1mLmdldEVsZW1lbnRCeUlkKGkpKSYmSS5jb250YWlucyhlLGEpJiZhLmlkPT09aSlyZXR1cm4gay5jYWxsKG4sYSksbn1lbHNle2lmKHVbMl0pcmV0dXJuIGsuYXBwbHkobixlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpKSxuO2lmKChpPXVbM10pJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIGsuYXBwbHkobixlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaSkpLG59aWYoIShoW3QrIiAiXXx8ZCYmZC50ZXN0KHQpKSl7aWYoYz10LGY9ZSwxPT09cCYmKHgudGVzdCh0KXx8bS50ZXN0KHQpKSl7KGY9SC50ZXN0KHQpJiZVKGUucGFyZW50Tm9kZSl8fGUpPT1lJiZsZS5zY29wZXx8KChzPWUuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPWNlLmVzY2FwZVNlbGVjdG9yKHMpOmUuc2V0QXR0cmlidXRlKCJpZCIscz1TKSksbz0obD1ZKHQpKS5sZW5ndGg7d2hpbGUoby0tKWxbb109KHM/IiMiK3M6IjpzY29wZSIpKyIgIitRKGxbb10pO2M9bC5qb2luKCIsIil9dHJ5e3JldHVybiBrLmFwcGx5KG4sZi5xdWVyeVNlbGVjdG9yQWxsKGMpKSxufWNhdGNoKGUpe2godCwhMCl9ZmluYWxseXtzPT09UyYmZS5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gcmUodC5yZXBsYWNlKHZlLCIkMSIpLGUsbixyKX1mdW5jdGlvbiBXKCl7dmFyIHI9W107cmV0dXJuIGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gci5wdXNoKHQrIiAiKT5iLmNhY2hlTGVuZ3RoJiZkZWxldGUgZVtyLnNoaWZ0KCldLGVbdCsiICJdPW59fWZ1bmN0aW9uIEYoZSl7cmV0dXJuIGVbU109ITAsZX1mdW5jdGlvbiAkKGUpe3ZhciB0PVQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISFlKHQpfWNhdGNoKGUpe3JldHVybiExfWZpbmFsbHl7dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksdD1udWxsfX1mdW5jdGlvbiBCKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZmUoZSwiaW5wdXQiKSYmZS50eXBlPT09dH19ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKGZlKGUsImlucHV0Iil8fGZlKGUsImJ1dHRvbiIpKSYmZS50eXBlPT09dH19ZnVuY3Rpb24geih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImZvcm0iaW4gZT9lLnBhcmVudE5vZGUmJiExPT09ZS5kaXNhYmxlZD8ibGFiZWwiaW4gZT8ibGFiZWwiaW4gZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5kaXNhYmxlZD09PXQ6ZS5kaXNhYmxlZD09PXQ6ZS5pc0Rpc2FibGVkPT09dHx8ZS5pc0Rpc2FibGVkIT09IXQmJlIoZSk9PT10OmUuZGlzYWJsZWQ9PT10OiJsYWJlbCJpbiBlJiZlLmRpc2FibGVkPT09dH19ZnVuY3Rpb24gWChhKXtyZXR1cm4gRihmdW5jdGlvbihvKXtyZXR1cm4gbz0rbyxGKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKFtdLGUubGVuZ3RoLG8pLGk9ci5sZW5ndGg7d2hpbGUoaS0tKWVbbj1yW2ldXSYmKGVbbl09ISh0W25dPWVbbl0pKX0pfSl9ZnVuY3Rpb24gVShlKXtyZXR1cm4gZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZlfWZ1bmN0aW9uIFYoZSl7dmFyIHQsbj1lP2Uub3duZXJEb2N1bWVudHx8ZTp5ZTtyZXR1cm4gbiE9VCYmOT09PW4ubm9kZVR5cGUmJm4uZG9jdW1lbnRFbGVtZW50JiYocj0oVD1uKS5kb2N1bWVudEVsZW1lbnQsQz0hY2UuaXNYTUxEb2MoVCksaT1yLm1hdGNoZXN8fHIud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxyLm1zTWF0Y2hlc1NlbGVjdG9yLHIubXNNYXRjaGVzU2VsZWN0b3ImJnllIT1UJiYodD1ULmRlZmF1bHRWaWV3KSYmdC50b3AhPT10JiZ0LmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsTSksbGUuZ2V0QnlJZD0kKGZ1bmN0aW9uKGUpe3JldHVybiByLmFwcGVuZENoaWxkKGUpLmlkPWNlLmV4cGFuZG8sIVQuZ2V0RWxlbWVudHNCeU5hbWV8fCFULmdldEVsZW1lbnRzQnlOYW1lKGNlLmV4cGFuZG8pLmxlbmd0aH0pLGxlLmRpc2Nvbm5lY3RlZE1hdGNoPSQoZnVuY3Rpb24oZSl7cmV0dXJuIGkuY2FsbChlLCIqIil9KSxsZS5zY29wZT0kKGZ1bmN0aW9uKCl7cmV0dXJuIFQucXVlcnlTZWxlY3RvckFsbCgiOnNjb3BlIil9KSxsZS5jc3NIYXM9JChmdW5jdGlvbigpe3RyeXtyZXR1cm4gVC5xdWVyeVNlbGVjdG9yKCI6aGFzKCosOmpxZmFrZSkiKSwhMX1jYXRjaChlKXtyZXR1cm4hMH19KSxsZS5nZXRCeUlkPyhiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoTyxQKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlKCJpZCIpPT09dH19LGIuZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50QnlJZCYmQyl7dmFyIG49dC5nZXRFbGVtZW50QnlJZChlKTtyZXR1cm4gbj9bbl06W119fSk6KGIuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZShPLFApO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiB0JiZ0LnZhbHVlPT09bn19LGIuZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50QnlJZCYmQyl7dmFyIG4scixpLG89dC5nZXRFbGVtZW50QnlJZChlKTtpZihvKXtpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb107aT10LmdldEVsZW1lbnRzQnlOYW1lKGUpLHI9MDt3aGlsZShvPWlbcisrXSlpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb119cmV0dXJuW119fSksYi5maW5kLlRBRz1mdW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFnTmFtZT90LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOnQucXVlcnlTZWxlY3RvckFsbChlKX0sYi5maW5kLkNMQVNTPWZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJkMpcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0sZD1bXSwkKGZ1bmN0aW9uKGUpe3ZhciB0O3IuYXBwZW5kQ2hpbGQoZSkuaW5uZXJIVE1MPSI8YSBpZD0nIitTKyInIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBpZD0nIitTKyItXHJcXCcgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsZS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RofHxkLnB1c2goIlxcWyIrZ2UrIiooPzp2YWx1ZXwiK2YrIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49IitTKyItXSIpLmxlbmd0aHx8ZC5wdXNoKCJ+PSIpLGUucXVlcnlTZWxlY3RvckFsbCgiYSMiK1MrIisqIikubGVuZ3RofHxkLnB1c2goIi4jLitbK35dIiksZS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8ZC5wdXNoKCI6Y2hlY2tlZCIpLCh0PVQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksci5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZD0hMCwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJmQucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSwodD1ULmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgibmFtZSIsIiIpLGUuYXBwZW5kQ2hpbGQodCksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGh8fGQucHVzaCgiXFxbIitnZSsiKm5hbWUiK2dlKyIqPSIrZ2UrIiooPzonJ3xcIlwiKSIpfSksbGUuY3NzSGFzfHxkLnB1c2goIjpoYXMiKSxkPWQubGVuZ3RoJiZuZXcgUmVnRXhwKGQuam9pbigifCIpKSxsPWZ1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGE9ITAsMDt2YXIgbj0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gbnx8KDEmKG49KGUub3duZXJEb2N1bWVudHx8ZSk9PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFsZS5zb3J0RGV0YWNoZWQmJnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSk9PT1uP2U9PT1UfHxlLm93bmVyRG9jdW1lbnQ9PXllJiZJLmNvbnRhaW5zKHllLGUpPy0xOnQ9PT1UfHx0Lm93bmVyRG9jdW1lbnQ9PXllJiZJLmNvbnRhaW5zKHllLHQpPzE6bz9zZS5jYWxsKG8sZSktc2UuY2FsbChvLHQpOjA6NCZuPy0xOjEpfSksVH1mb3IoZSBpbiBJLm1hdGNoZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSShlLG51bGwsbnVsbCx0KX0sSS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oZSx0KXtpZihWKGUpLEMmJiFoW3QrIiAiXSYmKCFkfHwhZC50ZXN0KHQpKSl0cnl7dmFyIG49aS5jYWxsKGUsdCk7aWYobnx8bGUuZGlzY29ubmVjdGVkTWF0Y2h8fGUuZG9jdW1lbnQmJjExIT09ZS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gbn1jYXRjaChlKXtoKHQsITApfXJldHVybiAwPEkodCxULG51bGwsW2VdKS5sZW5ndGh9LEkuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZS5vd25lckRvY3VtZW50fHxlKSE9VCYmVihlKSxjZS5jb250YWlucyhlLHQpfSxJLmF0dHI9ZnVuY3Rpb24oZSx0KXsoZS5vd25lckRvY3VtZW50fHxlKSE9VCYmVihlKTt2YXIgbj1iLmF0dHJIYW5kbGVbdC50b0xvd2VyQ2FzZSgpXSxyPW4mJnVlLmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUMpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cj9yOmUuZ2V0QXR0cmlidXRlKHQpfSxJLmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitlKX0sY2UudW5pcXVlU29ydD1mdW5jdGlvbihlKXt2YXIgdCxuPVtdLHI9MCxpPTA7aWYoYT0hbGUuc29ydFN0YWJsZSxvPSFsZS5zb3J0U3RhYmxlJiZhZS5jYWxsKGUsMCksZGUuY2FsbChlLGwpLGEpe3doaWxlKHQ9ZVtpKytdKXQ9PT1lW2ldJiYocj1uLnB1c2goaSkpO3doaWxlKHItLSloZS5jYWxsKGUsbltyXSwxKX1yZXR1cm4gbz1udWxsLGV9LGNlLmZuLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soY2UudW5pcXVlU29ydChhZS5hcHBseSh0aGlzKSkpfSwoYj1jZS5leHByPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86RixtYXRjaDpELGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihlKXtyZXR1cm4gZVsxXT1lWzFdLnJlcGxhY2UoTyxQKSxlWzNdPShlWzNdfHxlWzRdfHxlWzVdfHwiIikucmVwbGFjZShPLFApLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxJLmVycm9yKGVbMF0pLGVbNF09KyhlWzRdP2VbNV0rKGVbNl18fDEpOjIqKCJldmVuIj09PWVbM118fCJvZGQiPT09ZVszXSkpLGVbNV09KyhlWzddK2VbOF18fCJvZGQiPT09ZVszXSkpOmVbM10mJkkuZXJyb3IoZVswXSksZX0sUFNFVURPOmZ1bmN0aW9uKGUpe3ZhciB0LG49IWVbNl0mJmVbMl07cmV0dXJuIEQuQ0hJTEQudGVzdChlWzBdKT9udWxsOihlWzNdP2VbMl09ZVs0XXx8ZVs1XXx8IiI6biYmai50ZXN0KG4pJiYodD1ZKG4sITApKSYmKHQ9bi5pbmRleE9mKCIpIixuLmxlbmd0aC10KS1uLmxlbmd0aCkmJihlWzBdPWVbMF0uc2xpY2UoMCx0KSxlWzJdPW4uc2xpY2UoMCx0KSksZS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShPLFApLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09ZT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihlKXtyZXR1cm4gZmUoZSx0KX19LENMQVNTOmZ1bmN0aW9uKGUpe3ZhciB0PXNbZSsiICJdO3JldHVybiB0fHwodD1uZXcgUmVnRXhwKCIoXnwiK2dlKyIpIitlKyIoIitnZSsifCQpIikpJiZzKGUsZnVuY3Rpb24oZSl7cmV0dXJuIHQudGVzdCgic3RyaW5nIj09dHlwZW9mIGUuY2xhc3NOYW1lJiZlLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEF0dHJpYnV0ZSYmZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKG4scixpKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9SS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1pOiIhPSI9PT1yP3QhPT1pOiJePSI9PT1yP2kmJjA9PT10LmluZGV4T2YoaSk6Iio9Ij09PXI/aSYmLTE8dC5pbmRleE9mKGkpOiIkPSI9PT1yP2kmJnQuc2xpY2UoLWkubGVuZ3RoKT09PWk6In49Ij09PXI/LTE8KCIgIit0LnJlcGxhY2UodiwiICIpKyIgIikuaW5kZXhPZihpKToifD0iPT09ciYmKHQ9PT1pfHx0LnNsaWNlKDAsaS5sZW5ndGgrMSk9PT1pKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oZCxlLHQsaCxnKXt2YXIgdj0ibnRoIiE9PWQuc2xpY2UoMCwzKSx5PSJsYXN0IiE9PWQuc2xpY2UoLTQpLG09Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PWgmJjA9PT1nP2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1PXYhPT15PyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyIsbD1lLnBhcmVudE5vZGUsYz1tJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksZj0hbiYmIW0scD0hMTtpZihsKXtpZih2KXt3aGlsZSh1KXtvPWU7d2hpbGUobz1vW3VdKWlmKG0/ZmUobyxjKToxPT09by5ub2RlVHlwZSlyZXR1cm4hMTtzPXU9Im9ubHkiPT09ZCYmIXMmJiJuZXh0U2libGluZyJ9cmV0dXJuITB9aWYocz1beT9sLmZpcnN0Q2hpbGQ6bC5sYXN0Q2hpbGRdLHkmJmYpe3A9KGE9KHI9KGk9bFtTXXx8KGxbU109e30pKVtkXXx8W10pWzBdPT09RSYmclsxXSkmJnJbMl0sbz1hJiZsLmNoaWxkTm9kZXNbYV07d2hpbGUobz0rK2EmJm8mJm9bdV18fChwPWE9MCl8fHMucG9wKCkpaWYoMT09PW8ubm9kZVR5cGUmJisrcCYmbz09PWUpe2lbZF09W0UsYSxwXTticmVha319ZWxzZSBpZihmJiYocD1hPShyPShpPWVbU118fChlW1NdPXt9KSlbZF18fFtdKVswXT09PUUmJnJbMV0pLCExPT09cCl3aGlsZShvPSsrYSYmbyYmb1t1XXx8KHA9YT0wKXx8cy5wb3AoKSlpZigobT9mZShvLGMpOjE9PT1vLm5vZGVUeXBlKSYmKytwJiYoZiYmKChpPW9bU118fChvW1NdPXt9KSlbZF09W0UscF0pLG89PT1lKSlicmVhaztyZXR1cm4ocC09Zyk9PT1ofHxwJWg9PTAmJjA8PXAvaH19fSxQU0VVRE86ZnVuY3Rpb24oZSxvKXt2YXIgdCxhPWIucHNldWRvc1tlXXx8Yi5zZXRGaWx0ZXJzW2UudG9Mb3dlckNhc2UoKV18fEkuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIitlKTtyZXR1cm4gYVtTXT9hKG8pOjE8YS5sZW5ndGg/KHQ9W2UsZSwiIixvXSxiLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT9GKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKGUsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPXNlLmNhbGwoZSxyW2ldKV09ISh0W25dPXJbaV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDpGKGZ1bmN0aW9uKGUpe3ZhciByPVtdLGk9W10scz1uZShlLnJlcGxhY2UodmUsIiQxIikpO3JldHVybiBzW1NdP0YoZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz1zKGUsbnVsbCxyLFtdKSxhPWUubGVuZ3RoO3doaWxlKGEtLSkoaT1vW2FdKSYmKGVbYV09ISh0W2FdPWkpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gclswXT1lLHMocixudWxsLG4saSksclswXT1udWxsLCFpLnBvcCgpfX0pLGhhczpGKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gMDxJKHQsZSkubGVuZ3RofX0pLGNvbnRhaW5zOkYoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKE8sUCksZnVuY3Rpb24oZSl7cmV0dXJuLTE8KGUudGV4dENvbnRlbnR8fGNlLnRleHQoZSkpLmluZGV4T2YodCl9fSksbGFuZzpGKGZ1bmN0aW9uKG4pe3JldHVybiBBLnRlc3Qobnx8IiIpfHxJLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK24pLG49bi5yZXBsYWNlKE8sUCkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgdDtkb3tpZih0PUM/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWllLmxvY2F0aW9uJiZpZS5sb2NhdGlvbi5oYXNoO3JldHVybiB0JiZ0LnNsaWNlKDEpPT09ZS5pZH0scm9vdDpmdW5jdGlvbihlKXtyZXR1cm4gZT09PXJ9LGZvY3VzOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIFQuYWN0aXZlRWxlbWVudH1jYXRjaChlKXt9fSgpJiZULmhhc0ZvY3VzKCkmJiEhKGUudHlwZXx8ZS5ocmVmfHx+ZS50YWJJbmRleCl9LGVuYWJsZWQ6eighMSksZGlzYWJsZWQ6eighMCksY2hlY2tlZDpmdW5jdGlvbihlKXtyZXR1cm4gZmUoZSwiaW5wdXQiKSYmISFlLmNoZWNrZWR8fGZlKGUsIm9wdGlvbiIpJiYhIWUuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LCEwPT09ZS5zZWxlY3RlZH0sZW1wdHk6ZnVuY3Rpb24oZSl7Zm9yKGU9ZS5maXJzdENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKWlmKGUubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGUpe3JldHVybiFiLnBzZXVkb3MuZW1wdHkoZSl9LGhlYWRlcjpmdW5jdGlvbihlKXtyZXR1cm4gcS50ZXN0KGUubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihlKXtyZXR1cm4gTi50ZXN0KGUubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oZSl7cmV0dXJuIGZlKGUsImlucHV0IikmJiJidXR0b24iPT09ZS50eXBlfHxmZShlLCJidXR0b24iKX0sdGV4dDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gZmUoZSwiaW5wdXQiKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXQudG9Mb3dlckNhc2UoKSl9LGZpcnN0OlgoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OlgoZnVuY3Rpb24oZSx0KXtyZXR1cm5bdC0xXX0pLGVxOlgoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSksZXZlbjpYKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksb2RkOlgoZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MTtuPHQ7bis9MillLnB1c2gobik7cmV0dXJuIGV9KSxsdDpYKGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtmb3Iocj1uPDA/bit0OnQ8bj90Om47MDw9LS1yOyllLnB1c2gocik7cmV0dXJuIGV9KSxndDpYKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDpuOysrcjx0OyllLnB1c2gocik7cmV0dXJuIGV9KX19KS5wc2V1ZG9zLm50aD1iLnBzZXVkb3MuZXEse3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KWIucHNldWRvc1tlXT1CKGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPV8oZSk7ZnVuY3Rpb24gRygpe31mdW5jdGlvbiBZKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD1jW2UrIiAiXTtpZihsKXJldHVybiB0PzA6bC5zbGljZSgwKTthPWUscz1bXSx1PWIucHJlRmlsdGVyO3doaWxlKGEpe2ZvcihvIGluIG4mJiEocj15LmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHMucHVzaChpPVtdKSksbj0hMSwocj1tLmV4ZWMoYSkpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKHZlLCIgIil9KSxhPWEuc2xpY2Uobi5sZW5ndGgpKSxiLmZpbHRlcikhKHI9RFtvXS5leGVjKGEpKXx8dVtvXSYmIShyPXVbb10ocikpfHwobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6byxtYXRjaGVzOnJ9KSxhPWEuc2xpY2Uobi5sZW5ndGgpKTtpZighbilicmVha31yZXR1cm4gdD9hLmxlbmd0aDphP0kuZXJyb3IoZSk6YyhlLHMpLnNsaWNlKDApfWZ1bmN0aW9uIFEoZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aCxyPSIiO3Q8bjt0Kyspcis9ZVt0XS52YWx1ZTtyZXR1cm4gcn1mdW5jdGlvbiBKKGEsZSx0KXt2YXIgcz1lLmRpcix1PWUubmV4dCxsPXV8fHMsYz10JiYicGFyZW50Tm9kZSI9PT1sLGY9bisrO3JldHVybiBlLmZpcnN0P2Z1bmN0aW9uKGUsdCxuKXt3aGlsZShlPWVbc10paWYoMT09PWUubm9kZVR5cGV8fGMpcmV0dXJuIGEoZSx0LG4pO3JldHVybiExfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPVtFLGZdO2lmKG4pe3doaWxlKGU9ZVtzXSlpZigoMT09PWUubm9kZVR5cGV8fGMpJiZhKGUsdCxuKSlyZXR1cm4hMH1lbHNlIHdoaWxlKGU9ZVtzXSlpZigxPT09ZS5ub2RlVHlwZXx8YylpZihpPWVbU118fChlW1NdPXt9KSx1JiZmZShlLHUpKWU9ZVtzXXx8ZTtlbHNle2lmKChyPWlbbF0pJiZyWzBdPT09RSYmclsxXT09PWYpcmV0dXJuIG9bMl09clsyXTtpZigoaVtsXT1vKVsyXT1hKGUsdCxuKSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24gSyhpKXtyZXR1cm4gMTxpLmxlbmd0aD9mdW5jdGlvbihlLHQsbil7dmFyIHI9aS5sZW5ndGg7d2hpbGUoci0tKWlmKCFpW3JdKGUsdCxuKSlyZXR1cm4hMTtyZXR1cm4hMH06aVswXX1mdW5jdGlvbiBaKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O3M8dTtzKyspKG89ZVtzXSkmJihuJiYhbihvLHIsaSl8fChhLnB1c2gobyksbCYmdC5wdXNoKHMpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gZWUoZCxoLGcsdix5LGUpe3JldHVybiB2JiYhdltTXSYmKHY9ZWUodikpLHkmJiF5W1NdJiYoeT1lZSh5LGUpKSxGKGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHU9W10sbD1bXSxjPXQubGVuZ3RoLGY9ZXx8ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLGk9dC5sZW5ndGg7cjxpO3IrKylJKGUsdFtyXSxuKTtyZXR1cm4gbn0oaHx8IioiLG4ubm9kZVR5cGU/W25dOm4sW10pLHA9IWR8fCFlJiZoP2Y6WihmLHUsZCxuLHIpO2lmKGc/ZyhwLHM9eXx8KGU/ZDpjfHx2KT9bXTp0LG4scik6cz1wLHYpe2k9WihzLGwpLHYoaSxbXSxuLHIpLG89aS5sZW5ndGg7d2hpbGUoby0tKShhPWlbb10pJiYoc1tsW29dXT0hKHBbbFtvXV09YSkpfWlmKGUpe2lmKHl8fGQpe2lmKHkpe2k9W10sbz1zLmxlbmd0aDt3aGlsZShvLS0pKGE9c1tvXSkmJmkucHVzaChwW29dPWEpO3kobnVsbCxzPVtdLGkscil9bz1zLmxlbmd0aDt3aGlsZShvLS0pKGE9c1tvXSkmJi0xPChpPXk/c2UuY2FsbChlLGEpOnVbb10pJiYoZVtpXT0hKHRbaV09YSkpfX1lbHNlIHM9WihzPT09dD9zLnNwbGljZShjLHMubGVuZ3RoKTpzKSx5P3kobnVsbCx0LHMscik6ay5hcHBseSh0LHMpfSl9ZnVuY3Rpb24gdGUoZSl7Zm9yKHZhciBpLHQsbixyPWUubGVuZ3RoLG89Yi5yZWxhdGl2ZVtlWzBdLnR5cGVdLGE9b3x8Yi5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1KKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09aX0sYSwhMCksbD1KKGZ1bmN0aW9uKGUpe3JldHVybi0xPHNlLmNhbGwoaSxlKX0sYSwhMCksYz1bZnVuY3Rpb24oZSx0LG4pe3ZhciByPSFvJiYobnx8dCE9dyl8fCgoaT10KS5ub2RlVHlwZT91KGUsdCxuKTpsKGUsdCxuKSk7cmV0dXJuIGk9bnVsbCxyfV07czxyO3MrKylpZih0PWIucmVsYXRpdmVbZVtzXS50eXBlXSljPVtKKEsoYyksdCldO2Vsc2V7aWYoKHQ9Yi5maWx0ZXJbZVtzXS50eXBlXS5hcHBseShudWxsLGVbc10ubWF0Y2hlcykpW1NdKXtmb3Iobj0rK3M7bjxyO24rKylpZihiLnJlbGF0aXZlW2Vbbl0udHlwZV0pYnJlYWs7cmV0dXJuIGVlKDE8cyYmSyhjKSwxPHMmJlEoZS5zbGljZSgwLHMtMSkuY29uY2F0KHt2YWx1ZToiICI9PT1lW3MtMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZSh2ZSwiJDEiKSx0LHM8biYmdGUoZS5zbGljZShzLG4pKSxuPHImJnRlKGU9ZS5zbGljZShuKSksbjxyJiZRKGUpKX1jLnB1c2godCl9cmV0dXJuIEsoYyl9ZnVuY3Rpb24gbmUoZSx0KXt2YXIgbix2LHksbSx4LHIsaT1bXSxvPVtdLGE9dVtlKyIgIl07aWYoIWEpe3R8fCh0PVkoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKShhPXRlKHRbbl0pKVtTXT9pLnB1c2goYSk6by5wdXNoKGEpOyhhPXUoZSwodj1vLG09MDwoeT1pKS5sZW5ndGgseD0wPHYubGVuZ3RoLHI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdT0wLGw9IjAiLGM9ZSYmW10sZj1bXSxwPXcsZD1lfHx4JiZiLmZpbmQuVEFHKCIqIixpKSxoPUUrPW51bGw9PXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWQubGVuZ3RoO2ZvcihpJiYodz10PT1UfHx0fHxpKTtsIT09ZyYmbnVsbCE9KG89ZFtsXSk7bCsrKXtpZih4JiZvKXthPTAsdHx8by5vd25lckRvY3VtZW50PT1UfHwoVihvKSxuPSFDKTt3aGlsZShzPXZbYSsrXSlpZihzKG8sdHx8VCxuKSl7ay5jYWxsKHIsbyk7YnJlYWt9aSYmKEU9aCl9bSYmKChvPSFzJiZvKSYmdS0tLGUmJmMucHVzaChvKSl9aWYodSs9bCxtJiZsIT09dSl7YT0wO3doaWxlKHM9eVthKytdKXMoYyxmLHQsbik7aWYoZSl7aWYoMDx1KXdoaWxlKGwtLSljW2xdfHxmW2xdfHwoZltsXT1wZS5jYWxsKHIpKTtmPVooZil9ay5hcHBseShyLGYpLGkmJiFlJiYwPGYubGVuZ3RoJiYxPHUreS5sZW5ndGgmJmNlLnVuaXF1ZVNvcnQocil9cmV0dXJuIGkmJihFPWgsdz1wKSxjfSxtP0Yocik6cikpKS5zZWxlY3Rvcj1lfXJldHVybiBhfWZ1bmN0aW9uIHJlKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZSxjPSFyJiZZKGU9bC5zZWxlY3Rvcnx8ZSk7aWYobj1ufHxbXSwxPT09Yy5sZW5ndGgpe2lmKDI8KG89Y1swXT1jWzBdLnNsaWNlKDApKS5sZW5ndGgmJiJJRCI9PT0oYT1vWzBdKS50eXBlJiY5PT09dC5ub2RlVHlwZSYmQyYmYi5yZWxhdGl2ZVtvWzFdLnR5cGVdKXtpZighKHQ9KGIuZmluZC5JRChhLm1hdGNoZXNbMF0ucmVwbGFjZShPLFApLHQpfHxbXSlbMF0pKXJldHVybiBuO2wmJih0PXQucGFyZW50Tm9kZSksZT1lLnNsaWNlKG8uc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWk9RC5uZWVkc0NvbnRleHQudGVzdChlKT8wOm8ubGVuZ3RoO3doaWxlKGktLSl7aWYoYT1vW2ldLGIucmVsYXRpdmVbcz1hLnR5cGVdKWJyZWFrO2lmKCh1PWIuZmluZFtzXSkmJihyPXUoYS5tYXRjaGVzWzBdLnJlcGxhY2UoTyxQKSxILnRlc3Qob1swXS50eXBlKSYmVSh0LnBhcmVudE5vZGUpfHx0KSkpe2lmKG8uc3BsaWNlKGksMSksIShlPXIubGVuZ3RoJiZRKG8pKSlyZXR1cm4gay5hcHBseShuLHIpLG47YnJlYWt9fX1yZXR1cm4obHx8bmUoZSxjKSkocix0LCFDLG4sIXR8fEgudGVzdChlKSYmVSh0LnBhcmVudE5vZGUpfHx0KSxufUcucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBHLGxlLnNvcnRTdGFibGU9Uy5zcGxpdCgiIikuc29ydChsKS5qb2luKCIiKT09PVMsVigpLGxlLnNvcnREZXRhY2hlZD0kKGZ1bmN0aW9uKGUpe3JldHVybiAxJmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pLGNlLmZpbmQ9SSxjZS5leHByWyI6Il09Y2UuZXhwci5wc2V1ZG9zLGNlLnVuaXF1ZT1jZS51bmlxdWVTb3J0LEkuY29tcGlsZT1uZSxJLnNlbGVjdD1yZSxJLnNldERvY3VtZW50PVYsSS50b2tlbml6ZT1ZLEkuZXNjYXBlPWNlLmVzY2FwZVNlbGVjdG9yLEkuZ2V0VGV4dD1jZS50ZXh0LEkuaXNYTUw9Y2UuaXNYTUxEb2MsSS5zZWxlY3RvcnM9Y2UuZXhwcixJLnN1cHBvcnQ9Y2Uuc3VwcG9ydCxJLnVuaXF1ZVNvcnQ9Y2UudW5pcXVlU29ydH0oKTt2YXIgZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10saT12b2lkIDAhPT1uO3doaWxlKChlPWVbdF0pJiY5IT09ZS5ub2RlVHlwZSlpZigxPT09ZS5ub2RlVHlwZSl7aWYoaSYmY2UoZSkuaXMobikpYnJlYWs7ci5wdXNoKGUpfXJldHVybiByfSxoPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBlJiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufSxiPWNlLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LHc9L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7ZnVuY3Rpb24gVChlLG4scil7cmV0dXJuIHYobik/Y2UuZ3JlcChlLGZ1bmN0aW9uKGUsdCl7cmV0dXJuISFuLmNhbGwoZSx0LGUpIT09cn0pOm4ubm9kZVR5cGU/Y2UuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09biE9PXJ9KToic3RyaW5nIiE9dHlwZW9mIG4/Y2UuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybi0xPHNlLmNhbGwobixlKSE9PXJ9KTpjZS5maWx0ZXIobixlLHIpfWNlLmZpbHRlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dFswXTtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiksMT09PXQubGVuZ3RoJiYxPT09ci5ub2RlVHlwZT9jZS5maW5kLm1hdGNoZXNTZWxlY3RvcihyLGUpP1tyXTpbXTpjZS5maW5kLm1hdGNoZXMoZSxjZS5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfSkpfSxjZS5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPXRoaXMubGVuZ3RoLGk9dGhpcztpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIHRoaXMucHVzaFN0YWNrKGNlKGUpLmZpbHRlcihmdW5jdGlvbigpe2Zvcih0PTA7dDxyO3QrKylpZihjZS5jb250YWlucyhpW3RdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSx0PTA7dDxyO3QrKyljZS5maW5kKGUsaVt0XSxuKTtyZXR1cm4gMTxyP2NlLnVuaXF1ZVNvcnQobik6bn0sZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhUKHRoaXMsZXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhUKHRoaXMsZXx8W10sITApKX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuISFUKHRoaXMsInN0cmluZyI9PXR5cGVvZiBlJiZiLnRlc3QoZSk/Y2UoZSk6ZXx8W10sITEpLmxlbmd0aH19KTt2YXIgayxTPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87KGNlLmZuLmluaXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoIWUpcmV0dXJuIHRoaXM7aWYobj1ufHxrLCJzdHJpbmciPT10eXBlb2YgZSl7aWYoIShyPSI8Ij09PWVbMF0mJiI+Ij09PWVbZS5sZW5ndGgtMV0mJjM8PWUubGVuZ3RoP1tudWxsLGUsbnVsbF06Uy5leGVjKGUpKXx8IXJbMV0mJnQpcmV0dXJuIXR8fHQuanF1ZXJ5Pyh0fHxuKS5maW5kKGUpOnRoaXMuY29uc3RydWN0b3IodCkuZmluZChlKTtpZihyWzFdKXtpZih0PXQgaW5zdGFuY2VvZiBjZT90WzBdOnQsY2UubWVyZ2UodGhpcyxjZS5wYXJzZUhUTUwoclsxXSx0JiZ0Lm5vZGVUeXBlP3Qub3duZXJEb2N1bWVudHx8dDpDLCEwKSksdy50ZXN0KHJbMV0pJiZjZS5pc1BsYWluT2JqZWN0KHQpKWZvcihyIGluIHQpdih0aGlzW3JdKT90aGlzW3JdKHRbcl0pOnRoaXMuYXR0cihyLHRbcl0pO3JldHVybiB0aGlzfXJldHVybihpPUMuZ2V0RWxlbWVudEJ5SWQoclsyXSkpJiYodGhpc1swXT1pLHRoaXMubGVuZ3RoPTEpLHRoaXN9cmV0dXJuIGUubm9kZVR5cGU/KHRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOnYoZSk/dm9pZCAwIT09bi5yZWFkeT9uLnJlYWR5KGUpOmUoY2UpOmNlLm1ha2VBcnJheShlLHRoaXMpfSkucHJvdG90eXBlPWNlLmZuLGs9Y2UoQyk7dmFyIEU9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8saj17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmdW5jdGlvbiBBKGUsdCl7d2hpbGUoKGU9ZVt0XSkmJjEhPT1lLm5vZGVUeXBlKTtyZXR1cm4gZX1jZS5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihlKXt2YXIgdD1jZShlLHRoaXMpLG49dC5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxuO2UrKylpZihjZS5jb250YWlucyh0aGlzLHRbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0aCxvPVtdLGE9InN0cmluZyIhPXR5cGVvZiBlJiZjZShlKTtpZighYi50ZXN0KGUpKWZvcig7cjxpO3IrKylmb3Iobj10aGlzW3JdO24mJm4hPT10O249bi5wYXJlbnROb2RlKWlmKG4ubm9kZVR5cGU8MTEmJihhPy0xPGEuaW5kZXgobik6MT09PW4ubm9kZVR5cGUmJmNlLmZpbmQubWF0Y2hlc1NlbGVjdG9yKG4sZSkpKXtvLnB1c2gobik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8by5sZW5ndGg/Y2UudW5pcXVlU29ydChvKTpvKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBlP3NlLmNhbGwoY2UoZSksdGhpc1swXSk6c2UuY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soY2UudW5pcXVlU29ydChjZS5tZXJnZSh0aGlzLmdldCgpLGNlKGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLGNlLmVhY2goe3BhcmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7cmV0dXJuIHQmJjExIT09dC5ub2RlVHlwZT90Om51bGx9LHBhcmVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGQoZSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBkKGUsInBhcmVudE5vZGUiLG4pfSxuZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBBKGUsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oZSl7cmV0dXJuIEEoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIGQoZSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihlKXtyZXR1cm4gZChlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZChlLCJuZXh0U2libGluZyIsbil9LHByZXZVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGQoZSwicHJldmlvdXNTaWJsaW5nIixuKX0sc2libGluZ3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGgoKGUucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsZSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lLmNvbnRlbnREb2N1bWVudCYmcihlLmNvbnRlbnREb2N1bWVudCk/ZS5jb250ZW50RG9jdW1lbnQ6KGZlKGUsInRlbXBsYXRlIikmJihlPWUuY29udGVudHx8ZSksY2UubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9fSxmdW5jdGlvbihyLGkpe2NlLmZuW3JdPWZ1bmN0aW9uKGUsdCl7dmFyIG49Y2UubWFwKHRoaXMsaSxlKTtyZXR1cm4iVW50aWwiIT09ci5zbGljZSgtNSkmJih0PWUpLHQmJiJzdHJpbmciPT10eXBlb2YgdCYmKG49Y2UuZmlsdGVyKHQsbikpLDE8dGhpcy5sZW5ndGgmJihqW3JdfHxjZS51bmlxdWVTb3J0KG4pLEUudGVzdChyKSYmbi5yZXZlcnNlKCkpLHRoaXMucHVzaFN0YWNrKG4pfX0pO3ZhciBEPS9bXlx4MjBcdFxyXG5cZl0rL2c7ZnVuY3Rpb24gTihlKXtyZXR1cm4gZX1mdW5jdGlvbiBxKGUpe3Rocm93IGV9ZnVuY3Rpb24gTChlLHQsbixyKXt2YXIgaTt0cnl7ZSYmdihpPWUucHJvbWlzZSk/aS5jYWxsKGUpLmRvbmUodCkuZmFpbChuKTplJiZ2KGk9ZS50aGVuKT9pLmNhbGwoZSx0LG4pOnQuYXBwbHkodm9pZCAwLFtlXS5zbGljZShyKSl9Y2F0Y2goZSl7bi5hcHBseSh2b2lkIDAsW2VdKX19Y2UuQ2FsbGJhY2tzPWZ1bmN0aW9uKHIpe3ZhciBlLG47cj0ic3RyaW5nIj09dHlwZW9mIHI/KGU9cixuPXt9LGNlLmVhY2goZS5tYXRjaChEKXx8W10sZnVuY3Rpb24oZSx0KXtuW3RdPSEwfSksbik6Y2UuZXh0ZW5kKHt9LHIpO3ZhciBpLHQsbyxhLHM9W10sdT1bXSxsPS0xLGM9ZnVuY3Rpb24oKXtmb3IoYT1hfHxyLm9uY2Usbz1pPSEwO3UubGVuZ3RoO2w9LTEpe3Q9dS5zaGlmdCgpO3doaWxlKCsrbDxzLmxlbmd0aCkhMT09PXNbbF0uYXBwbHkodFswXSx0WzFdKSYmci5zdG9wT25GYWxzZSYmKGw9cy5sZW5ndGgsdD0hMSl9ci5tZW1vcnl8fCh0PSExKSxpPSExLGEmJihzPXQ/W106IiIpfSxmPXthZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gcyYmKHQmJiFpJiYobD1zLmxlbmd0aC0xLHUucHVzaCh0KSksZnVuY3Rpb24gbihlKXtjZS5lYWNoKGUsZnVuY3Rpb24oZSx0KXt2KHQpP3IudW5pcXVlJiZmLmhhcyh0KXx8cy5wdXNoKHQpOnQmJnQubGVuZ3RoJiYic3RyaW5nIiE9PXgodCkmJm4odCl9KX0oYXJndW1lbnRzKSx0JiYhaSYmYygpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gY2UuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXt2YXIgbjt3aGlsZSgtMTwobj1jZS5pbkFycmF5KHQscyxuKSkpcy5zcGxpY2UobiwxKSxuPD1sJiZsLS19KSx0aGlzfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/LTE8Y2UuaW5BcnJheShlLHMpOjA8cy5sZW5ndGh9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHMmJihzPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGE9dT1bXSxzPXQ9IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hc30sbG9jazpmdW5jdGlvbigpe3JldHVybiBhPXU9W10sdHx8aXx8KHM9dD0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFhfSxmaXJlV2l0aDpmdW5jdGlvbihlLHQpe3JldHVybiBhfHwodD1bZSwodD10fHxbXSkuc2xpY2U/dC5zbGljZSgpOnRdLHUucHVzaCh0KSxpfHxjKCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIW99fTtyZXR1cm4gZn0sY2UuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihlKXt2YXIgbz1bWyJub3RpZnkiLCJwcm9ncmVzcyIsY2UuQ2FsbGJhY2tzKCJtZW1vcnkiKSxjZS5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLGNlLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxjZS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMCwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLGNlLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxjZS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMSwicmVqZWN0ZWQiXV0saT0icGVuZGluZyIsYT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIHMuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGUpe3JldHVybiBhLnRoZW4obnVsbCxlKX0scGlwZTpmdW5jdGlvbigpe3ZhciBpPWFyZ3VtZW50cztyZXR1cm4gY2UuRGVmZXJyZWQoZnVuY3Rpb24ocil7Y2UuZWFjaChvLGZ1bmN0aW9uKGUsdCl7dmFyIG49dihpW3RbNF1dKSYmaVt0WzRdXTtzW3RbMV1dKGZ1bmN0aW9uKCl7dmFyIGU9biYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSYmdihlLnByb21pc2UpP2UucHJvbWlzZSgpLnByb2dyZXNzKHIubm90aWZ5KS5kb25lKHIucmVzb2x2ZSkuZmFpbChyLnJlamVjdCk6clt0WzBdKyJXaXRoIl0odGhpcyxuP1tlXTphcmd1bWVudHMpfSl9KSxpPW51bGx9KS5wcm9taXNlKCl9LHRoZW46ZnVuY3Rpb24odCxuLHIpe3ZhciB1PTA7ZnVuY3Rpb24gbChpLG8sYSxzKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLHI9YXJndW1lbnRzLGU9ZnVuY3Rpb24oKXt2YXIgZSx0O2lmKCEoaTx1KSl7aWYoKGU9YS5hcHBseShuLHIpKT09PW8ucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpO3Q9ZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiZlLnRoZW4sdih0KT9zP3QuY2FsbChlLGwodSxvLE4scyksbCh1LG8scSxzKSk6KHUrKyx0LmNhbGwoZSxsKHUsbyxOLHMpLGwodSxvLHEscyksbCh1LG8sTixvLm5vdGlmeVdpdGgpKSk6KGEhPT1OJiYobj12b2lkIDAscj1bZV0pLChzfHxvLnJlc29sdmVXaXRoKShuLHIpKX19LHQ9cz9lOmZ1bmN0aW9uKCl7dHJ5e2UoKX1jYXRjaChlKXtjZS5EZWZlcnJlZC5leGNlcHRpb25Ib29rJiZjZS5EZWZlcnJlZC5leGNlcHRpb25Ib29rKGUsdC5lcnJvciksdTw9aSsxJiYoYSE9PXEmJihuPXZvaWQgMCxyPVtlXSksby5yZWplY3RXaXRoKG4scikpfX07aT90KCk6KGNlLkRlZmVycmVkLmdldEVycm9ySG9vaz90LmVycm9yPWNlLkRlZmVycmVkLmdldEVycm9ySG9vaygpOmNlLkRlZmVycmVkLmdldFN0YWNrSG9vayYmKHQuZXJyb3I9Y2UuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLGllLnNldFRpbWVvdXQodCkpfX1yZXR1cm4gY2UuRGVmZXJyZWQoZnVuY3Rpb24oZSl7b1swXVszXS5hZGQobCgwLGUsdihyKT9yOk4sZS5ub3RpZnlXaXRoKSksb1sxXVszXS5hZGQobCgwLGUsdih0KT90Ok4pKSxvWzJdWzNdLmFkZChsKDAsZSx2KG4pP246cSkpfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lP2NlLmV4dGVuZChlLGEpOmF9fSxzPXt9O3JldHVybiBjZS5lYWNoKG8sZnVuY3Rpb24oZSx0KXt2YXIgbj10WzJdLHI9dFs1XTthW3RbMV1dPW4uYWRkLHImJm4uYWRkKGZ1bmN0aW9uKCl7aT1yfSxvWzMtZV1bMl0uZGlzYWJsZSxvWzMtZV1bM10uZGlzYWJsZSxvWzBdWzJdLmxvY2ssb1swXVszXS5sb2NrKSxuLmFkZCh0WzNdLmZpcmUpLHNbdFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gc1t0WzBdKyJXaXRoIl0odGhpcz09PXM/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxzW3RbMF0rIldpdGgiXT1uLmZpcmVXaXRofSksYS5wcm9taXNlKHMpLGUmJmUuY2FsbChzLHMpLHN9LHdoZW46ZnVuY3Rpb24oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCx0PW4scj1BcnJheSh0KSxpPWFlLmNhbGwoYXJndW1lbnRzKSxvPWNlLkRlZmVycmVkKCksYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7clt0XT10aGlzLGlbdF09MTxhcmd1bWVudHMubGVuZ3RoP2FlLmNhbGwoYXJndW1lbnRzKTplLC0tbnx8by5yZXNvbHZlV2l0aChyLGkpfX07aWYobjw9MSYmKEwoZSxvLmRvbmUoYSh0KSkucmVzb2x2ZSxvLnJlamVjdCwhbiksInBlbmRpbmciPT09by5zdGF0ZSgpfHx2KGlbdF0mJmlbdF0udGhlbikpKXJldHVybiBvLnRoZW4oKTt3aGlsZSh0LS0pTChpW3RdLGEodCksby5yZWplY3QpO3JldHVybiBvLnByb21pc2UoKX19KTt2YXIgSD0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztjZS5EZWZlcnJlZC5leGNlcHRpb25Ib29rPWZ1bmN0aW9uKGUsdCl7aWUuY29uc29sZSYmaWUuY29uc29sZS53YXJuJiZlJiZILnRlc3QoZS5uYW1lKSYmaWUuY29uc29sZS53YXJuKCJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0aW9uOiAiK2UubWVzc2FnZSxlLnN0YWNrLHQpfSxjZS5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbihlKXtpZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfTt2YXIgTz1jZS5EZWZlcnJlZCgpO2Z1bmN0aW9uIFAoKXtDLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLFApLGllLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLFApLGNlLnJlYWR5KCl9Y2UuZm4ucmVhZHk9ZnVuY3Rpb24oZSl7cmV0dXJuIE8udGhlbihlKVsiY2F0Y2giXShmdW5jdGlvbihlKXtjZS5yZWFkeUV4Y2VwdGlvbihlKX0pLHRoaXN9LGNlLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihlKXsoITA9PT1lPy0tY2UucmVhZHlXYWl0OmNlLmlzUmVhZHkpfHwoY2UuaXNSZWFkeT0hMCkhPT1lJiYwPC0tY2UucmVhZHlXYWl0fHxPLnJlc29sdmVXaXRoKEMsW2NlXSl9fSksY2UucmVhZHkudGhlbj1PLnRoZW4sImNvbXBsZXRlIj09PUMucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09Qy5yZWFkeVN0YXRlJiYhQy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/aWUuc2V0VGltZW91dChjZS5yZWFkeSk6KEMuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsUCksaWUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsUCkpO3ZhciBNPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEpe3ZhciBzPTAsdT1lLmxlbmd0aCxsPW51bGw9PW47aWYoIm9iamVjdCI9PT14KG4pKWZvcihzIGluIGk9ITAsbilNKGUsdCxzLG5bc10sITAsbyxhKTtlbHNlIGlmKHZvaWQgMCE9PXImJihpPSEwLHYocil8fChhPSEwKSxsJiYoYT8odC5jYWxsKGUsciksdD1udWxsKToobD10LHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBsLmNhbGwoY2UoZSksbil9KSksdCkpZm9yKDtzPHU7cysrKXQoZVtzXSxuLGE/cjpyLmNhbGwoZVtzXSxzLHQoZVtzXSxuKSkpO3JldHVybiBpP2U6bD90LmNhbGwoZSk6dT90KGVbMF0sbik6b30sUj0vXi1tcy0vLEk9Ly0oW2Etel0pL2c7ZnVuY3Rpb24gVyhlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gRihlKXtyZXR1cm4gZS5yZXBsYWNlKFIsIm1zLSIpLnJlcGxhY2UoSSxXKX12YXIgJD1mdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV8fDk9PT1lLm5vZGVUeXBlfHwhK2Uubm9kZVR5cGV9O2Z1bmN0aW9uIEIoKXt0aGlzLmV4cGFuZG89Y2UuZXhwYW5kbytCLnVpZCsrfUIudWlkPTEsQi5wcm90b3R5cGU9e2NhY2hlOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdHx8KHQ9e30sJChlKSYmKGUubm9kZVR5cGU/ZVt0aGlzLmV4cGFuZG9dPXQ6T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdGhpcy5leHBhbmRvLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pKSksdH0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPXRoaXMuY2FjaGUoZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlbRih0KV09bjtlbHNlIGZvcihyIGluIHQpaVtGKHIpXT10W3JdO3JldHVybiBpfSxnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLmNhY2hlKGUpOmVbdGhpcy5leHBhbmRvXSYmZVt0aGlzLmV4cGFuZG9dW0YodCldfSxhY2Nlc3M6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10fHx0JiYic3RyaW5nIj09dHlwZW9mIHQmJnZvaWQgMD09PW4/dGhpcy5nZXQoZSx0KToodGhpcy5zZXQoZSx0LG4pLHZvaWQgMCE9PW4/bjp0KX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1lW3RoaXMuZXhwYW5kb107aWYodm9pZCAwIT09cil7aWYodm9pZCAwIT09dCl7bj0odD1BcnJheS5pc0FycmF5KHQpP3QubWFwKEYpOih0PUYodCkpaW4gcj9bdF06dC5tYXRjaChEKXx8W10pLmxlbmd0aDt3aGlsZShuLS0pZGVsZXRlIHJbdFtuXV19KHZvaWQgMD09PXR8fGNlLmlzRW1wdHlPYmplY3QocikpJiYoZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PXQmJiFjZS5pc0VtcHR5T2JqZWN0KHQpfX07dmFyIF89bmV3IEIsej1uZXcgQixYPS9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sVT0vW0EtWl0vZztmdW5jdGlvbiBWKGUsdCxuKXt2YXIgcixpO2lmKHZvaWQgMD09PW4mJjE9PT1lLm5vZGVUeXBlKWlmKHI9ImRhdGEtIit0LnJlcGxhY2UoVSwiLSQmIikudG9Mb3dlckNhc2UoKSwic3RyaW5nIj09dHlwZW9mKG49ZS5nZXRBdHRyaWJ1dGUocikpKXt0cnl7bj0idHJ1ZSI9PT0oaT1uKXx8ImZhbHNlIiE9PWkmJigibnVsbCI9PT1pP251bGw6aT09PStpKyIiPytpOlgudGVzdChpKT9KU09OLnBhcnNlKGkpOmkpfWNhdGNoKGUpe316LnNldChlLHQsbil9ZWxzZSBuPXZvaWQgMDtyZXR1cm4gbn1jZS5leHRlbmQoe2hhc0RhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHouaGFzRGF0YShlKXx8Xy5oYXNEYXRhKGUpfSxkYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gei5hY2Nlc3MoZSx0LG4pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7ei5yZW1vdmUoZSx0KX0sX2RhdGE6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBfLmFjY2VzcyhlLHQsbil9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7Xy5yZW1vdmUoZSx0KX19KSxjZS5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24obixlKXt2YXIgdCxyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PW4pe2lmKHRoaXMubGVuZ3RoJiYoaT16LmdldChvKSwxPT09by5ub2RlVHlwZSYmIV8uZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7dD1hLmxlbmd0aDt3aGlsZSh0LS0pYVt0XSYmMD09PShyPWFbdF0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9RihyLnNsaWNlKDUpKSxWKG8scixpW3JdKSk7Xy5zZXQobywiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGl9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP3RoaXMuZWFjaChmdW5jdGlvbigpe3ouc2V0KHRoaXMsbil9KTpNKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ7aWYobyYmdm9pZCAwPT09ZSlyZXR1cm4gdm9pZCAwIT09KHQ9ei5nZXQobyxuKSk/dDp2b2lkIDAhPT0odD1WKG8sbikpP3Q6dm9pZCAwO3RoaXMuZWFjaChmdW5jdGlvbigpe3ouc2V0KHRoaXMsbixlKX0pfSxudWxsLGUsMTxhcmd1bWVudHMubGVuZ3RoLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt6LnJlbW92ZSh0aGlzLGUpfSl9fSksY2UuZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoZSlyZXR1cm4gdD0odHx8ImZ4IikrInF1ZXVlIixyPV8uZ2V0KGUsdCksbiYmKCFyfHxBcnJheS5pc0FycmF5KG4pP3I9Xy5hY2Nlc3MoZSx0LGNlLm1ha2VBcnJheShuKSk6ci5wdXNoKG4pKSxyfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihlLHQpe3Q9dHx8ImZ4Ijt2YXIgbj1jZS5xdWV1ZShlLHQpLHI9bi5sZW5ndGgsaT1uLnNoaWZ0KCksbz1jZS5fcXVldWVIb29rcyhlLHQpOyJpbnByb2dyZXNzIj09PWkmJihpPW4uc2hpZnQoKSxyLS0pLGkmJigiZngiPT09dCYmbi51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIG8uc3RvcCxpLmNhbGwoZSxmdW5jdGlvbigpe2NlLmRlcXVldWUoZSx0KX0sbykpLCFyJiZvJiZvLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10KyJxdWV1ZUhvb2tzIjtyZXR1cm4gXy5nZXQoZSxuKXx8Xy5hY2Nlc3MoZSxuLHtlbXB0eTpjZS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7Xy5yZW1vdmUoZSxbdCsicXVldWUiLG5dKX0pfSl9fSksY2UuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbih0LG4pe3ZhciBlPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0JiYobj10LHQ9ImZ4IixlLS0pLGFyZ3VtZW50cy5sZW5ndGg8ZT9jZS5xdWV1ZSh0aGlzWzBdLHQpOnZvaWQgMD09PW4/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1jZS5xdWV1ZSh0aGlzLHQsbik7Y2UuX3F1ZXVlSG9va3ModGhpcyx0KSwiZngiPT09dCYmImlucHJvZ3Jlc3MiIT09ZVswXSYmY2UuZGVxdWV1ZSh0aGlzLHQpfSl9LGRlcXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2NlLmRlcXVldWUodGhpcyxlKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0xLGk9Y2UuRGVmZXJyZWQoKSxvPXRoaXMsYT10aGlzLmxlbmd0aCxzPWZ1bmN0aW9uKCl7LS1yfHxpLnJlc29sdmVXaXRoKG8sW29dKX07InN0cmluZyIhPXR5cGVvZiBlJiYodD1lLGU9dm9pZCAwKSxlPWV8fCJmeCI7d2hpbGUoYS0tKShuPV8uZ2V0KG9bYV0sZSsicXVldWVIb29rcyIpKSYmbi5lbXB0eSYmKHIrKyxuLmVtcHR5LmFkZChzKSk7cmV0dXJuIHMoKSxpLnByb21pc2UodCl9fSk7dmFyIEc9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsWT1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrRysiKShbYS16JV0qKSQiLCJpIiksUT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLEo9Qy5kb2N1bWVudEVsZW1lbnQsSz1mdW5jdGlvbihlKXtyZXR1cm4gY2UuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfSxaPXtjb21wb3NlZDohMH07Si5nZXRSb290Tm9kZSYmKEs9ZnVuY3Rpb24oZSl7cmV0dXJuIGNlLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8ZS5nZXRSb290Tm9kZShaKT09PWUub3duZXJEb2N1bWVudH0pO3ZhciBlZT1mdW5jdGlvbihlLHQpe3JldHVybiJub25lIj09PShlPXR8fGUpLnN0eWxlLmRpc3BsYXl8fCIiPT09ZS5zdHlsZS5kaXNwbGF5JiZLKGUpJiYibm9uZSI9PT1jZS5jc3MoZSwiZGlzcGxheSIpfTtmdW5jdGlvbiB0ZShlLHQsbixyKXt2YXIgaSxvLGE9MjAscz1yP2Z1bmN0aW9uKCl7cmV0dXJuIHIuY3VyKCl9OmZ1bmN0aW9uKCl7cmV0dXJuIGNlLmNzcyhlLHQsIiIpfSx1PXMoKSxsPW4mJm5bM118fChjZS5jc3NOdW1iZXJbdF0/IiI6InB4IiksYz1lLm5vZGVUeXBlJiYoY2UuY3NzTnVtYmVyW3RdfHwicHgiIT09bCYmK3UpJiZZLmV4ZWMoY2UuY3NzKGUsdCkpO2lmKGMmJmNbM10hPT1sKXt1Lz0yLGw9bHx8Y1szXSxjPSt1fHwxO3doaWxlKGEtLSljZS5zdHlsZShlLHQsYytsKSwoMS1vKSooMS0obz1zKCkvdXx8LjUpKTw9MCYmKGE9MCksYy89bztjKj0yLGNlLnN0eWxlKGUsdCxjK2wpLG49bnx8W119cmV0dXJuIG4mJihjPStjfHwrdXx8MCxpPW5bMV0/YysoblsxXSsxKSpuWzJdOituWzJdLHImJihyLnVuaXQ9bCxyLnN0YXJ0PWMsci5lbmQ9aSkpLGl9dmFyIG5lPXt9O2Z1bmN0aW9uIHJlKGUsdCl7Zm9yKHZhciBuLHIsaSxvLGEscyx1LGw9W10sYz0wLGY9ZS5sZW5ndGg7YzxmO2MrKykocj1lW2NdKS5zdHlsZSYmKG49ci5zdHlsZS5kaXNwbGF5LHQ/KCJub25lIj09PW4mJihsW2NdPV8uZ2V0KHIsImRpc3BsYXkiKXx8bnVsbCxsW2NdfHwoci5zdHlsZS5kaXNwbGF5PSIiKSksIiI9PT1yLnN0eWxlLmRpc3BsYXkmJmVlKHIpJiYobFtjXT0odT1hPW89dm9pZCAwLGE9KGk9cikub3duZXJEb2N1bWVudCxzPWkubm9kZU5hbWUsKHU9bmVbc10pfHwobz1hLmJvZHkuYXBwZW5kQ2hpbGQoYS5jcmVhdGVFbGVtZW50KHMpKSx1PWNlLmNzcyhvLCJkaXNwbGF5Iiksby5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pLCJub25lIj09PXUmJih1PSJibG9jayIpLG5lW3NdPXUpKSkpOiJub25lIiE9PW4mJihsW2NdPSJub25lIixfLnNldChyLCJkaXNwbGF5IixuKSkpO2ZvcihjPTA7YzxmO2MrKyludWxsIT1sW2NdJiYoZVtjXS5zdHlsZS5kaXNwbGF5PWxbY10pO3JldHVybiBlfWNlLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiByZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiByZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtlZSh0aGlzKT9jZSh0aGlzKS5zaG93KCk6Y2UodGhpcykuaGlkZSgpfSl9fSk7dmFyIHhlLGJlLHdlPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLFRlPS88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKS9pLENlPS9eJHxebW9kdWxlJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaTt4ZT1DLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5hcHBlbmRDaGlsZChDLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwoYmU9Qy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGJlLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxiZS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IikseGUuYXBwZW5kQ2hpbGQoYmUpLGxlLmNoZWNrQ2xvbmU9eGUuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLHhlLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsbGUubm9DbG9uZUNoZWNrZWQ9ISF4ZS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUseGUuaW5uZXJIVE1MPSI8b3B0aW9uPjwvb3B0aW9uPiIsbGUub3B0aW9uPSEheGUubGFzdENoaWxkO3ZhciBrZT17dGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O2Z1bmN0aW9uIFNlKGUsdCl7dmFyIG47cmV0dXJuIG49InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEVsZW1lbnRzQnlUYWdOYW1lP2UuZ2V0RWxlbWVudHNCeVRhZ05hbWUodHx8IioiKToidW5kZWZpbmVkIiE9dHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbD9lLnF1ZXJ5U2VsZWN0b3JBbGwodHx8IioiKTpbXSx2b2lkIDA9PT10fHx0JiZmZShlLHQpP2NlLm1lcmdlKFtlXSxuKTpufWZ1bmN0aW9uIEVlKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKV8uc2V0KGVbbl0sImdsb2JhbEV2YWwiLCF0fHxfLmdldCh0W25dLCJnbG9iYWxFdmFsIikpfWtlLnRib2R5PWtlLnRmb290PWtlLmNvbGdyb3VwPWtlLmNhcHRpb249a2UudGhlYWQsa2UudGg9a2UudGQsbGUub3B0aW9ufHwoa2Uub3B0Z3JvdXA9a2Uub3B0aW9uPVsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0pO3ZhciBqZT0vPHwmIz9cdys7LztmdW5jdGlvbiBBZShlLHQsbixyLGkpe2Zvcih2YXIgbyxhLHMsdSxsLGMsZj10LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxwPVtdLGQ9MCxoPWUubGVuZ3RoO2Q8aDtkKyspaWYoKG89ZVtkXSl8fDA9PT1vKWlmKCJvYmplY3QiPT09eChvKSljZS5tZXJnZShwLG8ubm9kZVR5cGU/W29dOm8pO2Vsc2UgaWYoamUudGVzdChvKSl7YT1hfHxmLmFwcGVuZENoaWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHM9KFRlLmV4ZWMobyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksdT1rZVtzXXx8a2UuX2RlZmF1bHQsYS5pbm5lckhUTUw9dVsxXStjZS5odG1sUHJlZmlsdGVyKG8pK3VbMl0sYz11WzBdO3doaWxlKGMtLSlhPWEubGFzdENoaWxkO2NlLm1lcmdlKHAsYS5jaGlsZE5vZGVzKSwoYT1mLmZpcnN0Q2hpbGQpLnRleHRDb250ZW50PSIifWVsc2UgcC5wdXNoKHQuY3JlYXRlVGV4dE5vZGUobykpO2YudGV4dENvbnRlbnQ9IiIsZD0wO3doaWxlKG89cFtkKytdKWlmKHImJi0xPGNlLmluQXJyYXkobyxyKSlpJiZpLnB1c2gobyk7ZWxzZSBpZihsPUsobyksYT1TZShmLmFwcGVuZENoaWxkKG8pLCJzY3JpcHQiKSxsJiZFZShhKSxuKXtjPTA7d2hpbGUobz1hW2MrK10pQ2UudGVzdChvLnR5cGV8fCIiKSYmbi5wdXNoKG8pfXJldHVybiBmfXZhciBEZT0vXihbXi5dKikoPzpcLiguKyl8KS87ZnVuY3Rpb24gTmUoKXtyZXR1cm4hMH1mdW5jdGlvbiBxZSgpe3JldHVybiExfWZ1bmN0aW9uIExlKGUsdCxuLHIsaSxvKXt2YXIgYSxzO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7Zm9yKHMgaW4ic3RyaW5nIiE9dHlwZW9mIG4mJihyPXJ8fG4sbj12b2lkIDApLHQpTGUoZSxzLG4scix0W3NdLG8pO3JldHVybiBlfWlmKG51bGw9PXImJm51bGw9PWk/KGk9bixyPW49dm9pZCAwKTpudWxsPT1pJiYoInN0cmluZyI9PXR5cGVvZiBuPyhpPXIscj12b2lkIDApOihpPXIscj1uLG49dm9pZCAwKSksITE9PT1pKWk9cWU7ZWxzZSBpZighaSlyZXR1cm4gZTtyZXR1cm4gMT09PW8mJihhPWksKGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGNlKCkub2ZmKGUpLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSkuZ3VpZD1hLmd1aWR8fChhLmd1aWQ9Y2UuZ3VpZCsrKSksZS5lYWNoKGZ1bmN0aW9uKCl7Y2UuZXZlbnQuYWRkKHRoaXMsdCxpLHIsbil9KX1mdW5jdGlvbiBIZShlLHIsdCl7dD8oXy5zZXQoZSxyLCExKSxjZS5ldmVudC5hZGQoZSxyLHtuYW1lc3BhY2U6ITEsaGFuZGxlcjpmdW5jdGlvbihlKXt2YXIgdCxuPV8uZ2V0KHRoaXMscik7aWYoMSZlLmlzVHJpZ2dlciYmdGhpc1tyXSl7aWYobikoY2UuZXZlbnQuc3BlY2lhbFtyXXx8e30pLmRlbGVnYXRlVHlwZSYmZS5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKG49YWUuY2FsbChhcmd1bWVudHMpLF8uc2V0KHRoaXMscixuKSx0aGlzW3JdKCksdD1fLmdldCh0aGlzLHIpLF8uc2V0KHRoaXMsciwhMSksbiE9PXQpcmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZS5wcmV2ZW50RGVmYXVsdCgpLHR9ZWxzZSBuJiYoXy5zZXQodGhpcyxyLGNlLmV2ZW50LnRyaWdnZXIoblswXSxuLnNsaWNlKDEpLHRoaXMpKSxlLnN0b3BQcm9wYWdhdGlvbigpLGUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9TmUpfX0pKTp2b2lkIDA9PT1fLmdldChlLHIpJiZjZS5ldmVudC5hZGQoZSxyLE5lKX1jZS5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbih0LGUsbixyLGkpe3ZhciBvLGEscyx1LGwsYyxmLHAsZCxoLGcsdj1fLmdldCh0KTtpZigkKHQpKXtuLmhhbmRsZXImJihuPShvPW4pLmhhbmRsZXIsaT1vLnNlbGVjdG9yKSxpJiZjZS5maW5kLm1hdGNoZXNTZWxlY3RvcihKLGkpLG4uZ3VpZHx8KG4uZ3VpZD1jZS5ndWlkKyspLCh1PXYuZXZlbnRzKXx8KHU9di5ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSksKGE9di5oYW5kbGUpfHwoYT12LmhhbmRsZT1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGNlJiZjZS5ldmVudC50cmlnZ2VyZWQhPT1lLnR5cGU/Y2UuZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGw9KGU9KGV8fCIiKS5tYXRjaChEKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlkPWc9KHM9RGUuZXhlYyhlW2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkJiYoZj1jZS5ldmVudC5zcGVjaWFsW2RdfHx7fSxkPShpP2YuZGVsZWdhdGVUeXBlOmYuYmluZFR5cGUpfHxkLGY9Y2UuZXZlbnQuc3BlY2lhbFtkXXx8e30sYz1jZS5leHRlbmQoe3R5cGU6ZCxvcmlnVHlwZTpnLGRhdGE6cixoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6aSxuZWVkc0NvbnRleHQ6aSYmY2UuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChpKSxuYW1lc3BhY2U6aC5qb2luKCIuIil9LG8pLChwPXVbZF0pfHwoKHA9dVtkXT1bXSkuZGVsZWdhdGVDb3VudD0wLGYuc2V0dXAmJiExIT09Zi5zZXR1cC5jYWxsKHQscixoLGEpfHx0LmFkZEV2ZW50TGlzdGVuZXImJnQuYWRkRXZlbnRMaXN0ZW5lcihkLGEpKSxmLmFkZCYmKGYuYWRkLmNhbGwodCxjKSxjLmhhbmRsZXIuZ3VpZHx8KGMuaGFuZGxlci5ndWlkPW4uZ3VpZCkpLGk/cC5zcGxpY2UocC5kZWxlZ2F0ZUNvdW50KyssMCxjKTpwLnB1c2goYyksY2UuZXZlbnQuZ2xvYmFsW2RdPSEwKX19LHJlbW92ZTpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvLGEscyx1LGwsYyxmLHAsZCxoLGcsdj1fLmhhc0RhdGEoZSkmJl8uZ2V0KGUpO2lmKHYmJih1PXYuZXZlbnRzKSl7bD0odD0odHx8IiIpLm1hdGNoKEQpfHxbIiJdKS5sZW5ndGg7d2hpbGUobC0tKWlmKGQ9Zz0ocz1EZS5leGVjKHRbbF0pfHxbXSlbMV0saD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLGQpe2Y9Y2UuZXZlbnQuc3BlY2lhbFtkXXx8e30scD11W2Q9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGRdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPXAubGVuZ3RoO3doaWxlKG8tLSljPXBbb10sIWkmJmchPT1jLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxyJiZyIT09Yy5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYy5zZWxlY3Rvcil8fChwLnNwbGljZShvLDEpLGMuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykpO2EmJiFwLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCx2LmhhbmRsZSl8fGNlLnJlbW92ZUV2ZW50KGUsZCx2LmhhbmRsZSksZGVsZXRlIHVbZF0pfWVsc2UgZm9yKGQgaW4gdSljZS5ldmVudC5yZW1vdmUoZSxkK3RbbF0sbixyLCEwKTtjZS5pc0VtcHR5T2JqZWN0KHUpJiZfLnJlbW92ZShlLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscz1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksdT1jZS5ldmVudC5maXgoZSksbD0oXy5nZXQodGhpcywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW3UudHlwZV18fFtdLGM9Y2UuZXZlbnQuc3BlY2lhbFt1LnR5cGVdfHx7fTtmb3Ioc1swXT11LHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXNbdF09YXJndW1lbnRzW3RdO2lmKHUuZGVsZWdhdGVUYXJnZXQ9dGhpcywhYy5wcmVEaXNwYXRjaHx8ITEhPT1jLnByZURpc3BhdGNoLmNhbGwodGhpcyx1KSl7YT1jZS5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsdSxsKSx0PTA7d2hpbGUoKGk9YVt0KytdKSYmIXUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7dS5jdXJyZW50VGFyZ2V0PWkuZWxlbSxuPTA7d2hpbGUoKG89aS5oYW5kbGVyc1tuKytdKSYmIXUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl1LnJuYW1lc3BhY2UmJiExIT09by5uYW1lc3BhY2UmJiF1LnJuYW1lc3BhY2UudGVzdChvLm5hbWVzcGFjZSl8fCh1LmhhbmRsZU9iaj1vLHUuZGF0YT1vLmRhdGEsdm9pZCAwIT09KHI9KChjZS5ldmVudC5zcGVjaWFsW28ub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxvLmhhbmRsZXIpLmFwcGx5KGkuZWxlbSxzKSkmJiExPT09KHUucmVzdWx0PXIpJiYodS5wcmV2ZW50RGVmYXVsdCgpLHUuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gYy5wb3N0RGlzcGF0Y2gmJmMucG9zdERpc3BhdGNoLmNhbGwodGhpcyx1KSx1LnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzPVtdLHU9dC5kZWxlZ2F0ZUNvdW50LGw9ZS50YXJnZXQ7aWYodSYmbC5ub2RlVHlwZSYmISgiY2xpY2siPT09ZS50eXBlJiYxPD1lLmJ1dHRvbikpZm9yKDtsIT09dGhpcztsPWwucGFyZW50Tm9kZXx8dGhpcylpZigxPT09bC5ub2RlVHlwZSYmKCJjbGljayIhPT1lLnR5cGV8fCEwIT09bC5kaXNhYmxlZCkpe2ZvcihvPVtdLGE9e30sbj0wO248dTtuKyspdm9pZCAwPT09YVtpPShyPXRbbl0pLnNlbGVjdG9yKyIgIl0mJihhW2ldPXIubmVlZHNDb250ZXh0Py0xPGNlKGksdGhpcykuaW5kZXgobCk6Y2UuZmluZChpLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCksYVtpXSYmby5wdXNoKHIpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczpvfSl9cmV0dXJuIGw9dGhpcyx1PHQubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczp0LnNsaWNlKHUpfSksc30sYWRkUHJvcDpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShjZS5FdmVudC5wcm90b3R5cGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OnYoZSk/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGUodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFt0XX0sc2V0OmZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmV9KX19KX0sZml4OmZ1bmN0aW9uKGUpe3JldHVybiBlW2NlLmV4cGFuZG9dP2U6bmV3IGNlLkV2ZW50KGUpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sY2xpY2s6e3NldHVwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHdlLnRlc3QodC50eXBlKSYmdC5jbGljayYmZmUodCwiaW5wdXQiKSYmSGUodCwiY2xpY2siLCEwKSwhMX0sdHJpZ2dlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiB3ZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJmZlKHQsImlucHV0IikmJkhlKHQsImNsaWNrIiksITB9LF9kZWZhdWx0OmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0O3JldHVybiB3ZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJmZlKHQsImlucHV0IikmJl8uZ2V0KHQsImNsaWNrIil8fGZlKHQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUucmVzdWx0JiZlLm9yaWdpbmFsRXZlbnQmJihlLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9ZS5yZXN1bHQpfX19fSxjZS5yZW1vdmVFdmVudD1mdW5jdGlvbihlLHQsbil7ZS5yZW1vdmVFdmVudExpc3RlbmVyJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuKX0sY2UuRXZlbnQ9ZnVuY3Rpb24oZSx0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBjZS5FdmVudCkpcmV0dXJuIG5ldyBjZS5FdmVudChlLHQpO2UmJmUudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWUsdGhpcy50eXBlPWUudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1lLmRlZmF1bHRQcmV2ZW50ZWR8fHZvaWQgMD09PWUuZGVmYXVsdFByZXZlbnRlZCYmITE9PT1lLnJldHVyblZhbHVlP05lOnFlLHRoaXMudGFyZ2V0PWUudGFyZ2V0JiYzPT09ZS50YXJnZXQubm9kZVR5cGU/ZS50YXJnZXQucGFyZW50Tm9kZTplLnRhcmdldCx0aGlzLmN1cnJlbnRUYXJnZXQ9ZS5jdXJyZW50VGFyZ2V0LHRoaXMucmVsYXRlZFRhcmdldD1lLnJlbGF0ZWRUYXJnZXQpOnRoaXMudHlwZT1lLHQmJmNlLmV4dGVuZCh0aGlzLHQpLHRoaXMudGltZVN0YW1wPWUmJmUudGltZVN0YW1wfHxEYXRlLm5vdygpLHRoaXNbY2UuZXhwYW5kb109ITB9LGNlLkV2ZW50LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Y2UuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOnFlLGlzUHJvcGFnYXRpb25TdG9wcGVkOnFlLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOnFlLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPU5lLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPU5lLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1OZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sY2UuZWFjaCh7YWx0S2V5OiEwLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRldGFpbDohMCxldmVudFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRLZXk6ITAsdmlldzohMCwiY2hhciI6ITAsY29kZTohMCxjaGFyQ29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDohMH0sY2UuZXZlbnQuYWRkUHJvcCksY2UuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24ocixpKXtmdW5jdGlvbiBvKGUpe2lmKEMuZG9jdW1lbnRNb2RlKXt2YXIgdD1fLmdldCh0aGlzLCJoYW5kbGUiKSxuPWNlLmV2ZW50LmZpeChlKTtuLnR5cGU9ImZvY3VzaW4iPT09ZS50eXBlPyJmb2N1cyI6ImJsdXIiLG4uaXNTaW11bGF0ZWQ9ITAsdChlKSxuLnRhcmdldD09PW4uY3VycmVudFRhcmdldCYmdChuKX1lbHNlIGNlLmV2ZW50LnNpbXVsYXRlKGksZS50YXJnZXQsY2UuZXZlbnQuZml4KGUpKX1jZS5ldmVudC5zcGVjaWFsW3JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBlO2lmKEhlKHRoaXMsciwhMCksIUMuZG9jdW1lbnRNb2RlKXJldHVybiExOyhlPV8uZ2V0KHRoaXMsaSkpfHx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoaSxvKSxfLnNldCh0aGlzLGksKGV8fDApKzEpfSx0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIEhlKHRoaXMsciksITB9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGU7aWYoIUMuZG9jdW1lbnRNb2RlKXJldHVybiExOyhlPV8uZ2V0KHRoaXMsaSktMSk/Xy5zZXQodGhpcyxpLGUpOih0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoaSxvKSxfLnJlbW92ZSh0aGlzLGkpKX0sX2RlZmF1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIF8uZ2V0KGUudGFyZ2V0LHIpfSxkZWxlZ2F0ZVR5cGU6aX0sY2UuZXZlbnQuc3BlY2lhbFtpXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsdD1DLmRvY3VtZW50TW9kZT90aGlzOmUsbj1fLmdldCh0LGkpO258fChDLmRvY3VtZW50TW9kZT90aGlzLmFkZEV2ZW50TGlzdGVuZXIoaSxvKTplLmFkZEV2ZW50TGlzdGVuZXIocixvLCEwKSksXy5zZXQodCxpLChufHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsdD1DLmRvY3VtZW50TW9kZT90aGlzOmUsbj1fLmdldCh0LGkpLTE7bj9fLnNldCh0LGksbik6KEMuZG9jdW1lbnRNb2RlP3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihpLG8pOmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLG8sITApLF8ucmVtb3ZlKHQsaSkpfX19KSxjZS5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLGkpe2NlLmV2ZW50LnNwZWNpYWxbZV09e2RlbGVnYXRlVHlwZTppLGJpbmRUeXBlOmksaGFuZGxlOmZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5yZWxhdGVkVGFyZ2V0LHI9ZS5oYW5kbGVPYmo7cmV0dXJuIG4mJihuPT09dGhpc3x8Y2UuY29udGFpbnModGhpcyxuKSl8fChlLnR5cGU9ci5vcmlnVHlwZSx0PXIuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS50eXBlPWkpLHR9fX0pLGNlLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIExlKHRoaXMsZSx0LG4scil9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gTGUodGhpcyxlLHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoZSYmZS5wcmV2ZW50RGVmYXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIHI9ZS5oYW5kbGVPYmosY2UoZS5kZWxlZ2F0ZVRhcmdldCkub2ZmKHIubmFtZXNwYWNlP3Iub3JpZ1R5cGUrIi4iK3IubmFtZXNwYWNlOnIub3JpZ1R5cGUsci5zZWxlY3RvcixyLmhhbmRsZXIpLHRoaXM7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXtmb3IoaSBpbiBlKXRoaXMub2ZmKGksdCxlW2ldKTtyZXR1cm4gdGhpc31yZXR1cm4hMSE9PXQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0fHwobj10LHQ9dm9pZCAwKSwhMT09PW4mJihuPXFlKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtjZS5ldmVudC5yZW1vdmUodGhpcyxlLG4sdCl9KX19KTt2YXIgT2U9LzxzY3JpcHR8PHN0eWxlfDxsaW5rL2ksUGU9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksTWU9L15ccyo8IVxbQ0RBVEFcW3xcXVxdPlxzKiQvZztmdW5jdGlvbiBSZShlLHQpe3JldHVybiBmZShlLCJ0YWJsZSIpJiZmZSgxMSE9PXQubm9kZVR5cGU/dDp0LmZpcnN0Q2hpbGQsInRyIikmJmNlKGUpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxlfWZ1bmN0aW9uIEllKGUpe3JldHVybiBlLnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrZS50eXBlLGV9ZnVuY3Rpb24gV2UoZSl7cmV0dXJuInRydWUvIj09PShlLnR5cGV8fCIiKS5zbGljZSgwLDUpP2UudHlwZT1lLnR5cGUuc2xpY2UoNSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIEZlKGUsdCl7dmFyIG4scixpLG8sYSxzO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihfLmhhc0RhdGEoZSkmJihzPV8uZ2V0KGUpLmV2ZW50cykpZm9yKGkgaW4gXy5yZW1vdmUodCwiaGFuZGxlIGV2ZW50cyIpLHMpZm9yKG49MCxyPXNbaV0ubGVuZ3RoO248cjtuKyspY2UuZXZlbnQuYWRkKHQsaSxzW2ldW25dKTt6Lmhhc0RhdGEoZSkmJihvPXouYWNjZXNzKGUpLGE9Y2UuZXh0ZW5kKHt9LG8pLHouc2V0KHQsYSkpfX1mdW5jdGlvbiAkZShuLHIsaSxvKXtyPWcocik7dmFyIGUsdCxhLHMsdSxsLGM9MCxmPW4ubGVuZ3RoLHA9Zi0xLGQ9clswXSxoPXYoZCk7aWYoaHx8MTxmJiYic3RyaW5nIj09dHlwZW9mIGQmJiFsZS5jaGVja0Nsb25lJiZQZS50ZXN0KGQpKXJldHVybiBuLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bi5lcShlKTtoJiYoclswXT1kLmNhbGwodGhpcyxlLHQuaHRtbCgpKSksJGUodCxyLGksbyl9KTtpZihmJiYodD0oZT1BZShyLG5bMF0ub3duZXJEb2N1bWVudCwhMSxuLG8pKS5maXJzdENoaWxkLDE9PT1lLmNoaWxkTm9kZXMubGVuZ3RoJiYoZT10KSx0fHxvKSl7Zm9yKHM9KGE9Y2UubWFwKFNlKGUsInNjcmlwdCIpLEllKSkubGVuZ3RoO2M8ZjtjKyspdT1lLGMhPT1wJiYodT1jZS5jbG9uZSh1LCEwLCEwKSxzJiZjZS5tZXJnZShhLFNlKHUsInNjcmlwdCIpKSksaS5jYWxsKG5bY10sdSxjKTtpZihzKWZvcihsPWFbYS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxjZS5tYXAoYSxXZSksYz0wO2M8cztjKyspdT1hW2NdLENlLnRlc3QodS50eXBlfHwiIikmJiFfLmFjY2Vzcyh1LCJnbG9iYWxFdmFsIikmJmNlLmNvbnRhaW5zKGwsdSkmJih1LnNyYyYmIm1vZHVsZSIhPT0odS50eXBlfHwiIikudG9Mb3dlckNhc2UoKT9jZS5fZXZhbFVybCYmIXUubm9Nb2R1bGUmJmNlLl9ldmFsVXJsKHUuc3JjLHtub25jZTp1Lm5vbmNlfHx1LmdldEF0dHJpYnV0ZSgibm9uY2UiKX0sbCk6bSh1LnRleHRDb250ZW50LnJlcGxhY2UoTWUsIiIpLHUsbCkpfXJldHVybiBufWZ1bmN0aW9uIEJlKGUsdCxuKXtmb3IodmFyIHIsaT10P2NlLmZpbHRlcih0LGUpOmUsbz0wO251bGwhPShyPWlbb10pO28rKylufHwxIT09ci5ub2RlVHlwZXx8Y2UuY2xlYW5EYXRhKFNlKHIpKSxyLnBhcmVudE5vZGUmJihuJiZLKHIpJiZFZShTZShyLCJzY3JpcHQiKSksci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpKTtyZXR1cm4gZX1jZS5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNsb25lOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjPWUuY2xvbmVOb2RlKCEwKSxmPUsoZSk7aWYoIShsZS5ub0Nsb25lQ2hlY2tlZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Y2UuaXNYTUxEb2MoZSkpKWZvcihhPVNlKGMpLHI9MCxpPShvPVNlKGUpKS5sZW5ndGg7cjxpO3IrKylzPW9bcl0sdT1hW3JdLHZvaWQgMCwiaW5wdXQiPT09KGw9dS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSYmd2UudGVzdChzLnR5cGUpP3UuY2hlY2tlZD1zLmNoZWNrZWQ6ImlucHV0IiE9PWwmJiJ0ZXh0YXJlYSIhPT1sfHwodS5kZWZhdWx0VmFsdWU9cy5kZWZhdWx0VmFsdWUpO2lmKHQpaWYobilmb3Iobz1vfHxTZShlKSxhPWF8fFNlKGMpLHI9MCxpPW8ubGVuZ3RoO3I8aTtyKyspRmUob1tyXSxhW3JdKTtlbHNlIEZlKGUsYyk7cmV0dXJuIDA8KGE9U2UoYywic2NyaXB0IikpLmxlbmd0aCYmRWUoYSwhZiYmU2UoZSwic2NyaXB0IikpLGN9LGNsZWFuRGF0YTpmdW5jdGlvbihlKXtmb3IodmFyIHQsbixyLGk9Y2UuZXZlbnQuc3BlY2lhbCxvPTA7dm9pZCAwIT09KG49ZVtvXSk7bysrKWlmKCQobikpe2lmKHQ9bltfLmV4cGFuZG9dKXtpZih0LmV2ZW50cylmb3IociBpbiB0LmV2ZW50cylpW3JdP2NlLmV2ZW50LnJlbW92ZShuLHIpOmNlLnJlbW92ZUV2ZW50KG4scix0LmhhbmRsZSk7bltfLmV4cGFuZG9dPXZvaWQgMH1uW3ouZXhwYW5kb10mJihuW3ouZXhwYW5kb109dm9pZCAwKX19fSksY2UuZm4uZXh0ZW5kKHtkZXRhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIEJlKHRoaXMsZSwhMCl9LHJlbW92ZTpmdW5jdGlvbihlKXtyZXR1cm4gQmUodGhpcyxlKX0sdGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gTSh0aGlzLGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP2NlLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9ZSl9KX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gJGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fFJlKHRoaXMsZSkuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiAkZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9UmUodGhpcyxlKTt0Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiAkZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiAkZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PTA7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYoY2UuY2xlYW5EYXRhKFNlKGUsITEpKSxlLnRleHRDb250ZW50PSIiKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1udWxsIT1lJiZlLHQ9bnVsbD09dD9lOnQsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gY2UuY2xvbmUodGhpcyxlLHQpfSl9LGh0bWw6ZnVuY3Rpb24oZSl7cmV0dXJuIE0odGhpcyxmdW5jdGlvbihlKXt2YXIgdD10aGlzWzBdfHx7fSxuPTAscj10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1lJiYxPT09dC5ub2RlVHlwZSlyZXR1cm4gdC5pbm5lckhUTUw7aWYoInN0cmluZyI9PXR5cGVvZiBlJiYhT2UudGVzdChlKSYmIWtlWyhUZS5leGVjKGUpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7ZT1jZS5odG1sUHJlZmlsdGVyKGUpO3RyeXtmb3IoO248cjtuKyspMT09PSh0PXRoaXNbbl18fHt9KS5ub2RlVHlwZSYmKGNlLmNsZWFuRGF0YShTZSh0LCExKSksdC5pbm5lckhUTUw9ZSk7dD0wfWNhdGNoKGUpe319dCYmdGhpcy5lbXB0eSgpLmFwcGVuZChlKX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBuPVtdO3JldHVybiAkZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Y2UuaW5BcnJheSh0aGlzLG4pPDAmJihjZS5jbGVhbkRhdGEoU2UodGhpcykpLHQmJnQucmVwbGFjZUNoaWxkKGUsdGhpcykpfSxuKX19KSxjZS5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oZSxhKXtjZS5mbltlXT1mdW5jdGlvbihlKXtmb3IodmFyIHQsbj1bXSxyPWNlKGUpLGk9ci5sZW5ndGgtMSxvPTA7bzw9aTtvKyspdD1vPT09aT90aGlzOnRoaXMuY2xvbmUoITApLGNlKHJbb10pW2FdKHQpLHMuYXBwbHkobix0LmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobil9fSk7dmFyIF9lPW5ldyBSZWdFeHAoIl4oIitHKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksemU9L14tLS8sWGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiB0JiZ0Lm9wZW5lcnx8KHQ9aWUpLHQuZ2V0Q29tcHV0ZWRTdHlsZShlKX0sVWU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz17fTtmb3IoaSBpbiB0KW9baV09ZS5zdHlsZVtpXSxlLnN0eWxlW2ldPXRbaV07Zm9yKGkgaW4gcj1uLmNhbGwoZSksdCllLnN0eWxlW2ldPW9baV07cmV0dXJuIHJ9LFZlPW5ldyBSZWdFeHAoUS5qb2luKCJ8IiksImkiKTtmdW5jdGlvbiBHZShlLHQsbil7dmFyIHIsaSxvLGEscz16ZS50ZXN0KHQpLHU9ZS5zdHlsZTtyZXR1cm4obj1ufHxYZShlKSkmJihhPW4uZ2V0UHJvcGVydHlWYWx1ZSh0KXx8blt0XSxzJiZhJiYoYT1hLnJlcGxhY2UodmUsIiQxIil8fHZvaWQgMCksIiIhPT1hfHxLKGUpfHwoYT1jZS5zdHlsZShlLHQpKSwhbGUucGl4ZWxCb3hTdHlsZXMoKSYmX2UudGVzdChhKSYmVmUudGVzdCh0KSYmKHI9dS53aWR0aCxpPXUubWluV2lkdGgsbz11Lm1heFdpZHRoLHUubWluV2lkdGg9dS5tYXhXaWR0aD11LndpZHRoPWEsYT1uLndpZHRoLHUud2lkdGg9cix1Lm1pbldpZHRoPWksdS5tYXhXaWR0aD1vKSksdm9pZCAwIT09YT9hKyIiOmF9ZnVuY3Rpb24gWWUoZSx0KXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7aWYoIWUoKSlyZXR1cm4odGhpcy5nZXQ9dCkuYXBwbHkodGhpcyxhcmd1bWVudHMpO2RlbGV0ZSB0aGlzLmdldH19fSFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpZihsKXt1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDttYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjAiLGwuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NjAlO3RvcDoxJSIsSi5hcHBlbmRDaGlsZCh1KS5hcHBlbmRDaGlsZChsKTt2YXIgZT1pZS5nZXRDb21wdXRlZFN0eWxlKGwpO249IjElIiE9PWUudG9wLHM9MTI9PT10KGUubWFyZ2luTGVmdCksbC5zdHlsZS5yaWdodD0iNjAlIixvPTM2PT09dChlLnJpZ2h0KSxyPTM2PT09dChlLndpZHRoKSxsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaT0xMj09PXQobC5vZmZzZXRXaWR0aC8zKSxKLnJlbW92ZUNoaWxkKHUpLGw9bnVsbH19ZnVuY3Rpb24gdChlKXtyZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGUpKX12YXIgbixyLGksbyxhLHMsdT1DLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGw9Qy5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLnN0eWxlJiYobC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGwuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixsZS5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWwuc3R5bGUuYmFja2dyb3VuZENsaXAsY2UuZXh0ZW5kKGxlLHtib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBlKCkscn0scGl4ZWxCb3hTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLG99LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLG59LHJlbGlhYmxlTWFyZ2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBlKCksc30sc2Nyb2xsYm94U2l6ZTpmdW5jdGlvbigpe3JldHVybiBlKCksaX0scmVsaWFibGVUckRpbWVuc2lvbnM6ZnVuY3Rpb24oKXt2YXIgZSx0LG4scjtyZXR1cm4gbnVsbD09YSYmKGU9Qy5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLHQ9Qy5jcmVhdGVFbGVtZW50KCJ0ciIpLG49Qy5jcmVhdGVFbGVtZW50KCJkaXYiKSxlLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlIix0LnN0eWxlLmNzc1RleHQ9ImJveC1zaXppbmc6Y29udGVudC1ib3g7Ym9yZGVyOjFweCBzb2xpZCIsdC5zdHlsZS5oZWlnaHQ9IjFweCIsbi5zdHlsZS5oZWlnaHQ9IjlweCIsbi5zdHlsZS5kaXNwbGF5PSJibG9jayIsSi5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZCh0KS5hcHBlbmRDaGlsZChuKSxyPWllLmdldENvbXB1dGVkU3R5bGUodCksYT1wYXJzZUludChyLmhlaWdodCwxMCkrcGFyc2VJbnQoci5ib3JkZXJUb3BXaWR0aCwxMCkrcGFyc2VJbnQoci5ib3JkZXJCb3R0b21XaWR0aCwxMCk9PT10Lm9mZnNldEhlaWdodCxKLnJlbW92ZUNoaWxkKGUpKSxhfX0pKX0oKTt2YXIgUWU9WyJXZWJraXQiLCJNb3oiLCJtcyJdLEplPUMuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsS2U9e307ZnVuY3Rpb24gWmUoZSl7dmFyIHQ9Y2UuY3NzUHJvcHNbZV18fEtlW2VdO3JldHVybiB0fHwoZSBpbiBKZT9lOktlW2VdPWZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49UWUubGVuZ3RoO3doaWxlKG4tLSlpZigoZT1RZVtuXSt0KWluIEplKXJldHVybiBlfShlKXx8ZSl9dmFyIGV0PS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyx0dD17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sbnQ9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9O2Z1bmN0aW9uIHJ0KGUsdCxuKXt2YXIgcj1ZLmV4ZWModCk7cmV0dXJuIHI/TWF0aC5tYXgoMCxyWzJdLShufHwwKSkrKHJbM118fCJweCIpOnR9ZnVuY3Rpb24gaXQoZSx0LG4scixpLG8pe3ZhciBhPSJ3aWR0aCI9PT10PzE6MCxzPTAsdT0wLGw9MDtpZihuPT09KHI/ImJvcmRlciI6ImNvbnRlbnQiKSlyZXR1cm4gMDtmb3IoO2E8NDthKz0yKSJtYXJnaW4iPT09biYmKGwrPWNlLmNzcyhlLG4rUVthXSwhMCxpKSkscj8oImNvbnRlbnQiPT09biYmKHUtPWNlLmNzcyhlLCJwYWRkaW5nIitRW2FdLCEwLGkpKSwibWFyZ2luIiE9PW4mJih1LT1jZS5jc3MoZSwiYm9yZGVyIitRW2FdKyJXaWR0aCIsITAsaSkpKToodSs9Y2UuY3NzKGUsInBhZGRpbmciK1FbYV0sITAsaSksInBhZGRpbmciIT09bj91Kz1jZS5jc3MoZSwiYm9yZGVyIitRW2FdKyJXaWR0aCIsITAsaSk6cys9Y2UuY3NzKGUsImJvcmRlciIrUVthXSsiV2lkdGgiLCEwLGkpKTtyZXR1cm4hciYmMDw9byYmKHUrPU1hdGgubWF4KDAsTWF0aC5jZWlsKGVbIm9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSldLW8tdS1zLS41KSl8fDApLHUrbH1mdW5jdGlvbiBvdChlLHQsbil7dmFyIHI9WGUoZSksaT0oIWxlLmJveFNpemluZ1JlbGlhYmxlKCl8fG4pJiYiYm9yZGVyLWJveCI9PT1jZS5jc3MoZSwiYm94U2l6aW5nIiwhMSxyKSxvPWksYT1HZShlLHQscikscz0ib2Zmc2V0Iit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKTtpZihfZS50ZXN0KGEpKXtpZighbilyZXR1cm4gYTthPSJhdXRvIn1yZXR1cm4oIWxlLmJveFNpemluZ1JlbGlhYmxlKCkmJml8fCFsZS5yZWxpYWJsZVRyRGltZW5zaW9ucygpJiZmZShlLCJ0ciIpfHwiYXV0byI9PT1hfHwhcGFyc2VGbG9hdChhKSYmImlubGluZSI9PT1jZS5jc3MoZSwiZGlzcGxheSIsITEscikpJiZlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYoaT0iYm9yZGVyLWJveCI9PT1jZS5jc3MoZSwiYm94U2l6aW5nIiwhMSxyKSwobz1zIGluIGUpJiYoYT1lW3NdKSksKGE9cGFyc2VGbG9hdChhKXx8MCkraXQoZSx0LG58fChpPyJib3JkZXIiOiJjb250ZW50IiksbyxyLGEpKyJweCJ9ZnVuY3Rpb24gYXQoZSx0LG4scixpKXtyZXR1cm4gbmV3IGF0LnByb3RvdHlwZS5pbml0KGUsdCxuLHIsaSl9Y2UuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49R2UoZSwib3BhY2l0eSIpO3JldHVybiIiPT09bj8iMSI6bn19fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGNvbHVtbkNvdW50OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxncmlkQXJlYTohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3RhcnQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsc2NhbGU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITB9LGNzc1Byb3BzOnt9LHN0eWxlOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUmJjMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmZS5zdHlsZSl7dmFyIGksbyxhLHM9Rih0KSx1PXplLnRlc3QodCksbD1lLnN0eWxlO2lmKHV8fCh0PVplKHMpKSxhPWNlLmNzc0hvb2tzW3RdfHxjZS5jc3NIb29rc1tzXSx2b2lkIDA9PT1uKXJldHVybiBhJiYiZ2V0ImluIGEmJnZvaWQgMCE9PShpPWEuZ2V0KGUsITEscikpP2k6bFt0XTsic3RyaW5nIj09PShvPXR5cGVvZiBuKSYmKGk9WS5leGVjKG4pKSYmaVsxXSYmKG49dGUoZSx0LGkpLG89Im51bWJlciIpLG51bGwhPW4mJm49PW4mJigibnVtYmVyIiE9PW98fHV8fChuKz1pJiZpWzNdfHwoY2UuY3NzTnVtYmVyW3NdPyIiOiJweCIpKSxsZS5jbGVhckNsb25lU3R5bGV8fCIiIT09bnx8MCE9PXQuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwobFt0XT0iaW5oZXJpdCIpLGEmJiJzZXQiaW4gYSYmdm9pZCAwPT09KG49YS5zZXQoZSxuLHIpKXx8KHU/bC5zZXRQcm9wZXJ0eSh0LG4pOmxbdF09bikpfX0sY3NzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzPUYodCk7cmV0dXJuIHplLnRlc3QodCl8fCh0PVplKHMpKSwoYT1jZS5jc3NIb29rc1t0XXx8Y2UuY3NzSG9va3Nbc10pJiYiZ2V0ImluIGEmJihpPWEuZ2V0KGUsITAsbikpLHZvaWQgMD09PWkmJihpPUdlKGUsdCxyKSksIm5vcm1hbCI9PT1pJiZ0IGluIG50JiYoaT1udFt0XSksIiI9PT1ufHxuPyhvPXBhcnNlRmxvYXQoaSksITA9PT1ufHxpc0Zpbml0ZShvKT9vfHwwOmkpOml9fSksY2UuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oZSx1KXtjZS5jc3NIb29rc1t1XT17Z2V0OmZ1bmN0aW9uKGUsdCxuKXtpZih0KXJldHVybiFldC50ZXN0KGNlLmNzcyhlLCJkaXNwbGF5IikpfHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiZlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoP290KGUsdSxuKTpVZShlLHR0LGZ1bmN0aW9uKCl7cmV0dXJuIG90KGUsdSxuKX0pfSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9WGUoZSksbz0hbGUuc2Nyb2xsYm94U2l6ZSgpJiYiYWJzb2x1dGUiPT09aS5wb3NpdGlvbixhPShvfHxuKSYmImJvcmRlci1ib3giPT09Y2UuY3NzKGUsImJveFNpemluZyIsITEsaSkscz1uP2l0KGUsdSxuLGEsaSk6MDtyZXR1cm4gYSYmbyYmKHMtPU1hdGguY2VpbChlWyJvZmZzZXQiK3VbMF0udG9VcHBlckNhc2UoKSt1LnNsaWNlKDEpXS1wYXJzZUZsb2F0KGlbdV0pLWl0KGUsdSwiYm9yZGVyIiwhMSxpKS0uNSkpLHMmJihyPVkuZXhlYyh0KSkmJiJweCIhPT0oclszXXx8InB4IikmJihlLnN0eWxlW3VdPXQsdD1jZS5jc3MoZSx1KSkscnQoMCx0LHMpfX19KSxjZS5jc3NIb29rcy5tYXJnaW5MZWZ0PVllKGxlLnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuKHBhcnNlRmxvYXQoR2UoZSwibWFyZ2luTGVmdCIpKXx8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LVVlKGUse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKyJweCJ9KSxjZS5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oaSxvKXtjZS5jc3NIb29rc1tpK29dPXtleHBhbmQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj17fSxyPSJzdHJpbmciPT10eXBlb2YgZT9lLnNwbGl0KCIgIik6W2VdO3Q8NDt0KyspbltpK1FbdF0rb109clt0XXx8clt0LTJdfHxyWzBdO3JldHVybiBufX0sIm1hcmdpbiIhPT1pJiYoY2UuY3NzSG9va3NbaStvXS5zZXQ9cnQpfSksY2UuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTSh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89e30sYT0wO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihyPVhlKGUpLGk9dC5sZW5ndGg7YTxpO2ErKylvW3RbYV1dPWNlLmNzcyhlLHRbYV0sITEscik7cmV0dXJuIG99cmV0dXJuIHZvaWQgMCE9PW4/Y2Uuc3R5bGUoZSx0LG4pOmNlLmNzcyhlLHQpfSxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX19KSwoKGNlLlR3ZWVuPWF0KS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmF0LGluaXQ6ZnVuY3Rpb24oZSx0LG4scixpLG8pe3RoaXMuZWxlbT1lLHRoaXMucHJvcD1uLHRoaXMuZWFzaW5nPWl8fGNlLmVhc2luZy5fZGVmYXVsdCx0aGlzLm9wdGlvbnM9dCx0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9cix0aGlzLnVuaXQ9b3x8KGNlLmNzc051bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9YXQucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRoaXMpOmF0LnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihlKXt2YXIgdCxuPWF0LnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9dD1jZS5lYXNpbmdbdGhpcy5lYXNpbmddKGUsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmUsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9dD1lLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0K3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLG4mJm4uc2V0P24uc2V0KHRoaXMpOmF0LnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319KS5pbml0LnByb3RvdHlwZT1hdC5wcm90b3R5cGUsKGF0LnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gMSE9PWUuZWxlbS5ub2RlVHlwZXx8bnVsbCE9ZS5lbGVtW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVtlLnByb3BdP2UuZWxlbVtlLnByb3BdOih0PWNlLmNzcyhlLmVsZW0sZS5wcm9wLCIiKSkmJiJhdXRvIiE9PXQ/dDowfSxzZXQ6ZnVuY3Rpb24oZSl7Y2UuZnguc3RlcFtlLnByb3BdP2NlLmZ4LnN0ZXBbZS5wcm9wXShlKToxIT09ZS5lbGVtLm5vZGVUeXBlfHwhY2UuY3NzSG9va3NbZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW1plKGUucHJvcCldP2UuZWxlbVtlLnByb3BdPWUubm93OmNlLnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KX19fSkuc2Nyb2xsVG9wPWF0LnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVUeXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LGNlLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxzd2luZzpmdW5jdGlvbihlKXtyZXR1cm4uNS1NYXRoLmNvcyhlKk1hdGguUEkpLzJ9LF9kZWZhdWx0OiJzd2luZyJ9LGNlLmZ4PWF0LnByb3RvdHlwZS5pbml0LGNlLmZ4LnN0ZXA9e307dmFyIHN0LHV0LGx0LGN0LGZ0PS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxwdD0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIGR0KCl7dXQmJighMT09PUMuaGlkZGVuJiZpZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/aWUucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGR0KTppZS5zZXRUaW1lb3V0KGR0LGNlLmZ4LmludGVydmFsKSxjZS5meC50aWNrKCkpfWZ1bmN0aW9uIGh0KCl7cmV0dXJuIGllLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtzdD12b2lkIDB9KSxzdD1EYXRlLm5vdygpfWZ1bmN0aW9uIGd0KGUsdCl7dmFyIG4scj0wLGk9e2hlaWdodDplfTtmb3IodD10PzE6MDtyPDQ7cis9Mi10KWlbIm1hcmdpbiIrKG49UVtyXSldPWlbInBhZGRpbmciK25dPWU7cmV0dXJuIHQmJihpLm9wYWNpdHk9aS53aWR0aD1lKSxpfWZ1bmN0aW9uIHZ0KGUsdCxuKXtmb3IodmFyIHIsaT0oeXQudHdlZW5lcnNbdF18fFtdKS5jb25jYXQoeXQudHdlZW5lcnNbIioiXSksbz0wLGE9aS5sZW5ndGg7bzxhO28rKylpZihyPWlbb10uY2FsbChuLHQsZSkpcmV0dXJuIHJ9ZnVuY3Rpb24geXQobyxlLHQpe3ZhciBuLGEscj0wLGk9eXQucHJlZmlsdGVycy5sZW5ndGgscz1jZS5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSB1LmVsZW19KSx1PWZ1bmN0aW9uKCl7aWYoYSlyZXR1cm4hMTtmb3IodmFyIGU9c3R8fGh0KCksdD1NYXRoLm1heCgwLGwuc3RhcnRUaW1lK2wuZHVyYXRpb24tZSksbj0xLSh0L2wuZHVyYXRpb258fDApLHI9MCxpPWwudHdlZW5zLmxlbmd0aDtyPGk7cisrKWwudHdlZW5zW3JdLnJ1bihuKTtyZXR1cm4gcy5ub3RpZnlXaXRoKG8sW2wsbix0XSksbjwxJiZpP3Q6KGl8fHMubm90aWZ5V2l0aChvLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgobyxbbF0pLCExKX0sbD1zLnByb21pc2Uoe2VsZW06byxwcm9wczpjZS5leHRlbmQoe30sZSksb3B0czpjZS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOmNlLmVhc2luZy5fZGVmYXVsdH0sdCksb3JpZ2luYWxQcm9wZXJ0aWVzOmUsb3JpZ2luYWxPcHRpb25zOnQsc3RhcnRUaW1lOnN0fHxodCgpLGR1cmF0aW9uOnQuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49Y2UuVHdlZW4obyxsLm9wdHMsZSx0LGwub3B0cy5zcGVjaWFsRWFzaW5nW2VdfHxsLm9wdHMuZWFzaW5nKTtyZXR1cm4gbC50d2VlbnMucHVzaChuKSxufSxzdG9wOmZ1bmN0aW9uKGUpe3ZhciB0PTAsbj1lP2wudHdlZW5zLmxlbmd0aDowO2lmKGEpcmV0dXJuIHRoaXM7Zm9yKGE9ITA7dDxuO3QrKylsLnR3ZWVuc1t0XS5ydW4oMSk7cmV0dXJuIGU/KHMubm90aWZ5V2l0aChvLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgobyxbbCxlXSkpOnMucmVqZWN0V2l0aChvLFtsLGVdKSx0aGlzfX0pLGM9bC5wcm9wcztmb3IoIWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYTtmb3IobiBpbiBlKWlmKGk9dFtyPUYobildLG89ZVtuXSxBcnJheS5pc0FycmF5KG8pJiYoaT1vWzFdLG89ZVtuXT1vWzBdKSxuIT09ciYmKGVbcl09byxkZWxldGUgZVtuXSksKGE9Y2UuY3NzSG9va3Nbcl0pJiYiZXhwYW5kImluIGEpZm9yKG4gaW4gbz1hLmV4cGFuZChvKSxkZWxldGUgZVtyXSxvKW4gaW4gZXx8KGVbbl09b1tuXSx0W25dPWkpO2Vsc2UgdFtyXT1pfShjLGwub3B0cy5zcGVjaWFsRWFzaW5nKTtyPGk7cisrKWlmKG49eXQucHJlZmlsdGVyc1tyXS5jYWxsKGwsbyxjLGwub3B0cykpcmV0dXJuIHYobi5zdG9wKSYmKGNlLl9xdWV1ZUhvb2tzKGwuZWxlbSxsLm9wdHMucXVldWUpLnN0b3A9bi5zdG9wLmJpbmQobikpLG47cmV0dXJuIGNlLm1hcChjLHZ0LGwpLHYobC5vcHRzLnN0YXJ0KSYmbC5vcHRzLnN0YXJ0LmNhbGwobyxsKSxsLnByb2dyZXNzKGwub3B0cy5wcm9ncmVzcykuZG9uZShsLm9wdHMuZG9uZSxsLm9wdHMuY29tcGxldGUpLmZhaWwobC5vcHRzLmZhaWwpLmFsd2F5cyhsLm9wdHMuYWx3YXlzKSxjZS5meC50aW1lcihjZS5leHRlbmQodSx7ZWxlbTpvLGFuaW06bCxxdWV1ZTpsLm9wdHMucXVldWV9KSksbH1jZS5BbmltYXRpb249Y2UuZXh0ZW5kKHl0LHt0d2VlbmVyczp7IioiOltmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY3JlYXRlVHdlZW4oZSx0KTtyZXR1cm4gdGUobi5lbGVtLGUsWS5leGVjKHQpLG4pLG59XX0sdHdlZW5lcjpmdW5jdGlvbihlLHQpe3YoZSk/KHQ9ZSxlPVsiKiJdKTplPWUubWF0Y2goRCk7Zm9yKHZhciBuLHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspbj1lW3JdLHl0LnR3ZWVuZXJzW25dPXl0LnR3ZWVuZXJzW25dfHxbXSx5dC50d2VlbmVyc1tuXS51bnNoaWZ0KHQpfSxwcmVmaWx0ZXJzOltmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGwsYyxmPSJ3aWR0aCJpbiB0fHwiaGVpZ2h0ImluIHQscD10aGlzLGQ9e30saD1lLnN0eWxlLGc9ZS5ub2RlVHlwZSYmZWUoZSksdj1fLmdldChlLCJmeHNob3ciKTtmb3IociBpbiBuLnF1ZXVlfHwobnVsbD09KGE9Y2UuX3F1ZXVlSG9va3MoZSwiZngiKSkudW5xdWV1ZWQmJihhLnVucXVldWVkPTAscz1hLmVtcHR5LmZpcmUsYS5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7YS51bnF1ZXVlZHx8cygpfSksYS51bnF1ZXVlZCsrLHAuYWx3YXlzKGZ1bmN0aW9uKCl7cC5hbHdheXMoZnVuY3Rpb24oKXthLnVucXVldWVkLS0sY2UucXVldWUoZSwiZngiKS5sZW5ndGh8fGEuZW1wdHkuZmlyZSgpfSl9KSksdClpZihpPXRbcl0sZnQudGVzdChpKSl7aWYoZGVsZXRlIHRbcl0sbz1vfHwidG9nZ2xlIj09PWksaT09PShnPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1pfHwhdnx8dm9pZCAwPT09dltyXSljb250aW51ZTtnPSEwfWRbcl09diYmdltyXXx8Y2Uuc3R5bGUoZSxyKX1pZigodT0hY2UuaXNFbXB0eU9iamVjdCh0KSl8fCFjZS5pc0VtcHR5T2JqZWN0KGQpKWZvcihyIGluIGYmJjE9PT1lLm5vZGVUeXBlJiYobi5vdmVyZmxvdz1baC5vdmVyZmxvdyxoLm92ZXJmbG93WCxoLm92ZXJmbG93WV0sbnVsbD09KGw9diYmdi5kaXNwbGF5KSYmKGw9Xy5nZXQoZSwiZGlzcGxheSIpKSwibm9uZSI9PT0oYz1jZS5jc3MoZSwiZGlzcGxheSIpKSYmKGw/Yz1sOihyZShbZV0sITApLGw9ZS5zdHlsZS5kaXNwbGF5fHxsLGM9Y2UuY3NzKGUsImRpc3BsYXkiKSxyZShbZV0pKSksKCJpbmxpbmUiPT09Y3x8ImlubGluZS1ibG9jayI9PT1jJiZudWxsIT1sKSYmIm5vbmUiPT09Y2UuY3NzKGUsImZsb2F0IikmJih1fHwocC5kb25lKGZ1bmN0aW9uKCl7aC5kaXNwbGF5PWx9KSxudWxsPT1sJiYoYz1oLmRpc3BsYXksbD0ibm9uZSI9PT1jPyIiOmMpKSxoLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxuLm92ZXJmbG93JiYoaC5vdmVyZmxvdz0iaGlkZGVuIixwLmFsd2F5cyhmdW5jdGlvbigpe2gub3ZlcmZsb3c9bi5vdmVyZmxvd1swXSxoLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLGgub3ZlcmZsb3dZPW4ub3ZlcmZsb3dbMl19KSksdT0hMSxkKXV8fCh2PyJoaWRkZW4iaW4gdiYmKGc9di5oaWRkZW4pOnY9Xy5hY2Nlc3MoZSwiZnhzaG93Iix7ZGlzcGxheTpsfSksbyYmKHYuaGlkZGVuPSFnKSxnJiZyZShbZV0sITApLHAuZG9uZShmdW5jdGlvbigpe2ZvcihyIGluIGd8fHJlKFtlXSksXy5yZW1vdmUoZSwiZnhzaG93IiksZCljZS5zdHlsZShlLHIsZFtyXSl9KSksdT12dChnP3Zbcl06MCxyLHApLHIgaW4gdnx8KHZbcl09dS5zdGFydCxnJiYodS5lbmQ9dS5zdGFydCx1LnN0YXJ0PTApKX1dLHByZWZpbHRlcjpmdW5jdGlvbihlLHQpe3Q/eXQucHJlZmlsdGVycy51bnNoaWZ0KGUpOnl0LnByZWZpbHRlcnMucHVzaChlKX19KSxjZS5zcGVlZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZSYmIm9iamVjdCI9PXR5cGVvZiBlP2NlLmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8IW4mJnR8fHYoZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8dCYmIXYodCkmJnR9O3JldHVybiBjZS5meC5vZmY/ci5kdXJhdGlvbj0wOiJudW1iZXIiIT10eXBlb2Ygci5kdXJhdGlvbiYmKHIuZHVyYXRpb24gaW4gY2UuZnguc3BlZWRzP3IuZHVyYXRpb249Y2UuZnguc3BlZWRzW3IuZHVyYXRpb25dOnIuZHVyYXRpb249Y2UuZnguc3BlZWRzLl9kZWZhdWx0KSxudWxsIT1yLnF1ZXVlJiYhMCE9PXIucXVldWV8fChyLnF1ZXVlPSJmeCIpLHIub2xkPXIuY29tcGxldGUsci5jb21wbGV0ZT1mdW5jdGlvbigpe3Yoci5vbGQpJiZyLm9sZC5jYWxsKHRoaXMpLHIucXVldWUmJmNlLmRlcXVldWUodGhpcyxyLnF1ZXVlKX0scn0sY2UuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKGVlKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUsbixyKX0sYW5pbWF0ZTpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1jZS5pc0VtcHR5T2JqZWN0KHQpLG89Y2Uuc3BlZWQoZSxuLHIpLGE9ZnVuY3Rpb24oKXt2YXIgZT15dCh0aGlzLGNlLmV4dGVuZCh7fSx0KSxvKTsoaXx8Xy5nZXQodGhpcywiZmluaXNoIikpJiZlLnN0b3AoITApfTtyZXR1cm4gYS5maW5pc2g9YSxpfHwhMT09PW8ucXVldWU/dGhpcy5lYWNoKGEpOnRoaXMucXVldWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5jdGlvbihpLGUsbyl7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3AsdChvKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpJiYobz1lLGU9aSxpPXZvaWQgMCksZSYmdGhpcy5xdWV1ZShpfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0hMCx0PW51bGwhPWkmJmkrInF1ZXVlSG9va3MiLG49Y2UudGltZXJzLHI9Xy5nZXQodGhpcyk7aWYodClyW3RdJiZyW3RdLnN0b3AmJmEoclt0XSk7ZWxzZSBmb3IodCBpbiByKXJbdF0mJnJbdF0uc3RvcCYmcHQudGVzdCh0KSYmYShyW3RdKTtmb3IodD1uLmxlbmd0aDt0LS07KW5bdF0uZWxlbSE9PXRoaXN8fG51bGwhPWkmJm5bdF0ucXVldWUhPT1pfHwoblt0XS5hbmltLnN0b3AobyksZT0hMSxuLnNwbGljZSh0LDEpKTshZSYmb3x8Y2UuZGVxdWV1ZSh0aGlzLGkpfSl9LGZpbmlzaDpmdW5jdGlvbihhKXtyZXR1cm4hMSE9PWEmJihhPWF8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQ9Xy5nZXQodGhpcyksbj10W2ErInF1ZXVlIl0scj10W2ErInF1ZXVlSG9va3MiXSxpPWNlLnRpbWVycyxvPW4/bi5sZW5ndGg6MDtmb3IodC5maW5pc2g9ITAsY2UucXVldWUodGhpcyxhLFtdKSxyJiZyLnN0b3AmJnIuc3RvcC5jYWxsKHRoaXMsITApLGU9aS5sZW5ndGg7ZS0tOylpW2VdLmVsZW09PT10aGlzJiZpW2VdLnF1ZXVlPT09YSYmKGlbZV0uYW5pbS5zdG9wKCEwKSxpLnNwbGljZShlLDEpKTtmb3IoZT0wO2U8bztlKyspbltlXSYmbltlXS5maW5pc2gmJm5bZV0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIHQuZmluaXNofSl9fSksY2UuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24oZSxyKXt2YXIgaT1jZS5mbltyXTtjZS5mbltyXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09dHlwZW9mIGU/aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGd0KHIsITApLGUsdCxuKX19KSxjZS5lYWNoKHtzbGlkZURvd246Z3QoInNob3ciKSxzbGlkZVVwOmd0KCJoaWRlIiksc2xpZGVUb2dnbGU6Z3QoInRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oZSxyKXtjZS5mbltlXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuYW5pbWF0ZShyLGUsdCxuKX19KSxjZS50aW1lcnM9W10sY2UuZngudGljaz1mdW5jdGlvbigpe3ZhciBlLHQ9MCxuPWNlLnRpbWVycztmb3Ioc3Q9RGF0ZS5ub3coKTt0PG4ubGVuZ3RoO3QrKykoZT1uW3RdKSgpfHxuW3RdIT09ZXx8bi5zcGxpY2UodC0tLDEpO24ubGVuZ3RofHxjZS5meC5zdG9wKCksc3Q9dm9pZCAwfSxjZS5meC50aW1lcj1mdW5jdGlvbihlKXtjZS50aW1lcnMucHVzaChlKSxjZS5meC5zdGFydCgpfSxjZS5meC5pbnRlcnZhbD0xMyxjZS5meC5zdGFydD1mdW5jdGlvbigpe3V0fHwodXQ9ITAsZHQoKSl9LGNlLmZ4LnN0b3A9ZnVuY3Rpb24oKXt1dD1udWxsfSxjZS5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sY2UuZm4uZGVsYXk9ZnVuY3Rpb24ocixlKXtyZXR1cm4gcj1jZS5meCYmY2UuZnguc3BlZWRzW3JdfHxyLGU9ZXx8ImZ4Iix0aGlzLnF1ZXVlKGUsZnVuY3Rpb24oZSx0KXt2YXIgbj1pZS5zZXRUaW1lb3V0KGUscik7dC5zdG9wPWZ1bmN0aW9uKCl7aWUuY2xlYXJUaW1lb3V0KG4pfX0pfSxsdD1DLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksY3Q9Qy5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChDLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSxsdC50eXBlPSJjaGVja2JveCIsbGUuY2hlY2tPbj0iIiE9PWx0LnZhbHVlLGxlLm9wdFNlbGVjdGVkPWN0LnNlbGVjdGVkLChsdD1DLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnZhbHVlPSJ0IixsdC50eXBlPSJyYWRpbyIsbGUucmFkaW9WYWx1ZT0idCI9PT1sdC52YWx1ZTt2YXIgbXQseHQ9Y2UuZXhwci5hdHRySGFuZGxlO2NlLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiBNKHRoaXMsY2UuYXR0cixlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Y2UucmVtb3ZlQXR0cih0aGlzLGUpfSl9fSksY2UuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZS5nZXRBdHRyaWJ1dGU/Y2UucHJvcChlLHQsbik6KDE9PT1vJiZjZS5pc1hNTERvYyhlKXx8KGk9Y2UuYXR0ckhvb2tzW3QudG9Mb3dlckNhc2UoKV18fChjZS5leHByLm1hdGNoLmJvb2wudGVzdCh0KT9tdDp2b2lkIDApKSx2b2lkIDAhPT1uP251bGw9PT1uP3ZvaWQgY2UucmVtb3ZlQXR0cihlLHQpOmkmJiJzZXQiaW4gaSYmdm9pZCAwIT09KHI9aS5zZXQoZSxuLHQpKT9yOihlLnNldEF0dHJpYnV0ZSh0LG4rIiIpLG4pOmkmJiJnZXQiaW4gaSYmbnVsbCE9PShyPWkuZ2V0KGUsdCkpP3I6bnVsbD09KHI9Y2UuZmluZC5hdHRyKGUsdCkpP3ZvaWQgMDpyKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZSx0KXtpZighbGUucmFkaW9WYWx1ZSYmInJhZGlvIj09PXQmJmZlKGUsImlucHV0Iikpe3ZhciBuPWUudmFsdWU7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJ0eXBlIix0KSxuJiYoZS52YWx1ZT1uKSx0fX19fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wLGk9dCYmdC5tYXRjaChEKTtpZihpJiYxPT09ZS5ub2RlVHlwZSl3aGlsZShuPWlbcisrXSllLnJlbW92ZUF0dHJpYnV0ZShuKX19KSxtdD17c2V0OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hMT09PXQ/Y2UucmVtb3ZlQXR0cihlLG4pOmUuc2V0QXR0cmlidXRlKG4sbiksbn19LGNlLmVhY2goY2UuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGUsdCl7dmFyIGE9eHRbdF18fGNlLmZpbmQuYXR0cjt4dFt0XT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXQudG9Mb3dlckNhc2UoKTtyZXR1cm4gbnx8KGk9eHRbb10seHRbb109cixyPW51bGwhPWEoZSx0LG4pP286bnVsbCx4dFtvXT1pKSxyfX0pO3ZhciBidD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLHd0PS9eKD86YXxhcmVhKSQvaTtmdW5jdGlvbiBUdChlKXtyZXR1cm4oZS5tYXRjaChEKXx8W10pLmpvaW4oIiAiKX1mdW5jdGlvbiBDdChlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1mdW5jdGlvbiBrdChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOiJzdHJpbmciPT10eXBlb2YgZSYmZS5tYXRjaChEKXx8W119Y2UuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIE0odGhpcyxjZS5wcm9wLGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkZWxldGUgdGhpc1tjZS5wcm9wRml4W2VdfHxlXX0pfX0pLGNlLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4gMT09PW8mJmNlLmlzWE1MRG9jKGUpfHwodD1jZS5wcm9wRml4W3RdfHx0LGk9Y2UucHJvcEhvb2tzW3RdKSx2b2lkIDAhPT1uP2kmJiJzZXQiaW4gaSYmdm9pZCAwIT09KHI9aS5zZXQoZSxuLHQpKT9yOmVbdF09bjppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOmVbdF19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihlKXt2YXIgdD1jZS5maW5kLmF0dHIoZSwidGFiaW5kZXgiKTtyZXR1cm4gdD9wYXJzZUludCh0LDEwKTpidC50ZXN0KGUubm9kZU5hbWUpfHx3dC50ZXN0KGUubm9kZU5hbWUpJiZlLmhyZWY/MDotMX19fSxwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn19KSxsZS5vcHRTZWxlY3RlZHx8KGNlLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3QmJih0LnNlbGVjdGVkSW5kZXgsdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksY2UuZWFjaChbInRhYkluZGV4IiwicmVhZE9ubHkiLCJtYXhMZW5ndGgiLCJjZWxsU3BhY2luZyIsImNlbGxQYWRkaW5nIiwicm93U3BhbiIsImNvbFNwYW4iLCJ1c2VNYXAiLCJmcmFtZUJvcmRlciIsImNvbnRlbnRFZGl0YWJsZSJdLGZ1bmN0aW9uKCl7Y2UucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxjZS5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLG8sYTtyZXR1cm4gdih0KT90aGlzLmVhY2goZnVuY3Rpb24oZSl7Y2UodGhpcykuYWRkQ2xhc3ModC5jYWxsKHRoaXMsZSxDdCh0aGlzKSkpfSk6KGU9a3QodCkpLmxlbmd0aD90aGlzLmVhY2goZnVuY3Rpb24oKXtpZihyPUN0KHRoaXMpLG49MT09PXRoaXMubm9kZVR5cGUmJiIgIitUdChyKSsiICIpe2ZvcihvPTA7bzxlLmxlbmd0aDtvKyspaT1lW29dLG4uaW5kZXhPZigiICIraSsiICIpPDAmJihuKz1pKyIgIik7YT1UdChuKSxyIT09YSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixhKX19KTp0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGE7cmV0dXJuIHYodCk/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe2NlKHRoaXMpLnJlbW92ZUNsYXNzKHQuY2FsbCh0aGlzLGUsQ3QodGhpcykpKX0pOmFyZ3VtZW50cy5sZW5ndGg/KGU9a3QodCkpLmxlbmd0aD90aGlzLmVhY2goZnVuY3Rpb24oKXtpZihyPUN0KHRoaXMpLG49MT09PXRoaXMubm9kZVR5cGUmJiIgIitUdChyKSsiICIpe2ZvcihvPTA7bzxlLmxlbmd0aDtvKyspe2k9ZVtvXTt3aGlsZSgtMTxuLmluZGV4T2YoIiAiK2krIiAiKSluPW4ucmVwbGFjZSgiICIraSsiICIsIiAiKX1hPVR0KG4pLHIhPT1hJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGEpfX0pOnRoaXM6dGhpcy5hdHRyKCJjbGFzcyIsIiIpfSx0b2dnbGVDbGFzczpmdW5jdGlvbih0LG4pe3ZhciBlLHIsaSxvLGE9dHlwZW9mIHQscz0ic3RyaW5nIj09PWF8fEFycmF5LmlzQXJyYXkodCk7cmV0dXJuIHYodCk/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe2NlKHRoaXMpLnRvZ2dsZUNsYXNzKHQuY2FsbCh0aGlzLGUsQ3QodGhpcyksbiksbil9KToiYm9vbGVhbiI9PXR5cGVvZiBuJiZzP24/dGhpcy5hZGRDbGFzcyh0KTp0aGlzLnJlbW92ZUNsYXNzKHQpOihlPWt0KHQpLHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHMpZm9yKG89Y2UodGhpcyksaT0wO2k8ZS5sZW5ndGg7aSsrKXI9ZVtpXSxvLmhhc0NsYXNzKHIpP28ucmVtb3ZlQ2xhc3Mocik6by5hZGRDbGFzcyhyKTtlbHNlIHZvaWQgMCE9PXQmJiJib29sZWFuIiE9PWF8fCgocj1DdCh0aGlzKSkmJl8uc2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iLHIpLHRoaXMuc2V0QXR0cmlidXRlJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHJ8fCExPT09dD8iIjpfLmdldCh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKSl9KSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj0wO3Q9IiAiK2UrIiAiO3doaWxlKG49dGhpc1tyKytdKWlmKDE9PT1uLm5vZGVUeXBlJiYtMTwoIiAiK1R0KEN0KG4pKSsiICIpLmluZGV4T2YodCkpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIFN0PS9cci9nO2NlLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKG4pe3ZhciByLGUsaSx0PXRoaXNbMF07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dihuKSx0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ7MT09PXRoaXMubm9kZVR5cGUmJihudWxsPT0odD1pP24uY2FsbCh0aGlzLGUsY2UodGhpcykudmFsKCkpOm4pP3Q9IiI6Im51bWJlciI9PXR5cGVvZiB0P3QrPSIiOkFycmF5LmlzQXJyYXkodCkmJih0PWNlLm1hcCh0LGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSksKHI9Y2UudmFsSG9va3NbdGhpcy50eXBlXXx8Y2UudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJzZXQiaW4gciYmdm9pZCAwIT09ci5zZXQodGhpcyx0LCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT10KSl9KSk6dD8ocj1jZS52YWxIb29rc1t0LnR5cGVdfHxjZS52YWxIb29rc1t0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSYmImdldCJpbiByJiZ2b2lkIDAhPT0oZT1yLmdldCh0LCJ2YWx1ZSIpKT9lOiJzdHJpbmciPT10eXBlb2YoZT10LnZhbHVlKT9lLnJlcGxhY2UoU3QsIiIpOm51bGw9PWU/IiI6ZTp2b2lkIDB9fSksY2UuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9Y2UuZmluZC5hdHRyKGUsInZhbHVlIik7cmV0dXJuIG51bGwhPXQ/dDpUdChjZS50ZXh0KGUpKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpPWUub3B0aW9ucyxvPWUuc2VsZWN0ZWRJbmRleCxhPSJzZWxlY3Qtb25lIj09PWUudHlwZSxzPWE/bnVsbDpbXSx1PWE/bysxOmkubGVuZ3RoO2ZvcihyPW88MD91OmE/bzowO3I8dTtyKyspaWYoKChuPWlbcl0pLnNlbGVjdGVkfHxyPT09bykmJiFuLmRpc2FibGVkJiYoIW4ucGFyZW50Tm9kZS5kaXNhYmxlZHx8IWZlKG4ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKHQ9Y2UobikudmFsKCksYSlyZXR1cm4gdDtzLnB1c2godCl9cmV0dXJuIHN9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT1lLm9wdGlvbnMsbz1jZS5tYWtlQXJyYXkodCksYT1pLmxlbmd0aDt3aGlsZShhLS0pKChyPWlbYV0pLnNlbGVjdGVkPS0xPGNlLmluQXJyYXkoY2UudmFsSG9va3Mub3B0aW9uLmdldChyKSxvKSkmJihuPSEwKTtyZXR1cm4gbnx8KGUuc2VsZWN0ZWRJbmRleD0tMSksb319fX0pLGNlLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtjZS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGUsdCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gZS5jaGVja2VkPS0xPGNlLmluQXJyYXkoY2UoZSkudmFsKCksdCl9fSxsZS5jaGVja09ufHwoY2UudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjplLnZhbHVlfSl9KTt2YXIgRXQ9aWUubG9jYXRpb24sanQ9e2d1aWQ6RGF0ZS5ub3coKX0sQXQ9L1w/LztjZS5wYXJzZVhNTD1mdW5jdGlvbihlKXt2YXIgdCxuO2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e3Q9KG5ldyBpZS5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhlLCJ0ZXh0L3htbCIpfWNhdGNoKGUpe31yZXR1cm4gbj10JiZ0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpWzBdLHQmJiFufHxjZS5lcnJvcigiSW52YWxpZCBYTUw6ICIrKG4/Y2UubWFwKG4uY2hpbGROb2RlcyxmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pLmpvaW4oIlxuIik6ZSkpLHR9O3ZhciBEdD0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sTnQ9ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX07Y2UuZXh0ZW5kKGNlLmV2ZW50LHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbCxjLGYscD1bbnx8Q10sZD11ZS5jYWxsKGUsInR5cGUiKT9lLnR5cGU6ZSxoPXVlLmNhbGwoZSwibmFtZXNwYWNlIik/ZS5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihvPWY9YT1uPW58fEMsMyE9PW4ubm9kZVR5cGUmJjghPT1uLm5vZGVUeXBlJiYhRHQudGVzdChkK2NlLmV2ZW50LnRyaWdnZXJlZCkmJigtMTxkLmluZGV4T2YoIi4iKSYmKGQ9KGg9ZC5zcGxpdCgiLiIpKS5zaGlmdCgpLGguc29ydCgpKSx1PWQuaW5kZXhPZigiOiIpPDAmJiJvbiIrZCwoZT1lW2NlLmV4cGFuZG9dP2U6bmV3IGNlLkV2ZW50KGQsIm9iamVjdCI9PXR5cGVvZiBlJiZlKSkuaXNUcmlnZ2VyPXI/MjozLGUubmFtZXNwYWNlPWguam9pbigiLiIpLGUucm5hbWVzcGFjZT1lLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIitoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsZS5yZXN1bHQ9dm9pZCAwLGUudGFyZ2V0fHwoZS50YXJnZXQ9biksdD1udWxsPT10P1tlXTpjZS5tYWtlQXJyYXkodCxbZV0pLGM9Y2UuZXZlbnQuc3BlY2lhbFtkXXx8e30scnx8IWMudHJpZ2dlcnx8ITEhPT1jLnRyaWdnZXIuYXBwbHkobix0KSkpe2lmKCFyJiYhYy5ub0J1YmJsZSYmIXkobikpe2ZvcihzPWMuZGVsZWdhdGVUeXBlfHxkLER0LnRlc3QocytkKXx8KG89by5wYXJlbnROb2RlKTtvO289by5wYXJlbnROb2RlKXAucHVzaChvKSxhPW87YT09PShuLm93bmVyRG9jdW1lbnR8fEMpJiZwLnB1c2goYS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3d8fGllKX1pPTA7d2hpbGUoKG89cFtpKytdKSYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlmPW8sZS50eXBlPTE8aT9zOmMuYmluZFR5cGV8fGQsKGw9KF8uZ2V0KG8sImV2ZW50cyIpfHxPYmplY3QuY3JlYXRlKG51bGwpKVtlLnR5cGVdJiZfLmdldChvLCJoYW5kbGUiKSkmJmwuYXBwbHkobyx0KSwobD11JiZvW3VdKSYmbC5hcHBseSYmJChvKSYmKGUucmVzdWx0PWwuYXBwbHkobyx0KSwhMT09PWUucmVzdWx0JiZlLnByZXZlbnREZWZhdWx0KCkpO3JldHVybiBlLnR5cGU9ZCxyfHxlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxjLl9kZWZhdWx0JiYhMSE9PWMuX2RlZmF1bHQuYXBwbHkocC5wb3AoKSx0KXx8ISQobil8fHUmJnYobltkXSkmJiF5KG4pJiYoKGE9blt1XSkmJihuW3VdPW51bGwpLGNlLmV2ZW50LnRyaWdnZXJlZD1kLGUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmZi5hZGRFdmVudExpc3RlbmVyKGQsTnQpLG5bZF0oKSxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYucmVtb3ZlRXZlbnRMaXN0ZW5lcihkLE50KSxjZS5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGEmJihuW3VdPWEpKSxlLnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1jZS5leHRlbmQobmV3IGNlLkV2ZW50LG4se3R5cGU6ZSxpc1NpbXVsYXRlZDohMH0pO2NlLmV2ZW50LnRyaWdnZXIocixudWxsLHQpfX0pLGNlLmZuLmV4dGVuZCh7dHJpZ2dlcjpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtjZS5ldmVudC50cmlnZ2VyKGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXNbMF07aWYobilyZXR1cm4gY2UuZXZlbnQudHJpZ2dlcihlLHQsbiwhMCl9fSk7dmFyIHF0PS9cW1xdJC8sTHQ9L1xyP1xuL2csSHQ9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLE90PS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtmdW5jdGlvbiBQdChuLGUscixpKXt2YXIgdDtpZihBcnJheS5pc0FycmF5KGUpKWNlLmVhY2goZSxmdW5jdGlvbihlLHQpe3J8fHF0LnRlc3Qobik/aShuLHQpOlB0KG4rIlsiKygib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQ/ZToiIikrIl0iLHQscixpKX0pO2Vsc2UgaWYocnx8Im9iamVjdCIhPT14KGUpKWkobixlKTtlbHNlIGZvcih0IGluIGUpUHQobisiWyIrdCsiXSIsZVt0XSxyLGkpfWNlLnBhcmFtPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49dih0KT90KCk6dDtyW3IubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoZSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1uPyIiOm4pfTtpZihudWxsPT1lKXJldHVybiIiO2lmKEFycmF5LmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhY2UuaXNQbGFpbk9iamVjdChlKSljZS5lYWNoKGUsZnVuY3Rpb24oKXtpKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKG4gaW4gZSlQdChuLGVbbl0sdCxpKTtyZXR1cm4gci5qb2luKCImIil9LGNlLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGNlLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9Y2UucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBlP2NlLm1ha2VBcnJheShlKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFjZSh0aGlzKS5pcygiOmRpc2FibGVkIikmJk90LnRlc3QodGhpcy5ub2RlTmFtZSkmJiFIdC50ZXN0KGUpJiYodGhpcy5jaGVja2VkfHwhd2UudGVzdChlKSl9KS5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgbj1jZSh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09bj9udWxsOkFycmF5LmlzQXJyYXkobik/Y2UubWFwKG4sZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShMdCwiXHJcbiIpfX0pOntuYW1lOnQubmFtZSx2YWx1ZTpuLnJlcGxhY2UoTHQsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIgTXQ9LyUyMC9nLFJ0PS8jLiokLyxJdD0vKFs/Jl0pXz1bXiZdKi8sV3Q9L14oLio/KTpbIFx0XSooW15cclxuXSopJC9nbSxGdD0vXig/OkdFVHxIRUFEKSQvLCR0PS9eXC9cLy8sQnQ9e30sX3Q9e30senQ9IiovIi5jb25jYXQoIioiKSxYdD1DLmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBVdChvKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT0iKiIpO3ZhciBuLHI9MCxpPWUudG9Mb3dlckNhc2UoKS5tYXRjaChEKXx8W107aWYodih0KSl3aGlsZShuPWlbcisrXSkiKyI9PT1uWzBdPyhuPW4uc2xpY2UoMSl8fCIqIiwob1tuXT1vW25dfHxbXSkudW5zaGlmdCh0KSk6KG9bbl09b1tuXXx8W10pLnB1c2godCl9fWZ1bmN0aW9uIFZ0KHQsaSxvLGEpe3ZhciBzPXt9LHU9dD09PV90O2Z1bmN0aW9uIGwoZSl7dmFyIHI7cmV0dXJuIHNbZV09ITAsY2UuZWFjaCh0W2VdfHxbXSxmdW5jdGlvbihlLHQpe3ZhciBuPXQoaSxvLGEpO3JldHVybiJzdHJpbmciIT10eXBlb2Ygbnx8dXx8c1tuXT91PyEocj1uKTp2b2lkIDA6KGkuZGF0YVR5cGVzLnVuc2hpZnQobiksbChuKSwhMSl9KSxyfXJldHVybiBsKGkuZGF0YVR5cGVzWzBdKXx8IXNbIioiXSYmbCgiKiIpfWZ1bmN0aW9uIEd0KGUsdCl7dmFyIG4scixpPWNlLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKG4gaW4gdCl2b2lkIDAhPT10W25dJiYoKGlbbl0/ZTpyfHwocj17fSkpW25dPXRbbl0pO3JldHVybiByJiZjZS5leHRlbmQoITAsZSxyKSxlfVh0LmhyZWY9RXQuaHJlZixjZS5leHRlbmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9LGFqYXhTZXR0aW5nczp7dXJsOkV0LmhyZWYsdHlwZToiR0VUIixpc0xvY2FsOi9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLnRlc3QoRXQucHJvdG9jb2wpLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6enQsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L1xieG1sXGIvLGh0bWw6L1xiaHRtbC8sanNvbjovXGJqc29uXGIvfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04ifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6SlNPTi5wYXJzZSwidGV4dCB4bWwiOmNlLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9HdChHdChlLGNlLmFqYXhTZXR0aW5ncyksdCk6R3QoY2UuYWpheFNldHRpbmdzLGUpfSxhamF4UHJlZmlsdGVyOlV0KEJ0KSxhamF4VHJhbnNwb3J0OlV0KF90KSxhamF4OmZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBlJiYodD1lLGU9dm9pZCAwKSx0PXR8fHt9O3ZhciBjLGYscCxuLGQscixoLGcsaSxvLHY9Y2UuYWpheFNldHVwKHt9LHQpLHk9di5jb250ZXh0fHx2LG09di5jb250ZXh0JiYoeS5ub2RlVHlwZXx8eS5qcXVlcnkpP2NlKHkpOmNlLmV2ZW50LHg9Y2UuRGVmZXJyZWQoKSxiPWNlLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx3PXYuc3RhdHVzQ29kZXx8e30sYT17fSxzPXt9LHU9ImNhbmNlbGVkIixUPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoaCl7aWYoIW4pe249e307d2hpbGUodD1XdC5leGVjKHApKW5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl09KG5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl18fFtdKS5jb25jYXQodFsyXSl9dD1uW2UudG9Mb3dlckNhc2UoKSsiICJdfXJldHVybiBudWxsPT10P251bGw6dC5qb2luKCIsICIpfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaD9wOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09aCYmKGU9c1tlLnRvTG93ZXJDYXNlKCldPXNbZS50b0xvd2VyQ2FzZSgpXXx8ZSxhW2VdPXQpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWgmJih2Lm1pbWVUeXBlPWUpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZihoKVQuYWx3YXlzKGVbVC5zdGF0dXNdKTtlbHNlIGZvcih0IGluIGUpd1t0XT1bd1t0XSxlW3RdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8dTtyZXR1cm4gYyYmYy5hYm9ydCh0KSxsKDAsdCksdGhpc319O2lmKHgucHJvbWlzZShUKSx2LnVybD0oKGV8fHYudXJsfHxFdC5ocmVmKSsiIikucmVwbGFjZSgkdCxFdC5wcm90b2NvbCsiLy8iKSx2LnR5cGU9dC5tZXRob2R8fHQudHlwZXx8di5tZXRob2R8fHYudHlwZSx2LmRhdGFUeXBlcz0odi5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEQpfHxbIiJdLG51bGw9PXYuY3Jvc3NEb21haW4pe3I9Qy5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e3IuaHJlZj12LnVybCxyLmhyZWY9ci5ocmVmLHYuY3Jvc3NEb21haW49WHQucHJvdG9jb2wrIi8vIitYdC5ob3N0IT1yLnByb3RvY29sKyIvLyIrci5ob3N0fWNhdGNoKGUpe3YuY3Jvc3NEb21haW49ITB9fWlmKHYuZGF0YSYmdi5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiB2LmRhdGEmJih2LmRhdGE9Y2UucGFyYW0odi5kYXRhLHYudHJhZGl0aW9uYWwpKSxWdChCdCx2LHQsVCksaClyZXR1cm4gVDtmb3IoaSBpbihnPWNlLmV2ZW50JiZ2Lmdsb2JhbCkmJjA9PWNlLmFjdGl2ZSsrJiZjZS5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSx2LnR5cGU9di50eXBlLnRvVXBwZXJDYXNlKCksdi5oYXNDb250ZW50PSFGdC50ZXN0KHYudHlwZSksZj12LnVybC5yZXBsYWNlKFJ0LCIiKSx2Lmhhc0NvbnRlbnQ/di5kYXRhJiZ2LnByb2Nlc3NEYXRhJiYwPT09KHYuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmKHYuZGF0YT12LmRhdGEucmVwbGFjZShNdCwiKyIpKToobz12LnVybC5zbGljZShmLmxlbmd0aCksdi5kYXRhJiYodi5wcm9jZXNzRGF0YXx8InN0cmluZyI9PXR5cGVvZiB2LmRhdGEpJiYoZis9KEF0LnRlc3QoZik/IiYiOiI/Iikrdi5kYXRhLGRlbGV0ZSB2LmRhdGEpLCExPT09di5jYWNoZSYmKGY9Zi5yZXBsYWNlKEl0LCIkMSIpLG89KEF0LnRlc3QoZik/IiYiOiI/IikrIl89IitqdC5ndWlkKysrbyksdi51cmw9ZitvKSx2LmlmTW9kaWZpZWQmJihjZS5sYXN0TW9kaWZpZWRbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLGNlLmxhc3RNb2RpZmllZFtmXSksY2UuZXRhZ1tmXSYmVC5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixjZS5ldGFnW2ZdKSksKHYuZGF0YSYmdi5oYXNDb250ZW50JiYhMSE9PXYuY29udGVudFR5cGV8fHQuY29udGVudFR5cGUpJiZULnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsdi5jb250ZW50VHlwZSksVC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHYuZGF0YVR5cGVzWzBdJiZ2LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dP3YuYWNjZXB0c1t2LmRhdGFUeXBlc1swXV0rKCIqIiE9PXYuZGF0YVR5cGVzWzBdPyIsICIrenQrIjsgcT0wLjAxIjoiIik6di5hY2NlcHRzWyIqIl0pLHYuaGVhZGVycylULnNldFJlcXVlc3RIZWFkZXIoaSx2LmhlYWRlcnNbaV0pO2lmKHYuYmVmb3JlU2VuZCYmKCExPT09di5iZWZvcmVTZW5kLmNhbGwoeSxULHYpfHxoKSlyZXR1cm4gVC5hYm9ydCgpO2lmKHU9ImFib3J0IixiLmFkZCh2LmNvbXBsZXRlKSxULmRvbmUodi5zdWNjZXNzKSxULmZhaWwodi5lcnJvciksYz1WdChfdCx2LHQsVCkpe2lmKFQucmVhZHlTdGF0ZT0xLGcmJm0udHJpZ2dlcigiYWpheFNlbmQiLFtULHZdKSxoKXJldHVybiBUO3YuYXN5bmMmJjA8di50aW1lb3V0JiYoZD1pZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VC5hYm9ydCgidGltZW91dCIpfSx2LnRpbWVvdXQpKTt0cnl7aD0hMSxjLnNlbmQoYSxsKX1jYXRjaChlKXtpZihoKXRocm93IGU7bCgtMSxlKX19ZWxzZSBsKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBsKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD10O2h8fChoPSEwLGQmJmllLmNsZWFyVGltZW91dChkKSxjPXZvaWQgMCxwPXJ8fCIiLFQucmVhZHlTdGF0ZT0wPGU/NDowLGk9MjAwPD1lJiZlPDMwMHx8MzA0PT09ZSxuJiYocz1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscz1lLmNvbnRlbnRzLHU9ZS5kYXRhVHlwZXM7d2hpbGUoIioiPT09dVswXSl1LnNoaWZ0KCksdm9pZCAwPT09ciYmKHI9ZS5taW1lVHlwZXx8dC5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKHIpZm9yKGkgaW4gcylpZihzW2ldJiZzW2ldLnRlc3Qocikpe3UudW5zaGlmdChpKTticmVha31pZih1WzBdaW4gbilvPXVbMF07ZWxzZXtmb3IoaSBpbiBuKXtpZighdVswXXx8ZS5jb252ZXJ0ZXJzW2krIiAiK3VbMF1dKXtvPWk7YnJlYWt9YXx8KGE9aSl9bz1vfHxhfWlmKG8pcmV0dXJuIG8hPT11WzBdJiZ1LnVuc2hpZnQobyksbltvXX0odixULG4pKSwhaSYmLTE8Y2UuaW5BcnJheSgic2NyaXB0Iix2LmRhdGFUeXBlcykmJmNlLmluQXJyYXkoImpzb24iLHYuZGF0YVR5cGVzKTwwJiYodi5jb252ZXJ0ZXJzWyJ0ZXh0IHNjcmlwdCJdPWZ1bmN0aW9uKCl7fSkscz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hpbGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1sW3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1sW2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRocm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fSh2LHMsVCxpKSxpPyh2LmlmTW9kaWZpZWQmJigodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoY2UubGFzdE1vZGlmaWVkW2ZdPXUpLCh1PVQuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSkmJihjZS5ldGFnW2ZdPXUpKSwyMDQ9PT1lfHwiSEVBRCI9PT12LnR5cGU/bD0ibm9jb250ZW50IjozMDQ9PT1lP2w9Im5vdG1vZGlmaWVkIjoobD1zLnN0YXRlLG89cy5kYXRhLGk9IShhPXMuZXJyb3IpKSk6KGE9bCwhZSYmbHx8KGw9ImVycm9yIixlPDAmJihlPTApKSksVC5zdGF0dXM9ZSxULnN0YXR1c1RleHQ9KHR8fGwpKyIiLGk/eC5yZXNvbHZlV2l0aCh5LFtvLGwsVF0pOngucmVqZWN0V2l0aCh5LFtULGwsYV0pLFQuc3RhdHVzQ29kZSh3KSx3PXZvaWQgMCxnJiZtLnRyaWdnZXIoaT8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFtULHYsaT9vOmFdKSxiLmZpcmVXaXRoKHksW1QsbF0pLGcmJihtLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW1Qsdl0pLC0tY2UuYWN0aXZlfHxjZS5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSl9cmV0dXJuIFR9LGdldEpTT046ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBjZS5nZXQoZSx0LG4sImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGNlLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxjZS5lYWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGUsaSl7Y2VbaV09ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHYodCkmJihyPXJ8fG4sbj10LHQ9dm9pZCAwKSxjZS5hamF4KGNlLmV4dGVuZCh7dXJsOmUsdHlwZTppLGRhdGFUeXBlOnIsZGF0YTp0LHN1Y2Nlc3M6bn0sY2UuaXNQbGFpbk9iamVjdChlKSYmZSkpfX0pLGNlLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZS5oZWFkZXJzKSJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpJiYoZS5jb250ZW50VHlwZT1lLmhlYWRlcnNbdF18fCIiKX0pLGNlLl9ldmFsVXJsPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gY2UuYWpheCh7dXJsOmUsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbigpe319LGRhdGFGaWx0ZXI6ZnVuY3Rpb24oZSl7Y2UuZ2xvYmFsRXZhbChlLHQsbil9fSl9LGNlLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gdGhpc1swXSYmKHYoZSkmJihlPWUuY2FsbCh0aGlzWzBdKSksdD1jZShlLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLHRoaXNbMF0ucGFyZW50Tm9kZSYmdC5pbnNlcnRCZWZvcmUodGhpc1swXSksdC5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzO3doaWxlKGUuZmlyc3RFbGVtZW50Q2hpbGQpZT1lLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBlfSkuYXBwZW5kKHRoaXMpKSx0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24obil7cmV0dXJuIHYobik/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe2NlKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcyxlKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1jZSh0aGlzKSx0PWUuY29udGVudHMoKTt0Lmxlbmd0aD90LndyYXBBbGwobik6ZS5hcHBlbmQobil9KX0sd3JhcDpmdW5jdGlvbih0KXt2YXIgbj12KHQpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7Y2UodGhpcykud3JhcEFsbChuP3QuY2FsbCh0aGlzLGUpOnQpfSl9LHVud3JhcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wYXJlbnQoZSkubm90KCJib2R5IikuZWFjaChmdW5jdGlvbigpe2NlKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLGNlLmV4cHIucHNldWRvcy5oaWRkZW49ZnVuY3Rpb24oZSl7cmV0dXJuIWNlLmV4cHIucHNldWRvcy52aXNpYmxlKGUpfSxjZS5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4hIShlLm9mZnNldFdpZHRofHxlLm9mZnNldEhlaWdodHx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LGNlLmFqYXhTZXR0aW5ncy54aHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBpZS5YTUxIdHRwUmVxdWVzdH1jYXRjaChlKXt9fTt2YXIgWXQ9ezA6MjAwLDEyMjM6MjA0fSxRdD1jZS5hamF4U2V0dGluZ3MueGhyKCk7bGUuY29ycz0hIVF0JiYid2l0aENyZWRlbnRpYWxzImluIFF0LGxlLmFqYXg9UXQ9ISFRdCxjZS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGkpe3ZhciBvLGE7aWYobGUuY29yc3x8UXQmJiFpLmNyb3NzRG9tYWluKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1pLnhocigpO2lmKHIub3BlbihpLnR5cGUsaS51cmwsaS5hc3luYyxpLnVzZXJuYW1lLGkucGFzc3dvcmQpLGkueGhyRmllbGRzKWZvcihuIGluIGkueGhyRmllbGRzKXJbbl09aS54aHJGaWVsZHNbbl07Zm9yKG4gaW4gaS5taW1lVHlwZSYmci5vdmVycmlkZU1pbWVUeXBlJiZyLm92ZXJyaWRlTWltZVR5cGUoaS5taW1lVHlwZSksaS5jcm9zc0RvbWFpbnx8ZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdfHwoZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpLGUpci5zZXRSZXF1ZXN0SGVhZGVyKG4sZVtuXSk7bz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtvJiYobz1hPXIub25sb2FkPXIub25lcnJvcj1yLm9uYWJvcnQ9ci5vbnRpbWVvdXQ9ci5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCwiYWJvcnQiPT09ZT9yLmFib3J0KCk6ImVycm9yIj09PWU/Im51bWJlciIhPXR5cGVvZiByLnN0YXR1cz90KDAsImVycm9yIik6dChyLnN0YXR1cyxyLnN0YXR1c1RleHQpOnQoWXRbci5zdGF0dXNdfHxyLnN0YXR1cyxyLnN0YXR1c1RleHQsInRleHQiIT09KHIucmVzcG9uc2VUeXBlfHwidGV4dCIpfHwic3RyaW5nIiE9dHlwZW9mIHIucmVzcG9uc2VUZXh0P3tiaW5hcnk6ci5yZXNwb25zZX06e3RleHQ6ci5yZXNwb25zZVRleHR9LHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKX19LHIub25sb2FkPW8oKSxhPXIub25lcnJvcj1yLm9udGltZW91dD1vKCJlcnJvciIpLHZvaWQgMCE9PXIub25hYm9ydD9yLm9uYWJvcnQ9YTpyLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQ9PT1yLnJlYWR5U3RhdGUmJmllLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtvJiZhKCl9KX0sbz1vKCJhYm9ydCIpO3RyeXtyLnNlbmQoaS5oYXNDb250ZW50JiZpLmRhdGF8fG51bGwpfWNhdGNoKGUpe2lmKG8pdGhyb3cgZX19LGFib3J0OmZ1bmN0aW9uKCl7byYmbygpfX19KSxjZS5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxjZS5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9cYig/OmphdmF8ZWNtYSlzY3JpcHRcYi99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGNlLmdsb2JhbEV2YWwoZSksZX19fSksY2UuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXt2b2lkIDA9PT1lLmNhY2hlJiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIil9KSxjZS5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKG4pe3ZhciByLGk7aWYobi5jcm9zc0RvbWFpbnx8bi5zY3JpcHRBdHRycylyZXR1cm57c2VuZDpmdW5jdGlvbihlLHQpe3I9Y2UoIjxzY3JpcHQ+IikuYXR0cihuLnNjcmlwdEF0dHJzfHx7fSkucHJvcCh7Y2hhcnNldDpuLnNjcmlwdENoYXJzZXQsc3JjOm4udXJsfSkub24oImxvYWQgZXJyb3IiLGk9ZnVuY3Rpb24oZSl7ci5yZW1vdmUoKSxpPW51bGwsZSYmdCgiZXJyb3IiPT09ZS50eXBlPzQwNDoyMDAsZS50eXBlKX0pLEMuaGVhZC5hcHBlbmRDaGlsZChyWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtpJiZpKCl9fX0pO3ZhciBKdCxLdD1bXSxadD0vKD0pXD8oPz0mfCQpfFw/XD8vO2NlLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGU9S3QucG9wKCl8fGNlLmV4cGFuZG8rIl8iK2p0Lmd1aWQrKztyZXR1cm4gdGhpc1tlXT0hMCxlfX0pLGNlLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT0hMSE9PWUuanNvbnAmJihadC50ZXN0KGUudXJsKT8idXJsIjoic3RyaW5nIj09dHlwZW9mIGUuZGF0YSYmMD09PShlLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJlp0LnRlc3QoZS5kYXRhKSYmImRhdGEiKTtpZihhfHwianNvbnAiPT09ZS5kYXRhVHlwZXNbMF0pcmV0dXJuIHI9ZS5qc29ucENhbGxiYWNrPXYoZS5qc29ucENhbGxiYWNrKT9lLmpzb25wQ2FsbGJhY2soKTplLmpzb25wQ2FsbGJhY2ssYT9lW2FdPWVbYV0ucmVwbGFjZShadCwiJDEiK3IpOiExIT09ZS5qc29ucCYmKGUudXJsKz0oQXQudGVzdChlLnVybCk/IiYiOiI/IikrZS5qc29ucCsiPSIrciksZS5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIG98fGNlLmVycm9yKHIrIiB3YXMgbm90IGNhbGxlZCIpLG9bMF19LGUuZGF0YVR5cGVzWzBdPSJqc29uIixpPWllW3JdLGllW3JdPWZ1bmN0aW9uKCl7bz1hcmd1bWVudHN9LG4uYWx3YXlzKGZ1bmN0aW9uKCl7dm9pZCAwPT09aT9jZShpZSkucmVtb3ZlUHJvcChyKTppZVtyXT1pLGVbcl0mJihlLmpzb25wQ2FsbGJhY2s9dC5qc29ucENhbGxiYWNrLEt0LnB1c2gocikpLG8mJnYoaSkmJmkob1swXSksbz1pPXZvaWQgMH0pLCJzY3JpcHQifSksbGUuY3JlYXRlSFRNTERvY3VtZW50PSgoSnQ9Qy5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1KdC5jaGlsZE5vZGVzLmxlbmd0aCksY2UucGFyc2VIVE1MPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGU/W106KCJib29sZWFuIj09dHlwZW9mIHQmJihuPXQsdD0hMSksdHx8KGxlLmNyZWF0ZUhUTUxEb2N1bWVudD8oKHI9KHQ9Qy5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpKS5jcmVhdGVFbGVtZW50KCJiYXNlIikpLmhyZWY9Qy5sb2NhdGlvbi5ocmVmLHQuaGVhZC5hcHBlbmRDaGlsZChyKSk6dD1DKSxvPSFuJiZbXSwoaT13LmV4ZWMoZSkpP1t0LmNyZWF0ZUVsZW1lbnQoaVsxXSldOihpPUFlKFtlXSx0LG8pLG8mJm8ubGVuZ3RoJiZjZShvKS5yZW1vdmUoKSxjZS5tZXJnZShbXSxpLmNoaWxkTm9kZXMpKSk7dmFyIHIsaSxvfSxjZS5mbi5sb2FkPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT10aGlzLHM9ZS5pbmRleE9mKCIgIik7cmV0dXJuLTE8cyYmKHI9VHQoZS5zbGljZShzKSksZT1lLnNsaWNlKDAscykpLHYodCk/KG49dCx0PXZvaWQgMCk6dCYmIm9iamVjdCI9PXR5cGVvZiB0JiYoaT0iUE9TVCIpLDA8YS5sZW5ndGgmJmNlLmFqYXgoe3VybDplLHR5cGU6aXx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6dH0pLmRvbmUoZnVuY3Rpb24oZSl7bz1hcmd1bWVudHMsYS5odG1sKHI/Y2UoIjxkaXY+IikuYXBwZW5kKGNlLnBhcnNlSFRNTChlKSkuZmluZChyKTplKX0pLmFsd2F5cyhuJiZmdW5jdGlvbihlLHQpe2EuZWFjaChmdW5jdGlvbigpe24uYXBwbHkodGhpcyxvfHxbZS5yZXNwb25zZVRleHQsdCxlXSl9KX0pLHRoaXN9LGNlLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gY2UuZ3JlcChjZS50aW1lcnMsZnVuY3Rpb24oZSl7cmV0dXJuIHQ9PT1lLmVsZW19KS5sZW5ndGh9LGNlLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbD1jZS5jc3MoZSwicG9zaXRpb24iKSxjPWNlKGUpLGY9e307InN0YXRpYyI9PT1sJiYoZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxzPWMub2Zmc2V0KCksbz1jZS5jc3MoZSwidG9wIiksdT1jZS5jc3MoZSwibGVmdCIpLCgiYWJzb2x1dGUiPT09bHx8ImZpeGVkIj09PWwpJiYtMTwobyt1KS5pbmRleE9mKCJhdXRvIik/KGE9KHI9Yy5wb3NpdGlvbigpKS50b3AsaT1yLmxlZnQpOihhPXBhcnNlRmxvYXQobyl8fDAsaT1wYXJzZUZsb2F0KHUpfHwwKSx2KHQpJiYodD10LmNhbGwoZSxuLGNlLmV4dGVuZCh7fSxzKSkpLG51bGwhPXQudG9wJiYoZi50b3A9dC50b3Atcy50b3ArYSksbnVsbCE9dC5sZWZ0JiYoZi5sZWZ0PXQubGVmdC1zLmxlZnQraSksInVzaW5nImluIHQ/dC51c2luZy5jYWxsKGUsZik6Yy5jc3MoZil9fSxjZS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbih0KXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe2NlLm9mZnNldC5zZXRPZmZzZXQodGhpcyx0LGUpfSk7dmFyIGUsbixyPXRoaXNbMF07cmV0dXJuIHI/ci5nZXRDbGllbnRSZWN0cygpLmxlbmd0aD8oZT1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ci5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LHt0b3A6ZS50b3Arbi5wYWdlWU9mZnNldCxsZWZ0OmUubGVmdCtuLnBhZ2VYT2Zmc2V0fSk6e3RvcDowLGxlZnQ6MH06dm9pZCAwfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBlLHQsbixyPXRoaXNbMF0saT17dG9wOjAsbGVmdDowfTtpZigiZml4ZWQiPT09Y2UuY3NzKHIsInBvc2l0aW9uIikpdD1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Vsc2V7dD10aGlzLm9mZnNldCgpLG49ci5vd25lckRvY3VtZW50LGU9ci5vZmZzZXRQYXJlbnR8fG4uZG9jdW1lbnRFbGVtZW50O3doaWxlKGUmJihlPT09bi5ib2R5fHxlPT09bi5kb2N1bWVudEVsZW1lbnQpJiYic3RhdGljIj09PWNlLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5wYXJlbnROb2RlO2UmJmUhPT1yJiYxPT09ZS5ub2RlVHlwZSYmKChpPWNlKGUpLm9mZnNldCgpKS50b3ArPWNlLmNzcyhlLCJib3JkZXJUb3BXaWR0aCIsITApLGkubGVmdCs9Y2UuY3NzKGUsImJvcmRlckxlZnRXaWR0aCIsITApKX1yZXR1cm57dG9wOnQudG9wLWkudG9wLWNlLmNzcyhyLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OnQubGVmdC1pLmxlZnQtY2UuY3NzKHIsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShlJiYic3RhdGljIj09PWNlLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGV8fEp9KX19KSxjZS5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKHQsaSl7dmFyIG89InBhZ2VZT2Zmc2V0Ij09PWk7Y2UuZm5bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIE0odGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoeShlKT9yPWU6OT09PWUubm9kZVR5cGUmJihyPWUuZGVmYXVsdFZpZXcpLHZvaWQgMD09PW4pcmV0dXJuIHI/cltpXTplW3RdO3I/ci5zY3JvbGxUbyhvP3IucGFnZVhPZmZzZXQ6bixvP246ci5wYWdlWU9mZnNldCk6ZVt0XT1ufSx0LGUsYXJndW1lbnRzLmxlbmd0aCl9fSksY2UuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLG4pe2NlLmNzc0hvb2tzW25dPVllKGxlLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oZSx0KXtpZih0KXJldHVybiB0PUdlKGUsbiksX2UudGVzdCh0KT9jZShlKS5wb3NpdGlvbigpW25dKyJweCI6dH0pfSksY2UuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEscyl7Y2UuZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpzLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24ocixvKXtjZS5mbltvXT1mdW5jdGlvbihlLHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGgmJihyfHwiYm9vbGVhbiIhPXR5cGVvZiBlKSxpPXJ8fCghMD09PWV8fCEwPT09dD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIE0odGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHkoZSk/MD09PW8uaW5kZXhPZigib3V0ZXIiKT9lWyJpbm5lciIrYV06ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWUubm9kZVR5cGU/KHI9ZS5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoZS5ib2R5WyJzY3JvbGwiK2FdLHJbInNjcm9sbCIrYV0sZS5ib2R5WyJvZmZzZXQiK2FdLHJbIm9mZnNldCIrYV0sclsiY2xpZW50IithXSkpOnZvaWQgMD09PW4/Y2UuY3NzKGUsdCxpKTpjZS5zdHlsZShlLHQsbixpKX0scyxuP2U6dm9pZCAwLG4pfX0pfSksY2UuZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGUsdCl7Y2UuZm5bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub24odCxlKX19KSxjZS5mbi5leHRlbmQoe2JpbmQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLm9uKGUsbnVsbCx0LG4pfSx1bmJpbmQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5vZmYoZSxudWxsLHQpfSxkZWxlZ2F0ZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5vbih0LGUsbixyKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMub2ZmKGUsIioqIik6dGhpcy5vZmYodCxlfHwiKioiLG4pfSxob3ZlcjpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9uKCJtb3VzZWVudGVyIixlKS5vbigibW91c2VsZWF2ZSIsdHx8ZSl9fSksY2UuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLG4pe2NlLmZuW25dPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA8YXJndW1lbnRzLmxlbmd0aD90aGlzLm9uKG4sbnVsbCxlLHQpOnRoaXMudHJpZ2dlcihuKX19KTt2YXIgZW49L15bXHNcdUZFRkZceEEwXSt8KFteXHNcdUZFRkZceEEwXSlbXHNcdUZFRkZceEEwXSskL2c7Y2UucHJveHk9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYobj1lW3RdLHQ9ZSxlPW4pLHYoZSkpcmV0dXJuIHI9YWUuY2FsbChhcmd1bWVudHMsMiksKGk9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0fHx0aGlzLHIuY29uY2F0KGFlLmNhbGwoYXJndW1lbnRzKSkpfSkuZ3VpZD1lLmd1aWQ9ZS5ndWlkfHxjZS5ndWlkKyssaX0sY2UuaG9sZFJlYWR5PWZ1bmN0aW9uKGUpe2U/Y2UucmVhZHlXYWl0Kys6Y2UucmVhZHkoITApfSxjZS5pc0FycmF5PUFycmF5LmlzQXJyYXksY2UucGFyc2VKU09OPUpTT04ucGFyc2UsY2Uubm9kZU5hbWU9ZmUsY2UuaXNGdW5jdGlvbj12LGNlLmlzV2luZG93PXksY2UuY2FtZWxDYXNlPUYsY2UudHlwZT14LGNlLm5vdz1EYXRlLm5vdyxjZS5pc051bWVyaWM9ZnVuY3Rpb24oZSl7dmFyIHQ9Y2UudHlwZShlKTtyZXR1cm4oIm51bWJlciI9PT10fHwic3RyaW5nIj09PXQpJiYhaXNOYU4oZS1wYXJzZUZsb2F0KGUpKX0sY2UudHJpbT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjooZSsiIikucmVwbGFjZShlbiwiJDEiKX0sImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIGNlfSk7dmFyIHRuPWllLmpRdWVyeSxubj1pZS4kO3JldHVybiBjZS5ub0NvbmZsaWN0PWZ1bmN0aW9uKGUpe3JldHVybiBpZS4kPT09Y2UmJihpZS4kPW5uKSxlJiZpZS5qUXVlcnk9PT1jZSYmKGllLmpRdWVyeT10biksY2V9LCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKGllLmpRdWVyeT1pZS4kPWNlKSxjZX0pOwo="}},"time_used":91,"timings":{"blocked":-1,"dns":0,"connect":15,"send":0,"wait":29,"receive":28,"ssl":19},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/assets/js/test.js","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:51.934Z","timestamp":1785161271934,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"elxr24.cc","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 03 Jun 2026 07:35:05 GMT","end":"Tue, 01 Sep 2026 07:35:04 GMT"},"fingerprint":{"sha1":"12:3F:CB:7D:FB:C0:91:E3:23:CA:98:8C:CB:80:67:4C:9D:50:FF:C4","sha256":"DD:B7:2F:32:FE:FB:45:B3:5D:1F:1F:45:3E:4F:FD:35:65:70:79:E3:29:04:54:1D:C3:AC:CC:DC:56:40:57:6F"}}},"request":{"raw":"GET /assets/js/test.js HTTP/1.1\r\nHost: elxr24.shop\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://elxr24.shop/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nServer: nginx/1.22.1\r\nDate: Mon, 27 Jul 2026 14:07:51 GMT\r\nContent-Type: application/javascript\r\nContent-Length: 4605\r\nLast-Modified: Sat, 04 Oct 2025 17:59:31 GMT\r\nConnection: keep-alive\r\nETag: \"68e16083-11fd\"\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.22.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":4605,"size_decoded":4858,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text","md5":"52a1c02288e96f4b9b9df100e2c8c179","sha1":"a71f9a70892474f17e5d836461e94217b7ea53da","sha256":"ffd68b0994c95b78693a8f0f9b3ca252db51a7c65e394114d6a3723f2a6f1b3a","sha512":"03375cf883e0b346ea52394403d6ccaba1f0bf5b53ed603aba7529b47d4171c486b80b2e769593977184b395b942a106580e3ded358b9e5c1ab44dd728efffb1","ssdeep":"48:jti8nmRP7DwcN1lRsAiBiATzLly4eWWwZMoe4Z+utnYATNUVcwlsNOyQ82gDt98H:55mNZsA6/L3XZdZ+SnROz8PDt2","tlshash":"5d91788594f911794022f076a2b71606bebc40ff79f67638395e662c5fcb91c82f708a","first_seen":"2026-07-27T10:31:02.535883Z","last_seen":"2026-07-27T14:08:21.631597Z","times_seen":2,"resource_available":true,"data":"KGZ1bmN0aW9uICgkKSB7CiAgbGV0IENVUlJFTlRfUVVFU1RJT04gPSAtMTsKICBjb25zdCBQUk9GRVNTSU9OUyA9IFsKICAgIHsgbmFtZTogJ9Cc0LDRgdGC0LXRgCDRg9C70LjRh9C90YvRhSDQutC70LDQtNC+0LInLCBzY29yZTogMCB9LAogICAgeyBuYW1lOiAn0J/QtdGA0LXQstC+0LfRh9C40Log0L3QsCDQtNCw0LvRjNC90LjQtSDQtNC40YHRgtCw0L3RhtC40LgnLCBzY29yZTogMCB9LAogICAgeyBuYW1lOiAn0JLQvtC00LjRgtC10LvRjCDQsiDQsdC70LjQttCw0LnRiNC40LUg0L7QsdC70LDRgdGC0LgnLCBzY29yZTogMCB9LAogICAgeyBuYW1lOiAn0KLQvtC/0L7QstGL0Lkg0YHQutC70LDQtCcsIHNjb3JlOiAwIH0sCiAgICB7IG5hbWU6ICfQktC40YDRgtGD0L7QtyDQv9C+INC60YDQtdCw0YLQuNCy0YMnLCBzY29yZTogMCB9LAogICAgeyBuYW1lOiAn0JPQu9Cw0LLQvdGL0Lkg0L/QviDQu9C10YHQvdC+0LzRgyDQvtC/0YLRgycsIHNjb3JlOiAwIH0sCiAgICB7IG5hbWU6ICfQk9C10L3QuNC5INC/0L7QtNGK0LXQt9C00L7QsicsIHNjb3JlOiAwIH0sCiAgICB7IG5hbWU6ICfQnNC40L3QuNC+0L/RgiAtINGN0YLQviDRgtCy0L7QtScsIHNjb3JlOiAwIH0sCiAgXTsKICBjb25zdCBRVUVTVElPTlMgPSBbCiAgICB7CiAgICAgIHF1ZXN0aW9uOiAn0JrQsNC60LDRjyDRgNCw0LHQvtGC0LAg0L/RgNC40L3QvtGB0LjRgiDRgtC10LHQtSDQsdC+0LvRjNGI0LUg0YPQtNC+0LLQvtC70YzRgdGC0LLQuNGPPycsCiAgICAgIGFuc3dlcnM6IFsKICAgICAgICB7IHRpdGxlOiAn0JDQutGC0LjQstC90LDRjycsIHByb2Zlc3Npb246IFswLCA2LCA3XSB9LAogICAgICAgIHsgdGl0bGU6ICfQndCwINGB0LLQtdC20LXQvCDQstC+0LfQtNGD0YXQtScsIHByb2Zlc3Npb246IFswLCA1XSB9LAogICAgICAgIHsgdGl0bGU6ICfQotCy0L7RgNGH0LXRgdC60LDRjycsIHByb2Zlc3Npb246IFs0XSB9LAogICAgICAgIHsgdGl0bGU6ICfQodC/0L7QutC+0LnQvdCw0Y8nLCBwcm9mZXNzaW9uOiBbNiwgN10gfSwKICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgIHF1ZXN0aW9uOiAn0JrQsNC6INGC0Ysg0L7RgtC90L7RgdC40YjRjNGB0Y8g0Log0LrQvtC80LDQvdC00LjRgNC+0LLQutCw0Lw/JywKICAgICAgYW5zd2VyczogWwogICAgICAgIHsgdGl0bGU6ICfQntCx0L7QttCw0Y4nLCBwcm9mZXNzaW9uOiBbMSwgN10gfSwKICAgICAgICB7IHRpdGxlOiAn0JfQsCDQu9GO0LHQvtC5INC60LjQv9C40YgsINC10YHQu9C4INGF0L7RgNC+0YjQviDQv9C70LDRgtGP0YInLCBwcm9mZXNzaW9uOiBbMCwgMiwgN10gfSwKICAgICAgICB7IHRpdGxlOiAn0J3QtSDQu9GO0LHQu9GOJywgcHJvZmVzc2lvbjogWzAsIDNdIH0sCiAgICAgICAgeyB0aXRsZTogJ9CY0L3QvtCz0LTQsCDQvNC+0LbQvdC+INC80LjRgCDQv9C+0YHQvNC+0YLRgNC10YLRjCcsIHByb2Zlc3Npb246IFswLCAyXSB9LAogICAgICBdLAogICAgfSwKICAgIHsKICAgICAgcXVlc3Rpb246ICfQp9GC0L4g0YHRh9C40YLQsNC10YjRjCDQstCw0LbQvdGL0Lwg0LIg0YDQsNCx0L7RgtC1PycsCiAgICAgIGFuc3dlcnM6IFsKICAgICAgICB7IHRpdGxlOiAn0KHRgtCw0LHQuNC70YzQvdC+0YHRgtGMJywgcHJvZmVzc2lvbjogW10gfSwKICAgICAgICB7IHRpdGxlOiAn0JLRi9GB0L7QutCw0Y8g0L7Qv9C70LDRgtCwJywgcHJvZmVzc2lvbjogW10gfSwKICAgICAgICB7IHRpdGxlOiAn0KXQvtGA0L7RiNC10LUg0L3QsNGH0LDQu9GM0YHRgtCy0L4nLCBwcm9mZXNzaW9uOiBbXSB9LAogICAgICAgIHsgdGl0bGU6ICfQk9C40LHQutC40Lkg0LPRgNCw0YTQuNC6JywgcHJvZmVzc2lvbjogW10gfSwKICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgIHF1ZXN0aW9uOiAn0JPQtNC1INC60L7QvNGE0L7RgNGC0L3QtdC1INGB0LXQsdGPINGH0YPQstGB0YLQstGD0LXRiNGMPycsCiAgICAgIGFuc3dlcnM6IFsKICAgICAgICB7IHRpdGxlOiAn0JIg0LvRjtCx0LjQvNC+0Lkg0LzQsNGI0LjQvdC1JywgcHJvZmVzc2lvbjogWzEsIDIsIDNdIH0sCiAgICAgICAgeyB0aXRsZTogJ9CjINGB0LXQsdGPINC00L7QvNCwJywgcHJvZmVzc2lvbjogWzZdIH0sCiAgICAgICAgeyB0aXRsZTogJ9Cd0LAg0YPQu9C40YbQtSwg0LvRjtCx0LvRjiDQv9GA0LjRgNC+0LTRgycsIHByb2Zlc3Npb246IFswLCA1LCA3XSB9LAogICAgICBdLAogICAgfSwKICAgIHsKICAgICAgcXVlc3Rpb246ICfQmtCw0LrQuNC1INGG0LXQu9C4INC/0L7RgdGC0LDQstC40Lsg0YHQtdCx0LUg0L3QsCDQsdC70LjQttCw0LnRiNC10LUg0LLRgNC10LzRjz8nLAogICAgICBhbnN3ZXJzOiBbCiAgICAgICAgeyB0aXRsZTogJ9CX0LDQutGA0YvRgtGMINC00L7Qu9Cz0LgnLCBwcm9mZXNzaW9uOiBbXSB9LAogICAgICAgIHsgdGl0bGU6ICfQmtGD0L/QuNGC0Ywg0YLQsNGH0LrRgycsIHByb2Zlc3Npb246IFtdIH0sCiAgICAgICAgeyB0aXRsZTogJ9Cd0L7QstGL0LUg0LrRgNC+0YHRiycsIHByb2Zlc3Npb246IFtdIH0sCiAgICAgICAgeyB0aXRsZTogJ9Ca0LLQsNGA0YLQuNGA0LAg0LzQsNC80LUnLCBwcm9mZXNzaW9uOiBbXSB9LAogICAgICBdLAogICAgfSwKICAgIHsKICAgICAgcXVlc3Rpb246ICfQltC10LvQsNC10LzRi9C5INC00L7RhdC+0LQg0LIg0L3QtdC00LXQu9GOPycsCiAgICAgIGFuc3dlcnM6IFsKICAgICAgICB7IHRpdGxlOiAnMzAtMTIw0LonLCBwcm9mZXNzaW9uOiBbXSB9LAogICAgICAgIHsgdGl0bGU6ICc1MC0yMDDQuicsIHByb2Zlc3Npb246IFtdIH0sCiAgICAgICAgeyB0aXRsZTogJzcwLTI1MNC6JywgcHJvZmVzc2lvbjogW10gfSwKICAgICAgICB7IHRpdGxlOiAn0L7RgiAzMDDQuicsIHByb2Zlc3Npb246IFtdIH0sCiAgICAgIF0sCiAgICB9LAogICAgewogICAgICBxdWVzdGlvbjogJ9Ca0LDQuiDRgdC/0YDQsNCy0LvRj9C10YjRjNGB0Y8g0YEg0YLRgNGD0LTQvdGL0LzQuCDRgdC40YLRg9Cw0YbQuNGP0LzQuD8nLAogICAgICBhbnN3ZXJzOiBbCiAgICAgICAgeyB0aXRsZTogJ9CY0YnRgyDQv9C+0LTQtNC10YDQttC60YMnLCBwcm9mZXNzaW9uOiBbXSB9LAogICAgICAgIHsgdGl0bGU6ICfQoNC10YjQsNGOINGB0LDQvCcsIHByb2Zlc3Npb246IFtdIH0sCiAgICAgICAgeyB0aXRsZTogJ9CY0LPQvdC+0YDQuNGA0YPRjicsIHByb2Zlc3Npb246IFtdIH0sCiAgICAgICAgeyB0aXRsZTogJ9Cf0LvQsNGH0YMg0L/QvtC0INCc0LDQutGB0LjQvCcsIHByb2Zlc3Npb246IFtdIH0sCiAgICAgIF0sCiAgICB9LAogICAgewogICAgICBxdWVzdGlvbjogJ9Cn0YLQviDQt9C90LDQtdGI0Ywg0L/RgNC+INGA0LDQsdC+0YLRgyDQsiDRjdGC0L7QuSDRgdGE0LXRgNC1PycsCiAgICAgIGFuc3dlcnM6IFsKICAgICAgICB7IHRpdGxlOiAn0J3QsCDQvtC/0YvRgtC1LCDQt9C90LDRjiDQstGB0LUnLCBwcm9mZXNzaW9uOiBbXSB9LAogICAgICAgIHsgdGl0bGU6ICfQndC40YfQtdCz0L4g0L3QtSDQt9C90LDRjiwg0YfRgtC+LdGC0L4g0YHQu9GL0YjQsNC7JywgcHJvZmVzc2lvbjogW10gfSwKICAgICAgICB7IHRpdGxlOiAn0KXQvtGH0YMg0L3QsNGD0YfQuNGC0YzRgdGPJywgcHJvZmVzc2lvbjogW10gfSwKICAgICAgXSwKICAgIH0sCiAgXTsKCiAgY29uc3QgZHJhd1Jlc3VsdCA9ICgpID0+IHsKICAgIGNvbnN0IHByb2Zlc3Npb24gPSBQUk9GRVNTSU9OUy5zb3J0KChhLCBiKSA9PiBiLnNjb3JlIC0gYS5zY29yZSlbMF0ubmFtZTsKICAgICQoJy50ZXN0X190ZXh0JykucmVtb3ZlKCk7CiAgICAkKCcudGVzdF9fcXVlc3Rpb24nKS5yZW1vdmUoKTsKICAgICQoJy50ZXN0X19hbnN3ZXJzJykucmVtb3ZlKCk7CiAgICAkKCcudGVzdF9faW5uZXInKS5hcHBlbmQoCiAgICAgIGA8c3Ryb25nIGNsYXNzPSJ0ZXN0X19yZXN1bHQiPtCi0YsgJHtwcm9mZXNzaW9ufTwvc3Ryb25nPmAKICAgICk7CiAgfTsKICBjb25zdCBkcmF3TmV4dFF1ZXN0aW9uID0gKCkgPT4gewogICAgQ1VSUkVOVF9RVUVTVElPTisrOwogICAgaWYgKENVUlJFTlRfUVVFU1RJT04gPj0gUVVFU1RJT05TLmxlbmd0aCkgcmV0dXJuIGRyYXdSZXN1bHQoKTsKICAgIGNvbnN0IHsgcXVlc3Rpb24sIGFuc3dlcnMgfSA9IFFVRVNUSU9OU1tDVVJSRU5UX1FVRVNUSU9OXTsKCiAgICAkKCcudGVzdF9fcXVlc3Rpb24nKS5odG1sKAogICAgICBgPHNwYW4+0JLQvtC/0YDQvtGBICR7Q1VSUkVOVF9RVUVTVElPTiArIDF9Ojwvc3Bhbj4gJHtxdWVzdGlvbn1gCiAgICApOwogICAgJCgnLnRlc3RfX2Fuc3dlcnMnKS5odG1sKCcnKTsKICAgIGFuc3dlcnMuZm9yRWFjaCgoYW5zd2VyKSA9PiB7CiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICAgIGVsLnRleHRDb250ZW50ID0gYW5zd2VyLnRpdGxlOwogICAgICBlbC5vbmNsaWNrID0gKCkgPT4gewogICAgICAgIGFuc3dlci5wcm9mZXNzaW9uLmZvckVhY2goKGlkeCkgPT4gUFJPRkVTU0lPTlNbaWR4XS5zY29yZSsrKTsKICAgICAgICBkcmF3TmV4dFF1ZXN0aW9uKCk7CiAgICAgIH07CiAgICAgICQoJy50ZXN0X19hbnN3ZXJzJykuYXBwZW5kKGVsKTsKICAgIH0pOwogIH07CgogIGRyYXdOZXh0UXVlc3Rpb24oKTsKfSkoalF1ZXJ5KTsK"}},"time_used":47,"timings":{"blocked":-1,"dns":0,"connect":15,"send":0,"wait":14,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459W1hyyTn89ddpROi.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:52.075Z","timestamp":1785161272075,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/montserrat/v31/JTUSjIg1_i6t8kCHKm459W1hyyTn89ddpROi.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://elxr24.shop\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 23776\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:15:28 GMT\r\nexpires: Thu, 22 Jul 2027 13:15:28 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 04 Sep 2025 17:11:55 GMT\r\ncontent-type: font/woff2\r\nage: 435144\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":23776,"size_decoded":24589,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 23776, version 1.0","md5":"61611e47a80abeae7bab6335b074c70b","sha1":"6902954d25cbd00a037f12421a0d25580a0a81f7","sha256":"6e310df94df0c3e75cd1c6ecd08e22cc559eb0667d54013afdc469671ef4614a","sha512":"8207ee33de460e5f705a53a54ed45f4ad921141672b995584b2718a9bee837ae3331647f0f8fa9b62b812e6b54f9397e1da11160f9b3bf51ae39fc1ec32bb07b","ssdeep":"384:uEEi3OYr7g0sF91UG3qkcKtr40D/w18XHu3Nr/UL2s+HSeSN/Z26s6A296:fEieY/gfj1UVKSow1TVs+HY/Z/a","tlshash":"d4b2e142401cf0b1e7c76f7daacf24c095d613bacf3f95981145db7855ad5932c9c88a","first_seen":"2025-09-05T05:16:31.285834Z","last_seen":"2026-08-15T09:38:39.707571Z","times_seen":9429,"resource_available":false,"data":"d09GMgABAAAAAFzgABcAAAAAtFQAAFxmAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoQsG7MsHIN0P0hWQVKFHQZgP1NUQVSBOCcyAIJQKx0IfAmfFC9+EQgKz1y/HwuCUgAwgYs+ATYCJAOFEgQgBYkCB41sDIMoGzSpF9jYVLiZobyBYXWF7hu1SGTuVsoNRKEeiRA2DqBguB9l//+fkZzIUIgOklTbOvdDTlOVox7ZbLo6kb67u+Bu+aq6oDGmoCruTvSBdYvy3pjnJD/0dTxk7EA68o1bG/qotfKxBMXvjYX64S1MHpl0oQu58fRsZOKmrNiUJEx0IpEQWeRFt7DRBZEwIts0bEhoZGInDbYq96Z+K7I7g0w028cdvyf8kVjBjxxepEAHH04kFju2qBTWAQV6dNYSqZUKHldGVmgIMsmBSeQx6cK/5kHPUJ+2CHCnh0hZTx4i/573zOw+4UOx1SYl4E5gRbeupHvE6/b/s+ekkUICBAgtShWR0i4CciWE0myUakFBLBUsUVGvSQilGkqplke3RQmIiKVHvBdL/XwsDbDQZHia038Ru8g705fT5KIkIfGL4TWfiZDBti8iWlqnVOmAIgc0Zw1FKp4NBCgkaPA4CfHdzUZEiBCCRYki2vqZab8HZyI91drj/39O833QF1mSzYmDHiCUM8PlFaBLS6JVj27kAi6ZVoTkduopZyhgs4a+OfvZjWNLSyoKpWKcGk1OzdPlnn2dmL+qcAEvKU3SiBGT9awZz9OPfTv3vr+74M2Sd0JdyKIe6R4SWdsOJREqoREiSfTBf7T2n6duVQ/00Pv73qLCRC+4AIBEEA64Z0npuKzUMSIyBTU46z7SiVM4GrS71JW7a8mW4ZH1o0gBIM37gfNIPgcIHCAXVZrSF6C+Od9vOqFsdY2orj6NPl3NmDuIMHLwwvhlLGTIdQkImnfv3FeSTj/MZNL+3cIBodAnTMtHC4Dq13b1SWBQ9PzCQ9yrL+e5EGTTnrZXcS6RAla8FuX/YBtMP2TLDXOWE7PnzCsm8F9N9c6tnjMJYMon/kjJc6snuRbynEKqwsOWOgf42ZbHVHpMu1rTJCVU6hfoTnKJhMxUGCCC5YGGPRh2UYABbtP9valm+3e5D4IOlG7Bm8F85+XJ4TuvVVQOqdS46F30H4lcBNIglJbhNEtQ4RMixx/g8QYEdRGUh6Zw5xTTI0h6PsELS8EBlyk5XUrTO4c2htpV4bYIifiPNdTeuw2CApJkXKwD/gHgkmuEMLWdyv6fqeZ7rmaw2tMS1L0HKNLOCusY+nu4y5VdtLGod/6fDTODBRZL8ohFoEJCuAAIilAEQMoLKmXKOVdWB12MlVMqXcaic+vWVeXWdefavSHev4G8wxZ6SkEdtF3Rx3xZy4+XiEtXlqF8pIiIqYfjWNvb11S71+EQHiFkRUQaEWmk1+nJSmbur71+9lNzYLqGNcsQBX0MJ7iQZH/db3ugQU4lX9MBOcURvraNaYKNvT9/b7sVLcUUcbSG8eMXcKp83O+9CqOVWET7flx0oUBfmYMaJ00uutyo+NCOP7LM6oIAdqHG7ZSwR1q8PIEFQkKJEiVLkyFnCgCphatPXGOLuRgwXFpcSHeteo0zIQ6iAsSuIJtsttrwfF7uBiPg+q1g93Zw0XZw/vawG0gg3EaY/1a54jY6zVDzyjIHARfwf6mthosQBYmUbhIrqZKtQck3mZEVpalyqqAJmqizuqprhmog0a9CChVt3nv1Kf63WnGd/228lFLLVGRHfHYjGoABskk16VYgSLaoNt1m2mybb6N2CTEMRxp5FEggiVTKaVZLrDDijFGNZnIOBpFjOHZHIRJEkkpQSSrHcXyJr/F1vikgoS50hVFBL/LEluhIWyWrjMlaBUNfIoQc1EVjcZWq0xy6zsh8i4nZ1G4Wtxm2lfSnHKdgIxDQT/9xihKVvRgHfECA34/rMBEQDCz8zV7dCigIoI8npWKb1wwOoN86kk0A/d6+WBzqH2/Kp4DOC2jEoD0j9C7BEU7+LttPXGI3UQuanuxMPng9IOAalhgYUtsubRJ42QQsiwsVyrXGbBTrG4AOp4sUhIdDxgP5bzLNS0xHDWb+zvyu/cxAgVpn4ydd3nToghcjcTMuRmtUR2FkxrHYF9ERGPxwseuxrQaVUyn47/HFX/hdv+Jn1Yms9GyX+AHf7JHu5/bFrGgXKjbdDxrRfcnVpmoVKlkC7VLriVagfOSYpslJCvqdMftXXb4hO2/NVmypdti2WaDxzTFMgxPK8Ae+qJnvjNTUL1zMTivWkXLwVMKIQK3jMLrPoKwdnbxpNfsjIA+5hnPz76I/LecrH3ZG1/I5y65cKZX8m8UvmEbNpmpMRtJueCbMUeoFnet+pMFmYuR4Bb0xKzInRlmwU/xMrrU1Wyv2bcBZaLkYcYPCtpJhCI60Kb1l0kGQd210v99R2G0qA3b5N111FJak3hLxya8F4BQJJz45YBVJNlu9p6Xvqee29WT8HGoC3kot2zBPJBa79Znv+ZjYXklhNBz/s1UKaPMxeFhkPvcy6+StinrzE+cd/d7EcQNQ/dPov6j+SbfBLP0iSiVMh/UjDinrBfZ2722NhlO39esx1mv8X8XJQh/uOEYo8CiP2wb1hGPf2ZtXsTHJ7IjveDZ5t+fuAXSPiDtyxUqWtnRrONDdRKV7K8fm9O3ZT4TuctyjN2D4e6DHQPatbZvEpvQ7uBrCrnrDZgUfjYUOL9zp/rTBBhxbr5rd3TsPWe2mD9+Rz+nhU4k9kXC2zW5HW5i2NuFndNc82hiq74jZ5mbHfeJM1fVznCfev6cFmMsjFJTRavaroK1DPM01aNGmPfR/hXS5XhTXzcbxT/avYg/IkZ7pJSc+8f2RZaWzYU0FCYnfnA0YryVXmGvJQpkI0AMJPfZkbyqhQEsTA7rd7DkGvIkbc/9gQMrcP44oYfHO/IBv4wYsoFA7lr5watB15oJ/wmQMwNEnr1fr6OeoLzNHJe2uWEJIgCvRgsxfIhHzyppNrIOdz4YkJ4mC38caI+cRPw0ZLlVze3zNUq/VYs4Gi5OjVdZKsYAy81S9ec16B+RD66h+I/dMorJJ2N4ov6lqxb4uAYBzV9tevppTj+HDjFqGFZDd3yZnwGqBnJBzIM08ibted+AZhR0gfopX2MW95U43wzXy5cKvvK+yMksBk5OHt+N/DBQMhBpa1PyU4WAqXu4Fs8JAzhx1oHHBykIUNu7A2yISsMOmEexOI7g9xseXpL16l806PAn654+jkv1i17HQk7zNsm/SLA7yTKo/O744X6rmi8Nh4qnh+2Hq4s2zlgFnlwwewemO32O5Ys7ze67Dzbs+0HlTNIXUTk+rvahGUK2o1fHxkSVKvcq3edWaHcZTx+eJaQ+PKQq4JA5bJ3aw1slt1mqw7nY/rQl3SDbms9wwdsgNGBFaRoj08+EM72eh4RoqsN3wX1OU74BzUbsTNOo2vqxwer7m77HQWV2pi70VpJVgJJ+WtF4A0AAbbIeFp0epUcK0p3kc1bnOsauDs7I2FVfs2d4jQ9yy914t3PoRNKVOA5PqyrH4AtXYa5bH73LLsRr04x9kAQvVhk4Lv6FxVXwjXzXaINewsbEYcGtbNYsUEd76DwiARWxJhhRCPUfA7ekUCEdrGX+Q630p+1FF+F3/XMZTs0c+lcLS18ERAdm9o7JX7KOSY5QT8ioGq/hOQLfE9U4uyQhYv2fG8TG4tXFMMHLQzmIGn+erzWUtXxA/aEAlXSHVq/Z2CzGSx/4jn4Dmu06IxzQ/DKK4uNYOGSK3TeVPf10e26NacRO4JlzMXxilc7TmPxM/8zPZ6X0A8R7BZgyIfsfh5MTnlhTLngfZOeLOCCJIzj2DrPgd2jS00rlzvX5XOyptEa+2aqLYHafEsWSIv8bzgRtyJTLxHijT6igFcwxnqz/i2n0xmUquExvNX3uEp74D7nzlthsw/wePwhO0LN7hF+EYenScyUYJ1sOFzw4qiAnuLxp+wZy8f6Qw7TiZlI7HeG2C7BtyYCpE98977jOElutgrLbBp7mqcuvGRuh4eQM1n08PcyLaA+PMLesJdoEZhTrnXjp+0bwOOG8c8HGF9EjhPHYlNSIUj9sCw+d8r01ia/Ry6rt15+9xdkizDkpl5/o50l2b0YaMwuPiZxYD55XzlzrCb/SSZnqfeQ6EVpZijRCPI2QjbyknFt8vcO0bG51pmySW47w4nqX2EVcCXctdq2PF7cn9ENsc2v0/0UO//eMczaTphdorhj1WAumORhO5w9y27I+Ok+sLk/NkMYH9GJo2NIejQnyUTM1vFswyLrs4JmU/cLU42Y4mrZ8r103lwURDGcKZQGJf2MZ0HCI5nhb72ybbxMOdEILEmgEadQ68YXY25mtufa9lxKrUUiio+CWAPaLsAzxqfxmcMYIE9FLNAwwUYeWVCflAjZh0os+itFCLwIYG7VoBHGTLLaSDKTzE8UDiUksjRO61BnzZls6yK8qQ7ypY04F89XVxGpWEj18iKhoLHFdrckFROVSZl6U5MEHjx2dSF4CjwBHdCjXut7GQfEoNOhZpCAHyup9DaXAog5el6bTLLF6mz6io/NdVAjWXJ+EjNXgRaQHp2VwrClHuKgCmPvCnulcYaGqwpDMEjkfTEsOGocJTPmvROPBOUcpRVCaBrQnmwDXrBJU2yW0EWj2jZ0mnq7qUVUi65QkpSs4jfCdg1/c6P7eoh4Y4VKzOBQaE3i582EuV91mG5Qhrq0L7Wrkm0cGWAcR7fs/ej535Os36fe6DawHV+QrN/mRble33pqOJkNIcjHTk2ep1WxOkj/gTYUI9FYjn2Vy+bHrG4dUdyh69dfQ3yQwMPN4bTQDHab0aXTV91QiKDI1EibxiO8UsfNLjO5s5SyBRDhQe9boWWRNr/KVB/x4x9jhbGZksE0skkSRZilRp0mXIlCXbSVI5cuXJh2hSZVTsYuPk5eMXMCgobMiwUQlJKWmTcuablzMRXpd60I0rYp6GEZeELIYK3yrblHViG82vN6GiZqpe1lXQLTnTt4cKMzgnD93uZG9RxWtVuw++qDjo+Z2pc70fTQy13iyKZK2dVA2XQ6kRWm3TlMfucY2uWeyV0okY8FlC28r26N/2KhE2aH6Hu2DIwyxdBu0WHty59M7EIYAWiNFxM7EIsCMSnKPrOjLDQpy9QEoskoCs6lohh2zi1GufCwQYuCIvi2I1sZwkEaXt9YQYzpV02qauQSscVzvfSesoqHRDdoy/tWYHMJlmaJhC8SZu6Ch/kYQF6xWMzfD1MoQ6y1Yh1YoKisJMhZHazJ/NZgjE2tzAgcAU87qyuHhNeGEtx6wNr1gHXqX8wPrwhg3gNRvCGzaG6U3gZYp94xZw05ZwDz1/G7ggePF25g5wxfQHdoe3Thm76TeO4Q7l2Cr3F/83/59Se5HZ02XDxp8zAu4O7BNKmjLla9NSAXdgQaAnuDC0MLQcWxFeEF4U6Y0uiR77IrG0Ai6CvTD8c1iJW3iGyJAqWaBLTIYZYopMlS2yJXaYrXBFXuMNvsxX+brUlBypI000NOReQ79htHGkcZQ6Qh2zKy6gqVRGk7zJqtk0u27QjbpJNxtKw2b4TLslpruT/uRESp8KZSKZiWwsN5IPDsWKs8MT5WJltDJTLzYWXjjmSb9r35+7x6wZx7BKkBcrHLDz+qPjMDhx4FO5Pbd2vep9D2NN8D2w5LbyobQBqPvatavguoHV3sJkgCWYIkV5n54Ne7RluE//YSxfBuC3X46V6Qk2PV9W3RSHsIQpe28x8FP2YV8zgqH0BJnT8pYMlZDO5PPpjbNiEmvmZHh8Xn7NgrKwunCR3LbfhgUX4NvrqC8j/+PoIvRZQntdAvjZVeDedoL6ngXpg45Q/uJDASmnOZsH+pL2hktzKSpvRoz4X7vvGn3BcETQrobVubpHVORE+7WaNVH+0YGwcDWqy6pHSKPt6lXfJtOhKVfSK9I/gn93AP+28x/329cgxkzNbYDTXrZRIObPzbAZ1QgMQUlFrketm62sRSSRKVQakyUhKaWiqq6moamjzTFKQ8vM8is653rP6h9qE+KSIyzYKLJMp357C9w8FtmVFE2bMSuvYE7IoHEZNHvpLYHCL6WMeTM8VS0cRxhm1SITyFO/ju0oeMpCYvAm0JxhP5A4XjDbEurYSKf7+CIKH77miYxqjOrm74OvdYZTGS0v0Ke79PlVYcIMKS7Mz83OTE+VioV8LjuZSaeSifjE+NjoSGw4OhQJh4KDAb/P63G7nA671WI2GQ16nVajVnXSjPxiyt+Tl8Mg5t3e1N56Vg5C7U2jIy/cGF7Kz4ILhmAvrD66tOWe0top1rBgugx3hK6kqZ4TiuxCCJf90Y6u+OiislTKlsuq+DXmZOWWyM6mCIpzhEFTHItrQy6iwz2uNsKAvCgTYEryixEc3RqzKuJ6dR5/WcYF4xglw5ptTzYjCoh6r/1uCkSL5bIFiinVQslPpnec0J1RWcitvtsXjgFpfJ/pKsFR9TZ2/NElp0RwNbfPrfQWuMUKD19aziWqwWM5OZcqfTLwBLFu1CNBX1T4ZTra/MtsZVMtFPLLnP1KSLHfcXFbmzORHVan6BDf0WV3NpaPXerCcyrZcx2ZzjIOH0sTQrJDkMcggkHZ2kJ0E21qZLB+C9SYIYwMdmhCr53yCIRQPCU+8xF6pdnWFLcTdtLOUBV1RNxPfR3Q/wjgI/yIsAr3SNZx6f3FrCzbqZKUvstXLYslIXN12CtJcKwQb9nwRsfma3/wfGW/RVCFHRHryp3Pn9Col5EmDQ9pyxdBeofgFu8U7xJHEFtH4ZWFbfZKOxe4vWswsjaR5Z7kGV1sbJS7Zayt3T2S+KIaZzi4do/JmPFGhhsMsiIXK3wAHH3Q4aY/3sxg2omDbbFzS4NXErK1QUVTBkeEDN6vBc1lcnREpvNz2bkykhsVgertIFQ7xJXns/MJl3gVYLPGX3LJJdUeJOU2Eey5Hai+C5BpbuEApnZePxWDPq1dLd9bpzLCpNlr1I8uoj0z5/e2IvgWkryfGiMmdMJijz2tWEv6F6v+PQf2Sg4KKxG+a5QORQneqQ1woG7zwAswTYBZXsOqgrdeV1aii2yDK/vduiUJdYLyTadkuaPtTXuNeu5IFhu1TDaSZO6R7vT/7Z4klDy399h/Zv/kggNP9AU9XsiHReFKw7qMctntQugFfYgTX1pNXTdcQpiyGXPMcVvcSnC04FmpPY3pyAa2LCLFFbT0qmyGaz2YXkQUGhJ6lMZ1hZvO0B8pICuRyFpe4R9kpC3SEvyvlKVhZpLuuGMberg/2bbSDsz8mJPRZg2sdEu5FreNOOvTBZyzGqSb0oJsirxzwjfIdKBVpLxE/TCwYM6V521hn3RlKQoyey2EZfPZDG/Onir2WBeQtAzXPNSvxvQh4NxNAB15rvIClyvRfHYRuIFrDpZs6bprOPQgt8ryJJCv0iTRDEiqqZK122Uj6BGUtiURlH42paISyctZ9wZcL0h9Lk/K0iOsF9kcdG73OllTQU3q5iCoAhQgD9zArYLnMnyNvPh9lMEtE9fHdYK7U3dMzqQwexNgxmKKrjyPcO9eFVHL0gE0vIgz1axYJ4VwaMGBv0JsqBXnVgLNeT57kwdsvkoQtsSV7jOhnbpqoV2gcr+1iPhEBLcNrF9smvSa4sjDeHrKwInj36s8eB6RT8QE9/1OieneGz8UQuWh10s2cNiiUkW+M0uhZ9diKFqKQhCMYpUsoLHwsrBQg0N0vxOhPKh+b5oKPOnVCsm8OcNc6Y7mKqki1xou+BMQq47+bJC2yZFL5Gq2y+GPWe+IqLNY/9TFmYZ3f6auWY937FDaPRBmjaTtyn7WaPbQMrB0BOWDnA2Coy5ohgLUcP6zKZMF6gDES/Mu/kqAQi0tib9rJPQKbJ6JWorZKE/ZTfnuQbr93AJOdKztgyKk70O/ysfzUsecHe0YWR4uVjX9xIxgiIDqIvnEHHOeFqUg5yRAJSKjdCVgBN6JJzguQy4KIkKF39J30RJdgpl4zQ53TvkQbJkdkioOPXhgzqHk81oprs8ZZxSZhVbrEwR6GZ7HGqJevJftEKaKVSKBj+G1bYQfdllBT++KQqZ+D2v2TT3iqg4APJVSZb7ONhAVwAg/2OLQOCeOTPCE07IZCv+WTdc2In/aQIcji++KJj5896HkWRAc5HMsDbGRESN9bUc6RpcR3JsFHL2iy81muvDKQE4d3uqZBCc0K3lo+wE1HwFsdmK5KCzLXg2vTKN++iJEFXHBiWc169k9nKtaYYo9FRpBjDA+d4HjkvQ7f49FcP3pv705l+l28/3zwHmarUHYPBlYZIdPN+SyfrW/n762n0BL0f+CIsUSNzqUSm1QEo7v6TvmJFd+6ln5ThQL7y/pIYDFuQq3fBzJhIRswRkukjzZkWHLL2G8mg6PLs+MH+OqslxQfiY7cyHk8zVGiyUwbXe6lx1wK1Xey7YK/FC3wrZrkbJY2LeiVz+WE3xUrU1WnLS4CtcAWGKvqTyHQM1rM5SPXYmluRrzprSY0u7F1UV/202TxNsNVAmu8lutBytt3uB3eq+NIeVLe+YmgL8w8dRJLq1UV1KTtzZCCkFyAE5IzspKUNI1zHsk8kT2o5JUOSUrXebSt+QJbnLyYo23fwWGW4irEX5jOzoSnChAVYJt7XLbZU1WWPOBjMf94HVBnCizM1iZxPmT4Lr3R90NthDq7SUDhiE0yrm7ENAAZyk9RAz6dmqMmGOxSnoaKvTK9MxQo7+mZof6WB5QmRua/kTMD61DyhJALBQ6csNYJGg08nyO3e2njT0An4H+E8D4CyCHAPE0gIQ1qgODwSOK6UjDEXdigHJsvBE/Q7qLm4S0Y8IcgCvZ5eGEZY18wwQazhODS7kPaBnkRkT0uOPwJRwyHdf2s0jiskZ3o/gbctjynM/4ywzQiVM6YjWAFuxzzLyEjucZOnWuZ8uuw72uC86RMGxym+4JvWsvcMttt/+9Jwu+RC/Y4pLHYXQA2oVW09XU5vawWe+DfQejtUbHa3kGCAM9WebbeB4cdCWoM0Fxm6u155GDLG4FbvW2d4F9/hDclqsB90ELYBfzKSZ5Gh3Q6sCRjvHMsdg7WUuLMc2m1uQZby2tZDP0s62fYoLGcJxG0+28ta8eNilUPRlB23j8t/drmForVAraY2tTf+Lq/1BcKAoN3hiWax2bwNQK6Yj4UmQZvhTcEFlasuoqxFimAO1RCM34DlDV6pEp7SxALVQMBQYFfLDc0lcPLw9/Ppg8hap+FIWo5OR9Y2YD6bPlOkDkZNqXG4BcZRr8rsA0NSyqwZBSVllZR7QFFNXiydUCib0QmqSmnf9GsenF1of2ahLaglq5GSjz7YQwS/Y4oDdwK1eU+/eNX6q6ilAuVI1bX/T2twni+qZZ+LVbeIS+rCfbTooAPB2iwbRVaFUvPRuADKKeSl9pfbPExteXi2KV5iEhFbPwqaKDKzen8Ga/yqz36x4v9p5tgnb5Bj1wow+aXDVbLVLdXmTppQBKf1NBK72EYkwpCnNUKmqjeKqf5Z5dGpY0+kI+FLaB8qHmKYKasDNQWIGKO3wve3g51c/jxdcdjpmbhQ6B95ckNFw69PGJ+cCwMAa0dbT58oLDHIHSRJ3hw0PuyMHBsqD8gExlQ7mdRGBKolxYofOFRUeQN8SuEbpYN2pID9sShq2Vt9nXYabFbXE0hhPaiqlRHLdK6WRsNiFwP5ROfYrp9q8XAvdQUBt9o0hPh5mxAX1bxp0GXg1P59tHU4XBVbtFNwcaKSgvKRvCIrtYQZLGaRDG6WMWg+RxE0kf27C7MWAvqvZJpEr0ezXLFXdBlARrlNxzX2RpNWCgItvzA9g8LQdYjGNN2rUDQy7GuYciErGgNrSs14WoKmp/cwG0fFp8jDIVG/BksE6J1wOmbI7c08KvJFDN2J4dTOmj9g8nMClFA5Y/9Yeoy/w/fFJRjC30BRnSH6YhHKHBUCxIFnZ0MpJDy8WPy0z4RSFkasA6nyxKt0YPFJSvvqREi54nbP0vFHZZv+mgK6rIVWKYUmiROzl5fQ9wisO5KQ9mSMQ00hIv3fB+2+F9PXZVMmy6Hg7bf1A4bvteNfIgJ6+CVAwYOYJ+6CAXh3MtpfViXagh3Sg4zWtAoOTrcFoKuXxyCIM2yrAgVaYFy6LUItugQFGooWSBSfVpqknbEGUgvUxSK7O5b9oGaDaemspqf87/j1FsUeVbEbqc+hYUfYmt4jLC0Meyrx8aqpIgUlqS+tstbImThobkoN5jjP7LNRsafUvMkYsQOehEatYXV/cXmprZafS3I4FiIFAMYwhRtbittoZ834HIFTqEZZW6ioTJ/ShXKceSLkeSJgQfzJ6l5aM8C9w5Ak8pnEsOqfgYjzxiQ0Nr/ajqvTVM3uo1760DQ0bB+KJ93lB3akjWh9/brSX+F8WQlV/z9T8zUMEjFt+33raXf9y+4/QGdI2uYEHZuNn6CO19E/Q5tg06ynnUQxH6sSSAZsRr1ft+ja7VCmuR6SFEltSc5/p55gk2dd3tKgdSeuLJXnfeo7G4Xp8f+3OzG3LpaGDg8pddkCxOSYgzrwEbSFTJgG427sssoDsKzJ469jI+MVPHqfGNd4ZSfC2laIKvBwgZc+I0gcLU8Fs5Ifvd08/ygxLxCNlRiuT2TWr7m+dtzYUazLibFw71LxoMmkee/RiVsz0vr+rx7ahmluP3cabUauLE6fJp0En6qdWp2V7YJ7uK3H3RFbUnvcgBBC6WsVfo5FQUZMPP1r1Y/zre6kcv2Zjsix/4vypE+/iQc6iEC8KLBpJmll1SSKN5dmyNi8M+2WfXDB+LaTXYSLyduL48KM9oaXY5NRxbTs5+fQBYwYb9gu6Pq+b6tYZwF0PVwzlpbhmsCVLMdKZCwGCZR9i2gURL4O6rYhuZ2lB3n6qX271bsGaw9j9kjM9gm8dZgMDu09hzP3l3M+xThUGzcEA71IpdgFzoiRlVAokq0iykG7cpG56+mhE0i5iOaqy3He9jM7X+TkyCj3WJLdIBoSvLhNWjO5+12q0WUaiD9gk+3iXyBf1e+/vrRAGt3VhPO8NMV76GvO7R4TyRkzDqw8RZV6wc04MdrM3iWMFoxApZTDsQ7tr46fteOk8xLpEkNBpJYlyq4Hk73vt0Y7gLBLA+h+NFg1GaT+AEkUBlOX3ZOvgo8sICIYwPSVF5VDoQJyrU0mRcquQFOr79pC7aDfiwarpP/Ukx2YVlJsZzN11eJmO/N18s7H9Hk0XxSa0Oz2TlGm1GjmZ0WnQyg2pIxJhIMk4oJaOghGJclFMSzHG8kLORiaAyTJ0kfUITcLQCFVkvlCnTfkNzSdV40mS1jFq2mJtIqozHJfOyWCEVm8wOB6NOPMjnDOF1OzGW5fJINYq0yYH6WRzYA0eiHiLC56LAgjUZHCsajFg+IhrNJI7mjQa0qJqqSfiYVJxUa8SJMQmOj6oJV0uSo1JIwuo0jhbOc895SK2e1CoxRCE9+hz50Y1K684ffeNHkOSluJAoeMnplobvMfnujlcf2xPTKQuY5dx231H9Vv32n2w9rX5LO8oabHjusZq9ttdpwFj0wLf6rbrtP1q6O65wNAMK48HKLxeN+rFBPjuK1ZE1gsdNoBvaXjVyQjjy6waH1D63Nn2zo/6ZtaKuP6aGW/arflW+TaMfudXYrvr6H47k7nqi/eD/xpmUd/+AQ7LXyCuNx2YWhsLRPbGln0l/FIo+370//dH0GGMzHtNu0RHaki/4vJ6p4NxmEiuRMTmdGWNiB3IyMmE2mfxA5KRsvFrtwoMd8TrKzGHfcEYLDJV876CgzW29AQtUfXfPFvbVB0nvrnNvu15viasfvBPOPTzsvvE2qIcCwjBlc+Is51Duyj8C/wTrfnV5kVVkvW+FvPKMphybUrl1cGgeu6jiQmbkwuE++Qg3sSFTe1mjqP9oae7gtO5gijVN11ccoPZ3zSfpvoOVqdRefLz6go7A5ZAmUzEoN+qVO1fIV29QibeoxRuvhjSZFURoHbwP6J9xBqKLbF03aEPr0ttgdQ9BHspUFW5T4P6d8W1P/G+RHScp4Ju3Bbdv3+w/ZTe4L6KvZYizy+7cvt136s5zpN6/21vmgug+qn9xPu/xeuauH3koQ+z8G4uLOZ/XO48b6sbztfsQ0JeP/n517eENRzbw566u3FG7fOt/t4JF95mlsw+/uBduLkRHxbMFTxrdp84OX+missy90nj31h9uvTcI33U49R/k0JOQVufBjG33hWBWKu8eSDn7v/mn/Nrr958rG/6eWUhMJPekl74n/VIoDg9H85HSL/ClpYIcf4xe8Fg/schhg6Z/ml47uuyvsVzY6Zz0Tfw1hSyvsAdKJ1Izw4HQUjwHJZhmhrd6nEWD4cEjz0Ma3ZJ1f8RD7YQiz3H6WJw5cx5SECV/xaW+s03IFQi0w9rlXE9M5DhlCffFLfdpxeavDDGlD6mAJH3bK5VPUTatoW1s2kxu3kRdGueB1H/mEqThOPvf8GfC0dQZGJmgTdNEY4ujo29ARYXBp/ueWTOLc/YRWLfCNj+APOADJpFjO33MqW6aWbEXwyYUvl9AqYPa6jRfNKo1oeP5ftOpFfi2cU13mcP09/5N5RbT8VghnTsGW2uz0Q1km2SoytzNsEjNRs/eXTc0ujrJ3u7b6w81WyJ2Bc/jYsY3gDlvan6Hgjy6AQ7lDzX9/U4FuRQB47xHyKCU7bdT0YgbDt887L7xugbgnNkgIsLhQEGGWQ/xYiHBosGgeeR5ISuOWUjGZXbYx5vSaJgz54WM/nWDC7aQ6bAKlq7vRd3NCzZv64zQRPRilH2fDSg+6N+HVmPdfF1z0b2lbIXhgxpZOiXXaNivLKPXyfKTOEHCY1JhXKkUjsVEOK44R9mJ1xsEBdtLtiCGoQGZ7nm/FcfwQeXQEdKjdqdAKtUL7M8jh3XWAcP9gO6wbNyCEKXjccPrdyILdX/A9EVlF6mHNpX61t8ceIL8XU/VBWabijVDpxvOvWTpJeT92/fDk6Eqyr1t7ziHcvf7EPTitRdOOZIuJVWdqiQT1+uky0nr2qs7DQe+wbjbW4ovE7GmHRZby49t/WGx1YW4+7S117TQSZa6z8PWGtfSwTBKH9fdqOvu+NfcyO72R5QipggPtkLBRn57fmFHdIeC37idMr7tciKZWKWTriSRqj8+xYPN+cfyCZY3K1sKa4KbiowNtwRXkqdLktKGa3F8y1xd5D8o2HZitylBq0olMlZ14urWk1c7vxNKf+0T2YOz+7Sv9H0MIlDpoePufsZH1A4jH67+9lRKzUVHZ69Py0OA5Kq9KGGO1fmABYYQWrc7EbsMBiIeU4FNcW1zUuxccLrCtofNp1tg8sjpcaPxbvbdeEBl7I1pjuJe39dccoTIbhVs/vJmosrjYfahCClZ7I//88TVPROCvFLJEli93n/phJbIFx+Bcdqs+AX26oOGykGIvspkHbFHSF6IvESj9ip9UIlo1PyDnUUijeOtXY8+edMdIcuz8bAtcsXOa9xujeasu6vLdl/OfOY34r4bAzpCPWT2rpJnyGfuvN3iJOQyp9xyO7hD+pJCWdDrFY9+9KJYU/MqFtjVr0zJ0YRSiSbV2sr+QAO20hxr7v+bJCfBL1iOTqt/S5Lo8jdYsyJRpk5ZzJ9Zlvu1LFbI+fMF9fUJ5EEEqmFVGpcXDUZ5PlKVOoVTo0FebOPbdZXuH9d2XXsqE8FiUlFSrRElYhIMHZGonEZd+huRwgsDpacGRyxWV9oSeK7yAul1ivs2xp7llv7niShN59wvh3NnPvOzpS5ErpOfklCmpNk5yCUIVGxhd1K+/ifIDvf3j2DrA7fJLz+72jWDgBLuWVOLcuh6roPbbvjSVNfVoaXc2aJkSAWmIF18Uhvr6bdLeB1GnGuv290f7pI65K6sPfbaHRuktnDXVTOrvoTNLOzXOduY7ECXyI7CLCwMpZ7o6Uz/qN+h3/5dol1gE1loq6Ppx2oizTyxmXZ6d1eE/P040SYIicx9KuRqyyuyZLeR7njUffSucPcAL9Q29Inc08IS+ft4Zg6rR2fo4g3vHFbYXAS7T2ftEhiN3efuDazpkvgYXJugcxcu7a74TB/EBSJPlAPHTHPHUfJRbwdRQXYJDQ2Bf7aaQ9dD5Icacb11c1x38wS7dH/w7JfA55SdUax35zxnovcYsW41/fYFM9g/PmI3kY+N+Tgo7mb0mjicXoeH+4fE1Ec39Cq8Pi/qE4R5hpAf8N+RJyBpnPU1EQdXX0Pr+jHWvs5eWHeU/O6erj2n9jjXKQfSplFZRiPri1qxeN1L5QuihLuzcX23LcKGpsdqaHr5HKpq0bWpsjodmk3LtYhiVCQeVSjEo5GPgzGRMHPP+UjYJ1PZfAPtRjZSlDARLnJWkant6FIyGMRpPjMWX8isBindXS+T2hQG+HctXy9BkHqUw2AqZBOCGyTw1bhjq6XqeiWXx4O3qRq3o+HFh5dLIVIcMzKg4fazJzqvfBiOPzvCz/8nRnG+WrC78/Qk/D+YEcmFx+qR/yyZN2Auqvgn2nkwCtFnX9EtX8iLZ375W3xZYMtxAR21zL2FH2h15vuQ0uOsCrpCTFg9QawASV9N13B1KFHtJU3QQCYTqhV6wLlkD8NwqhohsZCk9JXSTghMEA7DRMXBAKrB3lJVBASas8Kj2Vqm7JLXXxS1OCTPuyh6W7U7laz9zVDuyeWI5XvUxER1ASx5pXuUn5GsWTZ7TXHi55C9Dkn1oTEMrQ1yOQdlcgmEnFlA72l2VOYFgdp1K+KzNdTYGSfxphoau8giIdXUWIkp4n9aObiK2ZGh+V0ud4Em/ok7CCRzV7QhOqnWadVmoPl4DGqvW6SyRCoisSEQ+KXXALDU08ahB0dql9W8YcUdryRgA6AH8i6PWdO7oax9QjLSVqxYYvyDQ/1gCwf7s6k5NPMKqo/4Zmgx+lXioSvv6jnnopa92YtojFKhR/IEbWv8Y127UFamteTmZpdYDmHIa3Xm9UHi9hT9QBQ4COIN3cG1NODazoHszhm5ai+RKdYS9tKaYC7vLoLQ6J+HzK9nFbAWGBOdID6mNjg4UxJLa4nNJVw4Ebn6MiEWuCmHMAe80+68RbF3kOdMhTr0vBg20LFJv8MllJdKIrJr9jBZXuGmUtgHZAzJ7W3fefh0esxd+slWFeI4Gz096f9nrKBpqzvc9TmLItnuyVv9vrgc93exNY5FW9FpRZXObkH7ZPeoVyIH9DF9/UCgGHb/6gYMTcO54cbwdFzSW9aLHg+MkrFnHKqsPr8G1piaVktqa3000WncQc30YKbQbYebZ8FcOA/PY4vFyHVUsZxdNcbH17z16fppvzGkDv9kznVeueMN8Tudp2bduvMxknf25aSHSC8kq5M/uvxdPJWmnkXOuTk6Rbfoh8gvphVzgnNSTJO5rvq+6kGmJXMpc3dul91V8+psd/brPNc8g7uZ8tncxHzf/Knay2u/1EtfgISCMFL36t6JhY74vvx/i27e9bdFxxc78mf6e/sfLJ5bwiuOsrXxqsa7Gj8xIBs0Qw563eDX7v2022hHu1/qCfRwKqc+2fSR4Qc9C8vCyzY3X9f8SPP7C2cLj5ed7E1LFz0gFNAk+gCgR6D5ZToXPQDRCexi9DNHZk91ehkBZZRJD4Lg8SD6M4reBb3QQK66WdEoXC5W1//WCx5BmVRdDU3PLf9oKMSApsC6PDgQkKelDcq44mQuA49cNJANmwPXi+tzEs9WxcsGBIf0Q4ShmOKEDZWKzfgNotQbhyAG/WkeSDWAW1NWg9zW1mmTRxmC83pG1GwgBRRUDSlkpUALFVJhxoTx6YjmFO4joAYZNKupcayoFhm+QtUKTDibG1eBz3Zo9sHkBWvRDGSELzkXLa/BgmOVIKEqOnMd5TKGrAwAN9gxsmKct68qs9tEg3a/TWxbw6IfAHrajAepbvo0w/e2mxGqbkf8H6AEogvSy7fzqu7Lc+o/UEPM9G+AF40Z74EtZCLKXP71cVfYLUuCbVQxINMhiVlpCdRCTblxOcoAGdjTiqxtGNXhp/Fzj4sw45iC0h2lC6UbHALjbxTpA+fCGZC1FzZBTDhLugjEZFLC0i5b4d3Y+QrqeTS/0F2lEbWku7h5wW4HBdfKDU8u8yxv6nESD7AHOyeo3SzKN/uSBrxKaV1VuaL3zNZOFTcj6ORdEBOcO8DF0MH6xMm6nC5dLdAK9qctGWa/dDeeFjstrnKLOIUa266xuC20cU60RhwnJmsc64UqkjyM9v/f+M5mZI70ltfdB1BIaoJDJTTpV4BYybbgAqol4FhXm1Le0sHcO+sLBmJIZM+yFFbMStvA+mIapYKb7K9RWlcXx6g+Vj5g8tkRyIQHlXlgP98Joctk894HtIE+QtavykxkdF8oB1ZPLWv4zzd8B/lu5LKEG0KP+TgMKWgCd0BXn0xPhwnGUrlKDW9qBGdmiCjiDdfHYRTSejmfxXUC8Fg4rTSJM7tTKAYQNLHXM/lyrc6SH8s0Xrl0vp3rOQqwhzRV4bkY1EQXKMN7w7N0lTj6lxSmsObMhYHJSyi0JSq7ox2KbmxWgRjrlSVkIx4E8ZhNTZ2gDjnBFuMvKUBEPqjO9kvRRnzgQP/EkWDJjFqdxMfWCpnJBLuUJePKCzPpjKLCYgF5sAN39D+q8cgdpPFtRAic+HLKS4DV1lznnhRm1IvH2iY1eySlZoqy1XG7Q8Uv4mYMpLB0Wmk2Tu1uwuomVosx0mOBEz8O7WDOX+7vCCm7JrqKKjKMVa1snVZCO5qzjfcWtVDkS2zX7JklaeHRr1RXvoWjMSf9n5xkSv2hEuz0VDY3O1tc3tcNtkCbYAuhpxfxykpLSPNF/x8S/tQtw1slniahMp2lXDxJNPSSXIu3oJfqdatXKFdrmAm4wrhWQGZPISOGiyLs7ucira8GXdc40sZr+MHC3PSkjx5iqZyp1jmSEZhOSHR8FCsYXyySmKsO5jpQwEoICuT/VHKMDmIRfyjqIVc+uAnsEQ4x8kHCBUcWoD/kE9EGdSf/zZf+jsehLPbGaMbKr/Crh3LADYHpKJXfJY1Vc8beysI8YTDVsMSSei4L+QM1+kZSEzj1WF2uCIzAThGPB+SmuOzAjWp5gdVgob0Nf1IN2sbJk6sGiGNgTgc+3XKTWOD0h2MjTIzXhdpmTKVswtdQlhGks6xJe+bO+dK7xTZjGwGZtIHPzHFla6QYfWneAl7ITMmGC2biltZy7N2s1FlnPiLD9xFQyISUbHl/mcQZ7IWbhZ30i81hFCcpJ7OLZ9KdzqVYvAaTWmuL8ic2GKgraxIIIMya04FXN70keMzelar5/BKFXE+PU0zrnisrNEUF68bdmKaQlJrJxPCOqCISxuDksnI38XPjDau9RQnJtEQ+U8bVTG2RucWOAx+DUzLAvIxqiSdkzCyNJE8uJ9xDX1N9FU4E+27DIYtNxpHYSVXicBfMLjZ9dw4rtvhluxokMxpdb5FeQ2gygmFd10ymbXRulB4xJRPXnG24RAMQtnO6wJ01pgPjsX9tG9nOHIrqdu5mxLykQpYimmbfY8eaImJ8hHXExZjat+9ZQFROuTLXcPEv1wJlVlfHWGm3oy+Z0Y9jo/cvMfcrRi2Zv4hsxlRbUyeqWgkGkFMyUX1OASKyY5VHtX6ylwcpJy7qKsvtuVtCUK2ZuZQQtDkj0Ao5qbrXnf471bOf/bpgFIMkWtUJAQPL4G3PmtV+HUBA74tksYK4mAtMI48BruC23B6kc9Uh/ZgGdLhzuiKeM4EPYR4iq8Q1lKpDgKVhdiXtZ+hckEJBAbBa+DKeehOHHPbudgdDVHQDG2Fwt59UtXRGI5VL8JQYv6DAlwxHrORp635V70mQX1k1kyl0FgHnIWQxkYyTwaiAhoyPTGAbyROZoRw6Soh48l1Gvb1uiBFv4RG/Dteat3JEHBc0h0bW7CAt0pvS6gOSQweGgOXZyEEbvINQhYsop2ZpZdLlotXA4AI+9Gor35n41anicfN1plwhKEHf4IUtSkZ6yO8KGMwVS0AgUQqm23HBa4krRwyFTEZ3aMi5h+45K/cJRgwI9SUQTrVII+X3aiJAOrS3dDZ2CrgF53KgkLhuKlJQbtr5rAWNfDCYN5qeplJErQEsSXrB5t0CYTFmbPhGBkCYFqWyZah2vbYvxjgF+vKufO/8lL7lDjKWy5A/eMCbkk1DP8tVBjoj2WtezjLHcSH2V6ND0Ke/jwC4Z9TW2+OGibXqXk7Kc1B2Tke6jk8PMtO4Ec85hRwOomamm5ecvNgKEXXyrg6gt2PDDeC3e0AMChqICYZY37wnYVMc84bB+oqleqdYL333NQ/pJmQ5oZnQe/zWqDpyHqozbsYh7aqJx7YBBckpmVUQK7udK0RoacoADWYiV6zXUJm0eO1v7ax+fwYAroG7sJztaAvz43FqMVMmW6wRzDhql1Sr3ORJId7YAqNVopJ6FU+QIIf5c7rUPKM9Bd7NBHisWsPocRgnsVj+99Nj/suSxmuWqUl8FO6gXC63RvfmCsaZ/TB948FErrSGPnfcGp9WS7pTWRVUA1JOAZlI+uPTNotJwC3QpmSq9sQkDkKmuL6qI0Zm4sk8RgHOTK1s7mMPVX7S+0K8OKpRSotZHdNcKENX8HUeL0s2WJqfSweV6zN/iVbyFcAEa0437BCzv7TVFev8Ewp8NlzSQ+Lj6NSQyaZB2oLq5jcX2GrM6Zp7bviHgAGMKVnv0BCaSimgHjyxr+a/nRwIerVq2MGC0u2DOGD1jl3ZH+NvkHV2/uIq7QIeAiW9kwicm4bI2KIBe5sZwJ+2+L7xwCUdaT11HvRTHrmc1735D6BwrvHIE0v855aiy2373F8u8kX7tkmqG5hsZ7aOh9fZmYROYlbz4AU+p5q7KF7LBw6yCJNGtqt748sLRhoi0ym3LiNwxYwTYeo2rvV7jMouPuT+z3lQwT0aoFodOIp5QGZHgUepOz4l69oFkIKUAkAT52iNm4qmOnxy85S9s9rghyDqjkAJZUShHiWfM5ANKNQrFZUdxvl1/LIdIZzKXIePx2ncCRQHHTAgdGhoEJiP6M1E928B052td9ZK9owdD9LK0vZ3A0wzqYz1Hd+UsaRp30hYtMygByPkwohCrsgdJkM3+jIYlayNEGJRkXY3y4RtG9bTO9lnxgZnOb3b3zN5A1hBotKcbtaltohl6VDxhjKpixnSM+jHwwI5kdndTTNuaGUlpA3n+XBRirN/8fWmnp2Z7b+NTsHvf6dDfNDOfu9eaoNfSFSaUnSKms8zNBRUTBvp87tL+GVbnvzANxUnUQ5EJ1e6QsFKdjaRajmAxijW1nZ1gEggN2eCP2MWld9HyRa+AUuGo/muX4COfAK2EDbIUaJk3FwlWdmn6sJNs/lNgO6XHcGMXo5NQH/8tUAnDU24SpLOKp9XBP+5iOe0/5e7QK3WWfxVpJWV/2ZvD4AhlLfFqmKxmI9hnv3c48Battm6bY1lmzJAOeTxWrnreKVcrnghmWTr6PCkhEqqqKedW1rIuCh/z+Nu3KY7AURiC7nU04RUmxn0gEX6sLVABoSm3UJAEY3o0oeoN115QLoSBF+n368cwEEZQ6Qd5yIj8zfg74ejA0A7+mxowq4bQqnOucnye6bv6vfxKxjLcnt0nL3K3F+Z0kyQLtwAbgjQ+IqBMDoHLoAwE1ph/gEl8hPBtd5BN8/ow2eS8yN79lThGfv0Uw+c7+KPyauTJ7EL4bLVRNqZKzrNSgseuBXwaNyF6O0ly8L3KzAGws/vfXvXhUT2on8LV8hgk48s3icCf10FztCOG8KV7NnOD5ei7/9zJliDmEfOfZ6pB2QHYT8HGacvv0paFvCIMiTlsbd5IbOBH0R8yNPXwp/BVG1h0s9lzhMnoEG+FeItZVvvf7NntTTNcXb8FzkVqBLsn91qCr75/BO8W7F3P+ZGysqavx6HVKZ2xeevjxKwfebtlUhtEbu0gBpxBLugDBMnQChIMYet66LJ0NRJw3+J1o7t9HFcVgAkrGlFN64xXxgjl5wxBja1XZsnEF4FVeHzuQBiqW4tEjryWPzim/vuJiDpv7suQaIYWAjxU1CM86H5yGNqtW1vn6EkbE8vqVb2JiagGZKQbIuoZPuY+VC3+pORaNfJVY0G2MAocu3OFE2vw/aVemjhQaL7mS3pP33qOzh4ZbXFg5umpmYJHp/PBYkMQ/9K87oGNKZjBi6CH/zRIbV4OPINnMRShCZmk6/uor7y7NA6xwHnIMEHNrUNHOXu7iVL+mvuNW8i8xUzkWe8gqTMzx1JgnQwHysz3ACByHcggBAw8DECkNSyUn2zDhzxfRR5ESZMJflBUDWC56RmNRto2CZAAMnZ/QySwYby37TI/RaM1UTzB7tNWJffYK7ngCTUzIVqor/aGUgDcpkhfWAXGq86FC/LWj9ztAanKfVoxFP2wHX+GOwAoREopZI87U8tLstVvZeItA+2h/rUxQLJiDm4A+6AF8SwoTFkF2HazlBGVdOlYYXmLJMLIXGWC+EJ7JiT53G4qLrpUxCiI5WzHaBh6aymG5BX6dGDKMFora2f+2Bsyk2HBuUQBZGFkWPfyw3UlL2cS7pITsmwxS36ocKUQifcTj5nJip1/s+/stSjuc2abXafUUAr2CTyfm7MCxnLNwhE7qcgapaQ67EHcQwRyUKsUU/wL6Mw9vZ6U594morkKBqxZO5Bf5j0bwg8ICVQINc4OlbBbqIdud7v+Kb7crMrYBawYkfQF/h/D7A34RkPKNjet86F2/SM7rLfXY/CfwGPtl2ITUEuH8qFmARPn9ohDUMeI5hiicd/OxGsh2M5+ZPAujQIAf//quQMlLQTDZCh5F9nqv8maJwKMHQu1IBqienX/vFb+6BxW+meWzD8Lb09Rfe5f23LZ0rEfMdLt/+dE9CGOqpkMI7YrdKonP2TFT88OroAexvWQLLZlQImWZ4nIMrnFWfXHM2HEup3ZAY+L8ZMgFkN5GKGvsX00aNHTyiif46Pr7SAF2LcZadFMrgbe4F1d+umaol67ouyvXfE7YEweAxKvxiGhOLgeG8Cnuq6Eqtdt4ByJAsW1gWp9PS35RrMenyzYGrAde8/x04PKyBWJSpL1mRZyBrdPDBVcHFKKhNxbthIyewjpgPCEBM5DIMHfRRv2gubwX60PF5nnGmbV8ghXPDPn+nhdNha/wzYUjq/OTbdl9GIwZookdS5b5yjW0WvRFzAE1CCEYQ7QNv9RxibzYyMwm/bMT/1tcI6t4EOAtTWJhKyDB+OOoPFPcbrvAzBDMqGe6u74NfvOHCrGxMNXBA0UHMp6Bw7ZN0deQPmYLzz+lLalKb3A393fM/PIh7J+b9pQZ5ri7/3IqxsqpyiwDjESE+Zce4EgN0OaCfkExa5kUQubCeQwXe0OC5YY9GUuNFYbAihvTKYxQtImrwavjriZLZthXunrhf60Rm2l3aQ7uj1RO5tWAZeBNt6zRVBP25ufwqYW/patBHPURcQ1kiNEKkLu+F2KdkSaQJTRdA11cHw/ypJDM7rbOEnIEtDqF5Kz2cC6zMbJvlg7MISdWJrW4eZXpbrm4wzbGaN/R9U7SeeiYZsIZrBhVSx/tnXCVi/joCTnIYfrifXjS1uYvD/jjbUDUNra0S5srTuTfcGDh8JqxK4FTU1Cl+jRS0TydHdoxpMciJasOcpzYylOYFqjo7ZtB8SgMCEk9pmMVmKdUNw9tuDGG/v+iIrCI3Teuun44r36n9DqXobhaf32+nEma0SvqOp8vLsU9+IxJ7hjwqmYlfb/VRLqzZNf/4JULNGTe9MjEMF9cVdQRJhNPD/Rz2dK1HpYA4f/tl0WNgaXZr86/6/PVt3VQRCndFS2oe7MSDhKsIwQ/tq33I1Qwu6jvI3cU7bxRVLORYdotFFMZ12SMkGmgQyQs1PuGrxNq/CYyr+UkRRV5ebO8i7jFeHQqsWNEqpbW2NLmtfNj/oAd6v0nBUSBf3+Cps+mL0pT4Ud9pQhEA3Qw22ouI4a4/ENrY7Oy1vBaFc9jatLKunCzwzkPsjwkf/b2KbdHARGVA2awOkJzEo5l6+gIOIU0uuZKm649qCQx1liPsw3Bbh2YNTn+XAjtqlZk30aY6GMLvGDw+coB56tiTr5IFHMKHJJL8gC98Vz3NeSOZS2dR/z247ATweCMTx1SOuSMSF14grKuyzFvoE6W/AqmIPZCIHO3ofM16mD/rDLh5Z1Fit5M7lQhZzqerbQrGQDXuQCCPpq/as3/+YkVH/4BYVFDFAz21qIOX/StgQ0yEYMDv6tQQHHiFLYnwCbdhZgd70R42peqEza3y3O36ocp6qck1lRKTFEwV/IKRM5MHLGNVsDjBIitj3N0EfMk7emyk6t0hLK3EiOmLDMK3ttLxw+DyopeWrCbWSVuDY59vKHZ8gIoSU0cFZcTyaLXNlAj1G+RtdiqLUvV18rQnsw0Tn9b6k7SMBSV1VNrbod+mQSgRiLzhKk4SOEGQm01YcSLVE07qKYGaHQc3n3OWxA9dDKyTM1C2uyNBRwv0jih4YdUwndM5yXTq564/fJQ9yTmmnAsrJp3bvDgd9vjm3CQXnelNQMvw0t6T804s9LN/4/3hOT5m1vhlmXXF4uhoV9mgTPsYI+OItMnftXP4W/VbGDBPUEUjnkA89/2UP1LtFYGGOvYDizzMd57ygoCJT/uo8qCaZbrrD1L4mCDzK3YVo+fd8KNC2rOT9YH6H+icUctrSLF2rQ/y1lh/tre2VxCL2I3abH7xABjAN9LliL9Gwn0En16XOf5uwnwpe6KHDbjknQMQZyPS6fBluURFekF6qZ0YuRKHedYFMZEyn6CtD49jF6Ifiyh1ghzJ6FN6v+SnhhTOUWuePPoi53EbDXgXV1Ulo2a0wLdJ+nmjURvCKNoadrs0ZNmgIzuy10QTTQqoxVilMCcfrHhQWeyzEyo62EH2kS8/SHVMlI3Njlj/bIuMo3Qo/GQ9lqThWbyfTfICA/bKgMnl84H1mG/z9s2UJYHRAFPo8U8XtySXqqVc+8Tpv2pkQ9VytnOuYgaf59WclGXX9zfI3f7+yltCkf38lTPO/MTrUDU5XX0Yv1x01ieH/cSK/kClluA/eKFWFwRP1wVNTkzmTjgvx9HCjDdbtOlK+aguSasIoMftEfIyJc5It9jeCw4EI7KcVgWH49KFgWY5av7d3XhxMyl5AU2pj2k+hoA9yvKScizMwJr61Grz7KecMjexJKrsOpQ6x1v72rmF94YSovXNsXgmZkMrySNq6rjgd1Nud1lRJULj4A99Fvn3UvWkdvh+HgpPn8VygIzbBNkqY+tuRFGvhwfPWopnJbM4f3/zqPCNfKORvwSuNyWGCHyPZ8YlpsbHhzMjbtKEcwkF28Hr0i4Q2wWbYLBnV0jyzVMtGqlVgEkqLWIyxdKzVivBxOx9rAR4BnYlbphGZKQq2GVBxg/ZQqzWyguIr5cMsaigfXDMWsgyC1niAUfMeaJz7if2v64EsMver/W3XA2CIgMjFGRIfSGML8cQgcQTq7vNmyVmD7NmAOKleiBgwSUk2ldUV2U5+WjDfDAPs9SuHLX3uhkAsdT06EO3CKB8h0jUQXiBGTjapzpzYcdxI4gc+TL4lfqVvRiiuMSAmA1deN8ccE5oMTVMXqn7Cz+lhhMZ0SvegPxNXW8AGWQ+TGeuKwZ43L/0Dv6IZztTWVaatDDSGvV+tsFitUioyzTTb09RqBZRRQR2nuWgYLxaLltmLGS/00tvgKP9+lEEVNSTNoVTfUnTAvYzJyOSsAvLRpvdSZdrigLRDAkWzwhOgVTvu9tRdgKETc0FmTtldDmBF3KAFnf797HI2e24b/rVx4uWfE5f2u6Act6bf6JK2d9uyjcEHIUgpp9cNsmYrYNWD4pc19r/BWaecJpYTEKK56zH4Taf5oeSbKDxmP8x6oRtJYTibuz7bdrhvtUIy2C6LsSOoPZgMeDyCEE3euJwN/QssDSL/rqDRYYoOcnV/kjiCW4w7cShmwmDFiVkmnfqtpbb4ujE3zCSctUkCuiYNiy9falvotJstA+GrngQGFs+oAnZiX6NW8RG5UZX0+uV9YiU0PjEZOOImKZrDgzbFu0YbatNgLdTGkFuvuRHHL0/8Tels9ZLa451m/JFN4IlQlkSk+k3zjs/NTM2Uov8RGRiH9lOoRu/M4pCEhMQnt0ks8HvJ2Vct5SdDf5WVV9S2LDJKJG1TiLSKljqfZ6mAIigdSEPsJVR/n1PV/v+d/I8zeABBbMHuZELWWSBfdWb2/HirGyxzgFYRFXH1pjrJ2jVfPachcKidbRAfiQ6J/vU708JXteotq/sybW1CoQf/8g4xIuZvQkEy7jms417lc6sX92lpHq9sQXa7EfK/L7pL7pm0ybNAtZsvQKBNvfBCrTzya/cviFLfAjufnIV31W0ErCA0/70USZ4jZRo4V+TnNZ12s5QEGtxpRTd3v3XwdscwPRQCQRnx+1NEg+CaKGMVusvfaptmhyjnZjJeyCPPr42QDyogEyk5pPuRMARBTHKycT7UUUfD1U9BOYEdSyxFA6NZJDqlCEQqnPMvkPdRLV3QdCl3au1IpTm0srpcBhIOcRtc27iyIHY0jZ/7f5cEyQc9ULn6/rXr6M8zw/kL/7i5VAIXM/spPJSnokHRSGrtbdG75svhU4ALMPRIDCcVfz3hr/2MF5l7Cf8ya/f+fT1lYSWX7qOCr+xAjWr4k5wEmYCCVkurk78OZPs6HRDGjpge8Md+f8QmH7zFe8b13Zvj/gBEi6B3PRDNIlGzJKet4DMjEHgpRcAmajOSII92YotWEjXRhVmXorvLCj4y5GG/H4ET0QEKmWgEuxB7yx34KKR8H9BBUSO1iLgitAC4KsMtUNQwSL9gJFqe1hxQDGNYMZAO18C93lDWhdcG1LNaJjs6iCr6shonyXbKIH3Yk0bKVmSjNt6cbyzLV1vAB3OnVdOIk1R0Ok0GTUW/KM8XPAfiLBflH+Ta5AHLAvzFpdQFuYlgmIB8rgNecIoOqZkNZ59H3+a30cytHpestbWEQzGzuUD3r+iFpsaNR/m+eII3ZulWkp1uW8Qqq7/+YIO9xIWDle+ty+NE7pq5A3LSaho5UAs5qHqMJjCSy5QsmVltYJJxpOJBwQjJT4pmCiJ5W6lbzp1644CNKBMY/+Wa9GBdaoxTcJeOhJjUT0Z1UdEgCMk3BX0WQpVthUgTgx/kCuBVAjVAH0MhQVup9v9u3e8KR5YzQeTI7bBK2x3YG5AuN+r3pdzVaYCmpMq5YInii5o20N5Haij7O9nVRuN8gu2iqEu0YAFhHFy33SS6i7E47od883/9ZKd0tXlc+UjSC41ogy0IMC56BIMq9rjgSVOds/Sbngv/ArccRZAy+3up/28nVthYCQtRcr2YnMUb979zp5M+MYa80R8CZlrJ3HSxUZrmljOInOt0QBYpBAYt6DpHRqARvIde/81k0buHr6xgmW1M4yC+Ev1G3tlN3f2trPUiFhZGy6fYanfypuDxQippJaxrderQhAeSjSNUYFNeyOfv6qliqQ6ZSI7x/AgJ4s44rEZWhBhWdmOeF94cPpop9fQe/3XXWJ9ghxcl+zA5sKi7qyh7G5I9DHWOlSoHJ2rLCT5UYy2DCa5gkovlx10BHgiUGhinIMMQYR/ZzeyhDw6hLKap6WFrcsYFa3ROwSClU0Y7qLM4RIPips+y96OQ34u4yxzLGOzAtf1aekTnz7tsPRMh0h2ghzqleL7xzUVDDPLCw4KKsvlwvL/kmapbFB8yY13JVAb6E+C6OfHvzPxRb7CdUuwTM/v6+OhVAT7/oVwZ8VXpJPcq7ua1SifmBuwUuKn6pVPw6x2HFo98AEthM+wXhm6wZHG266D15HnJFu4t9vDPFsK2Ortapy0r0kYkCjOqbgnEEjRWQJ+aDDAzks4WRxorFTsDamNt6gSqoqwGCq9YVN3sdveXRCtfu4f6bWPdI+DDROEmU+8ee70ICshMcrIt1mOmYkHlQ2nhrAtfO3I3EZACX5VMUjuDKBe+3vEWKnBgF2ZoRG0xi1lrM9PBZ0SJZeVjhGYQskaVTHgs/zYAgxWc5KjKBTbKBeUZiMkpw6DHLxl1iq5aWWkdQQ31Pfn4FVgbt/zPV+B9cs7sG9/PW7TyVg/HZ+AxzL/SwBLiB4+YY5BONqkgX4pl4Gf3FGnlFs4S6a8jS8R9Cj95mf5FN4OpAvT74Wg22D6n7CdHiJmArUF8LrANGjCFyn8Uz2nb2aQg6qmQ31oNiC20z32Bc9MgBjE5lDBAL6NTefEU6lEY09I5sa9heZ1fmwImRilTrZ8AIysr/6g85EP3l/ZpZMDYYVrVcCLSIrlOMhoftTs9WsU51O90tLkiu3xHKNTBrOkAi5MkjiFL/gN8exZjIzG+BwDssAEl1qqB+pbgNA6pUOZHgo8PXiBa7E3sQYz+LQf3t/pN75Y8AV38Bzzvpg7AWuR8Dj8qAA3eGH3kJfA9vIAhbWBU2lPAXCvVzpCtYvFg/qx+6bZao9q3fQTqCJQma5RtAGgDHRdE/zBkpviZthmn3x9dvBKQhIFHik/9M6PZlEU90nMVHniH+KK/AAcESmPTQ8tNQrZBjKyT/fio2fnh0oRkYWf/jW6ED3aQqJakcSwzrepDc8XT63Xgy0hFRHEeByBUfHJ7FP+UMLjUB6jm12q9+jGU+SE3PUaVJ/54OP+0J+QUDlH97jT9O3OFEYx8eImfP9R0L8qsLy90L3sZIZAwqr+lgWizV/G8pFcwj1+kPiafXgdleMMInJ+ByLfAfAGYG1DmaME2I5wHl3WC9N8LoZLk/Bha8z/wWtLnFi73cu/+3fj4CVh8CYxI6I1fjhlN98CryIruoZ81v4kPIc7c6ScrRTjJGoYuErx6uk5QhI2PNpy9Pk9jfDzOElzY22C4bruo2vxaG1rleZeXyY5yHh9LpVoqCHnp0b0+9YZA6blrjN/08hHORM7xT4KSS7zXXQ2NRhWqtAqlCZvNLLWzzc1WClz5I8URLaU9mNODvH5HVzCIJuLb8Zeo/QvUHlqUtJZ5gYds2xQ1aKnR6KKCsMFr/DPVh7d1qcehkOF/t4MZz1rWswcw8DuZrXCPlyfWyBaxWimbtg6ijpCumwcV2BubXpVpOD1CrZMYDJzFMmMKQFXNalC0R1QNU+P9cvGQzOFwbIHA4Lhb4GgCp2STzYwjoQPlc5ymZyGdDckERvd3nm7CH9pCSpo/YhrDuzcxOp6ZJpBN82lvr4a0spKp75SmQR4zfkuwkC+1RghZLsJNfRWm9nSXja29IvKRWDGdzDcTqV2+qu+tcngi+k1dIjfDTRCK/AYiOBfZXuLlka2/A5ScPLL17EJyAjfBHWghSWJwWqDC4MQvLcXMSEe3nEtoA4L91LqDka1izfEhQ0bpiOckIGPRH0NkTu5MyYgMNsQUyBorplOxCRp2M3Q7FBFzcabiPI8HoS5qbZKg3X0Vm1sL/J/S21p+SbL+l9E7ZrxrL7cPdXYnZxwfM0hHBrlpVAJGIed0qvSEAoQUpvITh7UM6v/+kOss6krqt0xaZWRifR+ZmkJ5YadQLKiEW1dTmBH+0mFkkW2URQC/H2AA41rZurYDjtlgQKlI/GrdqulAlzCMWm1/2efLwEnF82d3a7CTOnyWhsawSTrpvtq8sIDCNeb52sI/zCNbgfP27rT4BJh5ikPiiEuwb4D1DrA/al8PelscQJ9TXminSnfbHkfh9DubyYbYtZGkdnCgrg5WcwvAAqtGVsckHIUhqI+wEX/EWM1G5FK5XCgLPtz7gYFU6uaMWicqFvV/PHXnqy/NnutCR+p+Vc/pkZGDg9ghaasggYmDRrcwlelk3ED/fjytrayuCtCLvAZ82A/3i1RTJKsh3iF6TG4BnbVaMSE/srMtFZVvvXx7fDpTSEahSyxYhPaMqlmjnpcvbOZFhCr7JIH6O1hQxVhqpqGGxCexw6Mkf5smzWGNpzdJJRuqmo7udncmfcCYqd1fizWeTiZnVjRUFo9MB8CYT7qpOritnTtfVVR8e9/qLg0s2p6qPG9Vk2sQ8rAxOxD0EREDEcb6djBPtfnK2DyotJTNDA0zSQaTCzGr6cSbPUUzSGBwWoEpiKxL8+AiEzEl5cxmlgmJKVyaB38jZqTukWETrbecebZ/KBIvyHhZwvkDdVWvl0wpQEIOqLQSwjA4wVoSCD3i4ojXMswqxV425e8hT23jzby04b0pl0jgWsRuPSXot+i0RquWkpuivNZCmwOLVmemfVnwXcrBGAr9IsYK/exO+gUtYSx8M9yxSw3R/6ikgibaI7RAuzwtzxmbnMyVbGcvuVwJEuR0h2XSvPafVV8kcqwUz/GgT3DIX5iHhq/2rMETvJHtqb+cTbLsAmlsumJiQhg9KhCh0808q9PLO4YKBEgdeRNSHXzsNSeW07DGHsQQLVw+2gby2htUkMEt+saj9BoyGvzz05nneiOhD/u0cd/ArcZAghJXqVrZYio0Hc0WWE4xTLbkWEkCZ1CBw6yHHOq7Ik23nsxmQQDKU2lPkphyNluMToWz9Ci3+9mevtFgRWzphqaq8l8kRlQqDW0SvVqSnHx/T1pZL4Zhx3fUlLT2XpvG9jUad88cOUrHaGauuU1GqpLHfxWPNr+f7bTTlWmVJ4iBCnfcXbRqfnK/7NrvBfWylxvdHc8JKBdqWtVtkq8posA3vZDE9rFh15nRjXwDcogH6b5r0C/quG9QxTQaCA/Edu5ZYHN0y0K1/7rAjd7gqvhd7IrwvGDw1zn/3765A7r35rc3esPWyJRxVtNYVw2K1+PEgI6MplOI+YPY0E0uZaSLq+Yjkc7E6voEVuNnV5U/HfvvmxLv7NU8SN7+XFkfNIxVw9tNBHd9cvIK2ugaLYHPzCjPykB1wefG6JrhCDRFmrik/h9/jFBVoILqO6oOVGvdKGzr4vhKS5lxphU7z6NEHXTK+ZW3Ctr3I2MXKGoxJRS8xiZDnuTaSqXO9jiyvDQRDl2jwtxfq6808RC0n1qXNpGnZDvDiFYcMTm/HIXqX8cmrjG3ka5Y9M6QCfk7057NVrfE4Ye/SsYLR34zobMWm21LV/R73WC7Be4/kTkv1LGVmY42PvdssFT3lOvS5dzgTtf8o33hjCZ2BGuCLpSh7HEOOF0KGL0ZKpyvRGiFjRL1bng5eZp6rowUUupX04G5sR/o9aIx/cKtBzZBGMKren4eW2POBIjDz4qBjzyK60tlW5qd79T4Gafu21lTNarp+Vsm3UUFwUtjxAodR57TW3k+bteJn9YO66iQ/mx756JFEJz5PnGFTnViXqnUt8fB0s/9Pgzc4E7NWqNEEmSQven6MQSKAfYiOzNjv8yKllyxo4iURYXU2+/T28DuHDt3xr506bO7efdrJeMX9ipyt2piPdrM9E75I3IzF9UenZv08URtJBqiaCEfpHlSsZ0mpM+EbrFJvAqHacTOyTWJ4kTbE51rqeyf/u9of4pN130etxNwEQAhAq98Jq1y13aXRWdY/A0AgH9N0acAAOZWvfHs4H9/Wj7Z8h8AwE9uAgAAFwHP+6aPgH9w/X+z851ncwzPoHPfkv50tg2lxX6ZZS0nqViXxHMIxaMkg8qMQNRQNuVy/eqrXokSaUCtwH5rfhpzDyIKJ7oOtupy5B4LW8zujNPN7MxzG83eJS2/AWyIrVRIQMkk9MAp/fTCFrnijB7XmaeVaStkIJcBCEfUI1AOt5a4DG8od9VcMHPRw4ghxqWxNHcwto2/vLx6gIQYxchI+VjpOtBYsNZArs11tAlZS3jTn9IyJl4eXEYm6Qwb7uro5fmcwGEmlLvYni+g5kU4IwGiTvrNJKCBFNJ3RapGdC+bMwR5YxWsIwYNdIqBfmvbLulG9VgqC5lEEer7kbUcUSuC9sGdtOVJVJul0WO45Cs6dUfQ6v7USMFY91Nt+s7zktYjglh6P2X+cKqtVu1lrUOs42BuwzUK82j8EQWizc/8f1QRPcRQSfB3T+Es86gMJ4+UmKXT2CNlweWtLeDgwvhAT4StJGZhBGL7iF3olsbkbAw8qMFR3YbYCgCIP9t6J0nAvsDe0dOPuSLgZQ3m6xHzPdtG/QQBdztguwgbYViGvANkYSZCgIBFE005VJUAPJxxu4lwG2hilNPDxNlWNU7Im0Ta+W2ScDOyQZlD6vdAAMMohkkDSkglnWvDZAA7x0xlMEugyQRq+JgsakyliiwbpiozBFNNxG+TTfcXUx3uJ6aGhPft0BQEkwN5wtRCus3UZuuZOjAOpi4Va+qJoP52ubBrAXBSWlJEilZeRMK4KKO0lLycmKysCOp9cInxo6Lic2E1lKbkAwaRnk40HA0ucjLzYbyvXUzSuB3Op4Aa6fAiBcl9MJPavNERuzyZ7LvIYLwvxrL7bn5quKzBsXCEvceluMUAC6P2jBwRphXpLGJ9f6QJjgsibBcxpOlkRiU4tZUr4eUyMnZtIsTAuj52axdzMsDGudeZr0r5Jp5SCN84LdvZ4U04WNjYjM8mpqlcWFKUNlGraFjGFJRR6S4Wb9KpUnnUeLazYAhD1OZNJp2CXipmduWUfPvMrV3W8Z9wfncYa375/V4AdJ169OHg4scDQUVD5z3zN+OpXXre/e+dSuust8FGqzbZbIutttkBgUShMVgcnkAkkSmQOJVGZzBZEpJsKWkZWTl5QwqKSoaVVVTV1DU0tTjaOrp6MDgFgpKKmoaWjp6BkYmZhZWNnYOTi5uHl49fwKCgkLCIIVHDYkaMGjNuQlxCUkpaxqSsnLyCopIp02bMmjNvwaIlEM89iDChiqrpzDAt22lYNlaMbSl8/J+MlMby+Yl08EOZJdZVSlgkBI+Ab+agYxuipbi1SWWiV1AD1VA0MHMxrhCs1AalhBE4SUnWplGVKMcQs0UduSNIVKU1MfxXvND2Wf6/jr9evYYH9ePc5ZbgCsEj2JsJxUIIvACpzKFXQloVQjQwcymuEKzUGae5CSNwkpKsTaMqUY4hZos6ckeQqEprwtEN7cJceZhJMmkmzxSZUoZ8H9bvS0qmmqlnmPelnCkyeaaUKWdqmUqGMW5SfbjrAb5G5bfX6u2KBTftdfcvjX3NOiby4x8m6Mv2/2ILv5/TAid/1Yv3sclfxjYle5Dz3HT060YNv//RTs2jZPv9tbHJM36ewPxLjnbGluVv35mKVdvu0jq2icrn/3NJLyFdQtck5dY+YfImWj250V1LeKNqjahYK91lay9t2MxByYBR1I2C1jKkfXTIUoWRiwdZhCCDrhhpJUgpMsOWDU0wVFHEo4FYQ+Go3Co5wsZtl5yUvO1K4mLxvNAL/5VuPXb9zSSnys07nKpelpfRNIeUpgiZIyJiIyyorjUqTkRvvAwys2kNmbj9kJ7bDrEmQrZE3NomXTFqRBdxtQq96hBEbIW9znbPS8RvQS+DFtd1rUVXI/YsuiFukSFDhCI2bEG6ZpROqFcvRe45gGeLFyrReZM+Du7Rty21jd1Kaz65B6U+Nra7NZ7Vdw9JPyWEXPR77kUo+6N9WVmgd0jQJg3y3IfD2hJxL4a5f3hgEPAWPAc9MobkSnnoCVkIocdjd4p78bKvs2We0Oc+eABlkLUAAA=="}},"time_used":76,"timings":{"blocked":24,"dns":0,"connect":0,"send":0,"wait":30,"receive":22,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WdhyyTn89ddpROi.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:52.078Z","timestamp":1785161272078,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WdhyyTn89ddpROi.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://elxr24.shop\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 70532\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 13:16:19 GMT\r\nexpires: Thu, 22 Jul 2027 13:16:19 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 04 Sep 2025 17:10:58 GMT\r\ncontent-type: font/woff2\r\nage: 435093\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":70532,"size_decoded":71345,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 70532, version 1.0","md5":"a3538ea24dbf115d688964fc374db38c","sha1":"d5ff95b327b6cb2371a0f0cfff9092d2f7f6f58f","sha256":"545f27e4a3f64bafcffd2912b4d9e4d8b89fb7a87f5d257fdb4eae3c0eb9e224","sha512":"cd0d910665c070475cbe4b4e0830be5b463d3ff2537ca174e875ceb610f0f0cc627ff33dbbc95fa3e308e8cee0d0fd697e85e1244aa6023ee3113b3d10815fbe","ssdeep":"1536:1+9A/N3bmPFNtCqzOzD9khgUkon9FoooVdjlV+It4UEct:1+oBINnCzXUv/obdjlVfyM","tlshash":"5d6312976c22c87f804a02f99ebee1b487733021192a1b1370aff35654d46684afef70","first_seen":"2025-09-05T03:00:03.770574Z","last_seen":"2026-08-15T12:51:39.624794Z","times_seen":13139,"resource_available":false,"data":"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"}},"time_used":79,"timings":{"blocked":23,"dns":0,"connect":0,"send":0,"wait":18,"receive":38,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/assets/css/main.css","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:51.929Z","timestamp":1785161271929,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"elxr24.cc","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 03 Jun 2026 07:35:05 GMT","end":"Tue, 01 Sep 2026 07:35:04 GMT"},"fingerprint":{"sha1":"12:3F:CB:7D:FB:C0:91:E3:23:CA:98:8C:CB:80:67:4C:9D:50:FF:C4","sha256":"DD:B7:2F:32:FE:FB:45:B3:5D:1F:1F:45:3E:4F:FD:35:65:70:79:E3:29:04:54:1D:C3:AC:CC:DC:56:40:57:6F"}}},"request":{"raw":"GET /assets/css/main.css HTTP/1.1\r\nHost: elxr24.shop\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://elxr24.shop/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nServer: nginx/1.22.1\r\nDate: Mon, 27 Jul 2026 14:07:51 GMT\r\nContent-Type: text/css\r\nContent-Length: 7795\r\nLast-Modified: Sun, 05 Oct 2025 06:35:35 GMT\r\nConnection: keep-alive\r\nETag: \"68e211b7-1e73\"\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.22.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":7795,"size_decoded":8034,"mime_type":"text/css","magic":"ASCII text, with very long lines (7795), with no line terminators","md5":"4f20225662a1024c5fbf6c2c1923718d","sha1":"166e369d283dddd34d83a4ffa30eaaf77482da9a","sha256":"3ed0b46158f27733da85967681dd02dcd1704e8d0a5ce6feaa33b06a103d231e","sha512":"3837c9fa06d2915279396ea50eca49812dd8b3113022c43813e9604aca81141832ab1887e2adc4b1e3c1c15acb5215c1d71b7b2e2bdbb290f11cc8f2657c76e8","ssdeep":"192:tYWa6dB78isNIZun0t/cZy9tx9ZTcMV+gnmjFV:qJiwzNsNvc/gn2FV","tlshash":"4ff1a83222741428f927d9b572909ae97048cb13e19b6bbdf0566677c6c30b72bf1f09","first_seen":"2026-07-27T10:31:02.530266Z","last_seen":"2026-07-27T14:08:21.634596Z","times_seen":2,"resource_available":false,"data":"aHRtbCxib2R5LGRpdixzcGFuLGFwcGxldCxvYmplY3QsaWZyYW1lLGgxLGgyLGgzLGg0LGg1LGg2LHAsYmxvY2txdW90ZSxwcmUsYSxhYmJyLGFjcm9ueW0sYWRkcmVzcyxiaWcsY2l0ZSxjb2RlLGRlbCxkZm4sZW0saW1nLGlucyxrYmQscSxzLHNhbXAsc21hbGwsc3RyaWtlLHN0cm9uZyxzdWIsc3VwLHR0LHZhcixiLHUsaSxjZW50ZXIsZGwsZHQsZGQsb2wsdWwsbGksZmllbGRzZXQsZm9ybSxsYWJlbCxsZWdlbmQsdGFibGUsY2FwdGlvbix0Ym9keSx0Zm9vdCx0aGVhZCx0cix0aCx0ZCxhcnRpY2xlLGFzaWRlLGNhbnZhcyxkZXRhaWxzLGVtYmVkLGZpZ3VyZSxmaWdjYXB0aW9uLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1lbnUsbmF2LG91dHB1dCxydWJ5LHNlY3Rpb24sc3VtbWFyeSx0aW1lLG1hcmssYXVkaW8sdmlkZW97bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2ZvbnQtc2l6ZToxMDAlO2ZvbnQ6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1hcnRpY2xlLGFzaWRlLGRldGFpbHMsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGhlYWRlcixoZ3JvdXAsbWVudSxuYXYsc2VjdGlvbntkaXNwbGF5OmJsb2NrfWJvZHl7bGluZS1oZWlnaHQ6MX1vbCx1bHtsaXN0LXN0eWxlOm5vbmV9YmxvY2txdW90ZSxxe3F1b3Rlczpub25lfWJsb2NrcXVvdGU6YmVmb3JlLGJsb2NrcXVvdGU6YWZ0ZXIscTpiZWZvcmUscTphZnRlcntjb250ZW50OiIiO2NvbnRlbnQ6bm9uZX10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLXNwYWNpbmc6MH0qLCo6OmFmdGVyLCo6OmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowO21hcmdpbjowfWJvZHl7Zm9udC1mYW1pbHk6Ik1vbnRzZXJyYXQiLHNhbnMtc2VyaWYsc3lzdGVtLXVpO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOm5vcm1hbDtjb2xvcjojZmZmO2JhY2tncm91bmQ6dXJsKC4uL2ltZy9iYWNrZ3JvdW5kLmpwZykgY2VudGVyIGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6Y292ZXJ9aW1ne2Rpc3BsYXk6YmxvY2t9YnV0dG9ue2N1cnNvcjpwb2ludGVyfWlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbixpbnB1dFt0eXBlPW51bWJlcl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9aW5wdXRbdHlwZT1udW1iZXJdey1tb3otYXBwZWFyYW5jZTp0ZXh0ZmllbGR9LndyYXBwZXJ7bWluLWhlaWdodDoxMDB2aDtvdmVyZmxvdzpoaWRkZW47bWF4LXdpZHRoOjkwMHB4O3dpZHRoOjEwMCU7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjAgMTBweH0uaGVyb3twYWRkaW5nOjUwcHggMH0uaGVyb19fbG9nb3ttYXJnaW46MCBhdXRvIDUwcHggYXV0b30uaGVyb19fdGl0bGV7Zm9udC1mYW1pbHk6IkRheXMgT25lIjtmb250LXNpemU6MzZweDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojY2NjO3RleHQtc2hhZG93OjJweCAycHggNnB4IHJnYmEoMCwwLDAsLjUpO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTttYXgtd2lkdGg6NTQwcHg7d2lkdGg6MTAwJTttYXJnaW46MCBhdXRvIDI1cHggYXV0bzt0ZXh0LWFsaWduOmNlbnRlcn0uaGVyb19fdGV4dHtmb250LXNpemU6MjBweDtsaW5lLWhlaWdodDoxLjU7Y29sb3I6I2YwZjBmMDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjUwcHh9Lmhlcm9fX2xpbmtze2Rpc3BsYXk6ZmxleDt3aWR0aDoxMDAlO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoyNXB4fS5oZXJvX19saW5rcyBhe2hlaWdodDo2MHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojZjBmMGYwO291dGxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MjRweDtwYWRkaW5nOjBweCA1MHB4O2JvcmRlci1yYWRpdXM6MzBweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgyNzBkZWcsICNhMTdiYWQgMCUsICNhYzIzY2UgNTAlLCAjYTE3YmFkIDEwMCUpfS5oZXJvX19saW5rcyBhOmhvdmVye2NvbG9yOiMyYTJhMmE7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNhOTM2YzYgLTEzJSwgI2QyZDJkMiA1MC4zMSUsICNhOTNhYzYgMTE5LjMxJSl9LmJhbm5lcntwYWRkaW5nOjUwcHggMCAxMDBweCAwfS5iYW5uZXIgaW1ne2JvcmRlci1yYWRpdXM6MTJweDt3aWR0aDoxMDAlfS5jYWxjdWxhdG9ye2JhY2tncm91bmQ6cmdiYSgzMSwxMywyNSwuNzUpO2JvcmRlci1yYWRpdXM6MjBweDtwYWRkaW5nOjUwcHggMTBweDttYXJnaW4tYm90dG9tOjEwMHB4fS5jYWxjdWxhdG9yX19pbm5lcnttYXgtd2lkdGg6NzIwcHg7d2lkdGg6MTAwJTttYXJnaW46MCBhdXRvfS5jYWxjdWxhdG9yX190aXRsZXtmb250LXNpemU6MzZweDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojY2NjO3RleHQtc2hhZG93OjJweCAycHggNnB4IHJnYmEoMCwwLDAsLjUpO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTttYXJnaW46MCBhdXRvIDI1cHggYXV0bzt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo3MDB9LmNhbGN1bGF0b3JfX2dyb3Vwe21hcmdpbi1ib3R0b206MjVweH0uY2FsY3VsYXRvcl9fbGFiZWx7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MjBweDttYXJnaW4tYm90dG9tOjE1cHh9LmNhbGN1bGF0b3JfX2dyb3VwLXJvd3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXA7Z2FwOjE1cHg7d2lkdGg6MTAwJX0uY2FsY3VsYXRvcl9fYnRue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO2JhY2tncm91bmQ6IzczMTg3Mjtib3JkZXI6MnB4IHNvbGlkICMzMDE5MTk7Y29sb3I6I2YwZjBmMDtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3MDA7Zm9udC1mYW1pbHk6aW5oZXJpdDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjIwcHg7cGFkZGluZzowIDI1cHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDEwMG1zIGVhc2UtaW4tb3V0fS5jYWxjdWxhdG9yX19idG46aG92ZXJ7YmFja2dyb3VuZDojOTkzYzk3fS5jYWxjdWxhdG9yX19idG4uYWN0aXZle2JhY2tncm91bmQ6IzNkMTAyOTtib3JkZXItY29sb3I6IzE1MTUxNX0uY2FsY3VsYXRvcl9fZ3JvdXAtaW5wdXR7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21pbi13aWR0aDowcHg7YmFja2dyb3VuZDpyZ2JhKDY4LDUzLDYyLC43NSk7Ym9yZGVyLXJhZGl1czo0cHg7Y29sb3I6I2YwZjBmMDtmb250LWZhbWlseTppbmhlcml0O2hlaWdodDo0MHB4O3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6MTBweDtmb250LXNpemU6MjBweDtsaW5lLWhlaWdodDoxO2JvcmRlcjpub25lO291dGxpbmU6bm9uZX0uY2FsY3VsYXRvcl9fc3dpdGNoLXJvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxNXB4fS5jYWxjdWxhdG9yX19zd2l0Y2gtbGFiZWx7Zm9udC1zaXplOjIwcHh9LmNhbGN1bGF0b3JfX3N1Ym1pdHttYXJnaW46NTBweCAwO3dpZHRoOjEwMCU7ZGlzcGxheTpibG9jaztib3JkZXItcmFkaXVzOjMwcHg7Y29sb3I6I2YwZjBmMDtoZWlnaHQ6NjBweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDI3MGRlZywgI2ExN2JhZCAwJSwgI2FjMjNjZSA1MCUsICNhMTdiYWQgMTAwJSl9LmNhbGN1bGF0b3JfX3N1Ym1pdDpob3Zlcntjb2xvcjojMmEyYTJhO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCAjYTkzNmM2IC0xMyUsICNkMmQyZDIgNTAuMzElLCAjYTkzYWM2IDExOS4zMSUpfS5jYWxjdWxhdG9yX19yZXN1bHR7Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246Y2VudGVyfS5zd2l0Y2h7aGVpZ2h0OjQwcHg7d2lkdGg6ODBweH0uc3dpdGNoPmlucHV0e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTk5OTlweDt3aWR0aDoxcHg7aGVpZ2h0OjFweDtvcGFjaXR5OjA7dmlzaWJpbGl0eTpoaWRkZW59LnN3aXRjaD5pbnB1dDpjaGVja2VkfmRpdntiYWNrZ3JvdW5kOiM5OTNjOTd9LnN3aXRjaD5pbnB1dDpjaGVja2VkfmRpdjo6YWZ0ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNDBweCk7YmFja2dyb3VuZDojZmZmfS5zd2l0Y2g+ZGl2e3RyYW5zaXRpb246YmFja2dyb3VuZCAxMDBtcyBlYXNlLWluLW91dDtkaXNwbGF5OmJsb2NrO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQ6cmdiYSg2OCw1Myw2MiwuNzUpO2hlaWdodDo0MHB4O3dpZHRoOjgwcHg7Ym9yZGVyLXJhZGl1czo5OTlweH0uc3dpdGNoPmRpdjo6YWZ0ZXJ7ZGlzcGxheTpibG9jaztjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDojMDAwO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDBkZWcsIHJnYmEoMCwgMCwgMCwgMC4yKSwgcmdiYSgwLCAwLCAwLCAwLjIpKSxsaW5lYXItZ3JhZGllbnQoMTI4Ljc2ZGVnLCAjZmZmZmZmIDUxLjA5JSwgIzk5OTk5OSAxMDYuOCUpO3RyYW5zaXRpb246dHJhbnNmb3JtIDEwMG1zIGVhc2UtaW4tb3V0fS50ZXN0e2JhY2tncm91bmQ6cmdiYSgzMSwxMywyNSwuNzUpO2JvcmRlci1yYWRpdXM6MjBweDtwYWRkaW5nOjUwcHggMTBweDttYXJnaW4tYm90dG9tOjEwMHB4fS50ZXN0X19pbm5lcnttYXgtd2lkdGg6NDgwcHg7d2lkdGg6MTAwJTttYXJnaW46MCBhdXRvfS50ZXN0X190aXRsZXtmb250LXNpemU6MzZweDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojZjBmMGYwO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTttYXJnaW46MCBhdXRvIDEwcHggYXV0bzt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo3MDB9LnRlc3RfX3RleHR7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjE4cHg7Y29sb3I6I2YwZjBmMDttYXJnaW4tYm90dG9tOjI1cHh9LnRlc3RfX3F1ZXN0aW9ue3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojZjBmMGYwO21hcmdpbi1ib3R0b206MjVweH0udGVzdF9fcXVlc3Rpb24+c3Bhbntjb2xvcjojYWMyM2NlfS50ZXN0X19hbnN3ZXJze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjE1cHh9LnRlc3RfX2Fuc3dlcnM+YnV0dG9ue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO2JhY2tncm91bmQ6IzczMTg3Mjtib3JkZXI6MnB4IHNvbGlkICMzMDE5MTk7Y29sb3I6I2YwZjBmMDtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3MDA7Zm9udC1mYW1pbHk6aW5oZXJpdDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjIwcHg7cGFkZGluZzowIDI1cHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDEwMG1zIGVhc2UtaW4tb3V0fS50ZXN0X19hbnN3ZXJzPmJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOiM5OTNjOTd9LnRlc3RfX3Jlc3VsdHtmb250LXNpemU6MzZweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiNhYzIzY2U7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjI1cHh9LmZvb3RlcnttYXJnaW46MTAwcHggMH0uZm9vdGVyX190aXRsZXtmb250LXNpemU6MzZweDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojY2NjO3RleHQtc2hhZG93OjJweCAycHggNnB4IHJnYmEoMCwwLDAsLjUpO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTttYXJnaW46MCBhdXRvIDE1cHggYXV0bzt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo3MDB9LmZvb3Rlcl9fdGV4dHtmb250LXNpemU6MjBweDtjb2xvcjojZjBmMGYwO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbi1ib3R0b206NTBweH0uZm9vdGVyX19idG57aGVpZ2h0OjYwcHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiNmMGYwZjA7b3V0bGluZTpub25lO3dpZHRoOi1tb3otbWF4LWNvbnRlbnQ7d2lkdGg6bWF4LWNvbnRlbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjI0cHg7cGFkZGluZzowcHggMTAwcHg7Ym9yZGVyLXJhZGl1czozMHB4O21hcmdpbjowIGF1dG87YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCAjYTE3YmFkIDAlLCAjYWMyM2NlIDUwJSwgI2ExN2JhZCAxMDAlKX0uZm9vdGVyX19idG46aG92ZXJ7Y29sb3I6IzJhMmEyYTtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZywgI2E5MzZjNiAtMTMlLCAjZDJkMmQyIDUwLjMxJSwgI2E5M2FjNiAxMTkuMzElKX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjcuOThweCl7Lmhlcm9fX3RpdGxle2ZvbnQtc2l6ZToyNHB4fS5oZXJvX190ZXh0e2ZvbnQtc2l6ZToxNHB4fS5oZXJvX19saW5rc3tnYXA6MTBweH0uaGVyb19fbGlua3MgYXtwYWRkaW5nOjAgMTBweDtoZWlnaHQ6NDBweDtmb250LXNpemU6MTRweDt3aWR0aDpjYWxjKDMzLjMzMzMzMzMzMzMlIC0gNi42NjY2NjY2NjY3cHgpfS5jYWxjdWxhdG9yX190aXRsZXtmb250LXNpemU6MjRweH0uY2FsY3VsYXRvcl9fbGFiZWx7Zm9udC1zaXplOjE2cHg7bWFyZ2luLWJvdHRvbToxMHB4fS5jYWxjdWxhdG9yX19ncm91cC1yb3d7Z2FwOjEwcHh9LmNhbGN1bGF0b3JfX2J0bntmb250LXNpemU6MTRweDtoZWlnaHQ6NDBweDtwYWRkaW5nOjAgMTVweDtib3JkZXItd2lkdGg6MXB4fS5jYWxjdWxhdG9yX19ncm91cC1pbnB1dHtmb250LXNpemU6MTRweH0uY2FsY3VsYXRvcl9fc3dpdGNoLWxhYmVse2ZvbnQtc2l6ZToxNHB4fS5jYWxjdWxhdG9yX19zdWJtaXR7aGVpZ2h0OjQwcHg7Zm9udC1zaXplOjE0cHh9LmNhbGN1bGF0b3JfX3Jlc3VsdHtmb250LXNpemU6MTZweH0uc3dpdGNoPmlucHV0OmNoZWNrZWR+ZGl2OjphZnRlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWCgzMHB4KX0uc3dpdGNoPmRpdntoZWlnaHQ6MzBweDt3aWR0aDo2MHB4fS5zd2l0Y2g+ZGl2OjphZnRlcnt3aWR0aDozMHB4O2hlaWdodDozMHB4fS50ZXN0X190aXRsZXtmb250LXNpemU6MjRweH0udGVzdF9fdGV4dHtmb250LXNpemU6MTRweH0udGVzdF9fcXVlc3Rpb257Zm9udC1zaXplOjE0cHh9LnRlc3RfX2Fuc3dlcnM+YnV0dG9ue2hlaWdodDo0MHB4O2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmc6MCAxNXB4fS50ZXN0X19yZXN1bHR7Zm9udC1zaXplOjI0cHh9LmZvb3Rlcl9fdGl0bGV7Zm9udC1zaXplOjI0cHh9LmZvb3Rlcl9fdGV4dHtmb250LXNpemU6MTRweH0uZm9vdGVyX19idG57Zm9udC1zaXplOjE0cHg7aGVpZ2h0OjQwcHg7cGFkZGluZzowIDUwcHh9fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM5MHB4KXsuY2FsY3VsYXRvcl9fdGl0bGV7Zm9udC1zaXplOjIwcHh9fS8qIyBzb3VyY2VNYXBwaW5nVVJMPW1haW4uY3NzLm1hcCAqLw=="}},"time_used":16,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":16,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/assets/js/app.js","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:51.932Z","timestamp":1785161271932,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"elxr24.cc","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 03 Jun 2026 07:35:05 GMT","end":"Tue, 01 Sep 2026 07:35:04 GMT"},"fingerprint":{"sha1":"12:3F:CB:7D:FB:C0:91:E3:23:CA:98:8C:CB:80:67:4C:9D:50:FF:C4","sha256":"DD:B7:2F:32:FE:FB:45:B3:5D:1F:1F:45:3E:4F:FD:35:65:70:79:E3:29:04:54:1D:C3:AC:CC:DC:56:40:57:6F"}}},"request":{"raw":"GET /assets/js/app.js HTTP/1.1\r\nHost: elxr24.shop\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://elxr24.shop/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nServer: nginx/1.22.1\r\nDate: Mon, 27 Jul 2026 14:07:51 GMT\r\nContent-Type: application/javascript\r\nContent-Length: 8483\r\nLast-Modified: Sat, 04 Oct 2025 15:54:06 GMT\r\nConnection: keep-alive\r\nETag: \"68e1431e-2123\"\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.22.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":8483,"size_decoded":8736,"mime_type":"application/javascript","magic":"JavaScript source, Unicode text, UTF-8 text","md5":"6ae26e65b729f85b89ed58490bffe876","sha1":"87b8e236cf17573e2787f27a43e530376d1423ba","sha256":"e495a71a30086694129d8cf8e7dc991d2861c12134962b91a8af6c9c24c864cc","sha512":"8847b27f061616c33e7d47a1c16770c8944d02278f0a976b725451c6bc6653958f02866236d99b5b43b32b1be014c5f9b9d30d84412ca38978d9262e2092e0b4","ssdeep":"96:zXy+f7ooPPlZeBefGsezXkugz7vYcofZeBefGsYNugz7vYwofZeBefGsIl9WoYUU:B4sezXkpf5sYNpf/smQ9sXXd73yiG","tlshash":"0d02e060713b35317253aaafaf57190c139c206b3202ed5db7ada9c13fc1a30a3b5d68","first_seen":"2026-07-27T10:31:02.539338Z","last_seen":"2026-07-27T14:08:21.635448Z","times_seen":2,"resource_available":true,"data":"KGZ1bmN0aW9uICgkKSB7CiAgJCgnLmNhbGN1bGF0b3JfX2dyb3VwLXJvd1tkYXRhLWdyb3VwXScpLmVhY2goZnVuY3Rpb24gKCkgewogICAgY29uc3QgZ3JvdXAgPSAkKHRoaXMpOwogICAgJCh0aGlzKQogICAgICAuZmluZCgnLmNhbGN1bGF0b3JfX2J0bicpCiAgICAgIC5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgZ3JvdXAuZmluZCgnLmNhbGN1bGF0b3JfX2J0bi5hY3RpdmUnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgZ3JvdXAudHJpZ2dlcignY2hhbmdlJywgeyB2YWx1ZTogJCh0aGlzKS5kYXRhKCd2YWx1ZScpIH0pOwogICAgICB9KTsKICB9KTsKICAkKCdbZGF0YS1ncm91cD13b3JrXScpLm9uKCdjaGFuZ2UnLCAoXywgZGF0YSkgPT4gewogICAgJCgnLmNhbGN1bGF0b3JfX2dyb3VwLWZpZWxkcycpLmhpZGUoKTsKICAgIGlmIChkYXRhLnZhbHVlID09IDEpICQoJyNncm91cDEnKS5zaG93KCk7CiAgICBlbHNlIGlmIChkYXRhLnZhbHVlID09IDIpICQoJyNncm91cDInKS5zaG93KCk7CiAgICBlbHNlIGlmIChkYXRhLnZhbHVlID09IDMpICQoJyNncm91cDMnKS5zaG93KCk7CiAgICBlbHNlIGlmIChkYXRhLnZhbHVlID09IDQpICQoJyNncm91cDQnKS5zaG93KCk7CgogICAgJCgnLmNhbGN1bGF0b3JfX3Jlc3VsdCcpLmh0bWwoJ9CS0LDRiCDQtNC+0YXQvtC0OiAwJm5ic3A74oK9Jyk7CiAgfSk7CiAgJCgnI2dyb3VwMSBbZGF0YS1ncm91cD1jaXR5XScpLm9uKCdjaGFuZ2UnLCAoXywgZGF0YSkgPT4gewogICAgaWYgKGRhdGEudmFsdWUgPT0gMSkgJCgnI2dyb3VwMSBpbnB1dFtuYW1lPWNhb10nKS5wYXJlbnQoKS5wYXJlbnQoKS5zaG93KCk7CiAgICBlbHNlICQoJyNncm91cDEgaW5wdXRbbmFtZT1jYW9dJykucGFyZW50KCkucGFyZW50KCkuaGlkZSgpOwogIH0pOwoKICBjb25zdCBjYWxjdWxhdGVDb3VyaWVyID0gKCkgPT4gewogICAgY29uc3QgY2l0eSA9ICskKCcjZ3JvdXAxIFtkYXRhLWdyb3VwPSJjaXR5Il0gLmNhbGN1bGF0b3JfX2J0bi5hY3RpdmUnKS5kYXRhKAogICAgICAndmFsdWUnCiAgICApOwogICAgY29uc3QgdHlwZSA9ICskKCcjZ3JvdXAxIFtkYXRhLWdyb3VwPSJ0eXBlIl0gLmNhbGN1bGF0b3JfX2J0bi5hY3RpdmUnKS5kYXRhKAogICAgICAndmFsdWUnCiAgICApOwogICAgY29uc3Qgd2VpZ2h0ID0gKyQoCiAgICAgICcjZ3JvdXAxIFtkYXRhLWdyb3VwPSJ3ZWlnaHQiXSAuY2FsY3VsYXRvcl9fYnRuLmFjdGl2ZScKICAgICkuZGF0YSgndmFsdWUnKTsKICAgIGNvbnN0IGRheXMgPSArJCgnI2dyb3VwMSBpbnB1dFtuYW1lPXdvcmstZGF5c10nKS52YWwoKTsKICAgIGNvbnN0IG9yZGVycyA9ICskKCcjZ3JvdXAxIGlucHV0W25hbWU9b3JkZXJzXScpLnZhbCgpOwogICAgY29uc3QgaXNDQU8gPSAkKCcjZ3JvdXAxIGlucHV0W25hbWU9Y2FvXScpLnByb3AoJ2NoZWNrZWQnKTsKICAgIGNvbnN0IGlzUHJlbWl1bSA9ICQoJyNncm91cDEgaW5wdXRbbmFtZT1wcmVtaXVtXScpLnByb3AoJ2NoZWNrZWQnKTsKCiAgICBpZiAoIWNpdHkpIHJldHVybiBhbGVydCgn0JLRi9Cx0LXRgNC40YLQtSDQs9C+0YDQvtC0IScpOwogICAgaWYgKCF0eXBlKSByZXR1cm4gYWxlcnQoJ9CS0YvQsdC10YDQuNGC0LUg0YLQuNC/INC60LvQsNC00LAhJyk7CiAgICBpZiAoIXdlaWdodCkgcmV0dXJuIGFsZXJ0KCfQktGL0LHQtdGA0LjRgtC1INGE0LDRgdC+0LLQutGDIScpOwogICAgaWYgKGlzTmFOKGRheXMpIHx8IGRheXMgPCAxKQogICAgICByZXR1cm4gYWxlcnQoJ9Cd0LXQutC+0YDRgNC10LrRgtC90L7QtSDRh9C40YHQu9C+INGA0LDQsdC+0YfQuNGFINC00L3QtdC5IScpOwogICAgaWYgKGlzTmFOKG9yZGVycykgfHwgb3JkZXJzIDwgMSkKICAgICAgcmV0dXJuIGFsZXJ0KCfQndC10LrQvtGA0YDQtdC60YLQvdC+0LUg0YfQuNGB0LvQviDQt9Cw0LrQsNC30L7QsiEnKTsKICAgIGlmIChkYXlzID4gMzApCiAgICAgIHJldHVybiBhbGVydCgn0JrQvtC70LjRh9C10YHRgtCy0L4g0YDQsNCx0L7Rh9C40YUg0LTQvdC10Lkg0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINCx0L7Qu9GM0YjQtSAzMCEnKTsKCiAgICBsZXQgW2EsIGIsIGMsIGRdID0gWzAsIDAsIDAsIDBdOwoKICAgIGlmIChjaXR5ID09IDEpIHsKICAgICAgaWYgKHR5cGUgPT0gMSkgYSA9IDIwMDsKICAgICAgaWYgKHdlaWdodCA9PSAxKSBiID0gNzAwOwogICAgICBlbHNlIGlmICh3ZWlnaHQgPT0gMikgYiA9IDkwMDsKICAgICAgZWxzZSBpZiAod2VpZ2h0ID09IDMpIGIgPSAxMjAwOwogICAgICBlbHNlIGlmICh3ZWlnaHQgPT0gNCkgYiA9IDE0MDA7CiAgICAgIGlmIChpc0NBTykgZCA9IDE1MDsKICAgIH0gZWxzZSB7CiAgICAgIGlmICh0eXBlID09IDEpIGEgPSAyMDA7CiAgICAgIGlmICh3ZWlnaHQgPT0gMSkgYiA9IDcwMDsKICAgICAgZWxzZSBpZiAod2VpZ2h0ID09IDIpIGIgPSA5MDA7CiAgICAgIGVsc2UgaWYgKHdlaWdodCA9PSAzKSBiID0gMTEwMDsKICAgICAgZWxzZSBpZiAod2VpZ2h0ID09IDQpIGIgPSAxMzAwOwogICAgfQogICAgaWYgKGlzUHJlbWl1bSkgYyA9IDUwOwoKICAgIGNvbnNvbGUubG9nKHsgY2l0eSwgdHlwZSwgd2VpZ2h0LCBkYXlzLCBvcmRlcnMsIGlzUHJlbWl1bSB9KTsKICAgIGNvbnNvbGUubG9nKHsgYSwgYiwgYywgZCB9KTsKCiAgICBjb25zdCB0b3RhbE9yZGVycyA9IGRheXMgKiBvcmRlcnM7CiAgICBjb25zdCB0b3RhbE9yZGVyUHJpY2UgPSBhICsgYiArIGMgKyBkOwogICAgY29uc3QgcmVzdWx0ID0gdG90YWxPcmRlcnMgKiB0b3RhbE9yZGVyUHJpY2U7CiAgICBsZXQgYXdhcmQgPSAwOwogICAgaWYgKGlzUHJlbWl1bSkgewogICAgICBpZiAodG90YWxPcmRlcnMgPj0gNTAwKSBhd2FyZCA9IDI1MDAwOwogICAgICBlbHNlIGlmICh0b3RhbE9yZGVycyA+PSAzNTApIGF3YXJkID0gMTI1MDA7CiAgICAgIGVsc2UgaWYgKHRvdGFsT3JkZXJzID49IDIwMCkgYXdhcmQgPSA1MDAwOwogICAgICBlbHNlIGF3YXJkID0gMDsKICAgIH0KCiAgICBpZiAoYXdhcmQpCiAgICAgICQoJy5jYWxjdWxhdG9yX19yZXN1bHQnKS5odG1sKAogICAgICAgIGDQktCw0Ygg0LTQvtGF0L7QtDogJHtyZXN1bHQudG9GaXhlZCgwKX0mbmJzcDvigr0gKyDQn9GA0LXQvNC40Y8gJHthd2FyZH0mbmJzcDvigr1gCiAgICAgICk7CiAgICBlbHNlCiAgICAgICQoJy5jYWxjdWxhdG9yX19yZXN1bHQnKS5odG1sKGDQktCw0Ygg0LTQvtGF0L7QtDogJHtyZXN1bHQudG9GaXhlZCgwKX0mbmJzcDvigr1gKTsKICB9OwogIGNvbnN0IGNhbGN1bGF0ZU9wdENvdXJpZXIgPSAoKSA9PiB7CiAgICBjb25zdCBjaXR5ID0gKyQoJyNncm91cDIgW2RhdGEtZ3JvdXA9ImNpdHkiXSAuY2FsY3VsYXRvcl9fYnRuLmFjdGl2ZScpLmRhdGEoCiAgICAgICd2YWx1ZScKICAgICk7CiAgICBjb25zdCB3ZWlnaHQgPSArJCgKICAgICAgJyNncm91cDIgW2RhdGEtZ3JvdXA9IndlaWdodCJdIC5jYWxjdWxhdG9yX19idG4uYWN0aXZlJwogICAgKS5kYXRhKCd2YWx1ZScpOwogICAgY29uc3QgZGF5cyA9ICskKCcjZ3JvdXAyIGlucHV0W25hbWU9d29yay1kYXlzXScpLnZhbCgpOwogICAgY29uc3Qgb3JkZXJzID0gKyQoJyNncm91cDIgaW5wdXRbbmFtZT1vcmRlcnNdJykudmFsKCk7CiAgICBjb25zdCBpc1ByZW1pdW0gPSAkKCcjZ3JvdXAyIGlucHV0W25hbWU9cHJlbWl1bV0nKS5wcm9wKCdjaGVja2VkJyk7CgogICAgaWYgKCFjaXR5KSByZXR1cm4gYWxlcnQoJ9CS0YvQsdC10YDQuNGC0LUg0LPQvtGA0L7QtCEnKTsKICAgIGlmICghd2VpZ2h0KSByZXR1cm4gYWxlcnQoJ9CS0YvQsdC10YDQuNGC0LUg0YTQsNGB0L7QstC60YMhJyk7CiAgICBpZiAoaXNOYU4oZGF5cykgfHwgZGF5cyA8IDEpCiAgICAgIHJldHVybiBhbGVydCgn0J3QtdC60L7RgNGA0LXQutGC0L3QvtC1INGH0LjRgdC70L4g0YDQsNCx0L7Rh9C40YUg0LTQvdC10LkhJyk7CiAgICBpZiAoaXNOYU4ob3JkZXJzKSB8fCBvcmRlcnMgPCAxKQogICAgICByZXR1cm4gYWxlcnQoJ9Cd0LXQutC+0YDRgNC10LrRgtC90L7QtSDRh9C40YHQu9C+INC30LDQutCw0LfQvtCyIScpOwogICAgaWYgKGRheXMgPiAzMCkKICAgICAgcmV0dXJuIGFsZXJ0KCfQmtC+0LvQuNGH0LXRgdGC0LLQviDRgNCw0LHQvtGH0LjRhSDQtNC90LXQuSDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0LHQvtC70YzRiNC1IDMwIScpOwoKICAgIGxldCBbYSwgYl0gPSBbMCwgMF07CgogICAgaWYgKHdlaWdodCA9PSAxKSBhID0gMjAwMDsKICAgIGVsc2UgaWYgKHdlaWdodCA9PSAyKSBhID0gMjUwMDsKICAgIGVsc2UgaWYgKHdlaWdodCA9PSAzKSBhID0gMzAwMDsKICAgIGVsc2UgaWYgKHdlaWdodCA9PSA0KSBhID0gNDAwMDsKICAgIGVsc2UgaWYgKHdlaWdodCA9PSA1KSBhID0gNTAwMDsKICAgIGlmIChpc1ByZW1pdW0pIGIgPSA1MDsKCiAgICBjb25zb2xlLmxvZyh7IGNpdHksIHdlaWdodCwgZGF5cywgb3JkZXJzLCBpc1ByZW1pdW0gfSk7CiAgICBjb25zb2xlLmxvZyh7IGEsIGIgfSk7CgogICAgY29uc3QgdG90YWxPcmRlcnMgPSBkYXlzICogb3JkZXJzOwogICAgY29uc3QgdG90YWxPcmRlclByaWNlID0gYSArIGI7CiAgICBjb25zdCByZXN1bHQgPSB0b3RhbE9yZGVycyAqIHRvdGFsT3JkZXJQcmljZTsKICAgIGxldCBhd2FyZCA9IDA7CiAgICBpZiAoaXNQcmVtaXVtKSB7CiAgICAgIGlmICh0b3RhbE9yZGVycyA+PSA1MDApIGF3YXJkID0gMjUwMDA7CiAgICAgIGVsc2UgaWYgKHRvdGFsT3JkZXJzID49IDM1MCkgYXdhcmQgPSAxMjUwMDsKICAgICAgZWxzZSBpZiAodG90YWxPcmRlcnMgPj0gMjAwKSBhd2FyZCA9IDUwMDA7CiAgICAgIGVsc2UgYXdhcmQgPSAwOwogICAgfQoKICAgIGlmIChhd2FyZCkKICAgICAgJCgnLmNhbGN1bGF0b3JfX3Jlc3VsdCcpLmh0bWwoCiAgICAgICAgYNCS0LDRiCDQtNC+0YXQvtC0OiAke3Jlc3VsdC50b0ZpeGVkKDApfSZuYnNwO+KCvSArINCf0YDQtdC80LjRjyAke2F3YXJkfSZuYnNwO+KCvWAKICAgICAgKTsKICAgIGVsc2UKICAgICAgJCgnLmNhbGN1bGF0b3JfX3Jlc3VsdCcpLmh0bWwoYNCS0LDRiCDQtNC+0YXQvtC0OiAke3Jlc3VsdC50b0ZpeGVkKDApfSZuYnNwO+KCvWApOwogIH07CiAgY29uc3QgY2FsY3VsYXRlU3RvcmFnZSA9ICgpID0+IHsKICAgIGNvbnN0IGNpdHkgPSArJCgnI2dyb3VwMyBbZGF0YS1ncm91cD0iY2l0eSJdIC5jYWxjdWxhdG9yX19idG4uYWN0aXZlJykuZGF0YSgKICAgICAgJ3ZhbHVlJwogICAgKTsKICAgIGNvbnN0IHdlaWdodCA9ICskKAogICAgICAnI2dyb3VwMyBbZGF0YS1ncm91cD0id2VpZ2h0Il0gLmNhbGN1bGF0b3JfX2J0bi5hY3RpdmUnCiAgICApLmRhdGEoJ3ZhbHVlJyk7CiAgICBjb25zdCBkYXlzID0gKyQoJyNncm91cDMgaW5wdXRbbmFtZT13b3JrLWRheXNdJykudmFsKCk7CiAgICBjb25zdCBvcmRlcnMgPSArJCgnI2dyb3VwMyBpbnB1dFtuYW1lPW9yZGVyc10nKS52YWwoKTsKCiAgICBpZiAoIWNpdHkpIHJldHVybiBhbGVydCgn0JLRi9Cx0LXRgNC40YLQtSDQs9C+0YDQvtC0IScpOwogICAgaWYgKCF3ZWlnaHQpIHJldHVybiBhbGVydCgn0JLRi9Cx0LXRgNC40YLQtSDRhNCw0YHQvtCy0LrRgyEnKTsKICAgIGlmIChpc05hTihkYXlzKSB8fCBkYXlzIDwgMSkKICAgICAgcmV0dXJuIGFsZXJ0KCfQndC10LrQvtGA0YDQtdC60YLQvdC+0LUg0YfQuNGB0LvQviDRgNCw0LHQvtGH0LjRhSDQtNC90LXQuSEnKTsKICAgIGlmIChpc05hTihvcmRlcnMpIHx8IG9yZGVycyA8IDEpCiAgICAgIHJldHVybiBhbGVydCgn0J3QtdC60L7RgNGA0LXQutGC0L3QvtC1INGH0LjRgdC70L4g0LfQsNC60LDQt9C+0LIhJyk7CiAgICBpZiAoZGF5cyA+IDMwKQogICAgICByZXR1cm4gYWxlcnQoJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGA0LDQsdC+0YfQuNGFINC00L3QtdC5INC90LUg0LzQvtC20LXRgiDQsdGL0YLRjCDQsdC+0LvRjNGI0LUgMzAhJyk7CgogICAgbGV0IFthLCBiXSA9IFswLCAwXTsKCiAgICBpZiAod2VpZ2h0ID09IDEpIGEgPSAyNDAwOwogICAgZWxzZSBpZiAod2VpZ2h0ID09IDIpIGEgPSAzMzAwOwogICAgZWxzZSBpZiAod2VpZ2h0ID09IDMpIGEgPSA0NjAwOwogICAgZWxzZSBpZiAod2VpZ2h0ID09IDQpIGEgPSA4MDAwOwogICAgZWxzZSBpZiAod2VpZ2h0ID09IDUpIGEgPSAxMjAwMDsKCiAgICBjb25zb2xlLmxvZyh7IGNpdHksIHdlaWdodCwgZGF5cywgb3JkZXJzIH0pOwogICAgY29uc29sZS5sb2coeyBhLCBiIH0pOwoKICAgIGNvbnN0IHRvdGFsT3JkZXJzID0gZGF5cyAqIG9yZGVyczsKICAgIGNvbnN0IHRvdGFsT3JkZXJQcmljZSA9IGEgKyBiOwogICAgY29uc3QgcmVzdWx0ID0gdG90YWxPcmRlcnMgKiB0b3RhbE9yZGVyUHJpY2U7CgogICAgJCgnLmNhbGN1bGF0b3JfX3Jlc3VsdCcpLmh0bWwoYNCS0LDRiCDQtNC+0YXQvtC0OiAke3Jlc3VsdC50b0ZpeGVkKDApfSZuYnNwO+KCvWApOwogIH07CiAgY29uc3QgY2FsY3VsYXRlQ2FycmllciA9ICgpID0+IHsKICAgIGNvbnN0IGNpdHkgPSArJCgnI2dyb3VwNCBbZGF0YS1ncm91cD0iY2l0eSJdIC5jYWxjdWxhdG9yX19idG4uYWN0aXZlJykuZGF0YSgKICAgICAgJ3ZhbHVlJwogICAgKTsKICAgIGNvbnN0IHdlaWdodCA9ICskKAogICAgICAnI2dyb3VwNCBbZGF0YS1ncm91cD0id2VpZ2h0Il0gLmNhbGN1bGF0b3JfX2J0bi5hY3RpdmUnCiAgICApLmRhdGEoJ3ZhbHVlJyk7CiAgICBjb25zdCBkYXlzID0gKyQoJyNncm91cDQgaW5wdXRbbmFtZT13b3JrLWRheXNdJykudmFsKCk7CiAgICBjb25zdCB0cmlwV2VpZ2h0ID0gKyQoJyNncm91cDQgaW5wdXRbbmFtZT10cmlwLXdlaWdodF0nKS52YWwoKTsKICAgIGNvbnN0IGRheURpc3RhbmNlID0gKyQoJyNncm91cDQgaW5wdXRbbmFtZT1kYXktZGlzdGFuY2VdJykudmFsKCk7CgogICAgaWYgKCFjaXR5KSByZXR1cm4gYWxlcnQoJ9CS0YvQsdC10YDQuNGC0LUg0LPQvtGA0L7QtCEnKTsKICAgIGlmICghd2VpZ2h0KSByZXR1cm4gYWxlcnQoJ9CS0YvQsdC10YDQuNGC0LUg0YTQsNGB0L7QstC60YMhJyk7CiAgICBpZiAoaXNOYU4oZGF5cykgfHwgZGF5cyA8IDEpCiAgICAgIHJldHVybiBhbGVydCgn0J3QtdC60L7RgNGA0LXQutGC0L3QvtC1INGH0LjRgdC70L4g0YDQsNCx0L7Rh9C40YUg0LTQvdC10LkhJyk7CiAgICBpZiAoaXNOYU4odHJpcFdlaWdodCkgfHwgdHJpcFdlaWdodCA8IDAuNSkKICAgICAgcmV0dXJuIGFsZXJ0KCfQndC10LrQvtGA0YDQtdC60YLQvdC+0LUg0YfQuNGB0LvQviDQstC10YHQsCDQsiDRgNC10LnRgdC1IScpOwogICAgaWYgKGlzTmFOKGRheURpc3RhbmNlKSB8fCBkYXlEaXN0YW5jZSA8IDEpCiAgICAgIHJldHVybiBhbGVydCgn0J3QtdC60L7RgNGA0LXQutGC0L3QvtC1INGH0LjRgdC70L4g0LrQuNC70L7QvNC10YLRgNC+0LIg0LIg0LTQtdC90YwhJyk7CiAgICBpZiAoZGF5cyA+IDMwKQogICAgICByZXR1cm4gYWxlcnQoJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGA0LDQsdC+0YfQuNGFINC00L3QtdC5INC90LUg0LzQvtC20LXRgiDQsdGL0YLRjCDQsdC+0LvRjNGI0LUgMzAhJyk7CgogICAgbGV0IFthLCBiXSA9IFswLCAwXTsKCiAgICBpZiAod2VpZ2h0ID09IDEpIChhID0gMjAwMCksIChiID0gNSk7CiAgICBlbHNlIGlmICh3ZWlnaHQgPT0gMikgKGEgPSAyNTAwKSwgKGIgPSAxMCk7CiAgICBlbHNlIGlmICh3ZWlnaHQgPT0gMykgKGEgPSAzMDAwKSwgKGIgPSAyMCk7CiAgICBlbHNlIGlmICh3ZWlnaHQgPT0gNCkgKGEgPSA0MDAwKSwgKGIgPSA1MCk7CiAgICBlbHNlIGlmICh3ZWlnaHQgPT0gNSkgKGEgPSA1MDAwKSwgKGIgPSAxMDApOwoKICAgIGNvbnN0IHRvdGFsRGlzdGFuY2UgPSBkYXlEaXN0YW5jZSAqIGRheXM7CiAgICBjb25zdCB0b3RhbE9yZGVycyA9ICh0cmlwV2VpZ2h0ICogMTAwMCkgLyBiOwoKICAgIGNvbnN0IHRvdGFsRGlzdGFuY2VFYXJuID0gdG90YWxEaXN0YW5jZSAqIDIwMDsKICAgIGNvbnN0IHRvdGFsT3JkZXJzRWFybiA9IHRvdGFsT3JkZXJzICogYTsKCiAgICBjb25zdCByZXN1bHQgPSB0b3RhbERpc3RhbmNlRWFybiArIHRvdGFsT3JkZXJzRWFybjsKCiAgICAkKCcuY2FsY3VsYXRvcl9fcmVzdWx0JykuaHRtbChg0JLQsNGIINC00L7RhdC+0LQ6ICR7cmVzdWx0LnRvRml4ZWQoMCl9Jm5ic3A74oK9YCk7CiAgfTsKCiAgJCgnLmNhbGN1bGF0b3JfX3N1Ym1pdCcpLm9uKCdjbGljaycsICgpID0+IHsKICAgIGNvbnN0IHdvcmsgPSArJCgnW2RhdGEtZ3JvdXA9d29ya10gLmNhbGN1bGF0b3JfX2J0bi5hY3RpdmUnKS5kYXRhKCd2YWx1ZScpOwogICAgaWYgKHdvcmsgPT0gMSkgY2FsY3VsYXRlQ291cmllcigpOwogICAgZWxzZSBpZiAod29yayA9PSAyKSBjYWxjdWxhdGVPcHRDb3VyaWVyKCk7CiAgICBlbHNlIGlmICh3b3JrID09IDMpIGNhbGN1bGF0ZVN0b3JhZ2UoKTsKICAgIGVsc2UgaWYgKHdvcmsgPT0gNCkgY2FsY3VsYXRlQ2FycmllcigpOwogIH0pOwp9KShqUXVlcnkpOwo="}},"time_used":28,"timings":{"blocked":-1,"dns":0,"connect":14,"send":0,"wait":15,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/daysone/v19/mem9YaCnxnKRiYZOCIYWcrgmVA.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:52.071Z","timestamp":1785161272071,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/daysone/v19/mem9YaCnxnKRiYZOCIYWcrgmVA.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://elxr24.shop\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 9328\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Wed, 22 Jul 2026 17:51:01 GMT\r\nexpires: Thu, 22 Jul 2027 17:51:01 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Wed, 23 Apr 2025 16:03:31 GMT\r\ncontent-type: font/woff2\r\nage: 418611\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":9328,"size_decoded":10140,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 9328, version 1.0","md5":"65b2bab72db11374d5428759516ef62d","sha1":"5e8eb5420a2fd971202f2f6a949f280cb7e8694a","sha256":"dc5db7b294bf9c6948a43a476e8d6742cbbde37d2da89288713f236bcac5aafa","sha512":"8a5902bc6ff381061ac5c857ec36872db2ead2097fa13754b8c2fe3786a3fa3328f8392e2efe1e91126bc9190b3ea94c457a3ebe281e9b5cbb78c7eccb1f4578","ssdeep":"192:wiwToEzuDv+vPO7wDt6hcYF1i2iQKHnDqVfHFC0K:wiwToEzsv+nOUzYqcKH2VdCP","tlshash":"bc129f7163a299f0da79cb3c29e93a3097b23cc05f1691734aee048919b29a455e3383","first_seen":"2025-11-25T23:34:27.575826Z","last_seen":"2026-07-27T14:08:21.636251Z","times_seen":9,"resource_available":false,"data":"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"}},"time_used":63,"timings":{"blocked":24,"dns":0,"connect":0,"send":0,"wait":37,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/favicon.ico","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:52.227Z","timestamp":1785161272227,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"elxr24.cc","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 03 Jun 2026 07:35:05 GMT","end":"Tue, 01 Sep 2026 07:35:04 GMT"},"fingerprint":{"sha1":"12:3F:CB:7D:FB:C0:91:E3:23:CA:98:8C:CB:80:67:4C:9D:50:FF:C4","sha256":"DD:B7:2F:32:FE:FB:45:B3:5D:1F:1F:45:3E:4F:FD:35:65:70:79:E3:29:04:54:1D:C3:AC:CC:DC:56:40:57:6F"}}},"request":{"raw":"GET /favicon.ico HTTP/1.1\r\nHost: elxr24.shop\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://elxr24.shop/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 404 Not Found\r\nServer: nginx/1.22.1\r\nDate: Mon, 27 Jul 2026 14:07:52 GMT\r\nContent-Type: text/html\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\nContent-Encoding: gzip\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"Not Found","fingerprints":[{"name":"Nginx:1.22.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":153,"size_decoded":300,"mime_type":"text/html","magic":"HTML document, ASCII text, with CRLF line terminators","md5":"998368d7c95ea4293237f2320546e440","sha1":"30dfd2d3bb8a7e3241bd7792e90a98ebb70be3a4","sha256":"533a1ca5d6595793725bca7641d9461a0f00dd1732dded3e4281196f5dd21736","sha512":"648c4720a85dbf834be1ba00f0e1b4167cc670fe15896efb00a77fb6e0c225a13aae3da10d85fa6e7f726420d9bb3c20c43466e02296d44153c127b7160e0b97","ssdeep":"","tlshash":"4fc02b2d7513bc4cc563317832c37080c0c6833769bb4112c440800331cf2998bc3397","first_seen":"2023-04-06T02:01:38Z","last_seen":"2026-08-15T11:17:03.153792Z","times_seen":6040,"resource_available":true,"data":"PGh0bWw+DQo8aGVhZD48dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+PC9oZWFkPg0KPGJvZHk+DQo8Y2VudGVyPjxoMT40MDQgTm90IEZvdW5kPC9oMT48L2NlbnRlcj4NCjxocj48Y2VudGVyPm5naW54LzEuMjIuMTwvY2VudGVyPg0KPC9ib2R5Pg0KPC9odG1sPg0K"}},"time_used":15,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":15,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.googletagmanager.com/gtag/js?id=G-5RFXXLH8D1\u0026cx=c\u0026gtm=4e67m0","fqdn":"www.googletagmanager.com","domain":"googletagmanager.com","tld":"com"},"ip":{"addr":"142.250.178.104","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:52.278Z","timestamp":1785161272278,"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":"*.google-analytics.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:33 GMT","end":"Mon, 21 Sep 2026 08:37:32 GMT"},"fingerprint":{"sha1":"85:82:80:E9:F0:BC:08:B5:D8:5D:91:B4:E5:D3:DB:B1:A7:2F:E3:F3","sha256":"E3:94:E9:DA:2C:F1:36:09:33:63:D3:69:08:E7:E6:91:8D:F3:61:7F:0F:D0:5F:8E:B6:E9:D7:F3:DD:10:3C:DC"}}},"request":{"raw":"GET /gtag/js?id=G-5RFXXLH8D1\u0026cx=c\u0026gtm=4e67m0 HTTP/1.1\r\nHost: www.googletagmanager.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://elxr24.shop/\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-type: application/javascript; charset=UTF-8\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: Cache-Control\r\ncontent-encoding: zstd\r\nvary: Accept-Encoding\r\ndate: Mon, 27 Jul 2026 14:07:52 GMT\r\nexpires: Mon, 27 Jul 2026 14:07:52 GMT\r\ncache-control: private, max-age=900\r\nstrict-transport-security: max-age=31536000; includeSubDomains\r\ncross-origin-resource-policy: cross-origin\r\nserver: Google Tag Manager\r\ncontent-length: 166347\r\nx-xss-protection: 0\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":488564,"size_decoded":166931,"mime_type":"application/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (6033)","md5":"82686a203e5115b534eeb65b1962e66d","sha1":"4d3550d940706120922ed1c74cd2ddb4de0b9794","sha256":"b5bfec9999da2ec856b5eedd5d84bd1a87777092837e7ee793d0499f01cf93a0","sha512":"6c71124d637f176c31f82d68f77012d56d7ce7af85998ebcfcdef910a14f319d831c5560958cf4af2a02c31a603a1c92c6eb6451099afb90b2a6a8aeef643bc9","ssdeep":"6144:3AHk4U0jIWXbP69FMxmRknhqsScPmfxNf3EjUxVGaZoXzRYGg:3Kk11WLP69VwqxVZOvg","tlshash":"93a4f8cdb3d674225396f478903f018ba57b29e2b44cc899f189cce42e7465a8267f7c","first_seen":"2026-07-27T10:31:02.540629Z","last_seen":"2026-07-27T14:08:21.637616Z","times_seen":2,"resource_available":true,"data":"Ci8vIENvcHlyaWdodCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKKGZ1bmN0aW9uKCl7Cgp2YXIgZGF0YSA9IHsKInJlc291cmNlIjogewogICJ2ZXJzaW9uIjoiMSIsCiAgCiAgIm1hY3JvcyI6W3siZnVuY3Rpb24iOiJfX2UifSx7ImZ1bmN0aW9uIjoiX19jIiwidnRwX3ZhbHVlIjoiZ29vZ2xlLm5vIn0seyJmdW5jdGlvbiI6Il9fYyIsInZ0cF92YWx1ZSI6MH1dLAogICJ0YWdzIjpbeyJmdW5jdGlvbiI6Il9fb2d0XzFwX2RhdGFfdjIiLCJwcmlvcml0eSI6MTMsInZ0cF9pc0F1dG9FbmFibGVkIjp0cnVlLCJ2dHBfYXV0b1Bob25lRW5hYmxlZCI6dHJ1ZSwidnRwX2F1dG9Db2xsZWN0RXhjbHVzaW9uU2VsZWN0b3JzIjpbImxpc3QiLFsibWFwIiwiZXhjbHVzaW9uU2VsZWN0b3IiLCIiXV0sInZ0cF9pc0VuYWJsZWQiOnRydWUsInZ0cF9hdXRvQWRkcmVzc0VuYWJsZWQiOnRydWUsInZ0cF9hdXRvRW1haWxFbmFibGVkIjp0cnVlLCJ2dHBfaXNBdXRvQ29sbGVjdFBpaUVuYWJsZWRGbGFnIjp0cnVlLCJ0YWdfaWQiOjR9LHsiZnVuY3Rpb24iOiJfX2NjZF9nYV9maXJzdCIsInByaW9yaXR5IjoxMiwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctNVJGWFhMSDhEMSIsInRhZ19pZCI6MTh9LHsiZnVuY3Rpb24iOiJfX3NldF9wcm9kdWN0X3NldHRpbmdzIiwicHJpb3JpdHkiOjExLCJ2dHBfaW5zdGFuY2VEZXN0aW5hdGlvbklkIjoiRy01UkZYWExIOEQxIiwidnRwX2ZvcmVpZ25UbGRNYWNyb1Jlc3VsdCI6WyJtYWNybyIsMV0sInZ0cF9pc0NoaW5hVmlwUmVnaW9uTWFjcm9SZXN1bHQiOlsibWFjcm8iLDJdLCJ0YWdfaWQiOjE3fSx7ImZ1bmN0aW9uIjoiX19jY2RfZ2FfcmVnc2NvcGUiLCJwcmlvcml0eSI6MTAsInZ0cF9zZXR0aW5nc1RhYmxlIjpbImxpc3QiLFsibWFwIiwicmVkYWN0RmllbGRHcm91cCIsIkRFVklDRV9BTkRfR0VPIiwiZGlzYWxsb3dBbGxSZWdpb25zIixmYWxzZSwiZGlzYWxsb3dlZFJlZ2lvbnMiLCIiXSxbIm1hcCIsInJlZGFjdEZpZWxkR3JvdXAiLCJHT09HTEVfU0lHTkFMUyIsImRpc2FsbG93QWxsUmVnaW9ucyIsdHJ1ZSwiZGlzYWxsb3dlZFJlZ2lvbnMiLCIiXV0sInZ0cF9pbnN0YW5jZURlc3RpbmF0aW9uSWQiOiJHLTVSRlhYTEg4RDEiLCJ0YWdfaWQiOjE2fSx7ImZ1bmN0aW9uIjoiX19jY2RfZW1fZG93bmxvYWQiLCJwcmlvcml0eSI6OSwidnRwX2luY2x1ZGVQYXJhbXMiOnRydWUsInZ0cF9pbnN0YW5jZURlc3RpbmF0aW9uSWQiOiJHLTVSRlhYTEg4RDEiLCJ0YWdfaWQiOjE1fSx7ImZ1bmN0aW9uIjoiX19jY2RfZW1fZm9ybSIsInByaW9yaXR5Ijo4LCJ2dHBfaW5jbHVkZVBhcmFtcyI6dHJ1ZSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctNVJGWFhMSDhEMSIsInRhZ19pZCI6MTR9LHsiZnVuY3Rpb24iOiJfX2NjZF9lbV9vdXRib3VuZF9jbGljayIsInByaW9yaXR5Ijo3LCJ2dHBfaW5jbHVkZVBhcmFtcyI6dHJ1ZSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctNVJGWFhMSDhEMSIsInRhZ19pZCI6MTN9LHsiZnVuY3Rpb24iOiJfX2NjZF9lbV9wYWdlX3ZpZXciLCJwcmlvcml0eSI6NiwidnRwX2hpc3RvcnlFdmVudHMiOnRydWUsInZ0cF9pbmNsdWRlUGFyYW1zIjp0cnVlLCJ2dHBfaW5zdGFuY2VEZXN0aW5hdGlvbklkIjoiRy01UkZYWExIOEQxIiwidGFnX2lkIjoxMn0seyJmdW5jdGlvbiI6Il9fY2NkX2VtX3Njcm9sbCIsInByaW9yaXR5Ijo1LCJ2dHBfaW5jbHVkZVBhcmFtcyI6dHJ1ZSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctNVJGWFhMSDhEMSIsInRhZ19pZCI6MTF9LHsiZnVuY3Rpb24iOiJfX2NjZF9lbV9zaXRlX3NlYXJjaCIsInByaW9yaXR5Ijo0LCJ2dHBfc2VhcmNoUXVlcnlQYXJhbXMiOiJxLHMsc2VhcmNoLHF1ZXJ5LGtleXdvcmQiLCJ2dHBfaW5jbHVkZVBhcmFtcyI6dHJ1ZSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctNVJGWFhMSDhEMSIsInRhZ19pZCI6MTB9LHsiZnVuY3Rpb24iOiJfX2NjZF9lbV92aWRlbyIsInByaW9yaXR5IjozLCJ2dHBfaW5jbHVkZVBhcmFtcyI6dHJ1ZSwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctNVJGWFhMSDhEMSIsInRhZ19pZCI6OX0seyJmdW5jdGlvbiI6Il9fY2NkX2NvbnZlcnNpb25fbWFya2luZyIsInByaW9yaXR5IjoyLCJ2dHBfY29udmVyc2lvblJ1bGVzIjpbImxpc3QiLFsibWFwIiwibWF0Y2hpbmdSdWxlcyIsIntcInR5cGVcIjo1LFwiYXJnc1wiOlt7XCJzdHJpbmdWYWx1ZVwiOlwiY2xvc2VfY29udmVydF9sZWFkXCJ9LHtcImNvbnRleHRWYWx1ZVwiOntcIm5hbWVzcGFjZVR5cGVcIjoxLFwia2V5UGFydHNcIjpbXCJldmVudE5hbWVcIl19fV19Il0sWyJtYXAiLCJtYXRjaGluZ1J1bGVzIiwie1widHlwZVwiOjUsXCJhcmdzXCI6W3tcInN0cmluZ1ZhbHVlXCI6XCJxdWFsaWZ5X2xlYWRcIn0se1wiY29udGV4dFZhbHVlXCI6e1wibmFtZXNwYWNlVHlwZVwiOjEsXCJrZXlQYXJ0c1wiOltcImV2ZW50TmFtZVwiXX19XX0iXSxbIm1hcCIsIm1hdGNoaW5nUnVsZXMiLCJ7XCJ0eXBlXCI6NSxcImFyZ3NcIjpbe1wic3RyaW5nVmFsdWVcIjpcInB1cmNoYXNlXCJ9LHtcImNvbnRleHRWYWx1ZVwiOntcIm5hbWVzcGFjZVR5cGVcIjoxLFwia2V5UGFydHNcIjpbXCJldmVudE5hbWVcIl19fV19Il1dLCJ2dHBfaW5zdGFuY2VEZXN0aW5hdGlvbklkIjoiRy01UkZYWExIOEQxIiwidGFnX2lkIjo4fSx7ImZ1bmN0aW9uIjoiX19jY2RfYXV0b19yZWRhY3QiLCJwcmlvcml0eSI6MSwidnRwX3JlZGFjdEVtYWlsIjp0cnVlLCJ2dHBfaW5zdGFuY2VEZXN0aW5hdGlvbklkIjoiRy01UkZYWExIOEQxIiwidGFnX2lkIjo3fSx7ImZ1bmN0aW9uIjoiX19nY3QiLCJ2dHBfdHJhY2tpbmdJZCI6IkctNVJGWFhMSDhEMSIsInZ0cF9zZXNzaW9uRHVyYXRpb24iOjAsInRhZ19pZCI6MX0seyJmdW5jdGlvbiI6Il9fY2NkX2dhX2xhc3QiLCJwcmlvcml0eSI6MCwidnRwX2luc3RhbmNlRGVzdGluYXRpb25JZCI6IkctNVJGWFhMSDhEMSIsInRhZ19pZCI6Nn1dLAogICJwcmVkaWNhdGVzIjpbeyJmdW5jdGlvbiI6Il9lcSIsImFyZzAiOlsibWFjcm8iLDBdLCJhcmcxIjoiZ3RtLmpzIn0seyJmdW5jdGlvbiI6Il9lcSIsImFyZzAiOlsibWFjcm8iLDBdLCJhcmcxIjoiZ3RtLmluaXQifV0sCiAgInJ1bGVzIjpbW1siaWYiLDBdLFsiYWRkIiwxM11dLFtbImlmIiwxXSxbImFkZCIsMCwxNCwxMiwxMSwxMCw5LDgsNyw2LDUsNCwzLDIsMV1dXQp9LAoicnVudGltZSI6WyBbNTAsIl9fYyIsWzQ2LCJhIl0sWzM2LFsxNyxbMTUsImEiXSwidmFsdWUiXV1dCiAsWzUwLCJfX2NjZF9hdXRvX3JlZGFjdCIsWzQ2LCJhIl0sWzUwLCJ2IixbNDYsImFGIl0sWzM2LFsyLFsxNSwiYUYiXSwicmVwbGFjZSIsWzcsWzE1LCJ1Il0sIlxcJDEiXV1dXSxbNTAsInciLFs0NiwiYUYiXSxbNTIsImFHIixbMzAsWyJjIixbMTUsImFGIl1dLFsxNSwiYUYiXV1dLFs1MiwiYUgiLFs3XV0sWzY1LCJhSSIsWzIsWzE1LCJhRyJdLCJzcGxpdCIsWzcsIiJdXSxbNDYsWzUzLFs1MiwiYUoiLFs3LFsidiIsWzE1LCJhSSJdXV1dLFs1MiwiYUsiLFsiZCIsWzE1LCJhSSJdXV0sWzIyLFsxMixbMTUsImFLIl0sWzQ1XV0sWzQ2LFs1MyxbMzYsWyJkIixbInYiLFsxNSwiYUYiXV1dXV1dXSxbMjIsWzIxLFsxNSwiYUsiXSxbMTUsImFJIl1dLFs0NixbNTMsWzIsWzE1LCJhSiJdLCJwdXNoIixbNyxbMTUsImFLIl1dXSxbMjIsWzIxLFsxNSwiYUkiXSxbMixbMTUsImFJIl0sInRvTG93ZXJDYXNlIixbN11dXSxbNDYsWzUzLFsyLFsxNSwiYUoiXSwicHVzaCIsWzcsWyJkIixbMixbMTUsImFJIl0sInRvTG93ZXJDYXNlIixbN11dXV1dXV0sWzQ2LFsyMixbMjEsWzE1LCJhSSJdLFsyLFsxNSwiYUkiXSwidG9VcHBlckNhc2UiLFs3XV1dLFs0NixbNTMsWzIsWzE1LCJhSiJdLCJwdXNoIixbNyxbImQiLFsyLFsxNSwiYUkiXSwidG9VcHBlckNhc2UiLFs3XV1dXV1dXV1dXV1dXSxbMjIsWzE4LFsxNyxbMTUsImFKIl0sImxlbmd0aCJdLDFdLFs0NixbNTMsWzIsWzE1LCJhSCJdLCJwdXNoIixbNyxbMCxbMCwiKD86IixbMixbMTUsImFKIl0sImpvaW4iLFs3LCJ8Il1dXSwiKSJdXV1dXSxbNDYsWzUzLFsyLFsxNSwiYUgiXSwicHVzaCIsWzcsWzE2LFsxNSwiYUoiXSwwXV1dXV1dXV1dLFszNixbMixbMTUsImFIIl0sImpvaW4iLFs3LCIiXV1dXSxbNTAsIngiLFs0NiwiYUYiLCJhRyIsImFIIl0sWzUyLCJhSSIsWyJ6IixbMTUsImFGIl0sWzE1LCJhSCJdXV0sWzIyLFsyOCxbMTUsImFJIl1dLFs0NixbMzYsWzE1LCJhRiJdXV1dLFsyMixbMjgsWzE3LFsxNSwiYUkiXSwic2VhcmNoIl1dLFs0NixbMzYsWzE1LCJhRiJdXV1dLFs0MSwiYUoiXSxbMywiYUoiLFsxNyxbMTUsImFJIl0sInNlYXJjaCJdXSxbNjUsImFLIixbMTUsImFHIl0sWzQ2LFs1MyxbNTIsImFMIixbNyxbInYiLFsxNSwiYUsiXV0sWyJ3IixbMTUsImFLIl1dXV0sWzY1LCJhTSIsWzE1LCJhTCJdLFs0NixbNTMsWzUyLCJhTiIsWzMwLFsxNixbMTUsInQiXSxbMTUsImFNIl1dLFs0MyxbMTUsInQiXSxbMTUsImFNIl0sWyJiIixbMCxbMCwiKFs/Jl0iLFsxNSwiYU0iXV0sIj0pKFteJl0qKSJdLCJnaSJdXV1dLFszLCJhSiIsWzIsWzE1LCJhSiJdLCJyZXBsYWNlIixbNyxbMTUsImFOIl0sWzAsIiQxIixbMTUsInIiXV1dXV1dXV1dXV0sWzIyLFsyMCxbMTUsImFKIl0sWzE3LFsxNSwiYUkiXSwic2VhcmNoIl1dLFs0NixbMzYsWzE1LCJhRiJdXV1dLFsyMixbMjAsWzE2LFsxNSwiYUoiXSwwXSwiJiJdLFs0NixbMywiYUoiLFsyLFsxNSwiYUoiXSwic3Vic3RyaW5nIixbNywxXV1dXV0sWzIyLFsyMSxbMTYsWzE1LCJhSiJdLDBdLCI/Il0sWzQ2LFszLCJhSiIsWzAsIj8iLFsxNSwiYUoiXV1dXV0sWzIyLFsyMCxbMTUsImFKIl0sIj8iXSxbNDYsWzMsImFKIiwiIl1dXSxbNDMsWzE1LCJhSSJdLCJzZWFyY2giLFsxNSwiYUoiXV0sWzM2LFsiYUEiLFsxNSwiYUkiXSxbMTUsImFIIl1dXV0sWzUwLCJ6IixbNDYsImFGIiwiYUciXSxbMjIsWzIwLFsxNSwiYUciXSxbMTcsWzE1LCJzIl0sIlBBVEgiXV0sWzQ2LFs1MyxbMywiYUYiLFswLFsxNSwieSJdLFsxNSwiYUYiXV1dXV1dLFszNixbImYiLFsxNSwiYUYiXV1dXSxbNTAsImFBIixbNDYsImFGIiwiYUciXSxbNDEsImFIIl0sWzMsImFIIiwiIl0sWzIyLFsyMCxbMTUsImFHIl0sWzE3LFsxNSwicyJdLCJVUkwiXV0sWzQ2LFs1MyxbNDEsImFJIl0sWzMsImFJIiwiIl0sWzIyLFszMCxbMTcsWzE1LCJhRiJdLCJ1c2VybmFtZSJdLFsxNyxbMTUsImFGIl0sInBhc3N3b3JkIl1dLFs0NixbNTMsWzMsImFJIixbMCxbMTUsImFJIl0sWzAsWzAsWzAsWzE3LFsxNSwiYUYiXSwidXNlcm5hbWUiXSxbMzksWzE3LFsxNSwiYUYiXSwicGFzc3dvcmQiXSwiOiIsIiJdXSxbMTcsWzE1LCJhRiJdLCJwYXNzd29yZCJdXSwiQCJdXV1dXV0sWzMsImFIIixbMCxbMCxbMCxbMTcsWzE1LCJhRiJdLCJwcm90b2NvbCJdLCIvLyJdLFsxNSwiYUkiXV0sWzE3LFsxNSwiYUYiXSwiaG9zdCJdXV1dXV0sWzM2LFswLFswLFswLFsxNSwiYUgiXSxbMTcsWzE1LCJhRiJdLCJwYXRobmFtZSJdXSxbMTcsWzE1LCJhRiJdLCJzZWFyY2giXV0sWzE3LFsxNSwiYUYiXSwiaGFzaCJdXV1dLFs1MCwiYUIiLFs0NiwiYUYiLCJhRyJdLFs0MSwiYUgiXSxbMywiYUgiLFsyLFsxNSwiYUYiXSwicmVwbGFjZSIsWzcsWzE1LCJuIl0sWzE1LCJyIl1dXV0sWzIyLFszMCxbMjAsWzE1LCJhRyJdLFsxNyxbMTUsInMiXSwiVVJMIl1dLFsyMCxbMTUsImFHIl0sWzE3LFsxNSwicyJdLCJQQVRIIl1dXSxbNDYsWzUzLFs1MiwiYUkiLFsieiIsWzE1LCJhSCJdLFsxNSwiYUciXV1dLFsyMixbMjAsWzE1LCJhSSJdLFs0NF1dLFs0NixbMzYsWzE1LCJhSCJdXV1dLFs1MiwiYUoiLFsxNyxbMTUsImFJIl0sInNlYXJjaCJdXSxbNTIsImFLIixbMixbMTUsImFKIl0sInJlcGxhY2UiLFs3LFsxNSwibyJdLFsxNSwiciJdXV1dLFsyMixbMjAsWzE1LCJhSiJdLFsxNSwiYUsiXV0sWzQ2LFszNixbMTUsImFIIl1dXV0sWzQzLFsxNSwiYUkiXSwic2VhcmNoIixbMTUsImFLIl1dLFszLCJhSCIsWyJhQSIsWzE1LCJhSSJdLFsxNSwiYUciXV1dXV1dLFszNixbMTUsImFIIl1dXSxbNTAsImFDIixbNDYsImFGIl0sWzIyLFsyMCxbMTUsImFGIl0sWzE1LCJxIl1dLFs0NixbNTMsWzM2LFsxNyxbMTUsInMiXSwiUEFUSCJdXV1dLFs0NixbMjIsWzIxLFsyLFsxNSwicCJdLCJpbmRleE9mIixbNyxbMTUsImFGIl1dXSxbMjcsMV1dLFs0NixbNTMsWzM2LFsxNyxbMTUsInMiXSwiVVJMIl1dXV0sWzQ2LFs1MyxbMzYsWzE3LFsxNSwicyJdLCJURVhUIl1dXV1dXV1dLFs1MCwiYUQiLFs0NiwiYUYiLCJhRyJdLFs0MSwiYUgiXSxbMywiYUgiLGZhbHNlXSxbNTIsImFJIixbImUiLFsxNSwiYUYiXV1dLFszOCxbMTUsImFJIl0sWzQ2LCJzdHJpbmciLCJhcnJheSIsIm9iamVjdCJdLFs0NixbNSxbNDYsWzUyLCJhSiIsWyJhQiIsWzE1LCJhRiJdLFsxNSwiYUciXV1dLFsyMixbMjEsWzE1LCJhRiJdLFsxNSwiYUoiXV0sWzQ2LFs1MyxbMzYsWzE1LCJhSiJdXV1dXSxbNF1dXSxbNSxbNDYsWzUzLFs0MSwiYUsiXSxbMywiYUsiLDBdLFs2MyxbNywiYUsiXSxbMjMsWzE1LCJhSyJdLFsxNyxbMTUsImFGIl0sImxlbmd0aCJdXSxbMzMsWzE1LCJhSyJdLFszLCJhSyIsWzAsWzE1LCJhSyJdLDFdXV0sWzQ2LFs1MyxbNTIsImFMIixbImFEIixbMTYsWzE1LCJhRiJdLFsxNSwiYUsiXV0sWzE3LFsxNSwicyJdLCJURVhUIl1dXSxbMjIsWzIxLFsxNSwiYUwiXSxbNDRdXSxbNDYsWzUzLFs0MyxbMTUsImFGIl0sWzE1LCJhSyJdLFsxNSwiYUwiXV0sWzMsImFIIix0cnVlXV1dXV1dXV0sWzRdXV0sWzUsWzQ2LFs1NCwiYUsiLFsxNSwiYUYiXSxbNDYsWzUzLFs1MiwiYUwiLFsiYUQiLFsxNixbMTUsImFGIl0sWzE1LCJhSyJdXSxbMTcsWzE1LCJzIl0sIlRFWFQiXV1dLFsyMixbMjEsWzE1LCJhTCJdLFs0NF1dLFs0NixbNTMsWzQzLFsxNSwiYUYiXSxbMTUsImFLIl0sWzE1LCJhTCJdXSxbMywiYUgiLHRydWVdXV1dXV1dLFs0XV1dXV0sWzM2LFszOSxbMTUsImFIIl0sWzE1LCJhRiJdLFs0NF1dXV0sWzUwLCJhRSIsWzQ2LCJhRiIsImFHIl0sWzUyLCJhSCIsWzMwLFsyLFsxNSwiYUYiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImgiXSwiQUMiXV1dLFs3XV1dLFsyMixbMjAsWzIsWzE1LCJhSCJdLCJpbmRleE9mIixbNyxbMTUsImFHIl1dXSxbMjcsMV1dLFs0NixbNTMsWzIsWzE1LCJhSCJdLCJwdXNoIixbNyxbMTUsImFHIl1dXV1dXSxbMixbMTUsImFGIl0sInNldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJoIl0sIkFDIl0sWzE1LCJhSCJdXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuY3JlYXRlUmVnZXgiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJkZWNvZGVVcmlDb21wb25lbnQiXV0sWzUyLCJkIixbInJlcXVpcmUiLCJlbmNvZGVVcmlDb21wb25lbnQiXV0sWzUyLCJlIixbInJlcXVpcmUiLCJnZXRUeXBlIl1dLFs1MiwiZiIsWyJyZXF1aXJlIiwicGFyc2VVcmwiXV0sWzUyLCJnIixbInJlcXVpcmUiLCJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIl1dLFs1MiwiaCIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImkiLFsxNSwiX19tb2R1bGVfZ29sZEV2ZW50VXNhZ2VJZCJdXSxbNTIsImoiLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl1dLFs1MiwiayIsWzE3LFsxNSwiYSJdLCJyZWRhY3RFbWFpbCJdXSxbNTIsImwiLFsxNyxbMTUsImEiXSwicmVkYWN0UXVlcnlQYXJhbXMiXV0sWzUyLCJtIixbMzksWzE1LCJsIl0sWzIsWzE1LCJsIl0sInNwbGl0IixbNywiLCJdXSxbN11dXSxbMjIsWzEsWzI4LFsxNyxbMTUsIm0iXSwibGVuZ3RoIl1dLFsyOCxbMTUsImsiXV1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFs1MiwibiIsWyJiIiwiW0EtWjAtOS5fJSstXStAW0EtWjAtOS4tXStcXC5bQS1aXXsyLH0iLCJnaSJdXSxbNTIsIm8iLFsiYiIsWzAsIihbQS1aMC05Ll8tXXwlMjV8JTJCKSslNDBbQS1aMC05Li1dIiwiK1xcLltBLVpdezIsfSJdLCJnaSJdXSxbNTIsInAiLFs3LCJwYWdlX2xvY2F0aW9uIiwicGFnZV9yZWZlcnJlciIsInBhZ2VfcGF0aCIsImxpbmtfdXJsIiwidmlkZW9fdXJsIiwiZm9ybV9kZXN0aW5hdGlvbiJdXSxbNTIsInEiLCJwYWdlX3BhdGgiXSxbNTIsInIiLCIocmVkYWN0ZWQpIl0sWzUyLCJzIixbOCwiVEVYVCIsMCwiVVJMIiwxLCJQQVRIIiwyXV0sWzUyLCJ0IixbOF1dLFs1MiwidSIsWyJiIiwiKFtcXFxcXiQufD8qKygpe31dfFxcW3xcXFspIiwiZyJdXSxbNTIsInkiLCJodHRwOi8vLiJdLFsiZyIsWzE1LCJqIl0sWzUxLCIiLFs3LCJhRiJdLFsyMixbMTUsImsiXSxbNDYsWzUzLFs1MiwiYUciLFsyLFsxNSwiYUYiXSwiZ2V0SGl0S2V5cyIsWzddXV0sWzY1LCJhSCIsWzE1LCJhRyJdLFs0NixbNTMsWzIyLFsyMCxbMTUsImFIIl0sIl9zc3RfcGFyYW1ldGVycyJdLFs0NixbNl1dXSxbNTIsImFJIixbMixbMTUsImFGIl0sImdldEhpdERhdGEiLFs3LFsxNSwiYUgiXV1dXSxbMjIsWzI4LFsxNSwiYUkiXV0sWzQ2LFs2XV1dLFs1MiwiYUoiLFsiYUMiLFsxNSwiYUgiXV1dLFs1MiwiYUsiLFsiYUQiLFsxNSwiYUkiXSxbMTUsImFKIl1dXSxbMjIsWzIxLFsxNSwiYUsiXSxbNDRdXSxbNDYsWzUzLFsyLFsxNSwiYUYiXSwic2V0SGl0RGF0YSIsWzcsWzE1LCJhSCJdLFsxNSwiYUsiXV1dLFsiYUUiLFsxNSwiYUYiXSxbMzksWzIsWzE1LCJhRiJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiaCJdLCJCTyJdXV0sWzE3LFsxNSwiaSJdLCJXIl0sWzE3LFsxNSwiaSJdLCJPIl1dXV1dXV1dXV1dXSxbMjIsWzE3LFsxNSwibSJdLCJsZW5ndGgiXSxbNDYsWzUzLFs2NSwiYUciLFsxNSwicCJdLFs0NixbNTMsWzUyLCJhSCIsWzIsWzE1LCJhRiJdLCJnZXRIaXREYXRhIixbNyxbMTUsImFHIl1dXV0sWzIyLFsyOCxbMTUsImFIIl1dLFs0NixbNl1dXSxbNTIsImFJIixbMzksWzIwLFsxNSwiYUciXSxbMTUsInEiXV0sWzE3LFsxNSwicyJdLCJQQVRIIl0sWzE3LFsxNSwicyJdLCJVUkwiXV1dLFs1MiwiYUoiLFsieCIsWzE1LCJhSCJdLFsxNSwibSJdLFsxNSwiYUkiXV1dLFsyMixbMjEsWzE1LCJhSiJdLFsxNSwiYUgiXV0sWzQ2LFs1MyxbMixbMTUsImFGIl0sInNldEhpdERhdGEiLFs3LFsxNSwiYUciXSxbMTUsImFKIl1dXSxbImFFIixbMTUsImFGIl0sWzM5LFsyLFsxNSwiYUYiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImgiXSwiQk8iXV1dLFsxNyxbMTUsImkiXSwiWCJdLFsxNyxbMTUsImkiXSwiUCJdXV1dXV1dXV1dXV1dXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19jY2RfY29udmVyc2lvbl9tYXJraW5nIixbNDYsImEiXSxbMjIsWzMwLFsyOCxbMTcsWzE1LCJhIl0sImNvbnZlcnNpb25SdWxlcyJdXSxbMjAsWzE3LFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sImxlbmd0aCJdLDBdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmNvcHlQcmVIaXQiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJpbnRlcm5hbC5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJmIiwiZmlyc3RfdmlzaXQiXSxbNTIsImciLCJzZXNzaW9uX3N0YXJ0Il0sWzQxLCJoIl0sWzQxLCJpIl0sWyJkIixbMTcsWzE1LCJhIl0sImluc3RhbmNlRGVzdGluYXRpb25JZCJdLFs1MSwiIixbNywiaiJdLFs1MiwiayIsWzgsInByZUhpdCIsWzE1LCJqIl1dXSxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiUCJdLHRydWVdXSxbNjUsImwiLFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sWzQ2LFs1MyxbMjIsWyJjIixbMTcsWzE1LCJsIl0sIm1hdGNoaW5nUnVsZXMiXSxbMTUsImsiXV0sWzQ2LFs1MyxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQVYiXSx0cnVlXV0sWzRdXV1dXV1dLFsyMixbMixbMTUsImoiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQVoiXV1dLFs0NixbNTMsWzIyLFsyOCxbMTUsImgiXV0sWzQ2LFs1MyxbNTIsImwiLFsiYiIsWzE1LCJqIl0sWzgsIm9taXRIaXREYXRhIix0cnVlLCJvbWl0TWV0YWRhdGEiLHRydWVdXV0sWzIsWzE1LCJsIl0sInNldEV2ZW50TmFtZSIsWzcsWzE1LCJmIl1dXSxbMywiaCIsWzgsInByZUhpdCIsWzE1LCJsIl1dXV1dXSxbNjUsImwiLFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sWzQ2LFs1MyxbMjIsWyJjIixbMTcsWzE1LCJsIl0sIm1hdGNoaW5nUnVsZXMiXSxbMTUsImgiXV0sWzQ2LFs1MyxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQkEiXSx0cnVlXV0sWzRdXV1dXV1dXV1dLFsyMixbMixbMTUsImoiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQkwiXV1dLFs0NixbNTMsWzIyLFsyOCxbMTUsImkiXV0sWzQ2LFs1MyxbNTIsImwiLFsiYiIsWzE1LCJqIl0sWzgsIm9taXRIaXREYXRhIix0cnVlLCJvbWl0TWV0YWRhdGEiLHRydWVdXV0sWzIsWzE1LCJsIl0sInNldEV2ZW50TmFtZSIsWzcsWzE1LCJnIl1dXSxbMywiaSIsWzgsInByZUhpdCIsWzE1LCJsIl1dXV1dXSxbNjUsImwiLFsxNyxbMTUsImEiXSwiY29udmVyc2lvblJ1bGVzIl0sWzQ2LFs1MyxbMjIsWyJjIixbMTcsWzE1LCJsIl0sIm1hdGNoaW5nUnVsZXMiXSxbMTUsImkiXV0sWzQ2LFs1MyxbMixbMTUsImoiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImUiXSwiQk0iXSx0cnVlXV0sWzRdXV1dXV1dXV1dXV0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXQogLFs1MCwiX19jY2RfZW1fZG93bmxvYWQiLFs0NiwiYSJdLFs1MCwicSIsWzQ2LCJ2Il0sWzM2LFsxLFsxNSwidiJdLFsyMSxbMixbMixbMTUsInYiXSwidG9Mb3dlckNhc2UiLFs3XV0sIm1hdGNoIixbNyxbMTUsInAiXV1dLFs0NV1dXV1dLFs1MCwiciIsWzQ2LCJ2Il0sWzUyLCJ3IixbMixbMTcsWzE1LCJ2Il0sInBhdGhuYW1lIl0sInNwbGl0IixbNywiLiJdXV0sWzUyLCJ4IixbMzksWzE4LFsxNyxbMTUsInciXSwibGVuZ3RoIl0sMV0sWzE2LFsxNSwidyJdLFszNyxbMTcsWzE1LCJ3Il0sImxlbmd0aCJdLDFdXSwiIl1dLFszNixbMTYsWzIsWzE1LCJ4Il0sInNwbGl0IixbNywiLyJdXSwwXV1dLFs1MCwicyIsWzQ2LCJ2Il0sWzM2LFszOSxbMTIsWzIsWzE3LFsxNSwidiJdLCJwYXRobmFtZSJdLCJzdWJzdHJpbmciLFs3LDAsMV1dLCIvIl0sWzE3LFsxNSwidiJdLCJwYXRobmFtZSJdLFswLCIvIixbMTcsWzE1LCJ2Il0sInBhdGhuYW1lIl1dXV1dLFs1MCwidCIsWzQ2LCJ2Il0sWzQxLCJ3Il0sWzMsInciLCIiXSxbMjIsWzEsWzE1LCJ2Il0sWzE3LFsxNSwidiJdLCJocmVmIl1dLFs0NixbNTMsWzQxLCJ4Il0sWzMsIngiLFsyLFsxNyxbMTUsInYiXSwiaHJlZiJdLCJpbmRleE9mIixbNywiIyJdXV0sWzMsInciLFszOSxbMjMsWzE1LCJ4Il0sMF0sWzE3LFsxNSwidiJdLCJocmVmIl0sWzIsWzE3LFsxNSwidiJdLCJocmVmIl0sInN1YnN0cmluZyIsWzcsMCxbMTUsIngiXV1dXV1dXV0sWzM2LFsxNSwidyJdXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJ0ZW1wbGF0ZVN0b3JhZ2UiXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9jY2RFbURvd25sb2FkQWN0aXZpdHkiXV0sWzUyLCJmIixbMTcsWzE1LCJkIl0sIkEiXV0sWzUyLCJnIiwiZmlsZV9kb3dubG9hZCJdLFs1MiwiaCIsImlzUmVnaXN0ZXJlZCJdLFs1MiwiaSIsWzE3LFsxNSwiYSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXV0sWzIyLFsiYiIsWzE1LCJpIl0sWzE1LCJmIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFsyLFsxNSwiZSJdLCJBIixbNyxbMTUsImkiXSxbMTcsWzE1LCJhIl0sImluY2x1ZGVQYXJhbXMiXV1dLFsyMixbMixbMTUsImMiXSwiZ2V0SXRlbSIsWzcsWzE1LCJoIl1dXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImoiLFsicmVxdWlyZSIsImludGVybmFsLmFkZERhdGFMYXllckV2ZW50TGlzdGVuZXIiXV0sWzUyLCJrIixbInJlcXVpcmUiLCJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkxpbmtDbGljayJdXSxbNTIsImwiLFsxNSwiX19tb2R1bGVfZW5oYW5jZWRNZWFzdXJlbWVudCJdXSxbNTIsIm0iLFsicmVxdWlyZSIsInBhcnNlVXJsIl1dLFs1MiwibiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2VuZEd0YWdFdmVudCJdXSxbNTIsIm8iLFsyLFsxNSwibCJdLCJBIixbNywiZG93bmxvYWQiXV1dLFs1MiwicCIsWzAsIl4ocGRmfHhsc3g/fGRvY3g/fHR4dHxydGZ8Y3N2fGV4ZXxrZXl8cHAoc3x0fHR4KXw3enxwa2d8cmFyfGd6fHppcHxhdml8IiwibW92fG1wNHxtcGU/Z3x3bXZ8bWlkaT98bXAzfHdhdnx3bWEpJCJdXSxbNTIsInUiLFsiayIsWzgsImNoZWNrVmFsaWRhdGlvbiIsdHJ1ZV1dXSxbMjIsWzI4LFsxNSwidSJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PbkZhaWx1cmUiLFs3XV0sWzM2XV1dXSxbMixbMTUsImMiXSwic2V0SXRlbSIsWzcsWzE1LCJoIl0sdHJ1ZV1dLFsiaiIsImd0bS5saW5rQ2xpY2siLFs1MSwiIixbNywidiIsInciXSxbInciXSxbNTIsIngiLFs4LCJldmVudElkIixbMTYsWzE1LCJ2Il0sImd0bS51bmlxdWVFdmVudElkIl0sImRlZmVycmFibGUiLHRydWVdXSxbNTIsInkiLFsxNixbMTUsInYiXSwiZ3RtLmVsZW1lbnRVcmwiXV0sWzUyLCJ6IixbIm0iLFsxNSwieSJdXV0sWzIyLFsyOCxbMTUsInoiXV0sWzQ2LFszNl1dXSxbNTIsImFBIixbInIiLFsxNSwieiJdXV0sWzIyLFsyOCxbInEiLFsxNSwiYUEiXV1dLFs0NixbNTMsWzM2XV1dXSxbNTIsImFCIixbOCwibGlua19pZCIsWzE2LFsxNSwidiJdLCJndG0uZWxlbWVudElkIl0sImxpbmtfdXJsIixbInQiLFsxNSwieiJdXSwibGlua190ZXh0IixbMTYsWzE1LCJ2Il0sImd0bS5lbGVtZW50VGV4dCJdLCJmaWxlX25hbWUiLFsicyIsWzE1LCJ6Il1dLCJmaWxlX2V4dGVuc2lvbiIsWzE1LCJhQSJdXV0sWzIsWzE1LCJsIl0sIkIiLFs3LFsxNSwieCJdXV0sWyJuIixbMTUsIm8iXSxbMTUsImciXSxbMTUsImFCIl0sWzE1LCJ4Il1dXSxbMTUsInUiXV0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTAsIl9fY2NkX2VtX2Zvcm0iLFs0NiwiYSJdLFs1MCwieCIsWzQ2LCJhTCJdLFs1MiwiYU0iLFszMCxbMTYsWzE1LCJhTCJdLFsxNSwiciJdXSxbOF1dXSxbNDMsWzE1LCJhTSJdLCJldmVudF91c2FnZSIsWzcsWzE3LFsxNSwiZyJdLCJIIl1dXSxbNDMsWzE1LCJhTCJdLFsxNSwiciJdLFsxNSwiYU0iXV1dLFs1MCwieSIsWzQ2LCJhTCIsImFNIl0sWzUyLCJhTiIsWzMwLFsxNixbMTUsImFMIl0sWzE1LCJyIl1dLFs4XV1dLFsyMixbMTYsWzE1LCJhTSJdLCJndG0uZm9ybUNhbmNlbGVkIl0sWzQ2LFs1MyxbNDMsWzE1LCJhTiJdLFsxNyxbMTUsImkiXSwiQUoiXSx0cnVlXV1dXSxbMixbMTUsInUiXSwiQiIsWzcsWzE1LCJhTCJdLFsxNSwiYU4iXV1dXSxbNTAsInoiLFs0NiwiYUwiLCJhTSIsImFOIl0sWzUyLCJhTyIsWzIsWzE1LCJ3Il0sImZpbHRlciIsWzcsWzUxLCIiLFs3LCJhUSJdLFszNixbMjAsWzIsWzE1LCJhUSJdLCJpbmRleE9mIixbNywiQVctIl1dLDBdXV1dXV0sWzIyLFsxOCxbMTcsWzE1LCJhTyJdLCJsZW5ndGgiXSwwXSxbNDYsWzUzLFsidiIsWzE1LCJhTyJdLFsxNSwiYUwiXSxbMTUsImFNIl0sWzE1LCJhTiJdXV1dXSxbNTIsImFQIixbMixbMTUsInciXSwiZmlsdGVyIixbNyxbNTEsIiIsWzcsImFRIl0sWzM2LFsyMSxbMixbMTUsImFRIl0sImluZGV4T2YiLFs3LCJBVy0iXV0sMF1dXV1dXSxbMjIsWzE4LFsxNyxbMTUsImFQIl0sImxlbmd0aCJdLDBdLFs0NixbNTMsWzQzLFsxNSwiYU4iXSwiZGVmZXJyYWJsZSIsdHJ1ZV0sWyJ2IixbMTUsImFQIl0sWzE1LCJhTCJdLFsxNSwiYU0iXSxbMTUsImFOIl1dXV1dXSxbNTAsImFLIixbNDZdLFs1MiwiYUwiLFsibSIsWyJsIiwwLDIuMTQ3NDgzNjQ3RTldXV0sWzQxLCJhTSJdLFszLCJhTSIsMF0sWzM2LFs1MSwiIixbNywiYU4iXSxbMjIsWzIwLFsxNSwiYU4iXSxbMTUsInMiXV0sWzQ2LFs1MyxbMywiYU0iLFsiayJdXSxbMzYsWzAsWyJtIixbMTUsImFNIl1dLFsxNSwiYUwiXV1dXV0sWzQ2LFsyMixbMjAsWzE1LCJhTiJdLFsxNSwibyJdXSxbNDYsWzUzLFsyMixbMjAsWzE1LCJhTSJdLDBdLFs0NixbNTMsWzM2LFswLFsibSIsWyJrIl1dLFsxNSwiYUwiXV1dXV1dLFs1MiwiYU8iLFsiayJdXSxbMjIsWzIzLFszNyxbMTUsImFPIl0sWzE1LCJhTSJdXSwyMDBdLFs0NixbNTMsWzUyLCJhUCIsWzE1LCJhTSJdXSxbMywiYU0iLDBdLFszNixbMCxbIm0iLFsxNSwiYVAiXV0sWzE1LCJhTCJdXV1dXV0sWzMsImFNIiwwXSxbMzYsWzAsWyJtIixbMTUsImFPIl1dLFsxNSwiYUwiXV1dXV1dXV1dXV0sWzUyLCJiIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVzIl1dLFs1MiwiYyIsWzE1LCJfX21vZHVsZV9jY2RFbUZvcm1BY3Rpdml0eSJdXSxbNTIsImQiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImUiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJmIixbInJlcXVpcmUiLCJ0ZW1wbGF0ZVN0b3JhZ2UiXV0sWzUyLCJnIixbMTUsIl9fbW9kdWxlX2dvbGRFdmVudFVzYWdlSWQiXV0sWzUyLCJoIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiaSIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImoiLFsxNSwiX19tb2R1bGVfYWR3b3Jkc0hpdFR5cGUiXV0sWzUyLCJrIixbInJlcXVpcmUiLCJnZXRUaW1lc3RhbXBNaWxsaXMiXV0sWzUyLCJsIixbInJlcXVpcmUiLCJnZW5lcmF0ZVJhbmRvbSJdXSxbNTIsIm0iLFsicmVxdWlyZSIsIm1ha2VTdHJpbmciXV0sWzUyLCJuIixbMTcsWzE1LCJoIl0sIkIiXV0sWzUyLCJvIiwiZm9ybV9zdWJtaXQiXSxbNTIsInAiLCJmb3JtX3N0YXJ0Il0sWzUyLCJxIiwiaXNSZWdpc3RlcmVkIl0sWzUyLCJyIiwiZXZlbnRNZXRhZGF0YSJdLFs1MiwicyIsImNsaWNrIl0sWzUyLCJ0IixbMTcsWzE1LCJhIl0sImluc3RhbmNlRGVzdGluYXRpb25JZCJdXSxbMjIsWyJkIixbMTUsInQiXSxbMTUsIm4iXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dLFszNl1dXV0sWzIsWzE1LCJjIl0sIkEiLFs3LFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl0sWzE3LFsxNSwiYSJdLCJza2lwVmFsaWRhdGlvbiJdLFsxNyxbMTUsImEiXSwiaW5jbHVkZVBhcmFtcyJdXV0sWzIyLFsyLFsxNSwiZiJdLCJnZXRJdGVtIixbNyxbMTUsInEiXV1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFsyLFsxNSwiZiJdLCJzZXRJdGVtIixbNyxbMTUsInEiXSx0cnVlXV0sWzUyLCJ1IixbMTUsIl9fbW9kdWxlX2VuaGFuY2VkTWVhc3VyZW1lbnQiXV0sWzUyLCJ2IixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50Il1dLFs1MiwidyIsWzIsWzE1LCJ1Il0sIkEiLFs3LCJmb3JtIl1dXSxbNTIsImFBIixbOF1dLFs1MiwiYUIiLFs1MSwiIixbNywiYUwiLCJhTSJdLFsyMixbMTUsImFNIl0sWzQ2LFsiYU0iXV1dLFs1MiwiYU4iLFsxNixbMTUsImFMIl0sImd0bS5lbGVtZW50SWQiXV0sWzIyLFsxNixbMTUsImFBIl0sWzE1LCJhTiJdXSxbNDYsWzM2XV1dLFs0MyxbMTUsImFBIl0sWzE1LCJhTiJdLHRydWVdLFs1MiwiYU8iLFs4LCJmb3JtX2lkIixbMTUsImFOIl0sImZvcm1fbmFtZSIsWzE2LFsxNSwiYUwiXSwiZ3RtLmludGVyYWN0ZWRGb3JtTmFtZSJdLCJmb3JtX2Rlc3RpbmF0aW9uIixbMTYsWzE1LCJhTCJdLCJndG0uZWxlbWVudFVybCJdLCJmb3JtX2xlbmd0aCIsWzE2LFsxNSwiYUwiXSwiZ3RtLmludGVyYWN0ZWRGb3JtTGVuZ3RoIl0sImZpcnN0X2ZpZWxkX2lkIixbMTYsWzE1LCJhTCJdLCJndG0uaW50ZXJhY3RlZEZvcm1GaWVsZElkIl0sImZpcnN0X2ZpZWxkX25hbWUiLFsxNixbMTUsImFMIl0sImd0bS5pbnRlcmFjdGVkRm9ybUZpZWxkTmFtZSJdLCJmaXJzdF9maWVsZF90eXBlIixbMTYsWzE1LCJhTCJdLCJndG0uaW50ZXJhY3RlZEZvcm1GaWVsZFR5cGUiXSwiZmlyc3RfZmllbGRfcG9zaXRpb24iLFsxNixbMTUsImFMIl0sImd0bS5pbnRlcmFjdGVkRm9ybUZpZWxkUG9zaXRpb24iXV1dLFs1MiwiYVAiLFs4LCJldmVudElkIixbMTYsWzE1LCJhTCJdLCJndG0udW5pcXVlRXZlbnRJZCJdXV0sWyJ4IixbMTUsImFQIl1dLFsieSIsWzE1LCJhUCJdLFsxNSwiYUwiXV0sWzQzLFsxNixbMTUsImFQIl0sWzE1LCJyIl1dLFsxNyxbMTUsImkiXSwiQUEiXSwiZm9ybV9zdGFydCJdLFsieiIsWzE1LCJwIl0sWzE1LCJhTyJdLFsxNSwiYVAiXV1dXSxbNTIsImFDIixbImFLIl1dLFs1MiwiYUQiLFs1MSwiIixbNywiYUwiLCJhTSJdLFs1MiwiYU4iLFsiYUMiLFsxNSwibyJdXV0sWyJhQiIsWzE1LCJhTCJdLFs0NF1dLFs1MiwiYU8iLFs4LCJmb3JtX2lkIixbMTYsWzE1LCJhTCJdLCJndG0uZWxlbWVudElkIl0sImZvcm1fbmFtZSIsWzE2LFsxNSwiYUwiXSwiZ3RtLmludGVyYWN0ZWRGb3JtTmFtZSJdLCJmb3JtX2Rlc3RpbmF0aW9uIixbMTYsWzE1LCJhTCJdLCJndG0uZWxlbWVudFVybCJdLCJmb3JtX2xlbmd0aCIsWzE2LFsxNSwiYUwiXSwiZ3RtLmludGVyYWN0ZWRGb3JtTGVuZ3RoIl0sImZvcm1fc3VibWl0X3RleHQiLFsxNixbMTUsImFMIl0sImd0bS5mb3JtU3VibWl0RWxlbWVudFRleHQiXV1dLFs0MyxbMTUsImFPIl0sImV2ZW50X2NhbGxiYWNrIixbMTUsImFNIl1dLFs1MiwiYVAiLFs4LCJldmVudElkIixbMTYsWzE1LCJhTCJdLCJndG0udW5pcXVlRXZlbnRJZCJdXV0sWyJ4IixbMTUsImFQIl1dLFsieSIsWzE1LCJhUCJdLFsxNSwiYUwiXV0sWzQzLFsxNixbMTUsImFQIl0sWzE1LCJyIl1dLFsxNyxbMTUsImkiXSwiQUEiXSwiZm9ybV9zdWJtaXQiXSxbNDMsWzE2LFsxNSwiYVAiXSxbMTUsInIiXV0sWzE3LFsxNSwiaSJdLCJTIl0sWzE1LCJhTiJdXSxbInoiLFsxNSwibyJdLFsxNSwiYU8iXSxbMTUsImFQIl1dXV0sWzUyLCJhRSIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuYWRkRGF0YUxheWVyRXZlbnRMaXN0ZW5lciJdXSxbNTIsImFGIixbInJlcXVpcmUiLCJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkZvcm1TdWJtaXQiXV0sWzUyLCJhRyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25Gb3JtSW50ZXJhY3Rpb24iXV0sWzUyLCJhSCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25DbGljayJdXSxbNTIsImFJIixbImFHIl1dLFsyMixbMjgsWzE1LCJhSSJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PbkZhaWx1cmUiLFs3XV0sWzM2XV1dXSxbImFFIiwiZ3RtLmZvcm1JbnRlcmFjdCIsWzE1LCJhQiJdLFsxNSwiYUkiXV0sWzUyLCJhSiIsWyJhRiIsWzgsImNoZWNrVmFsaWRhdGlvbiIsZmFsc2UsIndhaXRGb3JUYWdzIixmYWxzZV1dXSxbMjIsWzI4LFsxNSwiYUoiXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25GYWlsdXJlIixbN11dLFszNl1dXV0sWyJhRSIsImd0bS5mb3JtU3VibWl0IixbMTUsImFEIl0sWzE1LCJhSiJdXSxbMjIsWyJlIixbMTcsWzE1LCJiIl0sIkNQIl1dLFs0NixbNTMsWzUyLCJhTCIsWyJhSCIsWzgsInVzZVYyRXZlbnROYW1lIix0cnVlLCJjc3NTZWxlY3RvciIsWzAsWzAsWzAsWzAsWzAsWzAsWzAsImZvcm0gYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0sICIsImZvcm0gYnV0dG9uOm5vdChbdHlwZV0pLCJdLCJmb3JtIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0sICJdLCJmb3JtIGlucHV0W3R5cGU9XCJpbWFnZVwiXSwgIl0sImJ1dHRvbltmb3JtXVt0eXBlPVwic3VibWl0XCJdLCAiXSwiYnV0dG9uW2Zvcm1dOm5vdChbdHlwZV0pLCAiXSwiaW5wdXRbdHlwZT1cInN1Ym1pdFwiXVtmb3JtXSwgIl0sImlucHV0W3R5cGU9XCJpbWFnZVwiXVtmb3JtXSJdXV1dLFs1MCwiYU0iLFs0NiwiYU4iLCJhTyJdLFs1MiwiYVAiLFs4LCJldmVudF9jYWxsYmFjayIsWzE1LCJhTyJdXV0sWzUyLCJhUSIsWzgsImV2ZW50SWQiLFsxNixbMTUsImFOIl0sImd0bS51bmlxdWVFdmVudElkIl1dXSxbIngiLFsxNSwiYVEiXV0sWyJ5IixbMTUsImFRIl0sWzE1LCJhTiJdXSxbNDMsWzE2LFsxNSwiYVEiXSxbMTUsInIiXV0sWzE3LFsxNSwiaSJdLCJBUiJdLFsxNyxbMTUsImoiXSwiSyJdXSxbNDMsWzE2LFsxNSwiYVEiXSxbMTUsInIiXV0sWzE3LFsxNSwiaSJdLCJBQSJdLCJjbGljayJdLFs0MyxbMTYsWzE1LCJhUSJdLFsxNSwiciJdXSxbMTcsWzE1LCJpIl0sIlMiXSxbImFDIixbMTUsInMiXV1dLFsieiIsWzE1LCJvIl0sWzE1LCJhUCJdLFsxNSwiYVEiXV1dLFsiYUUiLCJndG0uY2xpY2stdjIiLFsxNSwiYU0iXSxbMTUsImFMIl1dXV1dLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV1dCiAsWzUwLCJfX2NjZF9lbV9vdXRib3VuZF9jbGljayIsWzQ2LCJhIl0sWzUwLCJyIixbNDYsInciXSxbMjIsWzI4LFsxNSwidyJdXSxbNDYsWzM2LFs0NF1dXV0sWzQxLCJ4Il0sWzMsIngiLCIiXSxbMjIsWzEsWzE1LCJ3Il0sWzE3LFsxNSwidyJdLCJocmVmIl1dLFs0NixbNTMsWzQxLCJ5Il0sWzMsInkiLFsyLFsxNyxbMTUsInciXSwiaHJlZiJdLCJpbmRleE9mIixbNywiIyJdXV0sWzMsIngiLFszOSxbMjMsWzE1LCJ5Il0sMF0sWzE3LFsxNSwidyJdLCJocmVmIl0sWzIsWzE3LFsxNSwidyJdLCJocmVmIl0sInN1YnN0cmluZyIsWzcsMCxbMTUsInkiXV1dXV1dXV0sWzM2LFsxNSwieCJdXV0sWzUwLCJzIixbNDYsInciXSxbMjIsWzI4LFsxNSwidyJdXSxbNDYsWzM2LFs0NF1dXV0sWzQxLCJ4Il0sWzMsIngiLFsxNyxbMTUsInciXSwiaG9zdG5hbWUiXV0sWzUyLCJ5IixbMixbMTUsIngiXSwibWF0Y2giLFs3LCJed3d3XFxkKlxcLiJdXV0sWzIyLFsxLFsxNSwieSJdLFsxNixbMTUsInkiXSwwXV0sWzQ2LFszLCJ4IixbMixbMTUsIngiXSwic3Vic3RyaW5nIixbNyxbMTcsWzE2LFsxNSwieSJdLDBdLCJsZW5ndGgiXV1dXV1dLFszNixbMTUsIngiXV1dLFs1MCwidCIsWzQ2LCJ3Il0sWzIyLFsyOCxbMTUsInciXV0sWzQ2LFszNixmYWxzZV1dXSxbNTIsIngiLFsyLFsxNyxbMTUsInciXSwiaG9zdG5hbWUiXSwidG9Mb3dlckNhc2UiLFs3XV1dLFsyMixbMjgsWzE1LCJ4Il1dLFs0NixbNTMsWzM2LGZhbHNlXV1dXSxbNDEsInkiXSxbMywieSIsWzIsWyJzIixbIm8iLFsibiJdXV0sInRvTG93ZXJDYXNlIixbN11dXSxbNDEsInoiXSxbMywieiIsWzM3LFsxNyxbMTUsIngiXSwibGVuZ3RoIl0sWzE3LFsxNSwieSJdLCJsZW5ndGgiXV1dLFsyMixbMSxbMTgsWzE1LCJ6Il0sMF0sWzI5LFsyLFsxNSwieSJdLCJjaGFyQXQiLFs3LDBdXSwiLiJdXSxbNDYsWzUzLFszMixbMTUsInoiXSxbMywieiIsWzM3LFsxNSwieiJdLDFdXV0sWzMsInkiLFswLCIuIixbMTUsInkiXV1dXV1dLFsyMixbMSxbMTksWzE1LCJ6Il0sMF0sWzEyLFsyLFsxNSwieCJdLCJpbmRleE9mIixbNyxbMTUsInkiXSxbMTUsInoiXV1dLFsxNSwieiJdXV0sWzQ2LFs1MyxbMzYsZmFsc2VdXV1dLFszNix0cnVlXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJ0ZW1wbGF0ZVN0b3JhZ2UiXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9jY2RFbU91dGJvdW5kQ2xpY2tBY3Rpdml0eSJdXSxbNTIsImYiLFsxNyxbMTUsImQiXSwiRCJdXSxbNTIsImciLCJjbGljayJdLFs1MiwiaCIsImlzUmVnaXN0ZXJlZCJdLFs1MiwiaSIsWzE3LFsxNSwiYSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXV0sWzIyLFsiYiIsWzE1LCJpIl0sWzE1LCJmIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXSxbMzZdXV1dLFsyLFsxNSwiZSJdLCJBIixbNyxbMTUsImkiXSxbMTcsWzE1LCJhIl0sImluY2x1ZGVQYXJhbXMiXV1dLFsyMixbMixbMTUsImMiXSwiZ2V0SXRlbSIsWzcsWzE1LCJoIl1dXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImoiLFsicmVxdWlyZSIsImludGVybmFsLmFkZERhdGFMYXllckV2ZW50TGlzdGVuZXIiXV0sWzUyLCJrIixbInJlcXVpcmUiLCJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkxpbmtDbGljayJdXSxbNTIsImwiLFsxNSwiX19tb2R1bGVfZW5oYW5jZWRNZWFzdXJlbWVudCJdXSxbNTIsIm0iLFsicmVxdWlyZSIsImludGVybmFsLmdldFJlbW90ZUNvbmZpZ1BhcmFtZXRlciJdXSxbNTIsIm4iLFsicmVxdWlyZSIsImdldFVybCJdXSxbNTIsIm8iLFsicmVxdWlyZSIsInBhcnNlVXJsIl1dLFs1MiwicCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2VuZEd0YWdFdmVudCJdXSxbNTIsInEiLFsyLFsxNSwibCJdLCJBIixbNywib3V0Ym91bmRfY2xpY2siXV1dLFs1MiwidSIsWyJtIixbMTUsImkiXSwiY3Jvc3NfZG9tYWluX2NvbmRpdGlvbnMiXV0sWzUyLCJ2IixbImsiLFs4LCJhZmZpbGlhdGVEb21haW5zIixbMTUsInUiXSwiY2hlY2tWYWxpZGF0aW9uIix0cnVlLCJ3YWl0Rm9yVGFncyIsZmFsc2VdXV0sWzIyLFsyOCxbMTUsInYiXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25GYWlsdXJlIixbN11dLFszNl1dXV0sWzIsWzE1LCJjIl0sInNldEl0ZW0iLFs3LFsxNSwiaCJdLHRydWVdXSxbImoiLCJndG0ubGlua0NsaWNrIixbNTEsIiIsWzcsInciLCJ4Il0sWzUyLCJ5IixbIm8iLFsxNixbMTUsInciXSwiZ3RtLmVsZW1lbnRVcmwiXV1dLFsyMixbMjgsWyJ0IixbMTUsInkiXV1dLFs0NixbNTMsWyJ4Il0sWzM2XV1dXSxbNTIsInoiLFs4LCJsaW5rX2lkIixbMTYsWzE1LCJ3Il0sImd0bS5lbGVtZW50SWQiXSwibGlua19jbGFzc2VzIixbMTYsWzE1LCJ3Il0sImd0bS5lbGVtZW50Q2xhc3NlcyJdLCJsaW5rX3VybCIsWyJyIixbMTUsInkiXV0sImxpbmtfZG9tYWluIixbInMiLFsxNSwieSJdXSwib3V0Ym91bmQiLHRydWVdXSxbNDMsWzE1LCJ6Il0sImV2ZW50X2NhbGxiYWNrIixbMTUsIngiXV0sWzUyLCJhQSIsWzgsImV2ZW50SWQiLFsxNixbMTUsInciXSwiZ3RtLnVuaXF1ZUV2ZW50SWQiXSwiZGVmZXJyYWJsZSIsdHJ1ZV1dLFsyLFsxNSwibCJdLCJCIixbNyxbMTUsImFBIl1dXSxbInAiLFsxNSwicSJdLFsxNSwiZyJdLFsxNSwieiJdLFsxNSwiYUEiXV1dLFsxNSwidiJdXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19jY2RfZW1fcGFnZV92aWV3IixbNDYsImEiXSxbMjIsWzI4LFsxNyxbMTUsImEiXSwiaGlzdG9yeUV2ZW50cyJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLnNldFJlbW90ZUNvbmZpZ1BhcmFtZXRlciJdXSxbNTIsImQiLFsicmVxdWlyZSIsInRlbXBsYXRlU3RvcmFnZSJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfY2NkRW1QYWdlVmlld0FjdGl2aXR5Il1dLFs1MiwiZiIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImciLFsxNyxbMTUsImYiXSwiQyJdXSxbNTIsImgiLCJwYWdlX3ZpZXciXSxbNTIsImkiLCJpc1JlZ2lzdGVyZWQiXSxbNTIsImoiLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl1dLFsyMixbImIiLFsxNSwiaiJdLFsxNSwiZyJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbMixbMTUsImUiXSwiQSIsWzcsWzE1LCJqIl1dXSxbMjIsWzIsWzE1LCJkIl0sImdldEl0ZW0iLFs3LFsxNSwiaSJdXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dLFszNl1dXV0sWzUyLCJrIixbInJlcXVpcmUiLCJpbnRlcm5hbC5hZGREYXRhTGF5ZXJFdmVudExpc3RlbmVyIl1dLFs1MiwibCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25IaXN0b3J5Q2hhbmdlIl1dLFs1MiwibSIsWzE1LCJfX21vZHVsZV9lbmhhbmNlZE1lYXN1cmVtZW50Il1dLFs1MiwibiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2VuZEd0YWdFdmVudCJdXSxbNTIsIm8iLFsyLFsxNSwibSJdLCJBIixbNywicGFnZV92aWV3Il1dXSxbNTIsInAiLFs4LCJpbnRlcnZhbCIsMTAwMCwidXNlVjJFdmVudE5hbWUiLHRydWVdXSxbNTIsInEiLFsibCIsWzE1LCJwIl1dXSxbMjIsWzI4LFsxNSwicSJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PbkZhaWx1cmUiLFs3XV0sWzM2XV1dXSxbMixbMTUsImQiXSwic2V0SXRlbSIsWzcsWzE1LCJpIl0sdHJ1ZV1dLFsiayIsImd0bS5oaXN0b3J5Q2hhbmdlLXYyIixbNTEsIiIsWzcsInIiLCJzIl0sWyJzIl0sWzUyLCJ0IixbMTYsWzE1LCJyIl0sImd0bS5vbGRVcmwiXV0sWzIyLFsyMCxbMTYsWzE1LCJyIl0sImd0bS5uZXdVcmwiXSxbMTUsInQiXV0sWzQ2LFszNl1dXSxbNTIsInUiLFsxNixbMTUsInIiXSwiZ3RtLmhpc3RvcnlDaGFuZ2VTb3VyY2UiXV0sWzIyLFsxLFsxLFsyMSxbMTUsInUiXSwicHVzaFN0YXRlIl0sWzIxLFsxNSwidSJdLCJwb3BzdGF0ZSJdXSxbMjEsWzE1LCJ1Il0sInJlcGxhY2VTdGF0ZSJdXSxbNDYsWzUzLFszNl1dXV0sWzUyLCJ2IixbOF1dLFsyMixbMTcsWzE1LCJhIl0sImluY2x1ZGVQYXJhbXMiXSxbNDYsWzUzLFs0MyxbMTUsInYiXSwicGFnZV9sb2NhdGlvbiIsWzE2LFsxNSwiciJdLCJndG0ubmV3VXJsIl1dLFs0MyxbMTUsInYiXSwicGFnZV9yZWZlcnJlciIsWzE1LCJ0Il1dXV1dLFs1MiwidyIsWzgsImV2ZW50SWQiLFsxNixbMTUsInIiXSwiZ3RtLnVuaXF1ZUV2ZW50SWQiXV1dLFsyMixbMjEsWzE3LFsxNSwiYSJdLCJkZWZlclBhZ2VWaWV3Il0sZmFsc2VdLFs0NixbNTMsWzQzLFsxNSwidyJdLCJkZWZlcnJhYmxlIix0cnVlXV1dXSxbMixbMTUsIm0iXSwiQiIsWzcsWzE1LCJ3Il1dXSxbIm4iLFsxNSwibyJdLFsxNSwiaCJdLFsxNSwidiJdLFsxNSwidyJdXV0sWzE1LCJxIl1dLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV1dCiAsWzUwLCJfX2NjZF9lbV9zY3JvbGwiLFs0NiwiYSJdLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwidGVtcGxhdGVTdG9yYWdlIl1dLFs1MiwiZCIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfY2NkRW1TY3JvbGxBY3Rpdml0eSJdXSxbNTIsImYiLFsxNyxbMTUsImQiXSwiRSJdXSxbNTIsImciLCJzY3JvbGwiXSxbNTIsImgiLCJpc1JlZ2lzdGVyZWQiXSxbNTIsImkiLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl1dLFsyMixbImIiLFsxNSwiaSJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbMixbMTUsImUiXSwiQSIsWzcsWzE1LCJpIl0sWzE3LFsxNSwiYSJdLCJpbmNsdWRlUGFyYW1zIl1dXSxbMjIsWzIsWzE1LCJjIl0sImdldEl0ZW0iLFs3LFsxNSwiaCJdXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dLFszNl1dXV0sWzUyLCJqIixbInJlcXVpcmUiLCJpbnRlcm5hbC5hZGREYXRhTGF5ZXJFdmVudExpc3RlbmVyIl1dLFs1MiwiayIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25TY3JvbGwiXV0sWzUyLCJsIixbMTUsIl9fbW9kdWxlX2VuaGFuY2VkTWVhc3VyZW1lbnQiXV0sWzUyLCJtIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50Il1dLFs1MiwibiIsWzIsWzE1LCJsIl0sIkEiLFs3LCJzY3JvbGwiXV1dLFs1MiwibyIsWyJrIixbOCwidmVydGljYWxUaHJlc2hvbGRVbml0cyIsIlBFUkNFTlQiLCJ2ZXJ0aWNhbFRocmVzaG9sZHMiLDkwXV1dLFsyMixbMjgsWzE1LCJvIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uRmFpbHVyZSIsWzddXSxbMzZdXV1dLFsyLFsxNSwiYyJdLCJzZXRJdGVtIixbNyxbMTUsImgiXSx0cnVlXV0sWyJqIiwiZ3RtLnNjcm9sbERlcHRoIixbNTEsIiIsWzcsInAiLCJxIl0sWyJxIl0sWzUyLCJyIixbOCwiZXZlbnRJZCIsWzE2LFsxNSwicCJdLCJndG0udW5pcXVlRXZlbnRJZCJdLCJkZWZlcnJhYmxlIix0cnVlXV0sWzUyLCJzIixbOCwicGVyY2VudF9zY3JvbGxlZCIsWzE2LFsxNSwicCJdLCJndG0uc2Nyb2xsVGhyZXNob2xkIl1dXSxbMixbMTUsImwiXSwiQiIsWzcsWzE1LCJyIl1dXSxbIm0iLFsxNSwibiJdLFsxNSwiZyJdLFsxNSwicyJdLFsxNSwiciJdXV0sWzE1LCJvIl1dLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV1dCiAsWzUwLCJfX2NjZF9lbV9zaXRlX3NlYXJjaCIsWzQ2LCJhIl0sWzUyLCJiIixbInJlcXVpcmUiLCJnZXRRdWVyeVBhcmFtZXRlcnMiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50Il1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiZ2V0Q29udGFpbmVyVmVyc2lvbiJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfZmVhdHVyZXMiXV0sWzUyLCJmIixbInJlcXVpcmUiLCJpbnRlcm5hbC5pc0ZlYXR1cmVFbmFibGVkIl1dLFs1MiwiZyIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImgiLFsxNSwiX19tb2R1bGVfY2NkRW1TaXRlU2VhcmNoQWN0aXZpdHkiXV0sWzUyLCJpIixbMixbMTUsImgiXSwiQSIsWzcsWzE3LFsxNSwiYSJdLCJzZWFyY2hRdWVyeVBhcmFtcyJdLFsxNSwiYiJdXV1dLFs1MiwiaiIsWzMwLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl0sWzE3LFsiZCJdLCJjb250YWluZXJJZCJdXV0sWzUyLCJrIixbOCwiZGVmZXJyYWJsZSIsdHJ1ZSwiZXZlbnRJZCIsWzE3LFsxNSwiYSJdLCJndG1FdmVudElkIl0sImV2ZW50TWV0YWRhdGEiLFs4LCJlbV9ldmVudCIsdHJ1ZV1dXSxbMjIsWzE1LCJpIl0sWzQ2LFs1MyxbNTIsImwiLFszOSxbMjgsWzI4LFsxNyxbMTUsImEiXSwiaW5jbHVkZVBhcmFtcyJdXV0sWzIsWzE1LCJoIl0sIkIiLFs3LFsxNSwiaSJdLFsxNyxbMTUsImEiXSwiYWRkaXRpb25hbFF1ZXJ5UGFyYW1zIl0sWzE1LCJiIl1dXSxbOF1dXSxbNDMsWzE3LFsxNSwiayJdLCJldmVudE1ldGFkYXRhIl0sWzE3LFsxNSwiZyJdLCJaIl0sImEiXSxbImMiLFsxNSwiaiJdLCJ2aWV3X3NlYXJjaF9yZXN1bHRzIixbMTUsImwiXSxbMTUsImsiXV1dXV0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTAsIl9fY2NkX2VtX3ZpZGVvIixbNDYsImEiXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsInRlbXBsYXRlU3RvcmFnZSJdXSxbNTIsImQiLFsxNSwiX19tb2R1bGVfYXV0b0V2ZW50QmxvY2tTY2hlbWEiXV0sWzUyLCJlIixbMTUsIl9fbW9kdWxlX2NjZEVtVmlkZW9BY3Rpdml0eSJdXSxbNTIsImYiLFsxNyxbMTUsImQiXSwiRiJdXSxbNTIsImciLCJ2aWRlb19zdGFydCJdLFs1MiwiaCIsInZpZGVvX3Byb2dyZXNzIl0sWzUyLCJpIiwidmlkZW9fY29tcGxldGUiXSxbNTIsImoiLCJpc1JlZ2lzdGVyZWQiXSxbNTIsImsiLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl1dLFsyMixbImIiLFsxNSwiayJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbMixbMTUsImUiXSwiQSIsWzcsWzE1LCJrIl0sWzE3LFsxNSwiYSJdLCJpbmNsdWRlUGFyYW1zIl1dXSxbMjIsWzIsWzE1LCJjIl0sImdldEl0ZW0iLFs3LFsxNSwiaiJdXV0sWzQ2LFs1MyxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dLFszNl1dXV0sWzUyLCJsIixbInJlcXVpcmUiLCJpbnRlcm5hbC5hZGREYXRhTGF5ZXJFdmVudExpc3RlbmVyIl1dLFs1MiwibSIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25Zb3VUdWJlQWN0aXZpdHkiXV0sWzUyLCJuIixbMTUsIl9fbW9kdWxlX2VuaGFuY2VkTWVhc3VyZW1lbnQiXV0sWzUyLCJvIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50Il1dLFs1MiwicCIsWzIsWzE1LCJuIl0sIkEiLFs3LCJ2aWRlbyJdXV0sWzUyLCJxIixbIm0iLFs4LCJjYXB0dXJlQ29tcGxldGUiLHRydWUsImNhcHR1cmVTdGFydCIsdHJ1ZSwicHJvZ3Jlc3NUaHJlc2hvbGRzUGVyY2VudCIsWzcsMTAsMjUsNTAsNzVdXV1dLFsyMixbMjgsWzE1LCJxIl1dLFs0NixbNTMsWzIsWzE1LCJhIl0sImd0bU9uRmFpbHVyZSIsWzddXSxbMzZdXV1dLFsyLFsxNSwiYyJdLCJzZXRJdGVtIixbNyxbMTUsImoiXSx0cnVlXV0sWyJsIiwiZ3RtLnZpZGVvIixbNTEsIiIsWzcsInIiLCJzIl0sWyJzIl0sWzUyLCJ0IixbMTYsWzE1LCJyIl0sImd0bS52aWRlb1N0YXR1cyJdXSxbNDEsInUiXSxbMjIsWzIwLFsxNSwidCJdLCJzdGFydCJdLFs0NixbNTMsWzMsInUiLFsxNSwiZyJdXV1dLFs0NixbMjIsWzIwLFsxNSwidCJdLCJwcm9ncmVzcyJdLFs0NixbNTMsWzMsInUiLFsxNSwiaCJdXV1dLFs0NixbMjIsWzIwLFsxNSwidCJdLCJjb21wbGV0ZSJdLFs0NixbNTMsWzMsInUiLFsxNSwiaSJdXV1dLFs0NixbNTMsWzM2XV1dXV1dXV0sWzUyLCJ2IixbOCwidmlkZW9fY3VycmVudF90aW1lIixbMTYsWzE1LCJyIl0sImd0bS52aWRlb0N1cnJlbnRUaW1lIl0sInZpZGVvX2R1cmF0aW9uIixbMTYsWzE1LCJyIl0sImd0bS52aWRlb0R1cmF0aW9uIl0sInZpZGVvX3BlcmNlbnQiLFsxNixbMTUsInIiXSwiZ3RtLnZpZGVvUGVyY2VudCJdLCJ2aWRlb19wcm92aWRlciIsWzE2LFsxNSwiciJdLCJndG0udmlkZW9Qcm92aWRlciJdLCJ2aWRlb190aXRsZSIsWzE2LFsxNSwiciJdLCJndG0udmlkZW9UaXRsZSJdLCJ2aWRlb191cmwiLFsxNixbMTUsInIiXSwiZ3RtLnZpZGVvVXJsIl0sInZpc2libGUiLFsxNixbMTUsInIiXSwiZ3RtLnZpZGVvVmlzaWJsZSJdXV0sWzUyLCJ3IixbOCwiZXZlbnRJZCIsWzE2LFsxNSwiciJdLCJndG0udW5pcXVlRXZlbnRJZCJdLCJkZWZlcnJhYmxlIix0cnVlXV0sWzIsWzE1LCJuIl0sIkIiLFs3LFsxNSwidyJdXV0sWyJvIixbMTUsInAiXSxbMTUsInUiXSxbMTUsInYiXSxbMTUsInciXV1dLFsxNSwicSJdXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19jY2RfZ2FfZmlyc3QiLFs0NiwiYSJdLFs1MCwiZSIsWzQ2LCJmIl0sWzIsWzE1LCJjIl0sIkEiLFs3LFsxNSwiZiJdXV0sWzIsWzE1LCJkIl0sIkEiLFs3LFsxNSwiZiJdXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayJdXSxbNTIsImMiLFsxNSwiX19tb2R1bGVfdGFza1BsYXRmb3JtRGV0ZWN0aW9uIl1dLFs1MiwiZCIsWzE1LCJfX21vZHVsZV90YXNrU2V0VGVzdEhpdFBhcmFtcyJdXSxbImIiLFsxNyxbMTUsImEiXSwiaW5zdGFuY2VEZXN0aW5hdGlvbklkIl0sWzUxLCIiLFs3LCJmIl0sWyJlIixbMTUsImYiXV1dXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19jY2RfZ2FfbGFzdCIsWzQ2LCJhIl0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTAsIl9fY2NkX2dhX3JlZ3Njb3BlIixbNDYsImEiXSxbNTIsImIiLFsxNSwiX19tb2R1bGVfY2NkR2FSZWdpb25TY29wZWRTZXR0aW5ncyJdXSxbNTIsImMiLFsyLFsxNSwiYiJdLCJCIixbNyxbMTUsImEiXV1dXSxbMixbMTUsImIiXSwiQSIsWzcsWzE1LCJhIl0sWzE1LCJjIl1dXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19lIixbNDYsImEiXSxbMzYsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFsicmVxdWlyZSIsImludGVybmFsLmdldEV2ZW50RGF0YSJdXSxbIiQwIiwiZXZlbnQiXV1dXQogLFs1MCwiX19nY3QiLFs0NiwiYSJdLFs1MCwiZyIsWzQ2LCJtIl0sWzUyLCJuIixbN11dLFs2NSwibyIsWzE1LCJtIl0sWzQ2LFs1MyxbNTIsInAiLFsiYiIsWzE1LCJvIl1dXSxbMjIsWzIxLFsxNSwicCJdLFs0NV1dLFs0NixbMixbMTUsIm4iXSwicHVzaCIsWzcsWzE1LCJwIl1dXV1dXV1dLFszNixbMTUsIm4iXV1dLFs1MCwiaCIsWzQ2LCJtIl0sWzUyLCJuIixbMTcsWzE1LCJtIl0sImxpbmtlciJdXSxbMjIsWzEsWzE1LCJuIl0sWzE2LFsxNSwibiJdLCJkb21haW5zIl1dLFs0NixbNTMsWzQzLFsxNSwibiJdLCJkb21haW5zIixbImciLFsxNixbMTUsIm4iXSwiZG9tYWlucyJdXV1dXV0sWzM2LFsxNSwibiJdXV0sWzUwLCJpIixbNDYsIm0iXSxbNTIsIm4iLFsxNyxbMTUsIm0iXSwicmVmZXJyYWxFeGNsdXNpb25EZWZpbml0aW9uIl1dLFsyMixbMSxbMTUsIm4iXSxbMTYsWzE1LCJuIl0sImluY2x1ZGVfY29uZGl0aW9ucyJdXSxbNDYsWzUzLFs0MyxbMTUsIm4iXSwiaW5jbHVkZV9jb25kaXRpb25zIixbImciLFsxNixbMTUsIm4iXSwiaW5jbHVkZV9jb25kaXRpb25zIl1dXV1dXSxbMzYsWzE1LCJuIl1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmNyZWF0ZVJlZ2V4Il1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiZ2V0VHlwZSJdXSxbNTIsImQiLFsicmVxdWlyZSIsImludGVybmFsLm1lcmdlUmVtb3RlQ29uZmlnIl1dLFs1MiwiZSIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJEZXN0aW5hdGlvbiJdXSxbNTIsImYiLFsicmVxdWlyZSIsInRlbXBsYXRlU3RvcmFnZSJdXSxbNTIsImoiLFszMCxbMixbMTUsImYiXSwiZ2V0SXRlbSIsWzcsInJlZ2V4Il1dLFsiYiIsIlsuKitcXC0/XiR7fSgpfFtcXF1cXFxcXSIsImciXV1dLFsyLFsxNSwiZiJdLCJzZXRJdGVtIixbNywicmVnZXgiLFsxNSwiaiJdXV0sWzUyLCJrIixbOF1dLFs1MiwibCIsWzE3LFsxNSwiYSJdLCJzZXNzaW9uRHVyYXRpb24iXV0sWzIyLFsxOCxbMTUsImwiXSwwXSxbNDYsWzUzLFs0MyxbMTUsImsiXSwic2Vzc2lvbl9kdXJhdGlvbiIsWzE1LCJsIl1dXV1dLFs0MyxbMTUsImsiXSwiZXZlbnRfc2V0dGluZ3MiLFsxNyxbMTUsImEiXSwiZXZlbnRTZXR0aW5ncyJdXSxbNDMsWzE1LCJrIl0sImR5bmFtaWNfZXZlbnRfc2V0dGluZ3MiLFsxNyxbMTUsImEiXSwiZHluYW1pY0V2ZW50U2V0dGluZ3MiXV0sWzQzLFsxNSwiayJdLCJnb29nbGVfc2lnbmFscyIsWzIwLFsxNyxbMTUsImEiXSwiZ29vZ2xlU2lnbmFscyJdLDFdXSxbNDMsWzE1LCJrIl0sImdvb2dsZV90bGQiLFsxNyxbMTUsImEiXSwiZm9yZWlnblRsZCJdXSxbNDMsWzE1LCJrIl0sImdhX3Jlc3RyaWN0X2RvbWFpbiIsWzIwLFsxNyxbMTUsImEiXSwicmVzdHJpY3REb21haW4iXSwxXV0sWzQzLFsxNSwiayJdLCJpbnRlcm5hbF90cmFmZmljX3Jlc3VsdHMiLFsxNyxbMTUsImEiXSwiaW50ZXJuYWxUcmFmZmljUmVzdWx0cyJdXSxbNDMsWzE1LCJrIl0sImxpbmtlciIsWyJoIixbMTUsImEiXV1dLFs0MyxbMTUsImsiXSwicmVmZXJyYWxfZXhjbHVzaW9uX2RlZmluaXRpb24iLFsiaSIsWzE1LCJhIl1dXSxbImQiLFsxNyxbMTUsImEiXSwidHJhY2tpbmdJZCJdLFsxNSwiayJdXSxbImUiLFsxNyxbMTUsImEiXSwidHJhY2tpbmdJZCJdXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19vZ3RfMXBfZGF0YV92MiIsWzQ2LCJhIl0sWzUwLCJwIixbNDYsInIiLCJzIiwidCIsInUiXSxbMjIsWzIwLFsxNixbMTUsInMiXSwidHlwZSJdLFsxNSwidCJdXSxbNDYsWzUzLFsyMixbMjgsWzE1LCJyIl1dLFs0NixbNTMsWzMsInIiLFs4XV1dXV0sWzIyLFsyOCxbMTYsWzE1LCJyIl0sWzE1LCJ0Il1dXSxbNDYsWzUzLFs0MyxbMTUsInIiXSxbMTUsInQiXSxbMTYsWzE1LCJzIl0sInVzZXJEYXRhIl1dLFs1MiwidiIsWzgsIm1vZGUiLCJhIl1dLFsyMixbMTYsWzE1LCJzIl0sInRhZ05hbWUiXSxbNDYsWzUzLFs0MyxbMTUsInYiXSwibG9jYXRpb24iLFsxNixbMTUsInMiXSwidGFnTmFtZSJdXV1dXSxbMjIsWzE2LFsxNSwicyJdLCJxdWVyeVNlbGVjdG9yIl0sWzQ2LFs1MyxbNDMsWzE1LCJ2Il0sInNlbGVjdG9yIixbMTYsWzE1LCJzIl0sInF1ZXJ5U2VsZWN0b3IiXV1dXV0sWzQzLFsxNSwidSJdLFsxNSwidCJdLFsxNSwidiJdXV1dXV1dXSxbMzYsWzE1LCJyIl1dXSxbNTAsInEiLFs0NiwiciIsInMiLCJ0Il0sWzIyLFsyOCxbMTYsWzE1LCJhIl0sWzE1LCJ0Il1dXSxbNDYsWzM2XV1dLFs0MyxbMTUsInIiXSxbMTUsInMiXSxbOCwidmFsdWUiLFsxNixbMTUsImEiXSxbMTUsInQiXV1dXV0sWzIyLFsyOCxbMTcsWzE1LCJhIl0sImlzRW5hYmxlZCJdXSxbNDYsWzUzLFsyLFsxNSwiYSJdLCJndG1PblN1Y2Nlc3MiLFs3XV0sWzM2XV1dXSxbNTIsImIiLFsicmVxdWlyZSIsIk9iamVjdCJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVGbGFncyJdXSxbNTIsImUiLFsxNSwiX19tb2R1bGVfZmVhdHVyZXMiXV0sWzUyLCJmIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXREZXN0aW5hdGlvbklkcyJdXSxbNTIsImciLFsicmVxdWlyZSIsImludGVybmFsLmRldGVjdFVzZXJQcm92aWRlZERhdGEiXV0sWzUyLCJoIixbInJlcXVpcmUiLCJxdWVyeVBlcm1pc3Npb24iXV0sWzUyLCJpIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZXRSZW1vdGVDb25maWdQYXJhbWV0ZXIiXV0sWzUyLCJqIixbInJlcXVpcmUiLCJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIl1dLFs1MiwiayIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImwiLFsxNSwiX19tb2R1bGVfZ3RhZ1NjaGVtYSJdXSxbNTIsIm0iLFsiYyIsWzE3LFsxNSwiZSJdLCJBVCJdXV0sWzUyLCJuIixbMzAsWyJmIl0sWzddXV0sWzUyLCJvIixbOCwiZW5hYmxlX2NvZGUiLHRydWVdXSxbMjIsWzE3LFsxNSwiYSJdLCJpc0F1dG9FbmFibGVkIl0sWzQ2LFs1MyxbNTIsInIiLFs3XV0sWzIyLFsxLFsxNyxbMTUsImEiXSwiYXV0b0NvbGxlY3RFeGNsdXNpb25TZWxlY3RvcnMiXSxbMTcsWzE3LFsxNSwiYSJdLCJhdXRvQ29sbGVjdEV4Y2x1c2lvblNlbGVjdG9ycyJdLCJsZW5ndGgiXV0sWzQ2LFs1MyxbNTMsWzQxLCJ1Il0sWzMsInUiLDBdLFs2MyxbNywidSJdLFsyMyxbMTUsInUiXSxbMTcsWzE3LFsxNSwiYSJdLCJhdXRvQ29sbGVjdEV4Y2x1c2lvblNlbGVjdG9ycyJdLCJsZW5ndGgiXV0sWzMzLFsxNSwidSJdLFszLCJ1IixbMCxbMTUsInUiXSwxXV1dLFs0NixbNTMsWzUyLCJ2IixbMTcsWzE2LFsxNyxbMTUsImEiXSwiYXV0b0NvbGxlY3RFeGNsdXNpb25TZWxlY3RvcnMiXSxbMTUsInUiXV0sImV4Y2x1c2lvblNlbGVjdG9yIl1dLFsyMixbMTUsInYiXSxbNDYsWzUzLFsyLFsxNSwiciJdLCJwdXNoIixbNyxbMTUsInYiXV1dXV1dXV1dXV1dXSxbNTIsInMiLFsxNyxbMTUsImEiXSwiaXNBdXRvQ29sbGVjdFBpaUVuYWJsZWRGbGFnIl1dLFs1MiwidCIsWzM5LFsxNyxbMTUsImEiXSwiaXNBdXRvQ29sbGVjdFBpaUVuYWJsZWRGbGFnIl0sWzE3LFsxNSwiYSJdLCJhdXRvRW1haWxFbmFibGVkIl0sdHJ1ZV1dLFs0MyxbMTUsIm8iXSwiYXV0b19kZXRlY3QiLFs4LCJlbWFpbCIsWzE1LCJ0Il0sInBob25lIixbMSxbMTUsInMiXSxbMTcsWzE1LCJhIl0sImF1dG9QaG9uZUVuYWJsZWQiXV0sImFkZHJlc3MiLFsxLFsxNSwicyJdLFsxNyxbMTUsImEiXSwiYXV0b0FkZHJlc3NFbmFibGVkIl1dLCJleGNsdWRlX2VsZW1lbnRfc2VsZWN0b3JzIixbMTUsInIiXV1dXV1dLFsyMixbMTcsWzE1LCJhIl0sImlzTWFudWFsRW5hYmxlZCJdLFs0NixbNTMsWzUyLCJyIixbOF1dLFsyMixbMTcsWzE1LCJhIl0sIm1hbnVhbEVtYWlsRW5hYmxlZCJdLFs0NixbNTMsWyJxIixbMTUsInIiXSwiZW1haWwiLCJlbWFpbFZhbHVlIl1dXV0sWzIyLFsxNyxbMTUsImEiXSwibWFudWFsUGhvbmVFbmFibGVkIl0sWzQ2LFs1MyxbInEiLFsxNSwiciJdLCJwaG9uZSIsInBob25lVmFsdWUiXV1dXSxbMjIsWzE3LFsxNSwiYSJdLCJtYW51YWxBZGRyZXNzRW5hYmxlZCJdLFs0NixbNTMsWzUyLCJzIixbOF1dLFsicSIsWzE1LCJzIl0sImZpcnN0X25hbWUiLCJmaXJzdE5hbWVWYWx1ZSJdLFsicSIsWzE1LCJzIl0sImxhc3RfbmFtZSIsImxhc3ROYW1lVmFsdWUiXSxbInEiLFsxNSwicyJdLCJzdHJlZXQiLCJzdHJlZXRWYWx1ZSJdLFsicSIsWzE1LCJzIl0sImNpdHkiLCJjaXR5VmFsdWUiXSxbInEiLFsxNSwicyJdLCJyZWdpb24iLCJyZWdpb25WYWx1ZSJdLFsicSIsWzE1LCJzIl0sImNvdW50cnkiLCJjb3VudHJ5VmFsdWUiXSxbInEiLFsxNSwicyJdLCJwb3N0YWxfY29kZSIsInBvc3RhbENvZGVWYWx1ZSJdLFs0MyxbMTUsInIiXSwibmFtZV9hbmRfYWRkcmVzcyIsWzcsWzE1LCJzIl1dXV1dXSxbNDMsWzE1LCJvIl0sInNlbGVjdG9ycyIsWzE1LCJyIl1dXV1dLFs2NSwiciIsWzE1LCJuIl0sWzQ2LFs1MyxbImkiLFsxNSwiciJdLCJ1c2VyX2RhdGFfc2V0dGluZ3MiLFsxNSwibyJdXSxbNTIsInMiLFsxNixbMTUsIm8iXSwiYXV0b19kZXRlY3QiXV0sWzIyLFsyOCxbMTUsInMiXV0sWzQ2LFs1MyxbNl1dXV0sWzUyLCJ0IixbNTEsIiIsWzcsInUiXSxbNTIsInYiLFsyLFsxNSwidSJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiayJdLCJDWCJdXV1dLFsyMixbMTUsInYiXSxbNDYsWzUzLFszNixbMTUsInYiXV1dXV0sWzUyLCJ3IixbImMiLFsxNyxbMTUsImUiXSwiQlYiXV1dLFs1MiwieCIsWyJjIixbMTcsWzE1LCJlIl0sIkNJIl1dXSxbNDEsInkiXSxbMjIsWyJoIiwiZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YSIsImF1dG8iXSxbNDYsWzUzLFszLCJ5IixbImciLFs4LCJleGNsdWRlRWxlbWVudFNlbGVjdG9ycyIsWzE2LFsxNSwicyJdLCJleGNsdWRlX2VsZW1lbnRfc2VsZWN0b3JzIl0sImZpZWxkRmlsdGVycyIsWzgsImVtYWlsIixbMTYsWzE1LCJzIl0sImVtYWlsIl0sInBob25lIixbMTYsWzE1LCJzIl0sInBob25lIl0sImFkZHJlc3MiLFsxNixbMTUsInMiXSwiYWRkcmVzcyJdXSwiaW5jbHVkZVNlbGVjdG9yIixbMTUsInciXSwicmVhZEZyb21EYXRhTGF5ZXIiLFsxNSwieCJdXV1dXV1dLFs1MiwieiIsWzEsWzE1LCJ5Il0sWzE2LFsxNSwieSJdLCJlbGVtZW50cyJdXV0sWzUyLCJhQSIsWzhdXSxbNTIsImFCIixbOF1dLFsyMixbMSxbMTUsInoiXSxbMTgsWzE3LFsxNSwieiJdLCJsZW5ndGgiXSwwXV0sWzQ2LFs1MyxbNDEsImFDIl0sWzQxLCJhRCJdLFszLCJhRCIsWzhdXSxbNTMsWzQxLCJhRSJdLFszLCJhRSIsMF0sWzYzLFs3LCJhRSJdLFsyMyxbMTUsImFFIl0sWzE3LFsxNSwieiJdLCJsZW5ndGgiXV0sWzMzLFsxNSwiYUUiXSxbMywiYUUiLFswLFsxNSwiYUUiXSwxXV1dLFs0NixbNTMsWzUyLCJhRiIsWzE2LFsxNSwieiJdLFsxNSwiYUUiXV1dLFsicCIsWzE1LCJhQSJdLFsxNSwiYUYiXSwiZW1haWwiLFsxNSwiYUIiXV0sWzIyLFsiYyIsWzE3LFsxNSwiZSJdLCJCTyJdXSxbNDYsWzUzLFsicCIsWzE1LCJhQSJdLFsxNSwiYUYiXSwicGhvbmVfbnVtYmVyIixbMTUsImFCIl1dLFszLCJhQyIsWyJwIixbMTUsImFDIl0sWzE1LCJhRiJdLCJmaXJzdF9uYW1lIixbMTUsImFEIl1dXSxbMywiYUMiLFsicCIsWzE1LCJhQyJdLFsxNSwiYUYiXSwibGFzdF9uYW1lIixbMTUsImFEIl1dXSxbMywiYUMiLFsicCIsWzE1LCJhQyJdLFsxNSwiYUYiXSwiY291bnRyeSIsWzE1LCJhRCJdXV0sWzMsImFDIixbInAiLFsxNSwiYUMiXSxbMTUsImFGIl0sInBvc3RhbF9jb2RlIixbMTUsImFEIl1dXV1dXV1dXV0sWzIyLFsxLFsxNSwiYUMiXSxbMjgsWzE2LFsxNSwiYUEiXSwiYWRkcmVzcyJdXV0sWzQ2LFs1MyxbNDMsWzE1LCJhQSJdLCJhZGRyZXNzIixbMTUsImFDIl1dLFsyMixbMTUsIm0iXSxbNDYsWzUzLFs0MyxbMTYsWzE1LCJhQSJdLCJhZGRyZXNzIl0sIl90YWdfbWV0YWRhdGEiLFsxNSwiYUQiXV1dXV1dXV1dXV0sWzIyLFsxLFsxNSwieSJdLFsxNSwieCJdXSxbNDYsWzUzLFs1MiwiYUMiLFsxNixbMTUsInkiXSwiZGF0YUxheWVyU2VhcmNoVGltZSJdXSxbNTIsImFEIixbMTYsWzE1LCJ5Il0sImRhdGFMYXllclNlYXJjaENvdW50Il1dLFsyLFsxNSwidSJdLCJtZXJnZUhpdERhdGFGb3JLZXkiLFs3LFsxNyxbMTUsImwiXSwiRlQiXSxbOCwiZGxzdCIsWzE1LCJhQyJdLCJkbHNjIixbMTUsImFEIl1dXV1dXV0sWzIyLFsxNSwibSJdLFs0NixbNTMsWzIyLFszMCxbMTYsWzE1LCJhQSJdLCJlbWFpbCJdLFsxNixbMTUsImFBIl0sInBob25lX251bWJlciJdXSxbNDYsWzUzLFs0MyxbMTUsImFBIl0sIl90YWdfbWV0YWRhdGEiLFsxNSwiYUIiXV1dXV1dXV0sWzIsWzE1LCJ1Il0sInNldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJrIl0sIkNYIl0sWzE1LCJhQSJdXV0sWzM2LFsxNSwiYUEiXV1dXSxbImoiLFsxNSwiciJdLFs1MSwiIixbNywidSJdLFsyLFsxNSwidSJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiayJdLCJDWSJdLFsxNSwidCJdXV1dXV1dXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19zZXRfcHJvZHVjdF9zZXR0aW5ncyIsWzQ2LCJhIl0sWzIsWzE1LCJhIl0sImd0bU9uU3VjY2VzcyIsWzddXV0KICxbNTIsIl9fbW9kdWxlX2Fkd29yZHNIaXRUeXBlIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUyLCJiIiwiY29udmVyc2lvbiJdLFs1MiwiYyIsImZsb29kbGlnaHQiXSxbNTIsImQiLCJnYV9jb252ZXJzaW9uIl0sWzUyLCJlIiwicGFnZV92aWV3Il0sWzUyLCJmIiwicmVtYXJrZXRpbmciXSxbNTIsImciLCJ1c2VyX2RhdGFfbGVhZCJdLFs1MiwiaCIsInVzZXJfZGF0YV93ZWIiXSxbMzYsWzgsIkQiLFsxNSwiYiJdLCJFIixbMTUsImMiXSwiRiIsWzE1LCJkIl0sIkgiLFsxNSwiZSJdLCJJIixbMTUsImYiXSwiSiIsWzE1LCJnIl0sIksiLFsxNSwiaCJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfZ3RhZ1NjaGVtYSIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MiwiYiIsImFkX3BlcnNvbmFsaXphdGlvbiJdLFs1MiwiYyIsImFkX3N0b3JhZ2UiXSxbNTIsImQiLCJhZF91c2VyX2RhdGEiXSxbNTIsImUiLCJjb25zZW50X3VwZGF0ZWQiXSxbNTIsImYiLCJhcHBfcmVtb3ZlIl0sWzUyLCJnIiwiYXBwX3N0b3JlX3JlZnVuZCJdLFs1MiwiaCIsImFwcF9zdG9yZV9zdWJzY3JpcHRpb25fY2FuY2VsIl0sWzUyLCJpIiwiYXBwX3N0b3JlX3N1YnNjcmlwdGlvbl9jb252ZXJ0Il0sWzUyLCJqIiwiYXBwX3N0b3JlX3N1YnNjcmlwdGlvbl9yZW5ldyJdLFs1MiwiayIsImNvbnZlcnNpb24iXSxbNTIsImwiLCJwdXJjaGFzZSJdLFs1MiwibSIsImZpcnN0X29wZW4iXSxbNTIsIm4iLCJmaXJzdF92aXNpdCJdLFs1MiwibyIsImd0YWcuY29uZmlnIl0sWzUyLCJwIiwiaW5fYXBwX3B1cmNoYXNlIl0sWzUyLCJxIiwicGFnZV92aWV3Il0sWzUyLCJyIiwic2Vzc2lvbl9zdGFydCJdLFs1MiwicyIsInVzZXJfZW5nYWdlbWVudCJdLFs1MiwidCIsImFkc19kYXRhX3JlZGFjdGlvbiJdLFs1MiwidSIsImFsbG93X2FkX3BlcnNvbmFsaXphdGlvbl9zaWduYWxzIl0sWzUyLCJ2IiwiYWxsb3dfY3VzdG9tX3NjcmlwdHMiXSxbNTIsInciLCJhbGxvd19lbmhhbmNlZF9jb252ZXJzaW9ucyJdLFs1MiwieCIsImFsbG93X2dvb2dsZV9zaWduYWxzIl0sWzUyLCJ5IiwiYXVpZCJdLFs1MiwieiIsImF3X3JlbWFya2V0aW5nX29ubHkiXSxbNTIsImFBIiwiZGlzY291bnQiXSxbNTIsImFCIiwiYXdfZmVlZF9jb3VudHJ5Il0sWzUyLCJhQyIsImF3X2ZlZWRfbGFuZ3VhZ2UiXSxbNTIsImFEIiwiaXRlbXMiXSxbNTIsImFFIiwiYXdfbWVyY2hhbnRfaWQiXSxbNTIsImFGIiwiYXdfYmFza2V0X3R5cGUiXSxbNTIsImFHIiwiY2xpZW50X2lkIl0sWzUyLCJhSCIsImNvbnZlcnNpb25fY29va2llX3ByZWZpeCJdLFs1MiwiYUkiLCJjb252ZXJzaW9uX2lkIl0sWzUyLCJhSiIsImNvbnZlcnNpb25fbGlua2VyIl0sWzUyLCJhSyIsImNvbnZlcnNpb25fYXBpIl0sWzUyLCJhTCIsImNvb2tpZV9kZXByZWNhdGlvbiJdLFs1MiwiYU0iLCJjb29raWVfZXhwaXJlcyJdLFs1MiwiYU4iLCJjb29raWVfcHJlZml4Il0sWzUyLCJhTyIsImNvb2tpZV91cGRhdGUiXSxbNTIsImFQIiwiY291bnRyeSJdLFs1MiwiYVEiLCJjdXJyZW5jeSJdLFs1MiwiYVIiLCJjdXN0b21lcl9saWZldGltZV92YWx1ZSJdLFs1MiwiYVMiLCJjdXN0b21lcl90eXBlIl0sWzUyLCJhVCIsImRlYnVnX21vZGUiXSxbNTIsImFVIiwic2hpcHBpbmciXSxbNTIsImFWIiwiZW5nYWdlbWVudF90aW1lX21zZWMiXSxbNTIsImFXIiwiZXN0aW1hdGVkX2RlbGl2ZXJ5X2RhdGUiXSxbNTIsImFYIiwiZXZlbnRfZGV2ZWxvcGVyX2lkX3N0cmluZyJdLFs1MiwiYVkiLCJldmVudF9pZCJdLFs1MiwiYVoiLCJldmVudCJdLFs1MiwiYkEiLCJfJmFlIl0sWzUyLCJiQiIsImV2ZW50X3RpbWVvdXQiXSxbNTIsImJDIiwiZXh0X2NsaWVudF9pZCJdLFs1MiwiYkQiLCJmaXJzdF9wYXJ0eV9jb2xsZWN0aW9uIl0sWzUyLCJiRSIsIm1hdGNoX2lkIl0sWzUyLCJiRiIsImdkcHJfYXBwbGllcyJdLFs1MiwiYkciLCJfZ3RfbWV0YWRhdGEiXSxbNTIsImJIIiwiZ29vZ2xlX2FuYWx5c2lzX3BhcmFtcyJdLFs1MiwiYkkiLCJfZ29vZ2xlX25nIl0sWzUyLCJiSiIsIl9vbm8iXSxbNTIsImJLIiwiZ3BwX3NpZCJdLFs1MiwiYkwiLCJncHBfc3RyaW5nIl0sWzUyLCJiTSIsImdzYV9leHBlcmltZW50X2lkIl0sWzUyLCJiTiIsImd0YWdfZXZlbnRfZmVhdHVyZV91c2FnZSJdLFs1MiwiYk8iLCJpZnJhbWVfc3RhdGUiXSxbNTIsImJQIiwiaWdub3JlX3JlZmVycmVyIl0sWzUyLCJiUSIsImlzX3Bhc3N0aHJvdWdoIl0sWzUyLCJiUiIsImxhbmd1YWdlIl0sWzUyLCJiUyIsIm1lcmNoYW50X2ZlZWRfbGFiZWwiXSxbNTIsImJUIiwibWVyY2hhbnRfZmVlZF9sYW5ndWFnZSJdLFs1MiwiYlUiLCJtZXJjaGFudF9pZCJdLFs1MiwiYlYiLCJuZXdfY3VzdG9tZXIiXSxbNTIsImJXIiwicGFnZV9ob3N0bmFtZSJdLFs1MiwiYlgiLCJwYWdlX3BhdGgiXSxbNTIsImJZIiwicGFnZV9yZWZlcnJlciJdLFs1MiwiYloiLCJwYWdlX3RpdGxlIl0sWzUyLCJjQSIsIl9wbGF0aW51bV9yZXF1ZXN0X3N0YXR1cyJdLFs1MiwiY0IiLCJxdWFudGl0eSJdLFs1MiwiY0MiLCJyZXN0cmljdGVkX2RhdGFfcHJvY2Vzc2luZyJdLFs1MiwiY0QiLCJzY3JlZW5fcmVzb2x1dGlvbiJdLFs1MiwiY0UiLCJzZW5kX3BhZ2VfdmlldyJdLFs1MiwiY0YiLCJzZXJ2ZXJfY29udGFpbmVyXzNwX2VucmljaG1lbnQiXSxbNTIsImNHIiwic2VydmVyX2NvbnRhaW5lcl91cmwiXSxbNTIsImNIIiwic2Vzc2lvbl9kdXJhdGlvbiJdLFs1MiwiY0kiLCJzZXNzaW9uX2VuZ2FnZWRfdGltZSJdLFs1MiwiY0oiLCJzZXNzaW9uX2lkIl0sWzUyLCJjSyIsIl9zaGFyZWRfdXNlcl9pZCJdLFs1MiwiY0wiLCJkZWxpdmVyeV9wb3N0YWxfY29kZSJdLFs1MiwiY00iLCJ0ZXN0b25seSJdLFs1MiwiY04iLCJ0b3Btb3N0X3VybCJdLFs1MiwiY08iLCJ0cmFuc2FjdGlvbl9pZCJdLFs1MiwiY1AiLCJ0cmFuc2FjdGlvbl9pZF9zb3VyY2UiXSxbNTIsImNRIiwidHJhbnNwb3J0X3VybCJdLFs1MiwiY1IiLCJ1cGRhdGUiXSxbNTIsImNTIiwiX3VzZXJfYWdlbnRfYXJjaGl0ZWN0dXJlIl0sWzUyLCJjVCIsIl91c2VyX2FnZW50X2JpdG5lc3MiXSxbNTIsImNVIiwiX3VzZXJfYWdlbnRfZnVsbF92ZXJzaW9uX2xpc3QiXSxbNTIsImNWIiwiX3VzZXJfYWdlbnRfbW9iaWxlIl0sWzUyLCJjVyIsIl91c2VyX2FnZW50X21vZGVsIl0sWzUyLCJjWCIsIl91c2VyX2FnZW50X3BsYXRmb3JtIl0sWzUyLCJjWSIsIl91c2VyX2FnZW50X3BsYXRmb3JtX3ZlcnNpb24iXSxbNTIsImNaIiwiX3VzZXJfYWdlbnRfd293NjQiXSxbNTIsImRBIiwidXNlcl9kYXRhIl0sWzUyLCJkQiIsInVzZXJfZGF0YV9hdXRvX2xhdGVuY3kiXSxbNTIsImRDIiwidXNlcl9kYXRhX2F1dG9fbWV0YSJdLFs1MiwiZEQiLCJ1c2VyX2RhdGFfYXV0b19tdWx0aSJdLFs1MiwiZEUiLCJ1c2VyX2RhdGFfYXV0b19zZWxlY3RvcnMiXSxbNTIsImRGIiwidXNlcl9kYXRhX2F1dG9fc3RhdHVzIl0sWzUyLCJkRyIsInVzZXJfZGF0YV9tb2RlIl0sWzUyLCJkSCIsInVzZXJfaWQiXSxbNTIsImRJIiwidXNlcl9wcm9wZXJ0aWVzIl0sWzUyLCJkSiIsInVzX3ByaXZhY3lfc3RyaW5nIl0sWzUyLCJkSyIsInZhbHVlIl0sWzUyLCJkTCIsIl9mcG1fcGFyYW1ldGVycyJdLFs1MiwiZE0iLCJfaG9zdF9uYW1lIl0sWzUyLCJkTiIsIl9pbl9wYWdlX2NvbW1hbmQiXSxbNTIsImRPIiwiX21lYXN1cmVtZW50X3R5cGUiXSxbNTIsImRQIiwibm9uX3BlcnNvbmFsaXplZF9hZHMiXSxbNTIsImRRIiwiY29udmVyc2lvbl9sYWJlbCJdLFs1MiwiZFIiLCJwYWdlX2xvY2F0aW9uIl0sWzUyLCJkUyIsIl9leHRyYWN0ZWRfZGF0YSJdLFs1MiwiZFQiLCJnbG9iYWxfZGV2ZWxvcGVyX2lkX3N0cmluZyJdLFs1MiwiZFUiLCJ0Y19wcml2YWN5X3N0cmluZyJdLFszNixbOCwiQSIsWzE1LCJiIl0sIkIiLFsxNSwiYyJdLCJDIixbMTUsImQiXSwiRiIsWzE1LCJlIl0sIkkiLFsxNSwiZiJdLCJKIixbMTUsImciXSwiSyIsWzE1LCJoIl0sIkwiLFsxNSwiaSJdLCJNIixbMTUsImoiXSwiTyIsWzE1LCJrIl0sIkFBIixbMTUsImwiXSwiQUYiLFsxNSwibSJdLCJBRyIsWzE1LCJuIl0sIkFIIixbMTUsIm8iXSwiQUoiLFsxNSwicCJdLCJBSyIsWzE1LCJxIl0sIkFNIixbMTUsInIiXSwiQVEiLFsxNSwicyJdLCJCQyIsWzE1LCJ0Il0sIkJKIixbMTUsInUiXSwiQksiLFsxNSwidiJdLCJCTSIsWzE1LCJ3Il0sIkJOIixbMTUsIngiXSwiQlQiLFsxNSwieSJdLCJCWCIsWzE1LCJ6Il0sIkJZIixbMTUsImFBIl0sIkJaIixbMTUsImFCIl0sIkNBIixbMTUsImFDIl0sIkNCIixbMTUsImFEIl0sIkNDIixbMTUsImFFIl0sIkNEIixbMTUsImFGIl0sIkNMIixbMTUsImFHIl0sIkNRIixbMTUsImFIIl0sIkNSIixbMTUsImFJIl0sIktHIixbMTUsImRRIl0sIkNTIixbMTUsImFKIl0sIkNVIixbMTUsImFLIl0sIkNXIixbMTUsImFMIl0sIkNZIixbMTUsImFNIl0sIkRDIixbMTUsImFOIl0sIkREIixbMTUsImFPIl0sIkRFIixbMTUsImFQIl0sIkRGIixbMTUsImFRIl0sIkRHIixbMTUsImFSIl0sIkRIIixbMTUsImFTIl0sIkROIixbMTUsImFUIl0sIkVBIixbMTUsImFVIl0sIkVDIixbMTUsImFWIl0sIkVHIixbMTUsImFXIl0sIkVKIixbMTUsImFYIl0sIkVLIixbMTUsImFZIl0sIkVOIixbMTUsImFaIl0sIkVPIixbMTUsImJBIl0sIkVRIixbMTUsImJCIl0sIktJIixbMTUsImRTIl0sIkVVIixbMTUsImJDIl0sIkVXIixbMTUsImJEIl0sIkZFIixbMTUsImJFIl0sIkZPIixbMTUsImJGIl0sIkZQIixbMTUsImJHIl0sIktKIixbMTUsImRUIl0sIkZUIixbMTUsImJIIl0sIkZVIixbMTUsImJJIl0sIkZWIixbMTUsImJKIl0sIkZZIixbMTUsImJLIl0sIkZaIixbMTUsImJMIl0sIkdCIixbMTUsImJNIl0sIkdDIixbMTUsImJOIl0sIkdFIixbMTUsImJPIl0sIkdGIixbMTUsImJQIl0sIkdLIixbMTUsImJRIl0sIkdNIixbMTUsImJSIl0sIkdUIixbMTUsImJTIl0sIkdVIixbMTUsImJUIl0sIkdWIixbMTUsImJVIl0sIkdaIixbMTUsImJWIl0sIkhDIixbMTUsImJXIl0sIktIIixbMTUsImRSIl0sIkhEIixbMTUsImJYIl0sIkhFIixbMTUsImJZIl0sIkhGIixbMTUsImJaIl0sIkhOIixbMTUsImNBIl0sIkhQIixbMTUsImNCIl0sIkhUIixbMTUsImNDIl0sIkhYIixbMTUsImNEIl0sIklBIixbMTUsImNFIl0sIklDIixbMTUsImNGIl0sIklEIixbMTUsImNHIl0sIklGIixbMTUsImNIIl0sIklIIixbMTUsImNJIl0sIklJIixbMTUsImNKIl0sIklLIixbMTUsImNLIl0sIklMIixbMTUsImNMIl0sIktLIixbMTUsImRVIl0sIklQIixbMTUsImNNIl0sIklSIixbMTUsImNOIl0sIklVIixbMTUsImNPIl0sIklWIixbMTUsImNQIl0sIklXIixbMTUsImNRIl0sIklZIixbMTUsImNSIl0sIkpCIixbMTUsImNTIl0sIkpDIixbMTUsImNUIl0sIkpEIixbMTUsImNVIl0sIkpFIixbMTUsImNWIl0sIkpGIixbMTUsImNXIl0sIkpHIixbMTUsImNYIl0sIkpIIixbMTUsImNZIl0sIkpJIixbMTUsImNaIl0sIkpKIixbMTUsImRBIl0sIkpLIixbMTUsImRCIl0sIkpMIixbMTUsImRDIl0sIkpNIixbMTUsImREIl0sIkpOIixbMTUsImRFIl0sIkpPIixbMTUsImRGIl0sIkpQIixbMTUsImRHIl0sIkpSIixbMTUsImRIIl0sIkpTIixbMTUsImRJIl0sIkpVIixbMTUsImRKIl0sIkpWIixbMTUsImRLIl0sIkpYIixbMTUsImRMIl0sIkpZIixbMTUsImRNIl0sIkpaIixbMTUsImROIl0sIktDIixbMTUsImRPIl0sIktEIixbMTUsImRQIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MiwiYiIsImFib3J0X3dpdGhvdXRfZmFpbCJdLFs1MiwiYyIsImFjY2VwdF9ieV9kZWZhdWx0Il0sWzUyLCJkIiwiYWxsb3dfYWRfcGVyc29uYWxpemF0aW9uIl0sWzUyLCJlIiwiY29uc2VudF9zdGF0ZSJdLFs1MiwiZiIsImNvbnNlbnRfdXBkYXRlZCJdLFs1MiwiZyIsImNvbnZlcnNpb25fbGlua2VyX2VuYWJsZWQiXSxbNTIsImgiLCJjb252ZXJzaW9uX21hcmtpbmdfY2FsbGVkIl0sWzUyLCJpIiwiY29va2llX29wdGlvbnMiXSxbNTIsImoiLCJkZWR1cGVfaWQiXSxbNTIsImsiLCJlbV9ldmVudCJdLFs1MiwibCIsImV2ZW50X3Byb3ZlbmFuY2UiXSxbNTIsIm0iLCJldmVudF9zb3VyY2UiXSxbNTIsIm4iLCJldmVudF9zdGFydF90aW1lc3RhbXBfbXMiXSxbNTIsIm8iLCJldmVudF91c2FnZSJdLFs1MiwicCIsImV4dHJhX3RhZ19leHBlcmltZW50X2lkcyJdLFs1MiwicSIsImZvcm1fZXZlbnRfY2FuY2VsZWQiXSxbNTIsInIiLCJnYTRfY29sbGVjdGlvbl9zdWJkb21haW4iXSxbNTIsInMiLCJndG1fZXh0cmFjdGVkX2RhdGEiXSxbNTIsInQiLCJoYW5kbGVfaW50ZXJuYWxseSJdLFs1MiwidSIsImhhc19nYV9jb252ZXJzaW9uX2NvbnNlbnRzIl0sWzUyLCJ2IiwiaGl0X3R5cGUiXSxbNTIsInciLCJoaXRfdHlwZV9vdmVycmlkZSJdLFs1MiwieCIsImlnbm9yZV9kdXBlX2NvbmZpZyJdLFs1MiwieSIsImlzX2NvbnZlcnNpb24iXSxbNTIsInoiLCJpc19leHRlcm5hbF9ldmVudCJdLFs1MiwiYUEiLCJpc19maXJzdF92aXNpdCJdLFs1MiwiYUIiLCJpc19maXJzdF92aXNpdF9jb252ZXJzaW9uIl0sWzUyLCJhQyIsImlzX2ZwbV9lbmNyeXB0aW9uIl0sWzUyLCJhRCIsImlzX2ZwbV9zcGxpdCJdLFs1MiwiYUUiLCJpc19nY3BfYnJvd3NlciJdLFs1MiwiYUYiLCJpc19nb29nbGVfbWVhc3VyZW1lbnRfYWxsb3dlZCJdLFs1MiwiYUciLCJpc19zZXJ2ZXJfc2lkZV9kZXN0aW5hdGlvbiJdLFs1MiwiYUgiLCJpc19zZXNzaW9uX3N0YXJ0Il0sWzUyLCJhSSIsImlzX3Nlc3Npb25fc3RhcnRfY29udmVyc2lvbiJdLFs1MiwiYUoiLCJpc19zZ3RtX2dhX2Fkc19jb252ZXJzaW9uX3N0dWR5X2NvbnRyb2xfZ3JvdXAiXSxbNTIsImFLIiwiaXNfc2d0bV9wcmVoaXQiXSxbNTIsImFMIiwiaXNfc3BsaXRfY29udmVyc2lvbiJdLFs1MiwiYU0iLCJpc19zeW4iXSxbNTIsImFOIiwiaXNfdGVzdF9ldmVudCJdLFs1MiwiYU8iLCJwcmVoaXRfZm9yX3JldHJ5Il0sWzUyLCJhUCIsInJlZGFjdF9hZHNfZGF0YSJdLFs1MiwiYVEiLCJyZWRhY3RfY2xpY2tfaWRzIl0sWzUyLCJhUiIsInNlbmRfY2NtX3BhcmFsbGVsX3BpbmciXSxbNTIsImFTIiwic2VuZF91c2VyX2RhdGFfaGl0Il0sWzUyLCJhVCIsInNwZWN1bGF0aXZlIl0sWzUyLCJhVSIsInN5bl9vcl9tb2QiXSxbNTIsImFWIiwidHJhbnNpZW50X2Vjc2lkIl0sWzUyLCJhVyIsInVzZXJfZGF0YSJdLFs1MiwiYVgiLCJ1c2VyX2RhdGFfZnJvbV9hdXRvbWF0aWMiXSxbNTIsImFZIiwidXNlcl9kYXRhX2Zyb21fYXV0b21hdGljX2dldHRlciJdLFs1MiwiYVoiLCJ1c2VyX2RhdGFfZnJvbV9jb2RlIl0sWzUyLCJiQSIsInVzZXJfZGF0YV9mcm9tX21hbnVhbCJdLFszNixbOCwiQSIsWzE1LCJiIl0sIkIiLFsxNSwiYyJdLCJGIixbMTUsImQiXSwiTSIsWzE1LCJlIl0sIk4iLFsxNSwiZiJdLCJPIixbMTUsImciXSwiUCIsWzE1LCJoIl0sIlEiLFsxNSwiaSJdLCJTIixbMTUsImoiXSwiVCIsWzE1LCJrIl0sIloiLFsxNSwibCJdLCJBQSIsWzE1LCJtIl0sIkFCIixbMTUsIm4iXSwiQUMiLFsxNSwibyJdLCJBRCIsWzE1LCJwIl0sIkFKIixbMTUsInEiXSwiQUsiLFsxNSwiciJdLCJBTiIsWzE1LCJzIl0sIkFPIixbMTUsInQiXSwiQVAiLFsxNSwidSJdLCJBUSIsWzE1LCJ2Il0sIkFSIixbMTUsInciXSwiQVMiLFsxNSwieCJdLCJBViIsWzE1LCJ5Il0sIkFZIixbMTUsInoiXSwiQVoiLFsxNSwiYUEiXSwiQkEiLFsxNSwiYUIiXSwiQkMiLFsxNSwiYUMiXSwiQkQiLFsxNSwiYUQiXSwiQkUiLFsxNSwiYUUiXSwiQkYiLFsxNSwiYUYiXSwiQksiLFsxNSwiYUciXSwiQkwiLFsxNSwiYUgiXSwiQk0iLFsxNSwiYUkiXSwiQk4iLFsxNSwiYUoiXSwiQk8iLFsxNSwiYUsiXSwiQlEiLFsxNSwiYUwiXSwiQlIiLFsxNSwiYU0iXSwiQlMiLFsxNSwiYU4iXSwiQlkiLFsxNSwiYU8iXSwiQ0IiLFsxNSwiYVAiXSwiQ0MiLFsxNSwiYVEiXSwiQ0UiLFsxNSwiYVIiXSwiQ04iLFsxNSwiYVMiXSwiQ1EiLFsxNSwiYVQiXSwiQ1QiLFsxNSwiYVUiXSwiQ1UiLFsxNSwiYVYiXSwiQ1ciLFsxNSwiYVciXSwiQ1giLFsxNSwiYVgiXSwiQ1kiLFsxNSwiYVkiXSwiQ1oiLFsxNSwiYVoiXSwiREEiLFsxNSwiYkEiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2ZlYXR1cmVGbGFncyIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MiwiYiIsNDVdLFs1MiwiYyIsNDZdLFs1MiwiZCIsNDddLFs1MiwiZSIsMTc0XSxbNTIsImYiLDI3Nl0sWzM2LFs4LCJGIixbMTUsImIiXSwiRyIsWzE1LCJjIl0sIkgiLFsxNSwiZCJdLCJWIixbMTUsImUiXSwiQUQiLFsxNSwiZiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfZWNUeXBlcyIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MiwiYiIsImZzcmMiXSxbNTIsImMiLCJmZWlkIl0sWzUyLCJkIiwiMCJdLFs1MiwiZSIsIjEiXSxbNTIsImYiLCIyIl0sWzUyLCJnIiwiMyJdLFs1MiwiaCIsIjQiXSxbMzYsWzgsIkIiLFsxNSwiYyJdLCJGIixbMTUsImciXSwiRCIsWzE1LCJlIl0sIkUiLFsxNSwiZiJdLCJDIixbMTUsImQiXSwiRyIsWzE1LCJoIl0sIkEiLFsxNSwiYiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfZmVhdHVyZXMiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTIsImIiLDQyNV0sWzUyLCJjIiw0MzVdLFs1MiwiZCIsNDg4XSxbNTIsImUiLDQ4OV0sWzUyLCJmIiw0OThdLFs1MiwiZyIsNTAzXSxbNTIsImgiLDUwNF0sWzUyLCJpIiw1MDZdLFs1MiwiaiIsNTIzXSxbNTIsImsiLDUzMl0sWzUyLCJsIiw1NTNdLFs1MiwibSIsNTY4XSxbNTIsIm4iLDU3N10sWzUyLCJvIiw1ODFdLFs1MiwicCIsNTgzXSxbNTIsInEiLDU5Ml0sWzUyLCJyIiw1OTRdLFs1MiwicyIsNTk5XSxbMzYsWzgsIkFWIixbMTUsImsiXSwiQUQiLFsxNSwiZCJdLCJDSSIsWzE1LCJxIl0sIkJWIixbMTUsIm4iXSwiQk8iLFsxNSwibSJdLCJDSyIsWzE1LCJyIl0sIkNQIixbMTUsInMiXSwiQU0iLFsxNSwiZyJdLCJCWiIsWzE1LCJvIl0sIkFUIixbMTUsImoiXSwiQUUiLFsxNSwiZSJdLCJBTiIsWzE1LCJoIl0sIkwiLFsxNSwiYyJdLCJCQyIsWzE1LCJsIl0sIkFPIixbMTUsImkiXSwiQ0IiLFsxNSwicCJdLCJBSSIsWzE1LCJmIl0sIkkiLFsxNSwiYiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY3Jvc3NDb250YWluZXJTY2hlbWEiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTIsImIiLCJjb29raWVfZGVwcmVjYXRpb25fbGFiZWwiXSxbNTIsImMiLCJwbGQiXSxbNTIsImQiLCJzaGFyZWRfdXNlcl9pZCJdLFs1MiwiZSIsInNoYXJlZF91c2VyX2lkX3JlcXVlc3RlZCJdLFs1MiwiZiIsInNoYXJlZF91c2VyX2lkX3NvdXJjZSJdLFszNixbOCwiQiIsWzE1LCJiIl0sIk4iLFsxNSwiYyJdLCJTIixbMTUsImQiXSwiVCIsWzE1LCJlIl0sIlUiLFsxNSwiZiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfcGxhdGZvcm1TY2hlbWEiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTIsImIiLDFdLFs1MiwiYyIsMl0sWzUyLCJkIiwzXSxbNTIsImUiLDRdLFs1MiwiZiIsNV0sWzUyLCJnIiw2XSxbMzYsWzgsIkEiLFsxNSwiYiJdLCJGIixbMTUsImciXSwiQiIsWzE1LCJjIl0sIkMiLFsxNSwiZCJdLCJEIixbMTUsImUiXSwiRSIsWzE1LCJmIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9nb2xkRXZlbnRVc2FnZUlkIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUyLCJiIiwxXSxbNTIsImMiLDJdLFs1MiwiZCIsNV0sWzUyLCJlIiw2XSxbNTIsImYiLDddLFs1MiwiZyIsOF0sWzUyLCJoIiw5XSxbNTIsImkiLDExXSxbNTIsImoiLDE1XSxbNTIsImsiLDE2XSxbNTIsImwiLDIwXSxbNTIsIm0iLDIxXSxbNTIsIm4iLDIzXSxbNTIsIm8iLDI0XSxbNTIsInAiLDI3XSxbNTIsInEiLDQwXSxbNTIsInIiLDQxXSxbMzYsWzgsIk8iLFsxNSwiaiJdLCJXIixbMTUsIm4iXSwiUCIsWzE1LCJrIl0sIlgiLFsxNSwibyJdLCJLIixbMTUsImkiXSwiQSIsWzE1LCJiIl0sIlQiLFsxNSwibCJdLCJFIixbMTUsImQiXSwiRiIsWzE1LCJlIl0sIkIiLFsxNSwiYyJdLCJIIixbMTUsImciXSwiQU4iLFsxNSwicSJdLCJJIixbMTUsImgiXSwiRyIsWzE1LCJmIl0sIlUiLFsxNSwibSJdLCJBTyIsWzE1LCJyIl0sIkFBIixbMTUsInAiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUyLCJiIiwiYWVfYmxvY2tfZG93bmxvYWRzIl0sWzUyLCJjIiwiYWVfYmxvY2tfZm9ybSJdLFs1MiwiZCIsImFlX2Jsb2NrX2hpc3RvcnkiXSxbNTIsImUiLCJhZV9ibG9ja19vdXRib3VuZF9jbGljayJdLFs1MiwiZiIsImFlX2Jsb2NrX3Njcm9sbCJdLFs1MiwiZyIsImFlX2Jsb2NrX3ZpZGVvIl0sWzM2LFs4LCJBIixbMTUsImIiXSwiQiIsWzE1LCJjIl0sIkMiLFsxNSwiZCJdLCJEIixbMTUsImUiXSwiRSIsWzE1LCJmIl0sIkYiLFsxNSwiZyJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY2NkRW1TaXRlU2VhcmNoQWN0aXZpdHkiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTAsImIiLFs0NiwiZCIsImUiXSxbNTIsImYiLFsyLFszMCxbMTUsImQiXSwiIl0sInNwbGl0IixbNywiLCJdXV0sWzUzLFs0MSwiZyJdLFszLCJnIiwwXSxbNjMsWzcsImciXSxbMjMsWzE1LCJnIl0sWzE3LFsxNSwiZiJdLCJsZW5ndGgiXV0sWzMzLFsxNSwiZyJdLFszLCJnIixbMCxbMTUsImciXSwxXV1dLFs0NixbNTMsWzUyLCJoIixbImUiLFsyLFsxNixbMTUsImYiXSxbMTUsImciXV0sInRyaW0iLFs3XV1dXSxbMjIsWzIxLFsxNSwiaCJdLFs0NF1dLFs0NixbNTMsWzM2LFsxNSwiaCJdXV1dXV1dXV1dLFs1MCwiYyIsWzQ2LCJkIiwiZSIsImYiXSxbNTIsImciLFs4LCJzZWFyY2hfdGVybSIsWzE1LCJkIl1dXSxbNTIsImgiLFsyLFszMCxbMTUsImUiXSwiIl0sInNwbGl0IixbNywiLCJdXV0sWzUzLFs0MSwiaSJdLFszLCJpIiwwXSxbNjMsWzcsImkiXSxbMjMsWzE1LCJpIl0sWzE3LFsxNSwiaCJdLCJsZW5ndGgiXV0sWzMzLFsxNSwiaSJdLFszLCJpIixbMCxbMTUsImkiXSwxXV1dLFs0NixbNTMsWzUyLCJqIixbMixbMTYsWzE1LCJoIl0sWzE1LCJpIl1dLCJ0cmltIixbN11dXSxbNTIsImsiLFsiZiIsWzE1LCJqIl1dXSxbMjIsWzIxLFsxNSwiayJdLFs0NF1dLFs0NixbNTMsWzQzLFsxNSwiZyJdLFswLCJxXyIsWzE1LCJqIl1dLFsxNSwiayJdXV1dXV1dXV0sWzM2LFsxNSwiZyJdXV0sWzM2LFs4LCJCIixbMTUsImMiXSwiQSIsWzE1LCJiIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9hY3Rpdml0aWVzIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJiIixbNDYsImMiLCJkIl0sWzM2LFszOSxbMTUsImQiXSxbImQiLFsxNSwiYyJdXSxbMTUsImMiXV1dXSxbMzYsWzgsIkEiLFsxNSwiYiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfcGxhdGZvcm1EZXRlY3Rpb24iLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTAsIm8iLFs0Nl0sWzY4LCJ3IixbNTMsWzIyLFsxLFsyOCxbImUiLFsxNyxbMTUsImgiXSwiQUkiXV1dLFsyOCxbImUiLFsxNyxbMTUsImgiXSwiSSJdXV1dLFs0NixbNTMsWzM2LFs3XV1dXV0sWzUyLCJ3IixbImIiLFsxNyxbMTUsImciXSwiTiJdXV0sWzIyLFsibiIsWzE1LCJ3Il1dLFs0NixbNTMsWzM2LFsxNSwidyJdXV1dXSxbNTIsIngiLFs3XV0sWzIyLFsicCJdLFs0NixbMixbMTUsIngiXSwicHVzaCIsWzcsWzE3LFsxNSwiaiJdLCJBIl1dXV1dLFsyMixbInEiXSxbNDYsWzIsWzE1LCJ4Il0sInB1c2giLFs3LFsxNyxbMTUsImoiXSwiQiJdXV1dXSxbMjIsWyJyIl0sWzQ2LFsyLFsxNSwieCJdLCJwdXNoIixbNyxbMTcsWzE1LCJqIl0sIkYiXV1dXV0sWzIyLFsidSJdLFs0NixbMixbMTUsIngiXSwicHVzaCIsWzcsWzE3LFsxNSwiaiJdLCJEIl1dXV1dLFsyMixbInMiXSxbNDYsWzIsWzE1LCJ4Il0sInB1c2giLFs3LFsxNyxbMTUsImoiXSwiRSJdXV1dXSxbMjIsWyJ0Il0sWzQ2LFsyLFsxNSwieCJdLCJwdXNoIixbNyxbMTcsWzE1LCJqIl0sIkMiXV1dXV0sWzIyLFsibCJdLFs0NixbNTMsWyJmIixbMTcsWzE1LCJnIl0sIk4iXSxbMTUsIngiXSx0cnVlXV1dXSxbMzYsWzE1LCJ4Il1dXSxbNDZdXSxbMzYsWzddXV0sWzUwLCJwIixbNDZdLFs2OCwidyIsWzUzLFszNixbMjgsWzI4LFsiYyIsInNjcmlwdFtkYXRhLXJlcXVpcmVtb2R1bGVePVwibWFnZS9cIl0iXV1dXV0sWzQ2XV0sWzM2LGZhbHNlXV0sWzUwLCJxIixbNDZdLFs2OCwidyIsWzUzLFs1MiwidyIsWyJtIiwiWVhOelpYUnpMbk54ZFdGeVpYTndZV05sTG1OdmJTOD0iXV0sWzIyLFsyOCxbMTUsInciXV0sWzQ2LFszNixmYWxzZV1dXSxbMzYsWzI4LFsyOCxbImMiLFswLFswLCJzY3JpcHRbc3JjXj1cIi8vIixbMTUsInciXV0sIlwiXSJdXV1dXV0sWzQ2XV0sWzM2LGZhbHNlXV0sWzUwLCJyIixbNDZdLFsyMixbMjgsWyJlIixbMTcsWzE1LCJoIl0sIkkiXV1dLFs0NixbNTMsWzM2LGZhbHNlXV1dXSxbNjgsInciLFs1MyxbNTIsInciLFsibSIsImMyaHZjR2xtZVM1amIyMD0iXV0sWzUyLCJ4IixbIm0iLCJjMmh2Y0dsbWVXTmtiaTVqYjIwPSJdXSxbMjIsWzMwLFsyOCxbMTUsInciXV0sWzI4LFsxNSwieCJdXV0sWzQ2LFszNixmYWxzZV1dXSxbMzYsWzI4LFsyOCxbImMiLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLFswLCJzY3JpcHRbc3JjKj1cImNkbi4iLFsxNSwidyJdXSwiXCJdLCJdLCJtZXRhW3Byb3BlcnR5PVwib2c6aW1hZ2VcIl1bY29udGVudCo9XCJjZG4uIl0sWzE1LCJ3Il1dLCJcIl0sIl0sImxpbmtbcmVsPVwicHJlY29ubmVjdFwiXVtocmVmKj1cImNkbi4iXSxbMTUsInciXV0sIlwiXSwiXSwibGlua1tyZWw9XCJwcmVjb25uZWN0XCJdW2hyZWYqPVwiZm9udHMuIl0sWzE1LCJ4Il1dLCJcIl0sIl0sImxpbmtbcmVsPVwicHJlY29ubmVjdFwiXVtocmVmKj1cIml0ZXJhYmxlLXNob3BpZnlcIl0sIl0sImxpbmtbcmVsPVwicHJlY29ubmVjdFwiXVtocmVmKj1cInYuIl0sWzE1LCJ3Il1dLCJcIl0iXV1dXV1dLFs0Nl1dLFszNixmYWxzZV1dLFs1MCwicyIsWzQ2XSxbNjgsInciLFs1MyxbNTIsInciLFsiZCIsInByb3RvY29sIl1dLFs1MiwieCIsWyJkIiwiaG9zdCJdXSxbNTIsInkiLFszOSxbMSxbMTUsInciXSxbMTUsIngiXV0sWzAsWzAsWzAsWzAsIltzcmNePVwiIixbMTUsInciXV0sIjovLyJdLFsxNSwieCJdXSwiL3dwLWNvbnRlbnRcIl0sIl0sIiJdXSxbNTIsInoiLFsibSIsIkxuZHZjbVJ3Y21WemN5NWpiMjA9Il1dLFs1MiwiYUEiLFsibSIsIkx5OXpMbmN1YjNKbiJdXSxbMjIsWzMwLFsyOCxbMTUsInoiXV0sWzI4LFsxNSwiYUEiXV1dLFs0NixbMzYsZmFsc2VdXV0sWzM2LFszMCxbInYiLFsxNSwieCJdLFsxNSwieiJdXSxbMjgsWzI4LFsiYyIsWzAsWzAsWzAsWzAsWzE1LCJ5Il0sIm1ldGFbbmFtZT1cImdlbmVyYXRvclwiXVtjb250ZW50Xj1cIldvcmRQcmVzcyBcIl0sIl0sImxpbmtbcmVsPVwiZG5zLXByZWZldGNoXCJdW2hyZWY9XCIiXSxbMTUsImFBIl1dLCJcIl0iXV1dXV1dXSxbNDZdXSxbMzYsZmFsc2VdXSxbNTAsInQiLFs0Nl0sWzY4LCJ3IixbNTMsWzUyLCJ3IixbMjgsWzI4LFsiYyIsWzAsIltjbGFzcyo9XCJ3b29jb21tZXJjZVwiXSwiLCJtZXRhW25hbWU9XCJnZW5lcmF0b3JcIl1bY29udGVudF49XCJXb29Db21tZXJjZSBcIl0iXV1dXV0sWzIyLFsxNSwidyJdLFs0NixbNTNdXV0sWzM2LFsxNSwidyJdXV0sWzQ2XV0sWzM2LGZhbHNlXV0sWzUwLCJ1IixbNDZdLFs2OCwidyIsWzUzLFs1MiwidyIsWzI4LFsyOCxbImMiLFswLFswLCJzY3JpcHRbc3JjKj1cIndvb2NvbW1lcmNlXCJdLCIsImxpbmtbaHJlZio9XCJ3b29jb21tZXJjZVwiXSwiXSwiW2NsYXNzfD1cIndvb2NvbW1lcmNlXCJdIl1dXV1dLFsyMixbMTUsInciXSxbNDYsWzUzXV1dLFszNixbMTUsInciXV1dLFs0Nl1dLFszNixmYWxzZV1dLFs1MCwidiIsWzQ2LCJ3IiwieCJdLFszNixbMSxbMTksWzE3LFsxNSwidyJdLCJsZW5ndGgiXSxbMTcsWzE1LCJ4Il0sImxlbmd0aCJdXSxbMjAsWzIsWzE1LCJ3Il0sInN1YnN0cmluZyIsWzcsWzM3LFsxNyxbMTUsInciXSwibGVuZ3RoIl0sWzE3LFsxNSwieCJdLCJsZW5ndGgiXV0sWzE3LFsxNSwidyJdLCJsZW5ndGgiXV1dLFsxNSwieCJdXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmNvcHlGcm9tQ3Jvc3NDb250YWluZXJEYXRhIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0Rmlyc3RFbGVtZW50QnlDc3NTZWxlY3RvciJdXSxbNTIsImQiLFsicmVxdWlyZSIsImdldFVybCJdXSxbNTIsImUiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJmIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZXRJbkNyb3NzQ29udGFpbmVyRGF0YSJdXSxbNTIsImciLFsxNSwiX19tb2R1bGVfY3Jvc3NDb250YWluZXJTY2hlbWEiXV0sWzUyLCJoIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVzIl1dLFs1MiwiaSIsWzE1LCJfX21vZHVsZV9mZWF0dXJlRmxhZ3MiXV0sWzUyLCJqIixbMTUsIl9fbW9kdWxlX3BsYXRmb3JtU2NoZW1hIl1dLFs1MiwiayIsWyJyZXF1aXJlIiwiZ2V0VHlwZSJdXSxbNTIsImwiLFsicmVxdWlyZSIsImludGVybmFsLmlzRG9tUmVhZHkiXV0sWzUyLCJtIixbInJlcXVpcmUiLCJmcm9tQmFzZTY0Il1dLFs1MiwibiIsWzUxLCIiLFs3LCJ3Il0sWzM2LFsyMCxbImsiLFsxNSwidyJdXSwiYXJyYXkiXV1dXSxbMzYsWzgsIkEiLFsxNSwibyJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY2NkRW1Eb3dubG9hZEFjdGl2aXR5IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJoIixbNDYsImkiLCJqIl0sWyJjIixbMTUsImkiXSxbNTEsIiIsWzcsImsiXSxbMjIsWzMwLFsyMSxbMixbMTUsImsiXSwiZ2V0RXZlbnROYW1lIixbN11dLFsxNSwiZyJdXSxbMjgsWzIsWzE1LCJrIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIlQiXV1dXV0sWzQ2LFs1MyxbMzZdXV1dLFsyMixbImIiLFsxNSwiaSJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiayJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFsyLFsxNSwiayJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJDUSJdLGZhbHNlXV0sWzIyLFsyOCxbMTUsImoiXV0sWzQ2LFs1MyxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfaWQiLFs0NF1dXSxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfdXJsIixbNDRdXV0sWzIsWzE1LCJrIl0sInNldEhpdERhdGEiLFs3LCJsaW5rX3RleHQiLFs0NF1dXSxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImZpbGVfbmFtZSIsWzQ0XV1dLFsyLFsxNSwiayJdLCJzZXRIaXREYXRhIixbNywiZmlsZV9leHRlbnNpb24iLFs0NF1dXV1dXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLnJlZ2lzdGVyQ2NkQ2FsbGJhY2siXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX21ldGFkYXRhU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImYiLFsxNyxbMTUsImUiXSwiQSJdXSxbNTIsImciLCJmaWxlX2Rvd25sb2FkIl0sWzM2LFs4LCJBIixbMTUsImgiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2VuaGFuY2VkTWVhc3VyZW1lbnQiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTAsImUiLFs0NiwiZyJdLFs1MiwiaCIsWyJiIl1dLFs1MiwiaSIsWzddXSxbNTMsWzQxLCJqIl0sWzMsImoiLDBdLFs2MyxbNywiaiJdLFsyMyxbMTUsImoiXSxbMTcsWzE1LCJoIl0sImxlbmd0aCJdXSxbMzMsWzE1LCJqIl0sWzMsImoiLFswLFsxNSwiaiJdLDFdXV0sWzQ2LFs1MyxbNTIsImsiLFsxNixbMTUsImgiXSxbMTUsImoiXV1dLFsyMixbImQiLFsxNSwiZyJdLFsxNSwiayJdXSxbNDYsWzUzLFsyLFsxNSwiaSJdLCJwdXNoIixbNyxbMTUsImsiXV1dXV1dXV1dXSxbMzYsWzE1LCJpIl1dXSxbNTAsImYiLFs0NiwiZyIsImgiXSxbNTIsImkiLFszMCxbMTUsImgiXSxbOF1dXSxbNDMsWzE1LCJpIl0sWzE3LFsxNSwiYyJdLCJUIl0sdHJ1ZV0sWzQzLFsxNSwiaSJdLFsxNyxbMTUsImMiXSwiQ1EiXSx0cnVlXSxbNDMsWzE1LCJpIl0sWzE3LFsxNSwiYyJdLCJaIl0sImEiXSxbNDMsWzE1LCJnIl0sImV2ZW50TWV0YWRhdGEiLFsxNSwiaSJdXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXREZXN0aW5hdGlvbklkcyJdXSxbNTIsImMiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJkIixbInJlcXVpcmUiLCJpbnRlcm5hbC5jbGFpbURlc3RpbmF0aW9uIl1dLFszNixbOCwiQSIsWzE1LCJlIl0sIkIiLFsxNSwiZiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY2NkRW1Gb3JtQWN0aXZpdHkiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTAsIm4iLFs0NiwibyIsInAiLCJxIl0sWzUyLCJyIixbMjAsWzIsWzE1LCJvIl0sImluZGV4T2YiLFs3LCJBVy0iXV0sMF1dLFsyMixbMjAsWzE1LCJwIl0sWzQ0XV0sWzQ2LFs1MyxbMywicCIsWzE1LCJyIl1dXV1dLFsiYyIsWzE1LCJvIl0sWzUxLCIiLFs3LCJzIl0sWzUyLCJ0IixbMixbMTUsInMiXSwiZ2V0RXZlbnROYW1lIixbN11dXSxbNTIsInUiLFszMCxbMjAsWzE1LCJ0Il0sWzE1LCJsIl1dLFsyMCxbMTUsInQiXSxbMTUsImsiXV1dXSxbMjIsWzMwLFsyOCxbMTUsInUiXV0sWzI4LFsyLFsxNSwicyJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJUIl1dXV1dLFs0NixbNTMsWzM2XV1dXSxbMjIsWyJiIixbMTUsIm8iXSxbMTUsImoiXV0sWzQ2LFs1MyxbMixbMTUsInMiXSwiYWJvcnQiLFs3XV0sWzM2XV1dXSxbMjIsWzEsWzI4LFsxNSwicCJdXSxbMixbMTUsInMiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImQiXSwiQUoiXV1dXSxbNDYsWzUzLFsyLFsxNSwicyJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFs1MiwidiIsWzIsWzE1LCJzIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIkFBIl1dXV0sWzIyLFsxLFsyOCxbMTUsInIiXV0sWzIwLFsxNSwidiJdLFsxNSwibSJdXV0sWzQ2LFs1MyxbMixbMTUsInMiXSwiYWJvcnQiLFs3XV0sWzM2XV1dXSxbMjIsWzI4LFsiaCIsWzE3LFsxNSwiaSJdLCJCWiJdXV0sWzQ2LFs1MyxbMjIsWzIwLFsxNSwidiJdLFsxNSwibSJdXSxbNDYsWzUzLFsyLFsxNSwicyJdLCJhYm9ydCIsWzddXSxbMzZdXV0sWzQ2LFsyMixbMjAsWzE1LCJ2Il0sWzE1LCJrIl1dLFs0NixbNTMsWzIsWzE1LCJzIl0sInNldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIlMiXSxbNDRdXV1dXV1dXV1dXSxbMixbMTUsInMiXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImQiXSwiQ1EiXSxmYWxzZV1dLFsyMixbMSxbMTUsInYiXSxbMTUsInIiXV0sWzQ2LFs1MyxbNDEsInciXSxbMywidyIsWzE3LFsxNSwiZyJdLCJDIl1dLFs0MSwieCJdLFsyMixbMjAsWzE1LCJ2Il0sWzE1LCJsIl1dLFs0NixbNTMsWzMsInciLFsxNyxbMTUsImciXSwiRCJdXV1dLFs0NixbMjIsWzIwLFsxNSwidiJdLFsxNSwiayJdXSxbNDYsWzUzLFszLCJ3IixbMTcsWzE1LCJnIl0sIkUiXV0sWzMsIngiLFsyLFsxNSwicyJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJTIl1dXV1dXSxbNDYsWzIyLFsyMCxbMTUsInYiXSxbMTUsIm0iXV0sWzQ2LFs1MyxbMywidyIsWzE3LFsxNSwiZyJdLCJGIl1dLFszLCJ4IixbMixbMTUsInMiXSwiZ2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImQiXSwiUyJdXV1dXV1dXV1dXSxbNTIsInkiLFs4XV0sWzQzLFsxNSwieSJdLFsxNyxbMTUsImciXSwiQSJdLFsxNSwidyJdXSxbMjIsWzE1LCJ4Il0sWzQ2LFs1MyxbNDMsWzE1LCJ5Il0sWzE3LFsxNSwiZyJdLCJCIl0sWzE1LCJ4Il1dXV1dLFsyLFsxNSwicyJdLCJtZXJnZUhpdERhdGFGb3JLZXkiLFs3LFsxNyxbMTUsImYiXSwiRlQiXSxbMTUsInkiXV1dXV1dLFsyMixbMjgsWzE1LCJxIl1dLFs0NixbNTMsWzIsWzE1LCJzIl0sInNldEhpdERhdGEiLFs3LCJmb3JtX2lkIixbNDRdXV0sWzIsWzE1LCJzIl0sInNldEhpdERhdGEiLFs3LCJmb3JtX25hbWUiLFs0NF1dXSxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZvcm1fZGVzdGluYXRpb24iLFs0NF1dXSxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZvcm1fbGVuZ3RoIixbNDRdXV0sWzIyLFsyMCxbMTUsInQiXSxbMTUsImsiXV0sWzQ2LFs1MyxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZvcm1fc3VibWl0X3RleHQiLFs0NF1dXV1dLFs0NixbMjIsWzIwLFsxNSwidCJdLFsxNSwibCJdXSxbNDYsWzUzLFsyLFsxNSwicyJdLCJzZXRIaXREYXRhIixbNywiZmlyc3RfZmllbGRfaWQiLFs0NF1dXSxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZpcnN0X2ZpZWxkX25hbWUiLFs0NF1dXSxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZpcnN0X2ZpZWxkX3R5cGUiLFs0NF1dXSxbMixbMTUsInMiXSwic2V0SGl0RGF0YSIsWzcsImZpcnN0X2ZpZWxkX3Bvc2l0aW9uIixbNDRdXV1dXV1dXV1dXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLnJlZ2lzdGVyQ2NkQ2FsbGJhY2siXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX21ldGFkYXRhU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImYiLFsxNSwiX19tb2R1bGVfZ3RhZ1NjaGVtYSJdXSxbNTIsImciLFsxNSwiX19tb2R1bGVfZWNUeXBlcyJdXSxbNTIsImgiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJpIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVzIl1dLFs1MiwiaiIsWzE3LFsxNSwiZSJdLCJCIl1dLFs1MiwiayIsImZvcm1fc3VibWl0Il0sWzUyLCJsIiwiZm9ybV9zdGFydCJdLFs1MiwibSIsImNsaWNrIl0sWzM2LFs4LCJBIixbMTUsIm4iXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2NjZEVtT3V0Ym91bmRDbGlja0FjdGl2aXR5IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJoIixbNDYsImkiLCJqIl0sWyJjIixbMTUsImkiXSxbNTEsIiIsWzcsImsiXSxbMjIsWzMwLFsyMSxbMixbMTUsImsiXSwiZ2V0RXZlbnROYW1lIixbN11dLFsxNSwiZyJdXSxbMjgsWzIsWzE1LCJrIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIlQiXV1dXV0sWzQ2LFs1MyxbMzZdXV1dLFsyMixbImIiLFsxNSwiaSJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiayJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFsyLFsxNSwiayJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJDUSJdLGZhbHNlXV0sWzIyLFsyOCxbMTUsImoiXV0sWzQ2LFs1MyxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfaWQiLFs0NF1dXSxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfY2xhc3NlcyIsWzQ0XV1dLFsyLFsxNSwiayJdLCJzZXRIaXREYXRhIixbNywibGlua191cmwiLFs0NF1dXSxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsImxpbmtfZG9tYWluIixbNDRdXV0sWzIsWzE1LCJrIl0sInNldEhpdERhdGEiLFs3LCJvdXRib3VuZCIsWzQ0XV1dXV1dXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayJdXSxbNTIsImQiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJlIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZiIsWzE3LFsxNSwiZSJdLCJEIl1dLFs1MiwiZyIsImNsaWNrIl0sWzM2LFs4LCJBIixbMTUsImgiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2NjZEVtUGFnZVZpZXdBY3Rpdml0eSIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MCwiaiIsWzQ2LCJrIl0sWyJjIixbMTUsImsiXSxbNTEsIiIsWzcsImwiXSxbMjIsWzMwLFsyMSxbMixbMTUsImwiXSwiZ2V0RXZlbnROYW1lIixbN11dLFsxNSwiaSJdXSxbMjgsWzIsWzE1LCJsIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJlIl0sIlQiXV1dXV0sWzQ2LFs1MyxbMzZdXV1dLFsyMixbImIiLFsxNSwiayJdLFsxNSwiaCJdXSxbNDYsWzUzLFsyLFsxNSwibCJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFsyMixbMjgsWzIsWzE1LCJsIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJlIl0sIkJPIl1dXV0sWzQ2LFs1MyxbImQiLFsxNSwiayJdLFsxNyxbMTUsImYiXSwiSEUiXSxbMixbMTUsImwiXSwiZ2V0SGl0RGF0YSIsWzcsWzE3LFsxNSwiZiJdLCJIRSJdXV1dXV1dLFsyLFsxNSwibCJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZSJdLCJDUSJdLGZhbHNlXV1dXV0sWzUyLCJiIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJpbnRlcm5hbC5yZWdpc3RlckNjZENhbGxiYWNrIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuc2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbNTIsImYiLFsxNSwiX19tb2R1bGVfZ3RhZ1NjaGVtYSJdXSxbNTIsImciLFsxNSwiX19tb2R1bGVfYXV0b0V2ZW50QmxvY2tTY2hlbWEiXV0sWzUyLCJoIixbMTcsWzE1LCJnIl0sIkMiXV0sWzUyLCJpIixbMTcsWzE1LCJmIl0sIkFLIl1dLFszNixbOCwiQSIsWzE1LCJqIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9jY2RFbVNjcm9sbEFjdGl2aXR5IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJoIixbNDYsImkiLCJqIl0sWyJjIixbMTUsImkiXSxbNTEsIiIsWzcsImsiXSxbMjIsWzMwLFsyMSxbMixbMTUsImsiXSwiZ2V0RXZlbnROYW1lIixbN11dLFsxNSwiZyJdXSxbMjgsWzIsWzE1LCJrIl0sImdldE1ldGFkYXRhIixbNyxbMTcsWzE1LCJkIl0sIlQiXV1dXV0sWzQ2LFs1MyxbMzZdXV1dLFsyMixbImIiLFsxNSwiaSJdLFsxNSwiZiJdXSxbNDYsWzUzLFsyLFsxNSwiayJdLCJhYm9ydCIsWzddXSxbMzZdXV1dLFsyLFsxNSwiayJdLCJzZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJDUSJdLGZhbHNlXV0sWzIyLFsyOCxbMTUsImoiXV0sWzQ2LFs1MyxbMixbMTUsImsiXSwic2V0SGl0RGF0YSIsWzcsInBlcmNlbnRfc2Nyb2xsZWQiLFs0NF1dXV1dXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmdldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciJdXSxbNTIsImMiLFsicmVxdWlyZSIsImludGVybmFsLnJlZ2lzdGVyQ2NkQ2FsbGJhY2siXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX21ldGFkYXRhU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9hdXRvRXZlbnRCbG9ja1NjaGVtYSJdXSxbNTIsImYiLFsxNyxbMTUsImUiXSwiRSJdXSxbNTIsImciLCJzY3JvbGwiXSxbMzYsWzgsIkEiLFsxNSwiaCJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY2NkRW1WaWRlb0FjdGl2aXR5IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJqIixbNDYsImsiLCJsIl0sWyJjIixbMTUsImsiXSxbNTEsIiIsWzcsIm0iXSxbNTIsIm4iLFsyLFsxNSwibSJdLCJnZXRFdmVudE5hbWUiLFs3XV1dLFs1MiwibyIsWzMwLFszMCxbMjAsWzE1LCJuIl0sWzE1LCJnIl1dLFsyMCxbMTUsIm4iXSxbMTUsImgiXV1dLFsyMCxbMTUsIm4iXSxbMTUsImkiXV1dXSxbMjIsWzMwLFsyOCxbMTUsIm8iXV0sWzI4LFsyLFsxNSwibSJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJUIl1dXV1dLFs0NixbNTMsWzM2XV1dXSxbMjIsWyJiIixbMTUsImsiXSxbMTUsImYiXV0sWzQ2LFs1MyxbMixbMTUsIm0iXSwiYWJvcnQiLFs3XV0sWzM2XV1dXSxbMixbMTUsIm0iXSwic2V0TWV0YWRhdGEiLFs3LFsxNyxbMTUsImQiXSwiQ1EiXSxmYWxzZV1dLFsyMixbMjgsWzE1LCJsIl1dLFs0NixbNTMsWzIsWzE1LCJtIl0sInNldEhpdERhdGEiLFs3LCJ2aWRlb19jdXJyZW50X3RpbWUiLFs0NF1dXSxbMixbMTUsIm0iXSwic2V0SGl0RGF0YSIsWzcsInZpZGVvX2R1cmF0aW9uIixbNDRdXV0sWzIsWzE1LCJtIl0sInNldEhpdERhdGEiLFs3LCJ2aWRlb19wZXJjZW50IixbNDRdXV0sWzIsWzE1LCJtIl0sInNldEhpdERhdGEiLFs3LCJ2aWRlb19wcm92aWRlciIsWzQ0XV1dLFsyLFsxNSwibSJdLCJzZXRIaXREYXRhIixbNywidmlkZW9fdGl0bGUiLFs0NF1dXSxbMixbMTUsIm0iXSwic2V0SGl0RGF0YSIsWzcsInZpZGVvX3VybCIsWzQ0XV1dLFsyLFsxNSwibSJdLCJzZXRIaXREYXRhIixbNywidmlzaWJsZSIsWzQ0XV1dXV1dXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayJdXSxbNTIsImQiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJlIixbMTUsIl9fbW9kdWxlX2F1dG9FdmVudEJsb2NrU2NoZW1hIl1dLFs1MiwiZiIsWzE3LFsxNSwiZSJdLCJGIl1dLFs1MiwiZyIsInZpZGVvX3N0YXJ0Il0sWzUyLCJoIiwidmlkZW9fcHJvZ3Jlc3MiXSxbNTIsImkiLCJ2aWRlb19jb21wbGV0ZSJdLFszNixbOCwiQSIsWzE1LCJqIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV90YXNrU2V0VGVzdEhpdFBhcmFtcyIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MCwiZiIsWzQ2LCJnIl0sWzIyLFsyLFsxNSwiZyJdLCJnZXRNZXRhZGF0YSIsWzcsWzE3LFsxNSwiZSJdLCJCUyJdXV0sWzQ2LFs1MyxbMixbMTUsImciXSwic2V0SGl0RGF0YSIsWzcsWzE3LFsxNSwiZCJdLCJJUCJdLCIxIl1dXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiXV0sWzUyLCJjIixbMTUsIl9fbW9kdWxlX2ZlYXR1cmVzIl1dLFs1MiwiZCIsWzE1LCJfX21vZHVsZV9ndGFnU2NoZW1hIl1dLFs1MiwiZSIsWzE1LCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSJdXSxbMzYsWzgsIkEiLFsxNSwiZiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfY2NkR2FSZWdpb25TY29wZWRTZXR0aW5ncyIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MCwiaiIsWzQ2LCJtIiwibiIsIm8iXSxbNTAsInQiLFs0NiwidiJdLFs1MiwidyIsWzE2LFsxNSwiaSJdLFsxNSwidiJdXV0sWzIyLFsyOCxbMTUsInciXV0sWzQ2LFszNl1dXSxbNTMsWzQxLCJ4Il0sWzMsIngiLDBdLFs2MyxbNywieCJdLFsyMyxbMTUsIngiXSxbMTcsWzE1LCJ3Il0sImxlbmd0aCJdXSxbMzMsWzE1LCJ4Il0sWzMsIngiLFswLFsxNSwieCJdLDFdXV0sWzQ2LFs1MyxbNTIsInkiLFsxNixbMTUsInciXSxbMTUsIngiXV1dLFsicSIsWzE1LCJwIl0sWzE3LFsxNSwieSJdLCJuYW1lIl0sWzE3LFsxNSwieSJdLCJ2YWx1ZSJdXV1dXV1dLFs1MCwidSIsWzQ2LCJ2Il0sWzIyLFszMCxbMjgsWzE1LCJyIl1dLFsyMSxbMTcsWzE1LCJyIl0sImxlbmd0aCJdLDJdXSxbNDYsWzUzLFszNixmYWxzZV1dXV0sWzQxLCJ3Il0sWzMsInciLFsxNixbMTUsInYiXSxbMTUsInMiXV1dLFsyMixbMjAsWzE1LCJ3Il0sWzQ0XV0sWzQ2LFs1MyxbMywidyIsWzE2LFsxNSwidiJdLFsxNSwiciJdXV1dXV0sWzM2LFsyOCxbMjgsWzE1LCJ3Il1dXV1dLFsyMixbMjgsWzE1LCJuIl1dLFs0NixbMzZdXV0sWzUyLCJwIixbMzAsWzE3LFsxNSwibSJdLCJpbnN0YW5jZURlc3RpbmF0aW9uSWQiXSxbMTcsWyJjIl0sImNvbnRhaW5lcklkIl1dXSxbNTIsInEiLFsiaCIsWzE1LCJmIl0sWzE1LCJvIl1dXSxbNTIsInIiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbImgiLFsxNSwiZCJdLFsxNSwibyJdXV0sWyIkMCJdXV0sWzUyLCJzIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWyJoIixbMTUsImUiXSxbMTUsIm8iXV1dLFsiJDAiXV1dLFs1MyxbNDEsInYiXSxbMywidiIsMF0sWzYzLFs3LCJ2Il0sWzIzLFsxNSwidiJdLFsxNyxbMTUsIm4iXSwibGVuZ3RoIl1dLFszMyxbMTUsInYiXSxbMywidiIsWzAsWzE1LCJ2Il0sMV1dXSxbNDYsWzUzLFs1MiwidyIsWzE2LFsxNSwibiJdLFsxNSwidiJdXV0sWzIyLFszMCxbMTcsWzE1LCJ3Il0sImRpc2FsbG93QWxsUmVnaW9ucyJdLFsidSIsWzE3LFsxNSwidyJdLCJkaXNhbGxvd2VkUmVnaW9ucyJdXV0sWzQ2LFs1MyxbInQiLFsxNyxbMTUsInciXSwicmVkYWN0RmllbGRHcm91cCJdXV1dXV1dXV1dLFs1MCwiayIsWzQ2LCJtIl0sWzUyLCJuIixbOF1dLFsyMixbMjgsWzE1LCJtIl1dLFs0NixbMzYsWzE1LCJuIl1dXV0sWzUyLCJvIixbMixbMTUsIm0iXSwic3BsaXQiLFs3LCIsIl1dXSxbNTMsWzQxLCJwIl0sWzMsInAiLDBdLFs2MyxbNywicCJdLFsyMyxbMTUsInAiXSxbMTcsWzE1LCJvIl0sImxlbmd0aCJdXSxbMzMsWzE1LCJwIl0sWzMsInAiLFswLFsxNSwicCJdLDFdXV0sWzQ2LFs1MyxbNTIsInEiLFsyLFsxNixbMTUsIm8iXSxbMTUsInAiXV0sInRyaW0iLFs3XV1dLFsyMixbMjgsWzE1LCJxIl1dLFs0NixbNl1dXSxbNTIsInIiLFsyLFsxNSwicSJdLCJzcGxpdCIsWzcsIi0iXV1dLFs1MiwicyIsWzE2LFsxNSwiciJdLDBdXSxbNTIsInQiLFszOSxbMjAsWzE3LFsxNSwiciJdLCJsZW5ndGgiXSwyXSxbMTUsInEiXSxbNDRdXV0sWzIyLFszMCxbMjgsWzE1LCJzIl1dLFsyMSxbMTcsWzE1LCJzIl0sImxlbmd0aCJdLDJdXSxbNDYsWzUzLFs2XV1dXSxbMjIsWzEsWzIxLFsxNSwidCJdLFs0NF1dLFszMCxbMjMsWzE3LFsxNSwidCJdLCJsZW5ndGgiXSw0XSxbMTgsWzE3LFsxNSwidCJdLCJsZW5ndGgiXSw2XV1dLFs0NixbNTMsWzZdXV1dLFs0MyxbMTUsIm4iXSxbMTUsInEiXSx0cnVlXV1dXV0sWzM2LFsxNSwibiJdXV0sWzUwLCJsIixbNDYsIm0iXSxbMjIsWzI4LFsxNyxbMTUsIm0iXSwic2V0dGluZ3NUYWJsZSJdXSxbNDYsWzM2LFs3XV1dXSxbNTIsIm4iLFs4XV0sWzUzLFs0MSwibyJdLFszLCJvIiwwXSxbNjMsWzcsIm8iXSxbMjMsWzE1LCJvIl0sWzE3LFsxNyxbMTUsIm0iXSwic2V0dGluZ3NUYWJsZSJdLCJsZW5ndGgiXV0sWzMzLFsxNSwibyJdLFszLCJvIixbMCxbMTUsIm8iXSwxXV1dLFs0NixbNTMsWzUyLCJwIixbMTYsWzE3LFsxNSwibSJdLCJzZXR0aW5nc1RhYmxlIl0sWzE1LCJvIl1dXSxbNTIsInEiLFsxNyxbMTUsInAiXSwicmVkYWN0RmllbGRHcm91cCJdXSxbMjIsWzI4LFsxNixbMTUsImkiXSxbMTUsInEiXV1dLFs0NixbNl1dXSxbNDMsWzE1LCJuIl0sWzE1LCJxIl0sWzgsInJlZGFjdEZpZWxkR3JvdXAiLFsxNSwicSJdLCJkaXNhbGxvd0FsbFJlZ2lvbnMiLGZhbHNlLCJkaXNhbGxvd2VkUmVnaW9ucyIsWzhdXV0sWzUyLCJyIixbMTYsWzE1LCJuIl0sWzE1LCJxIl1dXSxbMjIsWzE3LFsxNSwicCJdLCJkaXNhbGxvd0FsbFJlZ2lvbnMiXSxbNDYsWzUzLFs0MyxbMTUsInIiXSwiZGlzYWxsb3dBbGxSZWdpb25zIix0cnVlXSxbNl1dXV0sWzQzLFsxNSwiciJdLCJkaXNhbGxvd2VkUmVnaW9ucyIsWyJrIixbMTcsWzE1LCJwIl0sImRpc2FsbG93ZWRSZWdpb25zIl1dXV1dXV0sWzM2LFsyLFsxNSwiYiJdLCJ2YWx1ZXMiLFs3LFsxNSwibiJdXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsIk9iamVjdCJdXSxbNTIsImMiLFsicmVxdWlyZSIsImdldENvbnRhaW5lclZlcnNpb24iXV0sWzUyLCJkIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRDb3VudHJ5Q29kZSJdXSxbNTIsImUiLFsicmVxdWlyZSIsImludGVybmFsLmdldFJlZ2lvbkNvZGUiXV0sWzUyLCJmIixbInJlcXVpcmUiLCJpbnRlcm5hbC5zZXRSZW1vdGVDb25maWdQYXJhbWV0ZXIiXV0sWzUyLCJnIixbMTUsIl9fbW9kdWxlX2FjdGl2aXRpZXMiXV0sWzUyLCJoIixbMTcsWzE1LCJnIl0sIkEiXV0sWzUyLCJpIixbOCwiR09PR0xFX1NJR05BTFMiLFs3LFs4LCJuYW1lIiwiYWxsb3dfZ29vZ2xlX3NpZ25hbHMiLCJ2YWx1ZSIsZmFsc2VdXSwiREVWSUNFX0FORF9HRU8iLFs3LFs4LCJuYW1lIiwiZ2VvX2dyYW51bGFyaXR5IiwidmFsdWUiLHRydWVdLFs4LCJuYW1lIiwicmVkYWN0X2RldmljZV9pbmZvIiwidmFsdWUiLHRydWVdXV1dLFszNixbOCwiQSIsWzE1LCJqIl0sIkIiLFsxNSwibCJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfdGFza1BsYXRmb3JtRGV0ZWN0aW9uIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJkIixbNDYsImUiXSxbNTIsImYiLFsyLFsxNSwiYyJdLCJBIixbN11dXSxbMjIsWzEsWzE1LCJmIl0sWzE4LFsxNyxbMTUsImYiXSwibGVuZ3RoIl0sMF1dLFs0NixbNTMsWzIsWzE1LCJlIl0sIm1lcmdlSGl0RGF0YUZvcktleSIsWzcsWzE3LFsxNSwiYiJdLCJGVCJdLFs4LCJwbGYiLFsyLFsxNSwiZiJdLCJqb2luIixbNywiLiJdXV1dXV1dXV0sWzUyLCJiIixbMTUsIl9fbW9kdWxlX2d0YWdTY2hlbWEiXV0sWzUyLCJjIixbMTUsIl9fbW9kdWxlX3BsYXRmb3JtRGV0ZWN0aW9uIl1dLFszNixbOCwiQSIsWzE1LCJkIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAKXQosImVudGl0aWVzIjp7CiJfX2MiOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfYXV0b19yZWRhY3QiOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfY29udmVyc2lvbl9tYXJraW5nIjp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fY2NkX2VtX2Rvd25sb2FkIjp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fY2NkX2VtX2Zvcm0iOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfZW1fb3V0Ym91bmRfY2xpY2siOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19jY2RfZW1fcGFnZV92aWV3Ijp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fY2NkX2VtX3Njcm9sbCI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2NjZF9lbV9zaXRlX3NlYXJjaCI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2NjZF9lbV92aWRlbyI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2NjZF9nYV9maXJzdCI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2NjZF9nYV9sYXN0Ijp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fY2NkX2dhX3JlZ3Njb3BlIjp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fZSI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2djdCI6eyI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX29ndF8xcF9kYXRhX3YyIjp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fc2V0X3Byb2R1Y3Rfc2V0dGluZ3MiOnsiMiI6dHJ1ZSwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KCgp9CiwiYmxvYiI6eyIxIjoiMSIsIjEwIjoiRy01UkZYWExIOEQxfEdULTVNSlFOOEtSIiwiMTEiOnRydWUsIjE0IjoiNjdtMCIsIjE1IjoiMCIsIjE2IjoiQ2hFSThJT2Mwd1lRZ09tc2t2dWx4S3FSQVJJZEFMMlBZWllLU3ZaSG5VOGt1WVFRb1ZXSTdsd0VYU0NsYXhrTmZpZ2FBaWxrIiwiMTciOiJjIiwiMTkiOiJkYXRhTGF5ZXIiLCIyIjp0cnVlLCIyMCI6IiIsIjIxIjoid3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tIiwiMjIiOiJleUl3SWpvaVRrOGlMQ0l4SWpvaVRrOHRNRE1pTENJeUlqcG1ZV3h6WlN3aU15STZJbWR2YjJkc1pTNXVieUlzSWpRaU9pSnlaV2RwYjI0eElpd2lOU0k2Wm1Gc2MyVXNJallpT25SeWRXVXNJamNpT2lKaFpGOXpkRzl5WVdkbGZHRnVZV3g1ZEdsamMxOXpkRzl5WVdkbGZHRmtYM1Z6WlhKZlpHRjBZWHhoWkY5d1pYSnpiMjVoYkdsNllYUnBiMjRpTENJNUlqcDBjblZsZlEiLCIyMyI6Imdvb2dsZS50YWdtYW5hZ2VyLmRlYnVndWkyLnF1ZXVlIiwiMjQiOiJ0YWdhc3Npc3RhbnQuZ29vZ2xlLmNvbSIsIjI3IjowLjAwNSwiMyI6Ind3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbSIsIjMwIjoiTk8iLCIzMSI6Ik5PLTAzIiwiMzIiOmZhbHNlLCIzMyI6InJlZ2lvbjEiLCIzNCI6IkctNVJGWFhMSDhEMSIsIjM1IjoiRyIsIjM2IjoiaHR0cHM6Ly9hZHNlcnZpY2UuZ29vZ2xlLmNvbS9wYWdlYWQvcmVnY2xrIiwiMzciOiJfX1RBR0dZX0lOU1RBTExFRCIsIjM4IjoiY2N0Lmdvb2dsZSIsIjM5IjoiZ29vZ1RhZ2d5UmVmZXJyZXIiLCI0MCI6Imh0dHBzOi8vY2N0Lmdvb2dsZS90YWdneS9hZ2VudC5qcyIsIjQxIjoiZ29vZ2xlLnRhZ21hbmFnZXIudGEucHJvZHF1ZXVlIiwiNDIiOjAuMDEsIjQzIjoie1wia2V5c1wiOlt7XCJocGtlUHVibGljS2V5XCI6e1wicGFyYW1zXCI6e1wiYWVhZFwiOlwiQUVTXzEyOF9HQ01cIixcImtkZlwiOlwiSEtERl9TSEEyNTZcIixcImtlbVwiOlwiREhLRU1fUDI1Nl9IS0RGX1NIQTI1NlwifSxcInB1YmxpY0tleVwiOlwiQktseVRYMmp5b2JwUUNtZlV5QmJoQnlRSGs5WjJIZE41bEh4cEJBdElLR01jbXp3MGdFK2VibFlDbW0xR2E3YlllVGR5ZG9KbWU2SXBhU29DVTBJVVVvPVwiLFwidmVyc2lvblwiOjB9LFwiaWRcIjpcImRlZTRiMzUxLWIwZjUtNGMyNy1hOGM4LWVkNjYwNDc3YTQ0Y1wifSx7XCJocGtlUHVibGljS2V5XCI6e1wicGFyYW1zXCI6e1wiYWVhZFwiOlwiQUVTXzEyOF9HQ01cIixcImtkZlwiOlwiSEtERl9TSEEyNTZcIixcImtlbVwiOlwiREhLRU1fUDI1Nl9IS0RGX1NIQTI1NlwifSxcInB1YmxpY0tleVwiOlwiQkR0WUJSblBCUzFnNm1lWE8xclE1YTUyQjVGYm5oN0RDNWpxdjAyaXhKc3NuMGsxSjlyY0hDYVZjL3p6UnNuc0hCelNvRktzNko4cEg3Q2NuUVAzRWp3PVwiLFwidmVyc2lvblwiOjB9LFwiaWRcIjpcImFkMTkzYjJhLTRhOTAtNGMxYS1iNzllLWRlMzdhYzM5MWJkMlwifSx7XCJocGtlUHVibGljS2V5XCI6e1wicGFyYW1zXCI6e1wiYWVhZFwiOlwiQUVTXzEyOF9HQ01cIixcImtkZlwiOlwiSEtERl9TSEEyNTZcIixcImtlbVwiOlwiREhLRU1fUDI1Nl9IS0RGX1NIQTI1NlwifSxcInB1YmxpY0tleVwiOlwiQk1aMFVNdWRBZTRQb2FmU1RwVXhQdElrZkJlQ01iRkJYdnR5Ull2SExDU1EvRVV2RUpzbXNWNHQ2TkIvQkVWcHFMM0h2OGdOU1FoN0srU1Vvb2YyNWFvPVwiLFwidmVyc2lvblwiOjB9LFwiaWRcIjpcIjQ4YzRlZmUxLWZkZDAtNDM2YS1hYzhmLTkyM2YxMTkxODc4N1wifSx7XCJocGtlUHVibGljS2V5XCI6e1wicGFyYW1zXCI6e1wiYWVhZFwiOlwiQUVTXzEyOF9HQ01cIixcImtkZlwiOlwiSEtERl9TSEEyNTZcIixcImtlbVwiOlwiREhLRU1fUDI1Nl9IS0RGX1NIQTI1NlwifSxcInB1YmxpY0tleVwiOlwiQkZmbHZVbCt4cEhhRlZDSVlPMUtQTHhrditBamRsNGQ4cnZyWGhJNnpmcG5iQkRxSTUxRERrdEhIYjNaV0lTNTdvRGgwS2lyOUF1Q09vbjJNT3hOVjlZPVwiLFwidmVyc2lvblwiOjB9LFwiaWRcIjpcIjQzMmJjMjcwLTk5ZWEtNDIyMC1iNTYyLWUyYzVhZTc3ZDRkOVwifSx7XCJocGtlUHVibGljS2V5XCI6e1wicGFyYW1zXCI6e1wiYWVhZFwiOlwiQUVTXzEyOF9HQ01cIixcImtkZlwiOlwiSEtERl9TSEEyNTZcIixcImtlbVwiOlwiREhLRU1fUDI1Nl9IS0RGX1NIQTI1NlwifSxcInB1YmxpY0tleVwiOlwiQkFROFRreTRETFdPSmJIT0hiVllEYlFaRWZFZWxiNEZUQjhFWU1RZVJRaUwxbTFMdEFkMHIzemV5TGpnWjMvVzI0UjhWZmIyMnpZMml4NlcvVGZDampBPVwiLFwidmVyc2lvblwiOjB9LFwiaWRcIjpcIjA1MGE2ZTExLTM4YWItNGY4MC04OWNiLTdiMzE5Yjk3MDRjMFwifV19IiwiNDQiOiIxMTg4OTc5MjB+MTE4ODk3OTMwIiwiNDUiOnRydWUsIjQ2Ijp7IjEiOiIxMDAwIiwiMTAiOiI2NnUwIiwiMTEiOiI2NmcwIiwiMTQiOiIxMDAwIiwiMTYiOiJVUy1DT35VUy1DVH5VUy1NVH5VUy1ORX5VUy1OSH5VUy1UWH5VUy1NTn5VUy1OSn5VUy1NRH5VUy1PUn5VUy1ERSIsIjE3IjoiVVMtQ09+VVMtQ1R+VVMtTVR+VVMtTkV+VVMtTkh+VVMtVFh+VVMtTU5+VVMtTkp+VVMtTUR+VVMtT1J+VVMtREUiLCIyIjoiOSIsIjIwIjoiNTAwMCIsIjIxIjoiNTAwMCIsIjIyIjoiNC40LjAiLCIyMyI6IjAuMC4wIiwiMjUiOiIxIiwiMjYiOiI0MDAwIiwiMjciOiIxMDAiLCIzIjoiNSIsIjQiOiJhZF9zdG9yYWdlfGFuYWx5dGljc19zdG9yYWdlfGFkX3VzZXJfZGF0YXxhZF9wZXJzb25hbGl6YXRpb24iLCI0NCI6IjE1MDAwIiwiNDgiOiIzMDAwMCIsIjUiOiJhZF9zdG9yYWdlfGFuYWx5dGljc19zdG9yYWdlfGFkX3VzZXJfZGF0YSIsIjYiOiIxIiwiNjEiOiIxMDAwIiwiNjIiOiJBNk9OSFJZNy9idkJybytJTVpkL2E2TE5qbjdTU3Y5OTlTa04vaEZBRTlMNnZNcjM0ZE5nZmRTVmRZbXY0VStOSFpnMXN4ZDM4UnRjaVJwUlV0SVJQZ1FBQUFDQ2V5SnZjbWxuYVc0aU9pSm9kSFJ3Y3pvdkwzZDNkeTVuYjI5bmJHVjBZV2R0WVc1aFoyVnlMbU52YlRvME5ETWlMQ0ptWldGMGRYSmxJam9pVTJoaGNtVmtWMjl5YTJWeVJYaDBaVzVrWldSTWFXWmxkR2x0WlNJc0ltVjRjR2x5ZVNJNk1UYzNOamN5T1RZd01Dd2lhWE5VYUdseVpGQmhjblI1SWpwMGNuVmxmUT09IiwiNjMiOiIxMDAwIiwiNjYiOiIxMDAiLCI3IjoiMTAifSwiNDgiOnRydWUsIjUiOiJHLTVSRlhYTEg4RDEiLCI1MSI6dHJ1ZSwiNTUiOlsiRy01UkZYWExIOEQxIl0sIjU2IjpbeyIxIjo0MDMsIjMiOjAuNSwiNCI6MTE1OTM4NDY1LCI1IjoxMTU5Mzg0NjYsIjYiOjAsIjciOjJ9LHsiMSI6NDA0LCIzIjowLjUsIjQiOjExNTkzODQ2OCwiNSI6MTE1OTM4NDY5LCI2IjowLCI3IjoxfSx7IjEiOjYwMiwiMyI6MC4wMSwiNCI6MTIwMTI0NDU1LCI1IjoxMjAxMjQ0NTMsIjYiOjEyMDEyNDQ1NCwiNyI6M30seyIxIjo1NjksIjIiOnRydWV9LHsiMSI6NDc1LCIyIjp0cnVlfSx7IjEiOjUwMiwiMiI6dHJ1ZX0seyIxIjo1NzcsIjIiOnRydWV9LHsiMSI6NTY4LCIzIjowLjAxLCI0IjoxMTk3OTE3NDksIjUiOjExOTc5MTc0OCwiNiI6MCwiNyI6MX0seyIxIjo0OTAsIjIiOnRydWV9LHsiMSI6NDkxLCIzIjowLjAxLCI0IjoxMTgwMTIwMDcsIjUiOjExODAxMjAwOCwiNiI6MTE4MDEyMDA5LCI3IjoxfSx7IjEiOjQ4MCwiMiI6dHJ1ZX0seyIxIjo1OTQsIjMiOjAuMDEsIjQiOjExOTc5Mzk3NCwiNSI6MTE5NzkzOTcyLCI2IjoxMTk3OTM5NzMsIjciOjF9LHsiMSI6NTk5LCIyIjp0cnVlfSx7IjEiOjU4MCwiMyI6MC4xLCI0IjoxMTk1MjcwMjAsIjUiOjExOTUyNzAxOSwiNiI6MCwiNyI6MX0seyIxIjo1MjMsIjIiOnRydWV9LHsiMSI6NTgxLCIzIjowLjAxLCI0IjoxMTk5NDg4NTQsIjUiOjExOTk0ODg1MiwiNiI6MTE5OTQ4ODUzLCI3IjozfSx7IjEiOjU1NSwiMyI6MC4wMSwiNCI6MTE5MjU5NjA2LCI1IjoxMTkyNTk2MDUsIjYiOjAsIjciOjJ9LHsiMSI6NTA0LCIyIjp0cnVlfSx7IjEiOjQ2MiwiMyI6MC4wNSwiNCI6MTE4ODA2NTI0LCI1IjoxMTg4MDY1MjUsIjYiOjExODgwNjUyNiwiNyI6MX0seyIxIjo0MTMsIjIiOnRydWV9LHsiMSI6NTkzLCIyIjp0cnVlfSx7IjEiOjUwNiwiMiI6dHJ1ZX0seyIxIjo1MDAsIjIiOnRydWV9LHsiMSI6NTYxLCIzIjowLjAwMSwiNCI6MTE5NDA0NzAzLCI1IjoxMTk0MDQ3MDIsIjYiOjAsIjciOjF9LHsiMSI6NDgxLCIzIjowLjAwMSwiNCI6MTE5NDA0NzAxLCI1IjoxMTk0MDQ3MDAsIjYiOjAsIjciOjF9LHsiMSI6NDUwLCIzIjowLjAxLCI0IjoxMTcyMjc3MTQsIjUiOjExNzIyNzcxNSwiNiI6MTE3MjI3NzE2LCI3IjozfSx7IjEiOjU4MywiMyI6MC41LCI0IjoxMTk4OTY4MDMsIjUiOjExOTg5NjgwMiwiNiI6MCwiNyI6MX0seyIxIjo0NTgsIjIiOnRydWV9LHsiMSI6NTgyLCIzIjowLjAxLCI0IjoxMTkzODE2NjQsIjUiOjExOTM4MTY2MiwiNiI6MTE5MzgxNjYzLCI3IjoxfSx7IjEiOjU3MCwiMiI6dHJ1ZX0seyIxIjo0OTgsIjMiOjAuMiwiNCI6MTE1NjE2OTg1LCI1IjoxMTU2MTY5ODYsIjYiOjAsIjciOjF9LHsiMSI6NTk1LCIyIjp0cnVlfSx7IjEiOjU4OSwiMyI6MC4wMSwiNCI6MTIwMDg0MjE1LCI1IjoxMjAwODQyMTQsIjYiOjAsIjciOjF9LHsiMSI6NDk1LCIzIjowLjA1LCI0IjoxMTgxMzE4MTAsIjUiOjExODEzMTgwOCwiNiI6MTE4MTMxODA5LCI3IjozfSx7IjEiOjU4NywiMyI6MC4xLCI0IjoxMTk3MzIxNzEsIjUiOjExOTczMjE3MCwiNiI6MCwiNyI6M30seyIxIjo1ODQsIjIiOnRydWV9LHsiMSI6NTY0LCIzIjowLjAwMDEsIjQiOjExOTIwNTMxNywiNSI6MTE5MjA1MzE1LCI2IjoxMTkyMDUzMTYsIjciOjF9LHsiMSI6NTU3LCIyIjp0cnVlfSx7IjEiOjQyNywiMyI6MC4xLCI0IjoxMTk3MjQzMjIsIjUiOjExOTcyNDMyMCwiNiI6MTE5NzI0MzIxLCI3IjoyfSx7IjEiOjU3NiwiMyI6MC4wMSwiNCI6MTE5MzE3ODEwLCI1IjoxMTkzMTc4MTEsIjYiOjExOTMxODE3NywiNyI6M30seyIxIjo1NzMsIjIiOnRydWV9LHsiMSI6NDk5LCIyIjp0cnVlfSx7IjEiOjUxNiwiMyI6MC4xLCI0IjoxMTgzOTUzMzUsIjUiOjExODM5NTMzMywiNiI6MTE4Mzk1MzM0LCI3IjoxfSx7IjEiOjUyNCwiMiI6dHJ1ZX1dLCI1OSI6WyJHLTVSRlhYTEg4RDEiXSwiNiI6IjIzMTcyNDkwMSIsIjYyIjp0cnVlLCI2MyI6MC4wMDV9CiwicGVybWlzc2lvbnMiOnsKIl9fYyI6e30KLAoiX19jY2RfYXV0b19yZWRhY3QiOnt9CiwKIl9fY2NkX2NvbnZlcnNpb25fbWFya2luZyI6e30KLAoiX19jY2RfZW1fZG93bmxvYWQiOnsibGlzdGVuX2RhdGFfbGF5ZXIiOnsiYWNjZXNzVHlwZSI6InNwZWNpZmljIiwiYWxsb3dlZEV2ZW50cyI6WyJndG0ubGlua0NsaWNrIl19LCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e30sImRldGVjdF9saW5rX2NsaWNrX2V2ZW50cyI6eyJhbGxvd1dhaXRGb3JUYWdzIjoiIn19CiwKIl9fY2NkX2VtX2Zvcm0iOnsiYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UiOnt9LCJsaXN0ZW5fZGF0YV9sYXllciI6eyJhY2Nlc3NUeXBlIjoic3BlY2lmaWMiLCJhbGxvd2VkRXZlbnRzIjpbImd0bS5mb3JtSW50ZXJhY3QiLCJndG0uZm9ybVN1Ym1pdCIsImd0bS5jbGljay12MiJdfSwiZGV0ZWN0X2Zvcm1fc3VibWl0X2V2ZW50cyI6eyJhbGxvd1dhaXRGb3JUYWdzIjoiIn0sImRldGVjdF9jbGlja19ldmVudHMiOnt9LCJkZXRlY3RfZm9ybV9pbnRlcmFjdGlvbl9ldmVudHMiOnt9fQosCiJfX2NjZF9lbV9vdXRib3VuZF9jbGljayI6eyJnZXRfdXJsIjp7InVybFBhcnRzIjoiYW55IiwicXVlcmllc0FsbG93ZWQiOiJhbnkifSwibGlzdGVuX2RhdGFfbGF5ZXIiOnsiYWNjZXNzVHlwZSI6InNwZWNpZmljIiwiYWxsb3dlZEV2ZW50cyI6WyJndG0ubGlua0NsaWNrIl19LCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e30sImRldGVjdF9saW5rX2NsaWNrX2V2ZW50cyI6eyJhbGxvd1dhaXRGb3JUYWdzIjoiIn19CiwKIl9fY2NkX2VtX3BhZ2VfdmlldyI6eyJsaXN0ZW5fZGF0YV9sYXllciI6eyJhY2Nlc3NUeXBlIjoic3BlY2lmaWMiLCJhbGxvd2VkRXZlbnRzIjpbImd0bS5oaXN0b3J5Q2hhbmdlLXYyIl19LCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e30sImRldGVjdF9oaXN0b3J5X2NoYW5nZV9ldmVudHMiOnt9fQosCiJfX2NjZF9lbV9zY3JvbGwiOnsibGlzdGVuX2RhdGFfbGF5ZXIiOnsiYWNjZXNzVHlwZSI6InNwZWNpZmljIiwiYWxsb3dlZEV2ZW50cyI6WyJndG0uc2Nyb2xsRGVwdGgiXX0sImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIjp7fSwiZGV0ZWN0X3Njcm9sbF9ldmVudHMiOnt9fQosCiJfX2NjZF9lbV9zaXRlX3NlYXJjaCI6eyJnZXRfdXJsIjp7InVybFBhcnRzIjoiYW55IiwicXVlcmllc0FsbG93ZWQiOiJhbnkifSwicmVhZF9jb250YWluZXJfZGF0YSI6e319CiwKIl9fY2NkX2VtX3ZpZGVvIjp7Imxpc3Rlbl9kYXRhX2xheWVyIjp7ImFjY2Vzc1R5cGUiOiJzcGVjaWZpYyIsImFsbG93ZWRFdmVudHMiOlsiZ3RtLnZpZGVvIl19LCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e30sImRldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cyI6eyJhbGxvd0ZpeE1pc3NpbmdKYXZhU2NyaXB0QXBpIjpmYWxzZX19CiwKIl9fY2NkX2dhX2ZpcnN0Ijp7InJlYWRfZG9tX2VsZW1lbnRzIjp7ImFsbG93ZWRDc3NTZWxlY3RvcnMiOiJhbnkifSwiZ2V0X3VybCI6eyJ1cmxQYXJ0cyI6InNwZWNpZmljIiwicHJvdG9jb2wiOnRydWUsImhvc3QiOnRydWV9fQosCiJfX2NjZF9nYV9sYXN0Ijp7fQosCiJfX2NjZF9nYV9yZWdzY29wZSI6eyJyZWFkX2NvbnRhaW5lcl9kYXRhIjp7fX0KLAoiX19lIjp7InJlYWRfZXZlbnRfZGF0YSI6eyJldmVudERhdGFBY2Nlc3MiOiJzcGVjaWZpYyIsImtleVBhdHRlcm5zIjpbImV2ZW50Il19fQosCiJfX2djdCI6eyJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSI6e319CiwKIl9fb2d0XzFwX2RhdGFfdjIiOnsiZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YSI6eyJsaW1pdERhdGFTb3VyY2VzIjp0cnVlLCJhbGxvd0F1dG9EYXRhU291cmNlcyI6dHJ1ZSwiYWxsb3dNYW51YWxEYXRhU291cmNlcyI6ZmFsc2UsImFsbG93Q29kZURhdGFTb3VyY2VzIjpmYWxzZX19CiwKIl9fc2V0X3Byb2R1Y3Rfc2V0dGluZ3MiOnt9CgoKfQoKCgosInNlY3VyaXR5X2dyb3VwcyI6ewoiZ29vZ2xlIjpbCiJfX2MiCiwKIl9fY2NkX2F1dG9fcmVkYWN0IgosCiJfX2NjZF9jb252ZXJzaW9uX21hcmtpbmciCiwKIl9fY2NkX2VtX2Rvd25sb2FkIgosCiJfX2NjZF9lbV9mb3JtIgosCiJfX2NjZF9lbV9vdXRib3VuZF9jbGljayIKLAoiX19jY2RfZW1fcGFnZV92aWV3IgosCiJfX2NjZF9lbV9zY3JvbGwiCiwKIl9fY2NkX2VtX3NpdGVfc2VhcmNoIgosCiJfX2NjZF9lbV92aWRlbyIKLAoiX19jY2RfZ2FfZmlyc3QiCiwKIl9fY2NkX2dhX2xhc3QiCiwKIl9fY2NkX2dhX3JlZ3Njb3BlIgosCiJfX2UiCiwKIl9fZ2N0IgosCiJfX29ndF8xcF9kYXRhX3YyIgosCiJfX3NldF9wcm9kdWN0X3NldHRpbmdzIgoKXQoKCn0KCgoKCgp9OwoKCgoKdmFyIGssYWE9dHlwZW9mIE9iamVjdC5jcmVhdGU9PSJmdW5jdGlvbiI/T2JqZWN0LmNyZWF0ZTpmdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbigpe307Yi5wcm90b3R5cGU9YTtyZXR1cm4gbmV3IGJ9LGJhPXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz09ImZ1bmN0aW9uIj9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PUFycmF5LnByb3RvdHlwZXx8YT09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYTthW2JdPWMudmFsdWU7cmV0dXJuIGF9LGNhPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF0sYz0wO2M8Yi5sZW5ndGg7KytjKXt2YXIgZD1iW2NdO2lmKGQmJmQuTWF0aD09TWF0aClyZXR1cm4gZH10aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpOwp9LGhhPWNhKHRoaXMpLGlhPXR5cGVvZiBTeW1ib2w9PT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sKCJ4Iik9PT0ic3ltYm9sIixrYT17fSxsYT17fSxuYT1mdW5jdGlvbihhLGIsYyl7aWYoIWN8fGEhPW51bGwpe3ZhciBkPWxhW2JdO2lmKGQ9PW51bGwpcmV0dXJuIGFbYl07dmFyIGU9YVtkXTtyZXR1cm4gZSE9PXZvaWQgMD9lOmFbYl19fSxvYT1mdW5jdGlvbihhLGIsYyl7aWYoYilhOnt2YXIgZD1hLnNwbGl0KCIuIiksZT1kLmxlbmd0aD09PTEsZj1kWzBdLGc7IWUmJmYgaW4ga2E/Zz1rYTpnPWhhO2Zvcih2YXIgaD0wO2g8ZC5sZW5ndGgtMTtoKyspe3ZhciBsPWRbaF07aWYoIShsIGluIGcpKWJyZWFrIGE7Zz1nW2xdfXZhciBuPWRbZC5sZW5ndGgtMV0scD1pYSYmYz09PSJlczYiP2dbbl06bnVsbCxxPWIocCk7aWYocSE9bnVsbClpZihlKWJhKGthLG4se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpxfSk7ZWxzZSBpZihxIT09cCl7aWYobGFbbl09PT12b2lkIDApe3ZhciByPQpNYXRoLnJhbmRvbSgpKjFFOT4+PjA7bGFbbl09aWE/aGEuU3ltYm9sKG4pOiIkanNjcCQiK3IrIiQiK259YmEoZyxsYVtuXSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnF9KX19fSxwYTtpZihpYSYmdHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZj09ImZ1bmN0aW9uIilwYT1PYmplY3Quc2V0UHJvdG90eXBlT2Y7ZWxzZXt2YXIgcmE7YTp7dmFyIHRhPXthOiEwfSx1YT17fTt0cnl7dWEuX19wcm90b19fPXRhO3JhPXVhLmE7YnJlYWsgYX1jYXRjaChhKXt9cmE9ITF9cGE9cmE/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBhfTpudWxsfQp2YXIgdmE9cGEsd2E9ZnVuY3Rpb24oYSxiKXthLnByb3RvdHlwZT1hYShiLnByb3RvdHlwZSk7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9YTtpZih2YSl2YShhLGIpO2Vsc2UgZm9yKHZhciBjIGluIGIpaWYoYyE9InByb3RvdHlwZSIpaWYoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMpe3ZhciBkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYixjKTtkJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxjLGQpfWVsc2UgYVtjXT1iW2NdO2EuRnQ9Yi5wcm90b3R5cGV9LHhhPWZ1bmN0aW9uKGEpe3ZhciBiPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19fSxtPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBTeW1ib2whPSJ1bmRlZmluZWQiJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtpZihiKXJldHVybiBiLmNhbGwoYSk7aWYodHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIilyZXR1cm57bmV4dDp4YShhKX07CnRocm93IEVycm9yKFN0cmluZyhhKSsiIGlzIG5vdCBhbiBpdGVyYWJsZSBvciBBcnJheUxpa2UiKTt9LHlhPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjPVtdOyEoYj1hLm5leHQoKSkuZG9uZTspYy5wdXNoKGIudmFsdWUpO3JldHVybiBjfSx3PWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgQXJyYXk/YTp5YShtKGEpKX0sQWE9ZnVuY3Rpb24oYSl7cmV0dXJuIHphKGEsYSl9LHphPWZ1bmN0aW9uKGEsYil7YS5yYXc9YjtPYmplY3QuZnJlZXplJiYoT2JqZWN0LmZyZWV6ZShhKSxPYmplY3QuZnJlZXplKGIpKTtyZXR1cm4gYX0sQmE9aWEmJnR5cGVvZiBuYShPYmplY3QsImFzc2lnbiIpPT0iZnVuY3Rpb24iP25hKE9iamVjdCwiYXNzaWduIik6ZnVuY3Rpb24oYSxiKXtpZihhPT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIk5vIG51bGxpc2ggYXJnIik7YT1PYmplY3QoYSk7Zm9yKHZhciBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7dmFyIGQ9YXJndW1lbnRzW2NdOwppZihkKWZvcih2YXIgZSBpbiBkKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGUpJiYoYVtlXT1kW2VdKX1yZXR1cm4gYX07b2EoIk9iamVjdC5hc3NpZ24iLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxCYX0sImVzNiIpO3ZhciBDYT1mdW5jdGlvbihhKXtpZighKGEgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2ErIiBpcyBub3QgYW4gb2JqZWN0Iik7fSxEYT1mdW5jdGlvbigpe3RoaXMuZmE9ITE7dGhpcy5SPW51bGw7dGhpcy5qYT12b2lkIDA7dGhpcy5IPTE7dGhpcy5OPXRoaXMuWj0wO3RoaXMuTGE9dGhpcy5LPW51bGx9LEVhPWZ1bmN0aW9uKGEpe2lmKGEuZmEpdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO2EuZmE9ITB9O0RhLnByb3RvdHlwZS55YT1mdW5jdGlvbihhKXt0aGlzLmphPWF9Owp2YXIgR2E9ZnVuY3Rpb24oYSxiKXthLks9e2FvOmIsaXNFeGNlcHRpb246ITB9O2EuSD1hLlp8fGEuTn07RGEucHJvdG90eXBlLmdldE5leHRBZGRyZXNzSnNjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSH07RGEucHJvdG90eXBlLmdldFlpZWxkUmVzdWx0SnNjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuamF9O0RhLnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYSl7dGhpcy5LPXtyZXR1cm46YX07dGhpcy5IPXRoaXMuTn07RGEucHJvdG90eXBlWyJyZXR1cm4iXT1EYS5wcm90b3R5cGUucmV0dXJuO0RhLnByb3RvdHlwZS5Baj1mdW5jdGlvbihhKXt0aGlzLks9e25kOmF9O3RoaXMuSD10aGlzLk59O0RhLnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9RGEucHJvdG90eXBlLkFqO0RhLnByb3RvdHlwZS5hYz1mdW5jdGlvbihhLGIpe3RoaXMuSD1iO3JldHVybnt2YWx1ZTphfX07RGEucHJvdG90eXBlLnlpZWxkPURhLnByb3RvdHlwZS5hYzsKRGEucHJvdG90eXBlLnhzPWZ1bmN0aW9uKGEsYil7dmFyIGM9bShhKSxkPWMubmV4dCgpO0NhKGQpO2lmKGQuZG9uZSl0aGlzLmphPWQudmFsdWUsdGhpcy5IPWI7ZWxzZSByZXR1cm4gdGhpcy5SPWMsdGhpcy5hYyhkLnZhbHVlLGIpfTtEYS5wcm90b3R5cGUueWllbGRBbGw9RGEucHJvdG90eXBlLnhzO0RhLnByb3RvdHlwZS5uZD1mdW5jdGlvbihhKXt0aGlzLkg9YX07RGEucHJvdG90eXBlLmp1bXBUbz1EYS5wcm90b3R5cGUubmQ7RGEucHJvdG90eXBlLkRqPWZ1bmN0aW9uKCl7dGhpcy5IPTB9O0RhLnByb3RvdHlwZS5qdW1wVG9FbmQ9RGEucHJvdG90eXBlLkRqO0RhLnByb3RvdHlwZS5Oaj1mdW5jdGlvbihhLGIpe3RoaXMuWj1hO2IhPXZvaWQgMCYmKHRoaXMuTj1iKX07RGEucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1EYS5wcm90b3R5cGUuTmo7RGEucHJvdG90eXBlLnZnPWZ1bmN0aW9uKGEpe3RoaXMuWj0wO3RoaXMuTj1hfHwwfTsKRGEucHJvdG90eXBlLnNldEZpbmFsbHlCbG9jaz1EYS5wcm90b3R5cGUudmc7RGEucHJvdG90eXBlLklqPWZ1bmN0aW9uKGEsYil7dGhpcy5IPWE7dGhpcy5aPWJ8fDB9O0RhLnByb3RvdHlwZS5sZWF2ZVRyeUJsb2NrPURhLnByb3RvdHlwZS5JajtEYS5wcm90b3R5cGUuUGg9ZnVuY3Rpb24oYSl7dGhpcy5aPWF8fDA7dmFyIGI9dGhpcy5LLmFvO3RoaXMuSz1udWxsO3JldHVybiBifTtEYS5wcm90b3R5cGUuZW50ZXJDYXRjaEJsb2NrPURhLnByb3RvdHlwZS5QaDtEYS5wcm90b3R5cGUua2Q9ZnVuY3Rpb24oYSxiLGMpe2M/dGhpcy5MYVtjXT10aGlzLks6dGhpcy5MYT1bdGhpcy5LXTt0aGlzLlo9YXx8MDt0aGlzLk49Ynx8MH07RGEucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPURhLnByb3RvdHlwZS5rZDsKRGEucHJvdG90eXBlLmhlPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5MYS5zcGxpY2UoYnx8MClbMF0sZD10aGlzLks9dGhpcy5LfHxjO2Q/ZC5pc0V4Y2VwdGlvbj90aGlzLkg9dGhpcy5afHx0aGlzLk46ZC5uZCE9dm9pZCAwJiZ0aGlzLk48ZC5uZD8odGhpcy5IPWQubmQsdGhpcy5LPW51bGwpOnRoaXMuSD10aGlzLk46dGhpcy5IPWF9O0RhLnByb3RvdHlwZS5sZWF2ZUZpbmFsbHlCbG9jaz1EYS5wcm90b3R5cGUuaGU7RGEucHJvdG90eXBlLmZlPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgSGEoYSl9O0RhLnByb3RvdHlwZS5mb3JJbj1EYS5wcm90b3R5cGUuZmU7dmFyIEhhPWZ1bmN0aW9uKGEpe3RoaXMuSz1hO3RoaXMuSD1bXTtmb3IodmFyIGIgaW4gYSl0aGlzLkgucHVzaChiKTt0aGlzLkgucmV2ZXJzZSgpfTtIYS5wcm90b3R5cGUuaG89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuSC5sZW5ndGg+MDspe3ZhciBhPXRoaXMuSC5wb3AoKTtpZihhIGluIHRoaXMuSylyZXR1cm4gYX1yZXR1cm4gbnVsbH07CkhhLnByb3RvdHlwZS5nZXROZXh0PUhhLnByb3RvdHlwZS5obzsKdmFyIElhPWZ1bmN0aW9uKGEpe3RoaXMuSD1uZXcgRGE7dGhpcy5LPWF9LExhPWZ1bmN0aW9uKGEsYil7RWEoYS5IKTt2YXIgYz1hLkguUjtpZihjKXJldHVybiBKYShhLCJyZXR1cm4iaW4gYz9jWyJyZXR1cm4iXTpmdW5jdGlvbihkKXtyZXR1cm57dmFsdWU6ZCxkb25lOiEwfX0sYixhLkgucmV0dXJuKTthLkgucmV0dXJuKGIpO3JldHVybiBLYShhKX0sSmE9ZnVuY3Rpb24oYSxiLGMsZCl7dHJ5e3ZhciBlPWIuY2FsbChhLkguUixjKTtDYShlKTtpZighZS5kb25lKXJldHVybiBhLkguZmE9ITEsZTt2YXIgZj1lLnZhbHVlfWNhdGNoKGcpe3JldHVybiBhLkguUj1udWxsLEdhKGEuSCxnKSxLYShhKX1hLkguUj1udWxsO2QuY2FsbChhLkgsZik7cmV0dXJuIEthKGEpfSxLYT1mdW5jdGlvbihhKXtmb3IoO2EuSC5IOyl0cnl7dmFyIGI9YS5LKGEuSCk7aWYoYilyZXR1cm4gYS5ILmZhPSExLHt2YWx1ZTpiLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGQpe2EuSC5qYT12b2lkIDAsR2EoYS5ILApkKX1hLkguZmE9ITE7aWYoYS5ILkspe3ZhciBjPWEuSC5LO2EuSC5LPW51bGw7aWYoYy5pc0V4Y2VwdGlvbil0aHJvdyBjLmFvO3JldHVybnt2YWx1ZTpjLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fSxNYT1mdW5jdGlvbihhKXt0aGlzLm5leHQ9ZnVuY3Rpb24oYil7dmFyIGM7RWEoYS5IKTthLkguUj9jPUphKGEsYS5ILlIubmV4dCxiLGEuSC55YSk6KGEuSC55YShiKSxjPUthKGEpKTtyZXR1cm4gY307dGhpcy50aHJvdz1mdW5jdGlvbihiKXt2YXIgYztFYShhLkgpO2EuSC5SP2M9SmEoYSxhLkguUlsidGhyb3ciXSxiLGEuSC55YSk6KEdhKGEuSCxiKSxjPUthKGEpKTtyZXR1cm4gY307dGhpcy5yZXR1cm49ZnVuY3Rpb24oYil7cmV0dXJuIExhKGEsYil9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX0sTmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgTWEobmV3IElhKGIpKTt2YSYmYS5wcm90b3R5cGUmJnZhKGMsCmEucHJvdG90eXBlKTtyZXR1cm4gY30sT2E9ZnVuY3Rpb24oKXtmb3IodmFyIGE9TnVtYmVyKHRoaXMpLGI9W10sYz1hO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYltjLWFdPWFyZ3VtZW50c1tjXTtyZXR1cm4gYn0sUWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9Oy8qCgogQ29weXJpZ2h0IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9ycy4KIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiovCnZhciBSYT10aGlzfHxzZWxmLFNhPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYygpe31jLnByb3RvdHlwZT1iLnByb3RvdHlwZTthLkZ0PWIucHJvdG90eXBlO2EucHJvdG90eXBlPW5ldyBjO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7YS5udj1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMiksaD0yO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZ1toLTJdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi5wcm90b3R5cGVbZV0uYXBwbHkoZCxnKX19O3ZhciBUYT1mdW5jdGlvbihhLGIpe3RoaXMudHlwZT1hO3RoaXMuZGF0YT1ifTt2YXIgVWE9ZnVuY3Rpb24oKXt0aGlzLm1hcD17fTt0aGlzLkg9e319O1VhLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubWFwWyJkdXN0LiIrYV19O1VhLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz0iZHVzdC4iK2E7dGhpcy5ILmhhc093blByb3BlcnR5KGMpfHwodGhpcy5tYXBbY109Yil9O1VhLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KCJkdXN0LiIrYSl9O1VhLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oYSl7dmFyIGI9ImR1c3QuIithO3RoaXMuSC5oYXNPd25Qcm9wZXJ0eShiKXx8ZGVsZXRlIHRoaXMubWFwW2JdfTsKdmFyIFZhPWZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZDtmb3IoZCBpbiBhLm1hcClpZihhLm1hcC5oYXNPd25Qcm9wZXJ0eShkKSl7dmFyIGU9ZC5zdWJzdHJpbmcoNSk7c3dpdGNoKGIpe2Nhc2UgMTpjLnB1c2goZSk7YnJlYWs7Y2FzZSAyOmMucHVzaChhLm1hcFtkXSk7YnJlYWs7Y2FzZSAzOmMucHVzaChbZSxhLm1hcFtkXV0pfX1yZXR1cm4gY307VWEucHJvdG90eXBlLkZhPWZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMsMSl9O1VhLnByb3RvdHlwZS5oYz1mdW5jdGlvbigpe3JldHVybiBWYSh0aGlzLDIpfTtVYS5wcm90b3R5cGUuZmM9ZnVuY3Rpb24oKXtyZXR1cm4gVmEodGhpcywzKX07dmFyIFdhPWZ1bmN0aW9uKCl7fTtXYS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt9O3ZhciBYYT1mdW5jdGlvbigpe3RoaXMudmFsdWU9e307dGhpcy5wcmVmaXg9Imd0bS4ifTtrPVhhLnByb3RvdHlwZTtrLnNldD1mdW5jdGlvbihhLGIpe3RoaXMudmFsdWVbdGhpcy5wcmVmaXgrU3RyaW5nKGEpXT1ifTtrLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy52YWx1ZVt0aGlzLnByZWZpeCtTdHJpbmcoYSldfTtrLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy52YWx1ZS5oYXNPd25Qcm9wZXJ0eSh0aGlzLnByZWZpeCtTdHJpbmcoYSkpfTtrLmRlbGV0ZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLnByZWZpeCtTdHJpbmcoYSk7cmV0dXJuIHRoaXMudmFsdWUuaGFzT3duUHJvcGVydHkoYik/KGRlbGV0ZSB0aGlzLnZhbHVlW2JdLCEwKTohMX07ay5jbGVhcj1mdW5jdGlvbigpe3RoaXMudmFsdWU9e319OwprLnZhbHVlcz1mdW5jdGlvbigpe3ZhciBhPXRoaXM7cmV0dXJuIGZ1bmN0aW9uIGMoKXt2YXIgZCxlLGY7cmV0dXJuIE5hKGMsZnVuY3Rpb24oZyl7c3dpdGNoKGcuSCl7Y2FzZSAxOmcudmcoMiksZT1nLmZlKGEudmFsdWUpO2Nhc2UgNDppZigoZD1lLmhvKCkpPT1udWxsKXtnLm5kKDIpO2JyZWFrfWlmKCFhLnZhbHVlLmhhc093blByb3BlcnR5KGQpKXtnLm5kKDQpO2JyZWFrfWY9UWE7cmV0dXJuIGcuYWMoYS52YWx1ZVtkXSw4KTtjYXNlIDg6ZihnLmphKTtnLm5kKDQpO2JyZWFrO2Nhc2UgMjpnLmtkKCksZy5oZSgwKX19KX0oKX07aGEuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWGEucHJvdG90eXBlLHtzaXplOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy52YWx1ZSkubGVuZ3RofX19KTsKZnVuY3Rpb24gWWEoKXt0cnl7aWYoTWFwKXJldHVybiBuZXcgTWFwfWNhdGNoKGEpe31yZXR1cm4gbmV3IFhhfTt2YXIgWmE9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlcz1bXX07WmEucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXt0aGlzLnZhbHVlcy5pbmRleE9mKGEpPT09LTEmJnRoaXMudmFsdWVzLnB1c2goYSl9O1phLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudmFsdWVzLmluZGV4T2YoYSk+LTF9O3ZhciAkYT1mdW5jdGlvbihhLGIpe3RoaXMuZmE9YTt0aGlzLnBhcmVudD1iO3RoaXMuUj10aGlzLks9dm9pZCAwO3RoaXMuSGI9ITE7dGhpcy5OPWZ1bmN0aW9uKGQsZSxmKXtyZXR1cm4gZC5hcHBseShlLGYpfTt0aGlzLkg9WWEoKTt2YXIgYzthOnt0cnl7aWYoU2V0KXtjPW5ldyBTZXQ7YnJlYWsgYX19Y2F0Y2goZCl7fWM9bmV3IFphfXRoaXMuWj1jfTskYS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYil7YWIodGhpcyxhLGIsITEpfTskYS5wcm90b3R5cGUuUWg9ZnVuY3Rpb24oYSxiKXthYih0aGlzLGEsYiwhMCl9O3ZhciBhYj1mdW5jdGlvbihhLGIsYyxkKXthLkhifHxhLlouaGFzKGIpfHwoZCYmYS5aLmFkZChiKSxhLkguc2V0KGIsYykpfTtrPSRhLnByb3RvdHlwZTsKay5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLkhifHwoIXRoaXMuSC5oYXMoYSkmJnRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5oYXMoYSk/dGhpcy5wYXJlbnQuc2V0KGEsYik6dGhpcy5aLmhhcyhhKXx8dGhpcy5ILnNldChhLGIpKX07ay5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuSC5oYXMoYSk/dGhpcy5ILmdldChhKTp0aGlzLnBhcmVudD90aGlzLnBhcmVudC5nZXQoYSk6dm9pZCAwfTtrLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4hIXRoaXMuSC5oYXMoYSl8fCEoIXRoaXMucGFyZW50fHwhdGhpcy5wYXJlbnQuaGFzKGEpKX07ay53Yj1mdW5jdGlvbigpe3ZhciBhPW5ldyAkYSh0aGlzLmZhLHRoaXMpO3RoaXMuSyYmYS5RYih0aGlzLkspO2Euc2QodGhpcy5OKTthLnVlKHRoaXMuUik7cmV0dXJuIGF9O2suamU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mYX07ay5RYj1mdW5jdGlvbihhKXt0aGlzLks9YX07ay5mbz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkt9OwprLnNkPWZ1bmN0aW9uKGEpe3RoaXMuTj1hfTtrLlBqPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTn07ay5aYT1mdW5jdGlvbigpe3RoaXMuSGI9ITB9O2sudWU9ZnVuY3Rpb24oYSl7dGhpcy5SPWF9O2sueGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SfTt2YXIgYmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2Q9RXJyb3IuY2FsbCh0aGlzLGEubWVzc2FnZSk7dGhpcy5tZXNzYWdlPWQubWVzc2FnZTsic3RhY2siaW4gZCYmKHRoaXMuc3RhY2s9ZC5zdGFjayk7dGhpcy52bz1hO3RoaXMuU249Yz09PXZvaWQgMD8hMTpjO3RoaXMuSz1bXTt0aGlzLkg9Yn07d2EoYmIsRXJyb3IpO3ZhciBjYj1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIGJiP2E6bmV3IGJiKGEsdm9pZCAwLCEwKX07dmFyIGRiPVlhKCk7ZnVuY3Rpb24gZWIoYSxiKXtmb3IodmFyIGMsZD1tKGIpLGU9ZC5uZXh0KCk7IWUuZG9uZSYmIShjPWZiKGEsZS52YWx1ZSksYyBpbnN0YW5jZW9mIFRhKTtlPWQubmV4dCgpKTtyZXR1cm4gY31mdW5jdGlvbiBmYihhLGIpe3RyeXt2YXIgYz1iWzBdLGQ9Yi5zbGljZSgxKSxlPVN0cmluZyhjKSxmPWRiLmhhcyhlKT9kYi5nZXQoZSk6YS5nZXQoZSk7aWYoIWZ8fHR5cGVvZiBmLmludm9rZSE9PSJmdW5jdGlvbiIpdGhyb3cgY2IoRXJyb3IoIkF0dGVtcHRpbmcgdG8gZXhlY3V0ZSBub24tZnVuY3Rpb24gIitiWzBdKyIuIikpO3JldHVybiBmLmFwcGx5KGEsZCl9Y2F0Y2goaCl7dmFyIGc9YS5mbygpO2cmJmcoaCxiLmNvbnRleHQ/e2lkOmJbMF0sbGluZTpiLmNvbnRleHQubGluZX06bnVsbCk7dGhyb3cgaDt9fTt2YXIgZ2I9ZnVuY3Rpb24oKXt0aGlzLks9bmV3IFdhO3RoaXMuSD1uZXcgJGEodGhpcy5LKX07az1nYi5wcm90b3R5cGU7ay5qZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkt9O2suUWI9ZnVuY3Rpb24oYSl7dGhpcy5ILlFiKGEpfTtrLnNkPWZ1bmN0aW9uKGEpe3RoaXMuSC5zZChhKX07ay5leGVjdXRlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJrKFthXS5jb25jYXQodyhPYS5hcHBseSgxLGFyZ3VtZW50cykpKSl9O2sucms9ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj1tKE9hLmFwcGx5KDAsYXJndW1lbnRzKSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpYT1mYih0aGlzLkgsYy52YWx1ZSk7cmV0dXJuIGF9O2suSnE9ZnVuY3Rpb24oYSl7dmFyIGI9T2EuYXBwbHkoMSxhcmd1bWVudHMpLGM9dGhpcy5ILndiKCk7Yy51ZShhKTtmb3IodmFyIGQsZT1tKGIpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKWQ9ZmIoYyxmLnZhbHVlKTtyZXR1cm4gZH07ay5aYT1mdW5jdGlvbigpe3RoaXMuSC5aYSgpfTt2YXIgaGI9ZnVuY3Rpb24oYSxiKXt0aGlzLlI9YTt0aGlzLnBhcmVudD1iO3RoaXMuTj10aGlzLkg9dm9pZCAwO3RoaXMuSGI9ITE7dGhpcy5LPWZ1bmN0aW9uKGMsZCxlKXtyZXR1cm4gYy5hcHBseShkLGUpfTt0aGlzLnZhbHVlcz1uZXcgVWF9O2hiLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSxiKXtqYih0aGlzLGEsYiwhMSl9O2hiLnByb3RvdHlwZS5RaD1mdW5jdGlvbihhLGIpe2piKHRoaXMsYSxiLCEwKX07dmFyIGpiPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFhLkhiKWlmKGQpe3ZhciBlPWEudmFsdWVzO2Uuc2V0KGIsYyk7ZS5IWyJkdXN0LiIrYl09ITB9ZWxzZSBhLnZhbHVlcy5zZXQoYixjKX07az1oYi5wcm90b3R5cGU7ay5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLkhifHwoIXRoaXMudmFsdWVzLmhhcyhhKSYmdGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LmhhcyhhKT90aGlzLnBhcmVudC5zZXQoYSxiKTp0aGlzLnZhbHVlcy5zZXQoYSxiKSl9OwprLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy52YWx1ZXMuaGFzKGEpP3RoaXMudmFsdWVzLmdldChhKTp0aGlzLnBhcmVudD90aGlzLnBhcmVudC5nZXQoYSk6dm9pZCAwfTtrLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4hIXRoaXMudmFsdWVzLmhhcyhhKXx8ISghdGhpcy5wYXJlbnR8fCF0aGlzLnBhcmVudC5oYXMoYSkpfTtrLndiPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IGhiKHRoaXMuUix0aGlzKTt0aGlzLkgmJmEuUWIodGhpcy5IKTthLnNkKHRoaXMuSyk7YS51ZSh0aGlzLk4pO3JldHVybiBhfTtrLmplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUn07ay5RYj1mdW5jdGlvbihhKXt0aGlzLkg9YX07ay5mbz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkh9O2suc2Q9ZnVuY3Rpb24oYSl7dGhpcy5LPWF9O2suUGo9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LfTtrLlphPWZ1bmN0aW9uKCl7dGhpcy5IYj0hMH07ay51ZT1mdW5jdGlvbihhKXt0aGlzLk49YX07ay54Yj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk59O3ZhciBrYj1mdW5jdGlvbigpe3RoaXMuTmE9ITE7dGhpcy5sYT1uZXcgVWF9O2s9a2IucHJvdG90eXBlO2suZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhLmdldChhKX07ay5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLk5hfHx0aGlzLmxhLnNldChhLGIpfTtrLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sYS5oYXMoYSl9O2sucmVtb3ZlPWZ1bmN0aW9uKGEpe3RoaXMuTmF8fHRoaXMubGEucmVtb3ZlKGEpfTtrLkZhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuRmEoKX07ay5oYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLmhjKCl9O2suZmM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5mYygpfTtrLlphPWZ1bmN0aW9uKCl7dGhpcy5OYT0hMH07ay5IYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk5hfTtmdW5jdGlvbiBsYigpe2Zvcih2YXIgYT1tYixiPXt9LGM9MDtjPGEubGVuZ3RoOysrYyliW2FbY11dPWM7cmV0dXJuIGJ9ZnVuY3Rpb24gbmIoKXt2YXIgYT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiO2ErPWEudG9Mb3dlckNhc2UoKSsiMDEyMzQ1Njc4OS1fIjtyZXR1cm4gYSsiLiJ9dmFyIG1iLG9iO2Z1bmN0aW9uIHBiKGEpe21iPW1ifHxuYigpO29iPW9ifHxsYigpO2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKz0zKXt2YXIgZD1jKzE8YS5sZW5ndGgsZT1jKzI8YS5sZW5ndGgsZj1hLmNoYXJDb2RlQXQoYyksZz1kP2EuY2hhckNvZGVBdChjKzEpOjAsaD1lP2EuY2hhckNvZGVBdChjKzIpOjAsbD1mPj4yLG49KGYmMyk8PDR8Zz4+NCxwPShnJjE1KTw8MnxoPj42LHE9aCY2MztlfHwocT02NCxkfHwocD02NCkpO2IucHVzaChtYltsXSxtYltuXSxtYltwXSxtYltxXSl9cmV0dXJuIGIuam9pbigiIil9CmZ1bmN0aW9uIHFiKGEpe2Z1bmN0aW9uIGIobCl7Zm9yKDtkPGEubGVuZ3RoOyl7dmFyIG49YS5jaGFyQXQoZCsrKSxwPW9iW25dO2lmKHAhPW51bGwpcmV0dXJuIHA7aWYoIS9eW1xzXHhhMF0qJC8udGVzdChuKSl0aHJvdyBFcnJvcigiVW5rbm93biBiYXNlNjQgZW5jb2RpbmcgYXQgY2hhcjogIituKTt9cmV0dXJuIGx9bWI9bWJ8fG5iKCk7b2I9b2J8fGxiKCk7Zm9yKHZhciBjPSIiLGQ9MDs7KXt2YXIgZT1iKC0xKSxmPWIoMCksZz1iKDY0KSxoPWIoNjQpO2lmKGg9PT02NCYmZT09PS0xKXJldHVybiBjO2MrPVN0cmluZy5mcm9tQ2hhckNvZGUoZTw8MnxmPj40KTtnIT09NjQmJihjKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGY8PDQmMjQwfGc+PjIpLGghPT02NCYmKGMrPVN0cmluZy5mcm9tQ2hhckNvZGUoZzw8NiYxOTJ8aCkpKX19O3ZhciByYj17fTtmdW5jdGlvbiBzYihhLGIpe3ZhciBjPXJiW2FdO2N8fChjPXJiW2FdPVtdKTtjW2JdPSEwfWZ1bmN0aW9uIHRiKCl7ZGVsZXRlIHJiLkdBNF9FVkVOVH1mdW5jdGlvbiB1Yigpe3ZhciBhPXZiLkguc2xpY2UoKTtyYi5HVEFHX0VWRU5UX0ZFQVRVUkVfQ0hBTk5FTD1hfWZ1bmN0aW9uIHdiKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD0wO2Q8YS5sZW5ndGg7ZCsrKWQlOD09PTAmJmQ+MCYmKGIucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKSxjPTApLGFbZF0mJihjfD0xPDxkJTgpO2M+MCYmYi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO3JldHVybiBwYihiLmpvaW4oIiIpKS5yZXBsYWNlKC9cLiskLywiIil9O2Z1bmN0aW9uIHhiKCl7fWZ1bmN0aW9uIHliKGEpe3JldHVybiB0eXBlb2YgYT09PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gemIoYSl7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyJ9ZnVuY3Rpb24gQWIoYSl7cmV0dXJuIHR5cGVvZiBhPT09Im51bWJlciImJiFpc05hTihhKX1mdW5jdGlvbiBCYihhKXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hOlthXX1mdW5jdGlvbiBDYihhLGIpe2lmKGEmJkFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaWYoYVtjXSYmYihhW2NdKSlyZXR1cm4gYVtjXX1mdW5jdGlvbiBEYihhLGIpe2lmKCFBYihhKXx8IUFiKGIpfHxhPmIpYT0wLGI9MjE0NzQ4MzY0NztyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihiLWErMSkrYSl9CmZ1bmN0aW9uIEViKGEsYil7Zm9yKHZhciBjPW5ldyBGYixkPTA7ZDxhLmxlbmd0aDtkKyspYy5zZXQoYVtkXSwhMCk7Zm9yKHZhciBlPTA7ZTxiLmxlbmd0aDtlKyspaWYoYy5nZXQoYltlXSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gR2IoYSxiKXtmb3IodmFyIGMgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxjKSYmYihjLGFbY10pfWZ1bmN0aW9uIEhiKGEpe3JldHVybiEhYSYmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKT09PSJbb2JqZWN0IEFyZ3VtZW50c10ifHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSwiY2FsbGVlIikpfWZ1bmN0aW9uIEliKGEpe3JldHVybiBNYXRoLnJvdW5kKE51bWJlcihhKSl8fDB9ZnVuY3Rpb24gSmIoYSl7cmV0dXJuImZhbHNlIj09PVN0cmluZyhhKS50b0xvd2VyQ2FzZSgpPyExOiEhYX0KZnVuY3Rpb24gS2IoYSl7dmFyIGI9W107aWYoQXJyYXkuaXNBcnJheShhKSlmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyliLnB1c2goU3RyaW5nKGFbY10pKTtyZXR1cm4gYn1mdW5jdGlvbiBMYihhKXtyZXR1cm4gYT9hLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKToiIn1mdW5jdGlvbiBNYigpe3JldHVybiBuZXcgRGF0ZShEYXRlLm5vdygpKX1mdW5jdGlvbiBOYigpe3JldHVybiBNYigpLmdldFRpbWUoKX12YXIgRmI9ZnVuY3Rpb24oKXt0aGlzLnByZWZpeD0iZ3RtLiI7dGhpcy52YWx1ZXM9e319O0ZiLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLnZhbHVlc1t0aGlzLnByZWZpeCthXT1ifTtGYi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnZhbHVlc1t0aGlzLnByZWZpeCthXX07RmIucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmdldChhKSE9PXZvaWQgMH07CmZ1bmN0aW9uIE9iKGEsYixjKXtyZXR1cm4gYSYmYS5oYXNPd25Qcm9wZXJ0eShiKT9hW2JdOmN9ZnVuY3Rpb24gUGIoYSl7dmFyIGI9YTtyZXR1cm4gZnVuY3Rpb24oKXtpZihiKXt2YXIgYz1iO2I9dm9pZCAwO3RyeXtjKCl9Y2F0Y2goZCl7fX19fWZ1bmN0aW9uIFFiKGEsYil7Zm9yKHZhciBjIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShjKSYmKGFbY109YltjXSl9ZnVuY3Rpb24gUmIoYSxiKXtmb3IodmFyIGM9W10sZD0wO2Q8YS5sZW5ndGg7ZCsrKWMucHVzaChhW2RdKSxjLnB1c2guYXBwbHkoYyxiW2FbZF1dfHxbXSk7cmV0dXJuIGN9ZnVuY3Rpb24gU2IoYSxiKXtyZXR1cm4gYS5sZW5ndGg+PWIubGVuZ3RoJiZhLnN1YnN0cmluZygwLGIubGVuZ3RoKT09PWJ9ZnVuY3Rpb24gVGIoYSxiKXtyZXR1cm4gYS5sZW5ndGg+PWIubGVuZ3RoJiZhLnN1YnN0cmluZyhhLmxlbmd0aC1iLmxlbmd0aCxhLmxlbmd0aCk9PT1ifQpmdW5jdGlvbiBVYihhLGIsYyl7Yz1jfHxbXTtmb3IodmFyIGQ9YSxlPTA7ZTxiLmxlbmd0aC0xO2UrKyl7aWYoIWQuaGFzT3duUHJvcGVydHkoYltlXSkpcmV0dXJuO2Q9ZFtiW2VdXTtpZihjLmluZGV4T2YoZCk+PTApcmV0dXJufXJldHVybiBkfWZ1bmN0aW9uIFZiKGEsYil7Zm9yKHZhciBjPXt9LGQ9YyxlPWEuc3BsaXQoIi4iKSxmPTA7ZjxlLmxlbmd0aC0xO2YrKylkPWRbZVtmXV09e307ZFtlW2UubGVuZ3RoLTFdXT1iO3JldHVybiBjfXZhciBXYj0vXlx3ezEsOX0kLztmdW5jdGlvbiBZYihhLGIpe2E9YXx8e307Yj1ifHwiLCI7dmFyIGM9W107R2IoYSxmdW5jdGlvbihkLGUpe1diLnRlc3QoZCkmJmUmJmMucHVzaChkKX0pO3JldHVybiBjLmpvaW4oYil9CmZ1bmN0aW9uIFpiKGEpe2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWEuY2hhckNvZGVBdChjKTtkPDEyOD9iLnB1c2goZCk6ZDwyMDQ4P2IucHVzaCgxOTJ8ZD4+NiwxMjh8ZCY2Myk6ZDw1NTI5Nnx8ZD49NTczNDQ/Yi5wdXNoKDIyNHxkPj4xMiwxMjh8ZD4+NiY2MywxMjh8ZCY2Myk6KGQ9NjU1MzYrKChkJjEwMjMpPDwxMHxhLmNoYXJDb2RlQXQoKytjKSYxMDIzKSxiLnB1c2goMjQwfGQ+PjE4LDEyOHxkPj4xMiY2MywxMjh8ZD4+NiY2MywxMjh8ZCY2MykpfXJldHVybiBuZXcgVWludDhBcnJheShiKX1mdW5jdGlvbiAkYihhKXtpZighYSlyZXR1cm4gYTt2YXIgYj1hO3RyeXtiPWRlY29kZVVSSUNvbXBvbmVudChhKX1jYXRjaChkKXt9dmFyIGM9Yi5zcGxpdCgiLCIpO3JldHVybiBjLmxlbmd0aD09PTImJmNbMF09PT1jWzFdP2NbMF06YX0KZnVuY3Rpb24gYWMoYSxiLGMpe2Z1bmN0aW9uIGQobil7dmFyIHA9bi5zcGxpdCgiPSIpWzBdO2lmKGEuaW5kZXhPZihwKTwwKXJldHVybiBuO2lmKGMhPT12b2lkIDApcmV0dXJuIHArIj0iK2N9ZnVuY3Rpb24gZShuKXtyZXR1cm4gbi5zcGxpdCgiJiIpLm1hcChkKS5maWx0ZXIoZnVuY3Rpb24ocCl7cmV0dXJuIHAhPT12b2lkIDB9KS5qb2luKCImIil9dmFyIGY9Yi5ocmVmLnNwbGl0KC9bPyNdLylbMF0sZz1iLnNlYXJjaCxoPWIuaGFzaDtnWzBdPT09Ij8iJiYoZz1nLnN1YnN0cmluZygxKSk7aFswXT09PSIjIiYmKGg9aC5zdWJzdHJpbmcoMSkpO2c9ZShnKTtoPWUoaCk7ZyE9PSIiJiYoZz0iPyIrZyk7aCE9PSIiJiYoaD0iIyIraCk7dmFyIGw9IiIrZitnK2g7bFtsLmxlbmd0aC0xXT09PSIvIiYmKGw9bC5zdWJzdHJpbmcoMCxsLmxlbmd0aC0xKSk7cmV0dXJuIGx9CmZ1bmN0aW9uIGJjKGEpe2Zvcih2YXIgYj0wO2I8MzsrK2IpdHJ5e3ZhciBjPWRlY29kZVVSSUNvbXBvbmVudChhKS5yZXBsYWNlKC9cKy9nLCIgIik7aWYoYz09PWEpYnJlYWs7YT1jfWNhdGNoKGQpe3JldHVybiIifXJldHVybiBhfWZ1bmN0aW9uIGNjKCl7dmFyIGE9QSxiO2E6e3ZhciBjPWEuY3J5cHRvfHxhLm1zQ3J5cHRvO2lmKGMmJmMuZ2V0UmFuZG9tVmFsdWVzKXRyeXt2YXIgZD1uZXcgVWludDhBcnJheSgyNSk7Yy5nZXRSYW5kb21WYWx1ZXMoZCk7Yj1idG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHcoZCkpKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0rJC8sIiIpO2JyZWFrIGF9Y2F0Y2goZSl7fWI9dm9pZCAwfXJldHVybiBifTsvKgoKIENvcHlyaWdodCBHb29nbGUgTExDCiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAoqLwp2YXIgZGM9Z2xvYmFsVGhpcy50cnVzdGVkVHlwZXMsZWM7ZnVuY3Rpb24gZmMoKXt2YXIgYT1udWxsO2lmKCFkYylyZXR1cm4gYTt0cnl7dmFyIGI9ZnVuY3Rpb24oYyl7cmV0dXJuIGN9O2E9ZGMuY3JlYXRlUG9saWN5KCJnb29nI2h0bWwiLHtjcmVhdGVIVE1MOmIsY3JlYXRlU2NyaXB0OmIsY3JlYXRlU2NyaXB0VVJMOmJ9KX1jYXRjaChjKXt9cmV0dXJuIGF9ZnVuY3Rpb24gaGMoKXtlYz09PXZvaWQgMCYmKGVjPWZjKCkpO3JldHVybiBlY307dmFyIGljPWZ1bmN0aW9uKGEpe3RoaXMuSD1hfTtpYy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IKyIifTtmdW5jdGlvbiBqYyhhKXt2YXIgYj1hLGM9aGMoKSxkPWM/Yy5jcmVhdGVTY3JpcHRVUkwoYik6YjtyZXR1cm4gbmV3IGljKGQpfWZ1bmN0aW9uIGtjKGEpe2lmKGEgaW5zdGFuY2VvZiBpYylyZXR1cm4gYS5IO3Rocm93IEVycm9yKCIiKTt9O3ZhciBsYz1BYShbIiJdKSxtYz16YShbIlx4MDAiXSxbIlxcMCJdKSxuYz16YShbIlxuIl0sWyJcXG4iXSksb2M9emEoWyJceDAwIl0sWyJcXHUwMDAwIl0pO2Z1bmN0aW9uIHBjKGEpe3JldHVybiBhLnRvU3RyaW5nKCkuaW5kZXhPZigiYCIpPT09LTF9cGMoZnVuY3Rpb24oYSl7cmV0dXJuIGEobGMpfSl8fHBjKGZ1bmN0aW9uKGEpe3JldHVybiBhKG1jKX0pfHxwYyhmdW5jdGlvbihhKXtyZXR1cm4gYShuYyl9KXx8cGMoZnVuY3Rpb24oYSl7cmV0dXJuIGEob2MpfSk7dmFyIHFjPWZ1bmN0aW9uKGEpe3RoaXMuSD1hfTtxYy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IfTt2YXIgcmM9ZnVuY3Rpb24oYSl7dGhpcy5Kcz1hfTtmdW5jdGlvbiBzYyhhKXtyZXR1cm4gbmV3IHJjKGZ1bmN0aW9uKGIpe3JldHVybiBiLnN1YnN0cigwLGEubGVuZ3RoKzEpLnRvTG93ZXJDYXNlKCk9PT1hKyI6In0pfXZhciB0Yz1bc2MoImRhdGEiKSxzYygiaHR0cCIpLHNjKCJodHRwcyIpLHNjKCJtYWlsdG8iKSxzYygiZnRwIiksbmV3IHJjKGZ1bmN0aW9uKGEpe3JldHVybi9eW146XSooWy8/I118JCkvLnRlc3QoYSl9KV07ZnVuY3Rpb24gdWMoYSl7dmFyIGI7Yj1iPT09dm9pZCAwP3RjOmI7aWYoYSBpbnN0YW5jZW9mIHFjKXJldHVybiBhO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7KytjKXt2YXIgZD1iW2NdO2lmKGQgaW5zdGFuY2VvZiByYyYmZC5KcyhhKSlyZXR1cm4gbmV3IHFjKGEpfX12YXIgdmM9L15ccyooPyFqYXZhc2NyaXB0OikoPzpbXHcrLi1dKzp8W146Lz8jXSooPzpbLz8jXXwkKSkvaTsKZnVuY3Rpb24gd2MoYSl7dmFyIGI7aWYoYSBpbnN0YW5jZW9mIHFjKWlmKGEgaW5zdGFuY2VvZiBxYyliPWEuSDtlbHNlIHRocm93IEVycm9yKCIiKTtlbHNlIGI9dmMudGVzdChhKT9hOnZvaWQgMDtyZXR1cm4gYn07ZnVuY3Rpb24geGMoYSxiKXt2YXIgYz13YyhiKTtjIT09dm9pZCAwJiYoYS5hY3Rpb249Yyl9O2Z1bmN0aW9uIHljKGEsYil7dGhyb3cgRXJyb3IoYj09PXZvaWQgMD8idW5leHBlY3RlZCB2YWx1ZSAiK2ErIiEiOmIpO307dmFyIHpjPWZ1bmN0aW9uKGEpe3RoaXMuSD1hfTt6Yy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IKyIifTt2YXIgQmM9ZnVuY3Rpb24oKXt0aGlzLkg9QWNbMF0udG9Mb3dlckNhc2UoKX07QmMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSH07ZnVuY3Rpb24gQ2MoYSxiKXt2YXIgYz1bbmV3IEJjXTtpZihjLmxlbmd0aD09PTApdGhyb3cgRXJyb3IoIiIpO3ZhciBkPWMubWFwKGZ1bmN0aW9uKGYpe3ZhciBnO2lmKGYgaW5zdGFuY2VvZiBCYylnPWYuSDtlbHNlIHRocm93IEVycm9yKCIiKTtyZXR1cm4gZ30pLGU9Yi50b0xvd2VyQ2FzZSgpO2lmKGQuZXZlcnkoZnVuY3Rpb24oZil7cmV0dXJuIGUuaW5kZXhPZihmKSE9PTB9KSl0aHJvdyBFcnJvcignQXR0cmlidXRlICInK2IrJyIgZG9lcyBub3QgbWF0Y2ggYW55IG9mIHRoZSBhbGxvd2VkIHByZWZpeGVzLicpO2Euc2V0QXR0cmlidXRlKGIsInRydWUiKX07dmFyIERjPUFycmF5LnByb3RvdHlwZS5pbmRleE9mP2Z1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYSxiLHZvaWQgMCl9OmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilyZXR1cm4gdHlwZW9mIGIhPT0ic3RyaW5nInx8Yi5sZW5ndGghPTE/LTE6YS5pbmRleE9mKGIsMCk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaWYoYyBpbiBhJiZhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX07IkFSVElDTEUgU0VDVElPTiBOQVYgQVNJREUgSDEgSDIgSDMgSDQgSDUgSDYgSEVBREVSIEZPT1RFUiBBRERSRVNTIFAgSFIgUFJFIEJMT0NLUVVPVEUgT0wgVUwgTEggTEkgREwgRFQgREQgRklHVVJFIEZJR0NBUFRJT04gTUFJTiBESVYgRU0gU1RST05HIFNNQUxMIFMgQ0lURSBRIERGTiBBQkJSIFJVQlkgUkIgUlQgUlRDIFJQIERBVEEgVElNRSBDT0RFIFZBUiBTQU1QIEtCRCBTVUIgU1VQIEkgQiBVIE1BUksgQkRJIEJETyBTUEFOIEJSIFdCUiBOT0JSIElOUyBERUwgUElDVFVSRSBQQVJBTSBUUkFDSyBNQVAgVEFCTEUgQ0FQVElPTiBDT0xHUk9VUCBDT0wgVEJPRFkgVEhFQUQgVEZPT1QgVFIgVEQgVEggU0VMRUNUIERBVEFMSVNUIE9QVEdST1VQIE9QVElPTiBPVVRQVVQgUFJPR1JFU1MgTUVURVIgRklFTERTRVQgTEVHRU5EIERFVEFJTFMgU1VNTUFSWSBNRU5VIERJQUxPRyBTTE9UIENBTlZBUyBGT05UIENFTlRFUiBBQ1JPTllNIEJBU0VGT05UIEJJRyBESVIgSEdST1VQIFNUUklLRSBUVCIuc3BsaXQoIiAiKS5jb25jYXQoWyJCVVRUT04iLAoiSU5QVVQiXSk7ZnVuY3Rpb24gRWMoYSl7cmV0dXJuIGE9PT1udWxsPyJudWxsIjphPT09dm9pZCAwPyJ1bmRlZmluZWQiOmF9O3ZhciBBPXdpbmRvdyxGYz1bXSxHYz13aW5kb3cuaGlzdG9yeSxCPWRvY3VtZW50LEhjPW5hdmlnYXRvcjtmdW5jdGlvbiBJYygpe3ZhciBhO3RyeXthPUhjLnNlcnZpY2VXb3JrZXJ9Y2F0Y2goYil7cmV0dXJufXJldHVybiBhfXZhciBKYz1CLmN1cnJlbnRTY3JpcHQsS2M9SmMmJkpjLnNyYztmdW5jdGlvbiBNYyhhLGIpe3ZhciBjPUEsZD1jW2FdO2NbYV09ZD09PXZvaWQgMD9iOmQ7cmV0dXJuIGNbYV19ZnVuY3Rpb24gTmMoYSl7cmV0dXJuKEhjLnVzZXJBZ2VudHx8IiIpLmluZGV4T2YoYSkhPT0tMX1mdW5jdGlvbiBPYygpe3JldHVybiBOYygiRmlyZWZveCIpfHxOYygiRnhpT1MiKX1mdW5jdGlvbiBQYygpe3JldHVybihOYygiR1NBIil8fE5jKCJHb29nbGVBcHAiKSkmJihOYygiaVBob25lIil8fE5jKCJpUGFkIikpfWZ1bmN0aW9uIFFjKCl7cmV0dXJuIE5jKCJFZGcvIil8fE5jKCJFZGdBLyIpfHxOYygiRWRnaU9TLyIpfQp2YXIgUmM9e2FzeW5jOjEsbm9uY2U6MSxvbmVycm9yOjEsb25sb2FkOjEsc3JjOjEsdHlwZToxfSxTYz17aGVpZ2h0OjEsb25sb2FkOjEsc3JjOjEsc3R5bGU6MSx3aWR0aDoxfTtmdW5jdGlvbiBUYyhhLGIsYyl7YiYmR2IoYixmdW5jdGlvbihkLGUpe2Q9ZC50b0xvd2VyQ2FzZSgpO2MuaGFzT3duUHJvcGVydHkoZCl8fGEuc2V0QXR0cmlidXRlKGQsZSl9KX0KZnVuY3Rpb24gVWMoYSxiLGMsZCxlKXt2YXIgZj1CLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO1RjKGYsZCxSYyk7Zi50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiO2YuYXN5bmM9ZCYmZC5hc3luYz09PSExPyExOiEwO3ZhciBnO2c9amMoRWMoYSkpO2Yuc3JjPWtjKGcpO3ZhciBoLGw9Zi5vd25lckRvY3VtZW50O2w9bD09PXZvaWQgMD9kb2N1bWVudDpsO3ZhciBuLHAscT0ocD0obj1sKS5xdWVyeVNlbGVjdG9yKT09bnVsbD92b2lkIDA6cC5jYWxsKG4sInNjcmlwdFtub25jZV0iKTsoaD1xPT1udWxsPyIiOnEubm9uY2V8fHEuZ2V0QXR0cmlidXRlKCJub25jZSIpfHwiIikmJmYuc2V0QXR0cmlidXRlKCJub25jZSIsaCk7YiYmKGYub25sb2FkPWIpO2MmJihmLm9uZXJyb3I9Yyk7ZT9lLmFwcGVuZENoaWxkKGYpOlZjLkJzKGYpO3JldHVybiBmfQpmdW5jdGlvbiBXYygpe2lmKEtjKXt2YXIgYT1LYy50b0xvd2VyQ2FzZSgpO2lmKGEuaW5kZXhPZigiaHR0cHM6Ly8iKT09PTApcmV0dXJuIDI7aWYoYS5pbmRleE9mKCJodHRwOi8vIik9PT0wKXJldHVybiAzfXJldHVybiAxfWZ1bmN0aW9uIFhjKGEsYixjLGQsZSxmKXtmPWY9PT12b2lkIDA/ITA6Zjt2YXIgZz1lLGg9ITE7Z3x8KGc9Qi5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxoPSEwKTtUYyhnLGMsU2MpO2QmJkdiKGQsZnVuY3Rpb24obixwKXtnLmRhdGFzZXRbbl09cH0pO2YmJihnLmhlaWdodD0iMCIsZy53aWR0aD0iMCIsZy5zdHlsZS5kaXNwbGF5PSJub25lIixnLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIpO2EhPT12b2lkIDAmJihnLnNyYz1hKTtpZihoKXt2YXIgbD1CLmJvZHkmJkIuYm9keS5sYXN0Q2hpbGR8fEIuYm9keXx8Qi5oZWFkO2wucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxsKX1iJiYoZy5vbmxvYWQ9Yik7cmV0dXJuIGd9CmZ1bmN0aW9uIFpjKCl7cmV0dXJuIFZjLkVyLmFwcGx5KFZjLHcoT2EuYXBwbHkoMCxhcmd1bWVudHMpKSl9ZnVuY3Rpb24gJGMoYSxiLGMsZCl7YS5hZGRFdmVudExpc3RlbmVyJiZhLmFkZEV2ZW50TGlzdGVuZXIoYixjLCEhZCl9ZnVuY3Rpb24gYWQoYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9ZnVuY3Rpb24gYmQoYSl7QS5zZXRUaW1lb3V0KGEsMCl9ZnVuY3Rpb24gY2QoYSxiKXt2YXIgYz1PYS5hcHBseSgyLGFyZ3VtZW50cyksZCxlPShkPUEpLnNldEludGVydmFsLmFwcGx5KGQsW2EsYl0uY29uY2F0KHcoYykpKTtGYy5wdXNoKGUpO3JldHVybiBlfQpmdW5jdGlvbiBkZChhKXt2YXIgYj1BO3liKGIucXVldWVNaWNyb3Rhc2spP2IucXVldWVNaWNyb3Rhc2soYSk6eWIoYi5Qcm9taXNlKSYmYi5Qcm9taXNlLnJlc29sdmU/Yi5Qcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7YSgpfSkuY2F0Y2goZnVuY3Rpb24oKXt9KTpiZChhKX1mdW5jdGlvbiBlZChhLGIpe3JldHVybiBhJiZiJiZhLmF0dHJpYnV0ZXMmJmEuYXR0cmlidXRlc1tiXT9hLmF0dHJpYnV0ZXNbYl0udmFsdWU6bnVsbH1mdW5jdGlvbiBmZChhKXt2YXIgYj1hLmlubmVyVGV4dHx8YS50ZXh0Q29udGVudHx8IiI7YiYmYiE9PSIgIiYmKGI9Yi5yZXBsYWNlKC9eW1xzXHhhMF0rL2csIiIpLGI9Yi5yZXBsYWNlKC9bXHNceGEwXSskL2csIiIpKTtiJiYoYj1iLnJlcGxhY2UoLyhceGEwK3xcc3syLH18XG58XHJcdCkvZywiICIpKTtyZXR1cm4gYn0KZnVuY3Rpb24gZ2QoYSl7dmFyIGI9Qi5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWIsZCxlPUVjKCJBPGRpdj4iK2ErIjwvZGl2PiIpLGY9aGMoKSxnPWY/Zi5jcmVhdGVIVE1MKGUpOmU7ZD1uZXcgemMoZyk7aWYoYy5ub2RlVHlwZT09PTEmJi9eKHNjcmlwdHxzdHlsZSkkL2kudGVzdChjLnRhZ05hbWUpKXRocm93IEVycm9yKCIiKTt2YXIgaDtpZihkIGluc3RhbmNlb2YgemMpaD1kLkg7ZWxzZSB0aHJvdyBFcnJvcigiIik7Yy5pbm5lckhUTUw9aDtiPWIubGFzdENoaWxkO2Zvcih2YXIgbD1bXTtiJiZiLmZpcnN0Q2hpbGQ7KWwucHVzaChiLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCkpO3JldHVybiBsfQpmdW5jdGlvbiBoZChhLGIsYyl7Yz1jfHwxMDA7Zm9yKHZhciBkPXt9LGU9MDtlPGIubGVuZ3RoO2UrKylkW2JbZV1dPSEwO2Zvcih2YXIgZj1hLGc9MDtmJiZnPD1jO2crKyl7aWYoZFtTdHJpbmcoZi50YWdOYW1lKS50b0xvd2VyQ2FzZSgpXSlyZXR1cm4gZjtmPWYucGFyZW50RWxlbWVudH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBpZChhLGIsYyl7dmFyIGQ7dHJ5e2Q9SGMuc2VuZEJlYWNvbiYmSGMuc2VuZEJlYWNvbihhKX1jYXRjaChlKXtzYigiVEFHR0lORyIsMTUpfWQ/Yj09bnVsbHx8YigpOlpjKGEsYixjKX1mdW5jdGlvbiBqZChhLGIpe3RyeXtpZihIYy5zZW5kQmVhY29uIT09dm9pZCAwKXJldHVybiBIYy5zZW5kQmVhY29uKGEsYil9Y2F0Y2goYyl7c2IoIlRBR0dJTkciLDE1KX1yZXR1cm4hMX1mdW5jdGlvbiBrZCgpe3JldHVybiBIYy5zZW5kQmVhY29uIT09dm9pZCAwfQp2YXIgbGQ9e2NhY2hlOiJuby1zdG9yZSIsY3JlZGVudGlhbHM6ImluY2x1ZGUiLGtlZXBhbGl2ZTohMCxtZXRob2Q6IlBPU1QiLG1vZGU6Im5vLWNvcnMiLHJlZGlyZWN0OiJmb2xsb3cifTsKZnVuY3Rpb24gbWQoYSxiLGMsZCxlKXtpZihuZCgpKXt2YXIgZj1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGxkKTtiJiYoZi5ib2R5PWIpO2MmJihjLmF0dHJpYnV0aW9uUmVwb3J0aW5nJiYoZi5hdHRyaWJ1dGlvblJlcG9ydGluZz1jLmF0dHJpYnV0aW9uUmVwb3J0aW5nKSxjLmJyb3dzaW5nVG9waWNzIT09dm9pZCAwJiYoZi5icm93c2luZ1RvcGljcz1jLmJyb3dzaW5nVG9waWNzKSxjLmNyZWRlbnRpYWxzJiYoZi5jcmVkZW50aWFscz1jLmNyZWRlbnRpYWxzKSxjLmtlZXBhbGl2ZSE9PXZvaWQgMCYmKGYua2VlcGFsaXZlPWMua2VlcGFsaXZlKSxjLm1ldGhvZCYmKGYubWV0aG9kPWMubWV0aG9kKSxjLm1vZGUmJihmLm1vZGU9Yy5tb2RlKSk7dHJ5e3ZhciBnPUEuZmV0Y2goYSxmKTtpZihnKXJldHVybiBnLnRoZW4oZnVuY3Rpb24obCl7bCYmKGwub2t8fGwuc3RhdHVzPT09MCk/ZD09bnVsbHx8ZCgpOmU9PW51bGx8fGUoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7ZT09Cm51bGx8fGUoKX0pLCEwfWNhdGNoKGwpe319aWYoKGM9PW51bGw/MDpjLlFnKXx8KGM9PW51bGw/MDpjLmNyZWRlbnRpYWxzKSYmYy5jcmVkZW50aWFscyE9PSJpbmNsdWRlIilyZXR1cm4gZT09bnVsbHx8ZSgpLCExO2lmKGIpe3ZhciBoPWpkKGEsYik7aD9kPT1udWxsfHxkKCk6ZT09bnVsbHx8ZSgpO3JldHVybiBofVZjLnd0KGEsZCxlKTtyZXR1cm4hMH1mdW5jdGlvbiBuZCgpe3JldHVybiB5YihBLmZldGNoKX1mdW5jdGlvbiBvZChhLGIpe3ZhciBjPWFbYl07YyYmdHlwZW9mIGMuYW5pbVZhbD09PSJzdHJpbmciJiYoYz1jLmFuaW1WYWwpO3JldHVybiBjfWZ1bmN0aW9uIHBkKCl7dmFyIGE9QS5wZXJmb3JtYW5jZTtpZihhJiZ5YihhLm5vdykpcmV0dXJuIGEubm93KCl9CmZ1bmN0aW9uIHFkKCl7dmFyIGEsYj1BLnBlcmZvcm1hbmNlO2lmKGImJmIuZ2V0RW50cmllc0J5VHlwZSl0cnl7dmFyIGM9Yi5nZXRFbnRyaWVzQnlUeXBlKCJuYXZpZ2F0aW9uIik7YyYmYy5sZW5ndGg+MCYmKGE9Y1swXS50eXBlKX1jYXRjaChkKXtyZXR1cm4iZSJ9aWYoIWEpcmV0dXJuInUiO3N3aXRjaChhKXtjYXNlICJuYXZpZ2F0ZSI6cmV0dXJuIm4iO2Nhc2UgImJhY2tfZm9yd2FyZCI6cmV0dXJuImgiO2Nhc2UgInJlbG9hZCI6cmV0dXJuInIiO2Nhc2UgInByZXJlbmRlciI6cmV0dXJuInAiO2RlZmF1bHQ6cmV0dXJuIngifX1mdW5jdGlvbiByZCgpe3JldHVybiBBLnBlcmZvcm1hbmNlfHx2b2lkIDB9ZnVuY3Rpb24gc2QoKXt2YXIgYT1BLndlYlBpeGVsc01hbmFnZXI7cmV0dXJuIGE/YS5jcmVhdGVTaG9waWZ5RXh0ZW5kIT09dm9pZCAwOiExfQp2YXIgVmM9e0VyOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPW5ldyBJbWFnZSgxLDEpO1RjKGUsZCx7fSk7ZS5vbmxvYWQ9ZnVuY3Rpb24oKXtlLm9ubG9hZD1udWxsO2ImJmIoKX07ZS5vbmVycm9yPWZ1bmN0aW9uKCl7ZS5vbmVycm9yPW51bGw7YyYmYygpfTtlLnNyYz1hO3JldHVybiBlfSxCczpmdW5jdGlvbihhKXt2YXIgYj1CLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXXx8Qi5ib2R5fHxCLmhlYWQ7Yi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGIpfSx3dDppZH07ZnVuY3Rpb24gdGQoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKSYmdGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiB1ZChhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpPT09dGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiB2ZChhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpfHx0aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uIHdkKGEsYil7dmFyIGM9dGhpcy5ldmFsdWF0ZShhKSxkPXRoaXMuZXZhbHVhdGUoYik7cmV0dXJuIFN0cmluZyhjKS5pbmRleE9mKFN0cmluZyhkKSk+LTF9ZnVuY3Rpb24geGQoYSxiKXt2YXIgYz1TdHJpbmcodGhpcy5ldmFsdWF0ZShhKSksZD1TdHJpbmcodGhpcy5ldmFsdWF0ZShiKSk7cmV0dXJuIGMuc3Vic3RyaW5nKDAsZC5sZW5ndGgpPT09ZH0KZnVuY3Rpb24geWQoYSxiKXt2YXIgYz10aGlzLmV2YWx1YXRlKGEpLGQ9dGhpcy5ldmFsdWF0ZShiKTtzd2l0Y2goYyl7Y2FzZSAicGFnZUxvY2F0aW9uIjp2YXIgZT1BLmxvY2F0aW9uLmhyZWY7ZCBpbnN0YW5jZW9mIGtiJiZkLmdldCgic3RyaXBQcm90b2NvbCIpJiYoZT1lLnJlcGxhY2UoL15odHRwcz86XC9cLy8sIiIpKTtyZXR1cm4gZX19Oy8qCiBqUXVlcnkgKGMpIDIwMDUsIDIwMTIgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4ganF1ZXJ5Lm9yZy9saWNlbnNlLgoqLwp2YXIgemQ9L1xbb2JqZWN0IChCb29sZWFufE51bWJlcnxTdHJpbmd8RnVuY3Rpb258QXJyYXl8RGF0ZXxSZWdFeHApXF0vLEFkPWZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpcmV0dXJuIFN0cmluZyhhKTt2YXIgYj16ZC5leGVjKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChPYmplY3QoYSkpKTtyZXR1cm4gYj9iWzFdLnRvTG93ZXJDYXNlKCk6Im9iamVjdCJ9LEJkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChPYmplY3QoYSksYil9LENkPWZ1bmN0aW9uKGEpe2lmKCFhfHxBZChhKSE9Im9iamVjdCJ8fGEubm9kZVR5cGV8fGE9PWEud2luZG93KXJldHVybiExO3RyeXtpZihhLmNvbnN0cnVjdG9yJiYhQmQoYSwiY29uc3RydWN0b3IiKSYmIUJkKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9Zm9yKHZhciBiIGluIGEpO3JldHVybiBiPT09dm9pZCAwfHwKQmQoYSxiKX0sRWQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHwoQWQoYSk9PSJhcnJheSI/W106e30pLGQ7Zm9yKGQgaW4gYSlpZihCZChhLGQpKXt2YXIgZT1hW2RdO0FkKGUpPT0iYXJyYXkiPyhBZChjW2RdKSE9ImFycmF5IiYmKGNbZF09W10pLGNbZF09RWQoZSxjW2RdKSk6Q2QoZSk/KENkKGNbZF0pfHwoY1tkXT17fSksY1tkXT1FZChlLGNbZF0pKTpjW2RdPWV9cmV0dXJuIGN9O2Z1bmN0aW9uIEZkKGEpe3JldHVybiB0eXBlb2YgYT09PSJudW1iZXIiJiZhPj0wJiZpc0Zpbml0ZShhKSYmYSUxPT09MHx8dHlwZW9mIGE9PT0ic3RyaW5nIiYmYVswXSE9PSItIiYmYT09PSIiK3BhcnNlSW50KGEpfTt2YXIgR2Q9ZnVuY3Rpb24oYSl7YT1hPT09dm9pZCAwP1tdOmE7dGhpcy5sYT1uZXcgVWE7dGhpcy52YWx1ZXM9W107dGhpcy5OYT0hMTtmb3IodmFyIGIgaW4gYSlhLmhhc093blByb3BlcnR5KGIpJiYoRmQoYik/dGhpcy52YWx1ZXNbTnVtYmVyKGIpXT1hW051bWJlcihiKV06dGhpcy5sYS5zZXQoYixhW2JdKSl9O2s9R2QucHJvdG90eXBlO2sudG9TdHJpbmc9ZnVuY3Rpb24oYSl7aWYoYSYmYS5pbmRleE9mKHRoaXMpPj0wKXJldHVybiIiO2Zvcih2YXIgYj1bXSxjPTA7Yzx0aGlzLnZhbHVlcy5sZW5ndGg7YysrKXt2YXIgZD10aGlzLnZhbHVlc1tjXTtkPT09bnVsbHx8ZD09PXZvaWQgMD9iLnB1c2goIiIpOmQgaW5zdGFuY2VvZiBHZD8oYT1hfHxbXSxhLnB1c2godGhpcyksYi5wdXNoKGQudG9TdHJpbmcoYSkpLGEucG9wKCkpOmIucHVzaChTdHJpbmcoZCkpfXJldHVybiBiLmpvaW4oIiwiKX07Cmsuc2V0PWZ1bmN0aW9uKGEsYil7aWYoIXRoaXMuTmEpaWYoYT09PSJsZW5ndGgiKXtpZighRmQoYikpdGhyb3cgY2IoRXJyb3IoIlJhbmdlRXJyb3I6IExlbmd0aCBwcm9wZXJ0eSBtdXN0IGJlIGEgdmFsaWQgaW50ZWdlci4iKSk7dGhpcy52YWx1ZXMubGVuZ3RoPU51bWJlcihiKX1lbHNlIEZkKGEpP3RoaXMudmFsdWVzW051bWJlcihhKV09Yjp0aGlzLmxhLnNldChhLGIpfTtrLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gYT09PSJsZW5ndGgiP3RoaXMubGVuZ3RoKCk6RmQoYSk/dGhpcy52YWx1ZXNbTnVtYmVyKGEpXTp0aGlzLmxhLmdldChhKX07ay5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXMubGVuZ3RofTtrLkZhPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMubGEuRmEoKSxiPTA7Yjx0aGlzLnZhbHVlcy5sZW5ndGg7YisrKXRoaXMudmFsdWVzLmhhc093blByb3BlcnR5KGIpJiZhLnB1c2goU3RyaW5nKGIpKTtyZXR1cm4gYX07CmsuaGM9ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5sYS5oYygpLGI9MDtiPHRoaXMudmFsdWVzLmxlbmd0aDtiKyspdGhpcy52YWx1ZXMuaGFzT3duUHJvcGVydHkoYikmJmEucHVzaCh0aGlzLnZhbHVlc1tiXSk7cmV0dXJuIGF9O2suZmM9ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5sYS5mYygpLGI9MDtiPHRoaXMudmFsdWVzLmxlbmd0aDtiKyspdGhpcy52YWx1ZXMuaGFzT3duUHJvcGVydHkoYikmJmEucHVzaChbU3RyaW5nKGIpLHRoaXMudmFsdWVzW2JdXSk7cmV0dXJuIGF9O2sucmVtb3ZlPWZ1bmN0aW9uKGEpe0ZkKGEpP2RlbGV0ZSB0aGlzLnZhbHVlc1tOdW1iZXIoYSldOnRoaXMuTmF8fHRoaXMubGEucmVtb3ZlKGEpfTtrLnBvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5wb3AoKX07ay5wdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLnB1c2guYXBwbHkodGhpcy52YWx1ZXMsdyhPYS5hcHBseSgwLGFyZ3VtZW50cykpKX07ay5zaGlmdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5zaGlmdCgpfTsKay5zcGxpY2U9ZnVuY3Rpb24oYSxiKXt2YXIgYz1PYS5hcHBseSgyLGFyZ3VtZW50cyk7cmV0dXJuIGI9PT12b2lkIDAmJmMubGVuZ3RoPT09MD9uZXcgR2QodGhpcy52YWx1ZXMuc3BsaWNlKGEpKTpuZXcgR2QodGhpcy52YWx1ZXMuc3BsaWNlLmFwcGx5KHRoaXMudmFsdWVzLFthLGJ8fDBdLmNvbmNhdCh3KGMpKSkpfTtrLnVuc2hpZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXMudW5zaGlmdC5hcHBseSh0aGlzLnZhbHVlcyx3KE9hLmFwcGx5KDAsYXJndW1lbnRzKSkpfTtrLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gRmQoYSkmJnRoaXMudmFsdWVzLmhhc093blByb3BlcnR5KGEpfHx0aGlzLmxhLmhhcyhhKX07ay5aYT1mdW5jdGlvbigpe3RoaXMuTmE9ITA7T2JqZWN0LmZyZWV6ZSh0aGlzLnZhbHVlcyl9O2suSGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OYX07CmZ1bmN0aW9uIEhkKGEpe2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aCgpO2MrKylhLmhhcyhjKSYmKGJbY109YS5nZXQoYykpO3JldHVybiBifTt2YXIgSWQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmZ1bmN0aW9uTmFtZT1hO3RoaXMuaWU9Yjt0aGlzLmxhPW5ldyBVYTt0aGlzLk5hPSExfTtrPUlkLnByb3RvdHlwZTtrLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnVuY3Rpb25OYW1lfTtrLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mdW5jdGlvbk5hbWV9O2suZ2V0S2V5cz1mdW5jdGlvbigpe3JldHVybiBuZXcgR2QodGhpcy5GYSgpKX07ay5pbnZva2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaWUuY2FsbC5hcHBseSh0aGlzLmllLFtuZXcgSmQodGhpcyxhKV0uY29uY2F0KHcoT2EuYXBwbHkoMSxhcmd1bWVudHMpKSkpfTtrLmFwcGx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuaWUuYXBwbHkobmV3IEpkKHRoaXMsYSksYil9O2suTmM9ZnVuY3Rpb24oYSl7dmFyIGI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO3RyeXtyZXR1cm4gdGhpcy5pbnZva2UuYXBwbHkodGhpcyxbYV0uY29uY2F0KHcoYikpKX1jYXRjaChjKXt9fTsKay5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGEuZ2V0KGEpfTtrLnNldD1mdW5jdGlvbihhLGIpe3RoaXMuTmF8fHRoaXMubGEuc2V0KGEsYil9O2suaGFzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhLmhhcyhhKX07ay5yZW1vdmU9ZnVuY3Rpb24oYSl7dGhpcy5OYXx8dGhpcy5sYS5yZW1vdmUoYSl9O2suRmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5GYSgpfTtrLmhjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuaGMoKX07ay5mYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLmZjKCl9O2suWmE9ZnVuY3Rpb24oKXt0aGlzLk5hPSEwfTtrLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTmF9O3ZhciBLZD1mdW5jdGlvbihhLGIpe0lkLmNhbGwodGhpcyxhLGIpfTt3YShLZCxJZCk7dmFyIExkPWZ1bmN0aW9uKGEsYil7SWQuY2FsbCh0aGlzLGEsYil9O3dhKExkLElkKTt2YXIgSmQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmllPWE7dGhpcy5UPWJ9OwpKZC5wcm90b3R5cGUuZXZhbHVhdGU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5UO3JldHVybiBBcnJheS5pc0FycmF5KGEpP2ZiKGIsYSk6YX07SmQucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZS5nZXROYW1lKCl9O0pkLnByb3RvdHlwZS5qZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLlQuamUoKX07dmFyIE1kPWZ1bmN0aW9uKCl7dGhpcy5tYXA9bmV3IE1hcH07TWQucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe3RoaXMubWFwLnNldChhLGIpfTtNZC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm1hcC5nZXQoYSl9O3ZhciBOZD1mdW5jdGlvbigpe3RoaXMua2V5cz1bXTt0aGlzLnZhbHVlcz1bXX07TmQucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe3RoaXMua2V5cy5wdXNoKGEpO3RoaXMudmFsdWVzLnB1c2goYil9O05kLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5rZXlzLmluZGV4T2YoYSk7aWYoYj4tMSlyZXR1cm4gdGhpcy52YWx1ZXNbYl19O2Z1bmN0aW9uIE9kKCl7dHJ5e3JldHVybiBNYXA/bmV3IE1kOm5ldyBOZH1jYXRjaChhKXtyZXR1cm4gbmV3IE5kfX07dmFyIFBkPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBQZClyZXR1cm4gYTt2YXIgYjthOmlmKGE9PXZvaWQgMHx8QXJyYXkuaXNBcnJheShhKXx8Q2QoYSkpYj0hMDtlbHNle3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSAiYm9vbGVhbiI6Y2FzZSAibnVtYmVyIjpjYXNlICJzdHJpbmciOmNhc2UgImZ1bmN0aW9uIjpiPSEwO2JyZWFrIGF9Yj0hMX1pZihiKXRocm93IEVycm9yKCJUeXBlIG9mIGdpdmVuIHZhbHVlIGhhcyBhbiBlcXVpdmFsZW50IFBpeGllIHR5cGUuIik7dGhpcy52YWx1ZT1hfTtQZC5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX07UGQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzLnZhbHVlKX07dmFyIFNkPWZ1bmN0aW9uKGEpe3RoaXMucHJvbWlzZT1hO3RoaXMuTmE9ITE7dGhpcy5sYT1uZXcgVWE7dGhpcy5sYS5zZXQoInRoZW4iLFJkKHRoaXMpKTt0aGlzLmxhLnNldCgiY2F0Y2giLFJkKHRoaXMsITApKTt0aGlzLmxhLnNldCgiZmluYWxseSIsUmQodGhpcywhMSwhMCkpfTtrPVNkLnByb3RvdHlwZTtrLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sYS5nZXQoYSl9O2suc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5OYXx8dGhpcy5sYS5zZXQoYSxiKX07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGEuaGFzKGEpfTtrLnJlbW92ZT1mdW5jdGlvbihhKXt0aGlzLk5hfHx0aGlzLmxhLnJlbW92ZShhKX07ay5GYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLkZhKCl9O2suaGM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5oYygpfTtrLmZjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuZmMoKX07CnZhciBSZD1mdW5jdGlvbihhLGIsYyl7Yj1iPT09dm9pZCAwPyExOmI7Yz1jPT09dm9pZCAwPyExOmM7cmV0dXJuIG5ldyBLZCgiIixmdW5jdGlvbihkLGUpe2ImJihlPWQsZD12b2lkIDApO2MmJihlPWQpO2QgaW5zdGFuY2VvZiBLZHx8KGQ9dm9pZCAwKTtlIGluc3RhbmNlb2YgS2R8fChlPXZvaWQgMCk7dmFyIGY9dGhpcy5ULndiKCksZz1mdW5jdGlvbihsKXtyZXR1cm4gZnVuY3Rpb24obil7dHJ5e3JldHVybiBjPyhsLmludm9rZShmKSxhLnByb21pc2UpOmwuaW52b2tlKGYsbil9Y2F0Y2gocCl7cmV0dXJuIFByb21pc2UucmVqZWN0KHAgaW5zdGFuY2VvZiBFcnJvcj9uZXcgUGQocCk6U3RyaW5nKHApKX19fSxoPWEucHJvbWlzZS50aGVuKGQmJmcoZCksZSYmZyhlKSk7cmV0dXJuIG5ldyBTZChoKX0pfTtTZC5wcm90b3R5cGUuWmE9ZnVuY3Rpb24oKXt0aGlzLk5hPSEwfTtTZC5wcm90b3R5cGUuSGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OYX07ZnVuY3Rpb24gVGQoYSxiLGMpe3ZhciBkPU9kKCksZT1mdW5jdGlvbihnLGgpe2Zvcih2YXIgbD1nLkZhKCksbj0wO248bC5sZW5ndGg7bisrKWhbbFtuXV09ZihnLmdldChsW25dKSl9LGY9ZnVuY3Rpb24oZyl7aWYoZz09PW51bGx8fGc9PT12b2lkIDApcmV0dXJuIGc7dmFyIGg9ZC5nZXQoZyk7aWYoaClyZXR1cm4gaDtpZihnIGluc3RhbmNlb2YgR2Qpe3ZhciBsPVtdO2Quc2V0KGcsbCk7Zm9yKHZhciBuPWcuRmEoKSxwPTA7cDxuLmxlbmd0aDtwKyspbFtuW3BdXT1mKGcuZ2V0KG5bcF0pKTtyZXR1cm4gbH1pZihnIGluc3RhbmNlb2YgU2QpcmV0dXJuIGcucHJvbWlzZS50aGVuKGZ1bmN0aW9uKHUpe3JldHVybiBUZCh1LGIsMSl9LGZ1bmN0aW9uKHUpe3JldHVybiBQcm9taXNlLnJlamVjdChUZCh1LGIsMSkpfSk7aWYoZyBpbnN0YW5jZW9mIGtiKXt2YXIgcT17fTtkLnNldChnLHEpO2UoZyxxKTtyZXR1cm4gcX1pZihnIGluc3RhbmNlb2YgS2Qpe3ZhciByPWZ1bmN0aW9uKCl7Zm9yKHZhciB1PQpbXSx2PTA7djxhcmd1bWVudHMubGVuZ3RoO3YrKyl1W3ZdPVVkKGFyZ3VtZW50c1t2XSxiLGMpO3ZhciB4PW5ldyBoYihiP2IuamUoKTpuZXcgV2EpO2ImJngudWUoYi54YigpKTtyZXR1cm4gZihnLmFwcGx5KHgsdSkpfTtkLnNldChnLHIpO2UoZyxyKTtyZXR1cm4gcn12YXIgdD0hMTtzd2l0Y2goYyl7Y2FzZSAxOnQ9ITA7YnJlYWs7Y2FzZSAyOnQ9ITE7YnJlYWs7Y2FzZSAzOnQ9ITE7YnJlYWs7ZGVmYXVsdDp9aWYoZyBpbnN0YW5jZW9mIFBkJiZ0KXJldHVybiBnLmdldFZhbHVlKCk7c3dpdGNoKHR5cGVvZiBnKXtjYXNlICJib29sZWFuIjpjYXNlICJudW1iZXIiOmNhc2UgInN0cmluZyI6Y2FzZSAidW5kZWZpbmVkIjpyZXR1cm4gZztjYXNlICJvYmplY3QiOmlmKGc9PT0KbnVsbClyZXR1cm4gbnVsbH19O3JldHVybiBmKGEpfQpmdW5jdGlvbiBVZChhLGIsYyl7dmFyIGQ9T2QoKSxlPWZ1bmN0aW9uKGcsaCl7Zm9yKHZhciBsIGluIGcpZy5oYXNPd25Qcm9wZXJ0eShsKSYmaC5zZXQobCxmKGdbbF0pKX0sZj1mdW5jdGlvbihnKXt2YXIgaD1kLmdldChnKTtpZihoKXJldHVybiBoO2lmKEFycmF5LmlzQXJyYXkoZyl8fEhiKGcpKXt2YXIgbD1uZXcgR2Q7ZC5zZXQoZyxsKTtmb3IodmFyIG4gaW4gZylnLmhhc093blByb3BlcnR5KG4pJiZsLnNldChuLGYoZ1tuXSkpO3JldHVybiBsfWlmKENkKGcpKXt2YXIgcD1uZXcga2I7ZC5zZXQoZyxwKTtlKGcscCk7cmV0dXJuIHB9aWYodHlwZW9mIGc9PT0iZnVuY3Rpb24iKXt2YXIgcT1uZXcgS2QoIiIsZnVuY3Rpb24oKXtmb3IodmFyIHU9T2EuYXBwbHkoMCxhcmd1bWVudHMpLHY9W10seD0wO3g8dS5sZW5ndGg7eCsrKXZbeF09VGQodGhpcy5ldmFsdWF0ZSh1W3hdKSxiLGMpO3JldHVybiBmKHRoaXMuVC5QaigpKGcsZyx2KSl9KTtkLnNldChnLHEpO2UoZyxxKTtyZXR1cm4gcX12YXIgcj10eXBlb2YgZztpZihnPT09bnVsbHx8cj09PSJzdHJpbmcifHxyPT09Im51bWJlciJ8fHI9PT0iYm9vbGVhbiIpcmV0dXJuIGc7dmFyIHQ9ITE7c3dpdGNoKGMpe2Nhc2UgMTp0PSEwO2JyZWFrO2Nhc2UgMjp0PSExO2JyZWFrO2RlZmF1bHQ6fWlmKGchPT12b2lkIDAmJnQpcmV0dXJuIG5ldyBQZChnKX07cmV0dXJuIGYoYSl9O3ZhciBWZD17c3VwcG9ydGVkTWV0aG9kczoiY29uY2F0IGV2ZXJ5IGZpbHRlciBmb3JFYWNoIGhhc093blByb3BlcnR5IGluZGV4T2Ygam9pbiBsYXN0SW5kZXhPZiBtYXAgcG9wIHB1c2ggcmVkdWNlIHJlZHVjZVJpZ2h0IHJldmVyc2Ugc2hpZnQgc2xpY2Ugc29tZSBzb3J0IHNwbGljZSB1bnNoaWZ0IHRvU3RyaW5nIi5zcGxpdCgiICIpLGNvbmNhdDpmdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8dGhpcy5sZW5ndGgoKTtjKyspYi5wdXNoKHRoaXMuZ2V0KGMpKTtmb3IodmFyIGQ9MTtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKWlmKGFyZ3VtZW50c1tkXWluc3RhbmNlb2YgR2QpZm9yKHZhciBlPWFyZ3VtZW50c1tkXSxmPTA7ZjxlLmxlbmd0aCgpO2YrKyliLnB1c2goZS5nZXQoZikpO2Vsc2UgYi5wdXNoKGFyZ3VtZW50c1tkXSk7cmV0dXJuIG5ldyBHZChiKX0sZXZlcnk6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy5sZW5ndGgoKSxkPTA7ZDx0aGlzLmxlbmd0aCgpJiYKZDxjO2QrKylpZih0aGlzLmhhcyhkKSYmIWIuaW52b2tlKGEsdGhpcy5nZXQoZCksZCx0aGlzKSlyZXR1cm4hMTtyZXR1cm4hMH0sZmlsdGVyOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXRoaXMubGVuZ3RoKCksZD1bXSxlPTA7ZTx0aGlzLmxlbmd0aCgpJiZlPGM7ZSsrKXRoaXMuaGFzKGUpJiZiLmludm9rZShhLHRoaXMuZ2V0KGUpLGUsdGhpcykmJmQucHVzaCh0aGlzLmdldChlKSk7cmV0dXJuIG5ldyBHZChkKX0sZm9yRWFjaDpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLmxlbmd0aCgpLGQ9MDtkPHRoaXMubGVuZ3RoKCkmJmQ8YztkKyspdGhpcy5oYXMoZCkmJmIuaW52b2tlKGEsdGhpcy5nZXQoZCksZCx0aGlzKX0saGFzT3duUHJvcGVydHk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5oYXMoYil9LGluZGV4T2Y6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMubGVuZ3RoKCksZT1jPT09dm9pZCAwPzA6TnVtYmVyKGMpO2U8MCYmKGU9TWF0aC5tYXgoZCtlLDApKTtmb3IodmFyIGY9CmU7ZjxkO2YrKylpZih0aGlzLmhhcyhmKSYmdGhpcy5nZXQoZik9PT1iKXJldHVybiBmO3JldHVybi0xfSxqb2luOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGQ9MDtkPHRoaXMubGVuZ3RoKCk7ZCsrKWMucHVzaCh0aGlzLmdldChkKSk7cmV0dXJuIGMuam9pbihiKX0sbGFzdEluZGV4T2Y6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMubGVuZ3RoKCksZT1kLTE7YyE9PXZvaWQgMCYmKGU9YzwwP2QrYzpNYXRoLm1pbihjLGUpKTtmb3IodmFyIGY9ZTtmPj0wO2YtLSlpZih0aGlzLmhhcyhmKSYmdGhpcy5nZXQoZik9PT1iKXJldHVybiBmO3JldHVybi0xfSxtYXA6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy5sZW5ndGgoKSxkPVtdLGU9MDtlPHRoaXMubGVuZ3RoKCkmJmU8YztlKyspdGhpcy5oYXMoZSkmJihkW2VdPWIuaW52b2tlKGEsdGhpcy5nZXQoZSksZSx0aGlzKSk7cmV0dXJuIG5ldyBHZChkKX0scG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9wKCl9LHB1c2g6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaC5hcHBseSh0aGlzLAp3KE9hLmFwcGx5KDEsYXJndW1lbnRzKSkpfSxyZWR1Y2U6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMubGVuZ3RoKCksZSxmPTA7aWYoYyE9PXZvaWQgMCllPWM7ZWxzZXtpZihkPT09MCl0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBSZWR1Y2Ugb24gTGlzdCB3aXRoIG5vIGVsZW1lbnRzLiIpKTtmb3IodmFyIGc9MDtnPGQ7ZysrKWlmKHRoaXMuaGFzKGcpKXtlPXRoaXMuZ2V0KGcpO2Y9ZysxO2JyZWFrfWlmKGc9PT1kKXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6IFJlZHVjZSBvbiBMaXN0IHdpdGggbm8gZWxlbWVudHMuIikpO31mb3IodmFyIGg9ZjtoPGQ7aCsrKXRoaXMuaGFzKGgpJiYoZT1iLmludm9rZShhLGUsdGhpcy5nZXQoaCksaCx0aGlzKSk7cmV0dXJuIGV9LHJlZHVjZVJpZ2h0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmxlbmd0aCgpLGUsZj1kLTE7aWYoYyE9PXZvaWQgMCllPWM7ZWxzZXtpZihkPT09MCl0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBSZWR1Y2VSaWdodCBvbiBMaXN0IHdpdGggbm8gZWxlbWVudHMuIikpOwpmb3IodmFyIGc9MTtnPD1kO2crKylpZih0aGlzLmhhcyhkLWcpKXtlPXRoaXMuZ2V0KGQtZyk7Zj1kLShnKzEpO2JyZWFrfWlmKGc+ZCl0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBSZWR1Y2VSaWdodCBvbiBMaXN0IHdpdGggbm8gZWxlbWVudHMuIikpO31mb3IodmFyIGg9ZjtoPj0wO2gtLSl0aGlzLmhhcyhoKSYmKGU9Yi5pbnZva2UoYSxlLHRoaXMuZ2V0KGgpLGgsdGhpcykpO3JldHVybiBlfSxyZXZlcnNlOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPUhkKHRoaXMpLGI9YS5sZW5ndGgtMSxjPTA7Yj49MDtiLS0sYysrKWEuaGFzT3duUHJvcGVydHkoYik/dGhpcy5zZXQoYyxhW2JdKTp0aGlzLnJlbW92ZShjKTtyZXR1cm4gdGhpc30sc2hpZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGlmdCgpfSxzbGljZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5sZW5ndGgoKTtiPT09dm9pZCAwJiYoYj0wKTtiPWI8MD9NYXRoLm1heChkK2IsMCk6TWF0aC5taW4oYixkKTtjPWM9PT0Kdm9pZCAwP2Q6YzwwP01hdGgubWF4KGQrYywwKTpNYXRoLm1pbihjLGQpO2M9TWF0aC5tYXgoYixjKTtmb3IodmFyIGU9W10sZj1iO2Y8YztmKyspZS5wdXNoKHRoaXMuZ2V0KGYpKTtyZXR1cm4gbmV3IEdkKGUpfSxzb21lOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXRoaXMubGVuZ3RoKCksZD0wO2Q8dGhpcy5sZW5ndGgoKSYmZDxjO2QrKylpZih0aGlzLmhhcyhkKSYmYi5pbnZva2UoYSx0aGlzLmdldChkKSxkLHRoaXMpKXJldHVybiEwO3JldHVybiExfSxzb3J0OmZ1bmN0aW9uKGEsYil7dmFyIGM9SGQodGhpcyk7Yj09PXZvaWQgMD9jLnNvcnQoKTpjLnNvcnQoZnVuY3Rpb24oZSxmKXtyZXR1cm4gTnVtYmVyKGIuaW52b2tlKGEsZSxmKSl9KTtmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyljLmhhc093blByb3BlcnR5KGQpP3RoaXMuc2V0KGQsY1tkXSk6dGhpcy5yZW1vdmUoZCk7cmV0dXJuIHRoaXN9LHNwbGljZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuc3BsaWNlLmFwcGx5KHRoaXMsCltiLGNdLmNvbmNhdCh3KE9hLmFwcGx5KDMsYXJndW1lbnRzKSkpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygpfSx1bnNoaWZ0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnVuc2hpZnQuYXBwbHkodGhpcyx3KE9hLmFwcGx5KDEsYXJndW1lbnRzKSkpfX07dmFyIFdkPXtjaGFyQXQ6MSxjb25jYXQ6MSxpbmRleE9mOjEsbGFzdEluZGV4T2Y6MSxtYXRjaDoxLHJlcGxhY2U6MSxzZWFyY2g6MSxzbGljZToxLHNwbGl0OjEsc3Vic3RyaW5nOjEsdG9Mb3dlckNhc2U6MSx0b0xvY2FsZUxvd2VyQ2FzZToxLHRvU3RyaW5nOjEsdG9VcHBlckNhc2U6MSx0b0xvY2FsZVVwcGVyQ2FzZToxLHRyaW06MX0sWGQ9bmV3IFRhKCJicmVhayIpLFlkPW5ldyBUYSgiY29udGludWUiKTtmdW5jdGlvbiBaZChhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpK3RoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gJGQoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKSYmdGhpcy5ldmFsdWF0ZShiKX0KZnVuY3Rpb24gYWUoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKTtpZighKGYgaW5zdGFuY2VvZiBHZCkpdGhyb3cgRXJyb3IoIkVycm9yOiBOb24tTGlzdCBhcmd1bWVudCBnaXZlbiB0byBBcHBseSBpbnN0cnVjdGlvbi4iKTtpZihkPT09bnVsbHx8ZD09PXZvaWQgMCl0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBDYW4ndCByZWFkIHByb3BlcnR5ICIrZSsiIG9mICIrZCsiLiIpKTt2YXIgZz10eXBlb2YgZD09PSJudW1iZXIiO2lmKHR5cGVvZiBkPT09ImJvb2xlYW4ifHxnKXtpZihlPT09InRvU3RyaW5nIil7aWYoZyYmZi5sZW5ndGgoKSl7dmFyIGg9VGQoZi5nZXQoMCkpO3RyeXtyZXR1cm4gZC50b1N0cmluZyhoKX1jYXRjaCh1KXt9fXJldHVybiBkLnRvU3RyaW5nKCl9dGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogIitkKyIuIitlKyIgaXMgbm90IGEgZnVuY3Rpb24uIikpO31pZih0eXBlb2YgZD09PQoic3RyaW5nIil7aWYoV2QuaGFzT3duUHJvcGVydHkoZSkpe3ZhciBsPVRkKGYsdm9pZCAwLDEpO3JldHVybiBVZChkW2VdLmFwcGx5KGQsbCksdGhpcy5UKX10aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiAiK2UrIiBpcyBub3QgYSBmdW5jdGlvbiIpKTt9aWYoZCBpbnN0YW5jZW9mIEdkKXtpZihkLmhhcyhlKSl7dmFyIG49ZC5nZXQoU3RyaW5nKGUpKTtpZihuIGluc3RhbmNlb2YgS2Qpe3ZhciBwPUhkKGYpO3JldHVybiBuLmFwcGx5KHRoaXMuVCxwKX10aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiAiK2UrIiBpcyBub3QgYSBmdW5jdGlvbiIpKTt9aWYoVmQuc3VwcG9ydGVkTWV0aG9kcy5pbmRleE9mKGUpPj0wKXt2YXIgcT1IZChmKTtyZXR1cm4gVmRbZV0uY2FsbC5hcHBseShWZFtlXSxbZCx0aGlzLlRdLmNvbmNhdCh3KHEpKSl9fWlmKGQgaW5zdGFuY2VvZiBLZHx8ZCBpbnN0YW5jZW9mIGtifHxkIGluc3RhbmNlb2YgU2Qpe2lmKGQuaGFzKGUpKXt2YXIgcj1kLmdldChlKTsKaWYociBpbnN0YW5jZW9mIEtkKXt2YXIgdD1IZChmKTtyZXR1cm4gci5hcHBseSh0aGlzLlQsdCl9dGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogIitlKyIgaXMgbm90IGEgZnVuY3Rpb24iKSk7fWlmKGU9PT0idG9TdHJpbmciKXJldHVybiBkIGluc3RhbmNlb2YgS2Q/ZC5nZXROYW1lKCk6ZC50b1N0cmluZygpO2lmKGU9PT0iaGFzT3duUHJvcGVydHkiKXJldHVybiBkLmhhcyhmLmdldCgwKSl9aWYoZCBpbnN0YW5jZW9mIFBkJiZlPT09InRvU3RyaW5nIilyZXR1cm4gZC50b1N0cmluZygpO3Rocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6IE9iamVjdCBoYXMgbm8gJyIrZSsiJyBwcm9wZXJ0eS4iKSk7fQpmdW5jdGlvbiBiZShhLGIpe2E9dGhpcy5ldmFsdWF0ZShhKTtpZih0eXBlb2YgYSE9PSJzdHJpbmciKXRocm93IEVycm9yKCJJbnZhbGlkIGtleSBuYW1lIGdpdmVuIGZvciBhc3NpZ25tZW50LiIpO3ZhciBjPXRoaXMuVDtpZighYy5oYXMoYSkpdGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYXNzaWduIHRvIHVuZGVmaW5lZCB2YWx1ZSAiK2IpO3ZhciBkPXRoaXMuZXZhbHVhdGUoYik7Yy5zZXQoYSxkKTtyZXR1cm4gZH1mdW5jdGlvbiBjZSgpe3ZhciBhPU9hLmFwcGx5KDAsYXJndW1lbnRzKSxiPXRoaXMuVC53YigpLGM9ZWIoYixhKTtpZihjIGluc3RhbmNlb2YgVGEpcmV0dXJuIGN9ZnVuY3Rpb24gZGUoKXtyZXR1cm4gWGR9ZnVuY3Rpb24gZWUoYSl7Zm9yKHZhciBiPXRoaXMuZXZhbHVhdGUoYSksYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD10aGlzLmV2YWx1YXRlKGJbY10pO2lmKGQgaW5zdGFuY2VvZiBUYSlyZXR1cm4gZH19CmZ1bmN0aW9uIGZlKCl7Zm9yKHZhciBhPXRoaXMuVCxiPTA7Yjxhcmd1bWVudHMubGVuZ3RoLTE7Yis9Mil7dmFyIGM9YXJndW1lbnRzW2JdO2lmKHR5cGVvZiBjPT09InN0cmluZyIpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYXJndW1lbnRzW2IrMV0pO2EuUWgoYyxkKX19fWZ1bmN0aW9uIGdlKCl7cmV0dXJuIFlkfWZ1bmN0aW9uIGhlKGEsYil7cmV0dXJuIG5ldyBUYShhLHRoaXMuZXZhbHVhdGUoYikpfWZ1bmN0aW9uIGllKGEsYil7dmFyIGM9T2EuYXBwbHkoMixhcmd1bWVudHMpLGQ7ZD1uZXcgR2Q7Zm9yKHZhciBlPXRoaXMuZXZhbHVhdGUoYiksZj0wO2Y8ZS5sZW5ndGg7ZisrKWQucHVzaChlW2ZdKTt2YXIgZz1bNTEsYSxkXS5jb25jYXQodyhjKSk7dGhpcy5ULmFkZChhLHRoaXMuZXZhbHVhdGUoZykpfWZ1bmN0aW9uIGplKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSkvdGhpcy5ldmFsdWF0ZShiKX0KZnVuY3Rpb24ga2UoYSxiKXt2YXIgYz10aGlzLmV2YWx1YXRlKGEpLGQ9dGhpcy5ldmFsdWF0ZShiKSxlPWMgaW5zdGFuY2VvZiBQZCxmPWQgaW5zdGFuY2VvZiBQZDtyZXR1cm4gZXx8Zj9lJiZmP2MuZ2V0VmFsdWUoKT09PWQuZ2V0VmFsdWUoKTohMTpjPT1kfWZ1bmN0aW9uIGxlKCl7Zm9yKHZhciBhLGI9MDtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKWE9dGhpcy5ldmFsdWF0ZShhcmd1bWVudHNbYl0pO3JldHVybiBhfWZ1bmN0aW9uIG1lKGEsYixjLGQpe2Zvcih2YXIgZT0wO2U8YigpO2UrKyl7dmFyIGY9YShjKGUpKSxnPWViKGYsZCk7aWYoZyBpbnN0YW5jZW9mIFRhKXtpZihnLnR5cGU9PT0iYnJlYWsiKWJyZWFrO2lmKGcudHlwZT09PSJyZXR1cm4iKXJldHVybiBnfX19CmZ1bmN0aW9uIG5lKGEsYixjKXtpZih0eXBlb2YgYj09PSJzdHJpbmciKXJldHVybiBtZShhLGZ1bmN0aW9uKCl7cmV0dXJuIGIubGVuZ3RofSxmdW5jdGlvbihmKXtyZXR1cm4gZn0sYyk7aWYoYiBpbnN0YW5jZW9mIGtifHxiIGluc3RhbmNlb2YgU2R8fGIgaW5zdGFuY2VvZiBHZHx8YiBpbnN0YW5jZW9mIEtkKXt2YXIgZD1iLkZhKCksZT1kLmxlbmd0aDtyZXR1cm4gbWUoYSxmdW5jdGlvbigpe3JldHVybiBlfSxmdW5jdGlvbihmKXtyZXR1cm4gZFtmXX0sYyl9fWZ1bmN0aW9uIG9lKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyksZz10aGlzLlQ7cmV0dXJuIG5lKGZ1bmN0aW9uKGgpe2cuc2V0KGQsaCk7cmV0dXJuIGd9LGUsZil9CmZ1bmN0aW9uIHBlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyksZz10aGlzLlQ7cmV0dXJuIG5lKGZ1bmN0aW9uKGgpe3ZhciBsPWcud2IoKTtsLlFoKGQsaCk7cmV0dXJuIGx9LGUsZil9ZnVuY3Rpb24gcWUoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKSxnPXRoaXMuVDtyZXR1cm4gbmUoZnVuY3Rpb24oaCl7dmFyIGw9Zy53YigpO2wuYWRkKGQsaCk7cmV0dXJuIGx9LGUsZil9ZnVuY3Rpb24gcmUoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKSxnPXRoaXMuVDtyZXR1cm4gc2UoZnVuY3Rpb24oaCl7Zy5zZXQoZCxoKTtyZXR1cm4gZ30sZSxmKX0KZnVuY3Rpb24gdGUoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKSxnPXRoaXMuVDtyZXR1cm4gc2UoZnVuY3Rpb24oaCl7dmFyIGw9Zy53YigpO2wuUWgoZCxoKTtyZXR1cm4gbH0sZSxmKX1mdW5jdGlvbiB1ZShhLGIsYyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYiksZj10aGlzLmV2YWx1YXRlKGMpLGc9dGhpcy5UO3JldHVybiBzZShmdW5jdGlvbihoKXt2YXIgbD1nLndiKCk7bC5hZGQoZCxoKTtyZXR1cm4gbH0sZSxmKX0KZnVuY3Rpb24gc2UoYSxiLGMpe2lmKHR5cGVvZiBiPT09InN0cmluZyIpcmV0dXJuIG1lKGEsZnVuY3Rpb24oKXtyZXR1cm4gYi5sZW5ndGh9LGZ1bmN0aW9uKGQpe3JldHVybiBiW2RdfSxjKTtpZihiIGluc3RhbmNlb2YgR2QpcmV0dXJuIG1lKGEsZnVuY3Rpb24oKXtyZXR1cm4gYi5sZW5ndGgoKX0sZnVuY3Rpb24oZCl7cmV0dXJuIGIuZ2V0KGQpfSxjKTt0aHJvdyBjYihFcnJvcigiVGhlIHZhbHVlIGlzIG5vdCBpdGVyYWJsZS4iKSk7fQpmdW5jdGlvbiB2ZShhLGIsYyxkKXtmdW5jdGlvbiBlKHEscil7Zm9yKHZhciB0PTA7dDxmLmxlbmd0aCgpO3QrKyl7dmFyIHU9Zi5nZXQodCk7ci5hZGQodSxxLmdldCh1KSl9fXZhciBmPXRoaXMuZXZhbHVhdGUoYSk7aWYoIShmIGluc3RhbmNlb2YgR2QpKXRocm93IEVycm9yKCJUeXBlRXJyb3I6IE5vbi1MaXN0IGFyZ3VtZW50IGdpdmVuIHRvIEZvckxldCBpbnN0cnVjdGlvbi4iKTt2YXIgZz10aGlzLlQsaD10aGlzLmV2YWx1YXRlKGQpLGw9Zy53YigpO2ZvcihlKGcsbCk7ZmIobCxiKTspe3ZhciBuPWViKGwsaCk7aWYobiBpbnN0YW5jZW9mIFRhKXtpZihuLnR5cGU9PT0iYnJlYWsiKWJyZWFrO2lmKG4udHlwZT09PSJyZXR1cm4iKXJldHVybiBufXZhciBwPWcud2IoKTtlKGwscCk7ZmIocCxjKTtsPXB9fQpmdW5jdGlvbiB3ZShhLGIpe3ZhciBjPU9hLmFwcGx5KDIsYXJndW1lbnRzKSxkPXRoaXMuVCxlPXRoaXMuZXZhbHVhdGUoYik7aWYoIShlIGluc3RhbmNlb2YgR2QpKXRocm93IEVycm9yKCJFcnJvcjogbm9uLUxpc3QgdmFsdWUgZ2l2ZW4gZm9yIEZuIGFyZ3VtZW50IG5hbWVzLiIpO3JldHVybiBuZXcgS2QoYSxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3ZhciBmPU9hLmFwcGx5KDAsYXJndW1lbnRzKSxnPWQud2IoKTtnLnhiKCk9PT12b2lkIDAmJmcudWUodGhpcy5ULnhiKCkpO2Zvcih2YXIgaD1bXSxsPTA7bDxmLmxlbmd0aDtsKyspe3ZhciBuPXRoaXMuZXZhbHVhdGUoZltsXSk7aFtsXT1ufWZvcih2YXIgcD1lLmdldCgibGVuZ3RoIikscT0wO3E8cDtxKyspcTxoLmxlbmd0aD9nLmFkZChlLmdldChxKSxoW3FdKTpnLmFkZChlLmdldChxKSx2b2lkIDApO2cuYWRkKCJhcmd1bWVudHMiLG5ldyBHZChoKSk7dmFyIHI9ZWIoZyxjKTtpZihyIGluc3RhbmNlb2YgVGEpcmV0dXJuIHIudHlwZT09PQoicmV0dXJuIj9yLmRhdGE6cn19KCkpfWZ1bmN0aW9uIHhlKGEpe3ZhciBiPXRoaXMuZXZhbHVhdGUoYSksYz10aGlzLlQ7aWYoeWUmJiFjLmhhcyhiKSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoYisiIGlzIG5vdCBkZWZpbmVkLiIpO3JldHVybiBjLmdldChiKX0KZnVuY3Rpb24gemUoYSxiKXt2YXIgYyxkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpO2lmKGQ9PT12b2lkIDB8fGQ9PT1udWxsKXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6IENhbm5vdCByZWFkIHByb3BlcnRpZXMgb2YgIitkKyIgKHJlYWRpbmcgJyIrZSsiJykiKSk7aWYoZCBpbnN0YW5jZW9mIGtifHxkIGluc3RhbmNlb2YgU2R8fGQgaW5zdGFuY2VvZiBHZHx8ZCBpbnN0YW5jZW9mIEtkKWM9ZC5nZXQoZSk7ZWxzZSBpZih0eXBlb2YgZD09PSJzdHJpbmciKWU9PT0ibGVuZ3RoIj9jPWQubGVuZ3RoOkZkKGUpJiYoYz1kW2VdKTtlbHNlIGlmKGQgaW5zdGFuY2VvZiBQZClyZXR1cm47cmV0dXJuIGN9ZnVuY3Rpb24gQWUoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKT50aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uIEJlKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSk+PXRoaXMuZXZhbHVhdGUoYil9CmZ1bmN0aW9uIENlKGEsYil7dmFyIGM9dGhpcy5ldmFsdWF0ZShhKSxkPXRoaXMuZXZhbHVhdGUoYik7YyBpbnN0YW5jZW9mIFBkJiYoYz1jLmdldFZhbHVlKCkpO2QgaW5zdGFuY2VvZiBQZCYmKGQ9ZC5nZXRWYWx1ZSgpKTtyZXR1cm4gYz09PWR9ZnVuY3Rpb24gRGUoYSxiKXtyZXR1cm4hQ2UuY2FsbCh0aGlzLGEsYil9ZnVuY3Rpb24gRWUoYSxiLGMpe3ZhciBkPVtdO3RoaXMuZXZhbHVhdGUoYSk/ZD10aGlzLmV2YWx1YXRlKGIpOmMmJihkPXRoaXMuZXZhbHVhdGUoYykpO3ZhciBlPWViKHRoaXMuVCxkKTtpZihlIGluc3RhbmNlb2YgVGEpcmV0dXJuIGV9dmFyIHllPSExOwpmdW5jdGlvbiBGZShhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpPHRoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gR2UoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKTw9dGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiBIZSgpe2Zvcih2YXIgYT1uZXcgR2QsYj0wO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuZXZhbHVhdGUoYXJndW1lbnRzW2JdKTthLnB1c2goYyl9cmV0dXJuIGF9ZnVuY3Rpb24gSWUoKXtmb3IodmFyIGE9bmV3IGtiLGI9MDtiPGFyZ3VtZW50cy5sZW5ndGgtMTtiKz0yKXt2YXIgYz1TdHJpbmcodGhpcy5ldmFsdWF0ZShhcmd1bWVudHNbYl0pKSxkPXRoaXMuZXZhbHVhdGUoYXJndW1lbnRzW2IrMV0pO2Euc2V0KGMsZCl9cmV0dXJuIGF9ZnVuY3Rpb24gSmUoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKSV0aGlzLmV2YWx1YXRlKGIpfQpmdW5jdGlvbiBLZShhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpKnRoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gTGUoYSl7cmV0dXJuLXRoaXMuZXZhbHVhdGUoYSl9ZnVuY3Rpb24gTWUoYSl7cmV0dXJuIXRoaXMuZXZhbHVhdGUoYSl9ZnVuY3Rpb24gTmUoYSxiKXtyZXR1cm4ha2UuY2FsbCh0aGlzLGEsYil9ZnVuY3Rpb24gT2UoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBQZShhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpfHx0aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uIFFlKGEsYil7dmFyIGM9dGhpcy5ldmFsdWF0ZShhKTt0aGlzLmV2YWx1YXRlKGIpO3JldHVybiBjfWZ1bmN0aW9uIFJlKGEpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpfWZ1bmN0aW9uIFNlKCl7cmV0dXJuIE9hLmFwcGx5KDAsYXJndW1lbnRzKX1mdW5jdGlvbiBUZShhKXtyZXR1cm4gbmV3IFRhKCJyZXR1cm4iLHRoaXMuZXZhbHVhdGUoYSkpfQpmdW5jdGlvbiBVZShhLGIsYyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYiksZj10aGlzLmV2YWx1YXRlKGMpO2lmKGQ9PT1udWxsfHxkPT09dm9pZCAwKXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6IENhbid0IHNldCBwcm9wZXJ0eSAiK2UrIiBvZiAiK2QrIi4iKSk7KGQgaW5zdGFuY2VvZiBLZHx8ZCBpbnN0YW5jZW9mIEdkfHxkIGluc3RhbmNlb2Yga2IpJiZkLnNldChTdHJpbmcoZSksZik7cmV0dXJuIGZ9ZnVuY3Rpb24gVmUoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKS10aGlzLmV2YWx1YXRlKGIpfQpmdW5jdGlvbiBXZShhLGIsYyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYiksZj10aGlzLmV2YWx1YXRlKGMpO2lmKCFBcnJheS5pc0FycmF5KGUpfHwhQXJyYXkuaXNBcnJheShmKSl0aHJvdyBFcnJvcigiRXJyb3I6IE1hbGZvcm1lZCBzd2l0Y2ggaW5zdHJ1Y3Rpb24uIik7Zm9yKHZhciBnLGg9ITEsbD0wO2w8ZS5sZW5ndGg7bCsrKWlmKGh8fGQ9PT10aGlzLmV2YWx1YXRlKGVbbF0pKWlmKGc9dGhpcy5ldmFsdWF0ZShmW2xdKSxnIGluc3RhbmNlb2YgVGEpe3ZhciBuPWcudHlwZTtpZihuPT09ImJyZWFrIilyZXR1cm47aWYobj09PSJyZXR1cm4ifHxuPT09ImNvbnRpbnVlIilyZXR1cm4gZ31lbHNlIGg9ITA7aWYoZi5sZW5ndGg9PT1lLmxlbmd0aCsxJiYoZz10aGlzLmV2YWx1YXRlKGZbZi5sZW5ndGgtMV0pLGcgaW5zdGFuY2VvZiBUYSYmKGcudHlwZT09PSJyZXR1cm4ifHxnLnR5cGU9PT0iY29udGludWUiKSkpcmV0dXJuIGd9CmZ1bmN0aW9uIFhlKGEsYixjKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKT90aGlzLmV2YWx1YXRlKGIpOnRoaXMuZXZhbHVhdGUoYyl9ZnVuY3Rpb24gWWUoYSl7dmFyIGI9dGhpcy5ldmFsdWF0ZShhKTtyZXR1cm4gYiBpbnN0YW5jZW9mIEtkPyJmdW5jdGlvbiI6dHlwZW9mIGJ9ZnVuY3Rpb24gWmUoKXtmb3IodmFyIGE9dGhpcy5ULGI9MDtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKXt2YXIgYz1hcmd1bWVudHNbYl07dHlwZW9mIGMhPT0ic3RyaW5nInx8YS5hZGQoYyx2b2lkIDApfX0KZnVuY3Rpb24gJGUoYSxiLGMsZCl7dmFyIGU9dGhpcy5ldmFsdWF0ZShkKTtpZih0aGlzLmV2YWx1YXRlKGMpKXt2YXIgZj1lYih0aGlzLlQsZSk7aWYoZiBpbnN0YW5jZW9mIFRhKXtpZihmLnR5cGU9PT0iYnJlYWsiKXJldHVybjtpZihmLnR5cGU9PT0icmV0dXJuIilyZXR1cm4gZn19Zm9yKDt0aGlzLmV2YWx1YXRlKGEpOyl7dmFyIGc9ZWIodGhpcy5ULGUpO2lmKGcgaW5zdGFuY2VvZiBUYSl7aWYoZy50eXBlPT09ImJyZWFrIilicmVhaztpZihnLnR5cGU9PT0icmV0dXJuIilyZXR1cm4gZ310aGlzLmV2YWx1YXRlKGIpfX1mdW5jdGlvbiBhZihhKXtyZXR1cm5+TnVtYmVyKHRoaXMuZXZhbHVhdGUoYSkpfWZ1bmN0aW9uIGJmKGEsYil7cmV0dXJuIE51bWJlcih0aGlzLmV2YWx1YXRlKGEpKTw8TnVtYmVyKHRoaXMuZXZhbHVhdGUoYikpfWZ1bmN0aW9uIGNmKGEsYil7cmV0dXJuIE51bWJlcih0aGlzLmV2YWx1YXRlKGEpKT4+TnVtYmVyKHRoaXMuZXZhbHVhdGUoYikpfQpmdW5jdGlvbiBkZihhLGIpe3JldHVybiBOdW1iZXIodGhpcy5ldmFsdWF0ZShhKSk+Pj5OdW1iZXIodGhpcy5ldmFsdWF0ZShiKSl9ZnVuY3Rpb24gZWYoYSxiKXtyZXR1cm4gTnVtYmVyKHRoaXMuZXZhbHVhdGUoYSkpJk51bWJlcih0aGlzLmV2YWx1YXRlKGIpKX1mdW5jdGlvbiBmZihhLGIpe3JldHVybiBOdW1iZXIodGhpcy5ldmFsdWF0ZShhKSleTnVtYmVyKHRoaXMuZXZhbHVhdGUoYikpfWZ1bmN0aW9uIGdmKGEsYil7cmV0dXJuIE51bWJlcih0aGlzLmV2YWx1YXRlKGEpKXxOdW1iZXIodGhpcy5ldmFsdWF0ZShiKSl9ZnVuY3Rpb24gaGYoKXt9CmZ1bmN0aW9uIGtmKGEsYixjKXt0cnl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShiKTtpZihkIGluc3RhbmNlb2YgVGEpcmV0dXJuIGR9Y2F0Y2goaCl7aWYoIShoIGluc3RhbmNlb2YgYmImJmguU24pKXRocm93IGg7dmFyIGU9dGhpcy5ULndiKCk7YSE9PSIiJiYoaCBpbnN0YW5jZW9mIGJiJiYoaD1oLnZvKSxlLmFkZChhLG5ldyBQZChoKSkpO3ZhciBmPXRoaXMuZXZhbHVhdGUoYyksZz1lYihlLGYpO2lmKGcgaW5zdGFuY2VvZiBUYSlyZXR1cm4gZ319ZnVuY3Rpb24gbGYoYSxiKXt2YXIgYyxkO3RyeXtkPXRoaXMuZXZhbHVhdGUoYSl9Y2F0Y2goZil7aWYoIShmIGluc3RhbmNlb2YgYmImJmYuU24pKXRocm93IGY7Yz1mfXZhciBlPXRoaXMuZXZhbHVhdGUoYik7aWYoZSBpbnN0YW5jZW9mIFRhKXJldHVybiBlO2lmKGMpdGhyb3cgYztpZihkIGluc3RhbmNlb2YgVGEpcmV0dXJuIGR9O3ZhciBuZj1mdW5jdGlvbigpe3RoaXMuSD1uZXcgZ2I7bWYodGhpcyl9O25mLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkgucmsoYSl9O3ZhciBtZj1mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbihjLGQpe3ZhciBlPW5ldyBMZChTdHJpbmcoYyksZCk7ZS5aYSgpO3ZhciBmPVN0cmluZyhjKTthLkguSC5zZXQoZixlKTtkYi5zZXQoZixlKX07YigibWFwIixJZSk7YigiYW5kIix0ZCk7YigiY29udGFpbnMiLHdkKTtiKCJlcXVhbHMiLHVkKTtiKCJvciIsdmQpO2IoInN0YXJ0c1dpdGgiLHhkKTtiKCJ2YXJpYWJsZSIseWQpfTtuZi5wcm90b3R5cGUuUWI9ZnVuY3Rpb24oYSl7dGhpcy5ILlFiKGEpfTt2YXIgcGY9ZnVuY3Rpb24oKXt0aGlzLks9ITE7dGhpcy5IPW5ldyBnYjtvZih0aGlzKTt0aGlzLks9ITB9O3BmLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKGEpe3JldHVybiBxZih0aGlzLkgucmsoYSkpfTt2YXIgcmY9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBxZihhLkguSnEoYixjKSl9O3BmLnByb3RvdHlwZS5aYT1mdW5jdGlvbigpe3RoaXMuSC5aYSgpfTsKdmFyIG9mPWZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKGMsZCl7dmFyIGU9U3RyaW5nKGMpLGY9bmV3IExkKGUsZCk7Zi5aYSgpO2EuSC5ILnNldChlLGYpO2RiLnNldChlLGYpfTtiKDAsWmQpO2IoMSwkZCk7YigyLGFlKTtiKDMsYmUpO2IoNTYsZWYpO2IoNTcsYmYpO2IoNTgsYWYpO2IoNTksZ2YpO2IoNjAsY2YpO2IoNjEsZGYpO2IoNjIsZmYpO2IoNTMsY2UpO2IoNCxkZSk7Yig1LGVlKTtiKDY4LGtmKTtiKDUyLGZlKTtiKDYsZ2UpO2IoNDksaGUpO2IoNyxIZSk7Yig4LEllKTtiKDksZWUpO2IoNTAsaWUpO2IoMTAsamUpO2IoMTIsa2UpO2IoMTMsbGUpO2IoNjcsbGYpO2IoNTEsd2UpO2IoNDcsb2UpO2IoNTQscGUpO2IoNTUscWUpO2IoNjMsdmUpO2IoNjQscmUpO2IoNjUsdGUpO2IoNjYsdWUpO2IoMTUseGUpO2IoMTYsemUpO2IoMTcsemUpO2IoMTgsQWUpO2IoMTksQmUpO2IoMjAsQ2UpO2IoMjEsRGUpO2IoMjIsRWUpO2IoMjMsRmUpO2IoMjQsR2UpO2IoMjUsSmUpO2IoMjYsCktlKTtiKDI3LExlKTtiKDI4LE1lKTtiKDI5LE5lKTtiKDQ1LE9lKTtiKDMwLFBlKTtiKDMyLFFlKTtiKDMzLFFlKTtiKDM0LFJlKTtiKDM1LFJlKTtiKDQ2LFNlKTtiKDM2LFRlKTtiKDQzLFVlKTtiKDM3LFZlKTtiKDM4LFdlKTtiKDM5LFhlKTtiKDQwLFllKTtiKDQ0LGhmKTtiKDQxLFplKTtiKDQyLCRlKX07cGYucHJvdG90eXBlLmplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSC5qZSgpfTtwZi5wcm90b3R5cGUuUWI9ZnVuY3Rpb24oYSl7dGhpcy5ILlFiKGEpfTtwZi5wcm90b3R5cGUuc2Q9ZnVuY3Rpb24oYSl7dGhpcy5ILnNkKGEpfTsKZnVuY3Rpb24gcWYoYSl7aWYoYSBpbnN0YW5jZW9mIFRhfHxhIGluc3RhbmNlb2YgS2R8fGEgaW5zdGFuY2VvZiBHZHx8YSBpbnN0YW5jZW9mIGtifHxhIGluc3RhbmNlb2YgU2R8fGEgaW5zdGFuY2VvZiBQZHx8YT09PW51bGx8fGE9PT12b2lkIDB8fHR5cGVvZiBhPT09InN0cmluZyJ8fHR5cGVvZiBhPT09Im51bWJlciJ8fHR5cGVvZiBhPT09ImJvb2xlYW4iKXJldHVybiBhfTt2YXIgc2Y9ZnVuY3Rpb24oYSl7dGhpcy5tZXNzYWdlPWF9O2Z1bmN0aW9uIHRmKGEpe2EucXY9ITA7cmV0dXJuIGF9O3ZhciB1Zj10ZihmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PT0ibnVtYmVyIn0pLHZmPXRmKGZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09PSJzdHJpbmcifSksd2Y9dGYoZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT09ImJvb2xlYW4ifSk7ZnVuY3Rpb24geGYoYSl7dmFyIGI9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW2FdO3JldHVybiBiPT09dm9pZCAwP25ldyBzZigiVmFsdWUgIithKyIgY2FuIG5vdCBiZSBlbmNvZGVkIGluIHdlYi1zYWZlIGJhc2U2NCBkaWN0aW9uYXJ5LiIpOmJ9O2Z1bmN0aW9uIHlmKGEpe3N3aXRjaChhKXtjYXNlIDE6cmV0dXJuIjEiO2Nhc2UgMjpjYXNlIDQ6cmV0dXJuIjAiO2RlZmF1bHQ6cmV0dXJuIi0ifX07dmFyIHpmPS9eWzEtOWEtekEtWl8tXVsxLTlhLWNdWzEtOWEtdl1cZCQvO2Z1bmN0aW9uIEFmKGEsYil7Zm9yKHZhciBjPSIiLGQ9ITA7YT43Oyl7dmFyIGU9YSYzMTthPj49NTtkP2Q9ITE6ZXw9MzI7Yz0iIit4ZihlKStjfWE8PD0yO2R8fChhfD0zMik7cmV0dXJuIGM9IiIreGYoYXxiKStjfWZ1bmN0aW9uIEJmKGEsYil7cmV0dXJuIGI9PT12b2lkIDB8fGI9PT0wPyIiOiIiK0FmKGEsMSkreGYoYil9CmZ1bmN0aW9uIENmKGEsYil7dmFyIGM7dmFyIGQ9YS5oaSxlPWEuYms7ZD09PXZvaWQgMD9jPSIiOihlfHwoZT0wKSxjPSIiK0FmKDEsMSkreGYoZDw8MnxlKSk7dmFyIGY9IjQiK2MrQmYoMixhLnFyKSxnLGg9YS5JbztnPWgmJnpmLnRlc3QoaCk/IiIrQWYoMywyKStoOiIiO3ZhciBsO3ZhciBuPWEuY3RpZDtpZihuJiZiKXt2YXIgcD1BZig1LDMpLHE9bi5zcGxpdCgiLSIpLHI9cVswXS50b1VwcGVyQ2FzZSgpO2lmKHIhPT0iR1RNIiYmciE9PSJPUFQiKWw9IiI7ZWxzZXt2YXIgdD1xWzFdO2w9IiIrcCt4ZigxK3QubGVuZ3RoKSsoYS5Mc3x8MCkrdH19ZWxzZSBsPSIiO3ZhciB1PWEuY2Fub25pY2FsSWQsdj1hLm1jLHg9YS56dix5PWYrZytCZig0LGEuRG8pK2wrQmYoNixhLkR0KSsodT8iIitBZig3LDMpK3hmKHUubGVuZ3RoKSt1OiIiKSsodj8iIitBZig4LDMpK3hmKHYubGVuZ3RoKSt2OiIiKSsoeD8iIitBZig5LDMpK3hmKHgubGVuZ3RoKSt4OiIiKSx6O3ZhciBDPWEuenI7Qz0KQz09PXZvaWQgMD97fTpDO2Zvcih2YXIgRD1bXSxJPW0oT2JqZWN0LmtleXMoQykpLEc9SS5uZXh0KCk7IUcuZG9uZTtHPUkubmV4dCgpKXt2YXIgTj1HLnZhbHVlO0RbTnVtYmVyKE4pXT1DW05dfWlmKEQubGVuZ3RoKXt2YXIgUz1BZigxMCwzKSxXO2lmKEQubGVuZ3RoPT09MClXPXhmKDApO2Vsc2V7Zm9yKHZhciBlYT1bXSxqYT0wLGZhPSExLHNhPTA7c2E8RC5sZW5ndGg7c2ErKyl7ZmE9ITA7dmFyIGRhPXNhJTY7RFtzYV0mJihqYXw9MTw8ZGEpO2RhPT09NSYmKGVhLnB1c2goeGYoamEpKSxqYT0wLGZhPSExKX1mYSYmZWEucHVzaCh4ZihqYSkpO1c9ZWEuam9pbigiIil9dmFyIG1hPVc7ej0iIitTK3hmKG1hLmxlbmd0aCkrbWF9ZWxzZSB6PSIiO3ZhciBQYT1hLlVzLEZhPWEubnQ7cmV0dXJuIHkreisoUGE/IiIrQWYoMTEsMykreGYoUGEubGVuZ3RoKStQYToiIikrKEZhPyIiK0FmKDEzLDMpK3hmKEZhLmxlbmd0aCkrRmE6IiIpK0JmKDE0LGEuRXQpK0JmKDE1LGEucnYpK0JmKDE2LAphLkF2KX07ZnVuY3Rpb24gRGYoYSl7Zm9yKHZhciBiPVtdLGM9MCxkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBlPWEuY2hhckNvZGVBdChkKTtlPDEyOD9iW2MrK109ZTooZTwyMDQ4P2JbYysrXT1lPj42fDE5MjooKGUmNjQ1MTIpPT01NTI5NiYmZCsxPGEubGVuZ3RoJiYoYS5jaGFyQ29kZUF0KGQrMSkmNjQ1MTIpPT01NjMyMD8oZT02NTUzNisoKGUmMTAyMyk8PDEwKSsoYS5jaGFyQ29kZUF0KCsrZCkmMTAyMyksYltjKytdPWU+PjE4fDI0MCxiW2MrK109ZT4+MTImNjN8MTI4KTpiW2MrK109ZT4+MTJ8MjI0LGJbYysrXT1lPj42JjYzfDEyOCksYltjKytdPWUmNjN8MTI4KX1yZXR1cm4gYn07ZnVuY3Rpb24gRWYoYSxiKXtmb3IodmFyIGM9cWIoYiksZD1uZXcgVWludDhBcnJheShjLmxlbmd0aCksZT0wO2U8Yy5sZW5ndGg7ZSsrKWRbZV09Yy5jaGFyQ29kZUF0KGUpO2lmKGQubGVuZ3RoIT09MzIpdGhyb3cgRXJyb3IoIktleSBpcyBub3QgMzIgYnl0ZXMuIik7cmV0dXJuIEZmKGEsZCl9ZnVuY3Rpb24gRmYoYSxiKXtpZihhPT09IiIpcmV0dXJuIiI7dmFyIGM9WmIoYSksZD1iLnNsaWNlKC0yKSxlPVtdLmNvbmNhdCh3KGQpLHcoYykpLm1hcChmdW5jdGlvbihnLGgpe3JldHVybiBnXmJbaCViLmxlbmd0aF19KSxmPW5ldyBVaW50OEFycmF5KFtdLmNvbmNhdCh3KGUpLHcoZCkpKTtyZXR1cm4gcGIoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsdyhmKSkpLnJlcGxhY2UoL1wuKyQvLCIiKX07dmFyIEdmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiKXtyZXR1cm57dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gYn19fXJldHVybntjcDphKCJjb25zZW50IiksWms6YSgiY29udmVydF9jYXNlX3RvIiksYWw6YSgiY29udmVydF9mYWxzZV90byIpLGJsOmEoImNvbnZlcnRfbnVsbF90byIpLGVwOmEoImNvbnZlcnRfdG9fYm9vbGVhbiIpLGFoOmEoImNvbnZlcnRfdG9fbnVtYmVyIiksZmw6YSgiY29udmVydF90cnVlX3RvIiksaWw6YSgiY29udmVydF91bmRlZmluZWRfdG8iKSxZdDphKCJkZWJ1Z19tb2RlX21ldGFkYXRhIiksWWI6YSgiZnVuY3Rpb24iKSxSbTphKCJpbnN0YW5jZV9uYW1lIiksTnE6YSgibGl2ZV9vbmx5IiksT3E6YSgibWFsd2FyZV9kaXNhYmxlZCIpLE1FVEFEQVRBOmEoIm1ldGFkYXRhIiksUnE6YSgib3JpZ2luYWxfYWN0aXZpdHlfaWQiKSxUdTphKCJvcmlnaW5hbF92ZW5kb3JfdGVtcGxhdGVfaWQiKSxTdTphKCJvbmNlX29uX2xvYWQiKSxRcTphKCJvbmNlX3Blcl9ldmVudCIpLAprbjphKCJvbmNlX3Blcl9sb2FkIiksVnU6YSgicHJpb3JpdHlfb3ZlcnJpZGUiKSxZdTphKCJyZXNwZWN0ZWRfY29uc2VudF90eXBlcyIpLHRuOmEoInNldHVwX3RhZ3MiKSx5ajphKCJ0YWdfaWQiKSxEbjphKCJ0ZWFyZG93bl90YWdzIikscGw6YSgiZGlzYWJsZWRfaW5fZ29vZ2xlX21vZGUiKSxGcTphKCJnZW5lcmF0ZWRfdGFnZ2luZ19tZXRhZGF0YSIpfX0oKTtmdW5jdGlvbiBIZihhLGIpe3ZhciBjPXt9O2NbR2YuWWJdPSJfXyIrYTtmb3IodmFyIGQgaW4gYiliLmhhc093blByb3BlcnR5KGQpJiYoY1sidnRwXyIrZF09YltkXSk7cmV0dXJuIGN9O2Z1bmN0aW9uIElmKGEsYil7Yj1iPT09dm9pZCAwPyExOmI7dmFyIGMsZDtyZXR1cm4oKGM9ZGF0YSk9PW51bGw/MDooZD1jLmJsb2IpPT1udWxsPzA6ZC5oYXNPd25Qcm9wZXJ0eShhKSk/ISFkYXRhLmJsb2JbYV06Yn1mdW5jdGlvbiBFKGEpe3ZhciBiO2I9Yj09PXZvaWQgMD8iIjpiO3ZhciBjLGQ7cmV0dXJuKChjPWRhdGEpPT1udWxsPzA6KGQ9Yy5ibG9iKT09bnVsbD8wOmQuaGFzT3duUHJvcGVydHkoYSkpP1N0cmluZyhkYXRhLmJsb2JbYV0pOmJ9ZnVuY3Rpb24gSmYoYSl7dmFyIGIsYztyZXR1cm4oKGI9ZGF0YSk9PW51bGw/MDooYz1iLmJsb2IpPT1udWxsPzA6Yy5oYXNPd25Qcm9wZXJ0eShhKSk/TnVtYmVyKGRhdGEuYmxvYlthXSk6MH1mdW5jdGlvbiBLZihhKXt2YXIgYjtiPWI9PT12b2lkIDA/W106Yjt2YXIgYyxkLGU9KGM9ZGF0YSk9PW51bGw/dm9pZCAwOihkPWMuYmxvYik9PW51bGw/dm9pZCAwOmRbYV07cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpifQpmdW5jdGlvbiBMZihhKXt2YXIgYjtiPWI9PT12b2lkIDA/IiI6Yjt2YXIgYz1NZig0Nik7cmV0dXJuIGMmJihjPT1udWxsPzA6Yy5oYXNPd25Qcm9wZXJ0eShhKSk/U3RyaW5nKGNbYV0pOmJ9ZnVuY3Rpb24gTmYoYSxiKXt2YXIgYz1NZig0Nik7cmV0dXJuIGMmJihjPT1udWxsPzA6Yy5oYXNPd25Qcm9wZXJ0eShhKSk/TnVtYmVyKGNbYV0pOmJ9ZnVuY3Rpb24gTWYoYSl7dmFyIGIsYztyZXR1cm4oYj1kYXRhKT09bnVsbD92b2lkIDA6KGM9Yi5ibG9iKT09bnVsbD92b2lkIDA6Y1thXX07dmFyIE9mPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtkPUVycm9yLmNhbGwodGhpcyxjKTt0aGlzLm1lc3NhZ2U9ZC5tZXNzYWdlOyJzdGFjayJpbiBkJiYodGhpcy5zdGFjaz1kLnN0YWNrKTt0aGlzLnBlcm1pc3Npb25JZD1hO3RoaXMucGFyYW1ldGVycz1iO3RoaXMubmFtZT0iUGVybWlzc2lvbkVycm9yIn07d2EoT2YsRXJyb3IpO09mLnByb3RvdHlwZS5nZXRNZXNzYWdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZX07ZnVuY3Rpb24gUGYoYSxiKXtpZihBcnJheS5pc0FycmF5KGEpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiY29udGV4dCIse3ZhbHVlOntsaW5lOmJbMF19fSk7Zm9yKHZhciBjPTE7YzxhLmxlbmd0aDtjKyspUGYoYVtjXSxiW2NdKX19O2Z1bmN0aW9uIFFmKCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7dmFyIGM7dmFyIGQ9UmY7YSBpbnN0YW5jZW9mIGJiPyhhLkg9ZCxjPWEpOmM9bmV3IGJiKGEsZCk7dmFyIGU9YztiJiZlLksucHVzaChiKTt0aHJvdyBlO319ZnVuY3Rpb24gUmYoYSl7aWYoIWEubGVuZ3RoKXJldHVybiBhO2EucHVzaCh7aWQ6Im1haW4iLGxpbmU6MH0pO2Zvcih2YXIgYj1hLmxlbmd0aC0xO2I+MDtiLS0pQWIoYVtiXS5pZCkmJmEuc3BsaWNlKGIrKywxKTtmb3IodmFyIGM9YS5sZW5ndGgtMTtjPjA7Yy0tKWFbY10ubGluZT1hW2MtMV0ubGluZTthLnNwbGljZSgwLDEpO3JldHVybiBhfTt2YXIgU2Y9UmVnRXhwKCJbXjAtOVxcListXSIsImciKSxUZj1SZWdFeHAoIlteMC05XFwsKy1dIiwiZyIpLFVmPVJlZ0V4cCgiW14wLTkrLV0iLCJnIik7CmZ1bmN0aW9uIFZmKGEsYil7aWYodHlwZW9mIGE9PT0ibnVtYmVyIilyZXR1cm4gYTt2YXIgYz1TdHJpbmcoYSksZDtpZihiPT09IkFVVE9NQVRJQyIpe3ZhciBlPShjLm1hdGNoKC9cLi9nKXx8W10pLmxlbmd0aCxmPShjLm1hdGNoKC8sL2cpfHxbXSkubGVuZ3RoLGc9Ik5PTkUiO2lmKGU+MCYmZj4wKXt2YXIgaD1jLmxhc3RJbmRleE9mKCIuIik+Yy5sYXN0SW5kZXhPZigiLCIpO2gmJmU9PT0xP2c9IlBFUklPRCI6aHx8ZiE9PTF8fChnPSJDT01NQSIpfWVsc2UgZT09PTE/Zz0oYy5zcGxpdCgiLiIpWzFdLm1hdGNoKC9bMC05XS9nKXx8W10pLmxlbmd0aCE9PTM/IlBFUklPRCI6Ik5PTkUiOmY9PT0xJiYoZz0oYy5zcGxpdCgiLCIpWzFdLm1hdGNoKC9bMC05XS9nKXx8W10pLmxlbmd0aCE9PTM/IkNPTU1BIjoiTk9ORSIpO2Q9Z31lbHNlIGQ9Yj09PSJDT01NQSI/IkNPTU1BIjoiUEVSSU9EIjt2YXIgbCxuO2Q9PT0iUEVSSU9EIj8obD0iLiIsbj1TZik6ZD09PSJDT01NQSI/KGw9IiwiLApuPVRmKToobD0iIixuPVVmKTt2YXIgcD1jLnJlcGxhY2UobiwiIik7aWYobCE9PSIiJiZwLnNwbGl0KGwpLmxlbmd0aD4yKXJldHVybiBhO3ZhciBxPXAucmVwbGFjZSgvLC9nLCIuIik7aWYocT09PSIiKXJldHVybiBhO3ZhciByPU51bWJlcihxKTtyZXR1cm4gaXNOYU4ocik/YTpyfTt2YXIgV2Y9W10sWGY9e307ZnVuY3Rpb24gWWYoYSl7cmV0dXJuIFdmW2FdPT09dm9pZCAwPyExOldmW2FdfTt2YXIgWmY9ZnVuY3Rpb24oKXt0aGlzLkg9e319LCRmPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDsoZD1hLkgpW2JdIT1udWxsfHwoZFtiXT1bXSk7YS5IW2JdLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gYy5hcHBseShudWxsLHcoT2EuYXBwbHkoMCxhcmd1bWVudHMpKSl9KX07ZnVuY3Rpb24gYWcoYSxiLGMsZCl7aWYoYSlmb3IodmFyIGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGY9dm9pZCAwLGc9IkEgcG9saWN5IGZ1bmN0aW9uIGRlbmllZCB0aGUgcGVybWlzc2lvbiByZXF1ZXN0Ijt0cnl7Zj1hW2VdKGIsYyxkKSxnKz0iLiJ9Y2F0Y2goaCl7Zz10eXBlb2YgaD09PSJzdHJpbmciP2crKCI6ICIraCk6aCBpbnN0YW5jZW9mIEVycm9yP2crKCI6ICIraC5tZXNzYWdlKTpnKyIuIn1pZighZil0aHJvdyBuZXcgT2YoYyxkLGcpO319CmZ1bmN0aW9uIGJnKGEsYil7dmFyIGM9Y2coZGcuSCxiLGZ1bmN0aW9uKCl7cmV0dXJue319KTt0cnl7cmV0dXJuIGMoYSksITB9Y2F0Y2goZCl7cmV0dXJuITF9fWZ1bmN0aW9uIGNnKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7aWYoZCl7dmFyIGU9YS5IW2RdLGY9YS5ILmFsbDtpZihlfHxmKXt2YXIgZz1jLmFwcGx5KHZvaWQgMCxbZF0uY29uY2F0KHcoT2EuYXBwbHkoMSxhcmd1bWVudHMpKSkpO2FnKGUsYixkLGcpO2FnKGYsYixkLGcpfX19fTt2YXIgZ2c9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXM7dGhpcy5LPXt9O3RoaXMuSD1uZXcgWmY7dmFyIGU9e30sZj17fSxnPWNnKHRoaXMuSCxhLGZ1bmN0aW9uKGgpe3JldHVybiBoJiZlW2hdP2VbaF0uYXBwbHkodm9pZCAwLFtoXS5jb25jYXQodyhPYS5hcHBseSgxLGFyZ3VtZW50cykpKSk6e319KTtHYihiLGZ1bmN0aW9uKGgsbCl7ZnVuY3Rpb24gbihxKXt2YXIgcj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7aWYoIXBbcV0pdGhyb3cgZWcocSx7fSwiVGhlIHJlcXVlc3RlZCBhZGRpdGlvbmFsIHBlcm1pc3Npb24gIitxKyIgaXMgbm90IGNvbmZpZ3VyZWQuIik7Zy5hcHBseShudWxsLFtxXS5jb25jYXQodyhyKSkpfXZhciBwPXt9O0diKGwsZnVuY3Rpb24ocSxyKXt2YXIgdD1mZyhxLHIsYyk7cFtxXT10LmFzc2VydDtlW3FdfHwoZVtxXT10LmFhKTt0Lk9uJiYhZltxXSYmKGZbcV09dC5Pbil9KTtkLktbaF09ZnVuY3Rpb24ocSxyKXt2YXIgdD1wW3FdO2lmKCF0KXRocm93IGVnKHEsCnt9LCJUaGUgcmVxdWVzdGVkIHBlcm1pc3Npb24gIitxKyIgaXMgbm90IGNvbmZpZ3VyZWQuIik7dmFyIHU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3QuYXBwbHkodm9pZCAwLHUpO2cuYXBwbHkodm9pZCAwLHUpO3ZhciB2PWZbcV07diYmdi5hcHBseShudWxsLFtuXS5jb25jYXQodyh1LnNsaWNlKDEpKSkpfX0pfSxoZz1mdW5jdGlvbihhKXtyZXR1cm4gZGcuS1thXXx8ZnVuY3Rpb24oKXt9fTsKZnVuY3Rpb24gZmcoYSxiLGMpe3RyeXt2YXIgZD1jWyJfXyIrYV07aWYoIWQpdGhyb3cgRXJyb3IoIk5vIGZ1bmN0aW9uIGZvdW5kIGZvciBwZXJtaXNzaW9uOiAiK2ErIi4iKTt2YXIgZT1IZihhLGIpO2UudnRwX3Blcm1pc3Npb25OYW1lPWE7ZS52dHBfY3JlYXRlUGVybWlzc2lvbkVycm9yPWVnO2RlbGV0ZSBlW0dmLlliXTtyZXR1cm4gZChlKX1jYXRjaChmKXtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGcpe3Rocm93IG5ldyBPZihnLHt9LCJQZXJtaXNzaW9uICIrZysiIGlzIHVua25vd24uIik7fSxhYTpmdW5jdGlvbigpe3Rocm93IG5ldyBPZihhLHt9LCJQZXJtaXNzaW9uICIrYSsiIGlzIHVua25vd24uIik7fX19fWZ1bmN0aW9uIGVnKGEsYixjKXtyZXR1cm4gbmV3IE9mKGEsYixjKX07dmFyIGlnPUUoNSksamc9RSgyMCksa2c9RSgxKSxsZz0hMTt2YXIgbWc9e307bWcuUG89SWYoMjkpO21nLktyPUlmKDI4KTtmdW5jdGlvbiBuZyhhKXt2YXIgYj0xLGMsZCxlO2lmKGEpZm9yKGI9MCxkPWEubGVuZ3RoLTE7ZD49MDtkLS0pZT1hLmNoYXJDb2RlQXQoZCksYj0oYjw8NiYyNjg0MzU0NTUpK2UrKGU8PDE0KSxjPWImMjY2MzM4MzA0LGI9YyE9PTA/Yl5jPj4yMTpiO3JldHVybiBifTt2YXIgb2c9ZnVuY3Rpb24oYSl7dGhpcy5jYWNoZT1hfTtvZy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3ZhciBiPW5nKGEpLGM9dGhpcy5jYWNoZS5nZXQoYik7aWYoIWMpcmV0dXJue3Byb21pc2U6dm9pZCAwLEtqOjB9O2lmKERhdGUubm93KCk+PWMudGltZXN0YW1wKzlFNSlyZXR1cm4gdGhpcy5jYWNoZS5kZWxldGUoYikse3Byb21pc2U6dm9pZCAwLEtqOjN9O3ZhciBkPWMucmVzb2x2ZWRWYWx1ZT8yOjE7cmV0dXJue3Byb21pc2U6Yy5yZXNvbHZlZFZhbHVlP1Byb21pc2UucmVzb2x2ZShjLnJlc29sdmVkVmFsdWUpOmMucHJvbWlzZSxLajpkfX07b2cucHJvdG90eXBlLnNldD1mdW5jdGlvbihhLGIpe3ZhciBjPXtwcm9taXNlOmIscmVzb2x2ZWRWYWx1ZTp2b2lkIDAsdGltZXN0YW1wOkRhdGUubm93KCl9O3RoaXMuY2FjaGUuc2V0KG5nKGEpLGMpO2IudGhlbihmdW5jdGlvbihkKXtjLnJlc29sdmVkVmFsdWU9ZH0pfTtmdW5jdGlvbiBwZyhhKXtzd2l0Y2goYSl7Y2FzZSAwOmJyZWFrO2Nhc2UgOTpyZXR1cm4iZTQiO2Nhc2UgNjpyZXR1cm4iZTUiO2Nhc2UgMTQ6cmV0dXJuImU2IjtkZWZhdWx0OnJldHVybiJlNyJ9fTt2YXIgRj17RDp7WGE6ImFkX3BlcnNvbmFsaXphdGlvbiIsa2E6ImFkX3N0b3JhZ2UiLG1hOiJhZF91c2VyX2RhdGEiLHJhOiJhbmFseXRpY3Nfc3RvcmFnZSIsbmM6InJlZ2lvbiIsc2E6ImNvbnNlbnRfdXBkYXRlZCIsWWc6IndhaXRfZm9yX3VwZGF0ZSIsZWg6ImVuZHBvaW50X3R5cGUiLHFwOiJhcHBfcmVtb3ZlIixycDoiYXBwX3N0b3JlX3JlZnVuZCIsdHA6ImFwcF9zdG9yZV9zdWJzY3JpcHRpb25fY2FuY2VsIix1cDoiYXBwX3N0b3JlX3N1YnNjcmlwdGlvbl9jb252ZXJ0Iix2cDoiYXBwX3N0b3JlX3N1YnNjcmlwdGlvbl9yZW5ldyIsd3A6ImNvbnNlbnRfdXBkYXRlIix4cDoiY29udmVyc2lvbiIsdmw6ImFkZF9wYXltZW50X2luZm8iLHdsOiJhZGRfc2hpcHBpbmdfaW5mbyIseGU6ImFkZF90b19jYXJ0Iix5ZToicmVtb3ZlX2Zyb21fY2FydCIseGw6InZpZXdfY2FydCIsQWQ6ImJlZ2luX2NoZWNrb3V0IixldToiZ2VuZXJhdGVfbGVhZCIsemU6InNlbGVjdF9pdGVtIixvYzoidmlld19pdGVtX2xpc3QiLApRYzoic2VsZWN0X3Byb21vdGlvbiIscWM6InZpZXdfcHJvbW90aW9uIixJYjoicHVyY2hhc2UiLEFlOiJyZWZ1bmQiLHJjOiJ2aWV3X2l0ZW0iLHlsOiJhZGRfdG9fd2lzaGxpc3QiLHlwOiJleGNlcHRpb24iLHpwOiJmaXJzdF9vcGVuIixBcDoiZmlyc3RfdmlzaXQiLHdhOiJndGFnLmNvbmZpZyIsSmI6Imd0YWcuZ2V0IixCcDoiaW5fYXBwX3B1cmNoYXNlIixzYzoicGFnZV92aWV3IixDcDoic2NyZWVuX3ZpZXciLERwOiJzZXNzaW9uX3N0YXJ0IixFcDoic291cmNlX3VwZGF0ZSIsRnA6InRpbWluZ19jb21wbGV0ZSIsR3A6InRyYWNrX3NvY2lhbCIseWY6InVzZXJfZW5nYWdlbWVudCIsSHA6InVzZXJfaWRfdXBkYXRlIixmaDoiYnJhaWRfbGlua19kZWNvcmF0aW9uX3NvdXJjZSIsZ2g6ImJyYWlkX3N0b3JhZ2Vfc291cmNlIixCZDoiZ2NsaWRfbGlua19kZWNvcmF0aW9uX3NvdXJjZSIsQ2Q6ImdjbGlkX3N0b3JhZ2Vfc291cmNlIixTYjoiZ2NsZ2IiLGxiOiJnY2xpZCIsemw6ImdjbGlkX2xlbiIsCkJlOiJnY2xncyIsQ2U6ImdjbGxwIixEZToiZ2Nsc3QiLG1iOiJhZHNfZGF0YV9yZWRhY3Rpb24iLHpmOiJnYWRfc291cmNlIixBZjoiZ2FkX3NvdXJjZV9zcmMiLERkOiJnY2xpZF91cmwiLEFsOiJnY2xzcmMiLEJmOiJnYnJhaWQiLEVlOiJ3YnJhaWQiLFJjOiJhbGxvd19hZF9wZXJzb25hbGl6YXRpb25fc2lnbmFscyIscmk6ImFsbG93X2N1c3RvbV9zY3JpcHRzIixoaDoiYWxsb3dfZGlzcGxheV9mZWF0dXJlcyIsc2k6ImFsbG93X2VuaGFuY2VkX2NvbnZlcnNpb25zIixTYzoiYWxsb3dfZ29vZ2xlX3NpZ25hbHMiLHVpOiJhbGxvd19pbnRlcmVzdF9ncm91cHMiLElwOiJhcHBfaWQiLEpwOiJhcHBfaW5zdGFsbGVyX2lkIixLcDoiYXBwX25hbWUiLExwOiJhcHBfdmVyc2lvbiIsRWQ6ImF1aWQiLGZ1OiJhdXRvX2RldGVjdGlvbl9lbmFibGVkIixCbDoiYXV0b19ldmVudCIsQ2w6ImF3X3JlbWFya2V0aW5nIixpaDoiYXdfcmVtYXJrZXRpbmdfb25seSIsQ2Y6ImRpc2NvdW50IixEZjoiYXdfZmVlZF9jb3VudHJ5IiwKRWY6ImF3X2ZlZWRfbGFuZ3VhZ2UiLEhhOiJpdGVtcyIsRmY6ImF3X21lcmNoYW50X2lkIix3aToiYXdfYmFza2V0X3R5cGUiLEdmOiJjYW1wYWlnbl9jb250ZW50IixIZjoiY2FtcGFpZ25faWQiLElmOiJjYW1wYWlnbl9tZWRpdW0iLEpmOiJjYW1wYWlnbl9uYW1lIixLZjoiY2FtcGFpZ24iLExmOiJjYW1wYWlnbl9zb3VyY2UiLE1mOiJjYW1wYWlnbl90ZXJtIixLYjoiY2xpZW50X2lkIixEbDoicm5kIix4aToiY29uc2VudF91cGRhdGVfdHlwZSIsTXA6ImNvbnRlbnRfZ3JvdXAiLE5wOiJjb250ZW50X3R5cGUiLEZkOiJjb252ZXJzaW9uX2Nvb2tpZV9wcmVmaXgiLHlpOiJjb252ZXJzaW9uX2lkIix1YzoiY29udmVyc2lvbl9saW5rZXIiLEhkOiJjb252ZXJzaW9uX2xpbmtlcl9kaXNhYmxlZCIsRmU6ImNvbnZlcnNpb25fYXBpIix6aToiXyZyY2IiLGpoOiJjb29raWVfZGVwcmVjYXRpb24iLExiOiJjb29raWVfZG9tYWluIixDYjoiY29va2llX2V4cGlyZXMiLFRiOiJjb29raWVfZmxhZ3MiLApJZDoiY29va2llX25hbWUiLHZjOiJjb29raWVfcGF0aCIsbmI6ImNvb2tpZV9wcmVmaXgiLEpkOiJjb29raWVfdXBkYXRlIixUYzoiY291bnRyeSIsZWI6ImN1cnJlbmN5IixHZToiY3VzdG9tZXJfbGlmZXRpbWVfdmFsdWUiLGtoOiJjdXN0b21lcl90eXBlIixIZToiY3VzdG9tX21hcCIsQWk6ImdjbGRjX2xpbmtfZGVjb3JhdGlvbl9zb3VyY2UiLEJpOiJnY2xkY19zdG9yYWdlX3NvdXJjZSIsTmY6ImdjbGRjIixLZDoiZGNsaWQiLEVsOiJkZWJ1Z19tb2RlIixPYToiZGV2ZWxvcGVyX2lkIixPcDoiZGlzYWJsZV9tZXJjaGFudF9yZXBvcnRlZF9wdXJjaGFzZXMiLFVjOiJkY19jdXN0b21fcGFyYW1zIixQcDoiZGNfbmF0dXJhbF9zZWFyY2giLFFwOiJkeW5hbWljX2V2ZW50X3NldHRpbmdzIixGbDoiYWZmaWxpYXRpb24iLG1oOiJjaGVja291dF9vcHRpb24iLENpOiJjaGVja291dF9zdGVwIixHbDoiY291cG9uIixPZjoiaXRlbV9saXN0X25hbWUiLERpOiJsaXN0X25hbWUiLFJwOiJwcm9tb3Rpb25zIiwKTGQ6InNoaXBwaW5nIixIbDoidGF4IixuaDoiZW5nYWdlbWVudF90aW1lX21zZWMiLG9oOiJlbmhhbmNlZF9jbGllbnRfaWQiLFNwOiJlbmhhbmNlZF9jb252ZXJzaW9ucyIsZ3U6ImVuaGFuY2VkX2NvbnZlcnNpb25zX2F1dG9tYXRpY19zZXR0aW5ncyIsSWU6ImVzdGltYXRlZF9kZWxpdmVyeV9kYXRlIixQZjoiZXZlbnRfY2FsbGJhY2siLFRwOiJldmVudF9jYXRlZ29yeSIsVmM6ImV2ZW50X2RldmVsb3Blcl9pZF9zdHJpbmciLE1kOiJldmVudF9pZCIsRWk6Il9ldmVudF9qb2luX2lkIixVcDoiZXZlbnRfbGFiZWwiLFViOiJldmVudCIsSWw6Il8mYWUiLEZpOiJldmVudF9zZXR0aW5ncyIscGg6ImV2ZW50X3RpbWVvdXQiLFZwOiJkZXNjcmlwdGlvbiIsV3A6ImZhdGFsIixYcDoiZXhwZXJpbWVudHMiLE5kOiJleHRfY2xpZW50X2lkIixHaToiZmlyZWJhc2VfaWQiLFFmOiJmaXJzdF9wYXJ0eV9jb2xsZWN0aW9uIixSZjoiX3hfMjAiLFZiOiJfeF8xOSIsWXA6ImZsaWdodF9lcnJvcl9jb2RlIiwKWnA6ImZsaWdodF9lcnJvcl9tZXNzYWdlIixIaToiZmxfYWN0aXZpdHlfY2F0ZWdvcnkiLElpOiJmbF9hY3Rpdml0eV9ncm91cCIscWg6ImZsX2FkdmVydGlzZXJfaWQiLEppOiJtYXRjaF9pZCIsSmw6ImZsX3JhbmRvbV9udW1iZXIiLEtsOiJ0cmFuIixMbDoidSIscmg6ImdhY19nY2xpZCIsSmU6ImdhY193YnJhaWQiLE1sOiJnYWNfd2JyYWlkX211bHRpcGxlX2NvbnZlcnNpb25zIixhcToiZ2FfcmVzdHJpY3RfZG9tYWluIixObDoiZ2FfdGVtcF9jbGllbnRfaWQiLGJxOiJnYV90ZW1wX2VjaWQiLEtlOiJnZHByX2FwcGxpZXMiLHNoOiJfZ3RfbWV0YWRhdGEiLE9sOiJnZW9fZ3JhbnVsYXJpdHkiLFNmOiJ2YWx1ZV9jYWxsYmFjayIsVGY6InZhbHVlX2tleSIsVGE6Imdvb2dsZV9hbmFseXNpc19wYXJhbXMiLExlOiJfZ29vZ2xlX25nIixjcToiX29ubyIsVWY6Imdvb2dsZV9zaWduYWxzIixmcToiZ29vZ2xlX3RsZCIsdGg6ImdwcF9zaWQiLHVoOiJncHBfc3RyaW5nIixPZDoiZ3JvdXBzIiwKUGw6ImdzYV9leHBlcmltZW50X2lkIixWZjoiZ3RhZ19ldmVudF9mZWF0dXJlX3VzYWdlIixRbDoiZ3RtX3VwIixNZToiaWZyYW1lX3N0YXRlIixXZjoiaWdub3JlX3JlZmVycmVyIixSbDoiaW50ZXJuYWxfdHJhZmZpY19yZXN1bHRzIixTbDoiX2lzX2ZwbSIsWWM6ImlzX2xlZ2FjeV9jb252ZXJ0ZWQiLFpjOiJpc19sZWdhY3lfbG9hZGVkIixLaToiaXNfcGFzc3Rocm91Z2giLFBkOiJfbHBzIix0YjoibGFuZ3VhZ2UiLExpOiJsZWdhY3lfZGV2ZWxvcGVyX2lkX3N0cmluZyIsRGI6ImxpbmtlciIsWGY6ImFjY2VwdF9pbmNvbWluZyIsd2M6ImRlY29yYXRlX2Zvcm1zIixBYToiZG9tYWlucyIsYWQ6InVybF9wb3NpdGlvbiIsUWQ6Im1lcmNoYW50X2ZlZWRfbGFiZWwiLFJkOiJtZXJjaGFudF9mZWVkX2xhbmd1YWdlIixTZDoibWVyY2hhbnRfaWQiLFRsOiJtZXRob2QiLGdxOiJuYW1lIixVbDoibmF2aWdhdGlvbl90eXBlIixOZToibmV3X2N1c3RvbWVyIixNaToibm9uX2ludGVyYWN0aW9uIiwKaHE6Im9wdGltaXplX2lkIixWbDoicGFnZV9ob3N0bmFtZSIsWWY6InBhZ2VfcGF0aCIsVWE6InBhZ2VfcmVmZXJyZXIiLE1iOiJwYWdlX3RpdGxlIixpcToicGFzc2VuZ2VycyIsV2w6InBob25lX2NvbnZlcnNpb25fY2FsbGJhY2siLGpxOiJwaG9uZV9jb252ZXJzaW9uX2NvdW50cnlfY29kZSIsWGw6InBob25lX2NvbnZlcnNpb25fY3NzX2NsYXNzIixrcToicGhvbmVfY29udmVyc2lvbl9pZHMiLFlsOiJwaG9uZV9jb252ZXJzaW9uX251bWJlciIsWmw6InBob25lX2NvbnZlcnNpb25fb3B0aW9ucyIsbHE6Il9wbGF0aW51bV9yZXF1ZXN0X3N0YXR1cyIsbXE6Il9wcm90ZWN0ZWRfYXVkaWVuY2VfZW5hYmxlZCIsd2g6InF1YW50aXR5Iix4aDoicmVkYWN0X2RldmljZV9pbmZvIixhbToicmVmZXJyYWxfZXhjbHVzaW9uX2RlZmluaXRpb24iLGh1OiJfcmVxdWVzdF9zdGFydF90aW1lIixXYjoicmVzdHJpY3RlZF9kYXRhX3Byb2Nlc3NpbmciLG5xOiJyZXRva2VuIixvcToic2FtcGxlX3JhdGUiLApOaToic2NyZWVuX25hbWUiLGJkOiJzY3JlZW5fcmVzb2x1dGlvbiIsYm06Il9zY3JpcHRfc291cmNlIixwcToic2VhcmNoX3Rlcm0iLFRkOiJzZW5kX3BhZ2VfdmlldyIsWGI6InNlbmRfdG8iLE9pOiJzZXJ2ZXJfY29udGFpbmVyXzNwX2VucmljaG1lbnQiLGRkOiJzZXJ2ZXJfY29udGFpbmVyX3VybCIscXE6InNlc3Npb25fYXR0cmlidXRlc19lbmNvZGVkIix5aDoic2Vzc2lvbl9kdXJhdGlvbiIsemg6InNlc3Npb25fZW5nYWdlZCIsUGk6InNlc3Npb25fZW5nYWdlZF90aW1lIix4Yzoic2Vzc2lvbl9pZCIsQWg6InNlc3Npb25fbnVtYmVyIixaZjoiX3NoYXJlZF91c2VyX2lkIixVZDoiZGVsaXZlcnlfcG9zdGFsX2NvZGUiLGl1OiJfdGFnX2ZpcmluZ19kZWxheSIsanU6Il90YWdfZmlyaW5nX3RpbWUiLGt1OiJ0ZW1wb3JhcnlfY2xpZW50X2lkIixRaToidGVzdG9ubHkiLHJxOiJfdGltZXpvbmUiLFBlOiJ0b3Btb3N0X3VybCIsUWU6InRyYWNraW5nX2lkIixSaToidHJhZmZpY190eXBlIiwKUGE6InRyYW5zYWN0aW9uX2lkIixkbToidHJhbnNhY3Rpb25faWRfc291cmNlIix5YzoidHJhbnNwb3J0X3VybCIsc3E6InRyaXBfdHlwZSIsVmQ6InVwZGF0ZSIsemM6InVybF9wYXNzdGhyb3VnaCIsZm06InVwdGdzIixjZzoiX3VzZXJfYWdlbnRfYXJjaGl0ZWN0dXJlIixkZzoiX3VzZXJfYWdlbnRfYml0bmVzcyIsZWc6Il91c2VyX2FnZW50X2Z1bGxfdmVyc2lvbl9saXN0IixmZzoiX3VzZXJfYWdlbnRfbW9iaWxlIixnZzoiX3VzZXJfYWdlbnRfbW9kZWwiLGhnOiJfdXNlcl9hZ2VudF9wbGF0Zm9ybSIsaWc6Il91c2VyX2FnZW50X3BsYXRmb3JtX3ZlcnNpb24iLGpnOiJfdXNlcl9hZ2VudF93b3c2NCIsQWM6InVzZXJfZGF0YSIsZ206InVzZXJfZGF0YV9hdXRvX2xhdGVuY3kiLGhtOiJ1c2VyX2RhdGFfYXV0b19tZXRhIixpbToidXNlcl9kYXRhX2F1dG9fbXVsdGkiLGptOiJ1c2VyX2RhdGFfYXV0b19zZWxlY3RvcnMiLGttOiJ1c2VyX2RhdGFfYXV0b19zdGF0dXMiLEJjOiJ1c2VyX2RhdGFfbW9kZSIsCmxtOiJ1c2VyX2RhdGFfc2V0dGluZ3MiLGZiOiJ1c2VyX2lkIixXZDoidXNlcl9wcm9wZXJ0aWVzIixvbToiX3VzZXJfcmVnaW9uIixrZzoidXNfcHJpdmFjeV9zdHJpbmciLFFhOiJ2YWx1ZSIscW06IndicmFpZF9tdWx0aXBsZV9jb252ZXJzaW9ucyIsZWQ6Il9mcG1fcGFyYW1ldGVycyIsV2k6Il9ob3N0X25hbWUiLFZtOiJfaW5fcGFnZV9jb21tYW5kIixZaToiX2lwX292ZXJyaWRlIixabToiX2lzX3Bhc3N0aHJvdWdoX2NpZCIsSmg6Il9tZWFzdXJlbWVudF90eXBlIixkZToibm9uX3BlcnNvbmFsaXplZF9hZHMiLG9qOiJfc3N0X3BhcmFtZXRlcnMiLFlxOiJzZ3RtX2dlb191c2VyX2NvdW50cnkiLEdkOiJjb252ZXJzaW9uX2xhYmVsIix6YToicGFnZV9sb2NhdGlvbiIsV2M6Il9leHRyYWN0ZWRfZGF0YSIsWGM6Imdsb2JhbF9kZXZlbG9wZXJfaWRfc3RyaW5nIixPZToidGNfcHJpdmFjeV9zdHJpbmcifX07dmFyIEg9e0o6e1NvOiJhYm9ydF93aXRob3V0X2ZhaWwiLGtpOiJhY2NlcHRfYnlfZGVmYXVsdCIsQms6ImFkZF90YWdfdGltaW5nIixEazoiYWRzX2NvbnNlbnRfZ3JhbnRlZCIsdmQ6ImFkc19ldmVudF9wYWdlX3ZpZXciLHdkOiJhbGxvd19hZF9wZXJzb25hbGl6YXRpb24iLFF0OiJhdXRvX2V2ZW50IixLazoiYmF0Y2hfb25fbmF2aWdhdGlvbiIsWGc6ImJpc2NvdHRpX2pvaW5faWQiLFBrOiJjbGllbnRfaWRfc291cmNlIix1ZjoiY29uc2VudF9ldmVudF9pZCIsdmY6ImNvbnNlbnRfcHJpb3JpdHlfaWQiLFN0OiJjb25zZW50X3N0YXRlIixzYToiY29uc2VudF91cGRhdGVkIix3ZjoiY29udmVyc2lvbl9saW5rZXJfZW5hYmxlZCIsVHQ6ImNvbnZlcnNpb25fbWFya2luZ19jYWxsZWQiLEdhOiJjb29raWVfb3B0aW9ucyIsb2w6ImRjX3JhbmRvbSIsWnQ6ImRlZHVwZV9pZCIsUGM6ImVtX2V2ZW50IixidToiZW5kcG9pbnRfZm9yX2RlYnVnIix0bDoiZW5oYW5jZWRfY2xpZW50X2lkX3NvdXJjZSIsCnBwOiJlbmhhbmNlZF9tYXRjaF9yZXN1bHQiLHJtOiJldWlkX2xvZ2dlZF9pbl9zdGF0ZSIsbGc6ImV1aWRfbW9kZV9lbmFibGVkIix0cToiZXZlbnRfcHJvdmVuYW5jZSIsbXU6ImV2ZW50X3NvdXJjZSIsRWI6ImV2ZW50X3N0YXJ0X3RpbWVzdGFtcF9tcyIsd206ImV2ZW50X3VzYWdlIixDaDoiZXh0cmFfdGFnX2V4cGVyaW1lbnRfaWRzIixwdToiYWRkX3BhcmFtZXRlciIsVWk6ImNvdW50aW5nX21ldGhvZCIsRGg6InNlbmRfYXNfaWZyYW1lIixxdToicGFyYW1ldGVyX29yZGVyIixFaDoicGFyc2VkX3RhcmdldCIsc3U6ImZvcm1fZXZlbnRfY2FuY2VsZWQiLEFxOiJnYTRfY29sbGVjdGlvbl9zdWJkb21haW4iLFZpOiJnYTRfcmVxdWVzdF9mbGFncyIsTm06ImdicmFpZF9jb29raWVfbWFya2VkIixRbToiZ3RtX2V4dHJhY3RlZF9kYXRhIixDYzoiaGFuZGxlX2ludGVybmFsbHkiLHV1OiJoYXNfZ2FfY29udmVyc2lvbl9jb25zZW50cyIsZGE6ImhpdF90eXBlIixEYzoiaGl0X3R5cGVfb3ZlcnJpZGUiLApIcToiaWdub3JlX2R1cGVfY29uZmlnIixPdToiaXNfY29uZmlnX2NvbW1hbmQiLEdoOiJpc19jb25zZW50X3VwZGF0ZSIsbWc6ImlzX2NvbnZlcnNpb24iLFdtOiJpc19lY29tbWVyY2UiLFhtOiJpc19lY19jbV9zcGxpdCIsYWU6ImlzX2V4dGVybmFsX2V2ZW50IixuZzoiaXNfZmlyc3RfdmlzaXQiLFltOiJpc19maXJzdF92aXNpdF9jb252ZXJzaW9uIixaaToiaXNfZmxfZmFsbGJhY2tfY29udmVyc2lvbl9mbG93X2FsbG93ZWQiLGZkOiJpc19mcG1fZW5jcnlwdGlvbiIsYWo6ImlzX2ZwbV9zcGxpdCIsb2I6ImlzX2djcF9icm93c2VyIixiajoiaXNfZ29vZ2xlX21lYXN1cmVtZW50X2FsbG93ZWQiLGNqOiJpc19nb29nbGVfc2lnbmFsc19lbmFibGVkIixiZToiaXNfbWVyY2hhbnRfY2VudGVyIixIaDoiaXNfbmV3X3RvX3NpdGUiLEVjOiJpc19wZXJzb25hbGl6YXRpb24iLGRqOiJpc19zZXJ2ZXJfc2lkZV9kZXN0aW5hdGlvbiIsVGU6ImlzX3Nlc3Npb25fc3RhcnQiLGJuOiJpc19zZXNzaW9uX3N0YXJ0X2NvbnZlcnNpb24iLApQdToiaXNfc2d0bV9nYV9hZHNfY29udmVyc2lvbl9zdHVkeV9jb250cm9sX2dyb3VwIixRdToiaXNfc2d0bV9wcmVoaXQiLGRuOiJpc19zZ3RtX3NlcnZpY2Vfd29ya2VyIixJaDoiaXNfc3BsaXRfY29udmVyc2lvbiIsSXE6ImlzX3N5biIsRmM6ImlzX3Rlc3RfZXZlbnQiLG9nOiJqb2luX2lkIixlajoiam9pbl9lbGFwc2VkIixwZzoiam9pbl90aW1lcl9zZWMiLGduOiJsb2NhbF9zdG9yYWdlX2F3X2NvbnZlcnNpb25fY291bnRlcnMiLFdlOiJ0dW5uZWxfdXBkYXRlZCIsVXU6InByZWhpdF9mb3JfcmV0cnkiLFd1OiJwcm9taXNlcyIsWHU6InJlY29yZF9hd19sYXRlbmN5IixYZToicmVkYWN0X2Fkc19kYXRhIixZZToicmVkYWN0X2NsaWNrX2lkcyIscG46InJlbWFya2V0aW5nX29ubHkiLGxqOiJzZW5kX2NjbV9wYXJhbGxlbF9waW5nIixoZDoic2VuZF9kb3VibGVjbGlja19qb2luIixNaDoic2VuZF9mcG1fZ2VvX2pvaW4iLE5oOiJzZW5kX2ZwbV9nb29nbGVfam9pbiIsWnU6InNlbmRfY2NtX3BhcmFsbGVsX3Rlc3RfcGluZyIsCnJuOiJzZW5kX2dvb2dsZV9tZWFzdXJlbWVudCIscmc6InNlbmRfdGxkX2pvaW4iLHNnOiJzZW5kX3RvX2Rlc3RpbmF0aW9ucyIsbWo6InNlbmRfdG9fdGFyZ2V0cyIsc246InNlbmRfdXNlcl9kYXRhX2hpdCIscGo6InNlcnZpY2Vfd29ya2VyX2NvbnRleHQiLE5iOiJzb3VyY2VfY2Fub25pY2FsX2lkIixKYToic3BlY3VsYXRpdmUiLHluOiJzcGVjdWxhdGl2ZV9pbl9tZXNzYWdlIixBbjoic3VwcHJlc3Nfc2NyaXB0X2xvYWQiLEJuOiJzeW5fb3JfbW9kIix6ajoidHJhbnNpZW50X2Vjc2lkIix0ZzoidHJhbnNtaXNzaW9uX3R5cGUiLFlhOiJ1c2VyX2RhdGEiLGd2OiJ1c2VyX2RhdGFfZnJvbV9hdXRvbWF0aWMiLGh2OiJ1c2VyX2RhdGFfZnJvbV9hdXRvbWF0aWNfZ2V0dGVyIixHbjoidXNlcl9kYXRhX2Zyb21fY29kZSIsaXI6InVzZXJfZGF0YV9mcm9tX21hbnVhbCIsanY6InVzZXJfZGF0YV9tb2RlIix1ZzoidXNlcl9pZF91cGRhdGVkIn19Owp2YXIgdGc9ZnVuY3Rpb24oYSl7dmFyIGI9e30sYz0wO0diKGEsZnVuY3Rpb24oZSxmKXtpZihmIT1udWxsKXt2YXIgZz0oIiIrZikucmVwbGFjZSgvfi9nLCJ+fiIpO2lmKHFnLmhhc093blByb3BlcnR5KGUpKWJbcWdbZV1dPWc7ZWxzZSBpZihyZy5oYXNPd25Qcm9wZXJ0eShlKSl7dmFyIGg9cmdbZV07Yi5oYXNPd25Qcm9wZXJ0eShoKXx8KGJbaF09Zyl9ZWxzZSBpZihlPT09ImNhdGVnb3J5Iilmb3IodmFyIGw9Zy5zcGxpdCgiLyIsNSksbj0wO248bC5sZW5ndGg7bisrKXt2YXIgcD1iLHE9c2dbbl0scj1sW25dO3AuaGFzT3duUHJvcGVydHkocSl8fChwW3FdPXIpfWVsc2UgaWYoYzwyNyl7dmFyIHQ9U3RyaW5nLmZyb21DaGFyQ29kZShjPDEwPzQ4K2M6NjUrYy0xMCk7YlsiayIrdF09KCIiK1N0cmluZyhlKSkucmVwbGFjZSgvfi9nLCJ+fiIpO2JbInYiK3RdPWc7YysrfX19KTt2YXIgZD1bXTtHYihiLGZ1bmN0aW9uKGUsZil7ZC5wdXNoKCIiK2UrZil9KTtyZXR1cm4gZC5qb2luKCJ+Iil9LApxZz17aXRlbV9pZDoiaWQiLGl0ZW1fbmFtZToibm0iLGl0ZW1fYnJhbmQ6ImJyIixpdGVtX2NhdGVnb3J5OiJjYSIsaXRlbV9jYXRlZ29yeTI6ImMyIixpdGVtX2NhdGVnb3J5MzoiYzMiLGl0ZW1fY2F0ZWdvcnk0OiJjNCIsaXRlbV9jYXRlZ29yeTU6ImM1IixpdGVtX3ZhcmlhbnQ6InZhIixwcmljZToicHIiLHF1YW50aXR5OiJxdCIsY291cG9uOiJjcCIsaXRlbV9saXN0X25hbWU6ImxuIixpbmRleDoibHAiLGl0ZW1fbGlzdF9pZDoibGkiLGRpc2NvdW50OiJkcyIsYWZmaWxpYXRpb246ImFmIixwcm9tb3Rpb25faWQ6InBpIixwcm9tb3Rpb25fbmFtZToicG4iLGNyZWF0aXZlX25hbWU6ImNuIixjcmVhdGl2ZV9zbG90OiJjcyIsbG9jYXRpb25faWQ6ImxvIn0scmc9e2lkOiJpZCIsbmFtZToibm0iLGJyYW5kOiJiciIsdmFyaWFudDoidmEiLGxpc3RfbmFtZToibG4iLGxpc3RfcG9zaXRpb246ImxwIixsaXN0OiJsbiIscG9zaXRpb246ImxwIixjcmVhdGl2ZToiY24ifSxzZz1bImNhIiwKImMyIiwiYzMiLCJjNCIsImM1Il07dmFyIHVnPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO0diKGEsZnVuY3Rpb24oYyxkKXtkIT1udWxsJiZiLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGMpKyI9IitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGQpKSl9KTtyZXR1cm4gYi5qb2luKCImIil9LHZnPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcsaCl7dGhpcy5iYXNlVXJsPWI7dGhpcy5lbmRwb2ludD1jO3RoaXMuZGVzdGluYXRpb25JZD1mO3RoaXMuZXZlbnRJZD1nO3RoaXMucHJpb3JpdHlJZD1oO3RoaXMuQmE9YS5CYTt0aGlzLnZlPWEudmU7dGhpcy5Maj1hLkxqO3RoaXMuTj1kO3RoaXMuSz11ZyhhLkJhKTt0aGlzLkg9dWcoYS5Maik7dGhpcy5SPXRoaXMuSC5sZW5ndGg7aWYoZSYmdGhpcy5SPjE2Mzg0KXRocm93IEVycm9yKCJFVkVOVF9UT09fTEFSR0UiKTt9Owp2YXIgd2c9ZnVuY3Rpb24oKXt0aGlzLmV2ZW50cz1bXTt0aGlzLkg9IiI7dGhpcy5CYT17fTt0aGlzLmJhc2VVcmw9IiI7dGhpcy5OPTA7dGhpcy5LPTE7dGhpcy5lbmRwb2ludD0wfTt3Zy5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLlIoYSk/KHRoaXMuZXZlbnRzLnB1c2goYSksdGhpcy5IPWEuSyx0aGlzLkJhPWEuQmEsdGhpcy5iYXNlVXJsPWEuYmFzZVVybCx0aGlzLk4rPWEuUix0aGlzLks9YS5OLHRoaXMuZW5kcG9pbnQ9YS5lbmRwb2ludCx0aGlzLmRlc3RpbmF0aW9uSWQ9YS5kZXN0aW5hdGlvbklkLHRoaXMuWj1hLmV2ZW50SWQsdGhpcy5mYT1hLnByaW9yaXR5SWQsITApOiExfTt3Zy5wcm90b3R5cGUuUj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ldmVudHMubGVuZ3RoP3RoaXMuZXZlbnRzLmxlbmd0aD49MjB8fGEuUit0aGlzLk4+PTE2Mzg0PyExOnRoaXMuYmFzZVVybD09PWEuYmFzZVVybCYmdGhpcy5LPT09YS5OJiZ0aGlzLmphKGEpOiEwfTsKd2cucHJvdG90eXBlLmphPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkg9PT1hLkt9O3ZhciBKPXtVOntrcDoxLG1wOjIsRW46Myxubjo0LHFsOjUscmw6NixFcTo3LG5wOjgsRHE6OSxqcDoxMCxocDoxMSx4bjoxMix2bjoxMyxOazoxNCxVbzoxNSxXbzoxNixobjoxNyxzbDoxOCxmbjoxOSxscDoyMCxQcToyMSxhcDoyMixWbzoyMyxYbzoyNCxubDoyNSxMazoyNixlcjoyNyxKbToyOCxVbToyOSxUbTozMCxTbTozMSxNbTozMixLbTozMyxMbTozNCxHbTozNSxGbTozNixIbTozNyxJbTozOCxCcTozOSxDcTo0MCxVcTo0MX19O0ouVVtKLlUua3BdPSJDUkVBVEVfRVZFTlRfU09VUkNFIjtKLlVbSi5VLm1wXT0iRURJVF9FVkVOVCI7Si5VW0ouVS5Fbl09IlRSQUZGSUNfVFlQRSI7Si5VW0ouVS5ubl09IlJFRkVSUkFMX0VYQ0xVU0lPTiI7Si5VW0ouVS5xbF09IkVDT01NRVJDRV9GUk9NX0dUTV9UQUciO0ouVVtKLlUucmxdPSJFQ09NTUVSQ0VfRlJPTV9HVE1fVUFfU0NIRU1BIjtKLlVbSi5VLkVxXT0iR0FfU0VORCI7Si5VW0ouVS5ucF09IkVNX0ZPUk0iOwpKLlVbSi5VLkRxXT0iR0FfR0FNX0xJTksiO0ouVVtKLlUuanBdPSJDUkVBVEVfRVZFTlRfQVVUT19QQUdFX1BBVEgiO0ouVVtKLlUuaHBdPSJDUkVBVEVEX0VWRU5UIjtKLlVbSi5VLnhuXT0iU0lERUxPQURFRCI7Si5VW0ouVS52bl09IlNHVE1fTEVHQUNZX0NPTkZJR1VSQVRJT04iO0ouVVtKLlUuTmtdPSJDQ0RfRU1fRVZFTlQiO0ouVVtKLlUuVW9dPSJBVVRPX1JFREFDVF9FTUFJTCI7Si5VW0ouVS5Xb109IkFVVE9fUkVEQUNUX1FVRVJZX1BBUkFNIjtKLlVbSi5VLmhuXT0iTVVMVElQTEVfUEFHRVZJRVdfRlJPTV9DT05GSUciO0ouVVtKLlUuc2xdPSJFTV9FVkVOVF9TRU5UX0JFRk9SRV9DT05GSUciO0ouVVtKLlUuZm5dPSJMT0FERURfVklBX0NTVF9PUl9TSURFTE9BRElORyI7Si5VW0ouVS5scF09IkRFQ09ERURfUEFSQU1fTUFUQ0giO0ouVVtKLlUuUHFdPSJOT05fREVDT0RFRF9QQVJBTV9NQVRDSCI7Si5VW0ouVS5hcF09IkNDRF9FVkVOVF9TR1RNIjsKSi5VW0ouVS5Wb109IkFVVE9fUkVEQUNUX0VNQUlMX1NHVE0iO0ouVVtKLlUuWG9dPSJBVVRPX1JFREFDVF9RVUVSWV9QQVJBTV9TR1RNIjtKLlVbSi5VLm5sXT0iREFJTFlfTElNSVRfUkVBQ0hFRCI7Si5VW0ouVS5Ma109IkJVUlNUX0xJTUlUX1JFQUNIRUQiO0ouVVtKLlUuZXJdPSJTSEFSRURfVVNFUl9JRF9TRVRfQUZURVJfUkVRVUVTVCI7Si5VW0ouVS5KbV09IkdBNF9NVUxUSVBMRV9TRVNTSU9OX0NPT0tJRVMiO0ouVVtKLlUuVW1dPSJJTlZBTElEX0dBNF9TRVNTSU9OX0NPVU5UIjtKLlVbSi5VLlRtXT0iSU5WQUxJRF9HQTRfTEFTVF9FVkVOVF9USU1FU1RBTVAiO0ouVVtKLlUuU21dPSJJTlZBTElEX0dBNF9KT0lOX1RJTUVSIjtKLlVbSi5VLk1tXT0iR0E0X1NUQUxFX1NFU1NJT05fQ09PS0lFX1NFTEVDVEVEIjtKLlVbSi5VLkttXT0iR0E0X1NFU1NJT05fQ09PS0lFX0dTMV9SRUFEIjtKLlVbSi5VLkxtXT0iR0E0X1NFU1NJT05fQ09PS0lFX0dTMl9SRUFEIjsKSi5VW0ouVS5HbV09IkdBNF9ETF9QQVJBTV9SRUNPVkVSWV9BVkFJTEFCTEUiO0ouVVtKLlUuRm1dPSJHQTRfRExfUEFSQU1fUkVDT1ZFUllfQVBQTElFRCI7Si5VW0ouVS5IbV09IkdBNF9HT09HTEVfTUVBU1VSRU1FTlRfQUxMT1dFRCI7Si5VW0ouVS5JbV09IkdBNF9HT09HTEVfU0lHTkFMU19FTkFCTEVEIjtKLlVbSi5VLkJxXT0iR0E0X0ZBTExCQUNLX1JFUVVFU1QiO0ouVVtKLlUuQ3FdPSJHQV9BRFNfTElOS19CRUZPUkVfQ09OVkVSU0lPTl9NQVJLSU5HIjtKLlVbSi5VLlVxXT0iUExBVElOVU1fRUxJR0lCTEUiO3ZhciB4Zz17fSx5Zz0oeGcudWFhPSEwLHhnLnVhYj0hMCx4Zy51YWZ2bD0hMCx4Zy51YW1iPSEwLHhnLnVhbT0hMCx4Zy51YXA9ITAseGcudWFwdj0hMCx4Zy51YXc9ITAseGcpOwp2YXIgQmc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmV2ZW50cztpZihjLmxlbmd0aD09PTEpcmV0dXJuIHpnKGNbMF0sYik7dmFyIGQ9W107YS5IJiZkLnB1c2goYS5IKTtmb3IodmFyIGU9e30sZj0wO2Y8Yy5sZW5ndGg7ZisrKUdiKGNbZl0udmUsZnVuY3Rpb24odCx1KXt1IT1udWxsJiYoZVt0XT1lW3RdfHx7fSxlW3RdW1N0cmluZyh1KV09ZVt0XVtTdHJpbmcodSldKzF8fDEpfSk7dmFyIGc9e307R2IoZSxmdW5jdGlvbih0LHUpe3ZhciB2LHg9LTEseT0wO0diKHUsZnVuY3Rpb24oeixDKXt5Kz1DO3ZhciBEPSh6Lmxlbmd0aCt0Lmxlbmd0aCsyKSooQy0xKTtEPngmJih2PXoseD1EKX0pO3k9PT1jLmxlbmd0aCYmKGdbdF09dil9KTtBZyhnLGQpO2ImJmQucHVzaCgiX3M9IitiKTtmb3IodmFyIGg9ZC5qb2luKCImIiksbD1bXSxuPXt9LHA9MDtwPGMubGVuZ3RoO249e2ZrOnZvaWQgMH0scCsrKXt2YXIgcT1bXTtuLmZrPXt9O0diKGNbcF0udmUsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHUsCnYpe2dbdV0hPT0iIit2JiYodC5ma1t1XT12KX19KG4pKTtjW3BdLkgmJnEucHVzaChjW3BdLkgpO0FnKG4uZmsscSk7bC5wdXNoKHEuam9pbigiJiIpKX12YXIgcj1sLmpvaW4oIlxyXG4iKTtyZXR1cm57cGFyYW1zOmgsYm9keTpyfX0semc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTthLksmJmMucHVzaChhLkspO2ImJmMucHVzaCgiX3M9IitiKTtBZyhhLnZlLGMpO3ZhciBkPSExO2EuSCYmKGMucHVzaChhLkgpLGQ9ITApO3ZhciBlPWMuam9pbigiJiIpLGY9IiIsZz1lLmxlbmd0aCthLmJhc2VVcmwubGVuZ3RoKzE7ZCYmZz4yMDQ4JiYoZj1jLnBvcCgpLGU9Yy5qb2luKCImIikpO3JldHVybntwYXJhbXM6ZSxib2R5OmZ9fSxBZz1mdW5jdGlvbihhLGIpe0diKGEsZnVuY3Rpb24oYyxkKXtkIT1udWxsJiZiLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGMpKyI9IitlbmNvZGVVUklDb21wb25lbnQoZCkpfSl9Owp2YXIgRWc9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YSxlPWJbY107aWYoIUNnLmV4ZWMoZSkpdGhyb3cgRXJyb3IoIkludmFsaWQga2V5IHdpbGRjYXJkIik7dmFyIGY9ZS5pbmRleE9mKCIuKiIpLGc9ZiE9PS0xJiZmPT09ZS5sZW5ndGgtMixoPWc/ZS5zbGljZSgwLGUubGVuZ3RoLTIpOmUsbDthOmlmKGQubGVuZ3RoPT09MClsPSExO2Vsc2V7Zm9yKHZhciBuPWQuc3BsaXQoIi4iKSxwPTA7cDxuLmxlbmd0aDtwKyspaWYoIURnLmV4ZWMobltwXSkpe2w9ITE7YnJlYWsgYX1sPSEwfWlmKCFsfHxoLmxlbmd0aD5kLmxlbmd0aHx8IWcmJmQubGVuZ3RoIT09ZS5sZW5ndGg/MDpnP1NiKGQsaCkmJihkPT09aHx8ZC5jaGFyQXQoaC5sZW5ndGgpPT09Ii4iKTpkPT09aClyZXR1cm4hMH1yZXR1cm4hMX0sRGc9L15bYS16JF9dW1x3LSRdKiQvaSxDZz0vXig/OlthLXpfJF1bYS16LV8kMC05XSpcLikqW2Etel8kXVthLXotXyQwLTldKig/OlwuXCopPyQvaTsKdmFyIEZnPVsibWF0Y2hlcyIsIndlYmtpdE1hdGNoZXNTZWxlY3RvciIsIm1vek1hdGNoZXNTZWxlY3RvciIsIm1zTWF0Y2hlc1NlbGVjdG9yIiwib01hdGNoZXNTZWxlY3RvciJdO2Z1bmN0aW9uIEdnKGEsYil7aWYoIWEpcmV0dXJuITE7dHJ5e2Zvcih2YXIgYz0wO2M8RmcubGVuZ3RoO2MrKyl7dmFyIGQ9RmdbY107aWYoYVtkXSE9bnVsbClyZXR1cm4gYVtkXShiKX19Y2F0Y2goZSl7fXJldHVybiExfWZ1bmN0aW9uIEhnKGEsYil7dmFyIGM9U3RyaW5nKGEpLGQ9U3RyaW5nKGIpLGU9Yy5sZW5ndGgtZC5sZW5ndGg7cmV0dXJuIGU+PTAmJmMuaW5kZXhPZihkLGUpPT09ZX1mdW5jdGlvbiBJZyhhLGIpe3JldHVybiBTdHJpbmcoYSkuc3BsaXQoIiwiKS5pbmRleE9mKFN0cmluZyhiKSk+PTB9CmZ1bmN0aW9uIEpnKGEsYixjLGQpe3ZhciBlPWM/ImkiOnZvaWQgMDt0cnl7dmFyIGY9U3RyaW5nKGIpK1N0cmluZyhlKSxnPWQ9PW51bGw/dm9pZCAwOmQuZ2V0KGYpO2d8fChnPW5ldyBSZWdFeHAoYixlKSxkPT1udWxsfHxkLnNldChmLGcpKTtyZXR1cm4gZy50ZXN0KGEpfWNhdGNoKGgpe3JldHVybiExfX1mdW5jdGlvbiBLZyhhLGIpe3JldHVybiBTdHJpbmcoYSkuaW5kZXhPZihTdHJpbmcoYikpPj0wfWZ1bmN0aW9uIExnKGEsYil7cmV0dXJuIFN0cmluZyhhKT09PVN0cmluZyhiKX1mdW5jdGlvbiBNZyhhLGIpe3JldHVybiBOdW1iZXIoYSk+PU51bWJlcihiKX1mdW5jdGlvbiBOZyhhLGIpe3JldHVybiBOdW1iZXIoYSk8PU51bWJlcihiKX1mdW5jdGlvbiBPZyhhLGIpe3JldHVybiBOdW1iZXIoYSk+TnVtYmVyKGIpfWZ1bmN0aW9uIFBnKGEsYil7cmV0dXJuIE51bWJlcihhKTxOdW1iZXIoYil9CmZ1bmN0aW9uIFFnKGEsYil7cmV0dXJuIFNiKFN0cmluZyhhKSxTdHJpbmcoYikpfTtmdW5jdGlvbiBYZyhhKXt2YXIgYj1hLnNlYXJjaDtyZXR1cm4gYS5wcm90b2NvbCsiLy8iK2EuaG9zdG5hbWUrYS5wYXRobmFtZSsoYj9iKyImcmljaHNzdHNzZSI6Ij9yaWNoc3N0c3NlIil9O3ZhciBZZz1mdW5jdGlvbigpe3RoaXMuUj0iIn0sJGc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz1iLmZhbGxiYWNrX3VybCxkPWIuZmFsbGJhY2tfdXJsX21ldGhvZDtpZihjJiZkKXt2YXIgZT17fTtaZyhhLChlW2RdPVtjXSxlLm9wdGlvbnM9e30sZSkpfX19LGFoPWZ1bmN0aW9uKGEsYixjKXtpZihBcnJheS5pc0FycmF5KGEpKWZvcih2YXIgZD1tKGEpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlO3R5cGVvZiBmPT09InN0cmluZyImJmMoZixiKX19LFpnPWZ1bmN0aW9uKGEsYil7aWYoYilmb3IodmFyIGM9Q2QoYi5vcHRpb25zKT9iLm9wdGlvbnM6e30sZD1tKE9iamVjdC5rZXlzKGIpKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9ZS52YWx1ZSxnPWJbZl07c3dpdGNoKGYpe2Nhc2UgInNlbmRfcGl4ZWwiOmFoKGcsYyxmdW5jdGlvbihoLGwpe3JldHVybiB2b2lkIGEuSyhoLGwpfSk7YnJlYWs7Y2FzZSAiZmV0Y2giOmFoKGcsCmMsZnVuY3Rpb24oaCxsKXtyZXR1cm4gdm9pZCBhLkgoaCxsKX0pfX19O3ZhciBiaD0vXihbYS16XVthLXowLTldKik6KCF8XD8pKFwqfHN0cmluZ3xib29sZWFufG51bWJlcnxGbnxQaXhpZU1hcHxMaXN0fE9wYXF1ZVZhbHVlKSQvaSxjaD17Rm46ImZ1bmN0aW9uIixQaXhpZU1hcDoiT2JqZWN0IixMaXN0OiJBcnJheSJ9OwpmdW5jdGlvbiBkaChhLGIpe2Zvcih2YXIgYz1bImlucHV0OiEqIl0sZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1iaC5leGVjKGNbZF0pO2lmKCFlKXRocm93IEVycm9yKCJJbnRlcm5hbCBFcnJvciBpbiAiK2EpO3ZhciBmPWVbMV0sZz1lWzJdPT09IiEiLGg9ZVszXSxsPWJbZF07aWYobD09bnVsbCl7aWYoZyl0aHJvdyBFcnJvcigiRXJyb3IgaW4gIithKyIuIFJlcXVpcmVkIGFyZ3VtZW50ICIrZisiIG5vdCBzdXBwbGllZC4iKTt9ZWxzZSBpZihoIT09IioiKXt2YXIgbj10eXBlb2YgbDtsIGluc3RhbmNlb2YgS2Q/bj0iRm4iOmwgaW5zdGFuY2VvZiBHZD9uPSJMaXN0IjpsIGluc3RhbmNlb2Yga2I/bj0iUGl4aWVNYXAiOmwgaW5zdGFuY2VvZiBTZD9uPSJQaXhpZVByb21pc2UiOmwgaW5zdGFuY2VvZiBQZCYmKG49Ik9wYXF1ZVZhbHVlIik7aWYobiE9PWgpdGhyb3cgRXJyb3IoIkVycm9yIGluICIrYSsiLiBBcmd1bWVudCAiK2YrIiBoYXMgdHlwZSAiKygoY2hbbl18fG4pKyIsIHdoaWNoIGRvZXMgbm90IG1hdGNoIHJlcXVpcmVkIHR5cGUgIikrCigoY2hbaF18fGgpKyIuIikpO319fWZ1bmN0aW9uIEsoYSxiLGMpe2Zvcih2YXIgZD1bXSxlPW0oYyksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWU7ZyBpbnN0YW5jZW9mIEtkP2QucHVzaCgiZnVuY3Rpb24iKTpnIGluc3RhbmNlb2YgR2Q/ZC5wdXNoKCJBcnJheSIpOmcgaW5zdGFuY2VvZiBrYj9kLnB1c2goIk9iamVjdCIpOmcgaW5zdGFuY2VvZiBTZD9kLnB1c2goIlByb21pc2UiKTpnIGluc3RhbmNlb2YgUGQ/ZC5wdXNoKCJPcGFxdWVWYWx1ZSIpOmQucHVzaCh0eXBlb2YgZyl9cmV0dXJuIEVycm9yKCJBcmd1bWVudCBlcnJvciBpbiAiK2ErIi4gRXhwZWN0ZWQgYXJndW1lbnQgdHlwZXMgWyIrKGIuam9pbigiLCIpKyJdLCBidXQgcmVjZWl2ZWQgWyIpKyhkLmpvaW4oIiwiKSsiXS4iKSl9ZnVuY3Rpb24gZWgoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBrYn1mdW5jdGlvbiBmaChhKXtyZXR1cm4gZWgoYSl8fGE9PT1udWxsfHxnaChhKX0KZnVuY3Rpb24gaGgoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBLZH1mdW5jdGlvbiBpaChhKXtyZXR1cm4gaGgoYSl8fGE9PT1udWxsfHxnaChhKX1mdW5jdGlvbiBqaChhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEdkfWZ1bmN0aW9uIGtoKGEpe3JldHVybiBhIGluc3RhbmNlb2YgUGR9ZnVuY3Rpb24gbGgoYSl7cmV0dXJuIHR5cGVvZiBhPT09InN0cmluZyJ9ZnVuY3Rpb24gbWgoYSl7cmV0dXJuIGxoKGEpfHxhPT09bnVsbHx8Z2goYSl9ZnVuY3Rpb24gbmgoYSl7cmV0dXJuIHR5cGVvZiBhPT09ImJvb2xlYW4ifWZ1bmN0aW9uIG9oKGEpe3JldHVybiBuaChhKXx8Z2goYSl9ZnVuY3Rpb24gcGgoYSl7cmV0dXJuIG5oKGEpfHxhPT09bnVsbHx8Z2goYSl9ZnVuY3Rpb24gcWgoYSl7cmV0dXJuIHR5cGVvZiBhPT09Im51bWJlciJ9ZnVuY3Rpb24gZ2goYSl7cmV0dXJuIGE9PT12b2lkIDB9O2Z1bmN0aW9uIHJoKGEpe3JldHVybiIiK2F9CmZ1bmN0aW9uIHNoKGEsYil7dmFyIGM9W107cmV0dXJuIGN9O2Z1bmN0aW9uIHRoKGEsYil7dmFyIGM9bmV3IEtkKGEsZnVuY3Rpb24oKXtmb3IodmFyIGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApLGU9MDtlPGQubGVuZ3RoO2UrKylkW2VdPXRoaXMuZXZhbHVhdGUoZFtlXSk7dHJ5e3JldHVybiBiLmFwcGx5KHRoaXMsZCl9Y2F0Y2goZyl7dGhyb3cgY2IoZyk7fX0pO2MuWmEoKTtyZXR1cm4gY30KZnVuY3Rpb24gdWgoYSxiKXt2YXIgYz1uZXcga2IsZDtmb3IoZCBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoZCkpe3ZhciBlPWJbZF07eWIoZSk/Yy5zZXQoZCx0aChhKyJfIitkLGUpKTpDZChlKT9jLnNldChkLHVoKGErIl8iK2QsZSkpOihBYihlKXx8emIoZSl8fHR5cGVvZiBlPT09ImJvb2xlYW4iKSYmYy5zZXQoZCxlKX1jLlphKCk7cmV0dXJuIGN9O2Z1bmN0aW9uIHdoKGEsYil7aWYoIWxoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciXSxhcmd1bWVudHMpO2lmKCFtaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwidW5kZWZpbmVkIl0sYXJndW1lbnRzKTt2YXIgYz17fSxkPW5ldyBrYjtyZXR1cm4gZD11aCgiQXNzZXJ0QXBpU3ViamVjdCIsCmMpfTtmdW5jdGlvbiB4aChhLGIpe2lmKCFtaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwidW5kZWZpbmVkIl0sYXJndW1lbnRzKTtpZihhIGluc3RhbmNlb2YgU2QpdGhyb3cgRXJyb3IoIkFyZ3VtZW50IGFjdHVhbCBjYW5ub3QgaGF2ZSB0eXBlIFByb21pc2UuIEFzc2VydGlvbnMgb24gYXN5bmNocm9ub3VzIGNvZGUgYXJlbid0IHN1cHBvcnRlZC4iKTt2YXIgYz17fSxkPW5ldyBrYjtyZXR1cm4gZD11aCgiQXNzZXJ0VGhhdFN1YmplY3QiLGMpfTtmdW5jdGlvbiB5aChhKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGI9T2EuYXBwbHkoMCxhcmd1bWVudHMpLGM9W10sZD10aGlzLlQsZT0wO2U8Yi5sZW5ndGg7KytlKWMucHVzaChUZChiW2VdLGQpKTtyZXR1cm4gVWQoYS5hcHBseShudWxsLGMpKX19ZnVuY3Rpb24gemgoKXtmb3IodmFyIGE9TWF0aCxiPUFoLGM9e30sZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1iW2RdO2EuaGFzT3duUHJvcGVydHkoZSkmJihjW2VdPXloKGFbZV0uYmluZChhKSkpfXJldHVybiBjfTtmdW5jdGlvbiBCaChhKXtyZXR1cm4gYSE9bnVsbCYmU2IoYSwiX19jdnRfIil9O2Z1bmN0aW9uIENoKGEpe3ZhciBiO3JldHVybiBifTtmdW5jdGlvbiBEaChhKXt2YXIgYjtpZighbGgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyJdLGFyZ3VtZW50cyk7dHJ5e2I9ZGVjb2RlVVJJQ29tcG9uZW50KGEpfWNhdGNoKGMpe31yZXR1cm4gYn07ZnVuY3Rpb24gRWgoYSl7dHJ5e3JldHVybiBlbmNvZGVVUkkoYSl9Y2F0Y2goYil7fX07ZnVuY3Rpb24gRmgoYSl7dHJ5e3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGEpKX1jYXRjaChiKXt9fTtmdW5jdGlvbiBHaChhLGIpe3ZhciBjPSExO3ZhciBkPUpTT04ucGFyc2UoYSk7aWYoIWQpdGhyb3cgRXJyb3IoIkludmFsaWQgYm9vbGVhbiBleHByZXNzaW9uIHN0cmluZyB3YXMgZ2l2ZW4uIik7Yz1IaChkLGIpO3JldHVybiBjfQp2YXIgSWg9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7aWYoYT09PXZvaWQgMClyZXR1cm47YT1hW2JbY11dfXJldHVybiBhfSxKaD1mdW5jdGlvbihhLGIpe3ZhciBjPWIucHJlSGl0O2lmKGMpe3ZhciBkPWFbMF07c3dpdGNoKGQpe2Nhc2UgImhpdERhdGEiOnJldHVybiBhLmxlbmd0aDwyP3ZvaWQgMDpJaChjLmdldEhpdERhdGEoYVsxXSksYS5zbGljZSgyKSk7Y2FzZSAibWV0YWRhdGEiOnJldHVybiBhLmxlbmd0aDwyP3ZvaWQgMDpJaChjLmdldE1ldGFkYXRhKGFbMV0pLGEuc2xpY2UoMikpO2Nhc2UgImV2ZW50TmFtZSI6cmV0dXJuIGMuZ2V0RXZlbnROYW1lKCk7Y2FzZSAiZGVzdGluYXRpb25JZCI6cmV0dXJuIGMuZ2V0RGVzdGluYXRpb25JZCgpO2RlZmF1bHQ6dGhyb3cgRXJyb3IoZCsiIGlzIG5vdCBhIHZhbGlkIGZpZWxkIHRoYXQgY2FuIGJlIGFjY2Vzc2VkXG4gICAgICAgICAgICAgICAgICAgICAgZnJvbSBQcmVIaXQgZGF0YS4iKTt9fX0sCktoPWZ1bmN0aW9uKGEsYil7aWYoYSl7aWYoYS5jb250ZXh0VmFsdWUhPT12b2lkIDApe3ZhciBjO2E6e3ZhciBkPWEuY29udGV4dFZhbHVlLGU9ZC5rZXlQYXJ0cztpZihlJiZlLmxlbmd0aCE9PTApe3ZhciBmPWQubmFtZXNwYWNlVHlwZTtzd2l0Y2goZil7Y2FzZSAxOmM9SmgoZSxiKTticmVhayBhO2Nhc2UgMjp2YXIgZz1iLm1hY3JvO2M9Zz9nW2VbMF1dOnZvaWQgMDticmVhayBhO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVua25vd24gTmFtZXNwYWNlIFR5cGUgdXNlZDogIitmKTt9fWM9dm9pZCAwfXJldHVybiBjfWlmKGEuYm9vbGVhbkV4cHJlc3Npb25WYWx1ZSE9PXZvaWQgMClyZXR1cm4gSGgoYS5ib29sZWFuRXhwcmVzc2lvblZhbHVlLGIpO2lmKGEuYm9vbGVhblZhbHVlIT09dm9pZCAwKXJldHVybiEhYS5ib29sZWFuVmFsdWU7aWYoYS5zdHJpbmdWYWx1ZSE9PXZvaWQgMClyZXR1cm4gU3RyaW5nKGEuc3RyaW5nVmFsdWUpO2lmKGEuaW50ZWdlclZhbHVlIT09dm9pZCAwKXJldHVybiBOdW1iZXIoYS5pbnRlZ2VyVmFsdWUpOwppZihhLmRvdWJsZVZhbHVlIT09dm9pZCAwKXJldHVybiBOdW1iZXIoYS5kb3VibGVWYWx1ZSk7dGhyb3cgRXJyb3IoIlVua25vd24gZmllbGQgdXNlZCBmb3IgdmFyaWFibGUgb2YgdHlwZSBFeHByZXNzaW9uVmFsdWU6IithKTt9fSxIaD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuYXJncztpZighQXJyYXkuaXNBcnJheShjKXx8Yy5sZW5ndGg9PT0wKXRocm93IEVycm9yKCdJbnZhbGlkIGJvb2xlYW4gZXhwcmVzc2lvbiBmb3JtYXQuIEV4cGVjdGVkICJhcmdzIjonK2MrIiBwcm9wZXJ0eSB0b1xuICAgICAgICAgYmUgbm9uLWVtcHR5IGFycmF5LiIpO3ZhciBkPWZ1bmN0aW9uKGcpe3JldHVybiBLaChnLGIpfTtzd2l0Y2goYS50eXBlKXtjYXNlIDE6Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspaWYoZChjW2VdKSlyZXR1cm4hMDtyZXR1cm4hMTtjYXNlIDI6Zm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspaWYoIWQoY1tmXSkpcmV0dXJuITE7cmV0dXJuIGMubGVuZ3RoPjA7Y2FzZSAzOnJldHVybiFkKGNbMF0pOwpjYXNlIDQ6cmV0dXJuIEpnKGQoY1swXSksZChjWzFdKSwhMSxiLnJlZ2V4Q2FjaGUpO2Nhc2UgNTpyZXR1cm4gTGcoZChjWzBdKSxkKGNbMV0pKTtjYXNlIDY6cmV0dXJuIFFnKGQoY1swXSksZChjWzFdKSk7Y2FzZSA3OnJldHVybiBIZyhkKGNbMF0pLGQoY1sxXSkpO2Nhc2UgODpyZXR1cm4gS2coZChjWzBdKSxkKGNbMV0pKTtjYXNlIDk6cmV0dXJuIFBnKGQoY1swXSksZChjWzFdKSk7Y2FzZSAxMDpyZXR1cm4gTmcoZChjWzBdKSxkKGNbMV0pKTtjYXNlIDExOnJldHVybiBPZyhkKGNbMF0pLGQoY1sxXSkpO2Nhc2UgMTI6cmV0dXJuIE1nKGQoY1swXSksZChjWzFdKSk7Y2FzZSAxMzpyZXR1cm4gSWcoZChjWzBdKSxTdHJpbmcoZChjWzFdKSkpO2RlZmF1bHQ6dGhyb3cgRXJyb3IoJ0ludmFsaWQgYm9vbGVhbiBleHByZXNzaW9uIGZvcm1hdC4gRXhwZWN0ZWQgInR5cGUiIHByb3BlcnR5IHRvYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHdoaWNoIGlzIGxlc3MgdGhhbiAxNC4nKTt9fTsKZnVuY3Rpb24gTGgoYSl7aWYoIW1oKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmd8dW5kZWZpbmVkIl0sYXJndW1lbnRzKTt9O2Z1bmN0aW9uIE1oKGEpe3ZhciBiPVRkKGEpO3JldHVybiBuZyhiPyIiK2I6IiIpfTtmdW5jdGlvbiBOaChhLGIpe2lmKCFxaChhKXx8IXFoKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJudW1iZXIiLCJudW1iZXIiXSxhcmd1bWVudHMpO3JldHVybiBEYihhLGIpfTtmdW5jdGlvbiBPaCgpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfTtmdW5jdGlvbiBQaChhKXtpZihhPT09bnVsbClyZXR1cm4ibnVsbCI7aWYoYSBpbnN0YW5jZW9mIEdkKXJldHVybiJhcnJheSI7aWYoYSBpbnN0YW5jZW9mIEtkKXJldHVybiJmdW5jdGlvbiI7aWYoYSBpbnN0YW5jZW9mIFBkKXt2YXIgYj1hLmdldFZhbHVlKCk7aWYoKGI9PW51bGw/dm9pZCAwOmIuY29uc3RydWN0b3IpPT09dm9pZCAwfHxiLmNvbnN0cnVjdG9yLm5hbWU9PT12b2lkIDApe3ZhciBjPVN0cmluZyhiKTtyZXR1cm4gYy5zdWJzdHJpbmcoOCxjLmxlbmd0aC0xKX1yZXR1cm4gU3RyaW5nKGIuY29uc3RydWN0b3IubmFtZSl9cmV0dXJuIHR5cGVvZiBhfTtmdW5jdGlvbiBRaChhKXtmdW5jdGlvbiBiKGMpe3JldHVybiBmdW5jdGlvbihkKXt0cnl7cmV0dXJuIGMoZCl9Y2F0Y2goZSl7KGxnfHxtZy5QbykmJmEuY2FsbCh0aGlzLGUubWVzc2FnZSl9fX1yZXR1cm57cGFyc2U6YihmdW5jdGlvbihjKXtyZXR1cm4gVWQoSlNPTi5wYXJzZShjKSl9KSxzdHJpbmdpZnk6YihmdW5jdGlvbihjKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoVGQoYykpfSkscHVibGljTmFtZToiSlNPTiJ9fTtmdW5jdGlvbiBSaChhKXtyZXR1cm4gSWIoVGQoYSx0aGlzLlQpKX07ZnVuY3Rpb24gU2goYSl7cmV0dXJuIE51bWJlcihUZChhLHRoaXMuVCkpfTtmdW5jdGlvbiBUaChhKXtyZXR1cm4gYT09PW51bGw/Im51bGwiOmE9PT12b2lkIDA/InVuZGVmaW5lZCI6YS50b1N0cmluZygpfTtmdW5jdGlvbiBVaChhLGIsYyl7dmFyIGQ9bnVsbCxlPSExO3JldHVybiBlP2Q6bnVsbH07dmFyIEFoPSJmbG9vciBjZWlsIHJvdW5kIG1heCBtaW4gYWJzIHBvdyBzcXJ0Ii5zcGxpdCgiICIpO2Z1bmN0aW9uIFZoKCl7dmFyIGE9e307cmV0dXJue1dyOmZ1bmN0aW9uKGIpe3JldHVybiBhLmhhc093blByb3BlcnR5KGIpP2FbYl06dm9pZCAwfSxLbzpmdW5jdGlvbihiLGMpe2FbYl09Y30scmVzZXQ6ZnVuY3Rpb24oKXthPXt9fX19ZnVuY3Rpb24gV2goYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gS2QucHJvdG90eXBlLmludm9rZS5hcHBseShhLFtiXS5jb25jYXQodyhPYS5hcHBseSgwLGFyZ3VtZW50cykpKSl9fQpmdW5jdGlvbiBYaChhLGIpe2lmKCFsaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwiYW55Il0sYXJndW1lbnRzKTt9CmZ1bmN0aW9uIFloKGEsYil7aWYoIWxoKGEpfHwhZWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsIlBpeGllTWFwIl0sYXJndW1lbnRzKTt9O3ZhciBaaD17fTt2YXIgJGg9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGtiO2lmKGEgaW5zdGFuY2VvZiBHZClmb3IodmFyIGM9YS5GYSgpLGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTthLmhhcyhlKSYmYi5zZXQoZSxhLmdldChlKSl9ZWxzZSBpZihhIGluc3RhbmNlb2YgS2QpZm9yKHZhciBmPWEuRmEoKSxnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBoPWZbZ107Yi5zZXQoaCxhLmdldChoKSl9ZWxzZSBmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKyliLnNldChsLGFbbF0pO3JldHVybiBifTsKWmgua2V5cz1mdW5jdGlvbihhKXtkaCh0aGlzLmdldE5hbWUoKSxhcmd1bWVudHMpO2lmKGEgaW5zdGFuY2VvZiBHZHx8YSBpbnN0YW5jZW9mIEtkfHx0eXBlb2YgYT09PSJzdHJpbmciKWE9JGgoYSk7aWYoYSBpbnN0YW5jZW9mIGtifHxhIGluc3RhbmNlb2YgU2QpcmV0dXJuIG5ldyBHZChhLkZhKCkpO3JldHVybiBuZXcgR2R9OwpaaC52YWx1ZXM9ZnVuY3Rpb24oYSl7ZGgodGhpcy5nZXROYW1lKCksYXJndW1lbnRzKTtpZihhIGluc3RhbmNlb2YgR2R8fGEgaW5zdGFuY2VvZiBLZHx8dHlwZW9mIGE9PT0ic3RyaW5nIilhPSRoKGEpO2lmKGEgaW5zdGFuY2VvZiBrYnx8YSBpbnN0YW5jZW9mIFNkKXJldHVybiBuZXcgR2QoYS5oYygpKTtyZXR1cm4gbmV3IEdkfTsKWmguZW50cmllcz1mdW5jdGlvbihhKXtkaCh0aGlzLmdldE5hbWUoKSxhcmd1bWVudHMpO2lmKGEgaW5zdGFuY2VvZiBHZHx8YSBpbnN0YW5jZW9mIEtkfHx0eXBlb2YgYT09PSJzdHJpbmciKWE9JGgoYSk7aWYoYSBpbnN0YW5jZW9mIGtifHxhIGluc3RhbmNlb2YgU2QpcmV0dXJuIG5ldyBHZChhLmZjKCkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBuZXcgR2QoYil9KSk7cmV0dXJuIG5ldyBHZH07ClpoLmZyZWV6ZT1mdW5jdGlvbihhKXsoYSBpbnN0YW5jZW9mIGtifHxhIGluc3RhbmNlb2YgU2R8fGEgaW5zdGFuY2VvZiBHZHx8YSBpbnN0YW5jZW9mIEtkKSYmYS5aYSgpO3JldHVybiBhfTtaaC5kZWxldGU9ZnVuY3Rpb24oYSxiKXtpZihhIGluc3RhbmNlb2Yga2ImJiFhLkhiKCkpcmV0dXJuIGEucmVtb3ZlKGIpLCEwO3JldHVybiExfTtmdW5jdGlvbiBMKGEsYil7dmFyIGM9T2EuYXBwbHkoMixhcmd1bWVudHMpLGQ9YS5ULnhiKCk7aWYoIWQpdGhyb3cgRXJyb3IoIk1pc3NpbmcgcHJvZ3JhbSBzdGF0ZS4iKTtpZihkLml0KXt0cnl7ZC5Sbi5hcHBseShudWxsLFtiXS5jb25jYXQodyhjKSkpfWNhdGNoKGUpe3Rocm93IHNiKCJUQUdHSU5HIiwyMSksZTt9cmV0dXJufWQuUm4uYXBwbHkobnVsbCxbYl0uY29uY2F0KHcoYykpKX07dmFyIGFpPWZ1bmN0aW9uKCl7dGhpcy5LPXt9O3RoaXMuSD17fTt0aGlzLk49ITA7fTthaS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jb250YWlucyhhKT90aGlzLktbYV06dm9pZCAwO3JldHVybiBjfTthaS5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuSy5oYXNPd25Qcm9wZXJ0eShhKX07CmFpLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSxiLGMpe2lmKHRoaXMuY29udGFpbnMoYSkpdGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYWRkIGEgZnVuY3Rpb24gd2hpY2ggYWxyZWFkeSBleGlzdHM6ICIrYSsiLiIpO2lmKHRoaXMuSC5oYXNPd25Qcm9wZXJ0eShhKSl0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhZGQgYW4gQVBJIHdpdGggYW4gZXhpc3RpbmcgcHJpdmF0ZSBBUEkgbmFtZTogIithKyIuIik7dGhpcy5LW2FdPWM/dm9pZCAwOnliKGIpP3RoKGEsYik6dWgoYSxiKX07ZnVuY3Rpb24gYmkoYSxiKXt2YXIgYz12b2lkIDA7cmV0dXJuIGN9O2Z1bmN0aW9uIGNpKCl7dmFyIGE9e307CnJldHVybiBhfTt2YXIgZGk9e30sZWk9KGRpW0YuRC5zYV09ImdjdSIsZGlbRi5ELmVoXT0iZXB0IixkaVtGLkQuU2JdPSJnY2xnYiIsZGlbRi5ELmxiXT0iZ2NsYXciLGRpW0YuRC56bF09ImdjbGlkX2xlbiIsZGlbRi5ELkJlXT0iZ2NsZ3MiLGRpW0YuRC5DZV09ImdjbGxwIixkaVtGLkQuRGVdPSJnY2xzdCIsZGlbRi5ELkVkXT0iYXVpZCIsZGlbRi5ELkJsXT0iYWUiLGRpW0YuRC5DZl09ImRzY250IixkaVtGLkQuRGZdPSJmY250ciIsZGlbRi5ELkVmXT0iZmxuZyIsZGlbRi5ELkZmXT0ibWlkIixkaVtGLkQud2ldPSJidHR5cGUiLGRpW0YuRC5LYl09ImdhY2lkIixkaVtGLkQuR2RdPSJsYWJlbCIsZGlbRi5ELkZlXT0iY2FwaSIsZGlbRi5ELmpoXT0icHNjZGwiLGRpW0YuRC5lYl09ImN1cnJlbmN5X2NvZGUiLGRpW0YuRC5HZV09InZkbHR2IixkaVtGLkQua2hdPSJjbG9jdCIsZGlbRi5ELkVsXT0iX2RiZyIsZGlbRi5ELkllXT0ib2VkZWxkIixkaVtGLkQuVmNdPSJlZGlkIixkaVtGLkQuTWRdPSJldm5pZCIsCmRpW0YuRC5FaV09ImV2amlkIixkaVtGLkQuTmRdPSJleGNpZCIsZGlbRi5ELnJoXT0iZ2FjIixkaVtGLkQuSmVdPSJnYWNnYiIsZGlbRi5ELk1sXT0iZ2FjbWNvdiIsZGlbRi5ELktlXT0iZ2RwciIsZGlbRi5ELlhjXT0iZ2RpZCIsZGlbRi5ELkxlXT0iX25nIixkaVtGLkQuY3FdPSJfb25vIixkaVtGLkQudGhdPSJncHBfc2lkIixkaVtGLkQudWhdPSJncHAiLGRpW0YuRC5QbF09ImdzYWV4cCIsZGlbRi5ELlZmXT0iX3R1IixkaVtGLkQuTWVdPSJmcm0iLGRpW0YuRC5LaV09Imd0bV91cCIsZGlbRi5ELlBkXT0ibHBzIixkaVtGLkQuTGldPSJkaWQiLGRpW0YuRC5RZF09ImZjbnRyIixkaVtGLkQuUmRdPSJmbG5nIixkaVtGLkQuU2RdPSJtaWQiLGRpW0YuRC5OZV09dm9pZCAwLGRpW0YuRC5NYl09InRpYmEiLGRpW0YuRC5XYl09InJkcCIsZGlbRi5ELnhjXT0iZWNzaWQiLGRpW0YuRC5aZl09ImdhX3VpZCIsZGlbRi5ELlVkXT0iZGVsb3BjIixkaVtGLkQuT2VdPSJnZHByX2NvbnNlbnQiLApkaVtGLkQuUGFdPSJvaWQiLGRpW0YuRC5kbV09Im9pZHNyYyIsZGlbRi5ELmZtXT0idXB0Z3MiLGRpW0YuRC5jZ109InVhYSIsZGlbRi5ELmRnXT0idWFiIixkaVtGLkQuZWddPSJ1YWZ2bCIsZGlbRi5ELmZnXT0idWFtYiIsZGlbRi5ELmdnXT0idWFtIixkaVtGLkQuaGddPSJ1YXAiLGRpW0YuRC5pZ109InVhcHYiLGRpW0YuRC5qZ109InVhdyIsZGlbRi5ELmdtXT0iZWNfbGF0IixkaVtGLkQuaG1dPSJlY19tZXRhIixkaVtGLkQuaW1dPSJlY19tIixkaVtGLkQuam1dPSJlY19zZWwiLGRpW0YuRC5rbV09ImVjX3MiLGRpW0YuRC5CY109ImVjX21vZGUiLGRpW0YuRC5mYl09InVzZXJJZCIsZGlbRi5ELmtnXT0idXNfcHJpdmFjeSIsZGlbRi5ELlFhXT0idmFsdWUiLGRpW0YuRC5xbV09Im1jb3YiLGRpW0YuRC5XaV09ImhuIixkaVtGLkQuVm1dPSJndG1fZWUiLGRpW0YuRC5ZaV09InVpcCIsZGlbRi5ELkpoXT0ibXQiLGRpW0YuRC5kZV09Im5wYSIsZGlbRi5ELllxXT0ic2dfdWMiLGRpW0YuRC55aV09Cm51bGwsZGlbRi5ELmJkXT1udWxsLGRpW0YuRC50Yl09bnVsbCxkaVtGLkQuSGFdPW51bGwsZGlbRi5ELnphXT1udWxsLGRpW0YuRC5VYV09bnVsbCxkaVtGLkQuUGVdPW51bGwsZGlbRi5ELmVkXT1udWxsLGRpW0YuRC5zaF09bnVsbCxkaVtGLkQuQmRdPW51bGwsZGlbRi5ELkNkXT1udWxsLGRpW0YuRC5maF09bnVsbCxkaVtGLkQuZ2hdPW51bGwsZGlbRi5ELlRhXT1udWxsLGRpW0YuRC5XY109bnVsbCxkaSk7ZnVuY3Rpb24gZmkoYSxiKXtpZihhKXt2YXIgYz1hLnNwbGl0KCJ4Iik7Yy5sZW5ndGg9PT0yJiYoZ2koYiwidV93IixjWzBdKSxnaShiLCJ1X2giLGNbMV0pKX19ZnVuY3Rpb24gaGkoYSl7dmFyIGI9aWk7Yj1iPT09dm9pZCAwP2ppOmI7cmV0dXJuIGtpKGxpKGEsYikpfWZ1bmN0aW9uIGtpKGEpe3JldHVybihhfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiEhYn0pLm1hcChmdW5jdGlvbihiKXtyZXR1cm4iKCIrW21pKGIudmFsdWUpLG1pKGIucXVhbnRpdHkpLG1pKGIuaXRlbV9pZCksbWkoYi5zdGFydF9kYXRlKSxtaShiLmVuZF9kYXRlKV0uam9pbigiKiIpKyIpIn0pLmpvaW4oIiIpfQpmdW5jdGlvbiBsaShhLGIpe3JldHVybihhfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiEhY30pLm1hcChmdW5jdGlvbihjKXtyZXR1cm57aXRlbV9pZDpiKGMpLHF1YW50aXR5OmMucXVhbnRpdHksdmFsdWU6Yy5wcmljZSxzdGFydF9kYXRlOmMuc3RhcnRfZGF0ZSxlbmRfZGF0ZTpjLmVuZF9kYXRlfX0pfWZ1bmN0aW9uIGppKGEpe3JldHVyblthLml0ZW1faWQsYS5pZCxhLml0ZW1fbmFtZV0uZmluZChmdW5jdGlvbihiKXtyZXR1cm4gYiE9bnVsbH0pfWZ1bmN0aW9uIG5pKGEpe2lmKGEmJmEubGVuZ3RoKXJldHVybiBhLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYiYmYi5lc3RpbWF0ZWRfZGVsaXZlcnlfZGF0ZT9iLmVzdGltYXRlZF9kZWxpdmVyeV9kYXRlOiIifSkuam9pbigiLCIpfWZ1bmN0aW9uIGdpKGEsYixjKXtjPT09dm9pZCAwfHxjPT09bnVsbHx8Yz09PSIiJiYheWdbYl18fChhW2JdPWMpfQpmdW5jdGlvbiBtaShhKXtyZXR1cm4gdHlwZW9mIGEhPT0ibnVtYmVyIiYmdHlwZW9mIGEhPT0ic3RyaW5nIj8iIjphLnRvU3RyaW5nKCl9O2Z1bmN0aW9uIG9pKCl7dGhpcy5ibG9ja1NpemU9LTF9O2Z1bmN0aW9uIHBpKGEsYil7dGhpcy5ibG9ja1NpemU9LTE7dGhpcy5ibG9ja1NpemU9NjQ7dGhpcy5OPVJhLlVpbnQ4QXJyYXk/bmV3IFVpbnQ4QXJyYXkodGhpcy5ibG9ja1NpemUpOkFycmF5KHRoaXMuYmxvY2tTaXplKTt0aGlzLlI9dGhpcy5LPTA7dGhpcy5IPVtdO3RoaXMuZmE9YTt0aGlzLlo9Yjt0aGlzLmphPVJhLkludDMyQXJyYXk/bmV3IEludDMyQXJyYXkoNjQpOkFycmF5KDY0KTtxaT09PXZvaWQgMCYmKFJhLkludDMyQXJyYXk/cWk9bmV3IEludDMyQXJyYXkocmkpOnFpPXJpKTt0aGlzLnJlc2V0KCl9U2EocGksb2kpO2Zvcih2YXIgc2k9W10sdGk9MDt0aTw2Mzt0aSsrKXNpW3RpXT0wO3ZhciB1aT1bXS5jb25jYXQoMTI4LHNpKTsKcGkucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5SPXRoaXMuSz0wO3ZhciBhO2lmKFJhLkludDMyQXJyYXkpYT1uZXcgSW50MzJBcnJheSh0aGlzLlopO2Vsc2V7dmFyIGI9dGhpcy5aLGM9Yi5sZW5ndGg7aWYoYz4wKXtmb3IodmFyIGQ9QXJyYXkoYyksZT0wO2U8YztlKyspZFtlXT1iW2VdO2E9ZH1lbHNlIGE9W119dGhpcy5IPWF9Owp2YXIgdmk9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWEuTixjPWEuamEsZD0wLGU9MDtlPGIubGVuZ3RoOyljW2QrK109YltlXTw8MjR8YltlKzFdPDwxNnxiW2UrMl08PDh8YltlKzNdLGU9ZCo0O2Zvcih2YXIgZj0xNjtmPDY0O2YrKyl7dmFyIGc9Y1tmLTE1XXwwLGg9Y1tmLTJdfDA7Y1tmXT0oKGNbZi0xNl18MCkrKChnPj4+N3xnPDwyNSleKGc+Pj4xOHxnPDwxNCleZz4+PjMpfDApKygoY1tmLTddfDApKygoaD4+PjE3fGg8PDE1KV4oaD4+PjE5fGg8PDEzKV5oPj4+MTApfDApfDB9Zm9yKHZhciBsPWEuSFswXXwwLG49YS5IWzFdfDAscD1hLkhbMl18MCxxPWEuSFszXXwwLHI9YS5IWzRdfDAsdD1hLkhbNV18MCx1PWEuSFs2XXwwLHY9YS5IWzddfDAseD0wO3g8NjQ7eCsrKXt2YXIgeT0oKGw+Pj4yfGw8PDMwKV4obD4+PjEzfGw8PDE5KV4obD4+PjIyfGw8PDEwKSkrKGwmbl5sJnBebiZwKXwwLHo9KHYrKChyPj4+NnxyPDwyNileKHI+Pj4xMXxyPDwyMSleKHI+Pj4yNXxyPDw3KSl8CjApKygoKHImdF5+ciZ1KSsocWlbeF18MCl8MCkrKGNbeF18MCl8MCl8MDt2PXU7dT10O3Q9cjtyPXErenwwO3E9cDtwPW47bj1sO2w9eit5fDB9YS5IWzBdPWEuSFswXStsfDA7YS5IWzFdPWEuSFsxXStufDA7YS5IWzJdPWEuSFsyXStwfDA7YS5IWzNdPWEuSFszXStxfDA7YS5IWzRdPWEuSFs0XStyfDA7YS5IWzVdPWEuSFs1XSt0fDA7YS5IWzZdPWEuSFs2XSt1fDA7YS5IWzddPWEuSFs3XSt2fDB9OwpwaS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGEsYil7Yj09PXZvaWQgMCYmKGI9YS5sZW5ndGgpO3ZhciBjPTAsZD10aGlzLks7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilmb3IoO2M8YjspdGhpcy5OW2QrK109YS5jaGFyQ29kZUF0KGMrKyksZD09dGhpcy5ibG9ja1NpemUmJih2aSh0aGlzKSxkPTApO2Vsc2V7dmFyIGUsZj10eXBlb2YgYTtlPWYhPSJvYmplY3QiP2Y6YT9BcnJheS5pc0FycmF5KGEpPyJhcnJheSI6ZjoibnVsbCI7aWYoZT09ImFycmF5Inx8ZT09Im9iamVjdCImJnR5cGVvZiBhLmxlbmd0aD09Im51bWJlciIpZm9yKDtjPGI7KXt2YXIgZz1hW2MrK107aWYoISgibnVtYmVyIj09dHlwZW9mIGcmJjA8PWcmJjI1NT49ZyYmZz09KGd8MCkpKXRocm93IEVycm9yKCJtZXNzYWdlIG11c3QgYmUgYSBieXRlIGFycmF5Iik7dGhpcy5OW2QrK109ZztkPT10aGlzLmJsb2NrU2l6ZSYmKHZpKHRoaXMpLGQ9MCl9ZWxzZSB0aHJvdyBFcnJvcigibWVzc2FnZSBtdXN0IGJlIHN0cmluZyBvciBhcnJheSIpOwp9dGhpcy5LPWQ7dGhpcy5SKz1ifTtwaS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGE9W10sYj10aGlzLlIqODt0aGlzLks8NTY/dGhpcy51cGRhdGUodWksNTYtdGhpcy5LKTp0aGlzLnVwZGF0ZSh1aSx0aGlzLmJsb2NrU2l6ZS0odGhpcy5LLTU2KSk7Zm9yKHZhciBjPTYzO2M+PTU2O2MtLSl0aGlzLk5bY109YiYyNTUsYi89MjU2O3ZpKHRoaXMpO2Zvcih2YXIgZD0wLGU9MDtlPHRoaXMuZmE7ZSsrKWZvcih2YXIgZj0yNDtmPj0wO2YtPTgpYVtkKytdPXRoaXMuSFtlXT4+ZiYyNTU7cmV0dXJuIGF9Owp2YXIgcmk9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCwKNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdLHFpO2Z1bmN0aW9uIHdpKCl7cGkuY2FsbCh0aGlzLDgseGkpfVNhKHdpLHBpKTt2YXIgeGk9WzE3NzkwMzM3MDMsMzE0NDEzNDI3NywxMDEzOTA0MjQyLDI3NzM0ODA3NjIsMTM1OTg5MzExOSwyNjAwODIyOTI0LDUyODczNDYzNSwxNTQxNDU5MjI1XTt2YXIgeWk9L15bMC05QS1GYS1mXXs2NH0kLztmdW5jdGlvbiB6aShhKXt0cnl7cmV0dXJuKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGEpfWNhdGNoKGIpe3JldHVybiBaYihhKX19ZnVuY3Rpb24gQWkoYSl7dmFyIGI9QTtpZihhPT09IiJ8fGE9PT0iZTAiKXJldHVybiBQcm9taXNlLnJlc29sdmUoYSk7dmFyIGM7aWYoKGM9Yi5jcnlwdG8pPT1udWxsPzA6Yy5zdWJ0bGUpe2lmKHlpLnRlc3QoYSkpcmV0dXJuIFByb21pc2UucmVzb2x2ZShhKTt0cnl7dmFyIGQ9emkoYSk7cmV0dXJuIGIuY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLGQpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIEJpKGUsYil9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiJlMiJ9KX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCJlMiIpfX1lbHNlIHJldHVybiBQcm9taXNlLnJlc29sdmUoImUxIil9CmZ1bmN0aW9uIENpKGEpe3RyeXt2YXIgYj1uZXcgd2k7Yi51cGRhdGUoemkoYSkpO3JldHVybiBiLmRpZ2VzdCgpfWNhdGNoKGMpe3JldHVybiJlMiJ9fWZ1bmN0aW9uIERpKGEpe3ZhciBiPUE7aWYoYT09PSIifHxhPT09ImUwInx8eWkudGVzdChhKSlyZXR1cm4gYTt2YXIgYz1DaShhKTtpZihjPT09ImUyIilyZXR1cm4iZTIiO3RyeXtyZXR1cm4gQmkoYyxiKX1jYXRjaChkKXtyZXR1cm4iZTIifX1mdW5jdGlvbiBCaShhLGIpe3ZhciBjPUFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoYSkpLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShkKX0pLmpvaW4oIiIpO3JldHVybiBiLmJ0b2EoYykucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89KyQvLCIiKX07ZnVuY3Rpb24gRWkoKXtmb3IodmFyIGE9ITEsYj0hMSxjPTA7YT09PWI7KWlmKGE9RGIoMCwxKT09PTAsYj1EYigwLDEpPT09MCxjKyssYz4zMClyZXR1cm47cmV0dXJuIGF9dmFyIEdpPXtzazpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIEZpLnNrKGEsYixjKX19LEhpPWZ1bmN0aW9uKCl7dGhpcy5zdHVkaWVzPXt9O3RoaXMuSD1FaX07CkhpLnByb3RvdHlwZS5zaz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5zdHVkaWVzW2JdO2lmKCEoKGM9PT12b2lkIDA/RGIoMCw5OTk5KTpjJTFFNCk8ZC5wcm9iYWJpbGl0eSooZC5jb250cm9sSWQyPzQ6MikqMUU0KSlyZXR1cm4gYTthOnt2YXIgZT1kLnN0dWR5SWQsZj1kLmV4cGVyaW1lbnRJZCxnPWQuY29udHJvbElkLGg9ZC5jb250cm9sSWQyO2lmKCEoKGEuZXhwfHx7fSlbZl18fChhLmV4cHx8e30pW2ddfHxoJiYoYS5leHB8fHt9KVtoXSkpe3ZhciBsPWMhPT12b2lkIDA/YyUyPT09MDp0aGlzLkgoKTtpZihsIT09dm9pZCAwKXt2YXIgbj1sPzA6MTtpZihoKXt2YXIgcD1jIT09dm9pZCAwPyhjPj4xKSUyPT09MDp0aGlzLkgoKTtpZihwPT09dm9pZCAwKWJyZWFrIGE7bnw9KHA/MDoxKTw8MX1uPT09MD9JaShhLGYsZSk6bj09PTE/SWkoYSxnLGUpOm49PT0yJiZJaShhLGgsZSl9fX1yZXR1cm4gYX07CnZhciBLaT1mdW5jdGlvbihhLGIpe3ZhciBjPUZpO3JldHVybiBjLnN0dWRpZXNbYl0/SmkoYyxiKXx8ISEoYS5leHB8fHt9KVtjLnN0dWRpZXNbYl0uZXhwZXJpbWVudElkXTohMX0sTGk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1GaTtyZXR1cm4gYy5zdHVkaWVzW2JdJiZjLnN0dWRpZXNbYl0uY29udHJvbElkJiYhSmkoYyxiKT8hIShhLmV4cHx8e30pW2Muc3R1ZGllc1tiXS5jb250cm9sSWRdOiExfSxNaT1mdW5jdGlvbihhLGIpe3ZhciBjPUZpO3JldHVybiBjLnN0dWRpZXNbYl0mJmMuc3R1ZGllc1tiXS5jb250cm9sSWQyJiYhSmkoYyxiKT8hIShhLmV4cHx8e30pW2Muc3R1ZGllc1tiXS5jb250cm9sSWQyXTohMX0sTmk9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YS5leHB8fHt9LGQ9bShPYmplY3Qua2V5cyhjKS5tYXAoTnVtYmVyKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWU7aWYoY1tmXT09PWIpcmV0dXJuIGZ9fSxKaT1mdW5jdGlvbihhLApiKXtyZXR1cm4hIWEuc3R1ZGllc1tiXS5hY3RpdmV8fGEuc3R1ZGllc1tiXS5wcm9iYWJpbGl0eT4uNX0sSWk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZXhwfHx7fTtkW2JdPWM7YS5leHA9ZH0sRmk9bmV3IEhpO3ZhciBpaj1mdW5jdGlvbigpe3RoaXMuSD1BLmdvb2dsZV90YWdfbWFuYWdlcj1BLmdvb2dsZV90YWdfbWFuYWdlcnx8e319LGpqO2Z1bmN0aW9uIGtqKGEsYil7bGooKTt2YXIgYz1qajtyZXR1cm4gYy5IW2FdPWMuSFthXXx8YigpfWZ1bmN0aW9uIG1qKGEpe2xqKCk7cmV0dXJuIGpqLkhbYV19ZnVuY3Rpb24gbmooYSxiKXtsaigpO2pqLkhbYV09Yn1mdW5jdGlvbiBvaihhKXt2YXIgYj1FKDUpO2xqKCk7dmFyIGM9amo7Yy5IW2JdPWMuSFtiXXx8YX1mdW5jdGlvbiBwaigpe3ZhciBhPUUoMTkpO2xqKCk7dmFyIGI9amo7cmV0dXJuIGIuSFthXT1iLkhbYV18fHt9fWZ1bmN0aW9uIHFqKCl7dmFyIGE9RSgxOSk7bGooKTtyZXR1cm4gamouSFthXX1mdW5jdGlvbiByaigpe2xqKCk7dmFyIGE9amosYj1hLkguc2VxdWVuY2V8fDE7YS5ILnNlcXVlbmNlPWIrMTtyZXR1cm4gYn1mdW5jdGlvbiBsaigpe2pqfHwoamo9bmV3IGlqKX07dmFyIHNqPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDE6cmV0dXJuIDA7Y2FzZSA0OTE6cmV0dXJuIDEyO2Nhc2UgNDgwOnJldHVybiAxMTtjYXNlIDQ5OTpyZXR1cm4gMTA7Y2FzZSA1MDA6cmV0dXJuIDY7Y2FzZSA0MjE6cmV0dXJuIDk7Y2FzZSA1NjE6cmV0dXJuIDE3O2Nhc2UgNDgyOnJldHVybiAxNTtjYXNlIDU3MDpyZXR1cm4gMTk7Y2FzZSA0OTU6cmV0dXJuIDEzO2Nhc2UgNTE0OnJldHVybiAxNjtjYXNlIDU3MzpyZXR1cm4gMTg7Y2FzZSAyMzU6cmV0dXJuIDg7Y2FzZSA1MzpyZXR1cm4gMTtjYXNlIDU0OnJldHVybiAyO2Nhc2UgNTI6cmV0dXJuIDQ7Y2FzZSA3NTpyZXR1cm4gM319LHRqPWZ1bmN0aW9uKGEsYil7YS5OW2JdPSEwO3ZhciBjPXNqKGIpO2MhPT12b2lkIDAmJihXZltjXT0hMCl9LE09ZnVuY3Rpb24oYSl7cmV0dXJuISF1ai5OW2FdfSx1aj1uZXcgZnVuY3Rpb24oKXt0aGlzLk49W107dGhpcy5LPVtdO3RoaXMuSD1bXTsKdGoodGhpcywxMzIpO3ZhciBhPU5mKDYsNkU0KTtYZlsxXT1hO3ZhciBiPU5mKDcsMSk7WGZbM109Yjt2YXIgYz1OZigzNSw1MCk7WGZbMl09Yzt2YXIgZD1OZig2OSwxNzc2NDQ4OTIwKTtYZls0XT1kOwp0aih0aGlzLDQzNSk7dGoodGhpcywxNDEpOwp9O3ZhciB2aj1mdW5jdGlvbigpe3RoaXMuSD1uZXcgU2V0O3RoaXMuSz1uZXcgU2V0fSx4aj1mdW5jdGlvbihhKXt2YXIgYj13ai5IO2E9YT09PXZvaWQgMD9bXTphO3ZhciBjPVtdLmNvbmNhdCh3KGIuSCkpLmNvbmNhdChbXS5jb25jYXQodyhiLkspKSkuY29uY2F0KGEpO2Muc29ydChmdW5jdGlvbihkLGUpe3JldHVybiBkLWV9KTtyZXR1cm4gY30seWo9ZnVuY3Rpb24oKXt2YXIgYT1bXS5jb25jYXQodyh3ai5ILkgpKTthLnNvcnQoZnVuY3Rpb24oYixjKXtyZXR1cm4gYi1jfSk7cmV0dXJuIGF9LHpqPWZ1bmN0aW9uKCl7dmFyIGE9d2ouSCxiPUUoNDQpO2EuSD1uZXcgU2V0O2lmKGIhPT0iIilmb3IodmFyIGM9bShiLnNwbGl0KCJ+IikpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1OdW1iZXIoZC52YWx1ZSk7aXNOYU4oZSl8fGEuSC5hZGQoZSl9fTt2YXIgQWo9e30sQmo9e19fY2w6MSxfX2VjbDoxLF9fZWhsOjEsX19ldmw6MSxfX2ZhbDoxLF9fZmlsOjEsX19mc2w6MSxfX2hsOjEsX19qZWw6MSxfX2xjbDoxLF9fc2RsOjEsX190bDoxLF9feXRsOjF9LENqPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30se19fcGF1c2VkOjEsX190ZzoxfSxCaiksRGosRWo9ITE7RGo9RWo7dmFyIEZqPSIiO0FqLnFqPUZqO3ZhciB3aj1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9bmV3IHZqfTt2YXIgR2o9LzpbMC05XSskLyxIaj0vXlxkK1wuZmxzXC5kb3VibGVjbGlja1wubmV0JC87ZnVuY3Rpb24gSWooYSxiLGMsZCl7dmFyIGU9SmooYSwhIWQsYiksZixnO3JldHVybiBjPyhnPWVbYl0pIT1udWxsP2c6W106KGY9ZVtiXSk9PW51bGw/dm9pZCAwOmZbMF19ZnVuY3Rpb24gSmooYSxiLGMpe2Zvcih2YXIgZD17fSxlPW0oYS5zcGxpdCgiJiIpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9bShmLnZhbHVlLnNwbGl0KCI9IikpLGg9Zy5uZXh0KCkudmFsdWUsbD15YShnKSxuPWRlY29kZVVSSUNvbXBvbmVudChoLnJlcGxhY2UoL1wrL2csIiAiKSk7aWYoYz09PXZvaWQgMHx8bj09PWMpe3ZhciBwPWwuam9pbigiPSIpO2Rbbl18fChkW25dPVtdKTtkW25dLnB1c2goYj9wOmRlY29kZVVSSUNvbXBvbmVudChwLnJlcGxhY2UoL1wrL2csIiAiKSkpfX1yZXR1cm4gZH0KZnVuY3Rpb24gS2ooYSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYSl9Y2F0Y2goYil7fX1mdW5jdGlvbiBMaihhLGIsYyxkLGUpe2ImJihiPVN0cmluZyhiKS50b0xvd2VyQ2FzZSgpKTtpZihiPT09InByb3RvY29sInx8Yj09PSJwb3J0IilhLnByb3RvY29sPU1qKGEucHJvdG9jb2wpfHxNaihBLmxvY2F0aW9uLnByb3RvY29sKTtiPT09InBvcnQiP2EucG9ydD1TdHJpbmcoTnVtYmVyKGEuaG9zdG5hbWU/YS5wb3J0OkEubG9jYXRpb24ucG9ydCl8fChhLnByb3RvY29sPT09Imh0dHAiPzgwOmEucHJvdG9jb2w9PT0iaHR0cHMiPzQ0MzoiIikpOmI9PT0iaG9zdCImJihhLmhvc3RuYW1lPShhLmhvc3RuYW1lfHxBLmxvY2F0aW9uLmhvc3RuYW1lKS5yZXBsYWNlKEdqLCIiKS50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gTmooYSxiLGMsZCxlKX0KZnVuY3Rpb24gTmooYSxiLGMsZCxlKXt2YXIgZixnPU1qKGEucHJvdG9jb2wpO2ImJihiPVN0cmluZyhiKS50b0xvd2VyQ2FzZSgpKTtzd2l0Y2goYil7Y2FzZSAidXJsX25vX2ZyYWdtZW50IjpmPU9qKGEpO2JyZWFrO2Nhc2UgInByb3RvY29sIjpmPWc7YnJlYWs7Y2FzZSAiaG9zdCI6Zj1hLmhvc3RuYW1lLnJlcGxhY2UoR2osIiIpLnRvTG93ZXJDYXNlKCk7aWYoYyl7dmFyIGg9L153d3dcZCpcLi8uZXhlYyhmKTtoJiZoWzBdJiYoZj1mLnN1YnN0cmluZyhoWzBdLmxlbmd0aCkpfWJyZWFrO2Nhc2UgInBvcnQiOmY9U3RyaW5nKE51bWJlcihhLnBvcnQpfHwoZz09PSJodHRwIj84MDpnPT09Imh0dHBzIj80NDM6IiIpKTticmVhaztjYXNlICJwYXRoIjphLnBhdGhuYW1lfHxhLmhvc3RuYW1lfHxzYigiVEFHR0lORyIsMSk7Zj1hLnBhdGhuYW1lLnN1YnN0cmluZygwLDEpPT09Ii8iP2EucGF0aG5hbWU6Ii8iK2EucGF0aG5hbWU7dmFyIGw9Zi5zcGxpdCgiLyIpOyhkfHxbXSkuaW5kZXhPZihsW2wubGVuZ3RoLQoxXSk+PTAmJihsW2wubGVuZ3RoLTFdPSIiKTtmPWwuam9pbigiLyIpO2JyZWFrO2Nhc2UgInF1ZXJ5IjpmPWEuc2VhcmNoLnJlcGxhY2UoIj8iLCIiKTtlJiYoZj1JaihmLGUsITEpKTticmVhaztjYXNlICJleHRlbnNpb24iOnZhciBuPWEucGF0aG5hbWUuc3BsaXQoIi4iKTtmPW4ubGVuZ3RoPjE/bltuLmxlbmd0aC0xXToiIjtmPWYuc3BsaXQoIi8iKVswXTticmVhaztjYXNlICJmcmFnbWVudCI6Zj1hLmhhc2gucmVwbGFjZSgiIyIsIiIpO2JyZWFrO2RlZmF1bHQ6Zj1hJiZhLmhyZWZ9cmV0dXJuIGZ9ZnVuY3Rpb24gTWooYSl7cmV0dXJuIGE/YS5yZXBsYWNlKCI6IiwiIikudG9Mb3dlckNhc2UoKToiIn1mdW5jdGlvbiBPaihhKXt2YXIgYj0iIjtpZihhJiZhLmhyZWYpe3ZhciBjPWEuaHJlZi5pbmRleE9mKCIjIik7Yj1jPDA/YS5ocmVmOmEuaHJlZi5zdWJzdHJpbmcoMCxjKX1yZXR1cm4gYn12YXIgUGo9e30sUWo9MDsKZnVuY3Rpb24gUmooYSl7dmFyIGI9UGpbYV07aWYoIWIpe3ZhciBjPUIuY3JlYXRlRWxlbWVudCgiYSIpO2EmJihjLmhyZWY9YSk7dmFyIGQ9Yy5wYXRobmFtZTtkWzBdIT09Ii8iJiYoYXx8c2IoIlRBR0dJTkciLDEpLGQ9Ii8iK2QpO3ZhciBlPWMuaG9zdG5hbWUucmVwbGFjZShHaiwiIik7Yj17aHJlZjpjLmhyZWYscHJvdG9jb2w6Yy5wcm90b2NvbCxob3N0OmMuaG9zdCxob3N0bmFtZTplLHBhdGhuYW1lOmQsc2VhcmNoOmMuc2VhcmNoLGhhc2g6Yy5oYXNoLHBvcnQ6Yy5wb3J0fTtRajw1JiYoUGpbYV09YixRaisrKX1yZXR1cm4gYn1mdW5jdGlvbiBTaihhLGIsYyl7dmFyIGQ9UmooYSk7cmV0dXJuIGFjKGIsZCxjKX0KZnVuY3Rpb24gVGooYSl7dmFyIGI9UmooQS5sb2NhdGlvbi5ocmVmKSxjPUxqKGIsImhvc3QiLCExKTtpZihjJiZjLm1hdGNoKEhqKSl7dmFyIGQ9TGooYiwicGF0aCIpO2lmKGQpe3ZhciBlPWQuc3BsaXQoYSsiPSIpO2lmKGUubGVuZ3RoPjEpcmV0dXJuIGVbMV0uc3BsaXQoIjsiKVswXS5zcGxpdCgiPyIpWzBdfX19O3ZhciBVaj17Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20iOiIvZyIsImh0dHBzOi8vd3d3Lmdvb2dsZWFkc2VydmljZXMuY29tIjoiL2FzIiwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbSI6Ii9ncyJ9LFZqPVsiL2FzL2QvY2NtL2NvbnZlcnNpb24iLCIvZy9kL2NjbS9jb252ZXJzaW9uIiwiL2dzL2NjbS9jb252ZXJzaW9uIiwiL2QvY2NtL2Zvcm0tZGF0YSJdO2Z1bmN0aW9uIFdqKCl7cmV0dXJuIElmKDQ3KT9KZig1NCkhPT0xOiExfWZ1bmN0aW9uIFhqKCl7dmFyIGE9RSgxOCksYj1hLmxlbmd0aDtyZXR1cm4gYVtiLTFdPT09Ii8iP2Euc3Vic3RyaW5nKDAsYi0xKTphfQpmdW5jdGlvbiBZaihhLGIpe2lmKGEpe3ZhciBjPSIiK2E7Yy5pbmRleE9mKCJodHRwOi8vIikhPT0wJiZjLmluZGV4T2YoImh0dHBzOi8vIikhPT0wJiYoYz0iaHR0cHM6Ly8iK2MpO2NbYy5sZW5ndGgtMV09PT0iLyImJihjPWMuc3Vic3RyaW5nKDAsYy5sZW5ndGgtMSkpO3JldHVybiBSaigiIitjK2IpLmhyZWZ9fWZ1bmN0aW9uIFpqKGEpe2lmKGFrKCkpcmV0dXJuIFlqKGEsIi9hbmFseXRpY3MuanMiKX1mdW5jdGlvbiBiayhhKXtyZXR1cm4gYT09PTJ8fGE9PT0zfWZ1bmN0aW9uIGNrKGEpe3JldHVybiBNKDU4OCkmJmE9PT0zfWZ1bmN0aW9uIGFrKCl7cmV0dXJuIFdqKCl8fElmKDUwKX1mdW5jdGlvbiBkaygpe3JldHVybiEhQWoucWomJkFqLnFqLnNwbGl0KCJAQCIpLmpvaW4oIiIpIT09IlNHVE1fVE9LRU4ifQpmdW5jdGlvbiBlayhhKXtmb3IodmFyIGI9bShbRi5ELmRkLEYuRC55Y10pLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXt2YXIgZD1PKGEsYy52YWx1ZSk7aWYoZClyZXR1cm4gZH19ZnVuY3Rpb24gZmsoYSxiLGMpe2M9Yz09PXZvaWQgMD8iIjpjO2lmKCFXaigpKXJldHVybiBhO3ZhciBkPWI/VWpbYV18fCIiOiIiO2Q9PT0iL2dzIiYmKGM9IiIpO3JldHVybiIiK1hqKCkrZCtjfWZ1bmN0aW9uIGdrKGEpe2lmKFdqKCkpZm9yKHZhciBiPW0oVmopLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXt2YXIgZD1jLnZhbHVlO2lmKFNiKGEsIiIrWGooKStkKSlyZXR1cm4iOjoifX0KZnVuY3Rpb24gaGsoKXt2YXIgYT1BO2lmKCFhKXJldHVybiExO3RyeXtpZihhPT09YS50b3ApcmV0dXJuITE7dmFyIGI9YS5sb2NhdGlvbi5wYXRobmFtZTtyZXR1cm4gYi5pbmRleE9mKCIvXy9zZXJ2aWNlX3dvcmtlci8iKSE9PS0xJiZUYihiLCIvc3dfaWZyYW1lLmh0bWwiKX1jYXRjaChjKXtyZXR1cm4hMX19O3ZhciBpaz0vZ3RhZ1suXC9danMvLGprPS9ndG1bLlwvXWpzLyxsaz1mdW5jdGlvbihhKXt2YXIgYj1raztpZigoYS5zY3JpcHRDb250YWluZXJJZHx8IiIpLmluZGV4T2YoIkdUTS0iKT49MCl7dmFyIGM7YTp7dmFyIGQsZT0oZD1hLnNjcmlwdEVsZW1lbnQpPT1udWxsP3ZvaWQgMDpkLnNyYztpZihlKXtmb3IodmFyIGY9SWYoNDcpLGc9UmooZSksaD1mP2cucGF0aG5hbWU6IiIrZy5ob3N0bmFtZStnLnBhdGhuYW1lLGw9Qi5zY3JpcHRzLG49IiIscD0wO3A8bC5sZW5ndGg7KytwKXt2YXIgcT1sW3BdO2lmKCEocS5pbm5lckhUTUwubGVuZ3RoPT09MHx8IWYmJnEuaW5uZXJIVE1MLmluZGV4T2YoYS5zY3JpcHRDb250YWluZXJJZHx8IlNIT1VMRF9OT1RfQkVfU0VUIik8MHx8cS5pbm5lckhUTUwuaW5kZXhPZihoKTwwKSl7aWYocS5pbm5lckhUTUwuaW5kZXhPZigiKGZ1bmN0aW9uKHcsZCxzLGwsaSkiKT49MCl7Yz1TdHJpbmcocCk7YnJlYWsgYX1uPVN0cmluZyhwKX19aWYobil7Yz0KbjticmVhayBhfX1jPXZvaWQgMH12YXIgcj1jO2lmKHIpcmV0dXJuIGIuSD0hMCxyfXZhciB0PVtdLnNsaWNlLmNhbGwoQi5zY3JpcHRzKTtyZXR1cm4gYS5zY3JpcHRFbGVtZW50P1N0cmluZyh0LmluZGV4T2YoYS5zY3JpcHRFbGVtZW50KSk6Ii0xIn0sbWs9ZnVuY3Rpb24oYSl7aWYoa2suSClyZXR1cm4iMSI7dmFyIGIsYz0oYj1hLnNjcmlwdEVsZW1lbnQpPT1udWxsP3ZvaWQgMDpiLnNyYztpZihjKXtpZihpay50ZXN0KGMpKXJldHVybiIzIjtpZihqay50ZXN0KGMpKXJldHVybiIyIn1yZXR1cm4iMCJ9LGtrPW5ldyBmdW5jdGlvbigpe3RoaXMuSD0hMX07ZnVuY3Rpb24gUChhKXtzYigiR1RNIixhKX07ZnVuY3Rpb24gbmsoYSl7dmFyIGI9b2soKS5kZXN0aW5hdGlvbkFycmF5W2FdLGM9b2soKS5kZXN0aW5hdGlvblthXTtyZXR1cm4gYiYmYi5sZW5ndGg+MD9iWzBdOmN9ZnVuY3Rpb24gcGsoYSxiKXt2YXIgYz1vaygpO2MucGVuZGluZ3x8KGMucGVuZGluZz1bXSk7Q2IoYy5wZW5kaW5nLGZ1bmN0aW9uKGQpe3JldHVybiBkLnRhcmdldC5jdGlkPT09YS5jdGlkJiZkLnRhcmdldC5pc0Rlc3RpbmF0aW9uPT09YS5pc0Rlc3RpbmF0aW9ufSl8fGMucGVuZGluZy5wdXNoKHt0YXJnZXQ6YSxvbkxvYWQ6Yn0pfWZ1bmN0aW9uIHFrKCl7dmFyIGE9QS5nb29nbGVfdGFnc19maXJzdF9wYXJ0eTtBcnJheS5pc0FycmF5KGEpfHwoYT1bXSk7Zm9yKHZhciBiPXt9LGM9bShhKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSliW2QudmFsdWVdPSEwO3JldHVybiBPYmplY3QuZnJlZXplKGIpfQp2YXIgcms9ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lcj17fTt0aGlzLmRlc3RpbmF0aW9uPXt9O3RoaXMuZGVzdGluYXRpb25BcnJheT17fTt0aGlzLmNhbm9uaWNhbD17fTt0aGlzLnBlbmRpbmc9W107dGhpcy5pbmplY3RlZEZpcnN0UGFydHlDb250YWluZXJzPXt9O3RoaXMuaW5qZWN0ZWRGaXJzdFBhcnR5Q29udGFpbmVycz1xaygpfTsKZnVuY3Rpb24gb2soKXt2YXIgYT1NYygiZ29vZ2xlX3RhZ19kYXRhIix7fSksYj1hLnRpZHI7YiYmdHlwZW9mIGI9PT0ib2JqZWN0Inx8KGI9bmV3IHJrLGEudGlkcj1iKTt2YXIgYz1iO2MuY29udGFpbmVyfHwoYy5jb250YWluZXI9e30pO2MuZGVzdGluYXRpb258fChjLmRlc3RpbmF0aW9uPXt9KTtjLmRlc3RpbmF0aW9uQXJyYXl8fChjLmRlc3RpbmF0aW9uQXJyYXk9e30pO2MuY2Fub25pY2FsfHwoYy5jYW5vbmljYWw9e30pO2MucGVuZGluZ3x8KGMucGVuZGluZz1bXSk7Yy5pbmplY3RlZEZpcnN0UGFydHlDb250YWluZXJzfHwoYy5pbmplY3RlZEZpcnN0UGFydHlDb250YWluZXJzPXFrKCkpO3JldHVybiBjfTtmdW5jdGlvbiBzaygpe3JldHVybiBJZig3KSYmdGsoKS5zb21lKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09RSg1KX0pfWZ1bmN0aW9uIHVrKCl7dmFyIGE7cmV0dXJuKGE9S2YoNTUpKSE9bnVsbD9hOltdfWZ1bmN0aW9uIHZrKCl7cmV0dXJuIEUoNil8fCJfIitFKDUpfWZ1bmN0aW9uIHdrKCl7dmFyIGE9RSgxMCk7cmV0dXJuIGE/YS5zcGxpdCgifCIpOltFKDUpXX1mdW5jdGlvbiB0aygpe3ZhciBhPUtmKDU5KTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gdHlwZW9mIGI9PT0ic3RyaW5nIn0pLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gYi5pbmRleE9mKCJHVE0tIikhPT0wfSk6W119ZnVuY3Rpb24geGsoKXt2YXIgYT15ayh6aygpKSxiPWEmJmEucGFyZW50O2lmKGIpcmV0dXJuIHlrKGIpfQpmdW5jdGlvbiBBaygpe3ZhciBhPXlrKHprKCkpO2lmKGEpe2Zvcig7YS5wYXJlbnQ7KXt2YXIgYj15ayhhLnBhcmVudCk7aWYoIWIpYnJlYWs7YT1ifXJldHVybiBhfX1mdW5jdGlvbiB5ayhhKXt2YXIgYj1vaygpO3JldHVybiBhLmlzRGVzdGluYXRpb24/bmsoYS5jdGlkKTpiLmNvbnRhaW5lclthLmN0aWRdfWZ1bmN0aW9uIEJrKCl7dmFyIGE9b2soKTtpZihhLnBlbmRpbmcpe2Zvcih2YXIgYixjPVtdLGQ9ITEsZT13aygpLGY9dGsoKSxnPXt9LGg9MDtoPGEucGVuZGluZy5sZW5ndGg7Zz17Umc6dm9pZCAwfSxoKyspZy5SZz1hLnBlbmRpbmdbaF0sQ2IoZy5SZy50YXJnZXQuaXNEZXN0aW5hdGlvbj9mOmUsZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuPT09bC5SZy50YXJnZXQuY3RpZH19KGcpKT9kfHwoYj1nLlJnLm9uTG9hZCxkPSEwKTpjLnB1c2goZy5SZyk7YS5wZW5kaW5nPWM7aWYoYil0cnl7Yih2aygpKX1jYXRjaChsKXt9fX0KZnVuY3Rpb24gQ2soKXtmb3IodmFyIGE9RSg1KSxiPXdrKCksYz10aygpLGQ9dWsoKSxlPWZ1bmN0aW9uKHEscil7dmFyIHQ9e2Nhbm9uaWNhbENvbnRhaW5lcklkOkUoNiksc2NyaXB0Q29udGFpbmVySWQ6YSxzdGF0ZToyLGNvbnRhaW5lcnM6Yi5zbGljZSgpLGRlc3RpbmF0aW9uczpjLnNsaWNlKCl9O0pjJiYodC5zY3JpcHRFbGVtZW50PUpjKTtLYyYmKHQuc2NyaXB0U291cmNlPUtjKTt4aygpPT09dm9pZCAwJiYodC5odG1sTG9hZE9yZGVyPWxrKHQpLHQubG9hZFNjcmlwdFR5cGU9bWsodCkpO3ZhciB1LHY7c3dpdGNoKHIpe2Nhc2UgMDp1PWZ1bmN0aW9uKHope2YuY29udGFpbmVyW3FdPXp9O3Y9Zi5jb250YWluZXJbcV07YnJlYWs7Y2FzZSAxOnU9ZnVuY3Rpb24oeil7Zi5kZXN0aW5hdGlvbkFycmF5W3FdPWYuZGVzdGluYXRpb25BcnJheVtxXXx8W107Zi5kZXN0aW5hdGlvbkFycmF5W3FdLnVuc2hpZnQoeil9O3ZhciB4LHk9KCh4PWYuZGVzdGluYXRpb25BcnJheVtxXSk9PQpudWxsP3ZvaWQgMDp4WzBdKXx8Zi5kZXN0aW5hdGlvbltxXTsheXx8eS5zdGF0ZSE9PTAmJnkuc3RhdGUhPT0xfHwodj15KTticmVhaztjYXNlIDI6dT1mdW5jdGlvbih6KXtmLmRlc3RpbmF0aW9uQXJyYXlbcV09Zi5kZXN0aW5hdGlvbkFycmF5W3FdfHxbXTtmLmRlc3RpbmF0aW9uQXJyYXlbcV0ucHVzaCh6KX0sdj12b2lkIDB9dSYmKHY/KHYuc3RhdGU9PT0wJiZQKDkzKSxuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHYsdCkpOnUodCkpfSxmPW9rKCksZz1tKGIpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKWUoaC52YWx1ZSwwKTtmb3IodmFyIGw9bShjKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl7dmFyIHA9bi52YWx1ZTtkLmluY2x1ZGVzKHApP2UocCwxKTplKHAsMil9Zi5jYW5vbmljYWxbdmsoKV09e307QmsoKX1mdW5jdGlvbiBEaygpe3ZhciBhPXZrKCk7cmV0dXJuISFvaygpLmNhbm9uaWNhbFthXX0KZnVuY3Rpb24gRWsoYSl7cmV0dXJuISFvaygpLmNvbnRhaW5lclthXX1mdW5jdGlvbiBGaygpe3ZhciBhPXprKCksYj15ayhhKTtyZXR1cm4gYiYmYi5jb250ZXh0fWZ1bmN0aW9uIEdrKGEpe3ZhciBiPW5rKGEpO3JldHVybiBiP2Iuc3RhdGUhPT0wOiExfWZ1bmN0aW9uIHprKCl7cmV0dXJue2N0aWQ6RSg1KSxpc0Rlc3RpbmF0aW9uOklmKDcpfX1mdW5jdGlvbiBIayhhLGIsYyl7dmFyIGQ9emsoKSxlPW9rKCkuY29udGFpbmVyW2FdO2UmJmUuc3RhdGUhPT0zfHwob2soKS5jb250YWluZXJbYV09e3N0YXRlOjEsY29udGV4dDpiLHBhcmVudDpkfSxwayh7Y3RpZDphLGlzRGVzdGluYXRpb246ITF9LGMpKX1mdW5jdGlvbiBJayhhLGIsYyl7dmFyIGQ9b2soKSxlPW5rKGEpO2U/ZS5zdGF0ZT0xOihlPXtjb250ZXh0OmIsc3RhdGU6MSxwYXJlbnQ6emsoKX0sZC5kZXN0aW5hdGlvbkFycmF5W2FdPVtlXSk7cGsoe2N0aWQ6YSxpc0Rlc3RpbmF0aW9uOiEwfSxjKX0KZnVuY3Rpb24gSmsoYSxiLGMsZCl7dmFyIGU9b2soKSxmPW5rKGEpO2Y/Zi5zdGF0ZT0wOihmPXtzdGF0ZTowLHRyYW5zcG9ydFVybDpiLGNvbnRleHQ6YyxwYXJlbnQ6emsoKX0sZS5kZXN0aW5hdGlvbkFycmF5W2FdPVtmXSk7cGsoe2N0aWQ6YSxpc0Rlc3RpbmF0aW9uOiEwfSxkKTtQKDkxKX1mdW5jdGlvbiBLaygpe3ZhciBhPW9rKCkuY29udGFpbmVyLGI7Zm9yKGIgaW4gYSlpZihhLmhhc093blByb3BlcnR5KGIpJiZhW2JdLnN0YXRlPT09MSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBMaygpe3ZhciBhPXt9O0diKG9rKCkuZGVzdGluYXRpb24sZnVuY3Rpb24oYixjKXsoYz09bnVsbD92b2lkIDA6Yy5zdGF0ZSk9PT0wJiYoYVtiXT1jKX0pO0diKG9rKCkuZGVzdGluYXRpb25BcnJheSxmdW5jdGlvbihiLGMpe3ZhciBkPWNbMF07KGQ9PW51bGw/dm9pZCAwOmQuc3RhdGUpPT09MCYmKGFbYl09ZCl9KTtyZXR1cm4gYX0KZnVuY3Rpb24gTWsoYSl7cmV0dXJuISEoYSYmYS5wYXJlbnQmJmEuY29udGV4dCYmYS5jb250ZXh0LnNvdXJjZT09PTEmJmEucGFyZW50LmN0aWQuaW5kZXhPZigiR1RNLSIpIT09MCl9ZnVuY3Rpb24gTmsoKXtmb3IodmFyIGE9b2soKSxiPW0od2soKSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpaWYoYS5pbmplY3RlZEZpcnN0UGFydHlDb250YWluZXJzW2MudmFsdWVdKXJldHVybiEwO3JldHVybiExfTt2YXIgT2s9ZnVuY3Rpb24oKXt9O09rLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQifTt2YXIgUGs9bmV3IE9rO3ZhciBYaz1mdW5jdGlvbigpe3RoaXMuc3RvcmFnZT1ZYSgpfTtYay5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5zdG9yYWdlLnNldChTdHJpbmcoYSksYil9O1hrLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc3RvcmFnZS5nZXQoU3RyaW5nKGEpKX07dmFyIFlrO2Z1bmN0aW9uIFprKGEsYil7WWt8fChZaz1uZXcgWGspO1lrLnNldChhLGIpfWZ1bmN0aW9uICRrKGEpe1lrfHwoWWs9bmV3IFhrKTtyZXR1cm4gWWsuZ2V0KGEpfWZ1bmN0aW9uIGFsKGEsYil7WWt8fChZaz1uZXcgWGspO3ZhciBjPVlrO2Muc3RvcmFnZS5oYXMoU3RyaW5nKGEpKXx8Yy5zdG9yYWdlLnNldChTdHJpbmcoYSksYigpKTtyZXR1cm4gYy5zdG9yYWdlLmdldChTdHJpbmcoYSkpfTtmdW5jdGlvbiBibChhLGIpe2Z1bmN0aW9uIGMoZyl7dmFyIGg9UmooZyksbD1MaihoLCJwcm90b2NvbCIpLG49TGooaCwiaG9zdCIsITApLHA9TGooaCwicG9ydCIpLHE9TGooaCwicGF0aCIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXC8kLywiIik7aWYobD09PXZvaWQgMHx8bD09PSJodHRwIiYmcD09PSI4MCJ8fGw9PT0iaHR0cHMiJiZwPT09IjQ0MyIpbD0id2ViIixwPSJkZWZhdWx0IjtyZXR1cm5bbCxuLHAscV19Zm9yKHZhciBkPWMoU3RyaW5nKGEpKSxlPWMoU3RyaW5nKGIpKSxmPTA7ZjxkLmxlbmd0aDtmKyspaWYoZFtmXSE9PWVbZl0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gY2woYSl7cmV0dXJuIGRsKGEpPzE6MH0KZnVuY3Rpb24gZGwoYSl7dmFyIGI9YS5hcmcwLGM9YS5hcmcxO2lmKGEuYW55X29mJiZBcnJheS5pc0FycmF5KGMpKXtmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9RWQoYSx7fSk7RWQoe2FyZzE6Y1tkXSxhbnlfb2Y6dm9pZCAwfSxlKTtpZihjbChlKSlyZXR1cm4hMH1yZXR1cm4hMX1zd2l0Y2goYVsiZnVuY3Rpb24iXSl7Y2FzZSAiX2NuIjpyZXR1cm4gS2coYixjKTtjYXNlICJfY3NzIjpyZXR1cm4gR2coYixjKTtjYXNlICJfZXciOnJldHVybiBIZyhiLGMpO2Nhc2UgIl9lcSI6cmV0dXJuIExnKGIsYyk7Y2FzZSAiX2dlIjpyZXR1cm4gTWcoYixjKTtjYXNlICJfZ3QiOnJldHVybiBPZyhiLGMpO2Nhc2UgIl9sYyI6cmV0dXJuIElnKGIsYyk7Y2FzZSAiX2xlIjpyZXR1cm4gTmcoYixjKTtjYXNlICJfbHQiOnJldHVybiBQZyhiLGMpO2Nhc2UgIl9yZSI6cmV0dXJuIEpnKGIsYyxhLmlnbm9yZV9jYXNlLGFsKDMsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1hcH0pKTtjYXNlICJfc3ciOnJldHVybiBRZyhiLApjKTtjYXNlICJfdW0iOnJldHVybiBibChiLGMpfXJldHVybiExfTtmdW5jdGlvbiBlbChhLGIsYyxkLGUpe2lmKEFycmF5LmlzQXJyYXkoYSkpe3ZhciBmO3N3aXRjaChhWzBdKXtjYXNlICJmdW5jdGlvbl9pZCI6cmV0dXJuIGFbMV07Y2FzZSAibGlzdCI6Zj1bXTtmb3IodmFyIGc9MTtnPGEubGVuZ3RoO2crKylmLnB1c2goZWwoYVtnXSxiLGMsZCxlKSk7cmV0dXJuIGY7Y2FzZSAibWFjcm8iOnZhciBoPWRbYVsxXV07cmV0dXJuIGg/aC5ldmFsdWF0ZShiLGUpOnZvaWQgMDtjYXNlICJtYXAiOmY9e307Zm9yKHZhciBsPTE7bDxhLmxlbmd0aDtsKz0yKWZbZWwoYVtsXSxiLGMsZCxlKV09ZWwoYVtsKzFdLGIsYyxkLGUpO3JldHVybiBmO2Nhc2UgInRlbXBsYXRlIjpmPVtdO2Zvcih2YXIgbj0hMSxwPTE7cDxhLmxlbmd0aDtwKyspe3ZhciBxPWVsKGFbcF0sYixjLGQsZSk7Zi5wdXNoKHEpfXJldHVybiBmLmpvaW4oIiIpO2Nhc2UgImVzY2FwZSI6Zj1lbChhWzFdLGIsYyxkLGUpO2Y9U3RyaW5nKGYpO2Zvcih2YXIgeT0yO3k8YS5sZW5ndGg7eSsrKVVpW2FbeV1dJiYoZj1VaVthW3ldXShmKSk7cmV0dXJuIGY7Y2FzZSAidGFnIjp2YXIgej1hWzFdO2lmKCFjW3pdKXRocm93IEVycm9yKCJVbmFibGUgdG8gcmVzb2x2ZSB0YWcgcmVmZXJlbmNlICIrCnorIi4iKTtyZXR1cm57Ym86YVsyXSxpbmRleDp6fTtjYXNlICJ6YiI6dmFyIEM9e30sRD0oQ1tHZi5ZYl09YVsxXSxDLmFyZzA9ZWwoYVsyXSxiLGMsZCxlKSxDLmFyZzE9ZWwoYVszXSxiLGMsZCxlKSxDLmlnbm9yZV9jYXNlPWVsKGFbNV0sYixjLGQsZSksQyksST1jbChEKSxHPSEhYVs0XTtyZXR1cm4gR3x8SSE9PTI/RyE9PShJPT09MSk6bnVsbDtkZWZhdWx0OnRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGV4cGFuZCB1bmtub3duIFZhbHVlIHR5cGU6ICIrYVswXSsiLiIpO319cmV0dXJuIGF9O2Z1bmN0aW9uIGZsKGEpe3JldHVybiBhJiZhLmluZGV4T2YoInBlbmRpbmc6Iik9PT0wP2dsKGEuc3Vic3RyKDgpKTohMX1mdW5jdGlvbiBnbChhKXtpZihhPT1udWxsfHxhLmxlbmd0aD09PTApcmV0dXJuITE7dmFyIGI9TnVtYmVyKGEpLGM9TmIoKTtyZXR1cm4gYjxjKzNFNSYmYj5jLTlFNX07dmFyIGhsPSExLGlsPSExLGpsPSExLGtsPTAsbGw9ITEsbWw9dm9pZCAwLG5sPVtdO2Z1bmN0aW9uIG9sKGEpe2lmKGtsPT09MClsbCYmbmwmJihubC5sZW5ndGg+PTEwMCYmbmwuc2hpZnQoKSxubC5wdXNoKGEpKTtlbHNlIGlmKHBsKCkpe3ZhciBiPUUoNDEpLGM9TWMoYixbXSk7Yy5sZW5ndGg+PTUwJiZjLnNoaWZ0KCk7Yy5wdXNoKGEpfX1mdW5jdGlvbiBxbCgpe2lsfHwocmwoKSxzbChrbCkpfWZ1bmN0aW9uIHNsKGEpe2lmKCFpbHx8a2w9PT0yJiZhPT09MSlpZihpbD0hMCxqbCYmKGFkKEIsIlRBUHJvZERlYnVnU2lnbmFsIixxbCksamw9ITEpLG1sIT09dm9pZCAwJiYoQS5jbGVhclRpbWVvdXQobWwpLG1sPXZvaWQgMCksa2w9YSxhPT09MSl7dmFyIGI9bmw7bmw9dm9pZCAwO2I9PW51bGx8fGIuZm9yRWFjaChmdW5jdGlvbihjKXtvbChjKX0pfX0KZnVuY3Rpb24gcmwoKXt2YXIgYT1CLmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRhdGEtdGFnLWFzc2lzdGFudC1wcm9kLXByZXNlbnQiKTtnbChhKT9rbD0xOiFmbChhKXx8aGx8fGpsP2tsPTI6KGpsPSEwLCRjKEIsIlRBUHJvZERlYnVnU2lnbmFsIixxbCwhMSksbWw9QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWx8fChybCgpLHNsKGtsKSk7aGw9ITB9LDIwMCkpfWZ1bmN0aW9uIHBsKCl7aWYoIWxsKXJldHVybiExO3N3aXRjaChrbCl7Y2FzZSAxOmNhc2UgMDpyZXR1cm4hMDtjYXNlIDI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIHRsKCl7dmFyIGE9TWMoImdvb2dsZV90YWdfZGF0YSIse30pO3JldHVybiBhLmljcz1hLmljc3x8bmV3IHVsfXZhciB1bD1mdW5jdGlvbigpe3RoaXMuZW50cmllcz17fTt0aGlzLndhaXRQZXJpb2RUaW1lZE91dD10aGlzLndhc1NldExhdGU9dGhpcy5hY2Nlc3NlZEFueT10aGlzLmFjY2Vzc2VkRGVmYXVsdD10aGlzLnVzZWRJbXBsaWNpdD10aGlzLnVzZWRVcGRhdGU9dGhpcy51c2VkRGVmYXVsdD10aGlzLnVzZWREZWNsYXJlPXRoaXMuYWN0aXZlPSExO3RoaXMuSD1bXX07CnVsLnByb3RvdHlwZS5kZWZhdWx0PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3RoaXMudXNlZERlZmF1bHR8fHRoaXMudXNlZERlY2xhcmV8fCF0aGlzLmFjY2Vzc2VkRGVmYXVsdCYmIXRoaXMuYWNjZXNzZWRBbnl8fCh0aGlzLndhc1NldExhdGU9ITApO3RoaXMudXNlZERlZmF1bHQ9dGhpcy5hY3RpdmU9ITA7c2IoIlRBR0dJTkciLDE5KTtiPT1udWxsP3NiKCJUQUdHSU5HIiwxOCk6dmwodGhpcyxhLGI9PT0iZ3JhbnRlZCIsYyxkLGUsZixnKX07dWwucHJvdG90eXBlLndhaXRGb3JVcGRhdGU9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKXZsKHRoaXMsYVtkXSx2b2lkIDAsdm9pZCAwLCIiLCIiLGIsYyl9Owp2YXIgdmw9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXt2YXIgbD1hLmVudHJpZXMsbj1sW2JdfHx7fSxwPW4ucmVnaW9uLHE9ZCYmemIoZCk/ZC50b1VwcGVyQ2FzZSgpOnZvaWQgMDtlPWUudG9VcHBlckNhc2UoKTtmPWYudG9VcHBlckNhc2UoKTtpZihlPT09IiJ8fHE9PT1mfHwocT09PWU/cCE9PWY6IXEmJiFwKSl7dmFyIHI9ISEoZyYmZz4wJiZuLnVwZGF0ZT09PXZvaWQgMCksdD17cmVnaW9uOnEsZGVjbGFyZV9yZWdpb246bi5kZWNsYXJlX3JlZ2lvbixpbXBsaWNpdDpuLmltcGxpY2l0LGRlZmF1bHQ6YyE9PXZvaWQgMD9jOm4uZGVmYXVsdCxkZWNsYXJlOm4uZGVjbGFyZSx1cGRhdGU6bi51cGRhdGUscXVpZXQ6cn07aWYoZSE9PSIifHxuLmRlZmF1bHQhPT0hMSlsW2JdPXQ7ciYmQS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bFtiXT09PXQmJnQucXVpZXQmJihzYigiVEFHR0lORyIsMiksYS53YWl0UGVyaW9kVGltZWRPdXQ9ITAsYS5jbGVhclRpbWVvdXQoYix2b2lkIDAsaCksCmEubm90aWZ5TGlzdGVuZXJzKCkpfSxnKX19O2s9dWwucHJvdG90eXBlO2suY2xlYXJUaW1lb3V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bYV0sZT1jLmRlbGVnYXRlZENvbnNlbnRUeXBlcyxmO2ZvcihmIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShmKSYmZVtmXT09PWEmJmQucHVzaChmKTt2YXIgZz10aGlzLmVudHJpZXNbYV18fHt9LGg9dGhpcy5nZXRDb25zZW50U3RhdGUoYSxjKTtpZihnLnF1aWV0KXtnLnF1aWV0PSExO2Zvcih2YXIgbD1tKGQpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXdsKHRoaXMsbi52YWx1ZSl9ZWxzZSBpZihiIT09dm9pZCAwJiZoIT09Yilmb3IodmFyIHA9bShkKSxxPXAubmV4dCgpOyFxLmRvbmU7cT1wLm5leHQoKSl3bCh0aGlzLHEudmFsdWUpfTsKay51cGRhdGU9ZnVuY3Rpb24oYSxiLGMpe3RoaXMudXNlZERlZmF1bHR8fHRoaXMudXNlZERlY2xhcmV8fHRoaXMudXNlZFVwZGF0ZXx8IXRoaXMuYWNjZXNzZWRBbnl8fCh0aGlzLndhc1NldExhdGU9ITApO3RoaXMudXNlZFVwZGF0ZT10aGlzLmFjdGl2ZT0hMDtpZihiIT1udWxsKXt2YXIgZD10aGlzLmdldENvbnNlbnRTdGF0ZShhLGMpLGU9dGhpcy5lbnRyaWVzOyhlW2FdPWVbYV18fHt9KS51cGRhdGU9Yj09PSJncmFudGVkIjt0aGlzLmNsZWFyVGltZW91dChhLGQsYyl9fTsKay5kZWNsYXJlPWZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy51c2VkRGVjbGFyZT10aGlzLmFjdGl2ZT0hMDt2YXIgZj10aGlzLmVudHJpZXMsZz1mW2FdfHx7fSxoPWcuZGVjbGFyZV9yZWdpb24sbD1jJiZ6YihjKT9jLnRvVXBwZXJDYXNlKCk6dm9pZCAwO2Q9ZC50b1VwcGVyQ2FzZSgpO2U9ZS50b1VwcGVyQ2FzZSgpO2lmKGQ9PT0iInx8bD09PWV8fChsPT09ZD9oIT09ZTohbCYmIWgpKXt2YXIgbj17cmVnaW9uOmcucmVnaW9uLGRlY2xhcmVfcmVnaW9uOmwsZGVjbGFyZTpiPT09ImdyYW50ZWQiLGltcGxpY2l0OmcuaW1wbGljaXQsZGVmYXVsdDpnLmRlZmF1bHQsdXBkYXRlOmcudXBkYXRlLHF1aWV0OmcucXVpZXR9O2lmKGQhPT0iInx8Zy5kZWNsYXJlIT09ITEpZlthXT1ufX07CmsuaW1wbGljaXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLnVzZWRJbXBsaWNpdD0hMDt2YXIgYz10aGlzLmVudHJpZXMsZD1jW2FdPWNbYV18fHt9O2QuaW1wbGljaXQhPT0hMSYmKGQuaW1wbGljaXQ9Yj09PSJncmFudGVkIil9OwprLmdldENvbnNlbnRTdGF0ZT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZW50cmllcyxkPWNbYV18fHt9LGU9ZC51cGRhdGU7aWYoZSE9PXZvaWQgMClyZXR1cm4gZT8xOjI7aWYoYi51c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHMpe3ZhciBmPWIuY29udGFpbmVyU2NvcGVkRGVmYXVsdHNbYV07aWYoZj09PTMpcmV0dXJuIDE7aWYoZj09PTIpcmV0dXJuIDJ9ZWxzZSBpZihlPWQuZGVmYXVsdCxlIT09dm9pZCAwKXJldHVybiBlPzE6MjtpZihiPT1udWxsPzA6Yi5kZWxlZ2F0ZWRDb25zZW50VHlwZXMuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBnPWIuZGVsZWdhdGVkQ29uc2VudFR5cGVzW2FdLGg9Y1tnXXx8e307ZT1oLnVwZGF0ZTtpZihlIT09dm9pZCAwKXJldHVybiBlPzE6MjtpZihiLnVzZWRDb250YWluZXJTY29wZWREZWZhdWx0cyl7dmFyIGw9Yi5jb250YWluZXJTY29wZWREZWZhdWx0c1tnXTtpZihsPT09MylyZXR1cm4gMTtpZihsPT09MilyZXR1cm4gMn1lbHNlIGlmKGU9CmguZGVmYXVsdCxlIT09dm9pZCAwKXJldHVybiBlPzE6Mn1lPWQuZGVjbGFyZTtpZihlIT09dm9pZCAwKXJldHVybiBlPzE6MjtlPWQuaW1wbGljaXQ7cmV0dXJuIGUhPT12b2lkIDA/ZT8zOjQ6MH07ay5hZGRMaXN0ZW5lcj1mdW5jdGlvbihhLGIpe3RoaXMuSC5wdXNoKHtjb25zZW50VHlwZXM6YSxpZTpifSl9O3ZhciB3bD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8YS5ILmxlbmd0aDsrK2Mpe3ZhciBkPWEuSFtjXTtBcnJheS5pc0FycmF5KGQuY29uc2VudFR5cGVzKSYmZC5jb25zZW50VHlwZXMuaW5kZXhPZihiKSE9PS0xJiYoZC54bz0hMCl9fTt1bC5wcm90b3R5cGUubm90aWZ5TGlzdGVuZXJzPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yzx0aGlzLkgubGVuZ3RoOysrYyl7dmFyIGQ9dGhpcy5IW2NdO2lmKGQueG8pe2QueG89ITE7dHJ5e2QuaWUoe2NvbnNlbnRFdmVudElkOmEsY29uc2VudFByaW9yaXR5SWQ6Yn0pfWNhdGNoKGUpe319fX07dmFyIHhsPSExLHlsPSExLHpsPXt9LEFsPXtkZWxlZ2F0ZWRDb25zZW50VHlwZXM6e30sY29yZVBsYXRmb3JtU2VydmljZXM6e30sdXNlZENvcmVQbGF0Zm9ybVNlcnZpY2VzOiExLHNlbGVjdGVkQWxsQ29yZVBsYXRmb3JtU2VydmljZXM6ITEsY29udGFpbmVyU2NvcGVkRGVmYXVsdHM6KHpsLmFkX3N0b3JhZ2U9MSx6bC5hbmFseXRpY3Nfc3RvcmFnZT0xLHpsLmFkX3VzZXJfZGF0YT0xLHpsLmFkX3BlcnNvbmFsaXphdGlvbj0xLHpsKSx1c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHM6ITF9O2Z1bmN0aW9uIEJsKGEpe3ZhciBiPXRsKCk7Yi5hY2Nlc3NlZEFueT0hMDtyZXR1cm4oemIoYSk/W2FdOmEpLmV2ZXJ5KGZ1bmN0aW9uKGMpe3N3aXRjaChiLmdldENvbnNlbnRTdGF0ZShjLEFsKSl7Y2FzZSAxOmNhc2UgMzpyZXR1cm4hMDtjYXNlIDI6Y2FzZSA0OnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fSl9CmZ1bmN0aW9uIENsKGEpe3ZhciBiPXRsKCk7Yi5hY2Nlc3NlZEFueT0hMDtyZXR1cm4gYi5nZXRDb25zZW50U3RhdGUoYSxBbCl9ZnVuY3Rpb24gRGwoYSl7dmFyIGI9dGwoKTtiLmFjY2Vzc2VkQW55PSEwO3JldHVybiEoYi5lbnRyaWVzW2FdfHx7fSkucXVpZXR9ZnVuY3Rpb24gRWwoKXtpZighWWYoNSkpcmV0dXJuITE7dmFyIGE9dGwoKTthLmFjY2Vzc2VkQW55PSEwO2lmKGEuYWN0aXZlKXJldHVybiEwO2lmKCFBbC51c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHMpcmV0dXJuITE7Zm9yKHZhciBiPW0oT2JqZWN0LmtleXMoQWwuY29udGFpbmVyU2NvcGVkRGVmYXVsdHMpKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSlpZihBbC5jb250YWluZXJTY29wZWREZWZhdWx0c1tjLnZhbHVlXSE9PTEpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gRmwoYSxiKXt0bCgpLmFkZExpc3RlbmVyKGEsYil9CmZ1bmN0aW9uIEdsKGEsYil7dGwoKS5ub3RpZnlMaXN0ZW5lcnMoYSxiKX1mdW5jdGlvbiBIbChhLGIpe2lmKGIuZXZlcnkoRGwpKWEoe30pO2Vsc2V7dmFyIGM9ITE7RmwoYixmdW5jdGlvbihkKXshYyYmYi5ldmVyeShEbCkmJihjPSEwLGEoZCkpfSl9fQpmdW5jdGlvbiBJbChhLGIpe3ZhciBjPXpiKGIpP1tiXTpiLGQ9e30sZT1mdW5jdGlvbigpe3JldHVybiBjLmZpbHRlcihmdW5jdGlvbihoKXtyZXR1cm4gQmwoaCkmJiFkW2hdfSl9LGY9ZSgpO2lmKGYubGVuZ3RoIT09Yy5sZW5ndGgpe3ZhciBnPWZ1bmN0aW9uKGgpe2Zvcih2YXIgbD1tKGgpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKWRbbi52YWx1ZV09ITB9O2coZik7RmwoYyxmdW5jdGlvbihoKXtmdW5jdGlvbiBsKHEpe3EubGVuZ3RoIT09MCYmKGcocSksaC5jb25zZW50VHlwZXM9cSxhKGgpKX12YXIgbj1lKCk7aWYobi5sZW5ndGghPT0wKXt2YXIgcD1PYmplY3Qua2V5cyhkKS5sZW5ndGg7bi5sZW5ndGgrcD49Yy5sZW5ndGg/bChuKTpBLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtsKGUoKSl9LDUwMCl9fSl9fTt2YXIgSmw9ITE7ZnVuY3Rpb24gS2woYSxiKXt2YXIgYz13aygpLGQ9dGsoKTtFKDI2KTt2YXIgZT1JZig0Nyk/MDpJZig1MCk/MTozLGY9WGooKTtpZihwbCgpKXt2YXIgZz1MbCgiSU5JVCIpO2cuY29udGFpbmVyTG9hZFNvdXJjZT1hIT1udWxsP2E6MDtiJiYoZy5wYXJlbnRUYXJnZXRSZWZlcmVuY2U9Yik7Zy5hbGlhc2VzPWM7Zy5kZXN0aW5hdGlvbnM9ZDtlIT09dm9pZCAwJiYoZy5ndGc9e3NvdXJjZTplLG1QYXRoOmYhPW51bGw/ZjoiIn0pO29sKGcpfX0KZnVuY3Rpb24gTWwoYSl7dmFyIGIsYyxkLGU7Yj1hLnRhcmdldElkO2M9YS5yZXF1ZXN0O2Q9YS5xYjtlPWEuaXNCYXRjaGVkO3ZhciBmO2lmKGY9cGwoKSl7dmFyIGc7YTpzd2l0Y2goYy5lbmRwb2ludCl7Y2FzZSA2ODpjYXNlIDY5OmNhc2UgMTk6Y2FzZSA2MjpjYXNlIDQ3Omc9ITA7YnJlYWsgYTtkZWZhdWx0Omc9ITF9Zj0hZ31pZihmKXt2YXIgaD1MbCgiR1RBR19ISVQiLHtldmVudElkOmQuZXZlbnRJZCxwcmlvcml0eUlkOmQucHJpb3JpdHlJZH0pO2gudGFyZ2V0PWI7aC51cmw9Yy51cmw7Yy5wb3N0Qm9keSYmKGgucG9zdEJvZHk9Yy5wb3N0Qm9keSk7aC5wYXJhbWV0ZXJFbmNvZGluZz1jLnBhcmFtZXRlckVuY29kaW5nO2guZW5kcG9pbnQ9Yy5lbmRwb2ludDtlIT09dm9pZCAwJiYoaC5pc0JhdGNoZWQ9ZSk7b2woaCl9fWZ1bmN0aW9uIE5sKGEpe3BsKCkmJk1sKGEoKSl9CmZ1bmN0aW9uIExsKGEsYil7Yj1iPT09dm9pZCAwP3t9OmI7Yi5ncm91cElkPU9sO3ZhciBjLGQ9YixlPVBsLGY9e3B1YmxpY0lkOlFsfTtkLmV2ZW50SWQhPW51bGwmJihmLmV2ZW50SWQ9ZC5ldmVudElkKTtkLnByaW9yaXR5SWQhPW51bGwmJihmLnByaW9yaXR5SWQ9ZC5wcmlvcml0eUlkKTtkLmV2ZW50TmFtZSYmKGYuZXZlbnROYW1lPWQuZXZlbnROYW1lKTtkLmdyb3VwSWQmJihmLmdyb3VwSWQ9ZC5ncm91cElkKTtkLnRhZ05hbWUmJihmLnRhZ05hbWU9ZC50YWdOYW1lKTtjPXtjb250YWluZXJQcm9kdWN0OiJHVE0iLGtleTpmLHZlcnNpb246ZSxtZXNzYWdlVHlwZTphfTtjLmNvbnRhaW5lclByb2R1Y3Q9Smw/Ik9HVCI6IkdUTSI7Yy5rZXkudGFyZ2V0UmVmPVJsO3JldHVybiBjfXZhciBRbD0iIixQbD0iIixSbD17Y3RpZDoiIixpc0Rlc3RpbmF0aW9uOiExfSxPbDsKZnVuY3Rpb24gU2woYSl7dmFyIGI9RSg1KSxjPUlmKDQ1KSxkPXNrKCksZT1FKDYpLGY9RSgxKTtFKDIzKTtrbD0wO2xsPSEwO3JsKCk7T2w9YTtRbD1iO1BsPWY7Smw9YztSbD17Y3RpZDpiLGlzRGVzdGluYXRpb246ZCxjYW5vbmljYWxJZDplfX07ZnVuY3Rpb24gVGwoYSxiLGMsZCl7aWYocGwoKSl7dmFyIGU9Yi5NO01sKHt0YXJnZXRJZDpkfHxbYi50YXJnZXQuZGVzdGluYXRpb25JZF0scmVxdWVzdDp7dXJsOmEscGFyYW1ldGVyRW5jb2Rpbmc6MixlbmRwb2ludDpjfSxxYjp7ZXZlbnRJZDplLmV2ZW50SWQscHJpb3JpdHlJZDplLnByaW9yaXR5SWR9LEZqOntldmVudElkOlEoYixILkoudWYpLHByaW9yaXR5SWQ6UShiLEguSi52Zil9fSl9fTtmdW5jdGlvbiBVbChhLGIsYyl7dmFyIGQ9Imh0dHBzOi8vIithK2I7cmV0dXJuIGM/ZnVuY3Rpb24oKXtyZXR1cm4gV2ooKT9YaigpK2MrYjpkfTpmdW5jdGlvbigpe3JldHVybiBkfX07dmFyIFZsPXt9LFdsPShWbFsyMl09VWwoInd3dy5nb29nbGVhZHNlcnZpY2VzLmNvbSIsIi9jY20vY29udmVyc2lvbiIsIi9hcy9kIiksVmxbNjBdPVVsKCJwYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbSIsIi9jY20vY29udmVyc2lvbiIsIi9ncyIpLFZsWzIzXT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvY2NtL2NvbnZlcnNpb24iLCIvZy9kIiksVmwpO3ZhciBYbD17fSxZbD0oWGxbNV09VWwoInd3dy5nb29nbGVhZHNlcnZpY2VzLmNvbSIsIi9wYWdlYWQvY29udmVyc2lvbiIpLFhsWzZdPVVsKCJwYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbSIsIi9wYWdlYWQvY29udmVyc2lvbiIsIi9ncyIpLFhsWzhdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9wYWdlYWQvMXAtY29udmVyc2lvbiIpLFhsWzY2XT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvcGFnZWFkL3Vjb252ZXJzaW9uIiksWGxbNjNdPVVsKCJ3d3cuZ29vZ2xlYWRzZXJ2aWNlcy5jb20iLCIvcGFnZWFkL2NvbnZlcnNpb24iKSxYbFs2NF09VWwoInBhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tIiwiL3BhZ2VhZC9jb252ZXJzaW9uIiwiL2dzIiksWGxbNjVdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9wYWdlYWQvMXAtY29udmVyc2lvbiIpLFhsWzc0XT1mdW5jdGlvbigpe3JldHVybiBYaigpKyIvYXMvcC9jIn0sWGwpO3ZhciBabD17fSwkbD0oWmxbNDVdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9jY20vY29sbGVjdCIpLFpsWzQ2XT1VbCgicGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20iLCIvY2NtL2NvbGxlY3QiLCIvZ3MiKSxabFs2OV09VWwoImFkLmRvdWJsZWNsaWNrLm5ldCIsIi9jY20vcy9jb2xsZWN0IiksWmxbNThdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9wYWdlYWQvc2V0X3BhcnRpdGlvbmVkX2Nvb2tpZSIpLFpsWzU3XT1VbCgid3d3Lmdvb2dsZWFkc2VydmljZXMuY29tIiwiL3BhZ2VhZC9zZXRfcGFydGl0aW9uZWRfY29va2llIiksWmwpO3ZhciBhbT17fSxibT0oYW1bOV09VWwoImdvb2dsZWFkcy5nLmRvdWJsZWNsaWNrLm5ldCIsIi9wYWdlYWQvdmlld3Rocm91Z2hjb252ZXJzaW9uIiksYW1bNjhdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9ybWt0L2NvbGxlY3QiKSxhbSk7dmFyIGNtPXt9LGRtPShjbVsxMV09VWwoInd3dy5nb29nbGUuY29tIiwiL3BhZ2VhZC9mb3JtLWRhdGEiLCIvZCIpLGNtWzIxXT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvY2NtL2Zvcm0tZGF0YSIsIi9kIiksY21bNzJdPVVsKCJnb29nbGUuY29tIiwiL3BhZ2VhZC9mb3JtLWRhdGEiLCIvZCIpLGNtWzczXT1VbCgiZ29vZ2xlLmNvbSIsIi9jY20vZm9ybS1kYXRhIiwiL2QiKSxjbSk7dmFyIGVtPXt9LGZtPShlbVs1MV09VWwoInd3dy5nb29nbGUuY29tIiwiL3RyYXZlbC9mbGlnaHRzL2NsaWNrL2NvbnZlcnNpb24iKSxlbSk7dmFyIGdtPXt9LGhtPShnbVsxXT1mdW5jdGlvbigpe3JldHVybiJodHRwczovL2FkLmRvdWJsZWNsaWNrLm5ldC9hY3Rpdml0eTsifSxnbVsyXT1mdW5jdGlvbigpe3JldHVybihXaigpP1hqKCk6Imh0dHBzOi8vYWRlLmdvb2dsZXN5bmRpY2F0aW9uLmNvbSIpKyIvZGRtL2FjdGl2aXR5IisoTSg0NjcpPyI7IjoiLyIpfSxnbVszXT1mdW5jdGlvbihhKXtyZXR1cm4iaHR0cHM6Ly8iK2EubHIrIi5mbHMuZG91YmxlY2xpY2submV0L2FjdGl2aXR5aTsifSxnbSk7ZnVuY3Rpb24gaW0oYSl7c2IoIkhFQUxUSCIsYSl9O3ZhciBqbT17YmE6e1B0OiJhd191c2VyX2RhdGFfY2FjaGUiLG9pOiJjb29raWVfZGVwcmVjYXRpb25fbGFiZWwiLGJoOiJkaWFnbm9zdGljc19wYWdlX2lkIixvcDoiZW1lbW8iLGR1OiJlbV9yZWdpc3RyeSIsU2k6ImVhYiIscnU6ImZsX3VzZXJfZGF0YV9jYWNoZSIsdHU6ImdhNF91c2VyX2RhdGFfY2FjaGUiLEx1OiJpZGNfcHZfY2xhaW0iLFNlOiJpcF9nZW9fZGF0YV9jYWNoZSIsWGk6ImlwX2dlb19mZXRjaF9pbl9wcm9ncmVzcyIsam46Im5iX2RhdGEiLFRxOiJwYWdlX2V4cGVyaW1lbnRfaWRzIixsbjoicGxkIixWZToicHRfZGF0YSIsbW46InB0X2xpc3RlbmVyX3NldCIsa2o6InJldHJ5X2NvbnRhaW5lcnMiLE9oOiJzZXJ2aWNlX3dvcmtlcl9lbmRwb2ludCIsWnE6InNoYXJlZF91c2VyX2lkIixhcjoic2hhcmVkX3VzZXJfaWRfcmVxdWVzdGVkIixzajoic2hhcmVkX3VzZXJfaWRfc291cmNlIixidjoiYXdoIixocjoidW5pdmVyc2FsX2NsYWltX3JlZ2lzdHJ5In19O3ZhciBrbT1mdW5jdGlvbihhKXtyZXR1cm4gdGYoZnVuY3Rpb24oYil7Zm9yKHZhciBjIGluIGEpaWYoYj09PWFbY10mJiEvXlswLTldKyQvLnRlc3QoYykpcmV0dXJuITA7cmV0dXJuITF9KX0oam0uYmEpOwpmdW5jdGlvbiBsbShhLGIpe2I9Yj09PXZvaWQgMD8hMTpiO2lmKGttKGEpKXt2YXIgYyxkLGU9KGQ9KGM9TWMoImdvb2dsZV90YWdfZGF0YSIse30pKS54Y2QpIT1udWxsP2Q6Yy54Y2Q9e307aWYoZVthXSlyZXR1cm4gZVthXTtpZihiKXt2YXIgZj12b2lkIDAsZz0xLGg9e30sbD17c2V0OmZ1bmN0aW9uKG4pe2Y9bjtsLm5vdGlmeSgpfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sc3Vic2NyaWJlOmZ1bmN0aW9uKG4pe2hbU3RyaW5nKGcpXT1uO3JldHVybiBnKyt9LHVuc3Vic2NyaWJlOmZ1bmN0aW9uKG4pe3ZhciBwPVN0cmluZyhuKTtyZXR1cm4gaC5oYXNPd25Qcm9wZXJ0eShwKT8oZGVsZXRlIGhbcF0sITApOiExfSxub3RpZnk6ZnVuY3Rpb24oKXtmb3IodmFyIG49bShPYmplY3Qua2V5cyhoKSkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpe3ZhciBxPXAudmFsdWU7dHJ5e2hbcV0oYSxmKX1jYXRjaChyKXt9fX19O3JldHVybiBlW2FdPWx9fX0KZnVuY3Rpb24gbW0oYSxiKXt2YXIgYz1sbShhLCEwKTtjJiZjLnNldChiKX1mdW5jdGlvbiBubShhKXt2YXIgYjtyZXR1cm4oYj1sbShhKSk9PW51bGw/dm9pZCAwOmIuZ2V0KCl9ZnVuY3Rpb24gb20oYSxiKXt2YXIgYz1sbShhKTtpZighYyl7Yz1sbShhLCEwKTtpZighYylyZXR1cm47Yy5zZXQoYil9cmV0dXJuIGMuZ2V0KCl9ZnVuY3Rpb24gcG0oYSxiKXtpZih0eXBlb2YgYj09PSJmdW5jdGlvbiIpe3ZhciBjO3JldHVybihjPWxtKGEsITApKT09bnVsbD92b2lkIDA6Yy5zdWJzY3JpYmUoYil9fWZ1bmN0aW9uIHFtKGEsYil7dmFyIGM9bG0oYSk7cmV0dXJuIGM/Yy51bnN1YnNjcmliZShiKTohMX07dmFyIHNtPWZ1bmN0aW9uKCl7dGhpcy5IPXt9O3RoaXMuSz0hMX07c20ucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLkt8fCh0aGlzLkg9dG0oKSx0aGlzLkhbIjAiXSYmb20oam0uYmEuU2UsSlNPTi5zdHJpbmdpZnkodGhpcy5IKSkpfTsKdmFyIHhtPWZ1bmN0aW9uKCl7dmFyIGE9dW0sYj12bSxjPXZvaWQgMCxkPWZ1bmN0aW9uKCl7YyE9PXZvaWQgMCYmcW0oam0uYmEuU2UsYyk7dHJ5e3ZhciBmPW5tKGptLmJhLlNlKTtiLkg9SlNPTi5wYXJzZShmKX1jYXRjaChnKXtQKDEyMyksaW0oMiksYi5IPXt9fWIuSz0hMDthKCl9LGU9bm0oam0uYmEuU2UpO2U/ZChlKTooYz1wbShqbS5iYS5TZSxkKSx3bSgpKX0sd209ZnVuY3Rpb24oKXtpZighbm0oam0uYmEuWGkpKXttbShqbS5iYS5YaSwhMCk7dmFyIGE9ZnVuY3Rpb24oYil7bW0oam0uYmEuU2UsYnx8Int9Iik7bW0oam0uYmEuWGksITEpfTt0cnl7QS5mZXRjaCgiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9jY20vZ2VvIix7bWV0aG9kOiJHRVQiLGNhY2hlOiJuby1zdG9yZSIsbW9kZToiY29ycyIsY3JlZGVudGlhbHM6Im9taXQifSkudGhlbihmdW5jdGlvbihiKXtiLm9rP2IudGV4dCgpLnRoZW4oZnVuY3Rpb24oYyl7YShjKX0sZnVuY3Rpb24oKXthKCl9KTphKCl9LGZ1bmN0aW9uKCl7YSgpfSl9Y2F0Y2goYil7YSgpfX19LAp0bT1mdW5jdGlvbigpe3ZhciBhPUUoMjIpO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShxYihhKSl9Y2F0Y2goYil7cmV0dXJuIFAoMTIzKSxpbSgyKSx7fX19LHltPWZ1bmN0aW9uKCl7cmV0dXJuIHZtLkhbIjAiXXx8IiJ9LHptPWZ1bmN0aW9uKCl7cmV0dXJuIHZtLkhbIjEiXXx8IiJ9LEFtPWZ1bmN0aW9uKCl7dmFyIGE9dm0sYj0hMTtiPSEhYS5IWyIyIl07cmV0dXJuIGJ9LEJtPWZ1bmN0aW9uKCl7cmV0dXJuIHZtLkhbIjYiXSE9PSExfSxDbT1mdW5jdGlvbigpe3ZhciBhPXZtLGI9ITE7Yj0hIWEuSFsiOSJdO3JldHVybiBifSxEbT1mdW5jdGlvbigpe3ZhciBhPXZtLGI9IiI7Yj1hLkhbIjQiXXx8IiI7CnJldHVybiBifSxFbT1mdW5jdGlvbigpe3ZhciBhPXZtLGI9IiI7Yj1hLkhbIjMiXXx8IiI7cmV0dXJuIGJ9LHZtPW5ldyBzbTtmdW5jdGlvbiBGbShhKXthPWE9PT12b2lkIDA/ImcvY29sbGVjdCI6YTtyZXR1cm4iaHR0cHM6Ly8iKyhEbSgpfHwid3d3IikrIi5nb29nbGUtYW5hbHl0aWNzLmNvbS8iK2F9ZnVuY3Rpb24gR20oYSl7YT1hPT09dm9pZCAwPyJnL2NvbGxlY3QiOmE7dmFyIGI9RG0oKTtyZXR1cm4iaHR0cHM6Ly8iKyhiP2IrIi4iOiIiKSsiYW5hbHl0aWNzLmdvb2dsZS5jb20vIithfXZhciBIbT17fSxJbT0oSG1bMTddPWZ1bmN0aW9uKCl7cmV0dXJuIFdqKCkmJiFEbSgpP1hqKCkrIi9hZy9nL2MiOkdtKCl9LEhtWzE2XT1mdW5jdGlvbigpe3JldHVybiBXaigpJiYhRG0oKT9YaigpKyIvZ2EvZy9jIjpGbSgpfSxIbVs2N109ZnVuY3Rpb24oKXt2YXIgYTthPWE9PT12b2lkIDA/ImcvY29sbGVjdCI6YTtyZXR1cm4gRG0oKT8iIjoiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8iK2F9LEhtKTtmdW5jdGlvbiBKbShhLGIsYyl7dmFyIGQ9VWwoYiwiL21lYXN1cmVtZW50L2NvbnZlcnNpb24iLGMpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBEbSgpP2EoIm1lYXN1cmVtZW50L2NvbnZlcnNpb24iKTpkKCl9fXZhciBLbT17fSxMbT0oS21bNTVdPUptKEZtLCJwYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbSIsIi9ncyIpLEttWzU0XT1KbShHbSwid3d3Lmdvb2dsZS5jb20iLCIvZyIpLEttKTt2YXIgTW09bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxXbCxZbCwkbCxibSxkbSxmbSxobSxMbSxJbSk7ZnVuY3Rpb24gTm0oYSxiKXt2YXIgYz1PYmplY3Qua2V5cyhiKS5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGJbZF0hPW51bGx9KS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGQrIj0iK2JbZF19KS5qb2luKCImIik7cmV0dXJuIE1tW2FdKHZvaWQgMCkrIj8iK2N9O3ZhciBPbT17fSxQbT0oT20udGRwPTEsT20uZXhwPTEsT20uZ3RtPTEsT20ucGlkPTEsT20uZGw9MSxPbS5zZXE9MSxPbS50PTEsT20udj0xLE9tKSxSbT1mdW5jdGlvbigpe3ZhciBhPVFtO3JldHVybiBPYmplY3Qua2V5cyhhLkgpLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gYS5IW2JdfSl9LFNtPWZ1bmN0aW9uKGEsYixjKXtpZihhLkhbYl09PT12b2lkIDB8fChjPT09dm9pZCAwPzA6YykpYS5IW2JdPSEwfSxUbT1mdW5jdGlvbihhKXthLmZvckVhY2goZnVuY3Rpb24oYil7UG1bYl18fChRbS5IW2JdPSExKX0pfSxRbT1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9e307dGhpcy5LPXt9fTtmdW5jdGlvbiBVbShhLGIsYyl7dmFyIGQ9Yz09PXZvaWQgMD8hMDpjLGU9UW07ZS5LW2FdPWI7KGQ9PT12b2lkIDB8fGQpJiZTbShlLGEpfWZ1bmN0aW9uIFZtKGEsYil7U20oUW0sYSxiPT09dm9pZCAwPyExOmIpfTtmdW5jdGlvbiBXbShhKXt2YXIgYj0wO2EuR2MuZm9yRWFjaChmdW5jdGlvbihjKXtifD0xPDxjfSk7cmV0dXJuIGJ9ZnVuY3Rpb24gWG0oKXtyZXR1cm57dG90YWw6MCxqYjowLEdjOm5ldyBTZXQsbGY6e319fWZ1bmN0aW9uIFltKGEsYixjLGQpe3ZhciBlPU9iamVjdC5rZXlzKGEubmYpLnNvcnQoZnVuY3Rpb24oZixnKXtyZXR1cm4gTnVtYmVyKGYpLU51bWJlcihnKX0pLm1hcChmdW5jdGlvbihmKXtyZXR1cm5bZixiKGEubmZbZl0pXX0pLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZlsxXSE9PXZvaWQgMH0pLm1hcChmdW5jdGlvbihmKXtyZXR1cm4gZi5qb2luKGMpfSkuam9pbihkKTtyZXR1cm4gZT9lOnZvaWQgMH0KZnVuY3Rpb24gWm0oYSxiKXt2YXIgYyxkLGU7Yz1jPT09dm9pZCAwPyJfIjpjO2Q9ZD09PXZvaWQgMD8iOyI6ZDtlPWU9PT12b2lkIDA/In4iOmU7Zm9yKHZhciBmPVtdLGc9bShPYmplY3Qua2V5cyhhLmxmKS5zb3J0KCkpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKXt2YXIgbD1oLnZhbHVlLG49WW0oYS5sZltsXSxiLGMsZCk7aWYobil7dmFyIHA9dm9pZCAwO2YucHVzaCgiIisoKHA9bCkhPW51bGw/cDoiIikrZCtuKX19cmV0dXJuIGYubGVuZ3RoP2Yuam9pbihlKTp2b2lkIDB9CmZ1bmN0aW9uICRtKGEpe2EuamI9MDthLkdjLmNsZWFyKCk7Zm9yKHZhciBiPW0oT2JqZWN0LmtleXMoYS5sZikpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXt2YXIgZD1hLmxmW2MudmFsdWVdO2QuamI9MDtkLkdjLmNsZWFyKCk7Zm9yKHZhciBlPW0oT2JqZWN0LmtleXMoZC5uZikpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1kLm5mW2YudmFsdWVdO2cuamI9MDtnLkdjLmNsZWFyKCl9fX0KZnVuY3Rpb24gYW4oYSxiLGMsZCxlKXtkPWQ9PT12b2lkIDA/MTpkO2EudG90YWwrPWQ7YS5qYis9ZDt2YXIgZixnPWI9PT12b2lkIDA/IiI6YjtmPWEubGZbZ118fChhLmxmW2ddPXt0b3RhbDowLGpiOjAsR2M6bmV3IFNldCxuZjp7fX0pO2YudG90YWwrPWQ7Zi5qYis9ZDt2YXIgaCxsPVN0cmluZyhjKTtoPWYubmZbbF18fChmLm5mW2xdPXt0b3RhbDowLGpiOjAsR2M6bmV3IFNldH0pO2gudG90YWwrPWQ7aC5qYis9ZDtlIT09dm9pZCAwJiYoYS5HYy5hZGQoZSksZi5HYy5hZGQoZSksaC5HYy5hZGQoZSkpfTt2YXIgYm49ZnVuY3Rpb24oKXt0aGlzLkg9WG0oKX07Ym4ucHJvdG90eXBlLmluY3JlbWVudD1mdW5jdGlvbihhLGIpe2FuKHRoaXMuSCxhLGIpfTt2YXIgY249bmV3IGJuO2Z1bmN0aW9uIGRuKGEpe3ZhciBiPVN0cmluZyhhW0dmLlliXXx8IiIpLnJlcGxhY2UoL18vZywiIik7cmV0dXJuIFNiKGIsImN2dCIpPyJjdnQiOmJ9dmFyIGVuPUEubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoIj9ndG1fbGF0ZW5jeT0iKT49MHx8QS5sb2NhdGlvbi5zZWFyY2guaW5kZXhPZigiJmd0bV9sYXRlbmN5PSIpPj0wO3ZhciBnbj1mdW5jdGlvbigpe3ZhciBhPWZuO3JldHVybiBNKDYwMykmJklmKDY1LCExKSYmIWEuWn0sZm49bmV3IGZ1bmN0aW9uKGEpe3RoaXMuUj1hKCk7dmFyIGI9SmYoMjcpO3RoaXMuTj1lbnx8dGhpcy5SPGI7dmFyIGM9SmYoNDIpO3RoaXMuWj1lbnx8dGhpcy5SPj0xLWM7dmFyIGQ9TSg2MDMpJiZJZig2NSwhMSk7dGhpcy5LPXRoaXMuWnx8ZDt2YXIgZT1KZigyNyksZj1KZig2Myk7dGhpcy5IPWVufHxmPT09MXx8dGhpcy5SPj1lJiZ0aGlzLlI8ZStmfShmdW5jdGlvbigpe3JldHVybiBNYXRoLnJhbmRvbSgpfSk7dmFyIGhuPWZ1bmN0aW9uKCl7dGhpcy5IPXt9fTtobi5wcm90b3R5cGUucmVnaXN0ZXI9ZnVuY3Rpb24oYSxiLGMpe2lmKGZuLkspe3ZhciBkPWpuKGIsYyk7aWYoZCl7dmFyIGUsZj1iO2Y9PT00JiYoZj01KTt2YXIgZz10aGlzLkhbZl07Z3x8KGc9dGhpcy5IW2ZdPXt9KTtlPWc7dmFyIGg9ZVtkXTtofHwoaD1lW2RdPVtdKTtoLnB1c2gobmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxhKSk7Y24uaW5jcmVtZW50KGEuZGVzdGluYXRpb25JZCxhLmVuZHBvaW50KTthLmVuZHBvaW50IT09NTYmJmEuZW5kcG9pbnQhPT02MSYmVm0oIm1kZSIsITApfX19Owp2YXIgbW49ZnVuY3Rpb24oYSxiKXt2YXIgYz1rbixkPWpuKGEsYik7aWYoZCl7dmFyIGU9bG4oYyxhKTtpZihlKXt2YXIgZj1lW2RdO2YmJihlW2RdPWYuZmlsdGVyKGZ1bmN0aW9uKGcpe3JldHVybiFnLkVvfSkpfX19LGxuPWZ1bmN0aW9uKGEsYil7Yj09PTQmJihiPTUpO3JldHVybiBhLkhbYl19LGpuPWZ1bmN0aW9uKGEsYil7dmFyIGM9YjtpZihiWzBdPT09Ii8iKXt2YXIgZDtjPSgoZD1BLmxvY2F0aW9uKT09bnVsbD92b2lkIDA6ZC5vcmlnaW4pK2J9dHJ5e3ZhciBlPW5ldyBVUkwoYyk7cmV0dXJuIGE9PT0yP2Uub3JpZ2luOmUub3JpZ2luK2UucGF0aG5hbWV9Y2F0Y2goZil7fX0sa249bmV3IGhuOwpmdW5jdGlvbiBubihhKXtzd2l0Y2goYSl7Y2FzZSAic2NyaXB0LXNyYyI6cmV0dXJuIDQ7Y2FzZSAic2NyaXB0LXNyYy1lbGVtIjpyZXR1cm4gNTtjYXNlICJmcmFtZS1zcmMiOnJldHVybiAyO2Nhc2UgImNvbm5lY3Qtc3JjIjpyZXR1cm4gMTtjYXNlICJpbWctc3JjIjpyZXR1cm4gM319O2Z1bmN0aW9uIG9uKGEsYixjKXt2YXIgZCxlPWEuR29vZ2xlYlFoQ3NPO2V8fChlPXt9LGEuR29vZ2xlYlFoQ3NPPWUpO2Q9ZTtpZihkW2JdKXJldHVybiExO2RbYl09W107ZFtiXVswXT1jO3JldHVybiEwfTt2YXIgcG4scW47YTp7Zm9yKHZhciBybj1bIkNMT1NVUkVfRkxBR1MiXSxzbj1SYSx0bj0wO3RuPHJuLmxlbmd0aDt0bisrKWlmKHNuPXNuW3JuW3RuXV0sc249PW51bGwpe3FuPW51bGw7YnJlYWsgYX1xbj1zbn12YXIgdW49cW4mJnFuWzYxMDQwMTMwMV07cG49dW4hPW51bGw/dW46ITE7ZnVuY3Rpb24gdm4oKXt2YXIgYT1SYS5uYXZpZ2F0b3I7aWYoYSl7dmFyIGI9YS51c2VyQWdlbnQ7aWYoYilyZXR1cm4gYn1yZXR1cm4iIn12YXIgd24seG49UmEubmF2aWdhdG9yO3duPXhuP3huLnVzZXJBZ2VudERhdGF8fG51bGw6bnVsbDtmdW5jdGlvbiB5bihhKXtpZighcG58fCF3bilyZXR1cm4hMTtmb3IodmFyIGI9MDtiPHduLmJyYW5kcy5sZW5ndGg7YisrKXt2YXIgYz13bi5icmFuZHNbYl0uYnJhbmQ7aWYoYyYmYy5pbmRleE9mKGEpIT0tMSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiB6bihhKXtyZXR1cm4gdm4oKS5pbmRleE9mKGEpIT0tMX07ZnVuY3Rpb24gQW4oKXtyZXR1cm4gcG4/ISF3biYmd24uYnJhbmRzLmxlbmd0aD4wOiExfWZ1bmN0aW9uIEJuKCl7cmV0dXJuIEFuKCk/ITE6em4oIk9wZXJhIil9ZnVuY3Rpb24gQ24oKXtyZXR1cm4gem4oIkZpcmVmb3giKXx8em4oIkZ4aU9TIil9ZnVuY3Rpb24gRG4oKXtyZXR1cm4gQW4oKT95bigiQ2hyb21pdW0iKTooem4oIkNocm9tZSIpfHx6bigiQ3JpT1MiKSkmJiEoQW4oKT8wOnpuKCJFZGdlIikpfHx6bigiU2lsayIpfTtmdW5jdGlvbiBFbigpe3JldHVybiBwbj8hIXduJiYhIXduLnBsYXRmb3JtOiExfWZ1bmN0aW9uIEZuKCl7cmV0dXJuIHpuKCJpUGhvbmUiKSYmIXpuKCJpUG9kIikmJiF6bigiaVBhZCIpfWZ1bmN0aW9uIEduKCl7Rm4oKXx8em4oImlQYWQiKXx8em4oImlQb2QiKX07dmFyIEhuPWZ1bmN0aW9uKGEpe0huWyIgIl0oYSk7cmV0dXJuIGF9O0huWyIgIl09ZnVuY3Rpb24oKXt9O0JuKCk7QW4oKXx8em4oIlRyaWRlbnQiKXx8em4oIk1TSUUiKTt6bigiRWRnZSIpOyF6bigiR2Vja28iKXx8dm4oKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIndlYmtpdCIpIT0tMSYmIXpuKCJFZGdlIil8fHpuKCJUcmlkZW50Iil8fHpuKCJNU0lFIil8fHpuKCJFZGdlIik7dm4oKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIndlYmtpdCIpIT0tMSYmIXpuKCJFZGdlIikmJnpuKCJNb2JpbGUiKTtFbigpfHx6bigiTWFjaW50b3NoIik7RW4oKXx8em4oIldpbmRvd3MiKTsoRW4oKT93bi5wbGF0Zm9ybT09PSJMaW51eCI6em4oIkxpbnV4IikpfHxFbigpfHx6bigiQ3JPUyIpO0VuKCl8fHpuKCJBbmRyb2lkIik7Rm4oKTt6bigiaVBhZCIpO3puKCJpUG9kIik7R24oKTt2bigpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigia2Fpb3MiKTtDbigpO0ZuKCl8fHpuKCJpUG9kIik7em4oImlQYWQiKTshem4oIkFuZHJvaWQiKXx8RG4oKXx8Q24oKXx8Qm4oKXx8em4oIlNpbGsiKTtEbigpOyF6bigiU2FmYXJpIil8fERuKCl8fChBbigpPzA6em4oIkNvYXN0IikpfHxCbigpfHwoQW4oKT8wOnpuKCJFZGdlIikpfHwoQW4oKT95bigiTWljcm9zb2Z0IEVkZ2UiKTp6bigiRWRnLyIpKXx8KEFuKCk/eW4oIk9wZXJhIik6em4oIk9QUiIpKXx8Q24oKXx8em4oIlNpbGsiKXx8em4oIkFuZHJvaWQiKXx8R24oKTt2YXIgSW49e30sSm49bnVsbDsKZnVuY3Rpb24gS24oYSl7Zm9yKHZhciBiPVtdLGM9MCxkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBlPWEuY2hhckNvZGVBdChkKTtlPjI1NSYmKGJbYysrXT1lJjI1NSxlPj49OCk7YltjKytdPWV9dmFyIGY9NDtmPT09dm9pZCAwJiYoZj0wKTtpZighSm4pe0puPXt9O2Zvcih2YXIgZz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLnNwbGl0KCIiKSxoPVsiKy89IiwiKy8iLCItXz0iLCItXy4iLCItXyJdLGw9MDtsPDU7bCsrKXt2YXIgbj1nLmNvbmNhdChoW2xdLnNwbGl0KCIiKSk7SW5bbF09bjtmb3IodmFyIHA9MDtwPG4ubGVuZ3RoO3ArKyl7dmFyIHE9bltwXTtKbltxXT09PXZvaWQgMCYmKEpuW3FdPXApfX19Zm9yKHZhciByPUluW2ZdLHQ9QXJyYXkoTWF0aC5mbG9vcihiLmxlbmd0aC8zKSksdT1yWzY0XXx8IiIsdj0wLHg9MDt2PGIubGVuZ3RoLTI7dis9Myl7dmFyIHk9Ylt2XSx6PWJbdisxXSxDPWJbdisyXSwKRD1yW3k+PjJdLEk9clsoeSYzKTw8NHx6Pj40XSxHPXJbKHomMTUpPDwyfEM+PjZdLE49cltDJjYzXTt0W3grK109IiIrRCtJK0crTn12YXIgUz0wLFc9dTtzd2l0Y2goYi5sZW5ndGgtdil7Y2FzZSAyOlM9Ylt2KzFdLFc9clsoUyYxNSk8PDJdfHx1O2Nhc2UgMTp2YXIgZWE9Ylt2XTt0W3hdPSIiK3JbZWE+PjJdK3JbKGVhJjMpPDw0fFM+PjRdK1crdX1yZXR1cm4gdC5qb2luKCIiKX07dmFyIExuPWZ1bmN0aW9uKGEpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYS5yZXBsYWNlKC9cKy9nLCIgIikpfTt2YXIgTW49UmVnRXhwKCJeKD86KFteOi8/Iy5dKyk6KT8oPzovLyg/OihbXlxcXFwvPyNdKilAKT8oW15cXFxcLz8jXSo/KSg/OjooWzAtOV0rKSk/KD89W1xcXFwvPyNdfCQpKT8oW14/I10rKT8oPzpcXD8oW14jXSopKT8oPzojKFtcXHNcXFNdKikpPyQiKTtmdW5jdGlvbiBObihhLGIsYyxkKXtmb3IodmFyIGU9YixmPWMubGVuZ3RoOyhlPWEuaW5kZXhPZihjLGUpKT49MCYmZTxkOyl7dmFyIGc9YS5jaGFyQ29kZUF0KGUtMSk7aWYoZz09Mzh8fGc9PTYzKXt2YXIgaD1hLmNoYXJDb2RlQXQoZStmKTtpZighaHx8aD09NjF8fGg9PTM4fHxoPT0zNSlyZXR1cm4gZX1lKz1mKzF9cmV0dXJuLTF9dmFyIE9uPS8jfCQvOwpmdW5jdGlvbiBQbihhLGIpe3ZhciBjPWEuc2VhcmNoKE9uKSxkPU5uKGEsMCxiLGMpO2lmKGQ8MClyZXR1cm4gbnVsbDt2YXIgZT1hLmluZGV4T2YoIiYiLGQpO2lmKGU8MHx8ZT5jKWU9YztkKz1iLmxlbmd0aCsxO3JldHVybiBMbihhLnNsaWNlKGQsZSE9PS0xP2U6MCkpfXZhciBRbj0vWz8mXSgkfCMpLzsKZnVuY3Rpb24gUm4oYSxiLGMpe2Zvcih2YXIgZCxlPWEuc2VhcmNoKE9uKSxmPTAsZyxoPVtdOyhnPU5uKGEsZixiLGUpKT49MDspaC5wdXNoKGEuc3Vic3RyaW5nKGYsZykpLGY9TWF0aC5taW4oYS5pbmRleE9mKCImIixnKSsxfHxlLGUpO2gucHVzaChhLnNsaWNlKGYpKTtkPWguam9pbigiIikucmVwbGFjZShRbiwiJDEiKTt2YXIgbCxuPWMhPW51bGw/Ij0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoYykpOiIiO3ZhciBwPWIrbjtpZihwKXt2YXIgcSxyPWQuaW5kZXhPZigiIyIpO3I8MCYmKHI9ZC5sZW5ndGgpO3ZhciB0PWQuaW5kZXhPZigiPyIpLHU7dDwwfHx0PnI/KHQ9cix1PSIiKTp1PWQuc3Vic3RyaW5nKHQrMSxyKTtxPVtkLnNsaWNlKDAsdCksdSxkLnNsaWNlKHIpXTt2YXIgdj1xWzFdO3FbMV09cD92P3YrIiYiK3A6cDp2O2w9cVswXSsocVsxXT8iPyIrcVsxXToiIikrcVsyXX1lbHNlIGw9ZDtyZXR1cm4gbH07ZnVuY3Rpb24gU24oYSxiLGMsZCxlLGYsZyxoKXt2YXIgbD1QbihjLCJmbXQiKTtpZihkKXt2YXIgbj1QbihjLCJyYW5kb20iKSxwPVBuKGMsImxhYmVsIil8fCIiO2lmKCFuKXJldHVybjt2YXIgcT1LbihMbihwKSsiOiIrTG4obikpO2lmKCFvbihhLHEsZCkpcmV0dXJufWwmJk51bWJlcihsKSE9PTQ/KGM9Um4oYywicmZtdCIsbCksYz1SbihjLCJmbXQiLDQpKTpsfHwoYz1SbihjLCJmbXQiLDQpKTtVYyhjLGZ1bmN0aW9uKCl7Zz09bnVsbHx8VG4oZyk7aD09bnVsbHx8VW4oaCxjKTthLmdvb2dsZV9ub0Z1cnRoZXJSZWRpcmVjdHMmJmQmJihhLmdvb2dsZV9ub0Z1cnRoZXJSZWRpcmVjdHM9bnVsbCxkKCkpfSxmdW5jdGlvbigpe2c9PW51bGx8fFRuKGcpO2g9PW51bGx8fFVuKGgsYyk7ZT09bnVsbHx8ZSgpfSxmLGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdLnBhcmVudEVsZW1lbnR8fHZvaWQgMCk7cmV0dXJuIGN9O2Z1bmN0aW9uIFZuKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKTtrbi5yZWdpc3RlcihhLDEsYlswXSk7aWQuYXBwbHkobnVsbCx3KGIpKX1mdW5jdGlvbiBXbihhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7a24ucmVnaXN0ZXIoYSwxLGJbMF0pO3JldHVybiBqZC5hcHBseShudWxsLHcoYikpfWZ1bmN0aW9uIFhuKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKTtrbi5yZWdpc3RlcihhLDMsYlswXSk7WmMuYXBwbHkobnVsbCx3KGIpKX1mdW5jdGlvbiBZbihhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7a24ucmVnaXN0ZXIoYSwxLGJbMF0pO3JldHVybiBtZC5hcHBseShudWxsLHcoYikpfWZ1bmN0aW9uIFpuKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKTtrbi5yZWdpc3RlcihhLDUsYlswXSk7VWMuYXBwbHkobnVsbCx3KGIpKX0KZnVuY3Rpb24gJG4oYSl7dmFyIGI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO2JbMF0mJmtuLnJlZ2lzdGVyKGEsMixiWzBdKTtYYy5hcHBseShudWxsLHcoYikpfWZ1bmN0aW9uIGFvKGEpe3ZhciBiPVNuLmFwcGx5KG51bGwsdyhPYS5hcHBseSgxLGFyZ3VtZW50cykpKTtiJiZrbi5yZWdpc3RlcihhLDQsYik7cmV0dXJuIGJ9O3ZhciBibz17TWE6e1JlOjAsVWU6MSxMaDoyfX07Ym8uTWFbYm8uTWEuUmVdPSJGVUxMX1RSQU5TTUlTU0lPTiI7Ym8uTWFbYm8uTWEuVWVdPSJMSU1JVEVEX1RSQU5TTUlTU0lPTiI7Ym8uTWFbYm8uTWEuTGhdPSJOT19UUkFOU01JU1NJT04iO3ZhciBjbz17aWE6e2dkOjAsY2I6MSx4ZDoyLFpiOjN9fTtjby5pYVtjby5pYS5nZF09Ik5PX1FVRVVFIjtjby5pYVtjby5pYS5jYl09IkFEUyI7Y28uaWFbY28uaWEueGRdPSJBTkFMWVRJQ1MiO2NvLmlhW2NvLmlhLlpiXT0iTU9OSVRPUklORyI7dmFyIGVvPWZ1bmN0aW9uKGEsYil7dGhpcy5IPWE7dGhpcy5jb25zZW50VHlwZXM9Yn07ZW8ucHJvdG90eXBlLmlzQ29uc2VudEdyYW50ZWQ9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5IKXtjYXNlIDA6cmV0dXJuIHRoaXMuY29uc2VudFR5cGVzLmV2ZXJ5KGZ1bmN0aW9uKGEpe3JldHVybiBCbChhKX0pO2Nhc2UgMTpyZXR1cm4gdGhpcy5jb25zZW50VHlwZXMuc29tZShmdW5jdGlvbihhKXtyZXR1cm4gQmwoYSl9KTtkZWZhdWx0OnljKHRoaXMuSCwiY29uc2VudHNSZXF1aXJlZCBoYWQgYW4gdW5rbm93biB0eXBlIil9fTsKdmFyIGZvPW5ldyBmdW5jdGlvbigpe3ZhciBhPXt9O3RoaXMuSD0oYVtjby5pYS5nZF09Ym8uTWEuUmUsYVtjby5pYS5jYl09Ym8uTWEuUmUsYVtjby5pYS54ZF09Ym8uTWEuUmUsYVtjby5pYS5aYl09Ym8uTWEuUmUsYSk7dmFyIGI9e307dGhpcy5LPShiW2NvLmlhLmdkXT1uZXcgZW8oMCxbXSksYltjby5pYS5jYl09bmV3IGVvKDAsWyJhZF9zdG9yYWdlIl0pLGJbY28uaWEueGRdPW5ldyBlbygwLFsiYW5hbHl0aWNzX3N0b3JhZ2UiXSksYltjby5pYS5aYl09bmV3IGVvKDEsWyJhZF9zdG9yYWdlIiwiYW5hbHl0aWNzX3N0b3JhZ2UiXSksYil9O3ZhciBobz1mdW5jdGlvbihhKXt2YXIgYj10aGlzO3RoaXMudHlwZT1hO3RoaXMuSD1bXTtGbChmby5LW2FdLmNvbnNlbnRUeXBlcyxmdW5jdGlvbigpe2dvKGIpfHxiLmZsdXNoKCl9KX07aG8ucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPW0odGhpcy5IKSxiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSl7dmFyIGM9Yi52YWx1ZTtjKCl9dGhpcy5IPVtdfTt2YXIgZ289ZnVuY3Rpb24oYSl7cmV0dXJuIGZvLkhbYS50eXBlXT09PWJvLk1hLkxoJiYhZm8uS1thLnR5cGVdLmlzQ29uc2VudEdyYW50ZWQoKX0saW89ZnVuY3Rpb24oYSxiKXtnbyhhKT9hLkgucHVzaChiKTpiKCl9LGpvPWZ1bmN0aW9uKCl7dGhpcy5IPW5ldyBNYXB9LGxvPWZ1bmN0aW9uKGEpe3ZhciBiPWtvO2IuSC5oYXMoYSl8fGIuSC5zZXQoYSxuZXcgaG8oYSkpO3JldHVybiBiLkguZ2V0KGEpfTtqby5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLkguY2xlYXIoKX07CnZhciBrbz1uZXcgam87dmFyIG1vPVsiZmluIiwiZnMiLCJtY2MiLCJuY2MiXSxubz1mdW5jdGlvbihhKXthPWE9PT12b2lkIDA/ITE6YTt2YXIgYj1SbSgpLGM9UW0uSyxkPWIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBjW2VdIT09dm9pZCAwJiYoYXx8IW1vLmluY2x1ZGVzKGUpKX0pO1RtKGQpO3JldHVybiBkLm1hcChmdW5jdGlvbihlKXt2YXIgZj1jW2VdO3R5cGVvZiBmPT09ImZ1bmN0aW9uIiYmKGY9ZigpKTtyZXR1cm4gZj8iJiIrZSsiPSIrZjoiIn0pLmpvaW4oIiIpKyImej0wIn0sb289ZnVuY3Rpb24oYSl7dmFyIGI9Imh0dHBzOi8vIitFKDIxKSxjPSIvdGQ/aWQ9IitFKDUpO3JldHVybiIiK2ZrKGIpK2MrYX0scG89ZnVuY3Rpb24oYSxiLGMpe2I9Yj09PXZvaWQgMD8hMTpiO2M9Yz09PXZvaWQgMD8hMTpjO2lmKCRrKDI2KSYmZm4uSyYmRSg1KSYmKGN8fCFnbigpKSl7dmFyIGQ9bG8oY28uaWEuWmIpO2lmKGdvKGQpKWEuSHx8KGEuSD0hMCxpbyhkLGZ1bmN0aW9uKCl7cmV0dXJuIHBvKGEpfSkpOwplbHNle2ImJlVtKCJmaW4iLCIxIik7dmFyIGU9bm8oYiksZj1vbyhlKSxnPXtkZXN0aW5hdGlvbklkOkUoNSksZW5kcG9pbnQ6NjF9O2I/WW4oZyxmLHZvaWQgMCx7UWc6ITB9LHZvaWQgMCxmdW5jdGlvbigpe1pjKGYrIiZpbWc9MSIpfSk6WG4oZyxmKTthLkg9ITE7cW8oZSl9fX0scW89ZnVuY3Rpb24oYSl7aWYoS2MmJihTYihLYywiaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vIil8fElmKDQ3KSkmJiEoYS5pbmRleE9mKCImY3NwPSIpPDAmJmEuaW5kZXhPZigiJm1kZT0iKTwwKSl7dmFyIGI7YTp7dHJ5e2lmKEtjKXtiPW5ldyBVUkwoS2MpO2JyZWFrIGF9fWNhdGNoKGMpe31iPXZvaWQgMH1iJiZVYygiIitLYysoS2MuaW5kZXhPZigiPyIpPj0wPyImIjoiPyIpKyJpc190ZD0xIithKX19LHJvPWZ1bmN0aW9uKGEpe1JtKCkuc29tZShmdW5jdGlvbihiKXtyZXR1cm4hUG1bYl19KSYmcG8oYSwhMCl9LHNvPW5ldyBmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5IPSExOwokYyhBLCJwYWdlaGlkZSIsZnVuY3Rpb24oKXtybyhhKX0pfTtmdW5jdGlvbiB0byhhLGIpe3BvKHNvLGE9PT12b2lkIDA/ITE6YSxiPT09dm9pZCAwPyExOmIpfTt2YXIgdW89WyJhZF9zdG9yYWdlIiwiYW5hbHl0aWNzX3N0b3JhZ2UiLCJhZF91c2VyX2RhdGEiLCJhZF9wZXJzb25hbGl6YXRpb24iXSx2bz1bRi5ELmRkLEYuRC55YyxGLkQuUWYsRi5ELktiLEYuRC54YyxGLkQuZmIsRi5ELkRiLEYuRC5uYixGLkQuTGIsRi5ELnZjXSx5bz1mdW5jdGlvbigpe3ZhciBhPXdvOyFhLlImJmEuSCYmKHVvLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIEFsLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzW2JdIT09MX0pfHx4bygibWJjIikpO2EuUj0hMH0seG89ZnVuY3Rpb24oYSl7Zm4uSyYmKFVtKGEsIjEiKSx0bygpKX0sem89ZnVuY3Rpb24oYSxiKXt2YXIgYz13bztpZighYy5OW2JdJiYoYy5OW2JdPSEwLGMuS1tiXSkpZm9yKHZhciBkPW0odm8pLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKWlmKE8oYSxlLnZhbHVlKSl7eG8oImVyYyIpO2JyZWFrfX0sd289bmV3IGZ1bmN0aW9uKCl7dGhpcy5SPXRoaXMuSD0hMTt0aGlzLk49e307dGhpcy5LPXt9fTt2YXIgQW89e30sQm89T2JqZWN0LmZyZWV6ZSgoQW9bRi5ELlJjXT0xLEFvW0YuRC5oaF09MSxBb1tGLkQuc2ldPTEsQW9bRi5ELlNjXT0xLEFvW0YuRC5IYV09MSxBb1tGLkQuTGJdPTEsQW9bRi5ELkNiXT0xLEFvW0YuRC5UYl09MSxBb1tGLkQuSWRdPTEsQW9bRi5ELnZjXT0xLEFvW0YuRC5uYl09MSxBb1tGLkQuSmRdPTEsQW9bRi5ELkhlXT0xLEFvW0YuRC5PYV09MSxBb1tGLkQuUXBdPTEsQW9bRi5ELlBmXT0xLEFvW0YuRC5GaV09MSxBb1tGLkQucGhdPTEsQW9bRi5ELldjXT0xLEFvW0YuRC5RZl09MSxBb1tGLkQuYXFdPTEsQW9bRi5ELlRhXT0xLEFvW0YuRC5VZl09MSxBb1tGLkQuZnFdPTEsQW9bRi5ELk9kXT0xLEFvW0YuRC5SbF09MSxBb1tGLkQuWWNdPTEsQW9bRi5ELlpjXT0xLEFvW0YuRC5EYl09MSxBb1tGLkQuYW1dPTEsQW9bRi5ELldiXT0xLEFvW0YuRC5UZF09MSxBb1tGLkQuWGJdPTEsQW9bRi5ELk9pXT0xLEFvW0YuRC5kZF09MSxBb1tGLkQueWhdPTEsQW9bRi5ELlBpXT0KMSxBb1tGLkQuVWRdPTEsQW9bRi5ELnljXT0xLEFvW0YuRC5WZF09MSxBb1tGLkQubG1dPTEsQW9bRi5ELldkXT0xLEFvW0YuRC5lZF09MSxBb1tGLkQub2pdPTEsQW8pKTtPYmplY3QuZnJlZXplKFtGLkQuemEsRi5ELlVhLEYuRC5NYixGLkQudGIsRi5ELk5pLEYuRC5mYixGLkQuR2ksRi5ELk1wXSk7CnZhciBDbz17fSxEbz1PYmplY3QuZnJlZXplKChDb1tGLkQucXBdPTEsQ29bRi5ELnJwXT0xLENvW0YuRC50cF09MSxDb1tGLkQudXBdPTEsQ29bRi5ELnZwXT0xLENvW0YuRC56cF09MSxDb1tGLkQuQXBdPTEsQ29bRi5ELkJwXT0xLENvW0YuRC5EcF09MSxDb1tGLkQueWZdPTEsQ28pKSxFbz17fSxGbz1PYmplY3QuZnJlZXplKChFb1tGLkQudmxdPTEsRW9bRi5ELndsXT0xLEVvW0YuRC54ZV09MSxFb1tGLkQueWVdPTEsRW9bRi5ELnhsXT0xLEVvW0YuRC5BZF09MSxFb1tGLkQuemVdPTEsRW9bRi5ELm9jXT0xLEVvW0YuRC5RY109MSxFb1tGLkQucWNdPTEsRW9bRi5ELkliXT0xLEVvW0YuRC5BZV09MSxFb1tGLkQucmNdPTEsRW9bRi5ELnlsXT0xLEVvKSksR289T2JqZWN0LmZyZWV6ZShbRi5ELlJjLEYuRC5TYyxGLkQuSmQsRi5ELlFmLEYuRC5XZixGLkQuVGQsRi5ELk9pLEYuRC5WZF0pLEhvPU9iamVjdC5mcmVlemUoW10uY29uY2F0KHcoR28pKSksSW89T2JqZWN0LmZyZWV6ZShbRi5ELkNiLApGLkQucGgsRi5ELnloLEYuRC5QaSxGLkQubmhdKSxKbz1PYmplY3QuZnJlZXplKFtdLmNvbmNhdCh3KElvKSkpLEtvPXt9LExvPShLb1tGLkQua2FdPSIxIixLb1tGLkQucmFdPSIyIixLb1tGLkQubWFdPSIzIixLb1tGLkQuWGFdPSI0IixLbyksTW89e30sTm89T2JqZWN0LmZyZWV6ZSgoTW8uc2VhcmNoPSJzIixNby55b3V0dWJlPSJ5IixNby5wbGF5c3RvcmU9InAiLE1vLnNob3BwaW5nPSJoIixNby5hZHM9ImEiLE1vLm1hcHM9Im0iLE1vKSk7ZnVuY3Rpb24gT28oYSl7cmV0dXJuIHR5cGVvZiBhIT09Im9iamVjdCJ8fGE9PT1udWxsP3t9OmF9ZnVuY3Rpb24gUG8oYSl7cmV0dXJuIGE9PT12b2lkIDB8fGE9PT1udWxsPyIiOnR5cGVvZiBhPT09Im9iamVjdCI/YS50b1N0cmluZygpOlN0cmluZyhhKX1mdW5jdGlvbiBRbyhhKXtpZihhIT09dm9pZCAwJiZhIT09bnVsbClyZXR1cm4gUG8oYSl9O3ZhciBSbz1bRi5ELmthLEYuRC5yYSxGLkQubWEsRi5ELlhhXTtmdW5jdGlvbiBTbyhhKXtmb3IodmFyIGI9bShhW0YuRC5uY118fFsiIl0pLGM9Yi5uZXh0KCksZD17fTshYy5kb25lO2Q9e3JlZ2lvbjp2b2lkIDB9LGM9Yi5uZXh0KCkpZC5yZWdpb249Yy52YWx1ZSxHYihhLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihmLGcpe2lmKGYhPT1GLkQubmMpe3ZhciBoPVBvKGcpLGw9ZS5yZWdpb24sbj15bSgpLHA9em0oKTt5bD0hMDt4bCYmc2IoIlRBR0dJTkciLDIwKTt0bCgpLmRlY2xhcmUoZixoLGwsbixwKX19fShkKSl9CmZ1bmN0aW9uIFRvKGEpe3lvKCk7dmFyIGI9YWwoMTcsZnVuY3Rpb24oKXtyZXR1cm4hMX0pLGM9YWwoMTYsZnVuY3Rpb24oKXtyZXR1cm4hMX0pOyFiJiZjJiZ4bygiY3JjIik7WmsoMTcsITApO3ZhciBkPWFbRi5ELllnXTtkJiZQKDQxKTt2YXIgZT1hW0YuRC5uY107ZT9QKDQwKTplPVsiIl07Zm9yKHZhciBmPW0oZSksZz1mLm5leHQoKSxoPXt9OyFnLmRvbmU7aD17Qm86dm9pZCAwfSxnPWYubmV4dCgpKWguQm89Zy52YWx1ZSxHYihhLGZ1bmN0aW9uKGwpe3JldHVybiBmdW5jdGlvbihuLHApe2lmKG4hPT1GLkQubmMmJm4hPT1GLkQuWWcpe3ZhciBxPVFvKHApLHI9bC5Cbyx0PU51bWJlcihkKSx1PXltKCksdj16bSgpO3Q9dD09PXZvaWQgMD8wOnQ7eGw9ITA7eWwmJnNiKCJUQUdHSU5HIiwyMCk7dGwoKS5kZWZhdWx0KG4scSxyLHUsdix0LEFsKX19fShoKSl9CmZ1bmN0aW9uIFVvKGEpe0FsLnVzZWRDb250YWluZXJTY29wZWREZWZhdWx0cz0hMDt2YXIgYj1hW0YuRC5uY107aWYoYil7dmFyIGM9QXJyYXkuaXNBcnJheShiKT9iOltiXTtpZighYy5pbmNsdWRlcyh6bSgpKSYmIWMuaW5jbHVkZXMoeW0oKSkpcmV0dXJufUdiKGEsZnVuY3Rpb24oZCxlKXtzd2l0Y2goZCl7Y2FzZSAiYWRfc3RvcmFnZSI6Y2FzZSAiYW5hbHl0aWNzX3N0b3JhZ2UiOmNhc2UgImFkX3VzZXJfZGF0YSI6Y2FzZSAiYWRfcGVyc29uYWxpemF0aW9uIjpicmVhaztkZWZhdWx0OnJldHVybn1BbC51c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHM9ITA7QWwuY29udGFpbmVyU2NvcGVkRGVmYXVsdHNbZF09ZT09PSJncmFudGVkIj8zOjJ9KX0KZnVuY3Rpb24gVm8oYSxiKXt5bygpO1prKDE2LCEwKTtHYihhLGZ1bmN0aW9uKGMsZCl7dmFyIGU9UG8oZCk7eGw9ITA7eWwmJnNiKCJUQUdHSU5HIiwyMCk7dGwoKS51cGRhdGUoYyxlLEFsKX0pO0dsKGIuZXZlbnRJZCxiLnByaW9yaXR5SWQpfWZ1bmN0aW9uIFdvKGEpe2EuaGFzT3duUHJvcGVydHkoImFsbCIpJiYoQWwuc2VsZWN0ZWRBbGxDb3JlUGxhdGZvcm1TZXJ2aWNlcz0hMCxHYihObyxmdW5jdGlvbihiKXtBbC5jb3JlUGxhdGZvcm1TZXJ2aWNlc1tiXT1hLmFsbD09PSJncmFudGVkIjtBbC51c2VkQ29yZVBsYXRmb3JtU2VydmljZXM9ITB9KSk7R2IoYSxmdW5jdGlvbihiLGMpe2IhPT0iYWxsIiYmKEFsLmNvcmVQbGF0Zm9ybVNlcnZpY2VzW2JdPWM9PT0iZ3JhbnRlZCIsQWwudXNlZENvcmVQbGF0Zm9ybVNlcnZpY2VzPSEwKX0pfQpmdW5jdGlvbiBYbyhhKXtBcnJheS5pc0FycmF5KGEpfHwoYT1bYV0pO3JldHVybiBhLmV2ZXJ5KGZ1bmN0aW9uKGIpe3JldHVybiBCbChiKX0pfWZ1bmN0aW9uIFlvKCl7dmFyIGE9Wm87QXJyYXkuaXNBcnJheShhKXx8KGE9W2FdKTtyZXR1cm4gYS5zb21lKGZ1bmN0aW9uKGIpe3JldHVybiBCbChiKX0pfWZ1bmN0aW9uICRvKGEsYil7RmwoYSxiKX1mdW5jdGlvbiBhcChhLGIpe0lsKGEsYil9ZnVuY3Rpb24gYnAoYSxiKXtIbChhLGIpfWZ1bmN0aW9uIGNwKCl7dmFyIGE9W0YuRC5rYSxGLkQuWGEsRi5ELm1hXTt0bCgpLndhaXRGb3JVcGRhdGUoYSw1MDAsQWwpfWZ1bmN0aW9uIGRwKGEpe2Zvcih2YXIgYj1tKGEpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXt2YXIgZD1jLnZhbHVlO3RsKCkuY2xlYXJUaW1lb3V0KGQsdm9pZCAwLEFsKX1HbCgpfQpmdW5jdGlvbiBlcChhKXtmb3IodmFyIGI9e30sYz1tKGEuc3BsaXQoInwiKSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpYltkLnZhbHVlXT0hMDtyZXR1cm4gYn07dmFyIGZwPU9iamVjdC5mcmVlemUoW0YuRC5rYSxGLkQubWFdKTsKdmFyIGhwPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj17fSxjPW0oT2JqZWN0LmtleXMoYSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlO2JbZ3BbZV18fGVdPWFbZV19cmV0dXJuIGJ9LGlwPWZ1bmN0aW9uKGEpe3JldHVybiEhUShhLEguSi52ZCkmJlIoYSxGLkQuUGQpPT09IjEiJiZSKGEsRi5ELkhkKSE9PSIxIiYmWG8oZnApfSxqcD1mdW5jdGlvbihhLGIpe2lmKCFpcChhKSlyZXR1cm4hMTt2YXIgYz1RYygpfHxPYygpPzU4OjU3LGQ9Tm0oYyxocChiKSk7VGwoZCxhLGMpO1luKHtkZXN0aW5hdGlvbklkOmEudGFyZ2V0LmRlc3RpbmF0aW9uSWQsZW5kcG9pbnQ6YyxldmVudElkOmEuTS5ldmVudElkLHByaW9yaXR5SWQ6YS5NLnByaW9yaXR5SWR9LGQrIiZmbXQ9OCIsdm9pZCAwLHtRZzohMCxtZXRob2Q6IkdFVCJ9LGZ1bmN0aW9uKCl7fSxmdW5jdGlvbigpe1pjKGQrIiZmbXQ9MyIpfSk7cmV0dXJuITB9LGtwPXt9LGdwPShrcC5kbD0idXJsIixrcC5kcj0KInJlZiIsa3AudWlkPSJ1c2VySWQiLGtwKTt2YXIgbHA9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fSxkPWZ1bmN0aW9uKGUpe2JbZV0hPW51bGwmJmJbZV0hPT0iIiYmKGNbZV09YltlXSl9O00oNDc0KSYmZCgiX2dzaWQiKTtSKGEsRi5ELkhkKSE9PSIxIiYmKGQoImdjbGlkIiksZCgiZ2Nsc3JjIiksZCgiYXVpZCIpLGQoImRjbGlkIikpO2lmKE9iamVjdC5rZXlzKGMpLmxlbmd0aClyZXR1cm4gZCgiZ3RtIiksY307CnZhciBtcD17fSxucD0obXBbRi5ELnNhXT0iZ2N1IixtcFtGLkQuU2JdPSJnY2xnYiIsbXBbRi5ELmxiXT0iZ2NsYXciLG1wW0YuRC56Zl09ImdhZF9zb3VyY2UiLG1wW0YuRC5BZl09ImdhZF9zb3VyY2Vfc3JjIixtcFtGLkQuRGRdPSJnY2xpZCIsbXBbRi5ELkFsXT0iZ2Nsc3JjIixtcFtGLkQuQmZdPSJnYnJhaWQiLG1wW0YuRC5FZV09IndicmFpZCIsbXBbRi5ELkVkXT0iYXVpZCIsbXBbRi5ELkJsXT0iYWUiLG1wW0YuRC5IYV09bnVsbCxtcFtGLkQuRGxdPSJybmQiLG1wW0YuRC5IZF09Im5jbCIsbXBbRi5ELk5mXT0iZ2NsZGMiLG1wW0YuRC5LZF09ImRjbGlkIixtcFtGLkQuVmNdPSJlZGlkIixtcFtGLkQuVWJdPSJlbiIsbXBbRi5ELktlXT0iZ2RwciIsbXBbRi5ELlhjXT0iZ2RpZCIsbXBbRi5ELlRhXT1udWxsLG1wW0YuRC5MZV09Il9uZyIsbXBbRi5ELnRoXT0iZ3BwX3NpZCIsbXBbRi5ELnVoXT0iZ3BwIixtcFtGLkQuVmZdPSJfdHUiLG1wW0YuRC5RbF09Imd0bV91cCIsbXBbRi5ELk1lXT0KImZybSIsbXBbRi5ELlBkXT0ibHBzIixtcFtGLkQuTGldPSJkaWQiLG1wW0YuRC5VbF09Im5hdnQiLG1wW0YuRC56YV09ImRsIixtcFtGLkQuVWFdPSJkciIsbXBbRi5ELk1iXT0iZHQiLG1wW0YuRC5ibV09InNjcnNyYyIsbXBbRi5ELlpmXT0iZ2FfdWlkIixtcFtGLkQuT2VdPSJnZHByX2NvbnNlbnQiLG1wW0YuRC5RaV09InRlc3Rvbmx5IixtcFtGLkQucnFdPSJ1X3R6IixtcFtGLkQuUGVdPSJ0b3AiLG1wW0YuRC5RZV09InRpZCIsbXBbRi5ELmZiXT0idWlkIixtcFtGLkQua2ddPSJ1c19wcml2YWN5IixtcFtGLkQuZWRdPW51bGwsbXBbRi5ELmRlXT0ibnBhIixtcCk7ZnVuY3Rpb24gb3AoYSxiKXtpZihiIT1udWxsJiZiIT09IiIpe3ZhciBjPWI9PT0hMD8iMSI6Yj09PSExPyIwIjplbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGIpKTtpZihTYihhLCJfJiIpKXJldHVybntrZXk6YS5zdWJzdHJpbmcoMiksdmFsdWU6Y307dmFyIGQ9bnBbYV07aWYoZCE9PW51bGwpcmV0dXJuIGQ/e2tleTpkLHZhbHVlOmN9OntrZXk6QWIoYik/ImVwbi4iK2E6ImVwLiIrYSx2YWx1ZTpjfX19O2Z1bmN0aW9uIHBwKGEpe2E9YT09PXZvaWQgMD9bXTphO3JldHVybiB4aihhKS5qb2luKCJ+Iil9O2Z1bmN0aW9uIHFwKCl7dmFyIGE9W10sYj1OdW1iZXIoJycpfHwwLGM9TnVtYmVyKCcnKXx8MDtjfHwoYz1iLzEwMCk7dmFyIGQ9ZnVuY3Rpb24oKXt2YXIgdD0hMTtyZXR1cm4gdH0oKTthLnB1c2goe3VrOjIyOCxzdHVkeUlkOjIyOCxleHBlcmltZW50SWQ6MTA1MTc3MTU0LGNvbnRyb2xJZDoxMDUxNzcxNTUsY29udHJvbElkMjoxMDUyNTUyNDUscHJvYmFiaWxpdHk6YyxhY3RpdmU6ZCxaZTowfSk7dmFyIGU9TnVtYmVyKCcnKXx8CjAsZj1OdW1iZXIoJycpfHwwO2Z8fChmPWUvMTAwKTt2YXIgZz1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiB0fSgpO2EucHVzaCh7dWs6MjM1LHN0dWR5SWQ6MjM1LGV4cGVyaW1lbnRJZDoxMDUzNTcxNTAsY29udHJvbElkOjEwNTM1NzE1MSxjb250cm9sSWQyOjAscHJvYmFiaWxpdHk6ZixhY3RpdmU6ZyxaZToxfSk7dmFyIGg9TnVtYmVyKCcnKXx8MCxsPU51bWJlcignJyl8fAowO2x8fChsPWgvMTAwKTt2YXIgbj1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiB0fSgpO2EucHVzaCh7dWs6MjY2LHN0dWR5SWQ6MjY2LGV4cGVyaW1lbnRJZDoxMTU3MTg1MjksY29udHJvbElkOjExNTcxODUzMCxjb250cm9sSWQyOjExNTcxODUzMSxwcm9iYWJpbGl0eTpsLGFjdGl2ZTpuLFplOjB9KTt2YXIgcD1OdW1iZXIoJycpfHwwLHE9TnVtYmVyKCcnKXx8CjA7cXx8KHE9cC8xMDApO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9ITE7cmV0dXJuIHR9KCk7YS5wdXNoKHt1azoyNjcsc3R1ZHlJZDoyNjcsZXhwZXJpbWVudElkOjExNTcxODUyNixjb250cm9sSWQ6MTE1NzE4NTI3LGNvbnRyb2xJZDI6MTE1NzE4NTI4LHByb2JhYmlsaXR5OnEsYWN0aXZlOnIsWmU6MH0pO3JldHVybiBhfTt2YXIgcnA9ZnVuY3Rpb24oKXt0aGlzLks9e307dGhpcy5IPXt9O3RoaXMuTj17fTt0aGlzLlI9bmV3IFNldH0seHA9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLGQ9Yj1hLk5bYy5zdHVkeUlkXT9uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGMse2FjdGl2ZTohMH0pOmMsZT1GaTtkLmNvbnRyb2xJZDImJmQucHJvYmFiaWxpdHk8PS4yNXx8KGQ9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxkLHtjb250cm9sSWQyOjB9KSk7ZS5zdHVkaWVzW2Quc3R1ZHlJZF09ZDtiLmZvY3VzZWQmJihhLktbYi5zdHVkeUlkXT0hMCk7aWYoYi5aZT09PTEpe3ZhciBmPWIuc3R1ZHlJZDtzcChhLHRwKCksZik7dXAoYSxmKT90aih1aixmKTp2cChhLGYpP3VqLktbZl09ITA6d3AoYSxmKSYmKHVqLkhbZl09ITApfWVsc2UgaWYoYi5aZT09PTApe3ZhciBnPWIuc3R1ZHlJZDtzcChhLGEuSCxnKTt1cChhLGcpP3RqKHVqLGcpOnZwKGEsZyk/dWouS1tnXT0hMDp3cChhLGcpJiYKKHVqLkhbZ109ITApfX0sc3A9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Rmk7aWYoZS5zdHVkaWVzW2NdKXt2YXIgZj1lLnN0dWRpZXNbY10sZz1mLmV4cGVyaW1lbnRJZCxoPWYucHJvYmFiaWxpdHk7aWYoIShiLnN0dWRpZXN8fHt9KVtjXSl7dmFyIGw9Yi5zdHVkaWVzfHx7fTtsW2NdPSEwO2Iuc3R1ZGllcz1sO2lmKCFlLnN0dWRpZXNbY10uYWN0aXZlKWlmKGUuc3R1ZGllc1tjXS5wcm9iYWJpbGl0eT4uNSlJaShiLGcsYyk7ZWxzZSBpZighKGg8PTB8fGg+MSkpe3ZhciBuPXZvaWQgMDtpZihkKXt2YXIgcD1DaShkKyJ+IitjKTtpZihwPT09ImUyIiluPS0xO2Vsc2V7Zm9yKHZhciBxPW5ldyBVaW50OEFycmF5KHApLHI9QmlnSW50KDApLHQ9bShxKSx1PXQubmV4dCgpOyF1LmRvbmU7dT10Lm5leHQoKSlyPXI8PEJpZ0ludCg4KXxCaWdJbnQodS52YWx1ZSk7bj1OdW1iZXIociVCaWdJbnQoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpKX19R2kuc2soYixjLG4pfX19aWYoIWEuS1tjXSl7dmFyIHY9Ck5pKGIsYyk7diYmd2ouSC5LLmFkZCh2KX19LHRwPWZ1bmN0aW9uKCl7cmV0dXJuIG9tKGptLmJhLlRxLHt9KX0sdXA9ZnVuY3Rpb24oYSxiKXt2YXIgYz10cCgpO3JldHVybiBLaShjLGIpfHxLaShhLkgsYil9LHZwPWZ1bmN0aW9uKGEsYil7dmFyIGM9dHAoKTtyZXR1cm4gTGkoYyxiKXx8TGkoYS5ILGIpfSx3cD1mdW5jdGlvbihhLGIpe3ZhciBjPXRwKCk7cmV0dXJuIE1pKGMsYil8fE1pKGEuSCxiKX0seXA7CmZ1bmN0aW9uIHpwKCl7aWYoIXlwKXt2YXIgYT15cD1uZXcgcnAsYixjLGQ9KChiPUEpPT1udWxsP3ZvaWQgMDooYz1iLmxvY2F0aW9uKT09bnVsbD92b2lkIDA6Yy5oYXNoKXx8IiI7aWYoZFswXT09PSIjIiYmZFsxXT09PSJfIiYmZFsyXT09PSJ0IiYmZFszXT09PSJlIiYmZFs0XT09PSI9Iil7dmFyIGU9ZC5zdWJzdHJpbmcoNSk7aWYoZSlmb3IodmFyIGY9bShlLnNwbGl0KCJ+IikpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1OdW1iZXIoZy52YWx1ZSk7aCYmKGEuTltoXT0hMCx0aih1aixoKSl9fWZvcih2YXIgbD1tKHFwKCkpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXhwKGEsbi52YWx1ZSk7Zm9yKHZhciBwPVtdLHE9bShNZig1Nil8fFtdKSxyPXEubmV4dCgpOyFyLmRvbmU7cj1xLm5leHQoKSl7dmFyIHQ9ci52YWx1ZSx1PXtzdHVkeUlkOnRbMV0sYWN0aXZlOiEhdFsyXSxwcm9iYWJpbGl0eTp0WzNdfHwwLGV4cGVyaW1lbnRJZDp0WzRdfHwKMCxjb250cm9sSWQ6dFs1XXx8MCxjb250cm9sSWQyOnRbNl18fDB9LHY9MDtzd2l0Y2godFs3XSl7Y2FzZSAyOnY9MTticmVhaztjYXNlIDM6dj0yO2JyZWFrO2Nhc2UgMTpjYXNlIDQ6Y2FzZSA1OmNhc2UgMDp2PTB9dmFyIHg7YTpzd2l0Y2godS5zdHVkeUlkKXtjYXNlIDU2NzpjYXNlIDQ2Mjp4PSEwO2JyZWFrIGE7ZGVmYXVsdDp4PSExfXZhciB5PW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sdSx7WmU6dixmb2N1c2VkOnh9KTsoeS5hY3RpdmV8fHkucHJvYmFiaWxpdHk+LjUmJnkuZXhwZXJpbWVudElkfHx5LmV4cGVyaW1lbnRJZCYmeS5jb250cm9sSWQpJiZwLnB1c2goeSl9Zm9yKHZhciB6PW0ocCksQz16Lm5leHQoKTshQy5kb25lO0M9ei5uZXh0KCkpeHAoYSxDLnZhbHVlKX19CmZ1bmN0aW9uIEFwKGEsYil7enAoKTt2YXIgYz15cDtzcChjLHRwKCksYSxiKTt1cChjLGEpP3RqKHVqLGEpOnZwKGMsYSk/dWouS1thXT0hMDp3cChjLGEpJiYodWouSFthXT0hMCl9ZnVuY3Rpb24gQnAoKXt6cCgpO3ZhciBhPXlwLGI9dXAoYSw1NjcpO2lmKGEuS1s1NjddKXt2YXIgYyxkPXRwKCk7KGM9TmkoZCw1NjcpfHxOaShhLkgsNTY3KSkmJmEuUi5hZGQoYyl9cmV0dXJuIGJ9ZnVuY3Rpb24gQ3AoYSl7enAoKTt2YXIgYj1uZXcgU2V0KHlwLlIpO2lmKGEpZm9yKHZhciBjPVEoYSxILkouQ2gpfHxbXSxkPW0oYyksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpYi5hZGQoZS52YWx1ZSk7cmV0dXJuIHBwKFtdLmNvbmNhdCh3KGIpKSl9O2Z1bmN0aW9uIERwKGEpe3ZhciBiPWEubG9jYXRpb24uaHJlZjtpZihhPT09YS50b3ApcmV0dXJue3VybDpiLElzOiEwfTt2YXIgYz0hMSxkPWEuZG9jdW1lbnQ7ZCYmZC5yZWZlcnJlciYmKGI9ZC5yZWZlcnJlcixhLnBhcmVudD09PWEudG9wJiYoYz0hMCkpO3ZhciBlPWEubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zO2lmKGUpe3ZhciBmPWVbZS5sZW5ndGgtMV0sZztmJiYoKGc9Yik9PW51bGw/dm9pZCAwOmcuaW5kZXhPZihmKSk9PT0tMSYmKGM9ITEsYj1mKX1yZXR1cm57dXJsOmIsSXM6Y319ZnVuY3Rpb24gRXAoYSl7dHJ5e3ZhciBiO2lmKGI9ISFhJiZhLmxvY2F0aW9uLmhyZWYhPW51bGwpYTp7dHJ5e0huKGEuZm9vKTtiPSEwO2JyZWFrIGF9Y2F0Y2goYyl7fWI9ITF9cmV0dXJuIGJ9Y2F0Y2goYyl7cmV0dXJuITF9fWZ1bmN0aW9uIEZwKCl7Zm9yKHZhciBhPUEsYj1hO2EmJmEhPT1hLnBhcmVudDspYT1hLnBhcmVudCxFcChhKSYmKGI9YSk7cmV0dXJuIGJ9O3ZhciBHcD1mdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKCl7fTtjLnByb3RvdHlwZT1hLnByb3RvdHlwZTt2YXIgZD1uZXcgYzthLmFwcGx5KGQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTtyZXR1cm4gZH0sSHA9ZnVuY3Rpb24oYSl7dmFyIGI9YTtyZXR1cm4gZnVuY3Rpb24oKXtpZihiKXt2YXIgYz1iO2I9bnVsbDtjKCl9fX07ZnVuY3Rpb24gSXAoYSxiKXtpZihhKWZvcih2YXIgYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiZiKGFbY10sYyxhKX07ZnVuY3Rpb24gSnAoYSl7dmFyIGI9YS5zcGxpdCgvWz8jXS8pLGM9L1s/XS8udGVzdChhKT8iPyIrYlsxXToiIjtyZXR1cm57ems6YlswXSxwYXJhbXM6YyxmcmFnbWVudDovWyNdLy50ZXN0KGEpPyIjIisoYz9iWzJdOmJbMV0pOiIifX1mdW5jdGlvbiBLcChhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7aWYoYi5sZW5ndGg9PT0wKXJldHVybiBqYyhhWzBdKTtmb3IodmFyIGM9YVswXSxkPTA7ZDxiLmxlbmd0aDtkKyspYys9ZW5jb2RlVVJJQ29tcG9uZW50KGJbZF0pK2FbZCsxXTtyZXR1cm4gamMoYyl9CmZ1bmN0aW9uIExwKGEsYixjLGQpe2Z1bmN0aW9uIGUoZyxoKXtnIT1udWxsJiYoQXJyYXkuaXNBcnJheShnKT9nLmZvckVhY2goZnVuY3Rpb24obCl7cmV0dXJuIGUobCxoKX0pOihiKz1mK2VuY29kZVVSSUNvbXBvbmVudChoKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGcpLGY9IiYiKSl9dmFyIGY9Yi5sZW5ndGg/IiYiOiI/IjtkLmNvbnN0cnVjdG9yPT09T2JqZWN0JiYoZD1PYmplY3QuZW50cmllcyhkKSk7QXJyYXkuaXNBcnJheShkKT9kLmZvckVhY2goZnVuY3Rpb24oZyl7cmV0dXJuIGUoZ1sxXSxnWzBdKX0pOmQuZm9yRWFjaChlKTtyZXR1cm4gamMoYStiK2MpfWZ1bmN0aW9uIE1wKGEsYil7dmFyIGM9SnAoa2MoYSkudG9TdHJpbmcoKSksZD1jLnprLnNsaWNlKC0xKT09PSIvIj8iIjoiLyIsZT1jLnprK2QrZW5jb2RlVVJJQ29tcG9uZW50KGIpO3JldHVybiBqYyhlK2MucGFyYW1zK2MuZnJhZ21lbnQpfTt2YXIgTnA9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YSxkPTA7ZDw1MDsrK2Qpe3ZhciBlO3RyeXtlPSEoIWMuZnJhbWVzfHwhYy5mcmFtZXNbYl0pfWNhdGNoKGgpe2U9ITF9aWYoZSlyZXR1cm4gYzt2YXIgZjthOnt0cnl7dmFyIGc9Yy5wYXJlbnQ7aWYoZyYmZyE9PWMpe2Y9ZzticmVhayBhfX1jYXRjaChoKXt9Zj1udWxsfWlmKCEoYz1mKSlicmVha31yZXR1cm4gbnVsbH0sT3A9ZnVuY3Rpb24oYSl7dmFyIGI9QTtpZihiLnRvcD09YilyZXR1cm4gMDtpZihhPT09dm9pZCAwPzA6YSl7dmFyIGM9Yi5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnM7aWYoYylyZXR1cm4gY1tjLmxlbmd0aC0xXT09Yi5sb2NhdGlvbi5vcmlnaW4/MToyfXJldHVybiBFcChiLnRvcCk/MToyfSxQcD1mdW5jdGlvbihhKXthPWE9PT12b2lkIDA/ZG9jdW1lbnQ6YTtyZXR1cm4gYS5jcmVhdGVFbGVtZW50KCJpbWciKX07ZnVuY3Rpb24gUXAoYSl7Zm9yKHZhciBiPVtdLGM9Qi5jb29raWUuc3BsaXQoIjsiKSxkPW5ldyBSZWdFeHAoIl5cXHMqIisoYXx8Il9nYWMiKSsiXyhVQS1cXGQrLVxcZCspPVxccyooLis/KVxccyokIiksZT0wO2U8Yy5sZW5ndGg7ZSsrKXt2YXIgZj1jW2VdLm1hdGNoKGQpO2YmJmIucHVzaCh7dWQ6ZlsxXSx2YWx1ZTpmWzJdLHRpbWVzdGFtcDpOdW1iZXIoZlsyXS5zcGxpdCgiLiIpWzFdKXx8MH0pfWIuc29ydChmdW5jdGlvbihnLGgpe3JldHVybiBoLnRpbWVzdGFtcC1nLnRpbWVzdGFtcH0pO3JldHVybiBifQpmdW5jdGlvbiBScChhLGIpe3ZhciBjPVFwKGEpLGQ9e307aWYoIWN8fCFjLmxlbmd0aClyZXR1cm4gZDtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyl7dmFyIGY9Y1tlXS52YWx1ZS5zcGxpdCgiLiIpO2lmKCEoZlswXSE9PSIxInx8YiYmZi5sZW5ndGg8M3x8IWImJmYubGVuZ3RoIT09MykmJk51bWJlcihmWzFdKSl7ZFtjW2VdLnVkXXx8KGRbY1tlXS51ZF09W10pO3ZhciBnPXt2ZXJzaW9uOmZbMF0sdGltZXN0YW1wOk51bWJlcihmWzFdKSoxRTMsZ2NsaWQ6ZlsyXX07YiYmZi5sZW5ndGg+MyYmKGcubGFiZWxzPWYuc2xpY2UoMykpO2RbY1tlXS51ZF0ucHVzaChnKX19cmV0dXJuIGR9O2Z1bmN0aW9uIFNwKGEpe3JldHVybiBhLm9yaWdpbiE9PSJudWxsIn07dmFyIFRwPXt9LFVwPShUcC5rPXtuYTovXltcdy1dKyQvfSxUcC5iPXtuYTovXltcdy1dKyQvLG5rOiEwfSxUcC5pPXtuYTovXlsxLTldXGQqJC99LFRwLmg9e25hOi9eXGQrJC99LFRwLnQ9e25hOi9eWzEtOV1cZCokL30sVHAuZD17bmE6L15bQS1aYS16MC05Xy1dKyQvfSxUcC5qPXtuYTovXlxkKyQvfSxUcC51PXtuYTovXlsxLTldXGQqJC99LFRwLmw9e25hOi9eWzAxXSQvfSxUcC5vPXtuYTovXlsxLTldXGQqJC99LFRwLmc9e25hOi9eWzAxXSQvfSxUcC5zPXtuYTovXi4rJC99LFRwLm09e25hOi9eWzAxXSQvfSxUcCk7dmFyIFZwPXt9LFpwPShWcFs1XT17amk6ezI6V3B9LFpqOiIyIixSaDpbImsiLCJpIiwiYiIsInUiXX0sVnBbNF09e2ppOnsyOldwLEdDTDpYcH0sWmo6IjIiLFJoOlsiayIsImkiLCJiIiwibSJdfSxWcFsyXT17amk6e0dTMjpXcCxHUzE6WXB9LFpqOiJHUzIiLFJoOiJzb2d0amxoZCIuc3BsaXQoIiIpfSxWcCk7ZnVuY3Rpb24gJHAoYSxiLGMpe3ZhciBkPVpwW2JdO2lmKGQpe3ZhciBlPWEuc3BsaXQoIi4iKVswXTtjPT1udWxsfHxjKGUpO2lmKGUpe3ZhciBmPWQuamlbZV07aWYoZilyZXR1cm4gZihhLGIpfX19CmZ1bmN0aW9uIFdwKGEsYil7dmFyIGM9YS5zcGxpdCgiLiIpO2lmKGMubGVuZ3RoPT09Myl7dmFyIGQ9Y1syXTtpZihkLmluZGV4T2YoIiQiKT09PS0xJiZkLmluZGV4T2YoIiUyNCIpIT09LTEpdHJ5e2Q9ZGVjb2RlVVJJQ29tcG9uZW50KGQpfWNhdGNoKHQpe312YXIgZT17fSxmPVpwW2JdO2lmKGYpe2Zvcih2YXIgZz1mLlJoLGg9bShkLnNwbGl0KCIkIikpLGw9aC5uZXh0KCk7IWwuZG9uZTtsPWgubmV4dCgpKXt2YXIgbj1sLnZhbHVlLHA9blswXTtpZihnLmluZGV4T2YocCkhPT0tMSl0cnl7dmFyIHE9ZGVjb2RlVVJJQ29tcG9uZW50KG4uc3Vic3RyaW5nKDEpKSxyPVVwW3BdO3ImJihyLm5rPyhlW3BdPWVbcF18fFtdLGVbcF0ucHVzaChxKSk6ZVtwXT1xKX1jYXRjaCh0KXt9fXJldHVybiBlfX19ZnVuY3Rpb24gYXEoYSxiLGMpe3ZhciBkPVpwW2JdO2lmKGQpcmV0dXJuW2QuWmosY3x8IjEiLGJxKGEsYildLmpvaW4oIi4iKX0KZnVuY3Rpb24gYnEoYSxiKXt2YXIgYz1acFtiXTtpZihjKXtmb3IodmFyIGQ9W10sZT1tKGMuUmgpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlLGg9VXBbZ107aWYoaCl7dmFyIGw9YVtnXTtpZihsIT09dm9pZCAwKWlmKGgubmsmJkFycmF5LmlzQXJyYXkobCkpZm9yKHZhciBuPW0obCkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpZC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudCgiIitnK3AudmFsdWUpKTtlbHNlIGQucHVzaChlbmNvZGVVUklDb21wb25lbnQoIiIrZytsKSl9fXJldHVybiBkLmpvaW4oIiQiKX19ZnVuY3Rpb24gWHAoYSl7dmFyIGI9YS5zcGxpdCgiLiIpO2Iuc2hpZnQoKTt2YXIgYz1iLnNoaWZ0KCksZD1iLnNoaWZ0KCksZT17fTtyZXR1cm4gZS5rPWQsZS5pPWMsZS5iPWIsZX0KZnVuY3Rpb24gWXAoYSl7dmFyIGI9YS5zcGxpdCgiLiIpLnNsaWNlKDIpO2lmKCEoYi5sZW5ndGg8NXx8Yi5sZW5ndGg+Nykpe3ZhciBjPXt9O3JldHVybiBjLnM9YlswXSxjLm89YlsxXSxjLmc9YlsyXSxjLnQ9YlszXSxjLmo9Yls0XSxjLmw9Yls1XSxjLmg9Yls2XSxjfX07ZnVuY3Rpb24gY3EoYSxiLGMsZCl7dmFyIGU7cmV0dXJuKGU9ZHEoZnVuY3Rpb24oZil7cmV0dXJuIGY9PT1hfSxiLGMsZClbYV0pIT1udWxsP2U6W119ZnVuY3Rpb24gZHEoYSxiLGMsZCl7dmFyIGU7aWYoZXEoZCkpe2Zvcih2YXIgZj17fSxnPVN0cmluZyhifHxmcSgpKS5zcGxpdCgiOyIpLGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIGw9Z1toXS5zcGxpdCgiPSIpLG49bFswXS50cmltKCk7aWYobiYmYShuKSl7dmFyIHA9bC5zbGljZSgxKS5qb2luKCI9IikudHJpbSgpO3AmJmMmJihwPWRlY29kZVVSSUNvbXBvbmVudChwKSk7dmFyIHE9dm9pZCAwLHI9dm9pZCAwOygocT1mKVtyPW5dfHwocVtyXT1bXSkpLnB1c2gocCl9fWU9Zn1lbHNlIGU9e307cmV0dXJuIGV9CmZ1bmN0aW9uIGdxKGEsYixjLGQsZSl7aWYoZXEoZSkpe3ZhciBmPWhxKGEsZCxlKTtpZihmLmxlbmd0aD09PTEpcmV0dXJuIGZbMF07aWYoZi5sZW5ndGghPT0wKXtmPWlxKGYsZnVuY3Rpb24oZyl7cmV0dXJuIGcuSnJ9LGIpO2lmKGYubGVuZ3RoPT09MSlyZXR1cm4gZlswXTtmPWlxKGYsZnVuY3Rpb24oZyl7cmV0dXJuIGcuV3N9LGMpO3JldHVybiBmWzBdfX19ZnVuY3Rpb24ganEoYSxiLGMsZCl7dmFyIGU9ZnEoKSxmPUE7U3AoZikmJihmLmRvY3VtZW50LmNvb2tpZT1hKTt2YXIgZz1mcSgpO3JldHVybiBlIT09Z3x8YyE9PXZvaWQgMCYmY3EoYixnLCExLGQpLmluZGV4T2YoYyk+PTB9CmZ1bmN0aW9uIGtxKGEsYixjLGQpe2Z1bmN0aW9uIGUoeCx5LHope2lmKHo9PW51bGwpcmV0dXJuIGRlbGV0ZSBoW3ldLHg7aFt5XT16O3JldHVybiB4KyI7ICIreSsiPSIren1mdW5jdGlvbiBmKHgseSl7aWYoeT09bnVsbClyZXR1cm4geDtoW3ldPSEwO3JldHVybiB4KyI7ICIreX1pZighZXEoYy5NYykpcmV0dXJuIDI7dmFyIGc7Yj09bnVsbD9nPWErIj1kZWxldGVkOyBleHBpcmVzPSIrKG5ldyBEYXRlKDApKS50b1VUQ1N0cmluZygpOihjLmVuY29kZSYmKGI9ZW5jb2RlVVJJQ29tcG9uZW50KGIpKSxiPWxxKGIpLGc9YSsiPSIrYik7dmFyIGg9e307Zz1lKGcsInBhdGgiLGMucGF0aCk7dmFyIGw7Yy5leHBpcmVzIGluc3RhbmNlb2YgRGF0ZT9sPWMuZXhwaXJlcy50b1VUQ1N0cmluZygpOmMuZXhwaXJlcyE9bnVsbCYmKGw9IiIrYy5leHBpcmVzKTtnPWUoZywiZXhwaXJlcyIsbCk7Zz1lKGcsIm1heC1hZ2UiLGMuT3MpO2c9ZShnLCJzYW1lc2l0ZSIsYy5ydCk7Yy5zZWN1cmUmJgooZz1mKGcsInNlY3VyZSIpKTt2YXIgbj1jLmRvbWFpbjtpZihuJiZuLnRvTG93ZXJDYXNlKCk9PT0iYXV0byIpe2Zvcih2YXIgcD1tcSgpLHE9dm9pZCAwLHI9ITEsdD0wO3Q8cC5sZW5ndGg7Kyt0KXt2YXIgdT1wW3RdIT09Im5vbmUiP3BbdF06dm9pZCAwLHY9ZShnLCJkb21haW4iLHUpO3Y9Zih2LGMuZmxhZ3MpO3RyeXtkJiZkKGEsaCl9Y2F0Y2goeCl7cT14O2NvbnRpbnVlfXI9ITA7aWYoIW5xKHUsYy5wYXRoKSYmanEodixhLGIsYy5NYykpcmV0dXJuIDB9aWYocSYmIXIpdGhyb3cgcTtyZXR1cm4gMX1uJiZuLnRvTG93ZXJDYXNlKCkhPT0ibm9uZSImJihnPWUoZywiZG9tYWluIixuKSk7Zz1mKGcsYy5mbGFncyk7ZCYmZChhLGgpO3JldHVybiBucShuLGMucGF0aCk/MTpqcShnLGEsYixjLk1jKT8wOjF9ZnVuY3Rpb24gb3EoYSxiLGMpe2MucGF0aD09bnVsbCYmKGMucGF0aD0iLyIpO2MuZG9tYWlufHwoYy5kb21haW49ImF1dG8iKTtyZXR1cm4ga3EoYSxiLGMpfQpmdW5jdGlvbiBpcShhLGIsYyl7Zm9yKHZhciBkPVtdLGU9W10sZixnPTA7ZzxhLmxlbmd0aDtnKyspe3ZhciBoPWFbZ10sbD1iKGgpO2w9PT1jP2QucHVzaChoKTpmPT09dm9pZCAwfHxsPGY/KGU9W2hdLGY9bCk6bD09PWYmJmUucHVzaChoKX1yZXR1cm4gZC5sZW5ndGg+MD9kOmV9ZnVuY3Rpb24gaHEoYSxiLGMpe2Zvcih2YXIgZD1bXSxlPWNxKGEsdm9pZCAwLHZvaWQgMCxjKSxmPTA7ZjxlLmxlbmd0aDtmKyspe3ZhciBnPWVbZl0uc3BsaXQoIi4iKSxoPWcuc2hpZnQoKTtpZighYnx8IWh8fGIuaW5kZXhPZihoKSE9PS0xKXt2YXIgbD1nLnNoaWZ0KCk7aWYobCl7dmFyIG49bC5zcGxpdCgiLSIpO2QucHVzaCh7QnI6ZVtmXSxDcjpnLmpvaW4oIi4iKSxKcjpOdW1iZXIoblswXSl8fDEsV3M6TnVtYmVyKG5bMV0pfHwxfSl9fX1yZXR1cm4gZH1mdW5jdGlvbiBscShhKXthJiZhLmxlbmd0aD4xMjAwJiYoYT1hLnN1YnN0cmluZygwLDEyMDApKTtyZXR1cm4gYX0KdmFyIHBxPS9eKHd3d1wuKT9nb29nbGUoXC5jb20/KT8oXC5bYS16XXsyfSk/JC8scXE9LyhefFwuKWRvdWJsZWNsaWNrXC5uZXQkL2k7ZnVuY3Rpb24gbnEoYSxiKXtyZXR1cm4gYSE9PXZvaWQgMCYmKHFxLnRlc3QoQS5kb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZSl8fGI9PT0iLyImJnBxLnRlc3QoYSkpfWZ1bmN0aW9uIHJxKGEpe2lmKCFhKXJldHVybiAxO3ZhciBiPWE7WWYoNCkmJmE9PT0ibm9uZSImJihiPUEuZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUpO2I9Yi5pbmRleE9mKCIuIik9PT0wP2Iuc3Vic3RyaW5nKDEpOmI7cmV0dXJuIGIuc3BsaXQoIi4iKS5sZW5ndGh9ZnVuY3Rpb24gc3EoYSl7aWYoIWF8fGE9PT0iLyIpcmV0dXJuIDE7YVswXSE9PSIvIiYmKGE9Ii8iK2EpO2FbYS5sZW5ndGgtMV0hPT0iLyImJihhKz0iLyIpO3JldHVybiBhLnNwbGl0KCIvIikubGVuZ3RoLTF9CmZ1bmN0aW9uIHRxKGEsYil7dmFyIGM9IiIrcnEoYSksZD1zcShiKTtkPjEmJihjKz0iLSIrZCk7cmV0dXJuIGN9CnZhciBmcT1mdW5jdGlvbigpe3ZhciBhPUE7cmV0dXJuIFNwKGEpP2EuZG9jdW1lbnQuY29va2llOiIifSxlcT1mdW5jdGlvbihhKXtyZXR1cm4gYSYmWWYoNSk/KEFycmF5LmlzQXJyYXkoYSk/YTpbYV0pLmV2ZXJ5KGZ1bmN0aW9uKGIpe3JldHVybiBEbChiKSYmQmwoYil9KTohMH0sbXE9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPUEuZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUuc3BsaXQoIi4iKTtpZihiLmxlbmd0aD09PTQpe3ZhciBjPWJbYi5sZW5ndGgtMV07aWYoTnVtYmVyKGMpLnRvU3RyaW5nKCk9PT1jKXJldHVyblsibm9uZSJdfWZvcih2YXIgZD1iLmxlbmd0aC0yO2Q+PTA7ZC0tKWEucHVzaChiLnNsaWNlKGQpLmpvaW4oIi4iKSk7dmFyIGU9QS5kb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZTtxcS50ZXN0KGUpfHxwcS50ZXN0KGUpfHxhLnB1c2goIm5vbmUiKTtyZXR1cm4gYX07ZnVuY3Rpb24gdXEoYSxiLGMsZCl7dmFyIGUsZj1OdW1iZXIoYS5wZCE9bnVsbD9hLnBkOnZvaWQgMCk7ZiE9PTAmJihlPW5ldyBEYXRlKChifHxOYigpKSsxRTMqKGZ8fDc3NzZFMykpKTtyZXR1cm57cGF0aDphLnBhdGgsZG9tYWluOmEuZG9tYWluLGZsYWdzOmEuZmxhZ3MsZW5jb2RlOiEhYyxleHBpcmVzOmUsTWM6ZH19O3ZhciB2cT1uZXcgTWFwKFtbNSwiYWRfc3RvcmFnZSJdLFs0LFsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdXSxbMiwiYW5hbHl0aWNzX3N0b3JhZ2UiXV0pO2Z1bmN0aW9uIHdxKGEsYixjKXtpZihacFtiXSl7Zm9yKHZhciBkPVtdLGU9Y3EoYSx2b2lkIDAsdm9pZCAwLHZxLmdldChiKSksZj1tKGUpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD0kcChnLnZhbHVlLGIsYyk7aCYmZC5wdXNoKHhxKGgpKX1yZXR1cm4gZH19CmZ1bmN0aW9uIHlxKGEpe3ZhciBiPXpxO2lmKFpwWzJdKXtmb3IodmFyIGM9e30sZD1kcShhLHZvaWQgMCx2b2lkIDAsdnEuZ2V0KDIpKSxlPU9iamVjdC5rZXlzKGQpLnNvcnQoKSxmPW0oZSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpZm9yKHZhciBoPWcudmFsdWUsbD1tKGRbaF0pLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD0kcChuLnZhbHVlLDIsYik7cCYmKGNbaF18fChjW2hdPVtdKSxjW2hdLnB1c2goeHEocCkpKX1yZXR1cm4gY319ZnVuY3Rpb24gQXEoYSxiLGMsZCxlKXtkPWR8fHt9O3ZhciBmPXRxKGQuZG9tYWluLGQucGF0aCksZz1hcShiLGMsZik7aWYoIWcpcmV0dXJuIDE7dmFyIGg9dXEoZCxlLHZvaWQgMCx2cS5nZXQoYykpO3JldHVybiBvcShhLGcsaCl9ZnVuY3Rpb24gQnEoYSxiKXt2YXIgYz1iLm5hO3JldHVybiB0eXBlb2YgYz09PSJmdW5jdGlvbiI/YyhhKTpjLnRlc3QoYSl9CmZ1bmN0aW9uIHhxKGEpe2Zvcih2YXIgYj1tKE9iamVjdC5rZXlzKGEpKSxjPWIubmV4dCgpLGQ9e307IWMuZG9uZTtkPXtBZzp2b2lkIDB9LGM9Yi5uZXh0KCkpe3ZhciBlPWMudmFsdWUsZj1hW2VdO2QuQWc9VXBbZV07ZC5BZz9kLkFnLm5rP2FbZV09QXJyYXkuaXNBcnJheShmKT9mLmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIEJxKGgsZy5BZyl9fShkKSk6dm9pZCAwOnR5cGVvZiBmPT09InN0cmluZyImJkJxKGYsZC5BZyl8fChhW2VdPXZvaWQgMCk6YVtlXT12b2lkIDB9cmV0dXJuIGF9O3ZhciBDcTtmdW5jdGlvbiBEcSgpe2Z1bmN0aW9uIGEoZyl7YyhnLnRhcmdldHx8Zy5zcmNFbGVtZW50fHx7fSl9ZnVuY3Rpb24gYihnKXtkKGcudGFyZ2V0fHxnLnNyY0VsZW1lbnR8fHt9KX12YXIgYz1FcSxkPUZxLGU9R3EoKTtpZighZS5pbml0KXskYyhCLCJtb3VzZWRvd24iLGEpOyRjKEIsImtleXVwIixhKTskYyhCLCJzdWJtaXQiLGIpO3ZhciBmPUhUTUxGb3JtRWxlbWVudC5wcm90b3R5cGUuc3VibWl0O0hUTUxGb3JtRWxlbWVudC5wcm90b3R5cGUuc3VibWl0PWZ1bmN0aW9uKCl7ZCh0aGlzKTtmLmNhbGwodGhpcyl9O2UuaW5pdD0hMH19ZnVuY3Rpb24gSHEoYSxiLGMsZCxlKXt2YXIgZj17Y2FsbGJhY2s6YSxkb21haW5zOmIsZnJhZ21lbnQ6Yz09PTIscGxhY2VtZW50OmMsZm9ybXM6ZCxzYW1lSG9zdDplfTtHcSgpLmRlY29yYXRvcnMucHVzaChmKX0KZnVuY3Rpb24gSXEoYSxiLGMpe2Zvcih2YXIgZD1HcSgpLmRlY29yYXRvcnMsZT17fSxmPTA7ZjxkLmxlbmd0aDsrK2Ype3ZhciBnPWRbZl0saDtpZihoPSFjfHxnLmZvcm1zKWE6e3ZhciBsPWcuZG9tYWlucyxuPWEscD0hIWcuc2FtZUhvc3Q7aWYobCYmKHB8fG4hPT1CLmxvY2F0aW9uLmhvc3RuYW1lKSlmb3IodmFyIHE9MDtxPGwubGVuZ3RoO3ErKylpZihsW3FdaW5zdGFuY2VvZiBSZWdFeHApe2lmKGxbcV0udGVzdChuKSl7aD0hMDticmVhayBhfX1lbHNlIGlmKG4uaW5kZXhPZihsW3FdKT49MHx8cCYmbFtxXS5pbmRleE9mKG4pPj0wKXtoPSEwO2JyZWFrIGF9aD0hMX1pZihoKXt2YXIgcj1nLnBsYWNlbWVudDtyPT09dm9pZCAwJiYocj1nLmZyYWdtZW50PzI6MSk7cj09PWImJlFiKGUsZy5jYWxsYmFjaygpKX19cmV0dXJuIGV9CmZ1bmN0aW9uIEdxKCl7dmFyIGE9TWMoImdvb2dsZV90YWdfZGF0YSIse30pLGI9YS5nbDtiJiZiLmRlY29yYXRvcnN8fChiPXtkZWNvcmF0b3JzOltdfSxhLmdsPWIpO3JldHVybiBifTt2YXIgSnE9LyguKj8pXCooLio/KVwqKC4qKS8sS3E9L15odHRwcz86XC9cLyhbXlwvXSo/KVwuP2NkblwuYW1wcHJvamVjdFwub3JnXC8/KC4qKS8sTHE9L14oPzp3d3dcLnxtXC58YW1wXC4pKy8sTXE9LyhbXj8jXSspKFw/W14jXSopPygjLiopPy87ZnVuY3Rpb24gTnEoYSl7dmFyIGI9TXEuZXhlYyhhKTtpZihiKXJldHVybntoazpiWzFdLHF1ZXJ5OmJbMl0sZnJhZ21lbnQ6YlszXX19ZnVuY3Rpb24gT3EoYSl7cmV0dXJuIG5ldyBSZWdFeHAoIiguKj8pKF58JikiK2ErIj0oW14mXSopJj8oLiopIil9CmZ1bmN0aW9uIFBxKGEsYil7dmFyIGM9W0hjLnVzZXJBZ2VudCwobmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCksSGMudXNlckxhbmd1YWdlfHxIYy5sYW5ndWFnZSxNYXRoLmZsb29yKE5iKCkvNjAvMUUzKS0oYj09PXZvaWQgMD8wOmIpLGFdLmpvaW4oIioiKSxkO2lmKCEoZD1DcSkpe2Zvcih2YXIgZT1BcnJheSgyNTYpLGY9MDtmPDI1NjtmKyspe2Zvcih2YXIgZz1mLGg9MDtoPDg7aCsrKWc9ZyYxP2c+Pj4xXjM5ODgyOTIzODQ6Zz4+PjE7ZVtmXT1nfWQ9ZX1DcT1kO2Zvcih2YXIgbD00Mjk0OTY3Mjk1LG49MDtuPGMubGVuZ3RoO24rKylsPWw+Pj44XkNxWyhsXmMuY2hhckNvZGVBdChuKSkmMjU1XTtyZXR1cm4oKGxeLTEpPj4+MCkudG9TdHJpbmcoMzYpfQpmdW5jdGlvbiBRcShhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9UmooQS5sb2NhdGlvbi5ocmVmKSxkPWMuc2VhcmNoLnJlcGxhY2UoIj8iLCIiKSxlPUlqKGQsIl9nbCIsITEsITApfHwiIjtiLnF1ZXJ5PVJxKGUpfHx7fTt2YXIgZj1MaihjLCJmcmFnbWVudCIpLGc7dmFyIGg9LTE7aWYoU2IoZiwiX2dsPSIpKWg9NDtlbHNle3ZhciBsPWYuaW5kZXhPZigiJl9nbD0iKTtsPjAmJihoPWwrMysyKX1pZihoPDApZz12b2lkIDA7ZWxzZXt2YXIgbj1mLmluZGV4T2YoIiYiLGgpO2c9bjwwP2Yuc3Vic3RyaW5nKGgpOmYuc3Vic3RyaW5nKGgsbil9Yi5mcmFnbWVudD1ScShnfHwiIil8fHt9O2EmJlNxKGMsZCxmKX19ZnVuY3Rpb24gVHEoYSxiKXt2YXIgYz1PcShhKS5leGVjKGIpLGQ9YjtpZihjKXt2YXIgZT1jWzJdLGY9Y1s0XTtkPWNbMV07ZiYmKGQ9ZCtlK2YpfXJldHVybiBkfQpmdW5jdGlvbiBTcShhLGIsYyl7ZnVuY3Rpb24gZChnLGgpe3ZhciBsPVRxKCJfZ2wiLGcpO2wubGVuZ3RoJiYobD1oK2wpO3JldHVybiBsfWlmKEdjJiZHYy5yZXBsYWNlU3RhdGUpe3ZhciBlPU9xKCJfZ2wiKTtpZihlLnRlc3QoYil8fGUudGVzdChjKSl7dmFyIGY9TGooYSwicGF0aCIpO2I9ZChiLCI/Iik7Yz1kKGMsIiMiKTtHYy5yZXBsYWNlU3RhdGUoe30sIiIsIiIrZitiK2MpfX19ZnVuY3Rpb24gVXEoYSxiKXt2YXIgYz1RcSghIWIpLGQ9R3EoKTtkLmRhdGF8fChkLmRhdGE9e3F1ZXJ5Ont9LGZyYWdtZW50Ont9fSxjKGQuZGF0YSkpO3ZhciBlPXt9LGY9ZC5kYXRhO2YmJihRYihlLGYucXVlcnkpLGEmJlFiKGUsZi5mcmFnbWVudCkpO3JldHVybiBlfQp2YXIgUnE9ZnVuY3Rpb24oYSl7dHJ5e3ZhciBiPVZxKGEsMyk7aWYoYiE9PXZvaWQgMCl7Zm9yKHZhciBjPXt9LGQ9Yj9iLnNwbGl0KCIqIik6W10sZT0wO2UrMTxkLmxlbmd0aDtlKz0yKXt2YXIgZj1kW2VdLGc9cWIoZFtlKzFdKTtjW2ZdPWd9c2IoIlRBR0dJTkciLDYpO3JldHVybiBjfX1jYXRjaChoKXtzYigiVEFHR0lORyIsOCl9fTtmdW5jdGlvbiBWcShhLGIpe2lmKGEpe3ZhciBjO2E6e2Zvcih2YXIgZD1hLGU9MDtlPDM7KytlKXt2YXIgZj1KcS5leGVjKGQpO2lmKGYpe2M9ZjticmVhayBhfWQ9S2ooZCl8fCIifWM9dm9pZCAwfXZhciBnPWM7aWYoZyYmZ1sxXT09PSIxIil7dmFyIGg9Z1szXSxsO2E6e2Zvcih2YXIgbj1nWzJdLHA9MDtwPGI7KytwKWlmKG49PT1QcShoLHApKXtsPSEwO2JyZWFrIGF9bD0hMX1pZihsKXJldHVybiBoO3NiKCJUQUdHSU5HIiw3KX19fQpmdW5jdGlvbiBXcShhLGIsYyxkLGUpe2Z1bmN0aW9uIGYocCl7cD1UcShhLHApO3ZhciBxPXAuY2hhckF0KHAubGVuZ3RoLTEpO3AmJnEhPT0iJiImJihwKz0iJiIpO3JldHVybiBwK259ZD1kPT09dm9pZCAwPyExOmQ7ZT1lPT09dm9pZCAwPyExOmU7dmFyIGc9TnEoYyk7aWYoIWcpcmV0dXJuIiI7dmFyIGg9Zy5xdWVyeXx8IiIsbD1nLmZyYWdtZW50fHwiIixuPWErIj0iK2I7ZD9sLnN1YnN0cmluZygxKS5sZW5ndGghPT0wJiZlfHwobD0iIyIrZihsLnN1YnN0cmluZygxKSkpOmg9Ij8iK2YoaC5zdWJzdHJpbmcoMSkpO3JldHVybiIiK2cuaGsraCtsfQpmdW5jdGlvbiBYcShhLGIpe2Z1bmN0aW9uIGMobixwLHEpe3ZhciByO2E6e2Zvcih2YXIgdCBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkodCkpe3I9ITA7YnJlYWsgYX1yPSExfWlmKHIpe3ZhciB1LHY9W10seDtmb3IoeCBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkoeCkpe3ZhciB5PW5beF07eSE9PXZvaWQgMCYmeT09PXkmJnkhPT1udWxsJiZ5LnRvU3RyaW5nKCkhPT0iW29iamVjdCBPYmplY3RdIiYmKHYucHVzaCh4KSx2LnB1c2gocGIoU3RyaW5nKHkpKSkpfXZhciB6PXYuam9pbigiKiIpO3U9WyIxIixQcSh6KSx6XS5qb2luKCIqIik7ZD8oWWYoMyl8fFlmKDEpfHwhcCkmJllxKCJfZ2wiLHUsYSxwLHEpOlpxKCJfZ2wiLHUsYSxwLHEpfX12YXIgZD0oYS50YWdOYW1lfHwiIikudG9VcHBlckNhc2UoKT09PSJGT1JNIixlPUlxKGIsMSxkKSxmPUlxKGIsMixkKSxnPUlxKGIsNCxkKSxoPUlxKGIsMyxkKTtjKGUsITEsITEpO2MoZiwhMCwhMSk7WWYoMSkmJmMoZywhMCwhMCk7Zm9yKHZhciBsIGluIGgpaC5oYXNPd25Qcm9wZXJ0eShsKSYmCiRxKGwsaFtsXSxhKX1mdW5jdGlvbiAkcShhLGIsYyl7Yy50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0iYSI/WnEoYSxiLGMpOmMudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09ImZvcm0iJiZZcShhLGIsYyl9ZnVuY3Rpb24gWnEoYSxiLGMsZCxlKXtkPWQ9PT12b2lkIDA/ITE6ZDtlPWU9PT12b2lkIDA/ITE6ZTt2YXIgZjtpZihmPWMuaHJlZil7dmFyIGc7aWYoIShnPWQpKXt2YXIgaD1BLmxvY2F0aW9uLmhyZWYsbD1OcShjLmhyZWYpLG49TnEoaCk7Zz0hKGwmJm4mJmwuaGs9PT1uLmhrJiZsLnF1ZXJ5PT09bi5xdWVyeSYmbC5mcmFnbWVudCl9Zj1nfWlmKGYpe3ZhciBwPVdxKGEsYixjLmhyZWYsZCxlKTt2Yy50ZXN0KHApJiYoYy5ocmVmPXApfX0KZnVuY3Rpb24gWXEoYSxiLGMsZCxlKXtkPWQ9PT12b2lkIDA/ITE6ZDtlPWU9PT12b2lkIDA/ITE6ZTtpZihjKXt2YXIgZj1jLmdldEF0dHJpYnV0ZSgiYWN0aW9uIil8fCIiO2lmKGYpe3ZhciBnPShjLm1ldGhvZHx8IiIpLnRvTG93ZXJDYXNlKCk7aWYoZyE9PSJnZXQifHxkKXtpZihnPT09ImdldCJ8fGc9PT0icG9zdCIpe3ZhciBoPVdxKGEsYixmLGQsZSk7dmMudGVzdChoKSYmKGMuYWN0aW9uPWgpfX1lbHNle2Zvcih2YXIgbD1jLmNoaWxkTm9kZXN8fFtdLG49ITEscD0wO3A8bC5sZW5ndGg7cCsrKXt2YXIgcT1sW3BdO2lmKHEubmFtZT09PWEpe3Euc2V0QXR0cmlidXRlKCJ2YWx1ZSIsYik7bj0hMDticmVha319aWYoIW4pe3ZhciByPUIuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtyLnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpO3Iuc2V0QXR0cmlidXRlKCJuYW1lIixhKTtyLnNldEF0dHJpYnV0ZSgidmFsdWUiLGIpO2MuYXBwZW5kQ2hpbGQocil9fX19fQpmdW5jdGlvbiBFcShhKXt0cnl7dmFyIGI7YTp7Zm9yKHZhciBjPWEsZD0xMDA7YyYmZD4wOyl7aWYoYy5ocmVmJiZjLm5vZGVOYW1lLm1hdGNoKC9eYSg/OnJlYSk/JC9pKSl7Yj1jO2JyZWFrIGF9Yz1jLnBhcmVudE5vZGU7ZC0tfWI9bnVsbH12YXIgZT1iO2lmKGUpe3ZhciBmPWUucHJvdG9jb2w7ZiE9PSJodHRwOiImJmYhPT0iaHR0cHM6Inx8WHEoZSxlLmhvc3RuYW1lKX19Y2F0Y2goZyl7fX1mdW5jdGlvbiBGcShhKXt0cnl7dmFyIGI9YS5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpO2lmKGIpe3ZhciBjPUxqKFJqKGIpLCJob3N0Iik7WHEoYSxjKX19Y2F0Y2goZCl7fX1mdW5jdGlvbiBhcihhLGIsYyxkKXtEcSgpO3ZhciBlPWM9PT0iZnJhZ21lbnQiPzI6MTtkPSEhZDtIcShhLGIsZSxkLCExKTtlPT09MiYmc2IoIlRBR0dJTkciLDIzKTtkJiZzYigiVEFHR0lORyIsMjQpfQpmdW5jdGlvbiBicihhLGIpe0RxKCk7SHEoYSxbTmooQS5sb2NhdGlvbiwiaG9zdCIsITApXSxiLCEwLCEwKX1mdW5jdGlvbiBjcigpe3ZhciBhPUIubG9jYXRpb24uaG9zdG5hbWUsYj1LcS5leGVjKEIucmVmZXJyZXIpO2lmKCFiKXJldHVybiExO3ZhciBjPWJbMl0sZD1iWzFdLGU9IiI7aWYoYyl7dmFyIGY9Yy5zcGxpdCgiLyIpLGc9ZlsxXTtlPWc9PT0icyI/S2ooZlsyXSl8fCIiOktqKGcpfHwiIn1lbHNlIGlmKGQpe2lmKGQuaW5kZXhPZigieG4tLSIpPT09MClyZXR1cm4hMTtlPWQucmVwbGFjZSgvLS9nLCIuIikucmVwbGFjZSgvXC5cLi9nLCItIil9dmFyIGg9YS5yZXBsYWNlKExxLCIiKSxsPWUucmVwbGFjZShMcSwiIik7cmV0dXJuIGg9PT1sfHxUYihoLCIuIitsKX1mdW5jdGlvbiBkcihhLGIpe3JldHVybiBhPT09ITE/ITE6YXx8Ynx8Y3IoKX07dmFyIGVyPWZ1bmN0aW9uKGEpe3RoaXMudmFsdWU9MDt0aGlzLnZhbHVlPWE9PT12b2lkIDA/MDphfTtlci5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnZhbHVlfD0xPDxhfTt2YXIgZnI9ZnVuY3Rpb24oYSxiKXtiPD0wfHwoYS52YWx1ZXw9MTw8Yi0xKX07ZXIucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfTtlci5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oYSl7dGhpcy52YWx1ZSY9figxPDxhKX07ZXIucHJvdG90eXBlLmNsZWFyQWxsPWZ1bmN0aW9uKCl7dGhpcy52YWx1ZT0wfTtlci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnZhbHVlPT09YS52YWx1ZX07ZnVuY3Rpb24gZ3IoYSl7aWYoYSl0cnl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGF0b2IoYS5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKSkuc3BsaXQoIiIpLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYi5jaGFyQ29kZUF0KDApfSkpfWNhdGNoKGIpe319ZnVuY3Rpb24gaHIoYSxiKXt2YXIgYz0wLGQ9MCxlLGY9Yjtkb3tpZihmPj1hLmxlbmd0aClyZXR1cm47ZT1hW2YrK107Y3w9KGUmMTI3KTw8ZDtkKz03fXdoaWxlKGUmMTI4KTtyZXR1cm5bYyxmXX07ZnVuY3Rpb24gaXIoKXt2YXIgYT1TdHJpbmcsYj1BLmxvY2F0aW9uLmhvc3RuYW1lLGM9QS5sb2NhdGlvbi5wYXRobmFtZSxkPWI9YmMoYik7ZC5zcGxpdCgiLiIpLmxlbmd0aD4yJiYoZD1kLnJlcGxhY2UoL14od3d3WzAtOV0qfHdlYnxmdHB8d2FwfGhvbWV8bXx3fGFtcHxtb2JpbGUpXC4vLCIiKSk7Yj1kO2M9YmMoYyk7dmFyIGU9Yy5zcGxpdCgiOyIpWzBdO2U9ZS5yZXBsYWNlKC9cLyhhcnxzbHB8d2VifGluZGV4KT9cLz8kLywiIik7cmV0dXJuIGEobmcoKCIiK2IrZSkudG9Mb3dlckNhc2UoKSkpfTt2YXIganI9WyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl07ZnVuY3Rpb24ga3IoYSxiKXtpZighYSlyZXR1cm4gc2IoIlRBR0dJTkciLDMyKSwxMDtpZihiPT09bnVsbHx8Yj09PXZvaWQgMHx8Yj09PSIiKXJldHVybiBzYigiVEFHR0lORyIsMzMpLDExO3ZhciBjPWxyKCExKTtpZihjLmVycm9yIT09MClyZXR1cm4gc2IoIlRBR0dJTkciLDM0KSxjLmVycm9yO2lmKCFjLnZhbHVlKXJldHVybiBzYigiVEFHR0lORyIsMzUpLDI7Yy52YWx1ZVthXT1iO3ZhciBkPW1yKGMpO2QhPT0wJiZzYigiVEFHR0lORyIsMzYpO3JldHVybiBkfQpmdW5jdGlvbiBucihhKXtpZighYSlyZXR1cm4gc2IoIlRBR0dJTkciLDI3KSx7ZXJyb3I6MTB9O3ZhciBiPWxyKCk7aWYoYi5lcnJvciE9PTApcmV0dXJuIHNiKCJUQUdHSU5HIiwyOSksYjtpZighYi52YWx1ZSlyZXR1cm4gc2IoIlRBR0dJTkciLDMwKSx7ZXJyb3I6Mn07aWYoIShhIGluIGIudmFsdWUpKXJldHVybiBzYigiVEFHR0lORyIsMzEpLHt2YWx1ZTp2b2lkIDAsZXJyb3I6MTV9O3ZhciBjPWIudmFsdWVbYV07cmV0dXJuIGM9PT1udWxsfHxjPT09dm9pZCAwfHxjPT09IiI/KHNiKCJUQUdHSU5HIiwyOCkse3ZhbHVlOnZvaWQgMCxlcnJvcjoxMX0pOnt2YWx1ZTpjLGVycm9yOjB9fQpmdW5jdGlvbiBvcihhKXtpZihhKXt2YXIgYj1scighMSk7Yi5lcnJvciE9PTA/c2IoIlRBR0dJTkciLDM4KTpiLnZhbHVlP2EgaW4gYi52YWx1ZT8oZGVsZXRlIGIudmFsdWVbYV0sbXIoYikhPT0wJiZzYigiVEFHR0lORyIsNDEpKTpzYigiVEFHR0lORyIsNDApOnNiKCJUQUdHSU5HIiwzOSl9ZWxzZSBzYigiVEFHR0lORyIsMzcpfQpmdW5jdGlvbiBscihhKXthPWE9PT12b2lkIDA/ITA6YTtpZighQmwoanIpKXJldHVybiBzYigiVEFHR0lORyIsNDMpLHtlcnJvcjozfTt0cnl7aWYoIUEubG9jYWxTdG9yYWdlKXJldHVybiBzYigiVEFHR0lORyIsNDQpLHtlcnJvcjoxfX1jYXRjaChmKXtyZXR1cm4gc2IoIlRBR0dJTkciLDQ1KSx7ZXJyb3I6MTR9fXZhciBiPXtzY2hlbWE6ImdjbCIsdmVyc2lvbjoxfSxjPXZvaWQgMDt0cnl7Yz1BLmxvY2FsU3RvcmFnZS5nZXRJdGVtKCJfZ2NsX2xzIil9Y2F0Y2goZil7cmV0dXJuIHNiKCJUQUdHSU5HIiw0Nikse2Vycm9yOjEzfX10cnl7aWYoYyl7dmFyIGQ9SlNPTi5wYXJzZShjKTtpZihkJiZ0eXBlb2YgZD09PSJvYmplY3QiKWI9ZDtlbHNlIHJldHVybiBzYigiVEFHR0lORyIsNDcpLHtlcnJvcjoxMn19fWNhdGNoKGYpe3JldHVybiBzYigiVEFHR0lORyIsNDgpLHtlcnJvcjo4fX1pZihiLnNjaGVtYSE9PSJnY2wiKXJldHVybiBzYigiVEFHR0lORyIsNDkpLHtlcnJvcjo0fTsKaWYoYi52ZXJzaW9uIT09MSlyZXR1cm4gc2IoIlRBR0dJTkciLDUwKSx7ZXJyb3I6NX07dHJ5e3ZhciBlPXByKGIpO2EmJmUmJm1yKHt2YWx1ZTpiLGVycm9yOjB9KX1jYXRjaChmKXtyZXR1cm4gc2IoIlRBR0dJTkciLDQ4KSx7ZXJyb3I6OH19cmV0dXJue3ZhbHVlOmIsZXJyb3I6MH19CmZ1bmN0aW9uIHByKGEpe2lmKCFhfHx0eXBlb2YgYSE9PSJvYmplY3QiKXJldHVybiExO2lmKCJleHBpcmVzImluIGEmJiJ2YWx1ZSJpbiBhKXt2YXIgYjt0eXBlb2YgYS5leHBpcmVzPT09Im51bWJlciI/Yj1hLmV4cGlyZXM6Yj10eXBlb2YgYS5leHBpcmVzPT09InN0cmluZyI/TnVtYmVyKGEuZXhwaXJlcyk6TmFOO2lmKGlzTmFOKGIpfHwhKERhdGUubm93KCk8PWIpKXJldHVybiBhLnZhbHVlPW51bGwsYS5lcnJvcj05LHNiKCJUQUdHSU5HIiw1NCksITB9ZWxzZXtmb3IodmFyIGM9ITEsZD1tKE9iamVjdC5rZXlzKGEpKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSljPXByKGFbZS52YWx1ZV0pfHxjO3JldHVybiBjfXJldHVybiExfQpmdW5jdGlvbiBtcihhKXtpZihhLmVycm9yKXJldHVybiBhLmVycm9yO2lmKCFhLnZhbHVlKXJldHVybiBzYigiVEFHR0lORyIsNDIpLDI7dmFyIGI9YS52YWx1ZSxjO3RyeXtjPUpTT04uc3RyaW5naWZ5KGIpfWNhdGNoKGQpe3JldHVybiBzYigiVEFHR0lORyIsNTIpLDZ9dHJ5e0EubG9jYWxTdG9yYWdlLnNldEl0ZW0oIl9nY2xfbHMiLGMpfWNhdGNoKGQpe3JldHVybiBzYigiVEFHR0lORyIsNTMpLDd9cmV0dXJuIDB9O3ZhciBxcj17fSxycj0ocXIuZ2NsaWQ9ITAscXIuZGNsaWQ9ITAscXIuZ2JyYWlkPSEwLHFyLndicmFpZD0hMCxxciksc3I9L15cdyskLyx0cj0vXltcdy1dKyQvLHVyPXt9LHZyPSh1ci5hdz0iRlBHQ0xBVyIsdXIpLHdyPXt9LHhyPSh3ci5hZz0iX2FnIix3ci5nYj0iX2diIix3ci5hdz0iX2F3Iix3ci5kYz0iX2RjIix3ci5nZj0iX2dmIix3ci5oYT0iX2hhIix3ci5ncD0iX2dwIix3ci5ncz0iX2dzIix3cikseXI9L14oPzp3d3dcLik/Z29vZ2xlKD86XC5jb20/KT8oPzpcLlthLXpdezJ9dD8pPyQvLHpyPS9ed3d3XC5nb29nbGVhZHNlcnZpY2VzXC5jb20kLztmdW5jdGlvbiBBcigpe3JldHVyblsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdfWZ1bmN0aW9uIEJyKGEpe3JldHVybiFZZig1KXx8QmwoYSl9ZnVuY3Rpb24gQ3IoYSxiKXtmdW5jdGlvbiBjKCl7dmFyIGQ9QnIoYik7ZCYmYSgpO3JldHVybiBkfUhsKGZ1bmN0aW9uKCl7YygpfHxJbChjLGIpfSxiKX0KZnVuY3Rpb24gRHIoYSl7cmV0dXJuIEVyKGEpLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYi5nY2xpZH0pfWZ1bmN0aW9uIEZyKGEpe3JldHVybiBHcihhKS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGIuZ2NsaWR9KS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIuZ2NsaWR9KX1mdW5jdGlvbiBHcihhLGIpe2I9Yj09PXZvaWQgMD8hMTpiO3ZhciBjPUhyKGEucHJlZml4KSxkPUlyKCJnYiIsYyksZT1JcigiYWciLGMpO2lmKCFlfHwhZClyZXR1cm5bXTt2YXIgZj1mdW5jdGlvbihsKXtyZXR1cm4gZnVuY3Rpb24obil7bi56Zz1sO3JldHVybiBufX0sZz1FcihkLGIpLm1hcChmKCJnYiIpKSxoPUpyKGUpLm1hcChmKCJhZyIpKTtyZXR1cm4gZy5jb25jYXQoaCkuc29ydChmdW5jdGlvbihsLG4pe3JldHVybiBuLnRpbWVzdGFtcC1sLnRpbWVzdGFtcH0pfQpmdW5jdGlvbiBLcihhLGIsYyxkLGUpe3ZhciBmPUNiKGEsZnVuY3Rpb24oZyl7cmV0dXJuIGcuZ2NsaWQ9PT1ifSk7Zj8oZi50aW1lc3RhbXA8YyYmKGYudGltZXN0YW1wPWMsZi5vZD1lKSxmLmxhYmVscz1McihmLmxhYmVsc3x8W10sZHx8W10pKTphLnB1c2goe3ZlcnNpb246IjIiLGdjbGlkOmIsdGltZXN0YW1wOmMsbGFiZWxzOmQsb2Q6ZX0pfWZ1bmN0aW9uIE1yKGEpe2Zvcih2YXIgYj13cShhLDUpfHxbXSxjPVtdLGQ9bShiKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9ZS52YWx1ZSxnPWYsaD1OcihmKTtoJiZLcihjLGcuayxoLGcuYnx8W10sZi51KX1yZXR1cm4gYy5zb3J0KGZ1bmN0aW9uKGwsbil7cmV0dXJuIG4udGltZXN0YW1wLWwudGltZXN0YW1wfSl9CmZ1bmN0aW9uIEVyKGEsYil7Yj1iPT09dm9pZCAwPyExOmI7dmFyIGM9W107T3IoYyxhLDEpO2lmKGIpaWYoVGIoYSwiX2F3Iikpe3ZhciBkPVByKCk7ZCYmKGQub2Q9dm9pZCAwLGQub2E9ZC5vYXx8WzJdLFFyKGMsZCkpO09yKGMsImdjbF9hdyIsMil9ZWxzZSBUYihhLCJfZ2IiKSYmWWYoNikmJk9yKGMsImdjbF9nYiIsMik7Yy5zb3J0KGZ1bmN0aW9uKGUsZil7cmV0dXJuIGYudGltZXN0YW1wLWUudGltZXN0YW1wfSk7cmV0dXJuIFJyKGMpfWZ1bmN0aW9uIFNyKGEsYil7Zm9yKHZhciBjPVtdLGQ9bShhKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9ZS52YWx1ZTtjLmluY2x1ZGVzKGYpfHxjLnB1c2goZil9Zm9yKHZhciBnPW0oYiksaD1nLm5leHQoKTshaC5kb25lO2g9Zy5uZXh0KCkpe3ZhciBsPWgudmFsdWU7Yy5pbmNsdWRlcyhsKXx8Yy5wdXNoKGwpfXJldHVybiBjfQpmdW5jdGlvbiBRcihhLGIsYyl7Yz1jPT09dm9pZCAwPyExOmM7Zm9yKHZhciBkLGUsZj1tKGEpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1nLnZhbHVlO2lmKGguZ2NsaWQ9PT1iLmdjbGlkKXtkPWg7YnJlYWt9aC5xYSYmYi5xYSYmaC5xYS5lcXVhbHMoYi5xYSkmJihlPWgpfWlmKGQpe3ZhciBsLG4scD0obD1kLnFhKSE9bnVsbD9sOm5ldyBlcixxPShuPWIucWEpIT1udWxsP246bmV3IGVyO3AudmFsdWV8PXEudmFsdWU7ZC5xYT1wO2QudGltZXN0YW1wPGIudGltZXN0YW1wJiYoZC50aW1lc3RhbXA9Yi50aW1lc3RhbXAsZC5vZD1iLm9kKTtkLmxhYmVscz1TcihkLmxhYmVsc3x8W10sYi5sYWJlbHN8fFtdKTtkLm9hPVNyKGQub2F8fFtdLGIub2F8fFtdKX1lbHNlIGMmJmU/bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCxlLGIpOmEucHVzaChiKX0KZnVuY3Rpb24gVHIoYSl7aWYoIWEpcmV0dXJuIG5ldyBlcjt2YXIgYj1uZXcgZXI7aWYoYT09PTEpcmV0dXJuIGZyKGIsMiksZnIoYiwzKSxiO2ZyKGIsYSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIFByKCl7dmFyIGE9bnIoImdjbGlkIik7aWYoIWF8fGEuZXJyb3J8fCFhLnZhbHVlfHx0eXBlb2YgYS52YWx1ZSE9PSJvYmplY3QiKXJldHVybiBudWxsO3ZhciBiPWEudmFsdWU7dHJ5e2lmKCEoInZhbHVlImluIGImJmIudmFsdWUpfHx0eXBlb2YgYi52YWx1ZSE9PSJvYmplY3QiKXJldHVybiBudWxsO3ZhciBjPWIudmFsdWUsZD1jLnZhbHVlO2lmKCFkfHwhZC5tYXRjaCh0cikpcmV0dXJuIG51bGw7dmFyIGU9Yy5saW5rRGVjb3JhdGlvblNvdXJjZSxmPWMubGlua0RlY29yYXRpb25Tb3VyY2VzLGc9bmV3IGVyO3R5cGVvZiBlPT09Im51bWJlciI/Zz1UcihlKTp0eXBlb2YgZj09PSJudW1iZXIiJiYoZy52YWx1ZT1mKTtyZXR1cm57dmVyc2lvbjoiIixnY2xpZDpkLHRpbWVzdGFtcDpOdW1iZXIoYy5jcmVhdGlvblRpbWVNcyl8fDAsbGFiZWxzOltdLHFhOmcsb2E6WzJdfX1jYXRjaChoKXtyZXR1cm4gbnVsbH19CmZ1bmN0aW9uIFVyKGEpe3ZhciBiPW5yKGEpO2lmKGIuZXJyb3IhPT0wKXJldHVybiBudWxsO3RyeXtyZXR1cm4gYi52YWx1ZS5yZWR1Y2UoZnVuY3Rpb24oYyxkKXtpZighZC52YWx1ZXx8dHlwZW9mIGQudmFsdWUhPT0ib2JqZWN0IilyZXR1cm4gYzt2YXIgZT1kLnZhbHVlLGY9ZS52YWx1ZTtpZighZnx8IWYubWF0Y2godHIpKXJldHVybiBjO3ZhciBnPW5ldyBlcixoPWUubGlua0RlY29yYXRpb25Tb3VyY2VzO3R5cGVvZiBoPT09Im51bWJlciImJihnLnZhbHVlPWgpO3ZhciBsO2MucHVzaCh7dmVyc2lvbjoiIixnY2xpZDpmLHRpbWVzdGFtcDpOdW1iZXIoZS5jcmVhdGlvblRpbWVNcyl8fDAsZXhwaXJlczpOdW1iZXIoZC5leHBpcmVzKXx8MCxsYWJlbHM6KGw9ZS5sYWJlbHMpIT1udWxsP2w6W10scWE6ZyxvYTpbMl19KTtyZXR1cm4gY30sW10pfWNhdGNoKGMpe3JldHVybiBudWxsfX0KZnVuY3Rpb24gT3IoYSxiLGMpe2lmKGM9PT0xKWZvcih2YXIgZD1jcShiLEIuY29va2llLHZvaWQgMCxBcigpKSxlPW0oZCksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPVZyKGYudmFsdWUuc3BsaXQoIi4iKSksaD1nLmxlbmd0aD09PTA/bnVsbDp7dmVyc2lvbjpnWzBdLGdjbGlkOmdbMl0sdGltZXN0YW1wOihOdW1iZXIoZ1sxXSl8fDApKjFFMyxsYWJlbHM6Zy5zbGljZSgzKX07aCE9bnVsbCYmKGgub2Q9dm9pZCAwLGgucWE9bmV3IGVyLGgub2E9W2NdLFFyKGEsaCkpfWVsc2UgaWYoYz09PTIpe3ZhciBsPVVyKGIpO2lmKGwpZm9yKHZhciBuPW0obCkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpe3ZhciBxPXAudmFsdWU7cS5vZD12b2lkIDA7cS5vYT1xLm9hO1FyKGEscSl9fX0KZnVuY3Rpb24gWnIoYSl7dmFyIGI9RXIoYSksYz1VcigiZ2NsX2RjIik7aWYoYylmb3IodmFyIGQ9bShjKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9ZS52YWx1ZTtmLm9kPXZvaWQgMDtmLm9hPWYub2F8fFsyXTtRcihiLGYpfWIuc29ydChmdW5jdGlvbihnLGgpe3ZhciBsPWcub2EmJmcub2EuaW5jbHVkZXMoMSksbj1oLm9hJiZoLm9hLmluY2x1ZGVzKDEpO3JldHVybiBsJiYhbj8tMTohbCYmbj8xOmgudGltZXN0YW1wLWcudGltZXN0YW1wfSk7cmV0dXJuIFJyKGIpfWZ1bmN0aW9uIEpyKGEpe3JldHVybiBNcihhKS5tYXAoZnVuY3Rpb24oYil7Yi5xYT1uZXcgZXI7Yi5vYT1bMV07cmV0dXJuIGJ9KX0KZnVuY3Rpb24gTHIoYSxiKXtpZighYS5sZW5ndGgpcmV0dXJuIGI7aWYoIWIubGVuZ3RoKXJldHVybiBhO3ZhciBjPXt9O3JldHVybiBhLmNvbmNhdChiKS5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGMuaGFzT3duUHJvcGVydHkoZCk/ITE6Y1tkXT0hMH0pfWZ1bmN0aW9uIEhyKGEpe3JldHVybiBhJiZ0eXBlb2YgYT09PSJzdHJpbmciJiZhLm1hdGNoKHNyKT9hOiJfZ2NsIn1mdW5jdGlvbiAkcihhLGIpe2lmKGEpe3ZhciBjPXt2YWx1ZTphLHFhOm5ldyBlcn07ZnIoYy5xYSxiKTtyZXR1cm4gY319CmZ1bmN0aW9uIGFzKGEsYixjKXt2YXIgZD1SaihhKSxlPUxqKGQsInF1ZXJ5IiwhMSx2b2lkIDAsImdjbHNyYyIpLGY9JHIoTGooZCwicXVlcnkiLCExLHZvaWQgMCwiZ2NsaWQiKSxjPzQ6Mik7aWYoYiYmKCFmfHwhZSkpe3ZhciBnPWQuaGFzaC5yZXBsYWNlKCIjIiwiIik7Znx8KGY9JHIoSWooZywiZ2NsaWQiLCExKSwzKSk7ZXx8KGU9SWooZywiZ2Nsc3JjIiwhMSkpfXJldHVybiBmJiYoZT09PXZvaWQgMHx8ZT09PSJhdyJ8fGU9PT0iYXcuZHMifHxZZig4KSYmZT09PSJhdy5kdiIpP1tmXTpbXX0KZnVuY3Rpb24gYnMoYSxiKXt2YXIgYz1SaihhKSxkPUxqKGMsInF1ZXJ5IiwhMSx2b2lkIDAsImdjbGlkIiksZT1MaihjLCJxdWVyeSIsITEsdm9pZCAwLCJnY2xzcmMiKSxmPUxqKGMsInF1ZXJ5IiwhMSx2b2lkIDAsIndicmFpZCIpO2Y9JGIoZik7dmFyIGc9TGooYywicXVlcnkiLCExLHZvaWQgMCwiZ2JyYWlkIiksaD1MaihjLCJxdWVyeSIsITEsdm9pZCAwLCJnYWRfc291cmNlIiksbD1MaihjLCJxdWVyeSIsITEsdm9pZCAwLCJkY2xpZCIpO2lmKGImJiEoZCYmZSYmZiYmZykpe3ZhciBuPWMuaGFzaC5yZXBsYWNlKCIjIiwiIik7ZD1kfHxJaihuLCJnY2xpZCIsITEpO2U9ZXx8SWoobiwiZ2Nsc3JjIiwhMSk7Zj1mfHxJaihuLCJ3YnJhaWQiLCExKTtnPWd8fElqKG4sImdicmFpZCIsITEpO2g9aHx8SWoobiwiZ2FkX3NvdXJjZSIsITEpfXJldHVybiBjcyhkLGUsbCxmLGcsaCl9CmZ1bmN0aW9uIGRzKGEsYixjKXt2YXIgZD1SaihhKSxlPUxqKGQsInF1ZXJ5IiwhMSx2b2lkIDAsImdjbHNyYyIpLGY9JHIoTGooZCwicXVlcnkiLCExLHZvaWQgMCwiZ2NsaWQiKSxjPzQ6MiksZz0kcihMaihkLCJxdWVyeSIsITEsdm9pZCAwLCJkY2xpZCIpLGM/NDoyKTtpZihiJiYoIWV8fCFmKSl7dmFyIGg9ZC5oYXNoLnJlcGxhY2UoIiMiLCIiKTtmfHwoZj0kcihJaihoLCJnY2xpZCIsITEpLDMpKTtlfHwoZT1JaihoLCJnY2xzcmMiLCExKSl9cmV0dXJuIGYmJmUmJihlPT09ImF3LmRzInx8ZT09PSJhdy5kdiJ8fGU9PT0iM3AuZHMifHxlPT09ImRzIik/W2ZdOmc/W2ddOltdfWZ1bmN0aW9uIGVzKCl7cmV0dXJuIGJzKEEubG9jYXRpb24uaHJlZiwhMCl9CmZ1bmN0aW9uIGNzKGEsYixjLGQsZSxmKXt2YXIgZz17fSxoPWZ1bmN0aW9uKGwsbil7Z1tuXXx8KGdbbl09W10pO2dbbl0ucHVzaChsKX07Zy5nY2xpZD1hO2cuZ2Nsc3JjPWI7Zy5kY2xpZD1jO2lmKGEhPT12b2lkIDAmJmEubWF0Y2godHIpKXN3aXRjaChiKXtjYXNlIHZvaWQgMDpoKGEsImF3Iik7YnJlYWs7Y2FzZSAiYXcuZHMiOmgoYSwiYXciKTtoKGEsImRjIik7YnJlYWs7Y2FzZSAiYXcuZHYiOllmKDgpJiYoaChhLCJhdyIpLGgoYSwiZGMiKSk7YnJlYWs7Y2FzZSAiZHMiOmgoYSwiZGMiKTticmVhaztjYXNlICIzcC5kcyI6aChhLCJkYyIpO2JyZWFrO2Nhc2UgImdmIjpoKGEsImdmIik7YnJlYWs7Y2FzZSAiaGEiOmgoYSwiaGEiKX1jJiZoKGMsImRjIik7ZCE9PXZvaWQgMCYmdHIudGVzdChkKSYmKGcud2JyYWlkPWQsaChkLCJnYiIpKTtlIT09dm9pZCAwJiZ0ci50ZXN0KGUpJiYoZy5nYnJhaWQ9ZSxoKGUsImFnIikpO2YhPT12b2lkIDAmJnRyLnRlc3QoZikmJihnLmdhZF9zb3VyY2U9CmYsaChmLCJncyIpKTtyZXR1cm4gZ31mdW5jdGlvbiBmcygpe2Zvcih2YXIgYT1lcygpLGI9ITAsYz1tKE9iamVjdC5rZXlzKGEpKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSlpZihhW2QudmFsdWVdIT09dm9pZCAwKXtiPSExO2JyZWFrfWImJihhPWJzKEEuZG9jdW1lbnQucmVmZXJyZXIsITEpLGEuZ2FkX3NvdXJjZT12b2lkIDApO3JldHVybiBhfWZ1bmN0aW9uIGdzKGEpe3ZhciBiPWZzKCk7aHMoYiwhMSxhKX0KZnVuY3Rpb24gaXMoYSl7dmFyIGI9YXMoQS5sb2NhdGlvbi5ocmVmLCEwLCExKTtiLmxlbmd0aHx8KGI9YXMoQS5kb2N1bWVudC5yZWZlcnJlciwhMSwhMCkpO2E9YXx8e307anMoYSk7aWYoYi5sZW5ndGgpe3ZhciBjPWJbMF0sZD1OYigpLGU9dXEoYSxkLCEwKSxmPUFyKCksZz1mdW5jdGlvbigpe0JyKGYpJiZlLmV4cGlyZXMhPT12b2lkIDAmJmtyKCJnY2xpZCIse3ZhbHVlOnt2YWx1ZTpjLnZhbHVlLGNyZWF0aW9uVGltZU1zOmQsbGlua0RlY29yYXRpb25Tb3VyY2VzOmMucWEuZ2V0KCl9LGV4cGlyZXM6TnVtYmVyKGUuZXhwaXJlcyl9KX07SGwoZnVuY3Rpb24oKXtnKCk7QnIoZil8fElsKGcsZil9LGYpfX0KZnVuY3Rpb24ganMoYSl7dmFyIGI9Qi5yZWZlcnJlcj9MaihSaihCLnJlZmVycmVyKSwiaG9zdCIpOiIiO2lmKHlyLnRlc3QoYil8fHpyLnRlc3QoYil8fGtzKCkpe3ZhciBjO2E6e2Zvcih2YXIgZD1SaihBLmxvY2F0aW9uLmhyZWYpLGU9SmooTGooZCwicXVlcnkiKSksZj1tKE9iamVjdC5rZXlzKGUpKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9Zy52YWx1ZTtpZighcnJbaF0pe3ZhciBsPWVbaF1bMF18fCIiLG47aWYoIWx8fGwubGVuZ3RoPDUwfHxsLmxlbmd0aD4yMDApbj0hMTtlbHNle3ZhciBwPWdyKGwpLHE7aWYocCljOnt2YXIgcj1wO2lmKHImJnIubGVuZ3RoIT09MCl7dmFyIHQ9MDt0cnl7Zm9yKHZhciB1PTEwO3Q8ci5sZW5ndGgmJiEodS0tPD0wKTspe3ZhciB2PWhyKHIsdCk7aWYodj09PXZvaWQgMClicmVhazt2YXIgeD1tKHYpLHk9eC5uZXh0KCkudmFsdWUsej14Lm5leHQoKS52YWx1ZSxDPXksRD16LEk9QyY3O2lmKEM+PjM9PT0xNjM4Mil7aWYoSSE9PQowKWJyZWFrO3ZhciBHPWhyKHIsRCk7aWYoRz09PXZvaWQgMClicmVhaztxPW0oRykubmV4dCgpLnZhbHVlPT09MTticmVhayBjfXZhciBOO2Q6e3ZhciBTPXZvaWQgMCxXPXIsZWE9RDtzd2l0Y2goSSl7Y2FzZSAwOk49KFM9aHIoVyxlYSkpPT1udWxsP3ZvaWQgMDpTWzFdO2JyZWFrIGQ7Y2FzZSAxOk49ZWErODticmVhayBkO2Nhc2UgMjp2YXIgamE9aHIoVyxlYSk7aWYoamE9PT12b2lkIDApYnJlYWs7dmFyIGZhPW0oamEpLHNhPWZhLm5leHQoKS52YWx1ZTtOPWZhLm5leHQoKS52YWx1ZStzYTticmVhayBkO2Nhc2UgNTpOPWVhKzQ7YnJlYWsgZH1OPXZvaWQgMH1pZihOPT09dm9pZCAwfHxOPnIubGVuZ3RofHxOPD10KWJyZWFrO3Q9Tn19Y2F0Y2gobWEpe319cT0hMX1lbHNlIHE9ITE7bj1xfWlmKG4pe2M9bDticmVhayBhfX19Yz12b2lkIDB9dmFyIGRhPWM7ZGEmJmxzKCJnY2xfYXciLGRhLDcsYSl9fQpmdW5jdGlvbiBscyhhLGIsYyxkKXttcyhhLFt7dmVyc2lvbjoiIixnY2xpZDpiLHRpbWVzdGFtcDpOYigpLHFhOlRyKGMpfV0sZCl9CmZ1bmN0aW9uIG1zKGEsYixjKXtjPWN8fHt9O3ZhciBkPUFyKCksZT1mdW5jdGlvbigpe2lmKEJyKGQpJiZiLmxlbmd0aD4wKXt2YXIgZj1VcihhKXx8W107Yi5mb3JFYWNoKGZ1bmN0aW9uKGcpe3ZhciBoPXVxKGMsZy50aW1lc3RhbXAsITApO2guZXhwaXJlcyE9PXZvaWQgMCYmUXIoZix7dmVyc2lvbjoiIixnY2xpZDpnLmdjbGlkLHRpbWVzdGFtcDpnLnRpbWVzdGFtcCxleHBpcmVzOk51bWJlcihoLmV4cGlyZXMpLHFhOmcucWEsbGFiZWxzOmcubGFiZWxzfSwhMCl9KTtmLmxlbmd0aCYma3IoYSxmLm1hcChmdW5jdGlvbihnKXt2YXIgaD17dmFsdWU6Zy5nY2xpZCxjcmVhdGlvblRpbWVNczpnLnRpbWVzdGFtcCxsaW5rRGVjb3JhdGlvblNvdXJjZXM6Zy5xYT9nLnFhLmdldCgpOjB9LGw7aWYoKGw9Zy5sYWJlbHMpPT1udWxsPzA6bC5sZW5ndGgpaC5sYWJlbHM9Zy5sYWJlbHM7cmV0dXJue3ZhbHVlOmgsZXhwaXJlczpOdW1iZXIoZy5leHBpcmVzKX19KSl9fTtIbChmdW5jdGlvbigpe0JyKGQpPwplKCk6SWwoZSxkKX0sZCl9CmZ1bmN0aW9uIGhzKGEsYixjLGQsZSl7Yz1jfHx7fTtlPWV8fFtdO3ZhciBmPUhyKGMucHJlZml4KSxnPWR8fE5iKCksaD1NYXRoLnJvdW5kKGcvMUUzKSxsPUFyKCksbj0hMSxwPSExLHE9WWYoOSkscj1mdW5jdGlvbigpe2lmKEJyKGwpKXt2YXIgdD11cShjLGcsITApO3QuTWM9bDtmb3IodmFyIHU9ZnVuY3Rpb24oVyxlYSl7dmFyIGphPUlyKFcsZik7amEmJihvcShqYSxlYSx0KSxXIT09ImdiIiYmKG49ITApKX0sdj1mdW5jdGlvbihXKXt2YXIgZWE9WyJHQ0wiLGgsV107ZS5sZW5ndGg+MCYmZWEucHVzaChlLmpvaW4oIi4iKSk7cmV0dXJuIGVhLmpvaW4oIi4iKX0seD1tKFsiYXciLCJkYyIsImdmIiwiaGEiLCJncCJdKSx5PXgubmV4dCgpOyF5LmRvbmU7eT14Lm5leHQoKSl7dmFyIHo9eS52YWx1ZTthW3pdJiZ1KHosdihhW3pdWzBdKSl9aWYoKCFufHxxKSYmYS5nYil7dmFyIEM9YS5nYlswXSxEPUlyKCJnYiIsZik7IWImJkVyKEQpLnNvbWUoZnVuY3Rpb24oVyl7cmV0dXJuIFcuZ2NsaWQ9PT1DJiYKVy5sYWJlbHMmJlcubGFiZWxzLmxlbmd0aD4wfSl8fHUoImdiIix2KEMpKX19aWYoIXAmJmEuZ2JyYWlkJiZCcigiYWRfc3RvcmFnZSIpJiYocD0hMCwhbnx8cSkpe3ZhciBJPWEuZ2JyYWlkLEc9SXIoImFnIixmKTtpZihifHwhSnIoRykuc29tZShmdW5jdGlvbihXKXtyZXR1cm4gVy5nY2xpZD09PUkmJlcubGFiZWxzJiZXLmxhYmVscy5sZW5ndGg+MH0pKXt2YXIgTj17fSxTPShOLms9SSxOLmk9IiIraCxOLmI9ZSxOKTtBcShHLFMsNSxjLGcpfX1ucyhhLGYsZyxjKX07SGwoZnVuY3Rpb24oKXtyKCk7QnIobCl8fElsKHIsbCl9LGwpfQpmdW5jdGlvbiBucyhhLGIsYyxkKXtpZihhLmdhZF9zb3VyY2UhPT12b2lkIDAmJkJyKCJhZF9zdG9yYWdlIikpe3ZhciBlPXFkKCk7aWYoZSE9PSJyIiYmZSE9PSJoIil7dmFyIGY9YS5nYWRfc291cmNlLGc9SXIoImdzIixiKTtpZihnKXt2YXIgaD1NYXRoLmZsb29yKChOYigpLShwZCgpfHwwKSkvMUUzKSxsLG49aXIoKSxwPXt9O2w9KHAuaz1mLHAuaT0iIitoLHAudT1uLHApO0FxKGcsbCw1LGQsYyl9fX19ZnVuY3Rpb24gb3MoYSxiLGMpe2Zvcih2YXIgZD13cShiLGMpLGU9MDtlPGQubGVuZ3RoOysrZSlpZihOcihkW2VdKT5hKXJldHVybiEwO3JldHVybiExfQpmdW5jdGlvbiBwcyhhKXt2YXIgYj1xcyxjPXJzKGEucHJlZml4KTtDcihmdW5jdGlvbigpe2Zvcih2YXIgZD1IcihhLnByZWZpeCksZT1tKGIpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlLGg9Y1tnXTtpZihoKXt2YXIgbD1NYXRoLm1pbihzcyhoKSxOYigpKSxuPXVxKGEsbCwhMCk7bi5NYz1BcigpO3ZhciBwPUlyKGcsZCk7cCYmb3EocCxoLG4pfX12YXIgcT1VcSghMCk7aHMoY3MocS5nY2xpZCxxLmdjbHNyYyksITEsYSl9LEFyKCkpfQpmdW5jdGlvbiBycyhhKXt2YXIgYj1VcSghMCksYz1IcihhKSxkPXt9LGU7Zm9yKGUgaW4geHIpaWYoeHIuaGFzT3duUHJvcGVydHkoZSkpe3ZhciBmPWUsZz1JcihmLGMpO2lmKGchPT12b2lkIDApe3ZhciBoPWJbZ107aWYoaCl7dmFyIGw9c3MoaCksbjthOntmb3IodmFyIHA9TWF0aC5taW4obCxOYigpKXx8TmIoKSxxPWNxKGcsQi5jb29raWUsdm9pZCAwLEFyKCkpLHI9MDtyPHEubGVuZ3RoOysrcilpZihzcyhxW3JdKT5wKXtuPSEwO2JyZWFrIGF9bj0hMX1ufHwoZFtmXT1oKX19fXJldHVybiBkfQpmdW5jdGlvbiB0cyhhKXt2YXIgYj1bImFnIl0sYz1VcSghMCksZD1IcihhLnByZWZpeCk7Q3IoZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPGIubGVuZ3RoOysrZSl7dmFyIGY9SXIoYltlXSxkKTtpZihmKXt2YXIgZz1jW2ZdO2lmKGcpe3ZhciBoPSRwKGcsNSk7aWYoaCl7dmFyIGw9TnIoaCk7bHx8KGw9TmIoKSk7aWYob3MobCxmLDUpKWJyZWFrO2guaT0iIitNYXRoLnJvdW5kKGwvMUUzKTtBcShmLGgsNSxhLGwpfX19fX0sWyJhZF9zdG9yYWdlIl0pfWZ1bmN0aW9uIElyKGEsYil7dmFyIGM9eHJbYV07aWYoYyE9PXZvaWQgMClyZXR1cm4gYitjfWZ1bmN0aW9uIHNzKGEpe3JldHVybiBWcihhLnNwbGl0KCIuIikpLmxlbmd0aCE9PTA/KE51bWJlcihhLnNwbGl0KCIuIilbMV0pfHwwKSoxRTM6MH1mdW5jdGlvbiBOcihhKXtyZXR1cm4gYT8oTnVtYmVyKGEuaSl8fDApKjFFMzowfQpmdW5jdGlvbiBWcihhKXtyZXR1cm4gYS5sZW5ndGg8M3x8YVswXSE9PSJHQ0wiJiZhWzBdIT09IjEifHwhL15cZCskLy50ZXN0KGFbMV0pfHwhdHIudGVzdChhWzJdKT9bXTphfWZ1bmN0aW9uIHVzKGEsYixjLGQpe3ZhciBlPXFzO2lmKEFycmF5LmlzQXJyYXkoYSkmJlNwKEEpKXt2YXIgZj1IcihkKSxnPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPXt9LGw9MDtsPGUubGVuZ3RoOysrbCl7dmFyIG49SXIoZVtsXSxmKTtpZihuKXt2YXIgcD1jcShuLEIuY29va2llLHZvaWQgMCxBcigpKTtwLmxlbmd0aCYmKGhbbl09cC5zb3J0KClbcC5sZW5ndGgtMV0pfX1yZXR1cm4gaH07Q3IoZnVuY3Rpb24oKXthcihnLGEsYixjKX0sQXIoKSl9fQpmdW5jdGlvbiB2cyhhLGIsYyl7dmFyIGQ9cXM7aWYoWWYoMTMpJiZBcnJheS5pc0FycmF5KGEpJiZTcChBKSl7dmFyIGU9ZnVuY3Rpb24oKXtmb3IodmFyIGY9e30sZz0wO2c8ZC5sZW5ndGg7KytnKXt2YXIgaD12cltkW2ddXTtpZihoKXt2YXIgbD1jcShoLEIuY29va2llLHZvaWQgMCxBcigpKTtpZihsLmxlbmd0aCl7Zm9yKHZhciBuPXZvaWQgMCxwPTAscT1tKGwpLHI9cS5uZXh0KCk7IXIuZG9uZTtyPXEubmV4dCgpKXt2YXIgdD1yLnZhbHVlLHU9JHAodCw0KTtpZih1JiYodS5tPT09IjEifHxZZigxNikpKXt2YXIgdj1Ocih1KTt2Pj1wJiYocD12LG49dCl9fW4mJihmW2hdPW4pfX19cmV0dXJuIGZ9O0NyKGZ1bmN0aW9uKCl7YXIoZSxhLGIsYyl9LEFyKCkpfX0KZnVuY3Rpb24gd3MoYSxiLGMsZCl7aWYoQXJyYXkuaXNBcnJheShhKSYmU3AoQSkpe3ZhciBlPVsiYWciXSxmPUhyKGQpLGc9ZnVuY3Rpb24oKXtmb3IodmFyIGg9e30sbD0wO2w8ZS5sZW5ndGg7KytsKXt2YXIgbj1JcihlW2xdLGYpO2lmKCFuKXJldHVybnt9O3ZhciBwPXdxKG4sNSk7aWYocC5sZW5ndGgpe3ZhciBxPXAuc29ydChmdW5jdGlvbihyLHQpe3JldHVybiBOcih0KS1OcihyKX0pWzBdO2hbbl09YXEocSw1KX19cmV0dXJuIGh9O0NyKGZ1bmN0aW9uKCl7YXIoZyxhLGIsYyl9LFsiYWRfc3RvcmFnZSJdKX19ZnVuY3Rpb24gUnIoYSl7cmV0dXJuIGEuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiB0ci50ZXN0KGIuZ2NsaWQpfSl9CmZ1bmN0aW9uIHhzKGEsYil7aWYoU3AoQSkpe2Zvcih2YXIgYz1IcihiLnByZWZpeCksZD17fSxlPTA7ZTxhLmxlbmd0aDtlKyspeHJbYVtlXV0mJihkW2FbZV1dPXhyW2FbZV1dKTtDcihmdW5jdGlvbigpe0diKGQsZnVuY3Rpb24oZixnKXt2YXIgaD1jcShjK2csQi5jb29raWUsdm9pZCAwLEFyKCkpO2guc29ydChmdW5jdGlvbih0LHUpe3JldHVybiBzcyh1KS1zcyh0KX0pO2lmKGgubGVuZ3RoKXt2YXIgbD1oWzBdLG49c3MobCkscD1WcihsLnNwbGl0KCIuIikpLmxlbmd0aCE9PTA/bC5zcGxpdCgiLiIpLnNsaWNlKDMpOltdLHE9e30scjtyPVZyKGwuc3BsaXQoIi4iKSkubGVuZ3RoIT09MD9sLnNwbGl0KCIuIilbMl06dm9pZCAwO3FbZl09W3JdO2hzKHEsITAsYixuLHApfX0pfSxBcigpKX19CmZ1bmN0aW9uIHlzKGEpe3ZhciBiPVsiYWciXSxjPVsiZ2JyYWlkIl07Q3IoZnVuY3Rpb24oKXtmb3IodmFyIGQ9SHIoYS5wcmVmaXgpLGU9MDtlPGIubGVuZ3RoOysrZSl7dmFyIGY9SXIoYltlXSxkKTtpZighZilicmVhazt2YXIgZz13cShmLDUpO2lmKGcubGVuZ3RoKXt2YXIgaD1nLnNvcnQoZnVuY3Rpb24ocSxyKXtyZXR1cm4gTnIociktTnIocSl9KVswXSxsPU5yKGgpLG49aC5iLHA9e307cFtjW2VdXT1oLms7aHMocCwhMCxhLGwsbil9fX0sWyJhZF9zdG9yYWdlIl0pfWZ1bmN0aW9uIHpzKGEsYil7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2MpaWYoYVtiW2NdXSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gQXMoYSl7ZnVuY3Rpb24gYihoLGwsbil7biYmKGhbbF09bil9aWYoRWwoKSl7dmFyIGM9ZXMoKSxkO2EuaW5jbHVkZXMoImdhZF9zb3VyY2UiKSYmKGQ9Yy5nYWRfc291cmNlIT09dm9pZCAwP2MuZ2FkX3NvdXJjZTpVcSghMSkuX2dzKTtpZih6cyhjLGEpfHxkKXt2YXIgZT17fTtiKGUsImdjbGlkIixjLmdjbGlkKTtiKGUsImRjbGlkIixjLmRjbGlkKTtiKGUsImdjbHNyYyIsYy5nY2xzcmMpO2IoZSwid2JyYWlkIixjLndicmFpZCk7YihlLCJnYnJhaWQiLGMuZ2JyYWlkKTticihmdW5jdGlvbigpe3JldHVybiBlfSwzKTt2YXIgZj17fSxnPShmLl91cD0iMSIsZik7YihnLCJfZ3MiLGQpO2JyKGZ1bmN0aW9uKCl7cmV0dXJuIGd9LDEpfX19ZnVuY3Rpb24ga3MoKXt2YXIgYT1SaihBLmxvY2F0aW9uLmhyZWYpO3JldHVybiBMaihhLCJxdWVyeSIsITEsdm9pZCAwLCJnYWRfc291cmNlIil9CmZ1bmN0aW9uIEJzKGEpe2lmKCFZZigxKSlyZXR1cm4gbnVsbDt2YXIgYj1VcSghMCkuZ2FkX3NvdXJjZTtpZihiIT1udWxsKXJldHVybiBBLmxvY2F0aW9uLmhhc2g9IiIsYjtpZihZZigyKSl7Yj1rcygpO2lmKGIhPW51bGwpcmV0dXJuIGI7dmFyIGM9ZXMoKTtpZih6cyhjLGEpKXJldHVybiIwIn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBDcyhhKXt2YXIgYj1CcyhhKTtiIT1udWxsJiZicihmdW5jdGlvbigpe3ZhciBjPXt9O3JldHVybiBjLmdhZF9zb3VyY2U9YixjfSw0KX0KZnVuY3Rpb24gRHMoYSxiLGMpe3ZhciBkPVtdO2lmKGIubGVuZ3RoPT09MClyZXR1cm4gZDtmb3IodmFyIGU9e30sZj0wO2Y8Yi5sZW5ndGg7ZisrKXt2YXIgZz1iW2ZdLGg9Zy56Zz9nLnpnOiJnY2wiO2lmKChnLmxhYmVsc3x8W10pLmluZGV4T2YoYyk9PT0tMSl7YS5wdXNoKDApO3ZhciBsPSExLG49dm9pZCAwO2lmKChuPWcub2EpPT1udWxsPzA6bi5pbmNsdWRlcygyKSlsPSEwO3ZhciBwPXZvaWQgMDsoKHA9Zy5vYSk9PW51bGw/MDpwLmluY2x1ZGVzKDEpKSYmIWVbaF0mJihsPSEwLGVbaF09ITApO2wmJmQucHVzaChnKX1lbHNle2EucHVzaCgxKTt2YXIgcT12b2lkIDA7aWYoKHE9Zy5vYSk9PW51bGw/MDpxLmluY2x1ZGVzKDEpKWVbaF09ITB9fXJldHVybiBkfQpmdW5jdGlvbiBFcyhhLGIsYyxkLGUpe2U9ZT09PXZvaWQgMD8hMTplO3ZhciBmPVtdO2M9Y3x8e307aWYoIUJyKEFyKCkpKXJldHVybiBmO3ZhciBnPUVyKGEsZSksaD1EcyhmLGcsYik7aWYoaC5sZW5ndGgmJiFkKXtmb3IodmFyIGw9W10sbj0hMSxwPW0oaCkscT1wLm5leHQoKTshcS5kb25lO3E9cC5uZXh0KCkpe3ZhciByPXEudmFsdWUsdD1yLHU9dC52ZXJzaW9uLHY9dC5nY2xpZCx4PXQudGltZXN0YW1wLHk9dC5vYSx6PSh0LmxhYmVsc3x8W10pLmNvbmNhdChbYl0pLEM9dm9pZCAwO2lmKCgoQz15KT09bnVsbD8wOkMuaW5jbHVkZXMoMSkpJiYhbil7dmFyIEQ9W3UsTWF0aC5yb3VuZCh4LzFFMyksdl0uY29uY2F0KHopLmpvaW4oIi4iKSxJPXVxKGMseCwhMCk7SS5NYz1BcigpO29xKGEsRCxJKTtuPSEwfXZhciBHPXZvaWQgMDtlJiYoKEc9eSk9PW51bGw/MDpHLmluY2x1ZGVzKDIpKSYmbC5wdXNoKG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30scix7bGFiZWxzOnp9KSl9bC5sZW5ndGgmJgptcygiZ2NsX2diIixsLGMpfXJldHVybiBmfQpmdW5jdGlvbiBGcyhhLGIsYyl7Yz1jPT09dm9pZCAwPyExOmM7dmFyIGQ9W107Yj1ifHx7fTt2YXIgZT1HcihiLGMpLGY9RHMoZCxlLGEpO2lmKGYubGVuZ3RoKXtmb3IodmFyIGc9W10saD17fSxsPW0oZiksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPW4udmFsdWUscT1IcihiLnByZWZpeCkscj1JcihwLnpnLHEpO2lmKCFyKXJldHVybiBkO3ZhciB0PXAsdT10LnZlcnNpb24sdj10LmdjbGlkLHg9dC50aW1lc3RhbXAseT10Lm9hLHo9TWF0aC5yb3VuZCh4LzFFMyksQz1Mcih0LmxhYmVsc3x8W10sW2FdKSxEPXZvaWQgMDtpZigoRD15KT09bnVsbD8wOkQuaW5jbHVkZXMoMSkpaWYocC56Zz09PSJhZyImJiFoLmFnKXt2YXIgST17fSxHPShJLms9dixJLmk9IiIreixJLmI9QyxJKTtBcShyLEcsNSxiLHgpO2guYWc9ITB9ZWxzZSBpZihwLnpnPT09ImdiIiYmIWguZ2Ipe3ZhciBOPVt1LHosdl0uY29uY2F0KEMpLmpvaW4oIi4iKSxTPXVxKGIseCwhMCk7Uy5NYz0KQXIoKTtvcShyLE4sUyk7aC5nYj0hMH12YXIgVz12b2lkIDA7YyYmKChXPXkpPT1udWxsPzA6Vy5pbmNsdWRlcygyKSkmJmcucHVzaChuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHAse2xhYmVsczpDfSkpfWcubGVuZ3RoJiZtcygiZ2NsX2diIixnLGIpfXJldHVybiBkfWZ1bmN0aW9uIEdzKGEsYil7dmFyIGM9SHIoYiksZD1JcihhLGMpO2lmKCFkKXJldHVybiAwO3ZhciBlO2U9YT09PSJhZyI/SnIoZCk6RXIoZCk7Zm9yKHZhciBmPTAsZz0wO2c8ZS5sZW5ndGg7ZysrKWY9TWF0aC5tYXgoZixlW2ddLnRpbWVzdGFtcCk7cmV0dXJuIGZ9ZnVuY3Rpb24gSHMoYSl7Zm9yKHZhciBiPTAsYz1tKE9iamVjdC5rZXlzKGEpKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSlmb3IodmFyIGU9YVtkLnZhbHVlXSxmPTA7ZjxlLmxlbmd0aDtmKyspYj1NYXRoLm1heChiLE51bWJlcihlW2ZdLnRpbWVzdGFtcCkpO3JldHVybiBifQpmdW5jdGlvbiBJcyhhKXt2YXIgYj1NYXRoLm1heChHcygiYXciLGEpLEhzKEJyKEFyKCkpP1JwKCk6e30pKSxjPU1hdGgubWF4KEdzKCJnYiIsYSksSHMoQnIoQXIoKSk/UnAoIl9nYWNfZ2IiLCEwKTp7fSkpO2M9TWF0aC5tYXgoYyxHcygiYWciLGEpKTtyZXR1cm4gYz5ifTt2YXIgSnM9UmVnRXhwKCJeVUEtXFxkKy1cXGQrJTNBW1xcdy1dKyg/OiUyQ1tcXHctXSspKig/OiUzQlVBLVxcZCstXFxkKyUzQVtcXHctXSsoPzolMkNbXFx3LV0rKSopKiQiKSxLcz0vXn4/W1x3LV0rKD86XC5+P1tcdy1dKykqJC8sTHM9L15cZCtcLmZsc1wuZG91YmxlY2xpY2tcLm5ldCQvLE1zPS87Z2FjPShbXjs/XSspLyxOcz0vO2dhY2diPShbXjs/XSspLzsKZnVuY3Rpb24gT3MoYSxiKXtpZihMcy50ZXN0KEIubG9jYXRpb24uaG9zdCkpe3ZhciBjPUIubG9jYXRpb24uaHJlZi5tYXRjaChiKTtyZXR1cm4gYyYmYy5sZW5ndGg9PT0yJiZjWzFdLm1hdGNoKEpzKT9LaihjWzFdKXx8IiI6IiJ9Zm9yKHZhciBkPVtdLGU9bShPYmplY3Qua2V5cyhhKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe2Zvcih2YXIgZz1mLnZhbHVlLGg9W10sbD1hW2ddLG49MDtuPGwubGVuZ3RoO24rKyloLnB1c2gobFtuXS5nY2xpZCk7ZC5wdXNoKGcrIjoiK2guam9pbigiLCIpKX1yZXR1cm4gZC5sZW5ndGg+MD9kLmpvaW4oIjsiKToiIn0KZnVuY3Rpb24gUHMoYSxiLGMpe2Zvcih2YXIgZD1CcihBcigpKT9ScCgiX2dhY19nYiIsITApOnt9LGU9W10sZj0hMSxnPW0oT2JqZWN0LmtleXMoZCkpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKXt2YXIgbD1oLnZhbHVlLG49RXMoIl9nYWNfZ2JfIitsLGEsYixjKTtmPWZ8fG4ubGVuZ3RoIT09MCYmbi5zb21lKGZ1bmN0aW9uKHApe3JldHVybiBwPT09MX0pO2UucHVzaChsKyI6IituLmpvaW4oIiwiKSl9cmV0dXJue1JyOmY/ZS5qb2luKCI7Iik6IiIsUXI6T3MoZCxOcyl9fWZ1bmN0aW9uIFFzKGEpe3ZhciBiPUIubG9jYXRpb24uaHJlZi5tYXRjaChuZXcgUmVnRXhwKCI7IithKyI9KFteOz9dKykiKSk7cmV0dXJuIGImJmIubGVuZ3RoPT09MiYmYlsxXS5tYXRjaChLcyk/YlsxXTp2b2lkIDB9CmZ1bmN0aW9uIFJzKGEpe3ZhciBiPXt9LGMsZCxlO0xzLnRlc3QoQi5sb2NhdGlvbi5ob3N0KSYmKGM9UXMoImdjbGdzIiksZD1RcygiZ2Nsc3QiKSxlPVFzKCJnY2xscCIpKTtpZihjJiZkJiZlKWIuRWc9YyxiLldoPWQsYi5VaD1lO2Vsc2V7dmFyIGY9TmIoKSxnPU1yKChhfHwiX2djbCIpKyJfZ3MiKSxoPWcubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwLmdjbGlkfSksbD1nLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gZi1wLnRpbWVzdGFtcH0pLG49Zy5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHAub2R9KTtoLmxlbmd0aD4wJiZsLmxlbmd0aD4wJiZuLmxlbmd0aD4wJiYoYi5FZz1oLmpvaW4oIi4iKSxiLldoPWwuam9pbigiLiIpLGIuVWg9bi5qb2luKCIuIikpfXJldHVybiBifQpmdW5jdGlvbiBTcyhhLGIpe3ZhciBjPWEuc3BsaXQoIi4iKSxkPWI/Yi5zcGxpdCgiLiIpOltdLGU9ZC5sZW5ndGg9PT1jLmxlbmd0aD9kOnZvaWQgMDtyZXR1cm4gYy5tYXAoZnVuY3Rpb24oZixnKXt2YXIgaD17Z2NsaWQ6Zn07aWYoZSl7dmFyIGw9ZVtnXS5zcGxpdCgiXyIpO2lmKGwubGVuZ3RoPT09Mil7aC5xYT1uZXcgZXIoTnVtYmVyKGxbMF0pKTt2YXIgbjt2YXIgcD1OdW1iZXIobFsxXSk7aWYocD09PTApbj1bMF07ZWxzZXt2YXIgcT1bXTtwJjEmJnEucHVzaCgxKTtwJjImJnEucHVzaCgyKTtwJjQmJnEucHVzaCgzKTtwJjgmJnEucHVzaCg0KTtwJjE2JiZxLnB1c2goNSk7bj1xfWgub2E9bn19cmV0dXJuIGh9KX0KZnVuY3Rpb24gVHMoYSxiLGMsZCl7ZD1kPT09dm9pZCAwPyExOmQ7aWYoTHMudGVzdChCLmxvY2F0aW9uLmhvc3QpKXt2YXIgZT1RcyhjKTtpZihlKXtpZihZZigxNykpe3ZhciBmPVFzKGMrIl9zcmMiKTtyZXR1cm4gU3MoZSxmKX1pZihkKXt2YXIgZz1uZXcgZXI7ZnIoZywyKTtmcihnLDMpO3JldHVybiBlLnNwbGl0KCIuIikubWFwKGZ1bmN0aW9uKHIpe3JldHVybntnY2xpZDpyLHFhOmcsb2E6WzFdfX0pfXJldHVybiBlLnNwbGl0KCIuIikubWFwKGZ1bmN0aW9uKHIpe3JldHVybntnY2xpZDpyLHFhOm5ldyBlcixvYTpbMV19fSl9fWVsc2V7aWYoYj09PSJnY2xpZCIpe2Zvcih2YXIgaD1FcigoYXx8Il9nY2wiKSsiX2F3IixkKSxsPU51bWJlcihYZls0XT09PXZvaWQgMD8wOlhmWzRdKSxuPW0oVXMoKSkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpe3ZhciBxPXAudmFsdWU7cS50aW1lc3RhbXA+bCYmUXIoaCxxKX1yZXR1cm4gaH1pZihiPT09IndicmFpZCIpcmV0dXJuIEVyKChhfHwKIl9nY2wiKSsiX2diIixkKTtpZihiPT09ImJyYWlkcyIpcmV0dXJuIEdyKHtwcmVmaXg6YX0sZCl9cmV0dXJuW119ZnVuY3Rpb24gVXMoKXtyZXR1cm4od3EodnIuYXcsNCl8fFtdKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEubT09PSIxIn0pLm1hcChmdW5jdGlvbihhKXtyZXR1cm57Z2NsaWQ6YS5rLHRpbWVzdGFtcDpOdW1iZXIoYS5pKSx2ZXJzaW9uOiIiLG9hOls1XX19KX1mdW5jdGlvbiBWcyhhKXtmb3IodmFyIGI9MCxjPW0oYSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWU7ZT4wJiYoYnw9MTw8ZS0xKX1yZXR1cm4gYi50b1N0cmluZygpfWZ1bmN0aW9uIFdzKGEpe3JldHVybiBMcy50ZXN0KEIubG9jYXRpb24uaG9zdCk/IShRcygiZ2NsYXciKXx8UXMoImdhYyIpKTpJcyhhKX0KZnVuY3Rpb24gWHMoYSxiLGMsZCl7ZD1kPT09dm9pZCAwPyExOmQ7dmFyIGU7ZT1jP0ZzKGEsYixkKTpFcygoYiYmYi5wcmVmaXh8fCJfZ2NsIikrIl9nYiIsYSxiLHZvaWQgMCxkKTtyZXR1cm4gZS5sZW5ndGg9PT0wfHxlLmV2ZXJ5KGZ1bmN0aW9uKGYpe3JldHVybiBmPT09MH0pPyIiOmUuam9pbigiLiIpfTsKdmFyIFlzPWZ1bmN0aW9uKGEpe3ZhciBiO2I9Yj09PXZvaWQgMD8hMTpiO3ZhciBjPWtqKCJhZHNfcGFnZXZpZXciLGZ1bmN0aW9uKCl7cmV0dXJue319KTtpZihjW2FdKXJldHVybiExO2J8fChjW2FdPSEwKTtyZXR1cm4hMH0sWnM9ZnVuY3Rpb24oYSl7cmV0dXJuIFNqKGEsImdjbGlkIGRjbGlkIGdicmFpZCB3YnJhaWQgZ2NsYXcgZ2NsZGMgZ2NsaGEgZ2NsZ2YgZ2NsZ2IgX2dsIi5zcGxpdCgiICIpLCIwIil9LGF0PWZ1bmN0aW9uKCl7dmFyIGE9UmooQS5sb2NhdGlvbi5ocmVmKSxiPXZvaWQgMCxjPXZvaWQgMCxkPUxqKGEsInF1ZXJ5IiwhMSx2b2lkIDAsImdhZF9zb3VyY2UiKSxlPUxqKGEsInF1ZXJ5IiwhMSx2b2lkIDAsImdhZF9jYW1wYWlnbmlkIiksZixnPWEuaGFzaC5yZXBsYWNlKCIjIiwiIikubWF0Y2goJHMpO2Y9Zz9nWzFdOnZvaWQgMDtkJiZmPyhiPWQsYz0xKTpkPyhiPWQsYz0yKTpmJiYoYj1mLGM9Myk7cmV0dXJue0RnOmIsU3I6YyxUaDplfX0sYnQ9ZnVuY3Rpb24oYSl7dmFyIGI9Ck9wKCExKT09PTE/QS50b3AubG9jYXRpb24uaHJlZjpBLmxvY2F0aW9uLmhyZWY7cmV0dXJuIGEoYil9LGN0PWZ1bmN0aW9uKGEpe3ZhciBiPVtdO0diKGEsZnVuY3Rpb24oYyxkKXtkPVJyKGQpO2Zvcih2YXIgZT1bXSxmPTA7ZjxkLmxlbmd0aDtmKyspZS5wdXNoKGRbZl0uZ2NsaWQpO2UubGVuZ3RoJiZiLnB1c2goYysiOiIrZS5qb2luKCIsIikpfSk7cmV0dXJuIGIuam9pbigiOyIpfSxldD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZHQoYSk7aWYoZClyZXR1cm4gZDt2YXIgZT1IcihiKTtpZihlPT09Il9nY2wiKXt2YXIgZj0hWG8oZnApJiZjLGc9W107YT09PSJhdyI/Zz1hcyhBLmxvY2F0aW9uLmhyZWYsITAsITEpOmE9PT0iZGMiJiYoZz1kcyhBLmxvY2F0aW9uLmhyZWYsITAsITEpKTtpZihnLmxlbmd0aD4wKXJldHVybiBmP1t7dmVyc2lvbjoiR0NMIix0aW1lc3RhbXA6MCxnY2xpZDoiMCJ9XTpnLm1hcChmdW5jdGlvbihsKXtyZXR1cm57dmVyc2lvbjoiR0NMIix0aW1lc3RhbXA6MCwKZ2NsaWQ6bC52YWx1ZSxxYTpsLnFhLG9hOlsxXX19KX12YXIgaD1JcihhLGUpO3JldHVybiBoP2E9PT0iYXciP0VyKGgsTSg1NjIpKTpacihoKTpbXX0sZHQ9ZnVuY3Rpb24oYSl7dmFyIGI9VGooImdjbCIrYSksYz1hPT09ImRjInx8YT09PSJhdyI/VGooImdjbCIrYSsiX3NyYyIpOnZvaWQgMDtpZihiKXJldHVybiBTcyhiLGMpfSxmdD1mdW5jdGlvbihhLGIsYyl7aWYoYT09PSJhdyJ8fGE9PT0iZGMifHxhPT09ImdiIil7dmFyIGQ9VGooImdjbCIrYSk7aWYoZClyZXR1cm4gZC5zcGxpdCgiLiIpfXZhciBlPUhyKGIpO2lmKGU9PT0iX2djbCIpe3ZhciBmPSFYbyhmcCkmJmMsZztnPWVzKClbYV18fFtdO2lmKGcubGVuZ3RoPjApcmV0dXJuIGY/WyIwIl06Z312YXIgaD1JcihhLGUpO3JldHVybiBoP0RyKGgpOltdfSxndD1mdW5jdGlvbihhLGIsYyl7aWYoIVIoYSxiKXx8IVIoYSxjKSlyZXR1cm4iIjt2YXIgZD1SKGEsYikuc3BsaXQoIi4iKSxlPVIoYSxjKS5zcGxpdCgiLiIpO3JldHVybiBkLmxlbmd0aCYmCmUubGVuZ3RoJiZkLmxlbmd0aD09PWUubGVuZ3RoJiZkWzBdJiZlWzBdP2QubWFwKGZ1bmN0aW9uKGYsZyl7cmV0dXJuIGYrIl8iK2VbZ119KS5qb2luKCIuIik6IiJ9LCRzPS9eZ2FkX3NvdXJjZVtfPV0oXGQrKSQvO2Z1bmN0aW9uIGh0KGEsYixjKXt2YXIgZD1SKGEsRi5ELlRhKTtpZihkJiZ0eXBlb2YgZD09PSJvYmplY3QiKWZvcih2YXIgZT1tKE9iamVjdC5rZXlzKGQpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZSxoPWRbZ107aWYoaCE9PXZvaWQgMCl7aD09PW51bGwmJihoPSIiKTt2YXIgbD0iZ2FwLiIrZyxuPVN0cmluZyhoKTtjP2MobCxuKTpiW2xdPW59fX07dmFyIGl0PSExLGp0PVtdO2Z1bmN0aW9uIGt0KCl7aWYoIWl0KXtpdD0hMDtmb3IodmFyIGE9anQubGVuZ3RoLTE7YT49MDthLS0panRbYV0oKTtqdD1bXX19O2Z1bmN0aW9uIGx0KGEpe3ZhciBiPVtdLGM9MCxkO2ZvcihkIGluIGEpYltjKytdPWFbZF07cmV0dXJuIGJ9O2Z1bmN0aW9uIG10KGEsYixjKXtyZXR1cm4gdHlwZW9mIGEuYWRkRXZlbnRMaXN0ZW5lcj09PSJmdW5jdGlvbiI/KGEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITEpLCEwKTohMX1mdW5jdGlvbiBudChhLGIsYyl7dHlwZW9mIGEucmVtb3ZlRXZlbnRMaXN0ZW5lcj09PSJmdW5jdGlvbiImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsITEpfTtmdW5jdGlvbiBvdChhLGIsYyxkKXtkPWQ9PT12b2lkIDA/ITE6ZDthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0c3x8KGEuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzPVtdKTt2YXIgZT1QcChhLmRvY3VtZW50KTtpZihjKXt2YXIgZj1mdW5jdGlvbigpe2lmKGMpe3ZhciBnPWEuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzLGg9RGMoZyxlKTtoPj0wJiZBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoZyxoLDEpfW50KGUsImxvYWQiLGYpO250KGUsImVycm9yIixmKX07bXQoZSwibG9hZCIsZik7bXQoZSwiZXJyb3IiLGYpfWQmJihlLmF0dHJpYnV0aW9uU3JjPSIiKTtlLnNyYz1iO2EuZ29vZ2xlX2ltYWdlX3JlcXVlc3RzLnB1c2goZSl9CmZ1bmN0aW9uIHB0KGEpe3ZhciBiO2I9Yj09PXZvaWQgMD8hMTpiO3ZhciBjPSJodHRwczovL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9nZW5fMjA0P2lkPXRjZmUiO0lwKGEsZnVuY3Rpb24oZCxlKXtpZihkfHxkPT09MCljKz0iJiIrZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhkKSl9KTtxdChjLGIpfQpmdW5jdGlvbiBxdChhLGIpe3ZhciBjPXdpbmRvdyxkO2I9Yj09PXZvaWQgMD8hMTpiO2Q9ZD09PXZvaWQgMD8hMTpkO2lmKGMuZmV0Y2gpe3ZhciBlPXtrZWVwYWxpdmU6ITAsY3JlZGVudGlhbHM6ImluY2x1ZGUiLHJlZGlyZWN0OiJmb2xsb3ciLG1ldGhvZDoiZ2V0Iixtb2RlOiJuby1jb3JzIn07ZCYmKGUubW9kZT0iY29ycyIsInNldEF0dHJpYnV0aW9uUmVwb3J0aW5nImluIFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZT9lLmF0dHJpYnV0aW9uUmVwb3J0aW5nPXtldmVudFNvdXJjZUVsaWdpYmxlOiJ0cnVlIix0cmlnZ2VyRWxpZ2libGU6ImZhbHNlIn06ZS5oZWFkZXJzPXsiQXR0cmlidXRpb24tUmVwb3J0aW5nLUVsaWdpYmxlIjoiZXZlbnQtc291cmNlIn0pO2MuZmV0Y2goYSxlKX1lbHNlIG90KGMsYSxiPT09dm9pZCAwPyExOmIsZD09PXZvaWQgMD8hMTpkKX07ZnVuY3Rpb24gcnQoKXt0aGlzLmZhPXRoaXMuZmE7dGhpcy5SPXRoaXMuUn1ydC5wcm90b3R5cGUuZmE9ITE7cnQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLmZhfHwodGhpcy5mYT0hMCx0aGlzLk4oKSl9O3J0LnByb3RvdHlwZVtTeW1ib2wuZGlzcG9zZV09ZnVuY3Rpb24oKXt0aGlzLmRpc3Bvc2UoKX07cnQucHJvdG90eXBlLmFkZE9uRGlzcG9zZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYil7dGhpcy5mYT9iIT09dm9pZCAwP2EuY2FsbChiKTphKCk6KHRoaXMuUnx8KHRoaXMuUj1bXSksYiYmKGE9YS5iaW5kKGIpKSx0aGlzLlIucHVzaChhKSl9O3J0LnByb3RvdHlwZS5OPWZ1bmN0aW9uKCl7aWYodGhpcy5SKWZvcig7dGhpcy5SLmxlbmd0aDspdGhpcy5SLnNoaWZ0KCkoKX07ZnVuY3Rpb24gc3QoYSl7YS5hZGR0bENvbnNlbnQ9PT12b2lkIDB8fHZmKGEuYWRkdGxDb25zZW50KXx8KGEuYWRkdGxDb25zZW50PXZvaWQgMCk7YS5nZHByQXBwbGllcz09PXZvaWQgMHx8d2YoYS5nZHByQXBwbGllcyl8fChhLmdkcHJBcHBsaWVzPXZvaWQgMCk7cmV0dXJuIGEudGNTdHJpbmchPT12b2lkIDAmJiF2ZihhLnRjU3RyaW5nKXx8YS5saXN0ZW5lcklkIT09dm9pZCAwJiYhdWYoYS5saXN0ZW5lcklkKT8yOmEuY21wU3RhdHVzJiZhLmNtcFN0YXR1cyE9PSJlcnJvciI/MDozfXZhciB0dD1mdW5jdGlvbihhLGIpe2I9Yj09PXZvaWQgMD97fTpiO3J0LmNhbGwodGhpcyk7dGhpcy5IPW51bGw7dGhpcy5qYT17fTt0aGlzLnlhPTA7dGhpcy5aPW51bGw7dGhpcy5LPWE7dmFyIGM7dGhpcy50aW1lb3V0TXM9KGM9Yi50aW1lb3V0TXMpIT1udWxsP2M6NTAwO3ZhciBkO3RoaXMuRWo9KGQ9Yi5FaikhPW51bGw/ZDohMX07d2EodHQscnQpOwp0dC5wcm90b3R5cGUuTj1mdW5jdGlvbigpe3RoaXMuamE9e307dGhpcy5aJiYobnQodGhpcy5LLCJtZXNzYWdlIix0aGlzLlopLGRlbGV0ZSB0aGlzLlopO2RlbGV0ZSB0aGlzLmphO2RlbGV0ZSB0aGlzLks7ZGVsZXRlIHRoaXMuSDtydC5wcm90b3R5cGUuTi5jYWxsKHRoaXMpfTt2YXIgdnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhLksuX190Y2ZhcGk9PT0iZnVuY3Rpb24ifHx1dChhKSE9bnVsbH07CnR0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz17aW50ZXJuYWxCbG9ja09uRXJyb3JzOnRoaXMuRWp9LGQ9SHAoZnVuY3Rpb24oKXthKGMpfSksZT0wO3RoaXMudGltZW91dE1zIT09LTEmJihlPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtjLnRjU3RyaW5nPSJ0Y3VuYXZhaWxhYmxlIjtjLmludGVybmFsRXJyb3JTdGF0ZT0xO2QoKX0sdGhpcy50aW1lb3V0TXMpKTt2YXIgZj1mdW5jdGlvbihnLGgpe2NsZWFyVGltZW91dChlKTtnPyhjPWcsYy5pbnRlcm5hbEVycm9yU3RhdGU9c3QoYyksYy5pbnRlcm5hbEJsb2NrT25FcnJvcnM9Yi5FaixoJiZjLmludGVybmFsRXJyb3JTdGF0ZT09PTB8fChjLnRjU3RyaW5nPSJ0Y3VuYXZhaWxhYmxlIixofHwoYy5pbnRlcm5hbEVycm9yU3RhdGU9MykpKTooYy50Y1N0cmluZz0idGN1bmF2YWlsYWJsZSIsYy5pbnRlcm5hbEVycm9yU3RhdGU9Myk7YShjKX07dHJ5e3d0KHRoaXMsImFkZEV2ZW50TGlzdGVuZXIiLApmKX1jYXRjaChnKXtjLnRjU3RyaW5nPSJ0Y3VuYXZhaWxhYmxlIixjLmludGVybmFsRXJyb3JTdGF0ZT0zLGUmJihjbGVhclRpbWVvdXQoZSksZT0wKSxkKCl9fTt0dC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhKXthJiZhLmxpc3RlbmVySWQmJnd0KHRoaXMsInJlbW92ZUV2ZW50TGlzdGVuZXIiLG51bGwsYS5saXN0ZW5lcklkKX07CnZhciB6dD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7ZD1kPT09dm9pZCAwPyI3NTUiOmQ7dmFyIGU7YTp7aWYoYS5wdWJsaXNoZXImJmEucHVibGlzaGVyLnJlc3RyaWN0aW9ucyl7dmFyIGY9YS5wdWJsaXNoZXIucmVzdHJpY3Rpb25zW2JdO2lmKGYhPT12b2lkIDApe2U9ZltkPT09dm9pZCAwPyI3NTUiOmRdO2JyZWFrIGF9fWU9dm9pZCAwfXZhciBnPWU7aWYoZz09PTApcmV0dXJuITE7dmFyIGg9YztjPT09Mj8oaD0wLGc9PT0yJiYoaD0xKSk6Yz09PTMmJihoPTEsZz09PTEmJihoPTApKTt2YXIgbDtpZihoPT09MClpZihhLnB1cnBvc2UmJmEudmVuZG9yKXt2YXIgbj14dChhLnZlbmRvci5jb25zZW50cyxkPT09dm9pZCAwPyI3NTUiOmQpO2w9biYmYj09PSIxIiYmYS5wdXJwb3NlT25lVHJlYXRtZW50JiZhLnB1Ymxpc2hlckNDPT09IkNIIj8hMDpuJiZ4dChhLnB1cnBvc2UuY29uc2VudHMsYil9ZWxzZSBsPSEwO2Vsc2UgbD1oPT09MT9hLnB1cnBvc2UmJmEudmVuZG9yP3h0KGEucHVycG9zZS5sZWdpdGltYXRlSW50ZXJlc3RzLApiKSYmeHQoYS52ZW5kb3IubGVnaXRpbWF0ZUludGVyZXN0cyxkPT09dm9pZCAwPyI3NTUiOmQpOiEwOiEwO3JldHVybiBsfSx4dD1mdW5jdGlvbihhLGIpe3JldHVybiEoIWF8fCFhW2JdKX0sd3Q9ZnVuY3Rpb24oYSxiLGMsZCl7Y3x8KGM9ZnVuY3Rpb24oKXt9KTt2YXIgZT1hLks7aWYodHlwZW9mIGUuX190Y2ZhcGk9PT0iZnVuY3Rpb24iKXt2YXIgZj1lLl9fdGNmYXBpO2YoYiwyLGMsZCl9ZWxzZSBpZih1dChhKSl7QXQoYSk7dmFyIGc9KythLnlhO2EuamFbZ109YztpZihhLkgpe3ZhciBoPXt9O2EuSC5wb3N0TWVzc2FnZSgoaC5fX3RjZmFwaUNhbGw9e2NvbW1hbmQ6Yix2ZXJzaW9uOjIsY2FsbElkOmcscGFyYW1ldGVyOmR9LGgpLCIqIil9fWVsc2UgYyh7fSwhMSl9LHV0PWZ1bmN0aW9uKGEpe2lmKGEuSClyZXR1cm4gYS5IO2EuSD1OcChhLkssIl9fdGNmYXBpTG9jYXRvciIpO3JldHVybiBhLkh9LEF0PWZ1bmN0aW9uKGEpe2lmKCFhLlope3ZhciBiPWZ1bmN0aW9uKGMpe2lmKGMuc291cmNlPT09CmEuSCl0cnl7dmFyIGQ7ZD0odmYoYy5kYXRhKT9KU09OLnBhcnNlKGMuZGF0YSk6Yy5kYXRhKS5fX3RjZmFwaVJldHVybjthLmphW2QuY2FsbElkXShkLnJldHVyblZhbHVlLGQuc3VjY2Vzcyl9Y2F0Y2goZSl7fX07YS5aPWI7bXQoYS5LLCJtZXNzYWdlIixiKX19LEJ0PWZ1bmN0aW9uKGEpe2lmKGEuZ2RwckFwcGxpZXM9PT0hMSlyZXR1cm4hMDthLmludGVybmFsRXJyb3JTdGF0ZT09PXZvaWQgMCYmKGEuaW50ZXJuYWxFcnJvclN0YXRlPXN0KGEpKTtyZXR1cm4gYS5jbXBTdGF0dXM9PT0iZXJyb3IifHxhLmludGVybmFsRXJyb3JTdGF0ZSE9PTA/YS5pbnRlcm5hbEJsb2NrT25FcnJvcnM/KHB0KHtlOlN0cmluZyhhLmludGVybmFsRXJyb3JTdGF0ZSl9KSwhMSk6ITA6YS5jbXBTdGF0dXMhPT0ibG9hZGVkInx8YS5ldmVudFN0YXR1cyE9PSJ0Y2xvYWRlZCImJmEuZXZlbnRTdGF0dXMhPT0idXNlcmFjdGlvbmNvbXBsZXRlIj8hMTohMH07dmFyIEN0PXsxOjAsMzowLDQ6MCw3OjMsOTozLDEwOjN9O2Z1bmN0aW9uIER0KCl7cmV0dXJuIGtqKCJ0Y2YiLGZ1bmN0aW9uKCl7cmV0dXJue319KX12YXIgRXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHR0KEEse3RpbWVvdXRNczotMX0pfTsKZnVuY3Rpb24gRnQoKXt2YXIgYT1EdCgpLGI9RXQoKTt2dChiKSYmIUd0KCkmJiFIdCgpJiZQKDEyNCk7aWYoIWEuYWN0aXZlJiZ2dChiKSl7R3QoKSYmKGEuYWN0aXZlPSEwLGEucHVycG9zZXM9e30sYS5jbXBJZD0wLGEudGNmUG9saWN5VmVyc2lvbj0wLHRsKCkuYWN0aXZlPSEwLGEudGNTdHJpbmc9InRjdW5hdmFpbGFibGUiKTtjcCgpO3RyeXtiLmFkZEV2ZW50TGlzdGVuZXIoZnVuY3Rpb24oYyl7aWYoYy5pbnRlcm5hbEVycm9yU3RhdGUhPT0wKUl0KGEpLGRwKFtGLkQua2EsRi5ELlhhLEYuRC5tYV0pLHRsKCkuYWN0aXZlPSEwO2Vsc2UgaWYoYS5nZHByQXBwbGllcz1jLmdkcHJBcHBsaWVzLGEuY21wSWQ9Yy5jbXBJZCxhLmVuYWJsZUFkdmVydGlzZXJDb25zZW50TW9kZT1jLmVuYWJsZUFkdmVydGlzZXJDb25zZW50TW9kZSxIdCgpJiYoYS5hY3RpdmU9ITApLCFKdChjKXx8R3QoKXx8SHQoKSl7YS50Y2ZQb2xpY3lWZXJzaW9uPWMudGNmUG9saWN5VmVyc2lvbjt2YXIgZDtpZihjLmdkcHJBcHBsaWVzPT09CiExKXt2YXIgZT17fSxmO2ZvcihmIGluIEN0KUN0Lmhhc093blByb3BlcnR5KGYpJiYoZVtmXT0hMCk7ZD1lO2IucmVtb3ZlRXZlbnRMaXN0ZW5lcihjKX1lbHNlIGlmKEp0KGMpKXt2YXIgZz17fSxoO2ZvcihoIGluIEN0KWlmKEN0Lmhhc093blByb3BlcnR5KGgpKWlmKGg9PT0iMSIpe3ZhciBsLG49YyxwPXtVcjohMH07cD1wPT09dm9pZCAwP3t9OnA7bD1CdChuKT9uLmdkcHJBcHBsaWVzPT09ITE/ITA6bi50Y1N0cmluZz09PSJ0Y3VuYXZhaWxhYmxlIj8hcC5pZHBjQXBwbGllczoocC5pZHBjQXBwbGllc3x8bi5nZHByQXBwbGllcyE9PXZvaWQgMHx8cC5VcikmJihwLmlkcGNBcHBsaWVzfHx2ZihuLnRjU3RyaW5nKSYmbi50Y1N0cmluZy5sZW5ndGgpP3p0KG4sIjEiLDApOiEwOiExO2dbIjEiXT1sfWVsc2UgZ1toXT16dChjLGgsQ3RbaF0pO2Q9Z31pZihkKXthLnRjU3RyaW5nPWMudGNTdHJpbmd8fCJ0Y2VtcHR5IjthLnB1cnBvc2VzPWQ7dmFyIHE9e30scj0ocVtGLkQua2FdPQphLnB1cnBvc2VzWyIxIl0/ImdyYW50ZWQiOiJkZW5pZWQiLHEpO2EuZ2RwckFwcGxpZXMhPT0hMD8oZHAoW0YuRC5rYSxGLkQuWGEsRi5ELm1hXSksdGwoKS5hY3RpdmU9ITApOihyW0YuRC5YYV09YS5wdXJwb3Nlc1siMyJdJiZhLnB1cnBvc2VzWyI0Il0/ImdyYW50ZWQiOiJkZW5pZWQiLHR5cGVvZiBhLnRjZlBvbGljeVZlcnNpb249PT0ibnVtYmVyIiYmYS50Y2ZQb2xpY3lWZXJzaW9uPj00P3JbRi5ELm1hXT1hLnB1cnBvc2VzWyIxIl0mJmEucHVycG9zZXNbIjciXT8iZ3JhbnRlZCI6ImRlbmllZCI6ZHAoW0YuRC5tYV0pLFZvKHIse2V2ZW50SWQ6MH0se2dkcHJBcHBsaWVzOmE/YS5nZHByQXBwbGllczp2b2lkIDAsdGNTdHJpbmc6S3QoKXx8IiJ9KSl9fWVsc2UgZHAoW0YuRC5rYSxGLkQuWGEsRi5ELm1hXSl9KX1jYXRjaChjKXtJdChhKSxkcChbRi5ELmthLEYuRC5YYSxGLkQubWFdKSx0bCgpLmFjdGl2ZT0hMH19fQpmdW5jdGlvbiBJdChhKXthLnR5cGU9ImUiO2EudGNTdHJpbmc9InRjdW5hdmFpbGFibGUifWZ1bmN0aW9uIEp0KGEpe3JldHVybiBhLmV2ZW50U3RhdHVzPT09InRjbG9hZGVkInx8YS5ldmVudFN0YXR1cz09PSJ1c2VyYWN0aW9uY29tcGxldGUifHxhLmV2ZW50U3RhdHVzPT09ImNtcHVpc2hvd24ifWZ1bmN0aW9uIEd0KCl7cmV0dXJuIEEuZ3RhZ19lbmFibGVfdGNmX3N1cHBvcnQ9PT0hMH1mdW5jdGlvbiBIdCgpe3JldHVybiBEdCgpLmVuYWJsZUFkdmVydGlzZXJDb25zZW50TW9kZT09PSEwfWZ1bmN0aW9uIEt0KCl7dmFyIGE9RHQoKTtpZihhLmFjdGl2ZSlyZXR1cm4gYS50Y1N0cmluZ31mdW5jdGlvbiBMdCgpe3ZhciBhPUR0KCk7aWYoYS5hY3RpdmUmJmEuZ2RwckFwcGxpZXMhPT12b2lkIDApcmV0dXJuIGEuZ2RwckFwcGxpZXM/IjEiOiIwIn0KZnVuY3Rpb24gTXQoYSl7aWYoIUN0Lmhhc093blByb3BlcnR5KFN0cmluZyhhKSkpcmV0dXJuITA7dmFyIGI9RHQoKTtyZXR1cm4gYi5hY3RpdmUmJmIucHVycG9zZXM/ISFiLnB1cnBvc2VzW1N0cmluZyhhKV06ITB9O3ZhciBOdD1bRi5ELmthLEYuRC5yYSxGLkQubWEsRi5ELlhhXSxPdD17fSxQdD0oT3RbRi5ELmthXT0xLE90W0YuRC5yYV09MixPdCk7ZnVuY3Rpb24gUXQoYSl7aWYoYT09PXZvaWQgMClyZXR1cm4gMDtzd2l0Y2goTyhhLEYuRC5SYykpe2Nhc2Ugdm9pZCAwOnJldHVybiAxO2Nhc2UgITE6cmV0dXJuIDM7ZGVmYXVsdDpyZXR1cm4gMn19ZnVuY3Rpb24gUnQoKXtyZXR1cm4oTSgxODMpP0xmKDE2KS5zcGxpdCgifiIpOkxmKDE3KS5zcGxpdCgifiIpKS5pbmRleE9mKHptKCkpIT09LTEmJkhjLmdsb2JhbFByaXZhY3lDb250cm9sPT09ITB9ZnVuY3Rpb24gU3QoYSl7aWYoUnQoKSlyZXR1cm4hMTt2YXIgYj1RdChhKTtpZihiPT09MylyZXR1cm4hMTtzd2l0Y2goQ2woRi5ELlhhKSl7Y2FzZSAxOmNhc2UgMzpyZXR1cm4hMDtjYXNlIDI6cmV0dXJuITE7Y2FzZSA0OnJldHVybiBiPT09MjtjYXNlIDA6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19CmZ1bmN0aW9uIFR0KCl7cmV0dXJuIEVsKCl8fCFCbChGLkQua2EpfHwhQmwoRi5ELnJhKX1mdW5jdGlvbiBVdCgpe3ZhciBhPXt9LGI7Zm9yKGIgaW4gUHQpUHQuaGFzT3duUHJvcGVydHkoYikmJihhW1B0W2JdXT1DbChiKSk7cmV0dXJuIkcxIit5ZihhWzFdfHwwKSt5ZihhWzJdfHwwKX12YXIgVnQ9e30sV3Q9KFZ0W0YuRC5rYV09MCxWdFtGLkQucmFdPTEsVnRbRi5ELm1hXT0yLFZ0W0YuRC5YYV09MyxWdCk7ZnVuY3Rpb24gWHQoYSl7c3dpdGNoKGEpe2Nhc2Ugdm9pZCAwOnJldHVybiAxO2Nhc2UgITA6cmV0dXJuIDM7Y2FzZSAhMTpyZXR1cm4gMjtkZWZhdWx0OnJldHVybiAwfX0KZnVuY3Rpb24gWXQoYSl7Zm9yKHZhciBiPSIxIixjPTA7YzxOdC5sZW5ndGg7YysrKXt2YXIgZD1iLGUsZj1OdFtjXSxnPUFsLmRlbGVnYXRlZENvbnNlbnRUeXBlc1tmXTtlPWc9PT12b2lkIDA/MDpXdC5oYXNPd25Qcm9wZXJ0eShnKT8xMnxXdFtnXTo4O3ZhciBoPXRsKCk7aC5hY2Nlc3NlZEFueT0hMDt2YXIgbD1oLmVudHJpZXNbZl18fHt9O2U9ZTw8MnxYdChsLmltcGxpY2l0KTtiPWQrKCIiKyIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIltlXSsiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbWHQobC5kZWNsYXJlKTw8NHxYdChsLmRlZmF1bHQpPDwyfFh0KGwudXBkYXRlKV0pfXZhciBuPWIscD0oUnQoKT8xOjApPDwzLHE9KEVsKCk/MTowKTw8MixyPVF0KGEpO2I9bisiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbcHwKcXxyXTtyZXR1cm4gYis9IiIrIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW0FsLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzLmFkX3N0b3JhZ2U8PDR8QWwuY29udGFpbmVyU2NvcGVkRGVmYXVsdHMuYW5hbHl0aWNzX3N0b3JhZ2U8PDJ8QWwuY29udGFpbmVyU2NvcGVkRGVmYXVsdHMuYWRfdXNlcl9kYXRhXSsiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbKEFsLnVzZWRDb250YWluZXJTY29wZWREZWZhdWx0cz8xOjApPDwyfEFsLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzLmFkX3BlcnNvbmFsaXphdGlvbl19ZnVuY3Rpb24gWnQoKXtyZXR1cm4gQmwoRi5ELm1hKT8iYSI6Ii0ifWZ1bmN0aW9uICR0KCl7cmV0dXJuIEJtKCl8fChHdCgpfHxIdCgpKSYmTHQoKT09PSIxIj8iMSI6IjAifQpmdW5jdGlvbiBhdSgpe3JldHVybihCbSgpPyEwOiEoIUd0KCkmJiFIdCgpKSYmTHQoKT09PSIxIil8fCFCbChGLkQubWEpfQpmdW5jdGlvbiBidSgpe3ZhciBhPSIwIixiPSIwIixjO3ZhciBkPUR0KCk7Yz1kLmFjdGl2ZT9kLmNtcElkOnZvaWQgMDt0eXBlb2YgYz09PSJudW1iZXIiJiZjPj0wJiZjPD00MDk1JiYoYT0iMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbYz4+NiY2M10sYj0iMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbYyY2M10pO3ZhciBlPSIwIixmO3ZhciBnPUR0KCk7Zj1nLmFjdGl2ZT9nLnRjZlBvbGljeVZlcnNpb246dm9pZCAwO3R5cGVvZiBmPT09Im51bWJlciImJmY+PTAmJmY8PTYzJiYoZT0iMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbZl0pO3ZhciBoPTA7Qm0oKSYmKGh8PTEpO0x0KCk9PT0iMSImJihofD0yKTtHdCgpJiYoaHw9NCk7dmFyIGw7dmFyIG49RHQoKTtsPW4uZW5hYmxlQWR2ZXJ0aXNlckNvbnNlbnRNb2RlIT09CnZvaWQgMD9uLmVuYWJsZUFkdmVydGlzZXJDb25zZW50TW9kZT8iMSI6IjAiOnZvaWQgMDtsPT09IjEiJiYoaHw9OCk7dGwoKS53YWl0UGVyaW9kVGltZWRPdXQmJihofD0xNik7cmV0dXJuIjEiK2ErYitlKyIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIltoXX07dmFyIGN1PXtVQToxLEFXOjIsREM6MyxHOjQsR0Y6NSxHVDoxMixHVE06MTQsSEE6NixNQzo3fTsKZnVuY3Rpb24gZHUoYSl7YT1hPT09dm9pZCAwP3t9OmE7dmFyIGI9RSg1KS5zcGxpdCgiLSIpWzBdLnRvVXBwZXJDYXNlKCksYyxkPXtjdGlkOkUoNSksRG86SmYoMTUpLElvOkUoMTQpLExzOklmKDcpPzI6MSxEdDphLnBmLGNhbm9uaWNhbElkOkUoNiksbnQ6KGM9QWsoKSk9PW51bGw/dm9pZCAwOmMuY2Fub25pY2FsQ29udGFpbmVySWQsRXQ6YS5UZz09PXZvaWQgMD92b2lkIDA6YS5UZz8xMDoxMn07ZC5jYW5vbmljYWxJZCE9PWEubWMmJihkLm1jPWEubWMpO3ZhciBlPXhrKCk7ZC5Vcz1lP2UuY2Fub25pY2FsQ29udGFpbmVySWQ6dm9pZCAwO0lmKDQ1KT8oZC5oaT1jdVtiXSxkLmhpfHwoZC5oaT0wKSk6ZC5oaT1Eaj8xMzoxMDtJZig0Nyk/KGQuYms9MCxkLnFyPTIpOklmKDUwKT9kLmJrPTE6ZC5iaz0zO3ZhciBmPWEsZz17NjohMX07SmYoNTQpPT09Mj9nWzddPSEwOkpmKDU0KT09PTEmJihnWzJdPSEwKTtpZihLYyl7dmFyIGg9TGooUmooS2MpLCJob3N0Iik7aCYmKGdbOF09CmgubWF0Y2goL14od3d3XC4pP2dvb2dsZXRhZ21hbmFnZXJcLmNvbSQvKT09PW51bGwpfXZhciBsO2dbOV09KGw9Zi5lZikhPW51bGw/bDohMTt2YXIgbj1GaygpLHA7Z1sxMF09KHA9bj09bnVsbD92b2lkIDA6bi5mcm9tQ29udGFpbmVyRXhlY3V0aW9uKSE9bnVsbD9wOiExO2QuenI9ZztyZXR1cm4gQ2YoZCxhLlBuKX07CnZhciBmdT1mdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz1tKGV1KGEpKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9ZC52YWx1ZSxmPVIoYSxlKSxnPVEoYSxILkouWWUpO00oNTg5KSYmZyYmKGU9PT1GLkQuemF8fGU9PT1GLkQuVWF8fGU9PT1GLkQuUGUpJiZ0eXBlb2YgZj09PSJzdHJpbmciJiYoZj1acyhmKSk7dmFyIGg9b3AoZSxmKTtoJiYoIWd8fGUhPT1GLkQuRGQmJmUhPT1GLkQuS2QmJmUhPT1GLkQuRWUmJmUhPT1GLkQuQmZ8fChoLnZhbHVlPSIwIiksTSg1MDQpJiYoZT09PUYuRC5NZD9oLmtleT0iZXZuaWQiOmU9PT1GLkQuTmQmJihoLmtleT0iZXhjaWQiKSksYltoLmtleV09aC52YWx1ZSl9Yi5ndG09ZHUoe21jOlEoYSxILkouTmIpLFRnOmEuTS5pc0d0bUV2ZW50LGVmOlEoYSxILkouQ2MpfSk7VHQoKSYmKGIuZ2NzPWIuZ2NzfHxVdCgpKTtiLmdjZD1iLmdjZHx8WXQoYS5NKTthdSgpJiYoYi5kbWFfY3BzPVp0KCkpO2IuZG1hPSR0KCk7dnQoRXQoKSkmJgooYi50Y2ZkPWJ1KCkpO3ZhciBsPUNwKGEpO2wmJihiLnRhZ19leHA9bCk7aWYoUShhLEguSi5Caykpe2IudGZ0PVN0cmluZyhOYigpKTt2YXIgbj1wZCgpO24hPT12b2lkIDAmJihiLnRmZD1TdHJpbmcoTWF0aC5yb3VuZChuKSkpfWIuYXB2ZT0iMSI7Yi5hcHZmPW5kKCk/ImYiOiJuZiI7Zm8uSFtjby5pYS5jYl0hPT1iby5NYS5VZXx8Zm8uS1tjby5pYS5jYl0uaXNDb25zZW50R3JhbnRlZCgpfHwoYi5saW1pdGVkX2Fkcz0iMSIpO3ZhciBwPVEoYSxILkouWGcpO00oNDc0KSYmcCE9bnVsbCYmcCE9PSIiJiYoYi5fZ3NpZD1wKTtodChhLGIsZnVuY3Rpb24ocSxyKXtiW3FdPWVuY29kZVVSSUNvbXBvbmVudChyKX0pO3JldHVybiBifTt2YXIgZ3U9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLmVuZHBvaW50PWE7dGhpcy5mYT1jO3RoaXMuamE9ZDt0aGlzLnBhcmFtZXRlckVuY29kaW5nPWU7dGhpcy5aPWIuc2xpY2UoKX07Z3UucHJvdG90eXBlLks9ZnVuY3Rpb24oKXtyZXR1cm4gWG8odGhpcy5aKX07Z3UucHJvdG90eXBlLmlzU3VwcG9ydGVkPWZ1bmN0aW9uKCl7cmV0dXJuITB9O2d1LnByb3RvdHlwZS5SPWZ1bmN0aW9uKCl7dmFyIGE9TW1bdGhpcy5lbmRwb2ludF0odm9pZCAwKTtyZXR1cm4gU2IoYSwiaHR0cHM6Ly8iKT9hLnN1YnN0cmluZyg4KTpTYihhLCJodHRwOi8vIik/YS5zdWJzdHJpbmcoNyk6YX07dmFyIGh1PWZ1bmN0aW9uKGEsYil7dGhpcy5tZXRob2ROYW1lPWE7dGhpcy5SPWJ9O2h1LnByb3RvdHlwZS5zZW5kUmVxdWVzdD1mdW5jdGlvbihhLGIsYyl7aWYodGhpcy5pc1N1cHBvcnRlZCgpKWlmKChjPT1udWxsP3ZvaWQgMDpjLmJvZHkpPT09dm9pZCAwfHx0aGlzLkgoKSl0cnl7dGhpcy5LKGEsYixjKX1jYXRjaChkKXthLnJkKGQpfWVsc2UgYS5yZCgiUmVxdWVzdCBtZXRob2QgIit0aGlzLm1ldGhvZE5hbWUrIiBkb2VzIG5vdCBzdXBwb3J0IGEgcmVxdWVzdCBib2R5LiIpO2Vsc2UgYS5yZCgiUmVxdWVzdCBtZXRob2QgIit0aGlzLm1ldGhvZE5hbWUrIiBpcyBub3Qgc3VwcG9ydGVkLiIpfTt2YXIgaXU9ZnVuY3Rpb24oKXtodS5jYWxsKHRoaXMsIkltYWdlUGl4ZWwiLDMpfTt3YShpdSxodSk7aXUucHJvdG90eXBlLmlzU3VwcG9ydGVkPWZ1bmN0aW9uKCl7cmV0dXJuITB9O2l1LnByb3RvdHlwZS5IPWZ1bmN0aW9uKCl7cmV0dXJuITF9OwppdS5wcm90b3R5cGUuSz1mdW5jdGlvbihhLGIsYyl7WmMoYixmdW5jdGlvbigpe2EuamYoKX0sZnVuY3Rpb24oKXthLm9uRmFpbHVyZSh2b2lkIDApfSxjPT1udWxsP3ZvaWQgMDpjLmFmKX07dmFyIGp1PWZ1bmN0aW9uKCl7aHUuY2FsbCh0aGlzLCJTZW5kQmVhY29uIiwxKX07d2EoanUsaHUpO2p1LnByb3RvdHlwZS5pc1N1cHBvcnRlZD1mdW5jdGlvbigpe3JldHVybiBrZCgpfTtqdS5wcm90b3R5cGUuSD1mdW5jdGlvbigpe3JldHVybiEwfTtqdS5wcm90b3R5cGUuSz1mdW5jdGlvbihhLGIsYyl7amQoYixjPT1udWxsP3ZvaWQgMDpjLmJvZHkpP2EuamYoKTphLnJkKHZvaWQgMCl9O3ZhciBrdT1mdW5jdGlvbigpe2h1LmNhbGwodGhpcywiRmV0Y2giLDEpfTt3YShrdSxodSk7a3UucHJvdG90eXBlLmlzU3VwcG9ydGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHliKEEuZmV0Y2gpfTtrdS5wcm90b3R5cGUuSD1mdW5jdGlvbigpe3JldHVybiEwfTsKa3UucHJvdG90eXBlLks9ZnVuY3Rpb24oYSxiLGMpe0EuZmV0Y2goYixjPT1udWxsP3ZvaWQgMDpjLkdiKS50aGVuKGZ1bmN0aW9uKGQpe2lmKGQub2spYS5wZShkKTtlbHNlIGlmKGQuc3RhdHVzPT09MClhLmpmKCk7ZWxzZSBhLm9uRmFpbHVyZSgiRmV0Y2ggZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIitkLnN0YXR1cysiLiIpfSkuY2F0Y2goZnVuY3Rpb24oZCl7YS5yZChkKX0pfTt2YXIgbHU9bmV3IGl1LG11PW5ldyBqdSxudT1uZXcga3U7dmFyIG91PWZ1bmN0aW9uKCl7fTtvdS5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3JldHVybltdfTsKdmFyIHB1PWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwP1siYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdOmI7Z3UuY2FsbCh0aGlzLGEsYiwxLCEwLDIpfTt3YShwdSxndSk7cHUucHJvdG90eXBlLks9ZnVuY3Rpb24oYSl7aWYodGhpcy5aLmxlbmd0aCl7dmFyIGI9UShhLEguSi5Eayk7aWYoYiE9PXZvaWQgMClyZXR1cm4gYn1yZXR1cm4gZ3UucHJvdG90eXBlLksuY2FsbCh0aGlzLGEpfTtwdS5wcm90b3R5cGUuTj1mdW5jdGlvbihhLGIpe3ZhciBjPWZ1KGEpO2EudGFyZ2V0LmRlc3RpbmF0aW9uSWQmJihjLnRpZD1hLnRhcmdldC5kZXN0aW5hdGlvbklkKTtiLm1ldGhvZCBpbnN0YW5jZW9mIGt1P2MuZm10PSI4IjpiLm1ldGhvZCBpbnN0YW5jZW9mIGp1P2MuZm10PSI1IjpiLm1ldGhvZCBpbnN0YW5jZW9mIGl1JiYoYy5mbXQ9IjMiKTtyZXR1cm4gY307cHUucHJvdG90eXBlLnlhPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5OKGEsYik7cmV0dXJuIj8iK09iamVjdC5rZXlzKGMpLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gZCsKIj0iK2NbZF19KS5qb2luKCImIil9O3B1LnByb3RvdHlwZS5IPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLnlhKGEsYiksZT17fTtpZihiLm1ldGhvZCBpbnN0YW5jZW9mIGt1KXtlLkdiPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sbGQpO2lmKHRoaXMuZW5kcG9pbnQ9PT01OHx8dGhpcy5lbmRwb2ludD09PTU3KWUuR2IubWV0aG9kPSJHRVQiO3RoaXMuZW5kcG9pbnQhPT00NXx8cXUuSyhhKXx8KGUuR2IuY3JlZGVudGlhbHM9Im9taXQiLGQrPSImZ2FwLnVjZmI9MSIpfWMoZCxlKX07dmFyIHF1PW5ldyBwdSg0NSkscnU9bmV3IHB1KDQ1LFtdKSxzdT1uZXcgcHUoNDYsW10pLHR1PWZ1bmN0aW9uKCl7cHUuY2FsbCh0aGlzLDY5KX07d2EodHUscHUpO3R1LnByb3RvdHlwZS5pc1N1cHBvcnRlZD1mdW5jdGlvbihhKXt2YXIgYj1NKDQ3NCkmJighIVIoYSwiX2dzaWQiKXx8ISFRKGEsSC5KLlhnKSksYz1SKGEsRi5ELkhkKSE9PSIxIiYmKCEhUihhLCJnY2xpZCIpfHwKISFSKGEsImRjbGlkIil8fCEhUihhLCJnY2xzcmMiKXx8ISFSKGEsImF1aWQiKSk7cmV0dXJuIGJ8fGN9O3R1LnByb3RvdHlwZS5OPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZnUoYSksZD1scChhLGMpfHx7fTtPYmplY3Qua2V5cyhkKS5sZW5ndGg+MCYmKGIubWV0aG9kIGluc3RhbmNlb2Yga3U/ZC5mbXQ9IjgiOmIubWV0aG9kIGluc3RhbmNlb2YganU/ZC5mbXQ9IjUiOmIubWV0aG9kIGluc3RhbmNlb2YgaXUmJihkLmZtdD0iMyIpKTtyZXR1cm4gZH07dmFyIHV1PW5ldyB0dSx2dT1mdW5jdGlvbigpe3B1LmNhbGwodGhpcyw0NSl9O3dhKHZ1LHB1KTt2dS5wcm90b3R5cGUuUj1mdW5jdGlvbigpe3JldHVybiBYaigpKyIvZy9kL2NjbS9jb2xsZWN0In07dnUucHJvdG90eXBlLk49ZnVuY3Rpb24oYSxiKXt2YXIgYz1wdS5wcm90b3R5cGUuTi5jYWxsKHRoaXMsYSxiKTtjWyJnYXAuMXBmYiJdPSIxIjtyZXR1cm4gY307dmFyIHd1PWZ1bmN0aW9uKGEpe3B1LmNhbGwodGhpcyxhLFsiYWRfc3RvcmFnZSIsCiJhZF91c2VyX2RhdGEiXSl9O3dhKHd1LHB1KTt3dS5wcm90b3R5cGUuTj1mdW5jdGlvbihhLGIpe3ZhciBjPXB1LnByb3RvdHlwZS5OLmNhbGwodGhpcyxhLGIpO3JldHVybiBocChjKX07dmFyIHh1PW5ldyB3dSg1OCkseXU9bmV3IHd1KDU3KSx6dT1mdW5jdGlvbigpe307d2EoenUsb3UpO3p1LnByb3RvdHlwZS5IPWZ1bmN0aW9uKGEpe3ZhciBiPXF1LksoYSksYz1iP3F1OnN1LGQ9W3tlbmRwb2ludDpjLG1ldGhvZDpuZCgpP251Om11fSx7ZW5kcG9pbnQ6YyxtZXRob2Q6bHV9XTtiP00oNTE3KSYmSWYoNDcpJiZkLnB1c2goe2VuZHBvaW50Om5ldyB2dSxtZXRob2Q6bnV9KTpNKDYwMCkmJmQucHVzaCh7ZW5kcG9pbnQ6cnUsbWV0aG9kOm51fSk7cmV0dXJuIGR9O3p1LnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9ISFRKGEsSC5KLnZkKSxkPVIoYSxGLkQuUGQpPT09IjEiLGU9UihhLEYuRC5IZCk9PT0iMSIsZj1xdS5LKGEpLGc9YyYmZCYmIWUmJmY7aWYoZyl7dmFyIGg9ClFjKCl8fE9jKCk/eHU6eXU7Yi5wdXNoKFt7ZW5kcG9pbnQ6aCxtZXRob2Q6bnV9LHtlbmRwb2ludDpoLG1ldGhvZDpsdX1dKX1mJiYoZ3x8UShhLEguSi5oZCkpJiZiLnB1c2goW3tlbmRwb2ludDp1dSxtZXRob2Q6bmQoKT9udTpsdX1dKTtyZXR1cm4gYn07dmFyIEF1PW5ldyB6dTt2YXIgVD17Vzp7Sms6MSxuajoyLEZrOjMsbWw6NCxHazo1LHlkOjYsa2w6NyxNcTo4LHFuOjksSGs6MTAsSWs6MTEsRmg6MTIsRG06MTMsQW06MTQsQ206MTUsem06MTYsQm06MTcseW06MTgsVG86MTkseHE6MjAseXE6MjEsZmo6MjIsdW46MjQsT206MjUsU2s6MjYsVGs6MjcsUms6MjgsVWs6Mjkscmo6MzAsT2s6MzEsWm86MzJ9fTtULldbVC5XLkprXT0iQUxMT1dfSU5URVJFU1RfR1JPVVBTIjtULldbVC5XLm5qXT0iU0VSVkVSX0NPTlRBSU5FUl9VUkwiO1QuV1tULlcuRmtdPSJBRFNfREFUQV9SRURBQ1RJT04iO1QuV1tULlcubWxdPSJDVVNUT01FUl9MSUZFVElNRV9WQUxVRSI7VC5XW1QuVy5Ha109IkFMTE9XX0NVU1RPTV9TQ1JJUFRTIjtULldbVC5XLnlkXT0iQU5ZX0NPT0tJRV9QQVJBTVMiO1QuV1tULlcua2xdPSJDT09LSUVfRVhQSVJFUyI7VC5XW1QuVy5NcV09IkxFR0FDWV9FTkhBTkNFRF9DT05WRVJTSU9OX0pTX1ZBUklBQkxFIjtULldbVC5XLnFuXT0iUkVTVFJJQ1RFRF9EQVRBX1BST0NFU1NJTkciOwpULldbVC5XLkhrXT0iQUxMT1dfRElTUExBWV9GRUFUVVJFUyI7VC5XW1QuVy5Ja109IkFMTE9XX0dPT0dMRV9TSUdOQUxTIjtULldbVC5XLkZoXT0iR0VORVJBVEVEX1RSQU5TQUNUSU9OX0lEIjtULldbVC5XLkRtXT0iRkxPT0RMSUdIVF9DT1VOVElOR19NRVRIT0RfVU5LTk9XTiI7VC5XW1QuVy5BbV09IkZMT09ETElHSFRfQ09VTlRJTkdfTUVUSE9EX1NUQU5EQVJEIjtULldbVC5XLkNtXT0iRkxPT0RMSUdIVF9DT1VOVElOR19NRVRIT0RfVU5JUVVFIjtULldbVC5XLnptXT0iRkxPT0RMSUdIVF9DT1VOVElOR19NRVRIT0RfUEVSX1NFU1NJT04iO1QuV1tULlcuQm1dPSJGTE9PRExJR0hUX0NPVU5USU5HX01FVEhPRF9UUkFOU0FDVElPTlMiO1QuV1tULlcueW1dPSJGTE9PRExJR0hUX0NPVU5USU5HX01FVEhPRF9JVEVNU19TT0xEIjtULldbVC5XLlRvXT0iQURTX09HVF9WMV9VU0FHRSI7VC5XW1QuVy54cV09IkZPUk1fSU5URVJBQ1RJT05fUEVSTUlTU0lPTl9ERU5JRUQiOwpULldbVC5XLnlxXT0iRk9STV9TVUJNSVRfUEVSTUlTU0lPTl9ERU5JRUQiO1QuV1tULlcuZmpdPSJNSUNST1RBU0tfTk9UX1NVUFBPUlRFRCI7VC5XW1QuVy51bl09IlNFVF9FTkNSWVBURURfREFUQV9UT19DQUNIRSI7VC5XW1QuVy5PbV09IkdFVF9FTkNSWVBURURfREFUQV9GUk9NX0NBQ0hFIjtULldbVC5XLlNrXT0iQ09ORklHX0RFVEVDVEVEX1dJVEhfTk9fUEFSQU0iO1QuV1tULlcuVGtdPSJDT05GSUdfREVURUNURURfV0lUSF9QQVJBTSI7VC5XW1QuVy5Sa109IkNPTkZJR19DT05TRU5UX1NFVF9CRUZPUkUiO1QuV1tULlcuVWtdPSJDT05GSUdfU0VUX1VTRURfQkVGT1JFIjtULldbVC5XLnJqXT0iU0hBRE9XX0RPTV9BVVRPX1BJSSI7VC5XW1QuVy5Pa109IkNDRF9VU0VSX0RBVEFfV0VCX09OX0NPTkZJRyI7VC5XW1QuVy5ab109IkJMRU5ERURfVVNFUl9EQVRBIjt2YXIgQnU9e30sQ3U9KEJ1W0YuRC51aV09VC5XLkprLEJ1W0YuRC5kZF09VC5XLm5qLEJ1W0YuRC55Y109VC5XLm5qLEJ1W0YuRC5tYl09VC5XLkZrLEJ1W0YuRC5HZV09VC5XLm1sLEJ1W0YuRC5yaV09VC5XLkdrLEJ1W0YuRC5KZF09VC5XLnlkLEJ1W0YuRC5uYl09VC5XLnlkLEJ1W0YuRC5MYl09VC5XLnlkLEJ1W0YuRC5JZF09VC5XLnlkLEJ1W0YuRC52Y109VC5XLnlkLEJ1W0YuRC5UYl09VC5XLnlkLEJ1W0YuRC5DYl09VC5XLmtsLEJ1W0YuRC5XYl09VC5XLnFuLEJ1W0YuRC5oaF09VC5XLkhrLEJ1W0YuRC5TY109VC5XLklrLEJ1KSxEdT17fSxFdT0oRHUudW5rbm93bj1ULlcuRG0sRHUuc3RhbmRhcmQ9VC5XLkFtLER1LnVuaXF1ZT1ULlcuQ20sRHUucGVyX3Nlc3Npb249VC5XLnptLER1LnRyYW5zYWN0aW9ucz1ULlcuQm0sRHUuaXRlbXNfc29sZD1ULlcueW0sRHUpO3ZhciBGdT1mdW5jdGlvbihhLGIsYyl7Yz1jPT09dm9pZCAwPyExOmM7c2IoIkdUQUdfRVZFTlRfRkVBVFVSRV9DSEFOTkVMIixiKTtjJiYoYS5IW2JdPSEwKX0sdmI9bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPVtdfTtmdW5jdGlvbiBHdShhKXtGdSh2YixhLCExKX1mdW5jdGlvbiBIdShhLGIpe3ZhciBjPWI9PT12b2lkIDA/ITE6YixkPXZiO2M9Yz09PXZvaWQgMD8hMTpjO2Zvcih2YXIgZT1PYmplY3Qua2V5cyhhKSxmPW0oT2JqZWN0LmtleXMoQ3UpKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9Zy52YWx1ZTtlLmluY2x1ZGVzKGgpJiZGdShkLEN1W2hdLGMpfX07ZnVuY3Rpb24gSXUoYSxiKXthP2EudGhlbihiKTpiKHZvaWQgMCl9ZnVuY3Rpb24gSnUoYSl7cmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChhKS50aGVuKGZ1bmN0aW9uKGIpe3JldHVybiBiLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gYy5zdGF0dXM9PT0iZnVsZmlsbGVkIn0pLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy52YWx1ZX0pfSl9ZnVuY3Rpb24gS3UoKXt2YXIgYSxiO3JldHVybntwcm9taXNlOm5ldyBQcm9taXNlKGZ1bmN0aW9uKGMsZCl7YT1jO2I9ZH0pLHJlc29sdmU6YSxyZWplY3Q6Yn19O2Z1bmN0aW9uIEx1KGEsYixjLGQsZSxmKXt2YXIgZz1jLnNsaWNlKCksaDtkPT1udWxsfHwoaD1kLnV2KT09bnVsbHx8aC5jYWxsKGQsYSxiLGMsZSk7dmFyIGw9S3UoKSxuPWwucHJvbWlzZSxwPWwucmVzb2x2ZSxxPVtdLHI9ZnVuY3Rpb24oKXtwKHEpO3ZhciB1O2Q9PW51bGx8fCh1PWQuUnMpPT1udWxsfHx1LmNhbGwoZCxhLGIsYyxlLHEpfSx0PWZ1bmN0aW9uKCl7dmFyIHU9Zy5zaGlmdCgpO3U/dS5tZXRob2QuaXNTdXBwb3J0ZWQoKT9NdShhLGIsdS5lbmRwb2ludCxkLHEsdS5tZXRob2QsZSxmLHQscik6dCgpOnIoKX07dCgpO3JldHVybiBufQpmdW5jdGlvbiBNdShhLGIsYyxkLGUsZixnLGgsbCxuKXt2YXIgcD1jLlIoYSkscT17dGs6YixlbmRwb2ludDpjLGlzUHJpbWFyeTpnLHNiOnZvaWQgMCxwazpmLGp0Ont9fSxyPSExLHQ9ZnVuY3Rpb24oeixDKXtpZihyKVAoMTg3KTtlbHNlIGlmKHI9ITAsIXUpe3ZhciBEPUN8fHt9LEk9RC5ib2R5LEc9RC5HYixOPUQuYWY7Qz1PYmplY3QuZnJlZXplKG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sST97Ym9keTpJfTp7fSxHP3tHYjpHfTp7fSxOP3thZjpOfTp7fSkpO2lmKEkmJiFmLkgoKSl4KCksbCgpO2Vsc2V7dmFyIFM9TnUoeiksVz1wWzBdPT09Ii8iPyIiK3ArUzoiaHR0cHM6Ly8iK3ArUztxLnNiPVc7cS5qdD1DO3ZhciBlYTtkPT1udWxsfHwoZWE9ZC5Tcyk9PW51bGx8fGVhLmNhbGwoZCxhLG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30scSkpO3ZhciBqYT17ZGVzdGluYXRpb25JZDphLnRhcmdldC5kZXN0aW5hdGlvbklkLGVuZHBvaW50OmMuZW5kcG9pbnQsCmV2ZW50SWQ6YS5NLmV2ZW50SWQscHJpb3JpdHlJZDphLk0ucHJpb3JpdHlJZH07Zi5SPT09dm9pZCAwfHxjLmZhIT09MiYmKGMuZmEhPT0xfHxlLmxlbmd0aCl8fGtuLnJlZ2lzdGVyKGphLGYuUixXKTt2YXIgZmE9ZnVuY3Rpb24oZGEsbWEpe3goKTtpZihxLnN0YXR1cyE9PXZvaWQgMClyZXR1cm4gUCgxOTIpLCExO3Euc3RhdHVzPWRhO2UucHVzaChxKTt2YXIgUGE7ZD09bnVsbHx8KFBhPWQudW8pPT1udWxsfHxQYS5jYWxsKGQsYSxuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHEpLG1hKTtyZXR1cm4hMH0sc2E9e0ZvOmphLHJkOmZ1bmN0aW9uKCl7ZmEoMikmJmwoKX0sb25GYWlsdXJlOmZ1bmN0aW9uKCl7ZmEoMykmJmwoKX0scGU6ZnVuY3Rpb24oZGEpe2ZhKGRhLnN0YXR1cz09PTA/MTpkYS5vaz8wOjMsZGEpJiZuKCl9LGpmOmZ1bmN0aW9uKCl7ZmEoMSkmJm4oKX19O091KGMsYSxXLFMsSSk7Zi5zZW5kUmVxdWVzdChzYSxXLG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3QsCnt9LEkmJntib2R5Okl9LEcmJntHYjpHfSxOJiZ7YWY6Tn0pKX19fSx1PSExLHYseD1mdW5jdGlvbigpe3YhPT12b2lkIDAmJihBLmNsZWFyVGltZW91dCh2KSx2PXZvaWQgMCl9O00oNTc0KSYmKHY9QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dj12b2lkIDA7dT0hMDtpZihxLnN0YXR1cz09PXZvaWQgMCl7cS5zdGF0dXM9NDtxLnNiPT09dm9pZCAwJiYocS5zYj0iW2ZhaWxlZCB0byBidWlsZF0gIitwKTtlLnB1c2gocSk7dmFyIHo7ZD09bnVsbHx8KHo9ZC51byk9PW51bGx8fHouY2FsbChkLGEsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxxKSx2b2lkIDApO2woKX19LDVFMykpO3ZhciB5PXtJYzpwLG1ldGhvZDpmLHl2OmUsaXNQcmltYXJ5OmcsQ3Q6aH07dHJ5e2MuSChhLHksdCl9Y2F0Y2goeil7eCgpLFAoMTg4KSxsKCl9fQpmdW5jdGlvbiBPdShhLGIsYyxkLGUpe2lmKGEuamEpe3ZhciBmPWIudGFyZ2V0LmRlc3RpbmF0aW9uSWQsZz1hLmVuZHBvaW50O2lmKGc9PT00NXx8Zz09PTQ2fHxnPT09Njl8fGc9PT01OHx8Zz09PTU3KXt2YXIgaD0vWz8mXXRpZHM9KFteJl0rKS8uZXhlYyhkKTtmPWg/ZGVjb2RlVVJJQ29tcG9uZW50KGhbMV0pLnNwbGl0KCJ+Iik6W2ZdfU1sKHt0YXJnZXRJZDpmLHJlcXVlc3Q6bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSx7dXJsOmMscGFyYW1ldGVyRW5jb2Rpbmc6YS5wYXJhbWV0ZXJFbmNvZGluZyxlbmRwb2ludDphLmVuZHBvaW50fSxlP3twb3N0Qm9keTplfTp7fSkscWI6e2V2ZW50SWQ6Yi5NLmV2ZW50SWQscHJpb3JpdHlJZDpiLk0ucHJpb3JpdHlJZH0sRmo6e2V2ZW50SWQ6UShiLEguSi51ZikscHJpb3JpdHlJZDpRKGIsSC5KLnZmKX19KX19CmZ1bmN0aW9uIE51KGEpe3JldHVybiBhJiZhIT09Ij8iP2FbMF0hPT0iPyI/Ij8iLmNvbmNhdChhKTphOiIifTtmdW5jdGlvbiBQdShhLGIsYyxkLGUpe3ZhciBmO2U9PW51bGx8fChmPWUudnYpPT1udWxsfHxmLmNhbGwoZSxhLGIpO2lmKCFjLmxlbmd0aCl7dmFyIGc7ZT09bnVsbHx8KGc9ZS5Ucyk9PW51bGx8fGcuY2FsbChlLGEsYixbXSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSl9dmFyIGg9W10sbD17dGs6YixtazpjLGprOmR9O2gucHVzaChMdShhLGIsYyxlLCEwLGwpKTtmb3IodmFyIG49bShkKSxwPW4ubmV4dCgpOyFwLmRvbmU7cD1uLm5leHQoKSloLnB1c2goTHUoYSxiLHAudmFsdWUsZSwhMSxsKSk7cmV0dXJuIEp1KGgpLnRoZW4oZnVuY3Rpb24ocSl7Zm9yKHZhciByPVtdLHQ9bShxKSx1PXQubmV4dCgpOyF1LmRvbmU7dT10Lm5leHQoKSlyLnB1c2guYXBwbHkocix3KHUudmFsdWUpKTt2YXIgdjtlPT1udWxsfHwodj1lLlRzKT09bnVsbHx8di5jYWxsKGUsYSxiLHIpO3JldHVybiByfSl9O2Z1bmN0aW9uIFF1KGEsYil7dmFyIGM9T2EuYXBwbHkoMixhcmd1bWVudHMpLGQ7Yj09bnVsbHx8KGQ9Yi53dik9PW51bGx8fGQuY2FsbChiLGEsYyk7Zm9yKHZhciBlPVtdLGY9bShjKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSllLnB1c2goUnUoYSxnLnZhbHVlKSk7Zm9yKHZhciBoPVtdLGw9bShlKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl7dmFyIHA9bi52YWx1ZTtoLnB1c2goUHUoYSxwLnRrLHAubWsscC5qayxiKSl9SnUoaCkudGhlbihmdW5jdGlvbihxKXtmb3IodmFyIHI9W10sdD1tKHEpLHU9dC5uZXh0KCk7IXUuZG9uZTt1PXQubmV4dCgpKXIucHVzaC5hcHBseShyLHcodS52YWx1ZSkpO3ZhciB2O2I9PW51bGx8fCh2PWIuUXMpPT1udWxsfHx2LmNhbGwoYixhLGMscil9KX0KZnVuY3Rpb24gUnUoYSxiKXt2YXIgYz1mdW5jdGlvbihmKXtyZXR1cm4gZi5tZXRob2QuaXNTdXBwb3J0ZWQoKSYmZi5lbmRwb2ludC5pc1N1cHBvcnRlZChhKSYmZi5lbmRwb2ludC5LKGEpfSxkPShiLkgoYSl8fFtdKS5maWx0ZXIoYyksZT1bXTtkLmxlbmd0aCYmKGU9KGIuSyhhKXx8W10pLm1hcChmdW5jdGlvbihmKXtyZXR1cm4gZi5maWx0ZXIoYyl9KS5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIGYubGVuZ3RoPjB9KSk7cmV0dXJue3RrOmIsbWs6ZCxqazplfX07CnZhciBTdT1mdW5jdGlvbihhLGIpe2lmKE0oNTE3KSYmSWYoNDcpJiZhPT09NDUpcmV0dXJuIFhqKCkrIi9nL2QvY2NtL2NvbGxlY3Q/IitiLnNwbGl0KCI/IilbMV0rIiZnYXAuMXBmYj0xIn0sV3U9ZnVuY3Rpb24oKXt2YXIgYT1hbCgzMCxmdW5jdGlvbigpe3JldHVybltdfSk7aWYoYS5sZW5ndGgpe2Zvcih2YXIgYj17fSxjPW0oYSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWUsZj1UdShlLmtlLCJhcHZjIiksZz1UdShlLmtlLCJ0ZnQiKSxoPVR1KGUua2UsInRmZCIpLGw9VHUoZS5rZSwidGlkIiksbj1ObShlLmVuZHBvaW50LGUua2UpLHA9YltuXT1iW25dfHx7eGs6W10sWmg6W119O3AuWmgucHVzaChlKTtsPyhwLnhrLnB1c2gobCkscC51ZHx8KHAudWQ9bCkpOnAueGsucHVzaCgiIik7Zj09PSIxIiYmKHAuUW49ITApO2lmKGd8fGgpcC5Obj0hMH1hLmxlbmd0aD0wO2Zvcih2YXIgcT1tKE9iamVjdC5rZXlzKGIpKSxyPXEubmV4dCgpLHQ9e307IXIuZG9uZTt0PQp7eWs6dm9pZCAwfSxyPXEubmV4dCgpKXt2YXIgdT1yLnZhbHVlLHY9Ylt1XTt0LnlrPXYueGs7dmFyIHg9dC55ay5maWx0ZXIoZnVuY3Rpb24oRCl7cmV0dXJuIGZ1bmN0aW9uKEksRyl7cmV0dXJuIEQueWsuaW5kZXhPZihJKT09PUd9fSh0KSkuZmlsdGVyKGZ1bmN0aW9uKEQpe3JldHVybiEhRH0pO2lmKE0oNDI3KSl7dmFyIHk9VXUodix4KTtRdSh5LHZvaWQgMCxBdSl9ZWxzZXt2YXIgej11KyImYXB2Yz0iKyh2LlFuPyIxIjoiMCIpO3gubGVuZ3RoJiYoeis9IiZ0aWRzPSIreC5qb2luKCJ+IikpO3YudWQmJih6Kz0iJnRpZD0iK3YudWQpO2lmKHYuTm4pe3orPSImdGZ0PSIrU3RyaW5nKE5iKCkpO3ZhciBDPXBkKCk7QyE9PXZvaWQgMCYmKHorPSImdGZkPSIrU3RyaW5nKE1hdGgucm91bmQoQykpKX1WdSh2LlpoWzBdLmV2ZW50LHosdi5aaFswXS5lbmRwb2ludCx4Lmxlbmd0aD94OlsiIl0pfX19fSxUdT1mdW5jdGlvbihhLGIpe3ZhciBjPWFbYl07aWYoYyE9PXZvaWQgMClyZXR1cm4gZGVsZXRlIGFbYl0sCmN9LFZ1PWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXtkZXN0aW5hdGlvbklkOmEudGFyZ2V0LmRlc3RpbmF0aW9uSWQsZW5kcG9pbnQ6YyxldmVudElkOmEuTS5ldmVudElkLHByaW9yaXR5SWQ6YS5NLnByaW9yaXR5SWR9LGY9ZnVuY3Rpb24obCxuKXt2YXIgcD1iK1h1KGwpO1RsKHAsYSxjLGQpO3JldHVybiBuKHApfTtpZihuZCgpKXt2YXIgZz1mdW5jdGlvbigpe30saD1TdShjLGIpO2ghPT12b2lkIDAmJihnPWZ1bmN0aW9uKCl7WW4oZSxoK1h1KDgpLHZvaWQgMCx7UWc6ITB9KX0pO2YoOCxmdW5jdGlvbihsKXtZbihlLGwsdm9pZCAwLHtRZzohMH0sZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7WmMoYitYdSgzKSxmdW5jdGlvbigpe30sZyl9KX0pfWVsc2UgZig1LGZ1bmN0aW9uKGwpe3JldHVybiBXbihlLGwpfSl8fFpjKGIrWHUoMykpfSxVdT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuWmhbMF0sZD17Il8mYXB2YyI6YS5Rbj8iMSI6IjAifTtiLmxlbmd0aD4wJiYoZFsiXyZ0aWRzIl09CmIuam9pbigifiIpKTtpZihhLk5uKXtkWyJfJnRmdCJdPVN0cmluZyhOYigpKTt2YXIgZT1wZCgpO2UhPT12b2lkIDAmJihkWyJfJnRmZCJdPVN0cmluZyhNYXRoLnJvdW5kKGUpKSl9cmV0dXJuIFl1KGMuZXZlbnQsYS51ZHx8IiIsZCl9LFl1PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGEudGFyZ2V0LHtkZXN0aW5hdGlvbklkOmJ9KSxlPVp1KGEse3RhcmdldDpkfSk7Ynx8VShlLEYuRC5RZSk7Zm9yKHZhciBmPW0oT2JqZWN0LmtleXMoYykpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1nLnZhbHVlO1UoZSxoLGNbaF0pfXJldHVybiBlfSxYdT1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSA4OmNhc2UgMzpjYXNlIDU6cmV0dXJuIiZmbXQ9IithO2RlZmF1bHQ6cmV0dXJuIiJ9fSwkdT1mdW5jdGlvbihhLGIpe2E9WnUoYSk7VihhLEguSi5EayxYbyhmcCkpO1R0KCkmJlUoYSwiXyZnY3MiLFV0KCkpOwpVKGEsIl8mZ2NkIixZdChhLk0pKTt2YXIgYz1YbyhmcCk/NDU6NDYsZD1mdW5jdGlvbigpe3ZhciBmPWIudGlkO2lmKE0oNDI3KSl7dmFyIGc9WXUoYSxmLGIpO1F1KGcsdm9pZCAwLEF1KX1lbHNle3ZhciBoPU5tKGMsYik7VnUoYSxoLGMsW2ZdKX19O2lmKHliKEEucXVldWVNaWNyb3Rhc2spKXt2YXIgZT1hbCgzMCxmdW5jdGlvbigpe3JldHVybltdfSk7aWYoZS5sZW5ndGg9PT0wKXRyeXtBLnF1ZXVlTWljcm90YXNrKFd1KX1jYXRjaChmKXtHdShULlcuZmopO2QoKTtyZXR1cm59Yj1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGIpO2UucHVzaCh7ZXZlbnQ6YSxrZTpiLGVuZHBvaW50OmN9KX1lbHNlIEd1KFQuVy5maiksZCgpfTt2YXIgWD17Vjp7TWs6ImNhbGxfY29udmVyc2lvbiIsemQ6ImNjbV9jb252ZXJzaW9uIixRazoiY29tbW9uX2F3Iix4YToiY29udmVyc2lvbiIsd3E6ImZsb29kbGlnaHQiLFlkOiJnYV9jb252ZXJzaW9uIixaZDoiZ2NwX3JlbWFya2V0aW5nIixLYToicGFnZV92aWV3Iix1YjoicmVtYXJrZXRpbmciLE9iOiJ1c2VyX2RhdGFfbGVhZCIsRmI6InVzZXJfZGF0YV93ZWIifX07ZnVuY3Rpb24gYnYoYSxiKXtiJiZHYihiLGZ1bmN0aW9uKGMsZCl7dHlwZW9mIGQhPT0ib2JqZWN0IiYmZCE9PXZvaWQgMCYmKGFbIjFwLiIrY109U3RyaW5nKGQpKX0pfTt2YXIgbXY9e05nOiJ2YWx1ZSIscGI6ImNvbnZlcnNpb25Db3VudCIsT2c6MX0sbnY9e05nOiJ0aW1lb3V0cyIscGI6InRpbWVvdXRzIixPZzowfSxvdj17Tmc6ImVvcENvdW50IixwYjoiZW5kT2ZQYWdlQ291bnQiLE9nOjB9LHB2PXtOZzoiZXJyb3JzIixwYjoiZXJyb3JzIixPZzowfSxxdj1bbXYsbnYscHYsb3ZdO2Z1bmN0aW9uIHJ2KGEsYil7Yj1iPT09dm9pZCAwPzE6YjtpZighc3YoYSkpcmV0dXJue307dmFyIGM9dHYocXYpLGQ9Y1thLnBiXTtpZihkPT09dm9pZCAwfHxkPT09LTEpcmV0dXJuIGM7dmFyIGU9e30sZj1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGMsKGVbYS5wYl09ZCtiLGUpKTtyZXR1cm4gdXYoZik/ZjpjfQpmdW5jdGlvbiB0dihhKXt2YXIgYjthOnt2YXIgYz1ucigiZ2NsX2N0ciIpO2lmKGMuZXJyb3I9PT0wJiZjLnZhbHVlJiZ0eXBlb2YgYy52YWx1ZT09PSJvYmplY3QiKXt2YXIgZD1jLnZhbHVlO3RyeXtiPSJ2YWx1ZSJpbiBkJiZ0eXBlb2YgZC52YWx1ZT09PSJvYmplY3QiP2QudmFsdWU6dm9pZCAwO2JyZWFrIGF9Y2F0Y2gocCl7fX1iPXZvaWQgMH1mb3IodmFyIGU9YixmPXt9LGc9bShhKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIGw9aC52YWx1ZTtpZihlJiZzdihsKSl7dmFyIG49ZVtsLk5nXTtuPT09dm9pZCAwfHxOdW1iZXIuaXNOYU4obik/ZltsLnBiXT0tMTpmW2wucGJdPU51bWJlcihuKX1lbHNlIGZbbC5wYl09LTF9cmV0dXJuIGZ9CmZ1bmN0aW9uIHV2KGEsYil7Yj1ifHx7fTtmb3IodmFyIGM9TmIoKSxkPXVxKGIsYywhMCksZT17fSxmPW0ocXYpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1nLnZhbHVlLGw9YVtoLnBiXTtsIT09dm9pZCAwJiZsIT09LTEmJihlW2guTmddPWwpfWUuY3JlYXRpb25UaW1lTXM9YztyZXR1cm4ga3IoImdjbF9jdHIiLHt2YWx1ZTplLGV4cGlyZXM6TnVtYmVyKGQuZXhwaXJlcyl9KT09PTA/ITA6ITF9ZnVuY3Rpb24gc3YoYSl7cmV0dXJuIEJsKFsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdKT8hYS5mdHx8WWYoYS5mdCk6ITF9ZnVuY3Rpb24gdnYoYSl7cmV0dXJuIEJsKFsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdKT8hYS5Bc3x8WWYoYS5Bcyk6ITF9O2Z1bmN0aW9uIHd2KCl7aWYoeHYoKSl7dmFyIGE9bnIoImxhc3RfY29udnMiKTtpZihhLmVycm9yPT09MCYmYS52YWx1ZSYmdHlwZW9mIGEudmFsdWU9PT0ib2JqZWN0Iil7dmFyIGI9YS52YWx1ZTtpZihiLnZhbHVlJiZBcnJheS5pc0FycmF5KGIudmFsdWUpKXt2YXIgYz1iLnZhbHVlO2lmKCEoYy5sZW5ndGg+MSkpe2Zvcih2YXIgZD1bXSxlPW0oYyksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWU7aWYodHlwZW9mIGchPT0ib2JqZWN0Inx8Zz09PW51bGx8fHR5cGVvZiBnLnJhbmRvbSE9PSJudW1iZXIifHx0eXBlb2YgZy5sYWJlbCE9PSJzdHJpbmcifHxnLmxhYmVsLmxlbmd0aD4yMDApcmV0dXJuO2QucHVzaCh7cmFuZG9tOmcucmFuZG9tLGxhYmVsOmcubGFiZWx9KX1yZXR1cm4gZH19fX19CmZ1bmN0aW9uIHl2KGEsYil7IXh2KCl8fGEubGVuZ3RoPjF8fGEubGVuZ3RoPT09MSYmYVswXS5sYWJlbC5sZW5ndGg+MjAwfHwoYj1ifHx7fSxrcigibGFzdF9jb252cyIse3ZhbHVlOmEsZXhwaXJlczpOdW1iZXIodXEoYikuZXhwaXJlcyl9KSl9ZnVuY3Rpb24geHYoKXtyZXR1cm4gQmwoWyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl0pJiZZZigxMSl9O2Z1bmN0aW9uIHp2KGEpe3ZhciBiPU1hdGgucm91bmQoTWF0aC5yYW5kb20oKSoyMTQ3NDgzNjQ3KTtyZXR1cm4gYT9TdHJpbmcoYl5uZyhhKSYyMTQ3NDgzNjQ3KTpTdHJpbmcoYil9ZnVuY3Rpb24gQXYoYSl7cmV0dXJuW3p2KGEpLE1hdGgucm91bmQoTmIoKS8xRTMpXS5qb2luKCIuIil9ZnVuY3Rpb24gQnYoYSxiLGMsZCxlKXt2YXIgZj1ycShiKSxnO3JldHVybihnPWdxKGEsZixzcShjKSxkLGUpKT09bnVsbD92b2lkIDA6Zy5Dcn07dmFyIEN2PVsiMSJdLER2PXt9LEV2PXt9O2Z1bmN0aW9uIEZ2KGEpe3JldHVybiBFdltHdihhKV19ZnVuY3Rpb24gSHYoYSxiKXtiPWI9PT12b2lkIDA/ITA6Yjt2YXIgYz1HdihhLnByZWZpeCk7aWYoRHZbY10pSXYoYSksSnYoYSk7ZWxzZSBpZihLdihjLGEucGF0aCxhLmRvbWFpbikpe3ZhciBkPUZ2KGEucHJlZml4KXx8e2lkOnZvaWQgMCxrYzp2b2lkIDB9O2ImJkx2KGEsZCk7SXYoYSk7SnYoYSl9ZWxzZXt2YXIgZT1UaigiYXVpZGRjIik7aWYoZSlzYigiVEFHR0lORyIsMTcpLER2W2NdPWU7ZWxzZSBpZihiKXt2YXIgZj1HdihhLnByZWZpeCksZz1BdigpO012KGYsZyxhKTtLdihjLGEucGF0aCxhLmRvbWFpbik7SXYoYSwhMCk7SnYoYSwhMCl9fX0KZnVuY3Rpb24gSXYoYSxiKXsoYj09PXZvaWQgMD8wOmIpJiZzdihtdikmJm9yKCJnY2xfY3RyIik7aWYodnYobXYpJiZ0dihbbXZdKVttdi5wYl09PT0tMSl7Zm9yKHZhciBjPXt9LGQ9KGNbbXYucGJdPTAsYyksZT1tKHF2KSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZTtnIT09bXYmJnZ2KGcpJiYoZFtnLnBiXT0wKX11dihkLGEpfX1mdW5jdGlvbiBKdihhLGIpeyhiPT09dm9pZCAwPzA6YikmJnh2KCkmJm9yKCJsYXN0X2NvbnZzIik7IUJsKFsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdKXx8IVlmKDEyKXx8d3YoKXx8eXYoW10sYSl9CmZ1bmN0aW9uIEx2KGEsYil7dmFyIGM9R3YoYS5wcmVmaXgpLGQ9RHZbY107aWYoZCl7dmFyIGU9ZC5zcGxpdCgiLiIpO2lmKGUubGVuZ3RoPT09Mil7dmFyIGY9TnVtYmVyKGVbMV0pfHwwO2lmKGYpe3ZhciBnPWQ7WWYoMTkpJiZiLmZpP2c9ZCsiLiIrKGIuc2Vzc2lvbklkfHwiLS4tIikrIi4iKyhiLmtjP2Iua2M6TWF0aC5mbG9vcihOYigpLzFFMykpKyIuIitiLmZpKyIuIisoYi5MYz9iLkxjOk1hdGguZmxvb3IoTmIoKS8xRTMpKTpiLnNlc3Npb25JZCYmKGc9ZCsiLiIrYi5zZXNzaW9uSWQrIi4iKyhiLmtjP2Iua2M6TWF0aC5mbG9vcihOYigpLzFFMykpKTtNdihjLGcsYSxmKjFFMyl9fX19ZnVuY3Rpb24gTXYoYSxiLGMsZCl7dmFyIGU7ZT1bIjEiLHRxKGMuZG9tYWluLGMucGF0aCksYl0uam9pbigiLiIpO3ZhciBmPXVxKGMsZCk7Zi5NYz1OdigpO29xKGEsZSxmKX0KZnVuY3Rpb24gS3YoYSxiLGMpe3ZhciBkPUJ2KGEsYixjLEN2LE52KCkpO2lmKCFkKXJldHVybiExO092KGEsZCk7cmV0dXJuITB9ZnVuY3Rpb24gT3YoYSxiKXt2YXIgYz1iLnNwbGl0KCIuIik7aWYoYy5sZW5ndGg9PT0zKUV2W2FdPXtzZXNzaW9uSWQ6Y1swXSsiLiIrY1sxXSxrYzpOdW1iZXIoY1syXSl8fDAsTGM6MH07ZWxzZSBpZihjLmxlbmd0aD49MiYmKER2W2FdPWNbMF0rIi4iK2NbMV0sYy5zaGlmdCgpLGMuc2hpZnQoKSxjLmxlbmd0aD49Mykpe3ZhciBkPXtzZXNzaW9uSWQ6Y1swXT09PSItIj92b2lkIDA6Y1swXSsiLiIrY1sxXSxrYzpOdW1iZXIoY1syXSl8fDAsTGM6MH07aWYoWWYoMTkpJiZjLmxlbmd0aD49Nil7dmFyIGU9Y1szXSsiLiIrY1s0XSxmPU51bWJlcihjWzVdKXx8MDtlJiZmIT09MCYmKGQuZmk9ZSxkLkxjPWYpfUV2W2FdPWR9fWZ1bmN0aW9uIEd2KGEpe3JldHVybihhfHwiX2djbCIpKyJfYXUifQpmdW5jdGlvbiBQdihhKXtmdW5jdGlvbiBiKCl7QmwoYykmJmEoKX12YXIgYz1OdigpO0hsKGZ1bmN0aW9uKCl7YigpO0JsKGMpfHxJbChiLGMpfSxjKX1mdW5jdGlvbiBRdihhKXt2YXIgYj1VcSghMCksYz1HdihhLnByZWZpeCk7UHYoZnVuY3Rpb24oKXt2YXIgZD1iW2NdO2lmKGQpe092KGMsZCk7dmFyIGU9TnVtYmVyKER2W2NdLnNwbGl0KCIuIilbMV0pKjFFMztpZihlKXtzYigiVEFHR0lORyIsMTYpO3ZhciBmPXVxKGEsZSk7Zi5NYz1OdigpO3ZhciBnPVsiMSIsdHEoYS5kb21haW4sYS5wYXRoKSxkXS5qb2luKCIuIik7b3EoYyxnLGYpfX19KX1mdW5jdGlvbiBSdihhLGIsYyxkLGUpe2U9ZXx8e307dmFyIGY9ZnVuY3Rpb24oKXt2YXIgZz17fSxoPUJ2KGEsZS5wYXRoLGUuZG9tYWluLEN2LE52KCkpO2gmJihnW2FdPWgpO3JldHVybiBnfTtQdihmdW5jdGlvbigpe2FyKGYsYixjLGQpfSl9CmZ1bmN0aW9uIE52KCl7cmV0dXJuWyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl19O3ZhciBWdj0iZW1haWwgZW1haWxfYWRkcmVzcyBzaGEyNTZfZW1haWxfYWRkcmVzcyBwaG9uZV9udW1iZXIgc2hhMjU2X3Bob25lX251bWJlciBmaXJzdF9uYW1lIGxhc3RfbmFtZSIuc3BsaXQoIiAiKSxXdj0iZmlyc3RfbmFtZSBzaGEyNTZfZmlyc3RfbmFtZSBsYXN0X25hbWUgc2hhMjU2X2xhc3RfbmFtZSBzdHJlZXQgc2hhMjU2X3N0cmVldCBjaXR5IHJlZ2lvbiBjb3VudHJ5IHBvc3RhbF9jb2RlIi5zcGxpdCgiICIpO2Z1bmN0aW9uIFh2KGEsYil7aWYoIWIuX3RhZ19tZXRhZGF0YSl7Zm9yKHZhciBjPXt9LGQ9MCxlPTA7ZTxhLmxlbmd0aDtlKyspZCs9WXYoYVtlXSxiLGMpPzE6MDtkPjAmJihiLl90YWdfbWV0YWRhdGE9Yyl9fQpmdW5jdGlvbiBZdihhLGIsYyl7dmFyIGQ9YlthXTtpZihkPT09dm9pZCAwfHxkPT09bnVsbClyZXR1cm4hMTtjW2FdPUFycmF5LmlzQXJyYXkoZCk/ZC5tYXAoZnVuY3Rpb24oKXtyZXR1cm57bW9kZToiYyJ9fSk6e21vZGU6ImMifTtyZXR1cm4hMH1mdW5jdGlvbiBadihhKXtpZihNKDUyMykmJmEpe1h2KFZ2LGEpO2Zvcih2YXIgYj1CYihhLmFkZHJlc3MpLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXTtkJiZYdihXdixkKX12YXIgZT1hLmhvbWVfYWRkcmVzcztlJiZYdihXdixlKX19CmZ1bmN0aW9uICR2KGEsYixjKXtmdW5jdGlvbiBkKGYsZyl7Zz1TdHJpbmcoZykuc3Vic3RyaW5nKDAsMTAwKTtlLnB1c2goIiIrZitlbmNvZGVVUklDb21wb25lbnQoZykpfWlmKCFjKXJldHVybiIiO3ZhciBlPVtdO2QoImkiLFN0cmluZyhhKSk7ZCgiZiIsYik7Yy5tb2RlJiZkKCJtIixjLm1vZGUpO2MuaXNQcmVIYXNoZWQmJmQoInAiLCIxIik7Yy5yYXdMZW5ndGgmJmQoInIiLFN0cmluZyhjLnJhd0xlbmd0aCkpO2Mubm9ybWFsaXplZExlbmd0aCYmZCgibiIsU3RyaW5nKGMubm9ybWFsaXplZExlbmd0aCkpO2MubG9jYXRpb24mJmQoImwiLGMubG9jYXRpb24pO2Muc2VsZWN0b3ImJmQoInMiLGMuc2VsZWN0b3IpO3JldHVybiBlLmpvaW4oIi4iKX07dmFyIGF3PXZvaWQgMDtmdW5jdGlvbiBidygpe2lmKCFhdyl7dmFyIGE9b20oam0uYmEub3AsbmV3IE1hcCk7YXc9bmV3IG9nKGEpfXJldHVybiBhd307CnZhciBjdz1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gYTtmb3IodmFyIGI9e30sYz1tKE9iamVjdC5rZXlzKGEpKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9ZC52YWx1ZTtlIT09ImFkZHJlc3MiJiZlIT09InBob25lX251bWJlciImJmUhPT0ic2hhMjU2X3Bob25lX251bWJlciImJihiW2VdPWFbZV0pfXJldHVybiBifSxmdz1mdW5jdGlvbihhKXt2YXIgYj1NKDUyMyksYz1bInR2LjEiXSxkPVsidHZkLjEiXSxlPWR3KGEpO2lmKGUpcmV0dXJuIGMucHVzaChlKSx7aGFzVXBkOiExLE9vOmMuam9pbigifiIpLFluOmMuam9pbigifiIpLGVuY3J5cHRpb25LZXlTdHJpbmc6dm9pZCAwLGlpOnt9LG1ldGFkYXRhUGFyYW06Yj9kLmpvaW4oIn4iKTp2b2lkIDB9O3ZhciBmPXt9LGc9MDt2YXIgaD0wLGw9ZXcoYSxmdW5jdGlvbihxLHIsdCl7aCsrO3ZhciB1PXEudmFsdWUsdjsKaWYodCl7dmFyIHg9cisiX18iK2crKzt2PSIke3VzZXJEYXRhLiIreCsifHNoYTI1Nn0iO2ZbeF09dX1lbHNlIHY9ZW5jb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudCh1KSk7cS5pbmRleCE9PXZvaWQgMCYmKHIrPXEuaW5kZXgpO2MucHVzaChyKyIuIit2KTtpZihiKXt2YXIgeT0kdihoLHIscS5tZXRhZGF0YSk7eSYmZC5wdXNoKHkpfX0pLmhhc1VwZCxuPWQuam9pbigifiIpO3ZhciBwPWMuam9pbigifiIpO3JldHVybntoYXNVcGQ6bCxPbzpwLGlpOnt1c2VyRGF0YTpmfSxZbjoidHYuMX4keyIrKHArInwiKyhNKDU1NSk/ImVuY3J5cHRfd2l0aF9tZW1vIjoiZW5jcnlwdCIpKyJ9IiksZW5jcnlwdGlvbktleVN0cmluZzpFKDQzKSxtZXRhZGF0YVBhcmFtOmI/bjp2b2lkIDB9fSxodz1mdW5jdGlvbihhKXtpZighKGEhPW51bGwmJk9iamVjdC5rZXlzKGEpLmxlbmd0aD4wKSlyZXR1cm4hMTsKdmFyIGI9Z3coYSk7cmV0dXJuIGV3KGIsZnVuY3Rpb24oKXt9KS5oYXNVcGR9LGV3PWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwP2Z1bmN0aW9uKCl7fTpiO2Zvcih2YXIgYz0hMSxkPSExLGU9bShhKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZTtpZihnLnZhbHVlKXt2YXIgaD1pd1tnLm5hbWVdO2lmKGgpe3ZhciBsPWp3KGcpO2wmJihjPSEwKTtkPSEwO2IoZyxoLGwpfX19cmV0dXJue2hhc1VwZDpkLGhhc1VwZFRvSGFzaDpjfX0sanc9ZnVuY3Rpb24oYSl7dmFyIGI9a3coYS5uYW1lKSxjPS9eZVxkKyQvLnRlc3QoYS52YWx1ZSksZDtpZihkPWImJiFjKXt2YXIgZT1hLnZhbHVlO2Q9IShsdy50ZXN0KGUpfHx5aS50ZXN0KGUpKX1yZXR1cm4gZH0sa3c9ZnVuY3Rpb24oYSl7cmV0dXJuIG13LmluZGV4T2YoYSkhPT0tMX0sc3c9ZnVuY3Rpb24oYSxiLGMpe2lmKHliKEEuUHJvbWlzZSkpdHJ5e3ZhciBkPSExO3ZhciBlPWd3KGEsZCksZj1udyhlKS50aGVuKGZ1bmN0aW9uKGgpe3ZhciBsPWgueWIsbj1sLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1cm4hU2IocS5uYW1lLCJyYXciKX0pLHA9b3coe3liOm59KTtyZXR1cm57cmVzdWx0OntwYXJhbTpwLnBhcmFtLGhhc1VwZFRvSGFzaDpwLmhhc1VwZFRvSGFzaCxoYXNVcGQ6cC5oYXNVcGQsaGFkRXJyb3I6cC5oYWRFcnJvcixtZXRhZGF0YVBhcmFtOnAubWV0YWRhdGFQYXJhbX0seWI6bH19KTtyZXR1cm4gZi50aGVuKGZ1bmN0aW9uKGgpe3JldHVybiBoLnJlc3VsdH0pfWNhdGNoKGgpe319LHF3PWZ1bmN0aW9uKGEpe3ZhciBiPXZvaWQgMDtyZXR1cm4gYn0sb3c9ZnVuY3Rpb24oYSl7dmFyIGI9TSg1MjMpLGM9YS55YixkPVsidHYuMSJdLGU9WyJ0dmQuMSJdLGY9ZHcoYyk7aWYoZilyZXR1cm4gZC5wdXNoKGYpLHtwYXJhbTpkLmpvaW4oIn4iKSxoYXNVcGRUb0hhc2g6ITEsaGFzVXBkOiExLGhhZEVycm9yOiEwLG1ldGFkYXRhUGFyYW06Yj9lLmpvaW4oIn4iKTp2b2lkIDB9O3ZhciBnPWMuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiFqdyhxKX0pLGg9MCxsPWV3KGcsZnVuY3Rpb24ocSxyKXtoKys7dmFyIHQ9cS52YWx1ZSx1PXEuaW5kZXg7dSE9PXZvaWQgMCYmKHIrPXUpO2QucHVzaChyKyIuIit0KTtpZihiKXt2YXIgdj0kdihoLHIscS5tZXRhZGF0YSk7diYmZS5wdXNoKHYpfX0pLG49bC5oYXNVcGRUb0hhc2gscD1sLmhhc1VwZDtyZXR1cm57cGFyYW06ZW5jb2RlVVJJQ29tcG9uZW50KGQuam9pbigifiIpKSwKaGFzVXBkVG9IYXNoOm4saGFzVXBkOnAsaGFkRXJyb3I6ITEsbWV0YWRhdGFQYXJhbTpiP2Uuam9pbigifiIpOnZvaWQgMH19LGR3PWZ1bmN0aW9uKGEpe2lmKGEubGVuZ3RoPT09MSYmYVswXS5uYW1lPT09ImVycm9yX2NvZGUiKXJldHVybiBpdy5lcnJvcl9jb2RlKyIuIithWzBdLnZhbHVlfSxwdz1mdW5jdGlvbihhKXtpZihhLmxlbmd0aD09PTEmJmFbMF0ubmFtZT09PSJlcnJvcl9jb2RlIilyZXR1cm4hMTtmb3IodmFyIGI9bShhKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl7dmFyIGQ9Yy52YWx1ZTtpZihpd1tkLm5hbWVdJiZkLnZhbHVlKXJldHVybiEwfXJldHVybiExfSxndz1mdW5jdGlvbihhLGIpe2I9Yj09PXZvaWQgMD8hMTpiO3ZhciBjPVtdO2lmKEEubG9jYXRpb24ucHJvdG9jb2whPT0iaHR0cHM6IilyZXR1cm4gYy5wdXNoKHtuYW1lOiJlcnJvcl9jb2RlIix2YWx1ZToiZTMiLGluZGV4OnZvaWQgMH0pLGM7dmFyIGQ9Yy5wdXNoLGU9ZC5hcHBseSxmPVtdLApnPWYuY29uY2F0LGgsbD1hLl90YWdfbWV0YWRhdGF8fHt9O2g9W10uY29uY2F0KHcodHcoe25hbWU6ImVtYWlsIixyYXc6YS5lbWFpbCxTYTphLnNoYTI1Nl9lbWFpbF9hZGRyZXNzLGFiOmwuZW1haWwsbWQ6bC5zaGEyNTZfZW1haWxfYWRkcmVzc30sdXcpKSx3KHR3KHtuYW1lOiJwaG9uZV9udW1iZXIiLHJhdzphLnBob25lX251bWJlcixTYTphLnNoYTI1Nl9waG9uZV9udW1iZXIsYWI6bC5waG9uZV9udW1iZXIsbWQ6bC5zaGEyNTZfcGhvbmVfbnVtYmVyfSx2dykpKTt2YXIgbj13KGgpLHAscT1hLl90YWdfbWV0YWRhdGF8fHt9LHI9YS5ob21lX2FkZHJlc3N8fHt9LHQ9ci5fdGFnX21ldGFkYXRhfHx7fTtwPVtdLmNvbmNhdCh3KHR3KHtuYW1lOiJmaXJzdF9uYW1lIixyYXc6YS5maXJzdF9uYW1lLFNhOmEuc2hhMjU2X2ZpcnN0X25hbWUsYWI6cS5maXJzdF9uYW1lLG1kOnEuc2hhMjU2X2ZpcnN0X25hbWV9LHd3KHh3KSkpLHcodHcoe25hbWU6Imxhc3RfbmFtZSIscmF3OmEubGFzdF9uYW1lLApTYTphLnNoYTI1Nl9sYXN0X25hbWUsYWI6cS5sYXN0X25hbWUsbWQ6cS5zaGEyNTZfbGFzdF9uYW1lfSx3dyh4dykpKSx3KHR3KHtuYW1lOiJzdHJlZXQiLHJhdzpyLnN0cmVldCxTYTpyLnNoYTI1Nl9zdHJlZXQsYWI6dC5zdHJlZXQsbWQ6dC5zaGEyNTZfc3RyZWV0fSx3dyh5dykpKSx3KHR3KHtuYW1lOiJjaXR5IixyYXc6ci5jaXR5LGFiOnQuY2l0eX0sd3coeXcpKSksdyh0dyh7bmFtZToicG9zdGFsX2NvZGUiLHJhdzpyLnBvc3RhbF9jb2RlLGFiOnQucG9zdGFsX2NvZGV9LHd3KHp3KSkpLHcodHcoe25hbWU6InJlZ2lvbiIscmF3OnIucmVnaW9uLGFiOnQucmVnaW9ufSx3dyh5dykpKSx3KHR3KHtuYW1lOiJjb3VudHJ5IixyYXc6ci5jb3VudHJ5LGFiOnQuY291bnRyeX0sd3coencpKSkpO2Zvcih2YXIgdT13KHApLHY9W10seD1CYihhLmFkZHJlc3N8fHt9KSx5PTA7eTx4Lmxlbmd0aDt5Kyspe2Zvcih2YXIgej14W3ldLEM9ei5fdGFnX21ldGFkYXRhfHx7fSxEPVtdLmNvbmNhdCh3KHR3KHtuYW1lOiJmaXJzdF9uYW1lIiwKcmF3OnouZmlyc3RfbmFtZSxTYTp6LnNoYTI1Nl9maXJzdF9uYW1lLGFiOkMuZmlyc3RfbmFtZSxtZDpDLnNoYTI1Nl9maXJzdF9uYW1lfSx4dykpLHcodHcoe25hbWU6Imxhc3RfbmFtZSIscmF3OnoubGFzdF9uYW1lLFNhOnouc2hhMjU2X2xhc3RfbmFtZSxhYjpDLmxhc3RfbmFtZSxtZDpDLnNoYTI1Nl9sYXN0X25hbWV9LHh3KSksdyh0dyh7bmFtZToic3RyZWV0IixyYXc6ei5zdHJlZXQsU2E6ei5zaGEyNTZfc3RyZWV0LGFiOkMuc3RyZWV0LG1kOkMuc2hhMjU2X3N0cmVldH0seXcpKSx3KHR3KHtuYW1lOiJjaXR5IixyYXc6ei5jaXR5LGFiOkMuY2l0eX0seXcpKSx3KHR3KHtuYW1lOiJwb3N0YWxfY29kZSIscmF3OnoucG9zdGFsX2NvZGUsYWI6Qy5wb3N0YWxfY29kZX0sencpKSx3KHR3KHtuYW1lOiJyZWdpb24iLHJhdzp6LnJlZ2lvbixhYjpDLnJlZ2lvbn0seXcpKSx3KHR3KHtuYW1lOiJjb3VudHJ5IixyYXc6ei5jb3VudHJ5LGFiOkMuY291bnRyeX0sencpKSksST0wO0k8CkQubGVuZ3RoO0krKylEW0ldLmluZGV4PXk7di5wdXNoLmFwcGx5KHYsdyhEKSl9ZS5jYWxsKGQsYyxnLmNhbGwoZixuLHUsdyh2KSkpO2lmKGImJkJwKCkpe3ZhciBHPWMucHVzaCxOPUcuYXBwbHksUz1bXTtTLnB1c2guYXBwbHkoUyxbXS5jb25jYXQodyhBdyh7bmFtZToicmF3X2VtYWlsIixyYXc6YS5lbWFpbCxTYTphLnNoYTI1Nl9lbWFpbF9hZGRyZXNzfSkpLHcoQXcoe25hbWU6InJhd19waG9uZV9udW1iZXIiLHJhdzphLnBob25lX251bWJlcixTYTphLnNoYTI1Nl9waG9uZV9udW1iZXJ9KSkpKTtmb3IodmFyIFc9QmIoYS5hZGRyZXNzfHx7fSksZWE9MDtlYTxXLmxlbmd0aDtlYSsrKXt2YXIgamE9V1tlYV07Uy5wdXNoLmFwcGx5KFMsW10uY29uY2F0KHcoQXcoe25hbWU6InJhd19maXJzdF9uYW1lIixyYXc6amEuZmlyc3RfbmFtZSxTYTpqYS5zaGEyNTZfZmlyc3RfbmFtZX0sZWEpKSx3KEF3KHtuYW1lOiJyYXdfbGFzdF9uYW1lIixyYXc6amEubGFzdF9uYW1lLFNhOmphLnNoYTI1Nl9sYXN0X25hbWV9LAplYSkpLHcoQXcoe25hbWU6InJhd19zdHJlZXQiLHJhdzpqYS5zdHJlZXQsU2E6amEuc2hhMjU2X3N0cmVldH0sZWEpKSkpfWlmKGEuZmlyc3RfbmFtZXx8YS5ob21lX2FkZHJlc3Mpe1MucHVzaC5hcHBseShTLFtdLmNvbmNhdCh3KEF3KHtuYW1lOiJyYXdfZmlyc3RfbmFtZSIscmF3OmEuZmlyc3RfbmFtZSxTYTphLnNoYTI1Nl9maXJzdF9uYW1lfSkpLHcoQXcoe25hbWU6InJhd19sYXN0X25hbWUiLHJhdzphLmxhc3RfbmFtZSxTYTphLnNoYTI1Nl9sYXN0X25hbWV9KSkpKTt2YXIgZmE9YS5ob21lX2FkZHJlc3N8fHt9O1MucHVzaC5hcHBseShTLHcoQXcoe25hbWU6InJhd19zdHJlZXQiLHJhdzpmYS5zdHJlZXQsU2E6ZmEuc2hhMjU2X3N0cmVldH0pKSl9Ti5jYWxsKEcsYyx3KFMpKX1yZXR1cm4gY30sd3c9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe1AoNjQpO3JldHVybiBhKGIpfX0sQXc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtpZihhLlNhKXJldHVybiBjO2Zvcih2YXIgZD0KQmIoYS5yYXcpLGU9MDtlPGQubGVuZ3RoOysrZSl7dmFyIGY9QncoZFtlXSk7aWYoZiYmIXlpLnRlc3QoZikpaWYoL15lXGQrJC8udGVzdChmKSljLnB1c2goe25hbWU6YS5uYW1lLHZhbHVlOmYsaW5kZXg6Yn0pO2Vsc2V7dmFyIGc9YyxoPWcucHVzaCxsPWEubmFtZSxuO3ZhciBwPUE7dHJ5e249QmkoQXJyYXkuZnJvbShaYihmKSkscCl9Y2F0Y2gocSl7bj0iZTAifWguY2FsbChnLHtuYW1lOmwsdmFsdWU6bixpbmRleDpifSl9fXJldHVybiBjfSx0dz1mdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9TSg1MjMpLGU9YS5yYXcsZj1kP2EuYWI6dm9pZCAwO0N3KGUsITEpO2EuU2EmJihlJiZQKDkwKSxlPWEuU2EsZj1kP2EubWQ6dm9pZCAwLEN3KGUsITApKTtmb3IodmFyIGc9QmIoZSksaD1CYihmKSxsPTA7bDxnLmxlbmd0aDsrK2wpe3ZhciBuO3ZhciBwPWEubmFtZSxxPWIscj1oW2xdLHQ9QncoZ1tsXSk7aWYodCE9PSIiKWlmKHlpLnRlc3QodCkpe3ImJihyLmlzUHJlSGFzaGVkPSEwKTsKdmFyIHU9e25hbWU6cCx2YWx1ZTp0LGluZGV4OnZvaWQgMH07ciYmKHUubWV0YWRhdGE9cik7bj11fWVsc2V7dmFyIHY9cSh0KSx4PXtuYW1lOnAsdmFsdWU6dixpbmRleDp2b2lkIDB9O3ImJih4Lm1ldGFkYXRhPXIsdiYmKHIucmF3TGVuZ3RoPVN0cmluZyh0KS5sZW5ndGgsci5ub3JtYWxpemVkTGVuZ3RoPXYubGVuZ3RoKSk7bj14fWVsc2Ugbj12b2lkIDA7dmFyIHk9bjt5JiZjLnB1c2goeSl9cmV0dXJuIGN9LEN3PWZ1bmN0aW9uKGEsYil7aWYoemIoYSl8fEFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBjPUJiKGEpLGQ9MDtkPGMubGVuZ3RoOysrZCl7dmFyIGU9QncoY1tkXSksZj15aS50ZXN0KGUpO2ImJiFmJiZQKDg5KTshYiYmZiYmUCg4OCl9fSxEdz1mdW5jdGlvbihhKXt2YXIgYj1hP2d3KGEpOltdO3JldHVybiBvdyh7eWI6Yn0pfSxFdz1mdW5jdGlvbihhKXtyZXR1cm4gYSYmYSE9bnVsbCYmT2JqZWN0LmtleXMoYSkubGVuZ3RoPjAmJnliKEEuUHJvbWlzZSk/Z3coYSkuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYi52YWx1ZSYmCmt3KGIubmFtZSkmJiF5aS50ZXN0KGIudmFsdWUpfSk6ITF9LEJ3PWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOnpiKGEpP0xiKFN0cmluZyhhKSk6ImUwIn0senc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShGdywiIil9LHh3PWZ1bmN0aW9uKGEpe3JldHVybiB5dyhhLnJlcGxhY2UoL1xzL2csIiIpKX0seXc9ZnVuY3Rpb24oYSl7cmV0dXJuIExiKGEucmVwbGFjZShHdywiIikudG9Mb3dlckNhc2UoKSl9LHZ3PWZ1bmN0aW9uKGEpe2E9YS5yZXBsYWNlKC9bXHMtKCkvLl0vZywiIik7YS5jaGFyQXQoMCkhPT0iKyImJihhPSIrIithKTtyZXR1cm4oTSg1OTcpP0h3Okl3KS50ZXN0KGEpP2E6ImUwIn0sdXc9ZnVuY3Rpb24oYSl7dmFyIGI9YS50b0xvd2VyQ2FzZSgpLnNwbGl0KCJAIik7aWYoYi5sZW5ndGg9PT0yKXt2YXIgYz1iWzBdOy9eKGdtYWlsfGdvb2dsZW1haWwpXC4vLnRlc3QoYlsxXSkmJihjPWMucmVwbGFjZSgvXC4vZywiIikpO2M9YysiQCIrYlsxXTtpZihKdy50ZXN0KGMpKXJldHVybiBjfXJldHVybiJlMCJ9LApLdz1mdW5jdGlvbihhKXt0cnl7cmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihiKXtiLnZhbHVlJiZrdyhiLm5hbWUpJiYoYi52YWx1ZT1EaShiLnZhbHVlKSl9KSx7eWI6YX19Y2F0Y2goYil7cmV0dXJue3liOltdfX19LG53PWZ1bmN0aW9uKGEpe3JldHVybiBhLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIGIudmFsdWUmJmt3KGIubmFtZSl9KT95YihBLlByb21pc2UpP1Byb21pc2UuYWxsKGEubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiLnZhbHVlJiZrdyhiLm5hbWUpP0FpKGIudmFsdWUpLnRoZW4oZnVuY3Rpb24oYyl7Yi52YWx1ZT1jfSk6UHJvbWlzZS5yZXNvbHZlKCl9KSkudGhlbihmdW5jdGlvbigpe3JldHVybnt5YjphfX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJue3liOltdfX0pOnt0aGVuOmZ1bmN0aW9uKGIpe2Ioe3liOltdfSl9fTpQcm9taXNlLnJlc29sdmUoe3liOmF9KX0sR3c9L1swLTlgfiFAIyQlXiYqKClfXC0rPTo7PD4sLj98L1xcW1xdXS9nLEp3PS9eXFMrQFxTK1wuXFMrJC8sCkl3PS9eXCtcZHsxMCwxNX0kLyxIdz0vXlwrXGR7NywxNX0kLyxGdz0vWy5+XS9nLGx3PS9eWzAtOUEtWmEtel8tXXs0M30kLyxMdz1bInJlbSIsInJwbiIsInJmbiIsInJsbiIsInJzYSJdLE13PXt9LGl3PShNdy5lbWFpbD0iZW0iLE13LnBob25lX251bWJlcj0icG4iLE13LmZpcnN0X25hbWU9ImZuIixNdy5sYXN0X25hbWU9ImxuIixNdy5zdHJlZXQ9InNhIixNdy5jaXR5PSJjdCIsTXcucmVnaW9uPSJyZyIsTXcuY291bnRyeT0iY28iLE13LnBvc3RhbF9jb2RlPSJwYyIsTXcuZXJyb3JfY29kZT0iZWMiLE13LnJhd19lbWFpbD0icmVtIixNdy5yYXdfcGhvbmVfbnVtYmVyPSJycG4iLE13LnJhd19maXJzdF9uYW1lPSJyZm4iLE13LnJhd19sYXN0X25hbWU9InJsbiIsTXcucmF3X3N0cmVldD0icnNhIixNdyk7dmFyIG13PU9iamVjdC5mcmVlemUoWyJlbWFpbCIsCiJwaG9uZV9udW1iZXIiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwic3RyZWV0Il0pO3ZhciBteD1PYmplY3QuZnJlZXplKHthdHRyaWJ1dGlvbnNyYzoiIn0pLG54PU9iamVjdC5mcmVlemUoe2V2ZW50U291cmNlRWxpZ2libGU6ITEsdHJpZ2dlckVsaWdpYmxlOiEwfSk7ZnVuY3Rpb24gb3goKXt2YXIgYT1YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGU7cmV0dXJuIGEmJnliKGEuc2V0QXR0cmlidXRpb25SZXBvcnRpbmcpfTt2YXIgcHg9T2JqZWN0LmZyZWV6ZSh7Y2FjaGU6Im5vLXN0b3JlIixjcmVkZW50aWFsczoiaW5jbHVkZSIsbWV0aG9kOiJHRVQiLGtlZXBhbGl2ZTohMCxyZWRpcmVjdDoiZm9sbG93In0pOwpmdW5jdGlvbiBxeChhLGIsYyxkLGUsZil7aWYoIXliKEEuZmV0Y2gpKXJldHVybiBmPT1udWxsfHxmKHZvaWQgMCx2b2lkIDApLCExO3ZhciBnPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30scHgpO2ImJihnLmJvZHk9YixnLm1ldGhvZD0iUE9TVCIpO25hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3QsZyxkKTtBLmZldGNoKGEsZykudGhlbihmdW5jdGlvbihoKXtpZihoLm9rKXtpZihoLmJvZHkpe3ZhciBsPWguYm9keS5nZXRSZWFkZXIoKSxuPW5ldyBUZXh0RGVjb2RlcjtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocCl7ZnVuY3Rpb24gcSgpe2wucmVhZCgpLnRoZW4oZnVuY3Rpb24ocil7dmFyIHQ7dD1yLmRvbmU7dmFyIHU9bi5kZWNvZGUoci52YWx1ZSx7c3RyZWFtOiF0fSk7dT1jLlIrdTtmb3IodmFyIHY9dS5pbmRleE9mKCJcblxuIik7diE9PS0xOyl7dmFyIHg9WmcseTthOnt2YXIgej1tKHUuc3Vic3RyaW5nKDAsdikuc3BsaXQoIlxuIikpLEM9CnoubmV4dCgpLnZhbHVlLEQ9ei5uZXh0KCkudmFsdWU7aWYoU2IoQywiZXZlbnQ6IG1lc3NhZ2UiKSYmU2IoRCwiZGF0YTogIikpe3ZhciBJPUQuc3Vic3RyaW5nKDYpO3RyeXt5PUpTT04ucGFyc2UoSSk7YnJlYWsgYX1jYXRjaChHKXt9fXk9dm9pZCAwfXgoYyx5KTt1PXUuc3Vic3RyaW5nKHYrMik7dj11LmluZGV4T2YoIlxuXG4iKX1jLlI9dTt0PyhlPT1udWxsfHxlKGgpLHAoKSk6cSgpfSkuY2F0Y2goZnVuY3Rpb24oKXtlPT1udWxsfHxlKGgpO3AoKX0pfXEoKX0pfWU9PW51bGx8fGUoaCl9ZWxzZSBmPT1udWxsfHxmKGgsdm9pZCAwKX0pLmNhdGNoKGZ1bmN0aW9uKGgpe2Y9PW51bGx8fGYodm9pZCAwLGgpfSk7cmV0dXJuITB9O3ZhciByeD1mdW5jdGlvbihhKXtodS5jYWxsKHRoaXMsIkZldGNoUmljaFJlc3BvbnNlIiwxKTt0aGlzLk49YX07d2EocngsaHUpO3J4LnByb3RvdHlwZS5pc1N1cHBvcnRlZD1mdW5jdGlvbigpe3JldHVybiB5YihBLmZldGNoKX07cngucHJvdG90eXBlLkg9ZnVuY3Rpb24oKXtyZXR1cm4hMH07cngucHJvdG90eXBlLks9ZnVuY3Rpb24oYSxiLGMpe3F4KGIsYz09bnVsbD92b2lkIDA6Yy5ib2R5LHRoaXMuTixjPT1udWxsP3ZvaWQgMDpjLkdiLGEucGUsZnVuY3Rpb24oZCxlKXthLm9uRmFpbHVyZShlKX0pfTt2YXIgQ3g9ZnVuY3Rpb24oKXtZZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3dhKEN4LFlnKTtDeC5wcm90b3R5cGUuSz1mdW5jdGlvbihhLGIpe1pjKGEsdm9pZCAwLCRnKHRoaXMsYiksYi5hdHRyaWJ1dGlvbl9yZXBvcnRpbmcmJm94KCk/bXg6e30pfTtDeC5wcm90b3R5cGUuSD1mdW5jdGlvbihhLGIpe3ZhciBjPWIuYXR0cmlidXRpb25fcmVwb3J0aW5nJiZveCgpP3thdHRyaWJ1dGlvblJlcG9ydGluZzpueH06e30sZD0kZyh0aGlzLGIpO2IucHJvY2Vzc19yZXNwb25zZT9xeChhLHZvaWQgMCx0aGlzLGMsdm9pZCAwLGQpOm1kKGEsdm9pZCAwLGMsdm9pZCAwLGQpfTt2YXIgUXg9ZnVuY3Rpb24oYSxiKXt0aGlzLkg9YTt0aGlzLnRpbWVvdXRNcz1iO3RoaXMuUmI9dm9pZCAwfSxSeD1mdW5jdGlvbihhKXthLlJifHwoYS5SYj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5IKCk7YS5SYj12b2lkIDB9LGEudGltZW91dE1zKSl9LFRuPWZ1bmN0aW9uKGEpe2EuUmImJihjbGVhclRpbWVvdXQoYS5SYiksYS5SYj12b2lkIDApfTt2YXIgU3g9ZnVuY3Rpb24oKXt2YXIgYT1OZig2NiwwKTt0aGlzLks9W107dGhpcy5SPWE7dGhpcy5IPVlhKCl9LFV4PWZ1bmN0aW9uKGEpe3ZhciBiPVR4O2IuSy5wdXNoKGEpO2IuTnx8KGIuTj1mdW5jdGlvbigpe2Zvcih2YXIgYz1tKGIuSyksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWU7dHJ5e2UoKX1jYXRjaChsKXt9fWZvcih2YXIgZj1tKGIuSC52YWx1ZXMoKSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpe3ZhciBoPXZvaWQgMDsoaD1nLnZhbHVlLndlKT09bnVsbHx8VG4oaCl9Yi5ILmNsZWFyKCl9LCRjKEEsInBhZ2VoaWRlIixiLk4pKX0sVng9ZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXRjaChNbilbM118fG51bGwsYz0oYj9kZWNvZGVVUkkoYik6Yil8fCIiLGQ9UG4oYSwibGFiZWwiKXx8IiIsZT1QbihhLCJyYW5kb20iKXx8IiI7cmV0dXJuIGMrIjoiK0xuKGQpKyI6IitMbihlKX0sV3g9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVR4LAplPVZ4KGEpO2lmKCEoZC5ILmhhcyhlKXx8ZC5ILnNpemU+PWQuUikpe3ZhciBmPXt9O2ImJmI+MCYmYyYmKGYud2U9bmV3IFF4KGMsYikpO2QuSC5zZXQoZSxmKTt2YXIgZzsoZz1mLndlKT09bnVsbHx8UngoZyl9fSxVbj1mdW5jdGlvbihhLGIpe3ZhciBjPVZ4KGIpLGQsZTsoZD1hLkguZ2V0KGMpKT09bnVsbHx8KGU9ZC53ZSk9PW51bGx8fFRuKGUpO2EuSC5kZWxldGUoYyl9O1N4LnByb3RvdHlwZS5nZXRTaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSC5zaXplfTt2YXIgZGc7ZnVuY3Rpb24gaHkoYSxiKXt2YXIgYzsoYz1kZyk9PW51bGx8fCRmKGMuSCxhLGIpfTt2YXIgaXk9QWEoWyIvIl0pLGp5PWZ1bmN0aW9uKGEpe3RoaXMuSD1hO3RoaXMuZmFpbHVyZVR5cGU9dm9pZCAwfTtqeS5wcm90b3R5cGUuaW89ZnVuY3Rpb24oYSxiLGMpe3RyeXt2YXIgZD10aGlzLkguYWN0aXZlO2Q/KGQucG9zdE1lc3NhZ2Uoe3R5cGU6MSxjb21tYW5kOmF9KSxiKHtkYXRhOiIifSkpOmMoe2ZhaWx1cmVUeXBlOjEzLGRhdGE6IiJ9KX1jYXRjaChlKXtjKHtmYWlsdXJlVHlwZToxMSxkYXRhOmUubWVzc2FnZX0pfX07dmFyIGt5PWZ1bmN0aW9uKGEsYil7dGhpcy5mYWlsdXJlVHlwZT1hO3RoaXMuSD1ifTtreS5wcm90b3R5cGUuaW89ZnVuY3Rpb24oYSxiLGMpe2Moe2ZhaWx1cmVUeXBlOnRoaXMuZmFpbHVyZVR5cGUsZGF0YToiZiIrdGhpcy5mYWlsdXJlVHlwZSsoInQiKygobmV3IERhdGUpLmdldFRpbWUoKS10aGlzLkgpKX0pfTsKdmFyIG55PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7dGhpcy5pbml0VGltZT0obmV3IERhdGUpLmdldFRpbWUoKTt0aGlzLkg9bmV3IGt5KDE1LHRoaXMuaW5pdFRpbWUpO3ZhciBjPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpe0Euc2V0VGltZW91dChmdW5jdGlvbigpe2UoKX0sMjApfSksZD1seShhKS50aGVuKGZ1bmN0aW9uKGUpe2IuSD1uZXcgankoZSk7bXkoYixlKX0pLmNhdGNoKGZ1bmN0aW9uKCl7Yi5IPW5ldyBreSg0LGIuaW5pdFRpbWUpfSk7dGhpcy5LPVByb21pc2UucmFjZShbYyxkXSl9LG15PWZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oZCl7ZCYmZC5hZGRFdmVudExpc3RlbmVyKCJzdGF0ZWNoYW5nZSIsZnVuY3Rpb24oKXtpZihkLnN0YXRlPT09InJlZHVuZGFudCIpe3ZhciBlPWIuYWN0aXZlO2UmJmUuc3RhdGUhPT0icmVkdW5kYW50Inx8KGEuSD1uZXcga3koMTAsYS5pbml0VGltZSkpfX0pfTtjKGIuYWN0aXZlKTtjKGIud2FpdGluZyk7YyhiLmluc3RhbGxpbmcpOwpiLmFkZEV2ZW50TGlzdGVuZXIoInVwZGF0ZWZvdW5kIixmdW5jdGlvbigpe2MoYi5pbnN0YWxsaW5nKX0pfTtueS5wcm90b3R5cGUuZGVsZWdhdGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXM7dGhpcy5LLnRoZW4oZnVuY3Rpb24oKXtkLkguaW8oYSxiLGMpfSl9O255LnByb3RvdHlwZS5nZXRTdGF0ZT1mdW5jdGlvbigpe3JldHVybiAyfTsKdmFyIGx5PWZ1bmN0aW9uKGEpe3ZhciBiLGM9TGYoMTEpO2M9TGYoMTApO2I9Yzt2YXIgZD17c2NvcGU6KFRiKGEuaHJlZiwiLyIpP2EuaHJlZi5zbGljZSgwLC0xKTphLmhyZWYpKyIvXy9zZXJ2aWNlX3dvcmtlciJ9O2ImJihkLnVwZGF0ZVZpYUNhY2hlPSJhbGwiKTt2YXIgZSxmPW95KGEsYiksZz1uZXcgTWFwKFtbInBhdGgiLGEucGF0aG5hbWVdXSksaD1KcChrYyhmKS50b1N0cmluZygpKTtlPUxwKGguemssaC5wYXJhbXMsaC5mcmFnbWVudCxnKTt2YXIgbD1JYygpLG49a2MoZSk7dHJ5e3JldHVybiBsLnJlZ2lzdGVyKG4sZCl9Y2F0Y2gocCl7dHJ5e3JldHVybiBsLnJlZ2lzdGVyKG4udG9TdHJpbmcoKSxkKX1jYXRjaChxKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QocSl9fX07CmZ1bmN0aW9uIG95KGEsYil7Zm9yKHZhciBjPUtwKGl5KSxkPWEucGF0aG5hbWUuc3BsaXQoIi8iKS5maWx0ZXIoZnVuY3Rpb24oaCl7cmV0dXJuIGgubGVuZ3RoPjB9KSxlPVtdLmNvbmNhdCh3KGQpLFsiXyIsInNlcnZpY2Vfd29ya2VyIixiLCJzdy5qcyJdKSxmPW0oZSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpYz1NcChjLGcudmFsdWUpO3JldHVybiBjfTtmdW5jdGlvbiBweShhKXt2YXIgYj1ubShqbS5iYS5PaCksYz1iPT1udWxsP3ZvaWQgMDpiW2FdO2N8fGEhPT0ibGl0ZSJ8fChjPWI9PW51bGw/dm9pZCAwOmIuZnVsbCk7cmV0dXJuIGN9dmFyIHF5PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1weSgiZnVsbCIpO2Q/ZC5kZWxlZ2F0ZShhLGIsYyk6Yyh7ZmFpbHVyZVR5cGU6MTZ9KX07ZnVuY3Rpb24gcnkoYSxiLGMsZCxlKXtxeSh7Y29tbWFuZFR5cGU6MCxwYXJhbXM6e3VybDphLG1ldGhvZDoxLHRlbXBsYXRlczpiLGJvZHk6IiIscHJvY2Vzc1Jlc3BvbnNlOiExLGVuY3J5cHRpb25LZXlTdHJpbmc6ZSxzb1JlZmVycmVyOkEubG9jYXRpb24uaHJlZn19LGMsZnVuY3Rpb24oZil7ZChmLmZhaWx1cmVUeXBlLGYuZGF0YSl9KX07dmFyIER5PWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLkg9MDt0aGlzLks9ITE7TSg0NjIpJiZVbSgiZnMiLGZ1bmN0aW9uKCl7cmV0dXJuIGEuSD4wJiZhLkg8NT9TdHJpbmcoYS5IKTp2b2lkIDB9LCExKX0sRXk7ZnVuY3Rpb24gRnkoYSxiKXtFeXx8KEV5PW5ldyBEeSk7dmFyIGM9RXk7TSg0NjIpJiZmbi5LJiYoYj09PSJndG0uZm9ybVN1Ym1pdCJ8fGI9PT0iZm9ybV9zdWJtaXQiJiZJZig0NSkpJiYoYT09PTF8fGMuSykmJihjLks9ITAsYy5IPWEsYSE9PTU/Vm0oImZzIik6UW0uSC5mcz0hMSl9O3ZhciBHeT1mdW5jdGlvbihhKXtpZihRKGEsSC5KLmRhKT09PVguVi5LYSl7dmFyIGI9ZnUoYSk7aWYoIU0oNDI3KSYmKGpwKGEsYil8fFEoYSxILkouaGQpKSYmWG8oZnApKXt2YXIgYz1scChhLGIpO2lmKGMpe3ZhciBkPU5tKDY5LGMpO1RsKGQsYSw2OSk7WW4oe2Rlc3RpbmF0aW9uSWQ6YS50YXJnZXQuZGVzdGluYXRpb25JZCxlbmRwb2ludDo2OSxldmVudElkOmEuTS5ldmVudElkLHByaW9yaXR5SWQ6YS5NLnByaW9yaXR5SWR9LGQpfX12YXIgZT15YihhLk0ub25TdWNjZXNzKT9hLk0ub25TdWNjZXNzOnhiOyR1KGEsYik7ZSgpfX07dmFyIEh5PXtYOntXcTowLEVrOjEsWmc6MixYazozLG1pOjQsVms6NSxXazo2LFlrOjcsbmk6OCx0bTo5LHNtOjEwLFRpOjExLHZtOjEyLEJoOjEzLEVtOjE0LGlqOjE1LFNxOjE2LGpkOjE3LHVqOjE4LHZqOjE5LHdqOjIwLENuOjIxLHhqOjIyfX07SHkuWFtIeS5YLldxXT0iUkVTRVJWRURfWkVSTyI7SHkuWFtIeS5YLkVrXT0iQURTX0NPTlZFUlNJT05fSElUIjtIeS5YW0h5LlguWmddPSJDT05UQUlORVJfRVhFQ1VURV9TVEFSVCI7SHkuWFtIeS5YLlhrXT0iQ09OVEFJTkVSX1NFVFVQX0VORCI7SHkuWFtIeS5YLm1pXT0iQ09OVEFJTkVSX1NFVFVQX1NUQVJUIjtIeS5YW0h5LlguVmtdPSJDT05UQUlORVJfQkxPQ0tJTkdfRU5EIjtIeS5YW0h5LlguV2tdPSJDT05UQUlORVJfRVhFQ1VURV9FTkQiO0h5LlhbSHkuWC5Za109IkNPTlRBSU5FUl9ZSUVMRF9FTkQiO0h5LlhbSHkuWC5uaV09IkNPTlRBSU5FUl9ZSUVMRF9TVEFSVCI7SHkuWFtIeS5YLnRtXT0iRVZFTlRfRVhFQ1VURV9FTkQiOwpIeS5YW0h5Llguc21dPSJFVkVOVF9FVkFMVUFUSU9OX0VORCI7SHkuWFtIeS5YLlRpXT0iRVZFTlRfRVZBTFVBVElPTl9TVEFSVCI7SHkuWFtIeS5YLnZtXT0iRVZFTlRfU0VUVVBfRU5EIjtIeS5YW0h5LlguQmhdPSJFVkVOVF9TRVRVUF9TVEFSVCI7SHkuWFtIeS5YLkVtXT0iR0E0X0NPTlZFUlNJT05fSElUIjtIeS5YW0h5LlguaWpdPSJQQUdFX0xPQUQiO0h5LlhbSHkuWC5TcV09IlBBR0VWSUVXIjtIeS5YW0h5LlguamRdPSJTTklQUEVUX0xPQUQiO0h5LlhbSHkuWC51al09IlRBR19DQUxMQkFDS19FUlJPUiI7SHkuWFtIeS5YLnZqXT0iVEFHX0NBTExCQUNLX0ZBSUxVUkUiO0h5LlhbSHkuWC53al09IlRBR19DQUxMQkFDS19TVUNDRVNTIjtIeS5YW0h5LlguQ25dPSJUQUdfRVhFQ1VURV9FTkQiO0h5LlhbSHkuWC54al09IlRBR19FWEVDVVRFX1NUQVJUIjt2YXIgSXk9e307SXkuWD1IeS5YO3ZhciBKeT17UnU6IkwiLFhxOiJTIixrdjoiWSIsUnQ6IkIiLG51OiJFIixOdToiSSIsZnY6IlRDIix2dToiSFRDIixvdToiRiIsTXU6IkMifSxLeT17WHE6IlMiLGx1OiJWIixhdToiRSIsZHY6InRhZyJ9LEx5PXt9LE15PShMeVtJeS5YLnZqXT0iNiIsTHlbSXkuWC53al09IjUiLEx5W0l5LlgudWpdPSI3IixMeSk7ZnVuY3Rpb24gTnkoYSl7dmFyIGI9RSg1KSxjPU51bWJlcihhLmV2ZW50SWQpLGQ9TnVtYmVyKGEudGFnSWQpO3JldHVybihTYihiLCJHVE0tIik/YjoiR1RNLSIrYikrIjoiKyhBYihjKT9jKyI6IjoiIikrKEFiKGQpP2QrIjoiOiIiKSthLnN0YWdlfTtmdW5jdGlvbiBPeSgpe3ZhciBhPXJkKCk7cmV0dXJuISEoYSYmYS5tYXJrIGluc3RhbmNlb2YgRnVuY3Rpb24mJmEubWVhc3VyZSBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZhLmNsZWFyTWVhc3VyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbiYmYS5jbGVhck1hcmtzIGluc3RhbmNlb2YgRnVuY3Rpb24pfTt2YXIgUHk9ZnVuY3Rpb24oKXt0aGlzLkg9e319LFF5O2Z1bmN0aW9uIFJ5KCl7UXl8fChReT1uZXcgUHkpO3JldHVybiBReX1mdW5jdGlvbiBTeShhKXt2YXIgYj1SeSgpLGM9TnkoYSk7cmV0dXJuIGIuSFtjXX1mdW5jdGlvbiBUeShhLGIpe3ZhciBjO2E6e3ZhciBkPVJ5KCk7aWYoT3koKSl7dmFyIGU9TnkoYSksZixnO2lmKGY9KGc9cmQoKSk9PW51bGw/dm9pZCAwOmcubWFyayhlLGIpKXtjPWQuSFtlXT1mO2JyZWFrIGF9fWM9dm9pZCAwfXJldHVybiBjfTtmdW5jdGlvbiBVeShhLGIpe2lmKE95KCkpe2EuZW50cnk9TnkoYSk7dmFyIGM9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxhKTtjLnN0YWdlPWI7ZGVsZXRlIGMuc2VudDt2YXIgZD1TeShiPT09SXkuWC5qZD97c3RhZ2U6SXkuWC5qZH06YyksZT1TeShhKTtpZihkJiZlJiYhKGQuc3RhcnRUaW1lPmUuc3RhcnRUaW1lKSl7Yy5zdGFnZT1iKyI6IithLnN0YWdlO3ZhciBmPU55KGMpLGc9e3N0YXJ0OmQubmFtZSxlbmQ6ZS5uYW1lfSxoLGw7cmV0dXJuKGw9KGg9cmQoKSk9PW51bGw/dm9pZCAwOmgubWVhc3VyZShmLGcpKT09bnVsbD92b2lkIDA6bC5kdXJhdGlvbn19fTt2YXIgV3k9ZnVuY3Rpb24oKXt2YXIgYT01O1Z5LlJvPjAmJihhPVZ5LlJvKTt0aGlzLks9YTt0aGlzLkg9MDt0aGlzLk49W119LFh5PWZ1bmN0aW9uKGEpe3JldHVybiBhLkg8YS5LPyExOk5iKCktYS5OW2EuSCVhLktdPDFFM30sWXk9ZnVuY3Rpb24oYSl7dmFyIGI9YS5IKyslYS5LO2EuTltiXT1OYigpfTt2YXIgVnk9e1JvOk5mKDMsMCl9LCR5PWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLnlhPVtdO3RoaXMuSD12b2lkIDA7dGhpcy5aPXt9O3RoaXMuSz12b2lkIDA7dGhpcy5qYT1uZXcgV3k7dGhpcy5MYT0xRTM7dGhpcy5SPXRoaXMuTj0hMTt0aGlzLmZhPURiKCk7WnkodGhpcyxmdW5jdGlvbigpe3ZhciBiPVtbInYiLCIzIl0sWyJ0IiwidCJdLFsicGlkIixTdHJpbmcoYS5mYSldXSxjPWR1KCk7YyYmYi5wdXNoKFsiZ3RtIixjXSk7cmV0dXJuIGJ9KTtjZChmdW5jdGlvbigpe2EuZmE9RGIoKX0sODY0RTUpfSxaeT1mdW5jdGlvbihhLGIpe2EueWEucHVzaChiKX0sYXo9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuSDtpZihkPT09dm9pZCAwKWlmKGMpZD1yaigpO2Vsc2UgcmV0dXJuIiI7Zm9yKHZhciBlPVtmaygiaHR0cHM6Ly8iK0UoMjEpKSwiL2EiLCI/aWQ9IitFKDUpXSxmPW0oYS55YSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpZm9yKHZhciBoPWcudmFsdWUsbD0KaCh7ZXZlbnRJZDpkLHRmOiEhYn0pLG49bShsKSxwPW4ubmV4dCgpOyFwLmRvbmU7cD1uLm5leHQoKSl7dmFyIHE9bShwLnZhbHVlKSxyPXEubmV4dCgpLnZhbHVlLHQ9cS5uZXh0KCkudmFsdWU7ZS5wdXNoKCImIityKyI9Iit0KX1lLnB1c2goIiZ6PTAiKTtyZXR1cm4gZS5qb2luKCIiKX0sYno9ZnVuY3Rpb24oYSl7aWYoJGsoMjYpJiYoYS5LJiYoQS5jbGVhclRpbWVvdXQoYS5LKSxhLks9dm9pZCAwKSxhLkghPT12b2lkIDAmJmEuUikpe3ZhciBiPWxvKGNvLmlhLlpiKTtpZihnbyhiKSlhLk58fChhLk49ITAsaW8oYixmdW5jdGlvbigpe3JldHVybiB2b2lkIGJ6KGEpfSkpO2Vsc2UgaWYoYS5aW2EuSF18fFh5KGEuamEpfHxhLkxhLS08PTApUCgxKSxhLlpbYS5IXT0hMDtlbHNle1l5KGEuamEpO3ZhciBjPWF6KGEsITApO1huKHtkZXN0aW5hdGlvbklkOkUoNSksZW5kcG9pbnQ6NTYsZXZlbnRJZDphLkh9LGMpO2EuUj0hMTthLk49ITF9fX0sY3o9ZnVuY3Rpb24oYSl7YS5LfHwoYS5LPQpBLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBieihhKX0sNTAwKSl9LGV6PWZ1bmN0aW9uKGEpe3ZhciBiPWR6O2IuWlthXXx8KGEhPT1iLkgmJihieihiKSxiLkg9YSksYi5SPSEwLGN6KGIpLGF6KGIpLmxlbmd0aD49MjAyMiYmYnooYikpfSxkejtmdW5jdGlvbiBmeihhKXtneigpO1p5KGR6LGEpfWZ1bmN0aW9uIGh6KCl7dmFyIGE7YT1hPT09dm9pZCAwPyExOmE7Z3ooKTt2YXIgYj1hLGM9ZHo7Yj1iPT09dm9pZCAwPyExOmI7aWYoZm4uTiYmJGsoMjYpKXt2YXIgZD1heihjLCEwLCEwKTtiP1ZuKHtkZXN0aW5hdGlvbklkOkUoNSksZW5kcG9pbnQ6NTYsZXZlbnRJZDpjLkh9LGQpOlhuKHtkZXN0aW5hdGlvbklkOkUoNSksZW5kcG9pbnQ6NTYsZXZlbnRJZDpjLkh9LGQpfX1mdW5jdGlvbiBneigpe2R6fHwoZHo9bmV3ICR5KX07ZnVuY3Rpb24gaXooKXtmdW5jdGlvbiBhKGMsZCl7dmFyIGU9d2IocmJbZF18fFtdKTtlJiZiLnB1c2goW2MsZV0pfXZhciBiPVtdO2EoInUiLCJHVE0iKTthKCJ1dCIsIlRBR0dJTkciKTthKCJoIiwiSEVBTFRIIik7cmV0dXJuIGJ9O3ZhciBqej0iaHR0cHM6Ly8iK0UoMjEpLGt6PWZ1bmN0aW9uKCl7dGhpcy5OPSExO3RoaXMuUj1bXTt0aGlzLlo9W107dGhpcy5IPXtUQzowLEhUQzowfTt0aGlzLks9e319LGx6PWZ1bmN0aW9uKGEsYixjLGQpe2EuS1tiXXx8KGEuS1tiXT17fSk7YS5LW2JdW2NdPWR9LG96PWZ1bmN0aW9uKGEpe3ZhciBiPSIiLGM9IiIsZD1teigpO0FiKGQpJiYoYS5ILkk9TWF0aC5mbG9vcihkKSk7Yz1ueihhLkgsSnkpLnRvU3RyaW5nKCk7Zm9yKHZhciBlPW0oT2JqZWN0LmtleXMoYS5LKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWUsaD1hLktbZ10ubmFtZSxsPSIiLG49bnooYS5LW2ddLEt5KTtuJiYobD1oKyIuIituLnRvU3RyaW5nKCksYis9In4iK2wpfXZhciBwPSJ+QVdDVCIrYS5SLmpvaW4oIi4iKSxxPSJ+R0EiK2EuWi5qb2luKCIuIikscj0iJmNjaWQ9Iit2aygpLnRvU3RyaW5nKCkrIiZjaWQ9IitFKDUpLnRvU3RyaW5nKCkrIiZsPSIrYytiKyhhLlIubGVuZ3RoPwpwOiIiKSsoYS5aLmxlbmd0aD9xOiIiKTtpZihNKDIxNCkpe3ZhciB0LHU9KHQ9cmQoKSk9PW51bGw/dm9pZCAwOnQuZ2V0RW50cmllc0J5TmFtZShLYykubWFwKGZ1bmN0aW9uKHYpe3JldHVybiBTdHJpbmcodi5kdXJhdGlvbil9KS5qb2luKCIuIik7dSYmKHIrPSJ+U1MiK3UpfXJldHVybiByfSxwej1mdW5jdGlvbihhLGIpe2lmKCFiLnN0YWdlfHxhLk58fCFPeSgpfHxTeShiKSlyZXR1cm4hMTt2YXIgYyxkPShjPXJkKCkpPT1udWxsP3ZvaWQgMDpjLnRpbWVPcmlnaW47aWYoIUFiKGQpKWEuTj0hMDtlbHNlIGlmKEFiKCRrKDI1KSkmJiFTeSh7c3RhZ2U6SXkuWC5qZH0pJiYhYS5OJiZPeSgpKXRyeXt2YXIgZT1OdW1iZXIoJGsoMjUpKTtUeSh7c3RhZ2U6SXkuWC5qZH0se3N0YXJ0VGltZTpNYXRoLm1heChlLWQsMCl9KTtUeSh7c3RhZ2U6SXkuWC5pan0se3N0YXJ0VGltZTowfSk7dmFyIGY9VXkoe3N0YWdlOkl5LlguamR9LEl5LlguaWopO2YmJihhLkguTD1NYXRoLmZsb29yKGYpKX1jYXRjaChnKXthLk49CiEwfWlmKGEuTilyZXR1cm4hMTt0cnl7aWYoIVR5KGIpKXJldHVybiExfWNhdGNoKGcpe3JldHVybiBhLk49ITAsITF9cmV0dXJuITB9LHF6PWZ1bmN0aW9uKGEsYixjKXtpZihweihhLGIpKXRyeXt2YXIgZD1VeShiLGMpO2lmKGQpcmV0dXJuIE1hdGguZmxvb3IoZCl9Y2F0Y2goZSl7YS5OPSEwfX0sc3o9ZnVuY3Rpb24oKXt2YXIgYT1yeigpO3B6KGEse3N0YWdlOkl5LlgubWl9KX0sdHo9ZnVuY3Rpb24oKXt2YXIgYT1yeigpLGI9cXooYSx7c3RhZ2U6SXkuWC5Ya30sSXkuWC5taSk7YiE9PXZvaWQgMCYmKGEuSC5TPWIpfSx1ej1mdW5jdGlvbigpe3ZhciBhPXJ6KCk7cHooYSx7c3RhZ2U6SXkuWC5uaX0pfSx2ej1mdW5jdGlvbihhLGIpe3ZhciBjPXJ6KCk7cHooYyx7c3RhZ2U6SXkuWC5CaCxldmVudElkOmF9KTtjLktbYV0mJmMuS1thXS5uYW1lfHxseihjLGEsIm5hbWUiLFNiKGIsImd0bS4iKT9iOiIqIil9LHd6PWZ1bmN0aW9uKGEpe3ZhciBiPXJ6KCksYz1xeihiLHtzdGFnZTpJeS5YLnZtLApldmVudElkOmF9LEl5LlguQmgpO2MhPT12b2lkIDAmJmx6KGIsYSwiUyIsYyl9LHl6PWZ1bmN0aW9uKGEsYil7dmFyIGM9cnooKSxkPXF6KGMse3N0YWdlOkl5LlgudG0sZXZlbnRJZDphfSxJeS5YLkJoKTtkIT09dm9pZCAwJiZseihjLGEsIkUiLGQpO2lmKGI9PT0iZ3RtLmxvYWQiKXt2YXIgZT1xeihjLHtzdGFnZTpJeS5YLldrfSxJeS5YLlpnKTtlIT09dm9pZCAwJiYoYy5ILkU9ZSk7aW8obG8oY28uaWEuWmIpLGZ1bmN0aW9uKCl7aWYoIWMuTiYmT3koKSYmRSg1KSl7dmFyIGY9eHooKTtmIT09dm9pZCAwJiYoYy5ILkY9TWF0aC5mbG9vcihmKSk7dHJ5e2Zvcih2YXIgZz1peih7ZXZlbnRJZDowLHRmOiExfSksaD1bXSxsPW0oZyksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPW0obi52YWx1ZSkscT1wLm5leHQoKS52YWx1ZSxyPXAubmV4dCgpLnZhbHVlO2gucHVzaCgiJiIrcSsiPSIrcil9dmFyIHQ9Q3AoKSx1PVtbZmsoanopLCIvYT92PTMmdD1sIiwiJnBpZD0iKwpEYigpLnRvU3RyaW5nKCksIiZydj0iK0UoMTQpLHQ/IiZ0YWdfZXhwPSIrdDoiIixoLmpvaW4oIiIpXS5qb2luKCIiKSwiJmd0bT0iLGR1KCksb3ooYyldLmpvaW4oIiIpO2lmKHUubGVuZ3RoPjIwMjIpe3ZhciB2PU1hdGgubWF4KHUubGFzdEluZGV4T2YoIi5UUyIsMjAyMiksdS5sYXN0SW5kZXhPZigifiIsMjAyMikpO3U9dS5zbGljZSgwLHYpfVhuKHtkZXN0aW5hdGlvbklkOkUoNSksZW5kcG9pbnQ6NTZ9LHUpfWNhdGNoKHgpe319fSl9fSx6ejtmdW5jdGlvbiByeigpe3p6fHwoeno9bmV3IGt6KTtyZXR1cm4genp9ZnVuY3Rpb24gbXooKXt0cnl7dmFyIGE7cmV0dXJuKChhPXJkKCkpPT1udWxsP3ZvaWQgMDphLmdldEVudHJpZXNCeVR5cGUoIm5hdmlnYXRpb24iKVswXSkuZG9tSW50ZXJhY3RpdmV9Y2F0Y2goYil7fX0KZnVuY3Rpb24gbnooYSxiKXtyZXR1cm4gT2JqZWN0LmtleXMoYikubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBiW2NdfSkuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBhW2NdIT09dm9pZCAwfSkubWFwKGZ1bmN0aW9uKGMpe3JldHVybigiIisoYz09PSJ0YWciPyIiOmMpKS5jb25jYXQoYVtjXS50b1N0cmluZygpKX0pLmpvaW4oIi4iKX1mdW5jdGlvbiBBeihhKXt2YXIgYj1yeigpLGM9cXooYix7c3RhZ2U6SXkuWC5FbSxldmVudElkOmF9LEl5LlguamQpO2MhPT12b2lkIDAmJmIuWi5wdXNoKGMpfWZ1bmN0aW9uIEJ6KGEpe3ZhciBiPXJ6KCksYz1xeihiLHtzdGFnZTpJeS5YLkVrLGV2ZW50SWQ6YX0sSXkuWC5qZCk7YyE9PXZvaWQgMCYmYi5SLnB1c2goYyl9ZnVuY3Rpb24gQ3ooYSl7dmFyIGI9cnooKTtweihiLHtzdGFnZTpJeS5YLlRpLGV2ZW50SWQ6YX0pfQpmdW5jdGlvbiBEeihhKXt2YXIgYj1yeigpLGM9cXooYix7c3RhZ2U6SXkuWC5zbSxldmVudElkOmF9LEl5LlguVGkpO2MhPT12b2lkIDAmJmx6KGIsYSwiViIsYyl9ZnVuY3Rpb24geHooKXt0cnl7dmFyIGEsYjtyZXR1cm4oYj0oYT1yZCgpKT09bnVsbD92b2lkIDA6YS5nZXRFbnRyaWVzQnlUeXBlKCJwYWludCIpLmZpbmQoZnVuY3Rpb24oYyl7cmV0dXJuIGMubmFtZT09PSJmaXJzdC1jb250ZW50ZnVsLXBhaW50In0pKT09bnVsbD92b2lkIDA6Yi5zdGFydFRpbWV9Y2F0Y2goYyl7fX1mdW5jdGlvbiBFeihhLGIpe3ZhciBjPXJ6KCk7cHooYyx7c3RhZ2U6SXkuWC54aixldmVudElkOmEuaWQsdGFnSWQ6TnVtYmVyKGJbR2YueWpdKX0pfQpmdW5jdGlvbiBGeihhLGIsYyl7dmFyIGQ9cnooKSxlPWRuKGIpLGY9TnVtYmVyKGJbR2YueWpdKSxnPXF6KGQse3N0YWdlOmMsZXZlbnRJZDphLmlkLHRhZ0lkOmZ9LEl5LlgueGopO2lmKGchPT12b2lkIDAmJmQuS1thLmlkXSl7dmFyIGg9ZC5LW2EuaWRdLnRhZ3x8IiIsbCxuPShsPU15W2NdKSE9bnVsbD9sOiIxIixwPW5ldyBSZWdFeHAoIlRTXFxkIitlKyIuVEkiK2YpLHE9IlRTIituK2UrIi5USSIrZisiLlRFIitnO2guc2VhcmNoKHApPj0wP24hPT0iMSImJmx6KGQsYS5pZCwidGFnIixoLnJlcGxhY2UocCxxLnJlcGxhY2UoIi5URSIrZywiIikpKToobHooZCxhLmlkLCJ0YWciLChoP2grIi4iOiIiKStxKSxlPT09Imh0bWwiJiYoZC5ILkhUQys9MSksZC5ILlRDKz0xKX19O3ZhciBLej17Z2o6e2JwOiIxIix1cToiMiIsVnE6IjMifX07CnZhciBMej17fSxNej1PYmplY3QuZnJlZXplKChMeltGLkQuZmhdPTEsTHpbRi5ELmdoXT0xLEx6W0YuRC5CZF09MSxMeltGLkQuQ2RdPTEsTHpbRi5ELlJjXT0xLEx6W0YuRC5zaV09MSxMeltGLkQudWldPTEsTHpbRi5ELkNsXT0xLEx6W0YuRC5paF09MSxMeltGLkQuQ2ZdPTEsTHpbRi5ELkRmXT0xLEx6W0YuRC5FZl09MSxMeltGLkQuSGFdPTEsTHpbRi5ELkZmXT0xLEx6W0YuRC5GZF09MSxMeltGLkQudWNdPTEsTHpbRi5ELkhkXT0xLEx6W0YuRC5MYl09MSxMeltGLkQuQ2JdPTEsTHpbRi5ELlRiXT0xLEx6W0YuRC5uYl09MSxMeltGLkQuZWJdPTEsTHpbRi5ELkdlXT0xLEx6W0YuRC5raF09MSxMeltGLkQuT2FdPTEsTHpbRi5ELk9wXT0xLEx6W0YuRC5TcF09MSxMeltGLkQuSWVdPTEsTHpbRi5ELkdpXT0xLEx6W0YuRC5RZl09MSxMeltGLkQuVGFdPTEsTHpbRi5ELlljXT0xLEx6W0YuRC5aY109MSxMeltGLkQudGJdPTEsTHpbRi5ELlFkXT0xLEx6W0YuRC5SZF09MSxMeltGLkQuU2RdPQoxLEx6W0YuRC5OZV09MSxMeltGLkQuemFdPTEsTHpbRi5ELlVhXT0xLEx6W0YuRC5XbF09MSxMeltGLkQuWGxdPTEsTHpbRi5ELllsXT0xLEx6W0YuRC5abF09MSxMeltGLkQuV2JdPTEsTHpbRi5ELlRkXT0xLEx6W0YuRC5YYl09MSxMeltGLkQuZGRdPTEsTHpbRi5ELlVkXT0xLEx6W0YuRC5RZV09MSxMeltGLkQuUGFdPTEsTHpbRi5ELnljXT0xLEx6W0YuRC5WZF09MSxMeltGLkQuemNdPTEsTHpbRi5ELkFjXT0xLEx6W0YuRC5mYl09MSxMeltGLkQuUWFdPTEsTHopKSxOej17fSxPej0oTnpbRi5ELlVjXT0xLE56W0YuRC5QcF09MSxOeltGLkQuSGVdPTEsTnpbRi5ELnJpXT0xLE56Lm9yZWY9MSxOeik7dmFyIFB6LFF6OwpmdW5jdGlvbiBSeihhLGIpe3ZhciBjPWFbR2YuWWJdLGQ9YiYmYi5ldmVudDtpZighYyl0aHJvdyBFcnJvcigiRXJyb3I6IE5vIGZ1bmN0aW9uIG5hbWUgZ2l2ZW4gZm9yIGZ1bmN0aW9uIGNhbGwuIik7dmFyIGU9UXpbY10sZj17fSxnO2ZvcihnIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShnKSYmKFNiKGcsInZ0cF8iKT9mW2UhPT12b2lkIDA/ZzpnLnN1YnN0cmluZyg0KV09YVtnXTpnPT09R2YuRnEudG9TdHJpbmcoKSYmKGZbZSE9PXZvaWQgMD8idnRwX2d0bUdlbmVyYXRlZFRhZ2dpbmdNZXRhZGF0YSI6Z109YVtnXSkpO0lmKDYxKSYmZSYmKGYudnRwX2V4dHJhRXhwZXJpbWVudElkcz0hMCk7ZSYmZCYmZC5jYWNoZWRNb2RlbFZhbHVlcyYmKGYudnRwX2d0bUNhY2hlZFZhbHVlcz1kLmNhY2hlZE1vZGVsVmFsdWVzKTtiJiZlJiYoZi52dHBfZ3RtRW50aXR5SW5kZXg9Yi5pbmRleCxmLnZ0cF9ndG1FbnRpdHlOYW1lPWIubmFtZSk7cmV0dXJuIGUhPT12b2lkIDA/ZShmKTpQeihjLGYsCmIpfXZhciBUej1mdW5jdGlvbigpe3ZhciBhPVN6O2lmKE0oNTg1KSYmZm4uSyl7dmFyIGI9RSg1KS5pbmRleE9mKCJHVE0tIik9PT0wJiZJZig2MiksYyxkPSgoYz1GaygpKT09bnVsbD92b2lkIDA6Yy5zb3VyY2UpPT09MTtiJiYhZHx8YS5IfHwoYS5IPSEwLFVtKCJhYmwiLCIxIiksdG8oKSl9fSxTej1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9ITF9O3ZhciBVej1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLkg9YTt0aGlzLmluZGV4PWI7dGhpcy50YWdzPWM7dGhpcy5tYWNyb3M9ZDt0aGlzLm5hbWU9U3RyaW5nKHRoaXMuSFtHZi5SbV18fCIiKX07ClV6LnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbihhLGIpe2lmKCFiW3RoaXMuaW5kZXhdJiYhYS5pc0Jsb2NrZWQodGhpcy5IKSl7Ylt0aGlzLmluZGV4XT0hMDt0aGlzLkhbR2YucGwudG9TdHJpbmcoKV0mJlR6KCk7dmFyIGM9dGhpcy5uYW1lLGQ7dHJ5e3ZhciBlPXt9LGY7Zm9yKGYgaW4gdGhpcy5IKXRoaXMuSC5oYXNPd25Qcm9wZXJ0eShmKSYmKGVbZl09ZWwodGhpcy5IW2ZdLGEsdGhpcy50YWdzLHRoaXMubWFjcm9zLGIpKTtlLnZ0cF9ndG1FdmVudElkPWEuaWQ7YS5wcmlvcml0eUlkJiYoZS52dHBfZ3RtUHJpb3JpdHlJZD1hLnByaW9yaXR5SWQpO3ZhciBnPWQ9UnooZSx7ZXZlbnQ6YSxpbmRleDp0aGlzLmluZGV4LHR5cGU6MixuYW1lOmN9KTtlW0dmLlprXSYmdHlwZW9mIGc9PT0ic3RyaW5nIiYmKGc9ZVtHZi5aa109PT0xP2cudG9Mb3dlckNhc2UoKTpnLnRvVXBwZXJDYXNlKCkpO2UuaGFzT3duUHJvcGVydHkoR2YuYWgpJiYoZz1ZZigxOCk/ZVtHZi5haF09PT0xPwpWZihnLCJQRVJJT0QiKTplW0dmLmFoXT09PTI/VmYoZywiQ09NTUEiKTpWZihnLCJBVVRPTUFUSUMiKTplW0dmLmFoXT09PTE/VmYoZywiUEVSSU9EIik6VmYoZywiQ09NTUEiKSk7ZS5oYXNPd25Qcm9wZXJ0eShHZi5ibCkmJmc9PT1udWxsJiYoZz1lW0dmLmJsXSk7ZS5oYXNPd25Qcm9wZXJ0eShHZi5pbCkmJmc9PT12b2lkIDAmJihnPWVbR2YuaWxdKTtlLmhhc093blByb3BlcnR5KEdmLmVwKSYmKGc9SmIoZykpO2UuaGFzT3duUHJvcGVydHkoR2YuZmwpJiZnPT09ITAmJihnPWVbR2YuZmxdKTtlLmhhc093blByb3BlcnR5KEdmLmFsKSYmZz09PSExJiYoZz1lW0dmLmFsXSk7ZD1nfWNhdGNoKGgpe2EubG9nTWFjcm9FcnJvciYmYS5sb2dNYWNyb0Vycm9yKGgsTnVtYmVyKHRoaXMuaW5kZXgpLGMpLGQ9ITF9Ylt0aGlzLmluZGV4XT0hMTtyZXR1cm4gZH19O1V6LnByb3RvdHlwZS5GZz1mdW5jdGlvbigpe3JldHVybiBuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHRoaXMuSCl9O3ZhciBWej1mdW5jdGlvbihhLGIsYyl7dGhpcy5IPWE7dGhpcy50YWdzPWI7dGhpcy5tYWNyb3M9Y307VnoucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKGEsYil7dHJ5e2Zvcih2YXIgYz17fSxkPW0oT2JqZWN0LmtleXModGhpcy5IKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWU7Y1tmXT1mPT09ImZ1bmN0aW9uIj90aGlzLkhbZl06ZWwodGhpcy5IW2ZdLGEsdGhpcy50YWdzLHRoaXMubWFjcm9zLGIpfXJldHVybiBjbChjKX1jYXRjaChnKXtKU09OLnN0cmluZ2lmeSh0aGlzLkgpfXJldHVybiAyfTtWei5wcm90b3R5cGUuRmc9ZnVuY3Rpb24oKXtyZXR1cm4gbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSx0aGlzLkgpfTt2YXIgV3o9ZnVuY3Rpb24oYSxiKXt0aGlzLmluZGV4PWI7dGhpcy5OPVtdO3RoaXMuUj1bXTt0aGlzLks9W107dGhpcy5IPVtdO3RoaXMubmFtZT0iIjtmb3IodmFyIGM9bShhKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9bShkLnZhbHVlKSxmPWUubmV4dCgpLnZhbHVlLGc9eWEoZSksaD1mLGw9ZztoPT09ImlmIj90aGlzLk49bDpoPT09InVubGVzcyI/dGhpcy5SPWw6aD09PSJhZGQiP3RoaXMuSz1sOmg9PT0iYmxvY2siP3RoaXMuSD1sOmg9PT0icnVsZU5hbWUiJiYodGhpcy5uYW1lPWxbMF0pfX07Cld6LnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbihhLGIpe3ZhciBjPVh6KHRoaXMsYiksZD1bXSxlPVtdO2M/KGQucHVzaC5hcHBseShkLHcodGhpcy5LKSksZS5wdXNoLmFwcGx5KGUsdyh0aGlzLkgpKSk6Yz09PW51bGwmJmUucHVzaC5hcHBseShlLHcodGhpcy5IKSk7cmV0dXJue2ZpcmluZ1RhZ3M6ZCxibG9ja2luZ1RhZ3M6ZX19Owp2YXIgWHo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9bShhLk4pLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1iKGQudmFsdWUpO2lmKGU9PT0wKXJldHVybiExO2lmKGU9PT0yKXJldHVybiBudWxsfWZvcih2YXIgZj1tKGEuUiksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpe3ZhciBoPWIoZy52YWx1ZSk7aWYoaD09PTIpcmV0dXJuIG51bGw7aWYoaD09PTEpcmV0dXJuITF9cmV0dXJuITB9O1d6LnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZX07dmFyIFl6PWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuSWE9YTt0aGlzLmluZGV4PWI7dGhpcy50YWdzPWM7dGhpcy5tYWNyb3M9ZDt0aGlzLk89U3RyaW5nKHRoaXMuSWFbR2YuWWJdKTt0aGlzLm5hbWU9U3RyaW5nKHRoaXMuSWFbR2YuUm1dfHwiIik7dGhpcy50YWdJZD1OdW1iZXIodGhpcy5JYVtHZi55al0pfTsKWXoucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKGEsYixjKXtjPWM9PT12b2lkIDA/e306Yzt2YXIgZCxlPWM7ZT1lPT09dm9pZCAwP3t9OmU7dmFyIGY9e30sZztmb3IoZyBpbiB0aGlzLklhKXRoaXMuSWEuaGFzT3duUHJvcGVydHkoZykmJihmW2ddPWVsKHRoaXMuSWFbZ10sYSx0aGlzLnRhZ3MsdGhpcy5tYWNyb3MsW10pKTtkPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sZixlKTtkLnZ0cF9ndG1UYWdJZD10aGlzLnRhZ0lkO3RoaXMuSWFbR2YucGwudG9TdHJpbmcoKV0mJlR6KCk7UnooZCx7ZXZlbnQ6YSxpbmRleDp0aGlzLmluZGV4LHR5cGU6MSxuYW1lOnRoaXMubmFtZX0pfTtZei5wcm90b3R5cGUuRmc9ZnVuY3Rpb24oKXtyZXR1cm4gbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSx0aGlzLklhKX07CnZhciBaej1mdW5jdGlvbihhLGIpe2lmKGEuSWFbR2YudG5dKXJldHVybiBlbChhLklhW0dmLnRuXSxiLGEudGFncyxhLm1hY3JvcyxbXSl9LCR6PWZ1bmN0aW9uKGEsYil7aWYoYS5JYVtHZi5Ebl0pcmV0dXJuIGVsKGEuSWFbR2YuRG5dLGIsYS50YWdzLGEubWFjcm9zLFtdKX0sYUE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLklhW0dmLmNwXTtpZihjKXJldHVybiBlbChjLGIsYS50YWdzLGEubWFjcm9zLFtdKX07WXoucHJvdG90eXBlLmdldE1ldGFkYXRhPWZ1bmN0aW9uKGEpe3JldHVybiBlbCh0aGlzLklhW0dmLk1FVEFEQVRBXSxhLHRoaXMudGFncyx0aGlzLm1hY3JvcyxbXSl9O1l6LnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZX07dmFyIGJBPWZ1bmN0aW9uKCl7dGhpcy5tYWNyb3M9W107dGhpcy5ydWxlcz1bXTt0aGlzLnByZWRpY2F0ZXM9W107dGhpcy50YWdzPVtdO3RoaXMudms9W119O2JBLnByb3RvdHlwZS5nZXRSdWxlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJ1bGVzfTt2YXIgY0E9bmV3IGJBO2Z1bmN0aW9uIGRBKGEsYixjLGQpe3ZhciBlPVdjKCksZjtpZihlPT09MSlhOnt2YXIgZz1FKDMpO2c9Zy50b0xvd2VyQ2FzZSgpO2Zvcih2YXIgaD0iaHR0cHM6Ly8iK2csbD0iaHR0cDovLyIrZyxuPTEscD1CLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxxPTA7cTxwLmxlbmd0aCYmcTwxMDA7cSsrKXt2YXIgcj1wW3FdLnNyYztpZihyKXtyPXIudG9Mb3dlckNhc2UoKTtpZihyLmluZGV4T2YobCk9PT0wKXtmPTM7YnJlYWsgYX1uPT09MSYmci5pbmRleE9mKGgpPT09MCYmKG49Mil9fWY9bn1lbHNlIGY9ZTtyZXR1cm4oZj09PTJ8fGR8fCJodHRwOiIhPT1BLmxvY2F0aW9uLnByb3RvY29sP2E6YikrY307dmFyIGVBPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLks9e307dGhpcy5IPXt9O2Z6KGZ1bmN0aW9uKGIpe3ZhciBjPVtdLGQ7Zm9yKGQgaW4gYS5LKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLkssZCkmJmMucHVzaChkKyJ+IithLktbZF0pO3ZhciBlPVtdLGY7Zm9yKGYgaW4gYS5IKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLkgsZikmJmUucHVzaChmKyJ+IithLkhbZl0pO2IudGYmJihhLks9e30sYS5IPXt9KTt2YXIgZz1bXTtjLmxlbmd0aD4wJiZnLnB1c2goWyJiY3MiLGMuam9pbigiLiIpXSk7ZS5sZW5ndGg+MCYmZy5wdXNoKFsiYmV0IixlLmpvaW4oIi4iKV0pO3JldHVybiBnfSl9LGZBO2Z1bmN0aW9uIGdBKCl7ZkF8fChmQT1uZXcgZUEpfTtmdW5jdGlvbiBoQShhLGIsYyxkLGUpe2lmKCFFayhhKSl7ZC5sb2FkRXhwZXJpbWVudHM9eWooKTtIayhhLGQsZSk7dmFyIGY9aUEoYSksZz1mdW5jdGlvbigpe29rKCkuY29udGFpbmVyW2FdJiYob2soKS5jb250YWluZXJbYV0uc3RhdGU9Myk7akEoKX0saD17ZGVzdGluYXRpb25JZDphLGVuZHBvaW50OjB9O2lmKFdqKCkpe3ZhciBsPVhqKCksbj1sKyIvIitrQShmLGEpO1puKGgsbix2b2lkIDAsZnVuY3Rpb24oKXtsQShhLG4sbCsiLyIrZixoLGcpfSl9ZWxzZXt2YXIgcD1TYihhLCJHVE0tIikscT1kaygpLHI9Yz8iL2d0YWcvanMiOiIvZ3RtLmpzIix0PW1BKGIscitmLGEpO2lmKCF0KXt2YXIgdT1FKDMpK3I7cSYmS2MmJnAmJih1PUtjLnJlcGxhY2UoL14oPzpodHRwcz86XC9cLyk/L2ksIiIpLnNwbGl0KC9bPyNdLylbMF0pO3Q9ZEEoImh0dHBzOi8vIiwiaHR0cDovLyIsdStmKX1abihoLHQsdm9pZCAwLGcpfX19CmZ1bmN0aW9uIGpBKCl7S2soKXx8R2IoTGsoKSxmdW5jdGlvbihhLGIpe25BKGEsYi50cmFuc3BvcnRVcmwsYi5jb250ZXh0KTtQKDkyKX0pfWZ1bmN0aW9uIG5BKGEsYixjLGQpe2lmKCFHayhhKSlpZihjLmxvYWRFeHBlcmltZW50c3x8KGMubG9hZEV4cGVyaW1lbnRzPXlqKCkpLEtrKCkpSmsoYSxiLGMsZCk7ZWxzZXtJayhhLGMsZCk7dmFyIGU9e2Rlc3RpbmF0aW9uSWQ6YSxlbmRwb2ludDowfTtpZihXaigpKXt2YXIgZj1YaigpLGc9Imd0ZCIraUEoYSwhMCksaD1mKyIvIitrQShnLGEpO1puKGUsaCx2b2lkIDAsZnVuY3Rpb24oKXtsQShhLGgsZisiLyIrZyxlKX0pfWVsc2V7dmFyIGw9Ii9ndGFnL2Rlc3RpbmF0aW9uIitpQShhLCEwKSxuPW1BKGIsbCxhKTtufHwobj1kQSgiaHR0cHM6Ly8iLCJodHRwOi8vIixFKDMpK2wpKTtabihlLG4pfX19CmZ1bmN0aW9uIGxBKGEsYixjLGQsZSl7aWYoTSg0MTMpKXtnQSgpO3ZhciBmPWZBO2lmKGZuLk4pe3ZhciBnPUEucGVyZm9ybWFuY2UsaD0tMTtpZihnJiZnLmdldEVudHJpZXNCeVR5cGUpe3ZhciBsPVJqKGIpLmhyZWYsbj1nLmdldEVudHJpZXNCeU5hbWUobCkucG9wKCk7aWYoIW4pZm9yKHZhciBwPWcuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKSxxPTA7cTxwLmxlbmd0aDtxKyspe3ZhciByPXBbcV07aWYoci5uYW1lJiZyLm5hbWUuaW5kZXhPZihiKSE9PS0xKXtuPXI7YnJlYWt9fW4mJm4ucmVzcG9uc2VTdGF0dXMhPT12b2lkIDAmJihoPW4ucmVzcG9uc2VTdGF0dXMpfWYuS1thXT1ofVAoMTkwKTt2YXIgdD1ubShqbS5iYS5rail8fHt9O3RbYV09ITA7bW0oam0uYmEua2osdCk7dmFyIHU9YysoYy5pbmRleE9mKCI/Iik9PT0tMT8iP2Y9MSI6IiZmPTEiKTtlP1puKGQsdSx2b2lkIDAsZSk6Wm4oZCx1KX1lbHNlIGUmJmUoKX0KZnVuY3Rpb24gaUEoYSxiKXtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYz0iP2lkPSIrZW5jb2RlVVJJQ29tcG9uZW50KGEpLGQ9RSgxOSk7ZCE9PSJkYXRhTGF5ZXIiJiYoYys9IiZsPSIrZCk7dmFyIGU9U2IoYSwiR1RNLSIpO2lmKCFlfHxiKWMrPSImY3g9YyI7ZSYmSWYoNjIpJiYoYys9IiZnb29nbGVfb25seT10cnVlIik7dmFyIGY9YyxnLGg9e0RvOkpmKDE1KSxJbzpFKDE0KX07Zz1DZihoKTtjPWYrKCImZ3RtPSIrZyk7ZGsoKSYmKGMrPSImc2lnbj0iK0FqLnFqKTt2YXIgbD1jLG49SmYoNTQpO2lmKG49PT0xKXtsKz0iJmZwcz1mYyI7dmFyIHA9RSg2MCk7cCYmKGwrPSImZ2Rldj0iK3ApfWVsc2Ugbj09PTImJihsKz0iJmZwcz1mZSIpO3JldHVybiBsfQpmdW5jdGlvbiBrQShhLGIpe2lmKCFNKDQxMyl8fCFYaigpKXJldHVybiBhO3ZhciBjPUUoNTgpO2lmKCFjKXJldHVybiBQKDE4MiksYTt0cnl7dmFyIGQ9TmIoKSxlPUVmKGEsYyksZj1OYigpLWQ7Z0EoKTt2YXIgZz1mQTtmbi5OJiYoZy5IW2JdPWYpO3JldHVybiBlfWNhdGNoKGgpe3JldHVybiBQKDE4MyksYX19ZnVuY3Rpb24gbUEoYSxiLGMpe2lmKGFrKCkmJmEpe3ZhciBkPUUoNTgpLGU9WGooKTtpZihkJiZlKXRyeXt2YXIgZj1OYigpO2I9ZSsiLyIrRWYoYixkKTt2YXIgZz1OYigpLWY7Z0EoKTt2YXIgaD1mQTtmbi5OJiYoaC5IW2NdPWcpfWNhdGNoKGwpe1AoMTgzKX1yZXR1cm4gWWooYSxiKX19O3ZhciBwQT1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5LPW5ldyBGYjt0aGlzLkg9e307dGhpcy5OPXt9O3RoaXMuUj17bmFtZTpFKDE5KSxzZXQ6ZnVuY3Rpb24oYixjKXtFZChWYihiLGMpLGEuSCk7b0EoYSl9LGdldDpmdW5jdGlvbihiKXtyZXR1cm4gYS5nZXQoYiwyKX0scmVzZXQ6ZnVuY3Rpb24oKXthLks9bmV3IEZiO2EuSD17fTtvQShhKX19fTtwQS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIhPTI/dGhpcy5LLmdldChhKTpxQSh0aGlzLGEpfTt2YXIgcUE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIuc3BsaXQoIi4iKTtjPWN8fFtdO2Zvcih2YXIgZT1hLkgsZj0wO2Y8ZC5sZW5ndGg7ZisrKXtpZihlPT09bnVsbClyZXR1cm4hMTtpZihlPT09dm9pZCAwKWJyZWFrO2U9ZVtkW2ZdXTtpZihjLmluZGV4T2YoZSkhPT0tMSlyZXR1cm59cmV0dXJuIGV9OwpwQS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5OLmhhc093blByb3BlcnR5KGEpfHwodGhpcy5LLnNldChhLGIpLEVkKFZiKGEsYiksdGhpcy5IKSxvQSh0aGlzKSl9O3ZhciBzQT1mdW5jdGlvbigpe2Zvcih2YXIgYT1bImd0bS5hbGxvd2xpc3QiLCJndG0uYmxvY2tsaXN0IiwiZ3RtLndoaXRlbGlzdCIsImd0bS5ibGFja2xpc3QiLCJ0YWdUeXBlQmxhY2tsaXN0Il0sYj1yQSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY10sZT1iLmdldChkLDEpO2lmKEFycmF5LmlzQXJyYXkoZSl8fENkKGUpKWU9RWQoZSxudWxsKTtiLk5bZF09ZX19LG9BPWZ1bmN0aW9uKGEsYil7R2IoYS5OLGZ1bmN0aW9uKGMsZCl7YS5LLnNldChjLGQpO0VkKFZiKGMpLGEuSCk7RWQoVmIoYyxkKSxhLkgpO2ImJmRlbGV0ZSBhLk5bY119KX0sckE9bmV3IHBBLHRBPXJBLlI7ZnVuY3Rpb24gdUEoYSxiKXtyZXR1cm4gckEuZ2V0KGEsYil9CmZ1bmN0aW9uIHZBKGEsYil7dmFyIGM9Yj09PXZvaWQgMD8yOmIsZD1yQSxlLGY9KGM9PT12b2lkIDA/MjpjKSE9PTE/cUEoZCxhKTpkLksuZ2V0KGEpO0FkKGYpPT09ImFycmF5Inx8QWQoZik9PT0ib2JqZWN0Ij9lPUVkKGYsbnVsbCk6ZT1mO3JldHVybiBlfTt2YXIgd0E9bmV3IFJlZ0V4cCgvXiguKlwuKT8oZ29vZ2xlfHlvdXR1YmV8YmxvZ2dlcnx3aXRoZ29vZ2xlKShcLmNvbT8pPyhcLlthLXpdezJ9KT9cLj8kLykseEE9e2NsOlsiZWNsIl0sY3VzdG9tUGl4ZWxzOlsibm9uR29vZ2xlUGl4ZWxzIl0sZWNsOlsiY2wiXSxlaGw6WyJobCJdLGdhYXdjOlsiZ29vZ3RhZyJdLGhsOlsiZWhsIl0saHRtbDpbImN1c3RvbVNjcmlwdHMiLCJjdXN0b21QaXhlbHMiLCJub25Hb29nbGVQaXhlbHMiLCJub25Hb29nbGVTY3JpcHRzIiwibm9uR29vZ2xlSWZyYW1lcyJdLGN1c3RvbVNjcmlwdHM6WyJodG1sIiwiY3VzdG9tUGl4ZWxzIiwibm9uR29vZ2xlUGl4ZWxzIiwibm9uR29vZ2xlU2NyaXB0cyIsIm5vbkdvb2dsZUlmcmFtZXMiXSxub25Hb29nbGVQaXhlbHM6W10sbm9uR29vZ2xlU2NyaXB0czpbIm5vbkdvb2dsZVBpeGVscyJdLG5vbkdvb2dsZUlmcmFtZXM6WyJub25Hb29nbGVQaXhlbHMiXX0seUE9e2NsOlsiZWNsIl0sY3VzdG9tUGl4ZWxzOlsiY3VzdG9tU2NyaXB0cyIsCiJodG1sIl0sZWNsOlsiY2wiXSxlaGw6WyJobCJdLGdhYXdjOlsiZ29vZ3RhZyJdLGhsOlsiZWhsIl0saHRtbDpbImN1c3RvbVNjcmlwdHMiXSxjdXN0b21TY3JpcHRzOlsiaHRtbCJdLG5vbkdvb2dsZVBpeGVsczpbImN1c3RvbVBpeGVscyIsImN1c3RvbVNjcmlwdHMiLCJodG1sIiwibm9uR29vZ2xlU2NyaXB0cyIsIm5vbkdvb2dsZUlmcmFtZXMiXSxub25Hb29nbGVTY3JpcHRzOlsiY3VzdG9tU2NyaXB0cyIsImh0bWwiXSxub25Hb29nbGVJZnJhbWVzOlsiY3VzdG9tU2NyaXB0cyIsImh0bWwiLCJub25Hb29nbGVTY3JpcHRzIl19LHpBPSJnb29nbGUgY3VzdG9tUGl4ZWxzIGN1c3RvbVNjcmlwdHMgaHRtbCBub25Hb29nbGVQaXhlbHMgbm9uR29vZ2xlU2NyaXB0cyBub25Hb29nbGVJZnJhbWVzIi5zcGxpdCgiICIpOwpmdW5jdGlvbiBBQSgpe3ZhciBhPXVBKCJndG0uYWxsb3dsaXN0Iil8fHVBKCJndG0ud2hpdGVsaXN0Iik7YSYmUCg5KTtJZig2MikmJihhPXZvaWQgMCk7QkEoKSYmKElmKDYyKT9QKDExNik6KFAoMTE3KSxJZig0OCkmJihhPVtdLHdpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5sb2cmJndpbmRvdy5jb25zb2xlLmxvZygiR1RNIGJsb2NrZWQuIFNlZSBnby8xMzY4NzcyOC4iKSkpKTt2YXIgYj1hJiZSYihLYihhKSx4QSksYz11QSgiZ3RtLmJsb2NrbGlzdCIpfHx1QSgiZ3RtLmJsYWNrbGlzdCIpO2N8fChjPXVBKCJ0YWdUeXBlQmxhY2tsaXN0IikpJiZQKDMpO2M/UCg4KTpjPVtdO0JBKCkmJihjPUtiKGMpLGMucHVzaCgibm9uR29vZ2xlUGl4ZWxzIiwibm9uR29vZ2xlU2NyaXB0cyIsInNhbmRib3hlZFNjcmlwdHMiKSk7S2IoYykuaW5kZXhPZigiZ29vZ2xlIik+PTAmJlAoMik7dmFyIGQ9YyYmUmIoS2IoYykseUEpLGU9e307cmV0dXJuIGZ1bmN0aW9uKGYpe3ZhciBnPWYmJgpmW0dmLlliXTtpZighZ3x8dHlwZW9mIGchPT0ic3RyaW5nIilyZXR1cm4hMDtnPWcucmVwbGFjZSgvXl8qLywiIik7aWYoZVtnXSE9PXZvaWQgMClyZXR1cm4gZVtnXTt2YXIgaD1hbCgyNyxmdW5jdGlvbigpe3JldHVybnt9fSlbZ118fFtdLGw9ITA7YSYmKGw9bCYmQ0EoZyxoLGIpKTt2YXIgbj0hMTtjJiYobj1EQShnLGgsZCkpO3ZhciBwPSFsfHxuOyFwJiYoaC5pbmRleE9mKCJzYW5kYm94ZWRTY3JpcHRzIik9PT0tMXx8YiYmYi5pbmRleE9mKCJzYW5kYm94ZWRTY3JpcHRzIikhPT0tMT8wOkViKGQsekEpKSYmKHA9ITApO3JldHVybiBlW2ddPXB9fWZ1bmN0aW9uIENBKGEsYixjKXtpZihjLmluZGV4T2YoYSk8MClpZihiJiZiLmxlbmd0aD4wKWZvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtpZihjLmluZGV4T2YoYltkXSk8MClyZXR1cm4gUCgxMSksITF9ZWxzZSByZXR1cm4hMTtyZXR1cm4hMH0KZnVuY3Rpb24gREEoYSxiLGMpe3ZhciBkPWMuaW5kZXhPZihhKT49MDtpZihkKXJldHVybiBkO3ZhciBlPUViKGMsYnx8W10pO2UmJlAoMTApO3JldHVybiBlfWZ1bmN0aW9uIEJBKCl7cmV0dXJuIHdBLnRlc3QoQS5sb2NhdGlvbiYmQS5sb2NhdGlvbi5ob3N0bmFtZSl9O2Z1bmN0aW9uIEVBKGEpe2Zvcih2YXIgYj1bXSxjPVtdLGQ9RkEoYSksZT1tKGNBLmdldFJ1bGVzKCkpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXtmb3IodmFyIGc9Zi52YWx1ZS5ldmFsdWF0ZShhLGQpLGg9Zy5maXJpbmdUYWdzLGw9Zy5ibG9ja2luZ1RhZ3Msbj0wO248aC5sZW5ndGg7bisrKWJbaFtuXV09ITA7Zm9yKHZhciBwPTA7cDxsLmxlbmd0aDtwKyspY1tsW3BdXT0hMH1mb3IodmFyIHE9W10scj0wO3I8Y0EudGFncy5sZW5ndGg7cisrKWJbcl0mJiFjW3JdJiYocVtyXT0hMCk7cmV0dXJuIHF9ZnVuY3Rpb24gRkEoYSl7dmFyIGI9W107cmV0dXJuIGZ1bmN0aW9uKGMpe2JbY109PT12b2lkIDAmJihiW2NdPWNBLnByZWRpY2F0ZXNbY10uZXZhbHVhdGUoYSxbXSkpO3JldHVybiBiW2NdfX07dmFyIEdBPWZ1bmN0aW9uKCl7dGhpcy5LPTA7dGhpcy5IPXt9fTtHQS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSsrdGhpcy5LO3RoaXMuSFthXT10aGlzLkhbYV18fHt9O3RoaXMuSFthXVtTdHJpbmcoZCldPXtsaXN0ZW5lcjpiLHJmOmN9O3JldHVybiBkfTtHQS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLkhbYV0sZD1TdHJpbmcoYik7aWYoIWN8fCFjW2RdKXJldHVybiExO2RlbGV0ZSBjW2RdO3JldHVybiEwfTt2YXIgSUE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtHYihIQS5IW2FdLGZ1bmN0aW9uKGQsZSl7Yy5pbmRleE9mKGUubGlzdGVuZXIpPDAmJihlLnJmPT09dm9pZCAwfHxiLmluZGV4T2YoZS5yZik+PTApJiZjLnB1c2goZS5saXN0ZW5lcil9KTtyZXR1cm4gY307ZnVuY3Rpb24gSkEoYSxiLGMpe3JldHVybntlbnRpdHlUeXBlOmEsaW5kZXhJbk9yaWdpbkNvbnRhaW5lcjpiLG5hbWVJbk9yaWdpbkNvbnRhaW5lcjpjLG9yaWdpbkNvbnRhaW5lcklkOkUoNSksb3JpZ2luQ0lkOnZrKCl9fTtmdW5jdGlvbiBLQShhLGIpe2lmKGRhdGEuZW50aXRpZXMpe3ZhciBjPWRhdGEuZW50aXRpZXNbYV07aWYoYylyZXR1cm4gY1tiXX19O3ZhciBNQT1mdW5jdGlvbihhLGIpe3RoaXMuSD0hMTt0aGlzLlI9W107dGhpcy5ldmVudERhdGE9e3RhZ3M6W119O3RoaXMuWj0hMTt0aGlzLks9dGhpcy5OPTA7TEEodGhpcyxhLGIpfSxOQT1mdW5jdGlvbihhLGIsYyxkKXtpZihDai5oYXNPd25Qcm9wZXJ0eShiKXx8Yj09PSJfX3pvbmUiKXJldHVybi0xO3ZhciBlPXt9O0NkKGQpJiYoZT1FZChkLGUpKTtlLmlkPWM7ZS5zdGF0dXM9InRpbWVvdXQiO3JldHVybiBhLmV2ZW50RGF0YS50YWdzLnB1c2goZSktMX0sT0E9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5ldmVudERhdGEudGFnc1tiXTtlJiYoZS5zdGF0dXM9YyxlLmV4ZWN1dGlvblRpbWU9ZCl9LFBBPWZ1bmN0aW9uKGEpe2lmKCFhLkgpe2Zvcih2YXIgYj1hLlIsYz0wO2M8Yi5sZW5ndGg7YysrKWJbY10oKTthLkg9ITA7YS5SLmxlbmd0aD0wfX0sTEE9ZnVuY3Rpb24oYSxiLGMpe2IhPT12b2lkIDAmJmEud2coYik7YyYmQS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7UEEoYSl9LApOdW1iZXIoYykpfTtNQS5wcm90b3R5cGUud2c9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPVBiKGZ1bmN0aW9uKCl7YmQoZnVuY3Rpb24oKXthKEUoNSksYi5ldmVudERhdGEpfSl9KTt0aGlzLkg/YygpOnRoaXMuUi5wdXNoKGMpfTt2YXIgUUE9ZnVuY3Rpb24oYSl7YS5OKys7cmV0dXJuIFBiKGZ1bmN0aW9uKCl7YS5LKys7YS5aJiZhLks+PWEuTiYmUEEoYSl9KX0sUkE9ZnVuY3Rpb24oYSl7YS5aPSEwO2EuSz49YS5OJiZQQShhKX07ZnVuY3Rpb24gU0EoKXtyZXR1cm4gQVtUQSgpXX0KZnVuY3Rpb24gVEEoKXtyZXR1cm4gQS5Hb29nbGVBbmFseXRpY3NPYmplY3R8fCJnYSJ9dmFyIFdBPW5ldyBmdW5jdGlvbigpe3RoaXMuSD17fX07ZnVuY3Rpb24gWEEoKXthOnt2YXIgYT1FKDUpO319CmZ1bmN0aW9uIFlBKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9U0EoKSxkPWMmJmMuZ2V0QnlOYW1lJiZjLmdldEJ5TmFtZShhKTtpZihkKXt2YXIgZT1kLmdldCgic2VuZEhpdFRhc2siKTtkLnNldCgic2VuZEhpdFRhc2siLGZ1bmN0aW9uKGYpe3ZhciBnPWYuZ2V0KCJoaXRQYXlsb2FkIiksaD1mLmdldCgiaGl0Q2FsbGJhY2siKSxsPWcuaW5kZXhPZigiJnRpZD0iK2IpPDA7bCYmKGYuc2V0KCJoaXRQYXlsb2FkIixnLnJlcGxhY2UoLyZ0aWQ9VUEtWzAtOV0rLVswLTldKy8sIiZ0aWQ9IitiKSwhMCksZi5zZXQoImhpdENhbGxiYWNrIix2b2lkIDAsITApKTtlKGYpO2wmJihmLnNldCgiaGl0UGF5bG9hZCIsZywhMCksZi5zZXQoImhpdENhbGxiYWNrIixoLCEwKSxmLnNldCgiX3hfMTkiLHZvaWQgMCwhMCksZShmKSl9KX19fTt2YXIgYUI9WyJlcyIsIjEiXSxiQj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5ldmVudERhdGE9e307dGhpcy5IPXt9O2Z6KGZ1bmN0aW9uKGIpe3ZhciBjO3ZhciBkPWIuZXZlbnRJZCxlPWIudGY7aWYoYS5ldmVudERhdGFbZF0pe3ZhciBmPVtdO2EuSFtkXXx8Zi5wdXNoKGFCKTtmLnB1c2guYXBwbHkoZix3KGEuZXZlbnREYXRhW2RdKSk7ZSYmKGEuSFtkXT0hMCk7Yz1mfWVsc2UgYz1bXTtyZXR1cm4gY30pfSxjQjtmdW5jdGlvbiBkQihhLGIpe3ZhciBjO2lmKChjPWNCKSE9bnVsbCYmZm4uTil7dmFyIGQ9Yy5ldmVudERhdGEsZTtlPWIubWF0Y2goL14oZ3RtfGd0YWcpXC4vKT9lbmNvZGVVUklDb21wb25lbnQoYik6IioiO2RbYV09W1siZSIsZV0sWyJlaWQiLFN0cmluZyhhKV1dO2d6KCk7ZXooYSl9fTt2YXIgZUI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSD17fTt0aGlzLks9e307ZnooZnVuY3Rpb24oYil7dmFyIGM9Yi5ldmVudElkLGQ9Yi50ZixlPVtdLGY9YS5IW2NdfHxbXTtmLmxlbmd0aCYmZS5wdXNoKFsidHIiLGYuam9pbigiLiIpXSk7dmFyIGc9YS5LW2NdfHxbXTtnLmxlbmd0aCYmZS5wdXNoKFsidGkiLGcuam9pbigiLiIpXSk7ZCYmKGRlbGV0ZSBhLkhbY10sZGVsZXRlIGEuS1tjXSk7cmV0dXJuIGV9KX0sZkI7CmZ1bmN0aW9uIGdCKGEsYixjKXtmQnx8KGZCPW5ldyBlQik7dmFyIGQ9ZkI7aWYoZm4uTiYmYil7dmFyIGU9ZG4oYik7ZC5IW2FdPWQuSFthXXx8W107ZC5IW2FdLnB1c2goYytlKTt2YXIgZj1iW0dmLlliXTtpZighZil0aHJvdyBFcnJvcigiRXJyb3I6IE5vIGZ1bmN0aW9uIG5hbWUgZ2l2ZW4gZm9yIGZ1bmN0aW9uIGNhbGwuIik7dmFyIGc9KFF6W2ZdPyIxIjoiMiIpK2U7ZC5LW2FdPWQuS1thXXx8W107ZC5LW2FdLnB1c2goZyk7Z3ooKTtleihhKX19O2Z1bmN0aW9uIGhCKGEsYixjKXtjPWM9PT12b2lkIDA/ITE6YztpQigpLmFkZFJlc3RyaWN0aW9uKDAsYSxiLGMpfWZ1bmN0aW9uIGpCKCl7dmFyIGE9dmsoKTtyZXR1cm4gaUIoKS5nZXRSZXN0cmljdGlvbnMoMCxhKX1mdW5jdGlvbiBrQihhLGIsYyl7Yz1jPT09dm9pZCAwPyExOmM7aUIoKS5hZGRSZXN0cmljdGlvbigxLGEsYixjKX1mdW5jdGlvbiBsQigpe3ZhciBhPXZrKCk7cmV0dXJuIGlCKCkuZ2V0UmVzdHJpY3Rpb25zKDEsYSl9dmFyIG1CPWZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXI9e307dGhpcy5IPXt9fSxuQj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuY29udGFpbmVyW2JdO2N8fChjPXtfZW50aXR5OntpbnRlcm5hbDpbXSxleHRlcm5hbDpbXX0sX2V2ZW50OntpbnRlcm5hbDpbXSxleHRlcm5hbDpbXX19LGEuY29udGFpbmVyW2JdPWMpO3JldHVybiBjfTsKbUIucHJvdG90eXBlLmFkZFJlc3RyaWN0aW9uPWZ1bmN0aW9uKGEsYixjLGQpe2Q9ZD09PXZvaWQgMD8hMTpkO2lmKCFkfHwhdGhpcy5IW2JdKXt2YXIgZT1uQih0aGlzLGIpO2E9PT0wP2Q/ZS5fZW50aXR5LmV4dGVybmFsLnB1c2goYyk6ZS5fZW50aXR5LmludGVybmFsLnB1c2goYyk6YT09PTEmJihkP2UuX2V2ZW50LmV4dGVybmFsLnB1c2goYyk6ZS5fZXZlbnQuaW50ZXJuYWwucHVzaChjKSl9fTsKbUIucHJvdG90eXBlLmdldFJlc3RyaWN0aW9ucz1mdW5jdGlvbihhLGIpe3ZhciBjPW5CKHRoaXMsYik7aWYoYT09PTApe3ZhciBkLGU7cmV0dXJuW10uY29uY2F0KHcoKGM9PW51bGw/dm9pZCAwOihkPWMuX2VudGl0eSk9PW51bGw/dm9pZCAwOmQuaW50ZXJuYWwpfHxbXSksdygoYz09bnVsbD92b2lkIDA6KGU9Yy5fZW50aXR5KT09bnVsbD92b2lkIDA6ZS5leHRlcm5hbCl8fFtdKSl9aWYoYT09PTEpe3ZhciBmLGc7cmV0dXJuW10uY29uY2F0KHcoKGM9PW51bGw/dm9pZCAwOihmPWMuX2V2ZW50KT09bnVsbD92b2lkIDA6Zi5pbnRlcm5hbCl8fFtdKSx3KChjPT1udWxsP3ZvaWQgMDooZz1jLl9ldmVudCk9PW51bGw/dm9pZCAwOmcuZXh0ZXJuYWwpfHxbXSkpfXJldHVybltdfTsKbUIucHJvdG90eXBlLmdldEV4dGVybmFsUmVzdHJpY3Rpb25zPWZ1bmN0aW9uKGEsYil7dmFyIGM9bkIodGhpcyxiKSxkLGU7cmV0dXJuIGE9PT0wPyhjPT1udWxsP3ZvaWQgMDooZD1jLl9lbnRpdHkpPT1udWxsP3ZvaWQgMDpkLmV4dGVybmFsKXx8W106KGM9PW51bGw/dm9pZCAwOihlPWMuX2V2ZW50KT09bnVsbD92b2lkIDA6ZS5leHRlcm5hbCl8fFtdfTttQi5wcm90b3R5cGUucmVtb3ZlRXh0ZXJuYWxSZXN0cmljdGlvbnM9ZnVuY3Rpb24oYSl7dmFyIGI9bkIodGhpcyxhKTtiLl9ldmVudCYmKGIuX2V2ZW50LmV4dGVybmFsPVtdKTtiLl9lbnRpdHkmJihiLl9lbnRpdHkuZXh0ZXJuYWw9W10pO3RoaXMuSFthXT0hMH07ZnVuY3Rpb24gaUIoKXtyZXR1cm4ga2ooInIiLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBtQn0pfTtmdW5jdGlvbiBvQihhLGIsYyxkKXt2YXIgZT1jQS50YWdzW2FdLGY9cEIoYSxiLGMsZCk7aWYoIWYpcmV0dXJuIG51bGw7dmFyIGc9WnooZSxjKTtpZihnJiZnLmxlbmd0aCl7dmFyIGg9Z1swXTtmPW9CKGguaW5kZXgse29uU3VjY2VzczpmLG9uRmFpbHVyZTpoLmJvPT09MT9iLnRlcm1pbmF0ZTpmLHRlcm1pbmF0ZTpiLnRlcm1pbmF0ZX0sYyxkKX1yZXR1cm4gZn0KZnVuY3Rpb24gcEIoYSxiLGMsZCl7ZnVuY3Rpb24gZSgpe2Z1bmN0aW9uIHkoKXtpbSgzKTt2YXIgUz1OYigpLU47SkEoMSxhLGYuZ2V0TmFtZSgpKTtnQihjLmlkLGcsIjciKTtPQShjLmxkLEQsImV4Y2VwdGlvbiIsUyk7Zm4uSCYmRnooYyxnLEl5LlgudWopO0l8fChJPSEwLGwoKSl9aWYoZi5JYVtHZi5PcV0pbCgpO2Vsc2V7dmFyIHo9YUEoZixjKTtpZih6IT1udWxsKWZvcih2YXIgQz0wO0M8ei5sZW5ndGg7QysrKWlmKCFYbyh6W0NdKSl7bCgpO3JldHVybn12YXIgRD1OQShjLmxkLGYuTyxmLnRhZ0lkLGYuZ2V0TWV0YWRhdGEoYykpLEk9ITEsRz17dnRwX2d0bU9uU3VjY2VzczpmdW5jdGlvbigpe2lmKCFJKXtJPSEwO3ZhciBTPU5iKCktTjtnQihjLmlkLGcsIjUiKTtPQShjLmxkLEQsInN1Y2Nlc3MiLFMpO2ZuLkgmJkZ6KGMsZyxJeS5YLndqKTtoKCl9fSx2dHBfZ3RtT25GYWlsdXJlOmZ1bmN0aW9uKCl7aWYoIUkpe0k9ITA7dmFyIFM9TmIoKS1OO2dCKGMuaWQsZywiNiIpOwpPQShjLmxkLEQsImZhaWx1cmUiLFMpO2ZuLkgmJkZ6KGMsZyxJeS5YLnZqKTtsKCl9fX07Ry52dHBfZ3RtRXZlbnRJZD1jLmlkO2MucHJpb3JpdHlJZCYmKEcudnRwX2d0bVByaW9yaXR5SWQ9Yy5wcmlvcml0eUlkKTtnQihjLmlkLGcsIjEiKTtmbi5IJiZFeihjLGcpO3ZhciBOPU5iKCk7dHJ5e2YuZXZhbHVhdGUoYyxkLEcpfWNhdGNoKFMpe3koUyl9Zm4uSCYmRnooYyxnLEl5LlguQ24pfX12YXIgZj1jQS50YWdzW2FdLGc9Zi5GZygpLGg9Yi5vblN1Y2Nlc3MsbD1iLm9uRmFpbHVyZSxuPWIudGVybWluYXRlO2lmKGMuaXNCbG9ja2VkKGcpKXJldHVybiBudWxsO3ZhciBwPSR6KGYsYyk7aWYocCYmcC5sZW5ndGgpe3ZhciBxPXBbMF0scj1vQihxLmluZGV4LHtvblN1Y2Nlc3M6aCxvbkZhaWx1cmU6bCx0ZXJtaW5hdGU6bn0sYyxkKTtpZighcilyZXR1cm4gbnVsbDtoPXI7bD1xLmJvPT09Mj9uOnJ9aWYoZi5JYVtHZi5rbl18fGYuSWFbR2YuUXFdKXt2YXIgdD1mLklhW0dmLmtuXT8KY0Eudms6Yy52ayx1PWgsdj1sO2lmKCF0W2FdKXt2YXIgeD1xQihhLHQsUGIoZSkpO2g9eC5vblN1Y2Nlc3M7bD14Lm9uRmFpbHVyZX1yZXR1cm4gZnVuY3Rpb24oKXt0W2FdKHUsdil9fXJldHVybiBlfWZ1bmN0aW9uIHFCKGEsYixjKXt2YXIgZD1bXSxlPVtdO2JbYV09ckIoZCxlLGMpO3JldHVybntvblN1Y2Nlc3M6ZnVuY3Rpb24oKXtiW2FdPXNCO2Zvcih2YXIgZj0wO2Y8ZC5sZW5ndGg7ZisrKWRbZl0oKX0sb25GYWlsdXJlOmZ1bmN0aW9uKCl7YlthXT10Qjtmb3IodmFyIGY9MDtmPGUubGVuZ3RoO2YrKyllW2ZdKCl9fX1mdW5jdGlvbiByQihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQsZSl7YS5wdXNoKGQpO2IucHVzaChlKTtjKCl9fWZ1bmN0aW9uIHNCKGEpe2EoKX1mdW5jdGlvbiB0QihhLGIpe2IoKX07dmFyIHdCPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGNBLnRhZ3MubGVuZ3RoO2QrKylpZihhW2RdKXt2YXIgZT1jQS50YWdzW2RdO3ZhciBmPVFBKGIubGQpO3RyeXt2YXIgZz1vQihkLHtvblN1Y2Nlc3M6ZixvbkZhaWx1cmU6Zix0ZXJtaW5hdGU6Zn0sYixkKTtpZihnKXt2YXIgaD1ReltlLk9dO2MucHVzaCh7Tm86ZCxwcmlvcml0eU92ZXJyaWRlOihoP2gucHJpb3JpdHlPdmVycmlkZXx8MDowKXx8S0EoZS5PLDEpfHwwLGV4ZWN1dGU6Z30pfWVsc2UgdUIoZCxiKSxmKCl9Y2F0Y2gobil7ZigpfX1jLnNvcnQodkIpO2Zvcih2YXIgbD0wO2w8Yy5sZW5ndGg7bCsrKWNbbF0uZXhlY3V0ZSgpO3JldHVybiBjLmxlbmd0aD4wfTsKZnVuY3Rpb24geEIoYSxiKXtpZighSEEpcmV0dXJuITE7dmFyIGM9YVsiZ3RtLnRyaWdnZXJzIl0mJlN0cmluZyhhWyJndG0udHJpZ2dlcnMiXSksZD1JQShhLmV2ZW50LGM/U3RyaW5nKGMpLnNwbGl0KCIsIik6W10pO2lmKCFkLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGU9MDtlPGQubGVuZ3RoOysrZSl7dmFyIGY9UUEoYik7dHJ5e2RbZV0oYSxmKX1jYXRjaChnKXtmKCl9fXJldHVybiEwfWZ1bmN0aW9uIHZCKGEsYil7dmFyIGMsZD1iLnByaW9yaXR5T3ZlcnJpZGUsZT1hLnByaW9yaXR5T3ZlcnJpZGU7Yz1kPmU/MTpkPGU/LTE6MDt2YXIgZjtpZihjIT09MClmPWM7ZWxzZXt2YXIgZz1hLk5vLGg9Yi5ObztmPWc+aD8xOmc8aD8tMTowfXJldHVybiBmfQpmdW5jdGlvbiB1QihhLGIpe2lmKGZuLk4pe3ZhciBjPWZ1bmN0aW9uKGQpe3ZhciBlPWIuaXNCbG9ja2VkKGNBLnRhZ3NbZF0uRmcoKSk/IjMiOiI0IixmPVp6KGNBLnRhZ3NbZF0sYik7ZiYmZi5sZW5ndGgmJmMoZlswXS5pbmRleCk7Z0IoYi5pZCxjQS50YWdzW2RdLkZnKCksZSk7dmFyIGc9JHooY0EudGFnc1tkXSxiKTtnJiZnLmxlbmd0aCYmYyhnWzBdLmluZGV4KX07YyhhKX19dmFyIEhBO2Z1bmN0aW9uIHlCKCl7SEF8fChIQT1uZXcgR0EpO3JldHVybiBIQX0KZnVuY3Rpb24gekIoYSl7dmFyIGI9YVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXSxjPWFbImd0bS5wcmlvcml0eUlkIl0sZD1hWyJndG0ucHJpb3JpdHlRdWV1ZSJdLGU9YS5ldmVudDtmbi5IJiZ2eihiLGUpO2lmKGU9PT0iZ3RtLmpzIil7aWYoJGsoMTMpKXJldHVybiExO1prKDEzLCEwKX12YXIgZj0hMSxnPWxCKCksaD1FZChhLG51bGwpO2lmKCFnLmV2ZXJ5KGZ1bmN0aW9uKHUpe3JldHVybiB1KHtvcmlnaW5hbEV2ZW50RGF0YTpofSl9KSl7aWYoZSE9PSJndG0uanMiJiZlIT09Imd0bS5pbml0IiYmZSE9PSJndG0uaW5pdF9jb25zZW50IilyZXR1cm4hMTtmPSEwfWRCKGIsZSk7dmFyIGw9YS5ldmVudENhbGxiYWNrLG49YS5ldmVudFRpbWVvdXQscD17aWQ6Yixwcmlvcml0eUlkOmMscHJpb3JpdHlRdWV1ZTpkLG5hbWU6ZSxpc0Jsb2NrZWQ6QUIoaCxmKSx2azpbXSxsb2dNYWNyb0Vycm9yOmZ1bmN0aW9uKHUsdix4KXtQKDYpO2ltKDQpO0pBKDIsdix4KX0sY2FjaGVkTW9kZWxWYWx1ZXM6QkIoKSwKbGQ6bmV3IE1BKGZ1bmN0aW9uKCl7Zm4uSCYmeXooYixlKTtGeSg1LGUpO2wmJmwuYXBwbHkobCxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCkpfSxuKSxvcmlnaW5hbEV2ZW50RGF0YTpofTtmbi5IJiZDeihwLmlkKTt2YXIgcT1FQShwKTtmbi5IJiZEeihwLmlkKTtGeSgyLGUpO2NBLmdldFJ1bGVzKCk7ZiYmKHE9Q0IocSkpO2ZuLkgmJnd6KGIpO3ZhciByPXdCKHEscCk7ciYmRnkoNCxlKTt2YXIgdD14QihhLHAubGQpO1JBKHAubGQpO2UhPT0iZ3RtLmpzIiYmZSE9PSJndG0uc3luYyJ8fFhBKCk7cmV0dXJuIERCKHEscil8fHR9CmZ1bmN0aW9uIEJCKCl7dmFyIGE9e307YS5ldmVudD12QSgiZXZlbnQiLDEpO2EuZWNvbW1lcmNlPXZBKCJlY29tbWVyY2UiLDEpO2EuZ3RtPXZBKCJndG0iKTthLmV2ZW50TW9kZWw9dkEoImV2ZW50TW9kZWwiKTtyZXR1cm4gYX0KZnVuY3Rpb24gQUIoYSxiKXt2YXIgYz1BQSgpO3JldHVybiBmdW5jdGlvbihkKXt2YXIgZT1jKGQpO2lmKGUpcmV0dXJuITA7dmFyIGY9ZCYmZFtHZi5ZYl07aWYoIWZ8fHR5cGVvZiBmIT09InN0cmluZyIpcmV0dXJuITA7Zj1mLnJlcGxhY2UoL15fKi8sIiIpO3ZhciBnPWpCKCksaD1hO2ImJihoPUVkKGEsbnVsbCksaFsiZ3RtLnVuaXF1ZUV2ZW50SWQiXT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7Zm9yKHZhciBsPSExLG49YWwoMjcsZnVuY3Rpb24oKXtyZXR1cm57fX0pW2ZdfHxbXSxwPW0oZykscT1wLm5leHQoKTshcS5kb25lO3E9cC5uZXh0KCkpe3ZhciByPXEudmFsdWU7dHJ5e3Ioe2VudGl0eUlkOmYsc2VjdXJpdHlHcm91cHM6bixvcmlnaW5hbEV2ZW50RGF0YTpofSl8fChsPSEwKX1jYXRjaCh0KXtsPSEwfX1yZXR1cm4gbHx8ZX19CmZ1bmN0aW9uIENCKGEpe2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspaWYoYVtjXSl7dmFyIGQ9Y0EudGFnc1tjXS5PO2lmKEJqW2RdfHxjQS50YWdzW2NdLklhW0dmLlJxXSE9PXZvaWQgMHx8S0EoZCwyKSliW2NdPSEwfXJldHVybiBifWZ1bmN0aW9uIERCKGEsYil7aWYoIWIpcmV0dXJuIGI7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaWYoYVtjXSYmY0EudGFnc1tjXSYmIUNqW2NBLnRhZ3NbY10uT10pcmV0dXJuITA7cmV0dXJuITF9O3ZhciBFQj1OZig2MSwxRTMpLEZCPU5mKDY4LDJFMyksWm89WyJhZF9zdG9yYWdlIiwiYW5hbHl0aWNzX3N0b3JhZ2UiXTtmdW5jdGlvbiBHQihhLGIpe2lmKGEpe3ZhciBjPWtqKCJndGgiLGZ1bmN0aW9uKCl7cmV0dXJue319KSxkO2EhPT0yfHwoKGQ9SEIoKSk9PW51bGw/dm9pZCAwOmQuc3RhdHVzKSE9PTN8fGIhPT12b2lkIDAmJmI8PUZCfHwoYT0zLGMuZGw9Yj9NYXRoLmZsb29yKGIvMUUzKTp2b2lkIDApO2Mucz1hO0lCKGMpfX1mdW5jdGlvbiBJQihhKXtpZihhLnMpe3ZhciBiPWZ1bmN0aW9uKCl7dmFyIGM9e3N0YXR1czphLnMsZXhwaXJlczpEYXRlLm5vdygpKzg2NEU1fTthLmRsIT09dm9pZCAwJiYoYy5kZWxheT1hLmRsKTtrcigiZ3RnX2xvYWRfc3RhdHVzIixjKX07YnAoZnVuY3Rpb24oKXtpZihZbygpKWIoKTtlbHNlIGZvcih2YXIgYz1QYihiKSxkPW0oWm8pLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKUlsKGMsZS52YWx1ZSl9LFpvKX19CmZ1bmN0aW9uIEpCKCl7dmFyIGE9S0IoITApO3JldHVybiBhPyhMQihhLnN0YXR1cyxhLmRlbGF5KSwhMSk6ITB9ZnVuY3Rpb24gS0IoYSl7YT1hPT09dm9pZCAwPyExOmE7aWYoYWsoKSl7dmFyIGI9bnIoImd0Z19sb2FkX3N0YXR1cyIpLGM9Yi52YWx1ZSxkPWEmJkFiKGM9PW51bGw/dm9pZCAwOmMuZXhwaXJlcykmJihjPT1udWxsP3ZvaWQgMDpjLmV4cGlyZXMpPERhdGUubm93KCkrMzZFNTtpZihiLmVycm9yPT09MCYmQWIoYz09bnVsbD92b2lkIDA6Yy5zdGF0dXMpJiYhZCl7dmFyIGU9e3N0YXR1czpjLnN0YXR1c307KGM9PW51bGw/dm9pZCAwOmMuZGVsYXkpIT09dm9pZCAwJiYoZS5kZWxheT1jLmRlbGF5KTtyZXR1cm4gZX1yZXR1cm4gSEIoKX19ZnVuY3Rpb24gTEIoYSxiKXt2YXIgYz1raigiZ3RoIixmdW5jdGlvbigpe3JldHVybnt9fSk7Yy5zPWE7YiE9PXZvaWQgMCYmKGMuZGw9Yil9CmZ1bmN0aW9uIEhCKCl7dmFyIGE9bWooImd0aCIpO2lmKGEhPW51bGwmJmEucyl7dmFyIGI9e3N0YXR1czphLnN9O2EuZGwhPT12b2lkIDAmJihiLmRlbGF5PWEuZGwpO3JldHVybiBifX1mdW5jdGlvbiBNQigpe3ZhciBhOygoYT1IQigpKT09bnVsbD92b2lkIDA6YS5zdGF0dXMpPT09MSYmR0IoMyl9ZnVuY3Rpb24gTkIoKXtpZihKQigpKXt2YXIgYT1EYXRlLm5vdygpO25qKCJndGgiLHtsOmZ1bmN0aW9uKCl7R0IoMixEYXRlLm5vdygpLWEpfSxzOjF9KTt2YXIgYj1FKDUpLGM9U2IoYiwiR1RNLSIpPyIvZ3RtLmpzIjoiL2d0YWcvanMiLGQ9Imh0dHBzOi8vIitFKDMpK2MrIj9pZD0iK2IrIiZndGdfaGVhbHRoPTEiO1VjKGQsTUIsTUIpO0Euc2V0VGltZW91dChNQixFQil9fTtmdW5jdGlvbiBPQigpe3lCKCkuYWRkTGlzdGVuZXIoImd0bS5pbml0IixmdW5jdGlvbihhLGIpe1prKDI2LCEwKTtNKDU1NikmJmFrKCkmJiFJZig0NSkmJihmby5IW2NvLmlhLlpiXT1iby5NYS5MaCk7aWYoYWsoKSl7dmFyIGM7Yz1sbyhjby5pYS5aYik7Z28oYyk/aW8oYyxOQik6TkIoKX10byghMSwhMCk7YigpfSl9O2Z1bmN0aW9uIFBCKCl7aWYobWooInBzY2RsIikhPT12b2lkIDApbm0oam0uYmEub2kpPT09dm9pZCAwJiZtbShqbS5iYS5vaSxtaigicHNjZGwiKSk7ZWxzZXt2YXIgYT1mdW5jdGlvbihjKXtuaigicHNjZGwiLGMpO21tKGptLmJhLm9pLGMpfSxiPWZ1bmN0aW9uKCl7YSgiZXJyb3IiKX07dHJ5e0hjLmNvb2tpZURlcHJlY2F0aW9uTGFiZWw/KGEoInBlbmRpbmciKSxIYy5jb29raWVEZXByZWNhdGlvbkxhYmVsLmdldFZhbHVlKCkudGhlbihhKS5jYXRjaChiKSk6YSgibm9hcGkiKX1jYXRjaChjKXtiKGMpfX19O3ZhciBSQj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5yZWFkeT0hMTt0aGlzLks9MDt0aGlzLkg9W107dmFyIGI9QTtpZihCLnJlYWR5U3RhdGU9PT0iaW50ZXJhY3RpdmUiJiYhQi5jcmVhdGVFdmVudE9iamVjdHx8Qi5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIil0aGlzLm9uUmVhZHkoKTtlbHNleyRjKEIsIkRPTUNvbnRlbnRMb2FkZWQiLGZ1bmN0aW9uKGQpe3JldHVybiB2b2lkIGEub25SZWFkeShkKX0pOyRjKEIsInJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiB2b2lkIGEub25SZWFkeShkKX0pO2lmKEIuY3JlYXRlRXZlbnRPYmplY3QmJkIuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKXt2YXIgYz0hMDt0cnl7Yz0hYi5mcmFtZUVsZW1lbnR9Y2F0Y2goZCl7fWMmJlFCKHRoaXMpfSRjKGIsImxvYWQiLGZ1bmN0aW9uKGQpe3JldHVybiB2b2lkIGEub25SZWFkeShkKX0pfX07UkIucHJvdG90eXBlLmlzUmVhZHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkeX07ClJCLnByb3RvdHlwZS5vblJlYWR5PWZ1bmN0aW9uKGEpe2lmKCF0aGlzLnJlYWR5KXt2YXIgYj1CLmNyZWF0ZUV2ZW50T2JqZWN0LGM9Qi5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIixkPUIucmVhZHlTdGF0ZT09PSJpbnRlcmFjdGl2ZSI7aWYoIWF8fGEudHlwZSE9PSJyZWFkeXN0YXRlY2hhbmdlInx8Y3x8IWImJmQpe3RoaXMucmVhZHk9ITA7Zm9yKHZhciBlPTA7ZTx0aGlzLkgubGVuZ3RoO2UrKyliZCh0aGlzLkhbZV0pfXRoaXMuSC5wdXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBmPU9hLmFwcGx5KDAsYXJndW1lbnRzKSxnPTA7ZzxmLmxlbmd0aDtnKyspYmQoZltnXSk7cmV0dXJuIDB9fX07CnZhciBRQj1mdW5jdGlvbihhKXtpZighYS5yZWFkeSYmYS5LPDE0MCl7YS5LKys7dHJ5e3ZhciBiLGM7KGM9KGI9Qi5kb2N1bWVudEVsZW1lbnQpLmRvU2Nyb2xsKT09bnVsbHx8Yy5jYWxsKGIsImxlZnQiKTthLm9uUmVhZHkoKX1jYXRjaChkKXtBLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBRQihhKX0sNTApfX19LFNCO2Z1bmN0aW9uIFRCKCl7U0J8fChTQj1uZXcgUkIpfWZ1bmN0aW9uIFVCKCl7VEIoKTt2YXIgYTtyZXR1cm4oYT1TQik9PW51bGw/dm9pZCAwOmEuaXNSZWFkeSgpfWZ1bmN0aW9uIFZCKGEpe1RCKCk7dmFyIGI7KGI9U0IpIT1udWxsJiYoYi5yZWFkeT9iZChhKTpiLkgucHVzaChhKSl9O3ZhciBYQj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9V0IsZTtpZigoZT1kLkgpPT1udWxsfHwhZS5Pcil7dmFyIGY9T2JqZWN0LmtleXMoYikubGVuZ3RoPjA/MjoxLGcsaCxsPShjPT1udWxsP3ZvaWQgMDooaD1jLm9yaWdpbmF0aW5nRW50aXR5KT09bnVsbD92b2lkIDA6aC5vcmlnaW5Db250YWluZXJJZCl8fCIiO2c9bD9TYihsLCJHVE0tIik/MzoyOjE7aWYoIWEpZC5IPXt0eXBlOmYsc291cmNlOmcscGFyYW1zOmJ9O2Vsc2UgaWYoZC5IKXtQKDE4NCk7dmFyIG49ITE7ZC5ILnNvdXJjZT09PWd8fGQuSC5zb3VyY2UhPT0zJiZnIT09M3x8KFVtKCJpZGNzIiwiMSIpLG49ITApO2QuSC50eXBlIT09MiYmZiE9PTJ8fFAoMTg2KTt2YXIgcDtpZihwPWQuSC50eXBlPT09MiYmZj09PTIpYTp7dmFyIHE9ZC5ILnBhcmFtcyxyPU9iamVjdC5rZXlzKHEpLHQ9T2JqZWN0LmtleXMoYik7aWYoci5sZW5ndGghPT10Lmxlbmd0aClwPSEwO2Vsc2V7Zm9yKHZhciB1PW0ociksdj11Lm5leHQoKTshdi5kb25lO3Y9CnUubmV4dCgpKXt2YXIgeD12LnZhbHVlO2lmKCFiLmhhc093blByb3BlcnR5KHgpfHxxW3hdIT09Ylt4XSl7cD0hMDticmVhayBhfX1wPSExfX1wJiYoVW0oImlkY2MiLCIxIiksbj0hMCk7biYmKHRvKCksZC5ILk9yPSEwKX19fSxXQj1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9dm9pZCAwfTt2YXIgWkI9ZnVuY3Rpb24oYSl7dmFyIGI9WUI7KCFmbi5LfHxTYihFKDUpLCJHVE0tIik/MDphPT09dm9pZCAwKSYmYi5IPT09MCYmKFVtKCJtY2MiLCIxIiksYi5IPTEpfSxZQj1uZXcgZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSD0wO1VtKCJuY2MiLGZ1bmN0aW9uKCl7aWYoSWYoNDUpJiZhLkghPT0yKXJldHVybiIxIn0pfTt2YXIgJEI9L14oPzpBV3xEQ3xHfEdGfEdUfEhBfE1DfFVBKSQvLGFDPS9ccy87CmZ1bmN0aW9uIGJDKGEsYil7aWYoemIoYSkpe2E9TGIoYSk7dmFyIGM9YS5pbmRleE9mKCItIik7aWYoIShjPDApKXt2YXIgZD1hLnN1YnN0cmluZygwLGMpO2lmKCRCLnRlc3QoZCkpe3ZhciBlPWEuc3Vic3RyaW5nKGMrMSksZjtpZihiKXt2YXIgZz1mdW5jdGlvbihuKXt2YXIgcD1uLmluZGV4T2YoIi8iKTtyZXR1cm4gcDwwP1tuXTpbbi5zdWJzdHJpbmcoMCxwKSxuLnN1YnN0cmluZyhwKzEpXX07Zj1nKGUpO2lmKGQ9PT0iREMiJiZmLmxlbmd0aD09PTIpe3ZhciBoPWcoZlsxXSk7aC5sZW5ndGg9PT0yJiYoZlsxXT1oWzBdLGYucHVzaChoWzFdKSl9fWVsc2V7Zj1lLnNwbGl0KCIvIik7Zm9yKHZhciBsPTA7bDxmLmxlbmd0aDtsKyspaWYoIWZbbF18fGFDLnRlc3QoZltsXSkmJihkIT09IkFXInx8bCE9PTEpKXJldHVybn1yZXR1cm57aWQ6YSxwcmVmaXg6ZCxkZXN0aW5hdGlvbklkOmQrIi0iK2ZbMF0saWRzOmYsSmM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZCE9PXRoaXMuZGVzdGluYXRpb25JZH19fX19fQpmdW5jdGlvbiBjQyhhLGIpe2Zvcih2YXIgYz17fSxkPTA7ZDxhLmxlbmd0aDsrK2Qpe3ZhciBlPWJDKGFbZF0sYik7ZSYmKGNbZS5pZF09ZSl9dmFyIGY9W10sZztmb3IoZyBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkoZykpe3ZhciBoPWNbZ107aC5wcmVmaXg9PT0iQVciJiZoLmlkc1tkQ1sxXV0mJmYucHVzaChoLmRlc3RpbmF0aW9uSWQpfWZvcih2YXIgbD0wO2w8Zi5sZW5ndGg7KytsKWRlbGV0ZSBjW2ZbbF1dO2Zvcih2YXIgbj1bXSxwPW0oT2JqZWN0LmtleXMoYykpLHE9cC5uZXh0KCk7IXEuZG9uZTtxPXAubmV4dCgpKW4ucHVzaChjW3EudmFsdWVdKTtyZXR1cm4gbn12YXIgZUM9e30sZEM9KGVDWzBdPTAsZUNbMV09MSxlQ1syXT0yLGVDWzNdPTAsZUNbNF09MSxlQ1s1XT0wLGVDWzZdPTAsZUNbN109MCxlQyk7dmFyIGZDPXtpbml0aWFsaXplZDoxMSxjb21wbGV0ZToxMixpbnRlcmFjdGl2ZToxM30sZ0M9e30saEM9T2JqZWN0LmZyZWV6ZSgoZ0NbRi5ELlRkXT0hMCxnQykpLGlDPWZ1bmN0aW9uKCl7dGhpcy5SPU5mKDM0LDUwMCk7dGhpcy5IPXt9O3RoaXMuTj17fTt0aGlzLks9dm9pZCAwfSxqQz1mdW5jdGlvbihhLGIsYyl7aWYoYy5sZW5ndGgmJmZuLkspe3ZhciBkOyhkPWEuSClbYl0hPW51bGx8fChkW2JdPVtdKTt2YXIgZTsoZT1hLk4pW2JdIT1udWxsfHwoZVtiXT1bXSk7dmFyIGY9Yy5maWx0ZXIoZnVuY3Rpb24oZyl7cmV0dXJuIWEuTltiXS5pbmNsdWRlcyhnKX0pO2EuSFtiXS5wdXNoLmFwcGx5KGEuSFtiXSx3KGYpKTthLk5bYl0ucHVzaC5hcHBseShhLk5bYl0sdyhmKSk7IWEuSyYmZi5sZW5ndGg+MCYmKFZtKCJ0ZGMiLCEwKSxhLks9QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dG8oKTthLkg9e307YS5LPXZvaWQgMH0sYS5SKSl9fTsKaUMucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO1VtKCJ0ZGMiLGZ1bmN0aW9uKCl7YS5LJiYoQS5jbGVhclRpbWVvdXQoYS5LKSxhLks9dm9pZCAwKTt2YXIgYj1bXSxjO2ZvcihjIGluIGEuSClhLkguaGFzT3duUHJvcGVydHkoYykmJmIucHVzaChjKyIqIithLkhbY10uam9pbigiLiIpKTtyZXR1cm4gYi5sZW5ndGg/Yi5qb2luKCIhIik6dm9pZCAwfSwhMSl9Owp2YXIga0M9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fSxkO2ZvcihkIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShkKSYmKGNbZF09ITApO2Zvcih2YXIgZSBpbiBhKWEuaGFzT3duUHJvcGVydHkoZSkmJihjW2VdPSEwKTtyZXR1cm4gY30sbEM9ZnVuY3Rpb24oYSxiLGMsZCxlKXtkPWQ9PT12b2lkIDA/e306ZDtlPWU9PT12b2lkIDA/IiI6ZTtpZihiPT09YylyZXR1cm5bXTt2YXIgZj1mdW5jdGlvbih0LHUpe3ZhciB2O0FkKHUpPT09Im9iamVjdCI/dj11W3RdOkFkKHUpPT09ImFycmF5IiYmKHY9dVt0XSk7cmV0dXJuIHY9PT12b2lkIDA/aENbdF06dn0sZz1rQyhiLGMpLGg7Zm9yKGggaW4gZylpZihnLmhhc093blByb3BlcnR5KGgpJiZoIT09Ri5ELlhiKXt2YXIgbD0oZT9lKyIuIjoiIikraCxuPWYoaCxiKSxwPWYoaCxjKSxxPUFkKG4pPT09Im9iamVjdCJ8fEFkKG4pPT09ImFycmF5IixyPUFkKHApPT09Im9iamVjdCJ8fEFkKHApPT09ImFycmF5IjtpZihxJiZyKWxDKGEsbixwLGQsbCk7CmVsc2UgaWYocXx8cnx8biE9PXApZFtsXT0hMH1yZXR1cm4gT2JqZWN0LmtleXMoZCl9LG1DPW5ldyBpQzt2YXIgbkM9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5LPU5iKCk7dGhpcy5IPWI7dGhpcy5hcmdzPWM7dGhpcy5tZXNzYWdlQ29udGV4dD1kO3RoaXMudHlwZT1hfSxvQz1mdW5jdGlvbigpe3RoaXMuV2E9e307dGhpcy5pYj17fTt0aGlzLks9e307dGhpcy5OPW51bGw7dGhpcy5oYj17fTt0aGlzLkg9ITE7dGhpcy5zdGF0dXM9MX07ZnVuY3Rpb24gcEMoYSxiKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/cUMoInNldCIsYSk6cUMoInNldCIsYSxiKX1mdW5jdGlvbiByQyhhLGIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9xQygiY29uZmlnIixhKTpxQygiY29uZmlnIixhLGIpfWZ1bmN0aW9uIHNDKGEsYixjKXtjPWN8fHt9O2NbRi5ELlhiXT1hO3JldHVybiBxQygiZXZlbnQiLGIsYyl9ZnVuY3Rpb24gcUMoKXtyZXR1cm4gYXJndW1lbnRzfTt2YXIgdEM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGwsbixwLHEscil7dGhpcy5ldmVudElkPWE7dGhpcy5wcmlvcml0eUlkPWI7dGhpcy5wcmlvcml0eVF1ZXVlPWM7dGhpcy5FYT1kO3RoaXMuV2E9ZTt0aGlzLmhiPWY7dGhpcy5IYz1nO3RoaXMuQmc9aDt0aGlzLmliPWw7dGhpcy5ldmVudE1ldGFkYXRhPW47dGhpcy5vblN1Y2Nlc3M9cDt0aGlzLm9uRmFpbHVyZT1xO3RoaXMuaXNHdG1FdmVudD1yfSx1Qz1mdW5jdGlvbihhKXt2YXIgYj17b25TdWNjZXNzOnhiLG9uRmFpbHVyZTp4Yn07Yj1iPT09dm9pZCAwP3t9OmI7dmFyIGMsZCxlLGYsZyxoLGwsbixwLHEscix0LHUsdix4LHkseixDLEQsSSxHLE4sUyxXLGVhLGphO3JldHVybiBuZXcgdEMoKHY9KGM9Yik9PW51bGw/dm9pZCAwOmMuZXZlbnRJZCkhPW51bGw/djphLmV2ZW50SWQsKHg9KGQ9Yik9PW51bGw/dm9pZCAwOmQucHJpb3JpdHlJZCkhPW51bGw/eDphLnByaW9yaXR5SWQsKHk9KGU9Yik9PW51bGw/dm9pZCAwOmUucHJpb3JpdHlRdWV1ZSkhPQpudWxsP3k6YS5wcmlvcml0eVF1ZXVlLCh6PShmPWIpPT1udWxsP3ZvaWQgMDpmLkVhKSE9bnVsbD96OmEuRWEsKEM9KGc9Yik9PW51bGw/dm9pZCAwOmcuV2EpIT1udWxsP0M6YS5XYSwoRD0oaD1iKT09bnVsbD92b2lkIDA6aC5oYikhPW51bGw/RDphLmhiLChJPShsPWIpPT1udWxsP3ZvaWQgMDpsLkhjKSE9bnVsbD9JOmEuSGMsKEc9KG49Yik9PW51bGw/dm9pZCAwOm4uQmcpIT1udWxsP0c6YS5CZywoTj0ocD1iKT09bnVsbD92b2lkIDA6cC5pYikhPW51bGw/TjphLmliLChTPShxPWIpPT1udWxsP3ZvaWQgMDpxLmV2ZW50TWV0YWRhdGEpIT1udWxsP1M6YS5ldmVudE1ldGFkYXRhLChXPShyPWIpPT1udWxsP3ZvaWQgMDpyLm9uU3VjY2VzcykhPW51bGw/VzphLm9uU3VjY2VzcywoZWE9KHQ9Yik9PW51bGw/dm9pZCAwOnQub25GYWlsdXJlKSE9bnVsbD9lYTphLm9uRmFpbHVyZSwoamE9KHU9Yik9PW51bGw/dm9pZCAwOnUuaXNHdG1FdmVudCkhPW51bGw/amE6YS5pc0d0bUV2ZW50KX0sCnZDPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107c3dpdGNoKGIpe2Nhc2UgMzpjLnB1c2goYS5FYSk7Yy5wdXNoKGEuV2EpO2MucHVzaChhLmhiKTtjLnB1c2goYS5IYyk7Yy5wdXNoKGEuaWIpO2JyZWFrO2Nhc2UgMjpjLnB1c2goYS5FYSk7YnJlYWs7Y2FzZSAxOmMucHVzaChhLldhKTtjLnB1c2goYS5oYik7Yy5wdXNoKGEuSGMpO2MucHVzaChhLmliKTticmVhaztjYXNlIDQ6Yy5wdXNoKGEuRWEpLGMucHVzaChhLldhKSxjLnB1c2goYS5oYiksYy5wdXNoKGEuSGMpfXJldHVybiBjfSxPPWZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZT1tKHZDKGEsZD09PXZvaWQgMD8zOmQpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZTtpZihnW2JdIT09dm9pZCAwKXJldHVybiBnW2JdfXJldHVybiBjfSx3Qz1mdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz12QyhhLDQpLGQ9bShjKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSlmb3IodmFyIGY9T2JqZWN0LmtleXMoZS52YWx1ZSksCmc9bShmKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSliW2gudmFsdWVdPTE7cmV0dXJuIE9iamVjdC5rZXlzKGIpfTt0Qy5wcm90b3R5cGUuZ2V0TWVyZ2VkVmFsdWVzPWZ1bmN0aW9uKGEsYixjKXtiPWI9PT12b2lkIDA/MzpiO3ZhciBkPXt9LGU9ITEsZj1mdW5jdGlvbihuKXtDZChuKSYmR2IobixmdW5jdGlvbihwLHEpe2U9ITA7ZFtwXT1xfSl9O2MmJmYoYyk7dmFyIGc9dkModGhpcyxiKTtnLnJldmVyc2UoKTtmb3IodmFyIGg9bShnKSxsPWgubmV4dCgpOyFsLmRvbmU7bD1oLm5leHQoKSlmKGwudmFsdWVbYV0pO3JldHVybiBlP2Q6dm9pZCAwfTsKdmFyIHhDPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bRi5ELktmLEYuRC5HZixGLkQuSGYsRi5ELklmLEYuRC5KZixGLkQuTGYsRi5ELk1mXSxjPXZDKGEsMyksZD1tKGMpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXtmb3IodmFyIGY9ZS52YWx1ZSxnPXt9LGg9ITEsbD1tKGIpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD1uLnZhbHVlO2ZbcF0hPT12b2lkIDAmJihnW3BdPWZbcF0saD0hMCl9dmFyIHE9aD9nOnZvaWQgMDtpZihxKXJldHVybiBxfXJldHVybnt9fSx5Qz1mdW5jdGlvbihhLGIsYyl7dGhpcy5ldmVudElkPWE7dGhpcy5wcmlvcml0eUlkPWI7dGhpcy5wcmlvcml0eVF1ZXVlPWM7dGhpcy5FYT17fTt0aGlzLldhPXt9O3RoaXMuaGI9e307dGhpcy5IYz17fTt0aGlzLkJnPXt9O3RoaXMuaWI9e307dGhpcy5ldmVudE1ldGFkYXRhPXt9O3RoaXMuaXNHdG1FdmVudD0hMTt0aGlzLm9uU3VjY2Vzcz1mdW5jdGlvbigpe307dGhpcy5vbkZhaWx1cmU9CmZ1bmN0aW9uKCl7fX0sekM9ZnVuY3Rpb24oYSxiKXthLkVhPWI7cmV0dXJuIGF9LEFDPWZ1bmN0aW9uKGEsYil7YS5XYT1iO3JldHVybiBhfSxCQz1mdW5jdGlvbihhLGIpe2EuaGI9YjtyZXR1cm4gYX0sQ0M9ZnVuY3Rpb24oYSxiKXthLkhjPWI7cmV0dXJuIGF9LERDPWZ1bmN0aW9uKGEsYil7YS5CZz1iO3JldHVybiBhfSxFQz1mdW5jdGlvbihhLGIpe2EuaWI9YjtyZXR1cm4gYX0sRkM9ZnVuY3Rpb24oYSxiKXthLmV2ZW50TWV0YWRhdGE9Ynx8e307cmV0dXJuIGF9LEdDPWZ1bmN0aW9uKGEsYil7YS5vblN1Y2Nlc3M9YjtyZXR1cm4gYX0sSEM9ZnVuY3Rpb24oYSxiKXthLm9uRmFpbHVyZT1iO3JldHVybiBhfSxJQz1mdW5jdGlvbihhLGIpe2EuaXNHdG1FdmVudD1iO3JldHVybiBhfSxKQz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHRDKGEuZXZlbnRJZCxhLnByaW9yaXR5SWQsYS5wcmlvcml0eVF1ZXVlLGEuRWEsYS5XYSxhLmhiLGEuSGMsYS5CZyxhLmliLGEuZXZlbnRNZXRhZGF0YSwKYS5vblN1Y2Nlc3MsYS5vbkZhaWx1cmUsYS5pc0d0bUV2ZW50KX07ZnVuY3Rpb24gS0MoYSxiKXtHYihhLGZ1bmN0aW9uKGMpe3ZhciBkO2lmKGQ9Yy5jaGFyQXQoMCk9PT0iXyIpe3ZhciBlO2E6c3dpdGNoKGMpe2Nhc2UgRi5ELlZiOmNhc2UgRi5ELlJmOmNhc2UgRi5ELnNoOmU9ITA7YnJlYWsgYTtkZWZhdWx0OmU9ITF9ZD0hZX1kJiYoYiYmYihjKSxkZWxldGUgYVtjXSl9KX07dmFyIExDPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLkg9e307ZnooZnVuY3Rpb24oYil7dmFyIGM9Yi5ldmVudElkLGQ9Yi50ZixlPVtdLGY9YS5IW2NdfHxbXTtmLmxlbmd0aCYmZS5wdXNoKFsiZXByIixmLmpvaW4oIi4iKV0pO2QmJmRlbGV0ZSBhLkhbY107cmV0dXJuIGV9KX0sTkM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU1DO2ZuLk4mJmEhPT12b2lkIDAmJihkLkhbYV09ZC5IW2FdfHxbXSxkLkhbYV0ucHVzaChjK2IpLGd6KCksZXooYSkpfSxNQztmdW5jdGlvbiBPQygpe01DfHwoTUM9bmV3IExDKX07dmFyIFBDPWZ1bmN0aW9uKCl7dGhpcy5kZXN0aW5hdGlvbnM9e307dGhpcy5IPXt9O3RoaXMuY29tbWFuZHM9W119LFFDPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZGVzdGluYXRpb25zW2IuZGVzdGluYXRpb25JZF09YS5kZXN0aW5hdGlvbnNbYi5kZXN0aW5hdGlvbklkXXx8bmV3IG9DfSxSQz1mdW5jdGlvbihhLGIsYyxkKXtpZihkLkgpe3ZhciBlPVFDKGEsZC5IKSxmPWUuTjtpZihmKXt2YXIgZz1FZChjLG51bGwpLGg9RWQoZS5XYVtkLkguZGVzdGluYXRpb25JZF0sbnVsbCksbD1FZChlLmhiLG51bGwpLG49RWQoZS5pYixudWxsKSxwPUVkKGEuSCxudWxsKSxxPXt9O2lmKGZuLk4pdHJ5e3E9RWQockEuSCxudWxsKX1jYXRjaCh4KXtQKDcyKX12YXIgcj1kLkgucHJlZml4LHQ9ZnVuY3Rpb24oeCl7dmFyIHk9ZC5tZXNzYWdlQ29udGV4dC5ldmVudElkO09DKCk7TkMoeSxyLHgpfSx1PUpDKElDKEhDKEdDKEZDKERDKENDKEVDKEJDKEFDKHpDKG5ldyB5QyhkLm1lc3NhZ2VDb250ZXh0LmV2ZW50SWQsCmQubWVzc2FnZUNvbnRleHQucHJpb3JpdHlJZCxkLm1lc3NhZ2VDb250ZXh0LnByaW9yaXR5UXVldWUpLGcpLGgpLGwpLG4pLHApLHEpLGQubWVzc2FnZUNvbnRleHQuZXZlbnRNZXRhZGF0YSksZnVuY3Rpb24oKXtpZih0KXt2YXIgeD10O3Q9dm9pZCAwO3goIjIiKTtpZihkLm1lc3NhZ2VDb250ZXh0Lm9uU3VjY2VzcylkLm1lc3NhZ2VDb250ZXh0Lm9uU3VjY2VzcygpfX0pLGZ1bmN0aW9uKCl7aWYodCl7dmFyIHg9dDt0PXZvaWQgMDt4KCIzIik7aWYoZC5tZXNzYWdlQ29udGV4dC5vbkZhaWx1cmUpZC5tZXNzYWdlQ29udGV4dC5vbkZhaWx1cmUoKX19KSwhIWQubWVzc2FnZUNvbnRleHQuaXNHdG1FdmVudCkpLHY9ZnVuY3Rpb24oKXt0cnl7dmFyIHg9ZC5tZXNzYWdlQ29udGV4dC5ldmVudElkO09DKCk7TkMoeCxyLCIxIik7dmFyIHk9ZC5ILmlkLHo9bUM7aWYoZm4uSyYmYj09PUYuRC53YSl7dmFyIEMsRD0oQz1iQyh5KSk9PW51bGw/dm9pZCAwOkMuaWRzO2lmKCEoRCYmRC5sZW5ndGg+CjEpKXt2YXIgST11LkVhW0YuRC5YYl07aWYoIUl8fEk9PT15KXt2YXIgRyxOPU1jKCJnb29nbGVfdGFnX2RhdGEiLHt9KTtOLnRkfHwoTi50ZD17fSk7Rz1OLnRkO3ZhciBTPUVkKHUuSGMsbnVsbCk7RWQodS5FYSxTKTt2YXIgVz1bXSxlYTtmb3IoZWEgaW4gRylHLmhhc093blByb3BlcnR5KGVhKSYmbEMoeixHW2VhXSxTKS5sZW5ndGgmJlcucHVzaChlYSk7Vy5sZW5ndGgmJihqQyh6LHksVyksc2IoIlRBR0dJTkciLGZDW0IucmVhZHlTdGF0ZV18fDE0KSk7R1t5XT1TfX19ZihkLkguaWQsYixkLkssdSl9Y2F0Y2goZmEpe3ZhciBqYT1kLm1lc3NhZ2VDb250ZXh0LmV2ZW50SWQ7T0MoKTtOQyhqYSxyLCI0Iil9fTtiPT09Imd0YWcuZ2V0Ij92KCk6aW8oZS5SLHYpfX19LFNDPWZ1bmN0aW9uKGEsYil7aWYoYi50eXBlIT09InJlcXVpcmUiKXt2YXIgYz12b2lkIDA7Yi50eXBlPT09ImV2ZW50IiYmKGM9Yi5hcmdzWzFdKTtpZihiLkgpZm9yKHZhciBkPVFDKGEsYi5IKS5LW2IudHlwZV18fApbXSxlPTA7ZTxkLmxlbmd0aDtlKyspZFtlXShjKTtlbHNlIGZvcih2YXIgZiBpbiBhLmRlc3RpbmF0aW9ucylpZihhLmRlc3RpbmF0aW9ucy5oYXNPd25Qcm9wZXJ0eShmKSl7dmFyIGc9YS5kZXN0aW5hdGlvbnNbZl07aWYoZyYmZy5LKWZvcih2YXIgaD1nLktbYi50eXBlXXx8W10sbD0wO2w8aC5sZW5ndGg7bCsrKWhbbF0oYyl9fX07UEMucHJvdG90eXBlLnJlZ2lzdGVyPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPVFDKHRoaXMsYSk7ZS5zdGF0dXMhPT0zJiYoZS5OPWIsZS5zdGF0dXM9MyxlLlI9bG8oYyksVEModGhpcyxhLGR8fHt9KSx0aGlzLmZsdXNoKCkpfTsKUEMucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oYSxiLGMsZCl7YyE9PXZvaWQgMCYmKFFDKHRoaXMsYykuc3RhdHVzPT09MSYmKFFDKHRoaXMsYykuc3RhdHVzPTIsdGhpcy5wdXNoKCJyZXF1aXJlIixbe31dLGMse30pKSxRQyh0aGlzLGMpLkgmJihkLmRlZmVycmFibGU9ITEpLGQuZXZlbnRNZXRhZGF0YXx8KGQuZXZlbnRNZXRhZGF0YT17fSksZC5ldmVudE1ldGFkYXRhW0guSi5zZ118fChkLmV2ZW50TWV0YWRhdGFbSC5KLnNnXT1bYy5kZXN0aW5hdGlvbklkXSksZC5ldmVudE1ldGFkYXRhW0guSi5tal18fChkLmV2ZW50TWV0YWRhdGFbSC5KLm1qXT1bYy5pZF0pKTt0aGlzLmNvbW1hbmRzLnB1c2gobmV3IG5DKGEsYyxiLGQpKTtkLmRlZmVycmFibGV8fHRoaXMuZmx1c2goKX07ClBDLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcyxjPVtdLGQ9ITEsZT17fTt0aGlzLmNvbW1hbmRzLmxlbmd0aDtlPXtabjp2b2lkIDB9KXt2YXIgZj10aGlzLmNvbW1hbmRzWzBdLGc9Zi5IO2lmKGYubWVzc2FnZUNvbnRleHQuZGVmZXJyYWJsZSkhZ3x8UUModGhpcyxnKS5IPyhmLm1lc3NhZ2VDb250ZXh0LmRlZmVycmFibGU9ITEsdGhpcy5jb21tYW5kcy5wdXNoKGYpKTpjLnB1c2goZiksdGhpcy5jb21tYW5kcy5zaGlmdCgpO2Vsc2V7c3dpdGNoKGYudHlwZSl7Y2FzZSAicmVxdWlyZSI6aWYoUUModGhpcyxnKS5zdGF0dXMhPT0zJiYhYSl7dGhpcy5jb21tYW5kcy5wdXNoLmFwcGx5KHRoaXMuY29tbWFuZHMsYyk7cmV0dXJufWJyZWFrO2Nhc2UgInNldCI6dmFyIGg9Zi5hcmdzWzBdO0tDKGgpO1VDKGgpO0diKGgsZnVuY3Rpb24oeCx5KXtFZChWYih4LHkpLGIuSCl9KTtIdShoLCEwKTticmVhaztjYXNlICJldmVudCI6ZS5abj1mLmFyZ3NbMV07dmFyIGw9ClZDKGYuYXJnc1swXSxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KGUpKSxuPWxbRi5ELlhiXTtuJiZuIT09Zy5pZHx8SHUobCk7UkModGhpcyxlLlpuLGwsZik7YnJlYWs7Y2FzZSAiZ2V0Ijp2YXIgcD17fSxxPShwW0YuRC5UZl09Zi5hcmdzWzBdLHBbRi5ELlNmXT1mLmFyZ3NbMV0scCk7UkModGhpcyxGLkQuSmIscSxmKTticmVhaztjYXNlICJjb250YWluZXJfY29uZmlnIjp2YXIgcj1RQyh0aGlzLGcpLHQ9VkMoZi5hcmdzWzBdLGZ1bmN0aW9uKCl7fSk7SHUodCwhMCk7ci5IPSEwO0VkKHQsci5oYik7ZD0hMDticmVhaztjYXNlICJkZXN0aW5hdGlvbl9jb25maWciOnZhciB1PVFDKHRoaXMsZyksdj1WQyhmLmFyZ3NbMF0sZnVuY3Rpb24oKXt9KTtIdSh2LCEwKTt1LldhW2cuaWRdfHwodS5XYVtnLmlkXT17fSk7dS5IPSEwO0VkKHYsdS5XYVtnLmlkXSk7ZD0hMDticmVhaztjYXNlICJyZXNldF9jb250YWluZXJfY29uZmlnIjpRQyh0aGlzLGcpLmhiPXt9O2JyZWFrOwpjYXNlICJyZXNldF90YXJnZXRfY29uZmlnIjpRQyh0aGlzLGcpLldhW2cuaWRdPXt9fXRoaXMuY29tbWFuZHMuc2hpZnQoKTtTQyh0aGlzLGYpfX10aGlzLmNvbW1hbmRzLnB1c2guYXBwbHkodGhpcy5jb21tYW5kcyxjKTtkJiZ0aGlzLmZsdXNoKCl9O3ZhciBUQz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9RWQoYyxudWxsKTtFZChRQyhhLGIpLmliLGQpO1FDKGEsYikuaWI9ZH07ZnVuY3Rpb24gVkMoYSxiKXt2YXIgYz17fTtHYihhLGZ1bmN0aW9uKGQsZSl7RWQoVmIoZCxlKSxjKX0pO0tDKGMsYik7VUMoYyk7cmV0dXJuIGN9CmZ1bmN0aW9uIFVDKGEpe2lmKE0oNjAxKSYmQkEoKSl7Zm9yKHZhciBiPSExLGM9bShuZXcgU2V0KFtGLkQueWMsRi5ELmRkXSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlO2FbZV0hPT12b2lkIDAmJihiPSEwLGRlbGV0ZSBhW2VdKX1iJiYhYWwoMzUsZnVuY3Rpb24oKXtyZXR1cm4hMX0pJiYoWmsoMzUsITApLHdpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5sb2cmJndpbmRvdy5jb25zb2xlLmxvZygiR29vZ2xlIFRhZyBNYW5hZ2VyOiBTZXJ2ZXItc2lkZSBHVE0gcGFyYW1ldGVycyAodHJhbnNwb3J0X3VybC9zZXJ2ZXJfY29udGFpbmVyX3VybCkgYXJlIG5vdCBwZXJtaXR0ZWQgb24gdGhpcyBkb21haW4gYW5kIGhhdmUgYmVlbiBpZ25vcmVkLiIpLFAoMTk3KSl9fTt2YXIgV0M9ZnVuY3Rpb24oKXt0aGlzLkg9bmV3IFBDO3RoaXMuSz0hMX07V0MucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7dGhpcy5ILmZsdXNoKCl9O3ZhciBYQztmdW5jdGlvbiBZQygpe1hDfHwoWEM9bmV3IFdDKTtyZXR1cm4gWEN9ZnVuY3Rpb24gWkMoYSxiLGMsZCl7dmFyIGU9WUMoKSxmPWJDKGMsZC5pc0d0bUV2ZW50KTtmJiYoZS5LJiYoZC5kZWZlcnJhYmxlPSEwKSxlLkgucHVzaCgiZXZlbnQiLFtiLGFdLGYsZCkpfWZ1bmN0aW9uICRDKGEsYixjLGQpe3ZhciBlPVlDKCksZj1iQyhjLGQuaXNHdG1FdmVudCk7ZiYmZS5ILnB1c2goImdldCIsW2EsYl0sZixkKX1mdW5jdGlvbiBhRChhLGIsYyl7dmFyIGQ9WUMoKSxlPWJDKGEsYy5pc0d0bUV2ZW50KTtlJiZkLkgucHVzaCgiY29udGFpbmVyX2NvbmZpZyIsW2JdLGUsYyl9CmZ1bmN0aW9uIGJEKGEsYixjKXt2YXIgZD1ZQygpLGU9YkMoYSxjLmlzR3RtRXZlbnQpO2UmJmQuSC5wdXNoKCJkZXN0aW5hdGlvbl9jb25maWciLFtiXSxlLGMpfWZ1bmN0aW9uIGNEKGEpe3ZhciBiPVlDKCksYz1iQyhhLCEwKTtjJiZiLkgucHVzaCgicmVzZXRfY29udGFpbmVyX2NvbmZpZyIsW10sYyx7fSl9ZnVuY3Rpb24gZEQoYSl7dmFyIGI9WUMoKSxjPWJDKGEsITApO2MmJmIuSC5wdXNoKCJyZXNldF90YXJnZXRfY29uZmlnIixbXSxjLHt9KX1mdW5jdGlvbiBlRChhKXt2YXIgYj1ZQygpLGM9YkMoYSwhMCk7cmV0dXJuIGM/UUMoYi5ILGMpLmliOnt9fWZ1bmN0aW9uIGZEKGEpe3JldHVybiBZQygpLkguSFthXX1mdW5jdGlvbiBnRChhKXt2YXIgYj1ZQygpLGM9YkMoYSwhMCk7cmV0dXJuIGM/UUMoYi5ILGMpLkg6ITF9O2Z1bmN0aW9uIGhEKGEsYil7YS5oYXNPd25Qcm9wZXJ0eSgiZ3RtLnVuaXF1ZUV2ZW50SWQiKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsImd0bS51bmlxdWVFdmVudElkIix7dmFsdWU6cmooKX0pO2IuZXZlbnRJZD1hWyJndG0udW5pcXVlRXZlbnRJZCJdO2IucHJpb3JpdHlJZD1hWyJndG0ucHJpb3JpdHlJZCJdO3JldHVybntldmVudElkOmIuZXZlbnRJZCxwcmlvcml0eUlkOmIucHJpb3JpdHlJZH19ZnVuY3Rpb24gaUQoYSl7Zm9yKHZhciBiPW0oW0YuRC5kZCxGLkQueWNdKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl7dmFyIGQ9Yy52YWx1ZSxlPWEmJmFbZF18fGZEKGQpO2lmKGUpcmV0dXJuIGV9fWZ1bmN0aW9uIGpEKGEpe3JldHVybiFhLmlzR3RtRXZlbnR8fGEuZXZlbnRNZXRhZGF0YSYmYS5ldmVudE1ldGFkYXRhW0guSi5DY10mJmEuZXZlbnRNZXRhZGF0YVtILkouTmJdIT09dmsoKT8hMTohMH07dmFyIGtEPW5ldyBmdW5jdGlvbigpe3RoaXMuSD0hMX07dmFyIGxEPWZ1bmN0aW9uKCl7dGhpcy5tZXNzYWdlcz1bXTt0aGlzLkg9W119O2xELnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLm1lc3NhZ2VzLmxlbmd0aCsxO2FbImd0bS51bmlxdWVFdmVudElkIl09YjthWyJndG0ucHJpb3JpdHlJZCJdPWQ7dmFyIGU9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxjLHtldmVudElkOmIscHJpb3JpdHlJZDpkLGZyb21Db250YWluZXJFeGVjdXRpb246ITB9KTtpZihNKDU5NSkpe3ZhciBmPWMucHJpb3JpdHlRdWV1ZT9bXS5jb25jYXQodyhjLnByaW9yaXR5UXVldWUpLFtkXSk6W2RdO2FbImd0bS5wcmlvcml0eVF1ZXVlIl09ZjtlLnByaW9yaXR5UXVldWU9Zn12YXIgZz17bWVzc2FnZTphLG5vdEJlZm9yZUV2ZW50SWQ6Yixwcmlvcml0eUlkOmQsbWVzc2FnZUNvbnRleHQ6ZX07dGhpcy5tZXNzYWdlcy5wdXNoKGcpO2Zvcih2YXIgaD0wO2g8dGhpcy5ILmxlbmd0aDtoKyspdHJ5e3RoaXMuSFtoXShnKX1jYXRjaChsKXt9fTsKbEQucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbihhKXt0aGlzLkgucHVzaChhKX07bEQucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe2Zvcih2YXIgYT17fSxiPTA7Yjx0aGlzLm1lc3NhZ2VzLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMubWVzc2FnZXNbYl0sZD1hW2Mubm90QmVmb3JlRXZlbnRJZF07ZHx8KGQ9W10sYVtjLm5vdEJlZm9yZUV2ZW50SWRdPWQpO2QucHVzaChjKX1yZXR1cm4gYX07bEQucHJvdG90eXBlLnBydW5lPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPVtdLGQ9MDtkPHRoaXMubWVzc2FnZXMubGVuZ3RoO2QrKyl7dmFyIGU9dGhpcy5tZXNzYWdlc1tkXTtlLm5vdEJlZm9yZUV2ZW50SWQ9PT1hP2IucHVzaChlKTpjLnB1c2goZSl9dGhpcy5tZXNzYWdlcz1jO3JldHVybiBifTsKZnVuY3Rpb24gbUQoYSxiLGMpe2MuZXZlbnRNZXRhZGF0YT1jLmV2ZW50TWV0YWRhdGF8fHt9O2MuZXZlbnRNZXRhZGF0YVtILkouTmJdPU0oNTUwKT92aygpOkUoNik7bkQoKS5lbnF1ZXVlKGEsYixjKX1mdW5jdGlvbiBuRCgpe3JldHVybiBraigibWIiLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsRH0pfTt2YXIgcEQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1vRDtiPVN0cmluZyhiKS5zcGxpdCgiLCIpO2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1jLk5bYltkXV18fFtdO2MuTltiW2RdXT1lO2UuaW5kZXhPZihhKTwwJiZlLnB1c2goYSl9fSxxRD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1vRCxkPVtdLGU9W10sZj17fSxnPTA7ZzxhLmxlbmd0aDtmPXtsazp2b2lkIDAsUWo6dm9pZCAwLFJqOnZvaWQgMH0sZysrKXt2YXIgaD1hW2ddO2lmKGguaW5kZXhPZigiLSIpPj0wKXtpZihmLmxrPWJDKGgsYiksZi5sayl7dmFyIGw9dGsoKTtDYihsLGZ1bmN0aW9uKHgpe3JldHVybiBmdW5jdGlvbih5KXtyZXR1cm4geC5say5kZXN0aW5hdGlvbklkPT09eX19KGYpKT9kLnB1c2goaCk6ZS5wdXNoKGgpfX1lbHNle2lmKE0oNTUwKSl7dmFyIG49Yy5LW2hdfHxbXTtmLlJqPXt9O24uZm9yRWFjaChmdW5jdGlvbih4KXtyZXR1cm4gZnVuY3Rpb24oeSl7eC5Salt5XT0hMH19KGYpKTtmb3IodmFyIHA9CnRrKCkscT0wO3E8cC5sZW5ndGg7cSsrKWYuUmpbcFtxXV0mJmQucHVzaChwW3FdKX1lbHNle3ZhciByPWMuSFtoXXx8W107Zi5Raj17fTtyLmZvckVhY2goZnVuY3Rpb24oeCl7cmV0dXJuIGZ1bmN0aW9uKHkpe3guUWpbeV09ITB9fShmKSk7Zm9yKHZhciB0PXdrKCksdT0wO3U8dC5sZW5ndGg7dSsrKWlmKGYuUWpbdFt1XV0pe2Q9ZC5jb25jYXQodGsoKSk7YnJlYWt9fXZhciB2PWMuTltoXXx8W107di5sZW5ndGgmJihkPWQuY29uY2F0KHYpKX19cmV0dXJue2VrOmQsUHM6ZX19LHJEPWZ1bmN0aW9uKGEpe0diKG9ELkgsZnVuY3Rpb24oYixjKXt2YXIgZD1jLmluZGV4T2YoYSk7ZD49MCYmYy5zcGxpY2UoZCwxKX0pfSxzRD1mdW5jdGlvbihhKXtHYihvRC5LLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9Yy5pbmRleE9mKGEpO2Q+PTAmJmMuc3BsaWNlKGQsMSl9KX0sdEQ9ZnVuY3Rpb24oYSl7R2Iob0QuTixmdW5jdGlvbihiLGMpe3ZhciBkPWMuaW5kZXhPZihhKTtkPj0wJiZjLnNwbGljZShkLAoxKX0pfSxvRD1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9e307dGhpcy5OPXt9O3RoaXMuSz17fX07ZnVuY3Rpb24gdUQoYSxiLGMpe3ZhciBkPUVkKGEsbnVsbCk7ZC5ldmVudElkPXZvaWQgMDtkLmluaGVyaXRQYXJlbnRDb25maWc9dm9pZCAwO09iamVjdC5rZXlzKGIpLnNvbWUoZnVuY3Rpb24oZil7cmV0dXJuIGJbZl0hPT12b2lkIDB9KSYmUCgxMzYpO3ZhciBlPUVkKGIsbnVsbCk7RWQoYyxlKTttRChyQyh3aygpWzBdLGUpLGEuZXZlbnRJZCxkKX0KZnVuY3Rpb24gdkQoYSxiLGMsZCl7dmFyIGU9e30sZj0oZVtGLkQuVWJdPUYuRC53YSxlWyJndG0uY29uZmlnQ29udGFpbmVySWQiXT1hLmlkLGVbImd0bS5jb25maWdQYXJhbWV0ZXJzIl09YixlWyJndG0udW5pcXVlRXZlbnRJZCJdPWQuZXZlbnRJZCxlKTtjLnByaW9yaXR5UXVldWUmJihmWyJndG0ucHJpb3JpdHlRdWV1ZSJdPWMucHJpb3JpdHlRdWV1ZSk7Yy5ldmVudE1ldGFkYXRhJiYoZlsiZ3RtLmV2ZW50TWV0YWRhdGEiXT1jLmV2ZW50TWV0YWRhdGEpO2EuSmMoKSYmKGZbImd0bS5jb25maWdDb250YWluZXJJZCJdPXdrKClbMF0sZlsiZ3RtLm9yaWdpbmFsQ29uZmlnVGFyZ2V0SWQiXT1hLmlkKTtyZXR1cm4gZn1mdW5jdGlvbiB3RChhLGIsYyl7aWYoSWYoMTEpJiYhYyYmIWFbRi5ELlZkXSl7dmFyIGQ9YWwoMTAsZnVuY3Rpb24oKXtyZXR1cm4hMX0pO1prKDEwLCEwKTtYQihkLGEsYik7aWYoZClyZXR1cm4hMH1yZXR1cm4hMX07ZnVuY3Rpb24geEQoYSxiKXt2YXIgYz17fSxkPShjLmV2ZW50PWEsYyk7YiYmKGQuZXZlbnRNb2RlbD1FZChiLG51bGwpLGJbRi5ELlBmXSYmKGQuZXZlbnRDYWxsYmFjaz1iW0YuRC5QZl0pLGJbRi5ELnBoXSYmKGQuZXZlbnRUaW1lb3V0PWJbRi5ELnBoXSkpO3JldHVybiBkfQpmdW5jdGlvbiB5RChhLGIpe3ZhciBjPWEmJmFbRi5ELlhiXTtjPT09dm9pZCAwJiYoYz11QShGLkQuWGIsMiksYz09PXZvaWQgMCYmKGM9ImRlZmF1bHQiKSk7aWYoemIoYyl8fEFycmF5LmlzQXJyYXkoYykpe3ZhciBkO2Q9Yi5pc0d0bUV2ZW50P3piKGMpP1tjXTpjOmMudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikuc3BsaXQoIiwiKTt2YXIgZT1xRChkLGIuaXNHdG1FdmVudCksZj1lLmVrLGc9ZS5QcztpZihnLmxlbmd0aClmb3IodmFyIGg9aUQoYSksbD0wO2w8Zy5sZW5ndGg7bCsrKXt2YXIgbj1iQyhnW2xdLGIuaXNHdG1FdmVudCk7aWYobil7dmFyIHA9bi5kZXN0aW5hdGlvbklkLHE9dm9pZCAwOygocT1uayhuLmRlc3RpbmF0aW9uSWQpKT09bnVsbD92b2lkIDA6cS5zdGF0ZSk9PT0wfHxuQShwLGgse3NvdXJjZTozLGZyb21Db250YWluZXJFeGVjdXRpb246Yi5mcm9tQ29udGFpbmVyRXhlY3V0aW9ufSl9fXZhciByPWYuY29uY2F0KGcpO3JldHVybntlazpjQyhmLGIuaXNHdG1FdmVudCksCm1yOmNDKHIsYi5pc0d0bUV2ZW50KX19fTt2YXIgekQ9e30sQUQ9KHpELmNvbmZpZz1mdW5jdGlvbihhLGIpe3ZhciBjPWhEKGEsYiksZDthOntpZighKGEubGVuZ3RoPDIpJiZ6YihhWzFdKSl7dmFyIGU9e307aWYoYS5sZW5ndGg+Mil7aWYoYVsyXSE9PXZvaWQgMCYmIUNkKGFbMl0pfHxhLmxlbmd0aD4zKXtkPXZvaWQgMDticmVhayBhfWU9YVsyXX12YXIgZj1iQyhhWzFdLGIuaXNHdG1FdmVudCk7aWYoZil7ZD17dGFyZ2V0OmYscGFyYW1zOmV9O2JyZWFrIGF9fWQ9dm9pZCAwfXZhciBnPWQ7aWYoZyl7dmFyIGg9Zy50YXJnZXQsbD1nLnBhcmFtcyxuO2E6e2lmKCFJZig3KSl7dmFyIHA9eWsoemsoKSk7aWYoTWsocCkpe3ZhciBxPXAucGFyZW50LHI9cS5pc0Rlc3RpbmF0aW9uO249e1ZzOnlrKHEpLE1zOnJ9O2JyZWFrIGF9fW49dm9pZCAwfXZhciB0PW4sdT10PT1udWxsP3ZvaWQgMDp0LlZzLHY9dD09bnVsbD92b2lkIDA6dC5NcztkQihjLmV2ZW50SWQsImd0YWcuY29uZmlnIik7dmFyIHgseT1oLmRlc3RpbmF0aW9uSWQ7CmlmKGguSmMoKT90aygpLmluZGV4T2YoeSkhPT0tMTp3aygpLmluZGV4T2YoeSkhPT0tMSlhOntpZih1JiYoUCgxMjgpLHYmJlAoMTMwKSxiLmluaGVyaXRQYXJlbnRDb25maWcpKXt2YXIgejt2YXIgQz0kaygxMik7aWYoQyl1RChiLEMsbCksej0hMTtlbHNle3ZhciBEPSRrKDExKTshbFtGLkQuVmRdJiYoTSg1NTApfHxJZigxMSkpJiZEfHxaaygxMSxFZChsLG51bGwpKTt6PSEwfXomJnUuY29udGFpbmVycyYmdS5jb250YWluZXJzLmpvaW4oIiwiKTt4PXZvaWQgMDticmVhayBhfXZhciBJPSFJZig0NSksRz0hU2IoaC5pZCwiR1RNLSIpO0kmJkcmJihPYmplY3Qua2V5cyhsKS5sZW5ndGg9PT0wP0d1KFQuVy5Tayk6R3UoVC5XLlRrKSxFbCgpJiZHdShULlcuUmspLCRrKDMxKSYmR3UoVC5XLlVrKSk7dmFyIE49WUI7Zm4uSyYmKE4uSD09PTEmJihRbS5ILm1jYz0hMSksTi5IPTIpO2lmKE0oNTUwKXx8IXdEKGwsYixoLkpjKCkpKXtrRC5IfHxQKDQzKTtpZighTSg1NTApKXtpZighYi5ub1RhcmdldEdyb3VwKXt2YXIgUz0KaC5pZDtpZihoLkpjKCkpdEQoUykscEQoUyxsW0YuRC5PZF18fCJkZWZhdWx0Iik7ZWxzZXtyRChTKTt2YXIgVz1sW0YuRC5PZF18fCJkZWZhdWx0IixlYT1vRDtXPVcudG9TdHJpbmcoKS5zcGxpdCgiLCIpO2Zvcih2YXIgamE9MDtqYTxXLmxlbmd0aDtqYSsrKXt2YXIgZmE9ZWEuSFtXW2phXV18fFtdO2VhLkhbV1tqYV1dPWZhO2ZhLmluZGV4T2YoUyk8MCYmZmEucHVzaChTKX19fWRlbGV0ZSBsW0YuRC5PZF19dmFyIHNhPWIuZXZlbnRNZXRhZGF0YXx8e307c2EuaGFzT3duUHJvcGVydHkoSC5KLmFlKXx8KHNhW0guSi5hZV09IWIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbik7Yi5ldmVudE1ldGFkYXRhPXNhO2RlbGV0ZSBsW0YuRC5QZl07aWYoTSg1NTApKXt4PXZEKGgsbCxiLGMpO2JyZWFrIGF9dmFyIGRhPSEhbFtGLkQuVmRdO2RlbGV0ZSBsW0YuRC5WZF07dmFyIG1hPXRrKCksUGE9Y0QsRmE9YUQ7aC5KYygpJiYobWE9W2guaWRdLFBhPWRELEZhPWJEKTtmb3IodmFyIHFhPTA7cWE8Cm1hLmxlbmd0aDtxYSsrKXtkYXx8UGEobWFbcWFdKTt2YXIgaWI9Z0QobWFbcWFdKTtGYShtYVtxYV0sRWQobCxudWxsKSxFZChiLG51bGwpKTtpYiYmZGF8fFpDKEYuRC53YSxFZChsLG51bGwpLG1hW3FhXSxFZChiLG51bGwpKX19eD12b2lkIDB9ZWxzZSBhOntpZighYi5pbmhlcml0UGFyZW50Q29uZmlnJiYhbFtGLkQuWmNdKXt2YXIgWGI9aUQobCksTGM9aC5kZXN0aW5hdGlvbklkO2lmKGguSmMoKSluQShMYyxYYix7c291cmNlOjIsZnJvbUNvbnRhaW5lckV4ZWN1dGlvbjpiLmZyb21Db250YWluZXJFeGVjdXRpb259KTtlbHNlIGlmKHUhPT12b2lkIDAmJnUuY29udGFpbmVycy5pbmRleE9mKExjKSE9PS0xKXt2YXIgUWQ9JGsoMTEpLFljPSRrKDEyKTtRZD91RChiLGwsUWQpOlljfHxaaygxMixFZChsLG51bGwpKX1lbHNlIGlmKGhBKExjLFhiLCEwLHtzb3VyY2U6Mixmcm9tQ29udGFpbmVyRXhlY3V0aW9uOmIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbn0pLE0oNTUwKSl7eD12RChoLApsLGIsYyk7YnJlYWsgYX19eD12b2lkIDB9cmV0dXJuIHh9fSx6RC5jb25zZW50PWZ1bmN0aW9uKGEsYil7aWYoYS5sZW5ndGg9PT0zKXtQKDM5KTt2YXIgYz1oRChhLGIpLGQ9YVsxXSxlPXt9LGY9T28oYVsyXSksZztmb3IoZyBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoZykpe3ZhciBoPWZbZ107ZVtnXT1nPT09Ri5ELllnP0FycmF5LmlzQXJyYXkoaCk/TmFOOk51bWJlcihoKTpnPT09Ri5ELm5jPyhBcnJheS5pc0FycmF5KGgpP2g6W2hdKS5tYXAoUG8pOlFvKGgpfWIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbnx8KGVbRi5ELm1hXSYmUCgxMzkpLGVbRi5ELlhhXSYmUCgxNDApKTtkPT09ImRlZmF1bHQiP1RvKGUpOmQ9PT0idXBkYXRlIj9WbyhlLGMpOmQ9PT0iZGVjbGFyZSImJmIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbiYmU28oZSl9fSx6RC5jb250YWluZXJfY29uZmlnPWZ1bmN0aW9uKGEsYil7aWYoakQoYikmJmEubGVuZ3RoPT09MyYmemIoYVsxXSkmJkNkKGFbMl0pKXt2YXIgYz0KYVsyXSxkPWJDKGFbMV0sITApO2QmJmFEKGQuZGVzdGluYXRpb25JZCxjLEVkKGIsbnVsbCkpfX0sekQuZGVzdGluYXRpb25fY29uZmlnPWZ1bmN0aW9uKGEsYil7aWYoakQoYikmJmEubGVuZ3RoPT09MyYmemIoYVsxXSkmJkNkKGFbMl0pKXt2YXIgYz1hWzJdLGQ9YkMoYVsxXSwhMCk7aWYoZCl7aWYoTSg1NTApKXtpZighYi5ub1RhcmdldEdyb3VwKXt2YXIgZT1kLmlkO2lmKGQuSmMoKSl0RChlKSxwRChlLGNbRi5ELk9kXXx8ImRlZmF1bHQiKTtlbHNle3NEKGUpO3ZhciBmPWNbRi5ELk9kXXx8ImRlZmF1bHQiLGc9b0Q7Zj1TdHJpbmcoZikuc3BsaXQoIiwiKTtmb3IodmFyIGg9MDtoPGYubGVuZ3RoO2grKyl7dmFyIGw9Zy5LW2ZbaF1dfHxbXTtnLktbZltoXV09bDtsLmluZGV4T2YoZSk8MCYmbC5wdXNoKGUpfX19ZGVsZXRlIGNbRi5ELk9kXX1iRChkLmlkLGMsRWQoYixudWxsKSl9fX0sekQuZXZlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hWzFdO2lmKCEoYS5sZW5ndGg8MikmJgp6YihjKSl7dmFyIGQ9dm9pZCAwO2lmKGEubGVuZ3RoPjIpe2lmKCFDZChhWzJdKSYmYVsyXSE9PXZvaWQgMHx8YS5sZW5ndGg+MylyZXR1cm47ZD1hWzJdfXZhciBlPXhEKGMsZCksZj1oRChhLGIpLGc9Zi5ldmVudElkLGg9Zi5wcmlvcml0eUlkO2VbImd0bS51bmlxdWVFdmVudElkIl09ZztoJiYoZVsiZ3RtLnByaW9yaXR5SWQiXT1oKTtiLnByaW9yaXR5UXVldWUmJihlWyJndG0ucHJpb3JpdHlRdWV1ZSJdPWIucHJpb3JpdHlRdWV1ZSk7aWYoYz09PSJvcHRpbWl6ZS5jYWxsYmFjayIpcmV0dXJuIGUuZXZlbnRNb2RlbD1lLmV2ZW50TW9kZWx8fHt9LGU7dmFyIGw9eUQoZCxiKTtpZihsKXtmb3IodmFyIG49bC5layxwPWwubXIscT1wLm1hcChmdW5jdGlvbihOKXtyZXR1cm4gTi5pZH0pLHI9cC5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIE4uZGVzdGluYXRpb25JZH0pLHQ9bi5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIE4uaWR9KSx1PW0odGsoKSksdj11Lm5leHQoKTshdi5kb25lO3Y9CnUubmV4dCgpKXt2YXIgeD12LnZhbHVlO3IuaW5kZXhPZih4KTwwJiZ0LnB1c2goeCl9ZEIoZyxjKTtmb3IodmFyIHk9bSh0KSx6PXkubmV4dCgpOyF6LmRvbmU7ej15Lm5leHQoKSl7dmFyIEM9ei52YWx1ZSxEPUVkKGIsbnVsbCksST1FZChkLG51bGwpO2RlbGV0ZSBJW0YuRC5QZl07dmFyIEc9RC5ldmVudE1ldGFkYXRhfHx7fTtHLmhhc093blByb3BlcnR5KEguSi5hZSl8fChHW0guSi5hZV09IUQuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbik7R1tILkoubWpdPXEuc2xpY2UoKTtHW0guSi5zZ109ci5zbGljZSgpO0QuZXZlbnRNZXRhZGF0YT1HO1pDKGMsSSxDLEQpfWUuZXZlbnRNb2RlbD1lLmV2ZW50TW9kZWx8fHt9O3EubGVuZ3RoPjA/ZS5ldmVudE1vZGVsW0YuRC5YYl09cS5qb2luKCIsIik6ZGVsZXRlIGUuZXZlbnRNb2RlbFtGLkQuWGJdO2tELkh8fFAoNDMpO2Iubm9HdG1FdmVudD09PXZvaWQgMCYmYi5ldmVudE1ldGFkYXRhJiZiLmV2ZW50TWV0YWRhdGFbSC5KLkJuXSYmKGIubm9HdG1FdmVudD0KITApO2UuZXZlbnRNb2RlbFtGLkQuWWNdJiYoYi5ub0d0bUV2ZW50PSEwKTtyZXR1cm4gYi5ub0d0bUV2ZW50P3ZvaWQgMDplfX19LHpELmdldD1mdW5jdGlvbihhLGIpe1AoNTMpO2lmKGEubGVuZ3RoPT09NCYmemIoYVsxXSkmJnpiKGFbMl0pJiZ5YihhWzNdKSl7dmFyIGM9YkMoYVsxXSxiLmlzR3RtRXZlbnQpLGQ9U3RyaW5nKGFbMl0pLGU9YVszXTtpZihjKXtrRC5IfHxQKDQzKTt2YXIgZj1pRCgpO2lmKENiKHRrKCksZnVuY3Rpb24oaCl7cmV0dXJuIGMuZGVzdGluYXRpb25JZD09PWh9KSl7aEQoYSxiKTt2YXIgZz17fTtFZCgoZ1tGLkQuVGZdPWQsZ1tGLkQuU2ZdPWUsZyksbnVsbCk7JEMoZCxmdW5jdGlvbihoKXtiZChmdW5jdGlvbigpe2UoaCl9KX0sYy5pZCxiKX1lbHNlIG5BKGMuZGVzdGluYXRpb25JZCxmLHtzb3VyY2U6NCxmcm9tQ29udGFpbmVyRXhlY3V0aW9uOmIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbn0pfX19LHpELmpzPWZ1bmN0aW9uKGEsYil7dmFyIGM7aWYoYS5sZW5ndGg9PT0KMiYmYVsxXS5nZXRUaW1lKXtrRC5IPSEwO3ZhciBkPWhEKGEsYiksZT1kLmV2ZW50SWQsZj1kLnByaW9yaXR5SWQsZz17fTtjPShnLmV2ZW50PSJndG0uanMiLGdbImd0bS5zdGFydCJdPWFbMV0uZ2V0VGltZSgpLGdbImd0bS51bmlxdWVFdmVudElkIl09ZSxnWyJndG0ucHJpb3JpdHlJZCJdPWYsZyl9ZWxzZSBjPXZvaWQgMDtyZXR1cm4gY30sekQucG9saWN5PWZ1bmN0aW9uKGEpe2lmKGEubGVuZ3RoPT09MyYmemIoYVsxXSkmJnliKGFbMl0pKXtpZihoeShhWzFdLGFbMl0pLFAoNzQpLGFbMV09PT0iYWxsIil7UCg3NSk7dmFyIGI9ITE7dHJ5e2I9YVsyXShFKDUpLCJ1bmtub3duIix7fSl9Y2F0Y2goYyl7fWJ8fFAoNzYpfX1lbHNlIFAoNzMpfSx6RC5yZXNldF90YXJnZXRfY29uZmlnPWZ1bmN0aW9uKGEsYil7aWYoakQoYikmJmEubGVuZ3RoPT09MiYmemIoYVsxXSkpe3ZhciBjPWJDKGFbMV0sITApO2MmJmREKGMuaWQpfX0sekQuc2V0PWZ1bmN0aW9uKGEsYil7dmFyIGM9dm9pZCAwOwphLmxlbmd0aD09PTImJkNkKGFbMV0pP2M9RWQoYVsxXSxudWxsKTphLmxlbmd0aD09PTMmJnpiKGFbMV0pJiYoYz17fSxDZChhWzJdKXx8QXJyYXkuaXNBcnJheShhWzJdKT9jW2FbMV1dPUVkKGFbMl0sbnVsbCk6Y1thWzFdXT1hWzJdKTtpZihjKXtaaygzMSwhMCk7dmFyIGQ9aEQoYSxiKSxlPWQuZXZlbnRJZCxmPWQucHJpb3JpdHlJZDtFZChjLG51bGwpO0UoNSk7dmFyIGc9RWQoYyxudWxsKTtZQygpLkgucHVzaCgic2V0IixbZ10sdm9pZCAwLGIpO2NbImd0bS51bmlxdWVFdmVudElkIl09ZTtmJiYoY1siZ3RtLnByaW9yaXR5SWQiXT1mKTtkZWxldGUgYy5ldmVudDtiLm92ZXJ3cml0ZU1vZGVsRmllbGRzPSEwO3JldHVybiBjfX0sekQpLEJEPXt9LENEPShCRC5wb2xpY3k9ITAsQkQpO3ZhciBFRD1mdW5jdGlvbihhKXtpZihERChhKSlyZXR1cm4gYTt0aGlzLnZhbHVlPWF9O0VELnByb3RvdHlwZS5nZXRVbnRydXN0ZWRNZXNzYWdlVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX07dmFyIEREPWZ1bmN0aW9uKGEpe3JldHVybiFhfHxBZChhKSE9PSJvYmplY3QifHxDZChhKT8hMToiZ2V0VW50cnVzdGVkTWVzc2FnZVZhbHVlImluIGF9O0VELnByb3RvdHlwZS5nZXRVbnRydXN0ZWRNZXNzYWdlVmFsdWU9RUQucHJvdG90eXBlLmdldFVudHJ1c3RlZE1lc3NhZ2VWYWx1ZTt2YXIgRkQ9e0JiOiIxIixlZToiMiIsWGQ6IjMiLGNlOiI0Iix4ZjoiNSIscWc6IjYiLEtoOiI3Iix0ajoiOCIsbGk6IjkiLGpqOiIxMCJ9Owp2YXIgR0Q9ZnVuY3Rpb24oYSxiKXtpZihhKXt2YXIgYz1hLnRyaW0oKS5yZXBsYWNlQWxsKC9ccysvZywiIikucmVwbGFjZUFsbCgvKFxkezIsfSlcLi9nLCIkMSIpLnJlcGxhY2VBbGwoLy0vZywiIikucmVwbGFjZUFsbCgvXCgoXGQrKVwpL2csIiQxIik7aWYoYiYmYy5tYXRjaCgvXlwrP1xkezMsNH0kLykpcmV0dXJuIGM7Yy5jaGFyQXQoMCkhPT0iKyImJihjPSIrIitjKTtpZihjLm1hdGNoKG5ldyBSZWdFeHAoIl5cXCtcXGR7IisoTSg1OTcpPzc6MTApKyIsMTV9JCIpKSlyZXR1cm4gY319LElEPWZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiPWEudHJpbSgpO2lmKEhELnRlc3QoYikpcmV0dXJuIGIudG9Mb3dlckNhc2UoKS5yZXBsYWNlQWxsKC9bLSBdKy9nLCIiKX19LE1EPWZ1bmN0aW9uKGEpe3ZhciBiPUpEKEtEKShhKTtpZihiJiYhTEQoYikpcmV0dXJuIGJ9LExEPWZ1bmN0aW9uKGEpe2lmKCFBLmxvY2F0aW9uKXJldHVybiExO3ZhciBiPU5qKEEubG9jYXRpb24sImhvc3QiLCEwKSwKYztpZihNKDYwMikpYTp7Zm9yKHZhciBkPWIuc3BsaXQoIi4iKSxlPWEudG9Mb3dlckNhc2UoKSxmPTA7ZjxkLmxlbmd0aC0xO2YrKyl7dmFyIGc9ZC5zbGljZShmKS5qb2luKCIuIik7aWYoZS5tYXRjaCgiQCIrZysiJCIpKXtjPSEwO2JyZWFrIGF9fWM9ITF9ZWxzZSBjPWEudG9Mb3dlckNhc2UoKS5pbmRleE9mKGIpPj0wO3JldHVybiBjfSxKRD1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5tYXRjaChhKTtyZXR1cm4gYz9jWzBdLnRyaW0oKS50b0xvd2VyQ2FzZSgpOnZvaWQgMH19LEtEPS9bQS1aMC05Ll8lKy1dK0BbQS1aMC05Li1dK1wuW0EtWl17Mix9L2ksTkQ9SkQoL14oW15ceDAwLVx4NDBceDViLVx4NjBceDdiLVx4ZmZdfFsuLV18XHMpKyQvKSxIRD1SZWdFeHAoIl4oPzpbQS1aXXsxLDJ9XFxkW0EtWlxcZF0/WyAtXT9cXGRbQS1aXXsyfXxbQS1aXVxcZFtBLVpdWyAtXT9cXGRbQS1aXVxcZHxcXGR7NH0gP1tBLVpdezJ9fFtBLVpdXFxkezR9W0EtWl17M318XFxkezV9KD86LVxcZHs0fSk/fFxcZHs1fS1cXGR7M318XFxkezR9LVxcZHszfXxcXGR7M30tXFxkezR9fFxcZHsyfS1cXGR7M318XFxkezN9ID9cXGR7Mn18XFxkezQsN30pJCIsCiJpIiksT0Q9SkQoL14oW15ceDAwLVx4NDBceDViLVx4NjBceDdiLVx4ZmZdfFsuLV18XHN8XGQpKyQvKTsKdmFyIFBEPWZ1bmN0aW9uKCl7dmFyIGE9U3RyaW5nKGFsKDMzLGZ1bmN0aW9uKCl7cmV0dXJuIDB9KSk7YS5pbmRleE9mKCIuIikhPT0tMSYmKGE9YS5zdWJzdHJpbmcoMCxhLmluZGV4T2YoIi4iKSszKSk7dmFyIGI9YWwoMzQsZnVuY3Rpb24oKXtyZXR1cm4gMH0pO3JldHVybnt2dDpOdW1iZXIoYSksc3Q6Yn19LFFEPWZ1bmN0aW9uKCl7cmV0dXJuIGFsKDMyLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNYXB9KX0sU0Q9ZnVuY3Rpb24oYSl7dmFyIGI9cGQoKXx8MCxjPVtGRC5CYl07TSg1NjgpJiZjLnB1c2goRkQuZWUsRkQuWGQsRkQuY2UsRkQueGYsRkQucWcsRkQudGosRkQubGksRkQuamopO2Zvcih2YXIgZD1SRChhLG5ldyBTZXQoYykpLGU9YWwoMzIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1hcH0pLGY9bShkKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9Zy52YWx1ZTtlLnNldChoLkRhLGgpfXZhciBsPShwZCgpfHwwKS1iLG49YWwoMzMsZnVuY3Rpb24oKXtyZXR1cm4gMH0pOwpaaygzMyxuK2wpO3ZhciBwPWFsKDM0LGZ1bmN0aW9uKCl7cmV0dXJuIDB9KTtaaygzNCxwKzEpfSxSRD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1OZigzNiwyKSxkPVtdLGU9W3tvbzphLGRlcHRoOjB9XTtlLmxlbmd0aD4wOylmb3IodmFyIGY9ZS5zaGlmdCgpLGc9Zi5vbyxoPWYuZGVwdGgsbD1tKE9iamVjdC5rZXlzKGcpKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl7dmFyIHA9bi52YWx1ZTtpZighVEQuaGFzKHApKXt2YXIgcT1nW3BdO2lmKHEpaWYoQ2QocSkpaCsxPD1jJiZlLnB1c2goe29vOnEsZGVwdGg6aCsxfSk7ZWxzZXtmb3IodmFyIHI9bShiKSx0PXIubmV4dCgpOyF0LmRvbmU7dD1yLm5leHQoKSl7dmFyIHU9dC52YWx1ZSx2PVVEW3VdO2lmKHYmJnYuS2MudGVzdChwKSl7dmFyIHg9di5uYShTdHJpbmcocSkpO2lmKHgpe2QucHVzaCh7Q2E6eCxEYTp1fSk7Yi5kZWxldGUodSk7YnJlYWt9fX1pZihiLnNpemU9PT0wKXJldHVybiBkfX19cmV0dXJuIGR9LFREPQpuZXcgU2V0KFsiaXRlbXMiLCJlY29tbWVyY2UiXSksVkQ9UmVnRXhwKCJwaG9uZSIsImkiKSxXRD1SZWdFeHAoImZpcnN0Xz9uYW1lIiwiaSIpLFhEPVJlZ0V4cCgibGFzdF8/bmFtZSIsImkiKSxZRD1SZWdFeHAoImNvdW50cnkiLCJpIiksWkQ9UmVnRXhwKCJwb3N0fHppcCIsImkiKSwkRD1SZWdFeHAoImFkZHJlc3N8c3RyZWV0IiwiaSIpLGFFPVJlZ0V4cCgiY2l0eSIsImkiKSxiRT1SZWdFeHAoInJlZ2lvbnxzdGF0ZXxwcm92aW5jZSIsImkiKSxjRT17fSxVRD0oY0VbRkQuQmJdPXtLYzpSZWdFeHAoImVtYWlsIiwiaSIpLG5hOk1EfSxjRVtGRC5lZV09e0tjOlZELG5hOmZ1bmN0aW9uKGEpe3JldHVybiBHRChhLCExKX19LGNFW0ZELlhkXT17S2M6V0QsbmE6TkR9LGNFW0ZELmNlXT17S2M6WEQsbmE6TkR9LGNFW0ZELnRqXT17S2M6JEQsbmE6T0R9LGNFW0ZELmxpXT17S2M6YUUsbmE6TkR9LGNFW0ZELmpqXT17S2M6YkUsbmE6TkR9LGNFW0ZELnFnXT17S2M6WkQsbmE6SUR9LGNFW0ZELnhmXT0Ke0tjOllELG5hOk5EfSxjRSk7dmFyIGRFPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmxvYWRlZD0hMTt0aGlzLkg9W107aWYoQi5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIil0aGlzLm9uTG9hZCgpO2Vsc2UgJGMoQSwibG9hZCIsZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBhLm9uTG9hZCgpfSl9O2RFLnByb3RvdHlwZS5vbkxvYWQ9ZnVuY3Rpb24oKXtpZighdGhpcy5sb2FkZWQpe3RoaXMubG9hZGVkPSEwO2Zvcih2YXIgYT0wO2E8dGhpcy5ILmxlbmd0aDthKyspYmQodGhpcy5IW2FdKX19O3ZhciBmRT1mdW5jdGlvbihhKXt2YXIgYj1lRTtiLmxvYWRlZD9iZChhKTpiLkgucHVzaChhKX0sZUU9bmV3IGRFO3ZhciBnRT1mdW5jdGlvbigpe3RoaXMuWj0wO3RoaXMuSz17fTt0aGlzLkg9W107dGhpcy5OPVtdO3RoaXMuZmE9dGhpcy5SPXRoaXMuamE9ITF9LGlFPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1oRTthLmV2ZW50Q2FsbGJhY2s9YjtjJiYoYS5ldmVudFRpbWVvdXQ9Yyk7cmV0dXJuIGQucHVzaChhKX0sakU9ZnVuY3Rpb24oYSxiKXtpZighQWIoYil8fGI8MCliPTA7dmFyIGM9cWooKSxkPTAsZT0hMSxmPXZvaWQgMDtmPUEuc2V0VGltZW91dChmdW5jdGlvbigpe2V8fChlPSEwLGEoKSk7Zj12b2lkIDB9LGIpO3JldHVybiBmdW5jdGlvbigpe3ZhciBnPWM/Yy5zdWJzY3JpYmVyczoxOysrZD09PWcmJihmJiYoQS5jbGVhclRpbWVvdXQoZiksZj12b2lkIDApLGV8fChhKCksZT0hMCkpfX0sbEU9ZnVuY3Rpb24oYSl7dmFyIGI7aWYoYS5OLmxlbmd0aCliPWEuTi5zaGlmdCgpO2Vsc2UgaWYoYS5ILmxlbmd0aCliPWEuSC5zaGlmdCgpO2Vsc2UgcmV0dXJuO3ZhciBjO3ZhciBkPWI7aWYoYS5qYXx8CiFrRShkLm1lc3NhZ2UpKWM9ZDtlbHNle2EuamE9ITA7dmFyIGU9ZC5tZXNzYWdlWyJndG0udW5pcXVlRXZlbnRJZCJdLGYsZzt0eXBlb2YgZT09PSJudW1iZXIiPyhmPWUtMixnPWUtMSk6KGY9cmooKSxnPXJqKCksZC5tZXNzYWdlWyJndG0udW5pcXVlRXZlbnRJZCJdPXJqKCkpO3ZhciBoPXt9LGw9e21lc3NhZ2U6KGguZXZlbnQ9Imd0bS5pbml0X2NvbnNlbnQiLGhbImd0bS51bmlxdWVFdmVudElkIl09ZixoKSxtZXNzYWdlQ29udGV4dDp7ZXZlbnRJZDpmfX0sbj17fSxwPXttZXNzYWdlOihuLmV2ZW50PSJndG0uaW5pdCIsblsiZ3RtLnVuaXF1ZUV2ZW50SWQiXT1nLG4pLG1lc3NhZ2VDb250ZXh0OntldmVudElkOmd9fTthLkgudW5zaGlmdChwLGQpO2M9bH1yZXR1cm4gY30sb0U9ZnVuY3Rpb24oYSl7YS5mYXx8UCgxOTYpO2Zvcih2YXIgYj0hMSxjOyFhLlImJihjPWxFKGEpKTspe2EuUj0hMDt2YXIgZD1yQTtkZWxldGUgZC5ILmV2ZW50TW9kZWw7b0EoZCk7dmFyIGU9YyxmPQplLm1lc3NhZ2UsZz1lLm1lc3NhZ2VDb250ZXh0O2lmKGY9PW51bGwpYS5SPSExO2Vsc2V7Zy5mcm9tQ29udGFpbmVyRXhlY3V0aW9uJiZzQSgpO3RyeXtpZih5YihmKSl0cnl7Zi5jYWxsKHRBKX1jYXRjaChTKXt9ZWxzZSBpZihBcnJheS5pc0FycmF5KGYpKXtpZih6YihmWzBdKSl7dmFyIGg9ZlswXS5zcGxpdCgiLiIpLGw9aC5wb3AoKSxuPWYuc2xpY2UoMSkscD11QShoLmpvaW4oIi4iKSwyKTtpZihwIT1udWxsKXRyeXtwW2xdLmFwcGx5KHAsbil9Y2F0Y2goUyl7fX19ZWxzZXt2YXIgcT12b2lkIDA7aWYoSGIoZikpYTp7aWYoZi5sZW5ndGgmJnpiKGZbMF0pKXt2YXIgcj1BRFtmWzBdXTtpZihyJiYoIWcuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbnx8IUNEW2ZbMF1dKSl7cT1yKGYsZyk7YnJlYWsgYX19cT12b2lkIDB9ZWxzZSBxPWY7aWYocSl7dmFyIHQ7Zm9yKHZhciB1PXEsdj11Ll9jbGVhcnx8Zy5vdmVyd3JpdGVNb2RlbEZpZWxkcyx4PW0oT2JqZWN0LmtleXModSkpLHk9eC5uZXh0KCk7IXkuZG9uZTt5PQp4Lm5leHQoKSl7dmFyIHo9eS52YWx1ZTt6IT09Il9jbGVhciImJih2JiZyQS5zZXQoeix2b2lkIDApLHJBLnNldCh6LHVbel0pKX1NKDU5MikmJlNEKHUpOyRrKDI1KXx8WmsoMjUsdVsiZ3RtLnN0YXJ0Il0pO3ZhciBDPXVbImd0bS51bmlxdWVFdmVudElkIl07dS5ldmVudD8odHlwZW9mIEMhPT0ibnVtYmVyIiYmKEM9cmooKSx1WyJndG0udW5pcXVlRXZlbnRJZCJdPUMsckEuc2V0KCJndG0udW5pcXVlRXZlbnRJZCIsQykpLHQ9ekIodSkpOnQ9ITE7Yj10fHxifX19ZmluYWxseXtnLmZyb21Db250YWluZXJFeGVjdXRpb24mJm9BKHJBLCEwKTt2YXIgRD1mWyJndG0udW5pcXVlRXZlbnRJZCJdO2lmKHR5cGVvZiBEPT09Im51bWJlciIpe2Zvcih2YXIgST1hLEc9SS5LW1N0cmluZyhEKV18fFtdLE49MDtOPEcubGVuZ3RoO04rKylJLk4ucHVzaChtRShHW05dKSk7Ry5sZW5ndGgmJkkuTi5zb3J0KG5FKTtkZWxldGUgSS5LW1N0cmluZyhEKV07RD5hLlomJihhLlo9RCl9YS5SPSExfX19cmV0dXJuIWJ9LApwRT1mdW5jdGlvbigpe3ZhciBhPWhFO2EuZmEmJlAoMTk1KTthLmZhPSEwO2lmKGZuLkgpe3ZhciBiPSFJZig1MSksYz1yeigpO3B6KGMse3N0YWdlOkl5LlguWmd9KTtpZihiKXt2YXIgZD1xeihjLHtzdGFnZTpJeS5YLllrfSxJeS5YLm5pKTtkIT09dm9pZCAwJiYoYy5ILlk9ZCl9dmFyIGU9YS5ILmxlbmd0aDtyeigpLkguQz1lfW9FKGEpO2lmKGZuLkgpe3ZhciBmPXJ6KCksZz1xeihmLHtzdGFnZTpJeS5YLlZrfSxJeS5YLlpnKTtnIT09dm9pZCAwJiYoZi5ILkI9Zyl9dHJ5e3ZhciBoPUFbRSgxOSldLGw9RSg1KSxuPWguaGlkZTtpZihuJiZuW2xdIT09dm9pZCAwJiZuLmVuZCl7bltsXT0hMTt2YXIgcD0hMCxxO2ZvcihxIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShxKSYmbltxXT09PSEwKXtwPSExO2JyZWFrfXAmJihuLmVuZCgpLG4uZW5kPW51bGwpfX1jYXRjaChyKXtFKDUpfX0scUU9ZnVuY3Rpb24oYSxiKXtpZihhLlo8Yi5ub3RCZWZvcmVFdmVudElkKXt2YXIgYz1TdHJpbmcoYi5ub3RCZWZvcmVFdmVudElkKTsKYS5LW2NdPWEuS1tjXXx8W107YS5LW2NdLnB1c2goYil9ZWxzZXthLk4ucHVzaChtRShiKSk7YS5OLnNvcnQobkUpO3ZhciBkPWZ1bmN0aW9uKCl7YS5SfHxvRShhKX07TSg1ODApP2RkKGQpOmJkKGQpfX07CmdFLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShoKXt2YXIgbD17fTtpZihERChoKSl7dmFyIG49aDtoPUREKG4pP24uZ2V0VW50cnVzdGVkTWVzc2FnZVZhbHVlKCk6dm9pZCAwO2wuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbj0hMH1yZXR1cm57bWVzc2FnZTpoLG1lc3NhZ2VDb250ZXh0Omx9fXZhciBiPXRoaXMsYz1NYyhFKDE5KSxbXSksZD1waigpO2QucHJ1bmVkPT09ITAmJlAoODMpO3RoaXMuSz1uRCgpLmdldCgpO25EKCkubGlzdGVuKGZ1bmN0aW9uKGgpe3FFKGIsaCl9KTtkLnN1YnNjcmliZXJzPShkLnN1YnNjcmliZXJzfHwwKSsxO3ZhciBlPWMucHVzaCxmPXRoaXM7Yy5wdXNoPWZ1bmN0aW9uKCl7dmFyIGg7bGooKTtpZihqai5ILlNBTkRCT1hFRF9KU19TRU1BUEhPUkU+MCl7aD1bXTtmb3IodmFyIGw9MDtsPGFyZ3VtZW50cy5sZW5ndGg7bCsrKWhbbF09bmV3IEVEKGFyZ3VtZW50c1tsXSl9ZWxzZSBoPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApOwp2YXIgbj1oLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gYSh0KX0pO2YuSC5wdXNoLmFwcGx5KGYuSCxuKTt2YXIgcD1lLmFwcGx5KGMsaCkscT1NYXRoLm1heCgxMDAsTmYoMSwzMDApKTtpZih0aGlzLmxlbmd0aD5xKWZvcihQKDQpLGQucHJ1bmVkPSEwO3RoaXMubGVuZ3RoPnE7KXRoaXMuc2hpZnQoKTt2YXIgcj10eXBlb2YgcCE9PSJib29sZWFuInx8cDtyZXR1cm4gb0UoZikmJnJ9O3ZhciBnPWMuc2xpY2UoMCkubWFwKGZ1bmN0aW9uKGgpe3JldHVybiBhKGgpfSk7dGhpcy5ILnB1c2guYXBwbHkodGhpcy5ILGcpO0lmKDUxKXx8KGZuLkgmJnV6KCksYmQockUpKTtWQihmdW5jdGlvbigpe2lmKCFkLmd0bURvbSl7ZC5ndG1Eb209ITA7dmFyIGg9e307Yy5wdXNoKChoLmV2ZW50PSJndG0uZG9tIixoKSl9fSk7ZkUoZnVuY3Rpb24oKXtpZighZC5ndG1Mb2FkKXtkLmd0bUxvYWQ9ITA7dmFyIGg9e307Yy5wdXNoKChoLmV2ZW50PSJndG0ubG9hZCIsaCkpfX0pfTsKZ0UucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oYSl7cmV0dXJuIEFbRSgxOSldLnB1c2goYSl9O3ZhciBoRT1uZXcgZ0U7ZnVuY3Rpb24gbkUoYSxiKXt2YXIgYz1hLm1lc3NhZ2VDb250ZXh0LGQ9Yi5tZXNzYWdlQ29udGV4dDtpZihjLmV2ZW50SWQhPT1kLmV2ZW50SWQpcmV0dXJuIGMuZXZlbnRJZC1kLmV2ZW50SWQ7aWYoIU0oNTk1KSlyZXR1cm4gYy5wcmlvcml0eUlkLWQucHJpb3JpdHlJZDt2YXIgZSxmLGc7YTp7Zm9yKHZhciBoPShlPWMucHJpb3JpdHlRdWV1ZSkhPW51bGw/ZTpbYy5wcmlvcml0eUlkXSxsPShmPWQucHJpb3JpdHlRdWV1ZSkhPW51bGw/ZjpbZC5wcmlvcml0eUlkXSxuPU1hdGgubWluKGgubGVuZ3RoLGwubGVuZ3RoKSxwPTA7cDxuO3ArKylpZihoW3BdIT09bFtwXSl7Zz1oW3BdLWxbcF07YnJlYWsgYX1nPWgubGVuZ3RoLWwubGVuZ3RofXJldHVybiBnfQpmdW5jdGlvbiBrRShhKXtpZihhPT1udWxsfHx0eXBlb2YgYSE9PSJvYmplY3QiKXJldHVybiExO2lmKGEuZXZlbnQpcmV0dXJuITA7aWYoSGIoYSkpe3ZhciBiPWFbMF07aWYoYj09PSJjb25maWcifHxiPT09ImV2ZW50Inx8Yj09PSJqcyJ8fGI9PT0iZ2V0IilyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBtRShhKXtyZXR1cm57bWVzc2FnZTphLm1lc3NhZ2UsbWVzc2FnZUNvbnRleHQ6YS5tZXNzYWdlQ29udGV4dH19ZnVuY3Rpb24gc0UoYSxiLGMpe3JldHVybiBpRShhLGIsYyl9ZnVuY3Rpb24gdEUoYSxiKXtyZXR1cm4gakUoYSxiKX1mdW5jdGlvbiByRSgpe3BFKCl9ZnVuY3Rpb24gdUUoYSl7cmV0dXJuIGhFLnB1c2goYSl9O3ZhciB2RT1mdW5jdGlvbigpe307dkUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiPVJqKEEubG9jYXRpb24uaHJlZik7KGE9Yi5ob3N0bmFtZStiLnBhdGhuYW1lKSYmVW0oImRsIixlbmNvZGVVUklDb21wb25lbnQoYSkpO3ZhciBjO3ZhciBkPUUoNSk7aWYoZCl7dmFyIGU9SWYoNyk/MTowLGY9RmsoKSxnPWYmJmYuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbj8xOjAsaD1mJiZmLnNvdXJjZXx8MCxsPUUoNik7Yz1kKyI7IitsKyI7IitnKyI7IitoKyI7IitlfWVsc2UgYz12b2lkIDA7dmFyIG49YztuJiZVbSgidGRwIixuKTt2YXIgcD1PcCghMCk7cCE9PXZvaWQgMCYmVW0oImZybSIsU3RyaW5nKHApKX07dmFyIHdFPW5ldyB2RTt2YXIgeEU9ZnVuY3Rpb24oKXt0aGlzLkg9WG0oKTt0aGlzLks9dm9pZCAwfSx5RT1mdW5jdGlvbihhLGIpe3JldHVybiBabShhLGZ1bmN0aW9uKGMpe3JldHVybiBjLmpiPjA/Yj9jLmpiKyJfIitXbShjKTpTdHJpbmcoYy5qYik6dm9pZCAwfSl9Owp4RS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYocGwoKXx8Zm4uSylVbSgiY3NwIixmdW5jdGlvbigpe3ZhciBiPXlFKGEuSCwhMCk7JG0oYS5IKTtyZXR1cm4gYn0sITEpLFVtKCJtZGUiLGZ1bmN0aW9uKCl7dmFyIGI9Y24uSCxjPXlFKGIsITEpOyRtKGIpO3JldHVybiBjfSwhMSksQS5hZGRFdmVudExpc3RlbmVyKCJzZWN1cml0eXBvbGljeXZpb2xhdGlvbiIsZnVuY3Rpb24oYil7aWYoYi5kaXNwb3NpdGlvbj09PSJlbmZvcmNlIil7UCgxNzkpO3ZhciBjPW5uKGIuZWZmZWN0aXZlRGlyZWN0aXZlKTtpZihjKXt2YXIgZDthOnt2YXIgZT1iLmJsb2NrZWRVUkksZj1rbjtpZihmbi5LJiZlKXt2YXIgZz1qbihjLGUpO2lmKGcpe3ZhciBoO2Q9KGg9bG4oZixjKSk9PW51bGw/dm9pZCAwOmhbZ107YnJlYWsgYX19ZD12b2lkIDB9dmFyIGw9ZDtpZihsKXt2YXIgbjthOnt0cnl7dmFyIHA9bmV3IFVSTChiLmJsb2NrZWRVUkkpLHE9cC5wYXRobmFtZS5pbmRleE9mKCI7Iik7Cm49cT49MD9wLm9yaWdpbitwLnBhdGhuYW1lLnN1YnN0cmluZygwLHEpOnAub3JpZ2luK3AucGF0aG5hbWU7YnJlYWsgYX1jYXRjaChEKXt9bj12b2lkIDB9dmFyIHI9bjtpZihyKXtmb3IodmFyIHQ9bShsKSx1PXQubmV4dCgpOyF1LmRvbmU7dT10Lm5leHQoKSl7dmFyIHY9dS52YWx1ZTtpZighdi5Fbyl7di5Fbz0hMDt2YXIgeD17ZXZlbnRJZDp2LmV2ZW50SWQscHJpb3JpdHlJZDp2LnByaW9yaXR5SWR9O2lmKHBsKCkpe3ZhciB5PXgsej17dHlwZToxLGJsb2NrZWRVcmw6cixlbmRwb2ludDp2LmVuZHBvaW50LHZpb2xhdGlvbjpiLmVmZmVjdGl2ZURpcmVjdGl2ZX07aWYocGwoKSl7dmFyIEM9TGwoIlRBR19ESUFHTk9TVElDUyIse2V2ZW50SWQ6eT09bnVsbD92b2lkIDA6eS5ldmVudElkLHByaW9yaXR5SWQ6eT09bnVsbD92b2lkIDA6eS5wcmlvcml0eUlkfSk7Qy50YWdEaWFnbm9zdGljcz16O29sKEMpfX16RShhLHYuZGVzdGluYXRpb25JZCx2LmVuZHBvaW50LGMpfX1tbihjLApiLmJsb2NrZWRVUkkpfX19fX0pfTt2YXIgekU9ZnVuY3Rpb24oYSxiLGMsZCl7YW4oYS5ILGIsYywxLGQpO1ZtKCJjc3AiLCEwKTtWbSgibWRlIiwhMCk7YyE9PTYxJiZjIT09NTYmJmEuSz09PXZvaWQgMCYmKGEuSz1BLnNldFRpbWVvdXQoZnVuY3Rpb24oKXthLkguamI+MCYmdG8oITEpO2EuSz12b2lkIDB9LDUwMCkpfSxBRT1uZXcgeEU7dmFyIEJFPWZ1bmN0aW9uKCl7dGhpcy5zZXF1ZW5jZU51bWJlcj0wfTtCRS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe3ZhciBhPXRoaXM7Q0UodGhpcyk7SWYoNjUpJiZVbSgibXRibCIsIjEiKTtVbSgidiIsIjMiKTtVbSgidCIsInQiKTtVbSgicGlkIixmdW5jdGlvbigpe3JldHVybiBTdHJpbmcobm0oam0uYmEuYmgpKX0pO1VtKCJndG0iLGZ1bmN0aW9uKCl7cmV0dXJuIGR1KCl9KTtVbSgic2VxIixmdW5jdGlvbigpe3JldHVybiBTdHJpbmcoKythLnNlcXVlbmNlTnVtYmVyKX0pO1VtKCJleHAiLGZ1bmN0aW9uKCl7cmV0dXJuIENwKCl9KX07dmFyIENFPWZ1bmN0aW9uKGEpe2lmKG5tKGptLmJhLmJoKT09PXZvaWQgMCl7dmFyIGI9ZnVuY3Rpb24oKXttbShqbS5iYS5iaCxEYigpKTthLnNlcXVlbmNlTnVtYmVyPTB9O2IoKTtjZChiLDg2NEU1KX1lbHNlIHBtKGptLmJhLmJoLGZ1bmN0aW9uKCl7YS5zZXF1ZW5jZU51bWJlcj0wfSk7YS5zZXF1ZW5jZU51bWJlcj0wfSxERT1uZXcgQkU7ZnVuY3Rpb24gRUUoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEFbYV19fQp2YXIgRkU9e30sR0U9KEZFWzE0XT1mdW5jdGlvbigpe3ZhciBhO3JldHVybihhPUEuY3J5cHRvKT09bnVsbD92b2lkIDA6YS5nZXRSYW5kb21WYWx1ZXN9LEZFWzE1XT1mdW5jdGlvbigpe3ZhciBhLGI7cmV0dXJuKGE9QS5jcnlwdG8pPT1udWxsP3ZvaWQgMDooYj1hLnN1YnRsZSk9PW51bGw/dm9pZCAwOmIuZGlnZXN0fSxGRVsxXT1FRSgiZmV0Y2giKSxGRVs2XT1FRSgiTWFwIiksRkVbMl09ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5yYW5kb219LEZFWzhdPWZ1bmN0aW9uKCl7cmV0dXJuIG5hKE9iamVjdCwiYXNzaWduIil9LEZFWzldPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzfSxGRVsxMF09ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzfSxGRVs1XT1FRSgiUHJvbWlzZSIpLEZFWzEzXT1FRSgiUmVnRXhwIiksRkVbM109ZnVuY3Rpb24oKXtyZXR1cm4gSGMuc2VuZEJlYWNvbn0sRkVbN109RUUoIlNldCIpLEZFWzEyXT1mdW5jdGlvbigpe3JldHVybiBTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRofSwKRkVbMTFdPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aH0sRkVbNF09RUUoIlhNTEh0dHBSZXF1ZXN0IiksRkUpLEhFPXt9LElFPShIRVsxNV09ITAsSEUpO3ZhciBORT0vXihodHRwcz86KT9cL1wvLzsKCmZ1bmN0aW9uIGhGKCl7fTtmdW5jdGlvbiBpRigpe0lmKDYyKSYmKGh5KCJkZXRlY3RfbGlua19jbGlja19ldmVudHMiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4oKGQ9Yy5vcHRpb25zKT09bnVsbD92b2lkIDA6ZC53YWl0Rm9yVGFncykhPT0hMH0pLGh5KCJkZXRlY3RfZm9ybV9zdWJtaXRfZXZlbnRzIixmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuKChkPWMub3B0aW9ucyk9PW51bGw/dm9pZCAwOmQud2FpdEZvclRhZ3MpIT09ITB9KSxoeSgiZGV0ZWN0X3lvdXR1YmVfYWN0aXZpdHlfZXZlbnRzIixmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuKChkPWMub3B0aW9ucyk9PW51bGw/dm9pZCAwOmQuZml4TWlzc2luZ0FwaSkhPT0hMH0pKX07dmFyIGpGPWZ1bmN0aW9uKCl7dGhpcy5IPXRoaXMuZ3BwU3RyaW5nPXZvaWQgMH07akYucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5IPXRoaXMuZ3BwU3RyaW5nPXZvaWQgMH07dmFyIGtGPW5ldyBqRjtbMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyXS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStifSk7WzIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDJdLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2J9KTtbMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMl0ucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYn0pO1syLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDJdLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2J9KTtbMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyXS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStifSk7WzIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMl0ucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYn0pO2x0KHtHdTowLEZ1OjEsQ3U6Mix4dTozLER1OjQseXU6NSxFdTo2LEF1OjcsQnU6OCx3dTo5LHp1OjEwLEh1OjExfSkubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBOdW1iZXIoYSl9KTtsdCh7SnU6MCxLdToxLEl1OjJ9KS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIE51bWJlcihhKX0pO3ZhciBsRj1mdW5jdGlvbihhLGIsYyxkKXtydC5jYWxsKHRoaXMpO3RoaXMuZmU9Yjt0aGlzLmtkPWM7dGhpcy5hYz1kO3RoaXMuTGE9bmV3IE1hcDt0aGlzLmhlPTA7dGhpcy5qYT1uZXcgTWFwO3RoaXMueWE9bmV3IE1hcDt0aGlzLlo9dm9pZCAwO3RoaXMuSz1hfTt3YShsRixydCk7bEYucHJvdG90eXBlLk49ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5IO3RoaXMuTGEuY2xlYXIoKTt0aGlzLmphLmNsZWFyKCk7dGhpcy55YS5jbGVhcigpO3RoaXMuWiYmKG50KHRoaXMuSywibWVzc2FnZSIsdGhpcy5aKSxkZWxldGUgdGhpcy5aKTtkZWxldGUgdGhpcy5LO2RlbGV0ZSB0aGlzLmFjO3J0LnByb3RvdHlwZS5OLmNhbGwodGhpcyl9Owp2YXIgbUY9ZnVuY3Rpb24oYSl7aWYoYS5IKXJldHVybiBhLkg7YS5rZCYmYS5rZChhLkspP2EuSD1hLks6YS5IPU5wKGEuSyxhLmZlKTt2YXIgYjtyZXR1cm4oYj1hLkgpIT1udWxsP2I6bnVsbH0sb0Y9ZnVuY3Rpb24oYSxiLGMpe2lmKG1GKGEpKWlmKGEuSD09PWEuSyl7dmFyIGQ9YS5MYS5nZXQoYik7ZCYmZChhLkgsYyl9ZWxzZXt2YXIgZT1hLmphLmdldChiKTtpZihlJiZlLmRrKXtuRihhKTt2YXIgZj0rK2EuaGU7YS55YS5zZXQoZix7cGU6ZS5wZSxJcjplLm5vKGMpLHBlcnNpc3RlbnQ6Yj09PSJhZGRFdmVudExpc3RlbmVyIn0pO2EuSC5wb3N0TWVzc2FnZShlLmRrKGMsZiksIioiKX19fSxuRj1mdW5jdGlvbihhKXthLlp8fChhLlo9ZnVuY3Rpb24oYil7aWYoYi5zb3VyY2U9PT1hLkgpdHJ5e3ZhciBjO2M9YS5hYz9hLmFjKGIpOnZvaWQgMDtpZihjKXt2YXIgZD1jLllzLGU9YS55YS5nZXQoZCk7aWYoZSl7ZS5wZXJzaXN0ZW50fHxhLnlhLmRlbGV0ZShkKTt2YXIgZjsoZj0KZS5wZSk9PW51bGx8fGYuY2FsbChlLGUuSXIsYy5wYXlsb2FkKX19fWNhdGNoKGcpe319LG10KGEuSywibWVzc2FnZSIsYS5aKSl9O3ZhciBwRj1mdW5jdGlvbihhLGIpe3ZhciBjPWIubGlzdGVuZXIsZD0oMCxhLl9fZ3BwKSgiYWRkRXZlbnRMaXN0ZW5lciIsYyk7ZCYmYyhkLCEwKX0scUY9ZnVuY3Rpb24oYSxiKXsoMCxhLl9fZ3BwKSgicmVtb3ZlRXZlbnRMaXN0ZW5lciIsYi5saXN0ZW5lcixiLmxpc3RlbmVySWQpfSxyRj17bm86ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGlzdGVuZXJ9LGRrOmZ1bmN0aW9uKGEsYil7dmFyIGM9e307cmV0dXJuIGMuX19ncHBDYWxsPXtjYWxsSWQ6Yixjb21tYW5kOiJhZGRFdmVudExpc3RlbmVyIix2ZXJzaW9uOiIxLjEifSxjfSxwZTpmdW5jdGlvbihhLGIpe3ZhciBjPWIuX19ncHBSZXR1cm47YShjLnJldHVyblZhbHVlLGMuc3VjY2Vzcyl9fSxzRj17bm86ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGlzdGVuZXJ9LGRrOmZ1bmN0aW9uKGEsYil7dmFyIGM9e307cmV0dXJuIGMuX19ncHBDYWxsPXtjYWxsSWQ6Yixjb21tYW5kOiJyZW1vdmVFdmVudExpc3RlbmVyIix2ZXJzaW9uOiIxLjEiLApwYXJhbWV0ZXI6YS5saXN0ZW5lcklkfSxjfSxwZTpmdW5jdGlvbihhLGIpe3ZhciBjPWIuX19ncHBSZXR1cm4sZD1jLnJldHVyblZhbHVlLmRhdGE7YT09bnVsbHx8YShkLGMuc3VjY2Vzcyl9fTtmdW5jdGlvbiB0RihhKXt2YXIgYj17fTt2ZihhLmRhdGEpP2I9SlNPTi5wYXJzZShhLmRhdGEpOmI9YS5kYXRhO3JldHVybntwYXlsb2FkOmIsWXM6Yi5fX2dwcFJldHVybi5jYWxsSWR9fQp2YXIgdUY9ZnVuY3Rpb24oYSxiKXt2YXIgYztjPShiPT09dm9pZCAwP3t9OmIpLnRpbWVvdXRNcztydC5jYWxsKHRoaXMpO3RoaXMuY2FsbGVyPW5ldyBsRihhLCJfX2dwcExvY2F0b3IiLGZ1bmN0aW9uKGQpe3JldHVybiB0eXBlb2YgZC5fX2dwcD09PSJmdW5jdGlvbiJ9LHRGKTt0aGlzLmNhbGxlci5MYS5zZXQoImFkZEV2ZW50TGlzdGVuZXIiLHBGKTt0aGlzLmNhbGxlci5qYS5zZXQoImFkZEV2ZW50TGlzdGVuZXIiLHJGKTt0aGlzLmNhbGxlci5MYS5zZXQoInJlbW92ZUV2ZW50TGlzdGVuZXIiLHFGKTt0aGlzLmNhbGxlci5qYS5zZXQoInJlbW92ZUV2ZW50TGlzdGVuZXIiLHNGKTt0aGlzLnRpbWVvdXRNcz1jIT1udWxsP2M6NTAwfTt3YSh1RixydCk7dUYucHJvdG90eXBlLk49ZnVuY3Rpb24oKXt0aGlzLmNhbGxlci5kaXNwb3NlKCk7cnQucHJvdG90eXBlLk4uY2FsbCh0aGlzKX07CnVGLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz1IcChmdW5jdGlvbigpe2EodkYsITApfSksZD10aGlzLnRpbWVvdXRNcz09PS0xP3ZvaWQgMDpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YygpfSx0aGlzLnRpbWVvdXRNcyk7b0YodGhpcy5jYWxsZXIsImFkZEV2ZW50TGlzdGVuZXIiLHtsaXN0ZW5lcjpmdW5jdGlvbihlLGYpe2NsZWFyVGltZW91dChkKTt0cnl7dmFyIGc7dmFyIGg7KChoPWUucGluZ0RhdGEpPT1udWxsP3ZvaWQgMDpoLmdwcFZlcnNpb24pPT09dm9pZCAwfHxlLnBpbmdEYXRhLmdwcFZlcnNpb249PT0iMSJ8fGUucGluZ0RhdGEuZ3BwVmVyc2lvbj09PSIxLjAiPyhiLnJlbW92ZUV2ZW50TGlzdGVuZXIoZS5saXN0ZW5lcklkKSxnPXtldmVudE5hbWU6InNpZ25hbFN0YXR1cyIsZGF0YToicmVhZHkiLHBpbmdEYXRhOntpbnRlcm5hbEVycm9yU3RhdGU6MSxncHBTdHJpbmc6IkdQUF9FUlJPUl9TVFJJTkdfSVNfREVQUkVDQVRFRF9TUEVDIiwKYXBwbGljYWJsZVNlY3Rpb25zOlstMV19fSk6QXJyYXkuaXNBcnJheShlLnBpbmdEYXRhLmFwcGxpY2FibGVTZWN0aW9ucyk/Zz1lOihiLnJlbW92ZUV2ZW50TGlzdGVuZXIoZS5saXN0ZW5lcklkKSxnPXtldmVudE5hbWU6InNpZ25hbFN0YXR1cyIsZGF0YToicmVhZHkiLHBpbmdEYXRhOntpbnRlcm5hbEVycm9yU3RhdGU6MixncHBTdHJpbmc6IkdQUF9FUlJPUl9TVFJJTkdfRVhQRUNURURfQVBQTElDQVRJT05fU0VDVElPTl9BUlJBWSIsYXBwbGljYWJsZVNlY3Rpb25zOlstMV19fSk7YShnLGYpfWNhdGNoKGwpe2lmKGU9PW51bGw/MDplLmxpc3RlbmVySWQpdHJ5e2IucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLmxpc3RlbmVySWQpfWNhdGNoKG4pe2Eod0YsITApO3JldHVybn1hKHhGLCEwKX19fSl9Owp1Ri5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhKXtvRih0aGlzLmNhbGxlciwicmVtb3ZlRXZlbnRMaXN0ZW5lciIse2xpc3RlbmVyOmZ1bmN0aW9uKCl7fSxsaXN0ZW5lcklkOmF9KX07CnZhciB4Rj17ZXZlbnROYW1lOiJzaWduYWxTdGF0dXMiLGRhdGE6InJlYWR5IixwaW5nRGF0YTp7aW50ZXJuYWxFcnJvclN0YXRlOjIsZ3BwU3RyaW5nOiJHUFBfRVJST1JfU1RSSU5HX1VOQVZBSUxBQkxFIixhcHBsaWNhYmxlU2VjdGlvbnM6Wy0xXX0sbGlzdGVuZXJJZDotMX0sdkY9e2V2ZW50TmFtZToic2lnbmFsU3RhdHVzIixkYXRhOiJyZWFkeSIscGluZ0RhdGE6e2dwcFN0cmluZzoiR1BQX0VSUk9SX1NUUklOR19MSVNURU5FUl9SRUdJU1RSQVRJT05fVElNRU9VVCIsaW50ZXJuYWxFcnJvclN0YXRlOjIsYXBwbGljYWJsZVNlY3Rpb25zOlstMV19LGxpc3RlbmVySWQ6LTF9LHdGPXtldmVudE5hbWU6InNpZ25hbFN0YXR1cyIsZGF0YToicmVhZHkiLHBpbmdEYXRhOntncHBTdHJpbmc6IkdQUF9FUlJPUl9TVFJJTkdfUkVNT1ZFX0VWRU5UX0xJU1RFTkVSX0VSUk9SIixpbnRlcm5hbEVycm9yU3RhdGU6MixhcHBsaWNhYmxlU2VjdGlvbnM6Wy0xXX0sbGlzdGVuZXJJZDotMX07ZnVuY3Rpb24geUYoYSl7dmFyIGI7aWYoIShiPWEucGluZ0RhdGEuc2lnbmFsU3RhdHVzPT09InJlYWR5Iikpe3ZhciBjPWEucGluZ0RhdGEuYXBwbGljYWJsZVNlY3Rpb25zO2I9IWN8fGMubGVuZ3RoPT09MSYmY1swXT09PS0xfWlmKGIpe2tGLmdwcFN0cmluZz1hLnBpbmdEYXRhLmdwcFN0cmluZzt2YXIgZD1hLnBpbmdEYXRhLmFwcGxpY2FibGVTZWN0aW9ucy5qb2luKCIsIik7a0YuSD1kfX1mdW5jdGlvbiB6Rigpe3RyeXt2YXIgYT1uZXcgdUYoQSx7dGltZW91dE1zOi0xfSk7bUYoYS5jYWxsZXIpJiZhLmFkZEV2ZW50TGlzdGVuZXIoeUYpfWNhdGNoKGIpe319O2Z1bmN0aW9uIEFGKCl7dmFyIGE9W1siY3YiLEUoMSldLFsicnYiLEUoMTQpXSxbInRjIixjQS50YWdzLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gZH0pLmxlbmd0aF1dLGI9SmYoMTUpO2ImJmEucHVzaChbIngiLGJdKTt2YXIgYz1DcCgpO2MmJmEucHVzaChbInRhZ19leHAiLGNdKTtyZXR1cm4gYX07dmFyIEJGPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLkg9e307dGhpcy5LPXt9O2Z6KGZ1bmN0aW9uKGIpe3ZhciBjPWIuZXZlbnRJZCxkPWIudGYsZT1bXSxmPWEuSFtjXXx8W107Zi5sZW5ndGgmJmUucHVzaChbImhmIixmLmpvaW4oIi4iKV0pO3ZhciBnPWEuS1tjXXx8W107Zy5sZW5ndGgmJmUucHVzaChbImh0IixnLmpvaW4oIi4iKV0pO2QmJihkZWxldGUgYS5IW2NdLGRlbGV0ZSBhLktbY10pO3JldHVybiBlfSl9LENGPWZ1bmN0aW9uKCl7dmFyIGE9MDtyZXR1cm4gZnVuY3Rpb24oYil7c3dpdGNoKGIpe2Nhc2UgMTphfD0xO2JyZWFrO2Nhc2UgMjphfD0yO2JyZWFrO2Nhc2UgMzphfD00fXJldHVybiBhfX0sREY7dmFyIEVGPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLkg9IiI7Zm4uTiYmTSg1MTYpJiZmeihmdW5jdGlvbigpe3ZhciBiPVtdO2EuSCYmYi5wdXNoKFsicHNkIixhLkhdKTtyZXR1cm4gYn0pfSxGRjtmdW5jdGlvbiBHRigpe3JldHVybiExfQpmdW5jdGlvbiBIRigpe3ZhciBhPXt9O3JldHVybiBmdW5jdGlvbihiLGMsZCl7fX07ZnVuY3Rpb24gSUYoKXt2YXIgYT1KRjtyZXR1cm4gZnVuY3Rpb24oYixjLGQpe3ZhciBlPWQmJmQuZXZlbnQ7S0YoYyk7dmFyIGY9QmgoYik/dm9pZCAwOjEsZz1uZXcga2I7R2IoYyxmdW5jdGlvbihyLHQpe3ZhciB1PVVkKHQsdm9pZCAwLGYpO3U9PT12b2lkIDAmJnQhPT12b2lkIDAmJlAoNDQpO2cuc2V0KHIsdSl9KTthLlFiKFFmKCkpO3ZhciBoPXtSbjpoZyhiKSxldmVudElkOmU9PW51bGw/dm9pZCAwOmUuaWQscHJpb3JpdHlJZDplIT09dm9pZCAwP2UucHJpb3JpdHlJZDp2b2lkIDAscHJpb3JpdHlRdWV1ZTplIT09dm9pZCAwP2UucHJpb3JpdHlRdWV1ZTp2b2lkIDAsd2c6ZSE9PXZvaWQgMD9mdW5jdGlvbihyKXtlLmxkLndnKHIpfTp2b2lkIDAsUGI6ZnVuY3Rpb24oKXtyZXR1cm4gYn0sbG9nOmZ1bmN0aW9uKCl7fSxOcjp7aW5kZXg6ZD09bnVsbD92b2lkIDA6ZC5pbmRleCx0eXBlOmQ9PW51bGw/dm9pZCAwOmQudHlwZSxuYW1lOmQ9PW51bGw/dm9pZCAwOmQubmFtZX0sCml0OiEhS0EoYiwzKSxvcmlnaW5hbEV2ZW50RGF0YTplPT1udWxsP3ZvaWQgMDplLm9yaWdpbmFsRXZlbnREYXRhfTtlJiZlLmNhY2hlZE1vZGVsVmFsdWVzJiYoaC5jYWNoZWRNb2RlbFZhbHVlcz17Z3RtOmUuY2FjaGVkTW9kZWxWYWx1ZXMuZ3RtLGVjb21tZXJjZTplLmNhY2hlZE1vZGVsVmFsdWVzLmVjb21tZXJjZX0pO2lmKEdGKCkpe3ZhciBsPUhGKCksbixwO2guQWI9e3drOltdLHlnOnt9LGpjOmZ1bmN0aW9uKHIsdCx1KXt0PT09MSYmKG49cik7dD09PTcmJihwPXUpO2wocix0LHUpfSxlaTpWaCgpfTtoLmxvZz1mdW5jdGlvbihyKXt2YXIgdD1PYS5hcHBseSgxLGFyZ3VtZW50cyk7biYmbChuLDQse2xldmVsOnIsc291cmNlOnAsbWVzc2FnZTp0fSl9fQp2YXIgcT1yZihhLGgsW2IsZ10pO2EuUWIoKTtxIGluc3RhbmNlb2YgVGEmJihxLnR5cGU9PT0icmV0dXJuIj9xPXEuZGF0YTpxPXZvaWQgMCk7cmV0dXJuIFRkKHEsdm9pZCAwLGYpfX1mdW5jdGlvbiBLRihhKXt2YXIgYj1hLmd0bU9uU3VjY2VzcyxjPWEuZ3RtT25GYWlsdXJlO3liKGIpJiYoYS5ndG1PblN1Y2Nlc3M9ZnVuY3Rpb24oKXtiZChiKX0pO3liKGMpJiYoYS5ndG1PbkZhaWx1cmU9ZnVuY3Rpb24oKXtiZChjKX0pfTt2YXIgTUY9ZnVuY3Rpb24oYSl7VihhLEguSi50Zyxjby5pYS5jYil9O2Z1bmN0aW9uIE5GKCl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoyMCl9O3ZhciBPRj1bRi5ELnppXS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2xpY2UoMil9KTt2YXIgUEY9ZnVuY3Rpb24oYSl7VShhLEYuRC56aSxhbCg4LE5GKSl9O2Z1bmN0aW9uIFFGKGEpe31RRi5QPSJpbnRlcm5hbC5hZGRBZHNDbGlja0lkcyI7ZnVuY3Rpb24gUkYoYSxiKXt2YXIgYz10aGlzO31SRi5wdWJsaWNOYW1lPSJhZGRDb25zZW50TGlzdGVuZXIiO3ZhciBTRj0hMTtmdW5jdGlvbiBURihhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYilpZihTRil0cnl7YVtiXSgpfWNhdGNoKGMpe1AoNzcpfWVsc2UgYVtiXSgpfWZ1bmN0aW9uIFVGKGEsYixjKXt2YXIgZD10aGlzLGU7aWYoIWxoKGEpfHwhaGgoYil8fCFtaChjKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwiZnVuY3Rpb24iLCJzdHJpbmd8dW5kZWZpbmVkIl0sYXJndW1lbnRzKTtURihbZnVuY3Rpb24oKXtMKGQsImxpc3Rlbl9kYXRhX2xheWVyIixhKX1dKTtlPXlCKCkuYWRkTGlzdGVuZXIoYSxUZChiLHZvaWQgMCwxKSxjPT09bnVsbD92b2lkIDA6Yyk7cmV0dXJuIGV9VUYuUD0iaW50ZXJuYWwuYWRkRGF0YUxheWVyRXZlbnRMaXN0ZW5lciI7ZnVuY3Rpb24gVkYoYSxiLGMpe31WRi5wdWJsaWNOYW1lPSJhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIiO2Z1bmN0aW9uIFdGKGEsYixjLGQpe31XRi5wdWJsaWNOYW1lPSJhZGRFbGVtZW50RXZlbnRMaXN0ZW5lciI7ZnVuY3Rpb24gWEYoYSl7cmV0dXJuIGEuVC54YigpfTtmdW5jdGlvbiBZRihhKXt9WUYucHVibGljTmFtZT0iYWRkRXZlbnRDYWxsYmFjayI7CnZhciBaRj1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIj9hOlN0cmluZyhyaigpKX0sYkc9ZnVuY3Rpb24oYSxiKXskRihhLCJpbml0IiwhMSl8fChhRyhhLCJpbml0IiwhMCksYigpKX0sJEY9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWNHKGEpO3JldHVybiBPYihkLGIsYyl9LGRHPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWNHKGEpLGY9T2IoZSxiLGQpLGc9YyhmKTtyZXR1cm4gZVtiXT1nfSxhRz1mdW5jdGlvbihhLGIsYyl7Y0coYSlbYl09Y30sY0c9ZnVuY3Rpb24oYSl7dmFyIGI9a2ooImF1dG9FdmVudHNTZXR0aW5ncyIsZnVuY3Rpb24oKXtyZXR1cm57fX0pO2IuaGFzT3duUHJvcGVydHkoYSl8fChiW2FdPXt9KTtyZXR1cm4gYlthXX0sZUc9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXtldmVudDpiLCJndG0uZWxlbWVudCI6YSwiZ3RtLmVsZW1lbnRDbGFzc2VzIjpvZChhLCJjbGFzc05hbWUiKSwiZ3RtLmVsZW1lbnRJZCI6YS5mb3J8fGVkKGEsImlkIil8fAoiIiwiZ3RtLmVsZW1lbnRUYXJnZXQiOmEuZm9ybVRhcmdldHx8b2QoYSwidGFyZ2V0Iil8fCIifTtjJiYoZFsiZ3RtLnRyaWdnZXJzIl09Yy5qb2luKCIsIikpO2RbImd0bS5lbGVtZW50VXJsIl09KGEuYXR0cmlidXRlcyYmYS5hdHRyaWJ1dGVzLmZvcm1hY3Rpb24/YS5mb3JtQWN0aW9uOiIiKXx8YS5hY3Rpb258fG9kKGEsImhyZWYiKXx8YS5zcmN8fGEuY29kZXx8YS5jb2RlYmFzZXx8IiI7cmV0dXJuIGR9O3ZhciBoRz1mdW5jdGlvbihhLGIsYyl7aWYoIWEuZWxlbWVudHMpcmV0dXJuIDA7Zm9yKHZhciBkPWIuZGF0YXNldFtjXSxlPTAsZj0xO2U8YS5lbGVtZW50cy5sZW5ndGg7ZSsrKXt2YXIgZz1hLmVsZW1lbnRzW2VdLGg9Zy50YWdOYW1lLnRvTG93ZXJDYXNlKCk7aWYoIShmRy5pbmRleE9mKGgpPDB8fGg9PT0iaW5wdXQiJiZnRy5pbmRleE9mKGcudHlwZS50b0xvd2VyQ2FzZSgpKT49MCkpe2lmKGcuZGF0YXNldFtjXT09PWQpcmV0dXJuIGY7ZisrfX1yZXR1cm4gMH0sZkc9WyJpbnB1dCIsInNlbGVjdCIsInRleHRhcmVhIl0sZ0c9WyJidXR0b24iLCJoaWRkZW4iLCJpbWFnZSIsInJlc2V0Iiwic3VibWl0Il07CmZ1bmN0aW9uIGlHKGEpe2lmKGEuZm9ybSl7dmFyIGI7cmV0dXJuKChiPWEuZm9ybSk9PW51bGw/MDpiLnRhZ05hbWUpP2EuZm9ybTpCLmdldEVsZW1lbnRCeUlkKGEuZm9ybSl9cmV0dXJuIGhkKGEsWyJmb3JtIl0sMTAwKX07CmZ1bmN0aW9uIG1HKGEpe31tRy5QPSJpbnRlcm5hbC5hZGRGb3JtQWJhbmRvbm1lbnRMaXN0ZW5lciI7ZnVuY3Rpb24gbkcoYSxiLGMsZCl7fQpuRy5QPSJpbnRlcm5hbC5hZGRGb3JtRGF0YSI7CmZ1bmN0aW9uIHNHKGEpe31zRy5QPSJpbnRlcm5hbC5hZGRHYVNlbmRMaXN0ZW5lciI7ZnVuY3Rpb24gdEcoYSl7aWYoIWEpcmV0dXJue307dmFyIGI9YS5OcjtyZXR1cm4gSkEoYi50eXBlLGIuaW5kZXgsYi5uYW1lKX1mdW5jdGlvbiB1RyhhKXtpZighYSlyZXR1cm57fTt2YXIgYj17b3JpZ2luYXRpbmdFbnRpdHk6dEcoYSl9O2EucHJpb3JpdHlRdWV1ZSYmKGIucHJpb3JpdHlRdWV1ZT1hLnByaW9yaXR5UXVldWUpO3JldHVybiBifTtmdW5jdGlvbiBDRyhhKXt2YXIgYj1taigiem9uZXMiKTtyZXR1cm4gYj9iLmdldElzQWxsb3dlZEZuKHdrKCksYSk6ZnVuY3Rpb24oKXtyZXR1cm4hMH19ZnVuY3Rpb24gREcoKXt2YXIgYT1taigiem9uZXMiKTthJiZhLnVucmVnaXN0ZXJDaGlsZCh3aygpKX0KZnVuY3Rpb24gRUcoKXtrQih2aygpLGZ1bmN0aW9uKGEpe3ZhciBiPWEub3JpZ2luYWxFdmVudERhdGFbImd0bS51bmlxdWVFdmVudElkIl0sYz1taigiem9uZXMiKTtyZXR1cm4gYz9jLmlzQWN0aXZlKHdrKCksYik6ITB9KTtoQih2aygpLGZ1bmN0aW9uKGEpe3ZhciBiLGM7Yj1hLmVudGl0eUlkO2M9YS5zZWN1cml0eUdyb3VwcztyZXR1cm4gQ0coTnVtYmVyKGEub3JpZ2luYWxFdmVudERhdGFbImd0bS51bmlxdWVFdmVudElkIl0pKShiLGMpfSl9O3ZhciBGRz1mdW5jdGlvbihhLGIpe3RoaXMudGFnSWQ9YTt0aGlzLmNhbm9uaWNhbElkPWJ9OwpmdW5jdGlvbiBHRyhhLGIpe3ZhciBjPXRoaXM7cmV0dXJuIGF9R0cuUD0iaW50ZXJuYWwubG9hZEdvb2dsZVRhZyI7ZnVuY3Rpb24gSEcoYSl7cmV0dXJuIG5ldyBLZCgiIixmdW5jdGlvbihiKXt2YXIgYz10aGlzLmV2YWx1YXRlKGIpO2lmKGMgaW5zdGFuY2VvZiBLZClyZXR1cm4gbmV3IEtkKCIiLGZ1bmN0aW9uKCl7dmFyIGQ9T2EuYXBwbHkoMCxhcmd1bWVudHMpLGU9dGhpcyxmPUVkKFhGKHRoaXMpLG51bGwpO2YuZXZlbnRJZD1hLmV2ZW50SWQ7Zi5wcmlvcml0eUlkPWEucHJpb3JpdHlJZDtmLm9yaWdpbmFsRXZlbnREYXRhPWEub3JpZ2luYWxFdmVudERhdGE7dmFyIGc9ZC5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIGUuZXZhbHVhdGUobCl9KSxoPXRoaXMuVC53YigpO2gudWUoZik7cmV0dXJuIGMuTmMuYXBwbHkoYyxbaF0uY29uY2F0KHcoZykpKX0pfSl9O2Z1bmN0aW9uIElHKGEsYixjKXt2YXIgZD10aGlzO31JRy5QPSJpbnRlcm5hbC5hZGRHb29nbGVUYWdSZXN0cmljdGlvbiI7CmZ1bmN0aW9uIFBHKGEsYil7fVBHLlA9ImludGVybmFsLmFkZEhpc3RvcnlDaGFuZ2VMaXN0ZW5lciI7ZnVuY3Rpb24gUUcoYSxiLGMpe31RRy5wdWJsaWNOYW1lPSJhZGRXaW5kb3dFdmVudExpc3RlbmVyIjtmdW5jdGlvbiBSRyhhLGIpe3JldHVybiEwfVJHLnB1YmxpY05hbWU9ImFsaWFzSW5XaW5kb3ciO2Z1bmN0aW9uIFNHKGEsYixjKXt9U0cuUD0iaW50ZXJuYWwuYXBwZW5kUmVtb3RlQ29uZmlnUGFyYW1ldGVyIjtmdW5jdGlvbiBURyhhKXt2YXIgYjtyZXR1cm4gYn0KVEcucHVibGljTmFtZT0iY2FsbEluV2luZG93IjtmdW5jdGlvbiBVRyhhKXt9VUcucHVibGljTmFtZT0iY2FsbExhdGVyIjtmdW5jdGlvbiBWRyhhKXt9VkcuUD0iY2FsbE9uRG9tUmVhZHkiO2Z1bmN0aW9uIFdHKGEpe31XRy5QPSJjYWxsT25XaW5kb3dMb2FkIjt2YXIgWUc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1ubShYRyl8fHt9LGQ9Y1thXXx8e307aWYoZFtiXSlyZXR1cm4hMTt2YXIgZT1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGQpO2VbYl09ITA7dmFyIGY9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxjKTtmW2FdPWU7bW0oWEcsZik7cmV0dXJuITB9LFhHPWptLmJhLmhyO2Z1bmN0aW9uIFpHKGEsYil7aWYoIWxoKGEpfHwhbGgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsInN0cmluZyJdLGFyZ3VtZW50cyk7dmFyIGM9WUcoYSxiKTtyZXR1cm4gY31aRy5QPSJpbnRlcm5hbC5jbGFpbURlc3RpbmF0aW9uIjtmdW5jdGlvbiAkRyhhLGIpe3ZhciBjO3JldHVybiBjfSRHLlA9ImludGVybmFsLmNvbXB1dGVHdG1QYXJhbWV0ZXIiO2Z1bmN0aW9uIGFIKGEsYil7dmFyIGM9dGhpczt9YUguUD0iaW50ZXJuYWwuY29uc2VudFNjaGVkdWxlRmlyc3RUcnkiO2Z1bmN0aW9uIGJIKGEsYil7dmFyIGM9dGhpczt9YkguUD0iaW50ZXJuYWwuY29uc2VudFNjaGVkdWxlUmV0cnkiO2Z1bmN0aW9uIGNIKGEpe3ZhciBiO2lmKCFsaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIl0sYXJndW1lbnRzKTt2YXIgYz1hO2lmKCFrbShjKSl0aHJvdyBFcnJvcigiY29weUZyb21Dcm9zc0NvbnRhaW5lckRhdGEgcmVxdWlyZXMgdmFsaWQgQ3Jvc3NDb250YWluZXJTY2hlbWEga2V5LiIpO3ZhciBkPW5tKGMpO2I9VWQoZCx0aGlzLlQsMSk7cmV0dXJuIGJ9Y0guUD0iaW50ZXJuYWwuY29weUZyb21Dcm9zc0NvbnRhaW5lckRhdGEiO2Z1bmN0aW9uIGRIKGEsYil7dmFyIGM7dmFyIGU9VWQoYyx0aGlzLlQsQmgoWEYodGhpcykuUGIoKSk/MjoxKTtlPT09dm9pZCAwJiZjIT09dm9pZCAwJiZQKDQ1KTtyZXR1cm4gZX1kSC5wdWJsaWNOYW1lPSJjb3B5RnJvbURhdGFMYXllciI7CmZ1bmN0aW9uIGVIKGEpe3ZhciBiPXZvaWQgMDtyZXR1cm4gYn1lSC5QPSJpbnRlcm5hbC5jb3B5RnJvbURhdGFMYXllckNhY2hlIjtmdW5jdGlvbiBmSChhKXt2YXIgYjtyZXR1cm4gYn1mSC5wdWJsaWNOYW1lPSJjb3B5RnJvbVdpbmRvdyI7ZnVuY3Rpb24gZ0goYSl7dmFyIGI9dm9pZCAwO3JldHVybiBVZChiLHRoaXMuVCwxKX1nSC5QPSJpbnRlcm5hbC5jb3B5S2V5RnJvbVdpbmRvdyI7dmFyIGhIPWZ1bmN0aW9uKGEpe3JldHVybiBhPT09Y28uaWEuY2ImJmZvLkhbYV09PT1iby5NYS5VZSYmIVhvKEYuRC5rYSl9O3ZhciBpSD1mdW5jdGlvbigpe3JldHVybiIwIn0sakg9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGEhPT0ic3RyaW5nIilyZXR1cm4iIjt2YXIgYj1bImdjbGlkIiwiZGNsaWQiLCJ3YnJhaWQiLCJfZ2wiXTtNKDEwMikmJmIucHVzaCgiZ2JyYWlkIik7cmV0dXJuIFNqKGEsYiwiMCIpfTt2YXIga0g9e30sbEg9e30sbUg9e30sbkg9e30sb0g9e30scEg9e30scUg9e30sckg9e30sc0g9e30sdEg9e30sdUg9e30sdkg9e30sd0g9e30seEg9e30seUg9e30sekg9e30sQUg9e30sQkg9e30sQ0g9e30sREg9e30sRUg9e30sRkg9e30sR0g9e30sSEg9e30sSUg9e30sSkg9e30sS0g9KEpIW0YuRC5mYl09KGtIWzJdPVtoSF0sa0gpLEpIW0YuRC5aZl09KGxIWzJdPVtoSF0sbEgpLEpIW0YuRC5KaV09KG1IWzJdPVtoSF0sbUgpLEpIW0YuRC5nbV09KG5IWzJdPVtoSF0sbkgpLEpIW0YuRC5obV09KG9IWzJdPVtoSF0sb0gpLEpIW0YuRC5pbV09KHBIWzJdPVtoSF0scEgpLEpIW0YuRC5qbV09KHFIWzJdPVtoSF0scUgpLEpIW0YuRC5rbV09KHJIWzJdPVtoSF0sckgpLEpIW0YuRC5CY109KHNIWzJdPVtoSF0sc0gpLEpIW0YuRC5jZ109KHRIWzJdPVtoSF0sdEgpLEpIW0YuRC5kZ109KHVIWzJdPVtoSF0sdUgpLEpIW0YuRC5lZ109KHZIWzJdPVtoSF0sdkgpLEpIW0YuRC5mZ109KHdIWzJdPQpbaEhdLHdIKSxKSFtGLkQuZ2ddPSh4SFsyXT1baEhdLHhIKSxKSFtGLkQuaGddPSh5SFsyXT1baEhdLHlIKSxKSFtGLkQuaWddPSh6SFsyXT1baEhdLHpIKSxKSFtGLkQuamddPShBSFsyXT1baEhdLEFIKSxKSFtGLkQubGJdPShCSFsxXT1baEhdLEJIKSxKSFtGLkQuRGRdPShDSFsxXT1baEhdLENIKSxKSFtGLkQuS2RdPShESFsxXT1baEhdLERIKSxKSFtGLkQuRWVdPShFSFsxXT1baEhdLEVIKSxKSFtGLkQuQmZdPShGSFsxXT1bZnVuY3Rpb24oYSl7cmV0dXJuIE0oMTAyKSYmaEgoYSl9XSxGSCksSkhbRi5ELlVjXT0oR0hbMV09W2hIXSxHSCksSkhbRi5ELnphXT0oSEhbMV09W2hIXSxISCksSkhbRi5ELlVhXT0oSUhbMV09W2hIXSxJSCksSkgpLExIPXt9LE1IPShMSFtGLkQubGJdPWlILExIW0YuRC5EZF09aUgsTEhbRi5ELktkXT1pSCxMSFtGLkQuRWVdPWlILExIW0YuRC5CZl09aUgsTEhbRi5ELlVjXT1mdW5jdGlvbihhKXtpZighQ2QoYSkpcmV0dXJue307dmFyIGI9RWQoYSwKbnVsbCk7ZGVsZXRlIGIubWF0Y2hfaWQ7cmV0dXJuIGJ9LExIW0YuRC56YV09akgsTEhbRi5ELlVhXT1qSCxMSCksTkg9e30sT0g9e30sUEg9KE9IW0guSi5ZYV09KE5IWzJdPVtoSF0sTkgpLE9IKSxRSD17fTt2YXIgUkg9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5IPWE7dGhpcy5OPWI7dGhpcy5SPWM7dGhpcy5aPWR9O1JILnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbihhKXthPWE9PT12b2lkIDA/Y28uaWEuZ2Q6YTtpZighdGhpcy5OLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIGIoYSl9KSlyZXR1cm4gdGhpcy5SLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIGIoYSl9KT90aGlzLloodGhpcy5IKTp0aGlzLkh9O1JILnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7cmV0dXJuIEFkKHRoaXMuSCk9PT0iYXJyYXkifHxDZCh0aGlzLkgpP0VkKHRoaXMuSCxudWxsKTp0aGlzLkh9Owp2YXIgU0g9ZnVuY3Rpb24oKXt9LFRIPWZ1bmN0aW9uKGEsYil7dGhpcy5jb25kaXRpb25zPWE7dGhpcy5IPWJ9LFVIPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPSgoZD1hLmNvbmRpdGlvbnNbYl0pPT1udWxsP3ZvaWQgMDpkWzJdKXx8W10sZixnPSgoZj1hLmNvbmRpdGlvbnNbYl0pPT1udWxsP3ZvaWQgMDpmWzFdKXx8W107cmV0dXJuIG5ldyBSSChjLGUsZyxhLkhbYl18fFNIKX0sVkgsV0g7dmFyIFlIPWZ1bmN0aW9uKGEpe2EuSz0hMDthLkg9ITE7aWYoSWYoNTIpKXtpZihNKDUxNikmJlhIKCkpe3ZhciBiO2Euc2V0dGluZ3M9KGI9ZGF0YS5wcm9kdWN0U2V0dGluZ3MpIT1udWxsP2I6e307YS5IPSEwfWVsc2V7dmFyIGM7YS5zZXR0aW5ncz0oYz1wcm9kdWN0U2V0dGluZ3MpIT1udWxsP2M6e319cHJvZHVjdFNldHRpbmdzPXZvaWQgMDtkYXRhLnByb2R1Y3RTZXR0aW5ncz12b2lkIDA7dmFyIGQ7KGQ9RkYpIT1udWxsJiZmbi5OJiZNKDUxNikmJihkLkg9YS5IPyIxIjoiMCIpfX0sJEg9ZnVuY3Rpb24oYSl7dmFyIGI9Wkg7Yi5LfHxZSChiKTtyZXR1cm4gYi5zZXR0aW5nc1thXX0sWkg9bmV3IGZ1bmN0aW9uKCl7dGhpcy5zZXR0aW5ncz17fTt0aGlzLks9dGhpcy5IPSExfTsKZnVuY3Rpb24gWEgoKXtpZighZGF0YS5wcm9kdWN0U2V0dGluZ3MmJiFwcm9kdWN0U2V0dGluZ3MpcmV0dXJuITA7aWYoIWRhdGEucHJvZHVjdFNldHRpbmdzfHwhcHJvZHVjdFNldHRpbmdzfHxPYmplY3Qua2V5cyhkYXRhLnByb2R1Y3RTZXR0aW5ncykubGVuZ3RoIT09T2JqZWN0LmtleXMocHJvZHVjdFNldHRpbmdzKS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBhIGluIHByb2R1Y3RTZXR0aW5ncylpZighZGF0YS5wcm9kdWN0U2V0dGluZ3MuaGFzT3duUHJvcGVydHkoYSl8fGRhdGEucHJvZHVjdFNldHRpbmdzW2FdLnByZUF1dG9QaWkhPT1wcm9kdWN0U2V0dGluZ3NbYV0ucHJlQXV0b1BpaSlyZXR1cm4hMTtyZXR1cm4hMH07dmFyIGFJPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmV2ZW50TmFtZT1iO3RoaXMuTT1jO3RoaXMuSD17fTt0aGlzLmlzQWJvcnRlZD0hMTt0aGlzLnRhcmdldD1hO3RoaXMubWV0YWRhdGE9e307Zm9yKHZhciBkPWMuZXZlbnRNZXRhZGF0YXx8e30sZT1tKE9iamVjdC5rZXlzKGQpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZTtWKHRoaXMsZyxkW2ddKX19LFI9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO3JldHVybihjPWEuSFtiXSk9PW51bGw/dm9pZCAwOihkPWMuZ2V0VmFsdWUpPT1udWxsP3ZvaWQgMDpkLmNhbGwoYyxRKGEsSC5KLnRnKSl9LGV1PWZ1bmN0aW9uKGEpe3JldHVybiBPYmplY3Qua2V5cyhhLkgpfSxVPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLkgsZTtjPT09dm9pZCAwP2U9dm9pZCAwOihWSCE9bnVsbHx8KFZIPW5ldyBUSChLSCxNSCkpLGU9VUgoVkgsYixjKSk7ZFtiXT1lfTsKYUkucHJvdG90eXBlLm1lcmdlSGl0RGF0YUZvcktleT1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZTtjPShkPXRoaXMuSFthXSk9PW51bGw/dm9pZCAwOihlPWQuSyk9PW51bGw/dm9pZCAwOmUuY2FsbChkKTtpZighYylyZXR1cm4gVSh0aGlzLGEsYiksITA7aWYoIUNkKGMpKXJldHVybiExO1UodGhpcyxhLG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3QsYyxiKSk7cmV0dXJuITB9O3ZhciBiST1mdW5jdGlvbihhLGIpe2I9Yj09PXZvaWQgMD97fTpiO2Zvcih2YXIgYz1tKE9iamVjdC5rZXlzKGEuSCkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlLGY9dm9pZCAwLGc9dm9pZCAwLGg9dm9pZCAwO2JbZV09KGY9YS5IW2VdKT09bnVsbD92b2lkIDA6KGg9KGc9ZikuSyk9PW51bGw/dm9pZCAwOmguY2FsbChnKX1yZXR1cm4gYn07CmFJLnByb3RvdHlwZS5jb3B5VG9IaXREYXRhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1PKHRoaXMuTSxhKTtkPT09dm9pZCAwJiYoZD1iKTtpZih6YihkKSYmYyE9PXZvaWQgMCl0cnl7ZD1jKGQpfWNhdGNoKGUpe31kIT09dm9pZCAwJiZVKHRoaXMsYSxkKX07CnZhciBRPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5tZXRhZGF0YVtiXTtpZihiPT09SC5KLnRnKXt2YXIgZDtyZXR1cm4gYz09bnVsbD92b2lkIDA6KGQ9Yy5LKT09bnVsbD92b2lkIDA6ZC5jYWxsKGMpfXZhciBlO3JldHVybiBjPT1udWxsP3ZvaWQgMDooZT1jLmdldFZhbHVlKT09bnVsbD92b2lkIDA6ZS5jYWxsKGMsUShhLEguSi50ZykpfSxWPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLm1ldGFkYXRhLGU7Yz09PXZvaWQgMD9lPWM6KFdIIT1udWxsfHwoV0g9bmV3IFRIKFBILFFIKSksZT1VSChXSCxiLGMpKTtkW2JdPWV9LGNJPWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwP3t9OmI7Zm9yKHZhciBjPW0oT2JqZWN0LmtleXMoYS5tZXRhZGF0YSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlLGY9dm9pZCAwLGc9dm9pZCAwLGg9dm9pZCAwO2JbZV09KGY9YS5tZXRhZGF0YVtlXSk9PW51bGw/dm9pZCAwOihoPShnPWYpLkspPT1udWxsP3ZvaWQgMDoKaC5jYWxsKGcpfXJldHVybiBifSxkST1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9JEgoYS50YXJnZXQuZGVzdGluYXRpb25JZCk7cmV0dXJuIGQmJmRbYl0hPT12b2lkIDA/ZFtiXTpjfSxadT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1uZXcgYUkoKGI9PW51bGw/dm9pZCAwOmIudGFyZ2V0KXx8YS50YXJnZXQsKGI9PW51bGw/dm9pZCAwOmIuZXZlbnROYW1lKXx8YS5ldmVudE5hbWUsKGI9PW51bGw/dm9pZCAwOmIuTSl8fGEuTSksZD1iSShhKSxlPW0oT2JqZWN0LmtleXMoZCkpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlO1UoYyxnLGRbZ10pfWZvcih2YXIgaD1jSShhKSxsPW0oT2JqZWN0LmtleXMoaCkpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD1uLnZhbHVlO1YoYyxwLGhbcF0pfWMuaXNBYm9ydGVkPWEuaXNBYm9ydGVkO3JldHVybiBjfSxlST1mdW5jdGlvbihhKXt2YXIgYj1hLk0sYz1iLmV2ZW50SWQsZD1iLnByaW9yaXR5SWQ7CnJldHVybiBkP2MrIl8iK2Q6U3RyaW5nKGMpfTthSS5wcm90b3R5cGUuYWNjZXB0PWZ1bmN0aW9uKCl7dmFyIGE9b20oam0uYmEuU2kse30pLGI9ZUkodGhpcyksYz10aGlzLnRhcmdldC5kZXN0aW5hdGlvbklkO2FbYl18fChhW2JdPXt9KTthW2JdW2NdPXZrKCk7dmFyIGQ9am0uYmEuU2k7aWYoa20oZCkpe3ZhciBlOyhlPWxtKGQpKT09bnVsbHx8ZS5ub3RpZnkoKX19O2FJLnByb3RvdHlwZS5jYW5CZUFjY2VwdGVkPWZ1bmN0aW9uKGEpe3ZhciBiPW5tKGptLmJhLlNpKTtpZighYilyZXR1cm4hMDt2YXIgYz1iW2VJKHRoaXMpXTtpZighYylyZXR1cm4hMDt2YXIgZD1jW2EhPW51bGw/YTp0aGlzLnRhcmdldC5kZXN0aW5hdGlvbklkXTtyZXR1cm4gZD09PXZvaWQgMHx8ZD09PXZrKCl9O2Z1bmN0aW9uIGZJKGEpe3JldHVybntnZXREZXN0aW5hdGlvbklkOmZ1bmN0aW9uKCl7cmV0dXJuIGEudGFyZ2V0LmRlc3RpbmF0aW9uSWR9LGdldEV2ZW50TmFtZTpmdW5jdGlvbigpe3JldHVybiBhLmV2ZW50TmFtZX0sc2V0RXZlbnROYW1lOmZ1bmN0aW9uKGIpe2EuZXZlbnROYW1lPWJ9LGdldEhpdERhdGE6ZnVuY3Rpb24oYil7cmV0dXJuIFIoYSxiKX0sc2V0SGl0RGF0YTpmdW5jdGlvbihiLGMpe1UoYSxiLGMpfSxzZXRIaXREYXRhSWZOb3REZWZpbmVkOmZ1bmN0aW9uKGIsYyl7UihhLGIpPT09dm9pZCAwJiZVKGEsYixjKX0sY29weVRvSGl0RGF0YTpmdW5jdGlvbihiLGMpe2EuY29weVRvSGl0RGF0YShiLGMpfSxnZXRNZXRhZGF0YTpmdW5jdGlvbihiKXtyZXR1cm4gUShhLGIpfSxzZXRNZXRhZGF0YTpmdW5jdGlvbihiLGMpe1YoYSxiLGMpfSxpc0Fib3J0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5pc0Fib3J0ZWR9LGFib3J0OmZ1bmN0aW9uKCl7YS5pc0Fib3J0ZWQ9ITB9LApnZXRGcm9tRXZlbnRDb250ZXh0OmZ1bmN0aW9uKGIpe3JldHVybiBPKGEuTSxiKX0scmI6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sZ2V0SGl0S2V5czpmdW5jdGlvbigpe3JldHVybiBldShhKX0sZ2V0TWVyZ2VkVmFsdWVzOmZ1bmN0aW9uKGIpe3JldHVybiBhLk0uZ2V0TWVyZ2VkVmFsdWVzKGIsMyl9LG1lcmdlSGl0RGF0YUZvcktleTpmdW5jdGlvbihiLGMpe3JldHVybiBDZChjKT9hLm1lcmdlSGl0RGF0YUZvcktleShiLGMpOiExfSxhY2NlcHQ6ZnVuY3Rpb24oKXthLmFjY2VwdCgpfSxjYW5CZUFjY2VwdGVkOmZ1bmN0aW9uKGIpe3JldHVybiBhLmNhbkJlQWNjZXB0ZWQoYil9fX07ZnVuY3Rpb24gZ0koYSxiKXt2YXIgYztpZighZWgoYSl8fCFmaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT2JqZWN0IiwiT2JqZWN0fHVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7dmFyIGQ9VGQoYil8fHt9LGU9VGQoYSx0aGlzLlQsMSkucmIoKSxmPWUuTTtkLm9taXRFdmVudENvbnRleHQmJihmPUpDKG5ldyB5QyhlLk0uZXZlbnRJZCxlLk0ucHJpb3JpdHlJZCkpKTt2YXIgZz1uZXcgYUkoZS50YXJnZXQsZS5ldmVudE5hbWUsZik7aWYoIWQub21pdEhpdERhdGEpZm9yKHZhciBoPWJJKGUpLGw9bShPYmplY3Qua2V5cyhoKSksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPW4udmFsdWU7VShnLHAsaFtwXSl9aWYoZC5vbWl0TWV0YWRhdGEpZy5tZXRhZGF0YT17fTtlbHNlIGZvcih2YXIgcT1jSShlKSxyPW0oT2JqZWN0LmtleXMocSkpLHQ9ci5uZXh0KCk7IXQuZG9uZTt0PQpyLm5leHQoKSl7dmFyIHU9dC52YWx1ZTtWKGcsdSxxW3VdKX1nLmlzQWJvcnRlZD1lLmlzQWJvcnRlZDtjPVVkKGZJKGcpLHRoaXMuVCwxKTtyZXR1cm4gY31nSS5QPSJpbnRlcm5hbC5jb3B5UHJlSGl0IjtmdW5jdGlvbiBoSShhLGIpe3ZhciBjPW51bGw7cmV0dXJuIFVkKGMsdGhpcy5ULDIpfWhJLnB1YmxpY05hbWU9ImNyZWF0ZUFyZ3VtZW50c1F1ZXVlIjtmdW5jdGlvbiBpSShhKXtyZXR1cm4gVWQoZnVuY3Rpb24oYyl7dmFyIGQ9U0EoKTtpZih0eXBlb2YgYz09PSJmdW5jdGlvbiIpZChmdW5jdGlvbigpe2MoZnVuY3Rpb24oZixnLGgpe3ZhciBsPQpTQSgpLG49bCYmbC5nZXRCeU5hbWUmJmwuZ2V0QnlOYW1lKGYpO3JldHVybihuZXcgQS5nYXBsdWdpbnMuTGlua2VyKG4pKS5kZWNvcmF0ZShnLGgpfSl9KTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoYykpe3ZhciBlPVN0cmluZyhjWzBdKS5zcGxpdCgiLiIpO2JbZS5sZW5ndGg9PT0xP2VbMF06ZVsxXV0mJmQuYXBwbHkobnVsbCxjKX1lbHNlIGlmKGM9PT0iaXNMb2FkZWQiKXJldHVybiEhZC5sb2FkZWR9LHRoaXMuVCwxKX1pSS5QPSJpbnRlcm5hbC5jcmVhdGVHYUNvbW1hbmRRdWV1ZSI7ZnVuY3Rpb24gakkoYSl7cmV0dXJuIFVkKGZ1bmN0aW9uKCl7aWYoIXliKGUucHVzaCkpdGhyb3cgRXJyb3IoIk9iamVjdCBhdCAiK2ErIiBpbiB3aW5kb3cgaXMgbm90IGFuIGFycmF5LiIpO2UucHVzaC5hcHBseShlLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9LHRoaXMuVCwKQmgoWEYodGhpcykuUGIoKSk/MjoxKX1qSS5wdWJsaWNOYW1lPSJjcmVhdGVRdWV1ZSI7ZnVuY3Rpb24ga0koYSxiKXt2YXIgYz1udWxsO2lmKCFsaChhKXx8IW1oKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJzdHJpbmd8dW5kZWZpbmVkIl0sYXJndW1lbnRzKTt0cnl7dmFyIGQ9KGJ8fCIiKS5zcGxpdCgiIikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiJpZyIuaW5kZXhPZihlKT49MH0pLmpvaW4oIiIpO2M9bmV3IFBkKG5ldyBSZWdFeHAoYSxkKSl9Y2F0Y2goZSl7fXJldHVybiBjfWtJLlA9ImludGVybmFsLmNyZWF0ZVJlZ2V4IjtmdW5jdGlvbiBsSShhKXt9bEkuUD0iaW50ZXJuYWwuZGVjbGFyZUNvbnNlbnRTdGF0ZSI7ZnVuY3Rpb24gbUkoYSl7dmFyIGI9IiI7cmV0dXJuIGJ9bUkuUD0iaW50ZXJuYWwuZGVjb2RlVXJsSHRtbEVudGl0aWVzIjtmdW5jdGlvbiBuSShhLGIsYyl7dmFyIGQ7cmV0dXJuIGR9bkkuUD0iaW50ZXJuYWwuZGVjb3JhdGVVcmxXaXRoR2FDb29raWVzIjtmdW5jdGlvbiBvSSgpe31vSS5QPSJpbnRlcm5hbC5kZWZlckN1c3RvbUV2ZW50cyI7ZnVuY3Rpb24gcEkoYSxiKXt0cnl7cmV0dXJuIGEuY2xvc2VzdChiKX1jYXRjaChjKXtyZXR1cm4gbnVsbH19O2Z1bmN0aW9uIHFJKCl7dmFyIGE9QS5zY3JlZW47cmV0dXJue3dpZHRoOmE/YS53aWR0aDowLGhlaWdodDphP2EuaGVpZ2h0OjB9fQpmdW5jdGlvbiBySShhKXtpZihCLmhpZGRlbilyZXR1cm4hMDt2YXIgYj1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKGIudG9wPT09Yi5ib3R0b218fGIubGVmdD09PWIucmlnaHR8fCFBLmdldENvbXB1dGVkU3R5bGUpcmV0dXJuITA7dmFyIGM9QS5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk7aWYoYy52aXNpYmlsaXR5PT09ImhpZGRlbiIpcmV0dXJuITA7Zm9yKHZhciBkPWEsZT1jO2Q7KXtpZihlLmRpc3BsYXk9PT0ibm9uZSIpcmV0dXJuITA7dmFyIGY9ZS5vcGFjaXR5LGc9ZS5maWx0ZXI7aWYoZyl7dmFyIGg9Zy5pbmRleE9mKCJvcGFjaXR5KCIpO2g+PTAmJihnPWcuc3Vic3RyaW5nKGgrOCxnLmluZGV4T2YoIikiLGgpKSxnLmNoYXJBdChnLmxlbmd0aC0xKT09PSIlIiYmKGc9Zy5zdWJzdHJpbmcoMCxnLmxlbmd0aC0xKSksZj1TdHJpbmcoTWF0aC5taW4oTnVtYmVyKGcpLE51bWJlcihmKSkpKX1pZihmIT09dm9pZCAwJiZOdW1iZXIoZik8PTApcmV0dXJuITA7KGQ9ZC5wYXJlbnRFbGVtZW50KSYmCihlPUEuZ2V0Q29tcHV0ZWRTdHlsZShkLG51bGwpKX1yZXR1cm4hMX0KdmFyIHRJPWZ1bmN0aW9uKGEpe3ZhciBiPXNJKCksYz1iLmhlaWdodCxkPWIud2lkdGgsZT1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGY9ZS5ib3R0b20tZS50b3AsZz1lLnJpZ2h0LWUubGVmdDtyZXR1cm4gZiYmZz8oMS1NYXRoLm1pbigoTWF0aC5tYXgoMC1lLmxlZnQsMCkrTWF0aC5tYXgoZS5yaWdodC1kLDApKS9nLDEpKSooMS1NYXRoLm1pbigoTWF0aC5tYXgoMC1lLnRvcCwwKStNYXRoLm1heChlLmJvdHRvbS1jLDApKS9mLDEpKTowfSxzST1mdW5jdGlvbigpe3ZhciBhPUIuYm9keSxiPUIuZG9jdW1lbnRFbGVtZW50fHxhJiZhLnBhcmVudEVsZW1lbnQsYyxkO2lmKEIuY29tcGF0TW9kZSYmQi5jb21wYXRNb2RlIT09IkJhY2tDb21wYXQiKWM9Yj9iLmNsaWVudEhlaWdodDowLGQ9Yj9iLmNsaWVudFdpZHRoOjA7ZWxzZXt2YXIgZT1mdW5jdGlvbihmLGcpe3JldHVybiBmJiZnP01hdGgubWluKGYsZyk6TWF0aC5tYXgoZixnKX07Yz1lKGI/Yi5jbGllbnRIZWlnaHQ6MCxhPwphLmNsaWVudEhlaWdodDowKTtkPWUoYj9iLmNsaWVudFdpZHRoOjAsYT9hLmNsaWVudFdpZHRoOjApfXJldHVybnt3aWR0aDpkLGhlaWdodDpjfX07dmFyIHZJPWZ1bmN0aW9uKGEpe2lmKHVJKXt2YXIgYj1hbCgyNCxmdW5jdGlvbigpe3JldHVybltdfSk7aWYoYT49MCYmYTxiLmxlbmd0aCYmYlthXSl7dmFyIGM7KGM9YlthXSk9PW51bGx8fGMuZGlzY29ubmVjdCgpO2JbYV09dm9pZCAwfX1lbHNlIEEuY2xlYXJJbnRlcnZhbChhKX0seUk9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKWNbZF0+MT9jW2RdPTE6Y1tkXTwwJiYoY1tkXT0wKTtpZih1SSl7dmFyIGU9ITE7YmQoZnVuY3Rpb24oKXtlfHx3SShhLGIsYykoKX0pO3JldHVybiB4SShmdW5jdGlvbihmKXtlPSEwO2Zvcih2YXIgZz17SGc6MH07Zy5IZzxmLmxlbmd0aDtnPXtIZzpnLkhnfSxnLkhnKyspYmQoZnVuY3Rpb24oaCl7cmV0dXJuIGZ1bmN0aW9uKCl7YShmW2guSGddKX19KGcpKX0sCmIsYyl9cmV0dXJuIGNkKHdJKGEsYixjKSwxRTMpfSx3ST1mdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChoLGwpe3ZhciBuPXt0b3A6MCxib3R0b206MCxyaWdodDowLGxlZnQ6MCx3aWR0aDowLGhlaWdodDowfSxwPXtib3VuZGluZ0NsaWVudFJlY3Q6aC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpbnRlcnNlY3Rpb25SYXRpbzpsLGludGVyc2VjdGlvblJlY3Q6bixpc0ludGVyc2VjdGluZzpsPjAscm9vdEJvdW5kczpuLHRhcmdldDpoLHRpbWU6TmIoKX07YmQoZnVuY3Rpb24oKXthKHApfSl9Zm9yKHZhciBlPVtdLGY9W10sZz0wO2c8Yi5sZW5ndGg7ZysrKWUucHVzaCgwKSxmLnB1c2goLTEpO2Muc29ydChmdW5jdGlvbihoLGwpe3JldHVybiBoLWx9KTtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGg9MDtoPGIubGVuZ3RoO2grKyl7dmFyIGw9dEkoYltoXSk7aWYobD5lW2hdKWZvcig7ZltoXTxjLmxlbmd0aC0xJiZsPj1jW2ZbaF0rMV07KWQoYltoXSxsKSxmW2hdKys7ZWxzZSBpZihsPAplW2hdKWZvcig7ZltoXT49MCYmbDw9Y1tmW2hdXTspZChiW2hdLGwpLGZbaF0tLTtlW2hdPWx9fX0seEk9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1uZXcgQS5JbnRlcnNlY3Rpb25PYnNlcnZlcihhLHt0aHJlc2hvbGQ6Y30pLGU9MDtlPGIubGVuZ3RoO2UrKylkLm9ic2VydmUoYltlXSk7Zm9yKHZhciBmPWFsKDI0LGZ1bmN0aW9uKCl7cmV0dXJuW119KSxnPTA7ZzxmLmxlbmd0aDtnKyspaWYoIWZbZ10pcmV0dXJuIGZbZ109ZCxnO3JldHVybiBmLnB1c2goZCktMX0sdUk9ISghQS5JbnRlcnNlY3Rpb25PYnNlcnZlcnx8IUEuSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSk7CnZhciBKST1mdW5jdGlvbihhKXt2YXIgYixjPShiPWE9PW51bGw/dm9pZCAwOmEuaW5jbHVkZVNlbGVjdG9yKSE9bnVsbD9iOiEwLGQsZT0oZD1hPT1udWxsP3ZvaWQgMDphLmluY2x1ZGVWaXNpYmlsaXR5KSE9bnVsbD9kOiEwLGYsZz0oZj1hPT1udWxsP3ZvaWQgMDphLnNlbGVjdE11bHRpcGxlRWxlbWVudHMpIT1udWxsP2Y6ITEsaD0oYT09bnVsbD92b2lkIDA6YS5leGNsdWRlRWxlbWVudFNlbGVjdG9ycyl8fFtdLGw9KGE9PW51bGw/dm9pZCAwOmEuZmllbGRGaWx0ZXJzKXx8e2VtYWlsOiEwLHBob25lOiExLGFkZHJlc3M6ITF9LG49YWwoNixmdW5jdGlvbigpe3JldHVybnt9fSkscD16SSh7aW5jbHVkZVNlbGVjdG9yOmMsaW5jbHVkZVZpc2liaWxpdHk6ZSxleGNsdWRlRWxlbWVudFNlbGVjdG9yczpoLGZpZWxkRmlsdGVyczpsfSkscT1uW3BdO2lmKHEmJk5iKCktcS50aW1lc3RhbXA8MjAwKXt2YXIgcj1xLnJlc3VsdCx0OyhyLmVsZW1lbnRzLnNvbWUoZnVuY3Rpb24ocWEpe3JldHVybiBxYS5kaX0pfHwKKCh0PXIuZ2kpPT1udWxsPzA6dC5kaSkpJiZHdShULlcucmopO3JldHVybiByfXZhciB1PUFJKCksdj11LnN0YXR1cyx4PVtdLHkseixDPVtdO2lmKE0oNTY4KSl7dmFyIEQ9QkkobCksST1DSSh1LmVsZW1lbnRzLEQpLEc9REkoSSksTj1FSShHLGgpLFM9RkkoTik7eT1TLmZpbHRlcihmdW5jdGlvbihxYSl7cmV0dXJuIHFhLkRhPT09RkQuQmJ9KVswXTtmb3IodmFyIFc9W10sZWE9e0lnOjB9O2VhLklnPEQubGVuZ3RoO2VhPXtJZzplYS5JZ30sZWEuSWcrKyl7dmFyIGphPU4uZmlsdGVyKGZ1bmN0aW9uKHFhKXtyZXR1cm4gZnVuY3Rpb24oaWIpe3JldHVybiBpYi5EYT09PURbcWEuSWddfX0oZWEpKTtqYS5sZW5ndGg+MTAmJih2PSIzIixqYT1qYS5zbGljZSgwLDEwKSk7Vz1XLmNvbmNhdChqYSl9Tj1XOyFnJiZTJiYoTj1TKTtmb3IodmFyIGZhPTA7ZmE8Ti5sZW5ndGg7ZmErKyl7dmFyIHNhPU5bZmFdO3NhLkRhIT09RkQuS2gmJkMucHVzaChHSShzYSxjLGUpKX19ZWxzZXtpZihsLmVtYWlsKXt2YXIgZGE9CkhJKHUuZWxlbWVudHMpO3g9RUkoZGEsaCk7eT1JSSh4KTtkYS5sZW5ndGg+MTAmJih2PSIzIil9IWcmJnkmJih4PVt5XSk7Zm9yKHZhciBtYT0wO21hPHgubGVuZ3RoO21hKyspQy5wdXNoKEdJKHhbbWFdLGMsZSkpO0M9Qy5zbGljZSgwLDEwKX15JiYoej1HSSh5LGMsZSkpO3ZhciBQYT17ZWxlbWVudHM6QyxnaTp6LHN0YXR1czp2fTtuW3BdPXt0aW1lc3RhbXA6TmIoKSxyZXN1bHQ6UGF9O3ZhciBGYTsoUGEuZWxlbWVudHMuc29tZShmdW5jdGlvbihxYSl7cmV0dXJuIHFhLmRpfSl8fCgoRmE9UGEuZ2kpPT1udWxsPzA6RmEuZGkpKSYmR3UoVC5XLnJqKTtyZXR1cm4gUGF9LERJPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZmlsdGVyKGZ1bmN0aW9uKHUpe3JldHVybiB1LkRhPT09RkQuS2h9KSxjPWEuZmlsdGVyKGZ1bmN0aW9uKHUpe3JldHVybiB1LkRhPT09RkQuWGR9KTtpZihhLmZpbHRlcihmdW5jdGlvbih1KXtyZXR1cm4gdS5EYT09PUZELmNlfSkubGVuZ3RoPT09MCYmYy5sZW5ndGg9PT0KMClmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9YltkXSxmPWUuQ2Euc3BsaXQoIiAiKTtmLmxlbmd0aD4xJiZhLnB1c2goe0NhOmZbMF0sRGE6RkQuWGQsZWxlbWVudDplLmVsZW1lbnQsT2M6ZS5PY30se0NhOmYuc2xpY2UoMSkuam9pbigiICIpLERhOkZELmNlLGVsZW1lbnQ6ZS5lbGVtZW50LE9jOmUuT2N9KX1mb3IodmFyIGcsaD0wLGwsbj1mdW5jdGlvbih1KXtyZXR1cm4gdS5EYT09PUZELmVlJiZ1LkNhLmxlbmd0aD49MyYmdS5DYS5sZW5ndGg8PTR9LHA9MDtwPGEubGVuZ3RoO3ArKyl7dmFyIHE9YVtwXTtpZihuKHEpJiZnJiZxLmVsZW1lbnQucGFyZW50RWxlbWVudD09PWcmJmg8Myl7aWYoaCs9MSxsKz1xLkNhLGg9PT0zKXt2YXIgcj1wLWgrMTtpZihsPUtJW0ZELmVlXS5uYShsKSlhW3JdLkNhPWx9fWVsc2UgaWYoaD0wLGw9IiIsZz12b2lkIDAsbihxKSl7aCsrO2w9cS5DYTt2YXIgdD12b2lkIDA7Zz0odD1xLmVsZW1lbnQucGFyZW50RWxlbWVudCkhPW51bGw/CnQ6dm9pZCAwfX1yZXR1cm4gYS5maWx0ZXIoZnVuY3Rpb24odSl7cmV0dXJuIW4odSl9KX0sT0k9ZnVuY3Rpb24oYSxiKXtpZihhLnZhbHVlJiZMSS5pbmRleE9mKChhLnR5cGV8fCJ0ZXh0IikudG9Mb3dlckNhc2UoKSkhPT0tMSl7dmFyIGM9YS5hdXRvY29tcGxldGU7aWYoYylmb3IodmFyIGQ9Yy5zcGxpdCgiICIpLGU9MDtlPGQubGVuZ3RoO2UrKyl7dmFyIGY9TUkoYS52YWx1ZSxiLGRbZV0pO2lmKGYpcmV0dXJuIGZ9dmFyIGcsaD1bYS5uYW1lLGEuaWQsKGc9YS5hcmlhTGFiZWwpIT1udWxsP2c6dm9pZCAwLGEucGxhY2Vob2xkZXJdLGw9YS5wYXJlbnRFbGVtZW50O2wmJmwudGFnTmFtZT09PSJMQUJFTCImJmgucHVzaChsLmlubmVyVGV4dCk7dmFyIG49YS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO24mJm4udGFnTmFtZT09PSJMQUJFTCImJiFuLmh0bWxGb3ImJmgucHVzaChuLmlubmVyVGV4dCk7aWYoYS5pZCl7dmFyIHA9W107dHJ5e3A9ZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCdsYWJlbFtmb3I9IicrCmEuaWQrJyJdJyl9Y2F0Y2goRCl7fWZvcih2YXIgcT0wO3E8cC5sZW5ndGg7cSsrKWgucHVzaChwW3FdLmlubmVyVGV4dCl9aD1oLmZpbHRlcihmdW5jdGlvbihEKXtyZXR1cm4gRCYmRC50cmltKCl9KTtmb3IodmFyIHIsdD0wLHU9MDt1PGgubGVuZ3RoO3UrKyl7dmFyIHY9TkkoYSxiLGhbdV0pO2lmKHYpe3ZhciB4PXYseT14LkNhLHo9eC5EYSxDPXguWHM7Qz50JiYodD1DLHI9e0NhOnksRGE6en0pfX1yZXR1cm4gcn19LE5JPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9YltkXTtpZihLSVtlXS5uZSl7dmFyIGY9S0lbZV0ubmUuZXhlYyhjLnRyaW0oKSk7aWYoZil7dmFyIGc9YSxoPVtdLGw9Zy52YWx1ZS50cmltKCk7bCYmaC5wdXNoKGwpO2lmKGcudGFnTmFtZT09PSJTRUxFQ1QiKXRyeXt2YXIgbj1nLnF1ZXJ5U2VsZWN0b3IoJ1t2YWx1ZT0iJytnLnZhbHVlKyciXScpLHA9biYmbi5pbm5lclRleHQudHJpbSgpO3AmJmgucHVzaChwKX1jYXRjaCh1KXt9Zm9yKHZhciBxPQpoLHI9dm9pZCAwLHQ9MDt0PHEubGVuZ3RoJiYhcjt0Kyspcj1LSVtlXS5uYShxW3RdKTtpZihyKXJldHVybntEYTplLENhOnIsWHM6ZlswXS5sZW5ndGgvYy50cmltKCkubGVuZ3RofX19fX0sTUk9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1iW2RdO2lmKEtJW2VdLmF1dG9jb21wbGV0ZSYmS0lbZV0uYXV0b2NvbXBsZXRlLmluZGV4T2YoYyk+PTApe3ZhciBmPUtJW2VdLm5hKGEudHJpbSgpKTtpZihmKXJldHVybntEYTplLENhOmZ9fX19LEJJPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO2EuZW1haWwmJmIucHVzaChGRC5CYik7YS5waG9uZSYmYi5wdXNoKEZELmVlKTthLmFkZHJlc3MmJmIucHVzaChGRC5YZCxGRC5jZSxGRC54ZixGRC5xZyxGRC5LaCk7cmV0dXJuIGJ9LENJPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGEubGVuZ3RoO2QrKyl7dmFyIGU9YVtkXSxmPWUuZWxlbWVudCxnPWUuT2MsaDthOnt2YXIgbD1mLG49YiwKcD1sLmlubmVySFRNTDtQSS5pbmRleE9mKGwudGFnTmFtZSk+PTAmJihwPWwudmFsdWV8fHApO2lmKHApe3ZhciBxO2I6e2Zvcih2YXIgcj1wLHQ9bix1PTA7dTx0Lmxlbmd0aDt1Kyspe3ZhciB2PXRbdV07aWYoIUtJW3ZdLm1lKXt2YXIgeD1LSVt2XS5uYShyLnRyaW0oKSk7aWYoeCl7cT17RGE6dixDYTp4fTticmVhayBifX19cT12b2lkIDB9aWYocSl7aD1xO2JyZWFrIGF9aWYoUEkuaW5kZXhPZihsLnRhZ05hbWUpIT09LTEpe2g9T0kobCxuKTticmVhayBhfX1oPXZvaWQgMH12YXIgeT1oO2lmKHkpe3ZhciB6PXk7Yy5wdXNoKHtDYTp6LkNhLERhOnouRGEsZWxlbWVudDpmLE9jOmd9KX19cmV0dXJuIGN9LEZJPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO2lmKGEubGVuZ3RoPT09MClyZXR1cm4gYjt2YXIgYz17fSxkO2ZvcihkIGluIEZEKWlmKGM9e1ZnOmMuVmd9LGMuVmc9ZCxGRC5oYXNPd25Qcm9wZXJ0eShjLlZnKSl7dmFyIGU9YS5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIGZ1bmN0aW9uKGcpe3JldHVybiBnLkRhPT09CkZEW2YuVmddfX0oYykpO2UubGVuZ3RoIT09MCYmKEZEW2MuVmddPT09RkQuQmImJihlPVFJKGUsZnVuY3Rpb24oZil7cmV0dXJuIVJJLnRlc3QoZi5DYSl9KSxlPVFJKGUsZnVuY3Rpb24oZil7cmV0dXJuIGYuZWxlbWVudC50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PT0iSU5QVVQifSksZT1RSShlLGZ1bmN0aW9uKGYpe3JldHVybiFySShmLmVsZW1lbnQpfSkpLGIucHVzaChlWzBdKSl9cmV0dXJuIGJ9LEdJPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmVsZW1lbnQsZT1hLk9jLGY9e0NhOmEuQ2EsdHlwZTphLkRhLHRhZ05hbWU6ZC50YWdOYW1lfTtpZihiKXt2YXIgZyxoPVNJKGQpO2lmKGc9KGU/ZSsifCIraDpoKS5zbGljZSgwLFRJKSlmLnF1ZXJ5U2VsZWN0b3I9Z31jJiYoZi5pc1Zpc2libGU9IXJJKGQpKTtlJiYoZi5kaT0hMCk7cmV0dXJuIGZ9LHpJPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlO2I9YS5pbmNsdWRlU2VsZWN0b3I7Yz1hLmluY2x1ZGVWaXNpYmlsaXR5O2Q9YS5leGNsdWRlRWxlbWVudFNlbGVjdG9yczsKZT1hLmZpZWxkRmlsdGVyczt2YXIgZj0hIWIrIi4iKyEhYztkLmxlbmd0aCYmKGYrPSIuIitkLmpvaW4oIi4iKSk7cmV0dXJuIGYrPSIuIitlLmVtYWlsKyIuIitlLnBob25lKyIuIitlLmFkZHJlc3N9LElJPWZ1bmN0aW9uKGEpe2lmKGEubGVuZ3RoIT09MCl7dmFyIGI7Yj1RSShhLGZ1bmN0aW9uKGMpe3JldHVybiFSSS50ZXN0KGMuQ2EpfSk7Yj1RSShiLGZ1bmN0aW9uKGMpe3JldHVybiBjLmVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpPT09IklOUFVUIn0pO2I9UUkoYixmdW5jdGlvbihjKXtyZXR1cm4hckkoYy5lbGVtZW50KX0pO3JldHVybiBiWzBdfX0sRUk9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZD0wO2Q8YS5sZW5ndGg7ZCsrKXtmb3IodmFyIGU9ITAsZj0wO2Y8Yi5sZW5ndGg7ZisrKXt2YXIgZz1iW2ZdO2lmKGcmJnBJKGFbZF0uZWxlbWVudCxnKSl7ZT0hMTticmVha319YVtkXS5EYT09PUZELkJiJiZNKDYwMikmJihSSS50ZXN0KGFbZF0uQ2EpfHxhW2RdLmVsZW1lbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpPT09CiJBIiYmYVtkXS5lbGVtZW50Lmhhc0F0dHJpYnV0ZSgiaHJlZiIpJiZhW2RdLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCJocmVmIikuaW5kZXhPZigibWFpbHRvOiIpIT09LTE/ZT0hMTphW2RdLmVsZW1lbnQuY2xvc2VzdCgiZm9vdGVyIikhPT1udWxsJiYoZT0hMSkpO2UmJmMucHVzaChhW2RdKX1yZXR1cm4gY30sUUk9ZnVuY3Rpb24oYSxiKXtpZihhLmxlbmd0aDw9MSlyZXR1cm4gYTt2YXIgYz1hLmZpbHRlcihiKTtyZXR1cm4gYy5sZW5ndGg9PT0wP2E6Y30sU0k9ZnVuY3Rpb24oYSl7aWYoYT09PUIuYm9keSlyZXR1cm4iYm9keSI7aWYoYS5pZClyZXR1cm4iIyIrYS5pZDt2YXIgYj1hLnBhcmVudEVsZW1lbnQ7aWYoYil7dmFyIGM9U0koYiksZD1VSShhLGIpLGU9VkkoYSkrIjpudGgtY2hpbGQoIitkKyIpIjtyZXR1cm4gYz9jKyI+IitlOmV9dmFyIGY9YS5wYXJlbnROb2RlO2lmKGYgaW5zdGFuY2VvZiBTaGFkb3dSb290KXt2YXIgZz1VSShhLGYpO3JldHVybiBWSShhKSsiOm50aC1jaGlsZCgiKwpnKyIpIn1yZXR1cm4gYS50YWdOYW1lP2EudGFnTmFtZS50b0xvd2VyQ2FzZSgpOiIifSxWST1mdW5jdGlvbihhKXtpZihhLmNsYXNzTGlzdCYmYS5jbGFzc0xpc3QubGVuZ3RoPjApe3ZhciBiPUFycmF5LmZyb20oYS5jbGFzc0xpc3QsZnVuY3Rpb24oYyl7cmV0dXJuIENTUy5lc2NhcGUoYyl9KS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGMubGVuZ3RoPjB9KTtpZihiLmxlbmd0aD4wKXJldHVybiIuIitiLmpvaW4oIi4iKX1yZXR1cm4iIn0sVUk9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9Yi5jaGlsZHJlbixkPTA7ZDxjLmxlbmd0aDtkKyspaWYoY1tkXT09PWEpcmV0dXJuIGQrMTtyZXR1cm4gMX0sSEk9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXSxlPWQuZWxlbWVudCxmPWQuT2MsZz1lLnRleHRDb250ZW50O2UudGFnTmFtZS50b1VwcGVyQ2FzZSgpPT09IklOUFVUIiYmZS52YWx1ZSYmKGc9ZS52YWx1ZSk7aWYoZyl7dmFyIGg9CmcubWF0Y2goS0QpO2lmKGgpe3ZhciBsPWhbMF07TEQobCl8fGIucHVzaCh7ZWxlbWVudDplLENhOmwsRGE6RkQuQmIsT2M6Zn0pfX19cmV0dXJuIGJ9LEFJPWZ1bmN0aW9uKCl7dmFyIGE9W10sYj1CLmJvZHk7aWYoIWIpcmV0dXJue2VsZW1lbnRzOmEsc3RhdHVzOiI0In07dmFyIGM9V0koYiwwLCIiLGEpO3JldHVybntlbGVtZW50czphLHN0YXR1czpjfX0sV0k9ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlPWEucXVlcnlTZWxlY3RvckFsbCgiKiIpLGY9ZS5sZW5ndGg+MUU0PyIyIjoiMSIsZz0wO2c8TWF0aC5taW4oZS5sZW5ndGgsMUU0KTtnKyspe3ZhciBoPWVbZ107aWYoIShYSS5pbmRleE9mKGgudGFnTmFtZS50b1VwcGVyQ2FzZSgpKT49MCkmJmguY2hpbGRyZW4gaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbil7dmFyIGw9ITE7aWYoTSg1ODIpJiZoLnNoYWRvd1Jvb3QmJmI8MSl7dmFyIG49U0koaCk7V0koaC5zaGFkb3dSb290LGIrMSxjP2MrInwiK246bixkKT09PSIyIiYmCihmPSIyIik7bD0hMH12YXIgcD0hMTtpZighbClmb3IodmFyIHE9MDtxPE1hdGgubWluKGguY2hpbGRFbGVtZW50Q291bnQsMUU0KTtxKyspaWYoIShZSS5pbmRleE9mKGguY2hpbGRyZW5bcV0udGFnTmFtZS50b1VwcGVyQ2FzZSgpKT49MCkpe3A9ITA7YnJlYWt9KCFwJiYhbHx8TSg1NjgpJiZQSS5pbmRleE9mKGgudGFnTmFtZSkhPT0tMSkmJmQucHVzaCh7ZWxlbWVudDpoLE9jOmI+MD9jOnZvaWQgMH0pfX1yZXR1cm4gZn0sUkk9L3N1cHBvcnR8bm9yZXBseS9pLFhJPSJTQ1JJUFQgU1RZTEUgSU1HIFNWRyBQQVRIIEJSIE5PU0NSSVBUIFRFWFRBUkVBIi5zcGxpdCgiICIpLFlJPVsiQlIiXSxUST1OZig3MCw1MCksUEk9WyJJTlBVVCIsIlNFTEVDVCJdLExJPSJ0ZXh0IHRlbCBzZWFyY2ggbnVtYmVyIGhpZGRlbiBlbWFpbCBzZWxlY3Qtb25lIi5zcGxpdCgiICIpLFpJPVJlZ0V4cCgicGhvbmV8bW9iaWxlfGNvbnRhY3QuP251bWJlcnx0ZWxlZm9ubnVtbWVyfHRlbGVmb25vfHRlbFx1MDBlOWZvbm98dGVsZml4ZXxcdTk2ZmJcdThhNzF8dGVsZWZvbmV8dGVsZW1vdmVsfFx1MDQ0Mlx1MDQzNVx1MDQzYlx1MDQzNVx1MDQ0NFx1MDQzZVx1MDQzZHxcdTA5MmVcdTA5NGJcdTA5MmNcdTA5M2VcdTA5MDdcdTA5MzJ8XHU3NTM1XHU4YmRkfFx1NjI0Ylx1NjczYVx1NTNmN3xcdTBkMmVcdTBkNGFcdTBkMmNcdTBkNDhcdTBkMzJcdTBkNGRcdTIwMGR8KF58Wy1fXSl0ZWxbLV9dPyhcXGQrKSooXFxbLipcXF0pKiR8KD86XHVjODA0XHVkNjU0fFx1ZDU3OFx1YjRkY1x1ZDNmMHxcdWQ3MzRcdWIzMDBcdWQzZjB8XHVkNzM0XHViMzAwXHVjODA0XHVkNjU0KSg/Oi4/XHViYzg4XHVkNjM4KT98KFxcYnxffFxcKil0ZWxlZm9uKFxcYnxffFxcKil8dGVsZXBvbnxwb25zZWx8KG5vbW9yfG5vXFwuPykuPyhocHxoYW5kcGhvbmUpIiwKImkiKSwkST1SZWdFeHAoIl5uYW1lfGZ1bGwuP25hbWV8eW91ci4/bmFtZXxjdXN0b21lci4/bmFtZXxiaWxsLj9uYW1lfHNoaXAuP25hbWV8bmFtZS4qZmlyc3QuKmxhc3R8Zmlyc3RhbmRsYXN0bmFtZXxjb250YWN0Lj8obmFtZXxwZXJzb24pfG5vbWJyZS4qeS4qYXBlbGxpZG9zfF5ub20oPyFbYS16QS1aXSl8XHUzMDRhXHU1NDBkXHU1MjRkfFx1NmMwZlx1NTQwZHxebm9tZXxcdTA2NDZcdTA2MjdcdTA2NDUuKlx1MDY0Nlx1MDYyN1x1MDY0NS4qXHUwNjJlXHUwNjI3XHUwNjQ2XHUwNjQ4XHUwNjI3XHUwNjJmXHUwNmFmXHUwNmNjfFx1NTlkM1xccypcdTU0MGR8XHUwNDNhXHUwNDNlXHUwNDNkXHUwNDQyXHUwNDMwXHUwNDNhXHUwNDQyXHUwNDNkXHUwNDNlXHUwNDM1Lj9cdTA0M2JcdTA0MzhcdTA0NDZcdTA0M2V8KFxcYnxffFxcKilhZFtcdTAxMzFdPyBzb3lhZFtcdTAxMzFdPyhcXGJ8X3xcXCopfFx1YzEzMVx1YmE4NXxuYW1hLj8obGVuZ2thcHxwZW5lcmltYXxrYW11KSIsCiJpIiksYUo9UmVnRXhwKCJmaXJzdC4qbmFtZXxpbml0aWFsc3xmbmFtZXxmaXJzdCR8Z2l2ZW4uKm5hbWV8dm9ybmFtZXxub21icmV8Zm9yZW5hbWV8cHJcdTAwZTlub218cHJlbm9tfFx1NTQwZHxub21lfFx1MDQxOFx1MDQzY1x1MDQ0ZnxcdTA2NDZcdTA2MjdcdTA2NDV8XHVjNzc0XHViOTg0fFx1MGQyYVx1MGQ0N1x1MGQzMFx1MGQ0ZHwoXFxifF98XFwqKShpc2ltfGFkfGFkKGl8XHUwMTMxfGluaXp8XHUwMTMxblx1MDEzMXopPykoXFxifF98XFwqKXxcdTA5MjhcdTA5M2VcdTA5MmV8bmFtYSBkZXBhbiIsImkiKSxiSj1SZWdFeHAoImxhc3QuKm5hbWV8bG5hbWV8c3VybmFtZSg/IVxcZCl8bGFzdCR8c2Vjb25kbmFtZXxmYW1pbHkuKm5hbWV8bmFjaG5hbWV8YXBlbGxpZG9zP3xmYW1pbGxlfF5ub20oPyFbYS16QS1aXSl8Y29nbm9tZXxcdTU5ZDN8YXBlbGlkb3N8c3VyZW5hbWV8c29icmVub21lfFx1MDQyNFx1MDQzMFx1MDQzY1x1MDQzOFx1MDQzYlx1MDQzOFx1MDQ0ZnxcdTA2NDZcdTA2MjdcdTA2NDUuKlx1MDYyZVx1MDYyN1x1MDY0Nlx1MDY0OFx1MDYyN1x1MDYyZlx1MDZhZlx1MDZjY3xcdTA5MDlcdTA5MmFcdTA5MjhcdTA5M2VcdTA5MmV8XHUwZDJlXHUwZDMxXHUwZDQxXHUwZDJhXHUwZDQ3XHUwZDMwXHUwZDRkfChcXGJ8X3xcXCopKHNveWlzaW18c295YWQoaXxcdTAxMzF8aW5penxcdTAxMzFuXHUwMTMxeik/KShcXGJ8X3xcXCopfFxcYlx1YzEzMSg/OlteXHViYTg1XXxcXGIpfG5hbWEgYmVsYWthbmciLAoiaSIpLGNKPVJlZ0V4cCgiY291bnRyeXxjb3VudHJpZXN8cGFcdTAwZWRzfHBhaXN8KFxcYnxfKWxhbmQoXFxifF8pKD8hLioobWFyay4qKSl8KF58W14oXHU1MTY1fFx1NTFmYSldKVx1NTZmZHxcdTU2ZmRcdTViYjZ8XHVhZDZkXHVhYzAwfFx1YjA5OFx1Yjc3Y3woXFxifF8pKFx1MDBmY2xrZXx1bGNlfHVsa2UpKFxcYnxfKXxcdTA2YTlcdTA2MzRcdTA2NDhcdTA2MzF8bmVnYXJhIiwiaSIpLGRKPVJlZ0V4cCgiKF58W14uXSl6aXB8cG9zdGFsfHBvc3QuKmNvZGV8cGNvZGV8cGluLj9jb2RlfHBvc3RsZWl0emFobHxcXGJjcFxcYnxcXGJjZHBcXGJ8XFxiY2FwXFxifFx1OTBmNVx1NGZiZlx1NzU2YVx1NTNmN3xjb2RpZ298Y29kcG9zfFxcYmNlcFxcYnxcdTA0MWZcdTA0M2VcdTA0NDdcdTA0NDJcdTA0M2VcdTA0MzJcdTA0NGJcdTA0MzkuP1x1MDQxOFx1MDQzZFx1MDQzNFx1MDQzNVx1MDQzYVx1MDQ0MXxcdTA5MmFcdTA5M2ZcdTA5MjguP1x1MDkxNVx1MDk0Ylx1MDkyMXxcdTBkMmFcdTBkM2ZcdTBkMjhcdTBkNGRcdTIwMGRcdTBkMTVcdTBkNGJcdTBkMjFcdTBkNGR8XHU5MGFlXHU2NTNmXHU3ZjE2XHU3ODAxfFx1OTBhZVx1N2YxNnxcdTkwZjVcdTkwNWVcdTUzNDBcdTg2NWZ8KFxcYnxfKXBvc3RhIGtvZHUoXFxifF8pfFx1YzZiMFx1ZDNiOC4/XHViYzg4XHVkNjM4fGtvZGUuP3BvcyIsCiJpIiksZUo9e30sS0k9KGVKW0ZELkJiXT17bWU6ITEsbmE6TUR9LGVKW0ZELmVlXT17bWU6ITAsYXV0b2NvbXBsZXRlOlsidGVsIiwidGVsLW5hdGlvbmFsIiwidGVsLWxvY2FsIl0sbmU6WkksbmE6ZnVuY3Rpb24oYSl7cmV0dXJuIEdEKGEsITApfX0sZUpbRkQuS2hdPXttZTohMCxhdXRvY29tcGxldGU6WyJuYW1lIiwiY2MtbmFtZSJdLG5lOiRJLG5hOk5EfSxlSltGRC5YZF09e21lOiEwLGF1dG9jb21wbGV0ZTpbImdpdmVuLW5hbWUiLCJjYy1naXZlbi1uYW1lIl0sbmU6YUosbmE6TkR9LGVKW0ZELmNlXT17bWU6ITAsYXV0b2NvbXBsZXRlOlsiZmFtaWx5LW5hbWUiLCJjYy1mYW1pbHktbmFtZSJdLG5lOmJKLG5hOk5EfSxlSltGRC54Zl09e21lOiEwLGF1dG9jb21wbGV0ZTpbImNvdW50cnkiLCJjb3VudHJ5LW5hbWUiXSxuZTpjSixuYTpORH0sZUpbRkQucWddPXttZTohMCxhdXRvY29tcGxldGU6WyJwb3N0YWwtY29kZSJdLG5lOmRKLG5hOklEfSxlSik7ZnVuY3Rpb24gZkooYSl7dmFyIGI7TCh0aGlzLCJkZXRlY3RfdXNlcl9wcm92aWRlZF9kYXRhIiwiYXV0byIpO3ZhciBjPVRkKGEpfHx7fSxkPUpJKHtpbmNsdWRlU2VsZWN0b3I6ISFjLmluY2x1ZGVTZWxlY3RvcixpbmNsdWRlVmlzaWJpbGl0eTohIWMuaW5jbHVkZVZpc2liaWxpdHksZXhjbHVkZUVsZW1lbnRTZWxlY3RvcnM6Yy5leGNsdWRlRWxlbWVudFNlbGVjdG9ycyxmaWVsZEZpbHRlcnM6Yy5maWVsZEZpbHRlcnMsc2VsZWN0TXVsdGlwbGVFbGVtZW50czohIWMuc2VsZWN0TXVsdGlwbGVFbGVtZW50c30pO2I9bmV3IGtiO3ZhciBlPW5ldyBHZDtiLnNldCgiZWxlbWVudHMiLGUpO2Zvcih2YXIgZj1kLmVsZW1lbnRzLGc9MDtnPGYubGVuZ3RoO2crKyllLnB1c2goZ0ooZltnXSkpO2QuZ2khPT12b2lkIDAmJmIuc2V0KCJwcmVmZXJyZWRFbWFpbEVsZW1lbnQiLApnSihkLmdpKSk7Yi5zZXQoInN0YXR1cyIsZC5zdGF0dXMpO2lmKGMucmVhZEZyb21EYXRhTGF5ZXIpe2hKKGUsYyk7dmFyIGg9UEQoKSxsPWguc3Q7Yi5zZXQoImRhdGFMYXllclNlYXJjaFRpbWUiLGgudnQpO2Iuc2V0KCJkYXRhTGF5ZXJTZWFyY2hDb3VudCIsbCl9cmV0dXJuIGJ9CnZhciBpSj1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSBGRC5CYjpyZXR1cm4iZW1haWwiO2Nhc2UgRkQuZWU6cmV0dXJuInBob25lX251bWJlciI7Y2FzZSBGRC5YZDpyZXR1cm4iZmlyc3RfbmFtZSI7Y2FzZSBGRC5jZTpyZXR1cm4ibGFzdF9uYW1lIjtjYXNlIEZELnRqOnJldHVybiJzdHJlZXQiO2Nhc2UgRkQubGk6cmV0dXJuImNpdHkiO2Nhc2UgRkQuamo6cmV0dXJuInJlZ2lvbiI7Y2FzZSBGRC5xZzpyZXR1cm4icG9zdGFsX2NvZGUiO2Nhc2UgRkQueGY6cmV0dXJuImNvdW50cnkifX0sako9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGtiLGM9aUooYS5EYSk7YyE9PXZvaWQgMCYmYi5zZXQoInR5cGUiLGMpO2Iuc2V0KCJ1c2VyRGF0YSIsYS5DYSk7Yi5zZXQoInRhZ05hbWUiLCJETFlSIik7cmV0dXJuIGJ9LGhKPWZ1bmN0aW9uKGEsYil7dmFyIGM9UUQoKTtpZihNKDU2OCkpZm9yKHZhciBkPW5ldyBTZXQoYS5oYygpLm1hcChmdW5jdGlvbihyKXtyZXR1cm4gci5nZXQoInR5cGUiKX0pKSwKZT1tKGMpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1tKGYudmFsdWUpLGg9Zy5uZXh0KCkudmFsdWUsbD1nLm5leHQoKS52YWx1ZSxuPWgscD1sO2lmKGIuc2VsZWN0TXVsdGlwbGVFbGVtZW50cylhLnB1c2goakoocCkpO2Vsc2V7dmFyIHE9aUoobik7cSYmIWQuaGFzKHEpJiZhLnB1c2goakoocCkpfX1lbHNlIGMuaGFzKEZELkJiKSYmKGIuc2VsZWN0TXVsdGlwbGVFbGVtZW50c3x8YS5sZW5ndGgoKT09PTApJiZhLnB1c2goakooYy5nZXQoRkQuQmIpKSl9LGdKPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBrYjtiLnNldCgidXNlckRhdGEiLGEuQ2EpO2Iuc2V0KCJ0YWdOYW1lIixhLnRhZ05hbWUpO2EucXVlcnlTZWxlY3RvciE9PXZvaWQgMCYmYi5zZXQoInF1ZXJ5U2VsZWN0b3IiLGEucXVlcnlTZWxlY3Rvcik7YS5pc1Zpc2libGUhPT12b2lkIDAmJmIuc2V0KCJpc1Zpc2libGUiLGEuaXNWaXNpYmxlKTtpZihNKDU2OCkpe3ZhciBjPWlKKGEudHlwZSk7YyE9PQp2b2lkIDAmJmIuc2V0KCJ0eXBlIixjKX1lbHNlIHN3aXRjaChhLnR5cGUpe2Nhc2UgRkQuQmI6Yi5zZXQoInR5cGUiLCJlbWFpbCIpfXJldHVybiBifTtmSi5QPSJpbnRlcm5hbC5kZXRlY3RVc2VyUHJvdmlkZWREYXRhIjsKdmFyIGtKPWZ1bmN0aW9uKGEpe3ZhciBiPWhkKGEsWyJidXR0b24iLCJpbnB1dCJdLDUwKTtpZighYilyZXR1cm4gbnVsbDt2YXIgYz1TdHJpbmcoYi50YWdOYW1lKS50b0xvd2VyQ2FzZSgpO2lmKGM9PT0iYnV0dG9uIilyZXR1cm4gYjtpZihjPT09ImlucHV0Iil7dmFyIGQ9ZWQoYiwidHlwZSIpO2lmKGQ9PT0iYnV0dG9uInx8ZD09PSJzdWJtaXQifHxkPT09ImltYWdlInx8ZD09PSJmaWxlInx8ZD09PSJyZXNldCIpcmV0dXJuIGJ9cmV0dXJuIG51bGx9LGxKPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jLnRhcmdldDtpZihkKXt2YXIgZT0kRihhLCJpbmRpdmlkdWFsRWxlbWVudElkcyIsW10pO2lmKGUubGVuZ3RoPjApe3ZhciBmPWVHKGQsYixlKTt1RShmKX12YXIgZz0hMSxoPSRGKGEsImNvbW1vbkJ1dHRvbklkcyIsW10pO2lmKGgubGVuZ3RoPjApe3ZhciBsPWtKKGQpO2lmKGwpe3ZhciBuPWVHKGwsYixoKTt1RShuKTtnPSEwfX12YXIgcD0kRihhLCJzZWxlY3RvclRvVHJpZ2dlcklkcyIsCnt9KSxxO2ZvcihxIGluIHApaWYocC5oYXNPd25Qcm9wZXJ0eShxKSl7dmFyIHI9Zz9wW3FdLmZpbHRlcihmdW5jdGlvbih2KXtyZXR1cm4gaC5pbmRleE9mKHYpPT09LTF9KTpwW3FdO2lmKHIubGVuZ3RoIT09MCl7dmFyIHQ9cEkoZCxxKTtpZih0KXt2YXIgdT1lRyh0LGIscik7dUUodSl9fX19fTsKZnVuY3Rpb24gbUooYSxiKXtpZighZmgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9iamVjdHx1bmRlZmluZWQiLCJhbnkiXSxhcmd1bWVudHMpO3ZhciBjPWE/VGQoYSk6e30sZD1KYihjLm1hdGNoQ29tbW9uQnV0dG9ucyksZT0hIWMuY3NzU2VsZWN0b3IsZj1aRihiKTtMKHRoaXMsImRldGVjdF9jbGlja19ldmVudHMiLGMubWF0Y2hDb21tb25CdXR0b25zLGMuY3NzU2VsZWN0b3IpO3ZhciBnPWMudXNlVjJFdmVudE5hbWU/Imd0bS5jbGljay12MiI6Imd0bS5jbGljayIsaD1jLnVzZVYyRXZlbnROYW1lPyJlY2wiOiJjbCIsbD1mdW5jdGlvbihwKXtwLnB1c2goZik7cmV0dXJuIHB9O2lmKGV8fGQpe2lmKGQmJmRHKGgsImNvbW1vbkJ1dHRvbklkcyIsbCxbXSksZSl7dmFyIG49TGIoU3RyaW5nKGMuY3NzU2VsZWN0b3IpKTtkRyhoLCJzZWxlY3RvclRvVHJpZ2dlcklkcyIsCmZ1bmN0aW9uKHApe3AuaGFzT3duUHJvcGVydHkobil8fChwW25dPVtdKTtsKHBbbl0pO3JldHVybiBwfSx7fSl9fWVsc2UgZEcoaCwiaW5kaXZpZHVhbEVsZW1lbnRJZHMiLGwsW10pO2JHKGgsZnVuY3Rpb24oKXskYyhCLCJjbGljayIsZnVuY3Rpb24ocCl7bEooaCxnLHApfSwhMCl9KTtyZXR1cm4gZn1tSi5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkNsaWNrIjsKdmFyIG5KPWZ1bmN0aW9uKCl7dGhpcy5IPVtdO3RoaXMuTj0hIUEuTXV0YXRpb25PYnNlcnZlcn07bkoucHJvdG90eXBlLks9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcztpZih0aGlzLkgubGVuZ3RoPT09MCl7dmFyIGM9ZnVuY3Rpb24oKXt2YXIgZD1CLmJvZHk7aWYoZClpZihiLk4pKG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBmPTA7ZjxiLkgubGVuZ3RoO2YrKyliZChiLkhbZl0pfSkpLm9ic2VydmUoZCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KTtlbHNle3ZhciBlPSExOyRjKGQsIkRPTU5vZGVJbnNlcnRlZCIsZnVuY3Rpb24oKXtlfHwoZT0hMCxiZChmdW5jdGlvbigpe2U9ITE7Zm9yKHZhciBmPTA7ZjxiLkgubGVuZ3RoO2YrKyliZChiLkhbZl0pfSkpfSl9fTtCLmJvZHk/YygpOmJkKGMpfXRoaXMuSC5wdXNoKGEpfTtuSi5wcm90b3R5cGUuUj1mdW5jdGlvbihhKXtpZih0aGlzLkgpZm9yKHZhciBiPTA7Yjx0aGlzLkgubGVuZ3RoO2IrKyl0aGlzLkhbYl09PT0KYSYmdGhpcy5ILnNwbGljZShiLDEpfTt2YXIgb0o9bmV3IG5KOwpmdW5jdGlvbiB0SihhLGIpe3JldHVybiBwfXRKLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uRWxlbWVudFZpc2liaWxpdHkiO2Z1bmN0aW9uIHVKKCl7fXVKLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uRXJyb3IiOwp2YXIgd0o9ZnVuY3Rpb24oYSxiKXtHYihhLGZ1bmN0aW9uKGMsZCl7dmFyIGU9YltjXTtlJiZHYihkLGZ1bmN0aW9uKGYsZyl7dkooZyxlKX0pfSl9LHpKPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPSIiK2I7aWYoY1toXSljW2hdLnB1c2goYSk7ZWxzZXt2YXIgbD1bYV07Y1toXT1sO3ZhciBuPWRbaF07bnx8KG49e30sZFtoXT1uKTtlLnB1c2goZnVuY3Rpb24ocCl7dmFyIHE9cC50YXJnZXQ7aWYocSl7dmFyIHI9aUcocSk7aWYocil7dmFyIHQ9eEoociwiZ3RtRm9ybUludGVyYWN0SWQiLGYpLHU9eEoocSwiZ3RtRm9ybUludGVyYWN0RmllbGRJZCIsZyk7aWYodCE9PW51bGwmJnUhPT1udWxsKXt2YXIgdj1uW3RdO3Y/KHYuUmImJihBLmNsZWFyVGltZW91dCh2LlJiKSx2LmRmLmdldEF0dHJpYnV0ZSgiZGF0YS1ndG0tZm9ybS1pbnRlcmFjdC1maWVsZC1pZCIpIT09dSYmdkoodixsKSksdi5kZj1xLHlKKHYsbCxiKSk6KG5bdF09e2Zvcm06cixkZjpxLHNlcXVlbmNlTnVtYmVyOjAsClJiOm51bGx9LHlKKG5bdF0sbCxiKSl9fX19KX19LHZKPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5mb3JtLGQ9YS5kZixlPWVHKGMsImd0bS5mb3JtSW50ZXJhY3QiLGIpLGY9Yy5hY3Rpb247ZiYmZi50YWdOYW1lJiYoZj1jLmNsb25lTm9kZSghMSkuYWN0aW9uKTtlWyJndG0uZWxlbWVudFVybCJdPWY7ZVsiZ3RtLmludGVyYWN0ZWRGb3JtTmFtZSJdPWMuZ2V0QXR0cmlidXRlKCJuYW1lIikhPW51bGw/Yy5nZXRBdHRyaWJ1dGUoIm5hbWUiKTp2b2lkIDA7ZVsiZ3RtLmludGVyYWN0ZWRGb3JtTGVuZ3RoIl09Yy5sZW5ndGg7ZVsiZ3RtLmludGVyYWN0ZWRGb3JtRmllbGQiXT1kO2VbImd0bS5pbnRlcmFjdGVkRm9ybUZpZWxkSWQiXT1kLmlkO2VbImd0bS5pbnRlcmFjdGVkRm9ybUZpZWxkTmFtZSJdPWQuZ2V0QXR0cmlidXRlKCJuYW1lIikhPW51bGw/ZC5nZXRBdHRyaWJ1dGUoIm5hbWUiKTp2b2lkIDA7ZVsiZ3RtLmludGVyYWN0ZWRGb3JtRmllbGRQb3NpdGlvbiJdPWhHKGMsZCwiZ3RtRm9ybUludGVyYWN0RmllbGRJZCIpOwplWyJndG0uaW50ZXJhY3RlZEZvcm1GaWVsZFR5cGUiXT1kLmdldEF0dHJpYnV0ZSgidHlwZSIpIT1udWxsP2QuZ2V0QXR0cmlidXRlKCJ0eXBlIik6dm9pZCAwO2VbImd0bS5pbnRlcmFjdFNlcXVlbmNlTnVtYmVyIl09YS5zZXF1ZW5jZU51bWJlcjt1RShlKTthLnNlcXVlbmNlTnVtYmVyKys7YS5SYj1udWxsfSx5Sj1mdW5jdGlvbihhLGIsYyl7Yz9hLlJiPUEuc2V0VGltZW91dChmdW5jdGlvbigpe3ZKKGEsYil9LGMpOnZKKGEsYil9LHhKPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDt0cnl7aWYoZD1hLmRhdGFzZXRbYl0pcmV0dXJuIGQ7ZD1TdHJpbmcoYygpKTthLmRhdGFzZXRbYl09ZH1jYXRjaChlKXtkPW51bGx9cmV0dXJuIGR9OwpmdW5jdGlvbiBBSihhLGIpe3ZhciBjPXRoaXM7aWYoIWZoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJPYmplY3R8dW5kZWZpbmVkIiwiYW55Il0sYXJndW1lbnRzKTtURihbZnVuY3Rpb24oKXtMKGMsImRldGVjdF9mb3JtX2ludGVyYWN0aW9uX2V2ZW50cyIpfV0pO3ZhciBkPVpGKGIpLGU9YSYmTnVtYmVyKGEuZ2V0KCJpbnRlcnZhbCIpKTtlPjAmJmlzRmluaXRlKGUpfHwoZT0wKTtpZigkRigiZmlsIiwiaW5pdCIsITEpKXt2YXIgZj0kRigiZmlsIiwicmVnIik7aWYoZilmKGQsZSk7ZWxzZSB0aHJvdyBFcnJvcigiRmFpbGVkIHRvIHJlZ2lzdGVyIHRyaWdnZXI6ICIrZCk7fWVsc2V7dmFyIGc9e30saD1bXSxsPXt9LG49MCxwPWZ1bmN0aW9uKCl7cmV0dXJuIG4rK30scT0wLHI9ZnVuY3Rpb24oKXtyZXR1cm4gcSsrfTskYyhCLCJjaGFuZ2UiLApmdW5jdGlvbih0KXtmb3IodmFyIHU9MDt1PGgubGVuZ3RoO3UrKyloW3VdKHQpfSk7JGMoQSwicGFnZWhpZGUiLGZ1bmN0aW9uKCl7d0oobCxnKX0pO3pKKGQsZSxnLGwsaCxwLHIpO2FHKCJmaWwiLCJyZWciLGZ1bmN0aW9uKHQsdSl7ekoodCx1LGcsbCxoLHAscil9KTthRygiZmlsIiwiaW5pdCIsITApfXJldHVybiBkfUFKLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uRm9ybUludGVyYWN0aW9uIjsKdmFyIEJKPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9JEYoImZzbCIsYz8ibnYubXd0IjoibXd0IiwwKSxnO2c9Yz8kRigiZnNsIiwibnYuaWRzIixbXSk6JEYoImZzbCIsImlkcyIsW10pO2lmKCFnLmxlbmd0aClyZXR1cm4hMDt2YXIgaD1lRyhhLCJndG0uZm9ybVN1Ym1pdCIsZyksbD1hLmFjdGlvbjtsJiZsLnRhZ05hbWUmJihsPWEuY2xvbmVOb2RlKCExKS5hY3Rpb24pO1AoMTIxKTtpZihsPT09Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS90ci8iKXJldHVybiBQKDEyMiksITA7aFsiZ3RtLmVsZW1lbnRVcmwiXT1sO2hbImd0bS5mb3JtQ2FuY2VsZWQiXT1jO2EuZ2V0QXR0cmlidXRlKCJuYW1lIikhPW51bGwmJihoWyJndG0uaW50ZXJhY3RlZEZvcm1OYW1lIl09YS5nZXRBdHRyaWJ1dGUoIm5hbWUiKSk7ZSYmKGhbImd0bS5mb3JtU3VibWl0RWxlbWVudCJdPWUsaFsiZ3RtLmZvcm1TdWJtaXRFbGVtZW50VGV4dCJdPWUudmFsdWUpO2lmKGQmJmYpe2lmKCFzRShoLGpFKGIsCmYpLGYpKXJldHVybiExfWVsc2UgRnkoMSwiZ3RtLmZvcm1TdWJtaXQiKSxzRShoLGZ1bmN0aW9uKCl7fSxmfHwyRTMpO3JldHVybiEwfSxDSj1mdW5jdGlvbigpe3ZhciBhPVtdLGI9ZnVuY3Rpb24oYyl7cmV0dXJuIENiKGEsZnVuY3Rpb24oZCl7cmV0dXJuIGQuZm9ybT09PWN9KX07cmV0dXJue3N0b3JlOmZ1bmN0aW9uKGMsZCl7dmFyIGU9YihjKTtlP2UuYnV0dG9uPWQ6YS5wdXNoKHtmb3JtOmMsYnV0dG9uOmR9KX0sZ2V0OmZ1bmN0aW9uKGMpe3ZhciBkPWIoYyk7aWYoZClyZXR1cm4gZC5idXR0b259fX0sREo9ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7cmV0dXJuIGImJmIhPT0iX3NlbGYiJiZiIT09Il9wYXJlbnQiJiZiIT09Il90b3AiPyExOiEwfSxFSj1mdW5jdGlvbigpe3ZhciBhPUNKKCksYj1IVE1MRm9ybUVsZW1lbnQucHJvdG90eXBlLnN1Ym1pdDskYyhCLCJjbGljayIsZnVuY3Rpb24oYyl7dmFyIGQ9Yy50YXJnZXQ7aWYoZCl7dmFyIGU9aGQoZCxbImJ1dHRvbiIsCiJpbnB1dCJdLDEwMCk7aWYoZSYmKGUudHlwZT09PSJzdWJtaXQifHxlLnR5cGU9PT0iaW1hZ2UiKSYmZS5uYW1lJiZlZChlLCJ2YWx1ZSIpKXt2YXIgZj1pRyhlKTtmJiZhLnN0b3JlKGYsZSl9fX0sITEpOyRjKEIsInN1Ym1pdCIsZnVuY3Rpb24oYyl7dmFyIGQ9Yy50YXJnZXQ7aWYoIWQpcmV0dXJuIGMucmV0dXJuVmFsdWU7dmFyIGU9Yy5kZWZhdWx0UHJldmVudGVkfHxjLnJldHVyblZhbHVlPT09ITEsZj1ESihkKSYmIWUsZz1hLmdldChkKSxoPSEwO2lmKEJKKGQsZnVuY3Rpb24oKXtpZihoKXt2YXIgbD1udWxsLG49e307ZyYmKGw9Qi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGwudHlwZT0iaGlkZGVuIixsLm5hbWU9Zy5uYW1lLGwudmFsdWU9Zy52YWx1ZSxkLmFwcGVuZENoaWxkKGwpLGcuaGFzQXR0cmlidXRlKCJmb3JtYWN0aW9uIikmJihuLmFjdGlvbj1kLmdldEF0dHJpYnV0ZSgiYWN0aW9uIikseGMoZCxnLmdldEF0dHJpYnV0ZSgiZm9ybWFjdGlvbiIpKSksZy5oYXNBdHRyaWJ1dGUoImZvcm1lbmN0eXBlIikmJgoobi5lbmN0eXBlPWQuZ2V0QXR0cmlidXRlKCJlbmN0eXBlIiksZC5zZXRBdHRyaWJ1dGUoImVuY3R5cGUiLGcuZ2V0QXR0cmlidXRlKCJmb3JtZW5jdHlwZSIpKSksZy5oYXNBdHRyaWJ1dGUoImZvcm1tZXRob2QiKSYmKG4ubWV0aG9kPWQuZ2V0QXR0cmlidXRlKCJtZXRob2QiKSxkLnNldEF0dHJpYnV0ZSgibWV0aG9kIixnLmdldEF0dHJpYnV0ZSgiZm9ybW1ldGhvZCIpKSksZy5oYXNBdHRyaWJ1dGUoImZvcm12YWxpZGF0ZSIpJiYobi52YWxpZGF0ZT1kLmdldEF0dHJpYnV0ZSgidmFsaWRhdGUiKSxkLnNldEF0dHJpYnV0ZSgidmFsaWRhdGUiLGcuZ2V0QXR0cmlidXRlKCJmb3JtdmFsaWRhdGUiKSkpLGcuaGFzQXR0cmlidXRlKCJmb3JtdGFyZ2V0IikmJihuLnRhcmdldD1kLmdldEF0dHJpYnV0ZSgidGFyZ2V0IiksZC5zZXRBdHRyaWJ1dGUoInRhcmdldCIsZy5nZXRBdHRyaWJ1dGUoImZvcm10YXJnZXQiKSkpKTtiLmNhbGwoZCk7bCYmKGQucmVtb3ZlQ2hpbGQobCksbi5oYXNPd25Qcm9wZXJ0eSgiYWN0aW9uIikmJgp4YyhkLG4uYWN0aW9uKSxuLmhhc093blByb3BlcnR5KCJlbmN0eXBlIikmJmQuc2V0QXR0cmlidXRlKCJlbmN0eXBlIixuLmVuY3R5cGUpLG4uaGFzT3duUHJvcGVydHkoIm1ldGhvZCIpJiZkLnNldEF0dHJpYnV0ZSgibWV0aG9kIixuLm1ldGhvZCksbi5oYXNPd25Qcm9wZXJ0eSgidmFsaWRhdGUiKSYmZC5zZXRBdHRyaWJ1dGUoInZhbGlkYXRlIixuLnZhbGlkYXRlKSxuLmhhc093blByb3BlcnR5KCJ0YXJnZXQiKSYmZC5zZXRBdHRyaWJ1dGUoInRhcmdldCIsbi50YXJnZXQpKX19LGUsZixnKSloPSExO2Vsc2UgcmV0dXJuIGV8fChjLnByZXZlbnREZWZhdWx0JiZjLnByZXZlbnREZWZhdWx0KCksYy5yZXR1cm5WYWx1ZT0hMSksITE7cmV0dXJuIGMucmV0dXJuVmFsdWV9LCExKTtIVE1MRm9ybUVsZW1lbnQucHJvdG90eXBlLnN1Ym1pdD1mdW5jdGlvbigpe3ZhciBjPXRoaXMsZD0hMDtCSihjLGZ1bmN0aW9uKCl7ZCYmYi5jYWxsKGMpfSwhMSxESihjKSkmJihiLmNhbGwoYyksZD0KITEpfX07CmZ1bmN0aW9uIEZKKGEsYil7dmFyIGM9dGhpcztpZighZmgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9iamVjdHx1bmRlZmluZWQiLCJhbnkiXSxhcmd1bWVudHMpO3ZhciBkPWEmJmEuZ2V0KCJ3YWl0Rm9yVGFncyIpO1RGKFtmdW5jdGlvbigpe0woYywiZGV0ZWN0X2Zvcm1fc3VibWl0X2V2ZW50cyIse3dhaXRGb3JUYWdzOiEhZH0pfV0pO3ZhciBlPWEmJmEuZ2V0KCJjaGVja1ZhbGlkYXRpb24iKSxmPVpGKGIpO2lmKGQpe3ZhciBnPU51bWJlcihhLmdldCgid2FpdEZvclRhZ3NUaW1lb3V0IikpO2c+MCYmaXNGaW5pdGUoZyl8fChnPTJFMyk7dmFyIGg9ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgubWF4KGcsbil9O2RHKCJmc2wiLCJtd3QiLGgsMCk7ZXx8ZEcoImZzbCIsIm52Lm13dCIsaCwwKX12YXIgbD1mdW5jdGlvbihuKXtuLnB1c2goZik7CnJldHVybiBufTtkRygiZnNsIiwiaWRzIixsLFtdKTtlfHxkRygiZnNsIiwibnYuaWRzIixsLFtdKTskRigiZnNsIiwiaW5pdCIsITEpfHwoRUooKSxhRygiZnNsIiwiaW5pdCIsITApKTtyZXR1cm4gZn1GSi5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkZvcm1TdWJtaXQiOwpmdW5jdGlvbiBLSigpe3ZhciBhPXRoaXM7fUtKLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uR2FTZW5kIjsKdmFyIE1KPWZ1bmN0aW9uKGEsYixjLGQpe2M9Yz09PXZvaWQgMD97fTpjO2Q9ZD09PXZvaWQgMD9bXTpkO3ZhciBlPSIiK2I7aWYoY1tlXSljW2VdLnB1c2goYSk7ZWxzZXt2YXIgZj1bYV07Y1tlXT1mO3ZhciBnPUxKKCJndG0uaGlzdG9yeUNoYW5nZS12MiIpLGg9LTE7ZC5wdXNoKGZ1bmN0aW9uKGwpe2g+PTAmJkEuY2xlYXJUaW1lb3V0KGgpO2I/aD1BLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtnKGwsZik7aD0tMX0sYik6ZyhsLGYpfSl9fSxMSj1mdW5jdGlvbihhKXt2YXIgYj1BLmxvY2F0aW9uLmhyZWYsYz17c291cmNlOm51bGwsc3RhdGU6QS5oaXN0b3J5LnN0YXRlfHxudWxsLHVybDpPaihSaihiKSksa2I6TGooUmooYiksImZyYWdtZW50Iil9O3JldHVybiBmdW5jdGlvbihkLGUpe3ZhciBmPWMsZz17fTtnW2Yuc291cmNlXT0hMDtnW2Quc291cmNlXT0hMDtpZighZy5wb3BzdGF0ZXx8IWcuaGFzaGNoYW5nZXx8Zi5rYiE9PWQua2Ipe3ZhciBoPXtldmVudDphLCJndG0uaGlzdG9yeUNoYW5nZVNvdXJjZSI6ZC5zb3VyY2UsCiJndG0ub2xkVXJsRnJhZ21lbnQiOmMua2IsImd0bS5uZXdVcmxGcmFnbWVudCI6ZC5rYiwiZ3RtLm9sZEhpc3RvcnlTdGF0ZSI6Yy5zdGF0ZSwiZ3RtLm5ld0hpc3RvcnlTdGF0ZSI6ZC5zdGF0ZSwiZ3RtLm9sZFVybCI6Yy51cmwsImd0bS5uZXdVcmwiOmQudXJsfTtlJiYoaFsiZ3RtLnRyaWdnZXJzIl09ZS5qb2luKCIsIikpO2M9ZDt1RShoKX19fSxOSj1mdW5jdGlvbihhLGIpe3ZhciBjPUEuaGlzdG9yeSxkPWNbYV07aWYoeWIoZCkpdHJ5e2NbYV09ZnVuY3Rpb24oZSxmLGcpe2QuYXBwbHkoYyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSk7dmFyIGg9QS5sb2NhdGlvbi5ocmVmO2Ioe3NvdXJjZTphLHN0YXRlOmUsdXJsOk9qKFJqKGgpKSxrYjpMaihSaihoKSwiZnJhZ21lbnQiKX0pfX1jYXRjaChlKXt9fSxQSj1mdW5jdGlvbihhKXtBLmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIixmdW5jdGlvbihiKXt2YXIgYz1PSihiKTthKHtzb3VyY2U6InBvcHN0YXRlIixzdGF0ZTpiLnN0YXRlLAp1cmw6T2ooUmooYykpLGtiOkxqKFJqKGMpLCJmcmFnbWVudCIpfSl9KX0sUUo9ZnVuY3Rpb24oYSl7QS5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixmdW5jdGlvbihiKXt2YXIgYz1PSihiKTthKHtzb3VyY2U6Imhhc2hjaGFuZ2UiLHN0YXRlOm51bGwsdXJsOk9qKFJqKGMpKSxrYjpMaihSaihjKSwiZnJhZ21lbnQiKX0pfSl9LE9KPWZ1bmN0aW9uKGEpe3ZhciBiLGM7cmV0dXJuKChiPWEudGFyZ2V0KT09bnVsbD92b2lkIDA6KGM9Yi5sb2NhdGlvbik9PW51bGw/dm9pZCAwOmMuaHJlZil8fEEubG9jYXRpb24uaHJlZn07CmZ1bmN0aW9uIFJKKGEsYil7dmFyIGM9dGhpcztpZighZmgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9iamVjdHx1bmRlZmluZWQiLCJhbnkiXSxhcmd1bWVudHMpO1RGKFtmdW5jdGlvbigpe0woYywiZGV0ZWN0X2hpc3RvcnlfY2hhbmdlX2V2ZW50cyIpfV0pO3ZhciBkPWEmJmEuZ2V0KCJ1c2VWMkV2ZW50TmFtZSIpPyJlaGwiOiJobCIsZT1OdW1iZXIoYSYmYS5nZXQoImludGVydmFsIikpO2U+MCYmaXNGaW5pdGUoZSl8fChlPTApO3ZhciBmO2lmKCEkRihkLCJpbml0IiwhMSkpe3ZhciBnPXt9LGg9W10sbDtkPT09ImVobCI/KGw9ZnVuY3Rpb24ocCl7Zm9yKHZhciBxPTA7cTxoLmxlbmd0aDtxKyspaFtxXShwKX0sZj1aRihiKSxNSihmLGUsZyxoKSxhRyhkLCJyZWciLGZ1bmN0aW9uKHAscSl7TUoocCxxLGcsaCl9KSk6bD1MSigiZ3RtLmhpc3RvcnlDaGFuZ2UiKTsKUUoobCk7UEoobCk7TkooInB1c2hTdGF0ZSIsbCk7TkooInJlcGxhY2VTdGF0ZSIsbCk7YUcoZCwiaW5pdCIsITApfWVsc2UgaWYoZD09PSJlaGwiKXt2YXIgbj0kRihkLCJyZWciKTtuJiYoZj1aRihiKSxuKGYsZSkpfWQ9PT0iaGwiJiYoZj12b2lkIDApO3JldHVybiBmfVJKLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uSGlzdG9yeUNoYW5nZSI7dmFyIFNKPVsiaHR0cDovLyIsImh0dHBzOi8vIiwiamF2YXNjcmlwdDoiLCJmaWxlOi8vIl07CnZhciBUSj1mdW5jdGlvbihhLGIpe2lmKGEud2hpY2g9PT0yfHxhLmN0cmxLZXl8fGEuc2hpZnRLZXl8fGEuYWx0S2V5fHxhLm1ldGFLZXkpcmV0dXJuITE7dmFyIGM9b2QoYiwiaHJlZiIpO2lmKGMuaW5kZXhPZigiOiIpIT09LTEmJiFTSi5zb21lKGZ1bmN0aW9uKGgpe3JldHVybiBTYihjLGgpfSkpcmV0dXJuITE7dmFyIGQ9Yy5pbmRleE9mKCIjIiksZT1vZChiLCJ0YXJnZXQiKTtpZihlJiZlIT09Il9zZWxmIiYmZSE9PSJfcGFyZW50IiYmZSE9PSJfdG9wInx8ZD09PTApcmV0dXJuITE7aWYoZD4wKXt2YXIgZj1PaihSaihjKSksZz1PaihSaihBLmxvY2F0aW9uLmhyZWYpKTtyZXR1cm4gZiE9PWd9cmV0dXJuITB9LFVKPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPUxqKFJqKChiLmF0dHJpYnV0ZXMmJmIuYXR0cmlidXRlcy5mb3JtYWN0aW9uP2IuZm9ybUFjdGlvbjoiIil8fGIuYWN0aW9ufHxvZChiLCJocmVmIil8fGIuc3JjfHxiLmNvZGV8fGIuY29kZWJhc2V8fCIiKSwiaG9zdCIpLApkPTA7ZDxhLmxlbmd0aDtkKyspdHJ5e2lmKChuZXcgUmVnRXhwKGFbZF0pKS50ZXN0KGMpKXJldHVybiExfWNhdGNoKGUpe31yZXR1cm4hMH0sVko9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMpe3ZhciBkPWMudGFyZ2V0O2lmKGQmJmMud2hpY2ghPT0zJiYhKGMuSHx8Yy50aW1lU3RhbXAmJmMudGltZVN0YW1wPT09Yikpe2I9Yy50aW1lU3RhbXA7ZD1oZChkLFsiYSIsImFyZWEiXSwxMDApO2lmKCFkKXJldHVybiBjLnJldHVyblZhbHVlO3ZhciBlPWMuZGVmYXVsdFByZXZlbnRlZHx8Yy5yZXR1cm5WYWx1ZT09PSExLGY9JEYoImxjbCIsZT8ibnYubXd0IjoibXd0IiwwKSxnO2c9ZT8kRigibGNsIiwibnYuaWRzIixbXSk6JEYoImxjbCIsImlkcyIsW10pO2Zvcih2YXIgaD1bXSxsPTA7bDxnLmxlbmd0aDtsKyspe3ZhciBuPWdbbF0scD0kRigibGNsIiwiYWZmLm1hcCIse30pW25dO3AmJiFVSihwLGQpfHxoLnB1c2gobil9aWYoaC5sZW5ndGgpe3ZhciBxPVRKKGMsZCkscj1lRyhkLCJndG0ubGlua0NsaWNrIiwKaCk7clsiZ3RtLmVsZW1lbnRUZXh0Il09ZmQoZCk7clsiZ3RtLndpbGxPcGVuSW5OZXdXaW5kb3ciXT0hcTtpZihxJiYhZSYmZiYmZC5ocmVmKXt2YXIgdD0hIUNiKFN0cmluZyhvZChkLCJyZWwiKXx8IiIpLnNwbGl0KCIgIiksZnVuY3Rpb24oeSl7cmV0dXJuIHkudG9Mb3dlckNhc2UoKT09PSJub3JlZmVycmVyIn0pLHU9QVsob2QoZCwidGFyZ2V0Iil8fCJfc2VsZiIpLnN1YnN0cmluZygxKV0sdj0hMCx4PXRFKGZ1bmN0aW9uKCl7dmFyIHk7aWYoeT12JiZ1KXt2YXIgejthOmlmKHQpe3ZhciBDO3RyeXtDPW5ldyBNb3VzZUV2ZW50KGMudHlwZSx7YnViYmxlczohMH0pfWNhdGNoKEQpe2lmKCFCLmNyZWF0ZUV2ZW50KXt6PSExO2JyZWFrIGF9Qz1CLmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO0MuaW5pdEV2ZW50KGMudHlwZSwhMCwhMCl9Qy5IPSEwO2MudGFyZ2V0LmRpc3BhdGNoRXZlbnQoQyk7ej0hMH1lbHNlIHo9ITE7eT0hen15JiYodS5sb2NhdGlvbi5ocmVmPW9kKGQsCiJocmVmIikpfSxmKTtpZihpRShyLHgsZikpdj0hMTtlbHNlIHJldHVybiBjLnByZXZlbnREZWZhdWx0JiZjLnByZXZlbnREZWZhdWx0KCksYy5yZXR1cm5WYWx1ZT0hMX1lbHNlIHNFKHIsZnVuY3Rpb24oKXt9LGZ8fDJFMyk7cmV0dXJuITB9fX12YXIgYj0wOyRjKEIsImNsaWNrIixhLCExKTskYyhCLCJhdXhjbGljayIsYSwhMSl9OwpmdW5jdGlvbiBXSihhLGIpe3ZhciBjPXRoaXM7aWYoIWZoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJPYmplY3R8dW5kZWZpbmVkIiwiYW55Il0sYXJndW1lbnRzKTt2YXIgZD1UZChhKTtURihbZnVuY3Rpb24oKXtMKGMsImRldGVjdF9saW5rX2NsaWNrX2V2ZW50cyIsZCl9XSk7dmFyIGU9ZCYmISFkLndhaXRGb3JUYWdzLGY9ZCYmISFkLmNoZWNrVmFsaWRhdGlvbixnPWQ/ZC5hZmZpbGlhdGVEb21haW5zOnZvaWQgMCxoPVpGKGIpO2lmKGUpe3ZhciBsPU51bWJlcihkLndhaXRGb3JUYWdzVGltZW91dCk7bD4wJiZpc0Zpbml0ZShsKXx8KGw9MkUzKTt2YXIgbj1mdW5jdGlvbihxKXtyZXR1cm4gTWF0aC5tYXgobCxxKX07ZEcoImxjbCIsIm13dCIsbiwwKTtmfHxkRygibGNsIiwibnYubXd0IixuLDApfXZhciBwPWZ1bmN0aW9uKHEpe3EucHVzaChoKTsKcmV0dXJuIHF9O2RHKCJsY2wiLCJpZHMiLHAsW10pO2Z8fGRHKCJsY2wiLCJudi5pZHMiLHAsW10pO2cmJmRHKCJsY2wiLCJhZmYubWFwIixmdW5jdGlvbihxKXtxW2hdPWc7cmV0dXJuIHF9LHt9KTskRigibGNsIiwiaW5pdCIsITEpfHwoVkooKSxhRygibGNsIiwiaW5pdCIsITApKTtyZXR1cm4gaH1XSi5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkxpbmtDbGljayI7CnZhciBYSj1mdW5jdGlvbihhKXtyZXR1cm4gJEYoInNkbCIsYSx7fSl9LFlKPWZ1bmN0aW9uKGEsYixjKXtpZihiKXt2YXIgZD1BcnJheS5pc0FycmF5KGEpP2E6W2FdO2RHKCJzZGwiLGMsZnVuY3Rpb24oZSl7Zm9yKHZhciBmPTA7ZjxkLmxlbmd0aDtmKyspe3ZhciBnPVN0cmluZyhkW2ZdKTtlLmhhc093blByb3BlcnR5KGcpfHwoZVtnXT1bXSk7ZVtnXS5wdXNoKGIpfXJldHVybiBlfSx7fSl9fSxhSz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtaSihhLGIpOyRKKGMsITApfXJldHVybiBjfSxiSz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtoP2c9QS5zZXRUaW1lb3V0KGMsZSk6KGc9MCxaSihhLGIpLCRKKGQpKTtoPSExfWZ1bmN0aW9uIGQoKXtmJiZiKCk7Zz9oPSEwOihnPUEuc2V0VGltZW91dChjLGUpLGFHKCJzZGwiLCJwZW5kaW5nIiwhMCkpfXZhciBlPTI1MCxmPSExO0Iuc2Nyb2xsaW5nRWxlbWVudCYmQi5kb2N1bWVudEVsZW1lbnQmJihlPTUwLGY9ITApO3ZhciBnPQowLGg9ITE7cmV0dXJuIGR9LCRKPWZ1bmN0aW9uKGEsYil7JEYoInNkbCIsImluaXQiLCExKSYmIWNLKCkmJihiP2FkKEEsInNjcm9sbGVuZCIsYSk6YWQoQSwic2Nyb2xsIixhKSxhZChBLCJyZXNpemUiLGEpLGFHKCJzZGwiLCJpbml0IiwhMSkpfSxaSj1mdW5jdGlvbihhLGIpe3ZhciBjPWIoKSxkPWMuZGVwdGhYLGU9Yy5kZXB0aFksZj1kL2Euc2Nyb2xsV2lkdGgqMTAwLGc9ZS9hLnNjcm9sbEhlaWdodCoxMDA7ZEsoZCwiaG9yaXoucGl4IiwiUElYRUxTIiwiaG9yaXpvbnRhbCIpO2RLKGYsImhvcml6LnBjdCIsIlBFUkNFTlQiLCJob3Jpem9udGFsIik7ZEsoZSwidmVydC5waXgiLCJQSVhFTFMiLCJ2ZXJ0aWNhbCIpO2RLKGcsInZlcnQucGN0IiwiUEVSQ0VOVCIsInZlcnRpY2FsIik7YUcoInNkbCIsInBlbmRpbmciLCExKX0sZEs9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9WEooYiksZj17fSxnO2ZvcihnIGluIGUpaWYoZj17cWY6Zi5xZn0sZi5xZj1nLGUuaGFzT3duUHJvcGVydHkoZi5xZikpe3ZhciBoPQpOdW1iZXIoZi5xZik7aWYoIShhPGgpKXt2YXIgbD17fTt1RSgobC5ldmVudD0iZ3RtLnNjcm9sbERlcHRoIixsWyJndG0uc2Nyb2xsVGhyZXNob2xkIl09aCxsWyJndG0uc2Nyb2xsVW5pdHMiXT1jLnRvTG93ZXJDYXNlKCksbFsiZ3RtLnNjcm9sbERpcmVjdGlvbiJdPWQsbFsiZ3RtLnRyaWdnZXJzIl09ZVtmLnFmXS5qb2luKCIsIiksbCkpO2RHKCJzZGwiLGIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKHApe2RlbGV0ZSBwW24ucWZdO3JldHVybiBwfX0oZikse30pfX19LGZLPWZ1bmN0aW9uKCl7dmFyIGE9ZEcoInNkbCIsInNjciIsZnVuY3Rpb24oYyl7Y3x8KGM9Qi5zY3JvbGxpbmdFbGVtZW50fHxCLmJvZHkmJkIuYm9keS5wYXJlbnROb2RlKTtyZXR1cm4gY30sbnVsbCksYj1kRygic2RsIiwiZGVwdGgiLGZ1bmN0aW9uKGMpe2N8fChjPWVLKGEpKTtyZXR1cm4gY30pO3JldHVybntzY3JvbGxpbmdFbGVtZW50OmEsdnI6Yn19LGVLPWZ1bmN0aW9uKGEpe3ZhciBiPTAsYz0KMDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1zSSgpLGU9ZC5oZWlnaHQ7Yj1NYXRoLm1heChhLnNjcm9sbExlZnQrZC53aWR0aCxiKTtjPU1hdGgubWF4KGEuc2Nyb2xsVG9wK2UsYyk7cmV0dXJue2RlcHRoWDpiLGRlcHRoWTpjfX19LGNLPWZ1bmN0aW9uKCl7cmV0dXJuISEoT2JqZWN0LmtleXMoWEooImhvcml6LnBpeCIpKS5sZW5ndGh8fE9iamVjdC5rZXlzKFhKKCJob3Jpei5wY3QiKSkubGVuZ3RofHxPYmplY3Qua2V5cyhYSigidmVydC5waXgiKSkubGVuZ3RofHxPYmplY3Qua2V5cyhYSigidmVydC5wY3QiKSkubGVuZ3RoKX07CmZ1bmN0aW9uIGdLKGEsYil7dmFyIGM9dGhpcztpZighZWgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9iamVjdCIsImFueSJdLGFyZ3VtZW50cyk7VEYoW2Z1bmN0aW9uKCl7TChjLCJkZXRlY3Rfc2Nyb2xsX2V2ZW50cyIpfV0pO3ZhciBkPWZLKCksZT1kLnNjcm9sbGluZ0VsZW1lbnQsZj1kLnZyO2lmKCFlKXJldHVybjt2YXIgZz1aRihiKSxoPVRkKGEpO3N3aXRjaChoLmhvcml6b250YWxUaHJlc2hvbGRVbml0cyl7Y2FzZSAiUElYRUxTIjpZSihoLmhvcml6b250YWxUaHJlc2hvbGRzLGcsImhvcml6LnBpeCIpO2JyZWFrO2Nhc2UgIlBFUkNFTlQiOllKKGguaG9yaXpvbnRhbFRocmVzaG9sZHMsZywiaG9yaXoucGN0Iil9c3dpdGNoKGgudmVydGljYWxUaHJlc2hvbGRVbml0cyl7Y2FzZSAiUElYRUxTIjpZSihoLnZlcnRpY2FsVGhyZXNob2xkcywKZywidmVydC5waXgiKTticmVhaztjYXNlICJQRVJDRU5UIjpZSihoLnZlcnRpY2FsVGhyZXNob2xkcyxnLCJ2ZXJ0LnBjdCIpfSRGKCJzZGwiLCJpbml0IiwhMSk/JEYoInNkbCIsInBlbmRpbmciLCExKXx8YmQoZnVuY3Rpb24oKXtaSihlLGYpfSk6KGFHKCJzZGwiLCJpbml0IiwhMCksYUcoInNkbCIsInBlbmRpbmciLCEwKSxiZChmdW5jdGlvbigpe1pKKGUsZik7aWYoY0soKSl7dmFyIGw9YksoZSxmKTsib25zY3JvbGxlbmQiaW4gQT8obD1hSyhlLGYpLCRjKEEsInNjcm9sbGVuZCIsbCkpOiRjKEEsInNjcm9sbCIsbCk7JGMoQSwicmVzaXplIixsKX1lbHNlIGFHKCJzZGwiLCJpbml0IiwhMSl9KSk7cmV0dXJuIGd9Z0suUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25TY3JvbGwiO2Z1bmN0aW9uIGhLKGEpe3JldHVybiBmdW5jdGlvbigpe2lmKGEubGltaXQmJmEuZ2s+PWEubGltaXQpYS5haSYmQS5jbGVhckludGVydmFsKGEuYWkpO2Vsc2V7YS5naysrO3ZhciBiPU5iKCk7dUUoe2V2ZW50OmEuZXZlbnROYW1lLCJndG0udGltZXJJZCI6YS5haSwiZ3RtLnRpbWVyRXZlbnROdW1iZXIiOmEuZ2ssImd0bS50aW1lckludGVydmFsIjphLmludGVydmFsLCJndG0udGltZXJMaW1pdCI6YS5saW1pdCwiZ3RtLnRpbWVyU3RhcnRUaW1lIjphLk1vLCJndG0udGltZXJDdXJyZW50VGltZSI6YiwiZ3RtLnRpbWVyRWxhcHNlZFRpbWUiOmItYS5NbywiZ3RtLnRyaWdnZXJzIjphLkx0fSl9fX0KZnVuY3Rpb24gaUsoYSxiKXsKcmV0dXJuIGZ9aUsuUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25UaW1lciI7CnZhciBqSz1mdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZCgpe3ZhciBnPWEoKTtmKz1lPyhOYigpLWUpKmcucGxheWJhY2tSYXRlLzFFMzowO2U9TmIoKX12YXIgZT0wLGY9MDtyZXR1cm57Y3JlYXRlRXZlbnQ6ZnVuY3Rpb24oZyxoLGwpe3ZhciBuPWEoKSxwPW4uV24scT1sP01hdGgucm91bmQobCk6aD9NYXRoLnJvdW5kKG4uV24qaCk6TWF0aC5yb3VuZChuLkdyKSxyPWghPT12b2lkIDA/TWF0aC5yb3VuZChoKjEwMCk6cDw9MD8wOk1hdGgucm91bmQocS9wKjEwMCksdD1CLmhpZGRlbj8hMTp0SShjKT49LjU7ZCgpO3ZhciB1PXZvaWQgMDtiIT09dm9pZCAwJiYodT1bYl0pO3ZhciB2PWVHKGMsImd0bS52aWRlbyIsdSk7dlsiZ3RtLnZpZGVvUHJvdmlkZXIiXT0ieW91dHViZSI7dlsiZ3RtLnZpZGVvU3RhdHVzIl09Zzt2WyJndG0udmlkZW9VcmwiXT1uLnVybDt2WyJndG0udmlkZW9UaXRsZSJdPW4udGl0bGU7dlsiZ3RtLnZpZGVvRHVyYXRpb24iXT1NYXRoLnJvdW5kKHApO3ZbImd0bS52aWRlb0N1cnJlbnRUaW1lIl09Ck1hdGgucm91bmQocSk7dlsiZ3RtLnZpZGVvRWxhcHNlZFRpbWUiXT1NYXRoLnJvdW5kKGYpO3ZbImd0bS52aWRlb1BlcmNlbnQiXT1yO3ZbImd0bS52aWRlb1Zpc2libGUiXT10O3JldHVybiB2fSxtdDpmdW5jdGlvbigpe2U9TmIoKX0sQmo6ZnVuY3Rpb24oKXtkKCl9fX07dmFyIEFjPUFhKFsiZGF0YS1ndG0teXQtaW5zcGVjdGVkLSJdKSxrSz1bInd3dy55b3V0dWJlLmNvbSIsInd3dy55b3V0dWJlLW5vY29va2llLmNvbSJdLGxLOwp2YXIgbUs9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubWFwKGZ1bmN0aW9uKGcpe3JldHVybnt0ZTpnLEpvOmcsd286dm9pZCAwfX0pO2lmKCFiLmxlbmd0aClyZXR1cm4gZDt2YXIgZT1iLm1hcChmdW5jdGlvbihnKXtyZXR1cm57dGU6ZypjLEpvOnZvaWQgMCx3bzpnfX0pO2lmKCFkLmxlbmd0aClyZXR1cm4gZTt2YXIgZj1kLmNvbmNhdChlKTtmLnNvcnQoZnVuY3Rpb24oZyxoKXtyZXR1cm4gZy50ZS1oLnRlfSk7cmV0dXJuIGZ9LG5LPWZ1bmN0aW9uKGEpe2E9YT09PXZvaWQgMD9bXTphO2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspYVtjXTwwfHxiLnB1c2goYVtjXSk7Yi5zb3J0KGZ1bmN0aW9uKGQsZSl7cmV0dXJuIGQtZX0pO3JldHVybiBifSxvSz1mdW5jdGlvbihhKXthPWE9PT12b2lkIDA/W106YTtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKWFbY10+MTAwfHxhW2NdPDB8fChiW2NdPWFbY10vMTAwKTtiLnNvcnQoZnVuY3Rpb24oZCxlKXtyZXR1cm4gZC0KZX0pO3JldHVybiBifSxwSz1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7ZnVuY3Rpb24gZSgpe3Q9aksoZnVuY3Rpb24oKXtyZXR1cm57dXJsOngsdGl0bGU6eSxXbjp2LEdyOmEuZ2V0Q3VycmVudFRpbWUoKSxwbGF5YmFja1JhdGU6en19LGIucmYsYS5nZXRJZnJhbWUoKSk7dj0wO3k9eD0iIjt6PTE7cmV0dXJuIGZ9ZnVuY3Rpb24gZihHKXtzd2l0Y2goRyl7Y2FzZSAxOnY9TWF0aC5yb3VuZChhLmdldER1cmF0aW9uKCkpO3g9YS5nZXRWaWRlb1VybCgpO2lmKGEuZ2V0VmlkZW9EYXRhKXt2YXIgTj1hLmdldFZpZGVvRGF0YSgpO3k9Tj9OLnRpdGxlOiIifXo9YS5nZXRQbGF5YmFja1JhdGUoKTtiLnlyP3VFKHQuY3JlYXRlRXZlbnQoInN0YXJ0IikpOnQuQmooKTt1PW1LKGIuZXQsYi5jdCxhLmdldER1cmF0aW9uKCkpO3JldHVybiBnKEcpO2RlZmF1bHQ6cmV0dXJuIGZ9fWZ1bmN0aW9uIGcoKXtDPWEuZ2V0Q3VycmVudFRpbWUoKTtEPU1iKCkuZ2V0VGltZSgpO3QubXQoKTtyKCk7cmV0dXJuIGh9CmZ1bmN0aW9uIGgoRyl7dmFyIE47c3dpdGNoKEcpe2Nhc2UgMDpyZXR1cm4gbihHKTtjYXNlIDI6Tj0icGF1c2UiO2Nhc2UgMzp2YXIgUz1hLmdldEN1cnJlbnRUaW1lKCktQztOPU1hdGguYWJzKChNYigpLmdldFRpbWUoKS1EKS8xRTMqei1TKT4xPyJzZWVrIjpOfHwiYnVmZmVyaW5nIjthLmdldEN1cnJlbnRUaW1lKCkmJihiLnhyP3VFKHQuY3JlYXRlRXZlbnQoTikpOnQuQmooKSk7cSgpO3JldHVybiBsO2Nhc2UgLTE6cmV0dXJuIGUoRyk7ZGVmYXVsdDpyZXR1cm4gaH19ZnVuY3Rpb24gbChHKXtzd2l0Y2goRyl7Y2FzZSAwOnJldHVybiBuKEcpO2Nhc2UgMTpyZXR1cm4gZyhHKTtjYXNlIC0xOnJldHVybiBlKEcpO2RlZmF1bHQ6cmV0dXJuIGx9fWZ1bmN0aW9uIG4oKXtmb3IoO2Q7KXt2YXIgRz1jO0EuY2xlYXJUaW1lb3V0KGQpO0coKX1iLndyJiZ1RSh0LmNyZWF0ZUV2ZW50KCJjb21wbGV0ZSIsMSkpO3JldHVybiBlKC0xKX1mdW5jdGlvbiBwKCl7fWZ1bmN0aW9uIHEoKXtkJiYKKEEuY2xlYXJUaW1lb3V0KGQpLGQ9MCxjPXApfWZ1bmN0aW9uIHIoKXtpZih1Lmxlbmd0aCYmeiE9PTApe3ZhciBHPS0xLE47ZG97Tj11WzBdO2lmKE4udGU+YS5nZXREdXJhdGlvbigpKXJldHVybjtHPShOLnRlLWEuZ2V0Q3VycmVudFRpbWUoKSkvejtpZihHPDAmJih1LnNoaWZ0KCksdS5sZW5ndGg9PT0wKSlyZXR1cm59d2hpbGUoRzwwKTtjPWZ1bmN0aW9uKCl7ZD0wO2M9cDt1Lmxlbmd0aD4wJiZ1WzBdLnRlPT09Ti50ZSYmKHUuc2hpZnQoKSx1RSh0LmNyZWF0ZUV2ZW50KCJwcm9ncmVzcyIsTi53byxOLkpvKSkpO3IoKX07ZD1BLnNldFRpbWVvdXQoYyxHKjFFMyl9fXZhciB0LHU9W10sdix4LHkseixDLEQsST1lKC0xKTtkPTA7Yz1wO3JldHVybntvblN0YXRlQ2hhbmdlOmZ1bmN0aW9uKEcpe0k9SShHKX0sb25QbGF5YmFja1JhdGVDaGFuZ2U6ZnVuY3Rpb24oRyl7Qz1hLmdldEN1cnJlbnRUaW1lKCk7RD1NYigpLmdldFRpbWUoKTt0LkJqKCk7ej1HO3EoKTtyKCl9fX0scks9CmZ1bmN0aW9uKGEpe2JkKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe2Zvcih2YXIgZD1jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKSxlPWQubGVuZ3RoLGY9MDtmPGU7ZisrKXFLKGRbZl0sYSl9dmFyIGM9QjtiKCk7b0ouSyhiKX0pfSxxSz1mdW5jdGlvbihhLGIpe2lmKCFhLmdldEF0dHJpYnV0ZSgiZGF0YS1ndG0teXQtaW5zcGVjdGVkLSIrYi5yZikmJihDYyhhLCJkYXRhLWd0bS15dC1pbnNwZWN0ZWQtIitiLnJmKSxzSyhhLGIuY28pKSl7YS5pZHx8KGEuaWQ9dEsoKSk7dmFyIGM9QS5ZVCxkPWMuZ2V0KGEuaWQpO2R8fChkPW5ldyBjLlBsYXllcihhLmlkKSk7dmFyIGU9cEsoZCxiKSxmPXt9LGc7Zm9yKGcgaW4gZSlmPXtNZzpmLk1nfSxmLk1nPWcsZS5oYXNPd25Qcm9wZXJ0eShmLk1nKSYmZC5hZGRFdmVudExpc3RlbmVyKGYuTWcsZnVuY3Rpb24oaCl7cmV0dXJuIGZ1bmN0aW9uKGwpe3JldHVybiBlW2guTWddKGwuZGF0YSl9fShmKSl9fSxzSz1mdW5jdGlvbihhLApiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZSgic3JjIik7aWYodUsoYywiZW1iZWQvIikpe2lmKGMuaW5kZXhPZigiZW5hYmxlanNhcGk9MSIpPjApcmV0dXJuITA7aWYoYil7dmFyIGQ7dmFyIGU9Yy5pbmRleE9mKCI/IikhPT0tMT8iJiI6Ij8iO2MuaW5kZXhPZigib3JpZ2luPSIpPi0xP2Q9YytlKyJlbmFibGVqc2FwaT0xIjoobEt8fChsSz1CLmxvY2F0aW9uLnByb3RvY29sKyIvLyIrQi5sb2NhdGlvbi5ob3N0bmFtZSxCLmxvY2F0aW9uLnBvcnQmJihsSys9IjoiK0IubG9jYXRpb24ucG9ydCkpLGQ9YytlKyJlbmFibGVqc2FwaT0xJm9yaWdpbj0iK2VuY29kZVVSSUNvbXBvbmVudChsSykpO3ZhciBmO2Y9amMoZCk7YS5zcmM9a2MoZikudG9TdHJpbmcoKTtyZXR1cm4hMH19cmV0dXJuITF9LHVLPWZ1bmN0aW9uKGEsYil7aWYoIWEpcmV0dXJuITE7Zm9yKHZhciBjPTA7YzxrSy5sZW5ndGg7YysrKWlmKGEuaW5kZXhPZigiLy8iK2tLW2NdKyIvIitiKT49MClyZXR1cm4hMDtyZXR1cm4hMX0sCnRLPWZ1bmN0aW9uKCl7dmFyIGE9IiIrTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjFFOSk7cmV0dXJuIEIuZ2V0RWxlbWVudEJ5SWQoYSk/dEsoKTphfTsKZnVuY3Rpb24gdksoYSxiKXt2YXIgYz10aGlzO3ZhciBkPWZ1bmN0aW9uKCl7cksocSl9O2lmKCFlaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT2JqZWN0IiwiYW55Il0sYXJndW1lbnRzKTtURihbZnVuY3Rpb24oKXtMKGMsImRldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cyIse2ZpeE1pc3NpbmdBcGk6ISFhLmdldCgiZml4TWlzc2luZ0FwaSIpfSl9XSk7dmFyIGU9WkYoYiksZj0hIWEuZ2V0KCJjYXB0dXJlU3RhcnQiKSxnPSEhYS5nZXQoImNhcHR1cmVDb21wbGV0ZSIpLGg9ISFhLmdldCgiY2FwdHVyZVBhdXNlIiksbD1vSyhUZChhLmdldCgicHJvZ3Jlc3NUaHJlc2hvbGRzUGVyY2VudCIpKSksbj1uSyhUZChhLmdldCgicHJvZ3Jlc3NUaHJlc2hvbGRzVGltZUluU2Vjb25kcyIpKSkscD0hIWEuZ2V0KCJmaXhNaXNzaW5nQXBpIik7CmlmKCEoZnx8Z3x8aHx8bC5sZW5ndGh8fG4ubGVuZ3RoKSlyZXR1cm47dmFyIHE9e3lyOmYsd3I6Zyx4cjpoLGN0OmwsZXQ6bixjbzpwLHJmOmV9LHI9QS5ZVDtpZihyKXJldHVybiByLnJlYWR5JiZyLnJlYWR5KGQpLGU7dmFyIHQ9QSx1PXQub25Zb3VUdWJlSWZyYW1lQVBJUmVhZHk7dC5vbllvdVR1YmVJZnJhbWVBUElSZWFkeT1mdW5jdGlvbigpe3UmJnUoKTtkKCl9O2JkKGZ1bmN0aW9uKCl7Zm9yKHZhciB2PUIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLHg9di5sZW5ndGgseT0wO3k8eDt5Kyspe3ZhciB6PXZbeV0uZ2V0QXR0cmlidXRlKCJzcmMiKTtpZih1Syh6LCJpZnJhbWVfYXBpIil8fHVLKHosInBsYXllcl9hcGkiKSlyZXR1cm4gZX1mb3IodmFyIEM9Qi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIiksRD1DLmxlbmd0aCxJPWFsKDUsZnVuY3Rpb24oKXtyZXR1cm4hMX0pLEc9MDtHPEQ7RysrKWlmKCFJJiZzSyhDW0ddLHEuY28pKXJldHVybiBVYygiaHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaSIpLApaayg1LCEwKSxlfSk7cmV0dXJuIGV9dksuUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25Zb3VUdWJlQWN0aXZpdHkiO2Z1bmN0aW9uIHdLKGEsYil7aWYoIWxoKGEpfHwhZmgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsIk9iamVjdHx1bmRlZmluZWQiXSxhcmd1bWVudHMpO3ZhciBjPWI/VGQoYik6e307Yy5yZWdleENhY2hlPWFsKDMsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1hcH0pO3JldHVybiBHaChhLGMpfXdLLlA9ImludGVybmFsLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iO2Z1bmN0aW9uIHhLKGEpe3ZhciBiPSExO3JldHVybiBifXhLLlA9ImludGVybmFsLmV2YWx1YXRlTWF0Y2hpbmdSdWxlcyI7dmFyIHlLPW5ldyBNYXAoW1siYXciLDRdXSk7ZnVuY3Rpb24geksoYSl7dmFyIGI9dnJbYV0sYz15Sy5nZXQoYSk7cmV0dXJuIGM/KHdxKGIsYyl8fFtdKS5zb21lKGZ1bmN0aW9uKGQpe3JldHVybiBkLm09PT0iMCJ8fGQubT09PXZvaWQgMH0pOiExfQpmdW5jdGlvbiBBSyhhLGIpe2lmKE0oNDk1KSl7Zm9yKHZhciBjPW5ldyBNYXAsZD1tKHlLKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9bShlLnZhbHVlKSxnPWYubmV4dCgpLnZhbHVlLGg9Zi5uZXh0KCkudmFsdWUsbD1nLG49YVtsXSxwPUFycmF5LmlzQXJyYXkobik/blswXTpuO2lmKHAhPT12b2lkIDApe3ZhciBxPXt9LHI9KHEuaz1wLHEuaT1TdHJpbmcoTWF0aC5mbG9vcihEYXRlLm5vdygpLzFFMykpLHEuYj1bXSxxLm09IjEiLHEpLHQ9YXEocixoKTt0JiYoeksobCl8fGMuc2V0KGwsdCkpfX1pZihjLnNpemUpe3ZhciB1LHY9W10seD1iLnBhdGh8fCIvIjt2LnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KCJwIikrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh4KSk7Yi5BciYmdi5wdXNoKGVuY29kZVVSSUNvbXBvbmVudCgiY2UiKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhiLkFyKSkpO3ZhciB5PWIuZG9tYWluJiZiLmRvbWFpbiE9PSJhdXRvIj8KYi5kb21haW46ImF1dG86IitBLmxvY2F0aW9uLmhvc3RuYW1lO3YucHVzaChlbmNvZGVVUklDb21wb25lbnQoImQiKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHkpKTtmb3IodmFyIHo9bShjKSxDPXoubmV4dCgpOyFDLmRvbmU7Qz16Lm5leHQoKSl7dmFyIEQ9bShDLnZhbHVlKSxJPUQubmV4dCgpLnZhbHVlLEc9RC5uZXh0KCkudmFsdWU7di5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChJKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEcpKX11PSJfL3NldF9jb29raWU/Iit2LmpvaW4oIiYiKTt2YXIgTixTPUUoNTgpO049RWYodSxTKTt2YXIgVz1YaigpKyIvIitOO21kKFcpfX19O2Z1bmN0aW9uIEJLKGEpe3JldHVybiJDV1ZXZWJWaWV3TWVzc2FnZSJpbiBhfWZ1bmN0aW9uIENLKGEpe3ZhciBiPUEsYz1iLndlYmtpdDtkZWxldGUgYi53ZWJraXQ7YShiLndlYmtpdCk7Yi53ZWJraXQ9Y31mdW5jdGlvbiBESyhhLGIpe3ZhciBjPXthY3Rpb246ImdjbF9zZXR1cCJ9O2lmKEJLKGEubWVzc2FnZUhhbmRsZXJzKSlyZXR1cm4gYS5tZXNzYWdlSGFuZGxlcnMuQ1dWV2ViVmlld01lc3NhZ2UucG9zdE1lc3NhZ2Uoe2NvbW1hbmQ6YixwYXlsb2FkOmN9KSwhMDt2YXIgZD1hLm1lc3NhZ2VIYW5kbGVyc1tiXTtyZXR1cm4gZD8oZC5wb3N0TWVzc2FnZShjKSwhMCk6ITF9O3ZhciBFSz17fSxGSz0oRUsuYXdiPXtub3RGb3VuZDoxNzh9LEVLLnl0Yj17bm90Rm91bmQ6MTk0fSxFSyk7ZnVuY3Rpb24gR0soYSl7dmFyIGIsYz0oYj1GS1thXSk9PW51bGw/dm9pZCAwOmIubm90Rm91bmQ7YyYmUChjKX0KZnVuY3Rpb24gSEsoYSl7aWYoIW5tKGptLmJhLmpuKSYmIndlYmtpdCJpbiBBJiZBLndlYmtpdC5tZXNzYWdlSGFuZGxlcnMpe3ZhciBiPWZ1bmN0aW9uKCl7dHJ5e0NLKGZ1bmN0aW9uKGMpe2lmKGMpe3ZhciBkO2Q9QksoYy5tZXNzYWdlSGFuZGxlcnMpfHwiYXdiImluIGMubWVzc2FnZUhhbmRsZXJzP3tjb21tYW5kOiJhd2IiLHNvdXJjZTo1fTooQksoYy5tZXNzYWdlSGFuZGxlcnMpfHwieXRiImluIGMubWVzc2FnZUhhbmRsZXJzKSYmTSg0OTkpP3tjb21tYW5kOiJ5dGIiLHNvdXJjZTo4fTp2b2lkIDA7ZCYmKG1tKGptLmJhLmpuLGZ1bmN0aW9uKGUpe3ZhciBmPWQuc291cmNlO2UuZ2NsaWQmJmxzKCJnY2xfYXciLGUuZ2NsaWQsZixhKTtlLndicmFpZCYmbHMoImdjbF9nYiIsZS53YnJhaWQsZixhKX0pLERLKGMsZC5jb21tYW5kKXx8R0soZC5jb21tYW5kKSl9fSl9Y2F0Y2goYyl7UCgxOTMpfX07SGwoZnVuY3Rpb24oKXtCcihmcCk/YigpOklsKGIsZnApfSxmcCl9fTt2YXIgSUs9WyJodHRwczovL3d3dy5nb29nbGUuY29tIiwiaHR0cHM6Ly93d3cueW91dHViZS5jb20iLCJodHRwczovL20ueW91dHViZS5jb20iXTtmdW5jdGlvbiBKSyhhKXtyZXR1cm4gYS5kYXRhLmFjdGlvbiE9PSJnY2xfdHJhbnNmZXIiPyhQKDE3MyksITApOmEuZGF0YS5nYWRTb3VyY2U/YS5kYXRhLmdjbGlkPyExOihQKDE4MSksITApOihQKDE4MCksITApfQpmdW5jdGlvbiBLSyhhLGIpe2lmKCFhfHxNKGEpKXtpZihubShqbS5iYS5WZSkpcmV0dXJuIFAoMTc2KSxqbS5iYS5WZTtpZihubShqbS5iYS5tbikpcmV0dXJuIFAoMTcwKSxqbS5iYS5WZTt2YXIgYz1GcCgpO2lmKCFjKVAoMTcxKTtlbHNlIGlmKGMub3BlbmVyKXt2YXIgZD1mdW5jdGlvbihnKXtpZighSUsuaW5jbHVkZXMoZy5vcmlnaW4pKVAoMTcyKTtlbHNlIGlmKCFKSyhnKSl7dmFyIGg9e2dhZFNvdXJjZTpnLmRhdGEuZ2FkU291cmNlfTtoLmdjbGlkPWcuZGF0YS5nY2xpZDttbShqbS5iYS5WZSxoKTtiJiZnLmRhdGEuZ2NsaWQmJmxzKCJnY2xfYXciLFN0cmluZyhnLmRhdGEuZ2NsaWQpLDYsYik7dmFyIGw7KGw9Zy5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24pPT1udWxsfHxsLmNhbGwoZyk7bnQoYywibWVzc2FnZSIsZCl9fTtpZihtdChjLCJtZXNzYWdlIixkKSl7bW0oam0uYmEubW4sITApO2Zvcih2YXIgZT1tKElLKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSljLm9wZW5lci5wb3N0TWVzc2FnZSh7YWN0aW9uOiJnY2xfc2V0dXAifSwKZi52YWx1ZSk7UCgxNzQpO3JldHVybiBqbS5iYS5WZX1QKDE3NSl9fX07CnZhciBMSz1mdW5jdGlvbihhKXt2YXIgYj17cHJlZml4Ok8oYS5NLEYuRC5GZCl8fE8oYS5NLEYuRC5uYiksZG9tYWluOk8oYS5NLEYuRC5MYikscGQ6TyhhLk0sRi5ELkNiKSxmbGFnczpPKGEuTSxGLkQuVGIpfTthLk0uaXNHdG1FdmVudCYmKGIucGF0aD1PKGEuTSxGLkQudmMpKTtyZXR1cm4gYn0sTUs9ZnVuY3Rpb24oYSxiKXtpZighUShhLEguSi5XZSkpe3ZhciBjPUtLKDExOSk7aWYoYyl7dmFyIGQ9bm0oYyksZT1mdW5jdGlvbihnKXtWKGEsSC5KLldlLCEwKTt2YXIgaD1SKGEsRi5ELnpmKSxsPVIoYSxGLkQuQWYpO1UoYSxGLkQuemYsU3RyaW5nKGcuZ2FkU291cmNlKSk7VShhLEYuRC5BZiw2KTtWKGEsSC5KLnNhKTtWKGEsSC5KLnVnKTtVKGEsRi5ELnNhKTtiKCk7VShhLEYuRC56ZixoKTtVKGEsRi5ELkFmLGwpO1YoYSxILkouV2UsITEpfTtpZihkKWUoZCk7ZWxzZXt2YXIgZj12b2lkIDA7Zj1wbShjLGZ1bmN0aW9uKGcsaCl7ZShoKTtxbShjLGYpfSl9fX19LFBLPWZ1bmN0aW9uKGEpe3ZhciBiLApjLGQsZTtiPWEuVG47Yz1hLm1vO2Q9YS5RbztlPWEuVW47aWYoYil7aWYoZHIoY1tGLkQuWGZdLCEhY1tGLkQuQWFdKSl7aWYoV2ooKSYmQnIoQXIoKSkpe2Zvcih2YXIgZj1VcSghMCksZz17fSxoPW0oT2JqZWN0LmtleXModnIpKSxsPWgubmV4dCgpOyFsLmRvbmU7bD1oLm5leHQoKSl7dmFyIG49bC52YWx1ZSxwPXZyW25dLHE9ZltwXTtpZihxKXt2YXIgcj0kcChxLDQpO3ImJihvcyhNYXRoLm1pbihOcihyKSxOYigpKXx8TmIoKSxwLDQpfHwoZ1tuXT1xKSl9fWZvcih2YXIgdD17fSx1PW0oT2JqZWN0LmtleXMoZykpLHY9dS5uZXh0KCk7IXYuZG9uZTt2PXUubmV4dCgpKXt2YXIgeD12LnZhbHVlLHk9Z1t4XTtpZih5IT09dm9pZCAwKXt2YXIgej0kcCh5LDQpO3omJnoubT09PSIxIiYmKHRbeF09ei5rKX19QUsodCxlKX1wcyhlKTt0cyhlKTtRdihlKX1pZihPcCgpIT09Mil7Z3MoZSk7aXMoZSk7aWYoWWYoMTUpKXt2YXIgQz1lLEQ9ZHMoQS5sb2NhdGlvbi5ocmVmLCEwLCExKTsKRC5sZW5ndGh8fChEPWRzKEEuZG9jdW1lbnQucmVmZXJyZXIsITEsITApKTtpZihELmxlbmd0aCl7Qz1DfHx7fTt2YXIgST1EWzBdO0kudmFsdWUmJm1zKCJnY2xfZGMiLFt7dmVyc2lvbjoiIixnY2xpZDpJLnZhbHVlLHRpbWVzdGFtcDpOYigpLHFhOkkucWF9XSxDKX19SEsoZSk7S0sodm9pZCAwLGUpfWVsc2UgZ3MoZSk7aWYoV2ooKSYmQnIoQXIoKSkpe3ZhciBHPWZzKCk7QUsoRyxlKX14cyhxcyxlKTt5cyhlKX1jW0YuRC5BYV0mJih2cyhjW0YuRC5BYV0sY1tGLkQuYWRdLCEhY1tGLkQud2NdKSx1cyhjW0YuRC5BYV0sY1tGLkQuYWRdLCEhY1tGLkQud2NdLGUucHJlZml4KSx3cyhjW0YuRC5BYV0sY1tGLkQuYWRdLCEhY1tGLkQud2NdLGUucHJlZml4KSxSdihHdihlLnByZWZpeCksY1tGLkQuQWFdLGNbRi5ELmFkXSwhIWNbRi5ELndjXSxlKSxSdigiRlBBVSIsY1tGLkQuQWFdLGNbRi5ELmFkXSwhIWNbRi5ELndjXSxlKSk7ZCYmQXMoTkspO0NzKE9LKX0scXM9WyJhdyIsImRjIiwKImdiIl0sT0s9WyJhdyIsImRjIiwiZ2IiLCJhZyJdLE5LPVsiYXciLCJkYyIsImdiIiwiYWciLCJnYWRfc291cmNlIl07ZnVuY3Rpb24gVksoKXtyZXR1cm4gTXQoNykmJk10KDkpJiZNdCgxMCl9O3ZhciBXSz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9e307YS5tZXJnZUhpdERhdGFGb3JLZXkoRi5ELm9qLChkW2JdPWMsZCkpfSxYSz1mdW5jdGlvbihhLGIpe3ZhciBjPWRJKGEsRi5ELkZpLGEuTS5pYltGLkQuRmldKTtpZihjJiZjW2J8fGEuZXZlbnROYW1lXSE9PXZvaWQgMClyZXR1cm4gY1tifHxhLmV2ZW50TmFtZV19LFlLPWZ1bmN0aW9uKGEpe3ZhciBiPVEoYSxILkouWWEpO2lmKENkKGIpKXJldHVybiBifSxaSz1mdW5jdGlvbihhKXtpZihRKGEsSC5KLmJlKXx8IWVrKGEuTSkpcmV0dXJuIDE7aWYoIU8oYS5NLEYuRC5kZCkpe3ZhciBiPU8oYS5NLEYuRC5RZik7aWYoYiE9PSEwJiZiIT09InRydWUiKXJldHVybiAxfXZhciBjPU8oYS5NLEYuRC5PaSk7cmV0dXJuIGM9PT0hMXx8Yz09PSJmYWxzZSI/MzoyfTsKdmFyIGFMPWZ1bmN0aW9uKGEsYil7YSYmKCRLKCJzaWQiLGEudGFyZ2V0SWQsYiksJEsoImNjIixhLmNsaWVudENvdW50LGIpLCRLKCJ0bCIsYS50b3RhbExpZmVNcyxiKSwkSygiaGMiLGEuaGVhcnRiZWF0Q291bnQsYiksJEsoImNsIixhLmNsaWVudExpZmVNcyxiKSl9LCRLPWZ1bmN0aW9uKGEsYixjKXtiIT1udWxsJiZjLnB1c2goYSsiPSIrYil9LGJMPWZ1bmN0aW9uKCl7dmFyIGE9Qi5yZWZlcnJlcjtpZihhKXt2YXIgYjtyZXR1cm4gTGooUmooYSksImhvc3QiKT09PSgoYj1BLmxvY2F0aW9uKT09bnVsbD92b2lkIDA6Yi5ob3N0KT8xOjJ9cmV0dXJuIDB9LGRMPWZ1bmN0aW9uKCl7dGhpcy5qYT1jTDt0aGlzLk49MDt0aGlzLnlhPU5mKDU3LDUpO3RoaXMuUj1OZig1OCw1MCk7dGhpcy5mYT1EYigpO3RoaXMuTGE9Imh0dHBzOi8vIitFKDIxKSsiL2E/In07ZEwucHJvdG90eXBlLks9ZnVuY3Rpb24oYSxiLGMsZCl7CnZhciBlPWJMKCksZixnPVtdO2Y9QT09PUEudG9wJiZlIT09MCYmYj8oYj09bnVsbD92b2lkIDA6Yi5jbGllbnRDb3VudCk+MT9lPT09Mj8xOjI6ZT09PTI/MDozOjQ7YSYmJEsoInNpIixhLkpnLGcpOyRLKCJtIiwwLGcpOyRLKCJpc3MiLGYsZyk7JEsoImlmIixjLGcpO2FMKGIsZyk7ZCYmJEsoImZtIixlbmNvZGVVUklDb21wb25lbnQoZC5zdWJzdHJpbmcoMCx0aGlzLlIpKSxnKTt0aGlzLlooZyk7fTtkTC5wcm90b3R5cGUuSD1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPVtdOyRLKCJtIiwxLGYpOyRLKCJzIixhLGYpOyRLKCJwbyIsYkwoKSxmKTtiJiYoJEsoInN0IixiLnN0YXRlLGYpLCRLKCJzaSIsYi5KZyxmKSwkSygic20iLGIuVWcsZikpO2FMKGMsZik7JEsoImMiLGQsZik7ZSYmJEsoImZtIixlbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcoMCwKdGhpcy5SKSksZik7dGhpcy5aKGYpO307ZEwucHJvdG90eXBlLlo9ZnVuY3Rpb24oYSl7YT1hPT09dm9pZCAwP1tdOmE7IWZuLk58fHRoaXMuTj49dGhpcy55YXx8KCRLKCJwaWQiLHRoaXMuZmEsYSksJEsoImJjIiwrK3RoaXMuTixhKSxhLnVuc2hpZnQoImN0aWQ9IitFKDUpKyImdD1zIiksdGhpcy5qYSgiIit0aGlzLkxhK2Euam9pbigiJiIpKSl9O2Z1bmN0aW9uIGVMKGEpe3JldHVybiBhLnBlcmZvcm1hbmNlJiZhLnBlcmZvcm1hbmNlLm5vdygpfHxEYXRlLm5vdygpfQp2YXIgZkw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1BLGQ9TmYoNTMsNTAwKSxlPU5mKDU0LDVFMyksZj1OZig4LDIwKSxnPU5mKDU1LDVFMyksaDt2YXIgbD1mdW5jdGlvbihuLHAscSl7cT1xPT09dm9pZCAwP3txbzpmdW5jdGlvbigpe30sc286ZnVuY3Rpb24oKXt9LHBvOmZ1bmN0aW9uKCl7fSxvbkZhaWx1cmU6ZnVuY3Rpb24oKXt9fTpxO3RoaXMuSWo9bjt0aGlzLkg9cDt0aGlzLk49cTt0aGlzLmZhPXRoaXMuamE9dGhpcy5oZWFydGJlYXRDb3VudD10aGlzLkRqPTA7dGhpcy5mZT0hMTt0aGlzLks9e307dGhpcy5pZD1TdHJpbmcoTWF0aC5mbG9vcihOdW1iZXIuTUFYX1NBRkVfSU5URUdFUipNYXRoLnJhbmRvbSgpKSk7dGhpcy5zdGF0ZT0wO3RoaXMuSmc9ZUwodGhpcy5IKTt0aGlzLlVnPWVMKHRoaXMuSCk7dGhpcy5aPTEwfTtsLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7dGhpcy5SKDEpOwp0aGlzLkxhKCl9O2wucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJue3N0YXRlOnRoaXMuc3RhdGUsSmc6TWF0aC5yb3VuZChlTCh0aGlzLkgpLXRoaXMuSmcpLFVnOk1hdGgucm91bmQoZUwodGhpcy5IKS10aGlzLlVnKX19O2wucHJvdG90eXBlLlI9ZnVuY3Rpb24obil7dGhpcy5zdGF0ZSE9PW4mJih0aGlzLnN0YXRlPW4sdGhpcy5VZz1lTCh0aGlzLkgpKX07bC5wcm90b3R5cGUudmc9ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKHRoaXMuRGorKyl9O2wucHJvdG90eXBlLkxhPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLmhlYXJ0YmVhdENvdW50Kys7dGhpcy55YSh7dHlwZTowLGNsaWVudElkOnRoaXMuaWQscmVxdWVzdElkOnRoaXMudmcoKSxtYXhEZWxheTp0aGlzLmhlKCl9LGZ1bmN0aW9uKHApe2lmKHAudHlwZT09PTApe3ZhciBxO2lmKCgocT1wLmZhaWx1cmUpPT1udWxsP3ZvaWQgMDpxLmZhaWx1cmVUeXBlKSE9bnVsbClpZihwLnN0YXRzJiYobi5zdGF0cz0KcC5zdGF0cyksbi5mYSsrLHAuaXNEZWFkfHxuLmZhPmYpe3ZhciByPXAuaXNEZWFkJiZwLmZhaWx1cmUuZmFpbHVyZVR5cGU7bi5aPXJ8fDEwO24uUig0KTtuLkFqKCk7dmFyIHQsdTsodT0odD1uLk4pLnBvKT09bnVsbHx8dS5jYWxsKHQse2ZhaWx1cmVUeXBlOnJ8fDEwLGRhdGE6cC5mYWlsdXJlLmRhdGF9KX1lbHNlIG4uUigzKSxuLlBoKCk7ZWxzZXtpZihuLmhlYXJ0YmVhdENvdW50PnAuc3RhdHMuaGVhcnRiZWF0Q291bnQrZil7bi5oZWFydGJlYXRDb3VudD1wLnN0YXRzLmhlYXJ0YmVhdENvdW50O3ZhciB2LHg7KHg9KHY9bi5OKS5vbkZhaWx1cmUpPT1udWxsfHx4LmNhbGwodix7ZmFpbHVyZVR5cGU6MTN9KX1uLnN0YXRzPXAuc3RhdHM7dmFyIHk9bi5zdGF0ZTtuLlIoMik7aWYoeSE9PTIpaWYobi5mZSl7dmFyIHosQzsoQz0oej1uLk4pLnNvKT09bnVsbHx8Qy5jYWxsKHopfWVsc2V7bi5mZT0hMDt2YXIgRCxJOyhJPShEPW4uTikucW8pPT1udWxsfHxJLmNhbGwoRCl9bi5mYT0KMDtuLk5qKCk7bi5QaCgpfX19KX07bC5wcm90b3R5cGUuaGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZT09PTI/ZTpkfTtsLnByb3RvdHlwZS5QaD1mdW5jdGlvbigpe3ZhciBuPXRoaXM7dGhpcy5ILnNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLkxhKCl9LE1hdGgubWF4KDAsdGhpcy5oZSgpLShlTCh0aGlzLkgpLXRoaXMuamEpKSl9O2wucHJvdG90eXBlLmtyPWZ1bmN0aW9uKG4scCxxKXt2YXIgcj10aGlzO3RoaXMueWEoe3R5cGU6MSxjbGllbnRJZDp0aGlzLmlkLHJlcXVlc3RJZDp0aGlzLnZnKCksY29tbWFuZDpufSxmdW5jdGlvbih0KXtpZih0LnR5cGU9PT0xKWlmKHQucmVzdWx0KXAodC5yZXN1bHQpO2Vsc2V7dmFyIHUsdix4LHk9e2ZhaWx1cmVUeXBlOih4PSh1PXQuZmFpbHVyZSk9PW51bGw/dm9pZCAwOnUuZmFpbHVyZVR5cGUpIT1udWxsP3g6MTIsZGF0YToodj10LmZhaWx1cmUpPT1udWxsP3ZvaWQgMDp2LmRhdGF9LHosQzsoQz0oej1yLk4pLm9uRmFpbHVyZSk9PQpudWxsfHxDLmNhbGwoeix5KTtxKHkpfX0pfTtsLnByb3RvdHlwZS55YT1mdW5jdGlvbihuLHApe3ZhciBxPXRoaXM7aWYodGhpcy5zdGF0ZT09PTQpbi5mYWlsdXJlPXtmYWlsdXJlVHlwZTp0aGlzLlp9LHAobik7ZWxzZXt2YXIgcj10aGlzLnN0YXRlIT09MiYmbi50eXBlIT09MCx0PW4ucmVxdWVzdElkLHUsdj10aGlzLkguc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB5PXEuS1t0XTt5JiYoaW0oNikscS5rZCh5LDcpKX0sKHU9bi5tYXhEZWxheSkhPW51bGw/dTpnKSx4PXtyZXF1ZXN0Om4sSG86cCx6bzpyLE5zOnZ9O3RoaXMuS1t0XT14O3J8fHRoaXMuc2VuZFJlcXVlc3QoeCl9fTtsLnByb3RvdHlwZS5zZW5kUmVxdWVzdD1mdW5jdGlvbihuKXt0aGlzLmphPWVMKHRoaXMuSCk7bi56bz0hMTt0aGlzLklqKG4ucmVxdWVzdCl9O2wucHJvdG90eXBlLk5qPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPW0oT2JqZWN0LmtleXModGhpcy5LKSkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpe3ZhciBxPQp0aGlzLktbcC52YWx1ZV07cS56byYmdGhpcy5zZW5kUmVxdWVzdChxKX19O2wucHJvdG90eXBlLkFqPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPW0oT2JqZWN0LmtleXModGhpcy5LKSkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpdGhpcy5rZCh0aGlzLktbcC52YWx1ZV0sdGhpcy5aKX07bC5wcm90b3R5cGUua2Q9ZnVuY3Rpb24obixwKXt0aGlzLmFjKG4pO3ZhciBxPW4ucmVxdWVzdDtxLmZhaWx1cmU9e2ZhaWx1cmVUeXBlOnB9O24uSG8ocSl9O2wucHJvdG90eXBlLmFjPWZ1bmN0aW9uKG4pe2RlbGV0ZSB0aGlzLktbbi5yZXF1ZXN0LnJlcXVlc3RJZF07dGhpcy5ILmNsZWFyVGltZW91dChuLk5zKX07bC5wcm90b3R5cGUua3M9ZnVuY3Rpb24obil7dGhpcy5qYT1lTCh0aGlzLkgpO3ZhciBwPXRoaXMuS1tuLnJlcXVlc3RJZF07aWYocCl0aGlzLmFjKHApLHAuSG8obik7ZWxzZXt2YXIgcSxyOyhyPShxPXRoaXMuTikub25GYWlsdXJlKT09bnVsbHx8ci5jYWxsKHEse2ZhaWx1cmVUeXBlOjE0fSl9fTsKaD1uZXcgbChhLGMsYik7cmV0dXJuIGh9Owp2YXIgZ0w9ZnVuY3Rpb24oKXtyZXR1cm4gYWwoMTgsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGRMfSl9LGNMPWZ1bmN0aW9uKGEpe2lvKGxvKGNvLmlhLlpiKSxmdW5jdGlvbigpe1pjKGEpfSl9LGhMPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3Vic3RyaW5nKDAsYS5pbmRleE9mKCIvXy9zZXJ2aWNlX3dvcmtlciIpKTtyZXR1cm4iJjFwPTEiKyhiPyImcGF0aD0iK2VuY29kZVVSSUNvbXBvbmVudChiKToiIil9LGlMPWZ1bmN0aW9uKGEpe3ZhciBiPUEubG9jYXRpb24ub3JpZ2luO2lmKCFiKXJldHVybiBudWxsOyhNKDQzMik/V2ooKTpXaigpJiYhYSkmJihhPSIiK2IrWGooKSsiL18vc2VydmljZV93b3JrZXIiKTt2YXIgYz1hLGQsZT1MZigxMSk7ZT1MZigxMCk7ZD1lO2M/KGMuY2hhckF0KGMubGVuZ3RoLTEpIT09Ii8iJiYKKGMrPSIvIiksYT1jK2QpOmE9Imh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL3N0YXRpYy9zZXJ2aWNlX3dvcmtlci8iK2QrIi8iO3ZhciBmO3RyeXtmPW5ldyBVUkwoYSl9Y2F0Y2goZyl7cmV0dXJuIG51bGx9cmV0dXJuIGYucHJvdG9jb2whPT0iaHR0cHM6Ij9udWxsOmZ9LGpMPWZ1bmN0aW9uKGEpe3ZhciBiPW5tKGptLmJhLk9oKTtyZXR1cm4gYiYmYlthXX0sa0w9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0aGlzLks9Z0woKTt0aGlzLlo9dGhpcy5SPSExO3RoaXMuZmE9bnVsbDt0aGlzLmluaXRUaW1lPU1hdGgucm91bmQoTmIoKSk7dGhpcy5IPTE1O3RoaXMuTj10aGlzLkZyKGEpO0Euc2V0VGltZW91dChmdW5jdGlvbigpe2IuaW5pdGlhbGl6ZSgpfSwxRTMpO2JkKGZ1bmN0aW9uKCl7Yi56cyhhKX0pfTtrPWtMLnByb3RvdHlwZTtrLmRlbGVnYXRlPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmdldFN0YXRlKCkhPT0yPyh0aGlzLksuSCh0aGlzLkgse3N0YXRlOnRoaXMuZ2V0U3RhdGUoKSwKSmc6dGhpcy5pbml0VGltZSxVZzpNYXRoLnJvdW5kKE5iKCkpLXRoaXMuaW5pdFRpbWV9LHZvaWQgMCxhLmNvbW1hbmRUeXBlKSxjKHtmYWlsdXJlVHlwZTp0aGlzLkh9KSk6dGhpcy5OLmtyKGEsYixjKX07ay5nZXRTdGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLk4uZ2V0U3RhdGUoKS5zdGF0ZX07ay56cz1mdW5jdGlvbihhKXt2YXIgYj1BLmxvY2F0aW9uLm9yaWdpbixjPXRoaXMsZD1YYygpO3RyeXt2YXIgZT1kLmNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxmPWEucGF0aG5hbWUsZz1mW2YubGVuZ3RoLTFdPT09Ii8iP2EudG9TdHJpbmcoKTphLnRvU3RyaW5nKCkrIi8iLGg9YS5vcmlnaW4hPT0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20iP2hMKGYpOiIiLGw7TSgxMzMpJiYobD17c2FuZGJveDoiYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctc2NyaXB0cyJ9KTtYYyhnKyJzd19pZnJhbWUuaHRtbD9vcmlnaW49IitlbmNvZGVVUklDb21wb25lbnQoYikrCmgsdm9pZCAwLGwsdm9pZCAwLGUpO3ZhciBuPWZ1bmN0aW9uKCl7ZC5jb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKTtlLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7Yy5mYT1lLmNvbnRlbnRXaW5kb3c7ZC5jb250ZW50V2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uKHApe3Aub3JpZ2luPT09YS5vcmlnaW4mJmMuTi5rcyhwLmRhdGEpfSk7Yy5pbml0aWFsaXplKCl9KX07ZC5jb250ZW50RG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSI/bigpOmQuY29udGVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe24oKX0pfWNhdGNoKHApe2QucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChkKSx0aGlzLkg9MTEsdGhpcy5LLksodm9pZCAwLHZvaWQgMCx0aGlzLkgscC50b1N0cmluZygpKX19O2suRnI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWZMKGZ1bmN0aW9uKGQpe3ZhciBlOyhlPWIuZmEpPT0KbnVsbHx8ZS5wb3N0TWVzc2FnZShkLGEub3JpZ2luKX0se3FvOmZ1bmN0aW9uKCl7Yi5SPSEwO2IuSy5LKGMuZ2V0U3RhdGUoKSxjLnN0YXRzKX0sc286ZnVuY3Rpb24oKXt9LHBvOmZ1bmN0aW9uKGQpe2IuUj8oYi5IPShkPT1udWxsP3ZvaWQgMDpkLmZhaWx1cmVUeXBlKXx8MTAsYi5LLkgoYi5ILGMuZ2V0U3RhdGUoKSxjLnN0YXRzLHZvaWQgMCxkPT1udWxsP3ZvaWQgMDpkLmRhdGEpKTooYi5IPShkPT1udWxsP3ZvaWQgMDpkLmZhaWx1cmVUeXBlKXx8NCxiLksuSyhjLmdldFN0YXRlKCksYy5zdGF0cyxiLkgsZD09bnVsbD92b2lkIDA6ZC5kYXRhKSl9LG9uRmFpbHVyZTpmdW5jdGlvbihkKXtiLkg9ZC5mYWlsdXJlVHlwZTtiLksuSChiLkgsYy5nZXRTdGF0ZSgpLGMuc3RhdHMsZC5jb21tYW5kLGQuZGF0YSl9fSk7cmV0dXJuIGN9O2suaW5pdGlhbGl6ZT1mdW5jdGlvbigpe3RoaXMuWnx8dGhpcy5OLmluaXQoKTt0aGlzLlo9ITB9Owp2YXIgbEw9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU7aWYoKGU9akwoYSkpPT1udWxsfHwhZS5kZWxlZ2F0ZSl7dmFyIGY9SWMoKT8xNjo2O2dMKCkuSChmLHZvaWQgMCx2b2lkIDAsYi5jb21tYW5kVHlwZSk7ZCh7ZmFpbHVyZVR5cGU6Zn0pO3JldHVybn1qTChhKS5kZWxlZ2F0ZShiLGMsZCk7fTsKZnVuY3Rpb24gbUwoYSxiLGMsZCl7dmFyIGU9aUwoYSk7aWYoZT09PW51bGwpe2QoIl9pc19zdz1mIisoSWMoKT8xNjo2KSsidGUiKTtyZXR1cm59dmFyIGY9Yj8xOjAsZz1NYXRoLnJvdW5kKE5iKCkpLGgsbD0oaD1qTChlLm9yaWdpbikpPT1udWxsP3ZvaWQgMDpoLmluaXRUaW1lLG49bD9nLWw6dm9pZCAwLHA7TSg0MzIpP3A9V2ooKT92b2lkIDA6QS5sb2NhdGlvbi5ocmVmOnA9QS5sb2NhdGlvbi5ocmVmO2xMKGUub3JpZ2luLHtjb21tYW5kVHlwZTowLHBhcmFtczp7dXJsOmEsbWV0aG9kOmYsdGVtcGxhdGVzOmMsYm9keTpifHwiIixwcm9jZXNzUmVzcG9uc2U6ITAsc2luY2VJbml0Om4sYXR0cmlidXRpb25SZXBvcnRpbmc6ITAscmVmZXJlcjpwLHN0cmljdDpNKDU4NCl9fSxmdW5jdGlvbigpe30sZnVuY3Rpb24ocSl7dmFyIHI9Il9pc19zdz1mIitxLmZhaWx1cmVUeXBlLHQsdT0odD1qTChlLm9yaWdpbikpPT0KbnVsbD92b2lkIDA6dC5nZXRTdGF0ZSgpO3UhPT12b2lkIDAmJihyKz0icyIrdSk7ZChuP3IrKCJ0IituKTpyKyJ0ZSIpfSk7fTtmdW5jdGlvbiBuTChhKXtpZihJZig0NykmJmRJKGEsImNjZF9hZGRfMXBfZGF0YSIsITEpJiZXaigpKXt2YXIgYj1hLk07aWYoSWMoKSYmYmcoImludGVybmFsX3N3X2FsbG93ZWQiLCIiKSl7dmFyIGM9ZWsoYiksZD1XaigpP1hqKCk6dm9pZCAwLGU7ZT1kP3twYXRoOmQsZW86ImZ1bGwifTpjP3twYXRoOmMsZW86ImxpdGUifTp2b2lkIDA7aWYoZSl7dmFyIGY9ZS5lbyxnPW5ldyBVUkwoZS5wYXRoLEEubG9jYXRpb24ub3JpZ2luKTtpZihnLm9yaWdpbj09PUEubG9jYXRpb24ub3JpZ2luJiZweShmKT09PXZvaWQgMCl7dmFyIGg9b20oam0uYmEuT2gse30pO2hbZl18fChoW2ZdPW5ldyBueShnKSl9fX19fTtmdW5jdGlvbiBzTCgpe3ZhciBhO2E9YT09PXZvaWQgMD9kb2N1bWVudDphO3ZhciBiO3JldHVybiEoKGI9YS5mZWF0dXJlUG9saWN5KT09bnVsbHx8IWIuYWxsb3dlZEZlYXR1cmVzKCkuaW5jbHVkZXMoImF0dHJpYnV0aW9uLXJlcG9ydGluZyIpKX07ZnVuY3Rpb24gd0woYSxiLGMsZCl7ZD1kPT09dm9pZCAwPyExOmQ7dmFyIGU9RnAoKSxmPURwKGUpO2lmKGYudXJsKWlmKGQpe3ZhciBnPWMoZi51cmwpO2IhPT1nJiZVKGEsRi5ELlBlLGcpfWVsc2V7dmFyIGg9Zi51cmw7YiE9PWgmJlUoYSxGLkQuUGUsYyhoKSl9fTsKdmFyIHhMPWZ1bmN0aW9uKGEpe2lmKGEhPW51bGwpe3ZhciBiPVN0cmluZyhhKS5zdWJzdHJpbmcoMCw1MTIpLGM9Yi5pbmRleE9mKCIjIik7cmV0dXJuIGM9PT0tMT9iOmIuc3Vic3RyaW5nKDAsYyl9cmV0dXJuIiJ9LHlMPWZ1bmN0aW9uKCl7dmFyIGE9Qi50aXRsZTtpZihhPT09dm9pZCAwfHxhPT09IiIpcmV0dXJuIiI7YT1lbmNvZGVVUklDb21wb25lbnQoYSk7Zm9yKHZhciBiPTI1NjtiPjAmJktqKGEuc3Vic3RyaW5nKDAsYikpPT09dm9pZCAwOyliLS07cmV0dXJuIEtqKGEuc3Vic3RyaW5nKDAsYikpfHwiIn07ZnVuY3Rpb24gQUwoYSl7VihhLEguSi5KYSwhMCk7VihhLEguSi5FYixOYigpKTtWKGEsSC5KLnluLGEuTS5ldmVudE1ldGFkYXRhW0guSi5KYV0pfTt2YXIgU0w9ZnVuY3Rpb24oYSl7dmFyIGI9WG8oRi5ELmthKT9taigicHNjZGwiKToiZGVuaWVkIjtiIT1udWxsJiZVKGEsRi5ELmpoLGIpfTt2YXIgVEw9bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPXt9fTt2YXIgVUw9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLk07aWYoYj09PXZvaWQgMD8wOmIpe3ZhciBkPWMuZ2V0TWVyZ2VkVmFsdWVzKEYuRC5PYSk7WWIoZCkmJlUoYSxGLkQuTGksWWIoZCkpfXZhciBlPU9vKGZEKEYuRC5PYSkpLGY9Yy5nZXRNZXJnZWRWYWx1ZXMoRi5ELk9hLDEsZSksZz1jLmdldE1lcmdlZFZhbHVlcyhGLkQuT2EsMiksaD1ZYihuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGYsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxUTC5IKSksIi4iKSxsPVliKGcsIi4iKTtoJiZVKGEsRi5ELlhjLGgpO2wmJlUoYSxGLkQuVmMsbCl9O3ZhciBWTD1mdW5jdGlvbihhKXt2YXIgYj1RKGEsSC5KLnRxKTtiJiZVKGEsRi5ELklsLGIpfTtmdW5jdGlvbiBXTChhKXt2YXIgYj1LQighMSk7aWYoYiE9bnVsbCYmYi5zdGF0dXMpe3ZhciBjPXtndGI6Yi5zdGF0dXN9O2IuZGVsYXkmJihjLmd0YmQ9Yi5kZWxheSk7YS5tZXJnZUhpdERhdGFGb3JLZXkoRi5ELlRhLGMpfX07dmFyIFhMPWZ1bmN0aW9uKGEpe3ptKCk9PT0iVVMtQ08iJiZVKGEsRi5ELkxlLDEpfTt2YXIgWUw9e1JhOntDazoxLHpuOjIsSG46MyxJbjo0LEpuOjUsd246Nn19O1lMLlJhW1lMLlJhLkNrXT0iQURPQkVfQ09NTUVSQ0UiO1lMLlJhW1lMLlJhLnpuXT0iU1FVQVJFU1BBQ0UiO1lMLlJhW1lMLlJhLkhuXT0iV09PX0NPTU1FUkNFIjtZTC5SYVtZTC5SYS5Jbl09IldPT19DT01NRVJDRV9MRUdBQ1kiO1lMLlJhW1lMLlJhLkpuXT0iV09SRF9QUkVTUyI7WUwuUmFbWUwuUmEud25dPSJTSE9QSUZZIjtmdW5jdGlvbiBaTChhKXt2YXIgYj1BO3JldHVybiBLaihiLmVzY2FwZShiLmF0b2IoYSkpKX0KZnVuY3Rpb24gJEwoKXt0cnl7aWYoIU0oNDk4KSYmIU0oNDI1KSlyZXR1cm5bXTt2YXIgYT1ubShqbS5iYS5sbik7aWYoQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gYTt2YXIgYj1bXSxjO2E6e3RyeXtjPSEhQi5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbZGF0YS1yZXF1aXJlbW9kdWxlXj0ibWFnZS8iXScpO2JyZWFrIGF9Y2F0Y2goeSl7fWM9ITF9YyYmYi5wdXNoKFlMLlJhLkNrKTt2YXIgZDthOnt0cnl7dmFyIGU9WkwoIllYTnpaWFJ6TG5OeGRXRnlaWE53WVdObExtTnZiUzg9Iik7ZD1lPyEhQi5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjXj0iLy8nK2UrJyJdJyk6ITE7YnJlYWsgYX1jYXRjaCh5KXt9ZD0hMX1kJiZiLnB1c2goWUwuUmEuem4pO3ZhciBmO2E6e2lmKE0oNDI1KSl0cnl7dmFyIGc9WkwoImMyaHZjR2xtZVM1amIyMD0iKSxoPVpMKCJjMmh2Y0dsbWVXTmtiaTVqYjIwPSIpO2Y9ZyYmaD8hIUIucXVlcnlTZWxlY3Rvcignc2NyaXB0W3NyYyo9ImNkbi4nK2crJyJdLG1ldGFbcHJvcGVydHk9Im9nOmltYWdlIl1bY29udGVudCo9ImNkbi4nKwooZysnIl0sbGlua1tyZWw9InByZWNvbm5lY3QiXVtocmVmKj0iY2RuLicpKyhnKyciXSxsaW5rW3JlbD0icHJlY29ubmVjdCJdW2hyZWYqPSJmb250cy4nKSsoaCsnIl0sbGlua1tyZWw9InByZWNvbm5lY3QiXVtocmVmKj0iaXRlcmFibGUtc2hvcGlmeSJdLGxpbmtbcmVsPSJwcmVjb25uZWN0Il1baHJlZio9InYuJykrKGcrJyJdJykpOiExO2JyZWFrIGF9Y2F0Y2goeSl7fWY9ITF9ZiYmYi5wdXNoKFlMLlJhLnduKTt2YXIgbDthOnt0cnl7bD0hIUIucXVlcnlTZWxlY3Rvcignc2NyaXB0W3NyYyo9Indvb2NvbW1lcmNlIl0sbGlua1tocmVmKj0id29vY29tbWVyY2UiXSxbY2xhc3N8PSJ3b29jb21tZXJjZSJdJyk7YnJlYWsgYX1jYXRjaCh5KXt9bD0hMX1sJiZiLnB1c2goWUwuUmEuSW4pO3ZhciBuO2E6e3RyeXt2YXIgcCxxPSgocD1CLmxvY2F0aW9uKT09bnVsbD92b2lkIDA6cC5ob3N0bmFtZSl8fCIiLHIsdD0oKHI9Qi5sb2NhdGlvbik9PW51bGw/dm9pZCAwOnIub3JpZ2luKXx8CiIiLHU9WkwoIkxuZHZjbVJ3Y21WemN5NWpiMjA9Iiksdj1aTCgiTHk5ekxuY3ViM0puIik7bj11JiZ2P1RiKHEsdSl8fCEhQi5xdWVyeVNlbGVjdG9yKCdbc3JjXj0iJyt0Kycvd3AtY29udGVudCJdLG1ldGFbbmFtZT0iZ2VuZXJhdG9yIl1bY29udGVudF49IldvcmRQcmVzcyAiXSxsaW5rW3JlbD0iZG5zLXByZWZldGNoIl1baHJlZj0iJysodisnIl0nKSk6ITE7YnJlYWsgYX1jYXRjaCh5KXt9bj0hMX1uJiZiLnB1c2goWUwuUmEuSm4pO3ZhciB4O2E6e3RyeXt4PSEhQi5xdWVyeVNlbGVjdG9yKCdbY2xhc3MqPSJ3b29jb21tZXJjZSJdLG1ldGFbbmFtZT0iZ2VuZXJhdG9yIl1bY29udGVudF49Ildvb0NvbW1lcmNlICJdJyk7YnJlYWsgYX1jYXRjaCh5KXt9eD0hMX14JiZiLnB1c2goWUwuUmEuSG4pO1VCKCkmJm1tKGptLmJhLmxuLGIpO3JldHVybiBifWNhdGNoKHkpe31yZXR1cm5bXX07ZnVuY3Rpb24gd00oYSl7aWYoTSg0MjUpJiZRKGEsSC5KLkZjKSl7dmFyIGI9TmYoNjcsMTUwMCksYz1hLm1lcmdlSGl0RGF0YUZvcktleSxkPUYuRC5UYSxlPXt9O2MuY2FsbChhLGQsZSl9fTt2YXIgeE09InBsYXRmb3JtIHBsYXRmb3JtVmVyc2lvbiBhcmNoaXRlY3R1cmUgbW9kZWwgdWFGdWxsVmVyc2lvbiBiaXRuZXNzIGZ1bGxWZXJzaW9uTGlzdCB3b3c2NCIuc3BsaXQoIiAiKTtmdW5jdGlvbiB5TShhKXt2YXIgYjtyZXR1cm4oYj1hLmdvb2dsZV90YWdfZGF0YSkhPW51bGw/YjphLmdvb2dsZV90YWdfZGF0YT17fX1mdW5jdGlvbiB6TShhKXt2YXIgYixjO3JldHVybihjPShiPWEuZ29vZ2xlX3RhZ19kYXRhKT09bnVsbD92b2lkIDA6Yi51YWNoX3Byb21pc2UpIT1udWxsP2M6bnVsbH1mdW5jdGlvbiBBTShhKXt2YXIgYixjO3JldHVybiB0eXBlb2YoKGI9YS5uYXZpZ2F0b3IpPT1udWxsP3ZvaWQgMDooYz1iLnVzZXJBZ2VudERhdGEpPT1udWxsP3ZvaWQgMDpjLmdldEhpZ2hFbnRyb3B5VmFsdWVzKT09PSJmdW5jdGlvbiJ9CmZ1bmN0aW9uIEJNKGEpe2lmKCFBTShhKSlyZXR1cm4gbnVsbDt2YXIgYj15TShhKTtpZihiLnVhY2hfcHJvbWlzZSlyZXR1cm4gYi51YWNoX3Byb21pc2U7dmFyIGM9YS5uYXZpZ2F0b3IudXNlckFnZW50RGF0YS5nZXRIaWdoRW50cm9weVZhbHVlcyh4TSkudGhlbihmdW5jdGlvbihkKXtiLnVhY2ghPW51bGx8fChiLnVhY2g9ZCk7cmV0dXJuIGR9KTtyZXR1cm4gYi51YWNoX3Byb21pc2U9Y307CnZhciBDTT1mdW5jdGlvbigpe3RoaXMud2luZG93PUE7dGhpcy5OPU5ifTtDTS5wcm90b3R5cGUuUj1mdW5jdGlvbigpe2lmKEFNKHRoaXMud2luZG93KSYmKHRoaXMuWj10aGlzLk4oKSwhek0odGhpcy53aW5kb3cpKSl7dmFyIGE9Qk0odGhpcy53aW5kb3cpO2EmJmEudGhlbihmdW5jdGlvbigpe1AoOTUpfSkuY2F0Y2goZnVuY3Rpb24oKXtQKDk2KX0pfX07Q00ucHJvdG90eXBlLkg9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLndpbmRvdy5nb29nbGVfdGFnX2RhdGEsYjtpZihhIT1udWxsJiZhLnVhY2gpe3ZhciBjPWEudWFjaCxkPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYyk7Yy5mdWxsVmVyc2lvbkxpc3QmJihkLmZ1bGxWZXJzaW9uTGlzdD1jLmZ1bGxWZXJzaW9uTGlzdC5zbGljZSgwKSk7Yj1kfWVsc2UgYj1udWxsO3JldHVybiBifTtDTS5wcm90b3R5cGUuZmE9ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPXRoaXMsZD1mdW5jdGlvbihoLGwpe3RyeXthKGgsbCl9Y2F0Y2gobil7fX0sCmU9dGhpcy5IKCk7aWYoZSlkKGUpO2Vsc2V7dmFyIGY9ek0odGhpcy53aW5kb3cpO2lmKGYpe2I9TWF0aC5taW4oTWF0aC5tYXgoaXNGaW5pdGUoYik/YjowLDApLDFFMyk7dmFyIGc9dGhpcy53aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe2QuS2d8fChkLktnPSEwLFAoMTA2KSxkKG51bGwsRXJyb3IoIlRpbWVvdXQiKSkpfSxiKTtmLnRoZW4oZnVuY3Rpb24oaCl7ZC5LZ3x8KGQuS2c9ITAsUCgxMDQpLGMud2luZG93LmNsZWFyVGltZW91dChnKSxkKGgpKX0pLmNhdGNoKGZ1bmN0aW9uKGgpe2QuS2d8fChkLktnPSEwLFAoMTA1KSxjLndpbmRvdy5jbGVhclRpbWVvdXQoZyksZChudWxsLGgpKX0pfWVsc2UgZChudWxsKX19O0NNLnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuWiE9PXZvaWQgMH07dmFyIERNPWZ1bmN0aW9uKCl7dmFyIGE7YT1hPT09dm9pZCAwP0E6YTtyZXR1cm4gQU0oYSl9LEVNPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2JbRi5ELmNnXT1hLmFyY2hpdGVjdHVyZTsKYltGLkQuZGddPWEuYml0bmVzczthLmZ1bGxWZXJzaW9uTGlzdCYmKGJbRi5ELmVnXT1hLmZ1bGxWZXJzaW9uTGlzdC5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChjLmJyYW5kfHwiIikrIjsiK2VuY29kZVVSSUNvbXBvbmVudChjLnZlcnNpb258fCIiKX0pLmpvaW4oInwiKSk7YltGLkQuZmddPWEubW9iaWxlPyIxIjoiMCI7YltGLkQuZ2ddPWEubW9kZWw7YltGLkQuaGddPWEucGxhdGZvcm07YltGLkQuaWddPWEucGxhdGZvcm1WZXJzaW9uO2JbRi5ELmpnXT1hLndvdzY0PyIxIjoiMCI7cmV0dXJuIGJ9LEZNPW5ldyBDTTt2YXIgR009ZnVuY3Rpb24oYSl7aWYoIURNKCkpUCg4Nyk7ZWxzZSBpZihGTS5LKCkpe1AoODUpO3ZhciBiPUZNLkgoKTtpZihiKXtpZihiKWZvcih2YXIgYz1FTShiKSxkPW0oT2JqZWN0LmtleXMoYykpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlO1UoYSxmLGNbZl0pfX1lbHNlIFAoODYpfX07ZnVuY3Rpb24gSE0oYSxiKXtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYz1RKGEsSC5KLnNnKSxkPWRJKGEsImN1c3RvbV9ldmVudF9hY2NlcHRfcnVsZXMiLCExKSYmIWI7aWYoYyl7dmFyIGU9Yy5pbmRleE9mKGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQpPj0wLGY9ITA7UShhLEguSi5DYykmJihmPVEoYSxILkouTmIpPT09dmsoKSk7ZSYmZj9WKGEsSC5KLmtpLCEwKTooVihhLEguSi5raSwhMSksZHx8KGEuaXNBYm9ydGVkPSEwKSk7aWYoYS5jYW5CZUFjY2VwdGVkKCkpe3ZhciBnPXVrKCkuaW5kZXhPZihhLnRhcmdldC5kZXN0aW5hdGlvbklkKT49MCxoPSExO2lmKCFnKXt2YXIgbCxuPShsPW5rKGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQpKT09bnVsbD92b2lkIDA6bC5jYW5vbmljYWxDb250YWluZXJJZDtuJiYoaD12aygpPT09bil9Z3x8aD9RKGEsSC5KLmtpKSYmYS5hY2NlcHQoKTphLmlzQWJvcnRlZD0hMH1lbHNlIGEuaXNBYm9ydGVkPSEwfX07dmFyIElNPWZ1bmN0aW9uKGEpe3ZhciBiPU8oYS5NLEYuRC5aYyksYz1PKGEuTSxGLkQuWWMpO2ImJiFjPyhhLmV2ZW50TmFtZSE9PUYuRC53YSYmYS5ldmVudE5hbWUhPT1GLkQueWYmJlAoMTMxKSxhLmlzQWJvcnRlZD0hMCk6IWImJmMmJihQKDEzMiksYS5pc0Fib3J0ZWQ9ITApfTt2YXIgSk09ZnVuY3Rpb24oYSl7aWYoYS5ldmVudE5hbWU9PT1GLkQud2Epe3ZhciBiPUlmKDExKSxjPVEoYSxILkouSHEpOyEoIU0oNTUwKSYmYnx8Yyl8fGEudGFyZ2V0LkpjKCl8fFlHKCJpZGNfY29uZmlnX3B2IixhLnRhcmdldC5kZXN0aW5hdGlvbklkKXx8KGEuaXNBYm9ydGVkPSEwKX19O3ZhciBMTT1mdW5jdGlvbihhLGIpe0tNLk4oYSxiKX0sTU09ZnVuY3Rpb24oKXt0aGlzLkg9e319O01NLnByb3RvdHlwZS5OPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5IW2FdO2N8fChjPXRoaXMuSFthXT1bXSk7Yy5wdXNoKGIpfTtNTS5wcm90b3R5cGUuSz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLkhbYS50YXJnZXQuZGVzdGluYXRpb25JZF07aWYoIWEuaXNBYm9ydGVkJiZiKWZvcih2YXIgYz1mSShhKSxkPTA7ZDxiLmxlbmd0aDsrK2Qpe3RyeXtiW2RdKGMpfWNhdGNoKGUpe2EuaXNBYm9ydGVkPSEwfWlmKGEuaXNBYm9ydGVkKWJyZWFrfX07dmFyIEtNPW5ldyBNTTt2YXIgTk09ZnVuY3Rpb24oYSl7S00uSyhhKTt9O3ZhciBPTT1mdW5jdGlvbihhKXthJiYoQXAoNDk1LGEpLEFwKDU2NyxhKSxBcCg0NTAsYSksQXAoNDQzLGEpLEFwKDU4NyxhKSxBcCg1NzYsYSksQXAoNTcwLGEpLEFwKDU4MSxhKSxBcCg2MDIsYSkpfSxQTT1mdW5jdGlvbihhKXtpZihRKGEsSC5KLndmKSYmWG8oZnApKXt2YXIgYj1RKGEsSC5KLkdhKSxjPVEoYSxILkouZGEpIT09WC5WLnViJiZRKGEsSC5KLmRhKSE9PVguVi5PYiYmUShhLEguSi5kYSkhPT1YLlYuRmImJmEuZXZlbnROYW1lIT09Ri5ELkpiO0h2KGIsYyk7dmFyIGQ9RHZbR3YoYi5wcmVmaXgpXTtPTShkKTtVKGEsRi5ELkVkLGQpfX07ZnVuY3Rpb24gUU0oKXtyZXR1cm4ga2ooImRlZHVwZV9nY2xpZCIsZnVuY3Rpb24oKXtyZXR1cm4gQXYoKX0pfTt2YXIgUk09L14od3d3XC4pP2dvb2dsZShcLmNvbT8pPyhcLlthLXpdezJ9dD8pPyQvLFNNPS9ed3d3Lmdvb2dsZWFkc2VydmljZXMuY29tJC87ZnVuY3Rpb24gVE0oYSl7YXx8KGE9VU0oKSk7cmV0dXJuIGEuTnQ/ITE6YS5uc3x8YS5xc3x8YS52c3x8YS5yc3x8YS5EZ3x8YS5UaHx8YS5Ucnx8YS5WaD09PSJhdy5kcyJ8fE0oMjM1KSYmYS5WaD09PSJhdy5kdiJ8fGEuWXI/ITA6ITF9CmZ1bmN0aW9uIFVNKCl7dmFyIGE9e30sYj1VcSghMCk7YS5OdD0hIWIuX3VwO3ZhciBjPWVzKCksZD1hdCgpO2EubnM9Yy5hdyE9PXZvaWQgMDthLnFzPWMuZGMhPT12b2lkIDA7YS52cz1jLndicmFpZCE9PXZvaWQgMDthLnJzPWMuZ2JyYWlkIT09dm9pZCAwO2EuVmg9dHlwZW9mIGMuZ2Nsc3JjPT09InN0cmluZyI/Yy5nY2xzcmM6dm9pZCAwO2EuRGc9ZC5EZzthLlRoPWQuVGg7dmFyIGU9Qi5yZWZlcnJlcj9MaihSaihCLnJlZmVycmVyKSwiaG9zdCIpOiIiO2EuWXI9Uk0udGVzdChlKTthLlRyPVNNLnRlc3QoZSk7cmV0dXJuIGF9O2Z1bmN0aW9uIFZNKCl7dmFyIGE9QS5fX3VzcGFwaTtpZih5YihhKSl7dmFyIGI9IiI7dHJ5e2EoImdldFVTUERhdGEiLDEsZnVuY3Rpb24oYyxkKXtpZihkJiZjKXt2YXIgZT1jLnVzcFN0cmluZztlJiZSZWdFeHAoIl5bXFxkYS16QS1aLV17MSwyMH0kIikudGVzdChlKSYmKGI9ZSl9fSl9Y2F0Y2goYyl7fXJldHVybiBifX07CnZhciBXTT1mdW5jdGlvbihhKXt2YXIgYj1YbyhmcCk7VihhLEguSi5ZZSxPKGEuTSxGLkQubWIpIT1udWxsJiZPKGEuTSxGLkQubWIpIT09ITEmJiFiKTt2YXIgYz1RKGEsSC5KLmRqKSxkPU8oYS5NLEYuRC51YykhPT0hMSxlPUxLKGEpO2R8fFUoYSxGLkQuSGQsIjEiKTt2YXIgZj1IcihlLnByZWZpeCksZz1RKGEsSC5KLnNhKXx8UShhLEguSi51Zyl8fFEoYSxILkouV2UpO2N8fGd8fFUoYSwiXyZhcHZjIiwiMCIpO2EuTS5pc0d0bUV2ZW50JiZVKGEsRi5ELklsLCJnIik7VShhLEYuRC5FZCk7VShhLEYuRC5NYik7aWYoYiYmKFUoYSxGLkQuTWIseUwoKSksZCkpe0h2KGUpO3ZhciBoPUR2W0d2KGUucHJlZml4KV07VShhLEYuRC5FZCxoKTtPTShoKX1pZihhLmV2ZW50TmFtZT09PUYuRC53YSYmIWcpe3ZhciBsPU8oYS5NLEYuRC56Yyksbj1PKGEuTSxGLkQuRGIpfHx7fTtQSyh7VG46ZCxtbzpuLFFvOmwsVW46ZX0pOyFjJiZZcyhmKSYmKFYoYSxILkoudmQsITApLFUoYSwiXyZhcHZjIiwKIjEiKSl9aWYoYylhLmlzQWJvcnRlZD0hMDtlbHNle2EudGFyZ2V0LmRlc3RpbmF0aW9uSWQmJlUoYSxGLkQuUWUsYS50YXJnZXQuZGVzdGluYXRpb25JZCk7VShhLEYuRC5VYixhLmV2ZW50TmFtZSk7YS5ldmVudE5hbWU9PT1GLkQud2EmJlUoYSxGLkQuVWIsRi5ELnNjKTtpZihRKGEsSC5KLnNhKSlVKGEsRi5ELlViLEYuRC53cCksVShhLEYuRC5zYSwiMSIpO2Vsc2UgaWYoUShhLEguSi51ZykpVShhLEYuRC5VYixGLkQuSHApO2Vsc2UgaWYoUShhLEguSi5XZSkpVShhLEYuRC5VYixGLkQuRXApO2Vsc2V7dmFyIHA9ZXMoKTtVKGEsRi5ELkRkLHAuZ2NsaWQpO1UoYSxGLkQuS2QscC5kY2xpZCk7VShhLEYuRC5BbCxwLmdjbHNyYyk7aWYoIVIoYSxGLkQuRGQpJiYhUihhLEYuRC5LZCl8fE0oNDIxKSlVKGEsRi5ELkVlLHAud2JyYWlkKSxVKGEsRi5ELkJmLHAuZ2JyYWlkKTt2YXIgcT1NKDU4OSkscj1mdW5jdGlvbihmYSl7cmV0dXJuIGZhLnJlcGxhY2UoL1tcPyNdLiokLywiIil9LAp0PSEhTyhhLk0sRi5ELnphKSx1PXE/dD9mdW5jdGlvbihmYSl7cmV0dXJuIHhMKHIoZmEpKX06ZnVuY3Rpb24oZmEpe3JldHVybiB4TChmYS5yZXBsYWNlKC8jLiokLywiIikpfTpyLHY9YnQodSk7VShhLEYuRC56YSx2KTt2YXIgeD0hIU8oYS5NLEYuRC5VYSkseT1CLnJlZmVycmVyO1UoYSxGLkQuVWEscT94P3IoeSk6eS5yZXBsYWNlKC8jLiokLywiIik6Qi5yZWZlcnJlcj9MaihSaihCLnJlZmVycmVyKSwiaG9zdCIpOiIiKTt3TChhLHYsdSwhMCk7aWYoS2Mpe3ZhciB6PUxqKFJqKEtjKSwiaG9zdCIpO3omJlUoYSxGLkQuYm0seil9aWYoIVEoYSxILkouV2UpKXt2YXIgQz1hdCgpO1UoYSxGLkQuemYsQy5EZyk7VShhLEYuRC5BZixDLlNyKX12YXIgRD1VTSgpO1RNKEQpJiZVKGEsRi5ELlBkLCIxIik7VShhLEYuRC5EbCxRTSgpKTtVcSghMSkuX3VwPT09IjEiJiZVKGEsRi5ELlFsLCIxIil9d28uSD0hMDtVKGEsRi5ELlNiKTtVKGEsRi5ELmxiKTtpZihNKDQyMSkpe3ZhciBJPUZyKGUpOwpJLmxlbmd0aD4wJiZVKGEsRi5ELlNiLEkuam9pbigiLiIpKTt2YXIgRz1EcihmKyJfYXciKTtHLmxlbmd0aD4wJiZVKGEsRi5ELmxiLEcuam9pbigiLiIpKX1lbHNlIGlmKCFSKGEsRi5ELkRkKSYmIVIoYSxGLkQuS2QpJiZXcyhmKSl7dmFyIE49RnIoZSk7Ti5sZW5ndGg+MCYmVShhLEYuRC5TYixOLmpvaW4oIi4iKSl9ZWxzZSBpZighUihhLEYuRC5FZSkmJmIpe3ZhciBTPURyKGYrIl9hdyIpO1MubGVuZ3RoPjAmJlUoYSxGLkQubGIsUy5qb2luKCIuIikpfVUoYSxGLkQuVWwscWQoKSk7YS5NLmlzR3RtRXZlbnQmJihhLk0uRWFbRi5ELlJjXT1mRChGLkQuUmMpKTtTdChhLk0pP1UoYSxGLkQuZGUsITEpOlUoYSxGLkQuZGUsITApO1YoYSxILkouQmssITApO3ZhciBXPVZNKCk7VyE9PXZvaWQgMCYmVShhLEYuRC5rZyxXfHwiZXJyb3IiKTt2YXIgZWE9THQoKTtlYSYmVShhLEYuRC5LZSxlYSk7dmFyIGphPUt0KCk7amEmJlUoYSxGLkQuT2UsamEpO1EoYSxILkouUGMpfHxWKGEsSC5KLkphLAohMSl9fTsKdmFyIFhNPWZ1bmN0aW9uKGEsYixjKXtiPWI9PT12b2lkIDA/ITA6YjtjPWM9PT12b2lkIDA/e306YztpZihhLmV2ZW50TmFtZT09PUYuRC5KYiYmIWEuTS5pc0d0bUV2ZW50KXt2YXIgZD1PKGEuTSxGLkQuU2YpO2lmKHR5cGVvZiBkPT09ImZ1bmN0aW9uIiYmIVEoYSxILkouc2EpKXt2YXIgZT1TdHJpbmcoTyhhLk0sRi5ELlRmKSksZj1lO2NbZV0mJihmPWNbZV0pO3ZhciBnPVIoYSxmKXx8TyhhLk0sZSk7aWYoYil7aWYodHlwZW9mIGQ9PT0iZnVuY3Rpb24iKWlmKGU9PT1GLkQubGImJmchPT12b2lkIDApe3ZhciBoPWcuc3BsaXQoIi4iKTtoLmxlbmd0aD09PTA/ZCh2b2lkIDApOmgubGVuZ3RoPT09MT9kKGhbMF0pOmQoaCl9ZWxzZSBpZihlPT09Ri5ELnFxJiZNKDI1OCkpe3ZhciBsLG49e307WG8oZnApJiYobi5hdWlkPVIoYSxGLkQuRWQpKTt2YXIgcD1VTSgpO2lmKFRNKHApKW4uZ2FkX3NvdXJjZT1wLkRnLG4uZ2FkX2NhbXBhaWduaWQ9cC5UaCxuLnNlc3Npb25fc3RhcnRfdGltZV91c2VjPQooRGF0ZS5ub3coKSoxRTMpLnRvU3RyaW5nKCksbi5sYW5kaW5nX3BhZ2VfdXJsPUEubG9jYXRpb24uaHJlZixuLmxhbmRpbmdfcGFnZV9yZWZlcnJlcj1CLnJlZmVycmVyLG4ubGFuZGluZ19wYWdlX3VzZXJfYWdlbnQ9SGMudXNlckFnZW50O2Vsc2V7dmFyIHE9UShhLEguSi5HYSk7bi5nYWRfc291cmNlPVJzKHEucHJlZml4KS5FZ31sPWJ0b2EoSlNPTi5zdHJpbmdpZnkobikpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPSskLywiIik7ZChsKX1lbHNlIGQoZyl9ZWxzZSBkKGcpfWEuaXNBYm9ydGVkPSEwfX07dmFyIFlNPWZ1bmN0aW9uKGEpe2lmKE0oNDI1KSYmUShhLEguSi5GYykpe2Zvcih2YXIgYj1bIl8mYXB2YyIsInRpZHMiLEYuRC5UYSxGLkQuUWksRi5ELlViLEYuRC5RZSxGLkQuVmMsRi5ELlhjXSxjPW0oZXUoYSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlO2lmKGU9PT1GLkQuemEpe3ZhciBmPVIoYSxlKTtmJiYoZj1mLnJlcGxhY2UoL1tcPyNdLiokLywiIikpO1UoYSxlLGYpfWVsc2UgYi5pbmNsdWRlcyhlKXx8VShhLGUpfVYoYSxILkouWGcpO1YoYSxILkouaGQpfX07ZnVuY3Rpb24gWk0oYSl7aWYoZm4uSylpZih3by5IPSEwLGEuZXZlbnROYW1lPT09Ri5ELndhKXpvKGEuTSxhLnRhcmdldC5pZCk7ZWxzZXtRKGEsSC5KLlBjKXx8KHdvLktbYS50YXJnZXQuaWRdPSEwKTt2YXIgYj1RKGEsSC5KLk5iKTtaQihiKX19O3ZhciAkTT1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPWI9PT12b2lkIDA/e306YjtjPWYuU2o9PT12b2lkIDA/ITE6Zi5TajtkPWYuTWo9PT12b2lkIDA/ITE6Zi5NajtlPWYua289PT12b2lkIDA/ITE6Zi5rbztkfHwoYS5NLmlzR3RtRXZlbnQ/UShhLEguSi5kYSkhPT1YLlYueGEmJmEuZXZlbnROYW1lJiZVKGEsRi5ELlViLGEuZXZlbnROYW1lKTpVKGEsRi5ELlViLGEuZXZlbnROYW1lKSk7R2IoYS5NLkVhLGZ1bmN0aW9uKGcsaCl7TXpbZ118fGMmJkJvW2ddfHxlJiZPeltnXXx8VShhLGcsaCl9KX07dmFyIGFOPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1tKFtGLkQuUGEsRi5ELlFhLEYuRC5lYixGLkQuTmUsRi5ELkdlLEYuRC5VZCxGLkQuSWUsRi5ELlRjLEYuRC5MZCxGLkQua2gsRi5ELkZmLEYuRC5EZixGLkQuRWYsRi5ELkNmLEYuRC53aSxGLkQuU2QsRi5ELlFkLEYuRC5SZCxGLkQudGJdKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSlhLmNvcHlUb0hpdERhdGEoYy52YWx1ZSl9O2Z1bmN0aW9uIGJOKGEsYil7cmV0dXJuIGtyKCJnc2lkX2RjIix7dmFsdWU6e2pvaW5JZDphLGxhc3RKb2luZWRUaW1lTXM6Yn0sZXhwaXJlczpiKzNFNX0pPT09MD8hMDohMX07CnZhciBjTj1mdW5jdGlvbihhKXtpZihYbyhmcCkpe3ZhciBiO2E6e3ZhciBjPW5yKCJnc2lkX2RjIik7aWYoYy5lcnJvcj09PTAmJmMudmFsdWUmJnR5cGVvZiBjLnZhbHVlPT09Im9iamVjdCIpe3ZhciBkPWMudmFsdWU7aWYoZC52YWx1ZSYmdHlwZW9mIGQudmFsdWU9PT0ib2JqZWN0Iil7dmFyIGU9ZC52YWx1ZTtpZihlLmpvaW5JZCYmZS5sYXN0Sm9pbmVkVGltZU1zJiZ0eXBlb2YgZS5qb2luSWQ9PT0ic3RyaW5nIiYmdHlwZW9mIGUubGFzdEpvaW5lZFRpbWVNcz09PSJudW1iZXIiKXtiPWU7YnJlYWsgYX19fWI9dm9pZCAwfXZhciBmPWIsZz1mPT1udWxsP3ZvaWQgMDpmLmpvaW5JZCxoPU5iKCk7aWYoIWZ8fCFnfHxmLmxhc3RKb2luZWRUaW1lTXM8aC0zRTUpe3ZhciBsPWNjKCk7Zz1sJiZiTihsLE5iKCkpP2w6dm9pZCAwO2cmJlYoYSxILkouaGQsITApfWVsc2UgZyYmZi5sYXN0Sm9pbmVkVGltZU1zPGgtNkU0JiZiTihmLmpvaW5JZCxoKSYmVihhLEguSi5oZCwhMCk7ZyYmTSg0NzQpJiYKVihhLEguSi5YZyxnKX19O3ZhciBkTj1mdW5jdGlvbihhKXtWKGEsSC5KLndmLE8oYS5NLEYuRC51YykhPT0hMSk7VihhLEguSi5HYSxMSyhhKSk7VihhLEguSi5YZSxPKGEuTSxGLkQubWIpIT1udWxsJiZPKGEuTSxGLkQubWIpIT09ITEpO1YoYSxILkoud2QsU3QoYS5NKSl9O3ZhciBlTj17enE6e1V0OiJjZCIsZnA6ImNlIixWdDoiY2YiLFd0OiJjcGYiLFh0OiJjdSJ9fTt2YXIgZk49ZnVuY3Rpb24oYSl7dmFyIGI9ZU4uenEuZnAsYz1PKGEuTSxGLkQuQ2IpO1IoYSxGLkQuZWQpfHxVKGEsRi5ELmVkLHt9KTtSKGEsRi5ELmVkKVtiXT1jfTtmdW5jdGlvbiBnTihhLGIpe2I9Yj09PXZvaWQgMD8hMDpiO3ZhciBjPXdiKHJiLkdUQUdfRVZFTlRfRkVBVFVSRV9DSEFOTkVMfHxbXSk7YyYmKFUoYSxGLkQuVmYsYyksYiYmdWIoKSl9O3ZhciBoTj1mdW5jdGlvbihhKXt2YXIgYj1hLk0uZ2V0TWVyZ2VkVmFsdWVzKEYuRC5UYSk7YiYmYS5tZXJnZUhpdERhdGFGb3JLZXkoRi5ELlRhLGIpfTt2YXIgaU49ZnVuY3Rpb24oYSl7dmFyIGI9T3AoITEpO1UoYSxGLkQuTWUsYil9O3ZhciBqTj1mdW5jdGlvbihhKXtRKGEsSC5KLndkKT9VKGEsRi5ELmRlLCIwIik6VShhLEYuRC5kZSwiMSIpfTt2YXIga049ZnVuY3Rpb24oYSxiKXtpZihiPT09dm9pZCAwfHxiKXt2YXIgYz1WTSgpO2MhPT12b2lkIDAmJlUoYSxGLkQua2csY3x8ImVycm9yIil9dmFyIGQ9THQoKTtkJiZVKGEsRi5ELktlLGQpO3ZhciBlPUt0KCk7ZSYmVShhLEYuRC5PZSxlKX07dmFyIGxOPWZ1bmN0aW9uKGEpe3ZhciBiPW5tKGptLmJhLmtqKSxjPUUoNSk7YiYmYltjXSYmYS5tZXJnZUhpdERhdGFGb3JLZXkoRi5ELlRhLHtyZXRyeToiMSJ9KX07dmFyIG1OPWZ1bmN0aW9uKGEpe1VxKCExKS5fdXA9PT0iMSImJlUoYSxGLkQuS2ksIjEiKX07CnZhciBuTj1mdW5jdGlvbihhLGIsYyl7aWYoYSE9PXZvaWQgMClyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hLm1hcChmdW5jdGlvbigpe3JldHVybnttb2RlOiJtIixsb2NhdGlvbjpiLHNlbGVjdG9yOmN9fSk6e21vZGU6Im0iLGxvY2F0aW9uOmIsc2VsZWN0b3I6Y319LG9OPWZ1bmN0aW9uKGEsYixjLGQpe2lmKCFjKXJldHVybiExO2Zvcih2YXIgZT1TdHJpbmcoYy52YWx1ZSksZixnPXZvaWQgMCxoPWUucmVwbGFjZSgvXFsiPyc/L2csIi4iKS5yZXBsYWNlKC8iPyc/XF0vZywiIikuc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24odSl7cmV0dXJuIHUudHJpbSgpfSkuZmlsdGVyKGZ1bmN0aW9uKHUpe3JldHVybiB1JiYhU2IodSwiIyIpJiYhU2IodSwiLiIpfSksbD0wO2w8aC5sZW5ndGg7bCsrKXt2YXIgbj1oW2xdO2lmKFNiKG4sImRhdGFMYXllci4iKSlmPXVBKG4uc3Vic3RyaW5nKDEwKSksZz1uTihmLCJkIixuKTtlbHNle3ZhciBwPW4uc3BsaXQoIi4iKTtmPUFbcC5zaGlmdCgpXTsKZm9yKHZhciBxPTA7cTxwLmxlbmd0aDtxKyspZj1mJiZmW3BbcV1dO2c9bk4oZiwiaiIsbil9aWYoZiE9PXZvaWQgMClicmVha31pZihmPT09dm9pZCAwKXRyeXt2YXIgcj1CLnF1ZXJ5U2VsZWN0b3JBbGwoZSk7aWYociYmci5sZW5ndGg+MCl7Zj1bXTtmb3IodmFyIHQ9MDt0PHIubGVuZ3RoJiZ0PChiPT09ImVtYWlsInx8Yj09PSJwaG9uZV9udW1iZXIiPzU6MSk7dCsrKWYucHVzaChmZChyW3RdKXx8TGIoclt0XS52YWx1ZSkpO2Y9Zi5sZW5ndGg9PT0xP2ZbMF06ZjtnPW5OKGYsImMiLGUpfX1jYXRjaCh1KXtQKDE0OSl9cmV0dXJuIGY/KGFbYl09ZixkJiZnJiYoZFtiXT1nKSwhMCk6ITF9Owp2YXIgcE49ZnVuY3Rpb24oYSl7aWYoZEkoYSwiY2NkX2FkZF8xcF9kYXRhIiwhMSkmJlhvKGZwKSl7dmFyIGI9YS5NLmliW0YuRC5sbV07aWYoQ2QoYikmJmIuZW5hYmxlX2NvZGUpe3ZhciBjPU8oYS5NLEYuRC5BYyk7aWYoYz09PW51bGwpVihhLEguSi5HbixudWxsKTtlbHNlIGlmKGIuZW5hYmxlX2NvZGUmJkNkKGMpJiYoWnYoYyksVihhLEguSi5HbixjKSksQ2QoYi5zZWxlY3RvcnMpKXt2YXIgZD1ILkouaXIsZTt2YXIgZj1iLnNlbGVjdG9ycyxnPU0oNTIzKTtnPWc9PT12b2lkIDA/ITE6ZztpZihmKXt2YXIgaD17fSxsPSExLG49e307bD1vTihoLCJlbWFpbCIsZi5lbWFpbCxuKXx8bDtsPW9OKGgsInBob25lX251bWJlciIsZi5waG9uZSxuKXx8bDtoLmFkZHJlc3M9W107Zm9yKHZhciBwPWYubmFtZV9hbmRfYWRkcmVzc3x8W10scT0wO3E8cC5sZW5ndGg7cSsrKXt2YXIgcj17fSx0PXt9O2w9b04ociwiZmlyc3RfbmFtZSIscFtxXS5maXJzdF9uYW1lLHQpfHxsO2w9b04ociwKImxhc3RfbmFtZSIscFtxXS5sYXN0X25hbWUsdCl8fGw7bD1vTihyLCJzdHJlZXQiLHBbcV0uc3RyZWV0LHQpfHxsO2w9b04ociwiY2l0eSIscFtxXS5jaXR5LHQpfHxsO2w9b04ociwicmVnaW9uIixwW3FdLnJlZ2lvbix0KXx8bDtsPW9OKHIsImNvdW50cnkiLHBbcV0uY291bnRyeSx0KXx8bDtsPW9OKHIsInBvc3RhbF9jb2RlIixwW3FdLnBvc3RhbF9jb2RlLHQpfHxsO2guYWRkcmVzcy5wdXNoKHIpO2cmJihyLl90YWdfbWV0YWRhdGE9dCl9ZyYmKGguX3RhZ19tZXRhZGF0YT1uKTtlPWw/aDp2b2lkIDB9ZWxzZSBlPXZvaWQgMDtWKGEsZCxlKX19fX07ZnVuY3Rpb24gRk8oYSxiLGMsZCl7fUZPLlA9ImludGVybmFsLmV4ZWN1dGVFdmVudFByb2Nlc3NvciI7ZnVuY3Rpb24gR08oYSl7dmFyIGI7cmV0dXJuIFVkKGIsdGhpcy5ULDEpfUdPLlA9ImludGVybmFsLmV4ZWN1dGVKYXZhc2NyaXB0U3RyaW5nIjtmdW5jdGlvbiBITyhhKXt2YXIgYjtpZighbGgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyJdLGFyZ3VtZW50cyk7dmFyIGM9QTt0cnl7Yj1LaihjLmVzY2FwZShjLmF0b2IoYSkpKX1jYXRjaChkKXtyZXR1cm59cmV0dXJuIGJ9O2Z1bmN0aW9uIElPKGEpe3ZhciBiPSIiO3JldHVybiBifUlPLlA9ImludGVybmFsLmdlbmVyYXRlQ2xpZW50SWQiO2Z1bmN0aW9uIEpPKGEpe3ZhciBiPXt9O3JldHVybiBVZChiKX1KTy5QPSJpbnRlcm5hbC5nZXRBZHNDb29raWVXcml0aW5nT3B0aW9ucyI7ZnVuY3Rpb24gS08oYSxiKXt2YXIgYz0hMTtyZXR1cm4gY31LTy5QPSJpbnRlcm5hbC5nZXRBbGxvd0FkUGVyc29uYWxpemF0aW9uIjtmdW5jdGlvbiBMTygpe3ZhciBhO3JldHVybiBhfUxPLlA9ImludGVybmFsLmdldEFuZFJlc2V0RXZlbnRVc2FnZSI7ZnVuY3Rpb24gTU8oYSxiKXtiPWI9PT12b2lkIDA/ITA6Yjt2YXIgYztyZXR1cm4gY31NTy5QPSJpbnRlcm5hbC5nZXRBdWlkIjtmdW5jdGlvbiBOTygpe3ZhciBhPVtdO3JldHVybiBVZChhKX1OTy5QPSJpbnRlcm5hbC5nZXRDb250YWluZXJJZHMiO2Z1bmN0aW9uIE9PKCl7dmFyIGE9bmV3IGtiO0wodGhpcywicmVhZF9jb250YWluZXJfZGF0YSIpLGEuc2V0KCJjb250YWluZXJJZCIsaWcpLGEuc2V0KCJ2ZXJzaW9uIixrZyksYS5zZXQoImVudmlyb25tZW50TmFtZSIsamcpLGEuc2V0KCJkZWJ1Z01vZGUiLGxnKSxhLnNldCgicHJldmlld01vZGUiLG1nLlBvKSxhLnNldCgiZW52aXJvbm1lbnRNb2RlIixtZy5LciksYS5zZXQoImZpcnN0UGFydHlTZXJ2aW5nIixhaygpKSxhLnNldCgiY29udGFpbmVyVXJsIixLYyksYS5zZXQoImlzR29vZ2xlT25seU1vZGUiLElmKDYyKSksYS5aYSgpO3JldHVybiBhfU9PLnB1YmxpY05hbWU9ImdldENvbnRhaW5lclZlcnNpb24iO2Z1bmN0aW9uIFBPKGEsYil7Yj1iPT09dm9pZCAwPyEwOmI7dmFyIGM7cmV0dXJuIGN9UE8ucHVibGljTmFtZT0iZ2V0Q29va2llVmFsdWVzIjtmdW5jdGlvbiBRTygpe3ZhciBhPSIiO3JldHVybiBhfVFPLlA9ImludGVybmFsLmdldENvcmVQbGF0Zm9ybVNlcnZpY2VzUGFyYW0iO2Z1bmN0aW9uIFJPKCl7cmV0dXJuIHltKCl9Uk8uUD0iaW50ZXJuYWwuZ2V0Q291bnRyeUNvZGUiO2Z1bmN0aW9uIFNPKCl7dmFyIGE9W107YT10aygpO3JldHVybiBVZChhKX1TTy5QPSJpbnRlcm5hbC5nZXREZXN0aW5hdGlvbklkcyI7ZnVuY3Rpb24gVE8oYSl7dmFyIGI9bmV3IGtiO3JldHVybiBifVRPLlA9ImludGVybmFsLmdldERldmVsb3BlcklkcyI7ZnVuY3Rpb24gVU8oYSl7dmFyIGI7cmV0dXJuIGJ9VU8uUD0iaW50ZXJuYWwuZ2V0RWNzaWRDb29raWVWYWx1ZSI7ZnVuY3Rpb24gVk8oYSxiKXt2YXIgYz1udWxsO3JldHVybiBjfVZPLlA9ImludGVybmFsLmdldEVsZW1lbnRBdHRyaWJ1dGUiO2Z1bmN0aW9uIFdPKGEpe3ZhciBiPW51bGw7cmV0dXJuIGJ9V08uUD0iaW50ZXJuYWwuZ2V0RWxlbWVudEJ5SWQiO2Z1bmN0aW9uIFhPKGEpe3ZhciBiPSIiO3JldHVybiBifVhPLlA9ImludGVybmFsLmdldEVsZW1lbnRJbm5lclRleHQiO2Z1bmN0aW9uIFlPKGEpe3ZhciBiPW51bGw7cmV0dXJuIGJ9WU8uUD0iaW50ZXJuYWwuZ2V0RWxlbWVudFBhcmVudCI7ZnVuY3Rpb24gWk8oYSl7dmFyIGI9bnVsbDtyZXR1cm4gYn1aTy5QPSJpbnRlcm5hbC5nZXRFbGVtZW50UHJldmlvdXNTaWJsaW5nIjtmdW5jdGlvbiAkTyhhLGIpe3ZhciBjPW51bGw7cmV0dXJuIFVkKGMpfSRPLlA9ImludGVybmFsLmdldEVsZW1lbnRQcm9wZXJ0eSI7ZnVuY3Rpb24gYVAoYSl7dmFyIGI7cmV0dXJuIGJ9YVAuUD0iaW50ZXJuYWwuZ2V0RWxlbWVudFZhbHVlIjtmdW5jdGlvbiBiUChhKXt2YXIgYj0wO3JldHVybiBifWJQLlA9ImludGVybmFsLmdldEVsZW1lbnRWaXNpYmlsaXR5UmF0aW8iO2Z1bmN0aW9uIGNQKGEpe3ZhciBiPW51bGw7cmV0dXJuIGJ9Y1AuUD0iaW50ZXJuYWwuZ2V0RWxlbWVudHNCeUNzc1NlbGVjdG9yIjsKZnVuY3Rpb24gZFAoYSl7dmFyIGI7aWYoIWxoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciXSxhcmd1bWVudHMpO0wodGhpcywicmVhZF9ldmVudF9kYXRhIixhKTt2YXIgYzthOnt2YXIgZD1hLGU9WEYodGhpcykub3JpZ2luYWxFdmVudERhdGE7aWYoZSl7Zm9yKHZhciBmPWUsZz17fSxoPXt9LGw9e30sbj1bXSxwPWQuc3BsaXQoIlxcXFwiKSxxPTA7cTxwLmxlbmd0aDtxKyspe2Zvcih2YXIgcj1wW3FdLnNwbGl0KCJcXC4iKSx0PTA7dDxyLmxlbmd0aDt0Kyspe2Zvcih2YXIgdT1yW3RdLnNwbGl0KCIuIiksdj0wO3Y8dS5sZW5ndGg7disrKW4ucHVzaCh1W3ZdKSx2IT09dS5sZW5ndGgtMSYmbi5wdXNoKGwpO3QhPT1yLmxlbmd0aC0xJiZuLnB1c2goaCl9cSE9PXAubGVuZ3RoLTEmJm4ucHVzaChnKX1mb3IodmFyIHg9W10seT0iIix6PW0obiksQz16Lm5leHQoKTshQy5kb25lO0M9CnoubmV4dCgpKXt2YXIgRD1DLnZhbHVlO0Q9PT1sPyh4LnB1c2goeSkseT0iIik6eT1EPT09Zz95KyJcXCI6RD09PWg/eSsiLiI6eStEfXkmJngucHVzaCh5KTtmb3IodmFyIEk9bSh4KSxHPUkubmV4dCgpOyFHLmRvbmU7Rz1JLm5leHQoKSl7aWYoZj09bnVsbCl7Yz12b2lkIDA7YnJlYWsgYX1mPWZbRy52YWx1ZV19Yz1mfWVsc2UgYz12b2lkIDB9Yj1VZChjLHRoaXMuVCwxKTtyZXR1cm4gYn1kUC5QPSJpbnRlcm5hbC5nZXRFdmVudERhdGEiO2Z1bmN0aW9uIGVQKGEpe3ZhciBiPW51bGw7aWYoIWxoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciXSxhcmd1bWVudHMpO0wodGhpcywicmVhZF9kb21fZWxlbWVudHMiLCJjc3MiLGEpO3RyeXt2YXIgYz1CLnF1ZXJ5U2VsZWN0b3IoYSk7YyYmKGI9bmV3IFBkKGMpKX1jYXRjaChkKXtyZXR1cm4gbnVsbH1yZXR1cm4gYn1lUC5QPSJpbnRlcm5hbC5nZXRGaXJzdEVsZW1lbnRCeUNzc1NlbGVjdG9yIjtmdW5jdGlvbiBmUCgpe3ZhciBhO3JldHVybiBhfWZQLlA9ImludGVybmFsLmdldEdzYUV4cGVyaW1lbnRJZCI7ZnVuY3Rpb24gZ1AoKXtyZXR1cm4gbmV3IFBkKFBrKX1nUC5QPSJpbnRlcm5hbC5nZXRIdG1sSWQiO2Z1bmN0aW9uIGhQKCl7dmFyIGE7cmV0dXJuIGF9aFAuUD0iaW50ZXJuYWwuZ2V0SWZyYW1pbmdTdGF0ZSI7ZnVuY3Rpb24gaVAoYSxiKXt2YXIgYz17fTtyZXR1cm4gVWQoYyl9aVAuUD0iaW50ZXJuYWwuZ2V0TGlua2VyVmFsdWVGcm9tTG9jYXRpb24iO2Z1bmN0aW9uIGpQKCl7dmFyIGE9bmV3IGtiO3JldHVybiBhfWpQLlA9ImludGVybmFsLmdldFByaXZhY3lTdHJpbmdzIjtmdW5jdGlvbiBrUChhLGIpe3ZhciBjO2lmKCFsaChhKXx8IWxoKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJzdHJpbmciXSxhcmd1bWVudHMpO3ZhciBkPSRIKGEpfHx7fTtjPVVkKGRbYl0sdGhpcy5UKTtyZXR1cm4gY31rUC5QPSJpbnRlcm5hbC5nZXRQcm9kdWN0U2V0dGluZ3NQYXJhbWV0ZXIiO2Z1bmN0aW9uIGxQKGEsYil7dmFyIGM7aWYoIWxoKGEpfHwhcGgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsImJvb2xlYW58dW5kZWZpbmVkIl0sYXJndW1lbnRzKTtMKHRoaXMsImdldF91cmwiLCJxdWVyeSIsYSk7dmFyIGQ9TGooUmooQS5sb2NhdGlvbi5ocmVmKSwicXVlcnkiKSxlPUlqKGQsYSxiKTtjPVVkKGUsdGhpcy5UKTtyZXR1cm4gY31sUC5wdWJsaWNOYW1lPSJnZXRRdWVyeVBhcmFtZXRlcnMiO2Z1bmN0aW9uIG1QKGEsYil7dmFyIGM7cmV0dXJuIGN9bVAucHVibGljTmFtZT0iZ2V0UmVmZXJyZXJRdWVyeVBhcmFtZXRlcnMiO2Z1bmN0aW9uIG5QKGEpe3ZhciBiPSIiO3JldHVybiBifW5QLnB1YmxpY05hbWU9ImdldFJlZmVycmVyVXJsIjtmdW5jdGlvbiBvUCgpe3JldHVybiB6bSgpfW9QLlA9ImludGVybmFsLmdldFJlZ2lvbkNvZGUiO2Z1bmN0aW9uIHBQKGEsYil7dmFyIGM7aWYoIWxoKGEpfHwhbGgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsInN0cmluZyJdLGFyZ3VtZW50cyk7dmFyIGQ9ZUQoYSk7Yz1VZChkW2JdLHRoaXMuVCk7cmV0dXJuIGN9cFAuUD0iaW50ZXJuYWwuZ2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIjtmdW5jdGlvbiBxUChhLGIpe3ZhciBjPW51bGw7CnJldHVybiBjfXFQLlA9ImludGVybmFsLmdldFNjb3BlZEVsZW1lbnRzQnlDc3NTZWxlY3RvciI7ZnVuY3Rpb24gclAoKXt2YXIgYT1uZXcga2I7YS5zZXQoIndpZHRoIiwwKTthLnNldCgiaGVpZ2h0IiwwKTtyZXR1cm4gYX1yUC5QPSJpbnRlcm5hbC5nZXRTY3JlZW5EaW1lbnNpb25zIjtmdW5jdGlvbiBzUCgpe3ZhciBhPSIiO3JldHVybiBhfXNQLlA9ImludGVybmFsLmdldFRvcFNhbWVEb21haW5VcmwiO2Z1bmN0aW9uIHRQKCl7dmFyIGE9IiI7cmV0dXJuIGF9dFAuUD0iaW50ZXJuYWwuZ2V0VG9wV2luZG93VXJsIjtmdW5jdGlvbiB1UChhKXt2YXIgYj0iIjtpZighbWgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZ3x1bmRlZmluZWQiXSxhcmd1bWVudHMpO0wodGhpcywiZ2V0X3VybCIsYSk7Yj1MaihSaihBLmxvY2F0aW9uLmhyZWYpLGEpO3JldHVybiBifXVQLnB1YmxpY05hbWU9ImdldFVybCI7ZnVuY3Rpb24gdlAoKXtMKHRoaXMsImdldF91c2VyX2FnZW50Iik7cmV0dXJuIEhjLnVzZXJBZ2VudH12UC5wdWJsaWNOYW1lPSJnZXRVc2VyQWdlbnQiO3ZQLlA9ImludGVybmFsLmdldFVzZXJBZ2VudCI7ZnVuY3Rpb24gd1AoKXt2YXIgYTtyZXR1cm4gYT9VZChFTShhKSk6YX13UC5QPSJpbnRlcm5hbC5nZXRVc2VyQWdlbnRDbGllbnRIaW50cyI7dmFyIHlQPWZ1bmN0aW9uKGEpe3ZhciBiPWEuZXZlbnROYW1lPT09Ri5ELnNjJiZFbCgpJiZiayhaSyhhKSksYz1RKGEsSC5KLmRuKSxkPVEoYSxILkouS2spLGU9UShhLEguSi5tZyksZj1RKGEsSC5KLlRlKSxnPVEoYSxILkouRmMpLGg9UShhLEguSi5oZCksbD1RKGEsSC5KLnJnKSxuPVEoYSxILkouTWgpLHA9UShhLEguSi5OaCkscT0hIVlLKGEpfHwhIVEoYSxILkoucHApO3JldHVybiEoIW5kKCkmJiFrZCgpfHxlfHxxfHxmfHxnfHxofHxsfHxwfHxufHxifHxjfHwhZCYmeFAoKSl9LHhQPWZ1bmN0aW9uKCl7cmV0dXJuIGFsKDksZnVuY3Rpb24oKXtyZXR1cm4hMX0pfTtmdW5jdGlvbiB6UCgpe3ZhciBhPUE7cmV0dXJuIGEuZ2FHbG9iYWw9YS5nYUdsb2JhbHx8e319ZnVuY3Rpb24gQVAoYSxiKXt2YXIgYz16UCgpO2lmKGMudmlkPT09dm9pZCAwfHxiJiYhYy5mcm9tX2Nvb2tpZSljLnZpZD1hLGMuZnJvbV9jb29raWU9Yn07dmFyIEJQPVsiR0ExIl07CnZhciBDUD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9UShhLEguSi5Qayk7aWYoZD09PXZvaWQgMHx8Yzw9ZClVKGEsRi5ELktiLGIpLFYoYSxILkouUGssYyl9LEVQPWZ1bmN0aW9uKGEsYil7dmFyIGM9UihhLEYuRC5LYik7aWYoTyhhLk0sRi5ELlpjKSYmTyhhLk0sRi5ELlljKXx8YiYmYz09PWIpcmV0dXJuIGM7aWYoYyl7Yz0iIitjO2lmKCFEUChjLGEpKXJldHVybiBQKDMxKSxhLmlzQWJvcnRlZD0hMCwiIjtBUChjLFhvKEYuRC5yYSkpO3JldHVybiBjfVAoMzIpO2EuaXNBYm9ydGVkPSEwO3JldHVybiIifSxGUD1mdW5jdGlvbihhKXt2YXIgYj1RKGEsSC5KLkdhKSxjPWIucHJlZml4KyJfZ2EiLGQ9QnYoYi5wcmVmaXgrIl9nYSIsYi5kb21haW4sYi5wYXRoLEJQLEYuRC5yYSk7aWYoIWQpe3ZhciBlPVN0cmluZyhPKGEuTSxGLkQuSWQsIiIpKTtlJiZlIT09YyYmKGQ9QnYoZSxiLmRvbWFpbixiLnBhdGgsQlAsRi5ELnJhKSl9cmV0dXJuIGR9LERQPWZ1bmN0aW9uKGEsYil7dmFyIGM7CnZhciBkPVEoYixILkouR2EpLGU9ZC5wcmVmaXgrIl9nYSIsZj11cShkLHZvaWQgMCx2b2lkIDAsRi5ELnJhKTtpZihPKGIuTSxGLkQuSmQpPT09ITEmJkZQKGIpPT09YSljPSEwO2Vsc2V7dmFyIGc7Zz1bQlBbMF0sdHEoZC5kb21haW4sZC5wYXRoKSxhXS5qb2luKCIuIik7Yz1vcShlLGcsZikhPT0xfXJldHVybiBjfTsKdmFyIEdQPWZ1bmN0aW9uKGEpe3ZhciBiPTAsYz0wO3JldHVybntzdGFydDpmdW5jdGlvbigpe2I9TmIoKX0sc3RvcDpmdW5jdGlvbigpe2M9dGhpcy5nZXQoKX0sZ2V0OmZ1bmN0aW9uKCl7dmFyIGQ9MDthLlZqKCkmJihkPU5iKCktYik7cmV0dXJuIGQrY319fSxIUD1mdW5jdGlvbigpe3RoaXMuSD12b2lkIDA7dGhpcy5LPTA7dGhpcy5pc0FjdGl2ZT10aGlzLmlzVmlzaWJsZT10aGlzLk49ITE7dGhpcy5aPXRoaXMuUj12b2lkIDB9O2s9SFAucHJvdG90eXBlO2suS3E9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcztpZighdGhpcy5IKXt0aGlzLk49Qi5oYXNGb2N1cygpO3RoaXMuaXNWaXNpYmxlPSFCLmhpZGRlbjt0aGlzLmlzQWN0aXZlPSEwO3ZhciBjPWZ1bmN0aW9uKGUsZixnKXskYyhlLGYsZnVuY3Rpb24oaCl7Yi5ILnN0b3AoKTtnKGgpO2IuVmooKSYmYi5ILnN0YXJ0KCl9KX0sZD1BO2MoZCwiZm9jdXMiLGZ1bmN0aW9uKCl7Yi5OPSEwfSk7YyhkLCJibHVyIixmdW5jdGlvbigpe2IuTj0KITF9KTtjKGQsInBhZ2VzaG93IixmdW5jdGlvbihlKXtiLmlzQWN0aXZlPSEwO2UucGVyc2lzdGVkJiZQKDU2KTtiLlomJmIuWigpfSk7YyhkLCJwYWdlaGlkZSIsZnVuY3Rpb24oKXtiLmlzQWN0aXZlPSExO2IuUiYmYi5SKCl9KTtjKEIsInZpc2liaWxpdHljaGFuZ2UiLGZ1bmN0aW9uKCl7Yi5pc1Zpc2libGU9IUIuaGlkZGVufSk7YmsoWksoYSkpJiYhT2MoKSYmYyhkLCJiZWZvcmV1bmxvYWQiLGZ1bmN0aW9uKCl7WmsoOSwhMCl9KTt0aGlzLnFrKCEwKTt0aGlzLks9MH19O2sucWs9ZnVuY3Rpb24oYSl7aWYoKGE9PT12b2lkIDA/MDphKXx8dGhpcy5IKXRoaXMuSys9dGhpcy5ZaCgpLHRoaXMuSD1HUCh0aGlzKSx0aGlzLlZqKCkmJnRoaXMuSC5zdGFydCgpfTtrLkt0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuWWgoKTtiPjAmJlUoYSxGLkQubmgsYil9O2subHM9ZnVuY3Rpb24oYSl7VShhLEYuRC5uaCk7dGhpcy5xaygpO3RoaXMuSz0wfTtrLlZqPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTiYmCnRoaXMuaXNWaXNpYmxlJiZ0aGlzLmlzQWN0aXZlfTtrLlhyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSyt0aGlzLlloKCl9O2suWWg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IJiZ0aGlzLkguZ2V0KCl8fDB9O2suaHQ9ZnVuY3Rpb24oYSl7dGhpcy5SPWF9O2suQ289ZnVuY3Rpb24oYSl7dGhpcy5aPWF9O3ZhciBJUD1mdW5jdGlvbihhKXtzYigiR0E0X0VWRU5UIixhKX07dmFyIEpQPWZ1bmN0aW9uKGEpe3ZhciBiLGM9UShhLEguSi53bSk7aWYoQXJyYXkuaXNBcnJheShjKSlmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKylJUChjW2RdKTsoYj13YihyYi5HQTRfRVZFTlR8fFtdKSkmJlUoYSwiX2V1IixiKX07CnZhciBNUD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgUmVnRXhwKCJeIisoKChhPT1udWxsP3ZvaWQgMDphLnByZWZpeCl8fCIiKSsiX2dhX1xcdyskIikpLGM9eXEoZnVuY3Rpb24ocCl7cmV0dXJuIGIudGVzdChwKX0pLGQ9e30sZTtmb3IoZSBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkoZSkpe3ZhciBmPUtQKGNbZV0pO2lmKGYpe3ZhciBnPWJxKGYsMik7aWYoZyl7dmFyIGg9TFAoZyk7aWYoaCl7dmFyIGw9dm9pZCAwLG49KCgobD1hKT09bnVsbD92b2lkIDA6bC5wcmVmaXgpfHwiIikubGVuZ3RoKzQ7ZFsiRy0iK2Uuc3Vic3RyaW5nKG4pXT1ofX19fXJldHVybiBkfSxOUD1mdW5jdGlvbihhKXtpZihhKXt2YXIgYjthOnt2YXIgYz0oU2IoYSwicyIpJiZhLmluZGV4T2YoIi4iKT09PS0xPyJHUzIiOiJHUzEiKSsiLjEuIithO3RyeXtiPSRwKGMsMik7YnJlYWsgYX1jYXRjaChkKXt9Yj12b2lkIDB9cmV0dXJuIGJ9fSxLUD1mdW5jdGlvbihhKXtpZihhJiZhLmxlbmd0aCE9PTApe2Zvcih2YXIgYiwKYz0tSW5maW5pdHksZD1tKGEpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlO2lmKGYudCE9PXZvaWQgMCl7dmFyIGc9TnVtYmVyKGYudCk7IWlzTmFOKGcpJiZnPmMmJihjPWcsYj1mKX19cmV0dXJuIGJ9fSx6cT1mdW5jdGlvbihhKXthJiYoYT09PSJHUzEiP0lQKEouVS5LbSk6YT09PSJHUzIiJiZJUChKLlUuTG0pKX0sTFA9ZnVuY3Rpb24oYSl7dmFyIGI9TlAoYSk7aWYoYil7dmFyIGM9TnVtYmVyKGIubyksZD1OdW1iZXIoYi50KSxlPU51bWJlcihiLmp8fDApO2N8fElQKEouVS5VbSk7ZHx8SVAoSi5VLlRtKTtpc05hTihlKSYmSVAoSi5VLlNtKTtpZihjJiZkJiYhaXNOYU4oZSkpe3ZhciBmPWIuaCxnPWYmJmYhPT0iMCI/U3RyaW5nKGYpOnZvaWQgMCxoPWIuZD9TdHJpbmcoYi5kKTp2b2lkIDAsbD17fTtyZXR1cm4gbC5zPVN0cmluZyhiLnMpLGwubz1jLGwuZz0hIU51bWJlcihiLmcpLGwudD1kLGwuZD1oLGwuaj1lLGwubD1iLmw9PT0iMSIsCmwuaD1nLGx9fX07CnZhciBQUD1mdW5jdGlvbihhLGIsYyl7aWYoIWIpcmV0dXJuIGE7aWYoIWEpcmV0dXJuIGI7dmFyIGQ9TFAoYSk7aWYoIWQpcmV0dXJuIGI7dmFyIGUsZj1JYigoZT1PKGMuTSxGLkQueWgpKSE9bnVsbD9lOjMwKSxnPVEoYyxILkouRWIpO2lmKCEoTWF0aC5mbG9vcihnLzFFMyk+ZC50K2YqNjApKXJldHVybiBhO3ZhciBoPUxQKGIpO2lmKCFoKXJldHVybiBhO2gubz1kLm8rMTt2YXIgbDtyZXR1cm4obD1PUChoKSkhPW51bGw/bDpifSxSUD1mdW5jdGlvbihhLGIpe3ZhciBjPVEoYixILkouR2EpLGQ9UVAoYixjKSxlPU5QKGEpO2lmKCFlKXJldHVybiExO3ZhciBmPXVxKGN8fHt9LHZvaWQgMCx2b2lkIDAsdnEuZ2V0KDIpKTtvcShkLHZvaWQgMCxmKTtyZXR1cm4gQXEoZCxlLDIsYykhPT0xfSxTUD1mdW5jdGlvbihhKXt2YXIgYj1RKGEsSC5KLkdhKSxjO3ZhciBkPVFQKGEsYiksZTtiOnt2YXIgZj16cSxnPVpwWzJdO2lmKGcpe3ZhciBoLGw9cnEoYi5kb21haW4pLG49c3EoYi5wYXRoKSwKcD1PYmplY3Qua2V5cyhnLmppKSxxPXZxLmdldCgyKSxyO2lmKGg9KHI9Z3EoZCxsLG4scCxxKSk9PW51bGw/dm9pZCAwOnIuQnIpe3ZhciB0PSRwKGgsMixmKTtlPXQ/eHEodCk6dm9pZCAwO2JyZWFrIGJ9fWU9dm9pZCAwfWlmKGUpe3ZhciB1PXdxKGQsMix6cSk7aWYodSYmdS5sZW5ndGg+MSl7SVAoSi5VLkptKTt2YXIgdj1LUCh1KTt2JiZ2LnQhPT1lLnQmJihJUChKLlUuTW0pLGU9dil9Yz1icShlLDIpfWVsc2UgYz12b2lkIDA7cmV0dXJuIGN9LFRQPWZ1bmN0aW9uKGEpe3ZhciBiPVEoYSxILkouRWIpLGM9e307Yy5zPVIoYSxGLkQueGMpO2Mubz1SKGEsRi5ELkFoKTt2YXIgZDtkPVIoYSxGLkQuemgpO3ZhciBlPShjLmc9ZCxjLnQ9TWF0aC5mbG9vcihiLzFFMyksYy5kPVEoYSxILkoub2cpLGMuaj1RKGEsSC5KLnBnKXx8MCxjLmw9ISFRKGEsSC5KLnJtKSxjLmg9UihhLEYuRC5vaCksYyk7cmV0dXJuIE9QKGUpfSxPUD1mdW5jdGlvbihhKXtpZihhLnMmJmEubyl7dmFyIGI9Cnt9LGM9KGIucz1hLnMsYi5vPVN0cmluZyhhLm8pLGIuZz1JYihhLmcpPyIxIjoiMCIsYi50PVN0cmluZyhhLnQpLGIuaj1TdHJpbmcoYS5qKSxiLmw9YS5sPyIxIjoiMCIsYi5oPWEuaHx8IjAiLGIuZD1hLmQsYik7cmV0dXJuIGJxKGMsMil9fSxRUD1mdW5jdGlvbihhLGIpe3JldHVybiBiLnByZWZpeCsiX2dhXyIrYS50YXJnZXQuaWRzW2RDWzZdXX07CnZhciBVUD1mdW5jdGlvbigpe3JldHVybiBhbCgyLGZ1bmN0aW9uKCl7cmV0dXJuITF9KX0sVlA9ZnVuY3Rpb24oYSl7dmFyIGI9TyhhLk0sRi5ELkRiKSxjPWEuTS5pYltGLkQuRGJdO2lmKGM9PT1iKXJldHVybiBjO3ZhciBkPUVkKGIsbnVsbCk7YyYmY1tGLkQuQWFdJiYoZFtGLkQuQWFdPShkW0YuRC5BYV18fFtdKS5jb25jYXQoY1tGLkQuQWFdKSk7cmV0dXJuIGR9LFdQPWZ1bmN0aW9uKGEsYil7dmFyIGM9VXEoITApO3JldHVybiBjLl91cCE9PSIxIj97fTp7Y2xpZW50SWQ6Y1thXSx6YjpjW2JdfX0sWFA9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVVxKCEwKSxlPWRbYl07ZSYmKENQKGEsZSwyKSxEUChlLGEpKTt2YXIgZj1kW2NdO2YmJlJQKGYsYSk7cmV0dXJue2NsaWVudElkOmUsemI6Zn19LFlQPWZ1bmN0aW9uKCl7dmFyIGE9TmooQS5sb2NhdGlvbiwiaG9zdCIpLGI9TmooUmooQi5yZWZlcnJlciksImhvc3QiKTtyZXR1cm4gYSYmYj9hPT09Ynx8YS5pbmRleE9mKCIuIitiKT49CjB8fGIuaW5kZXhPZigiLiIrYSk+PTA/ITA6ITE6ITF9LFpQPWZ1bmN0aW9uKGEpe2lmKCFPKGEuTSxGLkQuemMpKXJldHVybnt9O3ZhciBiPVEoYSxILkouR2EpLGM9Yi5wcmVmaXgrIl9nYSIsZD1RUChhLGIpO2JyKGZ1bmN0aW9uKCl7dmFyIGU7aWYoWG8oImFuYWx5dGljc19zdG9yYWdlIikpZT17fTtlbHNle3ZhciBmPXtfdXA6IjEifSxnO2c9UihhLEYuRC5LYik7ZT0oZltjXT1nLGZbZF09VFAoYSksZil9cmV0dXJuIGV9LDEpO3JldHVybiFYbygiYW5hbHl0aWNzX3N0b3JhZ2UiKSYmWVAoKT9XUChjLGQpOnt9fSwkUD1mdW5jdGlvbihhKXt2YXIgYj1WUChhKXx8e30sYz1RKGEsSC5KLkdhKSxkPWMucHJlZml4KyJfZ2EiLGU9UVAoYSxjKSxmPXt9O2RyKGJbRi5ELlhmXSwhIWJbRi5ELkFhXSkmJihmPVhQKGEsZCxlKSxmLmNsaWVudElkJiZmLnpiJiZaaygyLCEwKSk7YltGLkQuQWFdJiZhcihmdW5jdGlvbigpe3ZhciBnPXt9LGg9RlAoYSk7aCYmKGdbZF09aCk7dmFyIGw9U1AoYSk7CmwmJihnW2VdPWwpO3ZhciBuPWNxKCJGUExDIix2b2lkIDAsdm9pZCAwLEYuRC5yYSk7bi5sZW5ndGgmJihnLl9mcGxjPW5bMF0pO3JldHVybiBnfSxiW0YuRC5BYV0sYltGLkQuYWRdLCEhYltGLkQud2NdKTtyZXR1cm4gZn07dmFyIGFRPWZ1bmN0aW9uKGEpe2lmKCFRKGEsSC5KLmJlKSYmZWsoYS5NKSl7dmFyIGI9VlAoYSl8fHt9LGM9KGRyKGJbRi5ELlhmXSwhIWJbRi5ELkFhXSk/VXEoITApLl9mcGxjOnZvaWQgMCl8fChjcSgiRlBMQyIsdm9pZCAwLHZvaWQgMCxGLkQucmEpLmxlbmd0aD4wP3ZvaWQgMDoiMCIpO1UoYSwiX2ZwbGMiLGMpfX07ZnVuY3Rpb24gYlEoYSl7KGJrKFpLKGEpKXx8V2ooKSkmJlUoYSxGLkQub20sem0oKXx8eW0oKSk7IWJrKFpLKGEpKSYmV2ooKSYmVShhLEYuRC5ZaSwiOjoiKX1mdW5jdGlvbiBjUShhKXtXaigpJiYoYmsoWksoYSkpfHxEbSgpfHxVKGEsRi5ELlNsLCEwKSl9O3ZhciBlUT1mdW5jdGlvbihhLGIpe2tqKCJncmwiLGZ1bmN0aW9uKCl7cmV0dXJuIGRRKCl9KShiKXx8KFAoMzUpLGEuaXNBYm9ydGVkPSEwKX0sZFE9ZnVuY3Rpb24oKXt2YXIgYT1OYigpLGI9YSs4NjRFNSxjPTIwLGQ9NUUzO3JldHVybiBmdW5jdGlvbihlKXt2YXIgZj1OYigpO2Y+PWImJihiPWYrODY0RTUsZD01RTMpO2M9TWF0aC5taW4oYysoZi1hKS8xRTMqNSwyMCk7YT1mO3ZhciBnPSExO2Q8MXx8YzwxfHwoZz0hMCxkLS0sYy0tKTtlJiYoZS5Icj1kLGUudXI9Yyk7cmV0dXJuIGd9fTsKdmFyIGZRPWZ1bmN0aW9uKGEpe3ZhciBiPVIoYSxGLkQuVWEpO3JldHVybiBMaihSaihiKSwiaG9zdCIsITApfSxnUT1mdW5jdGlvbihhKXtpZihPKGEuTSxGLkQuV2YpIT09dm9pZCAwKWEuY29weVRvSGl0RGF0YShGLkQuV2YpO2Vsc2V7dmFyIGI9TyhhLk0sRi5ELmFtKSxjLGQ7YTp7aWYoVVAoKSl7dmFyIGU9VlAoYSl8fHt9O2lmKGUmJmVbRi5ELkFhXSlmb3IodmFyIGY9ZlEoYSksZz1lW0YuRC5BYV0saD0wO2g8Zy5sZW5ndGg7aCsrKWlmKGdbaF1pbnN0YW5jZW9mIFJlZ0V4cCl7aWYoZ1toXS50ZXN0KGYpKXtkPSEwO2JyZWFrIGF9fWVsc2UgaWYoZi5pbmRleE9mKGdbaF0pPj0wKXtkPSEwO2JyZWFrIGF9fWQ9ITF9aWYoIShjPWQpKXt2YXIgbDtpZihsPWIpYTp7Zm9yKHZhciBuPWIuaW5jbHVkZV9jb25kaXRpb25zfHxbXSxwPWZRKGEpLHE9MDtxPG4ubGVuZ3RoO3ErKylpZihuW3FdLnRlc3QocCkpe2w9ITA7YnJlYWsgYX1sPSExfWM9bH1jJiYoVShhLEYuRC5XZiwiMSIpLApJUChKLlUubm4pKX19O2Z1bmN0aW9uIGhRKGEsYixjLGQpe3ZhciBlO2lmKChuZCgpfHxrZCgpKSYmWGooKSYmWGooKSE9PSIvIil7dmFyIGY9UmooYSk7ZT1JZig1MCkmJmQmJlRiKGYucGF0aG5hbWUsIi9nL2NvbGxlY3QiKT8yOihkfHwhV2ooKXx8RG0oKT8wOlRiKGYucGF0aG5hbWUsIi9nYS9nL2MiKXx8VGIoZi5wYXRobmFtZSwiL2FnL2cvYyIpKT8xOjB9ZWxzZSBlPTA7c3dpdGNoKGUpe2Nhc2UgMjp2YXIgZztpZihNKDU0Nikpe3ZhciBoPVRiKGEsIi9nL2NvbGxlY3QiKT9hLnN1YnN0cmluZygwLGEubGVuZ3RoLTEwKTphLGw9aVEoKSxuPWgrbCxwPWpRKCIvZy9jb2xsZWN0IixiLGMpO2c9e0ljOm4sa2Y6IiIsYm9keTpwfX1lbHNlIGc9e0ljOmEsa2Y6Yixib2R5OmN9O3JldHVybiBnO2Nhc2UgMTp2YXIgcTtpZihNKDU0Nykpe3ZhciByPWlRKCksdD1hLmluZGV4T2YociksdT1hLnN1YnN0cmluZygwLHQpK3Isdj1qUShhLnN1YnN0cmluZyh0K3IubGVuZ3RoLTEpLGIsYyk7cT17SWM6dSxrZjoiIiwKYm9keTp2fX1lbHNlIHE9e0ljOmEsa2Y6Yixib2R5OmN9O3JldHVybiBxO2RlZmF1bHQ6cmV0dXJue0ljOmEsa2Y6Yixib2R5OmN9fX1mdW5jdGlvbiBpUSgpe3ZhciBhPVhqKCk7aWYoIWEpcmV0dXJuIiI7U2IoYSwiLyIpfHwoYT0iLyIrYSk7VGIoYSwiLyIpfHwoYSs9Ii8iKTtyZXR1cm4gYX1mdW5jdGlvbiBqUShhLGIsYyl7dmFyIGQ9W2FdO2ImJmQucHVzaCgiPyIsYik7YyYmZC5wdXNoKCJcclxuIixjKTtyZXR1cm4gZC5qb2luKCIiKX07CnZhciBrUT1mdW5jdGlvbihhLGIpe1R0KCkmJihhLmdjcz1VdCgpLFEoYixILkouR2gpJiYoYS5nY3U9IjEiKSk7YS5nY2Q9WXQoYi5NKTthLm5wYT1RKGIsSC5KLndkKT8iMCI6IjEiO3ptKCk9PT0iVVMtQ08iJiYoYS5fbmc9IjEiKX0sbFE9ZnVuY3Rpb24oYSl7aWYoUShhLEguSi5iZSkpcmV0dXJue3VybDpmaygiaHR0cHM6Ly93d3cubWVyY2hhbnQtY2VudGVyLWFuYWx5dGljcy5nb29nIix2b2lkIDAsIiIpKyIvbWMvY29sbGVjdCIsZW5kcG9pbnQ6MjB9O3ZhciBiPVlqKGVrKGEuTSksIi9nL2NvbGxlY3QiKTtpZihiKXJldHVybnt1cmw6YixlbmRwb2ludDoxNn07dmFyIGM7Yz1RKGEsSC5KLnJuKSYmIVEoYSxILkouRmMpPzE3OjE2O3JldHVybnt1cmw6TW1bY10odm9pZCAwKSxlbmRwb2ludDpjfX0sbVE9e307bVFbRi5ELktiXT0iY2lkIjttUVtGLkQueGldPSJnY3V0IjttUVtGLkQuRmVdPSJhcmUiO21RW0YuRC5qaF09InBzY2RsIjttUVtGLkQuTmRdPSJleGNpZCI7bVFbRi5ELkdpXT0KIl9maWQiO21RW0YuRC5PbF09Il9nZW8iO21RW0YuRC5YY109ImdkaWQiO21RW0YuRC5MZV09Il9uZyI7bVFbRi5ELk1lXT0iZnJtIjttUVtGLkQuV2ZdPSJpciI7bVFbRi5ELlNsXT0iZnAiO21RW0YuRC50Yl09InVsIjttUVtGLkQuTWldPSJuaSI7bVFbRi5ELm1xXT0icGFlIjttUVtGLkQueGhdPSJfcmRpIjttUVtGLkQuYmRdPSJzciI7bVFbRi5ELlFpXT0idGVzdG9ubHkiO21RW0YuRC5RZV09InRpZCI7bVFbRi5ELlJpXT0idHQiO21RW0YuRC5CY109ImVjX21vZGUiO21RW0YuRC5abV09Imd0bV91cCI7bVFbRi5ELmNnXT0idWFhIjttUVtGLkQuZGddPSJ1YWIiO21RW0YuRC5lZ109InVhZnZsIjttUVtGLkQuZmddPSJ1YW1iIjttUVtGLkQuZ2ddPSJ1YW0iOwptUVtGLkQuaGddPSJ1YXAiO21RW0YuRC5pZ109InVhcHYiO21RW0YuRC5qZ109InVhdyI7bVFbRi5ELm9tXT0idXIiO21RW0YuRC5ZaV09Il91aXAiO21RW0YuRC5scV09Il9wcnMiO21RW0YuRC5QZF09ImxwcyI7bVFbRi5ELkJlXT0iZ2NsZ3MiO21RW0YuRC5EZV09ImdjbHN0IjttUVtGLkQuQ2VdPSJnY2xscCI7dmFyIG5RPXt9O25RW0YuRC5HZl09ImNjIjtuUVtGLkQuSGZdPSJjaSI7blFbRi5ELklmXT0iY20iO25RW0YuRC5KZl09ImNuIjtuUVtGLkQuTGZdPSJjcyI7blFbRi5ELk1mXT0iY2siO25RW0YuRC5lYl09ImN1IjtuUVtGLkQuVmZdPSJfdHUiO25RW0YuRC56YV09ImRsIjtuUVtGLkQuWWZdPSJkcCI7blFbRi5ELlVhXT0iZHIiO25RW0YuRC5NYl09ImR0IjtuUVtGLkQuemhdPSJzZWciO25RW0YuRC54Y109CiJzaWQiO25RW0YuRC5BaF09InNjdCI7blFbRi5ELmZiXT0idWlkIjt2YXIgb1E9e307b1FbRi5ELm5oXT0iX2V0IjtvUVtGLkQuVmNdPSJlZGlkIjtvUVtGLkQuTWRdPSJldm5pZCI7TSg5NCkmJihvUS5fZXU9Il9ldSIpO3ZhciBwUT17fTtwUVtGLkQuR2ZdPSJjYyI7cFFbRi5ELkhmXT0iY2kiO3BRW0YuRC5JZl09ImNtIjtwUVtGLkQuSmZdPSJjbiI7cFFbRi5ELkxmXT0iY3MiO3BRW0YuRC5NZl09ImNrIjt2YXIgcVE9e30sclE9KHFRW0YuRC5BY109MSxxUSksc1E9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoZGEsbWEpe2lmKG1hIT09dm9pZCAwJiYhQm8uaGFzT3duUHJvcGVydHkoZGEpKXttYT09PW51bGwmJihtYT0iIik7dmFyIFBhO3ZhciBGYT1tYTtkYSE9PUYuRC5vaD9QYT0hMTpRKGEsSC5KLmxnKXx8YmsoWksoYSkpPyhlLmVjaWQ9RmEsUGE9ITApOlBhPXZvaWQgMDtpZighUGEpe3ZhciBxYT1tYTttYT09PSEwJiYocWE9IjEiKTttYT09PSExJiYocWE9IjAiKTtxYT0KU3RyaW5nKHFhKTt2YXIgaWI7aWYoZGEhPT1GLkQuTmQmJmRhIT09Ri5ELk1kfHxNKDUwNCkpaWYobVFbZGFdKWliPW1RW2RhXSx2W2liXT1xYTtlbHNlIGlmKG5RW2RhXSlpYj1uUVtkYV0sZ1tpYl09cWE7ZWxzZSBpZihvUVtkYV0paWI9b1FbZGFdLGZbaWJdPXFhO2Vsc2UgaWYoU2IoZGEsIl8mIikpaWI9ZGEuc3Vic3RyaW5nKDIpLHZbaWJdPXFhO2Vsc2UgaWYoZGEuY2hhckF0KDApPT09Il8iKXZbZGFdPXFhO2Vsc2V7dmFyIFhiO3BRW2RhXT9YYj0hMDpkYSE9PUYuRC5LZj9YYj0hMToodHlwZW9mIG1hIT09Im9iamVjdCImJnUoZGEsbWEpLFhiPSEwKTtYYnx8dShkYSxtYSl9ZWxzZSB1KGRhLG1hKX19fXZhciBlPXt9LGY9e30sZz17fTtlLnY9IjIiO2UudGlkPWEudGFyZ2V0LmRlc3RpbmF0aW9uSWQ7ZS5ndG09ZHUoe21jOlEoYSxILkouTmIpLGVmOlEoYSxILkouQ2MpfSk7ZS5fcD0kaygyNSk7YyYmKGMuaGFzVXBkfHxjLmhhZEVycm9yKSYmKGUuZW09Yy5wYXJhbSk7UShhLApILkoucmcpJiYoZS5fZ2F6PTEpO2tRKGUsYSk7YXUoKSYmKGUuZG1hX2Nwcz1adCgpKTtlLmRtYT0kdCgpO3Z0KEV0KCkpJiYoZS50Y2ZkPWJ1KCkpO3ZhciBoPUNwKGEpO2gmJihnLnRhZ19leHA9aCk7dmFyIGw9UihhLEYuRC5YYyk7bCYmKGUuZ2RpZD1sKTtmLmVuPVN0cmluZyhhLmV2ZW50TmFtZSk7aWYoUShhLEguSi5uZykpe3ZhciBuPVEoYSxILkouWW0pO2YuX2Z2PW4/MjoxfVEoYSxILkouSGgpJiYoZi5fbnNpPTEpO2lmKFEoYSxILkouVGUpKXt2YXIgcD1RKGEsSC5KLmJuKTtmLl9zcz1wPzI6MX1RKGEsSC5KLm1nKSYmKGYuX2M9MSk7UShhLEguSi5hZSkmJihmLl9lZT0xKTtpZihRKGEsSC5KLldtKSl7dmFyIHE9UihhLEYuRC5IYSl8fE8oYS5NLEYuRC5IYSk7aWYoQXJyYXkuaXNBcnJheShxKSlmb3IodmFyIHI9MDtyPHEubGVuZ3RoJiZyPDIwMDtyKyspZlsicHIiKyhyKzEpXT10ZyhxW3JdKX12YXIgdD1SKGEsRi5ELlZjKTt0JiYoZi5lZGlkPXQpO2h0KGEsZik7Zm9yKHZhciB1PQpmdW5jdGlvbihkYSxtYSl7aWYodHlwZW9mIG1hIT09Im9iamVjdCJ8fCFyUVtkYV0pe3ZhciBQYT0iZXAuIitkYSxGYT0iZXBuLiIrZGE7ZGE9QWIobWEpP0ZhOlBhO3ZhciBxYT1BYihtYSk/UGE6RmE7Zi5oYXNPd25Qcm9wZXJ0eShxYSkmJmRlbGV0ZSBmW3FhXTtmW2RhXT1TdHJpbmcobWEpfX0sdj17fSx4PW0oZXUoYSkpLHk9eC5uZXh0KCk7IXkuZG9uZTt5PXgubmV4dCgpKXt2YXIgej15LnZhbHVlO2QoeixSKGEseikpfWZvcih2YXIgQz1tKE9iamVjdC5rZXlzKHYpLnNvcnQoKSksRD1DLm5leHQoKTshRC5kb25lO0Q9Qy5uZXh0KCkpe3ZhciBJPUQudmFsdWU7ZVtJXT12W0ldfShmdW5jdGlvbihkYSl7YmsoWksoYSkpJiZ0eXBlb2YgZGE9PT0ib2JqZWN0IiYmR2IoZGF8fHt9LGZ1bmN0aW9uKG1hLFBhKXt0eXBlb2YgUGEhPT0ib2JqZWN0IiYmKGVbInNzdC4iK21hXT1TdHJpbmcoUGEpKX0pfSkoUihhLEYuRC5vaikpO2J2KGUsUihhLEYuRC5lZCkpO3ZhciBHPVIoYSxGLkQuV2QpfHwKe307R2IoRyxmdW5jdGlvbihkYSxtYSl7bWEhPT12b2lkIDAmJigobWE9PT1udWxsJiYobWE9IiIpLGRhIT09Ri5ELmZifHxnLnVpZCk/YltkYV0hPT1tYSYmKGZbKEFiKG1hKT8idXBuLiI6InVwLiIpK1N0cmluZyhkYSldPVN0cmluZyhtYSksYltkYV09bWEpOmcudWlkPVN0cmluZyhtYSkpfSk7aWYoV2ooKSYmIURtKCkmJiFiayhaSyhhKSkpe3ZhciBOPVEoYSxILkoub2cpO04/ZS5fZ3NpZD1OOmUubmppZD0iMSJ9dmFyIFM9UShhLEguSi5WaSk7KFM9PW51bGw/dm9pZCAwOlMudmFsdWUpPjAmJihlLmdhZj1TLmdldCgpKTt2YXIgVz1SKGEsRi5ELldjKTtpZihXKWZvcih2YXIgZWE9bShPYmplY3Qua2V5cyhXKSksamE9ZWEubmV4dCgpOyFqYS5kb25lO2phPWVhLm5leHQoKSl7dmFyIGZhPWphLnZhbHVlO2ZbImV4dC4iK2ZhXT1XW2ZhXXx8IiJ9dmFyIHNhPWxRKGEpO3ZnLmNhbGwodGhpcyx7QmE6ZSx2ZTpnLExqOmZ9LHNhLnVybCxzYS5lbmRwb2ludCxaSyhhKSx2b2lkIDAsCmEudGFyZ2V0LmRlc3RpbmF0aW9uSWQsYS5NLmV2ZW50SWQsYS5NLnByaW9yaXR5SWQpfTt3YShzUSx2Zyk7CnZhciB0UT1mdW5jdGlvbihhLGIpe3JldHVybiBhLnJlcGxhY2UoL1wkXHsoW15cfV0rKVx9L2csZnVuY3Rpb24oYyxkKXtyZXR1cm4gYltkXXx8Y30pfSx1UT1mdW5jdGlvbihhKXt2YXIgYj17fSxjPSIiLGQ9YS5wYXRobmFtZS5pbmRleE9mKCIvZy9jb2xsZWN0Iik7ZD49MCYmKGM9YS5wYXRobmFtZS5zdWJzdHJpbmcoMCxkKSk7Yi50cmFuc3BvcnRfdXJsPWEucHJvdG9jb2wrIi8vIithLmhvc3RuYW1lK2M7dmFyIGU7dHJ5e2U9ZW5jb2RlVVJJQ29tcG9uZW50KGN8fCIvIil9Y2F0Y2goZil7ZT1lbmNvZGVVUklDb21wb25lbnQoIi8iKX1iLmVuY29kZWRfcGF0aD1lO3JldHVybiBifSx2UT1mdW5jdGlvbihhLGIpe2lmKCFNKDU0NikpcmV0dXJue3VybDphLGJvZHk6Yn07dmFyIGM9bShhLnNwbGl0KCI/IikpLGQ9Yy5uZXh0KCkudmFsdWUsZT1jLm5leHQoKS52YWx1ZSxmPWhRKGQsZXx8IiIsYnx8IiIsITApLGc9Zi5JYyxoPWYua2Y7YT1oIT09IiI/ZysiPyIraDpnO2I9Zi5ib2R5OwpyZXR1cm57dXJsOmEsYm9keTpifX0seFE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVJqKGIpLGU9dVEoZCksZj12UShYZyhkKSxjKSxnPWZ1bmN0aW9uKGgpe3F4KGYudXJsLGYuYm9keSxuZXcgd1EoZSxoKSkmJmEmJmtuLnJlZ2lzdGVyKGEsMSxmLnVybCl9OyFNKDEzMil8fE5jKCI7IHd2Iil8fE5jKCJGQkFOIil8fE5jKCJGQkFWIil8fFBjKCk/ZygpOm1MKGYudXJsLGYuYm9keSxlLGcpfSx3UT1mdW5jdGlvbihhLGIpe0N4LmNhbGwodGhpcyk7dGhpcy50ZW1wbGF0ZXM9YTt0aGlzLk49Yn07d2Eod1EsQ3gpO3dRLnByb3RvdHlwZS5aPWZ1bmN0aW9uKGEpe3ZhciBiPXRRKGEsdGhpcy50ZW1wbGF0ZXMpO3JldHVybiB0aGlzLk4/Yi5yZXBsYWNlKCJfaXNfc3c9MCIsdGhpcy5OKTpifTt3US5wcm90b3R5cGUuSz1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuWihhKTtDeC5wcm90b3R5cGUuSy5jYWxsKHRoaXMsYyxiKX07d1EucHJvdG90eXBlLkg9ZnVuY3Rpb24oYSxiKXt2YXIgYz0KdGhpcy5aKGEpO0N4LnByb3RvdHlwZS5ILmNhbGwodGhpcyxjLGIpfTsKdmFyIHlRPWZ1bmN0aW9uKGEpe3JldHVybiFTYihhLEZtKCkpJiYhU2IoYSxHbSgpKX0sQVE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2lmKCFuZCgpKXJldHVybiB6UShhLGIsYyxkKSwhMDtZbihjLGIhPT0iIj9hKyI/IitiOmEsZCxuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGV8fHt9LHtRZzohMH0pLHZvaWQgMCxmKXx8elEoYSxiLGMsZCk7cmV0dXJuITB9LHpRPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWIhPT0iIj9hKyI/IitiOmE7ZD9XbihjLGUsZCk6Vm4oYyxlKX0sQ1E9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1iLGc9cGQoKTtnIT09dm9pZCAwJiYoZis9IiZ0ZmQ9IitNYXRoLnJvdW5kKGcpKTtiPWY7dmFyIGg9YSsiPyIrYjtpZighYmsoZCl8fGNrKGQpfHx4UCgpKXt2YXIgbD1oUShhLGIsYyxiayhkKSk7YT1sLkljO2I9bC5rZjtjPWwuYm9keTtBUShhLGIsZSxjLHZvaWQgMCxCUShhLGIsZSxjKSl8fHpRKGEsYixlLGMpfWVsc2UgeFEoZSxoLGMpOwpiayhkKSYmTSg1NjQpJiZuZCgpJiZUYihhLCIvZy9jb2xsZWN0IikmJkEuZmV0Y2goYS5zdWJzdHJpbmcoMCxhLmxlbmd0aC0xMCkse21ldGhvZDoiUE9TVCIsYm9keToiQ2pBT0FUd2NDQmdPIixjcmVkZW50aWFsczoib21pdCJ9KX0sQlE9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIXlRKGEpKXt2YXIgZT1NbVs2N10odm9pZCAwKTtpZihlKXJldHVybiBmdW5jdGlvbigpe3ZhciBmO3ZhciBnPWIucmVwbGFjZSgvXlw/LywiIiksaD1OdW1iZXIoSWooZywiZ2FmIiwhMSkpLGw9MDtOdW1iZXIuaXNJbnRlZ2VyKGgpJiYobD1oKTt2YXIgbj1uZXcgZXIobCk7ZnIobiwxKTtpZihuLnZhbHVlIT09MCl7dmFyIHAscT1uLmdldCgpLHI9UmVnRXhwKCIoXnxbPyZdKWdhZj1bXiZdKigmfCQpIik7cD1yLnRlc3QoZyk/Zy5yZXBsYWNlKHIsIiQxZ2FmPSIrcSsiJDIiKTpnLmluZGV4T2YoIj8iKT49MD9nKyImZ2FmPSIrcTpnWzBdPT09Ii8ifHxnLmluZGV4T2YoIjovLyIpPj0wP2crIj9nYWY9IisKcTpnLmxlbmd0aD4wP2crIiZnYWY9IitxOiJnYWY9IitxO2Y9Yi5pbmRleE9mKCI/Iik9PT0wPyI/IitwOnB9ZWxzZSBmPXZvaWQgMDtBUShlLGZ8fGIsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxjLHtlbmRwb2ludDo2N30pLGQsYy5lbmRwb2ludD09PTE3P3ZvaWQgMDp7Y3JlZGVudGlhbHM6Im9taXQifSl9fX0sRFE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9ZnVuY3Rpb24oaCl7ZC5wdXNoKGgrIj0iK2VuY29kZVVSSUNvbXBvbmVudCgiIithLkJhW2hdKSl9O2QucHVzaCgidj0yIik7ZSgiX2dzaWQiKTtlKCJndG0iKTthLkJhLl9nZW8mJmUoIl9nZW8iKTt2YXIgZj0iaHR0cHM6Ly97Z2E0Q29sbGVjdGlvblN1YmRvbWFpbi59Z29vZ2xlLWFuYWx5dGljcy5jb20vZy9zL2NvbGxlY3QiLnJlcGxhY2UoIntnYTRDb2xsZWN0aW9uU3ViZG9tYWluLn0iLChifHwid3d3IikrIi4iKSxnPWQuam9pbigiJiIpO3pRKGYsZyx7ZGVzdGluYXRpb25JZDphLmRlc3RpbmF0aW9uSWR8fAoiIixlbmRwb2ludDo2MixldmVudElkOmEuZXZlbnRJZCxwcmlvcml0eUlkOmEucHJpb3JpdHlJZH0pO01sKHt0YXJnZXRJZDpTdHJpbmcoYS5CYS50aWQpLHJlcXVlc3Q6e3VybDpmKyI/IitnLHBhcmFtZXRlckVuY29kaW5nOjIsZW5kcG9pbnQ6NjJ9LHFiOmN9KX0sRVE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSJodHRwczovL3tnYTRDb2xsZWN0aW9uU3ViZG9tYWluLn1hbmFseXRpY3MuZ29vZ2xlLmNvbS9nL3MvY29sbGVjdCIucmVwbGFjZSgie2dhNENvbGxlY3Rpb25TdWJkb21haW4ufSIsYj9iKyIuIjoiIiksZT1bXSxmPWZ1bmN0aW9uKGgpe2UucHVzaChoKyI9IitlbmNvZGVVUklDb21wb25lbnQoIiIrYS5CYVtoXSkpfTtmKCJfZ3NpZCIpO2YoImd0bSIpO2EuQmEuX2dlbyYmZigiX2dlbyIpO3ZhciBnPWUuam9pbigiJiIpO3pRKGQsZyx7ZGVzdGluYXRpb25JZDphLmRlc3RpbmF0aW9uSWR8fCIiLGVuZHBvaW50OjE4LGV2ZW50SWQ6YS5ldmVudElkLHByaW9yaXR5SWQ6YS5wcmlvcml0eUlkfSk7Ck1sKHt0YXJnZXRJZDpTdHJpbmcoYS5CYS50aWQpLHJlcXVlc3Q6e3VybDpkKyI/IitnLHBhcmFtZXRlckVuY29kaW5nOjIsZW5kcG9pbnQ6MTh9LHFiOmN9KX0sRlE9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2MmJmIucHVzaCgidGFnX2V4cD0iK2MpO2IucHVzaCgiej0iK0RiKCkpO2lmKCFlKXt2YXIgZz1kJiZTYihkLCJnb29nbGUuIikmJmQhPT0iZ29vZ2xlLmNvbSI/Imh0dHBzOi8vd3d3LiUvYWRzL2dhLWF1ZGllbmNlcz92PTEmdD1zciZzbGZfcmQ9MSZfcj00JiIucmVwbGFjZSgiJSIsZCk6dm9pZCAwO2lmKGcpe3ZhciBoPWcrYi5qb2luKCImIik7WG4oe2Rlc3RpbmF0aW9uSWQ6YS5kZXN0aW5hdGlvbklkfHwiIixlbmRwb2ludDo0NyxldmVudElkOmEuZXZlbnRJZCxwcmlvcml0eUlkOmEucHJpb3JpdHlJZH0saCk7TWwoe3RhcmdldElkOlN0cmluZyhhLkJhLnRpZCkscmVxdWVzdDp7dXJsOmgscGFyYW1ldGVyRW5jb2Rpbmc6MixlbmRwb2ludDo0N30scWI6Zn0pfX19LEdRPQpmdW5jdGlvbihhLGIsYyxkKXtjJiZiLnB1c2goInRhZ19leHA9IitjKTt6USgiaHR0cHM6Ly9zdGF0cy5nLmRvdWJsZWNsaWNrLm5ldC9nL2NvbGxlY3QiLCJ2PTImIitiLmpvaW4oIiYiKSx7ZGVzdGluYXRpb25JZDphLmRlc3RpbmF0aW9uSWR8fCIiLGVuZHBvaW50OjE5LGV2ZW50SWQ6YS5ldmVudElkLHByaW9yaXR5SWQ6YS5wcmlvcml0eUlkfSk7TWwoe3RhcmdldElkOlN0cmluZyhhLkJhLnRpZCkscmVxdWVzdDp7dXJsOiJodHRwczovL3N0YXRzLmcuZG91YmxlY2xpY2submV0L2cvY29sbGVjdD92PTImIitiLmpvaW4oIiYiKSxwYXJhbWV0ZXJFbmNvZGluZzoyLGVuZHBvaW50OjE5fSxxYjpkfSl9LEhRPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyh2KXtxLnB1c2godisiPSIrZW5jb2RlVVJJQ29tcG9uZW50KCIiK2EuQmFbdl0pKX12YXIgZD1iLnh0LGU9Yi5CdCxmPWIuQXQsZz1iLnp0LGg9Yi5acixsPWIuQ3Msbj1iLlByLHA9Yi5HdDtpZihkfHxlfHxmfHxnKXt2YXIgcT0KW107YS5CYS5fbmcmJmMoIl9uZyIpO2EuQmEubmdzJiZjKCJuZ3MiKTthLkJhLmlidCYmYygiaWJ0Iik7YygidGlkIik7YygiY2lkIik7YygiZ3RtIik7Zm9yKHZhciByPW0oT0YpLHQ9ci5uZXh0KCk7IXQuZG9uZTt0PXIubmV4dCgpKXt2YXIgdT10LnZhbHVlO2EuQmFbdV0hPW51bGwmJmModSl9cS5wdXNoKCJhaXA9MSIpO2EudmUudWlkJiZxLnB1c2goInVpZD0iK2VuY29kZVVSSUNvbXBvbmVudCgiIithLnZlLnVpZCkpO2MoImRtYSIpO2EuQmEuZG1hX2NwcyE9bnVsbCYmYygiZG1hX2NwcyIpO2EuQmEuZ2NzIT1udWxsJiZjKCJnY3MiKTtjKCJnY2QiKTthLkJhLm5wYSE9bnVsbCYmYygibnBhIik7YS5CYS5mcm0hPW51bGwmJmMoImZybSIpO2QmJkdRKGEscS5zbGljZSgpLHAsYi5xYik7ZSYmRlEoYSxxLnNsaWNlKCkscCxoLGwsYi5xYik7ZiYmRVEoYSxuLGIucWIpO2cmJkRRKGEsbixiLnFiKX19LElRPWZ1bmN0aW9uKCl7dGhpcy5SPTE7dGhpcy5aPXt9O3RoaXMuSz0tMTt0aGlzLkg9Cm5ldyB3Z307SVEucHJvdG90eXBlLk49ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ9bmV3IHNRKGEsdGhpcy5aLGIpLGU9e2V2ZW50SWQ6YS5NLmV2ZW50SWQscHJpb3JpdHlJZDphLk0ucHJpb3JpdHlJZH0sZj15UChhKSxnLGg7ZiYmdGhpcy5ILlIoZCl8fHRoaXMuZmx1c2goKTt2YXIgbD1mJiZ0aGlzLkguYWRkKGQpO2lmKGwpe2lmKHRoaXMuSzwwKXt2YXIgbj1BLHA9bi5zZXRUaW1lb3V0LHE7YmsoWksoYSkpP0pRPyhKUT0hMSxxPUtRKTpxPUxROnE9NUUzO3RoaXMuSz1wLmNhbGwobixmdW5jdGlvbigpe2MuZmx1c2goKX0scSl9fWVsc2V7dmFyIHI9emcoZCx0aGlzLlIrKyksdD1yLnBhcmFtcyx1PXIuYm9keTtnPXQ7aD11O0Z5KDMsYS5ldmVudE5hbWUpO0NRKGQuYmFzZVVybCx0LHUsZC5OLHtkZXN0aW5hdGlvbklkOmEudGFyZ2V0LmRlc3RpbmF0aW9uSWQsZW5kcG9pbnQ6ZC5lbmRwb2ludCxldmVudElkOmQuZXZlbnRJZCxwcmlvcml0eUlkOmQucHJpb3JpdHlJZH0pOwp2YXIgdj1RKGEsSC5KLmhkKSx4PVEoYSxILkoucmcpLHk9UShhLEguSi5OaCksej1RKGEsSC5KLk1oKSxDPU8oYS5NLEYuRC51aSkhPT0hMSxEPVN0KGEuTSksST17eHQ6dixCdDp4LEF0OnksenQ6eixacjpFbSgpLG12OkMsbHY6RCxDczpBbSgpLHFiOmUsTTphLk0sUHI6RG0oKSxHdDpDcChhKX07SFEoZCxJKX1mbi5IJiZBeihhLk0uZXZlbnRJZCk7TmwoZnVuY3Rpb24oKXtpZihsKXt2YXIgRz16ZyhkKSxOPUcuYm9keTtnPUcucGFyYW1zO2g9Tn1yZXR1cm57dGFyZ2V0SWQ6YS50YXJnZXQuZGVzdGluYXRpb25JZCxyZXF1ZXN0Ont1cmw6ZC5iYXNlVXJsKyI/IitnLHBhcmFtZXRlckVuY29kaW5nOjIscG9zdEJvZHk6aCxlbmRwb2ludDpkLmVuZHBvaW50fSxxYjplLGlzQmF0Y2hlZDohMX19KX07SVEucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXtZSyhhKSYmIXhQKCk/dGhpcy5mYShhKTp0aGlzLk4oYSl9O0lRLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2lmKHRoaXMuSC5ldmVudHMubGVuZ3RoKXt2YXIgYT0KQmcodGhpcy5ILHRoaXMuUisrKTtDUSh0aGlzLkguYmFzZVVybCxhLnBhcmFtcyxhLmJvZHksdGhpcy5ILksse2Rlc3RpbmF0aW9uSWQ6dGhpcy5ILmRlc3RpbmF0aW9uSWR8fCIiLGVuZHBvaW50OnRoaXMuSC5lbmRwb2ludCxldmVudElkOnRoaXMuSC5aLHByaW9yaXR5SWQ6dGhpcy5ILmZhfSk7dGhpcy5IPW5ldyB3Zzt0aGlzLks+PTAmJihBLmNsZWFyVGltZW91dCh0aGlzLkspLHRoaXMuSz0tMSl9fTtJUS5wcm90b3R5cGUuZmE9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPVlLKGEpO00oNTY4KSYmIU0oNTg2KSYmUihhLEYuRC5CYyk9PT0iYSImJihjPWN3KGMpKTtpZihFdyhjKSl7dmFyIGQ9c3coYyk7ZD9kLnRoZW4oZnVuY3Rpb24oZil7Yi5OKGEsZil9LGZ1bmN0aW9uKCl7Yi5OKGEpfSk6dGhpcy5OKGEpfWVsc2V7dmFyIGU9RHcoYyk7dGhpcy5OKGEsZSl9fTt2YXIgS1E9TmYoMjQsNTAwKSxMUT1OZig1Niw1RTMpLEpRPSEwO3ZhciBNUT1mdW5jdGlvbihhKXt2YXIgYj1TdChhLk0pO08oYS5NLEYuRC5XYik9PT0hMCYmKGI9ITEpO1YoYSxILkoud2QsYil9Owp2YXIgTlE9ZnVuY3Rpb24oYSxiLGMpe2M9PT12b2lkIDAmJihjPXt9KTtpZihiPT1udWxsKXJldHVybiBjO2lmKHR5cGVvZiBiPT09Im9iamVjdCIpZm9yKHZhciBkPW0oT2JqZWN0LmtleXMoYikpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1lLnZhbHVlO05RKGErIi4iK2YsYltmXSxjKX1lbHNlIGNbYV09YjtyZXR1cm4gY30sT1E9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXt9LGM9bShhKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9ZC52YWx1ZTtiW2VdPSEhWG8oZSl9cmV0dXJuIGJ9LFFRPWZ1bmN0aW9uKGEsYil7dmFyIGM9UFEuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFYbyhlKX0pO2lmKGMubGVuZ3RoKXt2YXIgZD1PUShjKTskbyhjLGZ1bmN0aW9uKCl7Zm9yKHZhciBlPU9RKGMpLGY9W10sZz1tKGMpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKXt2YXIgbD1oLnZhbHVlOyFkW2xdJiZlW2xdJiZmLnB1c2gobCk7ZVtsXSYmCihkW2xdPSEwKX1pZihmLmxlbmd0aCl7VihiLEguSi5HaCwhMCk7dmFyIG49Zi5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIExvW3BdfSkuam9pbigiLiIpO24mJldLKGIsImdjdXQiLG4pO01RKGIpO2EoYil9fSl9fSxSUT1mdW5jdGlvbihhKXtSKGEsRi5ELldjKSYmIWJrKFpLKGEpKSYmVShhLEYuRC5XYyl9LFNRPWZ1bmN0aW9uKGEpe2JrKFpLKGEpKSYmV0soYSwibmF2dCIscWQoKSl9LFRRPWZ1bmN0aW9uKGEpe2JrKFpLKGEpKSYmV0soYSwibHBjIixpcigpKX0sVVE9ZnVuY3Rpb24oYSl7aWYoYmsoWksoYSkpKXt2YXIgYj1PKGEuTSxGLkQuV2IpLGM7Yj09PSEwJiYoYz0iMSIpO2I9PT0hMSYmKGM9IjAiKTtjJiZXSyhhLCJyZHAiLGMpfX0sVlE9ZnVuY3Rpb24oYSxiKXtpZihiayhaSyhiKSkpe3ZhciBjPVEoYixILkoubWcpOyhiLmV2ZW50TmFtZT09PSJwYWdlX3ZpZXcifHxjKSYmUVEoYSxiKX19LFdRPWZ1bmN0aW9uKGEpe2lmKGJrKFpLKGEpKSYmYS5ldmVudE5hbWU9PT1GLkQueWYmJgpRKGEsSC5KLkdoKSl7dmFyIGI9UihhLEYuRC54aSk7YiYmKFdLKGEsImdjdXQiLGIpLFdLKGEsInN5biIsMSkpfX0sWFE9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT1iKXJldHVybiBXaigpJiZTYihjKyIvIixYaigpKyIvIik/IjciOiIxIjtpZihUYihhLCIuIitiKSlyZXR1cm4iMiI7aWYoVGIoYiwiLiIrYSkpcmV0dXJuIjMiO3ZhciBkPWEuc3BsaXQoIi4iKSxlPWIuc3BsaXQoIi4iKSxmPWZ1bmN0aW9uKGcpe2lmKGQubGVuZ3RoPGd8fGUubGVuZ3RoPGcpcmV0dXJuITE7Zm9yKHZhciBoPTE7aDw9ZztoKyspaWYoZFtkLmxlbmd0aC1oXSE9PWVbZS5sZW5ndGgtaF0pcmV0dXJuITE7cmV0dXJuITB9O3JldHVybiBmKDMpPyI2IjpmKDIpPyI1IjoiNCJ9LFlRPWZ1bmN0aW9uKGEpe2lmKGJrKFpLKGEpKSl7dmFyIGI9ZWsoYS5NKTtpZihiKXt2YXIgYz1ZaihiLCIvIiksZD1SaihjKSxlPU5qKGQsImhvc3QiKSxmPU5qKEEubG9jYXRpb24sImhvc3QiKTtpZihlJiZmKXt2YXIgZz1OaihkLAoicGF0aCIpO2EubWVyZ2VIaXREYXRhRm9yS2V5KEYuRC5UYSx7c3N0ZDpYUShlLGYsZyl9KX19fX0sWlE9ZnVuY3Rpb24oYSl7YmsoWksoYSkpJiZWKGEsSC5KLkphLCExKX0sJFE9ZnVuY3Rpb24oYSl7YmsoWksoYSkpJiYoUShhLEguSi5KYSkmJldLKGEsInNwIiwxKSxRKGEsSC5KLklxKSYmV0soYSwic3luIiwxKSxRKGEsSC5KLlBjKSYmKFdLKGEsImVtX2V2ZW50IiwxKSxXSyhhLCJzcCIsMSkpKX0sYVI9ZnVuY3Rpb24oYSl7aWYoYmsoWksoYSkpKXt2YXIgYj0kaygyNSk7YiYmV0soYSwidGZ0IixOdW1iZXIoYikpfX0sYlI9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihlKXt2YXIgZj1OUShGLkQuQWMsZSk7R2IoZixmdW5jdGlvbihnLGgpe1UoYSxnLGgpfSl9aWYoYmsoWksoYSkpKXt2YXIgYz1kSShhLCJjY2RfYWRkXzFwX2RhdGEiLCExKT8xOjA7V0soYSwidWRlIixjKTt2YXIgZD1PKGEuTSxGLkQuQWMpO2QhPT12b2lkIDA/KFp2KGQpLGIoZCksVShhLEYuRC5CYywiYyIpKToKYihRKGEsSC5KLllhKSk7VihhLEguSi5ZYSl9fSxjUj1mdW5jdGlvbihhKXtpZihiayhaSyhhKSkpe3ZhciBiPVZNKCk7YiYmV0soYSwidXNfcHJpdmFjeSIsYik7dmFyIGM9THQoKTtjJiZXSyhhLCJnZHByIixjKTt2YXIgZD1LdCgpO2QmJldLKGEsImdkcHJfY29uc2VudCIsZCk7dmFyIGU9a0YuZ3BwU3RyaW5nO2UmJldLKGEsImdwcCIsZSk7dmFyIGY9a0YuSDtmJiZXSyhhLCJncHBfc2lkIixmKX19LGRSPWZ1bmN0aW9uKGEpe2JrKFpLKGEpKSYmRWwoKSYmTyhhLk0sRi5ELm1iKSYmV0soYSwiYWRyIiwxKX0sZVI9ZnVuY3Rpb24oYSl7aWYoYmsoWksoYSkpKXt2YXIgYj1EbSgpO2ImJldLKGEsImdjc3ViIixiKX19LGZSPWZ1bmN0aW9uKGEpe2lmKGJrKFpLKGEpKSl7TyhhLk0sRi5ELlNjLHZvaWQgMCw0KT09PSExJiZXSyhhLCJuZ3MiLDEpO0FtKCkmJldLKGEsImdhX3JkIiwxKTtWSygpfHxXSyhhLCJuZ3N0IiwxKTt2YXIgYj1FbSgpO2ImJldLKGEsImV0bGQiLGIpfX0sZ1I9CmZ1bmN0aW9uKGEpe30saFI9ZnVuY3Rpb24oYSl7YmsoWksoYSkpJiZFbCgpJiZXSyhhLCJybmQiLFFNKCkpfSxQUT1bRi5ELmthLEYuRC5tYSxGLkQuWGFdOwp2YXIgaVI9ZnVuY3Rpb24oYSxiKXt2YXIgYzthOntpZighUShhLEguSi5GYykpe3ZhciBkPVRQKGEpO2lmKGQpe2lmKFJQKGQsYSkpe2M9ZDticmVhayBhfVAoMjUpO2EuaXNBYm9ydGVkPSEwfX1jPXZvaWQgMH12YXIgZT1jO3JldHVybntjbGllbnRJZDpFUChhLGIpLHpiOmV9fSxqUj1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPVFvKE8oYS5NLEYuRC5LYikpO2lmKE8oYS5NLEYuRC5aYykmJk8oYS5NLEYuRC5ZYykpZj9DUChhLGYsMSk6KFAoMTI3KSxhLmlzQWJvcnRlZD0hMCk7ZWxzZXt2YXIgZz1mPzE6ODtWKGEsSC5KLkhoLCExKTtmfHwoZj1GUChhKSxnPTMpO2Z8fChmPWIsZz01KTtpZighZil7dmFyIGg9WG8oRi5ELnJhKSxsPXpQKCk7Zj0hbC5mcm9tX2Nvb2tpZXx8aD9sLnZpZDp2b2lkIDA7Zz02fWY/Zj0iIitmOihmPUF2KCksZz03LFYoYSxILkoubmcsITApLFYoYSxILkouSGgsITApKTtDUChhLGYsZyl9UihhLEYuRC5LYik7aWYoIVEoYSxILkouRmMpKXt2YXIgbj0KUShhLEguSi5FYikscD1NYXRoLmZsb29yKG4vMUUzKSxxPXZvaWQgMDtRKGEsSC5KLkhoKXx8KHE9U1AoYSl8fGMpO3ZhciByPUliKE8oYS5NLEYuRC55aCwzMCkpO3I9TWF0aC5taW4oNDc1LHIpO3I9TWF0aC5tYXgoNSxyKTt2YXIgdD1JYihPKGEuTSxGLkQuUGksMUU0KSksdT1MUChxKTtWKGEsSC5KLm5nLCExKTtWKGEsSC5KLlRlLCExKTtWKGEsSC5KLnBnLDApO3UmJnUuaiYmVihhLEguSi5wZyxNYXRoLm1heCgwLHUuai1NYXRoLm1heCgwLHAtdS50KSkpO3ZhciB2PSExO2lmKCF1KXtWKGEsSC5KLm5nLCEwKTt2PSEwO3ZhciB4PXt9O3U9KHgucz1TdHJpbmcocCkseC5vPTEseC5nPSExLHgudD1wLHgubD0hMSx4Lmg9dm9pZCAwLHgpfXA+dS50K3IqNjAmJih2PSEwLHUucz1TdHJpbmcocCksdS5vKyssdS5nPSExLHUuaD12b2lkIDApO2lmKHYpVihhLEguSi5UZSwhMCksZC5scyhhKTtlbHNlIGlmKGQuWHIoKT50fHxhLmV2ZW50TmFtZT09PUYuRC5zYyl1Lmc9ITA7UShhLEguSi5sZyk/Ck8oYS5NLEYuRC5mYik/dS5sPSEwOnUubD0hMTp1Lmw9ITE7dmFyIHk9dS5oO2lmKFEoYSxILkoubGcpfHxiayhaSyhhKSkpe3ZhciB6PU8oYS5NLEYuRC5vaCksQz16PzE6ODt6fHwoej15LEM9NCk7enx8KHo9enYoKSxDPTcpO3ZhciBEPXoudG9TdHJpbmcoKSxJPUMsRz1RKGEsSC5KLnRsKTtpZihHPT09dm9pZCAwfHxJPD1HKVUoYSxGLkQub2gsRCksVihhLEguSi50bCxJKX1lPyhhLmNvcHlUb0hpdERhdGEoRi5ELnhjLHUucyksYS5jb3B5VG9IaXREYXRhKEYuRC5BaCx1Lm8pLGEuY29weVRvSGl0RGF0YShGLkQuemgsdS5nPzE6MCkpOihVKGEsRi5ELnhjLHUucyksVShhLEYuRC5BaCx1Lm8pLFUoYSxGLkQuemgsdS5nPzE6MCkpO1YoYSxILkoucm0sdS5sPzE6MCk7V2ooKSYmVihhLEguSi5vZyx1LmR8fGNjKCkpfX07CnZhciBrUj1mdW5jdGlvbihhKXt2YXIgYj1hLmluZGV4T2YoIj8iKSxjPWI9PT0tMT9hOmEuc3Vic3RyaW5nKDAsYiksZD1LaihjKTtkJiYoYz1kKTtyZXR1cm4gYj09PS0xP2M6IiIrYythLnN1YnN0cmluZyhiKX0sbFI9ZnVuY3Rpb24oYSl7aWYoIU8oYS5NLEYuRC5ZYyl8fCFPKGEuTSxGLkQuWmMpKXt2YXIgYj1hLmNvcHlUb0hpdERhdGEsYz1GLkQuemEsZD0iIixlPUIubG9jYXRpb247aWYoZSl7dmFyIGY9ZS5wYXRobmFtZXx8IiI7Zi5jaGFyQXQoMCkhPT0iLyImJihmPSIvIitmKTt2YXIgZz1lLnNlYXJjaHx8IiI7aWYoZ1swXT09PSI/Iilmb3IodmFyIGg9Zy5zdWJzdHJpbmcoMSkuc3BsaXQoIiYiKSxsPTA7bDxoLmxlbmd0aDsrK2wpe3ZhciBuPWhbbF0uc3BsaXQoIj0iKTtuJiZuLmxlbmd0aD09PTImJm5bMF09PT0id2JyYWlkIiYmKGc9Zy5yZXBsYWNlKC8oWz8mXSl3YnJhaWQ9W14mXSsvLCIkMXdicmFpZD0iKyRiKG5bMV0pKSl9ZD1lLnByb3RvY29sKyIvLyIrZS5ob3N0bmFtZSsKZitnfWIuY2FsbChhLGMsZCxrUik7dmFyIHA9YS5jb3B5VG9IaXREYXRhLHE9Ri5ELlVhLHI9dUEoImd0bS5ndGFnUmVmZXJyZXIuIithLnRhcmdldC5kZXN0aW5hdGlvbklkKSx0PUIucmVmZXJyZXI7cC5jYWxsKGEscSwocj8iIityOnQpfHx2b2lkIDAsa1IpO2EuY29weVRvSGl0RGF0YShGLkQuTWIsQi50aXRsZSk7YS5jb3B5VG9IaXREYXRhKEYuRC50YiwoSGMubGFuZ3VhZ2V8fCIiKS50b0xvd2VyQ2FzZSgpKTt2YXIgdT1xSSgpO2EuY29weVRvSGl0RGF0YShGLkQuYmQsdS53aWR0aCsieCIrdS5oZWlnaHQpO2EuY29weVRvSGl0RGF0YShGLkQuWWYsdm9pZCAwLGtSKTtUTSgpJiZhLmNvcHlUb0hpdERhdGEoRi5ELlBkLCIxIil9fTt2YXIgblI9ZnVuY3Rpb24oYSl7dmFyIGI9eEMoYS5NKSxjPWZ1bmN0aW9uKGQsZSl7bVJbZF0mJlUoYSxkLGUpfTtDZChiW0YuRC5LZl0pP0diKGJbRi5ELktmXSxmdW5jdGlvbihkLGUpe2MoKEYuRC5LZisiXyIrZCkudG9Mb3dlckNhc2UoKSxlKX0pOkdiKGIsYyl9LG9SPXt9LG1SPShvUltGLkQuR2ZdPTEsb1JbRi5ELkhmXT0xLG9SW0YuRC5JZl09MSxvUltGLkQuSmZdPTEsb1JbRi5ELkxmXT0xLG9SW0YuRC5NZl09MSxvUik7dmFyIHBSPWZ1bmN0aW9uKGEpe2lmKCFiayhaSyhhKSkmJlEoYSxILkoubWcpJiZYbyhGLkQua2EpJiZkSShhLCJnYTRfYWRzX2xpbmtlZCIsITEpKXt2YXIgYj1MSyhhKSxjPUhyKGIucHJlZml4KSxkPVJzKGMpO1UoYSxGLkQuQmUsZC5FZyk7VShhLEYuRC5EZSxkLldoKTtVKGEsRi5ELkNlLGQuVWgpfX07dmFyIHFSPWZ1bmN0aW9uKGEpe3ZhciBiPU8oYS5NLEYuRC5aYyk7YiYmSVAoSi5VLnhuKTtRKGEsSC5KLlBjKSYmSVAoSi5VLk5rKTt2YXIgYz15ayh6aygpKTsoYnx8TWsoYyl8fGMmJmMucGFyZW50JiZjLmNvbnRleHQmJmMuY29udGV4dC5zb3VyY2U9PT01KSYmSVAoSi5VLmZuKTtRKGEsSC5KLmNqKSYmSVAoSi5VLkltKTtRKGEsSC5KLmJqKSYmSVAoSi5VLkhtKX07dmFyIHJSPWZ1bmN0aW9uKGEpe3ZhciBiPVEoYSxILkouVmkpfHxuZXcgZXI7UShhLEguSi5iaikmJlEoYSxILkouY2opJiZmcihiLDIpO1YoYSxILkouVmksYil9O2Z1bmN0aW9uIHNSKGEpe2EuY29weVRvSGl0RGF0YShGLkQuZmIpO3ZhciBiPU8oYS5NLEYuRC5XZCk7YiYmKEtDKGIsZnVuY3Rpb24oKXt9KSxVKGEsRi5ELldkLGIpKX07dmFyIHVSPWZ1bmN0aW9uKGEpe2lmKHRSLk1yLnJlcGxhY2UoL1xzKy9nLCIiKS5zcGxpdCgiLCIpLmluZGV4T2YoYS5ldmVudE5hbWUpPj0wKWEuaXNBYm9ydGVkPSEwO2Vsc2V7dmFyIGI9WEsoYSk7YiYmYi5ibGFja2xpc3RlZCYmKGEuaXNBYm9ydGVkPSEwKX19LHRSPXtNcjpMZigzMSl9O2Z1bmN0aW9uIHZSKGEpe3ZhciBiPWZ1bmN0aW9uKGMpe3JldHVybiEhYyYmYy5jb252ZXJzaW9ufTtWKGEsSC5KLm1nLGIoWEsoYSkpKTtRKGEsSC5KLm5nKSYmVihhLEguSi5ZbSxiKFhLKGEsImZpcnN0X3Zpc2l0IikpKTtRKGEsSC5KLlRlKSYmVihhLEguSi5ibixiKFhLKGEsInNlc3Npb25fc3RhcnQiKSkpfTt2YXIgd1I9ZnVuY3Rpb24oYSl7Rm8uaGFzT3duUHJvcGVydHkoYS5ldmVudE5hbWUpJiYoVihhLEguSi5XbSwhMCksYS5jb3B5VG9IaXREYXRhKEYuRC5IYSksYS5jb3B5VG9IaXREYXRhKEYuRC5lYikpfTt2YXIgeFI9ZnVuY3Rpb24oYSl7UShhLEguSi5iZSk/VihhLEguSi5sZywhMSk6ZEkoYSwiY2NkX2FkZF9lY19zdGl0Y2hpbmciLCExKSYmVihhLEguSi5sZywhMCl9O3ZhciB5Uj1mdW5jdGlvbihhKXt2YXIgYj1RKGEsSC5KLnBnKTtiPWJ8fDA7dmFyIGM9ISFRKGEsSC5KLnNhKSxkPWI9PT0wfHxjO1YoYSxILkouZWosZCk7ZCYmVihhLEguSi5wZyw2MCl9O3ZhciBBUj1mdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz1TdHJpbmcoelIuY29va2llKS5zcGxpdCgiOyIpLGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXS5zcGxpdCgiPSIpLGY9ZVswXS50cmltKCk7aWYoZiYmYShmKSl7dmFyIGc9ZS5zbGljZSgxKS5qb2luKCI9IikudHJpbSgpO2cmJihnPWRlY29kZVVSSUNvbXBvbmVudChnKSk7dmFyIGg9dm9pZCAwLGw9dm9pZCAwOygoaD1iKVtsPWZdfHwoaFtsXT1bXSkpLnB1c2goZyl9fXJldHVybiBifTt2YXIgQlI9d2luZG93LHpSPWRvY3VtZW50LENSPWZ1bmN0aW9uKGEpe3ZhciBiPUJSLl9nYVVzZXJQcmVmcztpZihiJiZiLmlvbyYmYi5pb28oKXx8elIuZG9jdW1lbnRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgiZGF0YS1nb29nbGUtYW5hbHl0aWNzLW9wdC1vdXQiKXx8YSYmQlJbImdhLWRpc2FibGUtIithXT09PSEwKXJldHVybiEwO3RyeXt2YXIgYz1CUi5leHRlcm5hbDtpZihjJiZjLl9nYVVzZXJQcmVmcyYmYy5fZ2FVc2VyUHJlZnM9PSJvbyIpcmV0dXJuITB9Y2F0Y2goZil7fWZvcih2YXIgZD1BUihmdW5jdGlvbihmKXtyZXR1cm4gZj09PSJBTVBfVE9LRU4ifSkuQU1QX1RPS0VOfHxbXSxlPTA7ZTxkLmxlbmd0aDtlKyspaWYoZFtlXT09IiRPUFRfT1VUIilyZXR1cm4hMDtyZXR1cm4gelIuZ2V0RWxlbWVudEJ5SWQoIl9fZ2FPcHRPdXRFeHRlbnNpb24iKT8hMDohMX07dmFyIERSPWZ1bmN0aW9uKGEpe2lmKENSKGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQpKVAoMjgpLGEuaXNBYm9ydGVkPSEwO2Vsc2V7dmFyIGI9eGsoKTtpZihiJiZBcnJheS5pc0FycmF5KGIuZGVzdGluYXRpb25zKSlmb3IodmFyIGM9MDtjPGIuZGVzdGluYXRpb25zLmxlbmd0aDtjKyspaWYoQ1IoYi5kZXN0aW5hdGlvbnNbY10pKXtQKDEyNSk7YS5pc0Fib3J0ZWQ9ITA7YnJlYWt9fX07dmFyIEVSPWZ1bmN0aW9uKGEpe3ZhciBiPUIubG9jYXRpb24ucHJvdG9jb2w7YiE9PSJodHRwOiImJmIhPT0iaHR0cHM6IiYmKFAoMjkpLGEuaXNBYm9ydGVkPSEwKX07dmFyIEZSPWZ1bmN0aW9uKGEpe0hjJiZIYy5sb2FkUHVycG9zZT09PSJwcmV2aWV3IiYmKFAoMzApLGEuaXNBYm9ydGVkPSEwKX07dmFyIEdSPWZ1bmN0aW9uKGEsYil7Yi5UaiYmKFYoYSxILkouc2EsITApLGIuVGo9ITEsV2ooKSYmVihhLEguSi5vZyxjYygpKSl9O3ZhciBIUj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGMsZCl7Qm9bY118fGQ9PT12b2lkIDB8fFUoYSxjLGQpfU0oNTUwKSYmR2IoYS5NLldhLGIpO0diKGEuTS5oYixiKTtHYihhLk0uRWEsYil9O3ZhciBJUj1mdW5jdGlvbihhKXthLmV2ZW50TmFtZT09PUYuRC53YSYmKE8oYS5NLEYuRC5UZCwhMCk/KGEuTS5FYVtGLkQuT2FdJiYoTSg1NTApJiYoYS5NLldhW0YuRC5PYV09YS5NLkVhW0YuRC5PYV0pLGEuTS5oYltGLkQuT2FdPWEuTS5FYVtGLkQuT2FdLGEuTS5FYVtGLkQuT2FdPXZvaWQgMCxVKGEsRi5ELk9hKSksYS5ldmVudE5hbWU9Ri5ELnNjKTphLmlzQWJvcnRlZD0hMCl9Owp2YXIgSlI9ZnVuY3Rpb24oYSl7aWYoTSgxMzIpKXt2YXIgYj1aSyhhKTtpZihiayhiKSlpZihjayhiKSljayhaSyhhKSkmJmEubWVyZ2VIaXREYXRhRm9yS2V5KEYuRC5UYSx7IjNwZCI6IjEifSk7ZWxzZSBpZighKE5jKCI7IHd2Iil8fE5jKCJGQkFOIil8fE5jKCJGQkFWIil8fFBjKCkpJiZYbyhGLkQucmEpKXtWKGEsSC5KLmRuLCEwKTtiayhaSyhhKSkmJldLKGEsInN3X2V4cCIsMSk7YTp7aWYoIU0oMTMyKXx8IWJrKFpLKGEpKXx8Y2soWksoYSkpKWJyZWFrIGE7Yjp7dmFyIGM9e290OllqKGVrKGEuTSksIi9fL3NlcnZpY2Vfd29ya2VyIil9LGQ7ZD0oYz09PXZvaWQgMD97fTpjKS5vdDt2YXIgZT1pTChkKTtpZihlPT09bnVsbHx8IWJnKCJpbnRlcm5hbF9zd19hbGxvd2VkIiwiIil8fGpMKGUub3JpZ2luKSlicmVhayBiOwppZighSWMoKSl7Z0woKS5LKHZvaWQgMCx2b2lkIDAsNik7YnJlYWsgYn12YXIgZj1uZXcga0woZSk7b20oam0uYmEuT2gse30pW2Uub3JpZ2luXT1mO319fX19O3ZhciBMUj1mdW5jdGlvbihhKXthLmNvcHlUb0hpdERhdGEoRi5ELk9sKTtPKGEuTSxGLkQueGgpJiYoVShhLEYuRC54aCwhMCksYmsoWksoYSkpfHxLUihhKSl9LEtSPWZ1bmN0aW9uKGEpe3ZhciBiPUYuRC5iZCxjO2N8fChjPWZ1bmN0aW9uKCl7fSk7UihhLGIpIT09dm9pZCAwJiZVKGEsYixjKFIoYSxiKSkpfTt2YXIgTVI9ImdjbGlkIGRjbGlkIGdjbHNyYyB3YnJhaWQgZ2JyYWlkIGdhZF9zb3VyY2UgZ2FkX2NhbXBhaWduaWQgdXRtX3NvdXJjZSB1dG1fbWVkaXVtIHV0bV9jYW1wYWlnbiB1dG1fdGVybSB1dG1fY29udGVudCB1dG1faWQiLnNwbGl0KCIgIik7ZnVuY3Rpb24gTlIoKXt2YXIgYT1CLmxvY2F0aW9uLGIsYz1hPT1udWxsP3ZvaWQgMDooYj1hLnNlYXJjaCk9PW51bGw/dm9pZCAwOmIucmVwbGFjZSgiPyIsIiIpLGQ7aWYoYyl7Zm9yKHZhciBlPVtdLGY9SmooYywhMCksZz1tKE1SKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIGw9aC52YWx1ZSxuPWZbbF07aWYobilmb3IodmFyIHA9MDtwPG4ubGVuZ3RoO3ArKyl7dmFyIHE9bltwXTtxIT09dm9pZCAwJiZlLnB1c2goe25hbWU6bCx2YWx1ZTpxfSl9fWQ9ZX1lbHNlIGQ9W107cmV0dXJuIGR9O3ZhciBPUj1mdW5jdGlvbihhKXt2YXIgYj1NKDI2NiksYz1NKDI2Nyk7aWYoYnx8Yyl7dmFyIGQ9UihhLEYuRC56YSk7aWYoZCYmZC5pbmRleE9mKCI/Iik9PT0tMSl7dmFyIGU9TlIoKTtpZihlLmxlbmd0aCE9PTAmJihiJiZJUChKLlUuR20pLGMpKXtJUChKLlUuRm0pO3ZhciBmPWUubWFwKGZ1bmN0aW9uKGcpe3JldHVybiBnLm5hbWUrIj0iK2cudmFsdWV9KS5qb2luKCImIik7VShhLEYuRC56YSxkKyI/IitmKX19fX07dmFyIFBSPVtGLkQucmEsRi5ELmthXSxRUj1bRi5ELnJhLEYuRC5rYSxGLkQubWFdOwpmdW5jdGlvbiBSUihhKXt2YXIgYixjPU0oNTA2KSYmIWRJKGEsImNjZF9nYV9hZHNfaWRzX29wdF9vdXQiLCExKSxkPSEhZEkoYSwiZ29vZ2xlX25nIiwhMSksZT1YbyhjP2Q/UVI6ZnA6UFIpLGY7Zj1kSShhLEYuRC5VZixPKGEuTSxGLkQuVWYpKXx8ISFkSShhLCJnb29nbGVfbmciLCExKTtiPXtoZjpjLEVzOmQsR286ZSxmZjpmLExnOiEhZEkoYSwiZ2E0X2Fkc19saW5rZWQiLCExKSxiaTpBbSgpLEdqOiFWSygpLEZzOmJrKFpLKGEpKSxEczohIVEoYSxILkouYmUpLEdzOiEhUShhLEguSi5UZSksdXM6ISFPKGEuTSxGLkQuTmwpLEtzOiEhUShhLEguSi5laikseGc6TyhhLk0sRi5ELlNjKSxucjpPKGEuTSxGLkQuU2Msdm9pZCAwLDQpLEhzOiEhUShhLEguSi5GYyl9O1YoYSxILkouY2osYi5mZik7VihhLEguSi5iaixTUihiKSk7Yi5oZiYmIWIuZmYmJmIuTGcmJlNSKGIpJiZVKGEsIl8maWJ0IiwiMSIpO1NSKGIpJiZiLkdvJiYoYi5oZj9iLnhnIT09ITF8fGIuTGc6MSkmJlYoYSwKSC5KLnJuLCEwKTtiLkVzJiYhYi5iaSYmVShhLEYuRC5MZSwxKTsoYi5oZj9iLnhnOmIubnIpPT09ITEmJlUoYSwiXyZuZ3MiLCIxIik7VihhLEguSi5oZCxUUihiKSYmKGIuR3N8fGIudXMpKTtWKGEsSC5KLnJnLFRSKGIpJiZiLktzJiYhYi5iaSl9ZnVuY3Rpb24gU1IoYSl7cmV0dXJuIGEuaGY/KGEuTGd8fGEuZmYpJiYhYS5iaSYmIWEuR2o6YS5mZiYmYS54ZyE9PSExJiYhYS5HaiYmIWEuYml9ZnVuY3Rpb24gVFIoYSl7aWYoYS5IcylyZXR1cm4hMTtpZihhLmhmKXtpZighYS5mZiYmIWEuTGcpcmV0dXJuITF9ZWxzZSBpZighYS5mZilyZXR1cm4hMTtyZXR1cm4gYS5Gc3x8YS5Ec3x8YS5Hanx8KGEuaGY/YS54Zz09PSExJiYhYS5MZzphLnhnPT09ITEpfHwhYS5Hbz8hMTohMH07dmFyIFVSPWZ1bmN0aW9uKGEpe3NMKCkmJlUoYSxGLkQuRmUsIjEiKX07dmFyIFZSPWZ1bmN0aW9uKGEpe3ZhciBiPXtwcmVmaXg6U3RyaW5nKE8oYS5NLEYuRC5uYiwiIikpLHBhdGg6U3RyaW5nKE8oYS5NLEYuRC52YywiLyIpKSxmbGFnczpTdHJpbmcoTyhhLk0sRi5ELlRiLCIiKSksZG9tYWluOlN0cmluZyhPKGEuTSxGLkQuTGIsImF1dG8iKSkscGQ6TnVtYmVyKE8oYS5NLEYuRC5DYiw2MzA3MkUzKSl9O1YoYSxILkouR2EsYil9O3ZhciBXUj1mdW5jdGlvbihhKXtpZihNKDQzNSl8fE0oNTUzKSl7dmFyIGI9RG0oKTtiJiZWKGEsSC5KLkFxLGIpfX07dmFyIFlSPWZ1bmN0aW9uKGEpe2EuY29weVRvSGl0RGF0YShGLkQuUmkpO2Zvcih2YXIgYj1PKGEuTSxGLkQuUmwpfHxbXSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY107aWYoZC5ydWxlX3Jlc3VsdCl7YS5jb3B5VG9IaXREYXRhKEYuRC5SaSxkLnRyYWZmaWNfdHlwZSk7SVAoSi5VLkVuKTticmVha319fTt2YXIgWlI9ZnVuY3Rpb24oYSl7aWYoZEkoYSwiZ2E0X2Fkc19saW5rZWQiLCExKSYmYS5ldmVudE5hbWU9PT1GLkQud2Epe3ZhciBiPU8oYS5NLEYuRC51YykhPT0hMTtpZihiKXt2YXIgYz1MSyhhKTtjLnBkJiYoYy5wZD1NYXRoLm1pbihjLnBkLDc3NzZFMykpO1BLKHtUbjpiLG1vOk9vKE8oYS5NLEYuRC5EYikpLFFvOiEhTyhhLk0sRi5ELnpjKSxVbjpjfSl9fX07dmFyICRSPWZ1bmN0aW9uKGEpe1YoYSxILkouTWgsITEpO1YoYSxILkouTmgsITEpO2lmKCFEbSgpJiZXaigpJiYhYmsoWksoYSkpJiYhUShhLEguSi5iZSkmJlEoYSxILkouZWopKXt2YXIgYj1RKGEsSC5KLnJnKTtRKGEsSC5KLm9nKSYmKGI/VihhLEguSi5OaCwhMCk6VihhLEguSi5NaCwhMCkpfX07dmFyIGFTPWZ1bmN0aW9uKGEpe08oYS5NLEYuRC56YykmJihYbyhGLkQucmEpfHxPKGEuTSxGLkQuS2IpfHxVKGEsRi5ELlptLCEwKSk7dmFyIGI7dmFyIGM7Yz1jPT09dm9pZCAwPzM6Yzt2YXIgZD1BLmxvY2F0aW9uLmhyZWY7aWYoZCl7dmFyIGU9UmooZCkuc2VhcmNoLnJlcGxhY2UoIj8iLCIiKSxmPUlqKGUsIl9nbCIsITEsITApfHwiIjtiPWY/VnEoZixjKSE9PXZvaWQgMDohMX1lbHNlIGI9ITE7YiYmYmsoWksoYSkpJiZXSyhhLCJnbHYiLDEpO2lmKGEuZXZlbnROYW1lIT09Ri5ELndhKXJldHVybnt9O08oYS5NLEYuRC56YykmJkFzKFsiYXciLCJkYyJdKTtDcyhbImF3IiwiZGMiXSk7dmFyIGc9JFAoYSksaD1aUChhKTtyZXR1cm4gT2JqZWN0LmtleXMoZykubGVuZ3RoP2c6aH07dmFyIGJTPWZ1bmN0aW9uKGEpe3ZhciBiPSEwO2I9Yj09PXZvaWQgMD8hMTpiO2lmKE0oNDI1KSYmIShwbCgpfHxiJiZRKGEsSC5KLmRqKXx8YS5ldmVudE5hbWUhPT1GLkQud2F8fFEoYSxILkouRmMpKSl7dmFyIGM9e30sZD17fSxlPXtldmVudE1ldGFkYXRhOm5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYS5NLmV2ZW50TWV0YWRhdGEsKGNbSC5KLkZjXT0hMCxjKSxiP3t9OihkW0guSi5EY109WC5WLkthLGQpKSxub0d0bUV2ZW50OiEwfSxmPXNDKGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQsInN0cnVjdHVyZWRfZGF0YSIsYS5NLkVhKTttRChmLGEuTS5ldmVudElkLGUpfX07CnZhciBkUz1mdW5jdGlvbihhKXtyZXR1cm4hYXx8Y1MudGVzdChhKXx8RG8uaGFzT3duUHJvcGVydHkoYSl9LGNTPS9eKF98Z2FffGdvb2dsZV98Z3RhZ1wufGZpcmViYXNlXykuKiQvLGVTPWZ1bmN0aW9uKGEpe3RoaXMueWE9YTt0aGlzLkg9dGhpcy56Yj10aGlzLmNsaWVudElkPXZvaWQgMDt0aGlzLmphPXRoaXMuUj0hMTt0aGlzLkxhPTA7dGhpcy5OPSExO3RoaXMuWj17VGo6ITF9O3RoaXMuZmE9bmV3IElRO3RoaXMuSz1uZXcgSFB9O2s9ZVMucHJvdG90eXBlO2suWnM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMsZT1iQyh0aGlzLnlhKTtpZihlKWlmKGMuZXZlbnRNZXRhZGF0YVtILkouYWVdJiZhLmNoYXJBdCgwKT09PSJfIiljLm9uRmFpbHVyZSgpO2Vsc2V7YSE9PUYuRC53YSYmYSE9PUYuRC5KYiYmZFMoYSkmJlAoNTgpO3ZhciBmPW5ldyBhSShlLGEsYyk7VihmLEguSi5FYixiKTt2YXIgZz1bRi5ELnJhXSxoPWJrKFpLKGYpKTtWKGYsSC5KLmRqLGgpO2lmKGRJKGYsRi5ELlVmLApPKGYuTSxGLkQuVWYpKXx8aClnLnB1c2goRi5ELmthKSxnLnB1c2goRi5ELm1hKTtGTS5mYShmdW5jdGlvbigpe2JwKGZ1bmN0aW9uKCl7ZC5idChmKX0sZyl9KX1lbHNlIGMub25GYWlsdXJlKCl9O2suYnQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0cnl7SE0oYSk7aWYoYS5pc0Fib3J0ZWQpe3RiKCk7cmV0dXJufUpNKGEpO0RSKGEpO3VSKGEpO0VSKGEpO0ZSKGEpO0lNKGEpO3ZhciBjPXt9O2VRKGEsYyk7aWYoYS5pc0Fib3J0ZWQpe2EuTS5vbkZhaWx1cmUoKTt0YigpO3JldHVybn10aGlzLkg9YTt2YXIgZD1jLnVyO2MuSHI9PT0wJiZJUChKLlUubmwpO2Q9PT0wJiZJUChKLlUuTGspO1pNKGEpO1YoYSxILkoudGcsY28uaWEueGQpO1ZSKGEpO0hSKGEpO3RoaXMuTHEoYSk7dGhpcy5LLkt0KGEpO1UoYSxGLkQuemksYWwoOCxORikpO3hSKGEpO3BOKGEpO1pSKGEpO01RKGEpO3RoaXMuQW8oYVMoYSkpO2JTKGEpO3ZhciBlPWEuZXZlbnROYW1lPT09Ri5ELndhO2UmJih0aGlzLk49CiEwKTtJUihhKTtlJiYhYS5pc0Fib3J0ZWQmJnRoaXMuTGErKz4wJiZJUChKLlUuaG4pO1VMKGEpO2pSKGEsdGhpcy5jbGllbnRJZCx0aGlzLnpiLHRoaXMuSywhdGhpcy5qYSk7blIoYSk7bFIoYSk7T1IoYSk7WEwoYSk7R1IoYSx0aGlzLlopO3lSKGEpO3ZSKGEpO3dSKGEpO1lSKGEpO2FRKGEpO2dRKGEpO3dNKGEpO2hSKGEpO1lRKGEpO2dSKGEpO2ZSKGEpO2VSKGEpO2RSKGEpO2NSKGEpO2FSKGEpOyRRKGEpO1dRKGEpO1VRKGEpO1RRKGEpO1NRKGEpO2JRKGEpO2NRKGEpO08oYS5NLEYuRC54aCkmJiFiayhaSyhhKSl8fEdNKGEpO1VSKGEpO1dSKGEpO2lOKGEpO1ZMKGEpO1NMKGEpO2xOKGEpO2hOKGEpO1hNKGEsITEpO3NSKGEpO1JSKGEpOyRSKGEpO05NKGEpO3JSKGEpO3BSKGEpO2JSKGEpO1pRKGEpO1JRKGEpO3FSKGEpOyF0aGlzLk4mJlEoYSxILkouUGMpJiZJUChKLlUuc2wpO0pQKGEpO2lmKE0oNTc1KSl7aWYoYS5pc0Fib3J0ZWQpe2lmKCFRKGEsSC5KLlNvKSlhLk0ub25GYWlsdXJlKCk7CnRiKCk7cmV0dXJufWlmKFEoYSxILkouSmEpKXthLk0ub25GYWlsdXJlKCk7dGIoKTtyZXR1cm59fWVsc2UgaWYoUShhLEguSi5KYSl8fGEuaXNBYm9ydGVkKXthLk0ub25GYWlsdXJlKCk7dGIoKTtyZXR1cm59dGhpcy5BbyhpUihhLHRoaXMuY2xpZW50SWQpKTt0aGlzLmphPSEwO3RoaXMuSHQoYSk7SlIoYSk7VlEoZnVuY3Rpb24oZil7Yi5NbihmKX0sYSk7dGhpcy5LLnFrKCk7TFIoYSk7Z04oYSk7V0woYSk7WU0oYSk7aWYoYS5pc0Fib3J0ZWQpe2EuTS5vbkZhaWx1cmUoKTt0YigpO3JldHVybn10aGlzLk1uKGEpO2EuTS5vblN1Y2Nlc3MoKX1jYXRjaChmKXthLk0ub25GYWlsdXJlKCl9dGIoKX07ay5Nbj1mdW5jdGlvbihhKXt0aGlzLmZhLmFkZChhKX07ay5Bbz1mdW5jdGlvbihhKXt2YXIgYj1hLmNsaWVudElkLGM9YS56YjtiJiZjJiYodGhpcy5jbGllbnRJZD1iLHRoaXMuemI9Yyl9O2suZmx1c2g9ZnVuY3Rpb24oKXt0aGlzLmZhLmZsdXNoKCl9O2suSHQ9ZnVuY3Rpb24oYSl7dmFyIGI9CnRoaXM7aWYoIXRoaXMuUil7dmFyIGM9WG8oRi5ELm1hKSxkPVhvKEYuRC5yYSk7JG8oW0YuRC5tYSxGLkQucmEsRi5ELmthXSxmdW5jdGlvbihlKXt2YXIgZjtmPShlPT09dm9pZCAwP3t9OmUpLmNvbnNlbnRFdmVudElkO3ZhciBnPVhvKEYuRC5tYSksaD1YbyhGLkQucmEpLGw9ITEsbj17fSxwPXt9O2lmKGQhPT1oJiZiLkgmJmIuemImJmIuY2xpZW50SWQpe3ZhciBxPWIuY2xpZW50SWQscjt2YXIgdD1MUChiLnpiKTtyPXQ/dC5oOnZvaWQgMDtpZihoKXt2YXIgdT1GUChiLkgpO2lmKHUpe2IuY2xpZW50SWQ9dTt2YXIgdj1TUChiLkgpO3YmJihiLnpiPVBQKHYsYi56YixiLkgpKX1lbHNlIERQKGIuY2xpZW50SWQsYi5IKSxBUChiLmNsaWVudElkLCEwKTtSUChiLnpiLGIuSCk7bD0hMDtuW0YuRC5ObF09cTtyJiYobltGLkQuYnFdPXIpfWVsc2UgYi56Yj12b2lkIDAsYi5jbGllbnRJZD12b2lkIDAsQS5nYUdsb2JhbD17fX1nJiYhYyYmKGw9ITAscFtILkouR2hdPSEwLG5bRi5ELnhpXT0KTG9bRi5ELm1hXSk7aWYobCl7dmFyIHg9c0MoYi55YSxGLkQueWYsbik7bUQoeCxmIT1udWxsP2Y6YS5NLmV2ZW50SWQse2V2ZW50TWV0YWRhdGE6cH0pfWQ9aDtjPWc7Yi5aLlRqPSEwfSk7dGhpcy5SPSEwfX07ay5McT1mdW5jdGlvbihhKXthLmV2ZW50TmFtZSE9PUYuRC5KYiYmdGhpcy5LLktxKGEpfTt2YXIgZ1M9ZnVuY3Rpb24oYSl7aWYoIWZTKGEpKXt2YXIgYj0hMSxjPWZ1bmN0aW9uKCl7IWImJmZTKGEpJiYoYj0hMCxhZChCLCJ2aXNpYmlsaXR5Y2hhbmdlIixjKSxhZChCLCJwcmVyZW5kZXJpbmdjaGFuZ2UiLGMpLFAoNTUpKX07JGMoQiwidmlzaWJpbGl0eWNoYW5nZSIsYyk7JGMoQiwicHJlcmVuZGVyaW5nY2hhbmdlIixjKTtQKDU0KX19LGZTPWZ1bmN0aW9uKGEpe2lmKCJwcmVyZW5kZXJpbmciaW4gQj9CLnByZXJlbmRlcmluZzpCLnZpc2liaWxpdHlTdGF0ZT09PSJwcmVyZW5kZXIiKXJldHVybiExO2EoKTtyZXR1cm4hMH07ZnVuY3Rpb24gaFMoYSl7Z1MoZnVuY3Rpb24oKXt2YXIgYj1iQyhhKTtpZihiKXt2YXIgYz1pUyhiKSxkPWNvLmlhLnhkLGU9WUMoKSxmPWJDKGEsITApO2YmJmUuSC5yZWdpc3RlcihmLGMsZCx2b2lkIDApfX0pO31mdW5jdGlvbiBpUyhhKXt2YXIgYj1mdW5jdGlvbigpe307dmFyIGM9bmV3IGVTKGEuaWQpLGQ9YS5wcmVmaXg9PT0iTUMiO2I9ZnVuY3Rpb24oZSxmLGcsaCl7ZCYmKGguZXZlbnRNZXRhZGF0YVtILkouYmVdPSEwKTtjLlpzKGYsZyxoKX07alMoYSxjKTtyZXR1cm4gYn0KZnVuY3Rpb24galMoYSxiKXt2YXIgYz1iLks7Yy5odChmdW5jdGlvbigpe1prKDksITApO1lDKCkuZmx1c2goKTtpZihjLlloKCk+PTFFMyYma2QoKSl7dmFyIGQ9e30sZT17ZXZlbnRJZDpyaigpLGV2ZW50TWV0YWRhdGE6KGRbSC5KLktrXT0hMCxkKSxkZWZlcnJhYmxlOiEwfTtaQyhGLkQueWYse30sYS5pZCxlKX1iLmZsdXNoKCk7Yy5DbyhmdW5jdGlvbigpe1prKDksITEpO2MuQ28oKX0pfSk7fXZhciBrUz1KLlUucWwsbFM9Si5VLnJsO2Z1bmN0aW9uIG1TKGEsYil7dmFyIGM9dGsoKTtjJiZjLmluZGV4T2YoYik+LTEmJihhW0guSi5DY109ITApfWZ1bmN0aW9uIG9TKGEsYixjKXt2YXIgZD10aGlzO31vUy5QPSJpbnRlcm5hbC5ndGFnQ29uZmlnIjtmdW5jdGlvbiBwUyhhLGIsYyxkKXt2YXIgZT10aGlzO31wUy5QPSJpbnRlcm5hbC5ndGFnRGVzdGluYXRpb25Db25maWciOwpmdW5jdGlvbiByUyhhLGIpe30KclMucHVibGljTmFtZT0iZ3RhZ1NldCI7ZnVuY3Rpb24gc1MoKXt2YXIgYT17fTtyZXR1cm4gYX07ZnVuY3Rpb24gdFMoYSl7fXRTLlA9ImludGVybmFsLmluaXRpYWxpemVTZXJ2aWNlV29ya2VyIjtmdW5jdGlvbiB1UyhhLGIpe311Uy5wdWJsaWNOYW1lPSJpbmplY3RIaWRkZW5JZnJhbWUiO2Z1bmN0aW9uIHZTKGEsYixjLGQsZSl7fXZTLlA9ImludGVybmFsLmluamVjdEh0bWwiO3ZhciBBUz17ZGw6MSxpZDoxfTsKZnVuY3Rpb24gQlMoYSxiLGMsZCl7fUJTLnB1YmxpY05hbWU9ImluamVjdFNjcmlwdCI7ZnVuY3Rpb24gQ1MoKXt2YXIgYT12bSxiPSExO2I9ISFhLkhbIjUiXTtyZXR1cm4gYn1DUy5QPSJpbnRlcm5hbC5pc0F1dG9QaWlFbGlnaWJsZSI7ZnVuY3Rpb24gRFMoYSl7dmFyIGI9ITA7cmV0dXJuIGJ9RFMucHVibGljTmFtZT0iaXNDb25zZW50R3JhbnRlZCI7ZnVuY3Rpb24gRVMoYSl7dmFyIGI9ITE7cmV0dXJuIGJ9RVMuUD0iaW50ZXJuYWwuaXNEZWJ1Z01vZGUiO2Z1bmN0aW9uIEZTKGEpe3ZhciBiPSExO3JldHVybiBifUZTLlA9ImludGVybmFsLmlzRGVzdGluYXRpb25Jbml0aWFsaXplZCI7ZnVuY3Rpb24gR1MoKXtyZXR1cm4gQm0oKX1HUy5QPSJpbnRlcm5hbC5pc0RtYVJlZ2lvbiI7ZnVuY3Rpb24gSFMoKXtyZXR1cm4gVUIoKX1IUy5QPSJpbnRlcm5hbC5pc0RvbVJlYWR5IjtmdW5jdGlvbiBJUyhhKXt2YXIgYj0hMTtyZXR1cm4gYn1JUy5QPSJpbnRlcm5hbC5pc0VudGl0eUluZnJhc3RydWN0dXJlIjtmdW5jdGlvbiBKUyhhKXt2YXIgYj0hMTtpZighcWgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIm51bWJlciJdLFthXSk7Yj1NKGEpO3JldHVybiBifUpTLlA9ImludGVybmFsLmlzRmVhdHVyZUVuYWJsZWQiO2Z1bmN0aW9uIEtTKCl7dmFyIGE9ITE7cmV0dXJuIGF9S1MuUD0iaW50ZXJuYWwuaXNGcGZlIjtmdW5jdGlvbiBMUygpe3ZhciBhPSExO3JldHVybiBhfUxTLlA9ImludGVybmFsLmlzR2NwQnJvd3NlciI7ZnVuY3Rpb24gTVMoKXt2YXIgYT0hMTtyZXR1cm4gYX1NUy5QPSJpbnRlcm5hbC5pc0xhbmRpbmdQYWdlIjtmdW5jdGlvbiBOUygpe3ZhciBhPSExO3JldHVybiBhfU5TLlA9ImludGVybmFsLmlzT2d0IjtmdW5jdGlvbiBPUygpe3ZhciBhO3JldHVybiBhfU9TLlA9ImludGVybmFsLmlzU2FmYXJpUGNtRWxpZ2libGVCcm93c2VyIjtmdW5jdGlvbiBQUygpe3ZhciBhPVFoKGZ1bmN0aW9uKGIpe1hGKHRoaXMpLmxvZygiZXJyb3IiLGIpfSk7YS5wdWJsaWNOYW1lPSJKU09OIjtyZXR1cm4gYX07ZnVuY3Rpb24gUVMoYSl7dmFyIGI9dm9pZCAwO3JldHVybiBVZChiKX1RUy5QPSJpbnRlcm5hbC5sZWdhY3lQYXJzZVVybCI7ZnVuY3Rpb24gUlMoKXtyZXR1cm4hMX0KdmFyIFNTPXtnZXRJdGVtOmZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7cmV0dXJuIGJ9LHNldEl0ZW06ZnVuY3Rpb24oYSxiKXtyZXR1cm4hMX0scmVtb3ZlSXRlbTpmdW5jdGlvbihhKXt9fTtmdW5jdGlvbiBUUygpe31UUy5wdWJsaWNOYW1lPSJsb2dUb0NvbnNvbGUiO2Z1bmN0aW9uIFVTKGEsYil7aWYoIWxoKGEpfHwhZWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsIk9iamVjdCJdLGFyZ3VtZW50cyk7dmFyIGM9YSxkPVRkKGIsdGhpcy5UKSxlPVlDKCksZj1iQyhjLCEwKTtmJiZUQyhlLkgsZixkKTt9VVMuUD0iaW50ZXJuYWwubWVyZ2VSZW1vdGVDb25maWciO2Z1bmN0aW9uIFZTKGEsYixjKXtjPWM9PT12b2lkIDA/ITA6Yzt2YXIgZD1bXTtyZXR1cm4gVWQoZCl9VlMuUD0iaW50ZXJuYWwucGFyc2VDb29raWVWYWx1ZXNGcm9tU3RyaW5nIjtmdW5jdGlvbiBXUyhhKXt2YXIgYj12b2lkIDA7aWYodHlwZW9mIGEhPT0ic3RyaW5nIilyZXR1cm47YSYmU2IoYSwiLy8iKSYmKGE9Qi5sb2NhdGlvbi5wcm90b2NvbCthKTtpZih0eXBlb2YgVVJMPT09ImZ1bmN0aW9uIil7dmFyIGM7YTp7dmFyIGQ7dHJ5e2Q9bmV3IFVSTChhKX1jYXRjaCh4KXtjPXZvaWQgMDticmVhayBhfWZvcih2YXIgZT17fSxmPUFycmF5LmZyb20oZC5zZWFyY2hQYXJhbXMpLGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIGg9ZltnXVswXSxsPWZbZ11bMV07ZS5oYXNPd25Qcm9wZXJ0eShoKT90eXBlb2YgZVtoXT09PSJzdHJpbmciP2VbaF09W2VbaF0sbF06ZVtoXS5wdXNoKGwpOmVbaF09bH1jPXtocmVmOmQuaHJlZixvcmlnaW46ZC5vcmlnaW4scHJvdG9jb2w6ZC5wcm90b2NvbCx1c2VybmFtZTpkLnVzZXJuYW1lLHBhc3N3b3JkOmQucGFzc3dvcmQsaG9zdDpkLmhvc3QsaG9zdG5hbWU6ZC5ob3N0bmFtZSwKcG9ydDpkLnBvcnQscGF0aG5hbWU6ZC5wYXRobmFtZSxzZWFyY2g6ZC5zZWFyY2gsc2VhcmNoUGFyYW1zOmUsaGFzaDpkLmhhc2h9fXJldHVybiBVZChjKX12YXIgbjt0cnl7bj1SaihhKX1jYXRjaCh4KXtyZXR1cm59aWYoIW4ucHJvdG9jb2x8fCFuLmhvc3QpcmV0dXJuO3ZhciBwPXt9O2lmKG4uc2VhcmNoKWZvcih2YXIgcT1uLnNlYXJjaC5yZXBsYWNlKCI/IiwiIikuc3BsaXQoIiYiKSxyPTA7cjxxLmxlbmd0aDtyKyspe3ZhciB0PXFbcl0uc3BsaXQoIj0iKSx1PXRbMF0sdj1Laih0LnNwbGljZSgxKS5qb2luKCI9IikpfHwiIjt2PXYucmVwbGFjZSgvXCsvZywiICIpO3AuaGFzT3duUHJvcGVydHkodSk/dHlwZW9mIHBbdV09PT0ic3RyaW5nIj9wW3VdPVtwW3VdLHZdOnBbdV0ucHVzaCh2KTpwW3VdPXZ9bi5zZWFyY2hQYXJhbXM9cDtuLm9yaWdpbj1uLnByb3RvY29sKyIvLyIrbi5ob3N0O24udXNlcm5hbWU9IiI7bi5wYXNzd29yZD0iIjtiPVVkKG4pOwpyZXR1cm4gYn1XUy5wdWJsaWNOYW1lPSJwYXJzZVVybCI7ZnVuY3Rpb24gWFMoYSl7fVhTLlA9ImludGVybmFsLnByb2Nlc3NBc05ld0V2ZW50IjtmdW5jdGlvbiBZUyhhLGIsYyl7dmFyIGQ7cmV0dXJuIGR9WVMuUD0iaW50ZXJuYWwucHVzaFRvRGF0YUxheWVyIjtmdW5jdGlvbiBaUyhhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyksYz0hMTtpZighbGgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyJdLGFyZ3VtZW50cyk7Zm9yKHZhciBkPVt0aGlzLGFdLGU9bShiKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSlkLnB1c2goVGQoZi52YWx1ZSx0aGlzLlQsMSkpO3RyeXtMLmFwcGx5KG51bGwsZCksYz0hMH1jYXRjaChnKXtyZXR1cm4hMX1yZXR1cm4gY31aUy5wdWJsaWNOYW1lPSJxdWVyeVBlcm1pc3Npb24iO2Z1bmN0aW9uICRTKGEpe3ZhciBiPXRoaXM7fSRTLlA9ImludGVybmFsLnF1ZXVlQWRzVHJhbnNtaXNzaW9uIjtmdW5jdGlvbiBhVChhKXt2YXIgYj12b2lkIDA7cmV0dXJuIGJ9YVQucHVibGljTmFtZT0icmVhZEFuYWx5dGljc1N0b3JhZ2UiO2Z1bmN0aW9uIGJUKCl7dmFyIGE9IiI7cmV0dXJuIGF9YlQucHVibGljTmFtZT0icmVhZENoYXJhY3RlclNldCI7ZnVuY3Rpb24gY1QoKXtyZXR1cm4gRSgxOSl9Y1QuUD0iaW50ZXJuYWwucmVhZERhdGFMYXllck5hbWUiO2Z1bmN0aW9uIGRUKCl7dmFyIGE9IiI7cmV0dXJuIGF9ZFQucHVibGljTmFtZT0icmVhZFRpdGxlIjtmdW5jdGlvbiBlVChhLGIpe3ZhciBjPXRoaXM7aWYoIWxoKGEpfHwhaGgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsImZ1bmN0aW9uIl0sYXJndW1lbnRzKTtMTShhLGZ1bmN0aW9uKGQpe2IuaW52b2tlKGMuVCxVZChkLGMuVCwxKSl9KTt9ZVQuUD0iaW50ZXJuYWwucmVnaXN0ZXJDY2RDYWxsYmFjayI7ZnVuY3Rpb24gZlQoYSxiKXtpZighbGgoYSl8fCFlaChiKSYmIWdoKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJPYmplY3R8dW5kZWZpbmVkIl0sYXJndW1lbnRzKTtpZihCaChYRih0aGlzKS5QYigpKSlyZXR1cm4hMTt2YXIgYyxkLGU9YkMoYSwhMCk7aWYoIWUpcmV0dXJuITE7c3dpdGNoKGUucHJlZml4KXtjYXNlICJBVyI6Yz10TjtkPWNvLmlhLmNiO2JyZWFrO2Nhc2UgIkRDIjpjPUlOO2Q9Y28uaWEuY2I7YnJlYWs7Y2FzZSAiR0YiOmM9Tk47ZD1jby5pYS5nZDticmVhaztjYXNlICJIQSI6Yz1QTjtkPWNvLmlhLmdkO2JyZWFrO2Nhc2UgIlVBIjpjPWZPO2Q9Y28uaWEuZ2Q7YnJlYWs7Y2FzZSAiTUMiOmM9aVMoZSk7ZD1jby5pYS54ZDticmVhaztjYXNlICJHIjpyZXR1cm4gaFMoYSksITA7ZGVmYXVsdDpyZXR1cm4hMX12YXIgZj1hLApnPWMsaD1kLGw9VGQoYix0aGlzLlQsMSksbj1ZQygpLHA9YkMoZiwhMCk7cCYmbi5ILnJlZ2lzdGVyKHAsZyxoLGwpO3JldHVybiEwfWZULlA9ImludGVybmFsLnJlZ2lzdGVyRGVzdGluYXRpb24iO3ZhciBnVD1bImV2ZW50Il07ZnVuY3Rpb24gaFQoYSxiLGMpe31oVC5QPSJpbnRlcm5hbC5yZWdpc3Rlckd0YWdDb21tYW5kTGlzdGVuZXIiO2Z1bmN0aW9uIGlUKGEsYil7dmFyIGM9ITE7cmV0dXJuIGN9aVQuUD0iaW50ZXJuYWwucmVtb3ZlRGF0YUxheWVyRXZlbnRMaXN0ZW5lciI7ZnVuY3Rpb24galQoYSxiKXt9CmpULlA9ImludGVybmFsLnJlbW92ZUZvcm1EYXRhIjtmdW5jdGlvbiBrVCgpe31rVC5wdWJsaWNOYW1lPSJyZXNldERhdGFMYXllciI7ZnVuY3Rpb24gbFQoYSxiLGMpe3ZhciBkPXZvaWQgMDtyZXR1cm4gZH1sVC5QPSJpbnRlcm5hbC5zY3J1YlVybFBhcmFtcyI7ZnVuY3Rpb24gbVQoYSl7fW1ULlA9ImludGVybmFsLnNlbmRBZHNIaXQiO2Z1bmN0aW9uIG5UKGEsYixjLGQpe2lmKGFyZ3VtZW50cy5sZW5ndGg8Mnx8IWZoKGQpfHwhZmgoYykpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbImFueSIsImFueSIsIk9iamVjdHx1bmRlZmluZWQiLCJPYmplY3R8dW5kZWZpbmVkIl0sYXJndW1lbnRzKTt2YXIgZT1jP1RkKGMsdGhpcy5ULDEpOnt9LGY9VGQoYSksZz1BcnJheS5pc0FycmF5KGYpP2Y6W2ZdO2I9U3RyaW5nKGIpO3ZhciBoPWQ/VGQoZCk6e30sbD1YRih0aGlzKTtoLm9yaWdpbmF0aW5nRW50aXR5PXRHKGwpO2wucHJpb3JpdHlRdWV1ZSYmKGgucHJpb3JpdHlRdWV1ZT1sLnByaW9yaXR5UXVldWUpO2Zvcih2YXIgbj0wO248Zy5sZW5ndGg7bisrKXt2YXIgcD1nW25dO2lmKHR5cGVvZiBwPT09InN0cmluZyIpe3ZhciBxPXt9O0VkKGUscSk7dmFyIHI9e307RWQoaCxyKTt2YXIgdD1zQyhwLGIscSk7bUQodCwKaC5ldmVudElkfHxsLmV2ZW50SWQscil9fX1uVC5QPSJpbnRlcm5hbC5zZW5kR3RhZ0V2ZW50IjtmdW5jdGlvbiBvVChhLGIsYyl7fW9ULnB1YmxpY05hbWU9InNlbmRQaXhlbCI7ZnVuY3Rpb24gcFQoYSxiKXt9cFQuUD0iaW50ZXJuYWwuc2V0QW5jaG9ySHJlZiI7ZnVuY3Rpb24gcVQoYSl7fXFULlA9ImludGVybmFsLnNldENvbnRhaW5lckNvbnNlbnREZWZhdWx0cyI7ZnVuY3Rpb24gclQoYSxiLGMsZCl7dmFyIGU9dGhpcztkPWQ9PT12b2lkIDA/ITA6ZDt2YXIgZj0hMTsKcmV0dXJuIGZ9clQucHVibGljTmFtZT0ic2V0Q29va2llIjtmdW5jdGlvbiBzVChhKXt9c1QuUD0iaW50ZXJuYWwuc2V0Q29yZVBsYXRmb3JtU2VydmljZXMiO2Z1bmN0aW9uIHRUKGEsYil7fXRULlA9ImludGVybmFsLnNldERhdGFMYXllclZhbHVlIjtmdW5jdGlvbiB1VChhKXt9dVQucHVibGljTmFtZT0ic2V0RGVmYXVsdENvbnNlbnRTdGF0ZSI7ZnVuY3Rpb24gdlQoYSxiKXt9dlQuUD0iaW50ZXJuYWwuc2V0RGVsZWdhdGVkQ29uc2VudFR5cGUiO2Z1bmN0aW9uIHdUKGEsYil7fXdULlA9ImludGVybmFsLnNldEZvcm1BY3Rpb24iO2Z1bmN0aW9uIHhUKGEsYixjKXtjPWM9PT12b2lkIDA/ITE6YztpZighbGgoYSl8fCFvaChjKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwiYW55IiwiYm9vbGVhbnx1bmRlZmluZWQiXSxhcmd1bWVudHMpO2lmKCFrbShhKSl0aHJvdyBFcnJvcigic2V0SW5Dcm9zc0NvbnRhaW5lckRhdGEgcmVxdWlyZXMgdmFsaWQgQ3Jvc3NDb250YWluZXJTY2hlbWEga2V5LiIpOyhjfHxubShhKT09PXZvaWQgMCkmJm1tKGEsVGQoYix0aGlzLlQsMSkpO314VC5QPSJpbnRlcm5hbC5zZXRJbkNyb3NzQ29udGFpbmVyRGF0YSI7ZnVuY3Rpb24geVQoYSxiLGMpe3JldHVybiExfXlULnB1YmxpY05hbWU9InNldEluV2luZG93IjtmdW5jdGlvbiB6VChhLGIsYyl7fXpULlA9ImludGVybmFsLnNldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciI7ZnVuY3Rpb24gQVQoYSxiLGMpe2lmKCFsaChhKXx8IWxoKGIpfHxhcmd1bWVudHMubGVuZ3RoIT09Myl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwic3RyaW5nIiwiYW55Il0sYXJndW1lbnRzKTtmb3IodmFyIGQ9Yi5zcGxpdCgiLiIpLGU9ZUQoYSksZj0wO2Y8ZC5sZW5ndGgtMTtmKyspe2lmKGVbZFtmXV09PT12b2lkIDApZVtkW2ZdXT17fTtlbHNlIGlmKCFDZChlW2RbZl1dKSl0aHJvdyBFcnJvcigic2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIGZhaWxlZCwgcGF0aCBjb250YWlucyBhIG5vbi1vYmplY3QgdHlwZTogIitkW2ZdKTtlPWVbZFtmXV19ZVtkW2ZdXT1UZChjLHRoaXMuVCwxKTt9QVQuUD0iaW50ZXJuYWwuc2V0UmVtb3RlQ29uZmlnUGFyYW1ldGVyIjtmdW5jdGlvbiBCVChhLGIpe30KQlQuUD0iaW50ZXJuYWwuc2V0VHJhbnNtaXNzaW9uTW9kZSI7ZnVuY3Rpb24gQ1QoYSxiLGMsZCl7dmFyIGU9dGhpczt9Q1QucHVibGljTmFtZT0ic2hhMjU2IjtmdW5jdGlvbiBEVChhLGIsYyl7fQpEVC5QPSJpbnRlcm5hbC5zb3J0UmVtb3RlQ29uZmlnUGFyYW1ldGVycyI7ZnVuY3Rpb24gRVQoYSl7fUVULlA9ImludGVybmFsLnN0b3JlQWRzQnJhaWRMYWJlbHMiO2Z1bmN0aW9uIEZUKGEsYil7dmFyIGM9dm9pZCAwO3JldHVybiBjfUZULlA9ImludGVybmFsLnN1YnNjcmliZVRvQ3Jvc3NDb250YWluZXJEYXRhIjtmdW5jdGlvbiBHVChhKXt9R1QuUD0iaW50ZXJuYWwudGFza1NlbmRBZHNIaXRzIjt2YXIgSFQ9e2dldEl0ZW06ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbDtMKHRoaXMsImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIik7dmFyIGM9WEYodGhpcykuUGIoKSxkPWFsKDcsZnVuY3Rpb24oKXtyZXR1cm57fX0pO2RbY10mJihiPWRbY10uaGFzT3duUHJvcGVydHkoImd0bS4iK2EpP2RbY11bImd0bS4iK2FdOm51bGwpO3JldHVybiBifSxzZXRJdGVtOmZ1bmN0aW9uKGEsYil7TCh0aGlzLCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSIpO3ZhciBjPVhGKHRoaXMpLlBiKCksZD1hbCg3LGZ1bmN0aW9uKCl7cmV0dXJue319KTtkW2NdPWRbY118fHt9O2RbY11bImd0bS4iK2FdPWI7fSwKcmVtb3ZlSXRlbTpmdW5jdGlvbihhKXtMKHRoaXMsImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIik7dmFyIGI9WEYodGhpcykuUGIoKSxjPWFsKDcsZnVuY3Rpb24oKXtyZXR1cm57fX0pO2lmKCFjW2JdfHwhY1tiXS5oYXNPd25Qcm9wZXJ0eSgiZ3RtLiIrYSkpcmV0dXJuO2RlbGV0ZSBjW2JdWyJndG0uIithXTt9LGNsZWFyOmZ1bmN0aW9uKCl7TCh0aGlzLCJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSIpO3ZhciBhPVhGKHRoaXMpLlBiKCk7ZGVsZXRlIGFsKDcsZnVuY3Rpb24oKXtyZXR1cm57fX0pW2FdO30sCnB1YmxpY05hbWU6InRlbXBsYXRlU3RvcmFnZSJ9O2Z1bmN0aW9uIElUKGEsYil7dmFyIGM9ITE7cmV0dXJuIGN9SVQuUD0iaW50ZXJuYWwudGVzdFJlZ2V4IjtmdW5jdGlvbiBKVChhKXt2YXIgYjtyZXR1cm4gYn07ZnVuY3Rpb24gS1QoYSxiKXt9S1QuUD0iaW50ZXJuYWwudHJhY2tVc2FnZSI7ZnVuY3Rpb24gTFQoYSxiKXt2YXIgYztyZXR1cm4gY31MVC5QPSJpbnRlcm5hbC51bnN1YnNjcmliZUZyb21Dcm9zc0NvbnRhaW5lckRhdGEiO2Z1bmN0aW9uIE1UKGEpe31NVC5wdWJsaWNOYW1lPSJ1cGRhdGVDb25zZW50U3RhdGUiO2Z1bmN0aW9uIE5UKGEpe3ZhciBiPSExO3JldHVybiBifU5ULlA9ImludGVybmFsLnVzZXJEYXRhTmVlZHNFbmNyeXB0aW9uIjt2YXIgT1Q9ZnVuY3Rpb24oKXt0aGlzLkg9bmV3IGFpfSxRVD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhKXt2YXIgYjt2YXIgYz1QVC5IO2lmKGMuY29udGFpbnMoYSkpYj1jLmdldChhLHRoaXMpO2Vsc2V7dmFyIGQ7aWYoZD1jLkguaGFzT3duUHJvcGVydHkoYSkpe3ZhciBlPXRoaXMuVC54YigpO2lmKGUpe3ZhciBmPSExLGc9ZS5QYigpO2lmKGcpe0JoKGcpfHwoZj0hMCk7fWQ9Zn1lbHNlIGQ9ITB9aWYoZCl7dmFyIGg9Yy5ILmhhc093blByb3BlcnR5KGEpP2MuSFthXTp2b2lkIDA7Yj1ofWVsc2UgdGhyb3cgRXJyb3IoYSsiIGlzIG5vdCBhIHZhbGlkIEFQSSBuYW1lLiIpO31yZXR1cm4gYn19LFBUO2Z1bmN0aW9uIFJUKGEsYixjKXtQVHx8KFBUPW5ldyBPVCk7UFQuSC5hZGQoYSxiLGMpfWZ1bmN0aW9uIFNUKGEsYil7UFR8fChQVD1uZXcgT1QpO3ZhciBjPVBULkg7aWYoYy5ILmhhc093blByb3BlcnR5KGEpKXRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGFkZCBhIHByaXZhdGUgZnVuY3Rpb24gd2hpY2ggYWxyZWFkeSBleGlzdHM6ICIrYSsiLiIpO2lmKGMuY29udGFpbnMoYSkpdGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYWRkIGEgcHJpdmF0ZSBmdW5jdGlvbiB3aXRoIGFuIGV4aXN0aW5nIEFQSSBuYW1lOiAiK2ErIi4iKTtjLkhbYV09eWIoYik/dGgoYSxiKTp1aChhLGIpfTtmdW5jdGlvbiBUVChhLGIpe2Z1bmN0aW9uIGMoZCl7aWYoIWVoKGQpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJPYmplY3QiXSxhcmd1bWVudHMpO3ZhciBlPVRkKGQsdGhpcy5ULDEpLnJiKCk7YShlKX1jLlA9ImludGVybmFsLiIrYjtyZXR1cm4gY307ZnVuY3Rpb24gVVQoKXt2YXIgYT1mdW5jdGlvbihjKXtyZXR1cm4gdm9pZCBTVChjLlAsYyl9LGI9ZnVuY3Rpb24oYyl7cmV0dXJuIHZvaWQgUlQoYy5wdWJsaWNOYW1lLGMpfTtiKFJGKTtiKFlGKTtiKFJHKTtiKFRHKTtiKFVHKTtiKGRIKTtiKGZIKTtiKGhJKTtiKFBTKCkpO2IoakkpO2IoT08pO2IoUE8pO2IobFApO2IobVApO2IoblApO2IodVApO2IodlApO2IoclMpO2IodVMpO2IoQlMpO2IoRFMpO2IoVFMpO2IoV1MpO2IoWlMpO2IoYVQpO2IoYlQpO2IoZFQpO2Iob1QpO2IoclQpO2IodVQpO2IoeVQpO2IoQ1QpO2IoSFQpO2IoTVQpO1JUKCJNYXRoIix6aCgpKTtSVCgiT2JqZWN0IixaaCk7UlQoIlRlc3RIZWxwZXIiLGNpKCkpO1JUKCJhc3NlcnRBcGkiLHdoKTtSVCgiYXNzZXJ0VGhhdCIseGgpO1JUKCJkZWNvZGVVcmkiLENoKTtSVCgiZGVjb2RlVXJpQ29tcG9uZW50IixEaCk7UlQoImVuY29kZVVyaSIsRWgpO1JUKCJlbmNvZGVVcmlDb21wb25lbnQiLEZoKTtSVCgiZmFpbCIsCkxoKTtSVCgiZ2VuZXJhdGVSYW5kb20iLE5oKTtSVCgiZ2V0VGltZXN0YW1wIixPaCk7UlQoImdldFRpbWVzdGFtcE1pbGxpcyIsT2gpO1JUKCJnZXRUeXBlIixQaCk7UlQoIm1ha2VJbnRlZ2VyIixSaCk7UlQoIm1ha2VOdW1iZXIiLFNoKTtSVCgibWFrZVN0cmluZyIsVGgpO1JUKCJtYWtlVGFibGVNYXAiLFVoKTtSVCgibW9jayIsWGgpO1JUKCJtb2NrT2JqZWN0IixZaCk7UlQoImZyb21CYXNlNjQiLEhPLCEoImF0b2IiaW4gQSkpO1JUKCJsb2NhbFN0b3JhZ2UiLFNTLCFSUygpKTtSVCgidG9CYXNlNjQiLEpULCEoImJ0b2EiaW4gQSkpO2EoUUYpO2EoVUYpO2EobkcpO2Eoc0cpO2EoSUcpO2EoUEcpO2EoU0cpO2EoVkcpO2EoV0cpO2EoWkcpO2EoJEcpO2EoYUgpO2EoYkgpO2EoY0gpO2EoZUgpO2EoZ0gpO2EoZ0kpO2EoaUkpO2Eoa0kpO2EobEkpO2EobUkpO2EobkkpO2Eob0kpO2EoZkopO2EobUopO2EodEopO2EodUopO2EoQUopO2EoRkopO2EoS0opO2EoUkopO2EoV0opO2EoZ0spOwphKGlLKTthKHZLKTthKHdLKTthKHhLKTthKEZPKTthKEdPKTthKElPKTthKEpPKTthKEtPKTthKExPKTthKE1PKTthKE5PKTthKFFPKTthKFJPKTthKFNPKTthKFRPKTthKFVPKTthKFZPKTthKFdPKTthKFhPKTthKFlPKTthKFpPKTthKCRPKTthKGFQKTthKGJQKTthKGNQKTthKGRQKTthKGVQKTthKGZQKTthKGdQKTthKGhQKTthKGlQKTthKGpQKTthKGtQKTthKG9QKTthKHBQKTthKHFQKTthKHJQKTthKHNQKTthKHRQKTthKHdQKTthKG9TKTthKHBTKTthKHRTKTthKHZTKTthKENTKTthKEVTKTthKEZTKTthKEdTKTthKEhTKTthKElTKTthKEpTKTthKEtTKTthKExTKTthKE1TKTthKE5TKTthKE9TKTthKFFTKTthKEdHKTthKFVTKTthKFZTKTthKFhTKTthKFlTKTthKCRTKTthKGNUKTthKGVUKTthKGZUKTthKGhUKTthKGlUKTthKGpUKTthKGxUKTthKG1UKTthKG5UKTthKHBUKTthKHFUKTthKHNUKTthKHRUKTthKHZUKTthKHdUKTthKHhUKTthKHpUKTthKEFUKTthKEJUKTthKERUKTsKYShFVCk7YShGVCk7YShHVCk7YShJVCk7YShLVCk7YShMVCk7YShOVCk7U1QoImludGVybmFsLklmcmFtaW5nU3RhdGVTY2hlbWEiLHNTKCkpO1NUKCJpbnRlcm5hbC5xdWlja0hhc2giLE1oKTthKFRUKE1GLCJ0YXNrU2V0QWRzVHJhbnNtaXNzaW9uVHlwZSIpKSxhKFRUKFBGLCJ0YXNrU2V0VW5pdmVyc2FsUGFyYW1zIikpO1BUfHwoUFQ9bmV3IE9UKTtyZXR1cm4gUVQoKX07dmFyIEpGO2Z1bmN0aW9uIFZUKCl7SkYuc2QoZnVuY3Rpb24oYSxiLGMpe2xqKCk7dmFyIGQ9amo7ZC5ILlNBTkRCT1hFRF9KU19TRU1BUEhPUkU9ZC5ILlNBTkRCT1hFRF9KU19TRU1BUEhPUkV8fDA7ZC5ILlNBTkRCT1hFRF9KU19TRU1BUEhPUkUrKzt0cnl7cmV0dXJuIGEuYXBwbHkoYixjKX1maW5hbGx5e2xqKCksamouSC5TQU5EQk9YRURfSlNfU0VNQVBIT1JFLS19fSl9ZnVuY3Rpb24gV1QoYSl7aWYoYSYmYS5sZW5ndGgpZm9yKHZhciBiPWFsKDI3LGZ1bmN0aW9uKCl7cmV0dXJue319KSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY10ucmVwbGFjZSgvXl8qLywiIik7YltkXT1bInNhbmRib3hlZFNjcmlwdHMiXX19CmZ1bmN0aW9uIFhUKGEpe2lmKGEpe3ZhciBiPWFsKDI3LGZ1bmN0aW9uKCl7cmV0dXJue319KTtHYihhLGZ1bmN0aW9uKGMsZCl7Zm9yKHZhciBlPTA7ZTxkLmxlbmd0aDtlKyspe3ZhciBmPWRbZV0ucmVwbGFjZSgvXl8qLywiIik7YltmXT1iW2ZdfHxbXTtiW2ZdLnB1c2goYyl9fSl9fTtmdW5jdGlvbiBaVChhKXttRChwQygiZGV2ZWxvcGVyX2lkLiIrYSwhMCksMCx7fSl9O2Z1bmN0aW9uICRUKGEsYil7cmV0dXJuIEVkKGEsYnx8bnVsbCl9ZnVuY3Rpb24gWShhKXtyZXR1cm4gd2luZG93LmVuY29kZVVSSUNvbXBvbmVudChhKX1mdW5jdGlvbiBhVShhKXtaYyhhLHZvaWQgMCx2b2lkIDApfWZ1bmN0aW9uIGJVKGEpe3ZhciBiPVsidmVpbnRlcmFjdGl2ZS5jb20iLCJ2ZS1pbnRlcmFjdGl2ZS5jbiJdO2lmKCFhKXJldHVybiExO3ZhciBjPUxqKFJqKGEpLCJob3N0Iik7aWYoIWMpcmV0dXJuITE7Zm9yKHZhciBkPTA7YiYmZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF0mJmJbZF0udG9Mb3dlckNhc2UoKTtpZihlKXt2YXIgZj1jLmxlbmd0aC1lLmxlbmd0aDtmPjAmJmUuY2hhckF0KDApIT09Ii4iJiYoZi0tLGU9Ii4iK2UpO2lmKGY+PTAmJmMuaW5kZXhPZihlLGYpPT09ZilyZXR1cm4hMH19cmV0dXJuITF9CmZ1bmN0aW9uIGNVKGEsYixjKXtmb3IodmFyIGQ9e30sZT0hMSxmPTA7YSYmZjxhLmxlbmd0aDtmKyspYVtmXSYmYVtmXS5oYXNPd25Qcm9wZXJ0eShiKSYmYVtmXS5oYXNPd25Qcm9wZXJ0eShjKSYmKGRbYVtmXVtiXV09YVtmXVtjXSxlPSEwKTtyZXR1cm4gZT9kOm51bGx9ZnVuY3Rpb24gZFUoYSxiKXt2YXIgYz17fTtpZihhKWZvcih2YXIgZCBpbiBhKWEuaGFzT3duUHJvcGVydHkoZCkmJihjW2RdPWFbZF0pO2lmKGIpe3ZhciBlPWNVKGIsInBhcmFtZXRlciIsInBhcmFtZXRlclZhbHVlIik7ZSYmKGM9JFQoZSxjKSl9cmV0dXJuIGN9ZnVuY3Rpb24gZVUoYSxiLGMpe3JldHVybiBhPT09dm9pZCAwfHxhPT09Yz9iOmF9ZnVuY3Rpb24gZlUoYSxiLGMpe3JldHVybiBVYyhhLGIsYyx2b2lkIDApfWZ1bmN0aW9uIGdVKGEsYil7QVthXT1ifWZ1bmN0aW9uIGhVKGEsYixjKXt2YXIgZD1BO2ImJihkW2FdPT09dm9pZCAwfHxjJiYhZFthXSkmJihkW2FdPWIpO3JldHVybiBkW2FdfXZhciBpVT17fSxqVT1YLlY7dmFyIFo9e3NlY3VyaXR5R3JvdXBzOnt9fTsKClouc2VjdXJpdHlHcm91cHMuYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2U9WyJnb29nbGUiXSxaLl9fYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2U9ZnVuY3Rpb24oKXtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKCl7fSxhYTpmdW5jdGlvbigpe3JldHVybnt9fX19LFouX19hY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZS5PPSJhY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZSIsWi5fX2FjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlLmlzVmVuZG9yVGVtcGxhdGU9ITAsWi5fX2FjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlLnByaW9yaXR5T3ZlcnJpZGU9MCxaLl9fYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UuaXNJbmZyYXN0cnVjdHVyZT0hMSxaLl9fYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2VbIjUiXT0hMSxaLl9fYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2VbIjYiXT0hMTsKCgoKWi5zZWN1cml0eUdyb3Vwcy5yZWFkX2V2ZW50X2RhdGE9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm57a2V5OmN9fShmdW5jdGlvbihiKXtaLl9fcmVhZF9ldmVudF9kYXRhPWI7Wi5fX3JlYWRfZXZlbnRfZGF0YS5PPSJyZWFkX2V2ZW50X2RhdGEiO1ouX19yZWFkX2V2ZW50X2RhdGEuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fcmVhZF9ldmVudF9kYXRhLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fcmVhZF9ldmVudF9kYXRhLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX3JlYWRfZXZlbnRfZGF0YVsiNSJdPSExO1ouX19yZWFkX2V2ZW50X2RhdGFbIjYiXT0hMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPWIudnRwX2V2ZW50RGF0YUFjY2VzcyxkPWIudnRwX2tleVBhdHRlcm5zfHxbXSxlPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGYsZyl7aWYoZyE9bnVsbCYmIXpiKGcpKXRocm93IGUoZix7a2V5Omd9LCJLZXkgbXVzdCBiZSBhIHN0cmluZy4iKTsKaWYoYyE9PSJhbnkiKXt0cnl7aWYoYz09PSJzcGVjaWZpYyImJmchPW51bGwmJkVnKGcsZCkpcmV0dXJufWNhdGNoKGgpe3Rocm93IGUoZix7a2V5Omd9LCJJbnZhbGlkIGtleSBmaWx0ZXIuIik7fXRocm93IGUoZix7a2V5Omd9LCJQcm9oaWJpdGVkIHJlYWQgZnJvbSBldmVudCBkYXRhLiIpO319LGFhOmF9fSl9KCk7CgpaLnNlY3VyaXR5R3JvdXBzLmRldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cz1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybntvcHRpb25zOntmaXhNaXNzaW5nQXBpOiEhYy5maXhNaXNzaW5nQXBpfX19KGZ1bmN0aW9uKGIpe1ouX19kZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHM9YjtaLl9fZGV0ZWN0X3lvdXR1YmVfYWN0aXZpdHlfZXZlbnRzLk89ImRldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cyI7Wi5fX2RldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50cy5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19kZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHMucHJpb3JpdHlPdmVycmlkZT0wO1ouX19kZXRlY3RfeW91dHViZV9hY3Rpdml0eV9ldmVudHMuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fZGV0ZWN0X3lvdXR1YmVfYWN0aXZpdHlfZXZlbnRzWyI1Il09ITE7Wi5fX2RldGVjdF95b3V0dWJlX2FjdGl2aXR5X2V2ZW50c1siNiJdPQohMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPSEhYi52dHBfYWxsb3dGaXhNaXNzaW5nSmF2YVNjcmlwdEFwaSxkPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGUsZil7aWYoIWMmJmYmJmYuZml4TWlzc2luZ0FwaSl0aHJvdyBkKGUse30sIlByb2hpYml0ZWQgb3B0aW9uOiBmaXhNaXNzaW5nQXBpLiIpO30sYWE6YX19KX0oKTsKCgoKCgoKWi5zZWN1cml0eUdyb3Vwcy5kZXRlY3RfaGlzdG9yeV9jaGFuZ2VfZXZlbnRzPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7cmV0dXJue319KGZ1bmN0aW9uKGIpe1ouX19kZXRlY3RfaGlzdG9yeV9jaGFuZ2VfZXZlbnRzPWI7Wi5fX2RldGVjdF9oaXN0b3J5X2NoYW5nZV9ldmVudHMuTz0iZGV0ZWN0X2hpc3RvcnlfY2hhbmdlX2V2ZW50cyI7Wi5fX2RldGVjdF9oaXN0b3J5X2NoYW5nZV9ldmVudHMuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fZGV0ZWN0X2hpc3RvcnlfY2hhbmdlX2V2ZW50cy5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX2RldGVjdF9oaXN0b3J5X2NoYW5nZV9ldmVudHMuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fZGV0ZWN0X2hpc3RvcnlfY2hhbmdlX2V2ZW50c1siNSJdPSExO1ouX19kZXRlY3RfaGlzdG9yeV9jaGFuZ2VfZXZlbnRzWyI2Il09ITF9KShmdW5jdGlvbigpe3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oKXt9LGFhOmF9fSl9KCk7CgoKWi5zZWN1cml0eUdyb3Vwcy5kZXRlY3RfbGlua19jbGlja19ldmVudHM9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm57b3B0aW9uczpjfX0oZnVuY3Rpb24oYil7Wi5fX2RldGVjdF9saW5rX2NsaWNrX2V2ZW50cz1iO1ouX19kZXRlY3RfbGlua19jbGlja19ldmVudHMuTz0iZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzIjtaLl9fZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2RldGVjdF9saW5rX2NsaWNrX2V2ZW50cy5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX2RldGVjdF9saW5rX2NsaWNrX2V2ZW50cy5pc0luZnJhc3RydWN0dXJlPSExO1ouX19kZXRlY3RfbGlua19jbGlja19ldmVudHNbIjUiXT0hMTtaLl9fZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzWyI2Il09ITF9KShmdW5jdGlvbihiKXt2YXIgYz1iLnZ0cF9hbGxvd1dhaXRGb3JUYWdzLGQ9Yi52dHBfY3JlYXRlUGVybWlzc2lvbkVycm9yO3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oZSwKZil7aWYoIWMmJmYmJmYud2FpdEZvclRhZ3MpdGhyb3cgZChlLHt9LCJQcm9oaWJpdGVkIG9wdGlvbiB3YWl0Rm9yVGFncy4iKTt9LGFhOmF9fSl9KCk7Clouc2VjdXJpdHlHcm91cHMuZGV0ZWN0X2Zvcm1fc3VibWl0X2V2ZW50cz1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybntvcHRpb25zOmN9fShmdW5jdGlvbihiKXtaLl9fZGV0ZWN0X2Zvcm1fc3VibWl0X2V2ZW50cz1iO1ouX19kZXRlY3RfZm9ybV9zdWJtaXRfZXZlbnRzLk89ImRldGVjdF9mb3JtX3N1Ym1pdF9ldmVudHMiO1ouX19kZXRlY3RfZm9ybV9zdWJtaXRfZXZlbnRzLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2RldGVjdF9mb3JtX3N1Ym1pdF9ldmVudHMucHJpb3JpdHlPdmVycmlkZT0wO1ouX19kZXRlY3RfZm9ybV9zdWJtaXRfZXZlbnRzLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2RldGVjdF9mb3JtX3N1Ym1pdF9ldmVudHNbIjUiXT0hMTtaLl9fZGV0ZWN0X2Zvcm1fc3VibWl0X2V2ZW50c1siNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfYWxsb3dXYWl0Rm9yVGFncyxkPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjsKcmV0dXJue2Fzc2VydDpmdW5jdGlvbihlLGYpe2lmKCFjJiZmJiZmLndhaXRGb3JUYWdzKXRocm93IGQoZSx7fSwiUHJvaGliaXRlZCBvcHRpb24gd2FpdEZvclRhZ3MuIik7fSxhYTphfX0pfSgpOwpaLnNlY3VyaXR5R3JvdXBzLnJlYWRfY29udGFpbmVyX2RhdGE9WyJnb29nbGUiXSxaLl9fcmVhZF9jb250YWluZXJfZGF0YT1mdW5jdGlvbigpe3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oKXt9LGFhOmZ1bmN0aW9uKCl7cmV0dXJue319fX0sWi5fX3JlYWRfY29udGFpbmVyX2RhdGEuTz0icmVhZF9jb250YWluZXJfZGF0YSIsWi5fX3JlYWRfY29udGFpbmVyX2RhdGEuaXNWZW5kb3JUZW1wbGF0ZT0hMCxaLl9fcmVhZF9jb250YWluZXJfZGF0YS5wcmlvcml0eU92ZXJyaWRlPTAsWi5fX3JlYWRfY29udGFpbmVyX2RhdGEuaXNJbmZyYXN0cnVjdHVyZT0hMSxaLl9fcmVhZF9jb250YWluZXJfZGF0YVsiNSJdPSExLFouX19yZWFkX2NvbnRhaW5lcl9kYXRhWyI2Il09ITE7Clouc2VjdXJpdHlHcm91cHMubGlzdGVuX2RhdGFfbGF5ZXI9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm57ZXZlbnROYW1lOmN9fShmdW5jdGlvbihiKXtaLl9fbGlzdGVuX2RhdGFfbGF5ZXI9YjtaLl9fbGlzdGVuX2RhdGFfbGF5ZXIuTz0ibGlzdGVuX2RhdGFfbGF5ZXIiO1ouX19saXN0ZW5fZGF0YV9sYXllci5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19saXN0ZW5fZGF0YV9sYXllci5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX2xpc3Rlbl9kYXRhX2xheWVyLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2xpc3Rlbl9kYXRhX2xheWVyWyI1Il09ITE7Wi5fX2xpc3Rlbl9kYXRhX2xheWVyWyI2Il09ITF9KShmdW5jdGlvbihiKXt2YXIgYz1iLnZ0cF9hY2Nlc3NUeXBlLGQ9Yi52dHBfYWxsb3dlZEV2ZW50c3x8W10sZT1iLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3I7cmV0dXJue2Fzc2VydDpmdW5jdGlvbihmLGcpe2lmKCF6YihnKSl0aHJvdyBlKGYse2V2ZW50TmFtZTpnfSwKIkV2ZW50IG5hbWUgbXVzdCBiZSBhIHN0cmluZy4iKTtpZighKGM9PT0iYW55Inx8Yz09PSJzcGVjaWZpYyImJmQuaW5kZXhPZihnKT49MCkpdGhyb3cgZShmLHtldmVudE5hbWU6Z30sIlByb2hpYml0ZWQgbGlzdGVuIG9uIGRhdGEgbGF5ZXIgZXZlbnQuIik7fSxhYTphfX0pfSgpOwpaLnNlY3VyaXR5R3JvdXBzLmRldGVjdF91c2VyX3Byb3ZpZGVkX2RhdGE9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm57ZGF0YVNvdXJjZTpjfX0oZnVuY3Rpb24oYil7Wi5fX2RldGVjdF91c2VyX3Byb3ZpZGVkX2RhdGE9YjtaLl9fZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YS5PPSJkZXRlY3RfdXNlcl9wcm92aWRlZF9kYXRhIjtaLl9fZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YS5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19kZXRlY3RfdXNlcl9wcm92aWRlZF9kYXRhLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fZGV0ZWN0X3VzZXJfcHJvdmlkZWRfZGF0YS5pc0luZnJhc3RydWN0dXJlPSExO1ouX19kZXRlY3RfdXNlcl9wcm92aWRlZF9kYXRhWyI1Il09ITE7Wi5fX2RldGVjdF91c2VyX3Byb3ZpZGVkX2RhdGFbIjYiXT0hMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGQsCmUpe2lmKGUhPT0iYXV0byImJmUhPT0ibWFudWFsIiYmZSE9PSJjb2RlIil0aHJvdyBjKGQse30sIlVua25vd24gdXNlciBwcm92aWRlZCBkYXRhIHNvdXJjZS4iKTtpZihiLnZ0cF9saW1pdERhdGFTb3VyY2VzKWlmKGUhPT0iYXV0byJ8fGIudnRwX2FsbG93QXV0b0RhdGFTb3VyY2VzKXtpZihlPT09Im1hbnVhbCImJiFiLnZ0cF9hbGxvd01hbnVhbERhdGFTb3VyY2VzKXRocm93IGMoZCx7fSwiRGV0ZWN0aW9uIG9mIHVzZXIgcHJvdmlkZWQgZGF0YSB2aWEgbWFudWFsbHkgc3BlY2lmaWVkIENTUyBzZWxlY3RvcnMgaXMgbm90IGFsbG93ZWQuIik7aWYoZT09PSJjb2RlIiYmIWIudnRwX2FsbG93Q29kZURhdGFTb3VyY2VzKXRocm93IGMoZCx7fSwiRGV0ZWN0aW9uIG9mIHVzZXIgcHJvdmlkZWQgZGF0YSBmcm9tIGFuIGluLXBhZ2UgdmFyaWFibGUgaXMgbm90IGFsbG93ZWQuIik7fWVsc2UgdGhyb3cgYyhkLHt9LCJBdXRvbWF0aWMgZGV0ZWN0aW9uIG9mIHVzZXIgcHJvdmlkZWQgZGF0YSBpcyBub3QgYWxsb3dlZC4iKTsKfSxhYTphfX0pfSgpOwpaLnNlY3VyaXR5R3JvdXBzLmdldF91cmw9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjLGQpe3JldHVybntjb21wb25lbnQ6YyxxdWVyeUtleTpkfX0oZnVuY3Rpb24oYil7Wi5fX2dldF91cmw9YjtaLl9fZ2V0X3VybC5PPSJnZXRfdXJsIjtaLl9fZ2V0X3VybC5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19nZXRfdXJsLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fZ2V0X3VybC5pc0luZnJhc3RydWN0dXJlPSExO1ouX19nZXRfdXJsWyI1Il09ITE7Wi5fX2dldF91cmxbIjYiXT0hMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPWIudnRwX3VybFBhcnRzPT09ImFueSI/bnVsbDpbXTtjJiYoYi52dHBfcHJvdG9jb2wmJmMucHVzaCgicHJvdG9jb2wiKSxiLnZ0cF9ob3N0JiZjLnB1c2goImhvc3QiKSxiLnZ0cF9wb3J0JiZjLnB1c2goInBvcnQiKSxiLnZ0cF9wYXRoJiZjLnB1c2goInBhdGgiKSxiLnZ0cF9leHRlbnNpb24mJmMucHVzaCgiZXh0ZW5zaW9uIiksYi52dHBfcXVlcnkmJgpjLnB1c2goInF1ZXJ5IiksYi52dHBfZnJhZ21lbnQmJmMucHVzaCgiZnJhZ21lbnQiKSk7dmFyIGQ9YyYmYi52dHBfcXVlcmllc0FsbG93ZWQhPT0iYW55Ij9iLnZ0cF9xdWVyeUtleXN8fFtdOm51bGwsZT1iLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3I7cmV0dXJue2Fzc2VydDpmdW5jdGlvbihmLGcsaCl7aWYoZyl7aWYoIXpiKGcpKXRocm93IGUoZix7fSwiVVJMIGNvbXBvbmVudCBtdXN0IGJlIGEgc3RyaW5nLiIpO2lmKGMmJmMuaW5kZXhPZihnKTwwKXRocm93IGUoZix7fSwiUHJvaGliaXRlZCBVUkwgY29tcG9uZW50OiAiK2cpO2lmKGc9PT0icXVlcnkiJiZkKXtpZighaCl0aHJvdyBlKGYse30sIlByb2hpYml0ZWQgZnJvbSBnZXR0aW5nIGVudGlyZSBVUkwgcXVlcnkgd2hlbiBxdWVyeSBrZXlzIGFyZSBzcGVjaWZpZWQuIik7aWYoIXpiKGgpKXRocm93IGUoZix7fSwiUXVlcnkga2V5IG11c3QgYmUgYSBzdHJpbmcuIik7aWYoZC5pbmRleE9mKGgpPDApdGhyb3cgZShmLHt9LAoiUHJvaGliaXRlZCBxdWVyeSBrZXk6ICIraCk7fX1lbHNlIGlmKGMpdGhyb3cgZShmLHt9LCJQcm9oaWJpdGVkIGZyb20gZ2V0dGluZyBlbnRpcmUgVVJMIHdoZW4gY29tcG9uZW50cyBhcmUgc3BlY2lmaWVkLiIpO30sYWE6YX19KX0oKTsKCgoKWi5zZWN1cml0eUdyb3Vwcy5yZWFkX2RvbV9lbGVtZW50cz1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMsZCl7cmV0dXJue3R5cGU6Yyx2YWx1ZTpkfX0oZnVuY3Rpb24oYil7Wi5fX3JlYWRfZG9tX2VsZW1lbnRzPWI7Wi5fX3JlYWRfZG9tX2VsZW1lbnRzLk89InJlYWRfZG9tX2VsZW1lbnRzIjtaLl9fcmVhZF9kb21fZWxlbWVudHMuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fcmVhZF9kb21fZWxlbWVudHMucHJpb3JpdHlPdmVycmlkZT0wO1ouX19yZWFkX2RvbV9lbGVtZW50cy5pc0luZnJhc3RydWN0dXJlPSExO1ouX19yZWFkX2RvbV9lbGVtZW50c1siNSJdPSExO1ouX19yZWFkX2RvbV9lbGVtZW50c1siNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfYWxsb3dlZEVsZW1lbnRJZHN8fCJub25lIixkPWIudnRwX2FsbG93ZWRDc3NTZWxlY3RvcnN8fCJub25lIixlPWIudnRwX2VsZW1lbnRJZHN8fFtdLGY9Yi52dHBfY3NzU2VsZWN0b3JzfHxbXSxnPQpiLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3I7cmV0dXJue2Fzc2VydDpmdW5jdGlvbihoLGwsbil7c3dpdGNoKGwpe2Nhc2UgImlkIjppZihjPT09Im5vbmUiKWJyZWFrO2lmKGM9PT0iYW55Inx8ZS5pbmRleE9mKG4pPi0xKXJldHVybjticmVhaztjYXNlICJjc3MiOmlmKGQ9PT0ibm9uZSIpYnJlYWs7aWYoZD09PSJhbnkifHxmLmluZGV4T2Yobik+LTEpcmV0dXJuO2JyZWFrO2RlZmF1bHQ6dGhyb3cgZyhoLHt9LCJVbmtub3duIHNlbGVjdG9yIHR5cGUgIitsKyIuIik7fXRocm93IGcoaCx7fSwiUHJvaGliaXRlZCBzZWxlY3RvciB2YWx1ZSAiK24rIiBmb3Igc2VsZWN0b3IgdHlwZSAiK2wrIi4iKTt9LGFhOmF9fSl9KCk7Clouc2VjdXJpdHlHcm91cHMuZGV0ZWN0X2NsaWNrX2V2ZW50cz1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMsZCl7cmV0dXJue21hdGNoQ29tbW9uQnV0dG9uczpjLGNzc1NlbGVjdG9yOmR9fShmdW5jdGlvbihiKXtaLl9fZGV0ZWN0X2NsaWNrX2V2ZW50cz1iO1ouX19kZXRlY3RfY2xpY2tfZXZlbnRzLk89ImRldGVjdF9jbGlja19ldmVudHMiO1ouX19kZXRlY3RfY2xpY2tfZXZlbnRzLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2RldGVjdF9jbGlja19ldmVudHMucHJpb3JpdHlPdmVycmlkZT0wO1ouX19kZXRlY3RfY2xpY2tfZXZlbnRzLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2RldGVjdF9jbGlja19ldmVudHNbIjUiXT0hMTtaLl9fZGV0ZWN0X2NsaWNrX2V2ZW50c1siNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfY3JlYXRlUGVybWlzc2lvbkVycm9yO3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oZCxlLGYpe2lmKGUhPT12b2lkIDAmJnR5cGVvZiBlIT09CiJib29sZWFuIil0aHJvdyBjKGQse30sIm1hdGNoQ29tbW9uQnV0dG9ucyBtdXN0IGJlIGEgYm9vbGVhbi4iKTtpZihmIT09dm9pZCAwJiZ0eXBlb2YgZiE9PSJzdHJpbmciKXRocm93IGMoZCx7fSwiY3NzU2VsZWN0b3IgbXVzdCBiZSBhIHN0cmluZy4iKTt9LGFhOmF9fSl9KCk7Clouc2VjdXJpdHlHcm91cHMuZGV0ZWN0X3Njcm9sbF9ldmVudHM9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtyZXR1cm57fX0oZnVuY3Rpb24oYil7Wi5fX2RldGVjdF9zY3JvbGxfZXZlbnRzPWI7Wi5fX2RldGVjdF9zY3JvbGxfZXZlbnRzLk89ImRldGVjdF9zY3JvbGxfZXZlbnRzIjtaLl9fZGV0ZWN0X3Njcm9sbF9ldmVudHMuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fZGV0ZWN0X3Njcm9sbF9ldmVudHMucHJpb3JpdHlPdmVycmlkZT0wO1ouX19kZXRlY3Rfc2Nyb2xsX2V2ZW50cy5pc0luZnJhc3RydWN0dXJlPSExO1ouX19kZXRlY3Rfc2Nyb2xsX2V2ZW50c1siNSJdPSExO1ouX19kZXRlY3Rfc2Nyb2xsX2V2ZW50c1siNiJdPSExfSkoZnVuY3Rpb24oKXtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKCl7fSxhYTphfX0pfSgpOwoKCgpaLnNlY3VyaXR5R3JvdXBzLmRldGVjdF9mb3JtX2ludGVyYWN0aW9uX2V2ZW50cz1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3JldHVybnt9fShmdW5jdGlvbihiKXtaLl9fZGV0ZWN0X2Zvcm1faW50ZXJhY3Rpb25fZXZlbnRzPWI7Wi5fX2RldGVjdF9mb3JtX2ludGVyYWN0aW9uX2V2ZW50cy5PPSJkZXRlY3RfZm9ybV9pbnRlcmFjdGlvbl9ldmVudHMiO1ouX19kZXRlY3RfZm9ybV9pbnRlcmFjdGlvbl9ldmVudHMuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fZGV0ZWN0X2Zvcm1faW50ZXJhY3Rpb25fZXZlbnRzLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fZGV0ZWN0X2Zvcm1faW50ZXJhY3Rpb25fZXZlbnRzLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2RldGVjdF9mb3JtX2ludGVyYWN0aW9uX2V2ZW50c1siNSJdPSExO1ouX19kZXRlY3RfZm9ybV9pbnRlcmFjdGlvbl9ldmVudHNbIjYiXT0hMX0pKGZ1bmN0aW9uKCl7cmV0dXJue2Fzc2VydDpmdW5jdGlvbigpe30sCmFhOmF9fSl9KCk7CmZ1bmN0aW9uIGtVKCl7dmFyIGE9e30sYj17ZGF0YUxheWVyOnRBLGNhbGxiYWNrOmZ1bmN0aW9uKGMpe2EuaGFzT3duUHJvcGVydHkoYykmJnliKGFbY10pJiZhW2NdKCk7ZGVsZXRlIGFbY119LGJvb3RzdHJhcDowfTtyZXR1cm4gYn0KZnVuY3Rpb24gbFUoKXt2YXIgYT1rVSgpO29qKGEpO0NrKCk7akEoKTt2YXIgYj1hbCgyNyxmdW5jdGlvbigpe3JldHVybnt9fSk7UWIoYixaLnNlY3VyaXR5R3JvdXBzKTt2YXIgYz15ayh6aygpKSxkLGU9Yz09bnVsbD92b2lkIDA6KGQ9Yy5jb250ZXh0KT09bnVsbD92b2lkIDA6ZC5zb3VyY2U7S2woZSxjPT1udWxsP3ZvaWQgMDpjLnBhcmVudCk7ZSE9PTImJmUhPT00JiZlIT09M3x8UCgxNDIpO3JldHVybiBhfWZ1bmN0aW9uIG1VKCl7dmFyIGE9RSg2MCk7aWYoYSlmb3IodmFyIGI9YS5zcGxpdCgiLiIpLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXSxlPVRMO2QmJihlLkhbZF09ITApfX0KZnVuY3Rpb24gblUoKXt6cCgpO2xqKCk7Zm9yKHZhciBhPWRhdGEucmVzb3VyY2V8fHt9LGI9Y0EsYz1hLm1hY3Jvc3x8W10sZD0wO2Q8Yy5sZW5ndGg7ZCsrKWIubWFjcm9zLnB1c2gobmV3IFV6KGNbZF0sZCxiLnRhZ3MsYi5tYWNyb3MpKTtmb3IodmFyIGU9YS50YWdzfHxbXSxmPTA7ZjxlLmxlbmd0aDtmKyspYi50YWdzLnB1c2gobmV3IFl6KGVbZl0sZixiLnRhZ3MsYi5tYWNyb3MpKTtmb3IodmFyIGc9YS5wcmVkaWNhdGVzfHxbXSxoPTA7aDxnLmxlbmd0aDtoKyspYi5wcmVkaWNhdGVzLnB1c2gobmV3IFZ6KGdbaF0sYi50YWdzLGIubWFjcm9zKSk7Zm9yKHZhciBsPWEucnVsZXN8fFtdLG49MDtuPGwubGVuZ3RoO24rKyliLnJ1bGVzLnB1c2gobmV3IFd6KGxbbl0sbikpO1F6PVo7dmFyIHA9ZGF0YS5wZXJtaXNzaW9uc3x8e30scT1aO2RnPW5ldyBnZyhFKDUpLHAscSk7dmFyIHI9ZGF0YS5zYW5kYm94ZWRfc2NyaXB0cyx0PWRhdGEuc2VjdXJpdHlfZ3JvdXBzLHU9ZGF0YS5ydW50aW1lfHwKW10sdj1kYXRhLnJ1bnRpbWVfbGluZXM7SkY9bmV3IHBmO1ZUKCk7UHo9SUYoKTt2YXIgeD1KRix5PVVUKCksej1uZXcgTGQoInJlcXVpcmUiLHkpO3ouWmEoKTt4LkguSC5zZXQoInJlcXVpcmUiLHopO2RiLnNldCgicmVxdWlyZSIseik7Zm9yKHZhciBDPTA7Qzx1Lmxlbmd0aDtDKyspe3ZhciBEPXVbQ107aWYoIUFycmF5LmlzQXJyYXkoRCl8fEQubGVuZ3RoPDMpe2lmKEQubGVuZ3RoPT09MCljb250aW51ZTticmVha312JiZ2W0NdJiZ2W0NdLmxlbmd0aCYmUGYoRCx2W0NdKTt0cnl7SkYuZXhlY3V0ZShEKX1jYXRjaChvVSl7fX1XVChyKTtYVCh0KTt2YXIgST1sVSgpO2lGKCk7dm0uYmluZCgpO2lmKCFEailmb3IodmFyIEc9Qm0oKT9lcChMZig1KSk6ZXAoTGYoNCkpLE49bShSbyksUz1OLm5leHQoKTshUy5kb25lO1M9Ti5uZXh0KCkpe3ZhciBXPVMudmFsdWUsZWE9VyxqYT1HW1ddPyJncmFudGVkIjoiZGVuaWVkIjt0bCgpLmltcGxpY2l0KGVhLGphKX1oRS5iaW5kKCk7VEIoKTsKT0IoKTtmbi5OJiYoZ3ooKSxmeihBRiksZ0EoKSxjQj1uZXcgYkIsZnooaXopLE9DKCksREZ8fChERj1uZXcgQkYpLGZCfHwoZkI9bmV3IGVCKSxGRj1uZXcgRUYpO2lmKGZuLkspe0RFLmJpbmQoKTttQy5iaW5kKCk7d0UuYmluZCgpO3ZhciBmYT1BaygpO2lmKGZhKXt2YXIgc2E7YTp7dmFyIGRhLG1hPShkYT1mYS5zY3JpcHRFbGVtZW50KT09bnVsbD92b2lkIDA6ZGEuc3JjO2lmKG1hKXt2YXIgUGE7dHJ5e3ZhciBGYTtQYT0oRmE9cmQoKSk9PW51bGw/dm9pZCAwOkZhLmdldEVudHJpZXNCeVR5cGUoInJlc291cmNlIil9Y2F0Y2gob1Upe31pZihQYSl7Zm9yKHZhciBxYT0tMSxpYj1tKFBhKSxYYj1pYi5uZXh0KCk7IVhiLmRvbmU7WGI9aWIubmV4dCgpKXt2YXIgTGM9WGIudmFsdWU7aWYoTGMuaW5pdGlhdG9yVHlwZT09PQoic2NyaXB0IiYmKHFhKz0xLExjLm5hbWUucmVwbGFjZShORSwiIik9PT1tYS5yZXBsYWNlKE5FLCIiKSkpe3NhPXFhO2JyZWFrIGF9fVAoMTQ2KX1lbHNlIFAoMTQ1KX1zYT12b2lkIDB9dmFyIFFkPXNhO1FkIT09dm9pZCAwJiYoZmEuY2Fub25pY2FsQ29udGFpbmVySWQmJlVtKCJydGciLFN0cmluZyhmYS5jYW5vbmljYWxDb250YWluZXJJZCkpLFVtKCJzbG8iLFN0cmluZyhRZCkpLFVtKCJobG8iLGZhLmh0bWxMb2FkT3JkZXJ8fCItMSIpLFVtKCJsc3QiLFN0cmluZyhmYS5sb2FkU2NyaXB0VHlwZXx8IjAiKSkpfWVsc2UgUCgxNDQpO3ZhciBZYzt2YXIgRGQ9eGsoKTtpZihEZClpZihEZC5jYW5vbmljYWxDb250YWluZXJJZClZYz1EZC5jYW5vbmljYWxDb250YWluZXJJZDtlbHNle3ZhciBqZix2aD1EZC5zY3JpcHRDb250YWluZXJJZHx8KChqZj1EZC5kZXN0aW5hdGlvbnMpPT1udWxsP3ZvaWQgMDpqZlswXSk7WWM9dmg/Il8iK3ZoOnZvaWQgMH1lbHNlIFljPXZvaWQgMDt2YXIgSkU9ClljO0pFJiZVbSgicGNpZCIsSkUpO1VtKCJidCIsU3RyaW5nKElmKDQ3KT8yOklmKDUwKT8xOjApKTtVbSgiY3QiLFN0cmluZyhJZig0Nyk/MDpJZig1MCk/MTozKSk7QUUuYmluZCgpO2Zvcih2YXIgV3I9W10sWHI9W10sS0U9bShPYmplY3Qua2V5cyhHRSkpLFlyPUtFLm5leHQoKTshWXIuZG9uZTtZcj1LRS5uZXh0KCkpe3ZhciBybT1Zci52YWx1ZTtpZih3aW5kb3cuaXNTZWN1cmVDb250ZXh0fHwhSUVbcm1dKXt2YXIgTEU9R0Vbcm1dKCk7aWYoeWIoTEUpKXt2YXIgTUU9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoTEUpO1RiKE1FLCJ7IFtuYXRpdmUgY29kZV0gfSIpfHxUYihNRSwie1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKXx8WHIucHVzaChybSl9ZWxzZSBXci5wdXNoKHJtKX19V3IubGVuZ3RoPjAmJlVtKCJqc20iLFdyLmpvaW4oIn4iKSk7WHIubGVuZ3RoPjAmJlVtKCJqc3AiLFhyLmpvaW4oIn4iKSk7RXl8fChFeT1uZXcgRHkpfWhGKCk7aW0oMSk7RUcoKTtyZXR1cm4gSX0KZnVuY3Rpb24gdW0oKXt0cnl7aWYoIWhrKCkmJihJZig0Nyl8fCFOaygpKSl7SWYoNjQpJiZ3ai5ILksuYWRkKDExODUxNzkxNyk7emooKTtmbi5IJiZzeigpO1dmWzVdPSEwO3ZhciBhPWtqKCJkZWJ1Z0dyb3VwSWQiLGZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyhNYXRoLmZsb29yKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKk1hdGgucmFuZG9tKCkpKX0pO1NsKGEpO2t0KCk7ekYoKTtGdCgpO1BCKCk7aWYoRGsoKSl7RSg1KTtERygpO2lCKCkucmVtb3ZlRXh0ZXJuYWxSZXN0cmljdGlvbnModmsoKSk7fWVsc2V7Rk0uUigpO25VKCkuYm9vdHN0cmFwPU5iKCk7SWYoNTEpJiZwRSgpOwpmbi5IJiZ0eigpO3R5cGVvZiBBLm5hbWU9PT0ic3RyaW5nIiYmU2IoQS5uYW1lLCJ3ZWItcGl4ZWwtc2FuZGJveC1DVVNUT00iKSYmc2QoKT9aVCgiZE1EZzBZeiIpOkEuU2hvcGlmeSYmKFpUKCJkTjJaa01qIiksc2QoKSYmWlQoImROVFUwWXoiKSk7bVUoKX19fWNhdGNoKGIpe2ltKDUpLGh6KCl9fQooZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe249Qi5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLXRhZy1hc3Npc3RhbnQtcHJlc2VudCIpO2dsKG4pJiYobD1oLnhtKX1mdW5jdGlvbiBjKCl7bCYmS2M/ZyhsKTphKCl9aWYoIUFbRSgzNyldKXt2YXIgZD0hMTtpZihCLnJlZmVycmVyKXt2YXIgZT1SaihCLnJlZmVycmVyKTtkPU5qKGUsImhvc3QiKT09PUUoMzgpfWlmKCFkKXt2YXIgZj1jcShFKDM5KSk7ZD0hKCFmLmxlbmd0aHx8IWZbMF0ubGVuZ3RoKX1kJiYoQVtFKDM3KV09ITAsVWMoRSg0MCkpKX12YXIgZz1mdW5jdGlvbih1KXt2YXIgdj0iR1RNIix4PSJHVE0iO0lmKDQ1KSYmKHY9Ik9HVCIseD0iR1RBRyIpO3ZhciB5PUUoMjMpLHo9QVt5XTt6fHwoej1bXSxBW3ldPXosVWMoImh0dHBzOi8vIitFKDMpKyIvZGVidWcvYm9vdHN0cmFwP2lkPSIrRSg1KSsiJnNyYz0iK3grIiZjb25kPSIrU3RyaW5nKHUpKyImZ3RtPSIrZHUoKSkpO3ZhciBDPXttZXNzYWdlVHlwZToiQ09OVEFJTkVSX1NUQVJUSU5HIiwKZGF0YTp7c2NyaXB0U291cmNlOktjLGNvbnRhaW5lclByb2R1Y3Q6dixkZWJ1ZzohMSxpZDpFKDUpLHRhcmdldFJlZjp7Y3RpZDpFKDUpLGlzRGVzdGluYXRpb246c2soKSxjYW5vbmljYWxJZDpFKDYpfSxhbGlhc2VzOndrKCksZGVzdGluYXRpb25zOnRrKCl9fSxEPUMuZGF0YTtELnJlc3VtZT1mdW5jdGlvbigpe2EoKX07RC5yZXN1bWVXaXRoTWVtb3M9ZnVuY3Rpb24oKXtzbCgxKTthKCl9O0lmKDIpJiYoQy5kYXRhLmluaXRpYWxQdWJsaXNoPSEwKTt6LnB1c2goQyl9LGg9e0dxOjEsUG06MixvbjozLGpsOjQseG06NX07aFtoLkdxXT0iR1RNX0RFQlVHX0xFR0FDWV9QQVJBTSI7aFtoLlBtXT0iR1RNX0RFQlVHX1BBUkFNIjtoW2gub25dPSJSRUZFUlJFUiI7aFtoLmpsXT0iQ09PS0lFIjtoW2gueG1dPSJFWFRFTlNJT05fUEFSQU0iO3ZhciBsPXZvaWQgMCxuPXZvaWQgMCxwPUxqKEEubG9jYXRpb24sInF1ZXJ5IiwhMSx2b2lkIDAsImd0bV9kZWJ1ZyIpO2dsKHApJiYobD1oLlBtKTsKaWYoIWwmJkIucmVmZXJyZXIpe3ZhciBxPVJqKEIucmVmZXJyZXIpO05qKHEsImhvc3QiKT09PUUoMjQpJiYobD1oLm9uKX1pZighbCl7dmFyIHI9Y3EoIl9fVEFHX0FTU0lTVEFOVCIpO3IubGVuZ3RoJiZyWzBdLmxlbmd0aCYmKGw9aC5qbCl9bHx8YigpO2lmKCFsJiZmbChuKSl7dmFyIHQ9ITE7JGMoQiwiVEFEZWJ1Z1NpZ25hbCIsZnVuY3Rpb24oKXt0fHwodD0hMCxiKCksYygpKX0sITEpO0Euc2V0VGltZW91dChmdW5jdGlvbigpe3R8fCh0PSEwLGIoKSxjKCkpfSwyMDApfWVsc2UgYygpfSkoZnVuY3Rpb24oKXshSWYoNDcpfHx0bSgpWyIwIl0/dW0oKTp4bSgpfSk7Cgp9KSgpCgo="}},"time_used":79,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":37,"receive":42,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/assets/img/logo.png","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:51.938Z","timestamp":1785161271938,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"elxr24.cc","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 03 Jun 2026 07:35:05 GMT","end":"Tue, 01 Sep 2026 07:35:04 GMT"},"fingerprint":{"sha1":"12:3F:CB:7D:FB:C0:91:E3:23:CA:98:8C:CB:80:67:4C:9D:50:FF:C4","sha256":"DD:B7:2F:32:FE:FB:45:B3:5D:1F:1F:45:3E:4F:FD:35:65:70:79:E3:29:04:54:1D:C3:AC:CC:DC:56:40:57:6F"}}},"request":{"raw":"GET /assets/img/logo.png HTTP/1.1\r\nHost: elxr24.shop\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://elxr24.shop/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/1.1 200 OK\r\nServer: nginx/1.22.1\r\nDate: Mon, 27 Jul 2026 14:07:52 GMT\r\nContent-Type: image/png\r\nContent-Length: 8454\r\nLast-Modified: Sat, 04 Oct 2025 15:01:36 GMT\r\nConnection: keep-alive\r\nETag: \"68e136d0-2106\"\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.22.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":8454,"size_decoded":8694,"mime_type":"image/png","magic":"PNG image data, 260 x 100, 8-bit colormap, non-interlaced","md5":"1ef995470b0908c4aadea96d7332372a","sha1":"c8abbe60e75ff0d83c2a3c45ca0c9a56285b77ca","sha256":"ea35b67869e2f3918f15485b470f6ae5fd5bcb95783fdece4bf1977a5425280b","sha512":"27ba558069bf9b84df1b80d5708338f24f7882493c86c750110aa185c9f605d286ef9c5b32a296379361654e52db7052be2c57c56c982ce95a3f4e3dbf713d91","ssdeep":"192:hBF9PBrS9vQ+O/9apQAHGEyR7qDaKWWaQDyJofhTSqjg2id:hHhyYj4Ge7GuuYRfEqXid","tlshash":"4302aea0e03b88535163fc6f7aa205993f4b84f58f0a4181537943656ba483e66af293","first_seen":"2026-07-27T10:31:02.531366Z","last_seen":"2026-07-27T14:08:21.63822Z","times_seen":2,"resource_available":false,"data":"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"}},"time_used":83,"timings":{"blocked":68,"dns":0,"connect":0,"send":0,"wait":15,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/assets/img/banner.jpg","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:51.941Z","timestamp":1785161271941,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"elxr24.cc","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 03 Jun 2026 07:35:05 GMT","end":"Tue, 01 Sep 2026 07:35:04 GMT"},"fingerprint":{"sha1":"12:3F:CB:7D:FB:C0:91:E3:23:CA:98:8C:CB:80:67:4C:9D:50:FF:C4","sha256":"DD:B7:2F:32:FE:FB:45:B3:5D:1F:1F:45:3E:4F:FD:35:65:70:79:E3:29:04:54:1D:C3:AC:CC:DC:56:40:57:6F"}}},"request":{"raw":"GET /assets/img/banner.jpg HTTP/1.1\r\nHost: elxr24.shop\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://elxr24.shop/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/1.1 200 OK\r\nServer: nginx/1.22.1\r\nDate: Mon, 27 Jul 2026 14:07:52 GMT\r\nContent-Type: image/jpeg\r\nContent-Length: 31165\r\nLast-Modified: Sat, 04 Oct 2025 15:01:36 GMT\r\nConnection: keep-alive\r\nETag: \"68e136d0-79bd\"\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.22.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":31165,"size_decoded":31407,"mime_type":"image/jpeg","magic":"JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 900x155, components 3","md5":"6a625ee78dd41047ad0bbf1773249fca","sha1":"69d688afa72a01e5a63a8bb428c885a3264d7855","sha256":"6dbed2557b078ba4b084bb06a848048461b03ade3deef31402b4f47557ee3322","sha512":"4e7aea3b5a72e71576aa1d4a46a6fd2f815402aa85279465f6d24df93ff3765ceefe5b4b9e4027bf90c66c1b658137728645bece09eb177ea14b74c8e9f93a1d","ssdeep":"384:Rf0GmKXoJOim8kTbAPIZZnHR1dQTlo9zmfP9KdAa3zBDbt8hTCMxvNuVfceqazk1:J0uh8CH/dQOzo2AgHtnffz4L7nmmYB8","tlshash":"46e2d090ef48a30e523a8eb164a4162bfb13db73dbe510721f75d855a0c97038687bf8","first_seen":"2026-07-27T10:31:02.532435Z","last_seen":"2026-07-27T14:08:21.639334Z","times_seen":2,"resource_available":false,"data":"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"}},"time_used":97,"timings":{"blocked":68,"dns":0,"connect":0,"send":0,"wait":15,"receive":14,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"elxr24.shop/assets/img/background.jpg","fqdn":"elxr24.shop","domain":"elxr24.shop","tld":"shop"},"ip":{"addr":"37.228.129.39","port":443,"asn":200651,"as":"FlokiNET ehf","country":"Finland","country_code":"FI"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:52.045Z","timestamp":1785161272045,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"elxr24.cc","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Wed, 03 Jun 2026 07:35:05 GMT","end":"Tue, 01 Sep 2026 07:35:04 GMT"},"fingerprint":{"sha1":"12:3F:CB:7D:FB:C0:91:E3:23:CA:98:8C:CB:80:67:4C:9D:50:FF:C4","sha256":"DD:B7:2F:32:FE:FB:45:B3:5D:1F:1F:45:3E:4F:FD:35:65:70:79:E3:29:04:54:1D:C3:AC:CC:DC:56:40:57:6F"}}},"request":{"raw":"GET /assets/img/background.jpg HTTP/1.1\r\nHost: elxr24.shop\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://elxr24.shop/assets/css/main.css\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nServer: nginx/1.22.1\r\nDate: Mon, 27 Jul 2026 14:07:52 GMT\r\nContent-Type: image/jpeg\r\nContent-Length: 42844\r\nLast-Modified: Sat, 04 Oct 2025 15:01:36 GMT\r\nConnection: keep-alive\r\nETag: \"68e136d0-a75c\"\r\nAccept-Ranges: bytes\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.22.1","description":"Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.","website":"https://nginx.org/en","common_platform_enumeration":"cpe:2.3:a:f5:nginx:*:*:*:*:*:*:*:*","icon":"Nginx.svg","categories":["Web servers","Reverse proxies"]}],"data":{"size":42844,"size_decoded":43086,"mime_type":"image/jpeg","magic":"JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, progressive, precision 8, 1440x1440, components 3","md5":"8bb3d0bdcad49eea633b5384cef8ea0c","sha1":"ad85407da06de1dec6a41aa36e06aff29a5c8425","sha256":"fb5b7779141bb91730fc68334801ac6df2ded504c472d9bac0a2942b58c18084","sha512":"f8fd4e92e2b4910d01d8d2e4e1ecb91c85adf61106da9e017e1af5691f9c540b367638d6a4976ec7a51d058c7ec96ab94fbef548ea0903d7895625335db8057d","ssdeep":"768:GGZo7XTdlvieODHOuqw1uR2/PhkmYTof/PmxYex8SCZHvU9J85Z48Zr2P1wAgG0q:GdF5DODwzk3WouYexZCZPgryr2PiZS","tlshash":"1713e022df525792c437af70d1a336142673a6ba43cea0a622da46bf01d474e7f1cad1","first_seen":"2026-07-27T10:31:02.533349Z","last_seen":"2026-07-27T14:08:21.640125Z","times_seen":2,"resource_available":false,"data":"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"}},"time_used":15,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":15,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css2?family=Days+One\u0026family=Montserrat:ital,wght@0,100..900;1,100..900\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":"https://elxr24.shop/","date":"2026-07-27T14:07:51.927Z","timestamp":1785161271927,"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=Days+One\u0026family=Montserrat:ital,wght@0,100..900;1,100..900\u0026display=swap HTTP/1.1\r\nHost: fonts.googleapis.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://elxr24.shop/\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 14:07:51 GMT\r\ndate: Mon, 27 Jul 2026 14:07:51 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":4609,"size_decoded":1394,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"8563fc8782b404a8b3a0826e3f04d38d","sha1":"2762bcb8ee6360e9da31de9c92ea3ee510a41e6c","sha256":"09532739dfa2e2dbc159062be3b1ba88a1b1016945a793486e2e05354d9a4d5e","sha512":"faed7441731d6ae275b09e58a7fb01ed8639600ebf91c92e7b1551e3912f83c986e56b96b4a6b1b722bd7cbfbcfca40b19ad345ab60625859eafb581544df222","ssdeep":"96:Ju0OEa7FZj0OEavNtOYg4aYwOYg4agFZOhOYg4a+OYg4a7nJc+udOYg4aeNtOO4J:JYzXyYwyNFyuy3uySRk73vO6u8","tlshash":"0991bd810417a504eb471cc523cf7e26de0e62667494d57a7ffe2ce8adeac220365b2d","first_seen":"2026-07-27T10:31:02.541552Z","last_seen":"2026-07-27T14:08:21.64074Z","times_seen":2,"resource_available":false,"data":"LyogY3lyaWxsaWMgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdEYXlzIE9uZSc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9kYXlzb25lL3YxOS9tZW05WWFDbnhuS1JpWVpPQ0lZV2NyZ21WQS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnRGF5cyBPbmUnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvZGF5c29uZS92MTkvbWVtOVlhQ254bktSaVlaT0NJWVNjcmcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQovKiBjeXJpbGxpYy1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4QzdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDOEEsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKfQovKiBjeXJpbGxpYyAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMTAwIDkwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnpTN20wZEo5cFFPaWsyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDMwMSwgVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4aTdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDEwMCA5MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YzMS9KVFVRaklnMV9pNnQ4a0NIS200NTlXeFJ4eTdtMGRKOXBRT2lrMjAud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMTAwIDkwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVFqSWcxX2k2dDhrQ0hLbTQ1OVd4UnlTN20wZEo5cFFPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Ci8qIGN5cmlsbGljLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwIDkwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdSaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4QSwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOwp9Ci8qIGN5cmlsbGljICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDAgOTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5VzFoeXlUbjg5ZGRwUk9pLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzAxLCBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KLyogdmlldG5hbWVzZSAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwIDkwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdaaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSswMTI4LTAxMjksIFUrMDE2OC0wMTY5LCBVKzAxQTAtMDFBMSwgVSswMUFGLTAxQjAsIFUrMDMwMC0wMzAxLCBVKzAzMDMtMDMwNCwgVSswMzA4LTAzMDksIFUrMDMyMywgVSswMzI5LCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Ci8qIGxhdGluLWV4dCAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMTAwIDkwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjMxL0pUVVNqSWcxX2k2dDhrQ0hLbTQ1OVdkaHl5VG44OWRkcFJPaS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LCBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLCBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9Ci8qIGxhdGluICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAxMDAgOTAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MzEvSlRVU2pJZzFfaTZ0OGtDSEttNDU5V2xoeXlUbjg5ZGRwUS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Cg=="}},"time_used":83,"timings":{"blocked":-1,"dns":0,"connect":16,"send":0,"wait":34,"receive":0,"ssl":32},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.googletagmanager.com/gtm.js?id=GTM-KQGH4H3R","fqdn":"www.googletagmanager.com","domain":"googletagmanager.com","tld":"com"},"ip":{"addr":"142.250.178.104","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:52.047Z","timestamp":1785161272047,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google-analytics.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:37:33 GMT","end":"Mon, 21 Sep 2026 08:37:32 GMT"},"fingerprint":{"sha1":"85:82:80:E9:F0:BC:08:B5:D8:5D:91:B4:E5:D3:DB:B1:A7:2F:E3:F3","sha256":"E3:94:E9:DA:2C:F1:36:09:33:63:D3:69:08:E7:E6:91:8D:F3:61:7F:0F:D0:5F:8E:B6:E9:D7:F3:DD:10:3C:DC"}}},"request":{"raw":"GET /gtm.js?id=GTM-KQGH4H3R HTTP/1.1\r\nHost: www.googletagmanager.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://elxr24.shop/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-type: application/javascript; charset=UTF-8\r\naccess-control-allow-origin: *\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: Cache-Control\r\ncontent-encoding: zstd\r\nvary: Accept-Encoding\r\ndate: Mon, 27 Jul 2026 14:07:52 GMT\r\nexpires: Mon, 27 Jul 2026 14:07:52 GMT\r\ncache-control: private, max-age=900\r\nlast-modified: Mon, 27 Jul 2026 12:00:00 GMT\r\nstrict-transport-security: max-age=31536000; includeSubDomains\r\ncross-origin-resource-policy: cross-origin\r\nserver: Google Tag Manager\r\ncontent-length: 125807\r\nx-xss-protection: 0\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":363172,"size_decoded":126457,"mime_type":"application/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (5838)","md5":"debc151d877c62dd2b75e55a0a0546f9","sha1":"b361340ade8069c845cc626bedf59eb26aacd1ff","sha256":"85ebcc9dcf13380620ddbd4dba8de48b354d59c425ff42d087da716251ff76ba","sha512":"c2ae6674a3d22dccb926c61f7e4f14dcf7ad85aeace3f01167bbc54d7c29e9e3e4cfe161518b06982a967a082b4ffaf30b2dfc990ba0d9abd8fe1f0b4f108015","ssdeep":"6144:JR6U0jN97P69uMxlMrHScPmfxNf3Ejf7oXtJfj:JRjYRP69bW7OtJfj","tlshash":"9074f8cdb3da74629392e478503f018ba27a68d2f44cc899f185dcd42e7469a8277f7c","first_seen":"2026-07-27T10:31:02.534361Z","last_seen":"2026-07-27T14:08:21.641345Z","times_seen":2,"resource_available":true,"data":"Ci8vIENvcHlyaWdodCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKKGZ1bmN0aW9uKCl7Cgp2YXIgZGF0YSA9IHsKInJlc291cmNlIjogewogICJ2ZXJzaW9uIjoiMTAiLAogIAogICJtYWNyb3MiOlt7ImZ1bmN0aW9uIjoiX19lIn0seyJmdW5jdGlvbiI6Il9fdiIsInZ0cF9uYW1lIjoiZ3RtLmVsZW1lbnRVcmwiLCJ2dHBfZGF0YUxheWVyVmVyc2lvbiI6MX0seyJmdW5jdGlvbiI6Il9fdiIsInZ0cF9uYW1lIjoiZ3RtLnRyaWdnZXJzIiwidnRwX2RhdGFMYXllclZlcnNpb24iOjIsInZ0cF9zZXREZWZhdWx0VmFsdWUiOnRydWUsInZ0cF9kZWZhdWx0VmFsdWUiOiIifSx7ImZ1bmN0aW9uIjoiX192IiwidnRwX25hbWUiOiJndG0uZWxlbWVudCIsInZ0cF9kYXRhTGF5ZXJWZXJzaW9uIjoxfSx7ImZ1bmN0aW9uIjoiX192IiwidnRwX25hbWUiOiJndG0uZWxlbWVudENsYXNzZXMiLCJ2dHBfZGF0YUxheWVyVmVyc2lvbiI6MX0seyJmdW5jdGlvbiI6Il9fdiIsInZ0cF9uYW1lIjoiZ3RtLmVsZW1lbnRJZCIsInZ0cF9kYXRhTGF5ZXJWZXJzaW9uIjoxfSx7ImZ1bmN0aW9uIjoiX19hZXYiLCJ2dHBfdmFyVHlwZSI6IlRFWFQifV0sCiAgInRhZ3MiOlt7ImZ1bmN0aW9uIjoiX19nb29ndGFnIiwibWV0YWRhdGEiOlsibWFwIl0sIm9uY2VfcGVyX2V2ZW50Ijp0cnVlLCJ2dHBfdGFnSWQiOiJHLTVSRlhYTEg4RDEiLCJ0YWdfaWQiOjEzfSx7ImZ1bmN0aW9uIjoiX19nYWF3ZSIsIm1ldGFkYXRhIjpbIm1hcCJdLCJvbmNlX3Blcl9ldmVudCI6dHJ1ZSwidnRwX3NlbmRFY29tbWVyY2VEYXRhIjpmYWxzZSwidnRwX2V2ZW50U2V0dGluZ3NUYWJsZSI6WyJsaXN0IixbIm1hcCIsInBhcmFtZXRlciIsImJ1dHRvbl9uYW1lIiwicGFyYW1ldGVyVmFsdWUiLCJDbGljayBVUkwiXV0sInZ0cF9ldmVudE5hbWUiOiJjbGlja19zaG9wIiwidnRwX21lYXN1cmVtZW50SWRPdmVycmlkZSI6IkctNVJGWFhMSDhEMSIsInZ0cF9lbmFibGVVc2VyUHJvcGVydGllcyI6dHJ1ZSwidnRwX2VuYWJsZUV1aWQiOnRydWUsInZ0cF9taWdyYXRlZFRvVjIiOnRydWUsInZ0cF9kZW1vVjIiOmZhbHNlLCJ0YWdfaWQiOjE1fSx7ImZ1bmN0aW9uIjoiX19nYWF3ZSIsIm1ldGFkYXRhIjpbIm1hcCJdLCJvbmNlX3Blcl9ldmVudCI6dHJ1ZSwidnRwX3NlbmRFY29tbWVyY2VEYXRhIjpmYWxzZSwidnRwX2V2ZW50U2V0dGluZ3NUYWJsZSI6WyJsaXN0IixbIm1hcCIsInBhcmFtZXRlciIsImJ1dHRvbl9uYW1lIiwicGFyYW1ldGVyVmFsdWUiLCJDbGljayBVUkwiXV0sInZ0cF9ldmVudE5hbWUiOiJjbGljay10ZWxlZ3JhbSIsInZ0cF9tZWFzdXJlbWVudElkT3ZlcnJpZGUiOiJHLTVSRlhYTEg4RDEiLCJ2dHBfZW5hYmxlVXNlclByb3BlcnRpZXMiOnRydWUsInZ0cF9lbmFibGVFdWlkIjp0cnVlLCJ2dHBfbWlncmF0ZWRUb1YyIjp0cnVlLCJ2dHBfZGVtb1YyIjpmYWxzZSwidGFnX2lkIjoxN30seyJmdW5jdGlvbiI6Il9fZ2Fhd2UiLCJtZXRhZGF0YSI6WyJtYXAiXSwib25jZV9wZXJfZXZlbnQiOnRydWUsInZ0cF9zZW5kRWNvbW1lcmNlRGF0YSI6ZmFsc2UsInZ0cF9ldmVudFNldHRpbmdzVGFibGUiOlsibGlzdCIsWyJtYXAiLCJwYXJhbWV0ZXIiLCJidXR0b25fbmFtZSIsInBhcmFtZXRlclZhbHVlIiwiQ2xpY2sgVVJMIl1dLCJ2dHBfZXZlbnROYW1lIjoiY2xpY2tfd29yayIsInZ0cF9tZWFzdXJlbWVudElkT3ZlcnJpZGUiOiJHLTVSRlhYTEg4RDEiLCJ2dHBfZW5hYmxlVXNlclByb3BlcnRpZXMiOnRydWUsInZ0cF9lbmFibGVFdWlkIjp0cnVlLCJ2dHBfbWlncmF0ZWRUb1YyIjp0cnVlLCJ2dHBfZGVtb1YyIjpmYWxzZSwidGFnX2lkIjoxOX0seyJmdW5jdGlvbiI6Il9fZ2Fhd2UiLCJtZXRhZGF0YSI6WyJtYXAiXSwib25jZV9wZXJfZXZlbnQiOnRydWUsInZ0cF9zZW5kRWNvbW1lcmNlRGF0YSI6ZmFsc2UsInZ0cF9ldmVudFNldHRpbmdzVGFibGUiOlsibGlzdCIsWyJtYXAiLCJwYXJhbWV0ZXIiLCJidXR0b25fbmFtZSIsInBhcmFtZXRlclZhbHVlIiwiQ2xpY2sgVVJMIl1dLCJ2dHBfZXZlbnROYW1lIjoiY2xpY2stb3BlcmF0b3IiLCJ2dHBfbWVhc3VyZW1lbnRJZE92ZXJyaWRlIjoiRy01UkZYWExIOEQxIiwidnRwX2VuYWJsZVVzZXJQcm9wZXJ0aWVzIjp0cnVlLCJ2dHBfZW5hYmxlRXVpZCI6dHJ1ZSwidnRwX21pZ3JhdGVkVG9WMiI6dHJ1ZSwidnRwX2RlbW9WMiI6ZmFsc2UsInRhZ19pZCI6MjN9LHsiZnVuY3Rpb24iOiJfX2xjbCIsInZ0cF93YWl0Rm9yVGFncyI6ZmFsc2UsInZ0cF9jaGVja1ZhbGlkYXRpb24iOmZhbHNlLCJ2dHBfdW5pcXVlVHJpZ2dlcklkIjoiMjMxNzA5OTU0XzE0IiwidGFnX2lkIjoyNH0seyJmdW5jdGlvbiI6Il9fbGNsIiwidnRwX3dhaXRGb3JUYWdzIjpmYWxzZSwidnRwX2NoZWNrVmFsaWRhdGlvbiI6ZmFsc2UsInZ0cF91bmlxdWVUcmlnZ2VySWQiOiIyMzE3MDk5NTRfMTYiLCJ0YWdfaWQiOjI1fSx7ImZ1bmN0aW9uIjoiX19sY2wiLCJ2dHBfd2FpdEZvclRhZ3MiOmZhbHNlLCJ2dHBfY2hlY2tWYWxpZGF0aW9uIjpmYWxzZSwidnRwX3VuaXF1ZVRyaWdnZXJJZCI6IjIzMTcwOTk1NF8xOCIsInRhZ19pZCI6MjZ9LHsiZnVuY3Rpb24iOiJfX2xjbCIsInZ0cF93YWl0Rm9yVGFncyI6ZmFsc2UsInZ0cF9jaGVja1ZhbGlkYXRpb24iOmZhbHNlLCJ2dHBfdW5pcXVlVHJpZ2dlcklkIjoiMjMxNzA5OTU0XzIyIiwidGFnX2lkIjoyN31dLAogICJwcmVkaWNhdGVzIjpbeyJmdW5jdGlvbiI6Il9lcSIsImFyZzAiOlsibWFjcm8iLDBdLCJhcmcxIjoiZ3RtLmluaXQifSx7ImZ1bmN0aW9uIjoiX2VxIiwiYXJnMCI6WyJtYWNybyIsMV0sImFyZzEiOiJodHRwczpcL1wvZWx4cjI0LnZpcCJ9LHsiZnVuY3Rpb24iOiJfZXEiLCJhcmcwIjpbIm1hY3JvIiwwXSwiYXJnMSI6Imd0bS5saW5rQ2xpY2sifSx7ImZ1bmN0aW9uIjoiX3JlIiwiYXJnMCI6WyJtYWNybyIsMl0sImFyZzEiOiIoXiR8KChefCwpMjMxNzA5OTU0XzE0KCR8LCkpKSJ9LHsiZnVuY3Rpb24iOiJfZXEiLCJhcmcwIjpbIm1hY3JvIiwxXSwiYXJnMSI6Imh0dHBzOlwvXC90Lm1lXC9lbGxsaWlpeGlpcjI0Ym90In0seyJmdW5jdGlvbiI6Il9yZSIsImFyZzAiOlsibWFjcm8iLDJdLCJhcmcxIjoiKF4kfCgoXnwsKTIzMTcwOTk1NF8xNigkfCwpKSkifSx7ImZ1bmN0aW9uIjoiX2VxIiwiYXJnMCI6WyJtYWNybyIsMV0sImFyZzEiOiJodHRwczpcL1wvdC5tZVwvZWxpeGlycnJycndvcmsyNF9ib3QifSx7ImZ1bmN0aW9uIjoiX3JlIiwiYXJnMCI6WyJtYWNybyIsMl0sImFyZzEiOiIoXiR8KChefCwpMjMxNzA5OTU0XzE4KCR8LCkpKSJ9LHsiZnVuY3Rpb24iOiJfZXEiLCJhcmcwIjpbIm1hY3JvIiwxXSwiYXJnMSI6Imh0dHBzOlwvXC90Lm1lXC9lbHhycnJycm9wcmF0b3JfYm90In0seyJmdW5jdGlvbiI6Il9yZSIsImFyZzAiOlsibWFjcm8iLDJdLCJhcmcxIjoiKF4kfCgoXnwsKTIzMTcwOTk1NF8yMigkfCwpKSkifSx7ImZ1bmN0aW9uIjoiX2VxIiwiYXJnMCI6WyJtYWNybyIsMF0sImFyZzEiOiJndG0uanMifV0sCiAgInJ1bGVzIjpbW1siaWYiLDBdLFsiYWRkIiwwXV0sW1siaWYiLDEsMiwzXSxbImFkZCIsMV1dLFtbImlmIiwyLDQsNV0sWyJhZGQiLDJdXSxbWyJpZiIsMiw2LDddLFsiYWRkIiwzXV0sW1siaWYiLDIsOCw5XSxbImFkZCIsNF1dLFtbImlmIiwxMF0sWyJhZGQiLDUsNiw3LDhdXV0KfSwKInJ1bnRpbWUiOlsgWzUwLCJfX2FldiIsWzQ2LCJhIl0sWzUwLCJhQyIsWzQ2LCJhSiJdLFsyMixbMixbMTUsInYiXSwiaGFzT3duUHJvcGVydHkiLFs3LFsxNSwiYUoiXV1dLFs0NixbNTMsWzM2LFsxNixbMTUsInYiXSxbMTUsImFKIl1dXV1dXSxbNTIsImFLIixbMTYsWzE1LCJ6Il0sImVsZW1lbnQiXV0sWzIyLFsyOCxbMTUsImFLIl1dLFs0NixbMzYsWzQ0XV1dXSxbNTIsImFMIixbImciLFsxNSwiYUsiXV1dLFsiYUQiLFsxNSwiYUoiXSxbMTUsImFMIl1dLFszNixbMTUsImFMIl1dXSxbNTAsImFEIixbNDYsImFKIiwiYUsiXSxbNDMsWzE1LCJ2Il0sWzE1LCJhSiJdLFsxNSwiYUsiXV0sWzIsWzE1LCJ3Il0sInB1c2giLFs3LFsxNSwiYUoiXV1dLFsyMixbMTgsWzE3LFsxNSwidyJdLCJsZW5ndGgiXSxbMTUsInMiXV0sWzQ2LFs1MyxbNTIsImFMIixbMixbMTUsInciXSwic2hpZnQiLFs3XV1dLFsyLFsxNSwiYiJdLCJkZWxldGUiLFs3LFsxNSwidiJdLFsxNSwiYUwiXV1dXV1dXSxbNTAsImFFIixbNDYsImFKIiwiYUsiXSxbNTIsImFMIixbIm4iLFszMCxbMzAsWzE2LFsxNSwieiJdLCJlbGVtZW50VXJsIl0sWzE1LCJhSiJdXSwiIl1dXSxbNTIsImFNIixbIm4iLFszMCxbMTcsWzE1LCJhSyJdLCJjb21wb25lbnQiXSwiVVJMIl1dXSxbMzgsWzE1LCJhTSJdLFs0NiwiVVJMIiwiSVNfT1VUQk9VTkQiLCJQUk9UT0NPTCIsIkhPU1QiLCJQT1JUIiwiUEFUSCIsIkVYVEVOU0lPTiIsIlFVRVJZIiwiRlJBR01FTlQiXSxbNDYsWzUsWzQ2LFszNixbMTUsImFMIl1dXV0sWzUsWzQ2LFszNixbImFHIixbMTUsImFMIl0sWzE3LFsxNSwiYUsiXSwiYWZmaWxpYXRlZERvbWFpbnMiXV1dXV0sWzUsWzQ2LFszNixbMixbMTUsImwiXSwiQiIsWzcsWzE1LCJhTCJdXV1dXV0sWzUsWzQ2LFszNixbMixbMTUsImwiXSwiQyIsWzcsWzE1LCJhTCJdLFsxNyxbMTUsImFLIl0sInN0cmlwV3d3Il1dXV1dXSxbNSxbNDYsWzM2LFsyLFsxNSwibCJdLCJEIixbNyxbMTUsImFMIl1dXV1dXSxbNSxbNDYsWzM2LFsyLFsxNSwibCJdLCJFIixbNyxbMTUsImFMIl0sWzE3LFsxNSwiYUsiXSwiZGVmYXVsdFBhZ2VzIl1dXV1dXSxbNSxbNDYsWzM2LFsyLFsxNSwibCJdLCJGIixbNyxbMTUsImFMIl1dXV1dXSxbNSxbNDYsWzIyLFsxNyxbMTUsImFLIl0sInF1ZXJ5S2V5Il0sWzQ2LFs1MyxbMzYsWzIsWzE1LCJsIl0sIkgiLFs3LFsxNSwiYUwiXSxbMTcsWzE1LCJhSyJdLCJxdWVyeUtleSJdXV1dXV0sWzQ2LFs1MyxbMzYsWzIsWzE3LFsibSIsWzE1LCJhTCJdXSwic2VhcmNoIl0sInJlcGxhY2UiLFs3LCI/IiwiIl1dXV1dXV1dLFs1LFs0NixbMzYsWzIsWzE1LCJsIl0sIkciLFs3LFsxNSwiYUwiXV1dXV1dLFs5LFs0NixbMzYsWzE3LFsibSIsWzE1LCJhTCJdXSwiaHJlZiJdXV1dXV1dLFs1MCwiYUYiLFs0NiwiYUoiLCJhSyJdLFs1MiwiYUwiLFs4LCJBVFRSSUJVVEUiLCJlbGVtZW50QXR0cmlidXRlIiwiQ0xBU1NFUyIsImVsZW1lbnRDbGFzc2VzIiwiRUxFTUVOVCIsImVsZW1lbnQiLCJJRCIsImVsZW1lbnRJZCIsIkhJU1RPUllfQ0hBTkdFX1NPVVJDRSIsImhpc3RvcnlDaGFuZ2VTb3VyY2UiLCJISVNUT1JZX05FV19TVEFURSIsIm5ld0hpc3RvcnlTdGF0ZSIsIkhJU1RPUllfTkVXX1VSTF9GUkFHTUVOVCIsIm5ld1VybEZyYWdtZW50IiwiSElTVE9SWV9PTERfU1RBVEUiLCJvbGRIaXN0b3J5U3RhdGUiLCJISVNUT1JZX09MRF9VUkxfRlJBR01FTlQiLCJvbGRVcmxGcmFnbWVudCIsIlRBUkdFVCIsImVsZW1lbnRUYXJnZXQiXV0sWzUyLCJhTSIsWzE2LFsxNSwieiJdLFsxNixbMTUsImFMIl0sWzE1LCJhSiJdXV1dLFszNixbMzksWzIxLFsxNSwiYU0iXSxbNDRdXSxbMTUsImFNIl0sWzE1LCJhSyJdXV1dLFs1MCwiYUciLFs0NiwiYUoiLCJhSyJdLFsyMixbMjgsWzE1LCJhSiJdXSxbNDYsWzUzLFszNixmYWxzZV1dXV0sWzUyLCJhTCIsWyJhSSIsWzE1LCJhSiJdXV0sWzIyLFsiYUgiLFsxNSwiYUwiXSxbImsiXV0sWzQ2LFs1MyxbMzYsZmFsc2VdXV1dLFsyMixbMjgsWyJxIixbMTUsImFLIl1dXSxbNDYsWzUzLFszLCJhSyIsWzIsWzIsWyJuIixbMzAsWzE1LCJhSyJdLCIiXV0sInJlcGxhY2UiLFs3LFsiYyIsIlxccysiLCJnIl0sIiJdXSwic3BsaXQiLFs3LCIsIl1dXV1dXSxbNjUsImFNIixbMTUsImFLIl0sWzQ2LFs1MyxbMjIsWzIwLFsiaiIsWzE1LCJhTSJdXSwib2JqZWN0Il0sWzQ2LFs1MyxbMjIsWzE2LFsxNSwiYU0iXSwiaXNfcmVnZXgiXSxbNDYsWzUzLFs1MiwiYU4iLFsiYyIsWzE2LFsxNSwiYU0iXSwiZG9tYWluIl1dXSxbMjIsWzIwLFsxNSwiYU4iXSxbNDVdXSxbNDYsWzZdXV0sWzIyLFsicCIsWzE1LCJhTiJdLFsxNSwiYUwiXV0sWzQ2LFs1MyxbMzYsZmFsc2VdXV1dXV0sWzQ2LFs1MyxbMjIsWyJhSCIsWzE1LCJhTCJdLFsxNixbMTUsImFNIl0sImRvbWFpbiJdXSxbNDYsWzUzLFszNixmYWxzZV1dXV1dXV1dXSxbNDYsWzIyLFsyMCxbImoiLFsxNSwiYU0iXV0sIlJlZ0V4cCJdLFs0NixbNTMsWzIyLFsicCIsWzE1LCJhTSJdLFsxNSwiYUwiXV0sWzQ2LFs1MyxbMzYsZmFsc2VdXV1dXV0sWzQ2LFs1MyxbMjIsWyJhSCIsWzE1LCJhTCJdLFsxNSwiYU0iXV0sWzQ2LFs1MyxbMzYsZmFsc2VdXV1dXV1dXV1dXV0sWzM2LHRydWVdXSxbNTAsImFIIixbNDYsImFKIiwiYUsiXSxbMjIsWzI4LFsxNSwiYUsiXV0sWzQ2LFszNixmYWxzZV1dXSxbMjIsWzE5LFsyLFsxNSwiYUoiXSwiaW5kZXhPZiIsWzcsWzE1LCJhSyJdXV0sMF0sWzQ2LFszNix0cnVlXV1dLFszLCJhSyIsWyJhSSIsWzE1LCJhSyJdXV0sWzIyLFsyOCxbMTUsImFLIl1dLFs0NixbMzYsZmFsc2VdXV0sWzMsImFLIixbMixbMTUsImFLIl0sInRvTG93ZXJDYXNlIixbN11dXSxbNDEsImFMIl0sWzMsImFMIixbMzcsWzE3LFsxNSwiYUoiXSwibGVuZ3RoIl0sWzE3LFsxNSwiYUsiXSwibGVuZ3RoIl1dXSxbMjIsWzEsWzE4LFsxNSwiYUwiXSwwXSxbMjksWzIsWzE1LCJhSyJdLCJjaGFyQXQiLFs3LDBdXSwiLiJdXSxbNDYsWzUzLFszNCxbMywiYUwiLFszNyxbMTUsImFMIl0sMV1dXSxbMywiYUsiLFswLCIuIixbMTUsImFLIl1dXV1dXSxbMzYsWzEsWzE5LFsxNSwiYUwiXSwwXSxbMTIsWzIsWzE1LCJhSiJdLCJpbmRleE9mIixbNyxbMTUsImFLIl0sWzE1LCJhTCJdXV0sWzE1LCJhTCJdXV1dXSxbNTAsImFJIixbNDYsImFKIl0sWzIyLFsyOCxbInAiLFsxNSwiciJdLFsxNSwiYUoiXV1dLFs0NixbNTMsWzMsImFKIixbMCwiaHR0cDovLyIsWzE1LCJhSiJdXV1dXV0sWzM2LFsyLFsxNSwibCJdLCJDIixbNyxbMTUsImFKIl0sdHJ1ZV1dXV0sWzUyLCJiIixbInJlcXVpcmUiLCJPYmplY3QiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJpbnRlcm5hbC5jcmVhdGVSZWdleCJdXSxbNTIsImQiLFsicmVxdWlyZSIsImludGVybmFsLmdldEVsZW1lbnRBdHRyaWJ1dGUiXV0sWzUyLCJlIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRFbGVtZW50VmFsdWUiXV0sWzUyLCJmIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRFdmVudERhdGEiXV0sWzUyLCJnIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRFbGVtZW50SW5uZXJUZXh0Il1dLFs1MiwiaCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0RWxlbWVudFByb3BlcnR5Il1dLFs1MiwiaSIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuY29weUZyb21EYXRhTGF5ZXJDYWNoZSJdXSxbNTIsImoiLFsicmVxdWlyZSIsImdldFR5cGUiXV0sWzUyLCJrIixbInJlcXVpcmUiLCJnZXRVcmwiXV0sWzUyLCJsIixbMTUsIl9fbW9kdWxlX2xlZ2FjeVVybHMiXV0sWzUyLCJtIixbInJlcXVpcmUiLCJpbnRlcm5hbC5sZWdhY3lQYXJzZVVybCJdXSxbNTIsIm4iLFsicmVxdWlyZSIsIm1ha2VTdHJpbmciXV0sWzUyLCJvIixbInJlcXVpcmUiLCJ0ZW1wbGF0ZVN0b3JhZ2UiXV0sWzUyLCJwIixbInJlcXVpcmUiLCJpbnRlcm5hbC50ZXN0UmVnZXgiXV0sWzUyLCJxIixbNTEsIiIsWzcsImFKIl0sWzM2LFsyMCxbImoiLFsxNSwiYUoiXV0sImFycmF5Il1dXV0sWzUyLCJyIixbImMiLCJeaHR0cHM/OlxcL1xcLyIsImkiXV0sWzUyLCJzIiwzNV0sWzUyLCJ0IiwiZXEiXSxbNTIsInUiLCJldmMiXSxbNTIsInYiLFszMCxbMixbMTUsIm8iXSwiZ2V0SXRlbSIsWzcsWzE1LCJ1Il1dXSxbOF1dXSxbMixbMTUsIm8iXSwic2V0SXRlbSIsWzcsWzE1LCJ1Il0sWzE1LCJ2Il1dXSxbNTIsInciLFszMCxbMixbMTUsIm8iXSwiZ2V0SXRlbSIsWzcsWzE1LCJ0Il1dXSxbN11dXSxbMixbMTUsIm8iXSwic2V0SXRlbSIsWzcsWzE1LCJ0Il0sWzE1LCJ3Il1dXSxbNTIsIngiLFsxNyxbMTUsImEiXSwiZGVmYXVsdFZhbHVlIl1dLFs1MiwieSIsWzE3LFsxNSwiYSJdLCJ2YXJUeXBlIl1dLFs1MiwieiIsWyJpIiwiZ3RtIl1dLFszOCxbMTUsInkiXSxbNDYsIlRBR19OQU1FIiwiVEVYVCIsIlVSTCIsIkFUVFJJQlVURSJdLFs0NixbNSxbNDYsWzUyLCJhQSIsWzE2LFsxNSwieiJdLCJlbGVtZW50Il1dLFs1MiwiYUIiLFsxLFsxNSwiYUEiXSxbImgiLFsxNSwiYUEiXSwidGFnTmFtZSJdXV0sWzM2LFszMCxbMTUsImFCIl0sWzE1LCJ4Il1dXV1dLFs1LFs0NixbMzYsWzMwLFsiYUMiLFsiZiIsImd0bVxcLnVuaXF1ZUV2ZW50SWQiXV0sWzE1LCJ4Il1dXV1dLFs1LFs0NixbMzYsWyJhRSIsWzE1LCJ4Il0sWzE1LCJhIl1dXV1dLFs1LFs0NixbMjIsWzIwLFsxNyxbMTUsImEiXSwiYXR0cmlidXRlIl0sWzQ0XV0sWzQ2LFs1MyxbMzYsWyJhRiIsWzE1LCJ5Il0sWzE1LCJ4Il1dXV1dLFs0NixbNTMsWzUyLCJhSiIsWzE2LFsxNSwieiJdLCJlbGVtZW50Il1dLFs1MiwiYUsiLFsxLFsxNSwiYUoiXSxbMzksWzIwLFsxNyxbMTUsImEiXSwiYXR0cmlidXRlIl0sInZhbHVlIl0sWyJlIixbMTUsImFKIl1dLFsiZCIsWzE1LCJhSiJdLFsxNyxbMTUsImEiXSwiYXR0cmlidXRlIl1dXV1dLFszNixbMzAsWzMwLFsxNSwiYUsiXSxbMTUsIngiXV0sIiJdXV1dXV1dLFs5LFs0NixbMzYsWyJhRiIsWzE1LCJ5Il0sWzE1LCJ4Il1dXV1dXV1dCiAsWzUwLCJfX2UiLFs0NiwiYSJdLFszNixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZ2V0RXZlbnREYXRhIl1dLFsiJDAiLCJldmVudCJdXV1dCiAsWzUwLCJfX2dhYXdlIixbNDYsImEiXSxbNTAsInIiLFs0NiwiYUUiXSxbMixbMTUsInEiXSwicHVzaCIsWzcsWzE1LCJhRSJdXV1dLFs1MCwidiIsWzQ2LCJhRSIsImFGIiwiYUciXSxbNTIsImFIIixbOF1dLFs1MiwiYUkiLFs1MSwiIixbNywiYU0iLCJhTiJdLFs0MyxbMTUsImFIIl0sWzE1LCJhTSJdLFszMCxbMTYsWzE1LCJhSCJdLFsxNSwiYU0iXV0sWzE1LCJhTiJdXV1dXSxbNTIsImFKIixbNTEsIiIsWzcsImFNIiwiYU4iLCJhTyJdLFsiciIsWzE3LFsxNSwiayJdLCJGIl1dLFsyMixbMTUsImFNIl0sWzQ2LFs1MyxbNDMsWzE1LCJhSCJdLCJpdGVtcyIsWzMwLFsxNixbMTUsImFIIl0sIml0ZW1zIl0sWzddXV0sWzY1LCJhUCIsWzE1LCJhTSJdLFs0NixbNTMsWzUyLCJhUSIsWzhdXSxbNTQsImFSIixbMTUsImFQIl0sWzQ2LFs1MyxbNTIsImFTIixbMTYsWzE1LCJhUCJdLFsxNSwiYVIiXV1dLFsyMixbMSxbMTUsImFPIl0sWzIwLFsxNSwiYVIiXSwiaWQiXV0sWzQ2LFs1MyxbNDMsWzE1LCJhUSJdLCJwcm9tb3Rpb25faWQiLFsxNSwiYVMiXV1dXSxbNDYsWzIyLFsxLFsxNSwiYU8iXSxbMjAsWzE1LCJhUiJdLCJuYW1lIl1dLFs0NixbNTMsWzQzLFsxNSwiYVEiXSwicHJvbW90aW9uX25hbWUiLFsxNSwiYVMiXV1dXSxbNDYsWzUzLFs0MyxbMTUsImFRIl0sWzE1LCJhUiJdLFsxNSwiYVMiXV1dXV1dXV1dXSxbMixbMTYsWzE1LCJhSCJdLCJpdGVtcyJdLCJwdXNoIixbNyxbMTUsImFRIl1dXV1dXV1dXSxbMjIsWzE1LCJhTiJdLFs0NixbNTMsWzU1LCJhUCIsWzE1LCJhTiJdLFs0NixbNTMsWzIyLFsyLFsxNSwicyJdLCJoYXNPd25Qcm9wZXJ0eSIsWzcsWzE1LCJhUCJdXV0sWzQ2LFs1MyxbImFJIixbMTYsWzE1LCJzIl0sWzE1LCJhUCJdXSxbMTYsWzE1LCJhTiJdLFsxNSwiYVAiXV1dXV0sWzQ2LFs1MyxbImFJIixbMTUsImFQIl0sWzE2LFsxNSwiYU4iXSxbMTUsImFQIl1dXV1dXV1dXV1dXV1dLFs0MSwiYUsiXSxbMjIsWzIwLFsxNyxbMTUsImFFIl0sImdldEVjb21tZXJjZURhdGFGcm9tIl0sImRhdGFMYXllciJdLFs0NixbNTMsWzMsImFLIixbImMiLCJldmVudE1vZGVsIl1dLFsyMixbMjgsWzE1LCJhSyJdXSxbNDYsWzUzLFszLCJhSyIsWyJiIiwiZWNvbW1lcmNlIl1dXV1dXV0sWzQ2LFs1MyxbMywiYUsiLFsxNyxbMTUsImFFIl0sImVjb21tZXJjZU1hY3JvRGF0YSJdXSxbMjIsWzEsWzEsWzIwLFsiZCIsWzE1LCJhSyJdXSwib2JqZWN0Il0sWzE2LFsxNSwiYUsiXSwiZWNvbW1lcmNlIl1dLFsyOCxbMTYsWzE1LCJhSyJdLCJpdGVtcyJdXV0sWzQ2LFs1MyxbMywiYUsiLFsxNixbMTUsImFLIl0sImVjb21tZXJjZSJdXV1dXV1dXSxbMjIsWzIxLFsiZCIsWzE1LCJhSyJdXSwib2JqZWN0Il0sWzQ2LFszNl1dXSxbNDEsImFMIl0sWzMsImFMIixmYWxzZV0sWzU1LCJhTSIsWzE1LCJhSyJdLFs0NixbNTMsWzIyLFsyOCxbMTUsImFMIl1dLFs0NixbNTMsWyJyIixbMTcsWzE1LCJrIl0sIkUiXV0sWzMsImFMIix0cnVlXV1dXSxbMjIsWzIwLFsxNSwiYU0iXSwiY3VycmVuY3lDb2RlIl0sWzQ2LFs1MyxbImFJIiwiY3VycmVuY3kiLFsxNixbMTUsImFLIl0sImN1cnJlbmN5Q29kZSJdXV1dLFs0NixbMjIsWzEsWzIwLFsxNSwiYU0iXSwiaW1wcmVzc2lvbnMiXSxbMjAsWzE1LCJhRiJdLCJ2aWV3X2l0ZW1fbGlzdCJdXSxbNDYsWzUzLFsiYUoiLFsxNixbMTUsImFLIl0sImltcHJlc3Npb25zIl0sWzQ1XV1dXSxbNDYsWzIyLFsxLFsyMCxbMTUsImFNIl0sInByb21vQ2xpY2siXSxbMjAsWzE1LCJhRiJdLCJzZWxlY3RfcHJvbW90aW9uIl1dLFs0NixbNTMsWyJhSiIsWzE2LFsxNixbMTUsImFLIl0sInByb21vQ2xpY2siXSwicHJvbW90aW9ucyJdLFsxNixbMTYsWzE1LCJhSyJdLCJwcm9tb0NsaWNrIl0sImFjdGlvbkZpZWxkIl0sdHJ1ZV1dXSxbNDYsWzIyLFsxLFsyMCxbMTUsImFNIl0sInByb21vVmlldyJdLFsyMCxbMTUsImFGIl0sInZpZXdfcHJvbW90aW9uIl1dLFs0NixbNTMsWyJhSiIsWzE2LFsxNixbMTUsImFLIl0sInByb21vVmlldyJdLCJwcm9tb3Rpb25zIl0sWzE2LFsxNixbMTUsImFLIl0sInByb21vVmlldyJdLCJhY3Rpb25GaWVsZCJdLHRydWVdXV0sWzQ2LFsyMixbMixbMTUsInQiXSwiaGFzT3duUHJvcGVydHkiLFs3LFsxNSwiYU0iXV1dLFs0NixbNTMsWzIyLFsyMCxbMTUsImFGIl0sWzE2LFsxNSwidCJdLFsxNSwiYU0iXV1dLFs0NixbNTMsWyJhSiIsWzE2LFsxNixbMTUsImFLIl0sWzE1LCJhTSJdXSwicHJvZHVjdHMiXSxbMTYsWzE2LFsxNSwiYUsiXSxbMTUsImFNIl1dLCJhY3Rpb25GaWVsZCJdXV1dLFs0NixbNTNdXV1dXSxbNDYsWzUzLFs0MyxbMTUsImFIIl0sWzE1LCJhTSJdLFsxNixbMTUsImFLIl0sWzE1LCJhTSJdXV1dXV1dXV1dXV1dXV1dXSxbMixbMTUsInAiXSwiQSIsWzcsWzE1LCJhSCJdLFsxNSwiYUciXV1dXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmNvcHlGcm9tRGF0YUxheWVyQ2FjaGUiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXRFdmVudERhdGEiXV0sWzUyLCJkIixbInJlcXVpcmUiLCJnZXRUeXBlIl1dLFs1MiwiZSIsWyJyZXF1aXJlIiwibG9nVG9Db25zb2xlIl1dLFs1MiwiZiIsWyJyZXF1aXJlIiwibWFrZVN0cmluZyJdXSxbNTIsImciLFsicmVxdWlyZSIsIm1ha2VUYWJsZU1hcCJdXSxbNTIsImgiLFsicmVxdWlyZSIsImludGVybmFsLnNlbmRHdGFnRXZlbnQiXV0sWzUyLCJpIixbInJlcXVpcmUiLCJtYWtlTnVtYmVyIl1dLFs1MiwiaiIsWyJyZXF1aXJlIiwiT2JqZWN0Il1dLFs1MiwiayIsWzE1LCJfX21vZHVsZV9nb2xkRXZlbnRVc2FnZUlkIl1dLFs1MiwibCIsWzE1LCJfX21vZHVsZV9ndGFnU2NoZW1hIl1dLFs1MiwibSIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuaXNGZWF0dXJlRW5hYmxlZCJdXSxbNTIsIm4iLFsxNSwiX19tb2R1bGVfZmVhdHVyZXMiXV0sWzUyLCJvIixbMTUsIl9fbW9kdWxlX2d0YWciXV0sWzUyLCJwIixbMTUsIl9fbW9kdWxlX29iamVjdCJdXSxbNTIsInEiLFs3XV0sWzUyLCJzIixbOCwiaWQiLCJ0cmFuc2FjdGlvbl9pZCIsInJldmVudWUiLCJ2YWx1ZSIsImxpc3QiLCJpdGVtX2xpc3RfbmFtZSJdXSxbNTIsInQiLFs4LCJjbGljayIsInNlbGVjdF9pdGVtIiwiZGV0YWlsIiwidmlld19pdGVtIiwiYWRkIiwiYWRkX3RvX2NhcnQiLCJyZW1vdmUiLCJyZW1vdmVfZnJvbV9jYXJ0IiwiY2hlY2tvdXQiLCJiZWdpbl9jaGVja291dCIsImNoZWNrb3V0X29wdGlvbiIsImNoZWNrb3V0X29wdGlvbiIsInB1cmNoYXNlIiwicHVyY2hhc2UiLCJyZWZ1bmQiLCJyZWZ1bmQiXV0sWzUyLCJ1IixbOCwiYWRkX3BheW1lbnRfaW5mbyIsMSwiYWRkX3NoaXBwaW5nX2luZm8iLDEsImFkZF90b19jYXJ0IiwxLCJyZW1vdmVfZnJvbV9jYXJ0IiwxLCJ2aWV3X2NhcnQiLDEsImJlZ2luX2NoZWNrb3V0IiwxLCJzZWxlY3RfaXRlbSIsMSwidmlld19pdGVtX2xpc3QiLDEsInNlbGVjdF9wcm9tb3Rpb24iLDEsInZpZXdfcHJvbW90aW9uIiwxLCJwdXJjaGFzZSIsMSwicmVmdW5kIiwxLCJ2aWV3X2l0ZW0iLDEsImFkZF90b193aXNobGlzdCIsMV1dLFs0MSwidyJdLFsyMixbMTcsWzE1LCJhIl0sIm1pZ3JhdGVkVG9WMiJdLFs0NixbNTMsWzMsInciLFsiZiIsWzE3LFsxNSwiYSJdLCJtZWFzdXJlbWVudElkT3ZlcnJpZGUiXV1dXV0sWzQ2LFs1MyxbMywidyIsWyJmIixbMzAsWzE3LFsxNSwiYSJdLCJtZWFzdXJlbWVudElkT3ZlcnJpZGUiXSxbMTcsWzE1LCJhIl0sIm1lYXN1cmVtZW50SWQiXV1dXV1dXSxbMjIsWzIxLFsyLFsxNSwidyJdLCJpbmRleE9mIixbNywiRy0iXV0sMF0sWzQ2LFs1MyxbImUiLFswLCJJbnZhbGlkIE1lYXN1cmVtZW50IElEIGZvciB0aGUgR0E0IGV2ZW50IHRhZzogIixbMTUsInciXV1dLFsyLFsxNSwiYSJdLCJndG1PbkZhaWx1cmUiLFs3XV0sWzM2XV1dXSxbNTIsIngiLFsiZiIsWzE3LFsxNSwiYSJdLCJldmVudE5hbWUiXV1dLFs1MiwieSIsWzhdXSxbMjIsWzE3LFsxNSwiYSJdLCJzZW5kRWNvbW1lcmNlRGF0YSJdLFs0NixbNTMsWzIyLFsxLFsyOCxbMTYsWzE1LCJ1Il0sWzE1LCJ4Il1dXSxbMjEsWzE1LCJ4Il0sImNoZWNrb3V0X29wdGlvbiJdXSxbNDYsWzUzLFsiZSIsWzAsWzAsIkludmFsaWQgRWNvbW1lcmNlIGV2ZW50IG5hbWUgXCIiLFsxNSwieCJdXSwiXCIiXV1dXSxbNDYsWzUzLFsidiIsWzE1LCJhIl0sWzE1LCJ4Il0sWzE1LCJ5Il1dXV1dXV1dLFs1MiwieiIsWzE3LFsxNSwiYSJdLCJldmVudFNldHRpbmdzVmFyaWFibGUiXV0sWzIyLFsxNSwieiJdLFs0NixbNTMsWzU1LCJhRSIsWzE1LCJ6Il0sWzQ2LFs1MyxbMjIsWzIsWzE1LCJ6Il0sImhhc093blByb3BlcnR5IixbNyxbMTUsImFFIl1dXSxbNDYsWzUzLFs0MyxbMTUsInkiXSxbMTUsImFFIl0sWzE2LFsxNSwieiJdLFsxNSwiYUUiXV1dXV1dXV1dXV1dLFsyMixbMTcsWzE1LCJhIl0sImV2ZW50U2V0dGluZ3NUYWJsZSJdLFs0NixbNTMsWzUyLCJhRSIsWzMwLFsiZyIsWzMwLFsxNyxbMTUsImEiXSwiZXZlbnRTZXR0aW5nc1RhYmxlIl0sWzddXSwicGFyYW1ldGVyIiwicGFyYW1ldGVyVmFsdWUiXSxbOF1dXSxbNTUsImFGIixbMTUsImFFIl0sWzQ2LFs1MyxbNDMsWzE1LCJ5Il0sWzE1LCJhRiJdLFsxNixbMTUsImFFIl0sWzE1LCJhRiJdXV1dXV1dXV0sWzUyLCJhQSIsWzMwLFsiZyIsWzMwLFsxNyxbMTUsImEiXSwiZXZlbnRQYXJhbWV0ZXJzIl0sWzddXSwibmFtZSIsInZhbHVlIl0sWzhdXV0sWzU1LCJhRSIsWzE1LCJhQSJdLFs0NixbNTMsWzQzLFsxNSwieSJdLFsxNSwiYUUiXSxbMTYsWzE1LCJhQSJdLFsxNSwiYUUiXV1dXV1dLFs1MiwiYUIiLFsxNyxbMTUsImEiXSwidXNlckRhdGFWYXJpYWJsZSJdXSxbMjIsWzE1LCJhQiJdLFs0NixbNTMsWzQzLFsxNSwieSJdLCJ1c2VyX2RhdGEiLFsxNSwiYUIiXV1dXV0sWzIyLFszMCxbMixbMTUsInkiXSwiaGFzT3duUHJvcGVydHkiLFs3LCJ1c2VyX3Byb3BlcnRpZXMiXV0sWzE3LFsxNSwiYSJdLCJ1c2VyUHJvcGVydGllcyJdXSxbNDYsWzUzLFs1MiwiYUUiLFszMCxbMTYsWzE1LCJ5Il0sInVzZXJfcHJvcGVydGllcyJdLFs4XV1dLFsyLFsxNSwicCJdLCJBIixbNyxbMzAsWyJnIixbMzAsWzE3LFsxNSwiYSJdLCJ1c2VyUHJvcGVydGllcyJdLFs3XV0sIm5hbWUiLCJ2YWx1ZSJdLFs4XV0sWzE1LCJhRSJdXV0sWzQzLFsxNSwieSJdLCJ1c2VyX3Byb3BlcnRpZXMiLFsxNSwiYUUiXV1dXV0sWzUyLCJhQyIsWzgsIm5vR3RtRXZlbnQiLHRydWVdXSxbMjIsWzE4LFsxNyxbMTUsInEiXSwibGVuZ3RoIl0sMF0sWzQ2LFs1MyxbNDMsWzE1LCJhQyJdLCJldmVudE1ldGFkYXRhIixbOCwiZXZlbnRfdXNhZ2UiLFsxNSwicSJdXV1dXV0sWzUyLCJhRCIsWzMwLFsxNyxbMTUsImFDIl0sImV2ZW50TWV0YWRhdGEiXSxbOF1dXSxbMixbMTUsIm8iXSwiSCIsWzcsWzE1LCJhRCJdLFsxNSwidyJdXV0sWzIyLFsxOCxbMTcsWzIsWzE1LCJqIl0sImtleXMiLFs3LFsxNSwiYUQiXV1dLCJsZW5ndGgiXSwwXSxbNDYsWzUzLFs0MyxbMTUsImFDIl0sImV2ZW50TWV0YWRhdGEiLFsxNSwiYUQiXV1dXV0sWzIsWzE1LCJvIl0sIkUiLFs3LFsxNSwieSJdLFsxNyxbMTUsIm8iXSwiQiJdLFs1MSwiIixbNywiYUUiXSxbMzYsWzM5LFsyMCwiZmFsc2UiLFsyLFsiZiIsWzE1LCJhRSJdXSwidG9Mb3dlckNhc2UiLFs3XV1dLGZhbHNlLFsyOCxbMjgsWzE1LCJhRSJdXV1dXV1dXSxbMixbMTUsIm8iXSwiRSIsWzcsWzE1LCJ5Il0sWzE3LFsxNSwibyJdLCJEIl0sWzUxLCIiLFs3LCJhRSJdLFszNixbImkiLFsxNSwiYUUiXV1dXV1dLFsiaCIsWzE1LCJ3Il0sWzE1LCJ4Il0sWzE1LCJ5Il0sWzE1LCJhQyJdXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19nb29ndGFnIixbNDYsImEiXSxbNTAsIm0iLFs0NiwidiIsInciXSxbNjYsIngiLFsyLFsxNSwiYiJdLCJrZXlzIixbNyxbMTUsInciXV1dLFs0NixbNTMsWzQzLFsxNSwidiJdLFsxNSwieCJdLFsxNixbMTUsInciXSxbMTUsIngiXV1dXV1dXSxbNTAsIm4iLFs0Nl0sWzM2LFs3LFsxNyxbMTUsImYiXSwiSUQiXSxbMTcsWzE1LCJmIl0sIklXIl1dXV0sWzUwLCJvIixbNDYsInYiXSxbNTIsInciLFsibiJdXSxbNjUsIngiLFsxNSwidyJdLFs0NixbNTMsWzUyLCJ5IixbMTYsWzE1LCJ2Il0sWzE1LCJ4Il1dXSxbMjIsWzE1LCJ5Il0sWzQ2LFszNixbMTUsInkiXV1dXV1dXSxbMzYsWzQ0XV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiT2JqZWN0Il1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiY3JlYXRlQXJndW1lbnRzUXVldWUiXV0sWzUyLCJkIixbMTUsIl9fbW9kdWxlX2d0YWciXV0sWzUyLCJlIixbInJlcXVpcmUiLCJpbnRlcm5hbC5ndGFnQ29uZmlnIl1dLFs1MiwiZiIsWzE1LCJfX21vZHVsZV9ndGFnU2NoZW1hIl1dLFs1MiwiZyIsWyJyZXF1aXJlIiwiZ2V0VHlwZSJdXSxbNTIsImgiLFsicmVxdWlyZSIsImludGVybmFsLmxvYWRHb29nbGVUYWciXV0sWzUyLCJpIixbInJlcXVpcmUiLCJsb2dUb0NvbnNvbGUiXV0sWzUyLCJqIixbInJlcXVpcmUiLCJtYWtlTnVtYmVyIl1dLFs1MiwiayIsWyJyZXF1aXJlIiwibWFrZVN0cmluZyJdXSxbNTIsImwiLFsicmVxdWlyZSIsIm1ha2VUYWJsZU1hcCJdXSxbNTIsInAiLFszMCxbMTcsWzE1LCJhIl0sInRhZ0lkIl0sIiJdXSxbMjIsWzMwLFsyMSxbImciLFsxNSwicCJdXSwic3RyaW5nIl0sWzI0LFsyLFsxNSwicCJdLCJpbmRleE9mIixbNywiLSJdXSwwXV0sWzQ2LFs1MyxbImkiLFswLCJJbnZhbGlkIE1lYXN1cmVtZW50IElEIGZvciB0aGUgR0E0IENvbmZpZ3VyYXRpb24gdGFnOiAiLFsxNSwicCJdXV0sWzIsWzE1LCJhIl0sImd0bU9uRmFpbHVyZSIsWzddXSxbMzZdXV1dLFs1MiwicSIsWzMwLFsxNyxbMTUsImEiXSwiY29uZmlnU2V0dGluZ3NWYXJpYWJsZSJdLFs4XV1dLFs1MiwiciIsWzMwLFsibCIsWzMwLFsxNyxbMTUsImEiXSwiY29uZmlnU2V0dGluZ3NUYWJsZSJdLFs3XV0sInBhcmFtZXRlciIsInBhcmFtZXRlclZhbHVlIl0sWzhdXV0sWyJtIixbMTUsInEiXSxbMTUsInIiXV0sWzUyLCJzIixbMzAsWzE3LFsxNSwiYSJdLCJldmVudFNldHRpbmdzVmFyaWFibGUiXSxbOF1dXSxbNTIsInQiLFszMCxbImwiLFszMCxbMTcsWzE1LCJhIl0sImV2ZW50U2V0dGluZ3NUYWJsZSJdLFs3XV0sInBhcmFtZXRlciIsInBhcmFtZXRlclZhbHVlIl0sWzhdXV0sWyJtIixbMTUsInMiXSxbMTUsInQiXV0sWzUyLCJ1IixbMTUsInEiXV0sWyJtIixbMTUsInUiXSxbMTUsInMiXV0sWzIyLFszMCxbMixbMTUsInUiXSwiaGFzT3duUHJvcGVydHkiLFs3LFsxNyxbMTUsImYiXSwiSlMiXV1dLFsxNyxbMTUsImEiXSwidXNlclByb3BlcnRpZXMiXV0sWzQ2LFs1MyxbNTIsInYiLFszMCxbMTYsWzE1LCJ1Il0sWzE3LFsxNSwiZiJdLCJKUyJdXSxbOF1dXSxbIm0iLFsxNSwidiJdLFszMCxbImwiLFszMCxbMTcsWzE1LCJhIl0sInVzZXJQcm9wZXJ0aWVzIl0sWzddXSwibmFtZSIsInZhbHVlIl0sWzhdXV0sWzQzLFsxNSwidSJdLFsxNyxbMTUsImYiXSwiSlMiXSxbMTUsInYiXV1dXV0sWzIsWzE1LCJkIl0sIkUiLFs3LFsxNSwidSJdLFsxNyxbMTUsImQiXSwiQiJdLFs1MSwiIixbNywidiJdLFszNixbMzksWzIwLCJmYWxzZSIsWzIsWyJrIixbMTUsInYiXV0sInRvTG93ZXJDYXNlIixbN11dXSxmYWxzZSxbMjgsWzI4LFsxNSwidiJdXV1dXV1dXSxbMixbMTUsImQiXSwiRSIsWzcsWzE1LCJ1Il0sWzE3LFsxNSwiZCJdLCJEIl0sWzUxLCIiLFs3LCJ2Il0sWzM2LFsiaiIsWzE1LCJ2Il1dXV1dXSxbImgiLFsxNSwicCJdLFs4LCJmaXJzdFBhcnR5VXJsIixbIm8iLFsxNSwidSJdXV1dLFsiZSIsWzE1LCJwIl0sWzE1LCJ1Il0sWzgsIm5vVGFyZ2V0R3JvdXAiLHRydWVdXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX19sY2wiLFs0NiwiYSJdLFs1MiwiYiIsWyJyZXF1aXJlIiwibWFrZUludGVnZXIiXV0sWzUyLCJjIixbInJlcXVpcmUiLCJtYWtlU3RyaW5nIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25MaW5rQ2xpY2siXV0sWzUyLCJlIixbOF1dLFsyMixbMTcsWzE1LCJhIl0sIndhaXRGb3JUYWdzIl0sWzQ2LFs1MyxbNDMsWzE1LCJlIl0sIndhaXRGb3JUYWdzIix0cnVlXSxbNDMsWzE1LCJlIl0sIndhaXRGb3JUYWdzVGltZW91dCIsWyJiIixbMTcsWzE1LCJhIl0sIndhaXRGb3JUYWdzVGltZW91dCJdXV1dXV0sWzIyLFsxNyxbMTUsImEiXSwiY2hlY2tWYWxpZGF0aW9uIl0sWzQ2LFs1MyxbNDMsWzE1LCJlIl0sImNoZWNrVmFsaWRhdGlvbiIsdHJ1ZV1dXV0sWzUyLCJmIixbMzAsWzE3LFsxNSwiYSJdLCJ1bmlxdWVUcmlnZ2VySWQiXSwiMCJdXSxbImQiLFsxNSwiZSJdLFsxNSwiZiJdXSxbMixbMTUsImEiXSwiZ3RtT25TdWNjZXNzIixbN11dXQogLFs1MCwiX192IixbNDYsImEiXSxbNTIsImIiLFsicmVxdWlyZSIsImNvcHlGcm9tRGF0YUxheWVyIl1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiaW50ZXJuYWwuY3JlYXRlUmVnZXgiXV0sWzUyLCJkIixbInJlcXVpcmUiLCJnZXRUeXBlIl1dLFs1MiwiZSIsWzE3LFsxNSwiYSJdLCJuYW1lIl1dLFsyMixbMzAsWzI4LFsxNSwiZSJdXSxbMjEsWyJkIixbMTUsImUiXV0sInN0cmluZyJdXSxbNDYsWzM2LGZhbHNlXV1dLFs1MiwiZiIsWzIsWzE1LCJlIl0sInJlcGxhY2UiLFs3LFsiYyIsIlxcXFwuIiwiZyJdLCIuIl1dXSxbNTIsImciLFsiYiIsWzE1LCJmIl0sWzMwLFsxNyxbMTUsImEiXSwiZGF0YUxheWVyVmVyc2lvbiJdLDFdXV0sWzM2LFszOSxbMjEsWzE1LCJnIl0sWzQ0XV0sWzE1LCJnIl0sWzE3LFsxNSwiYSJdLCJkZWZhdWx0VmFsdWUiXV1dXQogLFs1MiwiX19tb2R1bGVfZ3RhZ1NjaGVtYSIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MiwiYiIsImFkX3BlcnNvbmFsaXphdGlvbiJdLFs1MiwiYyIsImFkX3N0b3JhZ2UiXSxbNTIsImQiLCJhZF91c2VyX2RhdGEiXSxbNTIsImUiLCJjb25zZW50X3VwZGF0ZWQiXSxbNTIsImYiLCJhcHBfcmVtb3ZlIl0sWzUyLCJnIiwiYXBwX3N0b3JlX3JlZnVuZCJdLFs1MiwiaCIsImFwcF9zdG9yZV9zdWJzY3JpcHRpb25fY2FuY2VsIl0sWzUyLCJpIiwiYXBwX3N0b3JlX3N1YnNjcmlwdGlvbl9jb252ZXJ0Il0sWzUyLCJqIiwiYXBwX3N0b3JlX3N1YnNjcmlwdGlvbl9yZW5ldyJdLFs1MiwiayIsImNvbnZlcnNpb24iXSxbNTIsImwiLCJwdXJjaGFzZSJdLFs1MiwibSIsImZpcnN0X29wZW4iXSxbNTIsIm4iLCJmaXJzdF92aXNpdCJdLFs1MiwibyIsImd0YWcuY29uZmlnIl0sWzUyLCJwIiwiaW5fYXBwX3B1cmNoYXNlIl0sWzUyLCJxIiwicGFnZV92aWV3Il0sWzUyLCJyIiwic2Vzc2lvbl9zdGFydCJdLFs1MiwicyIsInVzZXJfZW5nYWdlbWVudCJdLFs1MiwidCIsImFkc19kYXRhX3JlZGFjdGlvbiJdLFs1MiwidSIsImFsbG93X2FkX3BlcnNvbmFsaXphdGlvbl9zaWduYWxzIl0sWzUyLCJ2IiwiYWxsb3dfY3VzdG9tX3NjcmlwdHMiXSxbNTIsInciLCJhbGxvd19lbmhhbmNlZF9jb252ZXJzaW9ucyJdLFs1MiwieCIsImFsbG93X2dvb2dsZV9zaWduYWxzIl0sWzUyLCJ5IiwiYXVpZCJdLFs1MiwieiIsImF3X3JlbWFya2V0aW5nX29ubHkiXSxbNTIsImFBIiwiZGlzY291bnQiXSxbNTIsImFCIiwiYXdfZmVlZF9jb3VudHJ5Il0sWzUyLCJhQyIsImF3X2ZlZWRfbGFuZ3VhZ2UiXSxbNTIsImFEIiwiaXRlbXMiXSxbNTIsImFFIiwiYXdfbWVyY2hhbnRfaWQiXSxbNTIsImFGIiwiYXdfYmFza2V0X3R5cGUiXSxbNTIsImFHIiwiY2xpZW50X2lkIl0sWzUyLCJhSCIsImNvbnZlcnNpb25fY29va2llX3ByZWZpeCJdLFs1MiwiYUkiLCJjb252ZXJzaW9uX2lkIl0sWzUyLCJhSiIsImNvbnZlcnNpb25fbGlua2VyIl0sWzUyLCJhSyIsImNvbnZlcnNpb25fYXBpIl0sWzUyLCJhTCIsImNvb2tpZV9kZXByZWNhdGlvbiJdLFs1MiwiYU0iLCJjb29raWVfZXhwaXJlcyJdLFs1MiwiYU4iLCJjb29raWVfcHJlZml4Il0sWzUyLCJhTyIsImNvb2tpZV91cGRhdGUiXSxbNTIsImFQIiwiY291bnRyeSJdLFs1MiwiYVEiLCJjdXJyZW5jeSJdLFs1MiwiYVIiLCJjdXN0b21lcl9saWZldGltZV92YWx1ZSJdLFs1MiwiYVMiLCJjdXN0b21lcl90eXBlIl0sWzUyLCJhVCIsImRlYnVnX21vZGUiXSxbNTIsImFVIiwic2hpcHBpbmciXSxbNTIsImFWIiwiZW5nYWdlbWVudF90aW1lX21zZWMiXSxbNTIsImFXIiwiZXN0aW1hdGVkX2RlbGl2ZXJ5X2RhdGUiXSxbNTIsImFYIiwiZXZlbnRfZGV2ZWxvcGVyX2lkX3N0cmluZyJdLFs1MiwiYVkiLCJldmVudF9pZCJdLFs1MiwiYVoiLCJldmVudCJdLFs1MiwiYkEiLCJfJmFlIl0sWzUyLCJiQiIsImV2ZW50X3RpbWVvdXQiXSxbNTIsImJDIiwiZXh0X2NsaWVudF9pZCJdLFs1MiwiYkQiLCJmaXJzdF9wYXJ0eV9jb2xsZWN0aW9uIl0sWzUyLCJiRSIsIm1hdGNoX2lkIl0sWzUyLCJiRiIsImdkcHJfYXBwbGllcyJdLFs1MiwiYkciLCJfZ3RfbWV0YWRhdGEiXSxbNTIsImJIIiwiZ29vZ2xlX2FuYWx5c2lzX3BhcmFtcyJdLFs1MiwiYkkiLCJfZ29vZ2xlX25nIl0sWzUyLCJiSiIsIl9vbm8iXSxbNTIsImJLIiwiZ3BwX3NpZCJdLFs1MiwiYkwiLCJncHBfc3RyaW5nIl0sWzUyLCJiTSIsImdzYV9leHBlcmltZW50X2lkIl0sWzUyLCJiTiIsImd0YWdfZXZlbnRfZmVhdHVyZV91c2FnZSJdLFs1MiwiYk8iLCJpZnJhbWVfc3RhdGUiXSxbNTIsImJQIiwiaWdub3JlX3JlZmVycmVyIl0sWzUyLCJiUSIsImlzX3Bhc3N0aHJvdWdoIl0sWzUyLCJiUiIsImxhbmd1YWdlIl0sWzUyLCJiUyIsIm1lcmNoYW50X2ZlZWRfbGFiZWwiXSxbNTIsImJUIiwibWVyY2hhbnRfZmVlZF9sYW5ndWFnZSJdLFs1MiwiYlUiLCJtZXJjaGFudF9pZCJdLFs1MiwiYlYiLCJuZXdfY3VzdG9tZXIiXSxbNTIsImJXIiwicGFnZV9ob3N0bmFtZSJdLFs1MiwiYlgiLCJwYWdlX3BhdGgiXSxbNTIsImJZIiwicGFnZV9yZWZlcnJlciJdLFs1MiwiYloiLCJwYWdlX3RpdGxlIl0sWzUyLCJjQSIsIl9wbGF0aW51bV9yZXF1ZXN0X3N0YXR1cyJdLFs1MiwiY0IiLCJxdWFudGl0eSJdLFs1MiwiY0MiLCJyZXN0cmljdGVkX2RhdGFfcHJvY2Vzc2luZyJdLFs1MiwiY0QiLCJzY3JlZW5fcmVzb2x1dGlvbiJdLFs1MiwiY0UiLCJzZW5kX3BhZ2VfdmlldyJdLFs1MiwiY0YiLCJzZXJ2ZXJfY29udGFpbmVyXzNwX2VucmljaG1lbnQiXSxbNTIsImNHIiwic2VydmVyX2NvbnRhaW5lcl91cmwiXSxbNTIsImNIIiwic2Vzc2lvbl9kdXJhdGlvbiJdLFs1MiwiY0kiLCJzZXNzaW9uX2VuZ2FnZWRfdGltZSJdLFs1MiwiY0oiLCJzZXNzaW9uX2lkIl0sWzUyLCJjSyIsIl9zaGFyZWRfdXNlcl9pZCJdLFs1MiwiY0wiLCJkZWxpdmVyeV9wb3N0YWxfY29kZSJdLFs1MiwiY00iLCJ0ZXN0b25seSJdLFs1MiwiY04iLCJ0b3Btb3N0X3VybCJdLFs1MiwiY08iLCJ0cmFuc2FjdGlvbl9pZCJdLFs1MiwiY1AiLCJ0cmFuc2FjdGlvbl9pZF9zb3VyY2UiXSxbNTIsImNRIiwidHJhbnNwb3J0X3VybCJdLFs1MiwiY1IiLCJ1cGRhdGUiXSxbNTIsImNTIiwiX3VzZXJfYWdlbnRfYXJjaGl0ZWN0dXJlIl0sWzUyLCJjVCIsIl91c2VyX2FnZW50X2JpdG5lc3MiXSxbNTIsImNVIiwiX3VzZXJfYWdlbnRfZnVsbF92ZXJzaW9uX2xpc3QiXSxbNTIsImNWIiwiX3VzZXJfYWdlbnRfbW9iaWxlIl0sWzUyLCJjVyIsIl91c2VyX2FnZW50X21vZGVsIl0sWzUyLCJjWCIsIl91c2VyX2FnZW50X3BsYXRmb3JtIl0sWzUyLCJjWSIsIl91c2VyX2FnZW50X3BsYXRmb3JtX3ZlcnNpb24iXSxbNTIsImNaIiwiX3VzZXJfYWdlbnRfd293NjQiXSxbNTIsImRBIiwidXNlcl9kYXRhIl0sWzUyLCJkQiIsInVzZXJfZGF0YV9hdXRvX2xhdGVuY3kiXSxbNTIsImRDIiwidXNlcl9kYXRhX2F1dG9fbWV0YSJdLFs1MiwiZEQiLCJ1c2VyX2RhdGFfYXV0b19tdWx0aSJdLFs1MiwiZEUiLCJ1c2VyX2RhdGFfYXV0b19zZWxlY3RvcnMiXSxbNTIsImRGIiwidXNlcl9kYXRhX2F1dG9fc3RhdHVzIl0sWzUyLCJkRyIsInVzZXJfZGF0YV9tb2RlIl0sWzUyLCJkSCIsInVzZXJfaWQiXSxbNTIsImRJIiwidXNlcl9wcm9wZXJ0aWVzIl0sWzUyLCJkSiIsInVzX3ByaXZhY3lfc3RyaW5nIl0sWzUyLCJkSyIsInZhbHVlIl0sWzUyLCJkTCIsIl9mcG1fcGFyYW1ldGVycyJdLFs1MiwiZE0iLCJfaG9zdF9uYW1lIl0sWzUyLCJkTiIsIl9pbl9wYWdlX2NvbW1hbmQiXSxbNTIsImRPIiwiX21lYXN1cmVtZW50X3R5cGUiXSxbNTIsImRQIiwibm9uX3BlcnNvbmFsaXplZF9hZHMiXSxbNTIsImRRIiwiY29udmVyc2lvbl9sYWJlbCJdLFs1MiwiZFIiLCJwYWdlX2xvY2F0aW9uIl0sWzUyLCJkUyIsIl9leHRyYWN0ZWRfZGF0YSJdLFs1MiwiZFQiLCJnbG9iYWxfZGV2ZWxvcGVyX2lkX3N0cmluZyJdLFs1MiwiZFUiLCJ0Y19wcml2YWN5X3N0cmluZyJdLFszNixbOCwiQSIsWzE1LCJiIl0sIkIiLFsxNSwiYyJdLCJDIixbMTUsImQiXSwiRiIsWzE1LCJlIl0sIkkiLFsxNSwiZiJdLCJKIixbMTUsImciXSwiSyIsWzE1LCJoIl0sIkwiLFsxNSwiaSJdLCJNIixbMTUsImoiXSwiTyIsWzE1LCJrIl0sIkFBIixbMTUsImwiXSwiQUYiLFsxNSwibSJdLCJBRyIsWzE1LCJuIl0sIkFIIixbMTUsIm8iXSwiQUoiLFsxNSwicCJdLCJBSyIsWzE1LCJxIl0sIkFNIixbMTUsInIiXSwiQVEiLFsxNSwicyJdLCJCQyIsWzE1LCJ0Il0sIkJKIixbMTUsInUiXSwiQksiLFsxNSwidiJdLCJCTSIsWzE1LCJ3Il0sIkJOIixbMTUsIngiXSwiQlQiLFsxNSwieSJdLCJCWCIsWzE1LCJ6Il0sIkJZIixbMTUsImFBIl0sIkJaIixbMTUsImFCIl0sIkNBIixbMTUsImFDIl0sIkNCIixbMTUsImFEIl0sIkNDIixbMTUsImFFIl0sIkNEIixbMTUsImFGIl0sIkNMIixbMTUsImFHIl0sIkNRIixbMTUsImFIIl0sIkNSIixbMTUsImFJIl0sIktHIixbMTUsImRRIl0sIkNTIixbMTUsImFKIl0sIkNVIixbMTUsImFLIl0sIkNXIixbMTUsImFMIl0sIkNZIixbMTUsImFNIl0sIkRDIixbMTUsImFOIl0sIkREIixbMTUsImFPIl0sIkRFIixbMTUsImFQIl0sIkRGIixbMTUsImFRIl0sIkRHIixbMTUsImFSIl0sIkRIIixbMTUsImFTIl0sIkROIixbMTUsImFUIl0sIkVBIixbMTUsImFVIl0sIkVDIixbMTUsImFWIl0sIkVHIixbMTUsImFXIl0sIkVKIixbMTUsImFYIl0sIkVLIixbMTUsImFZIl0sIkVOIixbMTUsImFaIl0sIkVPIixbMTUsImJBIl0sIkVRIixbMTUsImJCIl0sIktJIixbMTUsImRTIl0sIkVVIixbMTUsImJDIl0sIkVXIixbMTUsImJEIl0sIkZFIixbMTUsImJFIl0sIkZPIixbMTUsImJGIl0sIkZQIixbMTUsImJHIl0sIktKIixbMTUsImRUIl0sIkZUIixbMTUsImJIIl0sIkZVIixbMTUsImJJIl0sIkZWIixbMTUsImJKIl0sIkZZIixbMTUsImJLIl0sIkZaIixbMTUsImJMIl0sIkdCIixbMTUsImJNIl0sIkdDIixbMTUsImJOIl0sIkdFIixbMTUsImJPIl0sIkdGIixbMTUsImJQIl0sIkdLIixbMTUsImJRIl0sIkdNIixbMTUsImJSIl0sIkdUIixbMTUsImJTIl0sIkdVIixbMTUsImJUIl0sIkdWIixbMTUsImJVIl0sIkdaIixbMTUsImJWIl0sIkhDIixbMTUsImJXIl0sIktIIixbMTUsImRSIl0sIkhEIixbMTUsImJYIl0sIkhFIixbMTUsImJZIl0sIkhGIixbMTUsImJaIl0sIkhOIixbMTUsImNBIl0sIkhQIixbMTUsImNCIl0sIkhUIixbMTUsImNDIl0sIkhYIixbMTUsImNEIl0sIklBIixbMTUsImNFIl0sIklDIixbMTUsImNGIl0sIklEIixbMTUsImNHIl0sIklGIixbMTUsImNIIl0sIklIIixbMTUsImNJIl0sIklJIixbMTUsImNKIl0sIklLIixbMTUsImNLIl0sIklMIixbMTUsImNMIl0sIktLIixbMTUsImRVIl0sIklQIixbMTUsImNNIl0sIklSIixbMTUsImNOIl0sIklVIixbMTUsImNPIl0sIklWIixbMTUsImNQIl0sIklXIixbMTUsImNRIl0sIklZIixbMTUsImNSIl0sIkpCIixbMTUsImNTIl0sIkpDIixbMTUsImNUIl0sIkpEIixbMTUsImNVIl0sIkpFIixbMTUsImNWIl0sIkpGIixbMTUsImNXIl0sIkpHIixbMTUsImNYIl0sIkpIIixbMTUsImNZIl0sIkpJIixbMTUsImNaIl0sIkpKIixbMTUsImRBIl0sIkpLIixbMTUsImRCIl0sIkpMIixbMTUsImRDIl0sIkpNIixbMTUsImREIl0sIkpOIixbMTUsImRFIl0sIkpPIixbMTUsImRGIl0sIkpQIixbMTUsImRHIl0sIkpSIixbMTUsImRIIl0sIkpTIixbMTUsImRJIl0sIkpVIixbMTUsImRKIl0sIkpWIixbMTUsImRLIl0sIkpYIixbMTUsImRMIl0sIkpZIixbMTUsImRNIl0sIkpaIixbMTUsImROIl0sIktDIixbMTUsImRPIl0sIktEIixbMTUsImRQIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9tZXRhZGF0YVNjaGVtYSIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MiwiYiIsImFib3J0X3dpdGhvdXRfZmFpbCJdLFs1MiwiYyIsImFjY2VwdF9ieV9kZWZhdWx0Il0sWzUyLCJkIiwiYWxsb3dfYWRfcGVyc29uYWxpemF0aW9uIl0sWzUyLCJlIiwiY29uc2VudF9zdGF0ZSJdLFs1MiwiZiIsImNvbnNlbnRfdXBkYXRlZCJdLFs1MiwiZyIsImNvbnZlcnNpb25fbGlua2VyX2VuYWJsZWQiXSxbNTIsImgiLCJjb252ZXJzaW9uX21hcmtpbmdfY2FsbGVkIl0sWzUyLCJpIiwiY29va2llX29wdGlvbnMiXSxbNTIsImoiLCJkZWR1cGVfaWQiXSxbNTIsImsiLCJlbV9ldmVudCJdLFs1MiwibCIsImV2ZW50X3Byb3ZlbmFuY2UiXSxbNTIsIm0iLCJldmVudF9zb3VyY2UiXSxbNTIsIm4iLCJldmVudF9zdGFydF90aW1lc3RhbXBfbXMiXSxbNTIsIm8iLCJldmVudF91c2FnZSJdLFs1MiwicCIsImV4dHJhX3RhZ19leHBlcmltZW50X2lkcyJdLFs1MiwicSIsImZvcm1fZXZlbnRfY2FuY2VsZWQiXSxbNTIsInIiLCJnYTRfY29sbGVjdGlvbl9zdWJkb21haW4iXSxbNTIsInMiLCJndG1fZXh0cmFjdGVkX2RhdGEiXSxbNTIsInQiLCJoYW5kbGVfaW50ZXJuYWxseSJdLFs1MiwidSIsImhhc19nYV9jb252ZXJzaW9uX2NvbnNlbnRzIl0sWzUyLCJ2IiwiaGl0X3R5cGUiXSxbNTIsInciLCJoaXRfdHlwZV9vdmVycmlkZSJdLFs1MiwieCIsImlnbm9yZV9kdXBlX2NvbmZpZyJdLFs1MiwieSIsImlzX2NvbnZlcnNpb24iXSxbNTIsInoiLCJpc19leHRlcm5hbF9ldmVudCJdLFs1MiwiYUEiLCJpc19maXJzdF92aXNpdCJdLFs1MiwiYUIiLCJpc19maXJzdF92aXNpdF9jb252ZXJzaW9uIl0sWzUyLCJhQyIsImlzX2ZwbV9lbmNyeXB0aW9uIl0sWzUyLCJhRCIsImlzX2ZwbV9zcGxpdCJdLFs1MiwiYUUiLCJpc19nY3BfYnJvd3NlciJdLFs1MiwiYUYiLCJpc19nb29nbGVfbWVhc3VyZW1lbnRfYWxsb3dlZCJdLFs1MiwiYUciLCJpc19zZXJ2ZXJfc2lkZV9kZXN0aW5hdGlvbiJdLFs1MiwiYUgiLCJpc19zZXNzaW9uX3N0YXJ0Il0sWzUyLCJhSSIsImlzX3Nlc3Npb25fc3RhcnRfY29udmVyc2lvbiJdLFs1MiwiYUoiLCJpc19zZ3RtX2dhX2Fkc19jb252ZXJzaW9uX3N0dWR5X2NvbnRyb2xfZ3JvdXAiXSxbNTIsImFLIiwiaXNfc2d0bV9wcmVoaXQiXSxbNTIsImFMIiwiaXNfc3BsaXRfY29udmVyc2lvbiJdLFs1MiwiYU0iLCJpc19zeW4iXSxbNTIsImFOIiwiaXNfdGVzdF9ldmVudCJdLFs1MiwiYU8iLCJwcmVoaXRfZm9yX3JldHJ5Il0sWzUyLCJhUCIsInJlZGFjdF9hZHNfZGF0YSJdLFs1MiwiYVEiLCJyZWRhY3RfY2xpY2tfaWRzIl0sWzUyLCJhUiIsInNlbmRfY2NtX3BhcmFsbGVsX3BpbmciXSxbNTIsImFTIiwic2VuZF91c2VyX2RhdGFfaGl0Il0sWzUyLCJhVCIsInNwZWN1bGF0aXZlIl0sWzUyLCJhVSIsInN5bl9vcl9tb2QiXSxbNTIsImFWIiwidHJhbnNpZW50X2Vjc2lkIl0sWzUyLCJhVyIsInVzZXJfZGF0YSJdLFs1MiwiYVgiLCJ1c2VyX2RhdGFfZnJvbV9hdXRvbWF0aWMiXSxbNTIsImFZIiwidXNlcl9kYXRhX2Zyb21fYXV0b21hdGljX2dldHRlciJdLFs1MiwiYVoiLCJ1c2VyX2RhdGFfZnJvbV9jb2RlIl0sWzUyLCJiQSIsInVzZXJfZGF0YV9mcm9tX21hbnVhbCJdLFszNixbOCwiQSIsWzE1LCJiIl0sIkIiLFsxNSwiYyJdLCJGIixbMTUsImQiXSwiTSIsWzE1LCJlIl0sIk4iLFsxNSwiZiJdLCJPIixbMTUsImciXSwiUCIsWzE1LCJoIl0sIlEiLFsxNSwiaSJdLCJTIixbMTUsImoiXSwiVCIsWzE1LCJrIl0sIloiLFsxNSwibCJdLCJBQSIsWzE1LCJtIl0sIkFCIixbMTUsIm4iXSwiQUMiLFsxNSwibyJdLCJBRCIsWzE1LCJwIl0sIkFKIixbMTUsInEiXSwiQUsiLFsxNSwiciJdLCJBTiIsWzE1LCJzIl0sIkFPIixbMTUsInQiXSwiQVAiLFsxNSwidSJdLCJBUSIsWzE1LCJ2Il0sIkFSIixbMTUsInciXSwiQVMiLFsxNSwieCJdLCJBViIsWzE1LCJ5Il0sIkFZIixbMTUsInoiXSwiQVoiLFsxNSwiYUEiXSwiQkEiLFsxNSwiYUIiXSwiQkMiLFsxNSwiYUMiXSwiQkQiLFsxNSwiYUQiXSwiQkUiLFsxNSwiYUUiXSwiQkYiLFsxNSwiYUYiXSwiQksiLFsxNSwiYUciXSwiQkwiLFsxNSwiYUgiXSwiQk0iLFsxNSwiYUkiXSwiQk4iLFsxNSwiYUoiXSwiQk8iLFsxNSwiYUsiXSwiQlEiLFsxNSwiYUwiXSwiQlIiLFsxNSwiYU0iXSwiQlMiLFsxNSwiYU4iXSwiQlkiLFsxNSwiYU8iXSwiQ0IiLFsxNSwiYVAiXSwiQ0MiLFsxNSwiYVEiXSwiQ0UiLFsxNSwiYVIiXSwiQ04iLFsxNSwiYVMiXSwiQ1EiLFsxNSwiYVQiXSwiQ1QiLFsxNSwiYVUiXSwiQ1UiLFsxNSwiYVYiXSwiQ1ciLFsxNSwiYVciXSwiQ1giLFsxNSwiYVgiXSwiQ1kiLFsxNSwiYVkiXSwiQ1oiLFsxNSwiYVoiXSwiREEiLFsxNSwiYkEiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2ZlYXR1cmVGbGFncyIsWzEzLFs0MSwiJDAiXSxbMywiJDAiLFs1MSwiIixbN10sWzUwLCJhIixbNDZdLFs1MiwiYiIsNDVdLFs1MiwiYyIsNDZdLFs1MiwiZCIsNDddLFs1MiwiZSIsMTc0XSxbNTIsImYiLDI3Nl0sWzM2LFs4LCJGIixbMTUsImIiXSwiRyIsWzE1LCJjIl0sIkgiLFsxNSwiZCJdLCJWIixbMTUsImUiXSwiQUQiLFsxNSwiZiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfZmVhdHVyZXMiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTIsImIiLDQyNV0sWzUyLCJjIiw0MzVdLFs1MiwiZCIsNDg4XSxbNTIsImUiLDQ4OV0sWzUyLCJmIiw0OThdLFs1MiwiZyIsNTAzXSxbNTIsImgiLDUwNF0sWzUyLCJpIiw1MDZdLFs1MiwiaiIsNTIzXSxbNTIsImsiLDUzMl0sWzUyLCJsIiw1NTNdLFs1MiwibSIsNTY4XSxbNTIsIm4iLDU3N10sWzUyLCJvIiw1ODFdLFs1MiwicCIsNTgzXSxbNTIsInEiLDU5Ml0sWzUyLCJyIiw1OTRdLFs1MiwicyIsNTk5XSxbMzYsWzgsIkFWIixbMTUsImsiXSwiQUQiLFsxNSwiZCJdLCJDSSIsWzE1LCJxIl0sIkJWIixbMTUsIm4iXSwiQk8iLFsxNSwibSJdLCJDSyIsWzE1LCJyIl0sIkNQIixbMTUsInMiXSwiQU0iLFsxNSwiZyJdLCJCWiIsWzE1LCJvIl0sIkFUIixbMTUsImoiXSwiQUUiLFsxNSwiZSJdLCJBTiIsWzE1LCJoIl0sIkwiLFsxNSwiYyJdLCJCQyIsWzE1LCJsIl0sIkFPIixbMTUsImkiXSwiQ0IiLFsxNSwicCJdLCJBSSIsWzE1LCJmIl0sIkkiLFsxNSwiYiJdXV1dLFszNixbImEiXV1dXSxbIiQwIl1dXQogLFs1MiwiX19tb2R1bGVfb2JqZWN0IixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJlIixbNDYsImYiLCJnIl0sWzUyLCJoIixbMzAsWzE1LCJnIl0sWzM5LFsiYyIsWzE1LCJmIl1dLFs3XSxbOF1dXV0sWzU1LCJpIixbMTUsImYiXSxbNDYsWzUzLFs1MiwiaiIsWzE2LFsxNSwiZiJdLFsxNSwiaSJdXV0sWzIyLFsiYyIsWzE1LCJqIl1dLFs0NixbNTMsWzIyLFsyOCxbImMiLFsxNixbMTUsImgiXSxbMTUsImkiXV1dXSxbNDYsWzUzLFs0MyxbMTUsImgiXSxbMTUsImkiXSxbN11dXV1dLFs0MyxbMTUsImgiXSxbMTUsImkiXSxbImUiLFsxNSwiaiJdLFsxNixbMTUsImgiXSxbMTUsImkiXV1dXV1dLFs0NixbMjIsWyJkIixbMTUsImoiXV0sWzQ2LFs1MyxbMjIsWzI4LFsiZCIsWzE2LFsxNSwiaCJdLFsxNSwiaSJdXV1dLFs0NixbNTMsWzQzLFsxNSwiaCJdLFsxNSwiaSJdLFs4XV1dXV0sWzQzLFsxNSwiaCJdLFsxNSwiaSJdLFsiZSIsWzE1LCJqIl0sWzE2LFsxNSwiaCJdLFsxNSwiaSJdXV1dXV0sWzQ2LFs1MyxbNDMsWzE1LCJoIl0sWzE1LCJpIl0sWzE1LCJqIl1dXV1dXV1dXV0sWzM2LFsxNSwiaCJdXV0sWzUyLCJiIixbInJlcXVpcmUiLCJnZXRUeXBlIl1dLFs1MiwiYyIsWzUxLCIiLFs3LCJmIl0sWzM2LFsxMixbImIiLFsxNSwiZiJdXSwiYXJyYXkiXV1dXSxbNTIsImQiLFs1MSwiIixbNywiZiJdLFszNixbMTIsWyJiIixbMTUsImYiXV0sIm9iamVjdCJdXV1dLFszNixbOCwiQSIsWzE1LCJlIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9nb2xkRXZlbnRVc2FnZUlkIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUyLCJiIiwxXSxbNTIsImMiLDJdLFs1MiwiZCIsNV0sWzUyLCJlIiw2XSxbNTIsImYiLDddLFs1MiwiZyIsOF0sWzUyLCJoIiw5XSxbNTIsImkiLDExXSxbNTIsImoiLDE1XSxbNTIsImsiLDE2XSxbNTIsImwiLDIwXSxbNTIsIm0iLDIxXSxbNTIsIm4iLDIzXSxbNTIsIm8iLDI0XSxbNTIsInAiLDI3XSxbNTIsInEiLDQwXSxbNTIsInIiLDQxXSxbMzYsWzgsIk8iLFsxNSwiaiJdLCJXIixbMTUsIm4iXSwiUCIsWzE1LCJrIl0sIlgiLFsxNSwibyJdLCJLIixbMTUsImkiXSwiQSIsWzE1LCJiIl0sIlQiLFsxNSwibCJdLCJFIixbMTUsImQiXSwiRiIsWzE1LCJlIl0sIkIiLFsxNSwiYyJdLCJIIixbMTUsImciXSwiQU4iLFsxNSwicSJdLCJJIixbMTUsImgiXSwiRyIsWzE1LCJmIl0sIlUiLFsxNSwibSJdLCJBTyIsWzE1LCJyIl0sIkFBIixbMTUsInAiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KICxbNTIsIl9fbW9kdWxlX2xlZ2FjeVVybHMiLFsxMyxbNDEsIiQwIl0sWzMsIiQwIixbNTEsIiIsWzddLFs1MCwiYSIsWzQ2XSxbNTAsImgiLFs0NiwicCJdLFs1MiwicSIsWzIsWzE1LCJwIl0sImluZGV4T2YiLFs3LCIjIl1dXSxbMzYsWzM5LFsyMyxbMTUsInEiXSwwXSxbMTUsInAiXSxbMixbMTUsInAiXSwic3Vic3RyaW5nIixbNywwLFsxNSwicSJdXV1dXV0sWzUwLCJpIixbNDYsInAiXSxbNTIsInEiLFsxNyxbImUiLFsxNSwicCJdXSwicHJvdG9jb2wiXV0sWzM2LFszOSxbMTUsInEiXSxbMixbMTUsInEiXSwicmVwbGFjZSIsWzcsIjoiLCIiXV0sIiJdXV0sWzUwLCJqIixbNDYsInAiLCJxIl0sWzQxLCJyIl0sWzMsInIiLFsxNyxbImUiLFsxNSwicCJdXSwiaG9zdG5hbWUiXV0sWzIyLFsyOCxbMTUsInIiXV0sWzQ2LFszNiwiIl1dXSxbNTIsInMiLFsiYiIsIjpbMC05XSsiXV0sWzMsInIiLFsyLFsxNSwiciJdLCJyZXBsYWNlIixbNyxbMTUsInMiXSwiIl1dXSxbMjIsWzE1LCJxIl0sWzQ2LFs1MyxbNTIsInQiLFsiYiIsIl53d3dcXGQqXFwuIl1dLFs1MiwidSIsWzIsWzE1LCJyIl0sIm1hdGNoIixbNyxbMTUsInQiXV1dXSxbMjIsWzEsWzE1LCJ1Il0sWzE2LFsxNSwidSJdLDBdXSxbNDYsWzMsInIiLFsyLFsxNSwiciJdLCJzdWJzdHJpbmciLFs3LFsxNyxbMTYsWzE1LCJ1Il0sMF0sImxlbmd0aCJdXV1dXV1dXV0sWzM2LFsxNSwiciJdXV0sWzUwLCJrIixbNDYsInAiXSxbNTIsInEiLFsiZSIsWzE1LCJwIl1dXSxbNDEsInIiXSxbMywiciIsWyJmIixbMTcsWzE1LCJxIl0sInBvcnQiXV1dLFsyMixbMjgsWzE1LCJyIl1dLFs0NixbNTMsWzIyLFsyMCxbMTcsWzE1LCJxIl0sInByb3RvY29sIl0sImh0dHA6Il0sWzQ2LFs1MyxbMywiciIsODBdXV0sWzQ2LFsyMixbMjAsWzE3LFsxNSwicSJdLCJwcm90b2NvbCJdLCJodHRwczoiXSxbNDYsWzUzLFszLCJyIiw0NDNdXV0sWzQ2LFs1MyxbMywiciIsIiJdXV1dXV1dXV0sWzM2LFsiZyIsWzE1LCJyIl1dXV0sWzUwLCJsIixbNDYsInAiLCJxIl0sWzUyLCJyIixbImUiLFsxNSwicCJdXV0sWzQxLCJzIl0sWzMsInMiLFszOSxbMjAsWzIsWzE3LFsxNSwiciJdLCJwYXRobmFtZSJdLCJpbmRleE9mIixbNywiLyJdXSwwXSxbMTcsWzE1LCJyIl0sInBhdGhuYW1lIl0sWzAsIi8iLFsxNyxbMTUsInIiXSwicGF0aE5hbWUiXV1dXSxbMjIsWzIwLFsiZCIsWzE1LCJxIl1dLCJhcnJheSJdLFs0NixbNTMsWzUyLCJ0IixbMixbMTUsInMiXSwic3BsaXQiLFs3LCIvIl1dXSxbMjIsWzE5LFsyLFsxNSwicSJdLCJpbmRleE9mIixbNyxbMTYsWzE1LCJ0Il0sWzM3LFsxNyxbMTUsInQiXSwibGVuZ3RoIl0sMV1dXV0sMF0sWzQ2LFs1MyxbNDMsWzE1LCJ0Il0sWzM3LFsxNyxbMTUsInQiXSwibGVuZ3RoIl0sMV0sIiJdLFszLCJzIixbMixbMTUsInQiXSwiam9pbiIsWzcsIi8iXV1dXV1dXV1dLFszNixbMTUsInMiXV1dLFs1MCwibSIsWzQ2LCJwIl0sWzUyLCJxIixbMTcsWyJlIixbMTUsInAiXV0sInBhdGhuYW1lIl1dLFs1MiwiciIsWzIsWzE1LCJxIl0sInNwbGl0IixbNywiLiJdXV0sWzQxLCJzIl0sWzMsInMiLFszOSxbMTgsWzE3LFsxNSwiciJdLCJsZW5ndGgiXSwxXSxbMTYsWzE1LCJyIl0sWzM3LFsxNyxbMTUsInIiXSwibGVuZ3RoIl0sMV1dLCIiXV0sWzM2LFsxNixbMixbMTUsInMiXSwic3BsaXQiLFs3LCIvIl1dLDBdXV0sWzUwLCJuIixbNDYsInAiXSxbNTIsInEiLFsxNyxbImUiLFsxNSwicCJdXSwiaGFzaCJdXSxbMzYsWzIsWzE1LCJxIl0sInJlcGxhY2UiLFs3LCIjIiwiIl1dXV0sWzUwLCJvIixbNDYsInAiLCJxIl0sWzUwLCJzIixbNDYsInQiXSxbMzYsWyJjIixbMixbMTUsInQiXSwicmVwbGFjZSIsWzcsWyJiIiwiXFwrIiwiZyJdLCIgIl1dXV1dLFs1MiwiciIsWzIsWzE3LFsiZSIsWzE1LCJwIl1dLCJzZWFyY2giXSwicmVwbGFjZSIsWzcsIj8iLCIiXV1dLFs2NSwidCIsWzIsWzE1LCJyIl0sInNwbGl0IixbNywiJiJdXSxbNDYsWzUzLFs1MiwidSIsWzIsWzE1LCJ0Il0sInNwbGl0IixbNywiPSJdXV0sWzIyLFsyMSxbInMiLFsxNixbMTUsInUiXSwwXV0sWzE1LCJxIl1dLFs0NixbNl1dXSxbMzYsWyJzIixbMixbMixbMTUsInUiXSwic2xpY2UiLFs3LDFdXSwiam9pbiIsWzcsIj0iXV1dXV1dXSxbMzZdXSxbNTIsImIiLFsicmVxdWlyZSIsImludGVybmFsLmNyZWF0ZVJlZ2V4Il1dLFs1MiwiYyIsWyJyZXF1aXJlIiwiZGVjb2RlVXJpQ29tcG9uZW50Il1dLFs1MiwiZCIsWyJyZXF1aXJlIiwiZ2V0VHlwZSJdXSxbNTIsImUiLFsicmVxdWlyZSIsImludGVybmFsLmxlZ2FjeVBhcnNlVXJsIl1dLFs1MiwiZiIsWyJyZXF1aXJlIiwibWFrZU51bWJlciJdXSxbNTIsImciLFsicmVxdWlyZSIsIm1ha2VTdHJpbmciXV0sWzM2LFs4LCJGIixbMTUsIm0iXSwiSCIsWzE1LCJvIl0sIkciLFsxNSwibiJdLCJDIixbMTUsImoiXSwiRSIsWzE1LCJsIl0sIkQiLFsxNSwiayJdLCJCIixbMTUsImkiXSwiQSIsWzE1LCJoIl1dXV0sWzM2LFsiYSJdXV1dLFsiJDAiXV1dCiAsWzUyLCJfX21vZHVsZV9ndGFnIixbMTMsWzQxLCIkMCJdLFszLCIkMCIsWzUxLCIiLFs3XSxbNTAsImEiLFs0Nl0sWzUwLCJuIixbNDYsInIiLCJzIiwidCJdLFs2NSwidSIsWzE1LCJzIl0sWzQ2LFs1MyxbMjIsWzIsWzE1LCJyIl0sImhhc093blByb3BlcnR5IixbNyxbMTUsInUiXV1dLFs0NixbNTMsWzQzLFsxNSwiciJdLFsxNSwidSJdLFsidCIsWzE2LFsxNSwiciJdLFsxNSwidSJdXV1dXV1dXV1dXSxbNTAsIm8iLFs0NiwiciIsInMiXSxbIm4iLFsxNSwiciJdLFsxNSwicyJdLFs1MSwiIixbNywidCJdLFszNixbMzksWzIwLCJmYWxzZSIsWzIsWyJlIixbMTUsInQiXV0sInRvTG93ZXJDYXNlIixbN11dXSxmYWxzZSxbMjgsWzI4LFsxNSwidCJdXV1dXV1dXSxbNTAsInAiLFs0NiwiciIsInMiXSxbIm4iLFsxNSwiciJdLFsxNSwicyJdLFsxNSwiZCJdXV0sWzUwLCJxIixbNDYsInIiLCJzIl0sWzUyLCJ0IixbImgiXV0sWzIyLFsxLFsxNSwidCJdLFsxOCxbMixbMTUsInQiXSwiaW5kZXhPZiIsWzcsWzE1LCJzIl1dXSxbMjcsMV1dXSxbNDYsWzUzLFs0MyxbMTUsInIiXSxbMTcsWzE1LCJpIl0sIkFPIl0sdHJ1ZV1dXV1dLFs1MiwiYiIsWyJyZXF1aXJlIiwiT2JqZWN0Il1dLFs1MiwiYyIsWzE1LCJfX21vZHVsZV9ndGFnU2NoZW1hIl1dLFs1MiwiZCIsWyJyZXF1aXJlIiwibWFrZU51bWJlciJdXSxbNTIsImUiLFsicmVxdWlyZSIsIm1ha2VTdHJpbmciXV0sWzUyLCJmIixbInJlcXVpcmUiLCJpbnRlcm5hbC5pc0ZlYXR1cmVFbmFibGVkIl1dLFs1MiwiZyIsWzE1LCJfX21vZHVsZV9mZWF0dXJlRmxhZ3MiXV0sWzUyLCJoIixbInJlcXVpcmUiLCJpbnRlcm5hbC5nZXREZXN0aW5hdGlvbklkcyJdXSxbNTIsImkiLFsxNSwiX19tb2R1bGVfbWV0YWRhdGFTY2hlbWEiXV0sWzUyLCJqIixbMixbMTUsImIiXSwiZnJlZXplIixbNyxbNyxbMTcsWzE1LCJjIl0sIkJKIl0sWzE3LFsxNSwiYyJdLCJCTiJdLFsxNyxbMTUsImMiXSwiREQiXSxbMTcsWzE1LCJjIl0sIkdGIl0sWzE3LFsxNSwiYyJdLCJJWSJdLFsxNyxbMTUsImMiXSwiRVciXSxbMTcsWzE1LCJjIl0sIklBIl0sWzE3LFsxNSwiYyJdLCJJQyJdXV1dXSxbNTIsImsiLFsyLFsxNSwiYiJdLCJmcmVlemUiLFs3LFs3LFsxNyxbMTUsImMiXSwiQkoiXSxbMTcsWzE1LCJjIl0sIkJOIl0sWzE3LFsxNSwiYyJdLCJERCJdLFsxNyxbMTUsImMiXSwiR0YiXSxbMTcsWzE1LCJjIl0sIklZIl0sWzE3LFsxNSwiYyJdLCJFVyJdLFsxNyxbMTUsImMiXSwiSUEiXSxbMTcsWzE1LCJjIl0sIklDIl1dXV1dLFs1MiwibCIsWzIsWzE1LCJiIl0sImZyZWV6ZSIsWzcsWzcsWzE3LFsxNSwiYyJdLCJDWSJdLFsxNyxbMTUsImMiXSwiRVEiXSxbMTcsWzE1LCJjIl0sIklGIl0sWzE3LFsxNSwiYyJdLCJJSCJdLFsxNyxbMTUsImMiXSwiRUMiXV1dXV0sWzUyLCJtIixbMixbMTUsImIiXSwiZnJlZXplIixbNyxbNyxbMTcsWzE1LCJjIl0sIkNZIl0sWzE3LFsxNSwiYyJdLCJFUSJdLFsxNyxbMTUsImMiXSwiSUYiXSxbMTcsWzE1LCJjIl0sIklIIl0sWzE3LFsxNSwiYyJdLCJFQyJdXV1dXSxbMzYsWzgsIkIiLFsxNSwiayJdLCJEIixbMTUsIm0iXSwiQSIsWzE1LCJqIl0sIkMiLFsxNSwibCJdLCJGIixbMTUsIm8iXSwiRyIsWzE1LCJwIl0sIkUiLFsxNSwibiJdLCJIIixbMTUsInEiXV1dXSxbMzYsWyJhIl1dXV0sWyIkMCJdXV0KIApdCiwiZW50aXRpZXMiOnsKIl9fYWV2Ijp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CiwKIl9fZSI6eyIyIjp0cnVlLCI1Ijp0cnVlLCI2Ijp0cnVlfQosCiJfX2dhYXdlIjp7IjUiOnRydWUsIjYiOnRydWV9CiwKIl9fZ29vZ3RhZyI6eyIxIjoxMCwiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX19sY2wiOnsiNSI6dHJ1ZSwiNiI6dHJ1ZX0KLAoiX192Ijp7IjIiOnRydWUsIjUiOnRydWUsIjYiOnRydWV9CgoKfQosImJsb2IiOnsiMSI6IjEwIiwiMTAiOiJHVE0tS1FHSDRIM1IiLCIxNCI6IjY3bTAiLCIxNSI6IjAiLCIxNiI6IkNoRUk4SU9jMHdZUWdPbXNrdnVseEtxUkFSSWRBTDJQWVpZWCsrd2dReFVQVUtOK09BejhYckNrNEk3QmZsUC82bWthQXJrTSIsIjE5IjoiZGF0YUxheWVyIiwiMjAiOiIiLCIyMSI6Ind3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbSIsIjIyIjoiZXlJd0lqb2lUazhpTENJeElqb2lUazh0TURNaUxDSXlJanBtWVd4elpTd2lNeUk2SW1kdmIyZHNaUzV1YnlJc0lqUWlPaUp5WldkcGIyNHhJaXdpTlNJNlptRnNjMlVzSWpZaU9uUnlkV1VzSWpjaU9pSmhaRjl6ZEc5eVlXZGxmR0Z1WVd4NWRHbGpjMTl6ZEc5eVlXZGxmR0ZrWDNWelpYSmZaR0YwWVh4aFpGOXdaWEp6YjI1aGJHbDZZWFJwYjI0aUxDSTVJanAwY25WbGZRIiwiMjMiOiJnb29nbGUudGFnbWFuYWdlci5kZWJ1Z3VpMi5xdWV1ZSIsIjI0IjoidGFnYXNzaXN0YW50Lmdvb2dsZS5jb20iLCIyNyI6MC4wMDUsIjMiOiJ3d3cuZ29vZ2xldGFnbWFuYWdlci5jb20iLCIzMCI6Ik5PIiwiMzEiOiJOTy0wMyIsIjMyIjpmYWxzZSwiMzMiOiJyZWdpb24xIiwiMzYiOiJodHRwczovL2Fkc2VydmljZS5nb29nbGUuY29tL3BhZ2VhZC9yZWdjbGsiLCIzNyI6Il9fVEFHR1lfSU5TVEFMTEVEIiwiMzgiOiJjY3QuZ29vZ2xlIiwiMzkiOiJnb29nVGFnZ3lSZWZlcnJlciIsIjQwIjoiaHR0cHM6Ly9jY3QuZ29vZ2xlL3RhZ2d5L2FnZW50LmpzIiwiNDEiOiJnb29nbGUudGFnbWFuYWdlci50YS5wcm9kcXVldWUiLCI0MiI6MC4wMSwiNDMiOiJ7XCJrZXlzXCI6W3tcImhwa2VQdWJsaWNLZXlcIjp7XCJwYXJhbXNcIjp7XCJhZWFkXCI6XCJBRVNfMTI4X0dDTVwiLFwia2RmXCI6XCJIS0RGX1NIQTI1NlwiLFwia2VtXCI6XCJESEtFTV9QMjU2X0hLREZfU0hBMjU2XCJ9LFwicHVibGljS2V5XCI6XCJCS2x5VFgyanlvYnBRQ21mVXlCYmhCeVFIazlaMkhkTjVsSHhwQkF0SUtHTWNtencwZ0UrZWJsWUNtbTFHYTdiWWVUZHlkb0ptZTZJcGFTb0NVMElVVW89XCIsXCJ2ZXJzaW9uXCI6MH0sXCJpZFwiOlwiZGVlNGIzNTEtYjBmNS00YzI3LWE4YzgtZWQ2NjA0NzdhNDRjXCJ9LHtcImhwa2VQdWJsaWNLZXlcIjp7XCJwYXJhbXNcIjp7XCJhZWFkXCI6XCJBRVNfMTI4X0dDTVwiLFwia2RmXCI6XCJIS0RGX1NIQTI1NlwiLFwia2VtXCI6XCJESEtFTV9QMjU2X0hLREZfU0hBMjU2XCJ9LFwicHVibGljS2V5XCI6XCJCRHRZQlJuUEJTMWc2bWVYTzFyUTVhNTJCNUZibmg3REM1anF2MDJpeEpzc24wazFKOXJjSENhVmMvenpSc25zSEJ6U29GS3M2SjhwSDdDY25RUDNFanc9XCIsXCJ2ZXJzaW9uXCI6MH0sXCJpZFwiOlwiYWQxOTNiMmEtNGE5MC00YzFhLWI3OWUtZGUzN2FjMzkxYmQyXCJ9LHtcImhwa2VQdWJsaWNLZXlcIjp7XCJwYXJhbXNcIjp7XCJhZWFkXCI6XCJBRVNfMTI4X0dDTVwiLFwia2RmXCI6XCJIS0RGX1NIQTI1NlwiLFwia2VtXCI6XCJESEtFTV9QMjU2X0hLREZfU0hBMjU2XCJ9LFwicHVibGljS2V5XCI6XCJCTVowVU11ZEFlNFBvYWZTVHBVeFB0SWtmQmVDTWJGQlh2dHlSWXZITENTUS9FVXZFSnNtc1Y0dDZOQi9CRVZwcUwzSHY4Z05TUWg3SytTVW9vZjI1YW89XCIsXCJ2ZXJzaW9uXCI6MH0sXCJpZFwiOlwiNDhjNGVmZTEtZmRkMC00MzZhLWFjOGYtOTIzZjExOTE4Nzg3XCJ9LHtcImhwa2VQdWJsaWNLZXlcIjp7XCJwYXJhbXNcIjp7XCJhZWFkXCI6XCJBRVNfMTI4X0dDTVwiLFwia2RmXCI6XCJIS0RGX1NIQTI1NlwiLFwia2VtXCI6XCJESEtFTV9QMjU2X0hLREZfU0hBMjU2XCJ9LFwicHVibGljS2V5XCI6XCJCRmZsdlVsK3hwSGFGVkNJWU8xS1BMeGt2K0FqZGw0ZDhydnJYaEk2emZwbmJCRHFJNTFERGt0SEhiM1pXSVM1N29EaDBLaXI5QXVDT29uMk1PeE5WOVk9XCIsXCJ2ZXJzaW9uXCI6MH0sXCJpZFwiOlwiNDMyYmMyNzAtOTllYS00MjIwLWI1NjItZTJjNWFlNzdkNGQ5XCJ9LHtcImhwa2VQdWJsaWNLZXlcIjp7XCJwYXJhbXNcIjp7XCJhZWFkXCI6XCJBRVNfMTI4X0dDTVwiLFwia2RmXCI6XCJIS0RGX1NIQTI1NlwiLFwia2VtXCI6XCJESEtFTV9QMjU2X0hLREZfU0hBMjU2XCJ9LFwicHVibGljS2V5XCI6XCJCQVE4VGt5NERMV09KYkhPSGJWWURiUVpFZkVlbGI0RlRCOEVZTVFlUlFpTDFtMUx0QWQwcjN6ZXlMamdaMy9XMjRSOFZmYjIyelkyaXg2Vy9UZkNqakE9XCIsXCJ2ZXJzaW9uXCI6MH0sXCJpZFwiOlwiMDUwYTZlMTEtMzhhYi00ZjgwLTg5Y2ItN2IzMTliOTcwNGMwXCJ9XX0iLCI0NCI6IjExODg5NzkyMH4xMTg4OTc5MzAiLCI0NiI6eyIxIjoiMTAwMCIsIjEwIjoiNjZ1MCIsIjExIjoiNjZnMCIsIjE0IjoiMTAwMCIsIjE2IjoiVVMtQ09+VVMtQ1R+VVMtTVR+VVMtTkV+VVMtTkh+VVMtVFh+VVMtTU5+VVMtTkp+VVMtTUR+VVMtT1J+VVMtREUiLCIxNyI6IlVTLUNPflVTLUNUflVTLU1UflVTLU5FflVTLU5IflVTLVRYflVTLU1OflVTLU5KflVTLU1EflVTLU9SflVTLURFIiwiMiI6IjkiLCIyMCI6IjUwMDAiLCIyMSI6IjUwMDAiLCIyMiI6IjQuNC4wIiwiMjMiOiIwLjAuMCIsIjI1IjoiMSIsIjI2IjoiNDAwMCIsIjI3IjoiMTAwIiwiMyI6IjUiLCI0IjoiYWRfc3RvcmFnZXxhbmFseXRpY3Nfc3RvcmFnZXxhZF91c2VyX2RhdGF8YWRfcGVyc29uYWxpemF0aW9uIiwiNDQiOiIxNTAwMCIsIjQ4IjoiMzAwMDAiLCI1IjoiYWRfc3RvcmFnZXxhbmFseXRpY3Nfc3RvcmFnZXxhZF91c2VyX2RhdGEiLCI2IjoiMSIsIjYxIjoiMTAwMCIsIjYyIjoiQTZPTkhSWTcvYnZCcm8rSU1aZC9hNkxOam43U1N2OTk5U2tOL2hGQUU5TDZ2TXIzNGROZ2ZkU1ZkWW12NFUrTkhaZzFzeGQzOFJ0Y2lScFJVdElSUGdRQUFBQ0NleUp2Y21sbmFXNGlPaUpvZEhSd2N6b3ZMM2QzZHk1bmIyOW5iR1YwWVdkdFlXNWhaMlZ5TG1OdmJUbzBORE1pTENKbVpXRjBkWEpsSWpvaVUyaGhjbVZrVjI5eWEyVnlSWGgwWlc1a1pXUk1hV1psZEdsdFpTSXNJbVY0Y0dseWVTSTZNVGMzTmpjeU9UWXdNQ3dpYVhOVWFHbHlaRkJoY25SNUlqcDBjblZsZlE9PSIsIjYzIjoiMTAwMCIsIjY2IjoiMTAwIiwiNyI6IjEwIn0sIjQ4Ijp0cnVlLCI1IjoiR1RNLUtRR0g0SDNSIiwiNTUiOltdLCI1NiI6W3siMSI6NDAzLCIzIjowLjUsIjQiOjExNTkzODQ2NSwiNSI6MTE1OTM4NDY2LCI2IjowLCI3IjoyfSx7IjEiOjQwNCwiMyI6MC41LCI0IjoxMTU5Mzg0NjgsIjUiOjExNTkzODQ2OSwiNiI6MCwiNyI6MX0seyIxIjo2MDIsIjMiOjAuMDEsIjQiOjEyMDEyNDQ1NSwiNSI6MTIwMTI0NDUzLCI2IjoxMjAxMjQ0NTQsIjciOjN9LHsiMSI6NTY5LCIyIjp0cnVlfSx7IjEiOjQ3NSwiMiI6dHJ1ZX0seyIxIjo1MDIsIjIiOnRydWV9LHsiMSI6NTc3LCIyIjp0cnVlfSx7IjEiOjU2OCwiMyI6MC4wMSwiNCI6MTE5NzkxNzQ5LCI1IjoxMTk3OTE3NDgsIjYiOjAsIjciOjF9LHsiMSI6NDkwLCIyIjp0cnVlfSx7IjEiOjQ5MSwiMyI6MC4wMSwiNCI6MTE4MDEyMDA3LCI1IjoxMTgwMTIwMDgsIjYiOjExODAxMjAwOSwiNyI6MX0seyIxIjo0ODAsIjIiOnRydWV9LHsiMSI6NTk0LCIzIjowLjAxLCI0IjoxMTk3OTM5NzQsIjUiOjExOTc5Mzk3MiwiNiI6MTE5NzkzOTczLCI3IjoxfSx7IjEiOjU5OSwiMiI6dHJ1ZX0seyIxIjo1ODAsIjMiOjAuMSwiNCI6MTE5NTI3MDIwLCI1IjoxMTk1MjcwMTksIjYiOjAsIjciOjF9LHsiMSI6NTIzLCIyIjp0cnVlfSx7IjEiOjU4MSwiMyI6MC4wMSwiNCI6MTE5OTQ4ODU0LCI1IjoxMTk5NDg4NTIsIjYiOjExOTk0ODg1MywiNyI6M30seyIxIjo1NTUsIjMiOjAuMDEsIjQiOjExOTI1OTYwNiwiNSI6MTE5MjU5NjA1LCI2IjowLCI3IjoyfSx7IjEiOjUwNCwiMiI6dHJ1ZX0seyIxIjo0NjIsIjMiOjAuMDUsIjQiOjExODgwNjUyNCwiNSI6MTE4ODA2NTI1LCI2IjoxMTg4MDY1MjYsIjciOjF9LHsiMSI6NDEzLCIyIjp0cnVlfSx7IjEiOjU5MywiMiI6dHJ1ZX0seyIxIjo1MDYsIjIiOnRydWV9LHsiMSI6NTAwLCIyIjp0cnVlfSx7IjEiOjU2MSwiMyI6MC4wMDEsIjQiOjExOTQwNDcwMywiNSI6MTE5NDA0NzAyLCI2IjowLCI3IjoxfSx7IjEiOjQ4MSwiMyI6MC4wMDEsIjQiOjExOTQwNDcwMSwiNSI6MTE5NDA0NzAwLCI2IjowLCI3IjoxfSx7IjEiOjQ1MCwiMyI6MC4wMSwiNCI6MTE3MjI3NzE0LCI1IjoxMTcyMjc3MTUsIjYiOjExNzIyNzcxNiwiNyI6M30seyIxIjo1ODMsIjMiOjAuNSwiNCI6MTE5ODk2ODAzLCI1IjoxMTk4OTY4MDIsIjYiOjAsIjciOjF9LHsiMSI6NDU4LCIyIjp0cnVlfSx7IjEiOjU4MiwiMyI6MC4wMSwiNCI6MTE5MzgxNjY0LCI1IjoxMTkzODE2NjIsIjYiOjExOTM4MTY2MywiNyI6MX0seyIxIjo1NzAsIjIiOnRydWV9LHsiMSI6NDk4LCIzIjowLjIsIjQiOjExNTYxNjk4NSwiNSI6MTE1NjE2OTg2LCI2IjowLCI3IjoxfSx7IjEiOjU5NSwiMiI6dHJ1ZX0seyIxIjo1ODksIjMiOjAuMDEsIjQiOjEyMDA4NDIxNSwiNSI6MTIwMDg0MjE0LCI2IjowLCI3IjoxfSx7IjEiOjQ5NSwiMyI6MC4wNSwiNCI6MTE4MTMxODEwLCI1IjoxMTgxMzE4MDgsIjYiOjExODEzMTgwOSwiNyI6M30seyIxIjo1ODcsIjMiOjAuMSwiNCI6MTE5NzMyMTcxLCI1IjoxMTk3MzIxNzAsIjYiOjAsIjciOjN9LHsiMSI6NTg0LCIyIjp0cnVlfSx7IjEiOjU2NCwiMyI6MC4wMDAxLCI0IjoxMTkyMDUzMTcsIjUiOjExOTIwNTMxNSwiNiI6MTE5MjA1MzE2LCI3IjoxfSx7IjEiOjU1NywiMiI6dHJ1ZX0seyIxIjo0MjcsIjMiOjAuMSwiNCI6MTE5NzI0MzIyLCI1IjoxMTk3MjQzMjAsIjYiOjExOTcyNDMyMSwiNyI6Mn0seyIxIjo1NzYsIjMiOjAuMDEsIjQiOjExOTMxNzgxMCwiNSI6MTE5MzE3ODExLCI2IjoxMTkzMTgxNzcsIjciOjN9LHsiMSI6NTczLCIyIjp0cnVlfSx7IjEiOjQ5OSwiMiI6dHJ1ZX0seyIxIjo1MTYsIjMiOjAuMSwiNCI6MTE4Mzk1MzM1LCI1IjoxMTgzOTUzMzMsIjYiOjExODM5NTMzNCwiNyI6MX0seyIxIjo1MjQsIjIiOnRydWV9XSwiNTkiOlsiR1RNLUtRR0g0SDNSIl0sIjYiOiIyMzE3MDk5NTQiLCI2MiI6ZmFsc2UsIjYzIjowLjAwNX0KLCJwZXJtaXNzaW9ucyI6ewoiX19hZXYiOnsicmVhZF9kYXRhX2xheWVyIjp7ImFsbG93ZWRLZXlzIjoic3BlY2lmaWMiLCJrZXlQYXR0ZXJucyI6WyJndG0iXX0sInJlYWRfZXZlbnRfZGF0YSI6eyJldmVudERhdGFBY2Nlc3MiOiJhbnkifSwicmVhZF9kb21fZWxlbWVudF90ZXh0Ijp7fSwiZ2V0X2VsZW1lbnRfYXR0cmlidXRlcyI6eyJhbGxvd2VkQXR0cmlidXRlcyI6ImFueSJ9LCJnZXRfdXJsIjp7InVybFBhcnRzIjoiYW55In0sImFjY2Vzc19kb21fZWxlbWVudF9wcm9wZXJ0aWVzIjp7InByb3BlcnRpZXMiOlt7InByb3BlcnR5IjoidGFnTmFtZSIsInJlYWQiOnRydWV9XX0sImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIjp7fSwiYWNjZXNzX2VsZW1lbnRfdmFsdWVzIjp7ImFsbG93UmVhZCI6W3RydWVdLCJhbGxvd1dyaXRlIjpbZmFsc2VdfX0KLAoiX19lIjp7InJlYWRfZXZlbnRfZGF0YSI6eyJldmVudERhdGFBY2Nlc3MiOiJzcGVjaWZpYyIsImtleVBhdHRlcm5zIjpbImV2ZW50Il19fQosCiJfX2dhYXdlIjp7InJlYWRfZXZlbnRfZGF0YSI6eyJldmVudERhdGFBY2Nlc3MiOiJzcGVjaWZpYyIsImtleVBhdHRlcm5zIjpbImV2ZW50TW9kZWwiXX0sInJlYWRfZGF0YV9sYXllciI6eyJhbGxvd2VkS2V5cyI6InNwZWNpZmljIiwia2V5UGF0dGVybnMiOlsiZXZlbnRNb2RlbCIsImVjb21tZXJjZSJdfSwibG9nZ2luZyI6eyJlbnZpcm9ubWVudHMiOiJkZWJ1ZyJ9fQosCiJfX2dvb2d0YWciOnsibG9nZ2luZyI6eyJlbnZpcm9ubWVudHMiOiJkZWJ1ZyJ9LCJhY2Nlc3NfZ2xvYmFscyI6eyJrZXlzIjpbeyJrZXkiOiJndGFnIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImV4ZWN1dGUiOnRydWV9LHsia2V5IjoiZGF0YUxheWVyIiwicmVhZCI6dHJ1ZSwid3JpdGUiOnRydWUsImV4ZWN1dGUiOmZhbHNlfV19LCJjb25maWd1cmVfZ29vZ2xlX3RhZ3MiOnsiYWxsb3dlZFRhZ0lkcyI6ImFueSJ9LCJsb2FkX2dvb2dsZV90YWdzIjp7ImFsbG93ZWRUYWdJZHMiOiJhbnkiLCJhbGxvd0ZpcnN0UGFydHlVcmxzIjp0cnVlLCJhbGxvd2VkRmlyc3RQYXJ0eVVybHMiOiJhbnkifX0KLAoiX19sY2wiOnsiZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzIjp7ImFsbG93V2FpdEZvclRhZ3MiOnRydWV9fQosCiJfX3YiOnsicmVhZF9kYXRhX2xheWVyIjp7ImFsbG93ZWRLZXlzIjoiYW55In19CgoKfQoKCgosInNlY3VyaXR5X2dyb3VwcyI6ewoiZ29vZ2xlIjpbCiJfX2FldiIKLAoiX19lIgosCiJfX2dhYXdlIgosCiJfX2dvb2d0YWciCiwKIl9fdiIKCl0KCgp9CgoKCgoKfTsKCgoKCnZhciBrLGFhPXR5cGVvZiBPYmplY3QuY3JlYXRlPT0iZnVuY3Rpb24iP09iamVjdC5jcmVhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24oKXt9O2IucHJvdG90eXBlPWE7cmV0dXJuIG5ldyBifSxiYT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9PSJmdW5jdGlvbiI/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfSxjYT1mdW5jdGlvbihhKXtmb3IodmFyIGI9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdLGM9MDtjPGIubGVuZ3RoOysrYyl7dmFyIGQ9YltjXTtpZihkJiZkLk1hdGg9PU1hdGgpcmV0dXJuIGR9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTsKfSxoYT1jYSh0aGlzKSxpYT10eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbCgieCIpPT09InN5bWJvbCIsa2E9e30sbGE9e30sbmE9ZnVuY3Rpb24oYSxiLGMpe2lmKCFjfHxhIT1udWxsKXt2YXIgZD1sYVtiXTtpZihkPT1udWxsKXJldHVybiBhW2JdO3ZhciBlPWFbZF07cmV0dXJuIGUhPT12b2lkIDA/ZTphW2JdfX0sb2E9ZnVuY3Rpb24oYSxiLGMpe2lmKGIpYTp7dmFyIGQ9YS5zcGxpdCgiLiIpLGU9ZC5sZW5ndGg9PT0xLGY9ZFswXSxnOyFlJiZmIGluIGthP2c9a2E6Zz1oYTtmb3IodmFyIGg9MDtoPGQubGVuZ3RoLTE7aCsrKXt2YXIgbD1kW2hdO2lmKCEobCBpbiBnKSlicmVhayBhO2c9Z1tsXX12YXIgbj1kW2QubGVuZ3RoLTFdLHA9aWEmJmM9PT0iZXM2Ij9nW25dOm51bGwscT1iKHApO2lmKHEhPW51bGwpaWYoZSliYShrYSxuLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6cX0pO2Vsc2UgaWYocSE9PXApe2lmKGxhW25dPT09dm9pZCAwKXt2YXIgcj0KTWF0aC5yYW5kb20oKSoxRTk+Pj4wO2xhW25dPWlhP2hhLlN5bWJvbChuKToiJGpzY3AkIityKyIkIitufWJhKGcsbGFbbl0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpxfSl9fX0scGE7aWYoaWEmJnR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y9PSJmdW5jdGlvbiIpcGE9T2JqZWN0LnNldFByb3RvdHlwZU9mO2Vsc2V7dmFyIHJhO2E6e3ZhciB0YT17YTohMH0sdWE9e307dHJ5e3VhLl9fcHJvdG9fXz10YTtyYT11YS5hO2JyZWFrIGF9Y2F0Y2goYSl7fXJhPSExfXBhPXJhP2Z1bmN0aW9uKGEsYil7YS5fX3Byb3RvX189YjtpZihhLl9fcHJvdG9fXyE9PWIpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGV4dGVuc2libGUiKTtyZXR1cm4gYX06bnVsbH0KdmFyIHZhPXBhLHdhPWZ1bmN0aW9uKGEsYil7YS5wcm90b3R5cGU9YWEoYi5wcm90b3R5cGUpO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7aWYodmEpdmEoYSxiKTtlbHNlIGZvcih2YXIgYyBpbiBiKWlmKGMhPSJwcm90b3R5cGUiKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGIsYyk7ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYyxkKX1lbHNlIGFbY109YltjXTthLkZ0PWIucHJvdG90eXBlfSx4YT1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX0sbT1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgU3ltYm9sIT0idW5kZWZpbmVkIiYmU3ltYm9sLml0ZXJhdG9yJiZhW1N5bWJvbC5pdGVyYXRvcl07aWYoYilyZXR1cm4gYi5jYWxsKGEpO2lmKHR5cGVvZiBhLmxlbmd0aD09Im51bWJlciIpcmV0dXJue25leHQ6eGEoYSl9Owp0aHJvdyBFcnJvcihTdHJpbmcoYSkrIiBpcyBub3QgYW4gaXRlcmFibGUgb3IgQXJyYXlMaWtlIik7fSx5YT1mdW5jdGlvbihhKXtmb3IodmFyIGIsYz1bXTshKGI9YS5uZXh0KCkpLmRvbmU7KWMucHVzaChiLnZhbHVlKTtyZXR1cm4gY30sdz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEFycmF5P2E6eWEobShhKSl9LEFhPWZ1bmN0aW9uKGEpe3JldHVybiB6YShhLGEpfSx6YT1mdW5jdGlvbihhLGIpe2EucmF3PWI7T2JqZWN0LmZyZWV6ZSYmKE9iamVjdC5mcmVlemUoYSksT2JqZWN0LmZyZWV6ZShiKSk7cmV0dXJuIGF9LEJhPWlhJiZ0eXBlb2YgbmEoT2JqZWN0LCJhc3NpZ24iKT09ImZ1bmN0aW9uIj9uYShPYmplY3QsImFzc2lnbiIpOmZ1bmN0aW9uKGEsYil7aWYoYT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJObyBudWxsaXNoIGFyZyIpO2E9T2JqZWN0KGEpO2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTsKaWYoZClmb3IodmFyIGUgaW4gZClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxlKSYmKGFbZV09ZFtlXSl9cmV0dXJuIGF9O29hKCJPYmplY3QuYXNzaWduIixmdW5jdGlvbihhKXtyZXR1cm4gYXx8QmF9LCJlczYiKTt2YXIgQ2E9ZnVuY3Rpb24oYSl7aWYoIShhIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgIithKyIgaXMgbm90IGFuIG9iamVjdCIpO30sRGE9ZnVuY3Rpb24oKXt0aGlzLmZhPSExO3RoaXMuUj1udWxsO3RoaXMuamE9dm9pZCAwO3RoaXMuSD0xO3RoaXMuTj10aGlzLlo9MDt0aGlzLkxhPXRoaXMuSz1udWxsfSxFYT1mdW5jdGlvbihhKXtpZihhLmZhKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTthLmZhPSEwfTtEYS5wcm90b3R5cGUueWE9ZnVuY3Rpb24oYSl7dGhpcy5qYT1hfTsKdmFyIEdhPWZ1bmN0aW9uKGEsYil7YS5LPXthbzpiLGlzRXhjZXB0aW9uOiEwfTthLkg9YS5afHxhLk59O0RhLnByb3RvdHlwZS5nZXROZXh0QWRkcmVzc0pzYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkh9O0RhLnByb3RvdHlwZS5nZXRZaWVsZFJlc3VsdEpzYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmphfTtEYS5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGEpe3RoaXMuSz17cmV0dXJuOmF9O3RoaXMuSD10aGlzLk59O0RhLnByb3RvdHlwZVsicmV0dXJuIl09RGEucHJvdG90eXBlLnJldHVybjtEYS5wcm90b3R5cGUuQWo9ZnVuY3Rpb24oYSl7dGhpcy5LPXtuZDphfTt0aGlzLkg9dGhpcy5OfTtEYS5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPURhLnByb3RvdHlwZS5BajtEYS5wcm90b3R5cGUuYWM9ZnVuY3Rpb24oYSxiKXt0aGlzLkg9YjtyZXR1cm57dmFsdWU6YX19O0RhLnByb3RvdHlwZS55aWVsZD1EYS5wcm90b3R5cGUuYWM7CkRhLnByb3RvdHlwZS54cz1mdW5jdGlvbihhLGIpe3ZhciBjPW0oYSksZD1jLm5leHQoKTtDYShkKTtpZihkLmRvbmUpdGhpcy5qYT1kLnZhbHVlLHRoaXMuSD1iO2Vsc2UgcmV0dXJuIHRoaXMuUj1jLHRoaXMuYWMoZC52YWx1ZSxiKX07RGEucHJvdG90eXBlLnlpZWxkQWxsPURhLnByb3RvdHlwZS54cztEYS5wcm90b3R5cGUubmQ9ZnVuY3Rpb24oYSl7dGhpcy5IPWF9O0RhLnByb3RvdHlwZS5qdW1wVG89RGEucHJvdG90eXBlLm5kO0RhLnByb3RvdHlwZS5Eaj1mdW5jdGlvbigpe3RoaXMuSD0wfTtEYS5wcm90b3R5cGUuanVtcFRvRW5kPURhLnByb3RvdHlwZS5EajtEYS5wcm90b3R5cGUuTmo9ZnVuY3Rpb24oYSxiKXt0aGlzLlo9YTtiIT12b2lkIDAmJih0aGlzLk49Yil9O0RhLnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9RGEucHJvdG90eXBlLk5qO0RhLnByb3RvdHlwZS52Zz1mdW5jdGlvbihhKXt0aGlzLlo9MDt0aGlzLk49YXx8MH07CkRhLnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9RGEucHJvdG90eXBlLnZnO0RhLnByb3RvdHlwZS5Jaj1mdW5jdGlvbihhLGIpe3RoaXMuSD1hO3RoaXMuWj1ifHwwfTtEYS5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1EYS5wcm90b3R5cGUuSWo7RGEucHJvdG90eXBlLlBoPWZ1bmN0aW9uKGEpe3RoaXMuWj1hfHwwO3ZhciBiPXRoaXMuSy5hbzt0aGlzLks9bnVsbDtyZXR1cm4gYn07RGEucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1EYS5wcm90b3R5cGUuUGg7RGEucHJvdG90eXBlLmtkPWZ1bmN0aW9uKGEsYixjKXtjP3RoaXMuTGFbY109dGhpcy5LOnRoaXMuTGE9W3RoaXMuS107dGhpcy5aPWF8fDA7dGhpcy5OPWJ8fDB9O0RhLnByb3RvdHlwZS5lbnRlckZpbmFsbHlCbG9jaz1EYS5wcm90b3R5cGUua2Q7CkRhLnByb3RvdHlwZS5oZT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuTGEuc3BsaWNlKGJ8fDApWzBdLGQ9dGhpcy5LPXRoaXMuS3x8YztkP2QuaXNFeGNlcHRpb24/dGhpcy5IPXRoaXMuWnx8dGhpcy5OOmQubmQhPXZvaWQgMCYmdGhpcy5OPGQubmQ/KHRoaXMuSD1kLm5kLHRoaXMuSz1udWxsKTp0aGlzLkg9dGhpcy5OOnRoaXMuSD1hfTtEYS5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9RGEucHJvdG90eXBlLmhlO0RhLnByb3RvdHlwZS5mZT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEhhKGEpfTtEYS5wcm90b3R5cGUuZm9ySW49RGEucHJvdG90eXBlLmZlO3ZhciBIYT1mdW5jdGlvbihhKXt0aGlzLks9YTt0aGlzLkg9W107Zm9yKHZhciBiIGluIGEpdGhpcy5ILnB1c2goYik7dGhpcy5ILnJldmVyc2UoKX07SGEucHJvdG90eXBlLmhvPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLkgubGVuZ3RoPjA7KXt2YXIgYT10aGlzLkgucG9wKCk7aWYoYSBpbiB0aGlzLkspcmV0dXJuIGF9cmV0dXJuIG51bGx9OwpIYS5wcm90b3R5cGUuZ2V0TmV4dD1IYS5wcm90b3R5cGUuaG87CnZhciBJYT1mdW5jdGlvbihhKXt0aGlzLkg9bmV3IERhO3RoaXMuSz1hfSxMYT1mdW5jdGlvbihhLGIpe0VhKGEuSCk7dmFyIGM9YS5ILlI7aWYoYylyZXR1cm4gSmEoYSwicmV0dXJuImluIGM/Y1sicmV0dXJuIl06ZnVuY3Rpb24oZCl7cmV0dXJue3ZhbHVlOmQsZG9uZTohMH19LGIsYS5ILnJldHVybik7YS5ILnJldHVybihiKTtyZXR1cm4gS2EoYSl9LEphPWZ1bmN0aW9uKGEsYixjLGQpe3RyeXt2YXIgZT1iLmNhbGwoYS5ILlIsYyk7Q2EoZSk7aWYoIWUuZG9uZSlyZXR1cm4gYS5ILmZhPSExLGU7dmFyIGY9ZS52YWx1ZX1jYXRjaChnKXtyZXR1cm4gYS5ILlI9bnVsbCxHYShhLkgsZyksS2EoYSl9YS5ILlI9bnVsbDtkLmNhbGwoYS5ILGYpO3JldHVybiBLYShhKX0sS2E9ZnVuY3Rpb24oYSl7Zm9yKDthLkguSDspdHJ5e3ZhciBiPWEuSyhhLkgpO2lmKGIpcmV0dXJuIGEuSC5mYT0hMSx7dmFsdWU6Yi52YWx1ZSxkb25lOiExfX1jYXRjaChkKXthLkguamE9dm9pZCAwLEdhKGEuSCwKZCl9YS5ILmZhPSExO2lmKGEuSC5LKXt2YXIgYz1hLkguSzthLkguSz1udWxsO2lmKGMuaXNFeGNlcHRpb24pdGhyb3cgYy5hbztyZXR1cm57dmFsdWU6Yy5yZXR1cm4sZG9uZTohMH19cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX0sTWE9ZnVuY3Rpb24oYSl7dGhpcy5uZXh0PWZ1bmN0aW9uKGIpe3ZhciBjO0VhKGEuSCk7YS5ILlI/Yz1KYShhLGEuSC5SLm5leHQsYixhLkgueWEpOihhLkgueWEoYiksYz1LYShhKSk7cmV0dXJuIGN9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYil7dmFyIGM7RWEoYS5IKTthLkguUj9jPUphKGEsYS5ILlJbInRocm93Il0sYixhLkgueWEpOihHYShhLkgsYiksYz1LYShhKSk7cmV0dXJuIGN9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGIpe3JldHVybiBMYShhLGIpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319LE5hPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IE1hKG5ldyBJYShiKSk7dmEmJmEucHJvdG90eXBlJiZ2YShjLAphLnByb3RvdHlwZSk7cmV0dXJuIGN9LE9hPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPU51bWJlcih0aGlzKSxiPVtdLGM9YTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWJbYy1hXT1hcmd1bWVudHNbY107cmV0dXJuIGJ9LFFhPWZ1bmN0aW9uKGEpe3JldHVybiBhfTsvKgoKIENvcHlyaWdodCBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuCiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAoqLwp2YXIgUmE9dGhpc3x8c2VsZixTYT1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5GdD1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EubnY9ZnVuY3Rpb24oZCxlLGYpe2Zvcih2YXIgZz1BcnJheShhcmd1bWVudHMubGVuZ3RoLTIpLGg9MjtoPGFyZ3VtZW50cy5sZW5ndGg7aCsrKWdbaC0yXT1hcmd1bWVudHNbaF07cmV0dXJuIGIucHJvdG90eXBlW2VdLmFwcGx5KGQsZyl9fTt2YXIgVGE9ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9YTt0aGlzLmRhdGE9Yn07dmFyIFVhPWZ1bmN0aW9uKCl7dGhpcy5tYXA9e307dGhpcy5IPXt9fTtVYS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm1hcFsiZHVzdC4iK2FdfTtVYS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dmFyIGM9ImR1c3QuIithO3RoaXMuSC5oYXNPd25Qcm9wZXJ0eShjKXx8KHRoaXMubWFwW2NdPWIpfTtVYS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eSgiZHVzdC4iK2EpfTtVYS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGEpe3ZhciBiPSJkdXN0LiIrYTt0aGlzLkguaGFzT3duUHJvcGVydHkoYil8fGRlbGV0ZSB0aGlzLm1hcFtiXX07CnZhciBWYT1mdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ7Zm9yKGQgaW4gYS5tYXApaWYoYS5tYXAuaGFzT3duUHJvcGVydHkoZCkpe3ZhciBlPWQuc3Vic3RyaW5nKDUpO3N3aXRjaChiKXtjYXNlIDE6Yy5wdXNoKGUpO2JyZWFrO2Nhc2UgMjpjLnB1c2goYS5tYXBbZF0pO2JyZWFrO2Nhc2UgMzpjLnB1c2goW2UsYS5tYXBbZF1dKX19cmV0dXJuIGN9O1VhLnByb3RvdHlwZS5GYT1mdW5jdGlvbigpe3JldHVybiBWYSh0aGlzLDEpfTtVYS5wcm90b3R5cGUuaGM9ZnVuY3Rpb24oKXtyZXR1cm4gVmEodGhpcywyKX07VWEucHJvdG90eXBlLmZjPWZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMsMyl9O3ZhciBXYT1mdW5jdGlvbigpe307V2EucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7fTt2YXIgWGE9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXt9O3RoaXMucHJlZml4PSJndG0uIn07az1YYS5wcm90b3R5cGU7ay5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLnZhbHVlW3RoaXMucHJlZml4K1N0cmluZyhhKV09Yn07ay5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudmFsdWVbdGhpcy5wcmVmaXgrU3RyaW5nKGEpXX07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudmFsdWUuaGFzT3duUHJvcGVydHkodGhpcy5wcmVmaXgrU3RyaW5nKGEpKX07ay5kZWxldGU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5wcmVmaXgrU3RyaW5nKGEpO3JldHVybiB0aGlzLnZhbHVlLmhhc093blByb3BlcnR5KGIpPyhkZWxldGUgdGhpcy52YWx1ZVtiXSwhMCk6ITF9O2suY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlPXt9fTsKay52YWx1ZXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3JldHVybiBmdW5jdGlvbiBjKCl7dmFyIGQsZSxmO3JldHVybiBOYShjLGZ1bmN0aW9uKGcpe3N3aXRjaChnLkgpe2Nhc2UgMTpnLnZnKDIpLGU9Zy5mZShhLnZhbHVlKTtjYXNlIDQ6aWYoKGQ9ZS5obygpKT09bnVsbCl7Zy5uZCgyKTticmVha31pZighYS52YWx1ZS5oYXNPd25Qcm9wZXJ0eShkKSl7Zy5uZCg0KTticmVha31mPVFhO3JldHVybiBnLmFjKGEudmFsdWVbZF0sOCk7Y2FzZSA4OmYoZy5qYSk7Zy5uZCg0KTticmVhaztjYXNlIDI6Zy5rZCgpLGcuaGUoMCl9fSl9KCl9O2hhLk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFhhLnByb3RvdHlwZSx7c2l6ZTp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMudmFsdWUpLmxlbmd0aH19fSk7CmZ1bmN0aW9uIFlhKCl7dHJ5e2lmKE1hcClyZXR1cm4gbmV3IE1hcH1jYXRjaChhKXt9cmV0dXJuIG5ldyBYYX07dmFyIFphPWZ1bmN0aW9uKCl7dGhpcy52YWx1ZXM9W119O1phLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7dGhpcy52YWx1ZXMuaW5kZXhPZihhKT09PS0xJiZ0aGlzLnZhbHVlcy5wdXNoKGEpfTtaYS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnZhbHVlcy5pbmRleE9mKGEpPi0xfTt2YXIgJGE9ZnVuY3Rpb24oYSxiKXt0aGlzLmZhPWE7dGhpcy5wYXJlbnQ9Yjt0aGlzLlI9dGhpcy5LPXZvaWQgMDt0aGlzLkhiPSExO3RoaXMuTj1mdW5jdGlvbihkLGUsZil7cmV0dXJuIGQuYXBwbHkoZSxmKX07dGhpcy5IPVlhKCk7dmFyIGM7YTp7dHJ5e2lmKFNldCl7Yz1uZXcgU2V0O2JyZWFrIGF9fWNhdGNoKGQpe31jPW5ldyBaYX10aGlzLlo9Y307JGEucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhLGIpe2FiKHRoaXMsYSxiLCExKX07JGEucHJvdG90eXBlLlFoPWZ1bmN0aW9uKGEsYil7YWIodGhpcyxhLGIsITApfTt2YXIgYWI9ZnVuY3Rpb24oYSxiLGMsZCl7YS5IYnx8YS5aLmhhcyhiKXx8KGQmJmEuWi5hZGQoYiksYS5ILnNldChiLGMpKX07az0kYS5wcm90b3R5cGU7Cmsuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5IYnx8KCF0aGlzLkguaGFzKGEpJiZ0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuaGFzKGEpP3RoaXMucGFyZW50LnNldChhLGIpOnRoaXMuWi5oYXMoYSl8fHRoaXMuSC5zZXQoYSxiKSl9O2suZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkguaGFzKGEpP3RoaXMuSC5nZXQoYSk6dGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQuZ2V0KGEpOnZvaWQgMH07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuISF0aGlzLkguaGFzKGEpfHwhKCF0aGlzLnBhcmVudHx8IXRoaXMucGFyZW50LmhhcyhhKSl9O2sud2I9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgJGEodGhpcy5mYSx0aGlzKTt0aGlzLksmJmEuUWIodGhpcy5LKTthLnNkKHRoaXMuTik7YS51ZSh0aGlzLlIpO3JldHVybiBhfTtrLmplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmF9O2suUWI9ZnVuY3Rpb24oYSl7dGhpcy5LPWF9O2suZm89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LfTsKay5zZD1mdW5jdGlvbihhKXt0aGlzLk49YX07ay5Qaj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk59O2suWmE9ZnVuY3Rpb24oKXt0aGlzLkhiPSEwfTtrLnVlPWZ1bmN0aW9uKGEpe3RoaXMuUj1hfTtrLnhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUn07dmFyIGJiPWZ1bmN0aW9uKGEsYixjKXt2YXIgZDtkPUVycm9yLmNhbGwodGhpcyxhLm1lc3NhZ2UpO3RoaXMubWVzc2FnZT1kLm1lc3NhZ2U7InN0YWNrImluIGQmJih0aGlzLnN0YWNrPWQuc3RhY2spO3RoaXMudm89YTt0aGlzLlNuPWM9PT12b2lkIDA/ITE6Yzt0aGlzLks9W107dGhpcy5IPWJ9O3dhKGJiLEVycm9yKTt2YXIgY2I9ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBiYj9hOm5ldyBiYihhLHZvaWQgMCwhMCl9O3ZhciBkYj1ZYSgpO2Z1bmN0aW9uIGViKGEsYil7Zm9yKHZhciBjLGQ9bShiKSxlPWQubmV4dCgpOyFlLmRvbmUmJiEoYz1mYihhLGUudmFsdWUpLGMgaW5zdGFuY2VvZiBUYSk7ZT1kLm5leHQoKSk7cmV0dXJuIGN9ZnVuY3Rpb24gZmIoYSxiKXt0cnl7dmFyIGM9YlswXSxkPWIuc2xpY2UoMSksZT1TdHJpbmcoYyksZj1kYi5oYXMoZSk/ZGIuZ2V0KGUpOmEuZ2V0KGUpO2lmKCFmfHx0eXBlb2YgZi5pbnZva2UhPT0iZnVuY3Rpb24iKXRocm93IGNiKEVycm9yKCJBdHRlbXB0aW5nIHRvIGV4ZWN1dGUgbm9uLWZ1bmN0aW9uICIrYlswXSsiLiIpKTtyZXR1cm4gZi5hcHBseShhLGQpfWNhdGNoKGgpe3ZhciBnPWEuZm8oKTtnJiZnKGgsYi5jb250ZXh0P3tpZDpiWzBdLGxpbmU6Yi5jb250ZXh0LmxpbmV9Om51bGwpO3Rocm93IGg7fX07dmFyIGdiPWZ1bmN0aW9uKCl7dGhpcy5LPW5ldyBXYTt0aGlzLkg9bmV3ICRhKHRoaXMuSyl9O2s9Z2IucHJvdG90eXBlO2suamU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5LfTtrLlFiPWZ1bmN0aW9uKGEpe3RoaXMuSC5RYihhKX07ay5zZD1mdW5jdGlvbihhKXt0aGlzLkguc2QoYSl9O2suZXhlY3V0ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yayhbYV0uY29uY2F0KHcoT2EuYXBwbHkoMSxhcmd1bWVudHMpKSkpfTtrLnJrPWZ1bmN0aW9uKCl7Zm9yKHZhciBhLGI9bShPYS5hcHBseSgwLGFyZ3VtZW50cykpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWE9ZmIodGhpcy5ILGMudmFsdWUpO3JldHVybiBhfTtrLkpxPWZ1bmN0aW9uKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKSxjPXRoaXMuSC53YigpO2MudWUoYSk7Zm9yKHZhciBkLGU9bShiKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSlkPWZiKGMsZi52YWx1ZSk7cmV0dXJuIGR9O2suWmE9ZnVuY3Rpb24oKXt0aGlzLkguWmEoKX07dmFyIGhiPWZ1bmN0aW9uKGEsYil7dGhpcy5SPWE7dGhpcy5wYXJlbnQ9Yjt0aGlzLk49dGhpcy5IPXZvaWQgMDt0aGlzLkhiPSExO3RoaXMuSz1mdW5jdGlvbihjLGQsZSl7cmV0dXJuIGMuYXBwbHkoZCxlKX07dGhpcy52YWx1ZXM9bmV3IFVhfTtoYi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsYil7amIodGhpcyxhLGIsITEpfTtoYi5wcm90b3R5cGUuUWg9ZnVuY3Rpb24oYSxiKXtqYih0aGlzLGEsYiwhMCl9O3ZhciBqYj1mdW5jdGlvbihhLGIsYyxkKXtpZighYS5IYilpZihkKXt2YXIgZT1hLnZhbHVlcztlLnNldChiLGMpO2UuSFsiZHVzdC4iK2JdPSEwfWVsc2UgYS52YWx1ZXMuc2V0KGIsYyl9O2s9aGIucHJvdG90eXBlO2suc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5IYnx8KCF0aGlzLnZhbHVlcy5oYXMoYSkmJnRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5oYXMoYSk/dGhpcy5wYXJlbnQuc2V0KGEsYik6dGhpcy52YWx1ZXMuc2V0KGEsYikpfTsKay5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudmFsdWVzLmhhcyhhKT90aGlzLnZhbHVlcy5nZXQoYSk6dGhpcy5wYXJlbnQ/dGhpcy5wYXJlbnQuZ2V0KGEpOnZvaWQgMH07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuISF0aGlzLnZhbHVlcy5oYXMoYSl8fCEoIXRoaXMucGFyZW50fHwhdGhpcy5wYXJlbnQuaGFzKGEpKX07ay53Yj1mdW5jdGlvbigpe3ZhciBhPW5ldyBoYih0aGlzLlIsdGhpcyk7dGhpcy5IJiZhLlFiKHRoaXMuSCk7YS5zZCh0aGlzLkspO2EudWUodGhpcy5OKTtyZXR1cm4gYX07ay5qZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJ9O2suUWI9ZnVuY3Rpb24oYSl7dGhpcy5IPWF9O2suZm89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5IfTtrLnNkPWZ1bmN0aW9uKGEpe3RoaXMuSz1hfTtrLlBqPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuS307ay5aYT1mdW5jdGlvbigpe3RoaXMuSGI9ITB9O2sudWU9ZnVuY3Rpb24oYSl7dGhpcy5OPWF9O2sueGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OfTt2YXIga2I9ZnVuY3Rpb24oKXt0aGlzLk5hPSExO3RoaXMubGE9bmV3IFVhfTtrPWtiLnByb3RvdHlwZTtrLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sYS5nZXQoYSl9O2suc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5OYXx8dGhpcy5sYS5zZXQoYSxiKX07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGEuaGFzKGEpfTtrLnJlbW92ZT1mdW5jdGlvbihhKXt0aGlzLk5hfHx0aGlzLmxhLnJlbW92ZShhKX07ay5GYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLkZhKCl9O2suaGM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5oYygpfTtrLmZjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuZmMoKX07ay5aYT1mdW5jdGlvbigpe3RoaXMuTmE9ITB9O2suSGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OYX07ZnVuY3Rpb24gbGIoKXtmb3IodmFyIGE9bWIsYj17fSxjPTA7YzxhLmxlbmd0aDsrK2MpYlthW2NdXT1jO3JldHVybiBifWZ1bmN0aW9uIG5iKCl7dmFyIGE9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjthKz1hLnRvTG93ZXJDYXNlKCkrIjAxMjM0NTY3ODktXyI7cmV0dXJuIGErIi4ifXZhciBtYixvYjtmdW5jdGlvbiBwYihhKXttYj1tYnx8bmIoKTtvYj1vYnx8bGIoKTtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7Yys9Myl7dmFyIGQ9YysxPGEubGVuZ3RoLGU9YysyPGEubGVuZ3RoLGY9YS5jaGFyQ29kZUF0KGMpLGc9ZD9hLmNoYXJDb2RlQXQoYysxKTowLGg9ZT9hLmNoYXJDb2RlQXQoYysyKTowLGw9Zj4+MixuPShmJjMpPDw0fGc+PjQscD0oZyYxNSk8PDJ8aD4+NixxPWgmNjM7ZXx8KHE9NjQsZHx8KHA9NjQpKTtiLnB1c2gobWJbbF0sbWJbbl0sbWJbcF0sbWJbcV0pfXJldHVybiBiLmpvaW4oIiIpfQpmdW5jdGlvbiBxYihhKXtmdW5jdGlvbiBiKGwpe2Zvcig7ZDxhLmxlbmd0aDspe3ZhciBuPWEuY2hhckF0KGQrKykscD1vYltuXTtpZihwIT1udWxsKXJldHVybiBwO2lmKCEvXltcc1x4YTBdKiQvLnRlc3QobikpdGhyb3cgRXJyb3IoIlVua25vd24gYmFzZTY0IGVuY29kaW5nIGF0IGNoYXI6ICIrbik7fXJldHVybiBsfW1iPW1ifHxuYigpO29iPW9ifHxsYigpO2Zvcih2YXIgYz0iIixkPTA7Oyl7dmFyIGU9YigtMSksZj1iKDApLGc9Yig2NCksaD1iKDY0KTtpZihoPT09NjQmJmU9PT0tMSlyZXR1cm4gYztjKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGU8PDJ8Zj4+NCk7ZyE9PTY0JiYoYys9U3RyaW5nLmZyb21DaGFyQ29kZShmPDw0JjI0MHxnPj4yKSxoIT09NjQmJihjKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGc8PDYmMTkyfGgpKSl9fTt2YXIgcmI9e307ZnVuY3Rpb24gc2IoYSxiKXt2YXIgYz1yYlthXTtjfHwoYz1yYlthXT1bXSk7Y1tiXT0hMH1mdW5jdGlvbiB0Yigpe2RlbGV0ZSByYi5HQTRfRVZFTlR9ZnVuY3Rpb24gdWIoKXt2YXIgYT12Yi5ILnNsaWNlKCk7cmIuR1RBR19FVkVOVF9GRUFUVVJFX0NIQU5ORUw9YX1mdW5jdGlvbiB3YihhKXtmb3IodmFyIGI9W10sYz0wLGQ9MDtkPGEubGVuZ3RoO2QrKylkJTg9PT0wJiZkPjAmJihiLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjKSksYz0wKSxhW2RdJiYoY3w9MTw8ZCU4KTtjPjAmJmIucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtyZXR1cm4gcGIoYi5qb2luKCIiKSkucmVwbGFjZSgvXC4rJC8sIiIpfTtmdW5jdGlvbiB4Yigpe31mdW5jdGlvbiB5YihhKXtyZXR1cm4gdHlwZW9mIGE9PT0iZnVuY3Rpb24ifWZ1bmN0aW9uIHpiKGEpe3JldHVybiB0eXBlb2YgYT09PSJzdHJpbmcifWZ1bmN0aW9uIEFiKGEpe3JldHVybiB0eXBlb2YgYT09PSJudW1iZXIiJiYhaXNOYU4oYSl9ZnVuY3Rpb24gQmIoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/YTpbYV19ZnVuY3Rpb24gQ2IoYSxiKXtpZihhJiZBcnJheS5pc0FycmF5KGEpKWZvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKGFbY10mJmIoYVtjXSkpcmV0dXJuIGFbY119ZnVuY3Rpb24gRGIoYSxiKXtpZighQWIoYSl8fCFBYihiKXx8YT5iKWE9MCxiPTIxNDc0ODM2NDc7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooYi1hKzEpK2EpfQpmdW5jdGlvbiBFYihhLGIpe2Zvcih2YXIgYz1uZXcgRmIsZD0wO2Q8YS5sZW5ndGg7ZCsrKWMuc2V0KGFbZF0sITApO2Zvcih2YXIgZT0wO2U8Yi5sZW5ndGg7ZSsrKWlmKGMuZ2V0KGJbZV0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEdiKGEsYil7Zm9yKHZhciBjIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYykmJmIoYyxhW2NdKX1mdW5jdGlvbiBIYihhKXtyZXR1cm4hIWEmJihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSk9PT0iW29iamVjdCBBcmd1bWVudHNdInx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsImNhbGxlZSIpKX1mdW5jdGlvbiBJYihhKXtyZXR1cm4gTWF0aC5yb3VuZChOdW1iZXIoYSkpfHwwfWZ1bmN0aW9uIEpiKGEpe3JldHVybiJmYWxzZSI9PT1TdHJpbmcoYSkudG9Mb3dlckNhc2UoKT8hMTohIWF9CmZ1bmN0aW9uIEtiKGEpe3ZhciBiPVtdO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspYi5wdXNoKFN0cmluZyhhW2NdKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gTGIoYSl7cmV0dXJuIGE/YS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIik6IiJ9ZnVuY3Rpb24gTWIoKXtyZXR1cm4gbmV3IERhdGUoRGF0ZS5ub3coKSl9ZnVuY3Rpb24gTmIoKXtyZXR1cm4gTWIoKS5nZXRUaW1lKCl9dmFyIEZiPWZ1bmN0aW9uKCl7dGhpcy5wcmVmaXg9Imd0bS4iO3RoaXMudmFsdWVzPXt9fTtGYi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy52YWx1ZXNbdGhpcy5wcmVmaXgrYV09Yn07RmIucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy52YWx1ZXNbdGhpcy5wcmVmaXgrYV19O0ZiLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nZXQoYSkhPT12b2lkIDB9OwpmdW5jdGlvbiBPYihhLGIsYyl7cmV0dXJuIGEmJmEuaGFzT3duUHJvcGVydHkoYik/YVtiXTpjfWZ1bmN0aW9uIFBiKGEpe3ZhciBiPWE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYil7dmFyIGM9YjtiPXZvaWQgMDt0cnl7YygpfWNhdGNoKGQpe319fX1mdW5jdGlvbiBRYihhLGIpe2Zvcih2YXIgYyBpbiBiKWIuaGFzT3duUHJvcGVydHkoYykmJihhW2NdPWJbY10pfWZ1bmN0aW9uIFJiKGEsYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGEubGVuZ3RoO2QrKyljLnB1c2goYVtkXSksYy5wdXNoLmFwcGx5KGMsYlthW2RdXXx8W10pO3JldHVybiBjfWZ1bmN0aW9uIFNiKGEsYil7cmV0dXJuIGEubGVuZ3RoPj1iLmxlbmd0aCYmYS5zdWJzdHJpbmcoMCxiLmxlbmd0aCk9PT1ifWZ1bmN0aW9uIFRiKGEsYil7cmV0dXJuIGEubGVuZ3RoPj1iLmxlbmd0aCYmYS5zdWJzdHJpbmcoYS5sZW5ndGgtYi5sZW5ndGgsYS5sZW5ndGgpPT09Yn0KZnVuY3Rpb24gVWIoYSxiLGMpe2M9Y3x8W107Zm9yKHZhciBkPWEsZT0wO2U8Yi5sZW5ndGgtMTtlKyspe2lmKCFkLmhhc093blByb3BlcnR5KGJbZV0pKXJldHVybjtkPWRbYltlXV07aWYoYy5pbmRleE9mKGQpPj0wKXJldHVybn1yZXR1cm4gZH1mdW5jdGlvbiBWYihhLGIpe2Zvcih2YXIgYz17fSxkPWMsZT1hLnNwbGl0KCIuIiksZj0wO2Y8ZS5sZW5ndGgtMTtmKyspZD1kW2VbZl1dPXt9O2RbZVtlLmxlbmd0aC0xXV09YjtyZXR1cm4gY312YXIgV2I9L15cd3sxLDl9JC87ZnVuY3Rpb24gWWIoYSxiKXthPWF8fHt9O2I9Ynx8IiwiO3ZhciBjPVtdO0diKGEsZnVuY3Rpb24oZCxlKXtXYi50ZXN0KGQpJiZlJiZjLnB1c2goZCl9KTtyZXR1cm4gYy5qb2luKGIpfQpmdW5jdGlvbiBaYihhKXtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hLmNoYXJDb2RlQXQoYyk7ZDwxMjg/Yi5wdXNoKGQpOmQ8MjA0OD9iLnB1c2goMTkyfGQ+PjYsMTI4fGQmNjMpOmQ8NTUyOTZ8fGQ+PTU3MzQ0P2IucHVzaCgyMjR8ZD4+MTIsMTI4fGQ+PjYmNjMsMTI4fGQmNjMpOihkPTY1NTM2KygoZCYxMDIzKTw8MTB8YS5jaGFyQ29kZUF0KCsrYykmMTAyMyksYi5wdXNoKDI0MHxkPj4xOCwxMjh8ZD4+MTImNjMsMTI4fGQ+PjYmNjMsMTI4fGQmNjMpKX1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYil9ZnVuY3Rpb24gJGIoYSl7aWYoIWEpcmV0dXJuIGE7dmFyIGI9YTt0cnl7Yj1kZWNvZGVVUklDb21wb25lbnQoYSl9Y2F0Y2goZCl7fXZhciBjPWIuc3BsaXQoIiwiKTtyZXR1cm4gYy5sZW5ndGg9PT0yJiZjWzBdPT09Y1sxXT9jWzBdOmF9CmZ1bmN0aW9uIGFjKGEsYixjKXtmdW5jdGlvbiBkKG4pe3ZhciBwPW4uc3BsaXQoIj0iKVswXTtpZihhLmluZGV4T2YocCk8MClyZXR1cm4gbjtpZihjIT09dm9pZCAwKXJldHVybiBwKyI9IitjfWZ1bmN0aW9uIGUobil7cmV0dXJuIG4uc3BsaXQoIiYiKS5tYXAoZCkuZmlsdGVyKGZ1bmN0aW9uKHApe3JldHVybiBwIT09dm9pZCAwfSkuam9pbigiJiIpfXZhciBmPWIuaHJlZi5zcGxpdCgvWz8jXS8pWzBdLGc9Yi5zZWFyY2gsaD1iLmhhc2g7Z1swXT09PSI/IiYmKGc9Zy5zdWJzdHJpbmcoMSkpO2hbMF09PT0iIyImJihoPWguc3Vic3RyaW5nKDEpKTtnPWUoZyk7aD1lKGgpO2chPT0iIiYmKGc9Ij8iK2cpO2ghPT0iIiYmKGg9IiMiK2gpO3ZhciBsPSIiK2YrZytoO2xbbC5sZW5ndGgtMV09PT0iLyImJihsPWwuc3Vic3RyaW5nKDAsbC5sZW5ndGgtMSkpO3JldHVybiBsfQpmdW5jdGlvbiBiYyhhKXtmb3IodmFyIGI9MDtiPDM7KytiKXRyeXt2YXIgYz1kZWNvZGVVUklDb21wb25lbnQoYSkucmVwbGFjZSgvXCsvZywiICIpO2lmKGM9PT1hKWJyZWFrO2E9Y31jYXRjaChkKXtyZXR1cm4iIn1yZXR1cm4gYX1mdW5jdGlvbiBjYygpe3ZhciBhPUEsYjthOnt2YXIgYz1hLmNyeXB0b3x8YS5tc0NyeXB0bztpZihjJiZjLmdldFJhbmRvbVZhbHVlcyl0cnl7dmFyIGQ9bmV3IFVpbnQ4QXJyYXkoMjUpO2MuZ2V0UmFuZG9tVmFsdWVzKGQpO2I9YnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyx3KGQpKSkucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89KyQvLCIiKTticmVhayBhfWNhdGNoKGUpe31iPXZvaWQgMH1yZXR1cm4gYn07LyoKCiBDb3B5cmlnaHQgR29vZ2xlIExMQwogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyIGRjPWdsb2JhbFRoaXMudHJ1c3RlZFR5cGVzLGVjO2Z1bmN0aW9uIGZjKCl7dmFyIGE9bnVsbDtpZighZGMpcmV0dXJuIGE7dHJ5e3ZhciBiPWZ1bmN0aW9uKGMpe3JldHVybiBjfTthPWRjLmNyZWF0ZVBvbGljeSgiZ29vZyNodG1sIix7Y3JlYXRlSFRNTDpiLGNyZWF0ZVNjcmlwdDpiLGNyZWF0ZVNjcmlwdFVSTDpifSl9Y2F0Y2goYyl7fXJldHVybiBhfWZ1bmN0aW9uIGhjKCl7ZWM9PT12b2lkIDAmJihlYz1mYygpKTtyZXR1cm4gZWN9O3ZhciBpYz1mdW5jdGlvbihhKXt0aGlzLkg9YX07aWMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSCsiIn07ZnVuY3Rpb24gamMoYSl7dmFyIGI9YSxjPWhjKCksZD1jP2MuY3JlYXRlU2NyaXB0VVJMKGIpOmI7cmV0dXJuIG5ldyBpYyhkKX1mdW5jdGlvbiBrYyhhKXtpZihhIGluc3RhbmNlb2YgaWMpcmV0dXJuIGEuSDt0aHJvdyBFcnJvcigiIik7fTt2YXIgbGM9QWEoWyIiXSksbWM9emEoWyJceDAwIl0sWyJcXDAiXSksbmM9emEoWyJcbiJdLFsiXFxuIl0pLG9jPXphKFsiXHgwMCJdLFsiXFx1MDAwMCJdKTtmdW5jdGlvbiBwYyhhKXtyZXR1cm4gYS50b1N0cmluZygpLmluZGV4T2YoImAiKT09PS0xfXBjKGZ1bmN0aW9uKGEpe3JldHVybiBhKGxjKX0pfHxwYyhmdW5jdGlvbihhKXtyZXR1cm4gYShtYyl9KXx8cGMoZnVuY3Rpb24oYSl7cmV0dXJuIGEobmMpfSl8fHBjKGZ1bmN0aW9uKGEpe3JldHVybiBhKG9jKX0pO3ZhciBxYz1mdW5jdGlvbihhKXt0aGlzLkg9YX07cWMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSH07dmFyIHJjPWZ1bmN0aW9uKGEpe3RoaXMuSnM9YX07ZnVuY3Rpb24gc2MoYSl7cmV0dXJuIG5ldyByYyhmdW5jdGlvbihiKXtyZXR1cm4gYi5zdWJzdHIoMCxhLmxlbmd0aCsxKS50b0xvd2VyQ2FzZSgpPT09YSsiOiJ9KX12YXIgdGM9W3NjKCJkYXRhIiksc2MoImh0dHAiKSxzYygiaHR0cHMiKSxzYygibWFpbHRvIiksc2MoImZ0cCIpLG5ldyByYyhmdW5jdGlvbihhKXtyZXR1cm4vXlteOl0qKFsvPyNdfCQpLy50ZXN0KGEpfSldO2Z1bmN0aW9uIHVjKGEpe3ZhciBiO2I9Yj09PXZvaWQgMD90YzpiO2lmKGEgaW5zdGFuY2VvZiBxYylyZXR1cm4gYTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoOysrYyl7dmFyIGQ9YltjXTtpZihkIGluc3RhbmNlb2YgcmMmJmQuSnMoYSkpcmV0dXJuIG5ldyBxYyhhKX19dmFyIHZjPS9eXHMqKD8hamF2YXNjcmlwdDopKD86W1x3Ky4tXSs6fFteOi8/I10qKD86Wy8/I118JCkpL2k7CmZ1bmN0aW9uIHdjKGEpe3ZhciBiO2lmKGEgaW5zdGFuY2VvZiBxYylpZihhIGluc3RhbmNlb2YgcWMpYj1hLkg7ZWxzZSB0aHJvdyBFcnJvcigiIik7ZWxzZSBiPXZjLnRlc3QoYSk/YTp2b2lkIDA7cmV0dXJuIGJ9O2Z1bmN0aW9uIHhjKGEsYil7dmFyIGM9d2MoYik7YyE9PXZvaWQgMCYmKGEuYWN0aW9uPWMpfTtmdW5jdGlvbiB5YyhhLGIpe3Rocm93IEVycm9yKGI9PT12b2lkIDA/InVuZXhwZWN0ZWQgdmFsdWUgIithKyIhIjpiKTt9O3ZhciB6Yz1mdW5jdGlvbihhKXt0aGlzLkg9YX07emMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSCsiIn07dmFyIEJjPWZ1bmN0aW9uKCl7dGhpcy5IPUFjWzBdLnRvTG93ZXJDYXNlKCl9O0JjLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkh9O2Z1bmN0aW9uIENjKGEsYil7dmFyIGM9W25ldyBCY107aWYoYy5sZW5ndGg9PT0wKXRocm93IEVycm9yKCIiKTt2YXIgZD1jLm1hcChmdW5jdGlvbihmKXt2YXIgZztpZihmIGluc3RhbmNlb2YgQmMpZz1mLkg7ZWxzZSB0aHJvdyBFcnJvcigiIik7cmV0dXJuIGd9KSxlPWIudG9Mb3dlckNhc2UoKTtpZihkLmV2ZXJ5KGZ1bmN0aW9uKGYpe3JldHVybiBlLmluZGV4T2YoZikhPT0wfSkpdGhyb3cgRXJyb3IoJ0F0dHJpYnV0ZSAiJytiKyciIGRvZXMgbm90IG1hdGNoIGFueSBvZiB0aGUgYWxsb3dlZCBwcmVmaXhlcy4nKTthLnNldEF0dHJpYnV0ZShiLCJ0cnVlIil9O3ZhciBEYz1BcnJheS5wcm90b3R5cGUuaW5kZXhPZj9mdW5jdGlvbihhLGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGEsYix2b2lkIDApfTpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhPT09InN0cmluZyIpcmV0dXJuIHR5cGVvZiBiIT09InN0cmluZyJ8fGIubGVuZ3RoIT0xPy0xOmEuaW5kZXhPZihiLDApO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKGMgaW4gYSYmYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9OyJBUlRJQ0xFIFNFQ1RJT04gTkFWIEFTSURFIEgxIEgyIEgzIEg0IEg1IEg2IEhFQURFUiBGT09URVIgQUREUkVTUyBQIEhSIFBSRSBCTE9DS1FVT1RFIE9MIFVMIExIIExJIERMIERUIEREIEZJR1VSRSBGSUdDQVBUSU9OIE1BSU4gRElWIEVNIFNUUk9ORyBTTUFMTCBTIENJVEUgUSBERk4gQUJCUiBSVUJZIFJCIFJUIFJUQyBSUCBEQVRBIFRJTUUgQ09ERSBWQVIgU0FNUCBLQkQgU1VCIFNVUCBJIEIgVSBNQVJLIEJESSBCRE8gU1BBTiBCUiBXQlIgTk9CUiBJTlMgREVMIFBJQ1RVUkUgUEFSQU0gVFJBQ0sgTUFQIFRBQkxFIENBUFRJT04gQ09MR1JPVVAgQ09MIFRCT0RZIFRIRUFEIFRGT09UIFRSIFREIFRIIFNFTEVDVCBEQVRBTElTVCBPUFRHUk9VUCBPUFRJT04gT1VUUFVUIFBST0dSRVNTIE1FVEVSIEZJRUxEU0VUIExFR0VORCBERVRBSUxTIFNVTU1BUlkgTUVOVSBESUFMT0cgU0xPVCBDQU5WQVMgRk9OVCBDRU5URVIgQUNST05ZTSBCQVNFRk9OVCBCSUcgRElSIEhHUk9VUCBTVFJJS0UgVFQiLnNwbGl0KCIgIikuY29uY2F0KFsiQlVUVE9OIiwKIklOUFVUIl0pO2Z1bmN0aW9uIEVjKGEpe3JldHVybiBhPT09bnVsbD8ibnVsbCI6YT09PXZvaWQgMD8idW5kZWZpbmVkIjphfTt2YXIgQT13aW5kb3csRmM9W10sR2M9d2luZG93Lmhpc3RvcnksQj1kb2N1bWVudCxIYz1uYXZpZ2F0b3I7ZnVuY3Rpb24gSWMoKXt2YXIgYTt0cnl7YT1IYy5zZXJ2aWNlV29ya2VyfWNhdGNoKGIpe3JldHVybn1yZXR1cm4gYX12YXIgSmM9Qi5jdXJyZW50U2NyaXB0LEtjPUpjJiZKYy5zcmM7ZnVuY3Rpb24gTWMoYSxiKXt2YXIgYz1BLGQ9Y1thXTtjW2FdPWQ9PT12b2lkIDA/YjpkO3JldHVybiBjW2FdfWZ1bmN0aW9uIE5jKGEpe3JldHVybihIYy51c2VyQWdlbnR8fCIiKS5pbmRleE9mKGEpIT09LTF9ZnVuY3Rpb24gT2MoKXtyZXR1cm4gTmMoIkZpcmVmb3giKXx8TmMoIkZ4aU9TIil9ZnVuY3Rpb24gUGMoKXtyZXR1cm4oTmMoIkdTQSIpfHxOYygiR29vZ2xlQXBwIikpJiYoTmMoImlQaG9uZSIpfHxOYygiaVBhZCIpKX1mdW5jdGlvbiBRYygpe3JldHVybiBOYygiRWRnLyIpfHxOYygiRWRnQS8iKXx8TmMoIkVkZ2lPUy8iKX0KdmFyIFJjPXthc3luYzoxLG5vbmNlOjEsb25lcnJvcjoxLG9ubG9hZDoxLHNyYzoxLHR5cGU6MX0sU2M9e2hlaWdodDoxLG9ubG9hZDoxLHNyYzoxLHN0eWxlOjEsd2lkdGg6MX07ZnVuY3Rpb24gVGMoYSxiLGMpe2ImJkdiKGIsZnVuY3Rpb24oZCxlKXtkPWQudG9Mb3dlckNhc2UoKTtjLmhhc093blByb3BlcnR5KGQpfHxhLnNldEF0dHJpYnV0ZShkLGUpfSl9CmZ1bmN0aW9uIFVjKGEsYixjLGQsZSl7dmFyIGY9Qi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtUYyhmLGQsUmMpO2YudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtmLmFzeW5jPWQmJmQuYXN5bmM9PT0hMT8hMTohMDt2YXIgZztnPWpjKEVjKGEpKTtmLnNyYz1rYyhnKTt2YXIgaCxsPWYub3duZXJEb2N1bWVudDtsPWw9PT12b2lkIDA/ZG9jdW1lbnQ6bDt2YXIgbixwLHE9KHA9KG49bCkucXVlcnlTZWxlY3Rvcik9PW51bGw/dm9pZCAwOnAuY2FsbChuLCJzY3JpcHRbbm9uY2VdIik7KGg9cT09bnVsbD8iIjpxLm5vbmNlfHxxLmdldEF0dHJpYnV0ZSgibm9uY2UiKXx8IiIpJiZmLnNldEF0dHJpYnV0ZSgibm9uY2UiLGgpO2ImJihmLm9ubG9hZD1iKTtjJiYoZi5vbmVycm9yPWMpO2U/ZS5hcHBlbmRDaGlsZChmKTpWYy5CcyhmKTtyZXR1cm4gZn0KZnVuY3Rpb24gV2MoKXtpZihLYyl7dmFyIGE9S2MudG9Mb3dlckNhc2UoKTtpZihhLmluZGV4T2YoImh0dHBzOi8vIik9PT0wKXJldHVybiAyO2lmKGEuaW5kZXhPZigiaHR0cDovLyIpPT09MClyZXR1cm4gM31yZXR1cm4gMX1mdW5jdGlvbiBYYyhhLGIsYyxkLGUsZil7Zj1mPT09dm9pZCAwPyEwOmY7dmFyIGc9ZSxoPSExO2d8fChnPUIuY3JlYXRlRWxlbWVudCgiaWZyYW1lIiksaD0hMCk7VGMoZyxjLFNjKTtkJiZHYihkLGZ1bmN0aW9uKG4scCl7Zy5kYXRhc2V0W25dPXB9KTtmJiYoZy5oZWlnaHQ9IjAiLGcud2lkdGg9IjAiLGcuc3R5bGUuZGlzcGxheT0ibm9uZSIsZy5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iKTthIT09dm9pZCAwJiYoZy5zcmM9YSk7aWYoaCl7dmFyIGw9Qi5ib2R5JiZCLmJvZHkubGFzdENoaWxkfHxCLmJvZHl8fEIuaGVhZDtsLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGcsbCl9YiYmKGcub25sb2FkPWIpO3JldHVybiBnfQpmdW5jdGlvbiBaYygpe3JldHVybiBWYy5Fci5hcHBseShWYyx3KE9hLmFwcGx5KDAsYXJndW1lbnRzKSkpfWZ1bmN0aW9uICRjKGEsYixjLGQpe2EuYWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVudExpc3RlbmVyKGIsYywhIWQpfWZ1bmN0aW9uIGFkKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsITEpfWZ1bmN0aW9uIGJkKGEpe0Euc2V0VGltZW91dChhLDApfWZ1bmN0aW9uIGNkKGEsYil7dmFyIGM9T2EuYXBwbHkoMixhcmd1bWVudHMpLGQsZT0oZD1BKS5zZXRJbnRlcnZhbC5hcHBseShkLFthLGJdLmNvbmNhdCh3KGMpKSk7RmMucHVzaChlKTtyZXR1cm4gZX0KZnVuY3Rpb24gZGQoYSl7dmFyIGI9QTt5YihiLnF1ZXVlTWljcm90YXNrKT9iLnF1ZXVlTWljcm90YXNrKGEpOnliKGIuUHJvbWlzZSkmJmIuUHJvbWlzZS5yZXNvbHZlP2IuUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe2EoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7fSk6YmQoYSl9ZnVuY3Rpb24gZWQoYSxiKXtyZXR1cm4gYSYmYiYmYS5hdHRyaWJ1dGVzJiZhLmF0dHJpYnV0ZXNbYl0/YS5hdHRyaWJ1dGVzW2JdLnZhbHVlOm51bGx9ZnVuY3Rpb24gZmQoYSl7dmFyIGI9YS5pbm5lclRleHR8fGEudGV4dENvbnRlbnR8fCIiO2ImJmIhPT0iICImJihiPWIucmVwbGFjZSgvXltcc1x4YTBdKy9nLCIiKSxiPWIucmVwbGFjZSgvW1xzXHhhMF0rJC9nLCIiKSk7YiYmKGI9Yi5yZXBsYWNlKC8oXHhhMCt8XHN7Mix9fFxufFxyXHQpL2csIiAiKSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIGdkKGEpe3ZhciBiPUIuY3JlYXRlRWxlbWVudCgiZGl2IiksYz1iLGQsZT1FYygiQTxkaXY+IithKyI8L2Rpdj4iKSxmPWhjKCksZz1mP2YuY3JlYXRlSFRNTChlKTplO2Q9bmV3IHpjKGcpO2lmKGMubm9kZVR5cGU9PT0xJiYvXihzY3JpcHR8c3R5bGUpJC9pLnRlc3QoYy50YWdOYW1lKSl0aHJvdyBFcnJvcigiIik7dmFyIGg7aWYoZCBpbnN0YW5jZW9mIHpjKWg9ZC5IO2Vsc2UgdGhyb3cgRXJyb3IoIiIpO2MuaW5uZXJIVE1MPWg7Yj1iLmxhc3RDaGlsZDtmb3IodmFyIGw9W107YiYmYi5maXJzdENoaWxkOylsLnB1c2goYi5yZW1vdmVDaGlsZChiLmZpcnN0Q2hpbGQpKTtyZXR1cm4gbH0KZnVuY3Rpb24gaGQoYSxiLGMpe2M9Y3x8MTAwO2Zvcih2YXIgZD17fSxlPTA7ZTxiLmxlbmd0aDtlKyspZFtiW2VdXT0hMDtmb3IodmFyIGY9YSxnPTA7ZiYmZzw9YztnKyspe2lmKGRbU3RyaW5nKGYudGFnTmFtZSkudG9Mb3dlckNhc2UoKV0pcmV0dXJuIGY7Zj1mLnBhcmVudEVsZW1lbnR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gaWQoYSxiLGMpe3ZhciBkO3RyeXtkPUhjLnNlbmRCZWFjb24mJkhjLnNlbmRCZWFjb24oYSl9Y2F0Y2goZSl7c2IoIlRBR0dJTkciLDE1KX1kP2I9PW51bGx8fGIoKTpaYyhhLGIsYyl9ZnVuY3Rpb24gamQoYSxiKXt0cnl7aWYoSGMuc2VuZEJlYWNvbiE9PXZvaWQgMClyZXR1cm4gSGMuc2VuZEJlYWNvbihhLGIpfWNhdGNoKGMpe3NiKCJUQUdHSU5HIiwxNSl9cmV0dXJuITF9ZnVuY3Rpb24ga2QoKXtyZXR1cm4gSGMuc2VuZEJlYWNvbiE9PXZvaWQgMH0KdmFyIGxkPXtjYWNoZToibm8tc3RvcmUiLGNyZWRlbnRpYWxzOiJpbmNsdWRlIixrZWVwYWxpdmU6ITAsbWV0aG9kOiJQT1NUIixtb2RlOiJuby1jb3JzIixyZWRpcmVjdDoiZm9sbG93In07CmZ1bmN0aW9uIG1kKGEsYixjLGQsZSl7aWYobmQoKSl7dmFyIGY9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxsZCk7YiYmKGYuYm9keT1iKTtjJiYoYy5hdHRyaWJ1dGlvblJlcG9ydGluZyYmKGYuYXR0cmlidXRpb25SZXBvcnRpbmc9Yy5hdHRyaWJ1dGlvblJlcG9ydGluZyksYy5icm93c2luZ1RvcGljcyE9PXZvaWQgMCYmKGYuYnJvd3NpbmdUb3BpY3M9Yy5icm93c2luZ1RvcGljcyksYy5jcmVkZW50aWFscyYmKGYuY3JlZGVudGlhbHM9Yy5jcmVkZW50aWFscyksYy5rZWVwYWxpdmUhPT12b2lkIDAmJihmLmtlZXBhbGl2ZT1jLmtlZXBhbGl2ZSksYy5tZXRob2QmJihmLm1ldGhvZD1jLm1ldGhvZCksYy5tb2RlJiYoZi5tb2RlPWMubW9kZSkpO3RyeXt2YXIgZz1BLmZldGNoKGEsZik7aWYoZylyZXR1cm4gZy50aGVuKGZ1bmN0aW9uKGwpe2wmJihsLm9rfHxsLnN0YXR1cz09PTApP2Q9PW51bGx8fGQoKTplPT1udWxsfHxlKCl9KS5jYXRjaChmdW5jdGlvbigpe2U9PQpudWxsfHxlKCl9KSwhMH1jYXRjaChsKXt9fWlmKChjPT1udWxsPzA6Yy5RZyl8fChjPT1udWxsPzA6Yy5jcmVkZW50aWFscykmJmMuY3JlZGVudGlhbHMhPT0iaW5jbHVkZSIpcmV0dXJuIGU9PW51bGx8fGUoKSwhMTtpZihiKXt2YXIgaD1qZChhLGIpO2g/ZD09bnVsbHx8ZCgpOmU9PW51bGx8fGUoKTtyZXR1cm4gaH1WYy53dChhLGQsZSk7cmV0dXJuITB9ZnVuY3Rpb24gbmQoKXtyZXR1cm4geWIoQS5mZXRjaCl9ZnVuY3Rpb24gb2QoYSxiKXt2YXIgYz1hW2JdO2MmJnR5cGVvZiBjLmFuaW1WYWw9PT0ic3RyaW5nIiYmKGM9Yy5hbmltVmFsKTtyZXR1cm4gY31mdW5jdGlvbiBwZCgpe3ZhciBhPUEucGVyZm9ybWFuY2U7aWYoYSYmeWIoYS5ub3cpKXJldHVybiBhLm5vdygpfQpmdW5jdGlvbiBxZCgpe3ZhciBhLGI9QS5wZXJmb3JtYW5jZTtpZihiJiZiLmdldEVudHJpZXNCeVR5cGUpdHJ5e3ZhciBjPWIuZ2V0RW50cmllc0J5VHlwZSgibmF2aWdhdGlvbiIpO2MmJmMubGVuZ3RoPjAmJihhPWNbMF0udHlwZSl9Y2F0Y2goZCl7cmV0dXJuImUifWlmKCFhKXJldHVybiJ1Ijtzd2l0Y2goYSl7Y2FzZSAibmF2aWdhdGUiOnJldHVybiJuIjtjYXNlICJiYWNrX2ZvcndhcmQiOnJldHVybiJoIjtjYXNlICJyZWxvYWQiOnJldHVybiJyIjtjYXNlICJwcmVyZW5kZXIiOnJldHVybiJwIjtkZWZhdWx0OnJldHVybiJ4In19ZnVuY3Rpb24gcmQoKXtyZXR1cm4gQS5wZXJmb3JtYW5jZXx8dm9pZCAwfWZ1bmN0aW9uIHNkKCl7dmFyIGE9QS53ZWJQaXhlbHNNYW5hZ2VyO3JldHVybiBhP2EuY3JlYXRlU2hvcGlmeUV4dGVuZCE9PXZvaWQgMDohMX0KdmFyIFZjPXtFcjpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1uZXcgSW1hZ2UoMSwxKTtUYyhlLGQse30pO2Uub25sb2FkPWZ1bmN0aW9uKCl7ZS5vbmxvYWQ9bnVsbDtiJiZiKCl9O2Uub25lcnJvcj1mdW5jdGlvbigpe2Uub25lcnJvcj1udWxsO2MmJmMoKX07ZS5zcmM9YTtyZXR1cm4gZX0sQnM6ZnVuY3Rpb24oYSl7dmFyIGI9Qi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF18fEIuYm9keXx8Qi5oZWFkO2IucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiKX0sd3Q6aWR9O2Z1bmN0aW9uIHRkKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSkmJnRoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gdWQoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKT09PXRoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gdmQoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKXx8dGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiB3ZChhLGIpe3ZhciBjPXRoaXMuZXZhbHVhdGUoYSksZD10aGlzLmV2YWx1YXRlKGIpO3JldHVybiBTdHJpbmcoYykuaW5kZXhPZihTdHJpbmcoZCkpPi0xfWZ1bmN0aW9uIHhkKGEsYil7dmFyIGM9U3RyaW5nKHRoaXMuZXZhbHVhdGUoYSkpLGQ9U3RyaW5nKHRoaXMuZXZhbHVhdGUoYikpO3JldHVybiBjLnN1YnN0cmluZygwLGQubGVuZ3RoKT09PWR9CmZ1bmN0aW9uIHlkKGEsYil7dmFyIGM9dGhpcy5ldmFsdWF0ZShhKSxkPXRoaXMuZXZhbHVhdGUoYik7c3dpdGNoKGMpe2Nhc2UgInBhZ2VMb2NhdGlvbiI6dmFyIGU9QS5sb2NhdGlvbi5ocmVmO2QgaW5zdGFuY2VvZiBrYiYmZC5nZXQoInN0cmlwUHJvdG9jb2wiKSYmKGU9ZS5yZXBsYWNlKC9eaHR0cHM/OlwvXC8vLCIiKSk7cmV0dXJuIGV9fTsvKgogalF1ZXJ5IChjKSAyMDA1LCAyMDEyIGpRdWVyeSBGb3VuZGF0aW9uLCBJbmMuIGpxdWVyeS5vcmcvbGljZW5zZS4KKi8KdmFyIHpkPS9cW29iamVjdCAoQm9vbGVhbnxOdW1iZXJ8U3RyaW5nfEZ1bmN0aW9ufEFycmF5fERhdGV8UmVnRXhwKVxdLyxBZD1mdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiBTdHJpbmcoYSk7dmFyIGI9emQuZXhlYyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0KGEpKSk7cmV0dXJuIGI/YlsxXS50b0xvd2VyQ2FzZSgpOiJvYmplY3QifSxCZD1mdW5jdGlvbihhLGIpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoT2JqZWN0KGEpLGIpfSxDZD1mdW5jdGlvbihhKXtpZighYXx8QWQoYSkhPSJvYmplY3QifHxhLm5vZGVUeXBlfHxhPT1hLndpbmRvdylyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIUJkKGEsImNvbnN0cnVjdG9yIikmJiFCZChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfWZvcih2YXIgYiBpbiBhKTtyZXR1cm4gYj09PXZvaWQgMHx8CkJkKGEsYil9LEVkPWZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8KEFkKGEpPT0iYXJyYXkiP1tdOnt9KSxkO2ZvcihkIGluIGEpaWYoQmQoYSxkKSl7dmFyIGU9YVtkXTtBZChlKT09ImFycmF5Ij8oQWQoY1tkXSkhPSJhcnJheSImJihjW2RdPVtdKSxjW2RdPUVkKGUsY1tkXSkpOkNkKGUpPyhDZChjW2RdKXx8KGNbZF09e30pLGNbZF09RWQoZSxjW2RdKSk6Y1tkXT1lfXJldHVybiBjfTtmdW5jdGlvbiBGZChhKXtyZXR1cm4gdHlwZW9mIGE9PT0ibnVtYmVyIiYmYT49MCYmaXNGaW5pdGUoYSkmJmElMT09PTB8fHR5cGVvZiBhPT09InN0cmluZyImJmFbMF0hPT0iLSImJmE9PT0iIitwYXJzZUludChhKX07dmFyIEdkPWZ1bmN0aW9uKGEpe2E9YT09PXZvaWQgMD9bXTphO3RoaXMubGE9bmV3IFVhO3RoaXMudmFsdWVzPVtdO3RoaXMuTmE9ITE7Zm9yKHZhciBiIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShiKSYmKEZkKGIpP3RoaXMudmFsdWVzW051bWJlcihiKV09YVtOdW1iZXIoYildOnRoaXMubGEuc2V0KGIsYVtiXSkpfTtrPUdkLnByb3RvdHlwZTtrLnRvU3RyaW5nPWZ1bmN0aW9uKGEpe2lmKGEmJmEuaW5kZXhPZih0aGlzKT49MClyZXR1cm4iIjtmb3IodmFyIGI9W10sYz0wO2M8dGhpcy52YWx1ZXMubGVuZ3RoO2MrKyl7dmFyIGQ9dGhpcy52YWx1ZXNbY107ZD09PW51bGx8fGQ9PT12b2lkIDA/Yi5wdXNoKCIiKTpkIGluc3RhbmNlb2YgR2Q/KGE9YXx8W10sYS5wdXNoKHRoaXMpLGIucHVzaChkLnRvU3RyaW5nKGEpKSxhLnBvcCgpKTpiLnB1c2goU3RyaW5nKGQpKX1yZXR1cm4gYi5qb2luKCIsIil9OwprLnNldD1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLk5hKWlmKGE9PT0ibGVuZ3RoIil7aWYoIUZkKGIpKXRocm93IGNiKEVycm9yKCJSYW5nZUVycm9yOiBMZW5ndGggcHJvcGVydHkgbXVzdCBiZSBhIHZhbGlkIGludGVnZXIuIikpO3RoaXMudmFsdWVzLmxlbmd0aD1OdW1iZXIoYil9ZWxzZSBGZChhKT90aGlzLnZhbHVlc1tOdW1iZXIoYSldPWI6dGhpcy5sYS5zZXQoYSxiKX07ay5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT0ibGVuZ3RoIj90aGlzLmxlbmd0aCgpOkZkKGEpP3RoaXMudmFsdWVzW051bWJlcihhKV06dGhpcy5sYS5nZXQoYSl9O2subGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aH07ay5GYT1mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLmxhLkZhKCksYj0wO2I8dGhpcy52YWx1ZXMubGVuZ3RoO2IrKyl0aGlzLnZhbHVlcy5oYXNPd25Qcm9wZXJ0eShiKSYmYS5wdXNoKFN0cmluZyhiKSk7cmV0dXJuIGF9OwprLmhjPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMubGEuaGMoKSxiPTA7Yjx0aGlzLnZhbHVlcy5sZW5ndGg7YisrKXRoaXMudmFsdWVzLmhhc093blByb3BlcnR5KGIpJiZhLnB1c2godGhpcy52YWx1ZXNbYl0pO3JldHVybiBhfTtrLmZjPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMubGEuZmMoKSxiPTA7Yjx0aGlzLnZhbHVlcy5sZW5ndGg7YisrKXRoaXMudmFsdWVzLmhhc093blByb3BlcnR5KGIpJiZhLnB1c2goW1N0cmluZyhiKSx0aGlzLnZhbHVlc1tiXV0pO3JldHVybiBhfTtrLnJlbW92ZT1mdW5jdGlvbihhKXtGZChhKT9kZWxldGUgdGhpcy52YWx1ZXNbTnVtYmVyKGEpXTp0aGlzLk5hfHx0aGlzLmxhLnJlbW92ZShhKX07ay5wb3A9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXMucG9wKCl9O2sucHVzaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5wdXNoLmFwcGx5KHRoaXMudmFsdWVzLHcoT2EuYXBwbHkoMCxhcmd1bWVudHMpKSl9O2suc2hpZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXMuc2hpZnQoKX07Cmsuc3BsaWNlPWZ1bmN0aW9uKGEsYil7dmFyIGM9T2EuYXBwbHkoMixhcmd1bWVudHMpO3JldHVybiBiPT09dm9pZCAwJiZjLmxlbmd0aD09PTA/bmV3IEdkKHRoaXMudmFsdWVzLnNwbGljZShhKSk6bmV3IEdkKHRoaXMudmFsdWVzLnNwbGljZS5hcHBseSh0aGlzLnZhbHVlcyxbYSxifHwwXS5jb25jYXQodyhjKSkpKX07ay51bnNoaWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLnVuc2hpZnQuYXBwbHkodGhpcy52YWx1ZXMsdyhPYS5hcHBseSgwLGFyZ3VtZW50cykpKX07ay5oYXM9ZnVuY3Rpb24oYSl7cmV0dXJuIEZkKGEpJiZ0aGlzLnZhbHVlcy5oYXNPd25Qcm9wZXJ0eShhKXx8dGhpcy5sYS5oYXMoYSl9O2suWmE9ZnVuY3Rpb24oKXt0aGlzLk5hPSEwO09iamVjdC5mcmVlemUodGhpcy52YWx1ZXMpfTtrLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTmF9OwpmdW5jdGlvbiBIZChhKXtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGgoKTtjKyspYS5oYXMoYykmJihiW2NdPWEuZ2V0KGMpKTtyZXR1cm4gYn07dmFyIElkPWZ1bmN0aW9uKGEsYil7dGhpcy5mdW5jdGlvbk5hbWU9YTt0aGlzLmllPWI7dGhpcy5sYT1uZXcgVWE7dGhpcy5OYT0hMX07az1JZC5wcm90b3R5cGU7ay50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZ1bmN0aW9uTmFtZX07ay5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZnVuY3Rpb25OYW1lfTtrLmdldEtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEdkKHRoaXMuRmEoKSl9O2suaW52b2tlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmllLmNhbGwuYXBwbHkodGhpcy5pZSxbbmV3IEpkKHRoaXMsYSldLmNvbmNhdCh3KE9hLmFwcGx5KDEsYXJndW1lbnRzKSkpKX07ay5hcHBseT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmllLmFwcGx5KG5ldyBKZCh0aGlzLGEpLGIpfTtrLk5jPWZ1bmN0aW9uKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKTt0cnl7cmV0dXJuIHRoaXMuaW52b2tlLmFwcGx5KHRoaXMsW2FdLmNvbmNhdCh3KGIpKSl9Y2F0Y2goYyl7fX07CmsuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhLmdldChhKX07ay5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLk5hfHx0aGlzLmxhLnNldChhLGIpfTtrLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sYS5oYXMoYSl9O2sucmVtb3ZlPWZ1bmN0aW9uKGEpe3RoaXMuTmF8fHRoaXMubGEucmVtb3ZlKGEpfTtrLkZhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuRmEoKX07ay5oYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLmhjKCl9O2suZmM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5mYygpfTtrLlphPWZ1bmN0aW9uKCl7dGhpcy5OYT0hMH07ay5IYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLk5hfTt2YXIgS2Q9ZnVuY3Rpb24oYSxiKXtJZC5jYWxsKHRoaXMsYSxiKX07d2EoS2QsSWQpO3ZhciBMZD1mdW5jdGlvbihhLGIpe0lkLmNhbGwodGhpcyxhLGIpfTt3YShMZCxJZCk7dmFyIEpkPWZ1bmN0aW9uKGEsYil7dGhpcy5pZT1hO3RoaXMuVD1ifTsKSmQucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuVDtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9mYihiLGEpOmF9O0pkLnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWUuZ2V0TmFtZSgpfTtKZC5wcm90b3R5cGUuamU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ULmplKCl9O3ZhciBNZD1mdW5jdGlvbigpe3RoaXMubWFwPW5ldyBNYXB9O01kLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLm1hcC5zZXQoYSxiKX07TWQucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tYXAuZ2V0KGEpfTt2YXIgTmQ9ZnVuY3Rpb24oKXt0aGlzLmtleXM9W107dGhpcy52YWx1ZXM9W119O05kLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLmtleXMucHVzaChhKTt0aGlzLnZhbHVlcy5wdXNoKGIpfTtOZC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMua2V5cy5pbmRleE9mKGEpO2lmKGI+LTEpcmV0dXJuIHRoaXMudmFsdWVzW2JdfTtmdW5jdGlvbiBPZCgpe3RyeXtyZXR1cm4gTWFwP25ldyBNZDpuZXcgTmR9Y2F0Y2goYSl7cmV0dXJuIG5ldyBOZH19O3ZhciBQZD1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgUGQpcmV0dXJuIGE7dmFyIGI7YTppZihhPT12b2lkIDB8fEFycmF5LmlzQXJyYXkoYSl8fENkKGEpKWI9ITA7ZWxzZXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgImJvb2xlYW4iOmNhc2UgIm51bWJlciI6Y2FzZSAic3RyaW5nIjpjYXNlICJmdW5jdGlvbiI6Yj0hMDticmVhayBhfWI9ITF9aWYoYil0aHJvdyBFcnJvcigiVHlwZSBvZiBnaXZlbiB2YWx1ZSBoYXMgYW4gZXF1aXZhbGVudCBQaXhpZSB0eXBlLiIpO3RoaXMudmFsdWU9YX07UGQucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9O1BkLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBTdHJpbmcodGhpcy52YWx1ZSl9O3ZhciBTZD1mdW5jdGlvbihhKXt0aGlzLnByb21pc2U9YTt0aGlzLk5hPSExO3RoaXMubGE9bmV3IFVhO3RoaXMubGEuc2V0KCJ0aGVuIixSZCh0aGlzKSk7dGhpcy5sYS5zZXQoImNhdGNoIixSZCh0aGlzLCEwKSk7dGhpcy5sYS5zZXQoImZpbmFsbHkiLFJkKHRoaXMsITEsITApKX07az1TZC5wcm90b3R5cGU7ay5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGEuZ2V0KGEpfTtrLnNldD1mdW5jdGlvbihhLGIpe3RoaXMuTmF8fHRoaXMubGEuc2V0KGEsYil9O2suaGFzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhLmhhcyhhKX07ay5yZW1vdmU9ZnVuY3Rpb24oYSl7dGhpcy5OYXx8dGhpcy5sYS5yZW1vdmUoYSl9O2suRmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYS5GYSgpfTtrLmhjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGEuaGMoKX07ay5mYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhLmZjKCl9Owp2YXIgUmQ9ZnVuY3Rpb24oYSxiLGMpe2I9Yj09PXZvaWQgMD8hMTpiO2M9Yz09PXZvaWQgMD8hMTpjO3JldHVybiBuZXcgS2QoIiIsZnVuY3Rpb24oZCxlKXtiJiYoZT1kLGQ9dm9pZCAwKTtjJiYoZT1kKTtkIGluc3RhbmNlb2YgS2R8fChkPXZvaWQgMCk7ZSBpbnN0YW5jZW9mIEtkfHwoZT12b2lkIDApO3ZhciBmPXRoaXMuVC53YigpLGc9ZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RyeXtyZXR1cm4gYz8obC5pbnZva2UoZiksYS5wcm9taXNlKTpsLmludm9rZShmLG4pfWNhdGNoKHApe3JldHVybiBQcm9taXNlLnJlamVjdChwIGluc3RhbmNlb2YgRXJyb3I/bmV3IFBkKHApOlN0cmluZyhwKSl9fX0saD1hLnByb21pc2UudGhlbihkJiZnKGQpLGUmJmcoZSkpO3JldHVybiBuZXcgU2QoaCl9KX07U2QucHJvdG90eXBlLlphPWZ1bmN0aW9uKCl7dGhpcy5OYT0hMH07U2QucHJvdG90eXBlLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuTmF9O2Z1bmN0aW9uIFRkKGEsYixjKXt2YXIgZD1PZCgpLGU9ZnVuY3Rpb24oZyxoKXtmb3IodmFyIGw9Zy5GYSgpLG49MDtuPGwubGVuZ3RoO24rKyloW2xbbl1dPWYoZy5nZXQobFtuXSkpfSxmPWZ1bmN0aW9uKGcpe2lmKGc9PT1udWxsfHxnPT09dm9pZCAwKXJldHVybiBnO3ZhciBoPWQuZ2V0KGcpO2lmKGgpcmV0dXJuIGg7aWYoZyBpbnN0YW5jZW9mIEdkKXt2YXIgbD1bXTtkLnNldChnLGwpO2Zvcih2YXIgbj1nLkZhKCkscD0wO3A8bi5sZW5ndGg7cCsrKWxbbltwXV09ZihnLmdldChuW3BdKSk7cmV0dXJuIGx9aWYoZyBpbnN0YW5jZW9mIFNkKXJldHVybiBnLnByb21pc2UudGhlbihmdW5jdGlvbih1KXtyZXR1cm4gVGQodSxiLDEpfSxmdW5jdGlvbih1KXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoVGQodSxiLDEpKX0pO2lmKGcgaW5zdGFuY2VvZiBrYil7dmFyIHE9e307ZC5zZXQoZyxxKTtlKGcscSk7cmV0dXJuIHF9aWYoZyBpbnN0YW5jZW9mIEtkKXt2YXIgcj1mdW5jdGlvbigpe2Zvcih2YXIgdT0KW10sdj0wO3Y8YXJndW1lbnRzLmxlbmd0aDt2KyspdVt2XT1VZChhcmd1bWVudHNbdl0sYixjKTt2YXIgeD1uZXcgaGIoYj9iLmplKCk6bmV3IFdhKTtiJiZ4LnVlKGIueGIoKSk7cmV0dXJuIGYoZy5hcHBseSh4LHUpKX07ZC5zZXQoZyxyKTtlKGcscik7cmV0dXJuIHJ9dmFyIHQ9ITE7c3dpdGNoKGMpe2Nhc2UgMTp0PSEwO2JyZWFrO2Nhc2UgMjp0PSExO2JyZWFrO2Nhc2UgMzp0PSExO2JyZWFrO2RlZmF1bHQ6fWlmKGcgaW5zdGFuY2VvZiBQZCYmdClyZXR1cm4gZy5nZXRWYWx1ZSgpO3N3aXRjaCh0eXBlb2YgZyl7Y2FzZSAiYm9vbGVhbiI6Y2FzZSAibnVtYmVyIjpjYXNlICJzdHJpbmciOmNhc2UgInVuZGVmaW5lZCI6cmV0dXJuIGc7Y2FzZSAib2JqZWN0IjppZihnPT09Cm51bGwpcmV0dXJuIG51bGx9fTtyZXR1cm4gZihhKX0KZnVuY3Rpb24gVWQoYSxiLGMpe3ZhciBkPU9kKCksZT1mdW5jdGlvbihnLGgpe2Zvcih2YXIgbCBpbiBnKWcuaGFzT3duUHJvcGVydHkobCkmJmguc2V0KGwsZihnW2xdKSl9LGY9ZnVuY3Rpb24oZyl7dmFyIGg9ZC5nZXQoZyk7aWYoaClyZXR1cm4gaDtpZihBcnJheS5pc0FycmF5KGcpfHxIYihnKSl7dmFyIGw9bmV3IEdkO2Quc2V0KGcsbCk7Zm9yKHZhciBuIGluIGcpZy5oYXNPd25Qcm9wZXJ0eShuKSYmbC5zZXQobixmKGdbbl0pKTtyZXR1cm4gbH1pZihDZChnKSl7dmFyIHA9bmV3IGtiO2Quc2V0KGcscCk7ZShnLHApO3JldHVybiBwfWlmKHR5cGVvZiBnPT09ImZ1bmN0aW9uIil7dmFyIHE9bmV3IEtkKCIiLGZ1bmN0aW9uKCl7Zm9yKHZhciB1PU9hLmFwcGx5KDAsYXJndW1lbnRzKSx2PVtdLHg9MDt4PHUubGVuZ3RoO3grKyl2W3hdPVRkKHRoaXMuZXZhbHVhdGUodVt4XSksYixjKTtyZXR1cm4gZih0aGlzLlQuUGooKShnLGcsdikpfSk7ZC5zZXQoZyxxKTtlKGcscSk7cmV0dXJuIHF9dmFyIHI9dHlwZW9mIGc7aWYoZz09PW51bGx8fHI9PT0ic3RyaW5nInx8cj09PSJudW1iZXIifHxyPT09ImJvb2xlYW4iKXJldHVybiBnO3ZhciB0PSExO3N3aXRjaChjKXtjYXNlIDE6dD0hMDticmVhaztjYXNlIDI6dD0hMTticmVhaztkZWZhdWx0On1pZihnIT09dm9pZCAwJiZ0KXJldHVybiBuZXcgUGQoZyl9O3JldHVybiBmKGEpfTt2YXIgVmQ9e3N1cHBvcnRlZE1ldGhvZHM6ImNvbmNhdCBldmVyeSBmaWx0ZXIgZm9yRWFjaCBoYXNPd25Qcm9wZXJ0eSBpbmRleE9mIGpvaW4gbGFzdEluZGV4T2YgbWFwIHBvcCBwdXNoIHJlZHVjZSByZWR1Y2VSaWdodCByZXZlcnNlIHNoaWZ0IHNsaWNlIHNvbWUgc29ydCBzcGxpY2UgdW5zaGlmdCB0b1N0cmluZyIuc3BsaXQoIiAiKSxjb25jYXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPHRoaXMubGVuZ3RoKCk7YysrKWIucHVzaCh0aGlzLmdldChjKSk7Zm9yKHZhciBkPTE7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKylpZihhcmd1bWVudHNbZF1pbnN0YW5jZW9mIEdkKWZvcih2YXIgZT1hcmd1bWVudHNbZF0sZj0wO2Y8ZS5sZW5ndGgoKTtmKyspYi5wdXNoKGUuZ2V0KGYpKTtlbHNlIGIucHVzaChhcmd1bWVudHNbZF0pO3JldHVybiBuZXcgR2QoYil9LGV2ZXJ5OmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXRoaXMubGVuZ3RoKCksZD0wO2Q8dGhpcy5sZW5ndGgoKSYmCmQ8YztkKyspaWYodGhpcy5oYXMoZCkmJiFiLmludm9rZShhLHRoaXMuZ2V0KGQpLGQsdGhpcykpcmV0dXJuITE7cmV0dXJuITB9LGZpbHRlcjpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLmxlbmd0aCgpLGQ9W10sZT0wO2U8dGhpcy5sZW5ndGgoKSYmZTxjO2UrKyl0aGlzLmhhcyhlKSYmYi5pbnZva2UoYSx0aGlzLmdldChlKSxlLHRoaXMpJiZkLnB1c2godGhpcy5nZXQoZSkpO3JldHVybiBuZXcgR2QoZCl9LGZvckVhY2g6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9dGhpcy5sZW5ndGgoKSxkPTA7ZDx0aGlzLmxlbmd0aCgpJiZkPGM7ZCsrKXRoaXMuaGFzKGQpJiZiLmludm9rZShhLHRoaXMuZ2V0KGQpLGQsdGhpcyl9LGhhc093blByb3BlcnR5OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuaGFzKGIpfSxpbmRleE9mOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmxlbmd0aCgpLGU9Yz09PXZvaWQgMD8wOk51bWJlcihjKTtlPDAmJihlPU1hdGgubWF4KGQrZSwwKSk7Zm9yKHZhciBmPQplO2Y8ZDtmKyspaWYodGhpcy5oYXMoZikmJnRoaXMuZ2V0KGYpPT09YilyZXR1cm4gZjtyZXR1cm4tMX0sam9pbjpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDx0aGlzLmxlbmd0aCgpO2QrKyljLnB1c2godGhpcy5nZXQoZCkpO3JldHVybiBjLmpvaW4oYil9LGxhc3RJbmRleE9mOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmxlbmd0aCgpLGU9ZC0xO2MhPT12b2lkIDAmJihlPWM8MD9kK2M6TWF0aC5taW4oYyxlKSk7Zm9yKHZhciBmPWU7Zj49MDtmLS0paWYodGhpcy5oYXMoZikmJnRoaXMuZ2V0KGYpPT09YilyZXR1cm4gZjtyZXR1cm4tMX0sbWFwOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPXRoaXMubGVuZ3RoKCksZD1bXSxlPTA7ZTx0aGlzLmxlbmd0aCgpJiZlPGM7ZSsrKXRoaXMuaGFzKGUpJiYoZFtlXT1iLmludm9rZShhLHRoaXMuZ2V0KGUpLGUsdGhpcykpO3JldHVybiBuZXcgR2QoZCl9LHBvcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvcCgpfSxwdXNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2guYXBwbHkodGhpcywKdyhPYS5hcHBseSgxLGFyZ3VtZW50cykpKX0scmVkdWNlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmxlbmd0aCgpLGUsZj0wO2lmKGMhPT12b2lkIDApZT1jO2Vsc2V7aWYoZD09PTApdGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogUmVkdWNlIG9uIExpc3Qgd2l0aCBubyBlbGVtZW50cy4iKSk7Zm9yKHZhciBnPTA7ZzxkO2crKylpZih0aGlzLmhhcyhnKSl7ZT10aGlzLmdldChnKTtmPWcrMTticmVha31pZihnPT09ZCl0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBSZWR1Y2Ugb24gTGlzdCB3aXRoIG5vIGVsZW1lbnRzLiIpKTt9Zm9yKHZhciBoPWY7aDxkO2grKyl0aGlzLmhhcyhoKSYmKGU9Yi5pbnZva2UoYSxlLHRoaXMuZ2V0KGgpLGgsdGhpcykpO3JldHVybiBlfSxyZWR1Y2VSaWdodDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5sZW5ndGgoKSxlLGY9ZC0xO2lmKGMhPT12b2lkIDApZT1jO2Vsc2V7aWYoZD09PTApdGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogUmVkdWNlUmlnaHQgb24gTGlzdCB3aXRoIG5vIGVsZW1lbnRzLiIpKTsKZm9yKHZhciBnPTE7Zzw9ZDtnKyspaWYodGhpcy5oYXMoZC1nKSl7ZT10aGlzLmdldChkLWcpO2Y9ZC0oZysxKTticmVha31pZihnPmQpdGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogUmVkdWNlUmlnaHQgb24gTGlzdCB3aXRoIG5vIGVsZW1lbnRzLiIpKTt9Zm9yKHZhciBoPWY7aD49MDtoLS0pdGhpcy5oYXMoaCkmJihlPWIuaW52b2tlKGEsZSx0aGlzLmdldChoKSxoLHRoaXMpKTtyZXR1cm4gZX0scmV2ZXJzZTpmdW5jdGlvbigpe2Zvcih2YXIgYT1IZCh0aGlzKSxiPWEubGVuZ3RoLTEsYz0wO2I+PTA7Yi0tLGMrKylhLmhhc093blByb3BlcnR5KGIpP3RoaXMuc2V0KGMsYVtiXSk6dGhpcy5yZW1vdmUoYyk7cmV0dXJuIHRoaXN9LHNoaWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hpZnQoKX0sc2xpY2U6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMubGVuZ3RoKCk7Yj09PXZvaWQgMCYmKGI9MCk7Yj1iPDA/TWF0aC5tYXgoZCtiLDApOk1hdGgubWluKGIsZCk7Yz1jPT09CnZvaWQgMD9kOmM8MD9NYXRoLm1heChkK2MsMCk6TWF0aC5taW4oYyxkKTtjPU1hdGgubWF4KGIsYyk7Zm9yKHZhciBlPVtdLGY9YjtmPGM7ZisrKWUucHVzaCh0aGlzLmdldChmKSk7cmV0dXJuIG5ldyBHZChlKX0sc29tZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLmxlbmd0aCgpLGQ9MDtkPHRoaXMubGVuZ3RoKCkmJmQ8YztkKyspaWYodGhpcy5oYXMoZCkmJmIuaW52b2tlKGEsdGhpcy5nZXQoZCksZCx0aGlzKSlyZXR1cm4hMDtyZXR1cm4hMX0sc29ydDpmdW5jdGlvbihhLGIpe3ZhciBjPUhkKHRoaXMpO2I9PT12b2lkIDA/Yy5zb3J0KCk6Yy5zb3J0KGZ1bmN0aW9uKGUsZil7cmV0dXJuIE51bWJlcihiLmludm9rZShhLGUsZikpfSk7Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspYy5oYXNPd25Qcm9wZXJ0eShkKT90aGlzLnNldChkLGNbZF0pOnRoaXMucmVtb3ZlKGQpO3JldHVybiB0aGlzfSxzcGxpY2U6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLnNwbGljZS5hcHBseSh0aGlzLApbYixjXS5jb25jYXQodyhPYS5hcHBseSgzLGFyZ3VtZW50cykpKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoKX0sdW5zaGlmdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy51bnNoaWZ0LmFwcGx5KHRoaXMsdyhPYS5hcHBseSgxLGFyZ3VtZW50cykpKX19O3ZhciBXZD17Y2hhckF0OjEsY29uY2F0OjEsaW5kZXhPZjoxLGxhc3RJbmRleE9mOjEsbWF0Y2g6MSxyZXBsYWNlOjEsc2VhcmNoOjEsc2xpY2U6MSxzcGxpdDoxLHN1YnN0cmluZzoxLHRvTG93ZXJDYXNlOjEsdG9Mb2NhbGVMb3dlckNhc2U6MSx0b1N0cmluZzoxLHRvVXBwZXJDYXNlOjEsdG9Mb2NhbGVVcHBlckNhc2U6MSx0cmltOjF9LFhkPW5ldyBUYSgiYnJlYWsiKSxZZD1uZXcgVGEoImNvbnRpbnVlIik7ZnVuY3Rpb24gWmQoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKSt0aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uICRkKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSkmJnRoaXMuZXZhbHVhdGUoYil9CmZ1bmN0aW9uIGFlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyk7aWYoIShmIGluc3RhbmNlb2YgR2QpKXRocm93IEVycm9yKCJFcnJvcjogTm9uLUxpc3QgYXJndW1lbnQgZ2l2ZW4gdG8gQXBwbHkgaW5zdHJ1Y3Rpb24uIik7aWYoZD09PW51bGx8fGQ9PT12b2lkIDApdGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogQ2FuJ3QgcmVhZCBwcm9wZXJ0eSAiK2UrIiBvZiAiK2QrIi4iKSk7dmFyIGc9dHlwZW9mIGQ9PT0ibnVtYmVyIjtpZih0eXBlb2YgZD09PSJib29sZWFuInx8Zyl7aWYoZT09PSJ0b1N0cmluZyIpe2lmKGcmJmYubGVuZ3RoKCkpe3ZhciBoPVRkKGYuZ2V0KDApKTt0cnl7cmV0dXJuIGQudG9TdHJpbmcoaCl9Y2F0Y2godSl7fX1yZXR1cm4gZC50b1N0cmluZygpfXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6ICIrZCsiLiIrZSsiIGlzIG5vdCBhIGZ1bmN0aW9uLiIpKTt9aWYodHlwZW9mIGQ9PT0KInN0cmluZyIpe2lmKFdkLmhhc093blByb3BlcnR5KGUpKXt2YXIgbD1UZChmLHZvaWQgMCwxKTtyZXR1cm4gVWQoZFtlXS5hcHBseShkLGwpLHRoaXMuVCl9dGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogIitlKyIgaXMgbm90IGEgZnVuY3Rpb24iKSk7fWlmKGQgaW5zdGFuY2VvZiBHZCl7aWYoZC5oYXMoZSkpe3ZhciBuPWQuZ2V0KFN0cmluZyhlKSk7aWYobiBpbnN0YW5jZW9mIEtkKXt2YXIgcD1IZChmKTtyZXR1cm4gbi5hcHBseSh0aGlzLlQscCl9dGhyb3cgY2IoRXJyb3IoIlR5cGVFcnJvcjogIitlKyIgaXMgbm90IGEgZnVuY3Rpb24iKSk7fWlmKFZkLnN1cHBvcnRlZE1ldGhvZHMuaW5kZXhPZihlKT49MCl7dmFyIHE9SGQoZik7cmV0dXJuIFZkW2VdLmNhbGwuYXBwbHkoVmRbZV0sW2QsdGhpcy5UXS5jb25jYXQodyhxKSkpfX1pZihkIGluc3RhbmNlb2YgS2R8fGQgaW5zdGFuY2VvZiBrYnx8ZCBpbnN0YW5jZW9mIFNkKXtpZihkLmhhcyhlKSl7dmFyIHI9ZC5nZXQoZSk7CmlmKHIgaW5zdGFuY2VvZiBLZCl7dmFyIHQ9SGQoZik7cmV0dXJuIHIuYXBwbHkodGhpcy5ULHQpfXRocm93IGNiKEVycm9yKCJUeXBlRXJyb3I6ICIrZSsiIGlzIG5vdCBhIGZ1bmN0aW9uIikpO31pZihlPT09InRvU3RyaW5nIilyZXR1cm4gZCBpbnN0YW5jZW9mIEtkP2QuZ2V0TmFtZSgpOmQudG9TdHJpbmcoKTtpZihlPT09Imhhc093blByb3BlcnR5IilyZXR1cm4gZC5oYXMoZi5nZXQoMCkpfWlmKGQgaW5zdGFuY2VvZiBQZCYmZT09PSJ0b1N0cmluZyIpcmV0dXJuIGQudG9TdHJpbmcoKTt0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBPYmplY3QgaGFzIG5vICciK2UrIicgcHJvcGVydHkuIikpO30KZnVuY3Rpb24gYmUoYSxiKXthPXRoaXMuZXZhbHVhdGUoYSk7aWYodHlwZW9mIGEhPT0ic3RyaW5nIil0aHJvdyBFcnJvcigiSW52YWxpZCBrZXkgbmFtZSBnaXZlbiBmb3IgYXNzaWdubWVudC4iKTt2YXIgYz10aGlzLlQ7aWYoIWMuaGFzKGEpKXRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGFzc2lnbiB0byB1bmRlZmluZWQgdmFsdWUgIitiKTt2YXIgZD10aGlzLmV2YWx1YXRlKGIpO2Muc2V0KGEsZCk7cmV0dXJuIGR9ZnVuY3Rpb24gY2UoKXt2YXIgYT1PYS5hcHBseSgwLGFyZ3VtZW50cyksYj10aGlzLlQud2IoKSxjPWViKGIsYSk7aWYoYyBpbnN0YW5jZW9mIFRhKXJldHVybiBjfWZ1bmN0aW9uIGRlKCl7cmV0dXJuIFhkfWZ1bmN0aW9uIGVlKGEpe2Zvcih2YXIgYj10aGlzLmV2YWx1YXRlKGEpLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShiW2NdKTtpZihkIGluc3RhbmNlb2YgVGEpcmV0dXJuIGR9fQpmdW5jdGlvbiBmZSgpe2Zvcih2YXIgYT10aGlzLlQsYj0wO2I8YXJndW1lbnRzLmxlbmd0aC0xO2IrPTIpe3ZhciBjPWFyZ3VtZW50c1tiXTtpZih0eXBlb2YgYz09PSJzdHJpbmciKXt2YXIgZD10aGlzLmV2YWx1YXRlKGFyZ3VtZW50c1tiKzFdKTthLlFoKGMsZCl9fX1mdW5jdGlvbiBnZSgpe3JldHVybiBZZH1mdW5jdGlvbiBoZShhLGIpe3JldHVybiBuZXcgVGEoYSx0aGlzLmV2YWx1YXRlKGIpKX1mdW5jdGlvbiBpZShhLGIpe3ZhciBjPU9hLmFwcGx5KDIsYXJndW1lbnRzKSxkO2Q9bmV3IEdkO2Zvcih2YXIgZT10aGlzLmV2YWx1YXRlKGIpLGY9MDtmPGUubGVuZ3RoO2YrKylkLnB1c2goZVtmXSk7dmFyIGc9WzUxLGEsZF0uY29uY2F0KHcoYykpO3RoaXMuVC5hZGQoYSx0aGlzLmV2YWx1YXRlKGcpKX1mdW5jdGlvbiBqZShhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpL3RoaXMuZXZhbHVhdGUoYil9CmZ1bmN0aW9uIGtlKGEsYil7dmFyIGM9dGhpcy5ldmFsdWF0ZShhKSxkPXRoaXMuZXZhbHVhdGUoYiksZT1jIGluc3RhbmNlb2YgUGQsZj1kIGluc3RhbmNlb2YgUGQ7cmV0dXJuIGV8fGY/ZSYmZj9jLmdldFZhbHVlKCk9PT1kLmdldFZhbHVlKCk6ITE6Yz09ZH1mdW5jdGlvbiBsZSgpe2Zvcih2YXIgYSxiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKylhPXRoaXMuZXZhbHVhdGUoYXJndW1lbnRzW2JdKTtyZXR1cm4gYX1mdW5jdGlvbiBtZShhLGIsYyxkKXtmb3IodmFyIGU9MDtlPGIoKTtlKyspe3ZhciBmPWEoYyhlKSksZz1lYihmLGQpO2lmKGcgaW5zdGFuY2VvZiBUYSl7aWYoZy50eXBlPT09ImJyZWFrIilicmVhaztpZihnLnR5cGU9PT0icmV0dXJuIilyZXR1cm4gZ319fQpmdW5jdGlvbiBuZShhLGIsYyl7aWYodHlwZW9mIGI9PT0ic3RyaW5nIilyZXR1cm4gbWUoYSxmdW5jdGlvbigpe3JldHVybiBiLmxlbmd0aH0sZnVuY3Rpb24oZil7cmV0dXJuIGZ9LGMpO2lmKGIgaW5zdGFuY2VvZiBrYnx8YiBpbnN0YW5jZW9mIFNkfHxiIGluc3RhbmNlb2YgR2R8fGIgaW5zdGFuY2VvZiBLZCl7dmFyIGQ9Yi5GYSgpLGU9ZC5sZW5ndGg7cmV0dXJuIG1lKGEsZnVuY3Rpb24oKXtyZXR1cm4gZX0sZnVuY3Rpb24oZil7cmV0dXJuIGRbZl19LGMpfX1mdW5jdGlvbiBvZShhLGIsYyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYiksZj10aGlzLmV2YWx1YXRlKGMpLGc9dGhpcy5UO3JldHVybiBuZShmdW5jdGlvbihoKXtnLnNldChkLGgpO3JldHVybiBnfSxlLGYpfQpmdW5jdGlvbiBwZShhLGIsYyl7dmFyIGQ9dGhpcy5ldmFsdWF0ZShhKSxlPXRoaXMuZXZhbHVhdGUoYiksZj10aGlzLmV2YWx1YXRlKGMpLGc9dGhpcy5UO3JldHVybiBuZShmdW5jdGlvbihoKXt2YXIgbD1nLndiKCk7bC5RaChkLGgpO3JldHVybiBsfSxlLGYpfWZ1bmN0aW9uIHFlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyksZz10aGlzLlQ7cmV0dXJuIG5lKGZ1bmN0aW9uKGgpe3ZhciBsPWcud2IoKTtsLmFkZChkLGgpO3JldHVybiBsfSxlLGYpfWZ1bmN0aW9uIHJlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyksZz10aGlzLlQ7cmV0dXJuIHNlKGZ1bmN0aW9uKGgpe2cuc2V0KGQsaCk7cmV0dXJuIGd9LGUsZil9CmZ1bmN0aW9uIHRlKGEsYixjKXt2YXIgZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKSxmPXRoaXMuZXZhbHVhdGUoYyksZz10aGlzLlQ7cmV0dXJuIHNlKGZ1bmN0aW9uKGgpe3ZhciBsPWcud2IoKTtsLlFoKGQsaCk7cmV0dXJuIGx9LGUsZil9ZnVuY3Rpb24gdWUoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKSxnPXRoaXMuVDtyZXR1cm4gc2UoZnVuY3Rpb24oaCl7dmFyIGw9Zy53YigpO2wuYWRkKGQsaCk7cmV0dXJuIGx9LGUsZil9CmZ1bmN0aW9uIHNlKGEsYixjKXtpZih0eXBlb2YgYj09PSJzdHJpbmciKXJldHVybiBtZShhLGZ1bmN0aW9uKCl7cmV0dXJuIGIubGVuZ3RofSxmdW5jdGlvbihkKXtyZXR1cm4gYltkXX0sYyk7aWYoYiBpbnN0YW5jZW9mIEdkKXJldHVybiBtZShhLGZ1bmN0aW9uKCl7cmV0dXJuIGIubGVuZ3RoKCl9LGZ1bmN0aW9uKGQpe3JldHVybiBiLmdldChkKX0sYyk7dGhyb3cgY2IoRXJyb3IoIlRoZSB2YWx1ZSBpcyBub3QgaXRlcmFibGUuIikpO30KZnVuY3Rpb24gdmUoYSxiLGMsZCl7ZnVuY3Rpb24gZShxLHIpe2Zvcih2YXIgdD0wO3Q8Zi5sZW5ndGgoKTt0Kyspe3ZhciB1PWYuZ2V0KHQpO3IuYWRkKHUscS5nZXQodSkpfX12YXIgZj10aGlzLmV2YWx1YXRlKGEpO2lmKCEoZiBpbnN0YW5jZW9mIEdkKSl0aHJvdyBFcnJvcigiVHlwZUVycm9yOiBOb24tTGlzdCBhcmd1bWVudCBnaXZlbiB0byBGb3JMZXQgaW5zdHJ1Y3Rpb24uIik7dmFyIGc9dGhpcy5ULGg9dGhpcy5ldmFsdWF0ZShkKSxsPWcud2IoKTtmb3IoZShnLGwpO2ZiKGwsYik7KXt2YXIgbj1lYihsLGgpO2lmKG4gaW5zdGFuY2VvZiBUYSl7aWYobi50eXBlPT09ImJyZWFrIilicmVhaztpZihuLnR5cGU9PT0icmV0dXJuIilyZXR1cm4gbn12YXIgcD1nLndiKCk7ZShsLHApO2ZiKHAsYyk7bD1wfX0KZnVuY3Rpb24gd2UoYSxiKXt2YXIgYz1PYS5hcHBseSgyLGFyZ3VtZW50cyksZD10aGlzLlQsZT10aGlzLmV2YWx1YXRlKGIpO2lmKCEoZSBpbnN0YW5jZW9mIEdkKSl0aHJvdyBFcnJvcigiRXJyb3I6IG5vbi1MaXN0IHZhbHVlIGdpdmVuIGZvciBGbiBhcmd1bWVudCBuYW1lcy4iKTtyZXR1cm4gbmV3IEtkKGEsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZj1PYS5hcHBseSgwLGFyZ3VtZW50cyksZz1kLndiKCk7Zy54YigpPT09dm9pZCAwJiZnLnVlKHRoaXMuVC54YigpKTtmb3IodmFyIGg9W10sbD0wO2w8Zi5sZW5ndGg7bCsrKXt2YXIgbj10aGlzLmV2YWx1YXRlKGZbbF0pO2hbbF09bn1mb3IodmFyIHA9ZS5nZXQoImxlbmd0aCIpLHE9MDtxPHA7cSsrKXE8aC5sZW5ndGg/Zy5hZGQoZS5nZXQocSksaFtxXSk6Zy5hZGQoZS5nZXQocSksdm9pZCAwKTtnLmFkZCgiYXJndW1lbnRzIixuZXcgR2QoaCkpO3ZhciByPWViKGcsYyk7aWYociBpbnN0YW5jZW9mIFRhKXJldHVybiByLnR5cGU9PT0KInJldHVybiI/ci5kYXRhOnJ9fSgpKX1mdW5jdGlvbiB4ZShhKXt2YXIgYj10aGlzLmV2YWx1YXRlKGEpLGM9dGhpcy5UO2lmKHllJiYhYy5oYXMoYikpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKGIrIiBpcyBub3QgZGVmaW5lZC4iKTtyZXR1cm4gYy5nZXQoYil9CmZ1bmN0aW9uIHplKGEsYil7dmFyIGMsZD10aGlzLmV2YWx1YXRlKGEpLGU9dGhpcy5ldmFsdWF0ZShiKTtpZihkPT09dm9pZCAwfHxkPT09bnVsbCl0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBDYW5ub3QgcmVhZCBwcm9wZXJ0aWVzIG9mICIrZCsiIChyZWFkaW5nICciK2UrIicpIikpO2lmKGQgaW5zdGFuY2VvZiBrYnx8ZCBpbnN0YW5jZW9mIFNkfHxkIGluc3RhbmNlb2YgR2R8fGQgaW5zdGFuY2VvZiBLZCljPWQuZ2V0KGUpO2Vsc2UgaWYodHlwZW9mIGQ9PT0ic3RyaW5nIillPT09Imxlbmd0aCI/Yz1kLmxlbmd0aDpGZChlKSYmKGM9ZFtlXSk7ZWxzZSBpZihkIGluc3RhbmNlb2YgUGQpcmV0dXJuO3JldHVybiBjfWZ1bmN0aW9uIEFlKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSk+dGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiBCZShhLGIpe3JldHVybiB0aGlzLmV2YWx1YXRlKGEpPj10aGlzLmV2YWx1YXRlKGIpfQpmdW5jdGlvbiBDZShhLGIpe3ZhciBjPXRoaXMuZXZhbHVhdGUoYSksZD10aGlzLmV2YWx1YXRlKGIpO2MgaW5zdGFuY2VvZiBQZCYmKGM9Yy5nZXRWYWx1ZSgpKTtkIGluc3RhbmNlb2YgUGQmJihkPWQuZ2V0VmFsdWUoKSk7cmV0dXJuIGM9PT1kfWZ1bmN0aW9uIERlKGEsYil7cmV0dXJuIUNlLmNhbGwodGhpcyxhLGIpfWZ1bmN0aW9uIEVlKGEsYixjKXt2YXIgZD1bXTt0aGlzLmV2YWx1YXRlKGEpP2Q9dGhpcy5ldmFsdWF0ZShiKTpjJiYoZD10aGlzLmV2YWx1YXRlKGMpKTt2YXIgZT1lYih0aGlzLlQsZCk7aWYoZSBpbnN0YW5jZW9mIFRhKXJldHVybiBlfXZhciB5ZT0hMTsKZnVuY3Rpb24gRmUoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKTx0aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uIEdlKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSk8PXRoaXMuZXZhbHVhdGUoYil9ZnVuY3Rpb24gSGUoKXtmb3IodmFyIGE9bmV3IEdkLGI9MDtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKXt2YXIgYz10aGlzLmV2YWx1YXRlKGFyZ3VtZW50c1tiXSk7YS5wdXNoKGMpfXJldHVybiBhfWZ1bmN0aW9uIEllKCl7Zm9yKHZhciBhPW5ldyBrYixiPTA7Yjxhcmd1bWVudHMubGVuZ3RoLTE7Yis9Mil7dmFyIGM9U3RyaW5nKHRoaXMuZXZhbHVhdGUoYXJndW1lbnRzW2JdKSksZD10aGlzLmV2YWx1YXRlKGFyZ3VtZW50c1tiKzFdKTthLnNldChjLGQpfXJldHVybiBhfWZ1bmN0aW9uIEplKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSkldGhpcy5ldmFsdWF0ZShiKX0KZnVuY3Rpb24gS2UoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKSp0aGlzLmV2YWx1YXRlKGIpfWZ1bmN0aW9uIExlKGEpe3JldHVybi10aGlzLmV2YWx1YXRlKGEpfWZ1bmN0aW9uIE1lKGEpe3JldHVybiF0aGlzLmV2YWx1YXRlKGEpfWZ1bmN0aW9uIE5lKGEsYil7cmV0dXJuIWtlLmNhbGwodGhpcyxhLGIpfWZ1bmN0aW9uIE9lKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gUGUoYSxiKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKXx8dGhpcy5ldmFsdWF0ZShiKX1mdW5jdGlvbiBRZShhLGIpe3ZhciBjPXRoaXMuZXZhbHVhdGUoYSk7dGhpcy5ldmFsdWF0ZShiKTtyZXR1cm4gY31mdW5jdGlvbiBSZShhKXtyZXR1cm4gdGhpcy5ldmFsdWF0ZShhKX1mdW5jdGlvbiBTZSgpe3JldHVybiBPYS5hcHBseSgwLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVGUoYSl7cmV0dXJuIG5ldyBUYSgicmV0dXJuIix0aGlzLmV2YWx1YXRlKGEpKX0KZnVuY3Rpb24gVWUoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKTtpZihkPT09bnVsbHx8ZD09PXZvaWQgMCl0aHJvdyBjYihFcnJvcigiVHlwZUVycm9yOiBDYW4ndCBzZXQgcHJvcGVydHkgIitlKyIgb2YgIitkKyIuIikpOyhkIGluc3RhbmNlb2YgS2R8fGQgaW5zdGFuY2VvZiBHZHx8ZCBpbnN0YW5jZW9mIGtiKSYmZC5zZXQoU3RyaW5nKGUpLGYpO3JldHVybiBmfWZ1bmN0aW9uIFZlKGEsYil7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSktdGhpcy5ldmFsdWF0ZShiKX0KZnVuY3Rpb24gV2UoYSxiLGMpe3ZhciBkPXRoaXMuZXZhbHVhdGUoYSksZT10aGlzLmV2YWx1YXRlKGIpLGY9dGhpcy5ldmFsdWF0ZShjKTtpZighQXJyYXkuaXNBcnJheShlKXx8IUFycmF5LmlzQXJyYXkoZikpdGhyb3cgRXJyb3IoIkVycm9yOiBNYWxmb3JtZWQgc3dpdGNoIGluc3RydWN0aW9uLiIpO2Zvcih2YXIgZyxoPSExLGw9MDtsPGUubGVuZ3RoO2wrKylpZihofHxkPT09dGhpcy5ldmFsdWF0ZShlW2xdKSlpZihnPXRoaXMuZXZhbHVhdGUoZltsXSksZyBpbnN0YW5jZW9mIFRhKXt2YXIgbj1nLnR5cGU7aWYobj09PSJicmVhayIpcmV0dXJuO2lmKG49PT0icmV0dXJuInx8bj09PSJjb250aW51ZSIpcmV0dXJuIGd9ZWxzZSBoPSEwO2lmKGYubGVuZ3RoPT09ZS5sZW5ndGgrMSYmKGc9dGhpcy5ldmFsdWF0ZShmW2YubGVuZ3RoLTFdKSxnIGluc3RhbmNlb2YgVGEmJihnLnR5cGU9PT0icmV0dXJuInx8Zy50eXBlPT09ImNvbnRpbnVlIikpKXJldHVybiBnfQpmdW5jdGlvbiBYZShhLGIsYyl7cmV0dXJuIHRoaXMuZXZhbHVhdGUoYSk/dGhpcy5ldmFsdWF0ZShiKTp0aGlzLmV2YWx1YXRlKGMpfWZ1bmN0aW9uIFllKGEpe3ZhciBiPXRoaXMuZXZhbHVhdGUoYSk7cmV0dXJuIGIgaW5zdGFuY2VvZiBLZD8iZnVuY3Rpb24iOnR5cGVvZiBifWZ1bmN0aW9uIFplKCl7Zm9yKHZhciBhPXRoaXMuVCxiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKyl7dmFyIGM9YXJndW1lbnRzW2JdO3R5cGVvZiBjIT09InN0cmluZyJ8fGEuYWRkKGMsdm9pZCAwKX19CmZ1bmN0aW9uICRlKGEsYixjLGQpe3ZhciBlPXRoaXMuZXZhbHVhdGUoZCk7aWYodGhpcy5ldmFsdWF0ZShjKSl7dmFyIGY9ZWIodGhpcy5ULGUpO2lmKGYgaW5zdGFuY2VvZiBUYSl7aWYoZi50eXBlPT09ImJyZWFrIilyZXR1cm47aWYoZi50eXBlPT09InJldHVybiIpcmV0dXJuIGZ9fWZvcig7dGhpcy5ldmFsdWF0ZShhKTspe3ZhciBnPWViKHRoaXMuVCxlKTtpZihnIGluc3RhbmNlb2YgVGEpe2lmKGcudHlwZT09PSJicmVhayIpYnJlYWs7aWYoZy50eXBlPT09InJldHVybiIpcmV0dXJuIGd9dGhpcy5ldmFsdWF0ZShiKX19ZnVuY3Rpb24gYWYoYSl7cmV0dXJufk51bWJlcih0aGlzLmV2YWx1YXRlKGEpKX1mdW5jdGlvbiBiZihhLGIpe3JldHVybiBOdW1iZXIodGhpcy5ldmFsdWF0ZShhKSk8PE51bWJlcih0aGlzLmV2YWx1YXRlKGIpKX1mdW5jdGlvbiBjZihhLGIpe3JldHVybiBOdW1iZXIodGhpcy5ldmFsdWF0ZShhKSk+Pk51bWJlcih0aGlzLmV2YWx1YXRlKGIpKX0KZnVuY3Rpb24gZGYoYSxiKXtyZXR1cm4gTnVtYmVyKHRoaXMuZXZhbHVhdGUoYSkpPj4+TnVtYmVyKHRoaXMuZXZhbHVhdGUoYikpfWZ1bmN0aW9uIGVmKGEsYil7cmV0dXJuIE51bWJlcih0aGlzLmV2YWx1YXRlKGEpKSZOdW1iZXIodGhpcy5ldmFsdWF0ZShiKSl9ZnVuY3Rpb24gZmYoYSxiKXtyZXR1cm4gTnVtYmVyKHRoaXMuZXZhbHVhdGUoYSkpXk51bWJlcih0aGlzLmV2YWx1YXRlKGIpKX1mdW5jdGlvbiBnZihhLGIpe3JldHVybiBOdW1iZXIodGhpcy5ldmFsdWF0ZShhKSl8TnVtYmVyKHRoaXMuZXZhbHVhdGUoYikpfWZ1bmN0aW9uIGhmKCl7fQpmdW5jdGlvbiBrZihhLGIsYyl7dHJ5e3ZhciBkPXRoaXMuZXZhbHVhdGUoYik7aWYoZCBpbnN0YW5jZW9mIFRhKXJldHVybiBkfWNhdGNoKGgpe2lmKCEoaCBpbnN0YW5jZW9mIGJiJiZoLlNuKSl0aHJvdyBoO3ZhciBlPXRoaXMuVC53YigpO2EhPT0iIiYmKGggaW5zdGFuY2VvZiBiYiYmKGg9aC52byksZS5hZGQoYSxuZXcgUGQoaCkpKTt2YXIgZj10aGlzLmV2YWx1YXRlKGMpLGc9ZWIoZSxmKTtpZihnIGluc3RhbmNlb2YgVGEpcmV0dXJuIGd9fWZ1bmN0aW9uIGxmKGEsYil7dmFyIGMsZDt0cnl7ZD10aGlzLmV2YWx1YXRlKGEpfWNhdGNoKGYpe2lmKCEoZiBpbnN0YW5jZW9mIGJiJiZmLlNuKSl0aHJvdyBmO2M9Zn12YXIgZT10aGlzLmV2YWx1YXRlKGIpO2lmKGUgaW5zdGFuY2VvZiBUYSlyZXR1cm4gZTtpZihjKXRocm93IGM7aWYoZCBpbnN0YW5jZW9mIFRhKXJldHVybiBkfTt2YXIgbmY9ZnVuY3Rpb24oKXt0aGlzLkg9bmV3IGdiO21mKHRoaXMpfTtuZi5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ILnJrKGEpfTt2YXIgbWY9ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24oYyxkKXt2YXIgZT1uZXcgTGQoU3RyaW5nKGMpLGQpO2UuWmEoKTt2YXIgZj1TdHJpbmcoYyk7YS5ILkguc2V0KGYsZSk7ZGIuc2V0KGYsZSl9O2IoIm1hcCIsSWUpO2IoImFuZCIsdGQpO2IoImNvbnRhaW5zIix3ZCk7YigiZXF1YWxzIix1ZCk7Yigib3IiLHZkKTtiKCJzdGFydHNXaXRoIix4ZCk7YigidmFyaWFibGUiLHlkKX07bmYucHJvdG90eXBlLlFiPWZ1bmN0aW9uKGEpe3RoaXMuSC5RYihhKX07dmFyIHBmPWZ1bmN0aW9uKCl7dGhpcy5LPSExO3RoaXMuSD1uZXcgZ2I7b2YodGhpcyk7dGhpcy5LPSEwfTtwZi5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihhKXtyZXR1cm4gcWYodGhpcy5ILnJrKGEpKX07dmFyIHJmPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gcWYoYS5ILkpxKGIsYykpfTtwZi5wcm90b3R5cGUuWmE9ZnVuY3Rpb24oKXt0aGlzLkguWmEoKX07CnZhciBvZj1mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbihjLGQpe3ZhciBlPVN0cmluZyhjKSxmPW5ldyBMZChlLGQpO2YuWmEoKTthLkguSC5zZXQoZSxmKTtkYi5zZXQoZSxmKX07YigwLFpkKTtiKDEsJGQpO2IoMixhZSk7YigzLGJlKTtiKDU2LGVmKTtiKDU3LGJmKTtiKDU4LGFmKTtiKDU5LGdmKTtiKDYwLGNmKTtiKDYxLGRmKTtiKDYyLGZmKTtiKDUzLGNlKTtiKDQsZGUpO2IoNSxlZSk7Yig2OCxrZik7Yig1MixmZSk7Yig2LGdlKTtiKDQ5LGhlKTtiKDcsSGUpO2IoOCxJZSk7Yig5LGVlKTtiKDUwLGllKTtiKDEwLGplKTtiKDEyLGtlKTtiKDEzLGxlKTtiKDY3LGxmKTtiKDUxLHdlKTtiKDQ3LG9lKTtiKDU0LHBlKTtiKDU1LHFlKTtiKDYzLHZlKTtiKDY0LHJlKTtiKDY1LHRlKTtiKDY2LHVlKTtiKDE1LHhlKTtiKDE2LHplKTtiKDE3LHplKTtiKDE4LEFlKTtiKDE5LEJlKTtiKDIwLENlKTtiKDIxLERlKTtiKDIyLEVlKTtiKDIzLEZlKTtiKDI0LEdlKTtiKDI1LEplKTtiKDI2LApLZSk7YigyNyxMZSk7YigyOCxNZSk7YigyOSxOZSk7Yig0NSxPZSk7YigzMCxQZSk7YigzMixRZSk7YigzMyxRZSk7YigzNCxSZSk7YigzNSxSZSk7Yig0NixTZSk7YigzNixUZSk7Yig0MyxVZSk7YigzNyxWZSk7YigzOCxXZSk7YigzOSxYZSk7Yig0MCxZZSk7Yig0NCxoZik7Yig0MSxaZSk7Yig0MiwkZSl9O3BmLnByb3RvdHlwZS5qZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkguamUoKX07cGYucHJvdG90eXBlLlFiPWZ1bmN0aW9uKGEpe3RoaXMuSC5RYihhKX07cGYucHJvdG90eXBlLnNkPWZ1bmN0aW9uKGEpe3RoaXMuSC5zZChhKX07CmZ1bmN0aW9uIHFmKGEpe2lmKGEgaW5zdGFuY2VvZiBUYXx8YSBpbnN0YW5jZW9mIEtkfHxhIGluc3RhbmNlb2YgR2R8fGEgaW5zdGFuY2VvZiBrYnx8YSBpbnN0YW5jZW9mIFNkfHxhIGluc3RhbmNlb2YgUGR8fGE9PT1udWxsfHxhPT09dm9pZCAwfHx0eXBlb2YgYT09PSJzdHJpbmcifHx0eXBlb2YgYT09PSJudW1iZXIifHx0eXBlb2YgYT09PSJib29sZWFuIilyZXR1cm4gYX07dmFyIHNmPWZ1bmN0aW9uKGEpe3RoaXMubWVzc2FnZT1hfTtmdW5jdGlvbiB0ZihhKXthLnF2PSEwO3JldHVybiBhfTt2YXIgdWY9dGYoZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT09Im51bWJlciJ9KSx2Zj10ZihmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIn0pLHdmPXRmKGZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09PSJib29sZWFuIn0pO2Z1bmN0aW9uIHhmKGEpe3ZhciBiPSIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIlthXTtyZXR1cm4gYj09PXZvaWQgMD9uZXcgc2YoIlZhbHVlICIrYSsiIGNhbiBub3QgYmUgZW5jb2RlZCBpbiB3ZWItc2FmZSBiYXNlNjQgZGljdGlvbmFyeS4iKTpifTtmdW5jdGlvbiB5ZihhKXtzd2l0Y2goYSl7Y2FzZSAxOnJldHVybiIxIjtjYXNlIDI6Y2FzZSA0OnJldHVybiIwIjtkZWZhdWx0OnJldHVybiItIn19O3ZhciB6Zj0vXlsxLTlhLXpBLVpfLV1bMS05YS1jXVsxLTlhLXZdXGQkLztmdW5jdGlvbiBBZihhLGIpe2Zvcih2YXIgYz0iIixkPSEwO2E+Nzspe3ZhciBlPWEmMzE7YT4+PTU7ZD9kPSExOmV8PTMyO2M9IiIreGYoZSkrY31hPDw9MjtkfHwoYXw9MzIpO3JldHVybiBjPSIiK3hmKGF8YikrY31mdW5jdGlvbiBCZihhLGIpe3JldHVybiBiPT09dm9pZCAwfHxiPT09MD8iIjoiIitBZihhLDEpK3hmKGIpfQpmdW5jdGlvbiBDZihhLGIpe3ZhciBjO3ZhciBkPWEuaGksZT1hLmJrO2Q9PT12b2lkIDA/Yz0iIjooZXx8KGU9MCksYz0iIitBZigxLDEpK3hmKGQ8PDJ8ZSkpO3ZhciBmPSI0IitjK0JmKDIsYS5xciksZyxoPWEuSW87Zz1oJiZ6Zi50ZXN0KGgpPyIiK0FmKDMsMikraDoiIjt2YXIgbDt2YXIgbj1hLmN0aWQ7aWYobiYmYil7dmFyIHA9QWYoNSwzKSxxPW4uc3BsaXQoIi0iKSxyPXFbMF0udG9VcHBlckNhc2UoKTtpZihyIT09IkdUTSImJnIhPT0iT1BUIilsPSIiO2Vsc2V7dmFyIHQ9cVsxXTtsPSIiK3AreGYoMSt0Lmxlbmd0aCkrKGEuTHN8fDApK3R9fWVsc2UgbD0iIjt2YXIgdT1hLmNhbm9uaWNhbElkLHY9YS5tYyx4PWEuenYseT1mK2crQmYoNCxhLkRvKStsK0JmKDYsYS5EdCkrKHU/IiIrQWYoNywzKSt4Zih1Lmxlbmd0aCkrdToiIikrKHY/IiIrQWYoOCwzKSt4Zih2Lmxlbmd0aCkrdjoiIikrKHg/IiIrQWYoOSwzKSt4Zih4Lmxlbmd0aCkreDoiIiksejt2YXIgQz1hLnpyO0M9CkM9PT12b2lkIDA/e306Qztmb3IodmFyIEQ9W10sST1tKE9iamVjdC5rZXlzKEMpKSxHPUkubmV4dCgpOyFHLmRvbmU7Rz1JLm5leHQoKSl7dmFyIE49Ry52YWx1ZTtEW051bWJlcihOKV09Q1tOXX1pZihELmxlbmd0aCl7dmFyIFM9QWYoMTAsMyksVztpZihELmxlbmd0aD09PTApVz14ZigwKTtlbHNle2Zvcih2YXIgZWE9W10samE9MCxmYT0hMSxzYT0wO3NhPEQubGVuZ3RoO3NhKyspe2ZhPSEwO3ZhciBkYT1zYSU2O0Rbc2FdJiYoamF8PTE8PGRhKTtkYT09PTUmJihlYS5wdXNoKHhmKGphKSksamE9MCxmYT0hMSl9ZmEmJmVhLnB1c2goeGYoamEpKTtXPWVhLmpvaW4oIiIpfXZhciBtYT1XO3o9IiIrUyt4ZihtYS5sZW5ndGgpK21hfWVsc2Ugej0iIjt2YXIgUGE9YS5VcyxGYT1hLm50O3JldHVybiB5K3orKFBhPyIiK0FmKDExLDMpK3hmKFBhLmxlbmd0aCkrUGE6IiIpKyhGYT8iIitBZigxMywzKSt4ZihGYS5sZW5ndGgpK0ZhOiIiKStCZigxNCxhLkV0KStCZigxNSxhLnJ2KStCZigxNiwKYS5Bdil9O2Z1bmN0aW9uIERmKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hLmNoYXJDb2RlQXQoZCk7ZTwxMjg/YltjKytdPWU6KGU8MjA0OD9iW2MrK109ZT4+NnwxOTI6KChlJjY0NTEyKT09NTUyOTYmJmQrMTxhLmxlbmd0aCYmKGEuY2hhckNvZGVBdChkKzEpJjY0NTEyKT09NTYzMjA/KGU9NjU1MzYrKChlJjEwMjMpPDwxMCkrKGEuY2hhckNvZGVBdCgrK2QpJjEwMjMpLGJbYysrXT1lPj4xOHwyNDAsYltjKytdPWU+PjEyJjYzfDEyOCk6YltjKytdPWU+PjEyfDIyNCxiW2MrK109ZT4+NiY2M3wxMjgpLGJbYysrXT1lJjYzfDEyOCl9cmV0dXJuIGJ9O2Z1bmN0aW9uIEVmKGEsYil7Zm9yKHZhciBjPXFiKGIpLGQ9bmV3IFVpbnQ4QXJyYXkoYy5sZW5ndGgpLGU9MDtlPGMubGVuZ3RoO2UrKylkW2VdPWMuY2hhckNvZGVBdChlKTtpZihkLmxlbmd0aCE9PTMyKXRocm93IEVycm9yKCJLZXkgaXMgbm90IDMyIGJ5dGVzLiIpO3JldHVybiBGZihhLGQpfWZ1bmN0aW9uIEZmKGEsYil7aWYoYT09PSIiKXJldHVybiIiO3ZhciBjPVpiKGEpLGQ9Yi5zbGljZSgtMiksZT1bXS5jb25jYXQodyhkKSx3KGMpKS5tYXAoZnVuY3Rpb24oZyxoKXtyZXR1cm4gZ15iW2glYi5sZW5ndGhdfSksZj1uZXcgVWludDhBcnJheShbXS5jb25jYXQodyhlKSx3KGQpKSk7cmV0dXJuIHBiKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHcoZikpKS5yZXBsYWNlKC9cLiskLywiIil9O3ZhciBHZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYil7cmV0dXJue3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9fX1yZXR1cm57Y3A6YSgiY29uc2VudCIpLFprOmEoImNvbnZlcnRfY2FzZV90byIpLGFsOmEoImNvbnZlcnRfZmFsc2VfdG8iKSxibDphKCJjb252ZXJ0X251bGxfdG8iKSxlcDphKCJjb252ZXJ0X3RvX2Jvb2xlYW4iKSxhaDphKCJjb252ZXJ0X3RvX251bWJlciIpLGZsOmEoImNvbnZlcnRfdHJ1ZV90byIpLGlsOmEoImNvbnZlcnRfdW5kZWZpbmVkX3RvIiksWXQ6YSgiZGVidWdfbW9kZV9tZXRhZGF0YSIpLFliOmEoImZ1bmN0aW9uIiksUm06YSgiaW5zdGFuY2VfbmFtZSIpLE5xOmEoImxpdmVfb25seSIpLE9xOmEoIm1hbHdhcmVfZGlzYWJsZWQiKSxNRVRBREFUQTphKCJtZXRhZGF0YSIpLFJxOmEoIm9yaWdpbmFsX2FjdGl2aXR5X2lkIiksVHU6YSgib3JpZ2luYWxfdmVuZG9yX3RlbXBsYXRlX2lkIiksU3U6YSgib25jZV9vbl9sb2FkIiksUXE6YSgib25jZV9wZXJfZXZlbnQiKSwKa246YSgib25jZV9wZXJfbG9hZCIpLFZ1OmEoInByaW9yaXR5X292ZXJyaWRlIiksWXU6YSgicmVzcGVjdGVkX2NvbnNlbnRfdHlwZXMiKSx0bjphKCJzZXR1cF90YWdzIikseWo6YSgidGFnX2lkIiksRG46YSgidGVhcmRvd25fdGFncyIpLHBsOmEoImRpc2FibGVkX2luX2dvb2dsZV9tb2RlIiksRnE6YSgiZ2VuZXJhdGVkX3RhZ2dpbmdfbWV0YWRhdGEiKX19KCk7ZnVuY3Rpb24gSGYoYSxiKXt2YXIgYz17fTtjW0dmLlliXT0iX18iK2E7Zm9yKHZhciBkIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShkKSYmKGNbInZ0cF8iK2RdPWJbZF0pO3JldHVybiBjfTtmdW5jdGlvbiBJZihhLGIpe2I9Yj09PXZvaWQgMD8hMTpiO3ZhciBjLGQ7cmV0dXJuKChjPWRhdGEpPT1udWxsPzA6KGQ9Yy5ibG9iKT09bnVsbD8wOmQuaGFzT3duUHJvcGVydHkoYSkpPyEhZGF0YS5ibG9iW2FdOmJ9ZnVuY3Rpb24gRShhKXt2YXIgYjtiPWI9PT12b2lkIDA/IiI6Yjt2YXIgYyxkO3JldHVybigoYz1kYXRhKT09bnVsbD8wOihkPWMuYmxvYik9PW51bGw/MDpkLmhhc093blByb3BlcnR5KGEpKT9TdHJpbmcoZGF0YS5ibG9iW2FdKTpifWZ1bmN0aW9uIEpmKGEpe3ZhciBiLGM7cmV0dXJuKChiPWRhdGEpPT1udWxsPzA6KGM9Yi5ibG9iKT09bnVsbD8wOmMuaGFzT3duUHJvcGVydHkoYSkpP051bWJlcihkYXRhLmJsb2JbYV0pOjB9ZnVuY3Rpb24gS2YoYSl7dmFyIGI7Yj1iPT09dm9pZCAwP1tdOmI7dmFyIGMsZCxlPShjPWRhdGEpPT1udWxsP3ZvaWQgMDooZD1jLmJsb2IpPT1udWxsP3ZvaWQgMDpkW2FdO3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6Yn0KZnVuY3Rpb24gTGYoYSl7dmFyIGI7Yj1iPT09dm9pZCAwPyIiOmI7dmFyIGM9TWYoNDYpO3JldHVybiBjJiYoYz09bnVsbD8wOmMuaGFzT3duUHJvcGVydHkoYSkpP1N0cmluZyhjW2FdKTpifWZ1bmN0aW9uIE5mKGEsYil7dmFyIGM9TWYoNDYpO3JldHVybiBjJiYoYz09bnVsbD8wOmMuaGFzT3duUHJvcGVydHkoYSkpP051bWJlcihjW2FdKTpifWZ1bmN0aW9uIE1mKGEpe3ZhciBiLGM7cmV0dXJuKGI9ZGF0YSk9PW51bGw/dm9pZCAwOihjPWIuYmxvYik9PW51bGw/dm9pZCAwOmNbYV19O3ZhciBPZj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7ZD1FcnJvci5jYWxsKHRoaXMsYyk7dGhpcy5tZXNzYWdlPWQubWVzc2FnZTsic3RhY2siaW4gZCYmKHRoaXMuc3RhY2s9ZC5zdGFjayk7dGhpcy5wZXJtaXNzaW9uSWQ9YTt0aGlzLnBhcmFtZXRlcnM9Yjt0aGlzLm5hbWU9IlBlcm1pc3Npb25FcnJvciJ9O3dhKE9mLEVycm9yKTtPZi5wcm90b3R5cGUuZ2V0TWVzc2FnZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2V9O2Z1bmN0aW9uIFBmKGEsYil7aWYoQXJyYXkuaXNBcnJheShhKSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsImNvbnRleHQiLHt2YWx1ZTp7bGluZTpiWzBdfX0pO2Zvcih2YXIgYz0xO2M8YS5sZW5ndGg7YysrKVBmKGFbY10sYltjXSl9fTtmdW5jdGlvbiBRZigpe3JldHVybiBmdW5jdGlvbihhLGIpe3ZhciBjO3ZhciBkPVJmO2EgaW5zdGFuY2VvZiBiYj8oYS5IPWQsYz1hKTpjPW5ldyBiYihhLGQpO3ZhciBlPWM7YiYmZS5LLnB1c2goYik7dGhyb3cgZTt9fWZ1bmN0aW9uIFJmKGEpe2lmKCFhLmxlbmd0aClyZXR1cm4gYTthLnB1c2goe2lkOiJtYWluIixsaW5lOjB9KTtmb3IodmFyIGI9YS5sZW5ndGgtMTtiPjA7Yi0tKUFiKGFbYl0uaWQpJiZhLnNwbGljZShiKyssMSk7Zm9yKHZhciBjPWEubGVuZ3RoLTE7Yz4wO2MtLSlhW2NdLmxpbmU9YVtjLTFdLmxpbmU7YS5zcGxpY2UoMCwxKTtyZXR1cm4gYX07dmFyIFNmPVJlZ0V4cCgiW14wLTlcXC4rLV0iLCJnIiksVGY9UmVnRXhwKCJbXjAtOVxcLCstXSIsImciKSxVZj1SZWdFeHAoIlteMC05Ky1dIiwiZyIpOwpmdW5jdGlvbiBWZihhLGIpe2lmKHR5cGVvZiBhPT09Im51bWJlciIpcmV0dXJuIGE7dmFyIGM9U3RyaW5nKGEpLGQ7aWYoYj09PSJBVVRPTUFUSUMiKXt2YXIgZT0oYy5tYXRjaCgvXC4vZyl8fFtdKS5sZW5ndGgsZj0oYy5tYXRjaCgvLC9nKXx8W10pLmxlbmd0aCxnPSJOT05FIjtpZihlPjAmJmY+MCl7dmFyIGg9Yy5sYXN0SW5kZXhPZigiLiIpPmMubGFzdEluZGV4T2YoIiwiKTtoJiZlPT09MT9nPSJQRVJJT0QiOmh8fGYhPT0xfHwoZz0iQ09NTUEiKX1lbHNlIGU9PT0xP2c9KGMuc3BsaXQoIi4iKVsxXS5tYXRjaCgvWzAtOV0vZyl8fFtdKS5sZW5ndGghPT0zPyJQRVJJT0QiOiJOT05FIjpmPT09MSYmKGc9KGMuc3BsaXQoIiwiKVsxXS5tYXRjaCgvWzAtOV0vZyl8fFtdKS5sZW5ndGghPT0zPyJDT01NQSI6Ik5PTkUiKTtkPWd9ZWxzZSBkPWI9PT0iQ09NTUEiPyJDT01NQSI6IlBFUklPRCI7dmFyIGwsbjtkPT09IlBFUklPRCI/KGw9Ii4iLG49U2YpOmQ9PT0iQ09NTUEiPyhsPSIsIiwKbj1UZik6KGw9IiIsbj1VZik7dmFyIHA9Yy5yZXBsYWNlKG4sIiIpO2lmKGwhPT0iIiYmcC5zcGxpdChsKS5sZW5ndGg+MilyZXR1cm4gYTt2YXIgcT1wLnJlcGxhY2UoLywvZywiLiIpO2lmKHE9PT0iIilyZXR1cm4gYTt2YXIgcj1OdW1iZXIocSk7cmV0dXJuIGlzTmFOKHIpP2E6cn07dmFyIFdmPVtdLFhmPXt9O2Z1bmN0aW9uIFlmKGEpe3JldHVybiBXZlthXT09PXZvaWQgMD8hMTpXZlthXX07dmFyIFpmPWZ1bmN0aW9uKCl7dGhpcy5IPXt9fSwkZj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7KGQ9YS5IKVtiXSE9bnVsbHx8KGRbYl09W10pO2EuSFtiXS5wdXNoKGZ1bmN0aW9uKCl7cmV0dXJuIGMuYXBwbHkobnVsbCx3KE9hLmFwcGx5KDAsYXJndW1lbnRzKSkpfSl9O2Z1bmN0aW9uIGFnKGEsYixjLGQpe2lmKGEpZm9yKHZhciBlPTA7ZTxhLmxlbmd0aDtlKyspe3ZhciBmPXZvaWQgMCxnPSJBIHBvbGljeSBmdW5jdGlvbiBkZW5pZWQgdGhlIHBlcm1pc3Npb24gcmVxdWVzdCI7dHJ5e2Y9YVtlXShiLGMsZCksZys9Ii4ifWNhdGNoKGgpe2c9dHlwZW9mIGg9PT0ic3RyaW5nIj9nKygiOiAiK2gpOmggaW5zdGFuY2VvZiBFcnJvcj9nKygiOiAiK2gubWVzc2FnZSk6ZysiLiJ9aWYoIWYpdGhyb3cgbmV3IE9mKGMsZCxnKTt9fQpmdW5jdGlvbiBiZyhhLGIpe3ZhciBjPWNnKGRnLkgsYixmdW5jdGlvbigpe3JldHVybnt9fSk7dHJ5e3JldHVybiBjKGEpLCEwfWNhdGNoKGQpe3JldHVybiExfX1mdW5jdGlvbiBjZyhhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe2lmKGQpe3ZhciBlPWEuSFtkXSxmPWEuSC5hbGw7aWYoZXx8Zil7dmFyIGc9Yy5hcHBseSh2b2lkIDAsW2RdLmNvbmNhdCh3KE9hLmFwcGx5KDEsYXJndW1lbnRzKSkpKTthZyhlLGIsZCxnKTthZyhmLGIsZCxnKX19fX07dmFyIGdnPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzO3RoaXMuSz17fTt0aGlzLkg9bmV3IFpmO3ZhciBlPXt9LGY9e30sZz1jZyh0aGlzLkgsYSxmdW5jdGlvbihoKXtyZXR1cm4gaCYmZVtoXT9lW2hdLmFwcGx5KHZvaWQgMCxbaF0uY29uY2F0KHcoT2EuYXBwbHkoMSxhcmd1bWVudHMpKSkpOnt9fSk7R2IoYixmdW5jdGlvbihoLGwpe2Z1bmN0aW9uIG4ocSl7dmFyIHI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO2lmKCFwW3FdKXRocm93IGVnKHEse30sIlRoZSByZXF1ZXN0ZWQgYWRkaXRpb25hbCBwZXJtaXNzaW9uICIrcSsiIGlzIG5vdCBjb25maWd1cmVkLiIpO2cuYXBwbHkobnVsbCxbcV0uY29uY2F0KHcocikpKX12YXIgcD17fTtHYihsLGZ1bmN0aW9uKHEscil7dmFyIHQ9ZmcocSxyLGMpO3BbcV09dC5hc3NlcnQ7ZVtxXXx8KGVbcV09dC5hYSk7dC5PbiYmIWZbcV0mJihmW3FdPXQuT24pfSk7ZC5LW2hdPWZ1bmN0aW9uKHEscil7dmFyIHQ9cFtxXTtpZighdCl0aHJvdyBlZyhxLAp7fSwiVGhlIHJlcXVlc3RlZCBwZXJtaXNzaW9uICIrcSsiIGlzIG5vdCBjb25maWd1cmVkLiIpO3ZhciB1PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTt0LmFwcGx5KHZvaWQgMCx1KTtnLmFwcGx5KHZvaWQgMCx1KTt2YXIgdj1mW3FdO3YmJnYuYXBwbHkobnVsbCxbbl0uY29uY2F0KHcodS5zbGljZSgxKSkpKX19KX0saGc9ZnVuY3Rpb24oYSl7cmV0dXJuIGRnLktbYV18fGZ1bmN0aW9uKCl7fX07CmZ1bmN0aW9uIGZnKGEsYixjKXt0cnl7dmFyIGQ9Y1siX18iK2FdO2lmKCFkKXRocm93IEVycm9yKCJObyBmdW5jdGlvbiBmb3VuZCBmb3IgcGVybWlzc2lvbjogIithKyIuIik7dmFyIGU9SGYoYSxiKTtlLnZ0cF9wZXJtaXNzaW9uTmFtZT1hO2UudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcj1lZztkZWxldGUgZVtHZi5ZYl07cmV0dXJuIGQoZSl9Y2F0Y2goZil7cmV0dXJue2Fzc2VydDpmdW5jdGlvbihnKXt0aHJvdyBuZXcgT2YoZyx7fSwiUGVybWlzc2lvbiAiK2crIiBpcyB1bmtub3duLiIpO30sYWE6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgT2YoYSx7fSwiUGVybWlzc2lvbiAiK2ErIiBpcyB1bmtub3duLiIpO319fX1mdW5jdGlvbiBlZyhhLGIsYyl7cmV0dXJuIG5ldyBPZihhLGIsYyl9O3ZhciBpZz1FKDUpLGpnPUUoMjApLGtnPUUoMSksbGc9ITE7dmFyIG1nPXt9O21nLlBvPUlmKDI5KTttZy5Lcj1JZigyOCk7ZnVuY3Rpb24gbmcoYSl7dmFyIGI9MSxjLGQsZTtpZihhKWZvcihiPTAsZD1hLmxlbmd0aC0xO2Q+PTA7ZC0tKWU9YS5jaGFyQ29kZUF0KGQpLGI9KGI8PDYmMjY4NDM1NDU1KStlKyhlPDwxNCksYz1iJjI2NjMzODMwNCxiPWMhPT0wP2JeYz4+MjE6YjtyZXR1cm4gYn07dmFyIG9nPWZ1bmN0aW9uKGEpe3RoaXMuY2FjaGU9YX07b2cucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXt2YXIgYj1uZyhhKSxjPXRoaXMuY2FjaGUuZ2V0KGIpO2lmKCFjKXJldHVybntwcm9taXNlOnZvaWQgMCxLajowfTtpZihEYXRlLm5vdygpPj1jLnRpbWVzdGFtcCs5RTUpcmV0dXJuIHRoaXMuY2FjaGUuZGVsZXRlKGIpLHtwcm9taXNlOnZvaWQgMCxLajozfTt2YXIgZD1jLnJlc29sdmVkVmFsdWU/MjoxO3JldHVybntwcm9taXNlOmMucmVzb2x2ZWRWYWx1ZT9Qcm9taXNlLnJlc29sdmUoYy5yZXNvbHZlZFZhbHVlKTpjLnByb21pc2UsS2o6ZH19O29nLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz17cHJvbWlzZTpiLHJlc29sdmVkVmFsdWU6dm9pZCAwLHRpbWVzdGFtcDpEYXRlLm5vdygpfTt0aGlzLmNhY2hlLnNldChuZyhhKSxjKTtiLnRoZW4oZnVuY3Rpb24oZCl7Yy5yZXNvbHZlZFZhbHVlPWR9KX07ZnVuY3Rpb24gcGcoYSl7c3dpdGNoKGEpe2Nhc2UgMDpicmVhaztjYXNlIDk6cmV0dXJuImU0IjtjYXNlIDY6cmV0dXJuImU1IjtjYXNlIDE0OnJldHVybiJlNiI7ZGVmYXVsdDpyZXR1cm4iZTcifX07dmFyIEY9e0Q6e1hhOiJhZF9wZXJzb25hbGl6YXRpb24iLGthOiJhZF9zdG9yYWdlIixtYToiYWRfdXNlcl9kYXRhIixyYToiYW5hbHl0aWNzX3N0b3JhZ2UiLG5jOiJyZWdpb24iLHNhOiJjb25zZW50X3VwZGF0ZWQiLFlnOiJ3YWl0X2Zvcl91cGRhdGUiLGVoOiJlbmRwb2ludF90eXBlIixxcDoiYXBwX3JlbW92ZSIscnA6ImFwcF9zdG9yZV9yZWZ1bmQiLHRwOiJhcHBfc3RvcmVfc3Vic2NyaXB0aW9uX2NhbmNlbCIsdXA6ImFwcF9zdG9yZV9zdWJzY3JpcHRpb25fY29udmVydCIsdnA6ImFwcF9zdG9yZV9zdWJzY3JpcHRpb25fcmVuZXciLHdwOiJjb25zZW50X3VwZGF0ZSIseHA6ImNvbnZlcnNpb24iLHZsOiJhZGRfcGF5bWVudF9pbmZvIix3bDoiYWRkX3NoaXBwaW5nX2luZm8iLHhlOiJhZGRfdG9fY2FydCIseWU6InJlbW92ZV9mcm9tX2NhcnQiLHhsOiJ2aWV3X2NhcnQiLEFkOiJiZWdpbl9jaGVja291dCIsZXU6ImdlbmVyYXRlX2xlYWQiLHplOiJzZWxlY3RfaXRlbSIsb2M6InZpZXdfaXRlbV9saXN0IiwKUWM6InNlbGVjdF9wcm9tb3Rpb24iLHFjOiJ2aWV3X3Byb21vdGlvbiIsSWI6InB1cmNoYXNlIixBZToicmVmdW5kIixyYzoidmlld19pdGVtIix5bDoiYWRkX3RvX3dpc2hsaXN0Iix5cDoiZXhjZXB0aW9uIix6cDoiZmlyc3Rfb3BlbiIsQXA6ImZpcnN0X3Zpc2l0Iix3YToiZ3RhZy5jb25maWciLEpiOiJndGFnLmdldCIsQnA6ImluX2FwcF9wdXJjaGFzZSIsc2M6InBhZ2VfdmlldyIsQ3A6InNjcmVlbl92aWV3IixEcDoic2Vzc2lvbl9zdGFydCIsRXA6InNvdXJjZV91cGRhdGUiLEZwOiJ0aW1pbmdfY29tcGxldGUiLEdwOiJ0cmFja19zb2NpYWwiLHlmOiJ1c2VyX2VuZ2FnZW1lbnQiLEhwOiJ1c2VyX2lkX3VwZGF0ZSIsZmg6ImJyYWlkX2xpbmtfZGVjb3JhdGlvbl9zb3VyY2UiLGdoOiJicmFpZF9zdG9yYWdlX3NvdXJjZSIsQmQ6ImdjbGlkX2xpbmtfZGVjb3JhdGlvbl9zb3VyY2UiLENkOiJnY2xpZF9zdG9yYWdlX3NvdXJjZSIsU2I6ImdjbGdiIixsYjoiZ2NsaWQiLHpsOiJnY2xpZF9sZW4iLApCZToiZ2NsZ3MiLENlOiJnY2xscCIsRGU6ImdjbHN0IixtYjoiYWRzX2RhdGFfcmVkYWN0aW9uIix6ZjoiZ2FkX3NvdXJjZSIsQWY6ImdhZF9zb3VyY2Vfc3JjIixEZDoiZ2NsaWRfdXJsIixBbDoiZ2Nsc3JjIixCZjoiZ2JyYWlkIixFZToid2JyYWlkIixSYzoiYWxsb3dfYWRfcGVyc29uYWxpemF0aW9uX3NpZ25hbHMiLHJpOiJhbGxvd19jdXN0b21fc2NyaXB0cyIsaGg6ImFsbG93X2Rpc3BsYXlfZmVhdHVyZXMiLHNpOiJhbGxvd19lbmhhbmNlZF9jb252ZXJzaW9ucyIsU2M6ImFsbG93X2dvb2dsZV9zaWduYWxzIix1aToiYWxsb3dfaW50ZXJlc3RfZ3JvdXBzIixJcDoiYXBwX2lkIixKcDoiYXBwX2luc3RhbGxlcl9pZCIsS3A6ImFwcF9uYW1lIixMcDoiYXBwX3ZlcnNpb24iLEVkOiJhdWlkIixmdToiYXV0b19kZXRlY3Rpb25fZW5hYmxlZCIsQmw6ImF1dG9fZXZlbnQiLENsOiJhd19yZW1hcmtldGluZyIsaWg6ImF3X3JlbWFya2V0aW5nX29ubHkiLENmOiJkaXNjb3VudCIsRGY6ImF3X2ZlZWRfY291bnRyeSIsCkVmOiJhd19mZWVkX2xhbmd1YWdlIixIYToiaXRlbXMiLEZmOiJhd19tZXJjaGFudF9pZCIsd2k6ImF3X2Jhc2tldF90eXBlIixHZjoiY2FtcGFpZ25fY29udGVudCIsSGY6ImNhbXBhaWduX2lkIixJZjoiY2FtcGFpZ25fbWVkaXVtIixKZjoiY2FtcGFpZ25fbmFtZSIsS2Y6ImNhbXBhaWduIixMZjoiY2FtcGFpZ25fc291cmNlIixNZjoiY2FtcGFpZ25fdGVybSIsS2I6ImNsaWVudF9pZCIsRGw6InJuZCIseGk6ImNvbnNlbnRfdXBkYXRlX3R5cGUiLE1wOiJjb250ZW50X2dyb3VwIixOcDoiY29udGVudF90eXBlIixGZDoiY29udmVyc2lvbl9jb29raWVfcHJlZml4Iix5aToiY29udmVyc2lvbl9pZCIsdWM6ImNvbnZlcnNpb25fbGlua2VyIixIZDoiY29udmVyc2lvbl9saW5rZXJfZGlzYWJsZWQiLEZlOiJjb252ZXJzaW9uX2FwaSIsemk6Il8mcmNiIixqaDoiY29va2llX2RlcHJlY2F0aW9uIixMYjoiY29va2llX2RvbWFpbiIsQ2I6ImNvb2tpZV9leHBpcmVzIixUYjoiY29va2llX2ZsYWdzIiwKSWQ6ImNvb2tpZV9uYW1lIix2YzoiY29va2llX3BhdGgiLG5iOiJjb29raWVfcHJlZml4IixKZDoiY29va2llX3VwZGF0ZSIsVGM6ImNvdW50cnkiLGViOiJjdXJyZW5jeSIsR2U6ImN1c3RvbWVyX2xpZmV0aW1lX3ZhbHVlIixraDoiY3VzdG9tZXJfdHlwZSIsSGU6ImN1c3RvbV9tYXAiLEFpOiJnY2xkY19saW5rX2RlY29yYXRpb25fc291cmNlIixCaToiZ2NsZGNfc3RvcmFnZV9zb3VyY2UiLE5mOiJnY2xkYyIsS2Q6ImRjbGlkIixFbDoiZGVidWdfbW9kZSIsT2E6ImRldmVsb3Blcl9pZCIsT3A6ImRpc2FibGVfbWVyY2hhbnRfcmVwb3J0ZWRfcHVyY2hhc2VzIixVYzoiZGNfY3VzdG9tX3BhcmFtcyIsUHA6ImRjX25hdHVyYWxfc2VhcmNoIixRcDoiZHluYW1pY19ldmVudF9zZXR0aW5ncyIsRmw6ImFmZmlsaWF0aW9uIixtaDoiY2hlY2tvdXRfb3B0aW9uIixDaToiY2hlY2tvdXRfc3RlcCIsR2w6ImNvdXBvbiIsT2Y6Iml0ZW1fbGlzdF9uYW1lIixEaToibGlzdF9uYW1lIixScDoicHJvbW90aW9ucyIsCkxkOiJzaGlwcGluZyIsSGw6InRheCIsbmg6ImVuZ2FnZW1lbnRfdGltZV9tc2VjIixvaDoiZW5oYW5jZWRfY2xpZW50X2lkIixTcDoiZW5oYW5jZWRfY29udmVyc2lvbnMiLGd1OiJlbmhhbmNlZF9jb252ZXJzaW9uc19hdXRvbWF0aWNfc2V0dGluZ3MiLEllOiJlc3RpbWF0ZWRfZGVsaXZlcnlfZGF0ZSIsUGY6ImV2ZW50X2NhbGxiYWNrIixUcDoiZXZlbnRfY2F0ZWdvcnkiLFZjOiJldmVudF9kZXZlbG9wZXJfaWRfc3RyaW5nIixNZDoiZXZlbnRfaWQiLEVpOiJfZXZlbnRfam9pbl9pZCIsVXA6ImV2ZW50X2xhYmVsIixVYjoiZXZlbnQiLElsOiJfJmFlIixGaToiZXZlbnRfc2V0dGluZ3MiLHBoOiJldmVudF90aW1lb3V0IixWcDoiZGVzY3JpcHRpb24iLFdwOiJmYXRhbCIsWHA6ImV4cGVyaW1lbnRzIixOZDoiZXh0X2NsaWVudF9pZCIsR2k6ImZpcmViYXNlX2lkIixRZjoiZmlyc3RfcGFydHlfY29sbGVjdGlvbiIsUmY6Il94XzIwIixWYjoiX3hfMTkiLFlwOiJmbGlnaHRfZXJyb3JfY29kZSIsClpwOiJmbGlnaHRfZXJyb3JfbWVzc2FnZSIsSGk6ImZsX2FjdGl2aXR5X2NhdGVnb3J5IixJaToiZmxfYWN0aXZpdHlfZ3JvdXAiLHFoOiJmbF9hZHZlcnRpc2VyX2lkIixKaToibWF0Y2hfaWQiLEpsOiJmbF9yYW5kb21fbnVtYmVyIixLbDoidHJhbiIsTGw6InUiLHJoOiJnYWNfZ2NsaWQiLEplOiJnYWNfd2JyYWlkIixNbDoiZ2FjX3dicmFpZF9tdWx0aXBsZV9jb252ZXJzaW9ucyIsYXE6ImdhX3Jlc3RyaWN0X2RvbWFpbiIsTmw6ImdhX3RlbXBfY2xpZW50X2lkIixicToiZ2FfdGVtcF9lY2lkIixLZToiZ2Rwcl9hcHBsaWVzIixzaDoiX2d0X21ldGFkYXRhIixPbDoiZ2VvX2dyYW51bGFyaXR5IixTZjoidmFsdWVfY2FsbGJhY2siLFRmOiJ2YWx1ZV9rZXkiLFRhOiJnb29nbGVfYW5hbHlzaXNfcGFyYW1zIixMZToiX2dvb2dsZV9uZyIsY3E6Il9vbm8iLFVmOiJnb29nbGVfc2lnbmFscyIsZnE6Imdvb2dsZV90bGQiLHRoOiJncHBfc2lkIix1aDoiZ3BwX3N0cmluZyIsT2Q6Imdyb3VwcyIsClBsOiJnc2FfZXhwZXJpbWVudF9pZCIsVmY6Imd0YWdfZXZlbnRfZmVhdHVyZV91c2FnZSIsUWw6Imd0bV91cCIsTWU6ImlmcmFtZV9zdGF0ZSIsV2Y6Imlnbm9yZV9yZWZlcnJlciIsUmw6ImludGVybmFsX3RyYWZmaWNfcmVzdWx0cyIsU2w6Il9pc19mcG0iLFljOiJpc19sZWdhY3lfY29udmVydGVkIixaYzoiaXNfbGVnYWN5X2xvYWRlZCIsS2k6ImlzX3Bhc3N0aHJvdWdoIixQZDoiX2xwcyIsdGI6Imxhbmd1YWdlIixMaToibGVnYWN5X2RldmVsb3Blcl9pZF9zdHJpbmciLERiOiJsaW5rZXIiLFhmOiJhY2NlcHRfaW5jb21pbmciLHdjOiJkZWNvcmF0ZV9mb3JtcyIsQWE6ImRvbWFpbnMiLGFkOiJ1cmxfcG9zaXRpb24iLFFkOiJtZXJjaGFudF9mZWVkX2xhYmVsIixSZDoibWVyY2hhbnRfZmVlZF9sYW5ndWFnZSIsU2Q6Im1lcmNoYW50X2lkIixUbDoibWV0aG9kIixncToibmFtZSIsVWw6Im5hdmlnYXRpb25fdHlwZSIsTmU6Im5ld19jdXN0b21lciIsTWk6Im5vbl9pbnRlcmFjdGlvbiIsCmhxOiJvcHRpbWl6ZV9pZCIsVmw6InBhZ2VfaG9zdG5hbWUiLFlmOiJwYWdlX3BhdGgiLFVhOiJwYWdlX3JlZmVycmVyIixNYjoicGFnZV90aXRsZSIsaXE6InBhc3NlbmdlcnMiLFdsOiJwaG9uZV9jb252ZXJzaW9uX2NhbGxiYWNrIixqcToicGhvbmVfY29udmVyc2lvbl9jb3VudHJ5X2NvZGUiLFhsOiJwaG9uZV9jb252ZXJzaW9uX2Nzc19jbGFzcyIsa3E6InBob25lX2NvbnZlcnNpb25faWRzIixZbDoicGhvbmVfY29udmVyc2lvbl9udW1iZXIiLFpsOiJwaG9uZV9jb252ZXJzaW9uX29wdGlvbnMiLGxxOiJfcGxhdGludW1fcmVxdWVzdF9zdGF0dXMiLG1xOiJfcHJvdGVjdGVkX2F1ZGllbmNlX2VuYWJsZWQiLHdoOiJxdWFudGl0eSIseGg6InJlZGFjdF9kZXZpY2VfaW5mbyIsYW06InJlZmVycmFsX2V4Y2x1c2lvbl9kZWZpbml0aW9uIixodToiX3JlcXVlc3Rfc3RhcnRfdGltZSIsV2I6InJlc3RyaWN0ZWRfZGF0YV9wcm9jZXNzaW5nIixucToicmV0b2tlbiIsb3E6InNhbXBsZV9yYXRlIiwKTmk6InNjcmVlbl9uYW1lIixiZDoic2NyZWVuX3Jlc29sdXRpb24iLGJtOiJfc2NyaXB0X3NvdXJjZSIscHE6InNlYXJjaF90ZXJtIixUZDoic2VuZF9wYWdlX3ZpZXciLFhiOiJzZW5kX3RvIixPaToic2VydmVyX2NvbnRhaW5lcl8zcF9lbnJpY2htZW50IixkZDoic2VydmVyX2NvbnRhaW5lcl91cmwiLHFxOiJzZXNzaW9uX2F0dHJpYnV0ZXNfZW5jb2RlZCIseWg6InNlc3Npb25fZHVyYXRpb24iLHpoOiJzZXNzaW9uX2VuZ2FnZWQiLFBpOiJzZXNzaW9uX2VuZ2FnZWRfdGltZSIseGM6InNlc3Npb25faWQiLEFoOiJzZXNzaW9uX251bWJlciIsWmY6Il9zaGFyZWRfdXNlcl9pZCIsVWQ6ImRlbGl2ZXJ5X3Bvc3RhbF9jb2RlIixpdToiX3RhZ19maXJpbmdfZGVsYXkiLGp1OiJfdGFnX2ZpcmluZ190aW1lIixrdToidGVtcG9yYXJ5X2NsaWVudF9pZCIsUWk6InRlc3Rvbmx5IixycToiX3RpbWV6b25lIixQZToidG9wbW9zdF91cmwiLFFlOiJ0cmFja2luZ19pZCIsUmk6InRyYWZmaWNfdHlwZSIsClBhOiJ0cmFuc2FjdGlvbl9pZCIsZG06InRyYW5zYWN0aW9uX2lkX3NvdXJjZSIseWM6InRyYW5zcG9ydF91cmwiLHNxOiJ0cmlwX3R5cGUiLFZkOiJ1cGRhdGUiLHpjOiJ1cmxfcGFzc3Rocm91Z2giLGZtOiJ1cHRncyIsY2c6Il91c2VyX2FnZW50X2FyY2hpdGVjdHVyZSIsZGc6Il91c2VyX2FnZW50X2JpdG5lc3MiLGVnOiJfdXNlcl9hZ2VudF9mdWxsX3ZlcnNpb25fbGlzdCIsZmc6Il91c2VyX2FnZW50X21vYmlsZSIsZ2c6Il91c2VyX2FnZW50X21vZGVsIixoZzoiX3VzZXJfYWdlbnRfcGxhdGZvcm0iLGlnOiJfdXNlcl9hZ2VudF9wbGF0Zm9ybV92ZXJzaW9uIixqZzoiX3VzZXJfYWdlbnRfd293NjQiLEFjOiJ1c2VyX2RhdGEiLGdtOiJ1c2VyX2RhdGFfYXV0b19sYXRlbmN5IixobToidXNlcl9kYXRhX2F1dG9fbWV0YSIsaW06InVzZXJfZGF0YV9hdXRvX211bHRpIixqbToidXNlcl9kYXRhX2F1dG9fc2VsZWN0b3JzIixrbToidXNlcl9kYXRhX2F1dG9fc3RhdHVzIixCYzoidXNlcl9kYXRhX21vZGUiLApsbToidXNlcl9kYXRhX3NldHRpbmdzIixmYjoidXNlcl9pZCIsV2Q6InVzZXJfcHJvcGVydGllcyIsb206Il91c2VyX3JlZ2lvbiIsa2c6InVzX3ByaXZhY3lfc3RyaW5nIixRYToidmFsdWUiLHFtOiJ3YnJhaWRfbXVsdGlwbGVfY29udmVyc2lvbnMiLGVkOiJfZnBtX3BhcmFtZXRlcnMiLFdpOiJfaG9zdF9uYW1lIixWbToiX2luX3BhZ2VfY29tbWFuZCIsWWk6Il9pcF9vdmVycmlkZSIsWm06Il9pc19wYXNzdGhyb3VnaF9jaWQiLEpoOiJfbWVhc3VyZW1lbnRfdHlwZSIsZGU6Im5vbl9wZXJzb25hbGl6ZWRfYWRzIixvajoiX3NzdF9wYXJhbWV0ZXJzIixZcToic2d0bV9nZW9fdXNlcl9jb3VudHJ5IixHZDoiY29udmVyc2lvbl9sYWJlbCIsemE6InBhZ2VfbG9jYXRpb24iLFdjOiJfZXh0cmFjdGVkX2RhdGEiLFhjOiJnbG9iYWxfZGV2ZWxvcGVyX2lkX3N0cmluZyIsT2U6InRjX3ByaXZhY3lfc3RyaW5nIn19O3ZhciBIPXtKOntTbzoiYWJvcnRfd2l0aG91dF9mYWlsIixraToiYWNjZXB0X2J5X2RlZmF1bHQiLEJrOiJhZGRfdGFnX3RpbWluZyIsRGs6ImFkc19jb25zZW50X2dyYW50ZWQiLHZkOiJhZHNfZXZlbnRfcGFnZV92aWV3Iix3ZDoiYWxsb3dfYWRfcGVyc29uYWxpemF0aW9uIixRdDoiYXV0b19ldmVudCIsS2s6ImJhdGNoX29uX25hdmlnYXRpb24iLFhnOiJiaXNjb3R0aV9qb2luX2lkIixQazoiY2xpZW50X2lkX3NvdXJjZSIsdWY6ImNvbnNlbnRfZXZlbnRfaWQiLHZmOiJjb25zZW50X3ByaW9yaXR5X2lkIixTdDoiY29uc2VudF9zdGF0ZSIsc2E6ImNvbnNlbnRfdXBkYXRlZCIsd2Y6ImNvbnZlcnNpb25fbGlua2VyX2VuYWJsZWQiLFR0OiJjb252ZXJzaW9uX21hcmtpbmdfY2FsbGVkIixHYToiY29va2llX29wdGlvbnMiLG9sOiJkY19yYW5kb20iLFp0OiJkZWR1cGVfaWQiLFBjOiJlbV9ldmVudCIsYnU6ImVuZHBvaW50X2Zvcl9kZWJ1ZyIsdGw6ImVuaGFuY2VkX2NsaWVudF9pZF9zb3VyY2UiLApwcDoiZW5oYW5jZWRfbWF0Y2hfcmVzdWx0IixybToiZXVpZF9sb2dnZWRfaW5fc3RhdGUiLGxnOiJldWlkX21vZGVfZW5hYmxlZCIsdHE6ImV2ZW50X3Byb3ZlbmFuY2UiLG11OiJldmVudF9zb3VyY2UiLEViOiJldmVudF9zdGFydF90aW1lc3RhbXBfbXMiLHdtOiJldmVudF91c2FnZSIsQ2g6ImV4dHJhX3RhZ19leHBlcmltZW50X2lkcyIscHU6ImFkZF9wYXJhbWV0ZXIiLFVpOiJjb3VudGluZ19tZXRob2QiLERoOiJzZW5kX2FzX2lmcmFtZSIscXU6InBhcmFtZXRlcl9vcmRlciIsRWg6InBhcnNlZF90YXJnZXQiLHN1OiJmb3JtX2V2ZW50X2NhbmNlbGVkIixBcToiZ2E0X2NvbGxlY3Rpb25fc3ViZG9tYWluIixWaToiZ2E0X3JlcXVlc3RfZmxhZ3MiLE5tOiJnYnJhaWRfY29va2llX21hcmtlZCIsUW06Imd0bV9leHRyYWN0ZWRfZGF0YSIsQ2M6ImhhbmRsZV9pbnRlcm5hbGx5Iix1dToiaGFzX2dhX2NvbnZlcnNpb25fY29uc2VudHMiLGRhOiJoaXRfdHlwZSIsRGM6ImhpdF90eXBlX292ZXJyaWRlIiwKSHE6Imlnbm9yZV9kdXBlX2NvbmZpZyIsT3U6ImlzX2NvbmZpZ19jb21tYW5kIixHaDoiaXNfY29uc2VudF91cGRhdGUiLG1nOiJpc19jb252ZXJzaW9uIixXbToiaXNfZWNvbW1lcmNlIixYbToiaXNfZWNfY21fc3BsaXQiLGFlOiJpc19leHRlcm5hbF9ldmVudCIsbmc6ImlzX2ZpcnN0X3Zpc2l0IixZbToiaXNfZmlyc3RfdmlzaXRfY29udmVyc2lvbiIsWmk6ImlzX2ZsX2ZhbGxiYWNrX2NvbnZlcnNpb25fZmxvd19hbGxvd2VkIixmZDoiaXNfZnBtX2VuY3J5cHRpb24iLGFqOiJpc19mcG1fc3BsaXQiLG9iOiJpc19nY3BfYnJvd3NlciIsYmo6ImlzX2dvb2dsZV9tZWFzdXJlbWVudF9hbGxvd2VkIixjajoiaXNfZ29vZ2xlX3NpZ25hbHNfZW5hYmxlZCIsYmU6ImlzX21lcmNoYW50X2NlbnRlciIsSGg6ImlzX25ld190b19zaXRlIixFYzoiaXNfcGVyc29uYWxpemF0aW9uIixkajoiaXNfc2VydmVyX3NpZGVfZGVzdGluYXRpb24iLFRlOiJpc19zZXNzaW9uX3N0YXJ0IixibjoiaXNfc2Vzc2lvbl9zdGFydF9jb252ZXJzaW9uIiwKUHU6ImlzX3NndG1fZ2FfYWRzX2NvbnZlcnNpb25fc3R1ZHlfY29udHJvbF9ncm91cCIsUXU6ImlzX3NndG1fcHJlaGl0IixkbjoiaXNfc2d0bV9zZXJ2aWNlX3dvcmtlciIsSWg6ImlzX3NwbGl0X2NvbnZlcnNpb24iLElxOiJpc19zeW4iLEZjOiJpc190ZXN0X2V2ZW50IixvZzoiam9pbl9pZCIsZWo6ImpvaW5fZWxhcHNlZCIscGc6ImpvaW5fdGltZXJfc2VjIixnbjoibG9jYWxfc3RvcmFnZV9hd19jb252ZXJzaW9uX2NvdW50ZXJzIixXZToidHVubmVsX3VwZGF0ZWQiLFV1OiJwcmVoaXRfZm9yX3JldHJ5IixXdToicHJvbWlzZXMiLFh1OiJyZWNvcmRfYXdfbGF0ZW5jeSIsWGU6InJlZGFjdF9hZHNfZGF0YSIsWWU6InJlZGFjdF9jbGlja19pZHMiLHBuOiJyZW1hcmtldGluZ19vbmx5Iixsajoic2VuZF9jY21fcGFyYWxsZWxfcGluZyIsaGQ6InNlbmRfZG91YmxlY2xpY2tfam9pbiIsTWg6InNlbmRfZnBtX2dlb19qb2luIixOaDoic2VuZF9mcG1fZ29vZ2xlX2pvaW4iLFp1OiJzZW5kX2NjbV9wYXJhbGxlbF90ZXN0X3BpbmciLApybjoic2VuZF9nb29nbGVfbWVhc3VyZW1lbnQiLHJnOiJzZW5kX3RsZF9qb2luIixzZzoic2VuZF90b19kZXN0aW5hdGlvbnMiLG1qOiJzZW5kX3RvX3RhcmdldHMiLHNuOiJzZW5kX3VzZXJfZGF0YV9oaXQiLHBqOiJzZXJ2aWNlX3dvcmtlcl9jb250ZXh0IixOYjoic291cmNlX2Nhbm9uaWNhbF9pZCIsSmE6InNwZWN1bGF0aXZlIix5bjoic3BlY3VsYXRpdmVfaW5fbWVzc2FnZSIsQW46InN1cHByZXNzX3NjcmlwdF9sb2FkIixCbjoic3luX29yX21vZCIsemo6InRyYW5zaWVudF9lY3NpZCIsdGc6InRyYW5zbWlzc2lvbl90eXBlIixZYToidXNlcl9kYXRhIixndjoidXNlcl9kYXRhX2Zyb21fYXV0b21hdGljIixodjoidXNlcl9kYXRhX2Zyb21fYXV0b21hdGljX2dldHRlciIsR246InVzZXJfZGF0YV9mcm9tX2NvZGUiLGlyOiJ1c2VyX2RhdGFfZnJvbV9tYW51YWwiLGp2OiJ1c2VyX2RhdGFfbW9kZSIsdWc6InVzZXJfaWRfdXBkYXRlZCJ9fTt2YXIgSj17VTp7a3A6MSxtcDoyLEVuOjMsbm46NCxxbDo1LHJsOjYsRXE6NyxucDo4LERxOjksanA6MTAsaHA6MTEseG46MTIsdm46MTMsTms6MTQsVW86MTUsV286MTYsaG46MTcsc2w6MTgsZm46MTksbHA6MjAsUHE6MjEsYXA6MjIsVm86MjMsWG86MjQsbmw6MjUsTGs6MjYsZXI6MjcsSm06MjgsVW06MjksVG06MzAsU206MzEsTW06MzIsS206MzMsTG06MzQsR206MzUsRm06MzYsSG06MzcsSW06MzgsQnE6MzksQ3E6NDAsVXE6NDF9fTtKLlVbSi5VLmtwXT0iQ1JFQVRFX0VWRU5UX1NPVVJDRSI7Si5VW0ouVS5tcF09IkVESVRfRVZFTlQiO0ouVVtKLlUuRW5dPSJUUkFGRklDX1RZUEUiO0ouVVtKLlUubm5dPSJSRUZFUlJBTF9FWENMVVNJT04iO0ouVVtKLlUucWxdPSJFQ09NTUVSQ0VfRlJPTV9HVE1fVEFHIjtKLlVbSi5VLnJsXT0iRUNPTU1FUkNFX0ZST01fR1RNX1VBX1NDSEVNQSI7Si5VW0ouVS5FcV09IkdBX1NFTkQiO0ouVVtKLlUubnBdPSJFTV9GT1JNIjsKSi5VW0ouVS5EcV09IkdBX0dBTV9MSU5LIjtKLlVbSi5VLmpwXT0iQ1JFQVRFX0VWRU5UX0FVVE9fUEFHRV9QQVRIIjtKLlVbSi5VLmhwXT0iQ1JFQVRFRF9FVkVOVCI7Si5VW0ouVS54bl09IlNJREVMT0FERUQiO0ouVVtKLlUudm5dPSJTR1RNX0xFR0FDWV9DT05GSUdVUkFUSU9OIjtKLlVbSi5VLk5rXT0iQ0NEX0VNX0VWRU5UIjtKLlVbSi5VLlVvXT0iQVVUT19SRURBQ1RfRU1BSUwiO0ouVVtKLlUuV29dPSJBVVRPX1JFREFDVF9RVUVSWV9QQVJBTSI7Si5VW0ouVS5obl09Ik1VTFRJUExFX1BBR0VWSUVXX0ZST01fQ09ORklHIjtKLlVbSi5VLnNsXT0iRU1fRVZFTlRfU0VOVF9CRUZPUkVfQ09ORklHIjtKLlVbSi5VLmZuXT0iTE9BREVEX1ZJQV9DU1RfT1JfU0lERUxPQURJTkciO0ouVVtKLlUubHBdPSJERUNPREVEX1BBUkFNX01BVENIIjtKLlVbSi5VLlBxXT0iTk9OX0RFQ09ERURfUEFSQU1fTUFUQ0giO0ouVVtKLlUuYXBdPSJDQ0RfRVZFTlRfU0dUTSI7CkouVVtKLlUuVm9dPSJBVVRPX1JFREFDVF9FTUFJTF9TR1RNIjtKLlVbSi5VLlhvXT0iQVVUT19SRURBQ1RfUVVFUllfUEFSQU1fU0dUTSI7Si5VW0ouVS5ubF09IkRBSUxZX0xJTUlUX1JFQUNIRUQiO0ouVVtKLlUuTGtdPSJCVVJTVF9MSU1JVF9SRUFDSEVEIjtKLlVbSi5VLmVyXT0iU0hBUkVEX1VTRVJfSURfU0VUX0FGVEVSX1JFUVVFU1QiO0ouVVtKLlUuSm1dPSJHQTRfTVVMVElQTEVfU0VTU0lPTl9DT09LSUVTIjtKLlVbSi5VLlVtXT0iSU5WQUxJRF9HQTRfU0VTU0lPTl9DT1VOVCI7Si5VW0ouVS5UbV09IklOVkFMSURfR0E0X0xBU1RfRVZFTlRfVElNRVNUQU1QIjtKLlVbSi5VLlNtXT0iSU5WQUxJRF9HQTRfSk9JTl9USU1FUiI7Si5VW0ouVS5NbV09IkdBNF9TVEFMRV9TRVNTSU9OX0NPT0tJRV9TRUxFQ1RFRCI7Si5VW0ouVS5LbV09IkdBNF9TRVNTSU9OX0NPT0tJRV9HUzFfUkVBRCI7Si5VW0ouVS5MbV09IkdBNF9TRVNTSU9OX0NPT0tJRV9HUzJfUkVBRCI7CkouVVtKLlUuR21dPSJHQTRfRExfUEFSQU1fUkVDT1ZFUllfQVZBSUxBQkxFIjtKLlVbSi5VLkZtXT0iR0E0X0RMX1BBUkFNX1JFQ09WRVJZX0FQUExJRUQiO0ouVVtKLlUuSG1dPSJHQTRfR09PR0xFX01FQVNVUkVNRU5UX0FMTE9XRUQiO0ouVVtKLlUuSW1dPSJHQTRfR09PR0xFX1NJR05BTFNfRU5BQkxFRCI7Si5VW0ouVS5CcV09IkdBNF9GQUxMQkFDS19SRVFVRVNUIjtKLlVbSi5VLkNxXT0iR0FfQURTX0xJTktfQkVGT1JFX0NPTlZFUlNJT05fTUFSS0lORyI7Si5VW0ouVS5VcV09IlBMQVRJTlVNX0VMSUdJQkxFIjt2YXIgeGc9e30seWc9KHhnLnVhYT0hMCx4Zy51YWI9ITAseGcudWFmdmw9ITAseGcudWFtYj0hMCx4Zy51YW09ITAseGcudWFwPSEwLHhnLnVhcHY9ITAseGcudWF3PSEwLHhnKTsKdmFyIEVnPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWEsZT1iW2NdO2lmKCFDZy5leGVjKGUpKXRocm93IEVycm9yKCJJbnZhbGlkIGtleSB3aWxkY2FyZCIpO3ZhciBmPWUuaW5kZXhPZigiLioiKSxnPWYhPT0tMSYmZj09PWUubGVuZ3RoLTIsaD1nP2Uuc2xpY2UoMCxlLmxlbmd0aC0yKTplLGw7YTppZihkLmxlbmd0aD09PTApbD0hMTtlbHNle2Zvcih2YXIgbj1kLnNwbGl0KCIuIikscD0wO3A8bi5sZW5ndGg7cCsrKWlmKCFEZy5leGVjKG5bcF0pKXtsPSExO2JyZWFrIGF9bD0hMH1pZighbHx8aC5sZW5ndGg+ZC5sZW5ndGh8fCFnJiZkLmxlbmd0aCE9PWUubGVuZ3RoPzA6Zz9TYihkLGgpJiYoZD09PWh8fGQuY2hhckF0KGgubGVuZ3RoKT09PSIuIik6ZD09PWgpcmV0dXJuITB9cmV0dXJuITF9LERnPS9eW2EteiRfXVtcdy0kXSokL2ksQ2c9L14oPzpbYS16XyRdW2Etei1fJDAtOV0qXC4pKlthLXpfJF1bYS16LV8kMC05XSooPzpcLlwqKT8kL2k7CnZhciBGZz1bIm1hdGNoZXMiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJtc01hdGNoZXNTZWxlY3RvciIsIm9NYXRjaGVzU2VsZWN0b3IiXTtmdW5jdGlvbiBHZyhhLGIpe2lmKCFhKXJldHVybiExO3RyeXtmb3IodmFyIGM9MDtjPEZnLmxlbmd0aDtjKyspe3ZhciBkPUZnW2NdO2lmKGFbZF0hPW51bGwpcmV0dXJuIGFbZF0oYil9fWNhdGNoKGUpe31yZXR1cm4hMX1mdW5jdGlvbiBIZyhhLGIpe3ZhciBjPVN0cmluZyhhKSxkPVN0cmluZyhiKSxlPWMubGVuZ3RoLWQubGVuZ3RoO3JldHVybiBlPj0wJiZjLmluZGV4T2YoZCxlKT09PWV9ZnVuY3Rpb24gSWcoYSxiKXtyZXR1cm4gU3RyaW5nKGEpLnNwbGl0KCIsIikuaW5kZXhPZihTdHJpbmcoYikpPj0wfQpmdW5jdGlvbiBKZyhhLGIsYyxkKXt2YXIgZT1jPyJpIjp2b2lkIDA7dHJ5e3ZhciBmPVN0cmluZyhiKStTdHJpbmcoZSksZz1kPT1udWxsP3ZvaWQgMDpkLmdldChmKTtnfHwoZz1uZXcgUmVnRXhwKGIsZSksZD09bnVsbHx8ZC5zZXQoZixnKSk7cmV0dXJuIGcudGVzdChhKX1jYXRjaChoKXtyZXR1cm4hMX19ZnVuY3Rpb24gS2coYSxiKXtyZXR1cm4gU3RyaW5nKGEpLmluZGV4T2YoU3RyaW5nKGIpKT49MH1mdW5jdGlvbiBMZyhhLGIpe3JldHVybiBTdHJpbmcoYSk9PT1TdHJpbmcoYil9ZnVuY3Rpb24gTWcoYSxiKXtyZXR1cm4gTnVtYmVyKGEpPj1OdW1iZXIoYil9ZnVuY3Rpb24gTmcoYSxiKXtyZXR1cm4gTnVtYmVyKGEpPD1OdW1iZXIoYil9ZnVuY3Rpb24gT2coYSxiKXtyZXR1cm4gTnVtYmVyKGEpPk51bWJlcihiKX1mdW5jdGlvbiBQZyhhLGIpe3JldHVybiBOdW1iZXIoYSk8TnVtYmVyKGIpfQpmdW5jdGlvbiBRZyhhLGIpe3JldHVybiBTYihTdHJpbmcoYSksU3RyaW5nKGIpKX07ZnVuY3Rpb24gWGcoYSl7dmFyIGI9YS5zZWFyY2g7cmV0dXJuIGEucHJvdG9jb2wrIi8vIithLmhvc3RuYW1lK2EucGF0aG5hbWUrKGI/YisiJnJpY2hzc3Rzc2UiOiI/cmljaHNzdHNzZSIpfTt2YXIgWWc9ZnVuY3Rpb24oKXt0aGlzLlI9IiJ9LCRnPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9Yi5mYWxsYmFja191cmwsZD1iLmZhbGxiYWNrX3VybF9tZXRob2Q7aWYoYyYmZCl7dmFyIGU9e307WmcoYSwoZVtkXT1bY10sZS5vcHRpb25zPXt9LGUpKX19fSxhaD1mdW5jdGlvbihhLGIsYyl7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IodmFyIGQ9bShhKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9ZS52YWx1ZTt0eXBlb2YgZj09PSJzdHJpbmciJiZjKGYsYil9fSxaZz1mdW5jdGlvbihhLGIpe2lmKGIpZm9yKHZhciBjPUNkKGIub3B0aW9ucyk/Yi5vcHRpb25zOnt9LGQ9bShPYmplY3Qua2V5cyhiKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWUsZz1iW2ZdO3N3aXRjaChmKXtjYXNlICJzZW5kX3BpeGVsIjphaChnLGMsZnVuY3Rpb24oaCxsKXtyZXR1cm4gdm9pZCBhLksoaCxsKX0pO2JyZWFrO2Nhc2UgImZldGNoIjphaChnLApjLGZ1bmN0aW9uKGgsbCl7cmV0dXJuIHZvaWQgYS5IKGgsbCl9KX19fTt2YXIgYmg9L14oW2Etel1bYS16MC05XSopOighfFw/KShcKnxzdHJpbmd8Ym9vbGVhbnxudW1iZXJ8Rm58UGl4aWVNYXB8TGlzdHxPcGFxdWVWYWx1ZSkkL2ksY2g9e0ZuOiJmdW5jdGlvbiIsUGl4aWVNYXA6Ik9iamVjdCIsTGlzdDoiQXJyYXkifTsKZnVuY3Rpb24gZGgoYSxiKXtmb3IodmFyIGM9WyJpbnB1dDohKiJdLGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9YmguZXhlYyhjW2RdKTtpZighZSl0aHJvdyBFcnJvcigiSW50ZXJuYWwgRXJyb3IgaW4gIithKTt2YXIgZj1lWzFdLGc9ZVsyXT09PSIhIixoPWVbM10sbD1iW2RdO2lmKGw9PW51bGwpe2lmKGcpdGhyb3cgRXJyb3IoIkVycm9yIGluICIrYSsiLiBSZXF1aXJlZCBhcmd1bWVudCAiK2YrIiBub3Qgc3VwcGxpZWQuIik7fWVsc2UgaWYoaCE9PSIqIil7dmFyIG49dHlwZW9mIGw7bCBpbnN0YW5jZW9mIEtkP249IkZuIjpsIGluc3RhbmNlb2YgR2Q/bj0iTGlzdCI6bCBpbnN0YW5jZW9mIGtiP249IlBpeGllTWFwIjpsIGluc3RhbmNlb2YgU2Q/bj0iUGl4aWVQcm9taXNlIjpsIGluc3RhbmNlb2YgUGQmJihuPSJPcGFxdWVWYWx1ZSIpO2lmKG4hPT1oKXRocm93IEVycm9yKCJFcnJvciBpbiAiK2ErIi4gQXJndW1lbnQgIitmKyIgaGFzIHR5cGUgIisoKGNoW25dfHxuKSsiLCB3aGljaCBkb2VzIG5vdCBtYXRjaCByZXF1aXJlZCB0eXBlICIpKwooKGNoW2hdfHxoKSsiLiIpKTt9fX1mdW5jdGlvbiBLKGEsYixjKXtmb3IodmFyIGQ9W10sZT1tKGMpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlO2cgaW5zdGFuY2VvZiBLZD9kLnB1c2goImZ1bmN0aW9uIik6ZyBpbnN0YW5jZW9mIEdkP2QucHVzaCgiQXJyYXkiKTpnIGluc3RhbmNlb2Yga2I/ZC5wdXNoKCJPYmplY3QiKTpnIGluc3RhbmNlb2YgU2Q/ZC5wdXNoKCJQcm9taXNlIik6ZyBpbnN0YW5jZW9mIFBkP2QucHVzaCgiT3BhcXVlVmFsdWUiKTpkLnB1c2godHlwZW9mIGcpfXJldHVybiBFcnJvcigiQXJndW1lbnQgZXJyb3IgaW4gIithKyIuIEV4cGVjdGVkIGFyZ3VtZW50IHR5cGVzIFsiKyhiLmpvaW4oIiwiKSsiXSwgYnV0IHJlY2VpdmVkIFsiKSsoZC5qb2luKCIsIikrIl0uIikpfWZ1bmN0aW9uIGVoKGEpe3JldHVybiBhIGluc3RhbmNlb2Yga2J9ZnVuY3Rpb24gZmgoYSl7cmV0dXJuIGVoKGEpfHxhPT09bnVsbHx8Z2goYSl9CmZ1bmN0aW9uIGhoKGEpe3JldHVybiBhIGluc3RhbmNlb2YgS2R9ZnVuY3Rpb24gaWgoYSl7cmV0dXJuIGhoKGEpfHxhPT09bnVsbHx8Z2goYSl9ZnVuY3Rpb24gamgoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBHZH1mdW5jdGlvbiBraChhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIFBkfWZ1bmN0aW9uIGxoKGEpe3JldHVybiB0eXBlb2YgYT09PSJzdHJpbmcifWZ1bmN0aW9uIG1oKGEpe3JldHVybiBsaChhKXx8YT09PW51bGx8fGdoKGEpfWZ1bmN0aW9uIG5oKGEpe3JldHVybiB0eXBlb2YgYT09PSJib29sZWFuIn1mdW5jdGlvbiBvaChhKXtyZXR1cm4gbmgoYSl8fGdoKGEpfWZ1bmN0aW9uIHBoKGEpe3JldHVybiBuaChhKXx8YT09PW51bGx8fGdoKGEpfWZ1bmN0aW9uIHFoKGEpe3JldHVybiB0eXBlb2YgYT09PSJudW1iZXIifWZ1bmN0aW9uIGdoKGEpe3JldHVybiBhPT09dm9pZCAwfTtmdW5jdGlvbiByaChhKXtyZXR1cm4iIithfQpmdW5jdGlvbiBzaChhLGIpe3ZhciBjPVtdO3JldHVybiBjfTtmdW5jdGlvbiB0aChhLGIpe3ZhciBjPW5ldyBLZChhLGZ1bmN0aW9uKCl7Zm9yKHZhciBkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSxlPTA7ZTxkLmxlbmd0aDtlKyspZFtlXT10aGlzLmV2YWx1YXRlKGRbZV0pO3RyeXtyZXR1cm4gYi5hcHBseSh0aGlzLGQpfWNhdGNoKGcpe3Rocm93IGNiKGcpO319KTtjLlphKCk7cmV0dXJuIGN9CmZ1bmN0aW9uIHVoKGEsYil7dmFyIGM9bmV3IGtiLGQ7Zm9yKGQgaW4gYilpZihiLmhhc093blByb3BlcnR5KGQpKXt2YXIgZT1iW2RdO3liKGUpP2Muc2V0KGQsdGgoYSsiXyIrZCxlKSk6Q2QoZSk/Yy5zZXQoZCx1aChhKyJfIitkLGUpKTooQWIoZSl8fHpiKGUpfHx0eXBlb2YgZT09PSJib29sZWFuIikmJmMuc2V0KGQsZSl9Yy5aYSgpO3JldHVybiBjfTtmdW5jdGlvbiB3aChhLGIpe2lmKCFsaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIl0sYXJndW1lbnRzKTtpZighbWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsInVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7dmFyIGM9e30sZD1uZXcga2I7cmV0dXJuIGQ9dWgoIkFzc2VydEFwaVN1YmplY3QiLApjKX07ZnVuY3Rpb24geGgoYSxiKXtpZighbWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsInVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7aWYoYSBpbnN0YW5jZW9mIFNkKXRocm93IEVycm9yKCJBcmd1bWVudCBhY3R1YWwgY2Fubm90IGhhdmUgdHlwZSBQcm9taXNlLiBBc3NlcnRpb25zIG9uIGFzeW5jaHJvbm91cyBjb2RlIGFyZW4ndCBzdXBwb3J0ZWQuIik7dmFyIGM9e30sZD1uZXcga2I7cmV0dXJuIGQ9dWgoIkFzc2VydFRoYXRTdWJqZWN0IixjKX07ZnVuY3Rpb24geWgoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBiPU9hLmFwcGx5KDAsYXJndW1lbnRzKSxjPVtdLGQ9dGhpcy5ULGU9MDtlPGIubGVuZ3RoOysrZSljLnB1c2goVGQoYltlXSxkKSk7cmV0dXJuIFVkKGEuYXBwbHkobnVsbCxjKSl9fWZ1bmN0aW9uIHpoKCl7Zm9yKHZhciBhPU1hdGgsYj1BaCxjPXt9LGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9YltkXTthLmhhc093blByb3BlcnR5KGUpJiYoY1tlXT15aChhW2VdLmJpbmQoYSkpKX1yZXR1cm4gY307ZnVuY3Rpb24gQmgoYSl7cmV0dXJuIGEhPW51bGwmJlNiKGEsIl9fY3Z0XyIpfTtmdW5jdGlvbiBDaChhKXt2YXIgYjtyZXR1cm4gYn07ZnVuY3Rpb24gRGgoYSl7dmFyIGI7aWYoIWxoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciXSxhcmd1bWVudHMpO3RyeXtiPWRlY29kZVVSSUNvbXBvbmVudChhKX1jYXRjaChjKXt9cmV0dXJuIGJ9O2Z1bmN0aW9uIEVoKGEpe3RyeXtyZXR1cm4gZW5jb2RlVVJJKGEpfWNhdGNoKGIpe319O2Z1bmN0aW9uIEZoKGEpe3RyeXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSl9Y2F0Y2goYil7fX07ZnVuY3Rpb24gR2goYSxiKXt2YXIgYz0hMTtyZXR1cm4gY31mdW5jdGlvbiBMaChhKXtpZighbWgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZ3x1bmRlZmluZWQiXSxhcmd1bWVudHMpO307ZnVuY3Rpb24gTWgoYSl7dmFyIGI9VGQoYSk7cmV0dXJuIG5nKGI/IiIrYjoiIil9O2Z1bmN0aW9uIE5oKGEsYil7aWYoIXFoKGEpfHwhcWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIm51bWJlciIsIm51bWJlciJdLGFyZ3VtZW50cyk7cmV0dXJuIERiKGEsYil9O2Z1bmN0aW9uIE9oKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O2Z1bmN0aW9uIFBoKGEpe2lmKGE9PT1udWxsKXJldHVybiJudWxsIjtpZihhIGluc3RhbmNlb2YgR2QpcmV0dXJuImFycmF5IjtpZihhIGluc3RhbmNlb2YgS2QpcmV0dXJuImZ1bmN0aW9uIjtpZihhIGluc3RhbmNlb2YgUGQpe3ZhciBiPWEuZ2V0VmFsdWUoKTtpZigoYj09bnVsbD92b2lkIDA6Yi5jb25zdHJ1Y3Rvcik9PT12b2lkIDB8fGIuY29uc3RydWN0b3IubmFtZT09PXZvaWQgMCl7dmFyIGM9U3RyaW5nKGIpO3JldHVybiBjLnN1YnN0cmluZyg4LGMubGVuZ3RoLTEpfXJldHVybiBTdHJpbmcoYi5jb25zdHJ1Y3Rvci5uYW1lKX1yZXR1cm4gdHlwZW9mIGF9O2Z1bmN0aW9uIFFoKGEpe2Z1bmN0aW9uIGIoYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3RyeXtyZXR1cm4gYyhkKX1jYXRjaChlKXsobGd8fG1nLlBvKSYmYS5jYWxsKHRoaXMsZS5tZXNzYWdlKX19fXJldHVybntwYXJzZTpiKGZ1bmN0aW9uKGMpe3JldHVybiBVZChKU09OLnBhcnNlKGMpKX0pLHN0cmluZ2lmeTpiKGZ1bmN0aW9uKGMpe3JldHVybiBKU09OLnN0cmluZ2lmeShUZChjKSl9KSxwdWJsaWNOYW1lOiJKU09OIn19O2Z1bmN0aW9uIFJoKGEpe3JldHVybiBJYihUZChhLHRoaXMuVCkpfTtmdW5jdGlvbiBTaChhKXtyZXR1cm4gTnVtYmVyKFRkKGEsdGhpcy5UKSl9O2Z1bmN0aW9uIFRoKGEpe3JldHVybiBhPT09bnVsbD8ibnVsbCI6YT09PXZvaWQgMD8idW5kZWZpbmVkIjphLnRvU3RyaW5nKCl9O2Z1bmN0aW9uIFVoKGEsYixjKXt2YXIgZD1udWxsLGU9ITE7aWYoIWpoKGEpfHwhbGgoYil8fCFsaChjKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiQXJyYXkiLCJzdHJpbmciLCJzdHJpbmciXSxhcmd1bWVudHMpO2Q9bmV3IGtiO2Zvcih2YXIgZj0wO2Y8YS5sZW5ndGgoKTtmKyspe3ZhciBnPWEuZ2V0KGYpO2cgaW5zdGFuY2VvZiBrYiYmZy5oYXMoYikmJmcuaGFzKGMpJiYoZC5zZXQoZy5nZXQoYiksZy5nZXQoYykpLGU9ITApfXJldHVybiBlP2Q6bnVsbH07dmFyIEFoPSJmbG9vciBjZWlsIHJvdW5kIG1heCBtaW4gYWJzIHBvdyBzcXJ0Ii5zcGxpdCgiICIpO2Z1bmN0aW9uIFZoKCl7dmFyIGE9e307cmV0dXJue1dyOmZ1bmN0aW9uKGIpe3JldHVybiBhLmhhc093blByb3BlcnR5KGIpP2FbYl06dm9pZCAwfSxLbzpmdW5jdGlvbihiLGMpe2FbYl09Y30scmVzZXQ6ZnVuY3Rpb24oKXthPXt9fX19ZnVuY3Rpb24gV2goYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gS2QucHJvdG90eXBlLmludm9rZS5hcHBseShhLFtiXS5jb25jYXQodyhPYS5hcHBseSgwLGFyZ3VtZW50cykpKSl9fQpmdW5jdGlvbiBYaChhLGIpe2lmKCFsaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwiYW55Il0sYXJndW1lbnRzKTt9CmZ1bmN0aW9uIFloKGEsYil7aWYoIWxoKGEpfHwhZWgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsIlBpeGllTWFwIl0sYXJndW1lbnRzKTt9O3ZhciBaaD17fTt2YXIgJGg9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IGtiO2lmKGEgaW5zdGFuY2VvZiBHZClmb3IodmFyIGM9YS5GYSgpLGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXTthLmhhcyhlKSYmYi5zZXQoZSxhLmdldChlKSl9ZWxzZSBpZihhIGluc3RhbmNlb2YgS2QpZm9yKHZhciBmPWEuRmEoKSxnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBoPWZbZ107Yi5zZXQoaCxhLmdldChoKSl9ZWxzZSBmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKyliLnNldChsLGFbbF0pO3JldHVybiBifTsKWmgua2V5cz1mdW5jdGlvbihhKXtkaCh0aGlzLmdldE5hbWUoKSxhcmd1bWVudHMpO2lmKGEgaW5zdGFuY2VvZiBHZHx8YSBpbnN0YW5jZW9mIEtkfHx0eXBlb2YgYT09PSJzdHJpbmciKWE9JGgoYSk7aWYoYSBpbnN0YW5jZW9mIGtifHxhIGluc3RhbmNlb2YgU2QpcmV0dXJuIG5ldyBHZChhLkZhKCkpO3JldHVybiBuZXcgR2R9OwpaaC52YWx1ZXM9ZnVuY3Rpb24oYSl7ZGgodGhpcy5nZXROYW1lKCksYXJndW1lbnRzKTtpZihhIGluc3RhbmNlb2YgR2R8fGEgaW5zdGFuY2VvZiBLZHx8dHlwZW9mIGE9PT0ic3RyaW5nIilhPSRoKGEpO2lmKGEgaW5zdGFuY2VvZiBrYnx8YSBpbnN0YW5jZW9mIFNkKXJldHVybiBuZXcgR2QoYS5oYygpKTtyZXR1cm4gbmV3IEdkfTsKWmguZW50cmllcz1mdW5jdGlvbihhKXtkaCh0aGlzLmdldE5hbWUoKSxhcmd1bWVudHMpO2lmKGEgaW5zdGFuY2VvZiBHZHx8YSBpbnN0YW5jZW9mIEtkfHx0eXBlb2YgYT09PSJzdHJpbmciKWE9JGgoYSk7aWYoYSBpbnN0YW5jZW9mIGtifHxhIGluc3RhbmNlb2YgU2QpcmV0dXJuIG5ldyBHZChhLmZjKCkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBuZXcgR2QoYil9KSk7cmV0dXJuIG5ldyBHZH07ClpoLmZyZWV6ZT1mdW5jdGlvbihhKXsoYSBpbnN0YW5jZW9mIGtifHxhIGluc3RhbmNlb2YgU2R8fGEgaW5zdGFuY2VvZiBHZHx8YSBpbnN0YW5jZW9mIEtkKSYmYS5aYSgpO3JldHVybiBhfTtaaC5kZWxldGU9ZnVuY3Rpb24oYSxiKXtpZihhIGluc3RhbmNlb2Yga2ImJiFhLkhiKCkpcmV0dXJuIGEucmVtb3ZlKGIpLCEwO3JldHVybiExfTtmdW5jdGlvbiBMKGEsYil7dmFyIGM9T2EuYXBwbHkoMixhcmd1bWVudHMpLGQ9YS5ULnhiKCk7aWYoIWQpdGhyb3cgRXJyb3IoIk1pc3NpbmcgcHJvZ3JhbSBzdGF0ZS4iKTtpZihkLml0KXt0cnl7ZC5Sbi5hcHBseShudWxsLFtiXS5jb25jYXQodyhjKSkpfWNhdGNoKGUpe3Rocm93IHNiKCJUQUdHSU5HIiwyMSksZTt9cmV0dXJufWQuUm4uYXBwbHkobnVsbCxbYl0uY29uY2F0KHcoYykpKX07dmFyIGFpPWZ1bmN0aW9uKCl7dGhpcy5LPXt9O3RoaXMuSD17fTt0aGlzLk49ITA7fTthaS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jb250YWlucyhhKT90aGlzLktbYV06dm9pZCAwO3JldHVybiBjfTthaS5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuSy5oYXNPd25Qcm9wZXJ0eShhKX07CmFpLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSxiLGMpe2lmKHRoaXMuY29udGFpbnMoYSkpdGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYWRkIGEgZnVuY3Rpb24gd2hpY2ggYWxyZWFkeSBleGlzdHM6ICIrYSsiLiIpO2lmKHRoaXMuSC5oYXNPd25Qcm9wZXJ0eShhKSl0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhZGQgYW4gQVBJIHdpdGggYW4gZXhpc3RpbmcgcHJpdmF0ZSBBUEkgbmFtZTogIithKyIuIik7dGhpcy5LW2FdPWM/dm9pZCAwOnliKGIpP3RoKGEsYik6dWgoYSxiKX07ZnVuY3Rpb24gYmkoYSxiKXt2YXIgYz12b2lkIDA7cmV0dXJuIGN9O2Z1bmN0aW9uIGNpKCl7dmFyIGE9e307CnJldHVybiBhfTt2YXIgZGk9e30sZWk9KGRpW0YuRC5zYV09ImdjdSIsZGlbRi5ELmVoXT0iZXB0IixkaVtGLkQuU2JdPSJnY2xnYiIsZGlbRi5ELmxiXT0iZ2NsYXciLGRpW0YuRC56bF09ImdjbGlkX2xlbiIsZGlbRi5ELkJlXT0iZ2NsZ3MiLGRpW0YuRC5DZV09ImdjbGxwIixkaVtGLkQuRGVdPSJnY2xzdCIsZGlbRi5ELkVkXT0iYXVpZCIsZGlbRi5ELkJsXT0iYWUiLGRpW0YuRC5DZl09ImRzY250IixkaVtGLkQuRGZdPSJmY250ciIsZGlbRi5ELkVmXT0iZmxuZyIsZGlbRi5ELkZmXT0ibWlkIixkaVtGLkQud2ldPSJidHR5cGUiLGRpW0YuRC5LYl09ImdhY2lkIixkaVtGLkQuR2RdPSJsYWJlbCIsZGlbRi5ELkZlXT0iY2FwaSIsZGlbRi5ELmpoXT0icHNjZGwiLGRpW0YuRC5lYl09ImN1cnJlbmN5X2NvZGUiLGRpW0YuRC5HZV09InZkbHR2IixkaVtGLkQua2hdPSJjbG9jdCIsZGlbRi5ELkVsXT0iX2RiZyIsZGlbRi5ELkllXT0ib2VkZWxkIixkaVtGLkQuVmNdPSJlZGlkIixkaVtGLkQuTWRdPSJldm5pZCIsCmRpW0YuRC5FaV09ImV2amlkIixkaVtGLkQuTmRdPSJleGNpZCIsZGlbRi5ELnJoXT0iZ2FjIixkaVtGLkQuSmVdPSJnYWNnYiIsZGlbRi5ELk1sXT0iZ2FjbWNvdiIsZGlbRi5ELktlXT0iZ2RwciIsZGlbRi5ELlhjXT0iZ2RpZCIsZGlbRi5ELkxlXT0iX25nIixkaVtGLkQuY3FdPSJfb25vIixkaVtGLkQudGhdPSJncHBfc2lkIixkaVtGLkQudWhdPSJncHAiLGRpW0YuRC5QbF09ImdzYWV4cCIsZGlbRi5ELlZmXT0iX3R1IixkaVtGLkQuTWVdPSJmcm0iLGRpW0YuRC5LaV09Imd0bV91cCIsZGlbRi5ELlBkXT0ibHBzIixkaVtGLkQuTGldPSJkaWQiLGRpW0YuRC5RZF09ImZjbnRyIixkaVtGLkQuUmRdPSJmbG5nIixkaVtGLkQuU2RdPSJtaWQiLGRpW0YuRC5OZV09dm9pZCAwLGRpW0YuRC5NYl09InRpYmEiLGRpW0YuRC5XYl09InJkcCIsZGlbRi5ELnhjXT0iZWNzaWQiLGRpW0YuRC5aZl09ImdhX3VpZCIsZGlbRi5ELlVkXT0iZGVsb3BjIixkaVtGLkQuT2VdPSJnZHByX2NvbnNlbnQiLApkaVtGLkQuUGFdPSJvaWQiLGRpW0YuRC5kbV09Im9pZHNyYyIsZGlbRi5ELmZtXT0idXB0Z3MiLGRpW0YuRC5jZ109InVhYSIsZGlbRi5ELmRnXT0idWFiIixkaVtGLkQuZWddPSJ1YWZ2bCIsZGlbRi5ELmZnXT0idWFtYiIsZGlbRi5ELmdnXT0idWFtIixkaVtGLkQuaGddPSJ1YXAiLGRpW0YuRC5pZ109InVhcHYiLGRpW0YuRC5qZ109InVhdyIsZGlbRi5ELmdtXT0iZWNfbGF0IixkaVtGLkQuaG1dPSJlY19tZXRhIixkaVtGLkQuaW1dPSJlY19tIixkaVtGLkQuam1dPSJlY19zZWwiLGRpW0YuRC5rbV09ImVjX3MiLGRpW0YuRC5CY109ImVjX21vZGUiLGRpW0YuRC5mYl09InVzZXJJZCIsZGlbRi5ELmtnXT0idXNfcHJpdmFjeSIsZGlbRi5ELlFhXT0idmFsdWUiLGRpW0YuRC5xbV09Im1jb3YiLGRpW0YuRC5XaV09ImhuIixkaVtGLkQuVm1dPSJndG1fZWUiLGRpW0YuRC5ZaV09InVpcCIsZGlbRi5ELkpoXT0ibXQiLGRpW0YuRC5kZV09Im5wYSIsZGlbRi5ELllxXT0ic2dfdWMiLGRpW0YuRC55aV09Cm51bGwsZGlbRi5ELmJkXT1udWxsLGRpW0YuRC50Yl09bnVsbCxkaVtGLkQuSGFdPW51bGwsZGlbRi5ELnphXT1udWxsLGRpW0YuRC5VYV09bnVsbCxkaVtGLkQuUGVdPW51bGwsZGlbRi5ELmVkXT1udWxsLGRpW0YuRC5zaF09bnVsbCxkaVtGLkQuQmRdPW51bGwsZGlbRi5ELkNkXT1udWxsLGRpW0YuRC5maF09bnVsbCxkaVtGLkQuZ2hdPW51bGwsZGlbRi5ELlRhXT1udWxsLGRpW0YuRC5XY109bnVsbCxkaSk7ZnVuY3Rpb24gZmkoYSxiKXtpZihhKXt2YXIgYz1hLnNwbGl0KCJ4Iik7Yy5sZW5ndGg9PT0yJiYoZ2koYiwidV93IixjWzBdKSxnaShiLCJ1X2giLGNbMV0pKX19ZnVuY3Rpb24gaGkoYSl7dmFyIGI9aWk7Yj1iPT09dm9pZCAwP2ppOmI7cmV0dXJuIGtpKGxpKGEsYikpfWZ1bmN0aW9uIGtpKGEpe3JldHVybihhfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiEhYn0pLm1hcChmdW5jdGlvbihiKXtyZXR1cm4iKCIrW21pKGIudmFsdWUpLG1pKGIucXVhbnRpdHkpLG1pKGIuaXRlbV9pZCksbWkoYi5zdGFydF9kYXRlKSxtaShiLmVuZF9kYXRlKV0uam9pbigiKiIpKyIpIn0pLmpvaW4oIiIpfQpmdW5jdGlvbiBsaShhLGIpe3JldHVybihhfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiEhY30pLm1hcChmdW5jdGlvbihjKXtyZXR1cm57aXRlbV9pZDpiKGMpLHF1YW50aXR5OmMucXVhbnRpdHksdmFsdWU6Yy5wcmljZSxzdGFydF9kYXRlOmMuc3RhcnRfZGF0ZSxlbmRfZGF0ZTpjLmVuZF9kYXRlfX0pfWZ1bmN0aW9uIGppKGEpe3JldHVyblthLml0ZW1faWQsYS5pZCxhLml0ZW1fbmFtZV0uZmluZChmdW5jdGlvbihiKXtyZXR1cm4gYiE9bnVsbH0pfWZ1bmN0aW9uIG5pKGEpe2lmKGEmJmEubGVuZ3RoKXJldHVybiBhLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYiYmYi5lc3RpbWF0ZWRfZGVsaXZlcnlfZGF0ZT9iLmVzdGltYXRlZF9kZWxpdmVyeV9kYXRlOiIifSkuam9pbigiLCIpfWZ1bmN0aW9uIGdpKGEsYixjKXtjPT09dm9pZCAwfHxjPT09bnVsbHx8Yz09PSIiJiYheWdbYl18fChhW2JdPWMpfQpmdW5jdGlvbiBtaShhKXtyZXR1cm4gdHlwZW9mIGEhPT0ibnVtYmVyIiYmdHlwZW9mIGEhPT0ic3RyaW5nIj8iIjphLnRvU3RyaW5nKCl9O2Z1bmN0aW9uIG9pKCl7dGhpcy5ibG9ja1NpemU9LTF9O2Z1bmN0aW9uIHBpKGEsYil7dGhpcy5ibG9ja1NpemU9LTE7dGhpcy5ibG9ja1NpemU9NjQ7dGhpcy5OPVJhLlVpbnQ4QXJyYXk/bmV3IFVpbnQ4QXJyYXkodGhpcy5ibG9ja1NpemUpOkFycmF5KHRoaXMuYmxvY2tTaXplKTt0aGlzLlI9dGhpcy5LPTA7dGhpcy5IPVtdO3RoaXMuZmE9YTt0aGlzLlo9Yjt0aGlzLmphPVJhLkludDMyQXJyYXk/bmV3IEludDMyQXJyYXkoNjQpOkFycmF5KDY0KTtxaT09PXZvaWQgMCYmKFJhLkludDMyQXJyYXk/cWk9bmV3IEludDMyQXJyYXkocmkpOnFpPXJpKTt0aGlzLnJlc2V0KCl9U2EocGksb2kpO2Zvcih2YXIgc2k9W10sdGk9MDt0aTw2Mzt0aSsrKXNpW3RpXT0wO3ZhciB1aT1bXS5jb25jYXQoMTI4LHNpKTsKcGkucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5SPXRoaXMuSz0wO3ZhciBhO2lmKFJhLkludDMyQXJyYXkpYT1uZXcgSW50MzJBcnJheSh0aGlzLlopO2Vsc2V7dmFyIGI9dGhpcy5aLGM9Yi5sZW5ndGg7aWYoYz4wKXtmb3IodmFyIGQ9QXJyYXkoYyksZT0wO2U8YztlKyspZFtlXT1iW2VdO2E9ZH1lbHNlIGE9W119dGhpcy5IPWF9Owp2YXIgdmk9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWEuTixjPWEuamEsZD0wLGU9MDtlPGIubGVuZ3RoOyljW2QrK109YltlXTw8MjR8YltlKzFdPDwxNnxiW2UrMl08PDh8YltlKzNdLGU9ZCo0O2Zvcih2YXIgZj0xNjtmPDY0O2YrKyl7dmFyIGc9Y1tmLTE1XXwwLGg9Y1tmLTJdfDA7Y1tmXT0oKGNbZi0xNl18MCkrKChnPj4+N3xnPDwyNSleKGc+Pj4xOHxnPDwxNCleZz4+PjMpfDApKygoY1tmLTddfDApKygoaD4+PjE3fGg8PDE1KV4oaD4+PjE5fGg8PDEzKV5oPj4+MTApfDApfDB9Zm9yKHZhciBsPWEuSFswXXwwLG49YS5IWzFdfDAscD1hLkhbMl18MCxxPWEuSFszXXwwLHI9YS5IWzRdfDAsdD1hLkhbNV18MCx1PWEuSFs2XXwwLHY9YS5IWzddfDAseD0wO3g8NjQ7eCsrKXt2YXIgeT0oKGw+Pj4yfGw8PDMwKV4obD4+PjEzfGw8PDE5KV4obD4+PjIyfGw8PDEwKSkrKGwmbl5sJnBebiZwKXwwLHo9KHYrKChyPj4+NnxyPDwyNileKHI+Pj4xMXxyPDwyMSleKHI+Pj4yNXxyPDw3KSl8CjApKygoKHImdF5+ciZ1KSsocWlbeF18MCl8MCkrKGNbeF18MCl8MCl8MDt2PXU7dT10O3Q9cjtyPXErenwwO3E9cDtwPW47bj1sO2w9eit5fDB9YS5IWzBdPWEuSFswXStsfDA7YS5IWzFdPWEuSFsxXStufDA7YS5IWzJdPWEuSFsyXStwfDA7YS5IWzNdPWEuSFszXStxfDA7YS5IWzRdPWEuSFs0XStyfDA7YS5IWzVdPWEuSFs1XSt0fDA7YS5IWzZdPWEuSFs2XSt1fDA7YS5IWzddPWEuSFs3XSt2fDB9OwpwaS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGEsYil7Yj09PXZvaWQgMCYmKGI9YS5sZW5ndGgpO3ZhciBjPTAsZD10aGlzLks7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilmb3IoO2M8YjspdGhpcy5OW2QrK109YS5jaGFyQ29kZUF0KGMrKyksZD09dGhpcy5ibG9ja1NpemUmJih2aSh0aGlzKSxkPTApO2Vsc2V7dmFyIGUsZj10eXBlb2YgYTtlPWYhPSJvYmplY3QiP2Y6YT9BcnJheS5pc0FycmF5KGEpPyJhcnJheSI6ZjoibnVsbCI7aWYoZT09ImFycmF5Inx8ZT09Im9iamVjdCImJnR5cGVvZiBhLmxlbmd0aD09Im51bWJlciIpZm9yKDtjPGI7KXt2YXIgZz1hW2MrK107aWYoISgibnVtYmVyIj09dHlwZW9mIGcmJjA8PWcmJjI1NT49ZyYmZz09KGd8MCkpKXRocm93IEVycm9yKCJtZXNzYWdlIG11c3QgYmUgYSBieXRlIGFycmF5Iik7dGhpcy5OW2QrK109ZztkPT10aGlzLmJsb2NrU2l6ZSYmKHZpKHRoaXMpLGQ9MCl9ZWxzZSB0aHJvdyBFcnJvcigibWVzc2FnZSBtdXN0IGJlIHN0cmluZyBvciBhcnJheSIpOwp9dGhpcy5LPWQ7dGhpcy5SKz1ifTtwaS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGE9W10sYj10aGlzLlIqODt0aGlzLks8NTY/dGhpcy51cGRhdGUodWksNTYtdGhpcy5LKTp0aGlzLnVwZGF0ZSh1aSx0aGlzLmJsb2NrU2l6ZS0odGhpcy5LLTU2KSk7Zm9yKHZhciBjPTYzO2M+PTU2O2MtLSl0aGlzLk5bY109YiYyNTUsYi89MjU2O3ZpKHRoaXMpO2Zvcih2YXIgZD0wLGU9MDtlPHRoaXMuZmE7ZSsrKWZvcih2YXIgZj0yNDtmPj0wO2YtPTgpYVtkKytdPXRoaXMuSFtlXT4+ZiYyNTU7cmV0dXJuIGF9Owp2YXIgcmk9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCwKNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdLHFpO2Z1bmN0aW9uIHdpKCl7cGkuY2FsbCh0aGlzLDgseGkpfVNhKHdpLHBpKTt2YXIgeGk9WzE3NzkwMzM3MDMsMzE0NDEzNDI3NywxMDEzOTA0MjQyLDI3NzM0ODA3NjIsMTM1OTg5MzExOSwyNjAwODIyOTI0LDUyODczNDYzNSwxNTQxNDU5MjI1XTt2YXIgeWk9L15bMC05QS1GYS1mXXs2NH0kLztmdW5jdGlvbiB6aShhKXt0cnl7cmV0dXJuKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGEpfWNhdGNoKGIpe3JldHVybiBaYihhKX19ZnVuY3Rpb24gQWkoYSl7dmFyIGI9QTtpZihhPT09IiJ8fGE9PT0iZTAiKXJldHVybiBQcm9taXNlLnJlc29sdmUoYSk7dmFyIGM7aWYoKGM9Yi5jcnlwdG8pPT1udWxsPzA6Yy5zdWJ0bGUpe2lmKHlpLnRlc3QoYSkpcmV0dXJuIFByb21pc2UucmVzb2x2ZShhKTt0cnl7dmFyIGQ9emkoYSk7cmV0dXJuIGIuY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLGQpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIEJpKGUsYil9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiJlMiJ9KX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCJlMiIpfX1lbHNlIHJldHVybiBQcm9taXNlLnJlc29sdmUoImUxIil9CmZ1bmN0aW9uIENpKGEpe3RyeXt2YXIgYj1uZXcgd2k7Yi51cGRhdGUoemkoYSkpO3JldHVybiBiLmRpZ2VzdCgpfWNhdGNoKGMpe3JldHVybiJlMiJ9fWZ1bmN0aW9uIERpKGEpe3ZhciBiPUE7aWYoYT09PSIifHxhPT09ImUwInx8eWkudGVzdChhKSlyZXR1cm4gYTt2YXIgYz1DaShhKTtpZihjPT09ImUyIilyZXR1cm4iZTIiO3RyeXtyZXR1cm4gQmkoYyxiKX1jYXRjaChkKXtyZXR1cm4iZTIifX1mdW5jdGlvbiBCaShhLGIpe3ZhciBjPUFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoYSkpLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShkKX0pLmpvaW4oIiIpO3JldHVybiBiLmJ0b2EoYykucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89KyQvLCIiKX07ZnVuY3Rpb24gRWkoKXtmb3IodmFyIGE9ITEsYj0hMSxjPTA7YT09PWI7KWlmKGE9RGIoMCwxKT09PTAsYj1EYigwLDEpPT09MCxjKyssYz4zMClyZXR1cm47cmV0dXJuIGF9dmFyIEdpPXtzazpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIEZpLnNrKGEsYixjKX19LEhpPWZ1bmN0aW9uKCl7dGhpcy5zdHVkaWVzPXt9O3RoaXMuSD1FaX07CkhpLnByb3RvdHlwZS5zaz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5zdHVkaWVzW2JdO2lmKCEoKGM9PT12b2lkIDA/RGIoMCw5OTk5KTpjJTFFNCk8ZC5wcm9iYWJpbGl0eSooZC5jb250cm9sSWQyPzQ6MikqMUU0KSlyZXR1cm4gYTthOnt2YXIgZT1kLnN0dWR5SWQsZj1kLmV4cGVyaW1lbnRJZCxnPWQuY29udHJvbElkLGg9ZC5jb250cm9sSWQyO2lmKCEoKGEuZXhwfHx7fSlbZl18fChhLmV4cHx8e30pW2ddfHxoJiYoYS5leHB8fHt9KVtoXSkpe3ZhciBsPWMhPT12b2lkIDA/YyUyPT09MDp0aGlzLkgoKTtpZihsIT09dm9pZCAwKXt2YXIgbj1sPzA6MTtpZihoKXt2YXIgcD1jIT09dm9pZCAwPyhjPj4xKSUyPT09MDp0aGlzLkgoKTtpZihwPT09dm9pZCAwKWJyZWFrIGE7bnw9KHA/MDoxKTw8MX1uPT09MD9JaShhLGYsZSk6bj09PTE/SWkoYSxnLGUpOm49PT0yJiZJaShhLGgsZSl9fX1yZXR1cm4gYX07CnZhciBLaT1mdW5jdGlvbihhLGIpe3ZhciBjPUZpO3JldHVybiBjLnN0dWRpZXNbYl0/SmkoYyxiKXx8ISEoYS5leHB8fHt9KVtjLnN0dWRpZXNbYl0uZXhwZXJpbWVudElkXTohMX0sTGk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1GaTtyZXR1cm4gYy5zdHVkaWVzW2JdJiZjLnN0dWRpZXNbYl0uY29udHJvbElkJiYhSmkoYyxiKT8hIShhLmV4cHx8e30pW2Muc3R1ZGllc1tiXS5jb250cm9sSWRdOiExfSxNaT1mdW5jdGlvbihhLGIpe3ZhciBjPUZpO3JldHVybiBjLnN0dWRpZXNbYl0mJmMuc3R1ZGllc1tiXS5jb250cm9sSWQyJiYhSmkoYyxiKT8hIShhLmV4cHx8e30pW2Muc3R1ZGllc1tiXS5jb250cm9sSWQyXTohMX0sTmk9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YS5leHB8fHt9LGQ9bShPYmplY3Qua2V5cyhjKS5tYXAoTnVtYmVyKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWU7aWYoY1tmXT09PWIpcmV0dXJuIGZ9fSxKaT1mdW5jdGlvbihhLApiKXtyZXR1cm4hIWEuc3R1ZGllc1tiXS5hY3RpdmV8fGEuc3R1ZGllc1tiXS5wcm9iYWJpbGl0eT4uNX0sSWk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZXhwfHx7fTtkW2JdPWM7YS5leHA9ZH0sRmk9bmV3IEhpO3ZhciBpaj1mdW5jdGlvbigpe3RoaXMuSD1BLmdvb2dsZV90YWdfbWFuYWdlcj1BLmdvb2dsZV90YWdfbWFuYWdlcnx8e319LGpqO2Z1bmN0aW9uIGtqKGEsYil7bGooKTt2YXIgYz1qajtyZXR1cm4gYy5IW2FdPWMuSFthXXx8YigpfWZ1bmN0aW9uIG1qKGEpe2xqKCk7cmV0dXJuIGpqLkhbYV19ZnVuY3Rpb24gbmooYSxiKXtsaigpO2pqLkhbYV09Yn1mdW5jdGlvbiBvaihhKXt2YXIgYj1FKDUpO2xqKCk7dmFyIGM9amo7Yy5IW2JdPWMuSFtiXXx8YX1mdW5jdGlvbiBwaigpe3ZhciBhPUUoMTkpO2xqKCk7dmFyIGI9amo7cmV0dXJuIGIuSFthXT1iLkhbYV18fHt9fWZ1bmN0aW9uIHFqKCl7dmFyIGE9RSgxOSk7bGooKTtyZXR1cm4gamouSFthXX1mdW5jdGlvbiByaigpe2xqKCk7dmFyIGE9amosYj1hLkguc2VxdWVuY2V8fDE7YS5ILnNlcXVlbmNlPWIrMTtyZXR1cm4gYn1mdW5jdGlvbiBsaigpe2pqfHwoamo9bmV3IGlqKX07dmFyIHNqPWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDE6cmV0dXJuIDA7Y2FzZSA0OTE6cmV0dXJuIDEyO2Nhc2UgNDgwOnJldHVybiAxMTtjYXNlIDQ5OTpyZXR1cm4gMTA7Y2FzZSA1MDA6cmV0dXJuIDY7Y2FzZSA0MjE6cmV0dXJuIDk7Y2FzZSA1NjE6cmV0dXJuIDE3O2Nhc2UgNDgyOnJldHVybiAxNTtjYXNlIDU3MDpyZXR1cm4gMTk7Y2FzZSA0OTU6cmV0dXJuIDEzO2Nhc2UgNTE0OnJldHVybiAxNjtjYXNlIDU3MzpyZXR1cm4gMTg7Y2FzZSAyMzU6cmV0dXJuIDg7Y2FzZSA1MzpyZXR1cm4gMTtjYXNlIDU0OnJldHVybiAyO2Nhc2UgNTI6cmV0dXJuIDQ7Y2FzZSA3NTpyZXR1cm4gM319LHRqPWZ1bmN0aW9uKGEsYil7YS5OW2JdPSEwO3ZhciBjPXNqKGIpO2MhPT12b2lkIDAmJihXZltjXT0hMCl9LE09ZnVuY3Rpb24oYSl7cmV0dXJuISF1ai5OW2FdfSx1aj1uZXcgZnVuY3Rpb24oKXt0aGlzLk49W107dGhpcy5LPVtdO3RoaXMuSD1bXTsKdGoodGhpcywxMzIpO3ZhciBhPU5mKDYsNkU0KTtYZlsxXT1hO3ZhciBiPU5mKDcsMSk7WGZbM109Yjt2YXIgYz1OZigzNSw1MCk7WGZbMl09Yzt2YXIgZD1OZig2OSwxNzc2NDQ4OTIwKTtYZls0XT1kOwp0aih0aGlzLDQzNSk7dGoodGhpcywxNDEpOwp9O3ZhciB2aj1mdW5jdGlvbigpe3RoaXMuSD1uZXcgU2V0O3RoaXMuSz1uZXcgU2V0fSx4aj1mdW5jdGlvbihhKXt2YXIgYj13ai5IO2E9YT09PXZvaWQgMD9bXTphO3ZhciBjPVtdLmNvbmNhdCh3KGIuSCkpLmNvbmNhdChbXS5jb25jYXQodyhiLkspKSkuY29uY2F0KGEpO2Muc29ydChmdW5jdGlvbihkLGUpe3JldHVybiBkLWV9KTtyZXR1cm4gY30seWo9ZnVuY3Rpb24oKXt2YXIgYT1bXS5jb25jYXQodyh3ai5ILkgpKTthLnNvcnQoZnVuY3Rpb24oYixjKXtyZXR1cm4gYi1jfSk7cmV0dXJuIGF9LHpqPWZ1bmN0aW9uKCl7dmFyIGE9d2ouSCxiPUUoNDQpO2EuSD1uZXcgU2V0O2lmKGIhPT0iIilmb3IodmFyIGM9bShiLnNwbGl0KCJ+IikpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1OdW1iZXIoZC52YWx1ZSk7aXNOYU4oZSl8fGEuSC5hZGQoZSl9fTt2YXIgQWo9e30sQmo9e19fY2w6MSxfX2VjbDoxLF9fZWhsOjEsX19ldmw6MSxfX2ZhbDoxLF9fZmlsOjEsX19mc2w6MSxfX2hsOjEsX19qZWw6MSxfX2xjbDoxLF9fc2RsOjEsX190bDoxLF9feXRsOjF9LENqPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30se19fcGF1c2VkOjEsX190ZzoxfSxCaiksRGosRWo9ITE7RGo9RWo7dmFyIEZqPSIiO0FqLnFqPUZqO3ZhciB3aj1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9bmV3IHZqfTt2YXIgR2o9LzpbMC05XSskLyxIaj0vXlxkK1wuZmxzXC5kb3VibGVjbGlja1wubmV0JC87ZnVuY3Rpb24gSWooYSxiLGMsZCl7dmFyIGU9SmooYSwhIWQsYiksZixnO3JldHVybiBjPyhnPWVbYl0pIT1udWxsP2c6W106KGY9ZVtiXSk9PW51bGw/dm9pZCAwOmZbMF19ZnVuY3Rpb24gSmooYSxiLGMpe2Zvcih2YXIgZD17fSxlPW0oYS5zcGxpdCgiJiIpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9bShmLnZhbHVlLnNwbGl0KCI9IikpLGg9Zy5uZXh0KCkudmFsdWUsbD15YShnKSxuPWRlY29kZVVSSUNvbXBvbmVudChoLnJlcGxhY2UoL1wrL2csIiAiKSk7aWYoYz09PXZvaWQgMHx8bj09PWMpe3ZhciBwPWwuam9pbigiPSIpO2Rbbl18fChkW25dPVtdKTtkW25dLnB1c2goYj9wOmRlY29kZVVSSUNvbXBvbmVudChwLnJlcGxhY2UoL1wrL2csIiAiKSkpfX1yZXR1cm4gZH0KZnVuY3Rpb24gS2ooYSl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoYSl9Y2F0Y2goYil7fX1mdW5jdGlvbiBMaihhLGIsYyxkLGUpe2ImJihiPVN0cmluZyhiKS50b0xvd2VyQ2FzZSgpKTtpZihiPT09InByb3RvY29sInx8Yj09PSJwb3J0IilhLnByb3RvY29sPU1qKGEucHJvdG9jb2wpfHxNaihBLmxvY2F0aW9uLnByb3RvY29sKTtiPT09InBvcnQiP2EucG9ydD1TdHJpbmcoTnVtYmVyKGEuaG9zdG5hbWU/YS5wb3J0OkEubG9jYXRpb24ucG9ydCl8fChhLnByb3RvY29sPT09Imh0dHAiPzgwOmEucHJvdG9jb2w9PT0iaHR0cHMiPzQ0MzoiIikpOmI9PT0iaG9zdCImJihhLmhvc3RuYW1lPShhLmhvc3RuYW1lfHxBLmxvY2F0aW9uLmhvc3RuYW1lKS5yZXBsYWNlKEdqLCIiKS50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gTmooYSxiLGMsZCxlKX0KZnVuY3Rpb24gTmooYSxiLGMsZCxlKXt2YXIgZixnPU1qKGEucHJvdG9jb2wpO2ImJihiPVN0cmluZyhiKS50b0xvd2VyQ2FzZSgpKTtzd2l0Y2goYil7Y2FzZSAidXJsX25vX2ZyYWdtZW50IjpmPU9qKGEpO2JyZWFrO2Nhc2UgInByb3RvY29sIjpmPWc7YnJlYWs7Y2FzZSAiaG9zdCI6Zj1hLmhvc3RuYW1lLnJlcGxhY2UoR2osIiIpLnRvTG93ZXJDYXNlKCk7aWYoYyl7dmFyIGg9L153d3dcZCpcLi8uZXhlYyhmKTtoJiZoWzBdJiYoZj1mLnN1YnN0cmluZyhoWzBdLmxlbmd0aCkpfWJyZWFrO2Nhc2UgInBvcnQiOmY9U3RyaW5nKE51bWJlcihhLnBvcnQpfHwoZz09PSJodHRwIj84MDpnPT09Imh0dHBzIj80NDM6IiIpKTticmVhaztjYXNlICJwYXRoIjphLnBhdGhuYW1lfHxhLmhvc3RuYW1lfHxzYigiVEFHR0lORyIsMSk7Zj1hLnBhdGhuYW1lLnN1YnN0cmluZygwLDEpPT09Ii8iP2EucGF0aG5hbWU6Ii8iK2EucGF0aG5hbWU7dmFyIGw9Zi5zcGxpdCgiLyIpOyhkfHxbXSkuaW5kZXhPZihsW2wubGVuZ3RoLQoxXSk+PTAmJihsW2wubGVuZ3RoLTFdPSIiKTtmPWwuam9pbigiLyIpO2JyZWFrO2Nhc2UgInF1ZXJ5IjpmPWEuc2VhcmNoLnJlcGxhY2UoIj8iLCIiKTtlJiYoZj1JaihmLGUsITEpKTticmVhaztjYXNlICJleHRlbnNpb24iOnZhciBuPWEucGF0aG5hbWUuc3BsaXQoIi4iKTtmPW4ubGVuZ3RoPjE/bltuLmxlbmd0aC0xXToiIjtmPWYuc3BsaXQoIi8iKVswXTticmVhaztjYXNlICJmcmFnbWVudCI6Zj1hLmhhc2gucmVwbGFjZSgiIyIsIiIpO2JyZWFrO2RlZmF1bHQ6Zj1hJiZhLmhyZWZ9cmV0dXJuIGZ9ZnVuY3Rpb24gTWooYSl7cmV0dXJuIGE/YS5yZXBsYWNlKCI6IiwiIikudG9Mb3dlckNhc2UoKToiIn1mdW5jdGlvbiBPaihhKXt2YXIgYj0iIjtpZihhJiZhLmhyZWYpe3ZhciBjPWEuaHJlZi5pbmRleE9mKCIjIik7Yj1jPDA/YS5ocmVmOmEuaHJlZi5zdWJzdHJpbmcoMCxjKX1yZXR1cm4gYn12YXIgUGo9e30sUWo9MDsKZnVuY3Rpb24gUmooYSl7dmFyIGI9UGpbYV07aWYoIWIpe3ZhciBjPUIuY3JlYXRlRWxlbWVudCgiYSIpO2EmJihjLmhyZWY9YSk7dmFyIGQ9Yy5wYXRobmFtZTtkWzBdIT09Ii8iJiYoYXx8c2IoIlRBR0dJTkciLDEpLGQ9Ii8iK2QpO3ZhciBlPWMuaG9zdG5hbWUucmVwbGFjZShHaiwiIik7Yj17aHJlZjpjLmhyZWYscHJvdG9jb2w6Yy5wcm90b2NvbCxob3N0OmMuaG9zdCxob3N0bmFtZTplLHBhdGhuYW1lOmQsc2VhcmNoOmMuc2VhcmNoLGhhc2g6Yy5oYXNoLHBvcnQ6Yy5wb3J0fTtRajw1JiYoUGpbYV09YixRaisrKX1yZXR1cm4gYn1mdW5jdGlvbiBTaihhLGIsYyl7dmFyIGQ9UmooYSk7cmV0dXJuIGFjKGIsZCxjKX0KZnVuY3Rpb24gVGooYSl7dmFyIGI9UmooQS5sb2NhdGlvbi5ocmVmKSxjPUxqKGIsImhvc3QiLCExKTtpZihjJiZjLm1hdGNoKEhqKSl7dmFyIGQ9TGooYiwicGF0aCIpO2lmKGQpe3ZhciBlPWQuc3BsaXQoYSsiPSIpO2lmKGUubGVuZ3RoPjEpcmV0dXJuIGVbMV0uc3BsaXQoIjsiKVswXS5zcGxpdCgiPyIpWzBdfX19O3ZhciBVaj17Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20iOiIvZyIsImh0dHBzOi8vd3d3Lmdvb2dsZWFkc2VydmljZXMuY29tIjoiL2FzIiwiaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbSI6Ii9ncyJ9LFZqPVsiL2FzL2QvY2NtL2NvbnZlcnNpb24iLCIvZy9kL2NjbS9jb252ZXJzaW9uIiwiL2dzL2NjbS9jb252ZXJzaW9uIiwiL2QvY2NtL2Zvcm0tZGF0YSJdO2Z1bmN0aW9uIFdqKCl7cmV0dXJuIElmKDQ3KT9KZig1NCkhPT0xOiExfWZ1bmN0aW9uIFhqKCl7dmFyIGE9RSgxOCksYj1hLmxlbmd0aDtyZXR1cm4gYVtiLTFdPT09Ii8iP2Euc3Vic3RyaW5nKDAsYi0xKTphfQpmdW5jdGlvbiBZaihhLGIpe2lmKGEpe3ZhciBjPSIiK2E7Yy5pbmRleE9mKCJodHRwOi8vIikhPT0wJiZjLmluZGV4T2YoImh0dHBzOi8vIikhPT0wJiYoYz0iaHR0cHM6Ly8iK2MpO2NbYy5sZW5ndGgtMV09PT0iLyImJihjPWMuc3Vic3RyaW5nKDAsYy5sZW5ndGgtMSkpO3JldHVybiBSaigiIitjK2IpLmhyZWZ9fWZ1bmN0aW9uIFpqKGEpe2lmKGFrKCkpcmV0dXJuIFlqKGEsIi9hbmFseXRpY3MuanMiKX1mdW5jdGlvbiBiayhhKXtyZXR1cm4gYT09PTJ8fGE9PT0zfWZ1bmN0aW9uIGNrKGEpe3JldHVybiBNKDU4OCkmJmE9PT0zfWZ1bmN0aW9uIGFrKCl7cmV0dXJuIFdqKCl8fElmKDUwKX1mdW5jdGlvbiBkaygpe3JldHVybiEhQWoucWomJkFqLnFqLnNwbGl0KCJAQCIpLmpvaW4oIiIpIT09IlNHVE1fVE9LRU4ifQpmdW5jdGlvbiBlayhhKXtmb3IodmFyIGI9bShbRi5ELmRkLEYuRC55Y10pLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXt2YXIgZD1PKGEsYy52YWx1ZSk7aWYoZClyZXR1cm4gZH19ZnVuY3Rpb24gZmsoYSxiLGMpe2M9Yz09PXZvaWQgMD8iIjpjO2lmKCFXaigpKXJldHVybiBhO3ZhciBkPWI/VWpbYV18fCIiOiIiO2Q9PT0iL2dzIiYmKGM9IiIpO3JldHVybiIiK1hqKCkrZCtjfWZ1bmN0aW9uIGdrKGEpe2lmKFdqKCkpZm9yKHZhciBiPW0oVmopLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKXt2YXIgZD1jLnZhbHVlO2lmKFNiKGEsIiIrWGooKStkKSlyZXR1cm4iOjoifX0KZnVuY3Rpb24gaGsoKXt2YXIgYT1BO2lmKCFhKXJldHVybiExO3RyeXtpZihhPT09YS50b3ApcmV0dXJuITE7dmFyIGI9YS5sb2NhdGlvbi5wYXRobmFtZTtyZXR1cm4gYi5pbmRleE9mKCIvXy9zZXJ2aWNlX3dvcmtlci8iKSE9PS0xJiZUYihiLCIvc3dfaWZyYW1lLmh0bWwiKX1jYXRjaChjKXtyZXR1cm4hMX19O3ZhciBpaz0vZ3RhZ1suXC9danMvLGprPS9ndG1bLlwvXWpzLyxsaz1mdW5jdGlvbihhKXt2YXIgYj1raztpZigoYS5zY3JpcHRDb250YWluZXJJZHx8IiIpLmluZGV4T2YoIkdUTS0iKT49MCl7dmFyIGM7YTp7dmFyIGQsZT0oZD1hLnNjcmlwdEVsZW1lbnQpPT1udWxsP3ZvaWQgMDpkLnNyYztpZihlKXtmb3IodmFyIGY9SWYoNDcpLGc9UmooZSksaD1mP2cucGF0aG5hbWU6IiIrZy5ob3N0bmFtZStnLnBhdGhuYW1lLGw9Qi5zY3JpcHRzLG49IiIscD0wO3A8bC5sZW5ndGg7KytwKXt2YXIgcT1sW3BdO2lmKCEocS5pbm5lckhUTUwubGVuZ3RoPT09MHx8IWYmJnEuaW5uZXJIVE1MLmluZGV4T2YoYS5zY3JpcHRDb250YWluZXJJZHx8IlNIT1VMRF9OT1RfQkVfU0VUIik8MHx8cS5pbm5lckhUTUwuaW5kZXhPZihoKTwwKSl7aWYocS5pbm5lckhUTUwuaW5kZXhPZigiKGZ1bmN0aW9uKHcsZCxzLGwsaSkiKT49MCl7Yz1TdHJpbmcocCk7YnJlYWsgYX1uPVN0cmluZyhwKX19aWYobil7Yz0KbjticmVhayBhfX1jPXZvaWQgMH12YXIgcj1jO2lmKHIpcmV0dXJuIGIuSD0hMCxyfXZhciB0PVtdLnNsaWNlLmNhbGwoQi5zY3JpcHRzKTtyZXR1cm4gYS5zY3JpcHRFbGVtZW50P1N0cmluZyh0LmluZGV4T2YoYS5zY3JpcHRFbGVtZW50KSk6Ii0xIn0sbWs9ZnVuY3Rpb24oYSl7aWYoa2suSClyZXR1cm4iMSI7dmFyIGIsYz0oYj1hLnNjcmlwdEVsZW1lbnQpPT1udWxsP3ZvaWQgMDpiLnNyYztpZihjKXtpZihpay50ZXN0KGMpKXJldHVybiIzIjtpZihqay50ZXN0KGMpKXJldHVybiIyIn1yZXR1cm4iMCJ9LGtrPW5ldyBmdW5jdGlvbigpe3RoaXMuSD0hMX07ZnVuY3Rpb24gUChhKXtzYigiR1RNIixhKX07ZnVuY3Rpb24gbmsoYSl7dmFyIGI9b2soKS5kZXN0aW5hdGlvbkFycmF5W2FdLGM9b2soKS5kZXN0aW5hdGlvblthXTtyZXR1cm4gYiYmYi5sZW5ndGg+MD9iWzBdOmN9ZnVuY3Rpb24gcGsoYSxiKXt2YXIgYz1vaygpO2MucGVuZGluZ3x8KGMucGVuZGluZz1bXSk7Q2IoYy5wZW5kaW5nLGZ1bmN0aW9uKGQpe3JldHVybiBkLnRhcmdldC5jdGlkPT09YS5jdGlkJiZkLnRhcmdldC5pc0Rlc3RpbmF0aW9uPT09YS5pc0Rlc3RpbmF0aW9ufSl8fGMucGVuZGluZy5wdXNoKHt0YXJnZXQ6YSxvbkxvYWQ6Yn0pfWZ1bmN0aW9uIHFrKCl7dmFyIGE9QS5nb29nbGVfdGFnc19maXJzdF9wYXJ0eTtBcnJheS5pc0FycmF5KGEpfHwoYT1bXSk7Zm9yKHZhciBiPXt9LGM9bShhKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSliW2QudmFsdWVdPSEwO3JldHVybiBPYmplY3QuZnJlZXplKGIpfQp2YXIgcms9ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lcj17fTt0aGlzLmRlc3RpbmF0aW9uPXt9O3RoaXMuZGVzdGluYXRpb25BcnJheT17fTt0aGlzLmNhbm9uaWNhbD17fTt0aGlzLnBlbmRpbmc9W107dGhpcy5pbmplY3RlZEZpcnN0UGFydHlDb250YWluZXJzPXt9O3RoaXMuaW5qZWN0ZWRGaXJzdFBhcnR5Q29udGFpbmVycz1xaygpfTsKZnVuY3Rpb24gb2soKXt2YXIgYT1NYygiZ29vZ2xlX3RhZ19kYXRhIix7fSksYj1hLnRpZHI7YiYmdHlwZW9mIGI9PT0ib2JqZWN0Inx8KGI9bmV3IHJrLGEudGlkcj1iKTt2YXIgYz1iO2MuY29udGFpbmVyfHwoYy5jb250YWluZXI9e30pO2MuZGVzdGluYXRpb258fChjLmRlc3RpbmF0aW9uPXt9KTtjLmRlc3RpbmF0aW9uQXJyYXl8fChjLmRlc3RpbmF0aW9uQXJyYXk9e30pO2MuY2Fub25pY2FsfHwoYy5jYW5vbmljYWw9e30pO2MucGVuZGluZ3x8KGMucGVuZGluZz1bXSk7Yy5pbmplY3RlZEZpcnN0UGFydHlDb250YWluZXJzfHwoYy5pbmplY3RlZEZpcnN0UGFydHlDb250YWluZXJzPXFrKCkpO3JldHVybiBjfTtmdW5jdGlvbiBzaygpe3JldHVybiBJZig3KSYmdGsoKS5zb21lKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09RSg1KX0pfWZ1bmN0aW9uIHVrKCl7dmFyIGE7cmV0dXJuKGE9S2YoNTUpKSE9bnVsbD9hOltdfWZ1bmN0aW9uIHZrKCl7cmV0dXJuIEUoNil8fCJfIitFKDUpfWZ1bmN0aW9uIHdrKCl7dmFyIGE9RSgxMCk7cmV0dXJuIGE/YS5zcGxpdCgifCIpOltFKDUpXX1mdW5jdGlvbiB0aygpe3ZhciBhPUtmKDU5KTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gdHlwZW9mIGI9PT0ic3RyaW5nIn0pLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gYi5pbmRleE9mKCJHVE0tIikhPT0wfSk6W119ZnVuY3Rpb24geGsoKXt2YXIgYT15ayh6aygpKSxiPWEmJmEucGFyZW50O2lmKGIpcmV0dXJuIHlrKGIpfQpmdW5jdGlvbiBBaygpe3ZhciBhPXlrKHprKCkpO2lmKGEpe2Zvcig7YS5wYXJlbnQ7KXt2YXIgYj15ayhhLnBhcmVudCk7aWYoIWIpYnJlYWs7YT1ifXJldHVybiBhfX1mdW5jdGlvbiB5ayhhKXt2YXIgYj1vaygpO3JldHVybiBhLmlzRGVzdGluYXRpb24/bmsoYS5jdGlkKTpiLmNvbnRhaW5lclthLmN0aWRdfWZ1bmN0aW9uIEJrKCl7dmFyIGE9b2soKTtpZihhLnBlbmRpbmcpe2Zvcih2YXIgYixjPVtdLGQ9ITEsZT13aygpLGY9dGsoKSxnPXt9LGg9MDtoPGEucGVuZGluZy5sZW5ndGg7Zz17Umc6dm9pZCAwfSxoKyspZy5SZz1hLnBlbmRpbmdbaF0sQ2IoZy5SZy50YXJnZXQuaXNEZXN0aW5hdGlvbj9mOmUsZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuPT09bC5SZy50YXJnZXQuY3RpZH19KGcpKT9kfHwoYj1nLlJnLm9uTG9hZCxkPSEwKTpjLnB1c2goZy5SZyk7YS5wZW5kaW5nPWM7aWYoYil0cnl7Yih2aygpKX1jYXRjaChsKXt9fX0KZnVuY3Rpb24gQ2soKXtmb3IodmFyIGE9RSg1KSxiPXdrKCksYz10aygpLGQ9dWsoKSxlPWZ1bmN0aW9uKHEscil7dmFyIHQ9e2Nhbm9uaWNhbENvbnRhaW5lcklkOkUoNiksc2NyaXB0Q29udGFpbmVySWQ6YSxzdGF0ZToyLGNvbnRhaW5lcnM6Yi5zbGljZSgpLGRlc3RpbmF0aW9uczpjLnNsaWNlKCl9O0pjJiYodC5zY3JpcHRFbGVtZW50PUpjKTtLYyYmKHQuc2NyaXB0U291cmNlPUtjKTt4aygpPT09dm9pZCAwJiYodC5odG1sTG9hZE9yZGVyPWxrKHQpLHQubG9hZFNjcmlwdFR5cGU9bWsodCkpO3ZhciB1LHY7c3dpdGNoKHIpe2Nhc2UgMDp1PWZ1bmN0aW9uKHope2YuY29udGFpbmVyW3FdPXp9O3Y9Zi5jb250YWluZXJbcV07YnJlYWs7Y2FzZSAxOnU9ZnVuY3Rpb24oeil7Zi5kZXN0aW5hdGlvbkFycmF5W3FdPWYuZGVzdGluYXRpb25BcnJheVtxXXx8W107Zi5kZXN0aW5hdGlvbkFycmF5W3FdLnVuc2hpZnQoeil9O3ZhciB4LHk9KCh4PWYuZGVzdGluYXRpb25BcnJheVtxXSk9PQpudWxsP3ZvaWQgMDp4WzBdKXx8Zi5kZXN0aW5hdGlvbltxXTsheXx8eS5zdGF0ZSE9PTAmJnkuc3RhdGUhPT0xfHwodj15KTticmVhaztjYXNlIDI6dT1mdW5jdGlvbih6KXtmLmRlc3RpbmF0aW9uQXJyYXlbcV09Zi5kZXN0aW5hdGlvbkFycmF5W3FdfHxbXTtmLmRlc3RpbmF0aW9uQXJyYXlbcV0ucHVzaCh6KX0sdj12b2lkIDB9dSYmKHY/KHYuc3RhdGU9PT0wJiZQKDkzKSxuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHYsdCkpOnUodCkpfSxmPW9rKCksZz1tKGIpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKWUoaC52YWx1ZSwwKTtmb3IodmFyIGw9bShjKSxuPWwubmV4dCgpOyFuLmRvbmU7bj1sLm5leHQoKSl7dmFyIHA9bi52YWx1ZTtkLmluY2x1ZGVzKHApP2UocCwxKTplKHAsMil9Zi5jYW5vbmljYWxbdmsoKV09e307QmsoKX1mdW5jdGlvbiBEaygpe3ZhciBhPXZrKCk7cmV0dXJuISFvaygpLmNhbm9uaWNhbFthXX0KZnVuY3Rpb24gRWsoYSl7cmV0dXJuISFvaygpLmNvbnRhaW5lclthXX1mdW5jdGlvbiBGaygpe3ZhciBhPXprKCksYj15ayhhKTtyZXR1cm4gYiYmYi5jb250ZXh0fWZ1bmN0aW9uIEdrKGEpe3ZhciBiPW5rKGEpO3JldHVybiBiP2Iuc3RhdGUhPT0wOiExfWZ1bmN0aW9uIHprKCl7cmV0dXJue2N0aWQ6RSg1KSxpc0Rlc3RpbmF0aW9uOklmKDcpfX1mdW5jdGlvbiBIayhhLGIsYyl7dmFyIGQ9emsoKSxlPW9rKCkuY29udGFpbmVyW2FdO2UmJmUuc3RhdGUhPT0zfHwob2soKS5jb250YWluZXJbYV09e3N0YXRlOjEsY29udGV4dDpiLHBhcmVudDpkfSxwayh7Y3RpZDphLGlzRGVzdGluYXRpb246ITF9LGMpKX1mdW5jdGlvbiBJayhhLGIsYyl7dmFyIGQ9b2soKSxlPW5rKGEpO2U/ZS5zdGF0ZT0xOihlPXtjb250ZXh0OmIsc3RhdGU6MSxwYXJlbnQ6emsoKX0sZC5kZXN0aW5hdGlvbkFycmF5W2FdPVtlXSk7cGsoe2N0aWQ6YSxpc0Rlc3RpbmF0aW9uOiEwfSxjKX0KZnVuY3Rpb24gSmsoYSxiLGMsZCl7dmFyIGU9b2soKSxmPW5rKGEpO2Y/Zi5zdGF0ZT0wOihmPXtzdGF0ZTowLHRyYW5zcG9ydFVybDpiLGNvbnRleHQ6YyxwYXJlbnQ6emsoKX0sZS5kZXN0aW5hdGlvbkFycmF5W2FdPVtmXSk7cGsoe2N0aWQ6YSxpc0Rlc3RpbmF0aW9uOiEwfSxkKTtQKDkxKX1mdW5jdGlvbiBLaygpe3ZhciBhPW9rKCkuY29udGFpbmVyLGI7Zm9yKGIgaW4gYSlpZihhLmhhc093blByb3BlcnR5KGIpJiZhW2JdLnN0YXRlPT09MSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBMaygpe3ZhciBhPXt9O0diKG9rKCkuZGVzdGluYXRpb24sZnVuY3Rpb24oYixjKXsoYz09bnVsbD92b2lkIDA6Yy5zdGF0ZSk9PT0wJiYoYVtiXT1jKX0pO0diKG9rKCkuZGVzdGluYXRpb25BcnJheSxmdW5jdGlvbihiLGMpe3ZhciBkPWNbMF07KGQ9PW51bGw/dm9pZCAwOmQuc3RhdGUpPT09MCYmKGFbYl09ZCl9KTtyZXR1cm4gYX0KZnVuY3Rpb24gTWsoYSl7cmV0dXJuISEoYSYmYS5wYXJlbnQmJmEuY29udGV4dCYmYS5jb250ZXh0LnNvdXJjZT09PTEmJmEucGFyZW50LmN0aWQuaW5kZXhPZigiR1RNLSIpIT09MCl9ZnVuY3Rpb24gTmsoKXtmb3IodmFyIGE9b2soKSxiPW0od2soKSksYz1iLm5leHQoKTshYy5kb25lO2M9Yi5uZXh0KCkpaWYoYS5pbmplY3RlZEZpcnN0UGFydHlDb250YWluZXJzW2MudmFsdWVdKXJldHVybiEwO3JldHVybiExfTt2YXIgT2s9ZnVuY3Rpb24oKXt9O09rLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQifTt2YXIgUGs9bmV3IE9rO3ZhciBYaz1mdW5jdGlvbigpe3RoaXMuc3RvcmFnZT1ZYSgpfTtYay5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5zdG9yYWdlLnNldChTdHJpbmcoYSksYil9O1hrLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc3RvcmFnZS5nZXQoU3RyaW5nKGEpKX07dmFyIFlrO2Z1bmN0aW9uIFprKGEsYil7WWt8fChZaz1uZXcgWGspO1lrLnNldChhLGIpfWZ1bmN0aW9uICRrKGEpe1lrfHwoWWs9bmV3IFhrKTtyZXR1cm4gWWsuZ2V0KGEpfWZ1bmN0aW9uIGFsKGEsYil7WWt8fChZaz1uZXcgWGspO3ZhciBjPVlrO2Muc3RvcmFnZS5oYXMoU3RyaW5nKGEpKXx8Yy5zdG9yYWdlLnNldChTdHJpbmcoYSksYigpKTtyZXR1cm4gYy5zdG9yYWdlLmdldChTdHJpbmcoYSkpfTtmdW5jdGlvbiBibChhLGIpe2Z1bmN0aW9uIGMoZyl7dmFyIGg9UmooZyksbD1MaihoLCJwcm90b2NvbCIpLG49TGooaCwiaG9zdCIsITApLHA9TGooaCwicG9ydCIpLHE9TGooaCwicGF0aCIpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXC8kLywiIik7aWYobD09PXZvaWQgMHx8bD09PSJodHRwIiYmcD09PSI4MCJ8fGw9PT0iaHR0cHMiJiZwPT09IjQ0MyIpbD0id2ViIixwPSJkZWZhdWx0IjtyZXR1cm5bbCxuLHAscV19Zm9yKHZhciBkPWMoU3RyaW5nKGEpKSxlPWMoU3RyaW5nKGIpKSxmPTA7ZjxkLmxlbmd0aDtmKyspaWYoZFtmXSE9PWVbZl0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gY2woYSl7cmV0dXJuIGRsKGEpPzE6MH0KZnVuY3Rpb24gZGwoYSl7dmFyIGI9YS5hcmcwLGM9YS5hcmcxO2lmKGEuYW55X29mJiZBcnJheS5pc0FycmF5KGMpKXtmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9RWQoYSx7fSk7RWQoe2FyZzE6Y1tkXSxhbnlfb2Y6dm9pZCAwfSxlKTtpZihjbChlKSlyZXR1cm4hMH1yZXR1cm4hMX1zd2l0Y2goYVsiZnVuY3Rpb24iXSl7Y2FzZSAiX2NuIjpyZXR1cm4gS2coYixjKTtjYXNlICJfY3NzIjpyZXR1cm4gR2coYixjKTtjYXNlICJfZXciOnJldHVybiBIZyhiLGMpO2Nhc2UgIl9lcSI6cmV0dXJuIExnKGIsYyk7Y2FzZSAiX2dlIjpyZXR1cm4gTWcoYixjKTtjYXNlICJfZ3QiOnJldHVybiBPZyhiLGMpO2Nhc2UgIl9sYyI6cmV0dXJuIElnKGIsYyk7Y2FzZSAiX2xlIjpyZXR1cm4gTmcoYixjKTtjYXNlICJfbHQiOnJldHVybiBQZyhiLGMpO2Nhc2UgIl9yZSI6cmV0dXJuIEpnKGIsYyxhLmlnbm9yZV9jYXNlLGFsKDMsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1hcH0pKTtjYXNlICJfc3ciOnJldHVybiBRZyhiLApjKTtjYXNlICJfdW0iOnJldHVybiBibChiLGMpfXJldHVybiExfTtmdW5jdGlvbiBlbChhLGIsYyxkLGUpe2lmKEFycmF5LmlzQXJyYXkoYSkpe3ZhciBmO3N3aXRjaChhWzBdKXtjYXNlICJmdW5jdGlvbl9pZCI6cmV0dXJuIGFbMV07Y2FzZSAibGlzdCI6Zj1bXTtmb3IodmFyIGc9MTtnPGEubGVuZ3RoO2crKylmLnB1c2goZWwoYVtnXSxiLGMsZCxlKSk7cmV0dXJuIGY7Y2FzZSAibWFjcm8iOnZhciBoPWRbYVsxXV07cmV0dXJuIGg/aC5ldmFsdWF0ZShiLGUpOnZvaWQgMDtjYXNlICJtYXAiOmY9e307Zm9yKHZhciBsPTE7bDxhLmxlbmd0aDtsKz0yKWZbZWwoYVtsXSxiLGMsZCxlKV09ZWwoYVtsKzFdLGIsYyxkLGUpO3JldHVybiBmO2Nhc2UgInRlbXBsYXRlIjpmPVtdO2Zvcih2YXIgbj0hMSxwPTE7cDxhLmxlbmd0aDtwKyspe3ZhciBxPWVsKGFbcF0sYixjLGQsZSk7Zi5wdXNoKHEpfXJldHVybiBmLmpvaW4oIiIpO2Nhc2UgImVzY2FwZSI6Zj1lbChhWzFdLGIsYyxkLGUpO2Y9U3RyaW5nKGYpO2Zvcih2YXIgeT0yO3k8YS5sZW5ndGg7eSsrKVVpW2FbeV1dJiYoZj1VaVthW3ldXShmKSk7cmV0dXJuIGY7Y2FzZSAidGFnIjp2YXIgej1hWzFdO2lmKCFjW3pdKXRocm93IEVycm9yKCJVbmFibGUgdG8gcmVzb2x2ZSB0YWcgcmVmZXJlbmNlICIrCnorIi4iKTtyZXR1cm57Ym86YVsyXSxpbmRleDp6fTtjYXNlICJ6YiI6dmFyIEM9e30sRD0oQ1tHZi5ZYl09YVsxXSxDLmFyZzA9ZWwoYVsyXSxiLGMsZCxlKSxDLmFyZzE9ZWwoYVszXSxiLGMsZCxlKSxDLmlnbm9yZV9jYXNlPWVsKGFbNV0sYixjLGQsZSksQyksST1jbChEKSxHPSEhYVs0XTtyZXR1cm4gR3x8SSE9PTI/RyE9PShJPT09MSk6bnVsbDtkZWZhdWx0OnRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGV4cGFuZCB1bmtub3duIFZhbHVlIHR5cGU6ICIrYVswXSsiLiIpO319cmV0dXJuIGF9O2Z1bmN0aW9uIGZsKGEpe3JldHVybiBhJiZhLmluZGV4T2YoInBlbmRpbmc6Iik9PT0wP2dsKGEuc3Vic3RyKDgpKTohMX1mdW5jdGlvbiBnbChhKXtpZihhPT1udWxsfHxhLmxlbmd0aD09PTApcmV0dXJuITE7dmFyIGI9TnVtYmVyKGEpLGM9TmIoKTtyZXR1cm4gYjxjKzNFNSYmYj5jLTlFNX07dmFyIGhsPSExLGlsPSExLGpsPSExLGtsPTAsbGw9ITEsbWw9dm9pZCAwLG5sPVtdO2Z1bmN0aW9uIG9sKGEpe2lmKGtsPT09MClsbCYmbmwmJihubC5sZW5ndGg+PTEwMCYmbmwuc2hpZnQoKSxubC5wdXNoKGEpKTtlbHNlIGlmKHBsKCkpe3ZhciBiPUUoNDEpLGM9TWMoYixbXSk7Yy5sZW5ndGg+PTUwJiZjLnNoaWZ0KCk7Yy5wdXNoKGEpfX1mdW5jdGlvbiBxbCgpe2lsfHwocmwoKSxzbChrbCkpfWZ1bmN0aW9uIHNsKGEpe2lmKCFpbHx8a2w9PT0yJiZhPT09MSlpZihpbD0hMCxqbCYmKGFkKEIsIlRBUHJvZERlYnVnU2lnbmFsIixxbCksamw9ITEpLG1sIT09dm9pZCAwJiYoQS5jbGVhclRpbWVvdXQobWwpLG1sPXZvaWQgMCksa2w9YSxhPT09MSl7dmFyIGI9bmw7bmw9dm9pZCAwO2I9PW51bGx8fGIuZm9yRWFjaChmdW5jdGlvbihjKXtvbChjKX0pfX0KZnVuY3Rpb24gcmwoKXt2YXIgYT1CLmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRhdGEtdGFnLWFzc2lzdGFudC1wcm9kLXByZXNlbnQiKTtnbChhKT9rbD0xOiFmbChhKXx8aGx8fGpsP2tsPTI6KGpsPSEwLCRjKEIsIlRBUHJvZERlYnVnU2lnbmFsIixxbCwhMSksbWw9QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWx8fChybCgpLHNsKGtsKSk7aGw9ITB9LDIwMCkpfWZ1bmN0aW9uIHBsKCl7aWYoIWxsKXJldHVybiExO3N3aXRjaChrbCl7Y2FzZSAxOmNhc2UgMDpyZXR1cm4hMDtjYXNlIDI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIHRsKCl7dmFyIGE9TWMoImdvb2dsZV90YWdfZGF0YSIse30pO3JldHVybiBhLmljcz1hLmljc3x8bmV3IHVsfXZhciB1bD1mdW5jdGlvbigpe3RoaXMuZW50cmllcz17fTt0aGlzLndhaXRQZXJpb2RUaW1lZE91dD10aGlzLndhc1NldExhdGU9dGhpcy5hY2Nlc3NlZEFueT10aGlzLmFjY2Vzc2VkRGVmYXVsdD10aGlzLnVzZWRJbXBsaWNpdD10aGlzLnVzZWRVcGRhdGU9dGhpcy51c2VkRGVmYXVsdD10aGlzLnVzZWREZWNsYXJlPXRoaXMuYWN0aXZlPSExO3RoaXMuSD1bXX07CnVsLnByb3RvdHlwZS5kZWZhdWx0PWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3RoaXMudXNlZERlZmF1bHR8fHRoaXMudXNlZERlY2xhcmV8fCF0aGlzLmFjY2Vzc2VkRGVmYXVsdCYmIXRoaXMuYWNjZXNzZWRBbnl8fCh0aGlzLndhc1NldExhdGU9ITApO3RoaXMudXNlZERlZmF1bHQ9dGhpcy5hY3RpdmU9ITA7c2IoIlRBR0dJTkciLDE5KTtiPT1udWxsP3NiKCJUQUdHSU5HIiwxOCk6dmwodGhpcyxhLGI9PT0iZ3JhbnRlZCIsYyxkLGUsZixnKX07dWwucHJvdG90eXBlLndhaXRGb3JVcGRhdGU9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKXZsKHRoaXMsYVtkXSx2b2lkIDAsdm9pZCAwLCIiLCIiLGIsYyl9Owp2YXIgdmw9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXt2YXIgbD1hLmVudHJpZXMsbj1sW2JdfHx7fSxwPW4ucmVnaW9uLHE9ZCYmemIoZCk/ZC50b1VwcGVyQ2FzZSgpOnZvaWQgMDtlPWUudG9VcHBlckNhc2UoKTtmPWYudG9VcHBlckNhc2UoKTtpZihlPT09IiJ8fHE9PT1mfHwocT09PWU/cCE9PWY6IXEmJiFwKSl7dmFyIHI9ISEoZyYmZz4wJiZuLnVwZGF0ZT09PXZvaWQgMCksdD17cmVnaW9uOnEsZGVjbGFyZV9yZWdpb246bi5kZWNsYXJlX3JlZ2lvbixpbXBsaWNpdDpuLmltcGxpY2l0LGRlZmF1bHQ6YyE9PXZvaWQgMD9jOm4uZGVmYXVsdCxkZWNsYXJlOm4uZGVjbGFyZSx1cGRhdGU6bi51cGRhdGUscXVpZXQ6cn07aWYoZSE9PSIifHxuLmRlZmF1bHQhPT0hMSlsW2JdPXQ7ciYmQS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bFtiXT09PXQmJnQucXVpZXQmJihzYigiVEFHR0lORyIsMiksYS53YWl0UGVyaW9kVGltZWRPdXQ9ITAsYS5jbGVhclRpbWVvdXQoYix2b2lkIDAsaCksCmEubm90aWZ5TGlzdGVuZXJzKCkpfSxnKX19O2s9dWwucHJvdG90eXBlO2suY2xlYXJUaW1lb3V0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bYV0sZT1jLmRlbGVnYXRlZENvbnNlbnRUeXBlcyxmO2ZvcihmIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShmKSYmZVtmXT09PWEmJmQucHVzaChmKTt2YXIgZz10aGlzLmVudHJpZXNbYV18fHt9LGg9dGhpcy5nZXRDb25zZW50U3RhdGUoYSxjKTtpZihnLnF1aWV0KXtnLnF1aWV0PSExO2Zvcih2YXIgbD1tKGQpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXdsKHRoaXMsbi52YWx1ZSl9ZWxzZSBpZihiIT09dm9pZCAwJiZoIT09Yilmb3IodmFyIHA9bShkKSxxPXAubmV4dCgpOyFxLmRvbmU7cT1wLm5leHQoKSl3bCh0aGlzLHEudmFsdWUpfTsKay51cGRhdGU9ZnVuY3Rpb24oYSxiLGMpe3RoaXMudXNlZERlZmF1bHR8fHRoaXMudXNlZERlY2xhcmV8fHRoaXMudXNlZFVwZGF0ZXx8IXRoaXMuYWNjZXNzZWRBbnl8fCh0aGlzLndhc1NldExhdGU9ITApO3RoaXMudXNlZFVwZGF0ZT10aGlzLmFjdGl2ZT0hMDtpZihiIT1udWxsKXt2YXIgZD10aGlzLmdldENvbnNlbnRTdGF0ZShhLGMpLGU9dGhpcy5lbnRyaWVzOyhlW2FdPWVbYV18fHt9KS51cGRhdGU9Yj09PSJncmFudGVkIjt0aGlzLmNsZWFyVGltZW91dChhLGQsYyl9fTsKay5kZWNsYXJlPWZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy51c2VkRGVjbGFyZT10aGlzLmFjdGl2ZT0hMDt2YXIgZj10aGlzLmVudHJpZXMsZz1mW2FdfHx7fSxoPWcuZGVjbGFyZV9yZWdpb24sbD1jJiZ6YihjKT9jLnRvVXBwZXJDYXNlKCk6dm9pZCAwO2Q9ZC50b1VwcGVyQ2FzZSgpO2U9ZS50b1VwcGVyQ2FzZSgpO2lmKGQ9PT0iInx8bD09PWV8fChsPT09ZD9oIT09ZTohbCYmIWgpKXt2YXIgbj17cmVnaW9uOmcucmVnaW9uLGRlY2xhcmVfcmVnaW9uOmwsZGVjbGFyZTpiPT09ImdyYW50ZWQiLGltcGxpY2l0OmcuaW1wbGljaXQsZGVmYXVsdDpnLmRlZmF1bHQsdXBkYXRlOmcudXBkYXRlLHF1aWV0OmcucXVpZXR9O2lmKGQhPT0iInx8Zy5kZWNsYXJlIT09ITEpZlthXT1ufX07CmsuaW1wbGljaXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLnVzZWRJbXBsaWNpdD0hMDt2YXIgYz10aGlzLmVudHJpZXMsZD1jW2FdPWNbYV18fHt9O2QuaW1wbGljaXQhPT0hMSYmKGQuaW1wbGljaXQ9Yj09PSJncmFudGVkIil9OwprLmdldENvbnNlbnRTdGF0ZT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZW50cmllcyxkPWNbYV18fHt9LGU9ZC51cGRhdGU7aWYoZSE9PXZvaWQgMClyZXR1cm4gZT8xOjI7aWYoYi51c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHMpe3ZhciBmPWIuY29udGFpbmVyU2NvcGVkRGVmYXVsdHNbYV07aWYoZj09PTMpcmV0dXJuIDE7aWYoZj09PTIpcmV0dXJuIDJ9ZWxzZSBpZihlPWQuZGVmYXVsdCxlIT09dm9pZCAwKXJldHVybiBlPzE6MjtpZihiPT1udWxsPzA6Yi5kZWxlZ2F0ZWRDb25zZW50VHlwZXMuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBnPWIuZGVsZWdhdGVkQ29uc2VudFR5cGVzW2FdLGg9Y1tnXXx8e307ZT1oLnVwZGF0ZTtpZihlIT09dm9pZCAwKXJldHVybiBlPzE6MjtpZihiLnVzZWRDb250YWluZXJTY29wZWREZWZhdWx0cyl7dmFyIGw9Yi5jb250YWluZXJTY29wZWREZWZhdWx0c1tnXTtpZihsPT09MylyZXR1cm4gMTtpZihsPT09MilyZXR1cm4gMn1lbHNlIGlmKGU9CmguZGVmYXVsdCxlIT09dm9pZCAwKXJldHVybiBlPzE6Mn1lPWQuZGVjbGFyZTtpZihlIT09dm9pZCAwKXJldHVybiBlPzE6MjtlPWQuaW1wbGljaXQ7cmV0dXJuIGUhPT12b2lkIDA/ZT8zOjQ6MH07ay5hZGRMaXN0ZW5lcj1mdW5jdGlvbihhLGIpe3RoaXMuSC5wdXNoKHtjb25zZW50VHlwZXM6YSxpZTpifSl9O3ZhciB3bD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8YS5ILmxlbmd0aDsrK2Mpe3ZhciBkPWEuSFtjXTtBcnJheS5pc0FycmF5KGQuY29uc2VudFR5cGVzKSYmZC5jb25zZW50VHlwZXMuaW5kZXhPZihiKSE9PS0xJiYoZC54bz0hMCl9fTt1bC5wcm90b3R5cGUubm90aWZ5TGlzdGVuZXJzPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yzx0aGlzLkgubGVuZ3RoOysrYyl7dmFyIGQ9dGhpcy5IW2NdO2lmKGQueG8pe2QueG89ITE7dHJ5e2QuaWUoe2NvbnNlbnRFdmVudElkOmEsY29uc2VudFByaW9yaXR5SWQ6Yn0pfWNhdGNoKGUpe319fX07dmFyIHhsPSExLHlsPSExLHpsPXt9LEFsPXtkZWxlZ2F0ZWRDb25zZW50VHlwZXM6e30sY29yZVBsYXRmb3JtU2VydmljZXM6e30sdXNlZENvcmVQbGF0Zm9ybVNlcnZpY2VzOiExLHNlbGVjdGVkQWxsQ29yZVBsYXRmb3JtU2VydmljZXM6ITEsY29udGFpbmVyU2NvcGVkRGVmYXVsdHM6KHpsLmFkX3N0b3JhZ2U9MSx6bC5hbmFseXRpY3Nfc3RvcmFnZT0xLHpsLmFkX3VzZXJfZGF0YT0xLHpsLmFkX3BlcnNvbmFsaXphdGlvbj0xLHpsKSx1c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHM6ITF9O2Z1bmN0aW9uIEJsKGEpe3ZhciBiPXRsKCk7Yi5hY2Nlc3NlZEFueT0hMDtyZXR1cm4oemIoYSk/W2FdOmEpLmV2ZXJ5KGZ1bmN0aW9uKGMpe3N3aXRjaChiLmdldENvbnNlbnRTdGF0ZShjLEFsKSl7Y2FzZSAxOmNhc2UgMzpyZXR1cm4hMDtjYXNlIDI6Y2FzZSA0OnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fSl9CmZ1bmN0aW9uIENsKGEpe3ZhciBiPXRsKCk7Yi5hY2Nlc3NlZEFueT0hMDtyZXR1cm4gYi5nZXRDb25zZW50U3RhdGUoYSxBbCl9ZnVuY3Rpb24gRGwoYSl7dmFyIGI9dGwoKTtiLmFjY2Vzc2VkQW55PSEwO3JldHVybiEoYi5lbnRyaWVzW2FdfHx7fSkucXVpZXR9ZnVuY3Rpb24gRWwoKXtpZighWWYoNSkpcmV0dXJuITE7dmFyIGE9dGwoKTthLmFjY2Vzc2VkQW55PSEwO2lmKGEuYWN0aXZlKXJldHVybiEwO2lmKCFBbC51c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHMpcmV0dXJuITE7Zm9yKHZhciBiPW0oT2JqZWN0LmtleXMoQWwuY29udGFpbmVyU2NvcGVkRGVmYXVsdHMpKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSlpZihBbC5jb250YWluZXJTY29wZWREZWZhdWx0c1tjLnZhbHVlXSE9PTEpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gRmwoYSxiKXt0bCgpLmFkZExpc3RlbmVyKGEsYil9CmZ1bmN0aW9uIEdsKGEsYil7dGwoKS5ub3RpZnlMaXN0ZW5lcnMoYSxiKX1mdW5jdGlvbiBIbChhLGIpe2lmKGIuZXZlcnkoRGwpKWEoe30pO2Vsc2V7dmFyIGM9ITE7RmwoYixmdW5jdGlvbihkKXshYyYmYi5ldmVyeShEbCkmJihjPSEwLGEoZCkpfSl9fQpmdW5jdGlvbiBJbChhLGIpe3ZhciBjPXpiKGIpP1tiXTpiLGQ9e30sZT1mdW5jdGlvbigpe3JldHVybiBjLmZpbHRlcihmdW5jdGlvbihoKXtyZXR1cm4gQmwoaCkmJiFkW2hdfSl9LGY9ZSgpO2lmKGYubGVuZ3RoIT09Yy5sZW5ndGgpe3ZhciBnPWZ1bmN0aW9uKGgpe2Zvcih2YXIgbD1tKGgpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKWRbbi52YWx1ZV09ITB9O2coZik7RmwoYyxmdW5jdGlvbihoKXtmdW5jdGlvbiBsKHEpe3EubGVuZ3RoIT09MCYmKGcocSksaC5jb25zZW50VHlwZXM9cSxhKGgpKX12YXIgbj1lKCk7aWYobi5sZW5ndGghPT0wKXt2YXIgcD1PYmplY3Qua2V5cyhkKS5sZW5ndGg7bi5sZW5ndGgrcD49Yy5sZW5ndGg/bChuKTpBLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtsKGUoKSl9LDUwMCl9fSl9fTt2YXIgSmw9ITE7ZnVuY3Rpb24gS2woYSxiKXt2YXIgYz13aygpLGQ9dGsoKTtFKDI2KTt2YXIgZT1JZig0Nyk/MDpJZig1MCk/MTozLGY9WGooKTtpZihwbCgpKXt2YXIgZz1MbCgiSU5JVCIpO2cuY29udGFpbmVyTG9hZFNvdXJjZT1hIT1udWxsP2E6MDtiJiYoZy5wYXJlbnRUYXJnZXRSZWZlcmVuY2U9Yik7Zy5hbGlhc2VzPWM7Zy5kZXN0aW5hdGlvbnM9ZDtlIT09dm9pZCAwJiYoZy5ndGc9e3NvdXJjZTplLG1QYXRoOmYhPW51bGw/ZjoiIn0pO29sKGcpfX0KZnVuY3Rpb24gTWwoYSl7dmFyIGIsYyxkLGU7Yj1hLnRhcmdldElkO2M9YS5yZXF1ZXN0O2Q9YS5xYjtlPWEuaXNCYXRjaGVkO3ZhciBmO2lmKGY9cGwoKSl7dmFyIGc7YTpzd2l0Y2goYy5lbmRwb2ludCl7Y2FzZSA2ODpjYXNlIDY5OmNhc2UgMTk6Y2FzZSA2MjpjYXNlIDQ3Omc9ITA7YnJlYWsgYTtkZWZhdWx0Omc9ITF9Zj0hZ31pZihmKXt2YXIgaD1MbCgiR1RBR19ISVQiLHtldmVudElkOmQuZXZlbnRJZCxwcmlvcml0eUlkOmQucHJpb3JpdHlJZH0pO2gudGFyZ2V0PWI7aC51cmw9Yy51cmw7Yy5wb3N0Qm9keSYmKGgucG9zdEJvZHk9Yy5wb3N0Qm9keSk7aC5wYXJhbWV0ZXJFbmNvZGluZz1jLnBhcmFtZXRlckVuY29kaW5nO2guZW5kcG9pbnQ9Yy5lbmRwb2ludDtlIT09dm9pZCAwJiYoaC5pc0JhdGNoZWQ9ZSk7b2woaCl9fWZ1bmN0aW9uIE5sKGEpe3BsKCkmJk1sKGEoKSl9CmZ1bmN0aW9uIExsKGEsYil7Yj1iPT09dm9pZCAwP3t9OmI7Yi5ncm91cElkPU9sO3ZhciBjLGQ9YixlPVBsLGY9e3B1YmxpY0lkOlFsfTtkLmV2ZW50SWQhPW51bGwmJihmLmV2ZW50SWQ9ZC5ldmVudElkKTtkLnByaW9yaXR5SWQhPW51bGwmJihmLnByaW9yaXR5SWQ9ZC5wcmlvcml0eUlkKTtkLmV2ZW50TmFtZSYmKGYuZXZlbnROYW1lPWQuZXZlbnROYW1lKTtkLmdyb3VwSWQmJihmLmdyb3VwSWQ9ZC5ncm91cElkKTtkLnRhZ05hbWUmJihmLnRhZ05hbWU9ZC50YWdOYW1lKTtjPXtjb250YWluZXJQcm9kdWN0OiJHVE0iLGtleTpmLHZlcnNpb246ZSxtZXNzYWdlVHlwZTphfTtjLmNvbnRhaW5lclByb2R1Y3Q9Smw/Ik9HVCI6IkdUTSI7Yy5rZXkudGFyZ2V0UmVmPVJsO3JldHVybiBjfXZhciBRbD0iIixQbD0iIixSbD17Y3RpZDoiIixpc0Rlc3RpbmF0aW9uOiExfSxPbDsKZnVuY3Rpb24gU2woYSl7dmFyIGI9RSg1KSxjPUlmKDQ1KSxkPXNrKCksZT1FKDYpLGY9RSgxKTtFKDIzKTtrbD0wO2xsPSEwO3JsKCk7T2w9YTtRbD1iO1BsPWY7Smw9YztSbD17Y3RpZDpiLGlzRGVzdGluYXRpb246ZCxjYW5vbmljYWxJZDplfX07ZnVuY3Rpb24gVGwoYSxiLGMsZCl7aWYocGwoKSl7dmFyIGU9Yi5NO01sKHt0YXJnZXRJZDpkfHxbYi50YXJnZXQuZGVzdGluYXRpb25JZF0scmVxdWVzdDp7dXJsOmEscGFyYW1ldGVyRW5jb2Rpbmc6MixlbmRwb2ludDpjfSxxYjp7ZXZlbnRJZDplLmV2ZW50SWQscHJpb3JpdHlJZDplLnByaW9yaXR5SWR9LEZqOntldmVudElkOlEoYixILkoudWYpLHByaW9yaXR5SWQ6UShiLEguSi52Zil9fSl9fTtmdW5jdGlvbiBVbChhLGIsYyl7dmFyIGQ9Imh0dHBzOi8vIithK2I7cmV0dXJuIGM/ZnVuY3Rpb24oKXtyZXR1cm4gV2ooKT9YaigpK2MrYjpkfTpmdW5jdGlvbigpe3JldHVybiBkfX07dmFyIFZsPXt9LFdsPShWbFsyMl09VWwoInd3dy5nb29nbGVhZHNlcnZpY2VzLmNvbSIsIi9jY20vY29udmVyc2lvbiIsIi9hcy9kIiksVmxbNjBdPVVsKCJwYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbSIsIi9jY20vY29udmVyc2lvbiIsIi9ncyIpLFZsWzIzXT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvY2NtL2NvbnZlcnNpb24iLCIvZy9kIiksVmwpO3ZhciBYbD17fSxZbD0oWGxbNV09VWwoInd3dy5nb29nbGVhZHNlcnZpY2VzLmNvbSIsIi9wYWdlYWQvY29udmVyc2lvbiIpLFhsWzZdPVVsKCJwYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbSIsIi9wYWdlYWQvY29udmVyc2lvbiIsIi9ncyIpLFhsWzhdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9wYWdlYWQvMXAtY29udmVyc2lvbiIpLFhsWzY2XT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvcGFnZWFkL3Vjb252ZXJzaW9uIiksWGxbNjNdPVVsKCJ3d3cuZ29vZ2xlYWRzZXJ2aWNlcy5jb20iLCIvcGFnZWFkL2NvbnZlcnNpb24iKSxYbFs2NF09VWwoInBhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tIiwiL3BhZ2VhZC9jb252ZXJzaW9uIiwiL2dzIiksWGxbNjVdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9wYWdlYWQvMXAtY29udmVyc2lvbiIpLFhsWzc0XT1mdW5jdGlvbigpe3JldHVybiBYaigpKyIvYXMvcC9jIn0sWGwpO3ZhciBabD17fSwkbD0oWmxbNDVdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9jY20vY29sbGVjdCIpLFpsWzQ2XT1VbCgicGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20iLCIvY2NtL2NvbGxlY3QiLCIvZ3MiKSxabFs2OV09VWwoImFkLmRvdWJsZWNsaWNrLm5ldCIsIi9jY20vcy9jb2xsZWN0IiksWmxbNThdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9wYWdlYWQvc2V0X3BhcnRpdGlvbmVkX2Nvb2tpZSIpLFpsWzU3XT1VbCgid3d3Lmdvb2dsZWFkc2VydmljZXMuY29tIiwiL3BhZ2VhZC9zZXRfcGFydGl0aW9uZWRfY29va2llIiksWmwpO3ZhciBhbT17fSxibT0oYW1bOV09VWwoImdvb2dsZWFkcy5nLmRvdWJsZWNsaWNrLm5ldCIsIi9wYWdlYWQvdmlld3Rocm91Z2hjb252ZXJzaW9uIiksYW1bNjhdPVVsKCJ3d3cuZ29vZ2xlLmNvbSIsIi9ybWt0L2NvbGxlY3QiKSxhbSk7dmFyIGNtPXt9LGRtPShjbVsxMV09VWwoInd3dy5nb29nbGUuY29tIiwiL3BhZ2VhZC9mb3JtLWRhdGEiLCIvZCIpLGNtWzIxXT1VbCgid3d3Lmdvb2dsZS5jb20iLCIvY2NtL2Zvcm0tZGF0YSIsIi9kIiksY21bNzJdPVVsKCJnb29nbGUuY29tIiwiL3BhZ2VhZC9mb3JtLWRhdGEiLCIvZCIpLGNtWzczXT1VbCgiZ29vZ2xlLmNvbSIsIi9jY20vZm9ybS1kYXRhIiwiL2QiKSxjbSk7dmFyIGVtPXt9LGZtPShlbVs1MV09VWwoInd3dy5nb29nbGUuY29tIiwiL3RyYXZlbC9mbGlnaHRzL2NsaWNrL2NvbnZlcnNpb24iKSxlbSk7dmFyIGdtPXt9LGhtPShnbVsxXT1mdW5jdGlvbigpe3JldHVybiJodHRwczovL2FkLmRvdWJsZWNsaWNrLm5ldC9hY3Rpdml0eTsifSxnbVsyXT1mdW5jdGlvbigpe3JldHVybihXaigpP1hqKCk6Imh0dHBzOi8vYWRlLmdvb2dsZXN5bmRpY2F0aW9uLmNvbSIpKyIvZGRtL2FjdGl2aXR5IisoTSg0NjcpPyI7IjoiLyIpfSxnbVszXT1mdW5jdGlvbihhKXtyZXR1cm4iaHR0cHM6Ly8iK2EubHIrIi5mbHMuZG91YmxlY2xpY2submV0L2FjdGl2aXR5aTsifSxnbSk7ZnVuY3Rpb24gaW0oYSl7c2IoIkhFQUxUSCIsYSl9O3ZhciBqbT17YmE6e1B0OiJhd191c2VyX2RhdGFfY2FjaGUiLG9pOiJjb29raWVfZGVwcmVjYXRpb25fbGFiZWwiLGJoOiJkaWFnbm9zdGljc19wYWdlX2lkIixvcDoiZW1lbW8iLGR1OiJlbV9yZWdpc3RyeSIsU2k6ImVhYiIscnU6ImZsX3VzZXJfZGF0YV9jYWNoZSIsdHU6ImdhNF91c2VyX2RhdGFfY2FjaGUiLEx1OiJpZGNfcHZfY2xhaW0iLFNlOiJpcF9nZW9fZGF0YV9jYWNoZSIsWGk6ImlwX2dlb19mZXRjaF9pbl9wcm9ncmVzcyIsam46Im5iX2RhdGEiLFRxOiJwYWdlX2V4cGVyaW1lbnRfaWRzIixsbjoicGxkIixWZToicHRfZGF0YSIsbW46InB0X2xpc3RlbmVyX3NldCIsa2o6InJldHJ5X2NvbnRhaW5lcnMiLE9oOiJzZXJ2aWNlX3dvcmtlcl9lbmRwb2ludCIsWnE6InNoYXJlZF91c2VyX2lkIixhcjoic2hhcmVkX3VzZXJfaWRfcmVxdWVzdGVkIixzajoic2hhcmVkX3VzZXJfaWRfc291cmNlIixidjoiYXdoIixocjoidW5pdmVyc2FsX2NsYWltX3JlZ2lzdHJ5In19O3ZhciBrbT1mdW5jdGlvbihhKXtyZXR1cm4gdGYoZnVuY3Rpb24oYil7Zm9yKHZhciBjIGluIGEpaWYoYj09PWFbY10mJiEvXlswLTldKyQvLnRlc3QoYykpcmV0dXJuITA7cmV0dXJuITF9KX0oam0uYmEpOwpmdW5jdGlvbiBsbShhLGIpe2I9Yj09PXZvaWQgMD8hMTpiO2lmKGttKGEpKXt2YXIgYyxkLGU9KGQ9KGM9TWMoImdvb2dsZV90YWdfZGF0YSIse30pKS54Y2QpIT1udWxsP2Q6Yy54Y2Q9e307aWYoZVthXSlyZXR1cm4gZVthXTtpZihiKXt2YXIgZj12b2lkIDAsZz0xLGg9e30sbD17c2V0OmZ1bmN0aW9uKG4pe2Y9bjtsLm5vdGlmeSgpfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sc3Vic2NyaWJlOmZ1bmN0aW9uKG4pe2hbU3RyaW5nKGcpXT1uO3JldHVybiBnKyt9LHVuc3Vic2NyaWJlOmZ1bmN0aW9uKG4pe3ZhciBwPVN0cmluZyhuKTtyZXR1cm4gaC5oYXNPd25Qcm9wZXJ0eShwKT8oZGVsZXRlIGhbcF0sITApOiExfSxub3RpZnk6ZnVuY3Rpb24oKXtmb3IodmFyIG49bShPYmplY3Qua2V5cyhoKSkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpe3ZhciBxPXAudmFsdWU7dHJ5e2hbcV0oYSxmKX1jYXRjaChyKXt9fX19O3JldHVybiBlW2FdPWx9fX0KZnVuY3Rpb24gbW0oYSxiKXt2YXIgYz1sbShhLCEwKTtjJiZjLnNldChiKX1mdW5jdGlvbiBubShhKXt2YXIgYjtyZXR1cm4oYj1sbShhKSk9PW51bGw/dm9pZCAwOmIuZ2V0KCl9ZnVuY3Rpb24gb20oYSxiKXt2YXIgYz1sbShhKTtpZighYyl7Yz1sbShhLCEwKTtpZighYylyZXR1cm47Yy5zZXQoYil9cmV0dXJuIGMuZ2V0KCl9ZnVuY3Rpb24gcG0oYSxiKXtpZih0eXBlb2YgYj09PSJmdW5jdGlvbiIpe3ZhciBjO3JldHVybihjPWxtKGEsITApKT09bnVsbD92b2lkIDA6Yy5zdWJzY3JpYmUoYil9fWZ1bmN0aW9uIHFtKGEsYil7dmFyIGM9bG0oYSk7cmV0dXJuIGM/Yy51bnN1YnNjcmliZShiKTohMX07dmFyIHNtPWZ1bmN0aW9uKCl7dGhpcy5IPXt9O3RoaXMuSz0hMX07c20ucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt0aGlzLkt8fCh0aGlzLkg9dG0oKSx0aGlzLkhbIjAiXSYmb20oam0uYmEuU2UsSlNPTi5zdHJpbmdpZnkodGhpcy5IKSkpfTsKdmFyIHhtPWZ1bmN0aW9uKCl7dmFyIGE9dW0sYj12bSxjPXZvaWQgMCxkPWZ1bmN0aW9uKCl7YyE9PXZvaWQgMCYmcW0oam0uYmEuU2UsYyk7dHJ5e3ZhciBmPW5tKGptLmJhLlNlKTtiLkg9SlNPTi5wYXJzZShmKX1jYXRjaChnKXtQKDEyMyksaW0oMiksYi5IPXt9fWIuSz0hMDthKCl9LGU9bm0oam0uYmEuU2UpO2U/ZChlKTooYz1wbShqbS5iYS5TZSxkKSx3bSgpKX0sd209ZnVuY3Rpb24oKXtpZighbm0oam0uYmEuWGkpKXttbShqbS5iYS5YaSwhMCk7dmFyIGE9ZnVuY3Rpb24oYil7bW0oam0uYmEuU2UsYnx8Int9Iik7bW0oam0uYmEuWGksITEpfTt0cnl7QS5mZXRjaCgiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9jY20vZ2VvIix7bWV0aG9kOiJHRVQiLGNhY2hlOiJuby1zdG9yZSIsbW9kZToiY29ycyIsY3JlZGVudGlhbHM6Im9taXQifSkudGhlbihmdW5jdGlvbihiKXtiLm9rP2IudGV4dCgpLnRoZW4oZnVuY3Rpb24oYyl7YShjKX0sZnVuY3Rpb24oKXthKCl9KTphKCl9LGZ1bmN0aW9uKCl7YSgpfSl9Y2F0Y2goYil7YSgpfX19LAp0bT1mdW5jdGlvbigpe3ZhciBhPUUoMjIpO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShxYihhKSl9Y2F0Y2goYil7cmV0dXJuIFAoMTIzKSxpbSgyKSx7fX19LHltPWZ1bmN0aW9uKCl7cmV0dXJuIHZtLkhbIjAiXXx8IiJ9LHptPWZ1bmN0aW9uKCl7cmV0dXJuIHZtLkhbIjEiXXx8IiJ9LEFtPWZ1bmN0aW9uKCl7dmFyIGE9dm0sYj0hMTtyZXR1cm4gYn0sQm09ZnVuY3Rpb24oKXtyZXR1cm4gdm0uSFsiNiJdIT09ITF9LENtPWZ1bmN0aW9uKCl7dmFyIGE9dm0sYj0hMTtyZXR1cm4gYn0sRG09ZnVuY3Rpb24oKXt2YXIgYT12bSxiPSIiOwpyZXR1cm4gYn0sRW09ZnVuY3Rpb24oKXt2YXIgYT12bSxiPSIiO3JldHVybiBifSx2bT1uZXcgc207ZnVuY3Rpb24gRm0oYSl7YT1hPT09dm9pZCAwPyJnL2NvbGxlY3QiOmE7cmV0dXJuImh0dHBzOi8vIisoRG0oKXx8Ind3dyIpKyIuZ29vZ2xlLWFuYWx5dGljcy5jb20vIithfWZ1bmN0aW9uIEdtKGEpe2E9YT09PXZvaWQgMD8iZy9jb2xsZWN0IjphO3ZhciBiPURtKCk7cmV0dXJuImh0dHBzOi8vIisoYj9iKyIuIjoiIikrImFuYWx5dGljcy5nb29nbGUuY29tLyIrYX12YXIgSG09e30sSW09KEhtWzE3XT1mdW5jdGlvbigpe3JldHVybiBXaigpJiYhRG0oKT9YaigpKyIvYWcvZy9jIjpHbSgpfSxIbVsxNl09ZnVuY3Rpb24oKXtyZXR1cm4gV2ooKSYmIURtKCk/WGooKSsiL2dhL2cvYyI6Rm0oKX0sSG1bNjddPWZ1bmN0aW9uKCl7dmFyIGE7YT1hPT09dm9pZCAwPyJnL2NvbGxlY3QiOmE7cmV0dXJuIERtKCk/IiI6Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vIithfSxIbSk7ZnVuY3Rpb24gSm0oYSxiLGMpe3ZhciBkPVVsKGIsIi9tZWFzdXJlbWVudC9jb252ZXJzaW9uIixjKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gRG0oKT9hKCJtZWFzdXJlbWVudC9jb252ZXJzaW9uIik6ZCgpfX12YXIgS209e30sTG09KEttWzU1XT1KbShGbSwicGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20iLCIvZ3MiKSxLbVs1NF09Sm0oR20sInd3dy5nb29nbGUuY29tIiwiL2ciKSxLbSk7dmFyIE1tPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sV2wsWWwsJGwsYm0sZG0sZm0saG0sTG0sSW0pO2Z1bmN0aW9uIE5tKGEsYil7dmFyIGM9T2JqZWN0LmtleXMoYikuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBiW2RdIT1udWxsfSkubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkKyI9IitiW2RdfSkuam9pbigiJiIpO3JldHVybiBNbVthXSh2b2lkIDApKyI/IitjfTt2YXIgT209e30sUG09KE9tLnRkcD0xLE9tLmV4cD0xLE9tLmd0bT0xLE9tLnBpZD0xLE9tLmRsPTEsT20uc2VxPTEsT20udD0xLE9tLnY9MSxPbSksUm09ZnVuY3Rpb24oKXt2YXIgYT1RbTtyZXR1cm4gT2JqZWN0LmtleXMoYS5IKS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGEuSFtiXX0pfSxTbT1mdW5jdGlvbihhLGIsYyl7aWYoYS5IW2JdPT09dm9pZCAwfHwoYz09PXZvaWQgMD8wOmMpKWEuSFtiXT0hMH0sVG09ZnVuY3Rpb24oYSl7YS5mb3JFYWNoKGZ1bmN0aW9uKGIpe1BtW2JdfHwoUW0uSFtiXT0hMSl9KX0sUW09bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPXt9O3RoaXMuSz17fX07ZnVuY3Rpb24gVW0oYSxiLGMpe3ZhciBkPWM9PT12b2lkIDA/ITA6YyxlPVFtO2UuS1thXT1iOyhkPT09dm9pZCAwfHxkKSYmU20oZSxhKX1mdW5jdGlvbiBWbShhLGIpe1NtKFFtLGEsYj09PXZvaWQgMD8hMTpiKX07ZnVuY3Rpb24gV20oYSl7dmFyIGI9MDthLkdjLmZvckVhY2goZnVuY3Rpb24oYyl7Ynw9MTw8Y30pO3JldHVybiBifWZ1bmN0aW9uIFhtKCl7cmV0dXJue3RvdGFsOjAsamI6MCxHYzpuZXcgU2V0LGxmOnt9fX1mdW5jdGlvbiBZbShhLGIsYyxkKXt2YXIgZT1PYmplY3Qua2V5cyhhLm5mKS5zb3J0KGZ1bmN0aW9uKGYsZyl7cmV0dXJuIE51bWJlcihmKS1OdW1iZXIoZyl9KS5tYXAoZnVuY3Rpb24oZil7cmV0dXJuW2YsYihhLm5mW2ZdKV19KS5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIGZbMV0hPT12b2lkIDB9KS5tYXAoZnVuY3Rpb24oZil7cmV0dXJuIGYuam9pbihjKX0pLmpvaW4oZCk7cmV0dXJuIGU/ZTp2b2lkIDB9CmZ1bmN0aW9uIFptKGEsYil7dmFyIGMsZCxlO2M9Yz09PXZvaWQgMD8iXyI6YztkPWQ9PT12b2lkIDA/IjsiOmQ7ZT1lPT09dm9pZCAwPyJ+IjplO2Zvcih2YXIgZj1bXSxnPW0oT2JqZWN0LmtleXMoYS5sZikuc29ydCgpKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIGw9aC52YWx1ZSxuPVltKGEubGZbbF0sYixjLGQpO2lmKG4pe3ZhciBwPXZvaWQgMDtmLnB1c2goIiIrKChwPWwpIT1udWxsP3A6IiIpK2Qrbil9fXJldHVybiBmLmxlbmd0aD9mLmpvaW4oZSk6dm9pZCAwfQpmdW5jdGlvbiAkbShhKXthLmpiPTA7YS5HYy5jbGVhcigpO2Zvcih2YXIgYj1tKE9iamVjdC5rZXlzKGEubGYpKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl7dmFyIGQ9YS5sZltjLnZhbHVlXTtkLmpiPTA7ZC5HYy5jbGVhcigpO2Zvcih2YXIgZT1tKE9iamVjdC5rZXlzKGQubmYpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9ZC5uZltmLnZhbHVlXTtnLmpiPTA7Zy5HYy5jbGVhcigpfX19CmZ1bmN0aW9uIGFuKGEsYixjLGQsZSl7ZD1kPT09dm9pZCAwPzE6ZDthLnRvdGFsKz1kO2EuamIrPWQ7dmFyIGYsZz1iPT09dm9pZCAwPyIiOmI7Zj1hLmxmW2ddfHwoYS5sZltnXT17dG90YWw6MCxqYjowLEdjOm5ldyBTZXQsbmY6e319KTtmLnRvdGFsKz1kO2YuamIrPWQ7dmFyIGgsbD1TdHJpbmcoYyk7aD1mLm5mW2xdfHwoZi5uZltsXT17dG90YWw6MCxqYjowLEdjOm5ldyBTZXR9KTtoLnRvdGFsKz1kO2guamIrPWQ7ZSE9PXZvaWQgMCYmKGEuR2MuYWRkKGUpLGYuR2MuYWRkKGUpLGguR2MuYWRkKGUpKX07dmFyIGJuPWZ1bmN0aW9uKCl7dGhpcy5IPVhtKCl9O2JuLnByb3RvdHlwZS5pbmNyZW1lbnQ9ZnVuY3Rpb24oYSxiKXthbih0aGlzLkgsYSxiKX07dmFyIGNuPW5ldyBibjtmdW5jdGlvbiBkbihhKXt2YXIgYj1TdHJpbmcoYVtHZi5ZYl18fCIiKS5yZXBsYWNlKC9fL2csIiIpO3JldHVybiBTYihiLCJjdnQiKT8iY3Z0IjpifXZhciBlbj1BLmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCI/Z3RtX2xhdGVuY3k9Iik+PTB8fEEubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoIiZndG1fbGF0ZW5jeT0iKT49MDt2YXIgZ249ZnVuY3Rpb24oKXt2YXIgYT1mbjtyZXR1cm4gTSg2MDMpJiZJZig2NSwhMSkmJiFhLlp9LGZuPW5ldyBmdW5jdGlvbihhKXt0aGlzLlI9YSgpO3ZhciBiPUpmKDI3KTt0aGlzLk49ZW58fHRoaXMuUjxiO3ZhciBjPUpmKDQyKTt0aGlzLlo9ZW58fHRoaXMuUj49MS1jO3ZhciBkPU0oNjAzKSYmSWYoNjUsITEpO3RoaXMuSz10aGlzLlp8fGQ7dmFyIGU9SmYoMjcpLGY9SmYoNjMpO3RoaXMuSD1lbnx8Zj09PTF8fHRoaXMuUj49ZSYmdGhpcy5SPGUrZn0oZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5yYW5kb20oKX0pO3ZhciBobj1mdW5jdGlvbigpe3RoaXMuSD17fX07aG4ucHJvdG90eXBlLnJlZ2lzdGVyPWZ1bmN0aW9uKGEsYixjKXtpZihmbi5LKXt2YXIgZD1qbihiLGMpO2lmKGQpe3ZhciBlLGY9YjtmPT09NCYmKGY9NSk7dmFyIGc9dGhpcy5IW2ZdO2d8fChnPXRoaXMuSFtmXT17fSk7ZT1nO3ZhciBoPWVbZF07aHx8KGg9ZVtkXT1bXSk7aC5wdXNoKG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sYSkpO2NuLmluY3JlbWVudChhLmRlc3RpbmF0aW9uSWQsYS5lbmRwb2ludCk7YS5lbmRwb2ludCE9PTU2JiZhLmVuZHBvaW50IT09NjEmJlZtKCJtZGUiLCEwKX19fTsKdmFyIG1uPWZ1bmN0aW9uKGEsYil7dmFyIGM9a24sZD1qbihhLGIpO2lmKGQpe3ZhciBlPWxuKGMsYSk7aWYoZSl7dmFyIGY9ZVtkXTtmJiYoZVtkXT1mLmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4hZy5Fb30pKX19fSxsbj1mdW5jdGlvbihhLGIpe2I9PT00JiYoYj01KTtyZXR1cm4gYS5IW2JdfSxqbj1mdW5jdGlvbihhLGIpe3ZhciBjPWI7aWYoYlswXT09PSIvIil7dmFyIGQ7Yz0oKGQ9QS5sb2NhdGlvbik9PW51bGw/dm9pZCAwOmQub3JpZ2luKStifXRyeXt2YXIgZT1uZXcgVVJMKGMpO3JldHVybiBhPT09Mj9lLm9yaWdpbjplLm9yaWdpbitlLnBhdGhuYW1lfWNhdGNoKGYpe319LGtuPW5ldyBobjsKZnVuY3Rpb24gbm4oYSl7c3dpdGNoKGEpe2Nhc2UgInNjcmlwdC1zcmMiOnJldHVybiA0O2Nhc2UgInNjcmlwdC1zcmMtZWxlbSI6cmV0dXJuIDU7Y2FzZSAiZnJhbWUtc3JjIjpyZXR1cm4gMjtjYXNlICJjb25uZWN0LXNyYyI6cmV0dXJuIDE7Y2FzZSAiaW1nLXNyYyI6cmV0dXJuIDN9fTtmdW5jdGlvbiBvbihhLGIsYyl7dmFyIGQsZT1hLkdvb2dsZWJRaENzTztlfHwoZT17fSxhLkdvb2dsZWJRaENzTz1lKTtkPWU7aWYoZFtiXSlyZXR1cm4hMTtkW2JdPVtdO2RbYl1bMF09YztyZXR1cm4hMH07dmFyIHBuLHFuO2E6e2Zvcih2YXIgcm49WyJDTE9TVVJFX0ZMQUdTIl0sc249UmEsdG49MDt0bjxybi5sZW5ndGg7dG4rKylpZihzbj1zbltyblt0bl1dLHNuPT1udWxsKXtxbj1udWxsO2JyZWFrIGF9cW49c259dmFyIHVuPXFuJiZxbls2MTA0MDEzMDFdO3BuPXVuIT1udWxsP3VuOiExO2Z1bmN0aW9uIHZuKCl7dmFyIGE9UmEubmF2aWdhdG9yO2lmKGEpe3ZhciBiPWEudXNlckFnZW50O2lmKGIpcmV0dXJuIGJ9cmV0dXJuIiJ9dmFyIHduLHhuPVJhLm5hdmlnYXRvcjt3bj14bj94bi51c2VyQWdlbnREYXRhfHxudWxsOm51bGw7ZnVuY3Rpb24geW4oYSl7aWYoIXBufHwhd24pcmV0dXJuITE7Zm9yKHZhciBiPTA7Yjx3bi5icmFuZHMubGVuZ3RoO2IrKyl7dmFyIGM9d24uYnJhbmRzW2JdLmJyYW5kO2lmKGMmJmMuaW5kZXhPZihhKSE9LTEpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gem4oYSl7cmV0dXJuIHZuKCkuaW5kZXhPZihhKSE9LTF9O2Z1bmN0aW9uIEFuKCl7cmV0dXJuIHBuPyEhd24mJnduLmJyYW5kcy5sZW5ndGg+MDohMX1mdW5jdGlvbiBCbigpe3JldHVybiBBbigpPyExOnpuKCJPcGVyYSIpfWZ1bmN0aW9uIENuKCl7cmV0dXJuIHpuKCJGaXJlZm94Iil8fHpuKCJGeGlPUyIpfWZ1bmN0aW9uIERuKCl7cmV0dXJuIEFuKCk/eW4oIkNocm9taXVtIik6KHpuKCJDaHJvbWUiKXx8em4oIkNyaU9TIikpJiYhKEFuKCk/MDp6bigiRWRnZSIpKXx8em4oIlNpbGsiKX07ZnVuY3Rpb24gRW4oKXtyZXR1cm4gcG4/ISF3biYmISF3bi5wbGF0Zm9ybTohMX1mdW5jdGlvbiBGbigpe3JldHVybiB6bigiaVBob25lIikmJiF6bigiaVBvZCIpJiYhem4oImlQYWQiKX1mdW5jdGlvbiBHbigpe0ZuKCl8fHpuKCJpUGFkIil8fHpuKCJpUG9kIil9O3ZhciBIbj1mdW5jdGlvbihhKXtIblsiICJdKGEpO3JldHVybiBhfTtIblsiICJdPWZ1bmN0aW9uKCl7fTtCbigpO0FuKCl8fHpuKCJUcmlkZW50Iil8fHpuKCJNU0lFIik7em4oIkVkZ2UiKTshem4oIkdlY2tvIil8fHZuKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ3ZWJraXQiKSE9LTEmJiF6bigiRWRnZSIpfHx6bigiVHJpZGVudCIpfHx6bigiTVNJRSIpfHx6bigiRWRnZSIpO3ZuKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ3ZWJraXQiKSE9LTEmJiF6bigiRWRnZSIpJiZ6bigiTW9iaWxlIik7RW4oKXx8em4oIk1hY2ludG9zaCIpO0VuKCl8fHpuKCJXaW5kb3dzIik7KEVuKCk/d24ucGxhdGZvcm09PT0iTGludXgiOnpuKCJMaW51eCIpKXx8RW4oKXx8em4oIkNyT1MiKTtFbigpfHx6bigiQW5kcm9pZCIpO0ZuKCk7em4oImlQYWQiKTt6bigiaVBvZCIpO0duKCk7dm4oKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImthaW9zIik7Q24oKTtGbigpfHx6bigiaVBvZCIpO3puKCJpUGFkIik7IXpuKCJBbmRyb2lkIil8fERuKCl8fENuKCl8fEJuKCl8fHpuKCJTaWxrIik7RG4oKTshem4oIlNhZmFyaSIpfHxEbigpfHwoQW4oKT8wOnpuKCJDb2FzdCIpKXx8Qm4oKXx8KEFuKCk/MDp6bigiRWRnZSIpKXx8KEFuKCk/eW4oIk1pY3Jvc29mdCBFZGdlIik6em4oIkVkZy8iKSl8fChBbigpP3luKCJPcGVyYSIpOnpuKCJPUFIiKSl8fENuKCl8fHpuKCJTaWxrIil8fHpuKCJBbmRyb2lkIil8fEduKCk7dmFyIEluPXt9LEpuPW51bGw7CmZ1bmN0aW9uIEtuKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hLmNoYXJDb2RlQXQoZCk7ZT4yNTUmJihiW2MrK109ZSYyNTUsZT4+PTgpO2JbYysrXT1lfXZhciBmPTQ7Zj09PXZvaWQgMCYmKGY9MCk7aWYoIUpuKXtKbj17fTtmb3IodmFyIGc9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ii5zcGxpdCgiIiksaD1bIisvPSIsIisvIiwiLV89IiwiLV8uIiwiLV8iXSxsPTA7bDw1O2wrKyl7dmFyIG49Zy5jb25jYXQoaFtsXS5zcGxpdCgiIikpO0luW2xdPW47Zm9yKHZhciBwPTA7cDxuLmxlbmd0aDtwKyspe3ZhciBxPW5bcF07Sm5bcV09PT12b2lkIDAmJihKbltxXT1wKX19fWZvcih2YXIgcj1JbltmXSx0PUFycmF5KE1hdGguZmxvb3IoYi5sZW5ndGgvMykpLHU9cls2NF18fCIiLHY9MCx4PTA7djxiLmxlbmd0aC0yO3YrPTMpe3ZhciB5PWJbdl0sej1iW3YrMV0sQz1iW3YrMl0sCkQ9clt5Pj4yXSxJPXJbKHkmMyk8PDR8ej4+NF0sRz1yWyh6JjE1KTw8MnxDPj42XSxOPXJbQyY2M107dFt4KytdPSIiK0QrSStHK059dmFyIFM9MCxXPXU7c3dpdGNoKGIubGVuZ3RoLXYpe2Nhc2UgMjpTPWJbdisxXSxXPXJbKFMmMTUpPDwyXXx8dTtjYXNlIDE6dmFyIGVhPWJbdl07dFt4XT0iIityW2VhPj4yXStyWyhlYSYzKTw8NHxTPj40XStXK3V9cmV0dXJuIHQuam9pbigiIil9O3ZhciBMbj1mdW5jdGlvbihhKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEucmVwbGFjZSgvXCsvZywiICIpKX07dmFyIE1uPVJlZ0V4cCgiXig/OihbXjovPyMuXSspOik/KD86Ly8oPzooW15cXFxcLz8jXSopQCk/KFteXFxcXC8/I10qPykoPzo6KFswLTldKykpPyg/PVtcXFxcLz8jXXwkKSk/KFtePyNdKyk/KD86XFw/KFteI10qKSk/KD86IyhbXFxzXFxTXSopKT8kIik7ZnVuY3Rpb24gTm4oYSxiLGMsZCl7Zm9yKHZhciBlPWIsZj1jLmxlbmd0aDsoZT1hLmluZGV4T2YoYyxlKSk+PTAmJmU8ZDspe3ZhciBnPWEuY2hhckNvZGVBdChlLTEpO2lmKGc9PTM4fHxnPT02Myl7dmFyIGg9YS5jaGFyQ29kZUF0KGUrZik7aWYoIWh8fGg9PTYxfHxoPT0zOHx8aD09MzUpcmV0dXJuIGV9ZSs9ZisxfXJldHVybi0xfXZhciBPbj0vI3wkLzsKZnVuY3Rpb24gUG4oYSxiKXt2YXIgYz1hLnNlYXJjaChPbiksZD1ObihhLDAsYixjKTtpZihkPDApcmV0dXJuIG51bGw7dmFyIGU9YS5pbmRleE9mKCImIixkKTtpZihlPDB8fGU+YyllPWM7ZCs9Yi5sZW5ndGgrMTtyZXR1cm4gTG4oYS5zbGljZShkLGUhPT0tMT9lOjApKX12YXIgUW49L1s/Jl0oJHwjKS87CmZ1bmN0aW9uIFJuKGEsYixjKXtmb3IodmFyIGQsZT1hLnNlYXJjaChPbiksZj0wLGcsaD1bXTsoZz1ObihhLGYsYixlKSk+PTA7KWgucHVzaChhLnN1YnN0cmluZyhmLGcpKSxmPU1hdGgubWluKGEuaW5kZXhPZigiJiIsZykrMXx8ZSxlKTtoLnB1c2goYS5zbGljZShmKSk7ZD1oLmpvaW4oIiIpLnJlcGxhY2UoUW4sIiQxIik7dmFyIGwsbj1jIT1udWxsPyI9IitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGMpKToiIjt2YXIgcD1iK247aWYocCl7dmFyIHEscj1kLmluZGV4T2YoIiMiKTtyPDAmJihyPWQubGVuZ3RoKTt2YXIgdD1kLmluZGV4T2YoIj8iKSx1O3Q8MHx8dD5yPyh0PXIsdT0iIik6dT1kLnN1YnN0cmluZyh0KzEscik7cT1bZC5zbGljZSgwLHQpLHUsZC5zbGljZShyKV07dmFyIHY9cVsxXTtxWzFdPXA/dj92KyImIitwOnA6djtsPXFbMF0rKHFbMV0/Ij8iK3FbMV06IiIpK3FbMl19ZWxzZSBsPWQ7cmV0dXJuIGx9O2Z1bmN0aW9uIFNuKGEsYixjLGQsZSxmLGcsaCl7dmFyIGw9UG4oYywiZm10Iik7aWYoZCl7dmFyIG49UG4oYywicmFuZG9tIikscD1QbihjLCJsYWJlbCIpfHwiIjtpZighbilyZXR1cm47dmFyIHE9S24oTG4ocCkrIjoiK0xuKG4pKTtpZighb24oYSxxLGQpKXJldHVybn1sJiZOdW1iZXIobCkhPT00PyhjPVJuKGMsInJmbXQiLGwpLGM9Um4oYywiZm10Iiw0KSk6bHx8KGM9Um4oYywiZm10Iiw0KSk7VWMoYyxmdW5jdGlvbigpe2c9PW51bGx8fFRuKGcpO2g9PW51bGx8fFVuKGgsYyk7YS5nb29nbGVfbm9GdXJ0aGVyUmVkaXJlY3RzJiZkJiYoYS5nb29nbGVfbm9GdXJ0aGVyUmVkaXJlY3RzPW51bGwsZCgpKX0sZnVuY3Rpb24oKXtnPT1udWxsfHxUbihnKTtoPT1udWxsfHxVbihoLGMpO2U9PW51bGx8fGUoKX0sZixiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXS5wYXJlbnRFbGVtZW50fHx2b2lkIDApO3JldHVybiBjfTtmdW5jdGlvbiBWbihhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7a24ucmVnaXN0ZXIoYSwxLGJbMF0pO2lkLmFwcGx5KG51bGwsdyhiKSl9ZnVuY3Rpb24gV24oYSl7dmFyIGI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO2tuLnJlZ2lzdGVyKGEsMSxiWzBdKTtyZXR1cm4gamQuYXBwbHkobnVsbCx3KGIpKX1mdW5jdGlvbiBYbihhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7a24ucmVnaXN0ZXIoYSwzLGJbMF0pO1pjLmFwcGx5KG51bGwsdyhiKSl9ZnVuY3Rpb24gWW4oYSl7dmFyIGI9T2EuYXBwbHkoMSxhcmd1bWVudHMpO2tuLnJlZ2lzdGVyKGEsMSxiWzBdKTtyZXR1cm4gbWQuYXBwbHkobnVsbCx3KGIpKX1mdW5jdGlvbiBabihhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7a24ucmVnaXN0ZXIoYSw1LGJbMF0pO1VjLmFwcGx5KG51bGwsdyhiKSl9CmZ1bmN0aW9uICRuKGEpe3ZhciBiPU9hLmFwcGx5KDEsYXJndW1lbnRzKTtiWzBdJiZrbi5yZWdpc3RlcihhLDIsYlswXSk7WGMuYXBwbHkobnVsbCx3KGIpKX1mdW5jdGlvbiBhbyhhKXt2YXIgYj1Tbi5hcHBseShudWxsLHcoT2EuYXBwbHkoMSxhcmd1bWVudHMpKSk7YiYma24ucmVnaXN0ZXIoYSw0LGIpO3JldHVybiBifTt2YXIgYm89e01hOntSZTowLFVlOjEsTGg6Mn19O2JvLk1hW2JvLk1hLlJlXT0iRlVMTF9UUkFOU01JU1NJT04iO2JvLk1hW2JvLk1hLlVlXT0iTElNSVRFRF9UUkFOU01JU1NJT04iO2JvLk1hW2JvLk1hLkxoXT0iTk9fVFJBTlNNSVNTSU9OIjt2YXIgY289e2lhOntnZDowLGNiOjEseGQ6MixaYjozfX07Y28uaWFbY28uaWEuZ2RdPSJOT19RVUVVRSI7Y28uaWFbY28uaWEuY2JdPSJBRFMiO2NvLmlhW2NvLmlhLnhkXT0iQU5BTFlUSUNTIjtjby5pYVtjby5pYS5aYl09Ik1PTklUT1JJTkciO3ZhciBlbz1mdW5jdGlvbihhLGIpe3RoaXMuSD1hO3RoaXMuY29uc2VudFR5cGVzPWJ9O2VvLnByb3RvdHlwZS5pc0NvbnNlbnRHcmFudGVkPWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuSCl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbnNlbnRUeXBlcy5ldmVyeShmdW5jdGlvbihhKXtyZXR1cm4gQmwoYSl9KTtjYXNlIDE6cmV0dXJuIHRoaXMuY29uc2VudFR5cGVzLnNvbWUoZnVuY3Rpb24oYSl7cmV0dXJuIEJsKGEpfSk7ZGVmYXVsdDp5Yyh0aGlzLkgsImNvbnNlbnRzUmVxdWlyZWQgaGFkIGFuIHVua25vd24gdHlwZSIpfX07CnZhciBmbz1uZXcgZnVuY3Rpb24oKXt2YXIgYT17fTt0aGlzLkg9KGFbY28uaWEuZ2RdPWJvLk1hLlJlLGFbY28uaWEuY2JdPWJvLk1hLlJlLGFbY28uaWEueGRdPWJvLk1hLlJlLGFbY28uaWEuWmJdPWJvLk1hLlJlLGEpO3ZhciBiPXt9O3RoaXMuSz0oYltjby5pYS5nZF09bmV3IGVvKDAsW10pLGJbY28uaWEuY2JdPW5ldyBlbygwLFsiYWRfc3RvcmFnZSJdKSxiW2NvLmlhLnhkXT1uZXcgZW8oMCxbImFuYWx5dGljc19zdG9yYWdlIl0pLGJbY28uaWEuWmJdPW5ldyBlbygxLFsiYWRfc3RvcmFnZSIsImFuYWx5dGljc19zdG9yYWdlIl0pLGIpfTt2YXIgaG89ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0aGlzLnR5cGU9YTt0aGlzLkg9W107RmwoZm8uS1thXS5jb25zZW50VHlwZXMsZnVuY3Rpb24oKXtnbyhiKXx8Yi5mbHVzaCgpfSl9O2hvLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2Zvcih2YXIgYT1tKHRoaXMuSCksYj1hLm5leHQoKTshYi5kb25lO2I9YS5uZXh0KCkpe3ZhciBjPWIudmFsdWU7YygpfXRoaXMuSD1bXX07dmFyIGdvPWZ1bmN0aW9uKGEpe3JldHVybiBmby5IW2EudHlwZV09PT1iby5NYS5MaCYmIWZvLktbYS50eXBlXS5pc0NvbnNlbnRHcmFudGVkKCl9LGlvPWZ1bmN0aW9uKGEsYil7Z28oYSk/YS5ILnB1c2goYik6YigpfSxqbz1mdW5jdGlvbigpe3RoaXMuSD1uZXcgTWFwfSxsbz1mdW5jdGlvbihhKXt2YXIgYj1rbztiLkguaGFzKGEpfHxiLkguc2V0KGEsbmV3IGhvKGEpKTtyZXR1cm4gYi5ILmdldChhKX07am8ucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5ILmNsZWFyKCl9Owp2YXIga289bmV3IGpvO3ZhciBtbz1bImZpbiIsImZzIiwibWNjIiwibmNjIl0sbm89ZnVuY3Rpb24oYSl7YT1hPT09dm9pZCAwPyExOmE7dmFyIGI9Um0oKSxjPVFtLkssZD1iLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gY1tlXSE9PXZvaWQgMCYmKGF8fCFtby5pbmNsdWRlcyhlKSl9KTtUbShkKTtyZXR1cm4gZC5tYXAoZnVuY3Rpb24oZSl7dmFyIGY9Y1tlXTt0eXBlb2YgZj09PSJmdW5jdGlvbiImJihmPWYoKSk7cmV0dXJuIGY/IiYiK2UrIj0iK2Y6IiJ9KS5qb2luKCIiKSsiJno9MCJ9LG9vPWZ1bmN0aW9uKGEpe3ZhciBiPSJodHRwczovLyIrRSgyMSksYz0iL3RkP2lkPSIrRSg1KTtyZXR1cm4iIitmayhiKStjK2F9LHBvPWZ1bmN0aW9uKGEsYixjKXtiPWI9PT12b2lkIDA/ITE6YjtjPWM9PT12b2lkIDA/ITE6YztpZigkaygyNikmJmZuLksmJkUoNSkmJihjfHwhZ24oKSkpe3ZhciBkPWxvKGNvLmlhLlpiKTtpZihnbyhkKSlhLkh8fChhLkg9ITAsaW8oZCxmdW5jdGlvbigpe3JldHVybiBwbyhhKX0pKTsKZWxzZXtiJiZVbSgiZmluIiwiMSIpO3ZhciBlPW5vKGIpLGY9b28oZSksZz17ZGVzdGluYXRpb25JZDpFKDUpLGVuZHBvaW50OjYxfTtiP1luKGcsZix2b2lkIDAse1FnOiEwfSx2b2lkIDAsZnVuY3Rpb24oKXtaYyhmKyImaW1nPTEiKX0pOlhuKGcsZik7YS5IPSExO3FvKGUpfX19LHFvPWZ1bmN0aW9uKGEpe2lmKEtjJiYoU2IoS2MsImh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tLyIpfHxJZig0NykpJiYhKGEuaW5kZXhPZigiJmNzcD0iKTwwJiZhLmluZGV4T2YoIiZtZGU9Iik8MCkpe3ZhciBiO2E6e3RyeXtpZihLYyl7Yj1uZXcgVVJMKEtjKTticmVhayBhfX1jYXRjaChjKXt9Yj12b2lkIDB9YiYmVWMoIiIrS2MrKEtjLmluZGV4T2YoIj8iKT49MD8iJiI6Ij8iKSsiaXNfdGQ9MSIrYSl9fSxybz1mdW5jdGlvbihhKXtSbSgpLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIVBtW2JdfSkmJnBvKGEsITApfSxzbz1uZXcgZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSD0hMTsKJGMoQSwicGFnZWhpZGUiLGZ1bmN0aW9uKCl7cm8oYSl9KX07ZnVuY3Rpb24gdG8oYSxiKXtwbyhzbyxhPT09dm9pZCAwPyExOmEsYj09PXZvaWQgMD8hMTpiKX07dmFyIHVvPVsiYWRfc3RvcmFnZSIsImFuYWx5dGljc19zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIiwiYWRfcGVyc29uYWxpemF0aW9uIl0sdm89W0YuRC5kZCxGLkQueWMsRi5ELlFmLEYuRC5LYixGLkQueGMsRi5ELmZiLEYuRC5EYixGLkQubmIsRi5ELkxiLEYuRC52Y10seW89ZnVuY3Rpb24oKXt2YXIgYT13bzshYS5SJiZhLkgmJih1by5zb21lKGZ1bmN0aW9uKGIpe3JldHVybiBBbC5jb250YWluZXJTY29wZWREZWZhdWx0c1tiXSE9PTF9KXx8eG8oIm1iYyIpKTthLlI9ITB9LHhvPWZ1bmN0aW9uKGEpe2ZuLksmJihVbShhLCIxIiksdG8oKSl9LHpvPWZ1bmN0aW9uKGEsYil7dmFyIGM9d287aWYoIWMuTltiXSYmKGMuTltiXT0hMCxjLktbYl0pKWZvcih2YXIgZD1tKHZvKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSlpZihPKGEsZS52YWx1ZSkpe3hvKCJlcmMiKTticmVha319LHdvPW5ldyBmdW5jdGlvbigpe3RoaXMuUj10aGlzLkg9ITE7dGhpcy5OPXt9O3RoaXMuSz17fX07dmFyIEFvPXt9LEJvPU9iamVjdC5mcmVlemUoKEFvW0YuRC5SY109MSxBb1tGLkQuaGhdPTEsQW9bRi5ELnNpXT0xLEFvW0YuRC5TY109MSxBb1tGLkQuSGFdPTEsQW9bRi5ELkxiXT0xLEFvW0YuRC5DYl09MSxBb1tGLkQuVGJdPTEsQW9bRi5ELklkXT0xLEFvW0YuRC52Y109MSxBb1tGLkQubmJdPTEsQW9bRi5ELkpkXT0xLEFvW0YuRC5IZV09MSxBb1tGLkQuT2FdPTEsQW9bRi5ELlFwXT0xLEFvW0YuRC5QZl09MSxBb1tGLkQuRmldPTEsQW9bRi5ELnBoXT0xLEFvW0YuRC5XY109MSxBb1tGLkQuUWZdPTEsQW9bRi5ELmFxXT0xLEFvW0YuRC5UYV09MSxBb1tGLkQuVWZdPTEsQW9bRi5ELmZxXT0xLEFvW0YuRC5PZF09MSxBb1tGLkQuUmxdPTEsQW9bRi5ELlljXT0xLEFvW0YuRC5aY109MSxBb1tGLkQuRGJdPTEsQW9bRi5ELmFtXT0xLEFvW0YuRC5XYl09MSxBb1tGLkQuVGRdPTEsQW9bRi5ELlhiXT0xLEFvW0YuRC5PaV09MSxBb1tGLkQuZGRdPTEsQW9bRi5ELnloXT0xLEFvW0YuRC5QaV09CjEsQW9bRi5ELlVkXT0xLEFvW0YuRC55Y109MSxBb1tGLkQuVmRdPTEsQW9bRi5ELmxtXT0xLEFvW0YuRC5XZF09MSxBb1tGLkQuZWRdPTEsQW9bRi5ELm9qXT0xLEFvKSk7T2JqZWN0LmZyZWV6ZShbRi5ELnphLEYuRC5VYSxGLkQuTWIsRi5ELnRiLEYuRC5OaSxGLkQuZmIsRi5ELkdpLEYuRC5NcF0pOwp2YXIgQ289e30sRG89T2JqZWN0LmZyZWV6ZSgoQ29bRi5ELnFwXT0xLENvW0YuRC5ycF09MSxDb1tGLkQudHBdPTEsQ29bRi5ELnVwXT0xLENvW0YuRC52cF09MSxDb1tGLkQuenBdPTEsQ29bRi5ELkFwXT0xLENvW0YuRC5CcF09MSxDb1tGLkQuRHBdPTEsQ29bRi5ELnlmXT0xLENvKSksRW89e30sRm89T2JqZWN0LmZyZWV6ZSgoRW9bRi5ELnZsXT0xLEVvW0YuRC53bF09MSxFb1tGLkQueGVdPTEsRW9bRi5ELnllXT0xLEVvW0YuRC54bF09MSxFb1tGLkQuQWRdPTEsRW9bRi5ELnplXT0xLEVvW0YuRC5vY109MSxFb1tGLkQuUWNdPTEsRW9bRi5ELnFjXT0xLEVvW0YuRC5JYl09MSxFb1tGLkQuQWVdPTEsRW9bRi5ELnJjXT0xLEVvW0YuRC55bF09MSxFbykpLEdvPU9iamVjdC5mcmVlemUoW0YuRC5SYyxGLkQuU2MsRi5ELkpkLEYuRC5RZixGLkQuV2YsRi5ELlRkLEYuRC5PaSxGLkQuVmRdKSxIbz1PYmplY3QuZnJlZXplKFtdLmNvbmNhdCh3KEdvKSkpLElvPU9iamVjdC5mcmVlemUoW0YuRC5DYiwKRi5ELnBoLEYuRC55aCxGLkQuUGksRi5ELm5oXSksSm89T2JqZWN0LmZyZWV6ZShbXS5jb25jYXQodyhJbykpKSxLbz17fSxMbz0oS29bRi5ELmthXT0iMSIsS29bRi5ELnJhXT0iMiIsS29bRi5ELm1hXT0iMyIsS29bRi5ELlhhXT0iNCIsS28pLE1vPXt9LE5vPU9iamVjdC5mcmVlemUoKE1vLnNlYXJjaD0icyIsTW8ueW91dHViZT0ieSIsTW8ucGxheXN0b3JlPSJwIixNby5zaG9wcGluZz0iaCIsTW8uYWRzPSJhIixNby5tYXBzPSJtIixNbykpO2Z1bmN0aW9uIE9vKGEpe3JldHVybiB0eXBlb2YgYSE9PSJvYmplY3QifHxhPT09bnVsbD97fTphfWZ1bmN0aW9uIFBvKGEpe3JldHVybiBhPT09dm9pZCAwfHxhPT09bnVsbD8iIjp0eXBlb2YgYT09PSJvYmplY3QiP2EudG9TdHJpbmcoKTpTdHJpbmcoYSl9ZnVuY3Rpb24gUW8oYSl7aWYoYSE9PXZvaWQgMCYmYSE9PW51bGwpcmV0dXJuIFBvKGEpfTt2YXIgUm89W0YuRC5rYSxGLkQucmEsRi5ELm1hLEYuRC5YYV07ZnVuY3Rpb24gU28oYSl7Zm9yKHZhciBiPW0oYVtGLkQubmNdfHxbIiJdKSxjPWIubmV4dCgpLGQ9e307IWMuZG9uZTtkPXtyZWdpb246dm9pZCAwfSxjPWIubmV4dCgpKWQucmVnaW9uPWMudmFsdWUsR2IoYSxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZixnKXtpZihmIT09Ri5ELm5jKXt2YXIgaD1QbyhnKSxsPWUucmVnaW9uLG49eW0oKSxwPXptKCk7eWw9ITA7eGwmJnNiKCJUQUdHSU5HIiwyMCk7dGwoKS5kZWNsYXJlKGYsaCxsLG4scCl9fX0oZCkpfQpmdW5jdGlvbiBUbyhhKXt5bygpO3ZhciBiPWFsKDE3LGZ1bmN0aW9uKCl7cmV0dXJuITF9KSxjPWFsKDE2LGZ1bmN0aW9uKCl7cmV0dXJuITF9KTshYiYmYyYmeG8oImNyYyIpO1prKDE3LCEwKTt2YXIgZD1hW0YuRC5ZZ107ZCYmUCg0MSk7dmFyIGU9YVtGLkQubmNdO2U/UCg0MCk6ZT1bIiJdO2Zvcih2YXIgZj1tKGUpLGc9Zi5uZXh0KCksaD17fTshZy5kb25lO2g9e0JvOnZvaWQgMH0sZz1mLm5leHQoKSloLkJvPWcudmFsdWUsR2IoYSxmdW5jdGlvbihsKXtyZXR1cm4gZnVuY3Rpb24obixwKXtpZihuIT09Ri5ELm5jJiZuIT09Ri5ELllnKXt2YXIgcT1RbyhwKSxyPWwuQm8sdD1OdW1iZXIoZCksdT15bSgpLHY9em0oKTt0PXQ9PT12b2lkIDA/MDp0O3hsPSEwO3lsJiZzYigiVEFHR0lORyIsMjApO3RsKCkuZGVmYXVsdChuLHEscix1LHYsdCxBbCl9fX0oaCkpfQpmdW5jdGlvbiBVbyhhKXtBbC51c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHM9ITA7dmFyIGI9YVtGLkQubmNdO2lmKGIpe3ZhciBjPUFycmF5LmlzQXJyYXkoYik/YjpbYl07aWYoIWMuaW5jbHVkZXMoem0oKSkmJiFjLmluY2x1ZGVzKHltKCkpKXJldHVybn1HYihhLGZ1bmN0aW9uKGQsZSl7c3dpdGNoKGQpe2Nhc2UgImFkX3N0b3JhZ2UiOmNhc2UgImFuYWx5dGljc19zdG9yYWdlIjpjYXNlICJhZF91c2VyX2RhdGEiOmNhc2UgImFkX3BlcnNvbmFsaXphdGlvbiI6YnJlYWs7ZGVmYXVsdDpyZXR1cm59QWwudXNlZENvbnRhaW5lclNjb3BlZERlZmF1bHRzPSEwO0FsLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzW2RdPWU9PT0iZ3JhbnRlZCI/MzoyfSl9CmZ1bmN0aW9uIFZvKGEsYil7eW8oKTtaaygxNiwhMCk7R2IoYSxmdW5jdGlvbihjLGQpe3ZhciBlPVBvKGQpO3hsPSEwO3lsJiZzYigiVEFHR0lORyIsMjApO3RsKCkudXBkYXRlKGMsZSxBbCl9KTtHbChiLmV2ZW50SWQsYi5wcmlvcml0eUlkKX1mdW5jdGlvbiBXbyhhKXthLmhhc093blByb3BlcnR5KCJhbGwiKSYmKEFsLnNlbGVjdGVkQWxsQ29yZVBsYXRmb3JtU2VydmljZXM9ITAsR2IoTm8sZnVuY3Rpb24oYil7QWwuY29yZVBsYXRmb3JtU2VydmljZXNbYl09YS5hbGw9PT0iZ3JhbnRlZCI7QWwudXNlZENvcmVQbGF0Zm9ybVNlcnZpY2VzPSEwfSkpO0diKGEsZnVuY3Rpb24oYixjKXtiIT09ImFsbCImJihBbC5jb3JlUGxhdGZvcm1TZXJ2aWNlc1tiXT1jPT09ImdyYW50ZWQiLEFsLnVzZWRDb3JlUGxhdGZvcm1TZXJ2aWNlcz0hMCl9KX0KZnVuY3Rpb24gWG8oYSl7QXJyYXkuaXNBcnJheShhKXx8KGE9W2FdKTtyZXR1cm4gYS5ldmVyeShmdW5jdGlvbihiKXtyZXR1cm4gQmwoYil9KX1mdW5jdGlvbiBZbygpe3ZhciBhPVpvO0FycmF5LmlzQXJyYXkoYSl8fChhPVthXSk7cmV0dXJuIGEuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gQmwoYil9KX1mdW5jdGlvbiAkbyhhLGIpe0ZsKGEsYil9ZnVuY3Rpb24gYXAoYSxiKXtJbChhLGIpfWZ1bmN0aW9uIGJwKGEsYil7SGwoYSxiKX1mdW5jdGlvbiBjcCgpe3ZhciBhPVtGLkQua2EsRi5ELlhhLEYuRC5tYV07dGwoKS53YWl0Rm9yVXBkYXRlKGEsNTAwLEFsKX1mdW5jdGlvbiBkcChhKXtmb3IodmFyIGI9bShhKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl7dmFyIGQ9Yy52YWx1ZTt0bCgpLmNsZWFyVGltZW91dChkLHZvaWQgMCxBbCl9R2woKX0KZnVuY3Rpb24gZXAoYSl7Zm9yKHZhciBiPXt9LGM9bShhLnNwbGl0KCJ8IikpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKWJbZC52YWx1ZV09ITA7cmV0dXJuIGJ9O3ZhciBmcD1PYmplY3QuZnJlZXplKFtGLkQua2EsRi5ELm1hXSk7ZnVuY3Rpb24gb3AoYSxiKXtpZihiIT1udWxsJiZiIT09IiIpe3ZhciBjPWI9PT0hMD8iMSI6Yj09PSExPyIwIjplbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGIpKTtpZihTYihhLCJfJiIpKXJldHVybntrZXk6YS5zdWJzdHJpbmcoMiksdmFsdWU6Y307dmFyIGQ9bnBbYV07aWYoZCE9PW51bGwpcmV0dXJuIGQ/e2tleTpkLHZhbHVlOmN9OntrZXk6QWIoYik/ImVwbi4iK2E6ImVwLiIrYSx2YWx1ZTpjfX19O2Z1bmN0aW9uIHBwKGEpe2E9YT09PXZvaWQgMD9bXTphO3JldHVybiB4aihhKS5qb2luKCJ+Iil9O2Z1bmN0aW9uIHFwKCl7dmFyIGE9W10sYj1OdW1iZXIoJycpfHwwLGM9TnVtYmVyKCcnKXx8MDtjfHwoYz1iLzEwMCk7dmFyIGQ9ZnVuY3Rpb24oKXt2YXIgdD0hMTtyZXR1cm4gdH0oKTthLnB1c2goe3VrOjIyOCxzdHVkeUlkOjIyOCxleHBlcmltZW50SWQ6MTA1MTc3MTU0LGNvbnRyb2xJZDoxMDUxNzcxNTUsY29udHJvbElkMjoxMDUyNTUyNDUscHJvYmFiaWxpdHk6YyxhY3RpdmU6ZCxaZTowfSk7dmFyIGU9TnVtYmVyKCcnKXx8CjAsZj1OdW1iZXIoJycpfHwwO2Z8fChmPWUvMTAwKTt2YXIgZz1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiB0fSgpO2EucHVzaCh7dWs6MjM1LHN0dWR5SWQ6MjM1LGV4cGVyaW1lbnRJZDoxMDUzNTcxNTAsY29udHJvbElkOjEwNTM1NzE1MSxjb250cm9sSWQyOjAscHJvYmFiaWxpdHk6ZixhY3RpdmU6ZyxaZToxfSk7dmFyIGg9TnVtYmVyKCcnKXx8MCxsPU51bWJlcignJyl8fAowO2x8fChsPWgvMTAwKTt2YXIgbj1mdW5jdGlvbigpe3ZhciB0PSExO3JldHVybiB0fSgpO2EucHVzaCh7dWs6MjY2LHN0dWR5SWQ6MjY2LGV4cGVyaW1lbnRJZDoxMTU3MTg1MjksY29udHJvbElkOjExNTcxODUzMCxjb250cm9sSWQyOjExNTcxODUzMSxwcm9iYWJpbGl0eTpsLGFjdGl2ZTpuLFplOjB9KTt2YXIgcD1OdW1iZXIoJycpfHwwLHE9TnVtYmVyKCcnKXx8CjA7cXx8KHE9cC8xMDApO3ZhciByPWZ1bmN0aW9uKCl7dmFyIHQ9ITE7cmV0dXJuIHR9KCk7YS5wdXNoKHt1azoyNjcsc3R1ZHlJZDoyNjcsZXhwZXJpbWVudElkOjExNTcxODUyNixjb250cm9sSWQ6MTE1NzE4NTI3LGNvbnRyb2xJZDI6MTE1NzE4NTI4LHByb2JhYmlsaXR5OnEsYWN0aXZlOnIsWmU6MH0pO3JldHVybiBhfTt2YXIgcnA9ZnVuY3Rpb24oKXt0aGlzLks9e307dGhpcy5IPXt9O3RoaXMuTj17fTt0aGlzLlI9bmV3IFNldH0seHA9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLGQ9Yj1hLk5bYy5zdHVkeUlkXT9uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGMse2FjdGl2ZTohMH0pOmMsZT1GaTtkLmNvbnRyb2xJZDImJmQucHJvYmFiaWxpdHk8PS4yNXx8KGQ9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxkLHtjb250cm9sSWQyOjB9KSk7ZS5zdHVkaWVzW2Quc3R1ZHlJZF09ZDtiLmZvY3VzZWQmJihhLktbYi5zdHVkeUlkXT0hMCk7aWYoYi5aZT09PTEpe3ZhciBmPWIuc3R1ZHlJZDtzcChhLHRwKCksZik7dXAoYSxmKT90aih1aixmKTp2cChhLGYpP3VqLktbZl09ITA6d3AoYSxmKSYmKHVqLkhbZl09ITApfWVsc2UgaWYoYi5aZT09PTApe3ZhciBnPWIuc3R1ZHlJZDtzcChhLGEuSCxnKTt1cChhLGcpP3RqKHVqLGcpOnZwKGEsZyk/dWouS1tnXT0hMDp3cChhLGcpJiYKKHVqLkhbZ109ITApfX0sc3A9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Rmk7aWYoZS5zdHVkaWVzW2NdKXt2YXIgZj1lLnN0dWRpZXNbY10sZz1mLmV4cGVyaW1lbnRJZCxoPWYucHJvYmFiaWxpdHk7aWYoIShiLnN0dWRpZXN8fHt9KVtjXSl7dmFyIGw9Yi5zdHVkaWVzfHx7fTtsW2NdPSEwO2Iuc3R1ZGllcz1sO2lmKCFlLnN0dWRpZXNbY10uYWN0aXZlKWlmKGUuc3R1ZGllc1tjXS5wcm9iYWJpbGl0eT4uNSlJaShiLGcsYyk7ZWxzZSBpZighKGg8PTB8fGg+MSkpe3ZhciBuPXZvaWQgMDtpZihkKXt2YXIgcD1DaShkKyJ+IitjKTtpZihwPT09ImUyIiluPS0xO2Vsc2V7Zm9yKHZhciBxPW5ldyBVaW50OEFycmF5KHApLHI9QmlnSW50KDApLHQ9bShxKSx1PXQubmV4dCgpOyF1LmRvbmU7dT10Lm5leHQoKSlyPXI8PEJpZ0ludCg4KXxCaWdJbnQodS52YWx1ZSk7bj1OdW1iZXIociVCaWdJbnQoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpKX19R2kuc2soYixjLG4pfX19aWYoIWEuS1tjXSl7dmFyIHY9Ck5pKGIsYyk7diYmd2ouSC5LLmFkZCh2KX19LHRwPWZ1bmN0aW9uKCl7cmV0dXJuIG9tKGptLmJhLlRxLHt9KX0sdXA9ZnVuY3Rpb24oYSxiKXt2YXIgYz10cCgpO3JldHVybiBLaShjLGIpfHxLaShhLkgsYil9LHZwPWZ1bmN0aW9uKGEsYil7dmFyIGM9dHAoKTtyZXR1cm4gTGkoYyxiKXx8TGkoYS5ILGIpfSx3cD1mdW5jdGlvbihhLGIpe3ZhciBjPXRwKCk7cmV0dXJuIE1pKGMsYil8fE1pKGEuSCxiKX0seXA7CmZ1bmN0aW9uIHpwKCl7aWYoIXlwKXt2YXIgYT15cD1uZXcgcnAsYixjLGQ9KChiPUEpPT1udWxsP3ZvaWQgMDooYz1iLmxvY2F0aW9uKT09bnVsbD92b2lkIDA6Yy5oYXNoKXx8IiI7aWYoZFswXT09PSIjIiYmZFsxXT09PSJfIiYmZFsyXT09PSJ0IiYmZFszXT09PSJlIiYmZFs0XT09PSI9Iil7dmFyIGU9ZC5zdWJzdHJpbmcoNSk7aWYoZSlmb3IodmFyIGY9bShlLnNwbGl0KCJ+IikpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1OdW1iZXIoZy52YWx1ZSk7aCYmKGEuTltoXT0hMCx0aih1aixoKSl9fWZvcih2YXIgbD1tKHFwKCkpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXhwKGEsbi52YWx1ZSk7Zm9yKHZhciBwPVtdLHE9bShNZig1Nil8fFtdKSxyPXEubmV4dCgpOyFyLmRvbmU7cj1xLm5leHQoKSl7dmFyIHQ9ci52YWx1ZSx1PXtzdHVkeUlkOnRbMV0sYWN0aXZlOiEhdFsyXSxwcm9iYWJpbGl0eTp0WzNdfHwwLGV4cGVyaW1lbnRJZDp0WzRdfHwKMCxjb250cm9sSWQ6dFs1XXx8MCxjb250cm9sSWQyOnRbNl18fDB9LHY9MDtzd2l0Y2godFs3XSl7Y2FzZSAyOnY9MTticmVhaztjYXNlIDM6dj0yO2JyZWFrO2Nhc2UgMTpjYXNlIDQ6Y2FzZSA1OmNhc2UgMDp2PTB9dmFyIHg7YTpzd2l0Y2godS5zdHVkeUlkKXtjYXNlIDU2NzpjYXNlIDQ2Mjp4PSEwO2JyZWFrIGE7ZGVmYXVsdDp4PSExfXZhciB5PW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sdSx7WmU6dixmb2N1c2VkOnh9KTsoeS5hY3RpdmV8fHkucHJvYmFiaWxpdHk+LjUmJnkuZXhwZXJpbWVudElkfHx5LmV4cGVyaW1lbnRJZCYmeS5jb250cm9sSWQpJiZwLnB1c2goeSl9Zm9yKHZhciB6PW0ocCksQz16Lm5leHQoKTshQy5kb25lO0M9ei5uZXh0KCkpeHAoYSxDLnZhbHVlKX19CmZ1bmN0aW9uIEFwKGEsYil7enAoKTt2YXIgYz15cDtzcChjLHRwKCksYSxiKTt1cChjLGEpP3RqKHVqLGEpOnZwKGMsYSk/dWouS1thXT0hMDp3cChjLGEpJiYodWouSFthXT0hMCl9ZnVuY3Rpb24gQnAoKXt6cCgpO3ZhciBhPXlwLGI9dXAoYSw1NjcpO2lmKGEuS1s1NjddKXt2YXIgYyxkPXRwKCk7KGM9TmkoZCw1NjcpfHxOaShhLkgsNTY3KSkmJmEuUi5hZGQoYyl9cmV0dXJuIGJ9ZnVuY3Rpb24gQ3AoYSl7enAoKTt2YXIgYj1uZXcgU2V0KHlwLlIpO2lmKGEpZm9yKHZhciBjPVEoYSxILkouQ2gpfHxbXSxkPW0oYyksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpYi5hZGQoZS52YWx1ZSk7cmV0dXJuIHBwKFtdLmNvbmNhdCh3KGIpKSl9O2Z1bmN0aW9uIERwKGEpe3ZhciBiPWEubG9jYXRpb24uaHJlZjtpZihhPT09YS50b3ApcmV0dXJue3VybDpiLElzOiEwfTt2YXIgYz0hMSxkPWEuZG9jdW1lbnQ7ZCYmZC5yZWZlcnJlciYmKGI9ZC5yZWZlcnJlcixhLnBhcmVudD09PWEudG9wJiYoYz0hMCkpO3ZhciBlPWEubG9jYXRpb24uYW5jZXN0b3JPcmlnaW5zO2lmKGUpe3ZhciBmPWVbZS5sZW5ndGgtMV0sZztmJiYoKGc9Yik9PW51bGw/dm9pZCAwOmcuaW5kZXhPZihmKSk9PT0tMSYmKGM9ITEsYj1mKX1yZXR1cm57dXJsOmIsSXM6Y319ZnVuY3Rpb24gRXAoYSl7dHJ5e3ZhciBiO2lmKGI9ISFhJiZhLmxvY2F0aW9uLmhyZWYhPW51bGwpYTp7dHJ5e0huKGEuZm9vKTtiPSEwO2JyZWFrIGF9Y2F0Y2goYyl7fWI9ITF9cmV0dXJuIGJ9Y2F0Y2goYyl7cmV0dXJuITF9fWZ1bmN0aW9uIEZwKCl7Zm9yKHZhciBhPUEsYj1hO2EmJmEhPT1hLnBhcmVudDspYT1hLnBhcmVudCxFcChhKSYmKGI9YSk7cmV0dXJuIGJ9O3ZhciBHcD1mdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKCl7fTtjLnByb3RvdHlwZT1hLnByb3RvdHlwZTt2YXIgZD1uZXcgYzthLmFwcGx5KGQsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTtyZXR1cm4gZH0sSHA9ZnVuY3Rpb24oYSl7dmFyIGI9YTtyZXR1cm4gZnVuY3Rpb24oKXtpZihiKXt2YXIgYz1iO2I9bnVsbDtjKCl9fX07ZnVuY3Rpb24gSXAoYSxiKXtpZihhKWZvcih2YXIgYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiZiKGFbY10sYyxhKX07ZnVuY3Rpb24gSnAoYSl7dmFyIGI9YS5zcGxpdCgvWz8jXS8pLGM9L1s/XS8udGVzdChhKT8iPyIrYlsxXToiIjtyZXR1cm57ems6YlswXSxwYXJhbXM6YyxmcmFnbWVudDovWyNdLy50ZXN0KGEpPyIjIisoYz9iWzJdOmJbMV0pOiIifX1mdW5jdGlvbiBLcChhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyk7aWYoYi5sZW5ndGg9PT0wKXJldHVybiBqYyhhWzBdKTtmb3IodmFyIGM9YVswXSxkPTA7ZDxiLmxlbmd0aDtkKyspYys9ZW5jb2RlVVJJQ29tcG9uZW50KGJbZF0pK2FbZCsxXTtyZXR1cm4gamMoYyl9CmZ1bmN0aW9uIExwKGEsYixjLGQpe2Z1bmN0aW9uIGUoZyxoKXtnIT1udWxsJiYoQXJyYXkuaXNBcnJheShnKT9nLmZvckVhY2goZnVuY3Rpb24obCl7cmV0dXJuIGUobCxoKX0pOihiKz1mK2VuY29kZVVSSUNvbXBvbmVudChoKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGcpLGY9IiYiKSl9dmFyIGY9Yi5sZW5ndGg/IiYiOiI/IjtkLmNvbnN0cnVjdG9yPT09T2JqZWN0JiYoZD1PYmplY3QuZW50cmllcyhkKSk7QXJyYXkuaXNBcnJheShkKT9kLmZvckVhY2goZnVuY3Rpb24oZyl7cmV0dXJuIGUoZ1sxXSxnWzBdKX0pOmQuZm9yRWFjaChlKTtyZXR1cm4gamMoYStiK2MpfWZ1bmN0aW9uIE1wKGEsYil7dmFyIGM9SnAoa2MoYSkudG9TdHJpbmcoKSksZD1jLnprLnNsaWNlKC0xKT09PSIvIj8iIjoiLyIsZT1jLnprK2QrZW5jb2RlVVJJQ29tcG9uZW50KGIpO3JldHVybiBqYyhlK2MucGFyYW1zK2MuZnJhZ21lbnQpfTt2YXIgTnA9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YSxkPTA7ZDw1MDsrK2Qpe3ZhciBlO3RyeXtlPSEoIWMuZnJhbWVzfHwhYy5mcmFtZXNbYl0pfWNhdGNoKGgpe2U9ITF9aWYoZSlyZXR1cm4gYzt2YXIgZjthOnt0cnl7dmFyIGc9Yy5wYXJlbnQ7aWYoZyYmZyE9PWMpe2Y9ZzticmVhayBhfX1jYXRjaChoKXt9Zj1udWxsfWlmKCEoYz1mKSlicmVha31yZXR1cm4gbnVsbH0sT3A9ZnVuY3Rpb24oYSl7dmFyIGI9QTtpZihiLnRvcD09YilyZXR1cm4gMDtpZihhPT09dm9pZCAwPzA6YSl7dmFyIGM9Yi5sb2NhdGlvbi5hbmNlc3Rvck9yaWdpbnM7aWYoYylyZXR1cm4gY1tjLmxlbmd0aC0xXT09Yi5sb2NhdGlvbi5vcmlnaW4/MToyfXJldHVybiBFcChiLnRvcCk/MToyfSxQcD1mdW5jdGlvbihhKXthPWE9PT12b2lkIDA/ZG9jdW1lbnQ6YTtyZXR1cm4gYS5jcmVhdGVFbGVtZW50KCJpbWciKX07ZnVuY3Rpb24gUXAoYSl7Zm9yKHZhciBiPVtdLGM9Qi5jb29raWUuc3BsaXQoIjsiKSxkPW5ldyBSZWdFeHAoIl5cXHMqIisoYXx8Il9nYWMiKSsiXyhVQS1cXGQrLVxcZCspPVxccyooLis/KVxccyokIiksZT0wO2U8Yy5sZW5ndGg7ZSsrKXt2YXIgZj1jW2VdLm1hdGNoKGQpO2YmJmIucHVzaCh7dWQ6ZlsxXSx2YWx1ZTpmWzJdLHRpbWVzdGFtcDpOdW1iZXIoZlsyXS5zcGxpdCgiLiIpWzFdKXx8MH0pfWIuc29ydChmdW5jdGlvbihnLGgpe3JldHVybiBoLnRpbWVzdGFtcC1nLnRpbWVzdGFtcH0pO3JldHVybiBifQpmdW5jdGlvbiBScChhLGIpe3ZhciBjPVFwKGEpLGQ9e307aWYoIWN8fCFjLmxlbmd0aClyZXR1cm4gZDtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyl7dmFyIGY9Y1tlXS52YWx1ZS5zcGxpdCgiLiIpO2lmKCEoZlswXSE9PSIxInx8YiYmZi5sZW5ndGg8M3x8IWImJmYubGVuZ3RoIT09MykmJk51bWJlcihmWzFdKSl7ZFtjW2VdLnVkXXx8KGRbY1tlXS51ZF09W10pO3ZhciBnPXt2ZXJzaW9uOmZbMF0sdGltZXN0YW1wOk51bWJlcihmWzFdKSoxRTMsZ2NsaWQ6ZlsyXX07YiYmZi5sZW5ndGg+MyYmKGcubGFiZWxzPWYuc2xpY2UoMykpO2RbY1tlXS51ZF0ucHVzaChnKX19cmV0dXJuIGR9O2Z1bmN0aW9uIFNwKGEpe3JldHVybiBhLm9yaWdpbiE9PSJudWxsIn07dmFyIFRwPXt9LFVwPShUcC5rPXtuYTovXltcdy1dKyQvfSxUcC5iPXtuYTovXltcdy1dKyQvLG5rOiEwfSxUcC5pPXtuYTovXlsxLTldXGQqJC99LFRwLmg9e25hOi9eXGQrJC99LFRwLnQ9e25hOi9eWzEtOV1cZCokL30sVHAuZD17bmE6L15bQS1aYS16MC05Xy1dKyQvfSxUcC5qPXtuYTovXlxkKyQvfSxUcC51PXtuYTovXlsxLTldXGQqJC99LFRwLmw9e25hOi9eWzAxXSQvfSxUcC5vPXtuYTovXlsxLTldXGQqJC99LFRwLmc9e25hOi9eWzAxXSQvfSxUcC5zPXtuYTovXi4rJC99LFRwLm09e25hOi9eWzAxXSQvfSxUcCk7dmFyIFZwPXt9LFpwPShWcFs1XT17amk6ezI6V3B9LFpqOiIyIixSaDpbImsiLCJpIiwiYiIsInUiXX0sVnBbNF09e2ppOnsyOldwLEdDTDpYcH0sWmo6IjIiLFJoOlsiayIsImkiLCJiIiwibSJdfSxWcFsyXT17amk6e0dTMjpXcCxHUzE6WXB9LFpqOiJHUzIiLFJoOiJzb2d0amxoZCIuc3BsaXQoIiIpfSxWcCk7ZnVuY3Rpb24gJHAoYSxiLGMpe3ZhciBkPVpwW2JdO2lmKGQpe3ZhciBlPWEuc3BsaXQoIi4iKVswXTtjPT1udWxsfHxjKGUpO2lmKGUpe3ZhciBmPWQuamlbZV07aWYoZilyZXR1cm4gZihhLGIpfX19CmZ1bmN0aW9uIFdwKGEsYil7dmFyIGM9YS5zcGxpdCgiLiIpO2lmKGMubGVuZ3RoPT09Myl7dmFyIGQ9Y1syXTtpZihkLmluZGV4T2YoIiQiKT09PS0xJiZkLmluZGV4T2YoIiUyNCIpIT09LTEpdHJ5e2Q9ZGVjb2RlVVJJQ29tcG9uZW50KGQpfWNhdGNoKHQpe312YXIgZT17fSxmPVpwW2JdO2lmKGYpe2Zvcih2YXIgZz1mLlJoLGg9bShkLnNwbGl0KCIkIikpLGw9aC5uZXh0KCk7IWwuZG9uZTtsPWgubmV4dCgpKXt2YXIgbj1sLnZhbHVlLHA9blswXTtpZihnLmluZGV4T2YocCkhPT0tMSl0cnl7dmFyIHE9ZGVjb2RlVVJJQ29tcG9uZW50KG4uc3Vic3RyaW5nKDEpKSxyPVVwW3BdO3ImJihyLm5rPyhlW3BdPWVbcF18fFtdLGVbcF0ucHVzaChxKSk6ZVtwXT1xKX1jYXRjaCh0KXt9fXJldHVybiBlfX19ZnVuY3Rpb24gYXEoYSxiLGMpe3ZhciBkPVpwW2JdO2lmKGQpcmV0dXJuW2QuWmosY3x8IjEiLGJxKGEsYildLmpvaW4oIi4iKX0KZnVuY3Rpb24gYnEoYSxiKXt2YXIgYz1acFtiXTtpZihjKXtmb3IodmFyIGQ9W10sZT1tKGMuUmgpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlLGg9VXBbZ107aWYoaCl7dmFyIGw9YVtnXTtpZihsIT09dm9pZCAwKWlmKGgubmsmJkFycmF5LmlzQXJyYXkobCkpZm9yKHZhciBuPW0obCkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpZC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudCgiIitnK3AudmFsdWUpKTtlbHNlIGQucHVzaChlbmNvZGVVUklDb21wb25lbnQoIiIrZytsKSl9fXJldHVybiBkLmpvaW4oIiQiKX19ZnVuY3Rpb24gWHAoYSl7dmFyIGI9YS5zcGxpdCgiLiIpO2Iuc2hpZnQoKTt2YXIgYz1iLnNoaWZ0KCksZD1iLnNoaWZ0KCksZT17fTtyZXR1cm4gZS5rPWQsZS5pPWMsZS5iPWIsZX0KZnVuY3Rpb24gWXAoYSl7dmFyIGI9YS5zcGxpdCgiLiIpLnNsaWNlKDIpO2lmKCEoYi5sZW5ndGg8NXx8Yi5sZW5ndGg+Nykpe3ZhciBjPXt9O3JldHVybiBjLnM9YlswXSxjLm89YlsxXSxjLmc9YlsyXSxjLnQ9YlszXSxjLmo9Yls0XSxjLmw9Yls1XSxjLmg9Yls2XSxjfX07ZnVuY3Rpb24gY3EoYSxiLGMsZCl7dmFyIGU7cmV0dXJuKGU9ZHEoZnVuY3Rpb24oZil7cmV0dXJuIGY9PT1hfSxiLGMsZClbYV0pIT1udWxsP2U6W119ZnVuY3Rpb24gZHEoYSxiLGMsZCl7dmFyIGU7aWYoZXEoZCkpe2Zvcih2YXIgZj17fSxnPVN0cmluZyhifHxmcSgpKS5zcGxpdCgiOyIpLGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIGw9Z1toXS5zcGxpdCgiPSIpLG49bFswXS50cmltKCk7aWYobiYmYShuKSl7dmFyIHA9bC5zbGljZSgxKS5qb2luKCI9IikudHJpbSgpO3AmJmMmJihwPWRlY29kZVVSSUNvbXBvbmVudChwKSk7dmFyIHE9dm9pZCAwLHI9dm9pZCAwOygocT1mKVtyPW5dfHwocVtyXT1bXSkpLnB1c2gocCl9fWU9Zn1lbHNlIGU9e307cmV0dXJuIGV9CmZ1bmN0aW9uIGdxKGEsYixjLGQsZSl7aWYoZXEoZSkpe3ZhciBmPWhxKGEsZCxlKTtpZihmLmxlbmd0aD09PTEpcmV0dXJuIGZbMF07aWYoZi5sZW5ndGghPT0wKXtmPWlxKGYsZnVuY3Rpb24oZyl7cmV0dXJuIGcuSnJ9LGIpO2lmKGYubGVuZ3RoPT09MSlyZXR1cm4gZlswXTtmPWlxKGYsZnVuY3Rpb24oZyl7cmV0dXJuIGcuV3N9LGMpO3JldHVybiBmWzBdfX19ZnVuY3Rpb24ganEoYSxiLGMsZCl7dmFyIGU9ZnEoKSxmPUE7U3AoZikmJihmLmRvY3VtZW50LmNvb2tpZT1hKTt2YXIgZz1mcSgpO3JldHVybiBlIT09Z3x8YyE9PXZvaWQgMCYmY3EoYixnLCExLGQpLmluZGV4T2YoYyk+PTB9CmZ1bmN0aW9uIGtxKGEsYixjLGQpe2Z1bmN0aW9uIGUoeCx5LHope2lmKHo9PW51bGwpcmV0dXJuIGRlbGV0ZSBoW3ldLHg7aFt5XT16O3JldHVybiB4KyI7ICIreSsiPSIren1mdW5jdGlvbiBmKHgseSl7aWYoeT09bnVsbClyZXR1cm4geDtoW3ldPSEwO3JldHVybiB4KyI7ICIreX1pZighZXEoYy5NYykpcmV0dXJuIDI7dmFyIGc7Yj09bnVsbD9nPWErIj1kZWxldGVkOyBleHBpcmVzPSIrKG5ldyBEYXRlKDApKS50b1VUQ1N0cmluZygpOihjLmVuY29kZSYmKGI9ZW5jb2RlVVJJQ29tcG9uZW50KGIpKSxiPWxxKGIpLGc9YSsiPSIrYik7dmFyIGg9e307Zz1lKGcsInBhdGgiLGMucGF0aCk7dmFyIGw7Yy5leHBpcmVzIGluc3RhbmNlb2YgRGF0ZT9sPWMuZXhwaXJlcy50b1VUQ1N0cmluZygpOmMuZXhwaXJlcyE9bnVsbCYmKGw9IiIrYy5leHBpcmVzKTtnPWUoZywiZXhwaXJlcyIsbCk7Zz1lKGcsIm1heC1hZ2UiLGMuT3MpO2c9ZShnLCJzYW1lc2l0ZSIsYy5ydCk7Yy5zZWN1cmUmJgooZz1mKGcsInNlY3VyZSIpKTt2YXIgbj1jLmRvbWFpbjtpZihuJiZuLnRvTG93ZXJDYXNlKCk9PT0iYXV0byIpe2Zvcih2YXIgcD1tcSgpLHE9dm9pZCAwLHI9ITEsdD0wO3Q8cC5sZW5ndGg7Kyt0KXt2YXIgdT1wW3RdIT09Im5vbmUiP3BbdF06dm9pZCAwLHY9ZShnLCJkb21haW4iLHUpO3Y9Zih2LGMuZmxhZ3MpO3RyeXtkJiZkKGEsaCl9Y2F0Y2goeCl7cT14O2NvbnRpbnVlfXI9ITA7aWYoIW5xKHUsYy5wYXRoKSYmanEodixhLGIsYy5NYykpcmV0dXJuIDB9aWYocSYmIXIpdGhyb3cgcTtyZXR1cm4gMX1uJiZuLnRvTG93ZXJDYXNlKCkhPT0ibm9uZSImJihnPWUoZywiZG9tYWluIixuKSk7Zz1mKGcsYy5mbGFncyk7ZCYmZChhLGgpO3JldHVybiBucShuLGMucGF0aCk/MTpqcShnLGEsYixjLk1jKT8wOjF9ZnVuY3Rpb24gb3EoYSxiLGMpe2MucGF0aD09bnVsbCYmKGMucGF0aD0iLyIpO2MuZG9tYWlufHwoYy5kb21haW49ImF1dG8iKTtyZXR1cm4ga3EoYSxiLGMpfQpmdW5jdGlvbiBpcShhLGIsYyl7Zm9yKHZhciBkPVtdLGU9W10sZixnPTA7ZzxhLmxlbmd0aDtnKyspe3ZhciBoPWFbZ10sbD1iKGgpO2w9PT1jP2QucHVzaChoKTpmPT09dm9pZCAwfHxsPGY/KGU9W2hdLGY9bCk6bD09PWYmJmUucHVzaChoKX1yZXR1cm4gZC5sZW5ndGg+MD9kOmV9ZnVuY3Rpb24gaHEoYSxiLGMpe2Zvcih2YXIgZD1bXSxlPWNxKGEsdm9pZCAwLHZvaWQgMCxjKSxmPTA7ZjxlLmxlbmd0aDtmKyspe3ZhciBnPWVbZl0uc3BsaXQoIi4iKSxoPWcuc2hpZnQoKTtpZighYnx8IWh8fGIuaW5kZXhPZihoKSE9PS0xKXt2YXIgbD1nLnNoaWZ0KCk7aWYobCl7dmFyIG49bC5zcGxpdCgiLSIpO2QucHVzaCh7QnI6ZVtmXSxDcjpnLmpvaW4oIi4iKSxKcjpOdW1iZXIoblswXSl8fDEsV3M6TnVtYmVyKG5bMV0pfHwxfSl9fX1yZXR1cm4gZH1mdW5jdGlvbiBscShhKXthJiZhLmxlbmd0aD4xMjAwJiYoYT1hLnN1YnN0cmluZygwLDEyMDApKTtyZXR1cm4gYX0KdmFyIHBxPS9eKHd3d1wuKT9nb29nbGUoXC5jb20/KT8oXC5bYS16XXsyfSk/JC8scXE9LyhefFwuKWRvdWJsZWNsaWNrXC5uZXQkL2k7ZnVuY3Rpb24gbnEoYSxiKXtyZXR1cm4gYSE9PXZvaWQgMCYmKHFxLnRlc3QoQS5kb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZSl8fGI9PT0iLyImJnBxLnRlc3QoYSkpfWZ1bmN0aW9uIHJxKGEpe2lmKCFhKXJldHVybiAxO3ZhciBiPWE7WWYoNCkmJmE9PT0ibm9uZSImJihiPUEuZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUpO2I9Yi5pbmRleE9mKCIuIik9PT0wP2Iuc3Vic3RyaW5nKDEpOmI7cmV0dXJuIGIuc3BsaXQoIi4iKS5sZW5ndGh9ZnVuY3Rpb24gc3EoYSl7aWYoIWF8fGE9PT0iLyIpcmV0dXJuIDE7YVswXSE9PSIvIiYmKGE9Ii8iK2EpO2FbYS5sZW5ndGgtMV0hPT0iLyImJihhKz0iLyIpO3JldHVybiBhLnNwbGl0KCIvIikubGVuZ3RoLTF9CmZ1bmN0aW9uIHRxKGEsYil7dmFyIGM9IiIrcnEoYSksZD1zcShiKTtkPjEmJihjKz0iLSIrZCk7cmV0dXJuIGN9CnZhciBmcT1mdW5jdGlvbigpe3ZhciBhPUE7cmV0dXJuIFNwKGEpP2EuZG9jdW1lbnQuY29va2llOiIifSxlcT1mdW5jdGlvbihhKXtyZXR1cm4gYSYmWWYoNSk/KEFycmF5LmlzQXJyYXkoYSk/YTpbYV0pLmV2ZXJ5KGZ1bmN0aW9uKGIpe3JldHVybiBEbChiKSYmQmwoYil9KTohMH0sbXE9ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPUEuZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUuc3BsaXQoIi4iKTtpZihiLmxlbmd0aD09PTQpe3ZhciBjPWJbYi5sZW5ndGgtMV07aWYoTnVtYmVyKGMpLnRvU3RyaW5nKCk9PT1jKXJldHVyblsibm9uZSJdfWZvcih2YXIgZD1iLmxlbmd0aC0yO2Q+PTA7ZC0tKWEucHVzaChiLnNsaWNlKGQpLmpvaW4oIi4iKSk7dmFyIGU9QS5kb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZTtxcS50ZXN0KGUpfHxwcS50ZXN0KGUpfHxhLnB1c2goIm5vbmUiKTtyZXR1cm4gYX07ZnVuY3Rpb24gdXEoYSxiLGMsZCl7dmFyIGUsZj1OdW1iZXIoYS5wZCE9bnVsbD9hLnBkOnZvaWQgMCk7ZiE9PTAmJihlPW5ldyBEYXRlKChifHxOYigpKSsxRTMqKGZ8fDc3NzZFMykpKTtyZXR1cm57cGF0aDphLnBhdGgsZG9tYWluOmEuZG9tYWluLGZsYWdzOmEuZmxhZ3MsZW5jb2RlOiEhYyxleHBpcmVzOmUsTWM6ZH19O3ZhciB2cT1uZXcgTWFwKFtbNSwiYWRfc3RvcmFnZSJdLFs0LFsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdXSxbMiwiYW5hbHl0aWNzX3N0b3JhZ2UiXV0pO2Z1bmN0aW9uIHdxKGEsYixjKXtpZihacFtiXSl7Zm9yKHZhciBkPVtdLGU9Y3EoYSx2b2lkIDAsdm9pZCAwLHZxLmdldChiKSksZj1tKGUpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD0kcChnLnZhbHVlLGIsYyk7aCYmZC5wdXNoKHhxKGgpKX1yZXR1cm4gZH19CmZ1bmN0aW9uIHlxKGEpe3ZhciBiPXpxO2lmKFpwWzJdKXtmb3IodmFyIGM9e30sZD1kcShhLHZvaWQgMCx2b2lkIDAsdnEuZ2V0KDIpKSxlPU9iamVjdC5rZXlzKGQpLnNvcnQoKSxmPW0oZSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpZm9yKHZhciBoPWcudmFsdWUsbD1tKGRbaF0pLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD0kcChuLnZhbHVlLDIsYik7cCYmKGNbaF18fChjW2hdPVtdKSxjW2hdLnB1c2goeHEocCkpKX1yZXR1cm4gY319ZnVuY3Rpb24gQXEoYSxiLGMsZCxlKXtkPWR8fHt9O3ZhciBmPXRxKGQuZG9tYWluLGQucGF0aCksZz1hcShiLGMsZik7aWYoIWcpcmV0dXJuIDE7dmFyIGg9dXEoZCxlLHZvaWQgMCx2cS5nZXQoYykpO3JldHVybiBvcShhLGcsaCl9ZnVuY3Rpb24gQnEoYSxiKXt2YXIgYz1iLm5hO3JldHVybiB0eXBlb2YgYz09PSJmdW5jdGlvbiI/YyhhKTpjLnRlc3QoYSl9CmZ1bmN0aW9uIHhxKGEpe2Zvcih2YXIgYj1tKE9iamVjdC5rZXlzKGEpKSxjPWIubmV4dCgpLGQ9e307IWMuZG9uZTtkPXtBZzp2b2lkIDB9LGM9Yi5uZXh0KCkpe3ZhciBlPWMudmFsdWUsZj1hW2VdO2QuQWc9VXBbZV07ZC5BZz9kLkFnLm5rP2FbZV09QXJyYXkuaXNBcnJheShmKT9mLmZpbHRlcihmdW5jdGlvbihnKXtyZXR1cm4gZnVuY3Rpb24oaCl7cmV0dXJuIEJxKGgsZy5BZyl9fShkKSk6dm9pZCAwOnR5cGVvZiBmPT09InN0cmluZyImJkJxKGYsZC5BZyl8fChhW2VdPXZvaWQgMCk6YVtlXT12b2lkIDB9cmV0dXJuIGF9O3ZhciBDcTtmdW5jdGlvbiBEcSgpe2Z1bmN0aW9uIGEoZyl7YyhnLnRhcmdldHx8Zy5zcmNFbGVtZW50fHx7fSl9ZnVuY3Rpb24gYihnKXtkKGcudGFyZ2V0fHxnLnNyY0VsZW1lbnR8fHt9KX12YXIgYz1FcSxkPUZxLGU9R3EoKTtpZighZS5pbml0KXskYyhCLCJtb3VzZWRvd24iLGEpOyRjKEIsImtleXVwIixhKTskYyhCLCJzdWJtaXQiLGIpO3ZhciBmPUhUTUxGb3JtRWxlbWVudC5wcm90b3R5cGUuc3VibWl0O0hUTUxGb3JtRWxlbWVudC5wcm90b3R5cGUuc3VibWl0PWZ1bmN0aW9uKCl7ZCh0aGlzKTtmLmNhbGwodGhpcyl9O2UuaW5pdD0hMH19ZnVuY3Rpb24gSHEoYSxiLGMsZCxlKXt2YXIgZj17Y2FsbGJhY2s6YSxkb21haW5zOmIsZnJhZ21lbnQ6Yz09PTIscGxhY2VtZW50OmMsZm9ybXM6ZCxzYW1lSG9zdDplfTtHcSgpLmRlY29yYXRvcnMucHVzaChmKX0KZnVuY3Rpb24gSXEoYSxiLGMpe2Zvcih2YXIgZD1HcSgpLmRlY29yYXRvcnMsZT17fSxmPTA7ZjxkLmxlbmd0aDsrK2Ype3ZhciBnPWRbZl0saDtpZihoPSFjfHxnLmZvcm1zKWE6e3ZhciBsPWcuZG9tYWlucyxuPWEscD0hIWcuc2FtZUhvc3Q7aWYobCYmKHB8fG4hPT1CLmxvY2F0aW9uLmhvc3RuYW1lKSlmb3IodmFyIHE9MDtxPGwubGVuZ3RoO3ErKylpZihsW3FdaW5zdGFuY2VvZiBSZWdFeHApe2lmKGxbcV0udGVzdChuKSl7aD0hMDticmVhayBhfX1lbHNlIGlmKG4uaW5kZXhPZihsW3FdKT49MHx8cCYmbFtxXS5pbmRleE9mKG4pPj0wKXtoPSEwO2JyZWFrIGF9aD0hMX1pZihoKXt2YXIgcj1nLnBsYWNlbWVudDtyPT09dm9pZCAwJiYocj1nLmZyYWdtZW50PzI6MSk7cj09PWImJlFiKGUsZy5jYWxsYmFjaygpKX19cmV0dXJuIGV9CmZ1bmN0aW9uIEdxKCl7dmFyIGE9TWMoImdvb2dsZV90YWdfZGF0YSIse30pLGI9YS5nbDtiJiZiLmRlY29yYXRvcnN8fChiPXtkZWNvcmF0b3JzOltdfSxhLmdsPWIpO3JldHVybiBifTt2YXIgSnE9LyguKj8pXCooLio/KVwqKC4qKS8sS3E9L15odHRwcz86XC9cLyhbXlwvXSo/KVwuP2NkblwuYW1wcHJvamVjdFwub3JnXC8/KC4qKS8sTHE9L14oPzp3d3dcLnxtXC58YW1wXC4pKy8sTXE9LyhbXj8jXSspKFw/W14jXSopPygjLiopPy87ZnVuY3Rpb24gTnEoYSl7dmFyIGI9TXEuZXhlYyhhKTtpZihiKXJldHVybntoazpiWzFdLHF1ZXJ5OmJbMl0sZnJhZ21lbnQ6YlszXX19ZnVuY3Rpb24gT3EoYSl7cmV0dXJuIG5ldyBSZWdFeHAoIiguKj8pKF58JikiK2ErIj0oW14mXSopJj8oLiopIil9CmZ1bmN0aW9uIFBxKGEsYil7dmFyIGM9W0hjLnVzZXJBZ2VudCwobmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCksSGMudXNlckxhbmd1YWdlfHxIYy5sYW5ndWFnZSxNYXRoLmZsb29yKE5iKCkvNjAvMUUzKS0oYj09PXZvaWQgMD8wOmIpLGFdLmpvaW4oIioiKSxkO2lmKCEoZD1DcSkpe2Zvcih2YXIgZT1BcnJheSgyNTYpLGY9MDtmPDI1NjtmKyspe2Zvcih2YXIgZz1mLGg9MDtoPDg7aCsrKWc9ZyYxP2c+Pj4xXjM5ODgyOTIzODQ6Zz4+PjE7ZVtmXT1nfWQ9ZX1DcT1kO2Zvcih2YXIgbD00Mjk0OTY3Mjk1LG49MDtuPGMubGVuZ3RoO24rKylsPWw+Pj44XkNxWyhsXmMuY2hhckNvZGVBdChuKSkmMjU1XTtyZXR1cm4oKGxeLTEpPj4+MCkudG9TdHJpbmcoMzYpfQpmdW5jdGlvbiBRcShhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9UmooQS5sb2NhdGlvbi5ocmVmKSxkPWMuc2VhcmNoLnJlcGxhY2UoIj8iLCIiKSxlPUlqKGQsIl9nbCIsITEsITApfHwiIjtiLnF1ZXJ5PVJxKGUpfHx7fTt2YXIgZj1MaihjLCJmcmFnbWVudCIpLGc7dmFyIGg9LTE7aWYoU2IoZiwiX2dsPSIpKWg9NDtlbHNle3ZhciBsPWYuaW5kZXhPZigiJl9nbD0iKTtsPjAmJihoPWwrMysyKX1pZihoPDApZz12b2lkIDA7ZWxzZXt2YXIgbj1mLmluZGV4T2YoIiYiLGgpO2c9bjwwP2Yuc3Vic3RyaW5nKGgpOmYuc3Vic3RyaW5nKGgsbil9Yi5mcmFnbWVudD1ScShnfHwiIil8fHt9O2EmJlNxKGMsZCxmKX19ZnVuY3Rpb24gVHEoYSxiKXt2YXIgYz1PcShhKS5leGVjKGIpLGQ9YjtpZihjKXt2YXIgZT1jWzJdLGY9Y1s0XTtkPWNbMV07ZiYmKGQ9ZCtlK2YpfXJldHVybiBkfQpmdW5jdGlvbiBTcShhLGIsYyl7ZnVuY3Rpb24gZChnLGgpe3ZhciBsPVRxKCJfZ2wiLGcpO2wubGVuZ3RoJiYobD1oK2wpO3JldHVybiBsfWlmKEdjJiZHYy5yZXBsYWNlU3RhdGUpe3ZhciBlPU9xKCJfZ2wiKTtpZihlLnRlc3QoYil8fGUudGVzdChjKSl7dmFyIGY9TGooYSwicGF0aCIpO2I9ZChiLCI/Iik7Yz1kKGMsIiMiKTtHYy5yZXBsYWNlU3RhdGUoe30sIiIsIiIrZitiK2MpfX19ZnVuY3Rpb24gVXEoYSxiKXt2YXIgYz1RcSghIWIpLGQ9R3EoKTtkLmRhdGF8fChkLmRhdGE9e3F1ZXJ5Ont9LGZyYWdtZW50Ont9fSxjKGQuZGF0YSkpO3ZhciBlPXt9LGY9ZC5kYXRhO2YmJihRYihlLGYucXVlcnkpLGEmJlFiKGUsZi5mcmFnbWVudCkpO3JldHVybiBlfQp2YXIgUnE9ZnVuY3Rpb24oYSl7dHJ5e3ZhciBiPVZxKGEsMyk7aWYoYiE9PXZvaWQgMCl7Zm9yKHZhciBjPXt9LGQ9Yj9iLnNwbGl0KCIqIik6W10sZT0wO2UrMTxkLmxlbmd0aDtlKz0yKXt2YXIgZj1kW2VdLGc9cWIoZFtlKzFdKTtjW2ZdPWd9c2IoIlRBR0dJTkciLDYpO3JldHVybiBjfX1jYXRjaChoKXtzYigiVEFHR0lORyIsOCl9fTtmdW5jdGlvbiBWcShhLGIpe2lmKGEpe3ZhciBjO2E6e2Zvcih2YXIgZD1hLGU9MDtlPDM7KytlKXt2YXIgZj1KcS5leGVjKGQpO2lmKGYpe2M9ZjticmVhayBhfWQ9S2ooZCl8fCIifWM9dm9pZCAwfXZhciBnPWM7aWYoZyYmZ1sxXT09PSIxIil7dmFyIGg9Z1szXSxsO2E6e2Zvcih2YXIgbj1nWzJdLHA9MDtwPGI7KytwKWlmKG49PT1QcShoLHApKXtsPSEwO2JyZWFrIGF9bD0hMX1pZihsKXJldHVybiBoO3NiKCJUQUdHSU5HIiw3KX19fQpmdW5jdGlvbiBXcShhLGIsYyxkLGUpe2Z1bmN0aW9uIGYocCl7cD1UcShhLHApO3ZhciBxPXAuY2hhckF0KHAubGVuZ3RoLTEpO3AmJnEhPT0iJiImJihwKz0iJiIpO3JldHVybiBwK259ZD1kPT09dm9pZCAwPyExOmQ7ZT1lPT09dm9pZCAwPyExOmU7dmFyIGc9TnEoYyk7aWYoIWcpcmV0dXJuIiI7dmFyIGg9Zy5xdWVyeXx8IiIsbD1nLmZyYWdtZW50fHwiIixuPWErIj0iK2I7ZD9sLnN1YnN0cmluZygxKS5sZW5ndGghPT0wJiZlfHwobD0iIyIrZihsLnN1YnN0cmluZygxKSkpOmg9Ij8iK2YoaC5zdWJzdHJpbmcoMSkpO3JldHVybiIiK2cuaGsraCtsfQpmdW5jdGlvbiBYcShhLGIpe2Z1bmN0aW9uIGMobixwLHEpe3ZhciByO2E6e2Zvcih2YXIgdCBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkodCkpe3I9ITA7YnJlYWsgYX1yPSExfWlmKHIpe3ZhciB1LHY9W10seDtmb3IoeCBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkoeCkpe3ZhciB5PW5beF07eSE9PXZvaWQgMCYmeT09PXkmJnkhPT1udWxsJiZ5LnRvU3RyaW5nKCkhPT0iW29iamVjdCBPYmplY3RdIiYmKHYucHVzaCh4KSx2LnB1c2gocGIoU3RyaW5nKHkpKSkpfXZhciB6PXYuam9pbigiKiIpO3U9WyIxIixQcSh6KSx6XS5qb2luKCIqIik7ZD8oWWYoMyl8fFlmKDEpfHwhcCkmJllxKCJfZ2wiLHUsYSxwLHEpOlpxKCJfZ2wiLHUsYSxwLHEpfX12YXIgZD0oYS50YWdOYW1lfHwiIikudG9VcHBlckNhc2UoKT09PSJGT1JNIixlPUlxKGIsMSxkKSxmPUlxKGIsMixkKSxnPUlxKGIsNCxkKSxoPUlxKGIsMyxkKTtjKGUsITEsITEpO2MoZiwhMCwhMSk7WWYoMSkmJmMoZywhMCwhMCk7Zm9yKHZhciBsIGluIGgpaC5oYXNPd25Qcm9wZXJ0eShsKSYmCiRxKGwsaFtsXSxhKX1mdW5jdGlvbiAkcShhLGIsYyl7Yy50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0iYSI/WnEoYSxiLGMpOmMudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09ImZvcm0iJiZZcShhLGIsYyl9ZnVuY3Rpb24gWnEoYSxiLGMsZCxlKXtkPWQ9PT12b2lkIDA/ITE6ZDtlPWU9PT12b2lkIDA/ITE6ZTt2YXIgZjtpZihmPWMuaHJlZil7dmFyIGc7aWYoIShnPWQpKXt2YXIgaD1BLmxvY2F0aW9uLmhyZWYsbD1OcShjLmhyZWYpLG49TnEoaCk7Zz0hKGwmJm4mJmwuaGs9PT1uLmhrJiZsLnF1ZXJ5PT09bi5xdWVyeSYmbC5mcmFnbWVudCl9Zj1nfWlmKGYpe3ZhciBwPVdxKGEsYixjLmhyZWYsZCxlKTt2Yy50ZXN0KHApJiYoYy5ocmVmPXApfX0KZnVuY3Rpb24gWXEoYSxiLGMsZCxlKXtkPWQ9PT12b2lkIDA/ITE6ZDtlPWU9PT12b2lkIDA/ITE6ZTtpZihjKXt2YXIgZj1jLmdldEF0dHJpYnV0ZSgiYWN0aW9uIil8fCIiO2lmKGYpe3ZhciBnPShjLm1ldGhvZHx8IiIpLnRvTG93ZXJDYXNlKCk7aWYoZyE9PSJnZXQifHxkKXtpZihnPT09ImdldCJ8fGc9PT0icG9zdCIpe3ZhciBoPVdxKGEsYixmLGQsZSk7dmMudGVzdChoKSYmKGMuYWN0aW9uPWgpfX1lbHNle2Zvcih2YXIgbD1jLmNoaWxkTm9kZXN8fFtdLG49ITEscD0wO3A8bC5sZW5ndGg7cCsrKXt2YXIgcT1sW3BdO2lmKHEubmFtZT09PWEpe3Euc2V0QXR0cmlidXRlKCJ2YWx1ZSIsYik7bj0hMDticmVha319aWYoIW4pe3ZhciByPUIuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtyLnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpO3Iuc2V0QXR0cmlidXRlKCJuYW1lIixhKTtyLnNldEF0dHJpYnV0ZSgidmFsdWUiLGIpO2MuYXBwZW5kQ2hpbGQocil9fX19fQpmdW5jdGlvbiBFcShhKXt0cnl7dmFyIGI7YTp7Zm9yKHZhciBjPWEsZD0xMDA7YyYmZD4wOyl7aWYoYy5ocmVmJiZjLm5vZGVOYW1lLm1hdGNoKC9eYSg/OnJlYSk/JC9pKSl7Yj1jO2JyZWFrIGF9Yz1jLnBhcmVudE5vZGU7ZC0tfWI9bnVsbH12YXIgZT1iO2lmKGUpe3ZhciBmPWUucHJvdG9jb2w7ZiE9PSJodHRwOiImJmYhPT0iaHR0cHM6Inx8WHEoZSxlLmhvc3RuYW1lKX19Y2F0Y2goZyl7fX1mdW5jdGlvbiBGcShhKXt0cnl7dmFyIGI9YS5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpO2lmKGIpe3ZhciBjPUxqKFJqKGIpLCJob3N0Iik7WHEoYSxjKX19Y2F0Y2goZCl7fX1mdW5jdGlvbiBhcihhLGIsYyxkKXtEcSgpO3ZhciBlPWM9PT0iZnJhZ21lbnQiPzI6MTtkPSEhZDtIcShhLGIsZSxkLCExKTtlPT09MiYmc2IoIlRBR0dJTkciLDIzKTtkJiZzYigiVEFHR0lORyIsMjQpfQpmdW5jdGlvbiBicihhLGIpe0RxKCk7SHEoYSxbTmooQS5sb2NhdGlvbiwiaG9zdCIsITApXSxiLCEwLCEwKX1mdW5jdGlvbiBjcigpe3ZhciBhPUIubG9jYXRpb24uaG9zdG5hbWUsYj1LcS5leGVjKEIucmVmZXJyZXIpO2lmKCFiKXJldHVybiExO3ZhciBjPWJbMl0sZD1iWzFdLGU9IiI7aWYoYyl7dmFyIGY9Yy5zcGxpdCgiLyIpLGc9ZlsxXTtlPWc9PT0icyI/S2ooZlsyXSl8fCIiOktqKGcpfHwiIn1lbHNlIGlmKGQpe2lmKGQuaW5kZXhPZigieG4tLSIpPT09MClyZXR1cm4hMTtlPWQucmVwbGFjZSgvLS9nLCIuIikucmVwbGFjZSgvXC5cLi9nLCItIil9dmFyIGg9YS5yZXBsYWNlKExxLCIiKSxsPWUucmVwbGFjZShMcSwiIik7cmV0dXJuIGg9PT1sfHxUYihoLCIuIitsKX1mdW5jdGlvbiBkcihhLGIpe3JldHVybiBhPT09ITE/ITE6YXx8Ynx8Y3IoKX07dmFyIGVyPWZ1bmN0aW9uKGEpe3RoaXMudmFsdWU9MDt0aGlzLnZhbHVlPWE9PT12b2lkIDA/MDphfTtlci5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnZhbHVlfD0xPDxhfTt2YXIgZnI9ZnVuY3Rpb24oYSxiKXtiPD0wfHwoYS52YWx1ZXw9MTw8Yi0xKX07ZXIucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfTtlci5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oYSl7dGhpcy52YWx1ZSY9figxPDxhKX07ZXIucHJvdG90eXBlLmNsZWFyQWxsPWZ1bmN0aW9uKCl7dGhpcy52YWx1ZT0wfTtlci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnZhbHVlPT09YS52YWx1ZX07ZnVuY3Rpb24gZ3IoYSl7aWYoYSl0cnl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGF0b2IoYS5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKSkuc3BsaXQoIiIpLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYi5jaGFyQ29kZUF0KDApfSkpfWNhdGNoKGIpe319ZnVuY3Rpb24gaHIoYSxiKXt2YXIgYz0wLGQ9MCxlLGY9Yjtkb3tpZihmPj1hLmxlbmd0aClyZXR1cm47ZT1hW2YrK107Y3w9KGUmMTI3KTw8ZDtkKz03fXdoaWxlKGUmMTI4KTtyZXR1cm5bYyxmXX07ZnVuY3Rpb24gaXIoKXt2YXIgYT1TdHJpbmcsYj1BLmxvY2F0aW9uLmhvc3RuYW1lLGM9QS5sb2NhdGlvbi5wYXRobmFtZSxkPWI9YmMoYik7ZC5zcGxpdCgiLiIpLmxlbmd0aD4yJiYoZD1kLnJlcGxhY2UoL14od3d3WzAtOV0qfHdlYnxmdHB8d2FwfGhvbWV8bXx3fGFtcHxtb2JpbGUpXC4vLCIiKSk7Yj1kO2M9YmMoYyk7dmFyIGU9Yy5zcGxpdCgiOyIpWzBdO2U9ZS5yZXBsYWNlKC9cLyhhcnxzbHB8d2VifGluZGV4KT9cLz8kLywiIik7cmV0dXJuIGEobmcoKCIiK2IrZSkudG9Mb3dlckNhc2UoKSkpfTt2YXIganI9WyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl07ZnVuY3Rpb24ga3IoYSxiKXtpZighYSlyZXR1cm4gc2IoIlRBR0dJTkciLDMyKSwxMDtpZihiPT09bnVsbHx8Yj09PXZvaWQgMHx8Yj09PSIiKXJldHVybiBzYigiVEFHR0lORyIsMzMpLDExO3ZhciBjPWxyKCExKTtpZihjLmVycm9yIT09MClyZXR1cm4gc2IoIlRBR0dJTkciLDM0KSxjLmVycm9yO2lmKCFjLnZhbHVlKXJldHVybiBzYigiVEFHR0lORyIsMzUpLDI7Yy52YWx1ZVthXT1iO3ZhciBkPW1yKGMpO2QhPT0wJiZzYigiVEFHR0lORyIsMzYpO3JldHVybiBkfQpmdW5jdGlvbiBucihhKXtpZighYSlyZXR1cm4gc2IoIlRBR0dJTkciLDI3KSx7ZXJyb3I6MTB9O3ZhciBiPWxyKCk7aWYoYi5lcnJvciE9PTApcmV0dXJuIHNiKCJUQUdHSU5HIiwyOSksYjtpZighYi52YWx1ZSlyZXR1cm4gc2IoIlRBR0dJTkciLDMwKSx7ZXJyb3I6Mn07aWYoIShhIGluIGIudmFsdWUpKXJldHVybiBzYigiVEFHR0lORyIsMzEpLHt2YWx1ZTp2b2lkIDAsZXJyb3I6MTV9O3ZhciBjPWIudmFsdWVbYV07cmV0dXJuIGM9PT1udWxsfHxjPT09dm9pZCAwfHxjPT09IiI/KHNiKCJUQUdHSU5HIiwyOCkse3ZhbHVlOnZvaWQgMCxlcnJvcjoxMX0pOnt2YWx1ZTpjLGVycm9yOjB9fQpmdW5jdGlvbiBvcihhKXtpZihhKXt2YXIgYj1scighMSk7Yi5lcnJvciE9PTA/c2IoIlRBR0dJTkciLDM4KTpiLnZhbHVlP2EgaW4gYi52YWx1ZT8oZGVsZXRlIGIudmFsdWVbYV0sbXIoYikhPT0wJiZzYigiVEFHR0lORyIsNDEpKTpzYigiVEFHR0lORyIsNDApOnNiKCJUQUdHSU5HIiwzOSl9ZWxzZSBzYigiVEFHR0lORyIsMzcpfQpmdW5jdGlvbiBscihhKXthPWE9PT12b2lkIDA/ITA6YTtpZighQmwoanIpKXJldHVybiBzYigiVEFHR0lORyIsNDMpLHtlcnJvcjozfTt0cnl7aWYoIUEubG9jYWxTdG9yYWdlKXJldHVybiBzYigiVEFHR0lORyIsNDQpLHtlcnJvcjoxfX1jYXRjaChmKXtyZXR1cm4gc2IoIlRBR0dJTkciLDQ1KSx7ZXJyb3I6MTR9fXZhciBiPXtzY2hlbWE6ImdjbCIsdmVyc2lvbjoxfSxjPXZvaWQgMDt0cnl7Yz1BLmxvY2FsU3RvcmFnZS5nZXRJdGVtKCJfZ2NsX2xzIil9Y2F0Y2goZil7cmV0dXJuIHNiKCJUQUdHSU5HIiw0Nikse2Vycm9yOjEzfX10cnl7aWYoYyl7dmFyIGQ9SlNPTi5wYXJzZShjKTtpZihkJiZ0eXBlb2YgZD09PSJvYmplY3QiKWI9ZDtlbHNlIHJldHVybiBzYigiVEFHR0lORyIsNDcpLHtlcnJvcjoxMn19fWNhdGNoKGYpe3JldHVybiBzYigiVEFHR0lORyIsNDgpLHtlcnJvcjo4fX1pZihiLnNjaGVtYSE9PSJnY2wiKXJldHVybiBzYigiVEFHR0lORyIsNDkpLHtlcnJvcjo0fTsKaWYoYi52ZXJzaW9uIT09MSlyZXR1cm4gc2IoIlRBR0dJTkciLDUwKSx7ZXJyb3I6NX07dHJ5e3ZhciBlPXByKGIpO2EmJmUmJm1yKHt2YWx1ZTpiLGVycm9yOjB9KX1jYXRjaChmKXtyZXR1cm4gc2IoIlRBR0dJTkciLDQ4KSx7ZXJyb3I6OH19cmV0dXJue3ZhbHVlOmIsZXJyb3I6MH19CmZ1bmN0aW9uIHByKGEpe2lmKCFhfHx0eXBlb2YgYSE9PSJvYmplY3QiKXJldHVybiExO2lmKCJleHBpcmVzImluIGEmJiJ2YWx1ZSJpbiBhKXt2YXIgYjt0eXBlb2YgYS5leHBpcmVzPT09Im51bWJlciI/Yj1hLmV4cGlyZXM6Yj10eXBlb2YgYS5leHBpcmVzPT09InN0cmluZyI/TnVtYmVyKGEuZXhwaXJlcyk6TmFOO2lmKGlzTmFOKGIpfHwhKERhdGUubm93KCk8PWIpKXJldHVybiBhLnZhbHVlPW51bGwsYS5lcnJvcj05LHNiKCJUQUdHSU5HIiw1NCksITB9ZWxzZXtmb3IodmFyIGM9ITEsZD1tKE9iamVjdC5rZXlzKGEpKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSljPXByKGFbZS52YWx1ZV0pfHxjO3JldHVybiBjfXJldHVybiExfQpmdW5jdGlvbiBtcihhKXtpZihhLmVycm9yKXJldHVybiBhLmVycm9yO2lmKCFhLnZhbHVlKXJldHVybiBzYigiVEFHR0lORyIsNDIpLDI7dmFyIGI9YS52YWx1ZSxjO3RyeXtjPUpTT04uc3RyaW5naWZ5KGIpfWNhdGNoKGQpe3JldHVybiBzYigiVEFHR0lORyIsNTIpLDZ9dHJ5e0EubG9jYWxTdG9yYWdlLnNldEl0ZW0oIl9nY2xfbHMiLGMpfWNhdGNoKGQpe3JldHVybiBzYigiVEFHR0lORyIsNTMpLDd9cmV0dXJuIDB9O3ZhciBxcj17fSxycj0ocXIuZ2NsaWQ9ITAscXIuZGNsaWQ9ITAscXIuZ2JyYWlkPSEwLHFyLndicmFpZD0hMCxxciksc3I9L15cdyskLyx0cj0vXltcdy1dKyQvLHVyPXt9LHZyPSh1ci5hdz0iRlBHQ0xBVyIsdXIpLHdyPXt9LHhyPSh3ci5hZz0iX2FnIix3ci5nYj0iX2diIix3ci5hdz0iX2F3Iix3ci5kYz0iX2RjIix3ci5nZj0iX2dmIix3ci5oYT0iX2hhIix3ci5ncD0iX2dwIix3ci5ncz0iX2dzIix3cikseXI9L14oPzp3d3dcLik/Z29vZ2xlKD86XC5jb20/KT8oPzpcLlthLXpdezJ9dD8pPyQvLHpyPS9ed3d3XC5nb29nbGVhZHNlcnZpY2VzXC5jb20kLztmdW5jdGlvbiBBcigpe3JldHVyblsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdfWZ1bmN0aW9uIEJyKGEpe3JldHVybiFZZig1KXx8QmwoYSl9ZnVuY3Rpb24gQ3IoYSxiKXtmdW5jdGlvbiBjKCl7dmFyIGQ9QnIoYik7ZCYmYSgpO3JldHVybiBkfUhsKGZ1bmN0aW9uKCl7YygpfHxJbChjLGIpfSxiKX0KZnVuY3Rpb24gRHIoYSl7cmV0dXJuIEVyKGEpLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYi5nY2xpZH0pfWZ1bmN0aW9uIEZyKGEpe3JldHVybiBHcihhKS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGIuZ2NsaWR9KS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIuZ2NsaWR9KX1mdW5jdGlvbiBHcihhLGIpe2I9Yj09PXZvaWQgMD8hMTpiO3ZhciBjPUhyKGEucHJlZml4KSxkPUlyKCJnYiIsYyksZT1JcigiYWciLGMpO2lmKCFlfHwhZClyZXR1cm5bXTt2YXIgZj1mdW5jdGlvbihsKXtyZXR1cm4gZnVuY3Rpb24obil7bi56Zz1sO3JldHVybiBufX0sZz1FcihkLGIpLm1hcChmKCJnYiIpKSxoPUpyKGUpLm1hcChmKCJhZyIpKTtyZXR1cm4gZy5jb25jYXQoaCkuc29ydChmdW5jdGlvbihsLG4pe3JldHVybiBuLnRpbWVzdGFtcC1sLnRpbWVzdGFtcH0pfQpmdW5jdGlvbiBLcihhLGIsYyxkLGUpe3ZhciBmPUNiKGEsZnVuY3Rpb24oZyl7cmV0dXJuIGcuZ2NsaWQ9PT1ifSk7Zj8oZi50aW1lc3RhbXA8YyYmKGYudGltZXN0YW1wPWMsZi5vZD1lKSxmLmxhYmVscz1McihmLmxhYmVsc3x8W10sZHx8W10pKTphLnB1c2goe3ZlcnNpb246IjIiLGdjbGlkOmIsdGltZXN0YW1wOmMsbGFiZWxzOmQsb2Q6ZX0pfWZ1bmN0aW9uIE1yKGEpe2Zvcih2YXIgYj13cShhLDUpfHxbXSxjPVtdLGQ9bShiKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9ZS52YWx1ZSxnPWYsaD1OcihmKTtoJiZLcihjLGcuayxoLGcuYnx8W10sZi51KX1yZXR1cm4gYy5zb3J0KGZ1bmN0aW9uKGwsbil7cmV0dXJuIG4udGltZXN0YW1wLWwudGltZXN0YW1wfSl9CmZ1bmN0aW9uIEVyKGEsYil7Yj1iPT09dm9pZCAwPyExOmI7dmFyIGM9W107T3IoYyxhLDEpO2lmKGIpaWYoVGIoYSwiX2F3Iikpe3ZhciBkPVByKCk7ZCYmKGQub2Q9dm9pZCAwLGQub2E9ZC5vYXx8WzJdLFFyKGMsZCkpO09yKGMsImdjbF9hdyIsMil9ZWxzZSBUYihhLCJfZ2IiKSYmWWYoNikmJk9yKGMsImdjbF9nYiIsMik7Yy5zb3J0KGZ1bmN0aW9uKGUsZil7cmV0dXJuIGYudGltZXN0YW1wLWUudGltZXN0YW1wfSk7cmV0dXJuIFJyKGMpfWZ1bmN0aW9uIFNyKGEsYil7Zm9yKHZhciBjPVtdLGQ9bShhKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9ZS52YWx1ZTtjLmluY2x1ZGVzKGYpfHxjLnB1c2goZil9Zm9yKHZhciBnPW0oYiksaD1nLm5leHQoKTshaC5kb25lO2g9Zy5uZXh0KCkpe3ZhciBsPWgudmFsdWU7Yy5pbmNsdWRlcyhsKXx8Yy5wdXNoKGwpfXJldHVybiBjfQpmdW5jdGlvbiBRcihhLGIsYyl7Yz1jPT09dm9pZCAwPyExOmM7Zm9yKHZhciBkLGUsZj1tKGEpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1nLnZhbHVlO2lmKGguZ2NsaWQ9PT1iLmdjbGlkKXtkPWg7YnJlYWt9aC5xYSYmYi5xYSYmaC5xYS5lcXVhbHMoYi5xYSkmJihlPWgpfWlmKGQpe3ZhciBsLG4scD0obD1kLnFhKSE9bnVsbD9sOm5ldyBlcixxPShuPWIucWEpIT1udWxsP246bmV3IGVyO3AudmFsdWV8PXEudmFsdWU7ZC5xYT1wO2QudGltZXN0YW1wPGIudGltZXN0YW1wJiYoZC50aW1lc3RhbXA9Yi50aW1lc3RhbXAsZC5vZD1iLm9kKTtkLmxhYmVscz1TcihkLmxhYmVsc3x8W10sYi5sYWJlbHN8fFtdKTtkLm9hPVNyKGQub2F8fFtdLGIub2F8fFtdKX1lbHNlIGMmJmU/bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCxlLGIpOmEucHVzaChiKX0KZnVuY3Rpb24gVHIoYSl7aWYoIWEpcmV0dXJuIG5ldyBlcjt2YXIgYj1uZXcgZXI7aWYoYT09PTEpcmV0dXJuIGZyKGIsMiksZnIoYiwzKSxiO2ZyKGIsYSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIFByKCl7dmFyIGE9bnIoImdjbGlkIik7aWYoIWF8fGEuZXJyb3J8fCFhLnZhbHVlfHx0eXBlb2YgYS52YWx1ZSE9PSJvYmplY3QiKXJldHVybiBudWxsO3ZhciBiPWEudmFsdWU7dHJ5e2lmKCEoInZhbHVlImluIGImJmIudmFsdWUpfHx0eXBlb2YgYi52YWx1ZSE9PSJvYmplY3QiKXJldHVybiBudWxsO3ZhciBjPWIudmFsdWUsZD1jLnZhbHVlO2lmKCFkfHwhZC5tYXRjaCh0cikpcmV0dXJuIG51bGw7dmFyIGU9Yy5saW5rRGVjb3JhdGlvblNvdXJjZSxmPWMubGlua0RlY29yYXRpb25Tb3VyY2VzLGc9bmV3IGVyO3R5cGVvZiBlPT09Im51bWJlciI/Zz1UcihlKTp0eXBlb2YgZj09PSJudW1iZXIiJiYoZy52YWx1ZT1mKTtyZXR1cm57dmVyc2lvbjoiIixnY2xpZDpkLHRpbWVzdGFtcDpOdW1iZXIoYy5jcmVhdGlvblRpbWVNcyl8fDAsbGFiZWxzOltdLHFhOmcsb2E6WzJdfX1jYXRjaChoKXtyZXR1cm4gbnVsbH19CmZ1bmN0aW9uIFVyKGEpe3ZhciBiPW5yKGEpO2lmKGIuZXJyb3IhPT0wKXJldHVybiBudWxsO3RyeXtyZXR1cm4gYi52YWx1ZS5yZWR1Y2UoZnVuY3Rpb24oYyxkKXtpZighZC52YWx1ZXx8dHlwZW9mIGQudmFsdWUhPT0ib2JqZWN0IilyZXR1cm4gYzt2YXIgZT1kLnZhbHVlLGY9ZS52YWx1ZTtpZighZnx8IWYubWF0Y2godHIpKXJldHVybiBjO3ZhciBnPW5ldyBlcixoPWUubGlua0RlY29yYXRpb25Tb3VyY2VzO3R5cGVvZiBoPT09Im51bWJlciImJihnLnZhbHVlPWgpO3ZhciBsO2MucHVzaCh7dmVyc2lvbjoiIixnY2xpZDpmLHRpbWVzdGFtcDpOdW1iZXIoZS5jcmVhdGlvblRpbWVNcyl8fDAsZXhwaXJlczpOdW1iZXIoZC5leHBpcmVzKXx8MCxsYWJlbHM6KGw9ZS5sYWJlbHMpIT1udWxsP2w6W10scWE6ZyxvYTpbMl19KTtyZXR1cm4gY30sW10pfWNhdGNoKGMpe3JldHVybiBudWxsfX0KZnVuY3Rpb24gT3IoYSxiLGMpe2lmKGM9PT0xKWZvcih2YXIgZD1jcShiLEIuY29va2llLHZvaWQgMCxBcigpKSxlPW0oZCksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPVZyKGYudmFsdWUuc3BsaXQoIi4iKSksaD1nLmxlbmd0aD09PTA/bnVsbDp7dmVyc2lvbjpnWzBdLGdjbGlkOmdbMl0sdGltZXN0YW1wOihOdW1iZXIoZ1sxXSl8fDApKjFFMyxsYWJlbHM6Zy5zbGljZSgzKX07aCE9bnVsbCYmKGgub2Q9dm9pZCAwLGgucWE9bmV3IGVyLGgub2E9W2NdLFFyKGEsaCkpfWVsc2UgaWYoYz09PTIpe3ZhciBsPVVyKGIpO2lmKGwpZm9yKHZhciBuPW0obCkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpe3ZhciBxPXAudmFsdWU7cS5vZD12b2lkIDA7cS5vYT1xLm9hO1FyKGEscSl9fX0KZnVuY3Rpb24gWnIoYSl7dmFyIGI9RXIoYSksYz1VcigiZ2NsX2RjIik7aWYoYylmb3IodmFyIGQ9bShjKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSl7dmFyIGY9ZS52YWx1ZTtmLm9kPXZvaWQgMDtmLm9hPWYub2F8fFsyXTtRcihiLGYpfWIuc29ydChmdW5jdGlvbihnLGgpe3ZhciBsPWcub2EmJmcub2EuaW5jbHVkZXMoMSksbj1oLm9hJiZoLm9hLmluY2x1ZGVzKDEpO3JldHVybiBsJiYhbj8tMTohbCYmbj8xOmgudGltZXN0YW1wLWcudGltZXN0YW1wfSk7cmV0dXJuIFJyKGIpfWZ1bmN0aW9uIEpyKGEpe3JldHVybiBNcihhKS5tYXAoZnVuY3Rpb24oYil7Yi5xYT1uZXcgZXI7Yi5vYT1bMV07cmV0dXJuIGJ9KX0KZnVuY3Rpb24gTHIoYSxiKXtpZighYS5sZW5ndGgpcmV0dXJuIGI7aWYoIWIubGVuZ3RoKXJldHVybiBhO3ZhciBjPXt9O3JldHVybiBhLmNvbmNhdChiKS5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGMuaGFzT3duUHJvcGVydHkoZCk/ITE6Y1tkXT0hMH0pfWZ1bmN0aW9uIEhyKGEpe3JldHVybiBhJiZ0eXBlb2YgYT09PSJzdHJpbmciJiZhLm1hdGNoKHNyKT9hOiJfZ2NsIn1mdW5jdGlvbiAkcihhLGIpe2lmKGEpe3ZhciBjPXt2YWx1ZTphLHFhOm5ldyBlcn07ZnIoYy5xYSxiKTtyZXR1cm4gY319CmZ1bmN0aW9uIGFzKGEsYixjKXt2YXIgZD1SaihhKSxlPUxqKGQsInF1ZXJ5IiwhMSx2b2lkIDAsImdjbHNyYyIpLGY9JHIoTGooZCwicXVlcnkiLCExLHZvaWQgMCwiZ2NsaWQiKSxjPzQ6Mik7aWYoYiYmKCFmfHwhZSkpe3ZhciBnPWQuaGFzaC5yZXBsYWNlKCIjIiwiIik7Znx8KGY9JHIoSWooZywiZ2NsaWQiLCExKSwzKSk7ZXx8KGU9SWooZywiZ2Nsc3JjIiwhMSkpfXJldHVybiBmJiYoZT09PXZvaWQgMHx8ZT09PSJhdyJ8fGU9PT0iYXcuZHMifHxZZig4KSYmZT09PSJhdy5kdiIpP1tmXTpbXX0KZnVuY3Rpb24gYnMoYSxiKXt2YXIgYz1SaihhKSxkPUxqKGMsInF1ZXJ5IiwhMSx2b2lkIDAsImdjbGlkIiksZT1MaihjLCJxdWVyeSIsITEsdm9pZCAwLCJnY2xzcmMiKSxmPUxqKGMsInF1ZXJ5IiwhMSx2b2lkIDAsIndicmFpZCIpO2Y9JGIoZik7dmFyIGc9TGooYywicXVlcnkiLCExLHZvaWQgMCwiZ2JyYWlkIiksaD1MaihjLCJxdWVyeSIsITEsdm9pZCAwLCJnYWRfc291cmNlIiksbD1MaihjLCJxdWVyeSIsITEsdm9pZCAwLCJkY2xpZCIpO2lmKGImJiEoZCYmZSYmZiYmZykpe3ZhciBuPWMuaGFzaC5yZXBsYWNlKCIjIiwiIik7ZD1kfHxJaihuLCJnY2xpZCIsITEpO2U9ZXx8SWoobiwiZ2Nsc3JjIiwhMSk7Zj1mfHxJaihuLCJ3YnJhaWQiLCExKTtnPWd8fElqKG4sImdicmFpZCIsITEpO2g9aHx8SWoobiwiZ2FkX3NvdXJjZSIsITEpfXJldHVybiBjcyhkLGUsbCxmLGcsaCl9CmZ1bmN0aW9uIGRzKGEsYixjKXt2YXIgZD1SaihhKSxlPUxqKGQsInF1ZXJ5IiwhMSx2b2lkIDAsImdjbHNyYyIpLGY9JHIoTGooZCwicXVlcnkiLCExLHZvaWQgMCwiZ2NsaWQiKSxjPzQ6MiksZz0kcihMaihkLCJxdWVyeSIsITEsdm9pZCAwLCJkY2xpZCIpLGM/NDoyKTtpZihiJiYoIWV8fCFmKSl7dmFyIGg9ZC5oYXNoLnJlcGxhY2UoIiMiLCIiKTtmfHwoZj0kcihJaihoLCJnY2xpZCIsITEpLDMpKTtlfHwoZT1JaihoLCJnY2xzcmMiLCExKSl9cmV0dXJuIGYmJmUmJihlPT09ImF3LmRzInx8ZT09PSJhdy5kdiJ8fGU9PT0iM3AuZHMifHxlPT09ImRzIik/W2ZdOmc/W2ddOltdfWZ1bmN0aW9uIGVzKCl7cmV0dXJuIGJzKEEubG9jYXRpb24uaHJlZiwhMCl9CmZ1bmN0aW9uIGNzKGEsYixjLGQsZSxmKXt2YXIgZz17fSxoPWZ1bmN0aW9uKGwsbil7Z1tuXXx8KGdbbl09W10pO2dbbl0ucHVzaChsKX07Zy5nY2xpZD1hO2cuZ2Nsc3JjPWI7Zy5kY2xpZD1jO2lmKGEhPT12b2lkIDAmJmEubWF0Y2godHIpKXN3aXRjaChiKXtjYXNlIHZvaWQgMDpoKGEsImF3Iik7YnJlYWs7Y2FzZSAiYXcuZHMiOmgoYSwiYXciKTtoKGEsImRjIik7YnJlYWs7Y2FzZSAiYXcuZHYiOllmKDgpJiYoaChhLCJhdyIpLGgoYSwiZGMiKSk7YnJlYWs7Y2FzZSAiZHMiOmgoYSwiZGMiKTticmVhaztjYXNlICIzcC5kcyI6aChhLCJkYyIpO2JyZWFrO2Nhc2UgImdmIjpoKGEsImdmIik7YnJlYWs7Y2FzZSAiaGEiOmgoYSwiaGEiKX1jJiZoKGMsImRjIik7ZCE9PXZvaWQgMCYmdHIudGVzdChkKSYmKGcud2JyYWlkPWQsaChkLCJnYiIpKTtlIT09dm9pZCAwJiZ0ci50ZXN0KGUpJiYoZy5nYnJhaWQ9ZSxoKGUsImFnIikpO2YhPT12b2lkIDAmJnRyLnRlc3QoZikmJihnLmdhZF9zb3VyY2U9CmYsaChmLCJncyIpKTtyZXR1cm4gZ31mdW5jdGlvbiBmcygpe2Zvcih2YXIgYT1lcygpLGI9ITAsYz1tKE9iamVjdC5rZXlzKGEpKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSlpZihhW2QudmFsdWVdIT09dm9pZCAwKXtiPSExO2JyZWFrfWImJihhPWJzKEEuZG9jdW1lbnQucmVmZXJyZXIsITEpLGEuZ2FkX3NvdXJjZT12b2lkIDApO3JldHVybiBhfWZ1bmN0aW9uIGdzKGEpe3ZhciBiPWZzKCk7aHMoYiwhMSxhKX0KZnVuY3Rpb24gaXMoYSl7dmFyIGI9YXMoQS5sb2NhdGlvbi5ocmVmLCEwLCExKTtiLmxlbmd0aHx8KGI9YXMoQS5kb2N1bWVudC5yZWZlcnJlciwhMSwhMCkpO2E9YXx8e307anMoYSk7aWYoYi5sZW5ndGgpe3ZhciBjPWJbMF0sZD1OYigpLGU9dXEoYSxkLCEwKSxmPUFyKCksZz1mdW5jdGlvbigpe0JyKGYpJiZlLmV4cGlyZXMhPT12b2lkIDAmJmtyKCJnY2xpZCIse3ZhbHVlOnt2YWx1ZTpjLnZhbHVlLGNyZWF0aW9uVGltZU1zOmQsbGlua0RlY29yYXRpb25Tb3VyY2VzOmMucWEuZ2V0KCl9LGV4cGlyZXM6TnVtYmVyKGUuZXhwaXJlcyl9KX07SGwoZnVuY3Rpb24oKXtnKCk7QnIoZil8fElsKGcsZil9LGYpfX0KZnVuY3Rpb24ganMoYSl7dmFyIGI9Qi5yZWZlcnJlcj9MaihSaihCLnJlZmVycmVyKSwiaG9zdCIpOiIiO2lmKHlyLnRlc3QoYil8fHpyLnRlc3QoYil8fGtzKCkpe3ZhciBjO2E6e2Zvcih2YXIgZD1SaihBLmxvY2F0aW9uLmhyZWYpLGU9SmooTGooZCwicXVlcnkiKSksZj1tKE9iamVjdC5rZXlzKGUpKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9Zy52YWx1ZTtpZighcnJbaF0pe3ZhciBsPWVbaF1bMF18fCIiLG47aWYoIWx8fGwubGVuZ3RoPDUwfHxsLmxlbmd0aD4yMDApbj0hMTtlbHNle3ZhciBwPWdyKGwpLHE7aWYocCljOnt2YXIgcj1wO2lmKHImJnIubGVuZ3RoIT09MCl7dmFyIHQ9MDt0cnl7Zm9yKHZhciB1PTEwO3Q8ci5sZW5ndGgmJiEodS0tPD0wKTspe3ZhciB2PWhyKHIsdCk7aWYodj09PXZvaWQgMClicmVhazt2YXIgeD1tKHYpLHk9eC5uZXh0KCkudmFsdWUsej14Lm5leHQoKS52YWx1ZSxDPXksRD16LEk9QyY3O2lmKEM+PjM9PT0xNjM4Mil7aWYoSSE9PQowKWJyZWFrO3ZhciBHPWhyKHIsRCk7aWYoRz09PXZvaWQgMClicmVhaztxPW0oRykubmV4dCgpLnZhbHVlPT09MTticmVhayBjfXZhciBOO2Q6e3ZhciBTPXZvaWQgMCxXPXIsZWE9RDtzd2l0Y2goSSl7Y2FzZSAwOk49KFM9aHIoVyxlYSkpPT1udWxsP3ZvaWQgMDpTWzFdO2JyZWFrIGQ7Y2FzZSAxOk49ZWErODticmVhayBkO2Nhc2UgMjp2YXIgamE9aHIoVyxlYSk7aWYoamE9PT12b2lkIDApYnJlYWs7dmFyIGZhPW0oamEpLHNhPWZhLm5leHQoKS52YWx1ZTtOPWZhLm5leHQoKS52YWx1ZStzYTticmVhayBkO2Nhc2UgNTpOPWVhKzQ7YnJlYWsgZH1OPXZvaWQgMH1pZihOPT09dm9pZCAwfHxOPnIubGVuZ3RofHxOPD10KWJyZWFrO3Q9Tn19Y2F0Y2gobWEpe319cT0hMX1lbHNlIHE9ITE7bj1xfWlmKG4pe2M9bDticmVhayBhfX19Yz12b2lkIDB9dmFyIGRhPWM7ZGEmJmxzKCJnY2xfYXciLGRhLDcsYSl9fQpmdW5jdGlvbiBscyhhLGIsYyxkKXttcyhhLFt7dmVyc2lvbjoiIixnY2xpZDpiLHRpbWVzdGFtcDpOYigpLHFhOlRyKGMpfV0sZCl9CmZ1bmN0aW9uIG1zKGEsYixjKXtjPWN8fHt9O3ZhciBkPUFyKCksZT1mdW5jdGlvbigpe2lmKEJyKGQpJiZiLmxlbmd0aD4wKXt2YXIgZj1VcihhKXx8W107Yi5mb3JFYWNoKGZ1bmN0aW9uKGcpe3ZhciBoPXVxKGMsZy50aW1lc3RhbXAsITApO2guZXhwaXJlcyE9PXZvaWQgMCYmUXIoZix7dmVyc2lvbjoiIixnY2xpZDpnLmdjbGlkLHRpbWVzdGFtcDpnLnRpbWVzdGFtcCxleHBpcmVzOk51bWJlcihoLmV4cGlyZXMpLHFhOmcucWEsbGFiZWxzOmcubGFiZWxzfSwhMCl9KTtmLmxlbmd0aCYma3IoYSxmLm1hcChmdW5jdGlvbihnKXt2YXIgaD17dmFsdWU6Zy5nY2xpZCxjcmVhdGlvblRpbWVNczpnLnRpbWVzdGFtcCxsaW5rRGVjb3JhdGlvblNvdXJjZXM6Zy5xYT9nLnFhLmdldCgpOjB9LGw7aWYoKGw9Zy5sYWJlbHMpPT1udWxsPzA6bC5sZW5ndGgpaC5sYWJlbHM9Zy5sYWJlbHM7cmV0dXJue3ZhbHVlOmgsZXhwaXJlczpOdW1iZXIoZy5leHBpcmVzKX19KSl9fTtIbChmdW5jdGlvbigpe0JyKGQpPwplKCk6SWwoZSxkKX0sZCl9CmZ1bmN0aW9uIGhzKGEsYixjLGQsZSl7Yz1jfHx7fTtlPWV8fFtdO3ZhciBmPUhyKGMucHJlZml4KSxnPWR8fE5iKCksaD1NYXRoLnJvdW5kKGcvMUUzKSxsPUFyKCksbj0hMSxwPSExLHE9WWYoOSkscj1mdW5jdGlvbigpe2lmKEJyKGwpKXt2YXIgdD11cShjLGcsITApO3QuTWM9bDtmb3IodmFyIHU9ZnVuY3Rpb24oVyxlYSl7dmFyIGphPUlyKFcsZik7amEmJihvcShqYSxlYSx0KSxXIT09ImdiIiYmKG49ITApKX0sdj1mdW5jdGlvbihXKXt2YXIgZWE9WyJHQ0wiLGgsV107ZS5sZW5ndGg+MCYmZWEucHVzaChlLmpvaW4oIi4iKSk7cmV0dXJuIGVhLmpvaW4oIi4iKX0seD1tKFsiYXciLCJkYyIsImdmIiwiaGEiLCJncCJdKSx5PXgubmV4dCgpOyF5LmRvbmU7eT14Lm5leHQoKSl7dmFyIHo9eS52YWx1ZTthW3pdJiZ1KHosdihhW3pdWzBdKSl9aWYoKCFufHxxKSYmYS5nYil7dmFyIEM9YS5nYlswXSxEPUlyKCJnYiIsZik7IWImJkVyKEQpLnNvbWUoZnVuY3Rpb24oVyl7cmV0dXJuIFcuZ2NsaWQ9PT1DJiYKVy5sYWJlbHMmJlcubGFiZWxzLmxlbmd0aD4wfSl8fHUoImdiIix2KEMpKX19aWYoIXAmJmEuZ2JyYWlkJiZCcigiYWRfc3RvcmFnZSIpJiYocD0hMCwhbnx8cSkpe3ZhciBJPWEuZ2JyYWlkLEc9SXIoImFnIixmKTtpZihifHwhSnIoRykuc29tZShmdW5jdGlvbihXKXtyZXR1cm4gVy5nY2xpZD09PUkmJlcubGFiZWxzJiZXLmxhYmVscy5sZW5ndGg+MH0pKXt2YXIgTj17fSxTPShOLms9SSxOLmk9IiIraCxOLmI9ZSxOKTtBcShHLFMsNSxjLGcpfX1ucyhhLGYsZyxjKX07SGwoZnVuY3Rpb24oKXtyKCk7QnIobCl8fElsKHIsbCl9LGwpfQpmdW5jdGlvbiBucyhhLGIsYyxkKXtpZihhLmdhZF9zb3VyY2UhPT12b2lkIDAmJkJyKCJhZF9zdG9yYWdlIikpe3ZhciBlPXFkKCk7aWYoZSE9PSJyIiYmZSE9PSJoIil7dmFyIGY9YS5nYWRfc291cmNlLGc9SXIoImdzIixiKTtpZihnKXt2YXIgaD1NYXRoLmZsb29yKChOYigpLShwZCgpfHwwKSkvMUUzKSxsLG49aXIoKSxwPXt9O2w9KHAuaz1mLHAuaT0iIitoLHAudT1uLHApO0FxKGcsbCw1LGQsYyl9fX19ZnVuY3Rpb24gb3MoYSxiLGMpe2Zvcih2YXIgZD13cShiLGMpLGU9MDtlPGQubGVuZ3RoOysrZSlpZihOcihkW2VdKT5hKXJldHVybiEwO3JldHVybiExfQpmdW5jdGlvbiBwcyhhKXt2YXIgYj1xcyxjPXJzKGEucHJlZml4KTtDcihmdW5jdGlvbigpe2Zvcih2YXIgZD1IcihhLnByZWZpeCksZT1tKGIpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlLGg9Y1tnXTtpZihoKXt2YXIgbD1NYXRoLm1pbihzcyhoKSxOYigpKSxuPXVxKGEsbCwhMCk7bi5NYz1BcigpO3ZhciBwPUlyKGcsZCk7cCYmb3EocCxoLG4pfX12YXIgcT1VcSghMCk7aHMoY3MocS5nY2xpZCxxLmdjbHNyYyksITEsYSl9LEFyKCkpfQpmdW5jdGlvbiBycyhhKXt2YXIgYj1VcSghMCksYz1IcihhKSxkPXt9LGU7Zm9yKGUgaW4geHIpaWYoeHIuaGFzT3duUHJvcGVydHkoZSkpe3ZhciBmPWUsZz1JcihmLGMpO2lmKGchPT12b2lkIDApe3ZhciBoPWJbZ107aWYoaCl7dmFyIGw9c3MoaCksbjthOntmb3IodmFyIHA9TWF0aC5taW4obCxOYigpKXx8TmIoKSxxPWNxKGcsQi5jb29raWUsdm9pZCAwLEFyKCkpLHI9MDtyPHEubGVuZ3RoOysrcilpZihzcyhxW3JdKT5wKXtuPSEwO2JyZWFrIGF9bj0hMX1ufHwoZFtmXT1oKX19fXJldHVybiBkfQpmdW5jdGlvbiB0cyhhKXt2YXIgYj1bImFnIl0sYz1VcSghMCksZD1IcihhLnByZWZpeCk7Q3IoZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPGIubGVuZ3RoOysrZSl7dmFyIGY9SXIoYltlXSxkKTtpZihmKXt2YXIgZz1jW2ZdO2lmKGcpe3ZhciBoPSRwKGcsNSk7aWYoaCl7dmFyIGw9TnIoaCk7bHx8KGw9TmIoKSk7aWYob3MobCxmLDUpKWJyZWFrO2guaT0iIitNYXRoLnJvdW5kKGwvMUUzKTtBcShmLGgsNSxhLGwpfX19fX0sWyJhZF9zdG9yYWdlIl0pfWZ1bmN0aW9uIElyKGEsYil7dmFyIGM9eHJbYV07aWYoYyE9PXZvaWQgMClyZXR1cm4gYitjfWZ1bmN0aW9uIHNzKGEpe3JldHVybiBWcihhLnNwbGl0KCIuIikpLmxlbmd0aCE9PTA/KE51bWJlcihhLnNwbGl0KCIuIilbMV0pfHwwKSoxRTM6MH1mdW5jdGlvbiBOcihhKXtyZXR1cm4gYT8oTnVtYmVyKGEuaSl8fDApKjFFMzowfQpmdW5jdGlvbiBWcihhKXtyZXR1cm4gYS5sZW5ndGg8M3x8YVswXSE9PSJHQ0wiJiZhWzBdIT09IjEifHwhL15cZCskLy50ZXN0KGFbMV0pfHwhdHIudGVzdChhWzJdKT9bXTphfWZ1bmN0aW9uIHVzKGEsYixjLGQpe3ZhciBlPXFzO2lmKEFycmF5LmlzQXJyYXkoYSkmJlNwKEEpKXt2YXIgZj1IcihkKSxnPWZ1bmN0aW9uKCl7Zm9yKHZhciBoPXt9LGw9MDtsPGUubGVuZ3RoOysrbCl7dmFyIG49SXIoZVtsXSxmKTtpZihuKXt2YXIgcD1jcShuLEIuY29va2llLHZvaWQgMCxBcigpKTtwLmxlbmd0aCYmKGhbbl09cC5zb3J0KClbcC5sZW5ndGgtMV0pfX1yZXR1cm4gaH07Q3IoZnVuY3Rpb24oKXthcihnLGEsYixjKX0sQXIoKSl9fQpmdW5jdGlvbiB2cyhhLGIsYyl7dmFyIGQ9cXM7aWYoWWYoMTMpJiZBcnJheS5pc0FycmF5KGEpJiZTcChBKSl7dmFyIGU9ZnVuY3Rpb24oKXtmb3IodmFyIGY9e30sZz0wO2c8ZC5sZW5ndGg7KytnKXt2YXIgaD12cltkW2ddXTtpZihoKXt2YXIgbD1jcShoLEIuY29va2llLHZvaWQgMCxBcigpKTtpZihsLmxlbmd0aCl7Zm9yKHZhciBuPXZvaWQgMCxwPTAscT1tKGwpLHI9cS5uZXh0KCk7IXIuZG9uZTtyPXEubmV4dCgpKXt2YXIgdD1yLnZhbHVlLHU9JHAodCw0KTtpZih1JiYodS5tPT09IjEifHxZZigxNikpKXt2YXIgdj1Ocih1KTt2Pj1wJiYocD12LG49dCl9fW4mJihmW2hdPW4pfX19cmV0dXJuIGZ9O0NyKGZ1bmN0aW9uKCl7YXIoZSxhLGIsYyl9LEFyKCkpfX0KZnVuY3Rpb24gd3MoYSxiLGMsZCl7aWYoQXJyYXkuaXNBcnJheShhKSYmU3AoQSkpe3ZhciBlPVsiYWciXSxmPUhyKGQpLGc9ZnVuY3Rpb24oKXtmb3IodmFyIGg9e30sbD0wO2w8ZS5sZW5ndGg7KytsKXt2YXIgbj1JcihlW2xdLGYpO2lmKCFuKXJldHVybnt9O3ZhciBwPXdxKG4sNSk7aWYocC5sZW5ndGgpe3ZhciBxPXAuc29ydChmdW5jdGlvbihyLHQpe3JldHVybiBOcih0KS1OcihyKX0pWzBdO2hbbl09YXEocSw1KX19cmV0dXJuIGh9O0NyKGZ1bmN0aW9uKCl7YXIoZyxhLGIsYyl9LFsiYWRfc3RvcmFnZSJdKX19ZnVuY3Rpb24gUnIoYSl7cmV0dXJuIGEuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiB0ci50ZXN0KGIuZ2NsaWQpfSl9CmZ1bmN0aW9uIHhzKGEsYil7aWYoU3AoQSkpe2Zvcih2YXIgYz1IcihiLnByZWZpeCksZD17fSxlPTA7ZTxhLmxlbmd0aDtlKyspeHJbYVtlXV0mJihkW2FbZV1dPXhyW2FbZV1dKTtDcihmdW5jdGlvbigpe0diKGQsZnVuY3Rpb24oZixnKXt2YXIgaD1jcShjK2csQi5jb29raWUsdm9pZCAwLEFyKCkpO2guc29ydChmdW5jdGlvbih0LHUpe3JldHVybiBzcyh1KS1zcyh0KX0pO2lmKGgubGVuZ3RoKXt2YXIgbD1oWzBdLG49c3MobCkscD1WcihsLnNwbGl0KCIuIikpLmxlbmd0aCE9PTA/bC5zcGxpdCgiLiIpLnNsaWNlKDMpOltdLHE9e30scjtyPVZyKGwuc3BsaXQoIi4iKSkubGVuZ3RoIT09MD9sLnNwbGl0KCIuIilbMl06dm9pZCAwO3FbZl09W3JdO2hzKHEsITAsYixuLHApfX0pfSxBcigpKX19CmZ1bmN0aW9uIHlzKGEpe3ZhciBiPVsiYWciXSxjPVsiZ2JyYWlkIl07Q3IoZnVuY3Rpb24oKXtmb3IodmFyIGQ9SHIoYS5wcmVmaXgpLGU9MDtlPGIubGVuZ3RoOysrZSl7dmFyIGY9SXIoYltlXSxkKTtpZighZilicmVhazt2YXIgZz13cShmLDUpO2lmKGcubGVuZ3RoKXt2YXIgaD1nLnNvcnQoZnVuY3Rpb24ocSxyKXtyZXR1cm4gTnIociktTnIocSl9KVswXSxsPU5yKGgpLG49aC5iLHA9e307cFtjW2VdXT1oLms7aHMocCwhMCxhLGwsbil9fX0sWyJhZF9zdG9yYWdlIl0pfWZ1bmN0aW9uIHpzKGEsYil7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2MpaWYoYVtiW2NdXSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gQXMoYSl7ZnVuY3Rpb24gYihoLGwsbil7biYmKGhbbF09bil9aWYoRWwoKSl7dmFyIGM9ZXMoKSxkO2EuaW5jbHVkZXMoImdhZF9zb3VyY2UiKSYmKGQ9Yy5nYWRfc291cmNlIT09dm9pZCAwP2MuZ2FkX3NvdXJjZTpVcSghMSkuX2dzKTtpZih6cyhjLGEpfHxkKXt2YXIgZT17fTtiKGUsImdjbGlkIixjLmdjbGlkKTtiKGUsImRjbGlkIixjLmRjbGlkKTtiKGUsImdjbHNyYyIsYy5nY2xzcmMpO2IoZSwid2JyYWlkIixjLndicmFpZCk7YihlLCJnYnJhaWQiLGMuZ2JyYWlkKTticihmdW5jdGlvbigpe3JldHVybiBlfSwzKTt2YXIgZj17fSxnPShmLl91cD0iMSIsZik7YihnLCJfZ3MiLGQpO2JyKGZ1bmN0aW9uKCl7cmV0dXJuIGd9LDEpfX19ZnVuY3Rpb24ga3MoKXt2YXIgYT1SaihBLmxvY2F0aW9uLmhyZWYpO3JldHVybiBMaihhLCJxdWVyeSIsITEsdm9pZCAwLCJnYWRfc291cmNlIil9CmZ1bmN0aW9uIEJzKGEpe2lmKCFZZigxKSlyZXR1cm4gbnVsbDt2YXIgYj1VcSghMCkuZ2FkX3NvdXJjZTtpZihiIT1udWxsKXJldHVybiBBLmxvY2F0aW9uLmhhc2g9IiIsYjtpZihZZigyKSl7Yj1rcygpO2lmKGIhPW51bGwpcmV0dXJuIGI7dmFyIGM9ZXMoKTtpZih6cyhjLGEpKXJldHVybiIwIn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBDcyhhKXt2YXIgYj1CcyhhKTtiIT1udWxsJiZicihmdW5jdGlvbigpe3ZhciBjPXt9O3JldHVybiBjLmdhZF9zb3VyY2U9YixjfSw0KX0KZnVuY3Rpb24gRHMoYSxiLGMpe3ZhciBkPVtdO2lmKGIubGVuZ3RoPT09MClyZXR1cm4gZDtmb3IodmFyIGU9e30sZj0wO2Y8Yi5sZW5ndGg7ZisrKXt2YXIgZz1iW2ZdLGg9Zy56Zz9nLnpnOiJnY2wiO2lmKChnLmxhYmVsc3x8W10pLmluZGV4T2YoYyk9PT0tMSl7YS5wdXNoKDApO3ZhciBsPSExLG49dm9pZCAwO2lmKChuPWcub2EpPT1udWxsPzA6bi5pbmNsdWRlcygyKSlsPSEwO3ZhciBwPXZvaWQgMDsoKHA9Zy5vYSk9PW51bGw/MDpwLmluY2x1ZGVzKDEpKSYmIWVbaF0mJihsPSEwLGVbaF09ITApO2wmJmQucHVzaChnKX1lbHNle2EucHVzaCgxKTt2YXIgcT12b2lkIDA7aWYoKHE9Zy5vYSk9PW51bGw/MDpxLmluY2x1ZGVzKDEpKWVbaF09ITB9fXJldHVybiBkfQpmdW5jdGlvbiBFcyhhLGIsYyxkLGUpe2U9ZT09PXZvaWQgMD8hMTplO3ZhciBmPVtdO2M9Y3x8e307aWYoIUJyKEFyKCkpKXJldHVybiBmO3ZhciBnPUVyKGEsZSksaD1EcyhmLGcsYik7aWYoaC5sZW5ndGgmJiFkKXtmb3IodmFyIGw9W10sbj0hMSxwPW0oaCkscT1wLm5leHQoKTshcS5kb25lO3E9cC5uZXh0KCkpe3ZhciByPXEudmFsdWUsdD1yLHU9dC52ZXJzaW9uLHY9dC5nY2xpZCx4PXQudGltZXN0YW1wLHk9dC5vYSx6PSh0LmxhYmVsc3x8W10pLmNvbmNhdChbYl0pLEM9dm9pZCAwO2lmKCgoQz15KT09bnVsbD8wOkMuaW5jbHVkZXMoMSkpJiYhbil7dmFyIEQ9W3UsTWF0aC5yb3VuZCh4LzFFMyksdl0uY29uY2F0KHopLmpvaW4oIi4iKSxJPXVxKGMseCwhMCk7SS5NYz1BcigpO29xKGEsRCxJKTtuPSEwfXZhciBHPXZvaWQgMDtlJiYoKEc9eSk9PW51bGw/MDpHLmluY2x1ZGVzKDIpKSYmbC5wdXNoKG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30scix7bGFiZWxzOnp9KSl9bC5sZW5ndGgmJgptcygiZ2NsX2diIixsLGMpfXJldHVybiBmfQpmdW5jdGlvbiBGcyhhLGIsYyl7Yz1jPT09dm9pZCAwPyExOmM7dmFyIGQ9W107Yj1ifHx7fTt2YXIgZT1HcihiLGMpLGY9RHMoZCxlLGEpO2lmKGYubGVuZ3RoKXtmb3IodmFyIGc9W10saD17fSxsPW0oZiksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPW4udmFsdWUscT1IcihiLnByZWZpeCkscj1JcihwLnpnLHEpO2lmKCFyKXJldHVybiBkO3ZhciB0PXAsdT10LnZlcnNpb24sdj10LmdjbGlkLHg9dC50aW1lc3RhbXAseT10Lm9hLHo9TWF0aC5yb3VuZCh4LzFFMyksQz1Mcih0LmxhYmVsc3x8W10sW2FdKSxEPXZvaWQgMDtpZigoRD15KT09bnVsbD8wOkQuaW5jbHVkZXMoMSkpaWYocC56Zz09PSJhZyImJiFoLmFnKXt2YXIgST17fSxHPShJLms9dixJLmk9IiIreixJLmI9QyxJKTtBcShyLEcsNSxiLHgpO2guYWc9ITB9ZWxzZSBpZihwLnpnPT09ImdiIiYmIWguZ2Ipe3ZhciBOPVt1LHosdl0uY29uY2F0KEMpLmpvaW4oIi4iKSxTPXVxKGIseCwhMCk7Uy5NYz0KQXIoKTtvcShyLE4sUyk7aC5nYj0hMH12YXIgVz12b2lkIDA7YyYmKChXPXkpPT1udWxsPzA6Vy5pbmNsdWRlcygyKSkmJmcucHVzaChuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHAse2xhYmVsczpDfSkpfWcubGVuZ3RoJiZtcygiZ2NsX2diIixnLGIpfXJldHVybiBkfWZ1bmN0aW9uIEdzKGEsYil7dmFyIGM9SHIoYiksZD1JcihhLGMpO2lmKCFkKXJldHVybiAwO3ZhciBlO2U9YT09PSJhZyI/SnIoZCk6RXIoZCk7Zm9yKHZhciBmPTAsZz0wO2c8ZS5sZW5ndGg7ZysrKWY9TWF0aC5tYXgoZixlW2ddLnRpbWVzdGFtcCk7cmV0dXJuIGZ9ZnVuY3Rpb24gSHMoYSl7Zm9yKHZhciBiPTAsYz1tKE9iamVjdC5rZXlzKGEpKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSlmb3IodmFyIGU9YVtkLnZhbHVlXSxmPTA7ZjxlLmxlbmd0aDtmKyspYj1NYXRoLm1heChiLE51bWJlcihlW2ZdLnRpbWVzdGFtcCkpO3JldHVybiBifQpmdW5jdGlvbiBJcyhhKXt2YXIgYj1NYXRoLm1heChHcygiYXciLGEpLEhzKEJyKEFyKCkpP1JwKCk6e30pKSxjPU1hdGgubWF4KEdzKCJnYiIsYSksSHMoQnIoQXIoKSk/UnAoIl9nYWNfZ2IiLCEwKTp7fSkpO2M9TWF0aC5tYXgoYyxHcygiYWciLGEpKTtyZXR1cm4gYz5ifTt2YXIgSnM9UmVnRXhwKCJeVUEtXFxkKy1cXGQrJTNBW1xcdy1dKyg/OiUyQ1tcXHctXSspKig/OiUzQlVBLVxcZCstXFxkKyUzQVtcXHctXSsoPzolMkNbXFx3LV0rKSopKiQiKSxLcz0vXn4/W1x3LV0rKD86XC5+P1tcdy1dKykqJC8sTHM9L15cZCtcLmZsc1wuZG91YmxlY2xpY2tcLm5ldCQvLE1zPS87Z2FjPShbXjs/XSspLyxOcz0vO2dhY2diPShbXjs/XSspLzsKZnVuY3Rpb24gT3MoYSxiKXtpZihMcy50ZXN0KEIubG9jYXRpb24uaG9zdCkpe3ZhciBjPUIubG9jYXRpb24uaHJlZi5tYXRjaChiKTtyZXR1cm4gYyYmYy5sZW5ndGg9PT0yJiZjWzFdLm1hdGNoKEpzKT9LaihjWzFdKXx8IiI6IiJ9Zm9yKHZhciBkPVtdLGU9bShPYmplY3Qua2V5cyhhKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe2Zvcih2YXIgZz1mLnZhbHVlLGg9W10sbD1hW2ddLG49MDtuPGwubGVuZ3RoO24rKyloLnB1c2gobFtuXS5nY2xpZCk7ZC5wdXNoKGcrIjoiK2guam9pbigiLCIpKX1yZXR1cm4gZC5sZW5ndGg+MD9kLmpvaW4oIjsiKToiIn0KZnVuY3Rpb24gUHMoYSxiLGMpe2Zvcih2YXIgZD1CcihBcigpKT9ScCgiX2dhY19nYiIsITApOnt9LGU9W10sZj0hMSxnPW0oT2JqZWN0LmtleXMoZCkpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKXt2YXIgbD1oLnZhbHVlLG49RXMoIl9nYWNfZ2JfIitsLGEsYixjKTtmPWZ8fG4ubGVuZ3RoIT09MCYmbi5zb21lKGZ1bmN0aW9uKHApe3JldHVybiBwPT09MX0pO2UucHVzaChsKyI6IituLmpvaW4oIiwiKSl9cmV0dXJue1JyOmY/ZS5qb2luKCI7Iik6IiIsUXI6T3MoZCxOcyl9fWZ1bmN0aW9uIFFzKGEpe3ZhciBiPUIubG9jYXRpb24uaHJlZi5tYXRjaChuZXcgUmVnRXhwKCI7IithKyI9KFteOz9dKykiKSk7cmV0dXJuIGImJmIubGVuZ3RoPT09MiYmYlsxXS5tYXRjaChLcyk/YlsxXTp2b2lkIDB9CmZ1bmN0aW9uIFJzKGEpe3ZhciBiPXt9LGMsZCxlO0xzLnRlc3QoQi5sb2NhdGlvbi5ob3N0KSYmKGM9UXMoImdjbGdzIiksZD1RcygiZ2Nsc3QiKSxlPVFzKCJnY2xscCIpKTtpZihjJiZkJiZlKWIuRWc9YyxiLldoPWQsYi5VaD1lO2Vsc2V7dmFyIGY9TmIoKSxnPU1yKChhfHwiX2djbCIpKyJfZ3MiKSxoPWcubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwLmdjbGlkfSksbD1nLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gZi1wLnRpbWVzdGFtcH0pLG49Zy5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHAub2R9KTtoLmxlbmd0aD4wJiZsLmxlbmd0aD4wJiZuLmxlbmd0aD4wJiYoYi5FZz1oLmpvaW4oIi4iKSxiLldoPWwuam9pbigiLiIpLGIuVWg9bi5qb2luKCIuIikpfXJldHVybiBifQpmdW5jdGlvbiBTcyhhLGIpe3ZhciBjPWEuc3BsaXQoIi4iKSxkPWI/Yi5zcGxpdCgiLiIpOltdLGU9ZC5sZW5ndGg9PT1jLmxlbmd0aD9kOnZvaWQgMDtyZXR1cm4gYy5tYXAoZnVuY3Rpb24oZixnKXt2YXIgaD17Z2NsaWQ6Zn07aWYoZSl7dmFyIGw9ZVtnXS5zcGxpdCgiXyIpO2lmKGwubGVuZ3RoPT09Mil7aC5xYT1uZXcgZXIoTnVtYmVyKGxbMF0pKTt2YXIgbjt2YXIgcD1OdW1iZXIobFsxXSk7aWYocD09PTApbj1bMF07ZWxzZXt2YXIgcT1bXTtwJjEmJnEucHVzaCgxKTtwJjImJnEucHVzaCgyKTtwJjQmJnEucHVzaCgzKTtwJjgmJnEucHVzaCg0KTtwJjE2JiZxLnB1c2goNSk7bj1xfWgub2E9bn19cmV0dXJuIGh9KX0KZnVuY3Rpb24gVHMoYSxiLGMsZCl7ZD1kPT09dm9pZCAwPyExOmQ7aWYoTHMudGVzdChCLmxvY2F0aW9uLmhvc3QpKXt2YXIgZT1RcyhjKTtpZihlKXtpZihZZigxNykpe3ZhciBmPVFzKGMrIl9zcmMiKTtyZXR1cm4gU3MoZSxmKX1pZihkKXt2YXIgZz1uZXcgZXI7ZnIoZywyKTtmcihnLDMpO3JldHVybiBlLnNwbGl0KCIuIikubWFwKGZ1bmN0aW9uKHIpe3JldHVybntnY2xpZDpyLHFhOmcsb2E6WzFdfX0pfXJldHVybiBlLnNwbGl0KCIuIikubWFwKGZ1bmN0aW9uKHIpe3JldHVybntnY2xpZDpyLHFhOm5ldyBlcixvYTpbMV19fSl9fWVsc2V7aWYoYj09PSJnY2xpZCIpe2Zvcih2YXIgaD1FcigoYXx8Il9nY2wiKSsiX2F3IixkKSxsPU51bWJlcihYZls0XT09PXZvaWQgMD8wOlhmWzRdKSxuPW0oVXMoKSkscD1uLm5leHQoKTshcC5kb25lO3A9bi5uZXh0KCkpe3ZhciBxPXAudmFsdWU7cS50aW1lc3RhbXA+bCYmUXIoaCxxKX1yZXR1cm4gaH1pZihiPT09IndicmFpZCIpcmV0dXJuIEVyKChhfHwKIl9nY2wiKSsiX2diIixkKTtpZihiPT09ImJyYWlkcyIpcmV0dXJuIEdyKHtwcmVmaXg6YX0sZCl9cmV0dXJuW119ZnVuY3Rpb24gVXMoKXtyZXR1cm4od3EodnIuYXcsNCl8fFtdKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEubT09PSIxIn0pLm1hcChmdW5jdGlvbihhKXtyZXR1cm57Z2NsaWQ6YS5rLHRpbWVzdGFtcDpOdW1iZXIoYS5pKSx2ZXJzaW9uOiIiLG9hOls1XX19KX1mdW5jdGlvbiBWcyhhKXtmb3IodmFyIGI9MCxjPW0oYSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpe3ZhciBlPWQudmFsdWU7ZT4wJiYoYnw9MTw8ZS0xKX1yZXR1cm4gYi50b1N0cmluZygpfWZ1bmN0aW9uIFdzKGEpe3JldHVybiBMcy50ZXN0KEIubG9jYXRpb24uaG9zdCk/IShRcygiZ2NsYXciKXx8UXMoImdhYyIpKTpJcyhhKX0KZnVuY3Rpb24gWHMoYSxiLGMsZCl7ZD1kPT09dm9pZCAwPyExOmQ7dmFyIGU7ZT1jP0ZzKGEsYixkKTpFcygoYiYmYi5wcmVmaXh8fCJfZ2NsIikrIl9nYiIsYSxiLHZvaWQgMCxkKTtyZXR1cm4gZS5sZW5ndGg9PT0wfHxlLmV2ZXJ5KGZ1bmN0aW9uKGYpe3JldHVybiBmPT09MH0pPyIiOmUuam9pbigiLiIpfTtmdW5jdGlvbiBodChhLGIsYyl7dmFyIGQ9UihhLEYuRC5UYSk7aWYoZCYmdHlwZW9mIGQ9PT0ib2JqZWN0Iilmb3IodmFyIGU9bShPYmplY3Qua2V5cyhkKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWUsaD1kW2ddO2lmKGghPT12b2lkIDApe2g9PT1udWxsJiYoaD0iIik7dmFyIGw9ImdhcC4iK2csbj1TdHJpbmcoaCk7Yz9jKGwsbik6YltsXT1ufX19O3ZhciBpdD0hMSxqdD1bXTtmdW5jdGlvbiBrdCgpe2lmKCFpdCl7aXQ9ITA7Zm9yKHZhciBhPWp0Lmxlbmd0aC0xO2E+PTA7YS0tKWp0W2FdKCk7anQ9W119fTtmdW5jdGlvbiBsdChhKXt2YXIgYj1bXSxjPTAsZDtmb3IoZCBpbiBhKWJbYysrXT1hW2RdO3JldHVybiBifTtmdW5jdGlvbiBtdChhLGIsYyl7cmV0dXJuIHR5cGVvZiBhLmFkZEV2ZW50TGlzdGVuZXI9PT0iZnVuY3Rpb24iPyhhLmFkZEV2ZW50TGlzdGVuZXIoYixjLCExKSwhMCk6ITF9ZnVuY3Rpb24gbnQoYSxiLGMpe3R5cGVvZiBhLnJlbW92ZUV2ZW50TGlzdGVuZXI9PT0iZnVuY3Rpb24iJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjLCExKX07ZnVuY3Rpb24gb3QoYSxiLGMsZCl7ZD1kPT09dm9pZCAwPyExOmQ7YS5nb29nbGVfaW1hZ2VfcmVxdWVzdHN8fChhLmdvb2dsZV9pbWFnZV9yZXF1ZXN0cz1bXSk7dmFyIGU9UHAoYS5kb2N1bWVudCk7aWYoYyl7dmFyIGY9ZnVuY3Rpb24oKXtpZihjKXt2YXIgZz1hLmdvb2dsZV9pbWFnZV9yZXF1ZXN0cyxoPURjKGcsZSk7aD49MCYmQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGcsaCwxKX1udChlLCJsb2FkIixmKTtudChlLCJlcnJvciIsZil9O210KGUsImxvYWQiLGYpO210KGUsImVycm9yIixmKX1kJiYoZS5hdHRyaWJ1dGlvblNyYz0iIik7ZS5zcmM9YjthLmdvb2dsZV9pbWFnZV9yZXF1ZXN0cy5wdXNoKGUpfQpmdW5jdGlvbiBwdChhKXt2YXIgYjtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYz0iaHR0cHM6Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvZ2VuXzIwND9pZD10Y2ZlIjtJcChhLGZ1bmN0aW9uKGQsZSl7aWYoZHx8ZD09PTApYys9IiYiK2UrIj0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZCkpfSk7cXQoYyxiKX0KZnVuY3Rpb24gcXQoYSxiKXt2YXIgYz13aW5kb3csZDtiPWI9PT12b2lkIDA/ITE6YjtkPWQ9PT12b2lkIDA/ITE6ZDtpZihjLmZldGNoKXt2YXIgZT17a2VlcGFsaXZlOiEwLGNyZWRlbnRpYWxzOiJpbmNsdWRlIixyZWRpcmVjdDoiZm9sbG93IixtZXRob2Q6ImdldCIsbW9kZToibm8tY29ycyJ9O2QmJihlLm1vZGU9ImNvcnMiLCJzZXRBdHRyaWJ1dGlvblJlcG9ydGluZyJpbiBYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGU/ZS5hdHRyaWJ1dGlvblJlcG9ydGluZz17ZXZlbnRTb3VyY2VFbGlnaWJsZToidHJ1ZSIsdHJpZ2dlckVsaWdpYmxlOiJmYWxzZSJ9OmUuaGVhZGVycz17IkF0dHJpYnV0aW9uLVJlcG9ydGluZy1FbGlnaWJsZSI6ImV2ZW50LXNvdXJjZSJ9KTtjLmZldGNoKGEsZSl9ZWxzZSBvdChjLGEsYj09PXZvaWQgMD8hMTpiLGQ9PT12b2lkIDA/ITE6ZCl9O2Z1bmN0aW9uIHJ0KCl7dGhpcy5mYT10aGlzLmZhO3RoaXMuUj10aGlzLlJ9cnQucHJvdG90eXBlLmZhPSExO3J0LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5mYXx8KHRoaXMuZmE9ITAsdGhpcy5OKCkpfTtydC5wcm90b3R5cGVbU3ltYm9sLmRpc3Bvc2VdPWZ1bmN0aW9uKCl7dGhpcy5kaXNwb3NlKCl9O3J0LnByb3RvdHlwZS5hZGRPbkRpc3Bvc2VDYWxsYmFjaz1mdW5jdGlvbihhLGIpe3RoaXMuZmE/YiE9PXZvaWQgMD9hLmNhbGwoYik6YSgpOih0aGlzLlJ8fCh0aGlzLlI9W10pLGImJihhPWEuYmluZChiKSksdGhpcy5SLnB1c2goYSkpfTtydC5wcm90b3R5cGUuTj1mdW5jdGlvbigpe2lmKHRoaXMuUilmb3IoO3RoaXMuUi5sZW5ndGg7KXRoaXMuUi5zaGlmdCgpKCl9O2Z1bmN0aW9uIHN0KGEpe2EuYWRkdGxDb25zZW50PT09dm9pZCAwfHx2ZihhLmFkZHRsQ29uc2VudCl8fChhLmFkZHRsQ29uc2VudD12b2lkIDApO2EuZ2RwckFwcGxpZXM9PT12b2lkIDB8fHdmKGEuZ2RwckFwcGxpZXMpfHwoYS5nZHByQXBwbGllcz12b2lkIDApO3JldHVybiBhLnRjU3RyaW5nIT09dm9pZCAwJiYhdmYoYS50Y1N0cmluZyl8fGEubGlzdGVuZXJJZCE9PXZvaWQgMCYmIXVmKGEubGlzdGVuZXJJZCk/MjphLmNtcFN0YXR1cyYmYS5jbXBTdGF0dXMhPT0iZXJyb3IiPzA6M312YXIgdHQ9ZnVuY3Rpb24oYSxiKXtiPWI9PT12b2lkIDA/e306YjtydC5jYWxsKHRoaXMpO3RoaXMuSD1udWxsO3RoaXMuamE9e307dGhpcy55YT0wO3RoaXMuWj1udWxsO3RoaXMuSz1hO3ZhciBjO3RoaXMudGltZW91dE1zPShjPWIudGltZW91dE1zKSE9bnVsbD9jOjUwMDt2YXIgZDt0aGlzLkVqPShkPWIuRWopIT1udWxsP2Q6ITF9O3dhKHR0LHJ0KTsKdHQucHJvdG90eXBlLk49ZnVuY3Rpb24oKXt0aGlzLmphPXt9O3RoaXMuWiYmKG50KHRoaXMuSywibWVzc2FnZSIsdGhpcy5aKSxkZWxldGUgdGhpcy5aKTtkZWxldGUgdGhpcy5qYTtkZWxldGUgdGhpcy5LO2RlbGV0ZSB0aGlzLkg7cnQucHJvdG90eXBlLk4uY2FsbCh0aGlzKX07dmFyIHZ0PWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYS5LLl9fdGNmYXBpPT09ImZ1bmN0aW9uInx8dXQoYSkhPW51bGx9Owp0dC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9e2ludGVybmFsQmxvY2tPbkVycm9yczp0aGlzLkVqfSxkPUhwKGZ1bmN0aW9uKCl7YShjKX0pLGU9MDt0aGlzLnRpbWVvdXRNcyE9PS0xJiYoZT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy50Y1N0cmluZz0idGN1bmF2YWlsYWJsZSI7Yy5pbnRlcm5hbEVycm9yU3RhdGU9MTtkKCl9LHRoaXMudGltZW91dE1zKSk7dmFyIGY9ZnVuY3Rpb24oZyxoKXtjbGVhclRpbWVvdXQoZSk7Zz8oYz1nLGMuaW50ZXJuYWxFcnJvclN0YXRlPXN0KGMpLGMuaW50ZXJuYWxCbG9ja09uRXJyb3JzPWIuRWosaCYmYy5pbnRlcm5hbEVycm9yU3RhdGU9PT0wfHwoYy50Y1N0cmluZz0idGN1bmF2YWlsYWJsZSIsaHx8KGMuaW50ZXJuYWxFcnJvclN0YXRlPTMpKSk6KGMudGNTdHJpbmc9InRjdW5hdmFpbGFibGUiLGMuaW50ZXJuYWxFcnJvclN0YXRlPTMpO2EoYyl9O3RyeXt3dCh0aGlzLCJhZGRFdmVudExpc3RlbmVyIiwKZil9Y2F0Y2goZyl7Yy50Y1N0cmluZz0idGN1bmF2YWlsYWJsZSIsYy5pbnRlcm5hbEVycm9yU3RhdGU9MyxlJiYoY2xlYXJUaW1lb3V0KGUpLGU9MCksZCgpfX07dHQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSl7YSYmYS5saXN0ZW5lcklkJiZ3dCh0aGlzLCJyZW1vdmVFdmVudExpc3RlbmVyIixudWxsLGEubGlzdGVuZXJJZCl9Owp2YXIgenQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2Q9ZD09PXZvaWQgMD8iNzU1IjpkO3ZhciBlO2E6e2lmKGEucHVibGlzaGVyJiZhLnB1Ymxpc2hlci5yZXN0cmljdGlvbnMpe3ZhciBmPWEucHVibGlzaGVyLnJlc3RyaWN0aW9uc1tiXTtpZihmIT09dm9pZCAwKXtlPWZbZD09PXZvaWQgMD8iNzU1IjpkXTticmVhayBhfX1lPXZvaWQgMH12YXIgZz1lO2lmKGc9PT0wKXJldHVybiExO3ZhciBoPWM7Yz09PTI/KGg9MCxnPT09MiYmKGg9MSkpOmM9PT0zJiYoaD0xLGc9PT0xJiYoaD0wKSk7dmFyIGw7aWYoaD09PTApaWYoYS5wdXJwb3NlJiZhLnZlbmRvcil7dmFyIG49eHQoYS52ZW5kb3IuY29uc2VudHMsZD09PXZvaWQgMD8iNzU1IjpkKTtsPW4mJmI9PT0iMSImJmEucHVycG9zZU9uZVRyZWF0bWVudCYmYS5wdWJsaXNoZXJDQz09PSJDSCI/ITA6biYmeHQoYS5wdXJwb3NlLmNvbnNlbnRzLGIpfWVsc2UgbD0hMDtlbHNlIGw9aD09PTE/YS5wdXJwb3NlJiZhLnZlbmRvcj94dChhLnB1cnBvc2UubGVnaXRpbWF0ZUludGVyZXN0cywKYikmJnh0KGEudmVuZG9yLmxlZ2l0aW1hdGVJbnRlcmVzdHMsZD09PXZvaWQgMD8iNzU1IjpkKTohMDohMDtyZXR1cm4gbH0seHQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4hKCFhfHwhYVtiXSl9LHd0PWZ1bmN0aW9uKGEsYixjLGQpe2N8fChjPWZ1bmN0aW9uKCl7fSk7dmFyIGU9YS5LO2lmKHR5cGVvZiBlLl9fdGNmYXBpPT09ImZ1bmN0aW9uIil7dmFyIGY9ZS5fX3RjZmFwaTtmKGIsMixjLGQpfWVsc2UgaWYodXQoYSkpe0F0KGEpO3ZhciBnPSsrYS55YTthLmphW2ddPWM7aWYoYS5IKXt2YXIgaD17fTthLkgucG9zdE1lc3NhZ2UoKGguX190Y2ZhcGlDYWxsPXtjb21tYW5kOmIsdmVyc2lvbjoyLGNhbGxJZDpnLHBhcmFtZXRlcjpkfSxoKSwiKiIpfX1lbHNlIGMoe30sITEpfSx1dD1mdW5jdGlvbihhKXtpZihhLkgpcmV0dXJuIGEuSDthLkg9TnAoYS5LLCJfX3RjZmFwaUxvY2F0b3IiKTtyZXR1cm4gYS5IfSxBdD1mdW5jdGlvbihhKXtpZighYS5aKXt2YXIgYj1mdW5jdGlvbihjKXtpZihjLnNvdXJjZT09PQphLkgpdHJ5e3ZhciBkO2Q9KHZmKGMuZGF0YSk/SlNPTi5wYXJzZShjLmRhdGEpOmMuZGF0YSkuX190Y2ZhcGlSZXR1cm47YS5qYVtkLmNhbGxJZF0oZC5yZXR1cm5WYWx1ZSxkLnN1Y2Nlc3MpfWNhdGNoKGUpe319O2EuWj1iO210KGEuSywibWVzc2FnZSIsYil9fSxCdD1mdW5jdGlvbihhKXtpZihhLmdkcHJBcHBsaWVzPT09ITEpcmV0dXJuITA7YS5pbnRlcm5hbEVycm9yU3RhdGU9PT12b2lkIDAmJihhLmludGVybmFsRXJyb3JTdGF0ZT1zdChhKSk7cmV0dXJuIGEuY21wU3RhdHVzPT09ImVycm9yInx8YS5pbnRlcm5hbEVycm9yU3RhdGUhPT0wP2EuaW50ZXJuYWxCbG9ja09uRXJyb3JzPyhwdCh7ZTpTdHJpbmcoYS5pbnRlcm5hbEVycm9yU3RhdGUpfSksITEpOiEwOmEuY21wU3RhdHVzIT09ImxvYWRlZCJ8fGEuZXZlbnRTdGF0dXMhPT0idGNsb2FkZWQiJiZhLmV2ZW50U3RhdHVzIT09InVzZXJhY3Rpb25jb21wbGV0ZSI/ITE6ITB9O3ZhciBDdD17MTowLDM6MCw0OjAsNzozLDk6MywxMDozfTtmdW5jdGlvbiBEdCgpe3JldHVybiBraigidGNmIixmdW5jdGlvbigpe3JldHVybnt9fSl9dmFyIEV0PWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0dChBLHt0aW1lb3V0TXM6LTF9KX07CmZ1bmN0aW9uIEZ0KCl7dmFyIGE9RHQoKSxiPUV0KCk7dnQoYikmJiFHdCgpJiYhSHQoKSYmUCgxMjQpO2lmKCFhLmFjdGl2ZSYmdnQoYikpe0d0KCkmJihhLmFjdGl2ZT0hMCxhLnB1cnBvc2VzPXt9LGEuY21wSWQ9MCxhLnRjZlBvbGljeVZlcnNpb249MCx0bCgpLmFjdGl2ZT0hMCxhLnRjU3RyaW5nPSJ0Y3VuYXZhaWxhYmxlIik7Y3AoKTt0cnl7Yi5hZGRFdmVudExpc3RlbmVyKGZ1bmN0aW9uKGMpe2lmKGMuaW50ZXJuYWxFcnJvclN0YXRlIT09MClJdChhKSxkcChbRi5ELmthLEYuRC5YYSxGLkQubWFdKSx0bCgpLmFjdGl2ZT0hMDtlbHNlIGlmKGEuZ2RwckFwcGxpZXM9Yy5nZHByQXBwbGllcyxhLmNtcElkPWMuY21wSWQsYS5lbmFibGVBZHZlcnRpc2VyQ29uc2VudE1vZGU9Yy5lbmFibGVBZHZlcnRpc2VyQ29uc2VudE1vZGUsSHQoKSYmKGEuYWN0aXZlPSEwKSwhSnQoYyl8fEd0KCl8fEh0KCkpe2EudGNmUG9saWN5VmVyc2lvbj1jLnRjZlBvbGljeVZlcnNpb247dmFyIGQ7aWYoYy5nZHByQXBwbGllcz09PQohMSl7dmFyIGU9e30sZjtmb3IoZiBpbiBDdClDdC5oYXNPd25Qcm9wZXJ0eShmKSYmKGVbZl09ITApO2Q9ZTtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoYyl9ZWxzZSBpZihKdChjKSl7dmFyIGc9e30saDtmb3IoaCBpbiBDdClpZihDdC5oYXNPd25Qcm9wZXJ0eShoKSlpZihoPT09IjEiKXt2YXIgbCxuPWMscD17VXI6ITB9O3A9cD09PXZvaWQgMD97fTpwO2w9QnQobik/bi5nZHByQXBwbGllcz09PSExPyEwOm4udGNTdHJpbmc9PT0idGN1bmF2YWlsYWJsZSI/IXAuaWRwY0FwcGxpZXM6KHAuaWRwY0FwcGxpZXN8fG4uZ2RwckFwcGxpZXMhPT12b2lkIDB8fHAuVXIpJiYocC5pZHBjQXBwbGllc3x8dmYobi50Y1N0cmluZykmJm4udGNTdHJpbmcubGVuZ3RoKT96dChuLCIxIiwwKTohMDohMTtnWyIxIl09bH1lbHNlIGdbaF09enQoYyxoLEN0W2hdKTtkPWd9aWYoZCl7YS50Y1N0cmluZz1jLnRjU3RyaW5nfHwidGNlbXB0eSI7YS5wdXJwb3Nlcz1kO3ZhciBxPXt9LHI9KHFbRi5ELmthXT0KYS5wdXJwb3Nlc1siMSJdPyJncmFudGVkIjoiZGVuaWVkIixxKTthLmdkcHJBcHBsaWVzIT09ITA/KGRwKFtGLkQua2EsRi5ELlhhLEYuRC5tYV0pLHRsKCkuYWN0aXZlPSEwKToocltGLkQuWGFdPWEucHVycG9zZXNbIjMiXSYmYS5wdXJwb3Nlc1siNCJdPyJncmFudGVkIjoiZGVuaWVkIix0eXBlb2YgYS50Y2ZQb2xpY3lWZXJzaW9uPT09Im51bWJlciImJmEudGNmUG9saWN5VmVyc2lvbj49ND9yW0YuRC5tYV09YS5wdXJwb3Nlc1siMSJdJiZhLnB1cnBvc2VzWyI3Il0/ImdyYW50ZWQiOiJkZW5pZWQiOmRwKFtGLkQubWFdKSxWbyhyLHtldmVudElkOjB9LHtnZHByQXBwbGllczphP2EuZ2RwckFwcGxpZXM6dm9pZCAwLHRjU3RyaW5nOkt0KCl8fCIifSkpfX1lbHNlIGRwKFtGLkQua2EsRi5ELlhhLEYuRC5tYV0pfSl9Y2F0Y2goYyl7SXQoYSksZHAoW0YuRC5rYSxGLkQuWGEsRi5ELm1hXSksdGwoKS5hY3RpdmU9ITB9fX0KZnVuY3Rpb24gSXQoYSl7YS50eXBlPSJlIjthLnRjU3RyaW5nPSJ0Y3VuYXZhaWxhYmxlIn1mdW5jdGlvbiBKdChhKXtyZXR1cm4gYS5ldmVudFN0YXR1cz09PSJ0Y2xvYWRlZCJ8fGEuZXZlbnRTdGF0dXM9PT0idXNlcmFjdGlvbmNvbXBsZXRlInx8YS5ldmVudFN0YXR1cz09PSJjbXB1aXNob3duIn1mdW5jdGlvbiBHdCgpe3JldHVybiBBLmd0YWdfZW5hYmxlX3RjZl9zdXBwb3J0PT09ITB9ZnVuY3Rpb24gSHQoKXtyZXR1cm4gRHQoKS5lbmFibGVBZHZlcnRpc2VyQ29uc2VudE1vZGU9PT0hMH1mdW5jdGlvbiBLdCgpe3ZhciBhPUR0KCk7aWYoYS5hY3RpdmUpcmV0dXJuIGEudGNTdHJpbmd9ZnVuY3Rpb24gTHQoKXt2YXIgYT1EdCgpO2lmKGEuYWN0aXZlJiZhLmdkcHJBcHBsaWVzIT09dm9pZCAwKXJldHVybiBhLmdkcHJBcHBsaWVzPyIxIjoiMCJ9CmZ1bmN0aW9uIE10KGEpe2lmKCFDdC5oYXNPd25Qcm9wZXJ0eShTdHJpbmcoYSkpKXJldHVybiEwO3ZhciBiPUR0KCk7cmV0dXJuIGIuYWN0aXZlJiZiLnB1cnBvc2VzPyEhYi5wdXJwb3Nlc1tTdHJpbmcoYSldOiEwfTt2YXIgTnQ9W0YuRC5rYSxGLkQucmEsRi5ELm1hLEYuRC5YYV0sT3Q9e30sUHQ9KE90W0YuRC5rYV09MSxPdFtGLkQucmFdPTIsT3QpO2Z1bmN0aW9uIFF0KGEpe2lmKGE9PT12b2lkIDApcmV0dXJuIDA7c3dpdGNoKE8oYSxGLkQuUmMpKXtjYXNlIHZvaWQgMDpyZXR1cm4gMTtjYXNlICExOnJldHVybiAzO2RlZmF1bHQ6cmV0dXJuIDJ9fWZ1bmN0aW9uIFJ0KCl7cmV0dXJuKE0oMTgzKT9MZigxNikuc3BsaXQoIn4iKTpMZigxNykuc3BsaXQoIn4iKSkuaW5kZXhPZih6bSgpKSE9PS0xJiZIYy5nbG9iYWxQcml2YWN5Q29udHJvbD09PSEwfWZ1bmN0aW9uIFN0KGEpe2lmKFJ0KCkpcmV0dXJuITE7dmFyIGI9UXQoYSk7aWYoYj09PTMpcmV0dXJuITE7c3dpdGNoKENsKEYuRC5YYSkpe2Nhc2UgMTpjYXNlIDM6cmV0dXJuITA7Y2FzZSAyOnJldHVybiExO2Nhc2UgNDpyZXR1cm4gYj09PTI7Y2FzZSAwOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fQpmdW5jdGlvbiBUdCgpe3JldHVybiBFbCgpfHwhQmwoRi5ELmthKXx8IUJsKEYuRC5yYSl9ZnVuY3Rpb24gVXQoKXt2YXIgYT17fSxiO2ZvcihiIGluIFB0KVB0Lmhhc093blByb3BlcnR5KGIpJiYoYVtQdFtiXV09Q2woYikpO3JldHVybiJHMSIreWYoYVsxXXx8MCkreWYoYVsyXXx8MCl9dmFyIFZ0PXt9LFd0PShWdFtGLkQua2FdPTAsVnRbRi5ELnJhXT0xLFZ0W0YuRC5tYV09MixWdFtGLkQuWGFdPTMsVnQpO2Z1bmN0aW9uIFh0KGEpe3N3aXRjaChhKXtjYXNlIHZvaWQgMDpyZXR1cm4gMTtjYXNlICEwOnJldHVybiAzO2Nhc2UgITE6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gMH19CmZ1bmN0aW9uIFl0KGEpe2Zvcih2YXIgYj0iMSIsYz0wO2M8TnQubGVuZ3RoO2MrKyl7dmFyIGQ9YixlLGY9TnRbY10sZz1BbC5kZWxlZ2F0ZWRDb25zZW50VHlwZXNbZl07ZT1nPT09dm9pZCAwPzA6V3QuaGFzT3duUHJvcGVydHkoZyk/MTJ8V3RbZ106ODt2YXIgaD10bCgpO2guYWNjZXNzZWRBbnk9ITA7dmFyIGw9aC5lbnRyaWVzW2ZdfHx7fTtlPWU8PDJ8WHQobC5pbXBsaWNpdCk7Yj1kKygiIisiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbZV0rIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW1h0KGwuZGVjbGFyZSk8PDR8WHQobC5kZWZhdWx0KTw8MnxYdChsLnVwZGF0ZSldKX12YXIgbj1iLHA9KFJ0KCk/MTowKTw8MyxxPShFbCgpPzE6MCk8PDIscj1RdChhKTtiPW4rIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW3B8CnF8cl07cmV0dXJuIGIrPSIiKyIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi1fIltBbC5jb250YWluZXJTY29wZWREZWZhdWx0cy5hZF9zdG9yYWdlPDw0fEFsLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzLmFuYWx5dGljc19zdG9yYWdlPDwyfEFsLmNvbnRhaW5lclNjb3BlZERlZmF1bHRzLmFkX3VzZXJfZGF0YV0rIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iWyhBbC51c2VkQ29udGFpbmVyU2NvcGVkRGVmYXVsdHM/MTowKTw8MnxBbC5jb250YWluZXJTY29wZWREZWZhdWx0cy5hZF9wZXJzb25hbGl6YXRpb25dfWZ1bmN0aW9uIFp0KCl7cmV0dXJuIEJsKEYuRC5tYSk/ImEiOiItIn1mdW5jdGlvbiAkdCgpe3JldHVybiBCbSgpfHwoR3QoKXx8SHQoKSkmJkx0KCk9PT0iMSI/IjEiOiIwIn0KZnVuY3Rpb24gYXUoKXtyZXR1cm4oQm0oKT8hMDohKCFHdCgpJiYhSHQoKSkmJkx0KCk9PT0iMSIpfHwhQmwoRi5ELm1hKX0KZnVuY3Rpb24gYnUoKXt2YXIgYT0iMCIsYj0iMCIsYzt2YXIgZD1EdCgpO2M9ZC5hY3RpdmU/ZC5jbXBJZDp2b2lkIDA7dHlwZW9mIGM9PT0ibnVtYmVyIiYmYz49MCYmYzw9NDA5NSYmKGE9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW2M+PjYmNjNdLGI9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW2MmNjNdKTt2YXIgZT0iMCIsZjt2YXIgZz1EdCgpO2Y9Zy5hY3RpdmU/Zy50Y2ZQb2xpY3lWZXJzaW9uOnZvaWQgMDt0eXBlb2YgZj09PSJudW1iZXIiJiZmPj0wJiZmPD02MyYmKGU9IjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaLV8iW2ZdKTt2YXIgaD0wO0JtKCkmJihofD0xKTtMdCgpPT09IjEiJiYoaHw9Mik7R3QoKSYmKGh8PTQpO3ZhciBsO3ZhciBuPUR0KCk7bD1uLmVuYWJsZUFkdmVydGlzZXJDb25zZW50TW9kZSE9PQp2b2lkIDA/bi5lbmFibGVBZHZlcnRpc2VyQ29uc2VudE1vZGU/IjEiOiIwIjp2b2lkIDA7bD09PSIxIiYmKGh8PTgpO3RsKCkud2FpdFBlcmlvZFRpbWVkT3V0JiYoaHw9MTYpO3JldHVybiIxIithK2IrZSsiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVotXyJbaF19O3ZhciBjdT17VUE6MSxBVzoyLERDOjMsRzo0LEdGOjUsR1Q6MTIsR1RNOjE0LEhBOjYsTUM6N307CmZ1bmN0aW9uIGR1KGEpe2E9YT09PXZvaWQgMD97fTphO3ZhciBiPUUoNSkuc3BsaXQoIi0iKVswXS50b1VwcGVyQ2FzZSgpLGMsZD17Y3RpZDpFKDUpLERvOkpmKDE1KSxJbzpFKDE0KSxMczpJZig3KT8yOjEsRHQ6YS5wZixjYW5vbmljYWxJZDpFKDYpLG50OihjPUFrKCkpPT1udWxsP3ZvaWQgMDpjLmNhbm9uaWNhbENvbnRhaW5lcklkLEV0OmEuVGc9PT12b2lkIDA/dm9pZCAwOmEuVGc/MTA6MTJ9O2QuY2Fub25pY2FsSWQhPT1hLm1jJiYoZC5tYz1hLm1jKTt2YXIgZT14aygpO2QuVXM9ZT9lLmNhbm9uaWNhbENvbnRhaW5lcklkOnZvaWQgMDtJZig0NSk/KGQuaGk9Y3VbYl0sZC5oaXx8KGQuaGk9MCkpOmQuaGk9RGo/MTM6MTA7SWYoNDcpPyhkLmJrPTAsZC5xcj0yKTpJZig1MCk/ZC5iaz0xOmQuYms9Mzt2YXIgZj1hLGc9ezY6ITF9O0pmKDU0KT09PTI/Z1s3XT0hMDpKZig1NCk9PT0xJiYoZ1syXT0hMCk7aWYoS2Mpe3ZhciBoPUxqKFJqKEtjKSwiaG9zdCIpO2gmJihnWzhdPQpoLm1hdGNoKC9eKHd3d1wuKT9nb29nbGV0YWdtYW5hZ2VyXC5jb20kLyk9PT1udWxsKX12YXIgbDtnWzldPShsPWYuZWYpIT1udWxsP2w6ITE7dmFyIG49RmsoKSxwO2dbMTBdPShwPW49PW51bGw/dm9pZCAwOm4uZnJvbUNvbnRhaW5lckV4ZWN1dGlvbikhPW51bGw/cDohMTtkLnpyPWc7cmV0dXJuIENmKGQsYS5Qbil9O3ZhciBndT1mdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMuZW5kcG9pbnQ9YTt0aGlzLmZhPWM7dGhpcy5qYT1kO3RoaXMucGFyYW1ldGVyRW5jb2Rpbmc9ZTt0aGlzLlo9Yi5zbGljZSgpfTtndS5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3JldHVybiBYbyh0aGlzLlopfTtndS5wcm90b3R5cGUuaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH07Z3UucHJvdG90eXBlLlI9ZnVuY3Rpb24oKXt2YXIgYT1NbVt0aGlzLmVuZHBvaW50XSh2b2lkIDApO3JldHVybiBTYihhLCJodHRwczovLyIpP2Euc3Vic3RyaW5nKDgpOlNiKGEsImh0dHA6Ly8iKT9hLnN1YnN0cmluZyg3KTphfTt2YXIgaHU9ZnVuY3Rpb24oYSxiKXt0aGlzLm1ldGhvZE5hbWU9YTt0aGlzLlI9Yn07aHUucHJvdG90eXBlLnNlbmRSZXF1ZXN0PWZ1bmN0aW9uKGEsYixjKXtpZih0aGlzLmlzU3VwcG9ydGVkKCkpaWYoKGM9PW51bGw/dm9pZCAwOmMuYm9keSk9PT12b2lkIDB8fHRoaXMuSCgpKXRyeXt0aGlzLksoYSxiLGMpfWNhdGNoKGQpe2EucmQoZCl9ZWxzZSBhLnJkKCJSZXF1ZXN0IG1ldGhvZCAiK3RoaXMubWV0aG9kTmFtZSsiIGRvZXMgbm90IHN1cHBvcnQgYSByZXF1ZXN0IGJvZHkuIik7ZWxzZSBhLnJkKCJSZXF1ZXN0IG1ldGhvZCAiK3RoaXMubWV0aG9kTmFtZSsiIGlzIG5vdCBzdXBwb3J0ZWQuIil9O3ZhciBpdT1mdW5jdGlvbigpe2h1LmNhbGwodGhpcywiSW1hZ2VQaXhlbCIsMyl9O3dhKGl1LGh1KTtpdS5wcm90b3R5cGUuaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH07aXUucHJvdG90eXBlLkg9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Cml1LnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYixjKXtaYyhiLGZ1bmN0aW9uKCl7YS5qZigpfSxmdW5jdGlvbigpe2Eub25GYWlsdXJlKHZvaWQgMCl9LGM9PW51bGw/dm9pZCAwOmMuYWYpfTt2YXIganU9ZnVuY3Rpb24oKXtodS5jYWxsKHRoaXMsIlNlbmRCZWFjb24iLDEpfTt3YShqdSxodSk7anUucHJvdG90eXBlLmlzU3VwcG9ydGVkPWZ1bmN0aW9uKCl7cmV0dXJuIGtkKCl9O2p1LnByb3RvdHlwZS5IPWZ1bmN0aW9uKCl7cmV0dXJuITB9O2p1LnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYixjKXtqZChiLGM9PW51bGw/dm9pZCAwOmMuYm9keSk/YS5qZigpOmEucmQodm9pZCAwKX07dmFyIGt1PWZ1bmN0aW9uKCl7aHUuY2FsbCh0aGlzLCJGZXRjaCIsMSl9O3dhKGt1LGh1KTtrdS5wcm90b3R5cGUuaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4geWIoQS5mZXRjaCl9O2t1LnByb3RvdHlwZS5IPWZ1bmN0aW9uKCl7cmV0dXJuITB9OwprdS5wcm90b3R5cGUuSz1mdW5jdGlvbihhLGIsYyl7QS5mZXRjaChiLGM9PW51bGw/dm9pZCAwOmMuR2IpLnRoZW4oZnVuY3Rpb24oZCl7aWYoZC5vaylhLnBlKGQpO2Vsc2UgaWYoZC5zdGF0dXM9PT0wKWEuamYoKTtlbHNlIGEub25GYWlsdXJlKCJGZXRjaCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK2Quc3RhdHVzKyIuIil9KS5jYXRjaChmdW5jdGlvbihkKXthLnJkKGQpfSl9O3ZhciBsdT1uZXcgaXUsbXU9bmV3IGp1LG51PW5ldyBrdTt2YXIgb3U9ZnVuY3Rpb24oKXt9O291LnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7cmV0dXJuW119O3ZhciBUPXtXOntKazoxLG5qOjIsRms6MyxtbDo0LEdrOjUseWQ6NixrbDo3LE1xOjgscW46OSxIazoxMCxJazoxMSxGaDoxMixEbToxMyxBbToxNCxDbToxNSx6bToxNixCbToxNyx5bToxOCxUbzoxOSx4cToyMCx5cToyMSxmajoyMix1bjoyNCxPbToyNSxTazoyNixUazoyNyxSazoyOCxVazoyOSxyajozMCxPazozMSxabzozMn19O1QuV1tULlcuSmtdPSJBTExPV19JTlRFUkVTVF9HUk9VUFMiO1QuV1tULlcubmpdPSJTRVJWRVJfQ09OVEFJTkVSX1VSTCI7VC5XW1QuVy5Ga109IkFEU19EQVRBX1JFREFDVElPTiI7VC5XW1QuVy5tbF09IkNVU1RPTUVSX0xJRkVUSU1FX1ZBTFVFIjtULldbVC5XLkdrXT0iQUxMT1dfQ1VTVE9NX1NDUklQVFMiO1QuV1tULlcueWRdPSJBTllfQ09PS0lFX1BBUkFNUyI7VC5XW1QuVy5rbF09IkNPT0tJRV9FWFBJUkVTIjtULldbVC5XLk1xXT0iTEVHQUNZX0VOSEFOQ0VEX0NPTlZFUlNJT05fSlNfVkFSSUFCTEUiO1QuV1tULlcucW5dPSJSRVNUUklDVEVEX0RBVEFfUFJPQ0VTU0lORyI7ClQuV1tULlcuSGtdPSJBTExPV19ESVNQTEFZX0ZFQVRVUkVTIjtULldbVC5XLklrXT0iQUxMT1dfR09PR0xFX1NJR05BTFMiO1QuV1tULlcuRmhdPSJHRU5FUkFURURfVFJBTlNBQ1RJT05fSUQiO1QuV1tULlcuRG1dPSJGTE9PRExJR0hUX0NPVU5USU5HX01FVEhPRF9VTktOT1dOIjtULldbVC5XLkFtXT0iRkxPT0RMSUdIVF9DT1VOVElOR19NRVRIT0RfU1RBTkRBUkQiO1QuV1tULlcuQ21dPSJGTE9PRExJR0hUX0NPVU5USU5HX01FVEhPRF9VTklRVUUiO1QuV1tULlcuem1dPSJGTE9PRExJR0hUX0NPVU5USU5HX01FVEhPRF9QRVJfU0VTU0lPTiI7VC5XW1QuVy5CbV09IkZMT09ETElHSFRfQ09VTlRJTkdfTUVUSE9EX1RSQU5TQUNUSU9OUyI7VC5XW1QuVy55bV09IkZMT09ETElHSFRfQ09VTlRJTkdfTUVUSE9EX0lURU1TX1NPTEQiO1QuV1tULlcuVG9dPSJBRFNfT0dUX1YxX1VTQUdFIjtULldbVC5XLnhxXT0iRk9STV9JTlRFUkFDVElPTl9QRVJNSVNTSU9OX0RFTklFRCI7ClQuV1tULlcueXFdPSJGT1JNX1NVQk1JVF9QRVJNSVNTSU9OX0RFTklFRCI7VC5XW1QuVy5mal09Ik1JQ1JPVEFTS19OT1RfU1VQUE9SVEVEIjtULldbVC5XLnVuXT0iU0VUX0VOQ1JZUFRFRF9EQVRBX1RPX0NBQ0hFIjtULldbVC5XLk9tXT0iR0VUX0VOQ1JZUFRFRF9EQVRBX0ZST01fQ0FDSEUiO1QuV1tULlcuU2tdPSJDT05GSUdfREVURUNURURfV0lUSF9OT19QQVJBTSI7VC5XW1QuVy5Ua109IkNPTkZJR19ERVRFQ1RFRF9XSVRIX1BBUkFNIjtULldbVC5XLlJrXT0iQ09ORklHX0NPTlNFTlRfU0VUX0JFRk9SRSI7VC5XW1QuVy5Va109IkNPTkZJR19TRVRfVVNFRF9CRUZPUkUiO1QuV1tULlcucmpdPSJTSEFET1dfRE9NX0FVVE9fUElJIjtULldbVC5XLk9rXT0iQ0NEX1VTRVJfREFUQV9XRUJfT05fQ09ORklHIjtULldbVC5XLlpvXT0iQkxFTkRFRF9VU0VSX0RBVEEiO3ZhciBCdT17fSxDdT0oQnVbRi5ELnVpXT1ULlcuSmssQnVbRi5ELmRkXT1ULlcubmosQnVbRi5ELnljXT1ULlcubmosQnVbRi5ELm1iXT1ULlcuRmssQnVbRi5ELkdlXT1ULlcubWwsQnVbRi5ELnJpXT1ULlcuR2ssQnVbRi5ELkpkXT1ULlcueWQsQnVbRi5ELm5iXT1ULlcueWQsQnVbRi5ELkxiXT1ULlcueWQsQnVbRi5ELklkXT1ULlcueWQsQnVbRi5ELnZjXT1ULlcueWQsQnVbRi5ELlRiXT1ULlcueWQsQnVbRi5ELkNiXT1ULlcua2wsQnVbRi5ELldiXT1ULlcucW4sQnVbRi5ELmhoXT1ULlcuSGssQnVbRi5ELlNjXT1ULlcuSWssQnUpLER1PXt9LEV1PShEdS51bmtub3duPVQuVy5EbSxEdS5zdGFuZGFyZD1ULlcuQW0sRHUudW5pcXVlPVQuVy5DbSxEdS5wZXJfc2Vzc2lvbj1ULlcuem0sRHUudHJhbnNhY3Rpb25zPVQuVy5CbSxEdS5pdGVtc19zb2xkPVQuVy55bSxEdSk7dmFyIEZ1PWZ1bmN0aW9uKGEsYixjKXtjPWM9PT12b2lkIDA/ITE6YztzYigiR1RBR19FVkVOVF9GRUFUVVJFX0NIQU5ORUwiLGIpO2MmJihhLkhbYl09ITApfSx2Yj1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9W119O2Z1bmN0aW9uIEd1KGEpe0Z1KHZiLGEsITEpfWZ1bmN0aW9uIEh1KGEsYil7dmFyIGM9Yj09PXZvaWQgMD8hMTpiLGQ9dmI7Yz1jPT09dm9pZCAwPyExOmM7Zm9yKHZhciBlPU9iamVjdC5rZXlzKGEpLGY9bShPYmplY3Qua2V5cyhDdSkpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1nLnZhbHVlO2UuaW5jbHVkZXMoaCkmJkZ1KGQsQ3VbaF0sYyl9fTtmdW5jdGlvbiBJdShhLGIpe2E/YS50aGVuKGIpOmIodm9pZCAwKX1mdW5jdGlvbiBKdShhKXtyZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKGEpLnRoZW4oZnVuY3Rpb24oYil7cmV0dXJuIGIuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBjLnN0YXR1cz09PSJmdWxmaWxsZWQifSkubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBjLnZhbHVlfSl9KX1mdW5jdGlvbiBLdSgpe3ZhciBhLGI7cmV0dXJue3Byb21pc2U6bmV3IFByb21pc2UoZnVuY3Rpb24oYyxkKXthPWM7Yj1kfSkscmVzb2x2ZTphLHJlamVjdDpifX07ZnVuY3Rpb24gTHUoYSxiLGMsZCxlLGYpe3ZhciBnPWMuc2xpY2UoKSxoO2Q9PW51bGx8fChoPWQudXYpPT1udWxsfHxoLmNhbGwoZCxhLGIsYyxlKTt2YXIgbD1LdSgpLG49bC5wcm9taXNlLHA9bC5yZXNvbHZlLHE9W10scj1mdW5jdGlvbigpe3AocSk7dmFyIHU7ZD09bnVsbHx8KHU9ZC5Scyk9PW51bGx8fHUuY2FsbChkLGEsYixjLGUscSl9LHQ9ZnVuY3Rpb24oKXt2YXIgdT1nLnNoaWZ0KCk7dT91Lm1ldGhvZC5pc1N1cHBvcnRlZCgpP011KGEsYix1LmVuZHBvaW50LGQscSx1Lm1ldGhvZCxlLGYsdCxyKTp0KCk6cigpfTt0KCk7cmV0dXJuIG59CmZ1bmN0aW9uIE11KGEsYixjLGQsZSxmLGcsaCxsLG4pe3ZhciBwPWMuUihhKSxxPXt0azpiLGVuZHBvaW50OmMsaXNQcmltYXJ5Omcsc2I6dm9pZCAwLHBrOmYsanQ6e319LHI9ITEsdD1mdW5jdGlvbih6LEMpe2lmKHIpUCgxODcpO2Vsc2UgaWYocj0hMCwhdSl7dmFyIEQ9Q3x8e30sST1ELmJvZHksRz1ELkdiLE49RC5hZjtDPU9iamVjdC5mcmVlemUobmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxJP3tib2R5Okl9Ont9LEc/e0diOkd9Ont9LE4/e2FmOk59Ont9KSk7aWYoSSYmIWYuSCgpKXgoKSxsKCk7ZWxzZXt2YXIgUz1OdSh6KSxXPXBbMF09PT0iLyI/IiIrcCtTOiJodHRwczovLyIrcCtTO3Euc2I9VztxLmp0PUM7dmFyIGVhO2Q9PW51bGx8fChlYT1kLlNzKT09bnVsbHx8ZWEuY2FsbChkLGEsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxxKSk7dmFyIGphPXtkZXN0aW5hdGlvbklkOmEudGFyZ2V0LmRlc3RpbmF0aW9uSWQsZW5kcG9pbnQ6Yy5lbmRwb2ludCwKZXZlbnRJZDphLk0uZXZlbnRJZCxwcmlvcml0eUlkOmEuTS5wcmlvcml0eUlkfTtmLlI9PT12b2lkIDB8fGMuZmEhPT0yJiYoYy5mYSE9PTF8fGUubGVuZ3RoKXx8a24ucmVnaXN0ZXIoamEsZi5SLFcpO3ZhciBmYT1mdW5jdGlvbihkYSxtYSl7eCgpO2lmKHEuc3RhdHVzIT09dm9pZCAwKXJldHVybiBQKDE5MiksITE7cS5zdGF0dXM9ZGE7ZS5wdXNoKHEpO3ZhciBQYTtkPT1udWxsfHwoUGE9ZC51byk9PW51bGx8fFBhLmNhbGwoZCxhLG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30scSksbWEpO3JldHVybiEwfSxzYT17Rm86amEscmQ6ZnVuY3Rpb24oKXtmYSgyKSYmbCgpfSxvbkZhaWx1cmU6ZnVuY3Rpb24oKXtmYSgzKSYmbCgpfSxwZTpmdW5jdGlvbihkYSl7ZmEoZGEuc3RhdHVzPT09MD8xOmRhLm9rPzA6MyxkYSkmJm4oKX0samY6ZnVuY3Rpb24oKXtmYSgxKSYmbigpfX07T3UoYyxhLFcsUyxJKTtmLnNlbmRSZXF1ZXN0KHNhLFcsbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCwKe30sSSYme2JvZHk6SX0sRyYme0diOkd9LE4mJnthZjpOfSkpfX19LHU9ITEsdix4PWZ1bmN0aW9uKCl7diE9PXZvaWQgMCYmKEEuY2xlYXJUaW1lb3V0KHYpLHY9dm9pZCAwKX07TSg1NzQpJiYodj1BLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2PXZvaWQgMDt1PSEwO2lmKHEuc3RhdHVzPT09dm9pZCAwKXtxLnN0YXR1cz00O3Euc2I9PT12b2lkIDAmJihxLnNiPSJbZmFpbGVkIHRvIGJ1aWxkXSAiK3ApO2UucHVzaChxKTt2YXIgejtkPT1udWxsfHwoej1kLnVvKT09bnVsbHx8ei5jYWxsKGQsYSxuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHEpLHZvaWQgMCk7bCgpfX0sNUUzKSk7dmFyIHk9e0ljOnAsbWV0aG9kOmYseXY6ZSxpc1ByaW1hcnk6ZyxDdDpofTt0cnl7Yy5IKGEseSx0KX1jYXRjaCh6KXt4KCksUCgxODgpLGwoKX19CmZ1bmN0aW9uIE91KGEsYixjLGQsZSl7aWYoYS5qYSl7dmFyIGY9Yi50YXJnZXQuZGVzdGluYXRpb25JZCxnPWEuZW5kcG9pbnQ7aWYoZz09PTQ1fHxnPT09NDZ8fGc9PT02OXx8Zz09PTU4fHxnPT09NTcpe3ZhciBoPS9bPyZddGlkcz0oW14mXSspLy5leGVjKGQpO2Y9aD9kZWNvZGVVUklDb21wb25lbnQoaFsxXSkuc3BsaXQoIn4iKTpbZl19TWwoe3RhcmdldElkOmYscmVxdWVzdDpuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHt1cmw6YyxwYXJhbWV0ZXJFbmNvZGluZzphLnBhcmFtZXRlckVuY29kaW5nLGVuZHBvaW50OmEuZW5kcG9pbnR9LGU/e3Bvc3RCb2R5OmV9Ont9KSxxYjp7ZXZlbnRJZDpiLk0uZXZlbnRJZCxwcmlvcml0eUlkOmIuTS5wcmlvcml0eUlkfSxGajp7ZXZlbnRJZDpRKGIsSC5KLnVmKSxwcmlvcml0eUlkOlEoYixILkoudmYpfX0pfX0KZnVuY3Rpb24gTnUoYSl7cmV0dXJuIGEmJmEhPT0iPyI/YVswXSE9PSI/Ij8iPyIuY29uY2F0KGEpOmE6IiJ9O2Z1bmN0aW9uIFB1KGEsYixjLGQsZSl7dmFyIGY7ZT09bnVsbHx8KGY9ZS52dik9PW51bGx8fGYuY2FsbChlLGEsYik7aWYoIWMubGVuZ3RoKXt2YXIgZztlPT1udWxsfHwoZz1lLlRzKT09bnVsbHx8Zy5jYWxsKGUsYSxiLFtdKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKX12YXIgaD1bXSxsPXt0azpiLG1rOmMsams6ZH07aC5wdXNoKEx1KGEsYixjLGUsITAsbCkpO2Zvcih2YXIgbj1tKGQpLHA9bi5uZXh0KCk7IXAuZG9uZTtwPW4ubmV4dCgpKWgucHVzaChMdShhLGIscC52YWx1ZSxlLCExLGwpKTtyZXR1cm4gSnUoaCkudGhlbihmdW5jdGlvbihxKXtmb3IodmFyIHI9W10sdD1tKHEpLHU9dC5uZXh0KCk7IXUuZG9uZTt1PXQubmV4dCgpKXIucHVzaC5hcHBseShyLHcodS52YWx1ZSkpO3ZhciB2O2U9PW51bGx8fCh2PWUuVHMpPT1udWxsfHx2LmNhbGwoZSxhLGIscik7cmV0dXJuIHJ9KX07ZnVuY3Rpb24gUXUoYSxiKXt2YXIgYz1PYS5hcHBseSgyLGFyZ3VtZW50cyksZDtiPT1udWxsfHwoZD1iLnd2KT09bnVsbHx8ZC5jYWxsKGIsYSxjKTtmb3IodmFyIGU9W10sZj1tKGMpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKWUucHVzaChSdShhLGcudmFsdWUpKTtmb3IodmFyIGg9W10sbD1tKGUpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD1uLnZhbHVlO2gucHVzaChQdShhLHAudGsscC5tayxwLmprLGIpKX1KdShoKS50aGVuKGZ1bmN0aW9uKHEpe2Zvcih2YXIgcj1bXSx0PW0ocSksdT10Lm5leHQoKTshdS5kb25lO3U9dC5uZXh0KCkpci5wdXNoLmFwcGx5KHIsdyh1LnZhbHVlKSk7dmFyIHY7Yj09bnVsbHx8KHY9Yi5Rcyk9PW51bGx8fHYuY2FsbChiLGEsYyxyKX0pfQpmdW5jdGlvbiBSdShhLGIpe3ZhciBjPWZ1bmN0aW9uKGYpe3JldHVybiBmLm1ldGhvZC5pc1N1cHBvcnRlZCgpJiZmLmVuZHBvaW50LmlzU3VwcG9ydGVkKGEpJiZmLmVuZHBvaW50LksoYSl9LGQ9KGIuSChhKXx8W10pLmZpbHRlcihjKSxlPVtdO2QubGVuZ3RoJiYoZT0oYi5LKGEpfHxbXSkubWFwKGZ1bmN0aW9uKGYpe3JldHVybiBmLmZpbHRlcihjKX0pLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4gZi5sZW5ndGg+MH0pKTtyZXR1cm57dGs6YixtazpkLGprOmV9fTt2YXIgWD17Vjp7TWs6ImNhbGxfY29udmVyc2lvbiIsemQ6ImNjbV9jb252ZXJzaW9uIixRazoiY29tbW9uX2F3Iix4YToiY29udmVyc2lvbiIsd3E6ImZsb29kbGlnaHQiLFlkOiJnYV9jb252ZXJzaW9uIixaZDoiZ2NwX3JlbWFya2V0aW5nIixLYToicGFnZV92aWV3Iix1YjoicmVtYXJrZXRpbmciLE9iOiJ1c2VyX2RhdGFfbGVhZCIsRmI6InVzZXJfZGF0YV93ZWIifX07ZnVuY3Rpb24gYnYoYSxiKXtiJiZHYihiLGZ1bmN0aW9uKGMsZCl7dHlwZW9mIGQhPT0ib2JqZWN0IiYmZCE9PXZvaWQgMCYmKGFbIjFwLiIrY109U3RyaW5nKGQpKX0pfTt2YXIgbXY9e05nOiJ2YWx1ZSIscGI6ImNvbnZlcnNpb25Db3VudCIsT2c6MX0sbnY9e05nOiJ0aW1lb3V0cyIscGI6InRpbWVvdXRzIixPZzowfSxvdj17Tmc6ImVvcENvdW50IixwYjoiZW5kT2ZQYWdlQ291bnQiLE9nOjB9LHB2PXtOZzoiZXJyb3JzIixwYjoiZXJyb3JzIixPZzowfSxxdj1bbXYsbnYscHYsb3ZdO2Z1bmN0aW9uIHJ2KGEsYil7Yj1iPT09dm9pZCAwPzE6YjtpZighc3YoYSkpcmV0dXJue307dmFyIGM9dHYocXYpLGQ9Y1thLnBiXTtpZihkPT09dm9pZCAwfHxkPT09LTEpcmV0dXJuIGM7dmFyIGU9e30sZj1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGMsKGVbYS5wYl09ZCtiLGUpKTtyZXR1cm4gdXYoZik/ZjpjfQpmdW5jdGlvbiB0dihhKXt2YXIgYjthOnt2YXIgYz1ucigiZ2NsX2N0ciIpO2lmKGMuZXJyb3I9PT0wJiZjLnZhbHVlJiZ0eXBlb2YgYy52YWx1ZT09PSJvYmplY3QiKXt2YXIgZD1jLnZhbHVlO3RyeXtiPSJ2YWx1ZSJpbiBkJiZ0eXBlb2YgZC52YWx1ZT09PSJvYmplY3QiP2QudmFsdWU6dm9pZCAwO2JyZWFrIGF9Y2F0Y2gocCl7fX1iPXZvaWQgMH1mb3IodmFyIGU9YixmPXt9LGc9bShhKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIGw9aC52YWx1ZTtpZihlJiZzdihsKSl7dmFyIG49ZVtsLk5nXTtuPT09dm9pZCAwfHxOdW1iZXIuaXNOYU4obik/ZltsLnBiXT0tMTpmW2wucGJdPU51bWJlcihuKX1lbHNlIGZbbC5wYl09LTF9cmV0dXJuIGZ9CmZ1bmN0aW9uIHV2KGEsYil7Yj1ifHx7fTtmb3IodmFyIGM9TmIoKSxkPXVxKGIsYywhMCksZT17fSxmPW0ocXYpLGc9Zi5uZXh0KCk7IWcuZG9uZTtnPWYubmV4dCgpKXt2YXIgaD1nLnZhbHVlLGw9YVtoLnBiXTtsIT09dm9pZCAwJiZsIT09LTEmJihlW2guTmddPWwpfWUuY3JlYXRpb25UaW1lTXM9YztyZXR1cm4ga3IoImdjbF9jdHIiLHt2YWx1ZTplLGV4cGlyZXM6TnVtYmVyKGQuZXhwaXJlcyl9KT09PTA/ITA6ITF9ZnVuY3Rpb24gc3YoYSl7cmV0dXJuIEJsKFsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdKT8hYS5mdHx8WWYoYS5mdCk6ITF9ZnVuY3Rpb24gdnYoYSl7cmV0dXJuIEJsKFsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdKT8hYS5Bc3x8WWYoYS5Bcyk6ITF9O2Z1bmN0aW9uIHd2KCl7aWYoeHYoKSl7dmFyIGE9bnIoImxhc3RfY29udnMiKTtpZihhLmVycm9yPT09MCYmYS52YWx1ZSYmdHlwZW9mIGEudmFsdWU9PT0ib2JqZWN0Iil7dmFyIGI9YS52YWx1ZTtpZihiLnZhbHVlJiZBcnJheS5pc0FycmF5KGIudmFsdWUpKXt2YXIgYz1iLnZhbHVlO2lmKCEoYy5sZW5ndGg+MSkpe2Zvcih2YXIgZD1bXSxlPW0oYyksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWU7aWYodHlwZW9mIGchPT0ib2JqZWN0Inx8Zz09PW51bGx8fHR5cGVvZiBnLnJhbmRvbSE9PSJudW1iZXIifHx0eXBlb2YgZy5sYWJlbCE9PSJzdHJpbmcifHxnLmxhYmVsLmxlbmd0aD4yMDApcmV0dXJuO2QucHVzaCh7cmFuZG9tOmcucmFuZG9tLGxhYmVsOmcubGFiZWx9KX1yZXR1cm4gZH19fX19CmZ1bmN0aW9uIHl2KGEsYil7IXh2KCl8fGEubGVuZ3RoPjF8fGEubGVuZ3RoPT09MSYmYVswXS5sYWJlbC5sZW5ndGg+MjAwfHwoYj1ifHx7fSxrcigibGFzdF9jb252cyIse3ZhbHVlOmEsZXhwaXJlczpOdW1iZXIodXEoYikuZXhwaXJlcyl9KSl9ZnVuY3Rpb24geHYoKXtyZXR1cm4gQmwoWyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl0pJiZZZigxMSl9O2Z1bmN0aW9uIHp2KGEpe3ZhciBiPU1hdGgucm91bmQoTWF0aC5yYW5kb20oKSoyMTQ3NDgzNjQ3KTtyZXR1cm4gYT9TdHJpbmcoYl5uZyhhKSYyMTQ3NDgzNjQ3KTpTdHJpbmcoYil9ZnVuY3Rpb24gQXYoYSl7cmV0dXJuW3p2KGEpLE1hdGgucm91bmQoTmIoKS8xRTMpXS5qb2luKCIuIil9ZnVuY3Rpb24gQnYoYSxiLGMsZCxlKXt2YXIgZj1ycShiKSxnO3JldHVybihnPWdxKGEsZixzcShjKSxkLGUpKT09bnVsbD92b2lkIDA6Zy5Dcn07dmFyIEN2PVsiMSJdLER2PXt9LEV2PXt9O2Z1bmN0aW9uIEZ2KGEpe3JldHVybiBFdltHdihhKV19ZnVuY3Rpb24gSHYoYSxiKXtiPWI9PT12b2lkIDA/ITA6Yjt2YXIgYz1HdihhLnByZWZpeCk7aWYoRHZbY10pSXYoYSksSnYoYSk7ZWxzZSBpZihLdihjLGEucGF0aCxhLmRvbWFpbikpe3ZhciBkPUZ2KGEucHJlZml4KXx8e2lkOnZvaWQgMCxrYzp2b2lkIDB9O2ImJkx2KGEsZCk7SXYoYSk7SnYoYSl9ZWxzZXt2YXIgZT1UaigiYXVpZGRjIik7aWYoZSlzYigiVEFHR0lORyIsMTcpLER2W2NdPWU7ZWxzZSBpZihiKXt2YXIgZj1HdihhLnByZWZpeCksZz1BdigpO012KGYsZyxhKTtLdihjLGEucGF0aCxhLmRvbWFpbik7SXYoYSwhMCk7SnYoYSwhMCl9fX0KZnVuY3Rpb24gSXYoYSxiKXsoYj09PXZvaWQgMD8wOmIpJiZzdihtdikmJm9yKCJnY2xfY3RyIik7aWYodnYobXYpJiZ0dihbbXZdKVttdi5wYl09PT0tMSl7Zm9yKHZhciBjPXt9LGQ9KGNbbXYucGJdPTAsYyksZT1tKHF2KSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZTtnIT09bXYmJnZ2KGcpJiYoZFtnLnBiXT0wKX11dihkLGEpfX1mdW5jdGlvbiBKdihhLGIpeyhiPT09dm9pZCAwPzA6YikmJnh2KCkmJm9yKCJsYXN0X2NvbnZzIik7IUJsKFsiYWRfc3RvcmFnZSIsImFkX3VzZXJfZGF0YSJdKXx8IVlmKDEyKXx8d3YoKXx8eXYoW10sYSl9CmZ1bmN0aW9uIEx2KGEsYil7dmFyIGM9R3YoYS5wcmVmaXgpLGQ9RHZbY107aWYoZCl7dmFyIGU9ZC5zcGxpdCgiLiIpO2lmKGUubGVuZ3RoPT09Mil7dmFyIGY9TnVtYmVyKGVbMV0pfHwwO2lmKGYpe3ZhciBnPWQ7WWYoMTkpJiZiLmZpP2c9ZCsiLiIrKGIuc2Vzc2lvbklkfHwiLS4tIikrIi4iKyhiLmtjP2Iua2M6TWF0aC5mbG9vcihOYigpLzFFMykpKyIuIitiLmZpKyIuIisoYi5MYz9iLkxjOk1hdGguZmxvb3IoTmIoKS8xRTMpKTpiLnNlc3Npb25JZCYmKGc9ZCsiLiIrYi5zZXNzaW9uSWQrIi4iKyhiLmtjP2Iua2M6TWF0aC5mbG9vcihOYigpLzFFMykpKTtNdihjLGcsYSxmKjFFMyl9fX19ZnVuY3Rpb24gTXYoYSxiLGMsZCl7dmFyIGU7ZT1bIjEiLHRxKGMuZG9tYWluLGMucGF0aCksYl0uam9pbigiLiIpO3ZhciBmPXVxKGMsZCk7Zi5NYz1OdigpO29xKGEsZSxmKX0KZnVuY3Rpb24gS3YoYSxiLGMpe3ZhciBkPUJ2KGEsYixjLEN2LE52KCkpO2lmKCFkKXJldHVybiExO092KGEsZCk7cmV0dXJuITB9ZnVuY3Rpb24gT3YoYSxiKXt2YXIgYz1iLnNwbGl0KCIuIik7aWYoYy5sZW5ndGg9PT0zKUV2W2FdPXtzZXNzaW9uSWQ6Y1swXSsiLiIrY1sxXSxrYzpOdW1iZXIoY1syXSl8fDAsTGM6MH07ZWxzZSBpZihjLmxlbmd0aD49MiYmKER2W2FdPWNbMF0rIi4iK2NbMV0sYy5zaGlmdCgpLGMuc2hpZnQoKSxjLmxlbmd0aD49Mykpe3ZhciBkPXtzZXNzaW9uSWQ6Y1swXT09PSItIj92b2lkIDA6Y1swXSsiLiIrY1sxXSxrYzpOdW1iZXIoY1syXSl8fDAsTGM6MH07aWYoWWYoMTkpJiZjLmxlbmd0aD49Nil7dmFyIGU9Y1szXSsiLiIrY1s0XSxmPU51bWJlcihjWzVdKXx8MDtlJiZmIT09MCYmKGQuZmk9ZSxkLkxjPWYpfUV2W2FdPWR9fWZ1bmN0aW9uIEd2KGEpe3JldHVybihhfHwiX2djbCIpKyJfYXUifQpmdW5jdGlvbiBQdihhKXtmdW5jdGlvbiBiKCl7QmwoYykmJmEoKX12YXIgYz1OdigpO0hsKGZ1bmN0aW9uKCl7YigpO0JsKGMpfHxJbChiLGMpfSxjKX1mdW5jdGlvbiBRdihhKXt2YXIgYj1VcSghMCksYz1HdihhLnByZWZpeCk7UHYoZnVuY3Rpb24oKXt2YXIgZD1iW2NdO2lmKGQpe092KGMsZCk7dmFyIGU9TnVtYmVyKER2W2NdLnNwbGl0KCIuIilbMV0pKjFFMztpZihlKXtzYigiVEFHR0lORyIsMTYpO3ZhciBmPXVxKGEsZSk7Zi5NYz1OdigpO3ZhciBnPVsiMSIsdHEoYS5kb21haW4sYS5wYXRoKSxkXS5qb2luKCIuIik7b3EoYyxnLGYpfX19KX1mdW5jdGlvbiBSdihhLGIsYyxkLGUpe2U9ZXx8e307dmFyIGY9ZnVuY3Rpb24oKXt2YXIgZz17fSxoPUJ2KGEsZS5wYXRoLGUuZG9tYWluLEN2LE52KCkpO2gmJihnW2FdPWgpO3JldHVybiBnfTtQdihmdW5jdGlvbigpe2FyKGYsYixjLGQpfSl9CmZ1bmN0aW9uIE52KCl7cmV0dXJuWyJhZF9zdG9yYWdlIiwiYWRfdXNlcl9kYXRhIl19O3ZhciBWdj0iZW1haWwgZW1haWxfYWRkcmVzcyBzaGEyNTZfZW1haWxfYWRkcmVzcyBwaG9uZV9udW1iZXIgc2hhMjU2X3Bob25lX251bWJlciBmaXJzdF9uYW1lIGxhc3RfbmFtZSIuc3BsaXQoIiAiKSxXdj0iZmlyc3RfbmFtZSBzaGEyNTZfZmlyc3RfbmFtZSBsYXN0X25hbWUgc2hhMjU2X2xhc3RfbmFtZSBzdHJlZXQgc2hhMjU2X3N0cmVldCBjaXR5IHJlZ2lvbiBjb3VudHJ5IHBvc3RhbF9jb2RlIi5zcGxpdCgiICIpO2Z1bmN0aW9uIFh2KGEsYil7aWYoIWIuX3RhZ19tZXRhZGF0YSl7Zm9yKHZhciBjPXt9LGQ9MCxlPTA7ZTxhLmxlbmd0aDtlKyspZCs9WXYoYVtlXSxiLGMpPzE6MDtkPjAmJihiLl90YWdfbWV0YWRhdGE9Yyl9fQpmdW5jdGlvbiBZdihhLGIsYyl7dmFyIGQ9YlthXTtpZihkPT09dm9pZCAwfHxkPT09bnVsbClyZXR1cm4hMTtjW2FdPUFycmF5LmlzQXJyYXkoZCk/ZC5tYXAoZnVuY3Rpb24oKXtyZXR1cm57bW9kZToiYyJ9fSk6e21vZGU6ImMifTtyZXR1cm4hMH1mdW5jdGlvbiBadihhKXtpZihNKDUyMykmJmEpe1h2KFZ2LGEpO2Zvcih2YXIgYj1CYihhLmFkZHJlc3MpLGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXTtkJiZYdihXdixkKX12YXIgZT1hLmhvbWVfYWRkcmVzcztlJiZYdihXdixlKX19CmZ1bmN0aW9uICR2KGEsYixjKXtmdW5jdGlvbiBkKGYsZyl7Zz1TdHJpbmcoZykuc3Vic3RyaW5nKDAsMTAwKTtlLnB1c2goIiIrZitlbmNvZGVVUklDb21wb25lbnQoZykpfWlmKCFjKXJldHVybiIiO3ZhciBlPVtdO2QoImkiLFN0cmluZyhhKSk7ZCgiZiIsYik7Yy5tb2RlJiZkKCJtIixjLm1vZGUpO2MuaXNQcmVIYXNoZWQmJmQoInAiLCIxIik7Yy5yYXdMZW5ndGgmJmQoInIiLFN0cmluZyhjLnJhd0xlbmd0aCkpO2Mubm9ybWFsaXplZExlbmd0aCYmZCgibiIsU3RyaW5nKGMubm9ybWFsaXplZExlbmd0aCkpO2MubG9jYXRpb24mJmQoImwiLGMubG9jYXRpb24pO2Muc2VsZWN0b3ImJmQoInMiLGMuc2VsZWN0b3IpO3JldHVybiBlLmpvaW4oIi4iKX07dmFyIGF3PXZvaWQgMDtmdW5jdGlvbiBidygpe2lmKCFhdyl7dmFyIGE9b20oam0uYmEub3AsbmV3IE1hcCk7YXc9bmV3IG9nKGEpfXJldHVybiBhd307dmFyIG14PU9iamVjdC5mcmVlemUoe2F0dHJpYnV0aW9uc3JjOiIifSksbng9T2JqZWN0LmZyZWV6ZSh7ZXZlbnRTb3VyY2VFbGlnaWJsZTohMSx0cmlnZ2VyRWxpZ2libGU6ITB9KTtmdW5jdGlvbiBveCgpe3ZhciBhPVhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZTtyZXR1cm4gYSYmeWIoYS5zZXRBdHRyaWJ1dGlvblJlcG9ydGluZyl9O3ZhciBweD1PYmplY3QuZnJlZXplKHtjYWNoZToibm8tc3RvcmUiLGNyZWRlbnRpYWxzOiJpbmNsdWRlIixtZXRob2Q6IkdFVCIsa2VlcGFsaXZlOiEwLHJlZGlyZWN0OiJmb2xsb3cifSk7CmZ1bmN0aW9uIHF4KGEsYixjLGQsZSxmKXtpZigheWIoQS5mZXRjaCkpcmV0dXJuIGY9PW51bGx8fGYodm9pZCAwLHZvaWQgMCksITE7dmFyIGc9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxweCk7YiYmKGcuYm9keT1iLGcubWV0aG9kPSJQT1NUIik7bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCxnLGQpO0EuZmV0Y2goYSxnKS50aGVuKGZ1bmN0aW9uKGgpe2lmKGgub2spe2lmKGguYm9keSl7dmFyIGw9aC5ib2R5LmdldFJlYWRlcigpLG49bmV3IFRleHREZWNvZGVyO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihwKXtmdW5jdGlvbiBxKCl7bC5yZWFkKCkudGhlbihmdW5jdGlvbihyKXt2YXIgdDt0PXIuZG9uZTt2YXIgdT1uLmRlY29kZShyLnZhbHVlLHtzdHJlYW06IXR9KTt1PWMuUit1O2Zvcih2YXIgdj11LmluZGV4T2YoIlxuXG4iKTt2IT09LTE7KXt2YXIgeD1aZyx5O2E6e3ZhciB6PW0odS5zdWJzdHJpbmcoMCx2KS5zcGxpdCgiXG4iKSksQz0Kei5uZXh0KCkudmFsdWUsRD16Lm5leHQoKS52YWx1ZTtpZihTYihDLCJldmVudDogbWVzc2FnZSIpJiZTYihELCJkYXRhOiAiKSl7dmFyIEk9RC5zdWJzdHJpbmcoNik7dHJ5e3k9SlNPTi5wYXJzZShJKTticmVhayBhfWNhdGNoKEcpe319eT12b2lkIDB9eChjLHkpO3U9dS5zdWJzdHJpbmcodisyKTt2PXUuaW5kZXhPZigiXG5cbiIpfWMuUj11O3Q/KGU9PW51bGx8fGUoaCkscCgpKTpxKCl9KS5jYXRjaChmdW5jdGlvbigpe2U9PW51bGx8fGUoaCk7cCgpfSl9cSgpfSl9ZT09bnVsbHx8ZShoKX1lbHNlIGY9PW51bGx8fGYoaCx2b2lkIDApfSkuY2F0Y2goZnVuY3Rpb24oaCl7Zj09bnVsbHx8Zih2b2lkIDAsaCl9KTtyZXR1cm4hMH07dmFyIHJ4PWZ1bmN0aW9uKGEpe2h1LmNhbGwodGhpcywiRmV0Y2hSaWNoUmVzcG9uc2UiLDEpO3RoaXMuTj1hfTt3YShyeCxodSk7cngucHJvdG90eXBlLmlzU3VwcG9ydGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHliKEEuZmV0Y2gpfTtyeC5wcm90b3R5cGUuSD1mdW5jdGlvbigpe3JldHVybiEwfTtyeC5wcm90b3R5cGUuSz1mdW5jdGlvbihhLGIsYyl7cXgoYixjPT1udWxsP3ZvaWQgMDpjLmJvZHksdGhpcy5OLGM9PW51bGw/dm9pZCAwOmMuR2IsYS5wZSxmdW5jdGlvbihkLGUpe2Eub25GYWlsdXJlKGUpfSl9O3ZhciBDeD1mdW5jdGlvbigpe1lnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07d2EoQ3gsWWcpO0N4LnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYil7WmMoYSx2b2lkIDAsJGcodGhpcyxiKSxiLmF0dHJpYnV0aW9uX3JlcG9ydGluZyYmb3goKT9teDp7fSl9O0N4LnByb3RvdHlwZS5IPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5hdHRyaWJ1dGlvbl9yZXBvcnRpbmcmJm94KCk/e2F0dHJpYnV0aW9uUmVwb3J0aW5nOm54fTp7fSxkPSRnKHRoaXMsYik7Yi5wcm9jZXNzX3Jlc3BvbnNlP3F4KGEsdm9pZCAwLHRoaXMsYyx2b2lkIDAsZCk6bWQoYSx2b2lkIDAsYyx2b2lkIDAsZCl9O3ZhciBReD1mdW5jdGlvbihhLGIpe3RoaXMuSD1hO3RoaXMudGltZW91dE1zPWI7dGhpcy5SYj12b2lkIDB9LFJ4PWZ1bmN0aW9uKGEpe2EuUmJ8fChhLlJiPXNldFRpbWVvdXQoZnVuY3Rpb24oKXthLkgoKTthLlJiPXZvaWQgMH0sYS50aW1lb3V0TXMpKX0sVG49ZnVuY3Rpb24oYSl7YS5SYiYmKGNsZWFyVGltZW91dChhLlJiKSxhLlJiPXZvaWQgMCl9O3ZhciBTeD1mdW5jdGlvbigpe3ZhciBhPU5mKDY2LDApO3RoaXMuSz1bXTt0aGlzLlI9YTt0aGlzLkg9WWEoKX0sVXg9ZnVuY3Rpb24oYSl7dmFyIGI9VHg7Yi5LLnB1c2goYSk7Yi5OfHwoYi5OPWZ1bmN0aW9uKCl7Zm9yKHZhciBjPW0oYi5LKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9ZC52YWx1ZTt0cnl7ZSgpfWNhdGNoKGwpe319Zm9yKHZhciBmPW0oYi5ILnZhbHVlcygpKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSl7dmFyIGg9dm9pZCAwOyhoPWcudmFsdWUud2UpPT1udWxsfHxUbihoKX1iLkguY2xlYXIoKX0sJGMoQSwicGFnZWhpZGUiLGIuTikpfSxWeD1mdW5jdGlvbihhKXt2YXIgYj1hLm1hdGNoKE1uKVszXXx8bnVsbCxjPShiP2RlY29kZVVSSShiKTpiKXx8IiIsZD1QbihhLCJsYWJlbCIpfHwiIixlPVBuKGEsInJhbmRvbSIpfHwiIjtyZXR1cm4gYysiOiIrTG4oZCkrIjoiK0xuKGUpfSxXeD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9VHgsCmU9VngoYSk7aWYoIShkLkguaGFzKGUpfHxkLkguc2l6ZT49ZC5SKSl7dmFyIGY9e307YiYmYj4wJiZjJiYoZi53ZT1uZXcgUXgoYyxiKSk7ZC5ILnNldChlLGYpO3ZhciBnOyhnPWYud2UpPT1udWxsfHxSeChnKX19LFVuPWZ1bmN0aW9uKGEsYil7dmFyIGM9VngoYiksZCxlOyhkPWEuSC5nZXQoYykpPT1udWxsfHwoZT1kLndlKT09bnVsbHx8VG4oZSk7YS5ILmRlbGV0ZShjKX07U3gucHJvdG90eXBlLmdldFNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ILnNpemV9O3ZhciBkZztmdW5jdGlvbiBoeShhLGIpe3ZhciBjOyhjPWRnKT09bnVsbHx8JGYoYy5ILGEsYil9O3ZhciBpeT1BYShbIi8iXSksank9ZnVuY3Rpb24oYSl7dGhpcy5IPWE7dGhpcy5mYWlsdXJlVHlwZT12b2lkIDB9O2p5LnByb3RvdHlwZS5pbz1mdW5jdGlvbihhLGIsYyl7dHJ5e3ZhciBkPXRoaXMuSC5hY3RpdmU7ZD8oZC5wb3N0TWVzc2FnZSh7dHlwZToxLGNvbW1hbmQ6YX0pLGIoe2RhdGE6IiJ9KSk6Yyh7ZmFpbHVyZVR5cGU6MTMsZGF0YToiIn0pfWNhdGNoKGUpe2Moe2ZhaWx1cmVUeXBlOjExLGRhdGE6ZS5tZXNzYWdlfSl9fTt2YXIga3k9ZnVuY3Rpb24oYSxiKXt0aGlzLmZhaWx1cmVUeXBlPWE7dGhpcy5IPWJ9O2t5LnByb3RvdHlwZS5pbz1mdW5jdGlvbihhLGIsYyl7Yyh7ZmFpbHVyZVR5cGU6dGhpcy5mYWlsdXJlVHlwZSxkYXRhOiJmIit0aGlzLmZhaWx1cmVUeXBlKygidCIrKChuZXcgRGF0ZSkuZ2V0VGltZSgpLXRoaXMuSCkpfSl9Owp2YXIgbnk9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0aGlzLmluaXRUaW1lPShuZXcgRGF0ZSkuZ2V0VGltZSgpO3RoaXMuSD1uZXcga3koMTUsdGhpcy5pbml0VGltZSk7dmFyIGM9bmV3IFByb21pc2UoZnVuY3Rpb24oZSl7QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZSgpfSwyMCl9KSxkPWx5KGEpLnRoZW4oZnVuY3Rpb24oZSl7Yi5IPW5ldyBqeShlKTtteShiLGUpfSkuY2F0Y2goZnVuY3Rpb24oKXtiLkg9bmV3IGt5KDQsYi5pbml0VGltZSl9KTt0aGlzLks9UHJvbWlzZS5yYWNlKFtjLGRdKX0sbXk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1mdW5jdGlvbihkKXtkJiZkLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdlIixmdW5jdGlvbigpe2lmKGQuc3RhdGU9PT0icmVkdW5kYW50Iil7dmFyIGU9Yi5hY3RpdmU7ZSYmZS5zdGF0ZSE9PSJyZWR1bmRhbnQifHwoYS5IPW5ldyBreSgxMCxhLmluaXRUaW1lKSl9fSl9O2MoYi5hY3RpdmUpO2MoYi53YWl0aW5nKTtjKGIuaW5zdGFsbGluZyk7CmIuYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZm91bmQiLGZ1bmN0aW9uKCl7YyhiLmluc3RhbGxpbmcpfSl9O255LnByb3RvdHlwZS5kZWxlZ2F0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpczt0aGlzLksudGhlbihmdW5jdGlvbigpe2QuSC5pbyhhLGIsYyl9KX07bnkucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuIDJ9Owp2YXIgbHk9ZnVuY3Rpb24oYSl7dmFyIGIsYz1MZigxMSk7Yz1MZigxMCk7Yj1jO3ZhciBkPXtzY29wZTooVGIoYS5ocmVmLCIvIik/YS5ocmVmLnNsaWNlKDAsLTEpOmEuaHJlZikrIi9fL3NlcnZpY2Vfd29ya2VyIn07YiYmKGQudXBkYXRlVmlhQ2FjaGU9ImFsbCIpO3ZhciBlLGY9b3koYSxiKSxnPW5ldyBNYXAoW1sicGF0aCIsYS5wYXRobmFtZV1dKSxoPUpwKGtjKGYpLnRvU3RyaW5nKCkpO2U9THAoaC56ayxoLnBhcmFtcyxoLmZyYWdtZW50LGcpO3ZhciBsPUljKCksbj1rYyhlKTt0cnl7cmV0dXJuIGwucmVnaXN0ZXIobixkKX1jYXRjaChwKXt0cnl7cmV0dXJuIGwucmVnaXN0ZXIobi50b1N0cmluZygpLGQpfWNhdGNoKHEpe3JldHVybiBQcm9taXNlLnJlamVjdChxKX19fTsKZnVuY3Rpb24gb3koYSxiKXtmb3IodmFyIGM9S3AoaXkpLGQ9YS5wYXRobmFtZS5zcGxpdCgiLyIpLmZpbHRlcihmdW5jdGlvbihoKXtyZXR1cm4gaC5sZW5ndGg+MH0pLGU9W10uY29uY2F0KHcoZCksWyJfIiwic2VydmljZV93b3JrZXIiLGIsInN3LmpzIl0pLGY9bShlKSxnPWYubmV4dCgpOyFnLmRvbmU7Zz1mLm5leHQoKSljPU1wKGMsZy52YWx1ZSk7cmV0dXJuIGN9O2Z1bmN0aW9uIHB5KGEpe3ZhciBiPW5tKGptLmJhLk9oKSxjPWI9PW51bGw/dm9pZCAwOmJbYV07Y3x8YSE9PSJsaXRlInx8KGM9Yj09bnVsbD92b2lkIDA6Yi5mdWxsKTtyZXR1cm4gY312YXIgcXk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXB5KCJmdWxsIik7ZD9kLmRlbGVnYXRlKGEsYixjKTpjKHtmYWlsdXJlVHlwZToxNn0pfTtmdW5jdGlvbiByeShhLGIsYyxkLGUpe3F5KHtjb21tYW5kVHlwZTowLHBhcmFtczp7dXJsOmEsbWV0aG9kOjEsdGVtcGxhdGVzOmIsYm9keToiIixwcm9jZXNzUmVzcG9uc2U6ITEsZW5jcnlwdGlvbktleVN0cmluZzplLHNvUmVmZXJyZXI6QS5sb2NhdGlvbi5ocmVmfX0sYyxmdW5jdGlvbihmKXtkKGYuZmFpbHVyZVR5cGUsZi5kYXRhKX0pfTt2YXIgRHk9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSD0wO3RoaXMuSz0hMTtNKDQ2MikmJlVtKCJmcyIsZnVuY3Rpb24oKXtyZXR1cm4gYS5IPjAmJmEuSDw1P1N0cmluZyhhLkgpOnZvaWQgMH0sITEpfSxFeTtmdW5jdGlvbiBGeShhLGIpe0V5fHwoRXk9bmV3IER5KTt2YXIgYz1FeTtNKDQ2MikmJmZuLksmJihiPT09Imd0bS5mb3JtU3VibWl0Inx8Yj09PSJmb3JtX3N1Ym1pdCImJklmKDQ1KSkmJihhPT09MXx8Yy5LKSYmKGMuSz0hMCxjLkg9YSxhIT09NT9WbSgiZnMiKTpRbS5ILmZzPSExKX07dmFyIEh5PXtYOntXcTowLEVrOjEsWmc6MixYazozLG1pOjQsVms6NSxXazo2LFlrOjcsbmk6OCx0bTo5LHNtOjEwLFRpOjExLHZtOjEyLEJoOjEzLEVtOjE0LGlqOjE1LFNxOjE2LGpkOjE3LHVqOjE4LHZqOjE5LHdqOjIwLENuOjIxLHhqOjIyfX07SHkuWFtIeS5YLldxXT0iUkVTRVJWRURfWkVSTyI7SHkuWFtIeS5YLkVrXT0iQURTX0NPTlZFUlNJT05fSElUIjtIeS5YW0h5LlguWmddPSJDT05UQUlORVJfRVhFQ1VURV9TVEFSVCI7SHkuWFtIeS5YLlhrXT0iQ09OVEFJTkVSX1NFVFVQX0VORCI7SHkuWFtIeS5YLm1pXT0iQ09OVEFJTkVSX1NFVFVQX1NUQVJUIjtIeS5YW0h5LlguVmtdPSJDT05UQUlORVJfQkxPQ0tJTkdfRU5EIjtIeS5YW0h5LlguV2tdPSJDT05UQUlORVJfRVhFQ1VURV9FTkQiO0h5LlhbSHkuWC5Za109IkNPTlRBSU5FUl9ZSUVMRF9FTkQiO0h5LlhbSHkuWC5uaV09IkNPTlRBSU5FUl9ZSUVMRF9TVEFSVCI7SHkuWFtIeS5YLnRtXT0iRVZFTlRfRVhFQ1VURV9FTkQiOwpIeS5YW0h5Llguc21dPSJFVkVOVF9FVkFMVUFUSU9OX0VORCI7SHkuWFtIeS5YLlRpXT0iRVZFTlRfRVZBTFVBVElPTl9TVEFSVCI7SHkuWFtIeS5YLnZtXT0iRVZFTlRfU0VUVVBfRU5EIjtIeS5YW0h5LlguQmhdPSJFVkVOVF9TRVRVUF9TVEFSVCI7SHkuWFtIeS5YLkVtXT0iR0E0X0NPTlZFUlNJT05fSElUIjtIeS5YW0h5LlguaWpdPSJQQUdFX0xPQUQiO0h5LlhbSHkuWC5TcV09IlBBR0VWSUVXIjtIeS5YW0h5LlguamRdPSJTTklQUEVUX0xPQUQiO0h5LlhbSHkuWC51al09IlRBR19DQUxMQkFDS19FUlJPUiI7SHkuWFtIeS5YLnZqXT0iVEFHX0NBTExCQUNLX0ZBSUxVUkUiO0h5LlhbSHkuWC53al09IlRBR19DQUxMQkFDS19TVUNDRVNTIjtIeS5YW0h5LlguQ25dPSJUQUdfRVhFQ1VURV9FTkQiO0h5LlhbSHkuWC54al09IlRBR19FWEVDVVRFX1NUQVJUIjt2YXIgSXk9e307SXkuWD1IeS5YO3ZhciBKeT17UnU6IkwiLFhxOiJTIixrdjoiWSIsUnQ6IkIiLG51OiJFIixOdToiSSIsZnY6IlRDIix2dToiSFRDIixvdToiRiIsTXU6IkMifSxLeT17WHE6IlMiLGx1OiJWIixhdToiRSIsZHY6InRhZyJ9LEx5PXt9LE15PShMeVtJeS5YLnZqXT0iNiIsTHlbSXkuWC53al09IjUiLEx5W0l5LlgudWpdPSI3IixMeSk7ZnVuY3Rpb24gTnkoYSl7dmFyIGI9RSg1KSxjPU51bWJlcihhLmV2ZW50SWQpLGQ9TnVtYmVyKGEudGFnSWQpO3JldHVybihTYihiLCJHVE0tIik/YjoiR1RNLSIrYikrIjoiKyhBYihjKT9jKyI6IjoiIikrKEFiKGQpP2QrIjoiOiIiKSthLnN0YWdlfTtmdW5jdGlvbiBPeSgpe3ZhciBhPXJkKCk7cmV0dXJuISEoYSYmYS5tYXJrIGluc3RhbmNlb2YgRnVuY3Rpb24mJmEubWVhc3VyZSBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZhLmNsZWFyTWVhc3VyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbiYmYS5jbGVhck1hcmtzIGluc3RhbmNlb2YgRnVuY3Rpb24pfTt2YXIgUHk9ZnVuY3Rpb24oKXt0aGlzLkg9e319LFF5O2Z1bmN0aW9uIFJ5KCl7UXl8fChReT1uZXcgUHkpO3JldHVybiBReX1mdW5jdGlvbiBTeShhKXt2YXIgYj1SeSgpLGM9TnkoYSk7cmV0dXJuIGIuSFtjXX1mdW5jdGlvbiBUeShhLGIpe3ZhciBjO2E6e3ZhciBkPVJ5KCk7aWYoT3koKSl7dmFyIGU9TnkoYSksZixnO2lmKGY9KGc9cmQoKSk9PW51bGw/dm9pZCAwOmcubWFyayhlLGIpKXtjPWQuSFtlXT1mO2JyZWFrIGF9fWM9dm9pZCAwfXJldHVybiBjfTtmdW5jdGlvbiBVeShhLGIpe2lmKE95KCkpe2EuZW50cnk9TnkoYSk7dmFyIGM9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxhKTtjLnN0YWdlPWI7ZGVsZXRlIGMuc2VudDt2YXIgZD1TeShiPT09SXkuWC5qZD97c3RhZ2U6SXkuWC5qZH06YyksZT1TeShhKTtpZihkJiZlJiYhKGQuc3RhcnRUaW1lPmUuc3RhcnRUaW1lKSl7Yy5zdGFnZT1iKyI6IithLnN0YWdlO3ZhciBmPU55KGMpLGc9e3N0YXJ0OmQubmFtZSxlbmQ6ZS5uYW1lfSxoLGw7cmV0dXJuKGw9KGg9cmQoKSk9PW51bGw/dm9pZCAwOmgubWVhc3VyZShmLGcpKT09bnVsbD92b2lkIDA6bC5kdXJhdGlvbn19fTt2YXIgV3k9ZnVuY3Rpb24oKXt2YXIgYT01O1Z5LlJvPjAmJihhPVZ5LlJvKTt0aGlzLks9YTt0aGlzLkg9MDt0aGlzLk49W119LFh5PWZ1bmN0aW9uKGEpe3JldHVybiBhLkg8YS5LPyExOk5iKCktYS5OW2EuSCVhLktdPDFFM30sWXk9ZnVuY3Rpb24oYSl7dmFyIGI9YS5IKyslYS5LO2EuTltiXT1OYigpfTt2YXIgVnk9e1JvOk5mKDMsMCl9LCR5PWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLnlhPVtdO3RoaXMuSD12b2lkIDA7dGhpcy5aPXt9O3RoaXMuSz12b2lkIDA7dGhpcy5qYT1uZXcgV3k7dGhpcy5MYT0xRTM7dGhpcy5SPXRoaXMuTj0hMTt0aGlzLmZhPURiKCk7WnkodGhpcyxmdW5jdGlvbigpe3ZhciBiPVtbInYiLCIzIl0sWyJ0IiwidCJdLFsicGlkIixTdHJpbmcoYS5mYSldXSxjPWR1KCk7YyYmYi5wdXNoKFsiZ3RtIixjXSk7cmV0dXJuIGJ9KTtjZChmdW5jdGlvbigpe2EuZmE9RGIoKX0sODY0RTUpfSxaeT1mdW5jdGlvbihhLGIpe2EueWEucHVzaChiKX0sYXo9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuSDtpZihkPT09dm9pZCAwKWlmKGMpZD1yaigpO2Vsc2UgcmV0dXJuIiI7Zm9yKHZhciBlPVtmaygiaHR0cHM6Ly8iK0UoMjEpKSwiL2EiLCI/aWQ9IitFKDUpXSxmPW0oYS55YSksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpZm9yKHZhciBoPWcudmFsdWUsbD0KaCh7ZXZlbnRJZDpkLHRmOiEhYn0pLG49bShsKSxwPW4ubmV4dCgpOyFwLmRvbmU7cD1uLm5leHQoKSl7dmFyIHE9bShwLnZhbHVlKSxyPXEubmV4dCgpLnZhbHVlLHQ9cS5uZXh0KCkudmFsdWU7ZS5wdXNoKCImIityKyI9Iit0KX1lLnB1c2goIiZ6PTAiKTtyZXR1cm4gZS5qb2luKCIiKX0sYno9ZnVuY3Rpb24oYSl7aWYoJGsoMjYpJiYoYS5LJiYoQS5jbGVhclRpbWVvdXQoYS5LKSxhLks9dm9pZCAwKSxhLkghPT12b2lkIDAmJmEuUikpe3ZhciBiPWxvKGNvLmlhLlpiKTtpZihnbyhiKSlhLk58fChhLk49ITAsaW8oYixmdW5jdGlvbigpe3JldHVybiB2b2lkIGJ6KGEpfSkpO2Vsc2UgaWYoYS5aW2EuSF18fFh5KGEuamEpfHxhLkxhLS08PTApUCgxKSxhLlpbYS5IXT0hMDtlbHNle1l5KGEuamEpO3ZhciBjPWF6KGEsITApO1huKHtkZXN0aW5hdGlvbklkOkUoNSksZW5kcG9pbnQ6NTYsZXZlbnRJZDphLkh9LGMpO2EuUj0hMTthLk49ITF9fX0sY3o9ZnVuY3Rpb24oYSl7YS5LfHwoYS5LPQpBLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBieihhKX0sNTAwKSl9LGV6PWZ1bmN0aW9uKGEpe3ZhciBiPWR6O2IuWlthXXx8KGEhPT1iLkgmJihieihiKSxiLkg9YSksYi5SPSEwLGN6KGIpLGF6KGIpLmxlbmd0aD49MjAyMiYmYnooYikpfSxkejtmdW5jdGlvbiBmeihhKXtneigpO1p5KGR6LGEpfWZ1bmN0aW9uIGh6KCl7dmFyIGE7YT1hPT09dm9pZCAwPyExOmE7Z3ooKTt2YXIgYj1hLGM9ZHo7Yj1iPT09dm9pZCAwPyExOmI7aWYoZm4uTiYmJGsoMjYpKXt2YXIgZD1heihjLCEwLCEwKTtiP1ZuKHtkZXN0aW5hdGlvbklkOkUoNSksZW5kcG9pbnQ6NTYsZXZlbnRJZDpjLkh9LGQpOlhuKHtkZXN0aW5hdGlvbklkOkUoNSksZW5kcG9pbnQ6NTYsZXZlbnRJZDpjLkh9LGQpfX1mdW5jdGlvbiBneigpe2R6fHwoZHo9bmV3ICR5KX07ZnVuY3Rpb24gaXooKXtmdW5jdGlvbiBhKGMsZCl7dmFyIGU9d2IocmJbZF18fFtdKTtlJiZiLnB1c2goW2MsZV0pfXZhciBiPVtdO2EoInUiLCJHVE0iKTthKCJ1dCIsIlRBR0dJTkciKTthKCJoIiwiSEVBTFRIIik7cmV0dXJuIGJ9O3ZhciBqej0iaHR0cHM6Ly8iK0UoMjEpLGt6PWZ1bmN0aW9uKCl7dGhpcy5OPSExO3RoaXMuUj1bXTt0aGlzLlo9W107dGhpcy5IPXtUQzowLEhUQzowfTt0aGlzLks9e319LGx6PWZ1bmN0aW9uKGEsYixjLGQpe2EuS1tiXXx8KGEuS1tiXT17fSk7YS5LW2JdW2NdPWR9LG96PWZ1bmN0aW9uKGEpe3ZhciBiPSIiLGM9IiIsZD1teigpO0FiKGQpJiYoYS5ILkk9TWF0aC5mbG9vcihkKSk7Yz1ueihhLkgsSnkpLnRvU3RyaW5nKCk7Zm9yKHZhciBlPW0oT2JqZWN0LmtleXMoYS5LKSksZj1lLm5leHQoKTshZi5kb25lO2Y9ZS5uZXh0KCkpe3ZhciBnPWYudmFsdWUsaD1hLktbZ10ubmFtZSxsPSIiLG49bnooYS5LW2ddLEt5KTtuJiYobD1oKyIuIituLnRvU3RyaW5nKCksYis9In4iK2wpfXZhciBwPSJ+QVdDVCIrYS5SLmpvaW4oIi4iKSxxPSJ+R0EiK2EuWi5qb2luKCIuIikscj0iJmNjaWQ9Iit2aygpLnRvU3RyaW5nKCkrIiZjaWQ9IitFKDUpLnRvU3RyaW5nKCkrIiZsPSIrYytiKyhhLlIubGVuZ3RoPwpwOiIiKSsoYS5aLmxlbmd0aD9xOiIiKTtpZihNKDIxNCkpe3ZhciB0LHU9KHQ9cmQoKSk9PW51bGw/dm9pZCAwOnQuZ2V0RW50cmllc0J5TmFtZShLYykubWFwKGZ1bmN0aW9uKHYpe3JldHVybiBTdHJpbmcodi5kdXJhdGlvbil9KS5qb2luKCIuIik7dSYmKHIrPSJ+U1MiK3UpfXJldHVybiByfSxwej1mdW5jdGlvbihhLGIpe2lmKCFiLnN0YWdlfHxhLk58fCFPeSgpfHxTeShiKSlyZXR1cm4hMTt2YXIgYyxkPShjPXJkKCkpPT1udWxsP3ZvaWQgMDpjLnRpbWVPcmlnaW47aWYoIUFiKGQpKWEuTj0hMDtlbHNlIGlmKEFiKCRrKDI1KSkmJiFTeSh7c3RhZ2U6SXkuWC5qZH0pJiYhYS5OJiZPeSgpKXRyeXt2YXIgZT1OdW1iZXIoJGsoMjUpKTtUeSh7c3RhZ2U6SXkuWC5qZH0se3N0YXJ0VGltZTpNYXRoLm1heChlLWQsMCl9KTtUeSh7c3RhZ2U6SXkuWC5pan0se3N0YXJ0VGltZTowfSk7dmFyIGY9VXkoe3N0YWdlOkl5LlguamR9LEl5LlguaWopO2YmJihhLkguTD1NYXRoLmZsb29yKGYpKX1jYXRjaChnKXthLk49CiEwfWlmKGEuTilyZXR1cm4hMTt0cnl7aWYoIVR5KGIpKXJldHVybiExfWNhdGNoKGcpe3JldHVybiBhLk49ITAsITF9cmV0dXJuITB9LHF6PWZ1bmN0aW9uKGEsYixjKXtpZihweihhLGIpKXRyeXt2YXIgZD1VeShiLGMpO2lmKGQpcmV0dXJuIE1hdGguZmxvb3IoZCl9Y2F0Y2goZSl7YS5OPSEwfX0sc3o9ZnVuY3Rpb24oKXt2YXIgYT1yeigpO3B6KGEse3N0YWdlOkl5LlgubWl9KX0sdHo9ZnVuY3Rpb24oKXt2YXIgYT1yeigpLGI9cXooYSx7c3RhZ2U6SXkuWC5Ya30sSXkuWC5taSk7YiE9PXZvaWQgMCYmKGEuSC5TPWIpfSx1ej1mdW5jdGlvbigpe3ZhciBhPXJ6KCk7cHooYSx7c3RhZ2U6SXkuWC5uaX0pfSx2ej1mdW5jdGlvbihhLGIpe3ZhciBjPXJ6KCk7cHooYyx7c3RhZ2U6SXkuWC5CaCxldmVudElkOmF9KTtjLktbYV0mJmMuS1thXS5uYW1lfHxseihjLGEsIm5hbWUiLFNiKGIsImd0bS4iKT9iOiIqIil9LHd6PWZ1bmN0aW9uKGEpe3ZhciBiPXJ6KCksYz1xeihiLHtzdGFnZTpJeS5YLnZtLApldmVudElkOmF9LEl5LlguQmgpO2MhPT12b2lkIDAmJmx6KGIsYSwiUyIsYyl9LHl6PWZ1bmN0aW9uKGEsYil7dmFyIGM9cnooKSxkPXF6KGMse3N0YWdlOkl5LlgudG0sZXZlbnRJZDphfSxJeS5YLkJoKTtkIT09dm9pZCAwJiZseihjLGEsIkUiLGQpO2lmKGI9PT0iZ3RtLmxvYWQiKXt2YXIgZT1xeihjLHtzdGFnZTpJeS5YLldrfSxJeS5YLlpnKTtlIT09dm9pZCAwJiYoYy5ILkU9ZSk7aW8obG8oY28uaWEuWmIpLGZ1bmN0aW9uKCl7aWYoIWMuTiYmT3koKSYmRSg1KSl7dmFyIGY9eHooKTtmIT09dm9pZCAwJiYoYy5ILkY9TWF0aC5mbG9vcihmKSk7dHJ5e2Zvcih2YXIgZz1peih7ZXZlbnRJZDowLHRmOiExfSksaD1bXSxsPW0oZyksbj1sLm5leHQoKTshbi5kb25lO249bC5uZXh0KCkpe3ZhciBwPW0obi52YWx1ZSkscT1wLm5leHQoKS52YWx1ZSxyPXAubmV4dCgpLnZhbHVlO2gucHVzaCgiJiIrcSsiPSIrcil9dmFyIHQ9Q3AoKSx1PVtbZmsoanopLCIvYT92PTMmdD1sIiwiJnBpZD0iKwpEYigpLnRvU3RyaW5nKCksIiZydj0iK0UoMTQpLHQ/IiZ0YWdfZXhwPSIrdDoiIixoLmpvaW4oIiIpXS5qb2luKCIiKSwiJmd0bT0iLGR1KCksb3ooYyldLmpvaW4oIiIpO2lmKHUubGVuZ3RoPjIwMjIpe3ZhciB2PU1hdGgubWF4KHUubGFzdEluZGV4T2YoIi5UUyIsMjAyMiksdS5sYXN0SW5kZXhPZigifiIsMjAyMikpO3U9dS5zbGljZSgwLHYpfVhuKHtkZXN0aW5hdGlvbklkOkUoNSksZW5kcG9pbnQ6NTZ9LHUpfWNhdGNoKHgpe319fSl9fSx6ejtmdW5jdGlvbiByeigpe3p6fHwoeno9bmV3IGt6KTtyZXR1cm4genp9ZnVuY3Rpb24gbXooKXt0cnl7dmFyIGE7cmV0dXJuKChhPXJkKCkpPT1udWxsP3ZvaWQgMDphLmdldEVudHJpZXNCeVR5cGUoIm5hdmlnYXRpb24iKVswXSkuZG9tSW50ZXJhY3RpdmV9Y2F0Y2goYil7fX0KZnVuY3Rpb24gbnooYSxiKXtyZXR1cm4gT2JqZWN0LmtleXMoYikubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBiW2NdfSkuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBhW2NdIT09dm9pZCAwfSkubWFwKGZ1bmN0aW9uKGMpe3JldHVybigiIisoYz09PSJ0YWciPyIiOmMpKS5jb25jYXQoYVtjXS50b1N0cmluZygpKX0pLmpvaW4oIi4iKX1mdW5jdGlvbiBBeihhKXt2YXIgYj1yeigpLGM9cXooYix7c3RhZ2U6SXkuWC5FbSxldmVudElkOmF9LEl5LlguamQpO2MhPT12b2lkIDAmJmIuWi5wdXNoKGMpfWZ1bmN0aW9uIEJ6KGEpe3ZhciBiPXJ6KCksYz1xeihiLHtzdGFnZTpJeS5YLkVrLGV2ZW50SWQ6YX0sSXkuWC5qZCk7YyE9PXZvaWQgMCYmYi5SLnB1c2goYyl9ZnVuY3Rpb24gQ3ooYSl7dmFyIGI9cnooKTtweihiLHtzdGFnZTpJeS5YLlRpLGV2ZW50SWQ6YX0pfQpmdW5jdGlvbiBEeihhKXt2YXIgYj1yeigpLGM9cXooYix7c3RhZ2U6SXkuWC5zbSxldmVudElkOmF9LEl5LlguVGkpO2MhPT12b2lkIDAmJmx6KGIsYSwiViIsYyl9ZnVuY3Rpb24geHooKXt0cnl7dmFyIGEsYjtyZXR1cm4oYj0oYT1yZCgpKT09bnVsbD92b2lkIDA6YS5nZXRFbnRyaWVzQnlUeXBlKCJwYWludCIpLmZpbmQoZnVuY3Rpb24oYyl7cmV0dXJuIGMubmFtZT09PSJmaXJzdC1jb250ZW50ZnVsLXBhaW50In0pKT09bnVsbD92b2lkIDA6Yi5zdGFydFRpbWV9Y2F0Y2goYyl7fX1mdW5jdGlvbiBFeihhLGIpe3ZhciBjPXJ6KCk7cHooYyx7c3RhZ2U6SXkuWC54aixldmVudElkOmEuaWQsdGFnSWQ6TnVtYmVyKGJbR2YueWpdKX0pfQpmdW5jdGlvbiBGeihhLGIsYyl7dmFyIGQ9cnooKSxlPWRuKGIpLGY9TnVtYmVyKGJbR2YueWpdKSxnPXF6KGQse3N0YWdlOmMsZXZlbnRJZDphLmlkLHRhZ0lkOmZ9LEl5LlgueGopO2lmKGchPT12b2lkIDAmJmQuS1thLmlkXSl7dmFyIGg9ZC5LW2EuaWRdLnRhZ3x8IiIsbCxuPShsPU15W2NdKSE9bnVsbD9sOiIxIixwPW5ldyBSZWdFeHAoIlRTXFxkIitlKyIuVEkiK2YpLHE9IlRTIituK2UrIi5USSIrZisiLlRFIitnO2guc2VhcmNoKHApPj0wP24hPT0iMSImJmx6KGQsYS5pZCwidGFnIixoLnJlcGxhY2UocCxxLnJlcGxhY2UoIi5URSIrZywiIikpKToobHooZCxhLmlkLCJ0YWciLChoP2grIi4iOiIiKStxKSxlPT09Imh0bWwiJiYoZC5ILkhUQys9MSksZC5ILlRDKz0xKX19O3ZhciBLej17Z2o6e2JwOiIxIix1cToiMiIsVnE6IjMifX07dmFyIFB6LFF6OwpmdW5jdGlvbiBSeihhLGIpe3ZhciBjPWFbR2YuWWJdLGQ9YiYmYi5ldmVudDtpZighYyl0aHJvdyBFcnJvcigiRXJyb3I6IE5vIGZ1bmN0aW9uIG5hbWUgZ2l2ZW4gZm9yIGZ1bmN0aW9uIGNhbGwuIik7dmFyIGU9UXpbY10sZj17fSxnO2ZvcihnIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShnKSYmKFNiKGcsInZ0cF8iKT9mW2UhPT12b2lkIDA/ZzpnLnN1YnN0cmluZyg0KV09YVtnXTpnPT09R2YuRnEudG9TdHJpbmcoKSYmKGZbZSE9PXZvaWQgMD8idnRwX2d0bUdlbmVyYXRlZFRhZ2dpbmdNZXRhZGF0YSI6Z109YVtnXSkpO0lmKDYxKSYmZSYmKGYudnRwX2V4dHJhRXhwZXJpbWVudElkcz0hMCk7ZSYmZCYmZC5jYWNoZWRNb2RlbFZhbHVlcyYmKGYudnRwX2d0bUNhY2hlZFZhbHVlcz1kLmNhY2hlZE1vZGVsVmFsdWVzKTtiJiZlJiYoZi52dHBfZ3RtRW50aXR5SW5kZXg9Yi5pbmRleCxmLnZ0cF9ndG1FbnRpdHlOYW1lPWIubmFtZSk7cmV0dXJuIGUhPT12b2lkIDA/ZShmKTpQeihjLGYsCmIpfXZhciBUej1mdW5jdGlvbigpe3ZhciBhPVN6O2lmKE0oNTg1KSYmZm4uSyl7dmFyIGI9RSg1KS5pbmRleE9mKCJHVE0tIik9PT0wJiZJZig2MiksYyxkPSgoYz1GaygpKT09bnVsbD92b2lkIDA6Yy5zb3VyY2UpPT09MTtiJiYhZHx8YS5IfHwoYS5IPSEwLFVtKCJhYmwiLCIxIiksdG8oKSl9fSxTej1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9ITF9O3ZhciBVej1mdW5jdGlvbihhLGIsYyxkKXt0aGlzLkg9YTt0aGlzLmluZGV4PWI7dGhpcy50YWdzPWM7dGhpcy5tYWNyb3M9ZDt0aGlzLm5hbWU9U3RyaW5nKHRoaXMuSFtHZi5SbV18fCIiKX07ClV6LnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbihhLGIpe2lmKCFiW3RoaXMuaW5kZXhdJiYhYS5pc0Jsb2NrZWQodGhpcy5IKSl7Ylt0aGlzLmluZGV4XT0hMDt0aGlzLkhbR2YucGwudG9TdHJpbmcoKV0mJlR6KCk7dmFyIGM9dGhpcy5uYW1lLGQ7dHJ5e3ZhciBlPXt9LGY7Zm9yKGYgaW4gdGhpcy5IKXRoaXMuSC5oYXNPd25Qcm9wZXJ0eShmKSYmKGVbZl09ZWwodGhpcy5IW2ZdLGEsdGhpcy50YWdzLHRoaXMubWFjcm9zLGIpKTtlLnZ0cF9ndG1FdmVudElkPWEuaWQ7YS5wcmlvcml0eUlkJiYoZS52dHBfZ3RtUHJpb3JpdHlJZD1hLnByaW9yaXR5SWQpO3ZhciBnPWQ9UnooZSx7ZXZlbnQ6YSxpbmRleDp0aGlzLmluZGV4LHR5cGU6MixuYW1lOmN9KTtlW0dmLlprXSYmdHlwZW9mIGc9PT0ic3RyaW5nIiYmKGc9ZVtHZi5aa109PT0xP2cudG9Mb3dlckNhc2UoKTpnLnRvVXBwZXJDYXNlKCkpO2UuaGFzT3duUHJvcGVydHkoR2YuYWgpJiYoZz1ZZigxOCk/ZVtHZi5haF09PT0xPwpWZihnLCJQRVJJT0QiKTplW0dmLmFoXT09PTI/VmYoZywiQ09NTUEiKTpWZihnLCJBVVRPTUFUSUMiKTplW0dmLmFoXT09PTE/VmYoZywiUEVSSU9EIik6VmYoZywiQ09NTUEiKSk7ZS5oYXNPd25Qcm9wZXJ0eShHZi5ibCkmJmc9PT1udWxsJiYoZz1lW0dmLmJsXSk7ZS5oYXNPd25Qcm9wZXJ0eShHZi5pbCkmJmc9PT12b2lkIDAmJihnPWVbR2YuaWxdKTtlLmhhc093blByb3BlcnR5KEdmLmVwKSYmKGc9SmIoZykpO2UuaGFzT3duUHJvcGVydHkoR2YuZmwpJiZnPT09ITAmJihnPWVbR2YuZmxdKTtlLmhhc093blByb3BlcnR5KEdmLmFsKSYmZz09PSExJiYoZz1lW0dmLmFsXSk7ZD1nfWNhdGNoKGgpe2EubG9nTWFjcm9FcnJvciYmYS5sb2dNYWNyb0Vycm9yKGgsTnVtYmVyKHRoaXMuaW5kZXgpLGMpLGQ9ITF9Ylt0aGlzLmluZGV4XT0hMTtyZXR1cm4gZH19O1V6LnByb3RvdHlwZS5GZz1mdW5jdGlvbigpe3JldHVybiBuYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LHRoaXMuSCl9O3ZhciBWej1mdW5jdGlvbihhLGIsYyl7dGhpcy5IPWE7dGhpcy50YWdzPWI7dGhpcy5tYWNyb3M9Y307VnoucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKGEsYil7dHJ5e2Zvcih2YXIgYz17fSxkPW0oT2JqZWN0LmtleXModGhpcy5IKSksZT1kLm5leHQoKTshZS5kb25lO2U9ZC5uZXh0KCkpe3ZhciBmPWUudmFsdWU7Y1tmXT1mPT09ImZ1bmN0aW9uIj90aGlzLkhbZl06ZWwodGhpcy5IW2ZdLGEsdGhpcy50YWdzLHRoaXMubWFjcm9zLGIpfXJldHVybiBjbChjKX1jYXRjaChnKXtKU09OLnN0cmluZ2lmeSh0aGlzLkgpfXJldHVybiAyfTtWei5wcm90b3R5cGUuRmc9ZnVuY3Rpb24oKXtyZXR1cm4gbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSx0aGlzLkgpfTt2YXIgV3o9ZnVuY3Rpb24oYSxiKXt0aGlzLmluZGV4PWI7dGhpcy5OPVtdO3RoaXMuUj1bXTt0aGlzLks9W107dGhpcy5IPVtdO3RoaXMubmFtZT0iIjtmb3IodmFyIGM9bShhKSxkPWMubmV4dCgpOyFkLmRvbmU7ZD1jLm5leHQoKSl7dmFyIGU9bShkLnZhbHVlKSxmPWUubmV4dCgpLnZhbHVlLGc9eWEoZSksaD1mLGw9ZztoPT09ImlmIj90aGlzLk49bDpoPT09InVubGVzcyI/dGhpcy5SPWw6aD09PSJhZGQiP3RoaXMuSz1sOmg9PT0iYmxvY2siP3RoaXMuSD1sOmg9PT0icnVsZU5hbWUiJiYodGhpcy5uYW1lPWxbMF0pfX07Cld6LnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbihhLGIpe3ZhciBjPVh6KHRoaXMsYiksZD1bXSxlPVtdO2M/KGQucHVzaC5hcHBseShkLHcodGhpcy5LKSksZS5wdXNoLmFwcGx5KGUsdyh0aGlzLkgpKSk6Yz09PW51bGwmJmUucHVzaC5hcHBseShlLHcodGhpcy5IKSk7cmV0dXJue2ZpcmluZ1RhZ3M6ZCxibG9ja2luZ1RhZ3M6ZX19Owp2YXIgWHo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9bShhLk4pLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1iKGQudmFsdWUpO2lmKGU9PT0wKXJldHVybiExO2lmKGU9PT0yKXJldHVybiBudWxsfWZvcih2YXIgZj1tKGEuUiksZz1mLm5leHQoKTshZy5kb25lO2c9Zi5uZXh0KCkpe3ZhciBoPWIoZy52YWx1ZSk7aWYoaD09PTIpcmV0dXJuIG51bGw7aWYoaD09PTEpcmV0dXJuITF9cmV0dXJuITB9O1d6LnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZX07dmFyIFl6PWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuSWE9YTt0aGlzLmluZGV4PWI7dGhpcy50YWdzPWM7dGhpcy5tYWNyb3M9ZDt0aGlzLk89U3RyaW5nKHRoaXMuSWFbR2YuWWJdKTt0aGlzLm5hbWU9U3RyaW5nKHRoaXMuSWFbR2YuUm1dfHwiIik7dGhpcy50YWdJZD1OdW1iZXIodGhpcy5JYVtHZi55al0pfTsKWXoucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKGEsYixjKXtjPWM9PT12b2lkIDA/e306Yzt2YXIgZCxlPWM7ZT1lPT09dm9pZCAwP3t9OmU7dmFyIGY9e30sZztmb3IoZyBpbiB0aGlzLklhKXRoaXMuSWEuaGFzT3duUHJvcGVydHkoZykmJihmW2ddPWVsKHRoaXMuSWFbZ10sYSx0aGlzLnRhZ3MsdGhpcy5tYWNyb3MsW10pKTtkPW5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3Qse30sZixlKTtkLnZ0cF9ndG1UYWdJZD10aGlzLnRhZ0lkO3RoaXMuSWFbR2YucGwudG9TdHJpbmcoKV0mJlR6KCk7UnooZCx7ZXZlbnQ6YSxpbmRleDp0aGlzLmluZGV4LHR5cGU6MSxuYW1lOnRoaXMubmFtZX0pfTtZei5wcm90b3R5cGUuRmc9ZnVuY3Rpb24oKXtyZXR1cm4gbmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSx0aGlzLklhKX07CnZhciBaej1mdW5jdGlvbihhLGIpe2lmKGEuSWFbR2YudG5dKXJldHVybiBlbChhLklhW0dmLnRuXSxiLGEudGFncyxhLm1hY3JvcyxbXSl9LCR6PWZ1bmN0aW9uKGEsYil7aWYoYS5JYVtHZi5Ebl0pcmV0dXJuIGVsKGEuSWFbR2YuRG5dLGIsYS50YWdzLGEubWFjcm9zLFtdKX0sYUE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLklhW0dmLmNwXTtpZihjKXJldHVybiBlbChjLGIsYS50YWdzLGEubWFjcm9zLFtdKX07WXoucHJvdG90eXBlLmdldE1ldGFkYXRhPWZ1bmN0aW9uKGEpe3JldHVybiBlbCh0aGlzLklhW0dmLk1FVEFEQVRBXSxhLHRoaXMudGFncyx0aGlzLm1hY3JvcyxbXSl9O1l6LnByb3RvdHlwZS5nZXROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZX07dmFyIGJBPWZ1bmN0aW9uKCl7dGhpcy5tYWNyb3M9W107dGhpcy5ydWxlcz1bXTt0aGlzLnByZWRpY2F0ZXM9W107dGhpcy50YWdzPVtdO3RoaXMudms9W119O2JBLnByb3RvdHlwZS5nZXRSdWxlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJ1bGVzfTt2YXIgY0E9bmV3IGJBO2Z1bmN0aW9uIGRBKGEsYixjLGQpe3ZhciBlPVdjKCksZjtpZihlPT09MSlhOnt2YXIgZz1FKDMpO2c9Zy50b0xvd2VyQ2FzZSgpO2Zvcih2YXIgaD0iaHR0cHM6Ly8iK2csbD0iaHR0cDovLyIrZyxuPTEscD1CLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxxPTA7cTxwLmxlbmd0aCYmcTwxMDA7cSsrKXt2YXIgcj1wW3FdLnNyYztpZihyKXtyPXIudG9Mb3dlckNhc2UoKTtpZihyLmluZGV4T2YobCk9PT0wKXtmPTM7YnJlYWsgYX1uPT09MSYmci5pbmRleE9mKGgpPT09MCYmKG49Mil9fWY9bn1lbHNlIGY9ZTtyZXR1cm4oZj09PTJ8fGR8fCJodHRwOiIhPT1BLmxvY2F0aW9uLnByb3RvY29sP2E6YikrY307dmFyIGVBPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLks9e307dGhpcy5IPXt9O2Z6KGZ1bmN0aW9uKGIpe3ZhciBjPVtdLGQ7Zm9yKGQgaW4gYS5LKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLkssZCkmJmMucHVzaChkKyJ+IithLktbZF0pO3ZhciBlPVtdLGY7Zm9yKGYgaW4gYS5IKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLkgsZikmJmUucHVzaChmKyJ+IithLkhbZl0pO2IudGYmJihhLks9e30sYS5IPXt9KTt2YXIgZz1bXTtjLmxlbmd0aD4wJiZnLnB1c2goWyJiY3MiLGMuam9pbigiLiIpXSk7ZS5sZW5ndGg+MCYmZy5wdXNoKFsiYmV0IixlLmpvaW4oIi4iKV0pO3JldHVybiBnfSl9LGZBO2Z1bmN0aW9uIGdBKCl7ZkF8fChmQT1uZXcgZUEpfTtmdW5jdGlvbiBoQShhLGIsYyxkLGUpe2lmKCFFayhhKSl7ZC5sb2FkRXhwZXJpbWVudHM9eWooKTtIayhhLGQsZSk7dmFyIGY9aUEoYSksZz1mdW5jdGlvbigpe29rKCkuY29udGFpbmVyW2FdJiYob2soKS5jb250YWluZXJbYV0uc3RhdGU9Myk7akEoKX0saD17ZGVzdGluYXRpb25JZDphLGVuZHBvaW50OjB9O2lmKFdqKCkpe3ZhciBsPVhqKCksbj1sKyIvIitrQShmLGEpO1puKGgsbix2b2lkIDAsZnVuY3Rpb24oKXtsQShhLG4sbCsiLyIrZixoLGcpfSl9ZWxzZXt2YXIgcD1TYihhLCJHVE0tIikscT1kaygpLHI9Yz8iL2d0YWcvanMiOiIvZ3RtLmpzIix0PW1BKGIscitmLGEpO2lmKCF0KXt2YXIgdT1FKDMpK3I7cSYmS2MmJnAmJih1PUtjLnJlcGxhY2UoL14oPzpodHRwcz86XC9cLyk/L2ksIiIpLnNwbGl0KC9bPyNdLylbMF0pO3Q9ZEEoImh0dHBzOi8vIiwiaHR0cDovLyIsdStmKX1abihoLHQsdm9pZCAwLGcpfX19CmZ1bmN0aW9uIGpBKCl7S2soKXx8R2IoTGsoKSxmdW5jdGlvbihhLGIpe25BKGEsYi50cmFuc3BvcnRVcmwsYi5jb250ZXh0KTtQKDkyKX0pfWZ1bmN0aW9uIG5BKGEsYixjLGQpe2lmKCFHayhhKSlpZihjLmxvYWRFeHBlcmltZW50c3x8KGMubG9hZEV4cGVyaW1lbnRzPXlqKCkpLEtrKCkpSmsoYSxiLGMsZCk7ZWxzZXtJayhhLGMsZCk7dmFyIGU9e2Rlc3RpbmF0aW9uSWQ6YSxlbmRwb2ludDowfTtpZihXaigpKXt2YXIgZj1YaigpLGc9Imd0ZCIraUEoYSwhMCksaD1mKyIvIitrQShnLGEpO1puKGUsaCx2b2lkIDAsZnVuY3Rpb24oKXtsQShhLGgsZisiLyIrZyxlKX0pfWVsc2V7dmFyIGw9Ii9ndGFnL2Rlc3RpbmF0aW9uIitpQShhLCEwKSxuPW1BKGIsbCxhKTtufHwobj1kQSgiaHR0cHM6Ly8iLCJodHRwOi8vIixFKDMpK2wpKTtabihlLG4pfX19CmZ1bmN0aW9uIGxBKGEsYixjLGQsZSl7aWYoTSg0MTMpKXtnQSgpO3ZhciBmPWZBO2lmKGZuLk4pe3ZhciBnPUEucGVyZm9ybWFuY2UsaD0tMTtpZihnJiZnLmdldEVudHJpZXNCeVR5cGUpe3ZhciBsPVJqKGIpLmhyZWYsbj1nLmdldEVudHJpZXNCeU5hbWUobCkucG9wKCk7aWYoIW4pZm9yKHZhciBwPWcuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKSxxPTA7cTxwLmxlbmd0aDtxKyspe3ZhciByPXBbcV07aWYoci5uYW1lJiZyLm5hbWUuaW5kZXhPZihiKSE9PS0xKXtuPXI7YnJlYWt9fW4mJm4ucmVzcG9uc2VTdGF0dXMhPT12b2lkIDAmJihoPW4ucmVzcG9uc2VTdGF0dXMpfWYuS1thXT1ofVAoMTkwKTt2YXIgdD1ubShqbS5iYS5rail8fHt9O3RbYV09ITA7bW0oam0uYmEua2osdCk7dmFyIHU9YysoYy5pbmRleE9mKCI/Iik9PT0tMT8iP2Y9MSI6IiZmPTEiKTtlP1puKGQsdSx2b2lkIDAsZSk6Wm4oZCx1KX1lbHNlIGUmJmUoKX0KZnVuY3Rpb24gaUEoYSxiKXtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYz0iP2lkPSIrZW5jb2RlVVJJQ29tcG9uZW50KGEpLGQ9RSgxOSk7ZCE9PSJkYXRhTGF5ZXIiJiYoYys9IiZsPSIrZCk7dmFyIGU9U2IoYSwiR1RNLSIpO2lmKCFlfHxiKWMrPSImY3g9YyI7ZSYmSWYoNjIpJiYoYys9IiZnb29nbGVfb25seT10cnVlIik7dmFyIGY9YyxnLGg9e0RvOkpmKDE1KSxJbzpFKDE0KX07Zz1DZihoKTtjPWYrKCImZ3RtPSIrZyk7ZGsoKSYmKGMrPSImc2lnbj0iK0FqLnFqKTt2YXIgbD1jLG49SmYoNTQpO2lmKG49PT0xKXtsKz0iJmZwcz1mYyI7dmFyIHA9RSg2MCk7cCYmKGwrPSImZ2Rldj0iK3ApfWVsc2Ugbj09PTImJihsKz0iJmZwcz1mZSIpO3JldHVybiBsfQpmdW5jdGlvbiBrQShhLGIpe2lmKCFNKDQxMyl8fCFYaigpKXJldHVybiBhO3ZhciBjPUUoNTgpO2lmKCFjKXJldHVybiBQKDE4MiksYTt0cnl7dmFyIGQ9TmIoKSxlPUVmKGEsYyksZj1OYigpLWQ7Z0EoKTt2YXIgZz1mQTtmbi5OJiYoZy5IW2JdPWYpO3JldHVybiBlfWNhdGNoKGgpe3JldHVybiBQKDE4MyksYX19ZnVuY3Rpb24gbUEoYSxiLGMpe2lmKGFrKCkmJmEpe3ZhciBkPUUoNTgpLGU9WGooKTtpZihkJiZlKXRyeXt2YXIgZj1OYigpO2I9ZSsiLyIrRWYoYixkKTt2YXIgZz1OYigpLWY7Z0EoKTt2YXIgaD1mQTtmbi5OJiYoaC5IW2NdPWcpfWNhdGNoKGwpe1AoMTgzKX1yZXR1cm4gWWooYSxiKX19O3ZhciBwQT1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5LPW5ldyBGYjt0aGlzLkg9e307dGhpcy5OPXt9O3RoaXMuUj17bmFtZTpFKDE5KSxzZXQ6ZnVuY3Rpb24oYixjKXtFZChWYihiLGMpLGEuSCk7b0EoYSl9LGdldDpmdW5jdGlvbihiKXtyZXR1cm4gYS5nZXQoYiwyKX0scmVzZXQ6ZnVuY3Rpb24oKXthLks9bmV3IEZiO2EuSD17fTtvQShhKX19fTtwQS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIhPTI/dGhpcy5LLmdldChhKTpxQSh0aGlzLGEpfTt2YXIgcUE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIuc3BsaXQoIi4iKTtjPWN8fFtdO2Zvcih2YXIgZT1hLkgsZj0wO2Y8ZC5sZW5ndGg7ZisrKXtpZihlPT09bnVsbClyZXR1cm4hMTtpZihlPT09dm9pZCAwKWJyZWFrO2U9ZVtkW2ZdXTtpZihjLmluZGV4T2YoZSkhPT0tMSlyZXR1cm59cmV0dXJuIGV9OwpwQS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5OLmhhc093blByb3BlcnR5KGEpfHwodGhpcy5LLnNldChhLGIpLEVkKFZiKGEsYiksdGhpcy5IKSxvQSh0aGlzKSl9O3ZhciBzQT1mdW5jdGlvbigpe2Zvcih2YXIgYT1bImd0bS5hbGxvd2xpc3QiLCJndG0uYmxvY2tsaXN0IiwiZ3RtLndoaXRlbGlzdCIsImd0bS5ibGFja2xpc3QiLCJ0YWdUeXBlQmxhY2tsaXN0Il0sYj1yQSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY10sZT1iLmdldChkLDEpO2lmKEFycmF5LmlzQXJyYXkoZSl8fENkKGUpKWU9RWQoZSxudWxsKTtiLk5bZF09ZX19LG9BPWZ1bmN0aW9uKGEsYil7R2IoYS5OLGZ1bmN0aW9uKGMsZCl7YS5LLnNldChjLGQpO0VkKFZiKGMpLGEuSCk7RWQoVmIoYyxkKSxhLkgpO2ImJmRlbGV0ZSBhLk5bY119KX0sckE9bmV3IHBBLHRBPXJBLlI7ZnVuY3Rpb24gdUEoYSxiKXtyZXR1cm4gckEuZ2V0KGEsYil9CmZ1bmN0aW9uIHZBKGEsYil7dmFyIGM9Yj09PXZvaWQgMD8yOmIsZD1yQSxlLGY9KGM9PT12b2lkIDA/MjpjKSE9PTE/cUEoZCxhKTpkLksuZ2V0KGEpO0FkKGYpPT09ImFycmF5Inx8QWQoZik9PT0ib2JqZWN0Ij9lPUVkKGYsbnVsbCk6ZT1mO3JldHVybiBlfTt2YXIgd0E9bmV3IFJlZ0V4cCgvXiguKlwuKT8oZ29vZ2xlfHlvdXR1YmV8YmxvZ2dlcnx3aXRoZ29vZ2xlKShcLmNvbT8pPyhcLlthLXpdezJ9KT9cLj8kLykseEE9e2NsOlsiZWNsIl0sY3VzdG9tUGl4ZWxzOlsibm9uR29vZ2xlUGl4ZWxzIl0sZWNsOlsiY2wiXSxlaGw6WyJobCJdLGdhYXdjOlsiZ29vZ3RhZyJdLGhsOlsiZWhsIl0saHRtbDpbImN1c3RvbVNjcmlwdHMiLCJjdXN0b21QaXhlbHMiLCJub25Hb29nbGVQaXhlbHMiLCJub25Hb29nbGVTY3JpcHRzIiwibm9uR29vZ2xlSWZyYW1lcyJdLGN1c3RvbVNjcmlwdHM6WyJodG1sIiwiY3VzdG9tUGl4ZWxzIiwibm9uR29vZ2xlUGl4ZWxzIiwibm9uR29vZ2xlU2NyaXB0cyIsIm5vbkdvb2dsZUlmcmFtZXMiXSxub25Hb29nbGVQaXhlbHM6W10sbm9uR29vZ2xlU2NyaXB0czpbIm5vbkdvb2dsZVBpeGVscyJdLG5vbkdvb2dsZUlmcmFtZXM6WyJub25Hb29nbGVQaXhlbHMiXX0seUE9e2NsOlsiZWNsIl0sY3VzdG9tUGl4ZWxzOlsiY3VzdG9tU2NyaXB0cyIsCiJodG1sIl0sZWNsOlsiY2wiXSxlaGw6WyJobCJdLGdhYXdjOlsiZ29vZ3RhZyJdLGhsOlsiZWhsIl0saHRtbDpbImN1c3RvbVNjcmlwdHMiXSxjdXN0b21TY3JpcHRzOlsiaHRtbCJdLG5vbkdvb2dsZVBpeGVsczpbImN1c3RvbVBpeGVscyIsImN1c3RvbVNjcmlwdHMiLCJodG1sIiwibm9uR29vZ2xlU2NyaXB0cyIsIm5vbkdvb2dsZUlmcmFtZXMiXSxub25Hb29nbGVTY3JpcHRzOlsiY3VzdG9tU2NyaXB0cyIsImh0bWwiXSxub25Hb29nbGVJZnJhbWVzOlsiY3VzdG9tU2NyaXB0cyIsImh0bWwiLCJub25Hb29nbGVTY3JpcHRzIl19LHpBPSJnb29nbGUgY3VzdG9tUGl4ZWxzIGN1c3RvbVNjcmlwdHMgaHRtbCBub25Hb29nbGVQaXhlbHMgbm9uR29vZ2xlU2NyaXB0cyBub25Hb29nbGVJZnJhbWVzIi5zcGxpdCgiICIpOwpmdW5jdGlvbiBBQSgpe3ZhciBhPXVBKCJndG0uYWxsb3dsaXN0Iil8fHVBKCJndG0ud2hpdGVsaXN0Iik7YSYmUCg5KTtJZig2MikmJihhPXZvaWQgMCk7QkEoKSYmKElmKDYyKT9QKDExNik6KFAoMTE3KSxJZig0OCkmJihhPVtdLHdpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5sb2cmJndpbmRvdy5jb25zb2xlLmxvZygiR1RNIGJsb2NrZWQuIFNlZSBnby8xMzY4NzcyOC4iKSkpKTt2YXIgYj1hJiZSYihLYihhKSx4QSksYz11QSgiZ3RtLmJsb2NrbGlzdCIpfHx1QSgiZ3RtLmJsYWNrbGlzdCIpO2N8fChjPXVBKCJ0YWdUeXBlQmxhY2tsaXN0IikpJiZQKDMpO2M/UCg4KTpjPVtdO0JBKCkmJihjPUtiKGMpLGMucHVzaCgibm9uR29vZ2xlUGl4ZWxzIiwibm9uR29vZ2xlU2NyaXB0cyIsInNhbmRib3hlZFNjcmlwdHMiKSk7S2IoYykuaW5kZXhPZigiZ29vZ2xlIik+PTAmJlAoMik7dmFyIGQ9YyYmUmIoS2IoYykseUEpLGU9e307cmV0dXJuIGZ1bmN0aW9uKGYpe3ZhciBnPWYmJgpmW0dmLlliXTtpZighZ3x8dHlwZW9mIGchPT0ic3RyaW5nIilyZXR1cm4hMDtnPWcucmVwbGFjZSgvXl8qLywiIik7aWYoZVtnXSE9PXZvaWQgMClyZXR1cm4gZVtnXTt2YXIgaD1hbCgyNyxmdW5jdGlvbigpe3JldHVybnt9fSlbZ118fFtdLGw9ITA7YSYmKGw9bCYmQ0EoZyxoLGIpKTt2YXIgbj0hMTtjJiYobj1EQShnLGgsZCkpO3ZhciBwPSFsfHxuOyFwJiYoaC5pbmRleE9mKCJzYW5kYm94ZWRTY3JpcHRzIik9PT0tMXx8YiYmYi5pbmRleE9mKCJzYW5kYm94ZWRTY3JpcHRzIikhPT0tMT8wOkViKGQsekEpKSYmKHA9ITApO3JldHVybiBlW2ddPXB9fWZ1bmN0aW9uIENBKGEsYixjKXtpZihjLmluZGV4T2YoYSk8MClpZihiJiZiLmxlbmd0aD4wKWZvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtpZihjLmluZGV4T2YoYltkXSk8MClyZXR1cm4gUCgxMSksITF9ZWxzZSByZXR1cm4hMTtyZXR1cm4hMH0KZnVuY3Rpb24gREEoYSxiLGMpe3ZhciBkPWMuaW5kZXhPZihhKT49MDtpZihkKXJldHVybiBkO3ZhciBlPUViKGMsYnx8W10pO2UmJlAoMTApO3JldHVybiBlfWZ1bmN0aW9uIEJBKCl7cmV0dXJuIHdBLnRlc3QoQS5sb2NhdGlvbiYmQS5sb2NhdGlvbi5ob3N0bmFtZSl9O2Z1bmN0aW9uIEVBKGEpe2Zvcih2YXIgYj1bXSxjPVtdLGQ9RkEoYSksZT1tKGNBLmdldFJ1bGVzKCkpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXtmb3IodmFyIGc9Zi52YWx1ZS5ldmFsdWF0ZShhLGQpLGg9Zy5maXJpbmdUYWdzLGw9Zy5ibG9ja2luZ1RhZ3Msbj0wO248aC5sZW5ndGg7bisrKWJbaFtuXV09ITA7Zm9yKHZhciBwPTA7cDxsLmxlbmd0aDtwKyspY1tsW3BdXT0hMH1mb3IodmFyIHE9W10scj0wO3I8Y0EudGFncy5sZW5ndGg7cisrKWJbcl0mJiFjW3JdJiYocVtyXT0hMCk7cmV0dXJuIHF9ZnVuY3Rpb24gRkEoYSl7dmFyIGI9W107cmV0dXJuIGZ1bmN0aW9uKGMpe2JbY109PT12b2lkIDAmJihiW2NdPWNBLnByZWRpY2F0ZXNbY10uZXZhbHVhdGUoYSxbXSkpO3JldHVybiBiW2NdfX07dmFyIEdBPWZ1bmN0aW9uKCl7dGhpcy5LPTA7dGhpcy5IPXt9fTtHQS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSsrdGhpcy5LO3RoaXMuSFthXT10aGlzLkhbYV18fHt9O3RoaXMuSFthXVtTdHJpbmcoZCldPXtsaXN0ZW5lcjpiLHJmOmN9O3JldHVybiBkfTtHQS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLkhbYV0sZD1TdHJpbmcoYik7aWYoIWN8fCFjW2RdKXJldHVybiExO2RlbGV0ZSBjW2RdO3JldHVybiEwfTt2YXIgSUE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtHYihIQS5IW2FdLGZ1bmN0aW9uKGQsZSl7Yy5pbmRleE9mKGUubGlzdGVuZXIpPDAmJihlLnJmPT09dm9pZCAwfHxiLmluZGV4T2YoZS5yZik+PTApJiZjLnB1c2goZS5saXN0ZW5lcil9KTtyZXR1cm4gY307ZnVuY3Rpb24gSkEoYSxiLGMpe3JldHVybntlbnRpdHlUeXBlOmEsaW5kZXhJbk9yaWdpbkNvbnRhaW5lcjpiLG5hbWVJbk9yaWdpbkNvbnRhaW5lcjpjLG9yaWdpbkNvbnRhaW5lcklkOkUoNSksb3JpZ2luQ0lkOnZrKCl9fTtmdW5jdGlvbiBLQShhLGIpe2lmKGRhdGEuZW50aXRpZXMpe3ZhciBjPWRhdGEuZW50aXRpZXNbYV07aWYoYylyZXR1cm4gY1tiXX19O3ZhciBNQT1mdW5jdGlvbihhLGIpe3RoaXMuSD0hMTt0aGlzLlI9W107dGhpcy5ldmVudERhdGE9e3RhZ3M6W119O3RoaXMuWj0hMTt0aGlzLks9dGhpcy5OPTA7TEEodGhpcyxhLGIpfSxOQT1mdW5jdGlvbihhLGIsYyxkKXtpZihDai5oYXNPd25Qcm9wZXJ0eShiKXx8Yj09PSJfX3pvbmUiKXJldHVybi0xO3ZhciBlPXt9O0NkKGQpJiYoZT1FZChkLGUpKTtlLmlkPWM7ZS5zdGF0dXM9InRpbWVvdXQiO3JldHVybiBhLmV2ZW50RGF0YS50YWdzLnB1c2goZSktMX0sT0E9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5ldmVudERhdGEudGFnc1tiXTtlJiYoZS5zdGF0dXM9YyxlLmV4ZWN1dGlvblRpbWU9ZCl9LFBBPWZ1bmN0aW9uKGEpe2lmKCFhLkgpe2Zvcih2YXIgYj1hLlIsYz0wO2M8Yi5sZW5ndGg7YysrKWJbY10oKTthLkg9ITA7YS5SLmxlbmd0aD0wfX0sTEE9ZnVuY3Rpb24oYSxiLGMpe2IhPT12b2lkIDAmJmEud2coYik7YyYmQS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7UEEoYSl9LApOdW1iZXIoYykpfTtNQS5wcm90b3R5cGUud2c9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPVBiKGZ1bmN0aW9uKCl7YmQoZnVuY3Rpb24oKXthKEUoNSksYi5ldmVudERhdGEpfSl9KTt0aGlzLkg/YygpOnRoaXMuUi5wdXNoKGMpfTt2YXIgUUE9ZnVuY3Rpb24oYSl7YS5OKys7cmV0dXJuIFBiKGZ1bmN0aW9uKCl7YS5LKys7YS5aJiZhLks+PWEuTiYmUEEoYSl9KX0sUkE9ZnVuY3Rpb24oYSl7YS5aPSEwO2EuSz49YS5OJiZQQShhKX07ZnVuY3Rpb24gU0EoKXtyZXR1cm4gQVtUQSgpXX0KZnVuY3Rpb24gVEEoKXtyZXR1cm4gQS5Hb29nbGVBbmFseXRpY3NPYmplY3R8fCJnYSJ9dmFyIFdBPW5ldyBmdW5jdGlvbigpe3RoaXMuSD17fX07ZnVuY3Rpb24gWEEoKXthOnt2YXIgYT1FKDUpO319CmZ1bmN0aW9uIFlBKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9U0EoKSxkPWMmJmMuZ2V0QnlOYW1lJiZjLmdldEJ5TmFtZShhKTtpZihkKXt2YXIgZT1kLmdldCgic2VuZEhpdFRhc2siKTtkLnNldCgic2VuZEhpdFRhc2siLGZ1bmN0aW9uKGYpe3ZhciBnPWYuZ2V0KCJoaXRQYXlsb2FkIiksaD1mLmdldCgiaGl0Q2FsbGJhY2siKSxsPWcuaW5kZXhPZigiJnRpZD0iK2IpPDA7bCYmKGYuc2V0KCJoaXRQYXlsb2FkIixnLnJlcGxhY2UoLyZ0aWQ9VUEtWzAtOV0rLVswLTldKy8sIiZ0aWQ9IitiKSwhMCksZi5zZXQoImhpdENhbGxiYWNrIix2b2lkIDAsITApKTtlKGYpO2wmJihmLnNldCgiaGl0UGF5bG9hZCIsZywhMCksZi5zZXQoImhpdENhbGxiYWNrIixoLCEwKSxmLnNldCgiX3hfMTkiLHZvaWQgMCwhMCksZShmKSl9KX19fTt2YXIgYUI9WyJlcyIsIjEiXSxiQj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5ldmVudERhdGE9e307dGhpcy5IPXt9O2Z6KGZ1bmN0aW9uKGIpe3ZhciBjO3ZhciBkPWIuZXZlbnRJZCxlPWIudGY7aWYoYS5ldmVudERhdGFbZF0pe3ZhciBmPVtdO2EuSFtkXXx8Zi5wdXNoKGFCKTtmLnB1c2guYXBwbHkoZix3KGEuZXZlbnREYXRhW2RdKSk7ZSYmKGEuSFtkXT0hMCk7Yz1mfWVsc2UgYz1bXTtyZXR1cm4gY30pfSxjQjtmdW5jdGlvbiBkQihhLGIpe3ZhciBjO2lmKChjPWNCKSE9bnVsbCYmZm4uTil7dmFyIGQ9Yy5ldmVudERhdGEsZTtlPWIubWF0Y2goL14oZ3RtfGd0YWcpXC4vKT9lbmNvZGVVUklDb21wb25lbnQoYik6IioiO2RbYV09W1siZSIsZV0sWyJlaWQiLFN0cmluZyhhKV1dO2d6KCk7ZXooYSl9fTt2YXIgZUI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSD17fTt0aGlzLks9e307ZnooZnVuY3Rpb24oYil7dmFyIGM9Yi5ldmVudElkLGQ9Yi50ZixlPVtdLGY9YS5IW2NdfHxbXTtmLmxlbmd0aCYmZS5wdXNoKFsidHIiLGYuam9pbigiLiIpXSk7dmFyIGc9YS5LW2NdfHxbXTtnLmxlbmd0aCYmZS5wdXNoKFsidGkiLGcuam9pbigiLiIpXSk7ZCYmKGRlbGV0ZSBhLkhbY10sZGVsZXRlIGEuS1tjXSk7cmV0dXJuIGV9KX0sZkI7CmZ1bmN0aW9uIGdCKGEsYixjKXtmQnx8KGZCPW5ldyBlQik7dmFyIGQ9ZkI7aWYoZm4uTiYmYil7dmFyIGU9ZG4oYik7ZC5IW2FdPWQuSFthXXx8W107ZC5IW2FdLnB1c2goYytlKTt2YXIgZj1iW0dmLlliXTtpZighZil0aHJvdyBFcnJvcigiRXJyb3I6IE5vIGZ1bmN0aW9uIG5hbWUgZ2l2ZW4gZm9yIGZ1bmN0aW9uIGNhbGwuIik7dmFyIGc9KFF6W2ZdPyIxIjoiMiIpK2U7ZC5LW2FdPWQuS1thXXx8W107ZC5LW2FdLnB1c2goZyk7Z3ooKTtleihhKX19O2Z1bmN0aW9uIGhCKGEsYixjKXtjPWM9PT12b2lkIDA/ITE6YztpQigpLmFkZFJlc3RyaWN0aW9uKDAsYSxiLGMpfWZ1bmN0aW9uIGpCKCl7dmFyIGE9dmsoKTtyZXR1cm4gaUIoKS5nZXRSZXN0cmljdGlvbnMoMCxhKX1mdW5jdGlvbiBrQihhLGIsYyl7Yz1jPT09dm9pZCAwPyExOmM7aUIoKS5hZGRSZXN0cmljdGlvbigxLGEsYixjKX1mdW5jdGlvbiBsQigpe3ZhciBhPXZrKCk7cmV0dXJuIGlCKCkuZ2V0UmVzdHJpY3Rpb25zKDEsYSl9dmFyIG1CPWZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXI9e307dGhpcy5IPXt9fSxuQj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuY29udGFpbmVyW2JdO2N8fChjPXtfZW50aXR5OntpbnRlcm5hbDpbXSxleHRlcm5hbDpbXX0sX2V2ZW50OntpbnRlcm5hbDpbXSxleHRlcm5hbDpbXX19LGEuY29udGFpbmVyW2JdPWMpO3JldHVybiBjfTsKbUIucHJvdG90eXBlLmFkZFJlc3RyaWN0aW9uPWZ1bmN0aW9uKGEsYixjLGQpe2Q9ZD09PXZvaWQgMD8hMTpkO2lmKCFkfHwhdGhpcy5IW2JdKXt2YXIgZT1uQih0aGlzLGIpO2E9PT0wP2Q/ZS5fZW50aXR5LmV4dGVybmFsLnB1c2goYyk6ZS5fZW50aXR5LmludGVybmFsLnB1c2goYyk6YT09PTEmJihkP2UuX2V2ZW50LmV4dGVybmFsLnB1c2goYyk6ZS5fZXZlbnQuaW50ZXJuYWwucHVzaChjKSl9fTsKbUIucHJvdG90eXBlLmdldFJlc3RyaWN0aW9ucz1mdW5jdGlvbihhLGIpe3ZhciBjPW5CKHRoaXMsYik7aWYoYT09PTApe3ZhciBkLGU7cmV0dXJuW10uY29uY2F0KHcoKGM9PW51bGw/dm9pZCAwOihkPWMuX2VudGl0eSk9PW51bGw/dm9pZCAwOmQuaW50ZXJuYWwpfHxbXSksdygoYz09bnVsbD92b2lkIDA6KGU9Yy5fZW50aXR5KT09bnVsbD92b2lkIDA6ZS5leHRlcm5hbCl8fFtdKSl9aWYoYT09PTEpe3ZhciBmLGc7cmV0dXJuW10uY29uY2F0KHcoKGM9PW51bGw/dm9pZCAwOihmPWMuX2V2ZW50KT09bnVsbD92b2lkIDA6Zi5pbnRlcm5hbCl8fFtdKSx3KChjPT1udWxsP3ZvaWQgMDooZz1jLl9ldmVudCk9PW51bGw/dm9pZCAwOmcuZXh0ZXJuYWwpfHxbXSkpfXJldHVybltdfTsKbUIucHJvdG90eXBlLmdldEV4dGVybmFsUmVzdHJpY3Rpb25zPWZ1bmN0aW9uKGEsYil7dmFyIGM9bkIodGhpcyxiKSxkLGU7cmV0dXJuIGE9PT0wPyhjPT1udWxsP3ZvaWQgMDooZD1jLl9lbnRpdHkpPT1udWxsP3ZvaWQgMDpkLmV4dGVybmFsKXx8W106KGM9PW51bGw/dm9pZCAwOihlPWMuX2V2ZW50KT09bnVsbD92b2lkIDA6ZS5leHRlcm5hbCl8fFtdfTttQi5wcm90b3R5cGUucmVtb3ZlRXh0ZXJuYWxSZXN0cmljdGlvbnM9ZnVuY3Rpb24oYSl7dmFyIGI9bkIodGhpcyxhKTtiLl9ldmVudCYmKGIuX2V2ZW50LmV4dGVybmFsPVtdKTtiLl9lbnRpdHkmJihiLl9lbnRpdHkuZXh0ZXJuYWw9W10pO3RoaXMuSFthXT0hMH07ZnVuY3Rpb24gaUIoKXtyZXR1cm4ga2ooInIiLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBtQn0pfTtmdW5jdGlvbiBvQihhLGIsYyxkKXt2YXIgZT1jQS50YWdzW2FdLGY9cEIoYSxiLGMsZCk7aWYoIWYpcmV0dXJuIG51bGw7dmFyIGc9WnooZSxjKTtpZihnJiZnLmxlbmd0aCl7dmFyIGg9Z1swXTtmPW9CKGguaW5kZXgse29uU3VjY2VzczpmLG9uRmFpbHVyZTpoLmJvPT09MT9iLnRlcm1pbmF0ZTpmLHRlcm1pbmF0ZTpiLnRlcm1pbmF0ZX0sYyxkKX1yZXR1cm4gZn0KZnVuY3Rpb24gcEIoYSxiLGMsZCl7ZnVuY3Rpb24gZSgpe2Z1bmN0aW9uIHkoKXtpbSgzKTt2YXIgUz1OYigpLU47SkEoMSxhLGYuZ2V0TmFtZSgpKTtnQihjLmlkLGcsIjciKTtPQShjLmxkLEQsImV4Y2VwdGlvbiIsUyk7Zm4uSCYmRnooYyxnLEl5LlgudWopO0l8fChJPSEwLGwoKSl9aWYoZi5JYVtHZi5PcV0pbCgpO2Vsc2V7dmFyIHo9YUEoZixjKTtpZih6IT1udWxsKWZvcih2YXIgQz0wO0M8ei5sZW5ndGg7QysrKWlmKCFYbyh6W0NdKSl7bCgpO3JldHVybn12YXIgRD1OQShjLmxkLGYuTyxmLnRhZ0lkLGYuZ2V0TWV0YWRhdGEoYykpLEk9ITEsRz17dnRwX2d0bU9uU3VjY2VzczpmdW5jdGlvbigpe2lmKCFJKXtJPSEwO3ZhciBTPU5iKCktTjtnQihjLmlkLGcsIjUiKTtPQShjLmxkLEQsInN1Y2Nlc3MiLFMpO2ZuLkgmJkZ6KGMsZyxJeS5YLndqKTtoKCl9fSx2dHBfZ3RtT25GYWlsdXJlOmZ1bmN0aW9uKCl7aWYoIUkpe0k9ITA7dmFyIFM9TmIoKS1OO2dCKGMuaWQsZywiNiIpOwpPQShjLmxkLEQsImZhaWx1cmUiLFMpO2ZuLkgmJkZ6KGMsZyxJeS5YLnZqKTtsKCl9fX07Ry52dHBfZ3RtRXZlbnRJZD1jLmlkO2MucHJpb3JpdHlJZCYmKEcudnRwX2d0bVByaW9yaXR5SWQ9Yy5wcmlvcml0eUlkKTtnQihjLmlkLGcsIjEiKTtmbi5IJiZFeihjLGcpO3ZhciBOPU5iKCk7dHJ5e2YuZXZhbHVhdGUoYyxkLEcpfWNhdGNoKFMpe3koUyl9Zm4uSCYmRnooYyxnLEl5LlguQ24pfX12YXIgZj1jQS50YWdzW2FdLGc9Zi5GZygpLGg9Yi5vblN1Y2Nlc3MsbD1iLm9uRmFpbHVyZSxuPWIudGVybWluYXRlO2lmKGMuaXNCbG9ja2VkKGcpKXJldHVybiBudWxsO3ZhciBwPSR6KGYsYyk7aWYocCYmcC5sZW5ndGgpe3ZhciBxPXBbMF0scj1vQihxLmluZGV4LHtvblN1Y2Nlc3M6aCxvbkZhaWx1cmU6bCx0ZXJtaW5hdGU6bn0sYyxkKTtpZighcilyZXR1cm4gbnVsbDtoPXI7bD1xLmJvPT09Mj9uOnJ9aWYoZi5JYVtHZi5rbl18fGYuSWFbR2YuUXFdKXt2YXIgdD1mLklhW0dmLmtuXT8KY0Eudms6Yy52ayx1PWgsdj1sO2lmKCF0W2FdKXt2YXIgeD1xQihhLHQsUGIoZSkpO2g9eC5vblN1Y2Nlc3M7bD14Lm9uRmFpbHVyZX1yZXR1cm4gZnVuY3Rpb24oKXt0W2FdKHUsdil9fXJldHVybiBlfWZ1bmN0aW9uIHFCKGEsYixjKXt2YXIgZD1bXSxlPVtdO2JbYV09ckIoZCxlLGMpO3JldHVybntvblN1Y2Nlc3M6ZnVuY3Rpb24oKXtiW2FdPXNCO2Zvcih2YXIgZj0wO2Y8ZC5sZW5ndGg7ZisrKWRbZl0oKX0sb25GYWlsdXJlOmZ1bmN0aW9uKCl7YlthXT10Qjtmb3IodmFyIGY9MDtmPGUubGVuZ3RoO2YrKyllW2ZdKCl9fX1mdW5jdGlvbiByQihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQsZSl7YS5wdXNoKGQpO2IucHVzaChlKTtjKCl9fWZ1bmN0aW9uIHNCKGEpe2EoKX1mdW5jdGlvbiB0QihhLGIpe2IoKX07dmFyIHdCPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGQ9MDtkPGNBLnRhZ3MubGVuZ3RoO2QrKylpZihhW2RdKXt2YXIgZT1jQS50YWdzW2RdO3ZhciBmPVFBKGIubGQpO3RyeXt2YXIgZz1vQihkLHtvblN1Y2Nlc3M6ZixvbkZhaWx1cmU6Zix0ZXJtaW5hdGU6Zn0sYixkKTtpZihnKXt2YXIgaD1ReltlLk9dO2MucHVzaCh7Tm86ZCxwcmlvcml0eU92ZXJyaWRlOihoP2gucHJpb3JpdHlPdmVycmlkZXx8MDowKXx8S0EoZS5PLDEpfHwwLGV4ZWN1dGU6Z30pfWVsc2UgdUIoZCxiKSxmKCl9Y2F0Y2gobil7ZigpfX1jLnNvcnQodkIpO2Zvcih2YXIgbD0wO2w8Yy5sZW5ndGg7bCsrKWNbbF0uZXhlY3V0ZSgpO3JldHVybiBjLmxlbmd0aD4wfTsKZnVuY3Rpb24geEIoYSxiKXtpZighSEEpcmV0dXJuITE7dmFyIGM9YVsiZ3RtLnRyaWdnZXJzIl0mJlN0cmluZyhhWyJndG0udHJpZ2dlcnMiXSksZD1JQShhLmV2ZW50LGM/U3RyaW5nKGMpLnNwbGl0KCIsIik6W10pO2lmKCFkLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGU9MDtlPGQubGVuZ3RoOysrZSl7dmFyIGY9UUEoYik7dHJ5e2RbZV0oYSxmKX1jYXRjaChnKXtmKCl9fXJldHVybiEwfWZ1bmN0aW9uIHZCKGEsYil7dmFyIGMsZD1iLnByaW9yaXR5T3ZlcnJpZGUsZT1hLnByaW9yaXR5T3ZlcnJpZGU7Yz1kPmU/MTpkPGU/LTE6MDt2YXIgZjtpZihjIT09MClmPWM7ZWxzZXt2YXIgZz1hLk5vLGg9Yi5ObztmPWc+aD8xOmc8aD8tMTowfXJldHVybiBmfQpmdW5jdGlvbiB1QihhLGIpe2lmKGZuLk4pe3ZhciBjPWZ1bmN0aW9uKGQpe3ZhciBlPWIuaXNCbG9ja2VkKGNBLnRhZ3NbZF0uRmcoKSk/IjMiOiI0IixmPVp6KGNBLnRhZ3NbZF0sYik7ZiYmZi5sZW5ndGgmJmMoZlswXS5pbmRleCk7Z0IoYi5pZCxjQS50YWdzW2RdLkZnKCksZSk7dmFyIGc9JHooY0EudGFnc1tkXSxiKTtnJiZnLmxlbmd0aCYmYyhnWzBdLmluZGV4KX07YyhhKX19dmFyIEhBO2Z1bmN0aW9uIHlCKCl7SEF8fChIQT1uZXcgR0EpO3JldHVybiBIQX0KZnVuY3Rpb24gekIoYSl7dmFyIGI9YVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXSxjPWFbImd0bS5wcmlvcml0eUlkIl0sZD1hWyJndG0ucHJpb3JpdHlRdWV1ZSJdLGU9YS5ldmVudDtmbi5IJiZ2eihiLGUpO2lmKGU9PT0iZ3RtLmpzIil7aWYoJGsoMTMpKXJldHVybiExO1prKDEzLCEwKX12YXIgZj0hMSxnPWxCKCksaD1FZChhLG51bGwpO2lmKCFnLmV2ZXJ5KGZ1bmN0aW9uKHUpe3JldHVybiB1KHtvcmlnaW5hbEV2ZW50RGF0YTpofSl9KSl7aWYoZSE9PSJndG0uanMiJiZlIT09Imd0bS5pbml0IiYmZSE9PSJndG0uaW5pdF9jb25zZW50IilyZXR1cm4hMTtmPSEwfWRCKGIsZSk7dmFyIGw9YS5ldmVudENhbGxiYWNrLG49YS5ldmVudFRpbWVvdXQscD17aWQ6Yixwcmlvcml0eUlkOmMscHJpb3JpdHlRdWV1ZTpkLG5hbWU6ZSxpc0Jsb2NrZWQ6QUIoaCxmKSx2azpbXSxsb2dNYWNyb0Vycm9yOmZ1bmN0aW9uKHUsdix4KXtQKDYpO2ltKDQpO0pBKDIsdix4KX0sY2FjaGVkTW9kZWxWYWx1ZXM6QkIoKSwKbGQ6bmV3IE1BKGZ1bmN0aW9uKCl7Zm4uSCYmeXooYixlKTtGeSg1LGUpO2wmJmwuYXBwbHkobCxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCkpfSxuKSxvcmlnaW5hbEV2ZW50RGF0YTpofTtmbi5IJiZDeihwLmlkKTt2YXIgcT1FQShwKTtmbi5IJiZEeihwLmlkKTtGeSgyLGUpO2NBLmdldFJ1bGVzKCk7ZiYmKHE9Q0IocSkpO2ZuLkgmJnd6KGIpO3ZhciByPXdCKHEscCk7ciYmRnkoNCxlKTt2YXIgdD14QihhLHAubGQpO1JBKHAubGQpO2UhPT0iZ3RtLmpzIiYmZSE9PSJndG0uc3luYyJ8fFhBKCk7cmV0dXJuIERCKHEscil8fHR9CmZ1bmN0aW9uIEJCKCl7dmFyIGE9e307YS5ldmVudD12QSgiZXZlbnQiLDEpO2EuZWNvbW1lcmNlPXZBKCJlY29tbWVyY2UiLDEpO2EuZ3RtPXZBKCJndG0iKTthLmV2ZW50TW9kZWw9dkEoImV2ZW50TW9kZWwiKTtyZXR1cm4gYX0KZnVuY3Rpb24gQUIoYSxiKXt2YXIgYz1BQSgpO3JldHVybiBmdW5jdGlvbihkKXt2YXIgZT1jKGQpO2lmKGUpcmV0dXJuITA7dmFyIGY9ZCYmZFtHZi5ZYl07aWYoIWZ8fHR5cGVvZiBmIT09InN0cmluZyIpcmV0dXJuITA7Zj1mLnJlcGxhY2UoL15fKi8sIiIpO3ZhciBnPWpCKCksaD1hO2ImJihoPUVkKGEsbnVsbCksaFsiZ3RtLnVuaXF1ZUV2ZW50SWQiXT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7Zm9yKHZhciBsPSExLG49YWwoMjcsZnVuY3Rpb24oKXtyZXR1cm57fX0pW2ZdfHxbXSxwPW0oZykscT1wLm5leHQoKTshcS5kb25lO3E9cC5uZXh0KCkpe3ZhciByPXEudmFsdWU7dHJ5e3Ioe2VudGl0eUlkOmYsc2VjdXJpdHlHcm91cHM6bixvcmlnaW5hbEV2ZW50RGF0YTpofSl8fChsPSEwKX1jYXRjaCh0KXtsPSEwfX1yZXR1cm4gbHx8ZX19CmZ1bmN0aW9uIENCKGEpe2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspaWYoYVtjXSl7dmFyIGQ9Y0EudGFnc1tjXS5PO2lmKEJqW2RdfHxjQS50YWdzW2NdLklhW0dmLlJxXSE9PXZvaWQgMHx8S0EoZCwyKSliW2NdPSEwfXJldHVybiBifWZ1bmN0aW9uIERCKGEsYil7aWYoIWIpcmV0dXJuIGI7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaWYoYVtjXSYmY0EudGFnc1tjXSYmIUNqW2NBLnRhZ3NbY10uT10pcmV0dXJuITA7cmV0dXJuITF9O3ZhciBFQj1OZig2MSwxRTMpLEZCPU5mKDY4LDJFMyksWm89WyJhZF9zdG9yYWdlIiwiYW5hbHl0aWNzX3N0b3JhZ2UiXTtmdW5jdGlvbiBHQihhLGIpe2lmKGEpe3ZhciBjPWtqKCJndGgiLGZ1bmN0aW9uKCl7cmV0dXJue319KSxkO2EhPT0yfHwoKGQ9SEIoKSk9PW51bGw/dm9pZCAwOmQuc3RhdHVzKSE9PTN8fGIhPT12b2lkIDAmJmI8PUZCfHwoYT0zLGMuZGw9Yj9NYXRoLmZsb29yKGIvMUUzKTp2b2lkIDApO2Mucz1hO0lCKGMpfX1mdW5jdGlvbiBJQihhKXtpZihhLnMpe3ZhciBiPWZ1bmN0aW9uKCl7dmFyIGM9e3N0YXR1czphLnMsZXhwaXJlczpEYXRlLm5vdygpKzg2NEU1fTthLmRsIT09dm9pZCAwJiYoYy5kZWxheT1hLmRsKTtrcigiZ3RnX2xvYWRfc3RhdHVzIixjKX07YnAoZnVuY3Rpb24oKXtpZihZbygpKWIoKTtlbHNlIGZvcih2YXIgYz1QYihiKSxkPW0oWm8pLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKUlsKGMsZS52YWx1ZSl9LFpvKX19CmZ1bmN0aW9uIEpCKCl7dmFyIGE9S0IoITApO3JldHVybiBhPyhMQihhLnN0YXR1cyxhLmRlbGF5KSwhMSk6ITB9ZnVuY3Rpb24gS0IoYSl7YT1hPT09dm9pZCAwPyExOmE7aWYoYWsoKSl7dmFyIGI9bnIoImd0Z19sb2FkX3N0YXR1cyIpLGM9Yi52YWx1ZSxkPWEmJkFiKGM9PW51bGw/dm9pZCAwOmMuZXhwaXJlcykmJihjPT1udWxsP3ZvaWQgMDpjLmV4cGlyZXMpPERhdGUubm93KCkrMzZFNTtpZihiLmVycm9yPT09MCYmQWIoYz09bnVsbD92b2lkIDA6Yy5zdGF0dXMpJiYhZCl7dmFyIGU9e3N0YXR1czpjLnN0YXR1c307KGM9PW51bGw/dm9pZCAwOmMuZGVsYXkpIT09dm9pZCAwJiYoZS5kZWxheT1jLmRlbGF5KTtyZXR1cm4gZX1yZXR1cm4gSEIoKX19ZnVuY3Rpb24gTEIoYSxiKXt2YXIgYz1raigiZ3RoIixmdW5jdGlvbigpe3JldHVybnt9fSk7Yy5zPWE7YiE9PXZvaWQgMCYmKGMuZGw9Yil9CmZ1bmN0aW9uIEhCKCl7dmFyIGE9bWooImd0aCIpO2lmKGEhPW51bGwmJmEucyl7dmFyIGI9e3N0YXR1czphLnN9O2EuZGwhPT12b2lkIDAmJihiLmRlbGF5PWEuZGwpO3JldHVybiBifX1mdW5jdGlvbiBNQigpe3ZhciBhOygoYT1IQigpKT09bnVsbD92b2lkIDA6YS5zdGF0dXMpPT09MSYmR0IoMyl9ZnVuY3Rpb24gTkIoKXtpZihKQigpKXt2YXIgYT1EYXRlLm5vdygpO25qKCJndGgiLHtsOmZ1bmN0aW9uKCl7R0IoMixEYXRlLm5vdygpLWEpfSxzOjF9KTt2YXIgYj1FKDUpLGM9U2IoYiwiR1RNLSIpPyIvZ3RtLmpzIjoiL2d0YWcvanMiLGQ9Imh0dHBzOi8vIitFKDMpK2MrIj9pZD0iK2IrIiZndGdfaGVhbHRoPTEiO1VjKGQsTUIsTUIpO0Euc2V0VGltZW91dChNQixFQil9fTtmdW5jdGlvbiBPQigpe3lCKCkuYWRkTGlzdGVuZXIoImd0bS5pbml0IixmdW5jdGlvbihhLGIpe1prKDI2LCEwKTtNKDU1NikmJmFrKCkmJiFJZig0NSkmJihmby5IW2NvLmlhLlpiXT1iby5NYS5MaCk7aWYoYWsoKSl7dmFyIGM7Yz1sbyhjby5pYS5aYik7Z28oYyk/aW8oYyxOQik6TkIoKX10byghMSwhMCk7YigpfSl9O2Z1bmN0aW9uIFBCKCl7aWYobWooInBzY2RsIikhPT12b2lkIDApbm0oam0uYmEub2kpPT09dm9pZCAwJiZtbShqbS5iYS5vaSxtaigicHNjZGwiKSk7ZWxzZXt2YXIgYT1mdW5jdGlvbihjKXtuaigicHNjZGwiLGMpO21tKGptLmJhLm9pLGMpfSxiPWZ1bmN0aW9uKCl7YSgiZXJyb3IiKX07dHJ5e0hjLmNvb2tpZURlcHJlY2F0aW9uTGFiZWw/KGEoInBlbmRpbmciKSxIYy5jb29raWVEZXByZWNhdGlvbkxhYmVsLmdldFZhbHVlKCkudGhlbihhKS5jYXRjaChiKSk6YSgibm9hcGkiKX1jYXRjaChjKXtiKGMpfX19O3ZhciBSQj1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5yZWFkeT0hMTt0aGlzLks9MDt0aGlzLkg9W107dmFyIGI9QTtpZihCLnJlYWR5U3RhdGU9PT0iaW50ZXJhY3RpdmUiJiYhQi5jcmVhdGVFdmVudE9iamVjdHx8Qi5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIil0aGlzLm9uUmVhZHkoKTtlbHNleyRjKEIsIkRPTUNvbnRlbnRMb2FkZWQiLGZ1bmN0aW9uKGQpe3JldHVybiB2b2lkIGEub25SZWFkeShkKX0pOyRjKEIsInJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKGQpe3JldHVybiB2b2lkIGEub25SZWFkeShkKX0pO2lmKEIuY3JlYXRlRXZlbnRPYmplY3QmJkIuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKXt2YXIgYz0hMDt0cnl7Yz0hYi5mcmFtZUVsZW1lbnR9Y2F0Y2goZCl7fWMmJlFCKHRoaXMpfSRjKGIsImxvYWQiLGZ1bmN0aW9uKGQpe3JldHVybiB2b2lkIGEub25SZWFkeShkKX0pfX07UkIucHJvdG90eXBlLmlzUmVhZHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFkeX07ClJCLnByb3RvdHlwZS5vblJlYWR5PWZ1bmN0aW9uKGEpe2lmKCF0aGlzLnJlYWR5KXt2YXIgYj1CLmNyZWF0ZUV2ZW50T2JqZWN0LGM9Qi5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIixkPUIucmVhZHlTdGF0ZT09PSJpbnRlcmFjdGl2ZSI7aWYoIWF8fGEudHlwZSE9PSJyZWFkeXN0YXRlY2hhbmdlInx8Y3x8IWImJmQpe3RoaXMucmVhZHk9ITA7Zm9yKHZhciBlPTA7ZTx0aGlzLkgubGVuZ3RoO2UrKyliZCh0aGlzLkhbZV0pfXRoaXMuSC5wdXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBmPU9hLmFwcGx5KDAsYXJndW1lbnRzKSxnPTA7ZzxmLmxlbmd0aDtnKyspYmQoZltnXSk7cmV0dXJuIDB9fX07CnZhciBRQj1mdW5jdGlvbihhKXtpZighYS5yZWFkeSYmYS5LPDE0MCl7YS5LKys7dHJ5e3ZhciBiLGM7KGM9KGI9Qi5kb2N1bWVudEVsZW1lbnQpLmRvU2Nyb2xsKT09bnVsbHx8Yy5jYWxsKGIsImxlZnQiKTthLm9uUmVhZHkoKX1jYXRjaChkKXtBLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCBRQihhKX0sNTApfX19LFNCO2Z1bmN0aW9uIFRCKCl7U0J8fChTQj1uZXcgUkIpfWZ1bmN0aW9uIFVCKCl7VEIoKTt2YXIgYTtyZXR1cm4oYT1TQik9PW51bGw/dm9pZCAwOmEuaXNSZWFkeSgpfWZ1bmN0aW9uIFZCKGEpe1RCKCk7dmFyIGI7KGI9U0IpIT1udWxsJiYoYi5yZWFkeT9iZChhKTpiLkgucHVzaChhKSl9O3ZhciBYQj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9V0IsZTtpZigoZT1kLkgpPT1udWxsfHwhZS5Pcil7dmFyIGY9T2JqZWN0LmtleXMoYikubGVuZ3RoPjA/MjoxLGcsaCxsPShjPT1udWxsP3ZvaWQgMDooaD1jLm9yaWdpbmF0aW5nRW50aXR5KT09bnVsbD92b2lkIDA6aC5vcmlnaW5Db250YWluZXJJZCl8fCIiO2c9bD9TYihsLCJHVE0tIik/MzoyOjE7aWYoIWEpZC5IPXt0eXBlOmYsc291cmNlOmcscGFyYW1zOmJ9O2Vsc2UgaWYoZC5IKXtQKDE4NCk7dmFyIG49ITE7ZC5ILnNvdXJjZT09PWd8fGQuSC5zb3VyY2UhPT0zJiZnIT09M3x8KFVtKCJpZGNzIiwiMSIpLG49ITApO2QuSC50eXBlIT09MiYmZiE9PTJ8fFAoMTg2KTt2YXIgcDtpZihwPWQuSC50eXBlPT09MiYmZj09PTIpYTp7dmFyIHE9ZC5ILnBhcmFtcyxyPU9iamVjdC5rZXlzKHEpLHQ9T2JqZWN0LmtleXMoYik7aWYoci5sZW5ndGghPT10Lmxlbmd0aClwPSEwO2Vsc2V7Zm9yKHZhciB1PW0ociksdj11Lm5leHQoKTshdi5kb25lO3Y9CnUubmV4dCgpKXt2YXIgeD12LnZhbHVlO2lmKCFiLmhhc093blByb3BlcnR5KHgpfHxxW3hdIT09Ylt4XSl7cD0hMDticmVhayBhfX1wPSExfX1wJiYoVW0oImlkY2MiLCIxIiksbj0hMCk7biYmKHRvKCksZC5ILk9yPSEwKX19fSxXQj1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9dm9pZCAwfTt2YXIgWkI9ZnVuY3Rpb24oYSl7dmFyIGI9WUI7KCFmbi5LfHxTYihFKDUpLCJHVE0tIik/MDphPT09dm9pZCAwKSYmYi5IPT09MCYmKFVtKCJtY2MiLCIxIiksYi5IPTEpfSxZQj1uZXcgZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuSD0wO1VtKCJuY2MiLGZ1bmN0aW9uKCl7aWYoSWYoNDUpJiZhLkghPT0yKXJldHVybiIxIn0pfTt2YXIgJEI9L14oPzpBV3xEQ3xHfEdGfEdUfEhBfE1DfFVBKSQvLGFDPS9ccy87CmZ1bmN0aW9uIGJDKGEsYil7aWYoemIoYSkpe2E9TGIoYSk7dmFyIGM9YS5pbmRleE9mKCItIik7aWYoIShjPDApKXt2YXIgZD1hLnN1YnN0cmluZygwLGMpO2lmKCRCLnRlc3QoZCkpe3ZhciBlPWEuc3Vic3RyaW5nKGMrMSksZjtpZihiKXt2YXIgZz1mdW5jdGlvbihuKXt2YXIgcD1uLmluZGV4T2YoIi8iKTtyZXR1cm4gcDwwP1tuXTpbbi5zdWJzdHJpbmcoMCxwKSxuLnN1YnN0cmluZyhwKzEpXX07Zj1nKGUpO2lmKGQ9PT0iREMiJiZmLmxlbmd0aD09PTIpe3ZhciBoPWcoZlsxXSk7aC5sZW5ndGg9PT0yJiYoZlsxXT1oWzBdLGYucHVzaChoWzFdKSl9fWVsc2V7Zj1lLnNwbGl0KCIvIik7Zm9yKHZhciBsPTA7bDxmLmxlbmd0aDtsKyspaWYoIWZbbF18fGFDLnRlc3QoZltsXSkmJihkIT09IkFXInx8bCE9PTEpKXJldHVybn1yZXR1cm57aWQ6YSxwcmVmaXg6ZCxkZXN0aW5hdGlvbklkOmQrIi0iK2ZbMF0saWRzOmYsSmM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZCE9PXRoaXMuZGVzdGluYXRpb25JZH19fX19fQpmdW5jdGlvbiBjQyhhLGIpe2Zvcih2YXIgYz17fSxkPTA7ZDxhLmxlbmd0aDsrK2Qpe3ZhciBlPWJDKGFbZF0sYik7ZSYmKGNbZS5pZF09ZSl9dmFyIGY9W10sZztmb3IoZyBpbiBjKWlmKGMuaGFzT3duUHJvcGVydHkoZykpe3ZhciBoPWNbZ107aC5wcmVmaXg9PT0iQVciJiZoLmlkc1tkQ1sxXV0mJmYucHVzaChoLmRlc3RpbmF0aW9uSWQpfWZvcih2YXIgbD0wO2w8Zi5sZW5ndGg7KytsKWRlbGV0ZSBjW2ZbbF1dO2Zvcih2YXIgbj1bXSxwPW0oT2JqZWN0LmtleXMoYykpLHE9cC5uZXh0KCk7IXEuZG9uZTtxPXAubmV4dCgpKW4ucHVzaChjW3EudmFsdWVdKTtyZXR1cm4gbn12YXIgZUM9e30sZEM9KGVDWzBdPTAsZUNbMV09MSxlQ1syXT0yLGVDWzNdPTAsZUNbNF09MSxlQ1s1XT0wLGVDWzZdPTAsZUNbN109MCxlQyk7dmFyIGZDPXtpbml0aWFsaXplZDoxMSxjb21wbGV0ZToxMixpbnRlcmFjdGl2ZToxM30sZ0M9e30saEM9T2JqZWN0LmZyZWV6ZSgoZ0NbRi5ELlRkXT0hMCxnQykpLGlDPWZ1bmN0aW9uKCl7dGhpcy5SPU5mKDM0LDUwMCk7dGhpcy5IPXt9O3RoaXMuTj17fTt0aGlzLks9dm9pZCAwfSxqQz1mdW5jdGlvbihhLGIsYyl7aWYoYy5sZW5ndGgmJmZuLkspe3ZhciBkOyhkPWEuSClbYl0hPW51bGx8fChkW2JdPVtdKTt2YXIgZTsoZT1hLk4pW2JdIT1udWxsfHwoZVtiXT1bXSk7dmFyIGY9Yy5maWx0ZXIoZnVuY3Rpb24oZyl7cmV0dXJuIWEuTltiXS5pbmNsdWRlcyhnKX0pO2EuSFtiXS5wdXNoLmFwcGx5KGEuSFtiXSx3KGYpKTthLk5bYl0ucHVzaC5hcHBseShhLk5bYl0sdyhmKSk7IWEuSyYmZi5sZW5ndGg+MCYmKFZtKCJ0ZGMiLCEwKSxhLks9QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dG8oKTthLkg9e307YS5LPXZvaWQgMH0sYS5SKSl9fTsKaUMucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO1VtKCJ0ZGMiLGZ1bmN0aW9uKCl7YS5LJiYoQS5jbGVhclRpbWVvdXQoYS5LKSxhLks9dm9pZCAwKTt2YXIgYj1bXSxjO2ZvcihjIGluIGEuSClhLkguaGFzT3duUHJvcGVydHkoYykmJmIucHVzaChjKyIqIithLkhbY10uam9pbigiLiIpKTtyZXR1cm4gYi5sZW5ndGg/Yi5qb2luKCIhIik6dm9pZCAwfSwhMSl9Owp2YXIga0M9ZnVuY3Rpb24oYSxiKXt2YXIgYz17fSxkO2ZvcihkIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShkKSYmKGNbZF09ITApO2Zvcih2YXIgZSBpbiBhKWEuaGFzT3duUHJvcGVydHkoZSkmJihjW2VdPSEwKTtyZXR1cm4gY30sbEM9ZnVuY3Rpb24oYSxiLGMsZCxlKXtkPWQ9PT12b2lkIDA/e306ZDtlPWU9PT12b2lkIDA/IiI6ZTtpZihiPT09YylyZXR1cm5bXTt2YXIgZj1mdW5jdGlvbih0LHUpe3ZhciB2O0FkKHUpPT09Im9iamVjdCI/dj11W3RdOkFkKHUpPT09ImFycmF5IiYmKHY9dVt0XSk7cmV0dXJuIHY9PT12b2lkIDA/aENbdF06dn0sZz1rQyhiLGMpLGg7Zm9yKGggaW4gZylpZihnLmhhc093blByb3BlcnR5KGgpJiZoIT09Ri5ELlhiKXt2YXIgbD0oZT9lKyIuIjoiIikraCxuPWYoaCxiKSxwPWYoaCxjKSxxPUFkKG4pPT09Im9iamVjdCJ8fEFkKG4pPT09ImFycmF5IixyPUFkKHApPT09Im9iamVjdCJ8fEFkKHApPT09ImFycmF5IjtpZihxJiZyKWxDKGEsbixwLGQsbCk7CmVsc2UgaWYocXx8cnx8biE9PXApZFtsXT0hMH1yZXR1cm4gT2JqZWN0LmtleXMoZCl9LG1DPW5ldyBpQzt2YXIgbkM9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5LPU5iKCk7dGhpcy5IPWI7dGhpcy5hcmdzPWM7dGhpcy5tZXNzYWdlQ29udGV4dD1kO3RoaXMudHlwZT1hfSxvQz1mdW5jdGlvbigpe3RoaXMuV2E9e307dGhpcy5pYj17fTt0aGlzLks9e307dGhpcy5OPW51bGw7dGhpcy5oYj17fTt0aGlzLkg9ITE7dGhpcy5zdGF0dXM9MX07ZnVuY3Rpb24gcEMoYSxiKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/cUMoInNldCIsYSk6cUMoInNldCIsYSxiKX1mdW5jdGlvbiByQyhhLGIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9xQygiY29uZmlnIixhKTpxQygiY29uZmlnIixhLGIpfWZ1bmN0aW9uIHNDKGEsYixjKXtjPWN8fHt9O2NbRi5ELlhiXT1hO3JldHVybiBxQygiZXZlbnQiLGIsYyl9ZnVuY3Rpb24gcUMoKXtyZXR1cm4gYXJndW1lbnRzfTt2YXIgdEM9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGwsbixwLHEscil7dGhpcy5ldmVudElkPWE7dGhpcy5wcmlvcml0eUlkPWI7dGhpcy5wcmlvcml0eVF1ZXVlPWM7dGhpcy5FYT1kO3RoaXMuV2E9ZTt0aGlzLmhiPWY7dGhpcy5IYz1nO3RoaXMuQmc9aDt0aGlzLmliPWw7dGhpcy5ldmVudE1ldGFkYXRhPW47dGhpcy5vblN1Y2Nlc3M9cDt0aGlzLm9uRmFpbHVyZT1xO3RoaXMuaXNHdG1FdmVudD1yfSx1Qz1mdW5jdGlvbihhKXt2YXIgYj17b25TdWNjZXNzOnhiLG9uRmFpbHVyZTp4Yn07Yj1iPT09dm9pZCAwP3t9OmI7dmFyIGMsZCxlLGYsZyxoLGwsbixwLHEscix0LHUsdix4LHkseixDLEQsSSxHLE4sUyxXLGVhLGphO3JldHVybiBuZXcgdEMoKHY9KGM9Yik9PW51bGw/dm9pZCAwOmMuZXZlbnRJZCkhPW51bGw/djphLmV2ZW50SWQsKHg9KGQ9Yik9PW51bGw/dm9pZCAwOmQucHJpb3JpdHlJZCkhPW51bGw/eDphLnByaW9yaXR5SWQsKHk9KGU9Yik9PW51bGw/dm9pZCAwOmUucHJpb3JpdHlRdWV1ZSkhPQpudWxsP3k6YS5wcmlvcml0eVF1ZXVlLCh6PShmPWIpPT1udWxsP3ZvaWQgMDpmLkVhKSE9bnVsbD96OmEuRWEsKEM9KGc9Yik9PW51bGw/dm9pZCAwOmcuV2EpIT1udWxsP0M6YS5XYSwoRD0oaD1iKT09bnVsbD92b2lkIDA6aC5oYikhPW51bGw/RDphLmhiLChJPShsPWIpPT1udWxsP3ZvaWQgMDpsLkhjKSE9bnVsbD9JOmEuSGMsKEc9KG49Yik9PW51bGw/dm9pZCAwOm4uQmcpIT1udWxsP0c6YS5CZywoTj0ocD1iKT09bnVsbD92b2lkIDA6cC5pYikhPW51bGw/TjphLmliLChTPShxPWIpPT1udWxsP3ZvaWQgMDpxLmV2ZW50TWV0YWRhdGEpIT1udWxsP1M6YS5ldmVudE1ldGFkYXRhLChXPShyPWIpPT1udWxsP3ZvaWQgMDpyLm9uU3VjY2VzcykhPW51bGw/VzphLm9uU3VjY2VzcywoZWE9KHQ9Yik9PW51bGw/dm9pZCAwOnQub25GYWlsdXJlKSE9bnVsbD9lYTphLm9uRmFpbHVyZSwoamE9KHU9Yik9PW51bGw/dm9pZCAwOnUuaXNHdG1FdmVudCkhPW51bGw/amE6YS5pc0d0bUV2ZW50KX0sCnZDPWZ1bmN0aW9uKGEsYil7dmFyIGM9W107c3dpdGNoKGIpe2Nhc2UgMzpjLnB1c2goYS5FYSk7Yy5wdXNoKGEuV2EpO2MucHVzaChhLmhiKTtjLnB1c2goYS5IYyk7Yy5wdXNoKGEuaWIpO2JyZWFrO2Nhc2UgMjpjLnB1c2goYS5FYSk7YnJlYWs7Y2FzZSAxOmMucHVzaChhLldhKTtjLnB1c2goYS5oYik7Yy5wdXNoKGEuSGMpO2MucHVzaChhLmliKTticmVhaztjYXNlIDQ6Yy5wdXNoKGEuRWEpLGMucHVzaChhLldhKSxjLnB1c2goYS5oYiksYy5wdXNoKGEuSGMpfXJldHVybiBjfSxPPWZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZT1tKHZDKGEsZD09PXZvaWQgMD8zOmQpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZTtpZihnW2JdIT09dm9pZCAwKXJldHVybiBnW2JdfXJldHVybiBjfSx3Qz1mdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz12QyhhLDQpLGQ9bShjKSxlPWQubmV4dCgpOyFlLmRvbmU7ZT1kLm5leHQoKSlmb3IodmFyIGY9T2JqZWN0LmtleXMoZS52YWx1ZSksCmc9bShmKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSliW2gudmFsdWVdPTE7cmV0dXJuIE9iamVjdC5rZXlzKGIpfTt0Qy5wcm90b3R5cGUuZ2V0TWVyZ2VkVmFsdWVzPWZ1bmN0aW9uKGEsYixjKXtiPWI9PT12b2lkIDA/MzpiO3ZhciBkPXt9LGU9ITEsZj1mdW5jdGlvbihuKXtDZChuKSYmR2IobixmdW5jdGlvbihwLHEpe2U9ITA7ZFtwXT1xfSl9O2MmJmYoYyk7dmFyIGc9dkModGhpcyxiKTtnLnJldmVyc2UoKTtmb3IodmFyIGg9bShnKSxsPWgubmV4dCgpOyFsLmRvbmU7bD1oLm5leHQoKSlmKGwudmFsdWVbYV0pO3JldHVybiBlP2Q6dm9pZCAwfTsKdmFyIHhDPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bRi5ELktmLEYuRC5HZixGLkQuSGYsRi5ELklmLEYuRC5KZixGLkQuTGYsRi5ELk1mXSxjPXZDKGEsMyksZD1tKGMpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXtmb3IodmFyIGY9ZS52YWx1ZSxnPXt9LGg9ITEsbD1tKGIpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD1uLnZhbHVlO2ZbcF0hPT12b2lkIDAmJihnW3BdPWZbcF0saD0hMCl9dmFyIHE9aD9nOnZvaWQgMDtpZihxKXJldHVybiBxfXJldHVybnt9fSx5Qz1mdW5jdGlvbihhLGIsYyl7dGhpcy5ldmVudElkPWE7dGhpcy5wcmlvcml0eUlkPWI7dGhpcy5wcmlvcml0eVF1ZXVlPWM7dGhpcy5FYT17fTt0aGlzLldhPXt9O3RoaXMuaGI9e307dGhpcy5IYz17fTt0aGlzLkJnPXt9O3RoaXMuaWI9e307dGhpcy5ldmVudE1ldGFkYXRhPXt9O3RoaXMuaXNHdG1FdmVudD0hMTt0aGlzLm9uU3VjY2Vzcz1mdW5jdGlvbigpe307dGhpcy5vbkZhaWx1cmU9CmZ1bmN0aW9uKCl7fX0sekM9ZnVuY3Rpb24oYSxiKXthLkVhPWI7cmV0dXJuIGF9LEFDPWZ1bmN0aW9uKGEsYil7YS5XYT1iO3JldHVybiBhfSxCQz1mdW5jdGlvbihhLGIpe2EuaGI9YjtyZXR1cm4gYX0sQ0M9ZnVuY3Rpb24oYSxiKXthLkhjPWI7cmV0dXJuIGF9LERDPWZ1bmN0aW9uKGEsYil7YS5CZz1iO3JldHVybiBhfSxFQz1mdW5jdGlvbihhLGIpe2EuaWI9YjtyZXR1cm4gYX0sRkM9ZnVuY3Rpb24oYSxiKXthLmV2ZW50TWV0YWRhdGE9Ynx8e307cmV0dXJuIGF9LEdDPWZ1bmN0aW9uKGEsYil7YS5vblN1Y2Nlc3M9YjtyZXR1cm4gYX0sSEM9ZnVuY3Rpb24oYSxiKXthLm9uRmFpbHVyZT1iO3JldHVybiBhfSxJQz1mdW5jdGlvbihhLGIpe2EuaXNHdG1FdmVudD1iO3JldHVybiBhfSxKQz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IHRDKGEuZXZlbnRJZCxhLnByaW9yaXR5SWQsYS5wcmlvcml0eVF1ZXVlLGEuRWEsYS5XYSxhLmhiLGEuSGMsYS5CZyxhLmliLGEuZXZlbnRNZXRhZGF0YSwKYS5vblN1Y2Nlc3MsYS5vbkZhaWx1cmUsYS5pc0d0bUV2ZW50KX07ZnVuY3Rpb24gS0MoYSxiKXtHYihhLGZ1bmN0aW9uKGMpe3ZhciBkO2lmKGQ9Yy5jaGFyQXQoMCk9PT0iXyIpe3ZhciBlO2E6c3dpdGNoKGMpe2Nhc2UgRi5ELlZiOmNhc2UgRi5ELlJmOmNhc2UgRi5ELnNoOmU9ITA7YnJlYWsgYTtkZWZhdWx0OmU9ITF9ZD0hZX1kJiYoYiYmYihjKSxkZWxldGUgYVtjXSl9KX07dmFyIExDPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLkg9e307ZnooZnVuY3Rpb24oYil7dmFyIGM9Yi5ldmVudElkLGQ9Yi50ZixlPVtdLGY9YS5IW2NdfHxbXTtmLmxlbmd0aCYmZS5wdXNoKFsiZXByIixmLmpvaW4oIi4iKV0pO2QmJmRlbGV0ZSBhLkhbY107cmV0dXJuIGV9KX0sTkM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU1DO2ZuLk4mJmEhPT12b2lkIDAmJihkLkhbYV09ZC5IW2FdfHxbXSxkLkhbYV0ucHVzaChjK2IpLGd6KCksZXooYSkpfSxNQztmdW5jdGlvbiBPQygpe01DfHwoTUM9bmV3IExDKX07dmFyIFBDPWZ1bmN0aW9uKCl7dGhpcy5kZXN0aW5hdGlvbnM9e307dGhpcy5IPXt9O3RoaXMuY29tbWFuZHM9W119LFFDPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZGVzdGluYXRpb25zW2IuZGVzdGluYXRpb25JZF09YS5kZXN0aW5hdGlvbnNbYi5kZXN0aW5hdGlvbklkXXx8bmV3IG9DfSxSQz1mdW5jdGlvbihhLGIsYyxkKXtpZihkLkgpe3ZhciBlPVFDKGEsZC5IKSxmPWUuTjtpZihmKXt2YXIgZz1FZChjLG51bGwpLGg9RWQoZS5XYVtkLkguZGVzdGluYXRpb25JZF0sbnVsbCksbD1FZChlLmhiLG51bGwpLG49RWQoZS5pYixudWxsKSxwPUVkKGEuSCxudWxsKSxxPXt9O2lmKGZuLk4pdHJ5e3E9RWQockEuSCxudWxsKX1jYXRjaCh4KXtQKDcyKX12YXIgcj1kLkgucHJlZml4LHQ9ZnVuY3Rpb24oeCl7dmFyIHk9ZC5tZXNzYWdlQ29udGV4dC5ldmVudElkO09DKCk7TkMoeSxyLHgpfSx1PUpDKElDKEhDKEdDKEZDKERDKENDKEVDKEJDKEFDKHpDKG5ldyB5QyhkLm1lc3NhZ2VDb250ZXh0LmV2ZW50SWQsCmQubWVzc2FnZUNvbnRleHQucHJpb3JpdHlJZCxkLm1lc3NhZ2VDb250ZXh0LnByaW9yaXR5UXVldWUpLGcpLGgpLGwpLG4pLHApLHEpLGQubWVzc2FnZUNvbnRleHQuZXZlbnRNZXRhZGF0YSksZnVuY3Rpb24oKXtpZih0KXt2YXIgeD10O3Q9dm9pZCAwO3goIjIiKTtpZihkLm1lc3NhZ2VDb250ZXh0Lm9uU3VjY2VzcylkLm1lc3NhZ2VDb250ZXh0Lm9uU3VjY2VzcygpfX0pLGZ1bmN0aW9uKCl7aWYodCl7dmFyIHg9dDt0PXZvaWQgMDt4KCIzIik7aWYoZC5tZXNzYWdlQ29udGV4dC5vbkZhaWx1cmUpZC5tZXNzYWdlQ29udGV4dC5vbkZhaWx1cmUoKX19KSwhIWQubWVzc2FnZUNvbnRleHQuaXNHdG1FdmVudCkpLHY9ZnVuY3Rpb24oKXt0cnl7dmFyIHg9ZC5tZXNzYWdlQ29udGV4dC5ldmVudElkO09DKCk7TkMoeCxyLCIxIik7dmFyIHk9ZC5ILmlkLHo9bUM7aWYoZm4uSyYmYj09PUYuRC53YSl7dmFyIEMsRD0oQz1iQyh5KSk9PW51bGw/dm9pZCAwOkMuaWRzO2lmKCEoRCYmRC5sZW5ndGg+CjEpKXt2YXIgST11LkVhW0YuRC5YYl07aWYoIUl8fEk9PT15KXt2YXIgRyxOPU1jKCJnb29nbGVfdGFnX2RhdGEiLHt9KTtOLnRkfHwoTi50ZD17fSk7Rz1OLnRkO3ZhciBTPUVkKHUuSGMsbnVsbCk7RWQodS5FYSxTKTt2YXIgVz1bXSxlYTtmb3IoZWEgaW4gRylHLmhhc093blByb3BlcnR5KGVhKSYmbEMoeixHW2VhXSxTKS5sZW5ndGgmJlcucHVzaChlYSk7Vy5sZW5ndGgmJihqQyh6LHksVyksc2IoIlRBR0dJTkciLGZDW0IucmVhZHlTdGF0ZV18fDE0KSk7R1t5XT1TfX19ZihkLkguaWQsYixkLkssdSl9Y2F0Y2goZmEpe3ZhciBqYT1kLm1lc3NhZ2VDb250ZXh0LmV2ZW50SWQ7T0MoKTtOQyhqYSxyLCI0Iil9fTtiPT09Imd0YWcuZ2V0Ij92KCk6aW8oZS5SLHYpfX19LFNDPWZ1bmN0aW9uKGEsYil7aWYoYi50eXBlIT09InJlcXVpcmUiKXt2YXIgYz12b2lkIDA7Yi50eXBlPT09ImV2ZW50IiYmKGM9Yi5hcmdzWzFdKTtpZihiLkgpZm9yKHZhciBkPVFDKGEsYi5IKS5LW2IudHlwZV18fApbXSxlPTA7ZTxkLmxlbmd0aDtlKyspZFtlXShjKTtlbHNlIGZvcih2YXIgZiBpbiBhLmRlc3RpbmF0aW9ucylpZihhLmRlc3RpbmF0aW9ucy5oYXNPd25Qcm9wZXJ0eShmKSl7dmFyIGc9YS5kZXN0aW5hdGlvbnNbZl07aWYoZyYmZy5LKWZvcih2YXIgaD1nLktbYi50eXBlXXx8W10sbD0wO2w8aC5sZW5ndGg7bCsrKWhbbF0oYyl9fX07UEMucHJvdG90eXBlLnJlZ2lzdGVyPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPVFDKHRoaXMsYSk7ZS5zdGF0dXMhPT0zJiYoZS5OPWIsZS5zdGF0dXM9MyxlLlI9bG8oYyksVEModGhpcyxhLGR8fHt9KSx0aGlzLmZsdXNoKCkpfTsKUEMucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oYSxiLGMsZCl7YyE9PXZvaWQgMCYmKFFDKHRoaXMsYykuc3RhdHVzPT09MSYmKFFDKHRoaXMsYykuc3RhdHVzPTIsdGhpcy5wdXNoKCJyZXF1aXJlIixbe31dLGMse30pKSxRQyh0aGlzLGMpLkgmJihkLmRlZmVycmFibGU9ITEpLGQuZXZlbnRNZXRhZGF0YXx8KGQuZXZlbnRNZXRhZGF0YT17fSksZC5ldmVudE1ldGFkYXRhW0guSi5zZ118fChkLmV2ZW50TWV0YWRhdGFbSC5KLnNnXT1bYy5kZXN0aW5hdGlvbklkXSksZC5ldmVudE1ldGFkYXRhW0guSi5tal18fChkLmV2ZW50TWV0YWRhdGFbSC5KLm1qXT1bYy5pZF0pKTt0aGlzLmNvbW1hbmRzLnB1c2gobmV3IG5DKGEsYyxiLGQpKTtkLmRlZmVycmFibGV8fHRoaXMuZmx1c2goKX07ClBDLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcyxjPVtdLGQ9ITEsZT17fTt0aGlzLmNvbW1hbmRzLmxlbmd0aDtlPXtabjp2b2lkIDB9KXt2YXIgZj10aGlzLmNvbW1hbmRzWzBdLGc9Zi5IO2lmKGYubWVzc2FnZUNvbnRleHQuZGVmZXJyYWJsZSkhZ3x8UUModGhpcyxnKS5IPyhmLm1lc3NhZ2VDb250ZXh0LmRlZmVycmFibGU9ITEsdGhpcy5jb21tYW5kcy5wdXNoKGYpKTpjLnB1c2goZiksdGhpcy5jb21tYW5kcy5zaGlmdCgpO2Vsc2V7c3dpdGNoKGYudHlwZSl7Y2FzZSAicmVxdWlyZSI6aWYoUUModGhpcyxnKS5zdGF0dXMhPT0zJiYhYSl7dGhpcy5jb21tYW5kcy5wdXNoLmFwcGx5KHRoaXMuY29tbWFuZHMsYyk7cmV0dXJufWJyZWFrO2Nhc2UgInNldCI6dmFyIGg9Zi5hcmdzWzBdO0tDKGgpO1VDKGgpO0diKGgsZnVuY3Rpb24oeCx5KXtFZChWYih4LHkpLGIuSCl9KTtIdShoLCEwKTticmVhaztjYXNlICJldmVudCI6ZS5abj1mLmFyZ3NbMV07dmFyIGw9ClZDKGYuYXJnc1swXSxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KGUpKSxuPWxbRi5ELlhiXTtuJiZuIT09Zy5pZHx8SHUobCk7UkModGhpcyxlLlpuLGwsZik7YnJlYWs7Y2FzZSAiZ2V0Ijp2YXIgcD17fSxxPShwW0YuRC5UZl09Zi5hcmdzWzBdLHBbRi5ELlNmXT1mLmFyZ3NbMV0scCk7UkModGhpcyxGLkQuSmIscSxmKTticmVhaztjYXNlICJjb250YWluZXJfY29uZmlnIjp2YXIgcj1RQyh0aGlzLGcpLHQ9VkMoZi5hcmdzWzBdLGZ1bmN0aW9uKCl7fSk7SHUodCwhMCk7ci5IPSEwO0VkKHQsci5oYik7ZD0hMDticmVhaztjYXNlICJkZXN0aW5hdGlvbl9jb25maWciOnZhciB1PVFDKHRoaXMsZyksdj1WQyhmLmFyZ3NbMF0sZnVuY3Rpb24oKXt9KTtIdSh2LCEwKTt1LldhW2cuaWRdfHwodS5XYVtnLmlkXT17fSk7dS5IPSEwO0VkKHYsdS5XYVtnLmlkXSk7ZD0hMDticmVhaztjYXNlICJyZXNldF9jb250YWluZXJfY29uZmlnIjpRQyh0aGlzLGcpLmhiPXt9O2JyZWFrOwpjYXNlICJyZXNldF90YXJnZXRfY29uZmlnIjpRQyh0aGlzLGcpLldhW2cuaWRdPXt9fXRoaXMuY29tbWFuZHMuc2hpZnQoKTtTQyh0aGlzLGYpfX10aGlzLmNvbW1hbmRzLnB1c2guYXBwbHkodGhpcy5jb21tYW5kcyxjKTtkJiZ0aGlzLmZsdXNoKCl9O3ZhciBUQz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9RWQoYyxudWxsKTtFZChRQyhhLGIpLmliLGQpO1FDKGEsYikuaWI9ZH07ZnVuY3Rpb24gVkMoYSxiKXt2YXIgYz17fTtHYihhLGZ1bmN0aW9uKGQsZSl7RWQoVmIoZCxlKSxjKX0pO0tDKGMsYik7VUMoYyk7cmV0dXJuIGN9CmZ1bmN0aW9uIFVDKGEpe2lmKE0oNjAxKSYmQkEoKSl7Zm9yKHZhciBiPSExLGM9bShuZXcgU2V0KFtGLkQueWMsRi5ELmRkXSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlO2FbZV0hPT12b2lkIDAmJihiPSEwLGRlbGV0ZSBhW2VdKX1iJiYhYWwoMzUsZnVuY3Rpb24oKXtyZXR1cm4hMX0pJiYoWmsoMzUsITApLHdpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5sb2cmJndpbmRvdy5jb25zb2xlLmxvZygiR29vZ2xlIFRhZyBNYW5hZ2VyOiBTZXJ2ZXItc2lkZSBHVE0gcGFyYW1ldGVycyAodHJhbnNwb3J0X3VybC9zZXJ2ZXJfY29udGFpbmVyX3VybCkgYXJlIG5vdCBwZXJtaXR0ZWQgb24gdGhpcyBkb21haW4gYW5kIGhhdmUgYmVlbiBpZ25vcmVkLiIpLFAoMTk3KSl9fTt2YXIgV0M9ZnVuY3Rpb24oKXt0aGlzLkg9bmV3IFBDO3RoaXMuSz0hMX07V0MucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7dGhpcy5ILmZsdXNoKCl9O3ZhciBYQztmdW5jdGlvbiBZQygpe1hDfHwoWEM9bmV3IFdDKTtyZXR1cm4gWEN9ZnVuY3Rpb24gWkMoYSxiLGMsZCl7dmFyIGU9WUMoKSxmPWJDKGMsZC5pc0d0bUV2ZW50KTtmJiYoZS5LJiYoZC5kZWZlcnJhYmxlPSEwKSxlLkgucHVzaCgiZXZlbnQiLFtiLGFdLGYsZCkpfWZ1bmN0aW9uICRDKGEsYixjLGQpe3ZhciBlPVlDKCksZj1iQyhjLGQuaXNHdG1FdmVudCk7ZiYmZS5ILnB1c2goImdldCIsW2EsYl0sZixkKX1mdW5jdGlvbiBhRChhLGIsYyl7dmFyIGQ9WUMoKSxlPWJDKGEsYy5pc0d0bUV2ZW50KTtlJiZkLkgucHVzaCgiY29udGFpbmVyX2NvbmZpZyIsW2JdLGUsYyl9CmZ1bmN0aW9uIGJEKGEsYixjKXt2YXIgZD1ZQygpLGU9YkMoYSxjLmlzR3RtRXZlbnQpO2UmJmQuSC5wdXNoKCJkZXN0aW5hdGlvbl9jb25maWciLFtiXSxlLGMpfWZ1bmN0aW9uIGNEKGEpe3ZhciBiPVlDKCksYz1iQyhhLCEwKTtjJiZiLkgucHVzaCgicmVzZXRfY29udGFpbmVyX2NvbmZpZyIsW10sYyx7fSl9ZnVuY3Rpb24gZEQoYSl7dmFyIGI9WUMoKSxjPWJDKGEsITApO2MmJmIuSC5wdXNoKCJyZXNldF90YXJnZXRfY29uZmlnIixbXSxjLHt9KX1mdW5jdGlvbiBlRChhKXt2YXIgYj1ZQygpLGM9YkMoYSwhMCk7cmV0dXJuIGM/UUMoYi5ILGMpLmliOnt9fWZ1bmN0aW9uIGZEKGEpe3JldHVybiBZQygpLkguSFthXX1mdW5jdGlvbiBnRChhKXt2YXIgYj1ZQygpLGM9YkMoYSwhMCk7cmV0dXJuIGM/UUMoYi5ILGMpLkg6ITF9O2Z1bmN0aW9uIGhEKGEsYil7YS5oYXNPd25Qcm9wZXJ0eSgiZ3RtLnVuaXF1ZUV2ZW50SWQiKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsImd0bS51bmlxdWVFdmVudElkIix7dmFsdWU6cmooKX0pO2IuZXZlbnRJZD1hWyJndG0udW5pcXVlRXZlbnRJZCJdO2IucHJpb3JpdHlJZD1hWyJndG0ucHJpb3JpdHlJZCJdO3JldHVybntldmVudElkOmIuZXZlbnRJZCxwcmlvcml0eUlkOmIucHJpb3JpdHlJZH19ZnVuY3Rpb24gaUQoYSl7Zm9yKHZhciBiPW0oW0YuRC5kZCxGLkQueWNdKSxjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSl7dmFyIGQ9Yy52YWx1ZSxlPWEmJmFbZF18fGZEKGQpO2lmKGUpcmV0dXJuIGV9fWZ1bmN0aW9uIGpEKGEpe3JldHVybiFhLmlzR3RtRXZlbnR8fGEuZXZlbnRNZXRhZGF0YSYmYS5ldmVudE1ldGFkYXRhW0guSi5DY10mJmEuZXZlbnRNZXRhZGF0YVtILkouTmJdIT09dmsoKT8hMTohMH07dmFyIGtEPW5ldyBmdW5jdGlvbigpe3RoaXMuSD0hMX07dmFyIGxEPWZ1bmN0aW9uKCl7dGhpcy5tZXNzYWdlcz1bXTt0aGlzLkg9W119O2xELnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLm1lc3NhZ2VzLmxlbmd0aCsxO2FbImd0bS51bmlxdWVFdmVudElkIl09YjthWyJndG0ucHJpb3JpdHlJZCJdPWQ7dmFyIGU9bmEoT2JqZWN0LCJhc3NpZ24iKS5jYWxsKE9iamVjdCx7fSxjLHtldmVudElkOmIscHJpb3JpdHlJZDpkLGZyb21Db250YWluZXJFeGVjdXRpb246ITB9KTtpZihNKDU5NSkpe3ZhciBmPWMucHJpb3JpdHlRdWV1ZT9bXS5jb25jYXQodyhjLnByaW9yaXR5UXVldWUpLFtkXSk6W2RdO2FbImd0bS5wcmlvcml0eVF1ZXVlIl09ZjtlLnByaW9yaXR5UXVldWU9Zn12YXIgZz17bWVzc2FnZTphLG5vdEJlZm9yZUV2ZW50SWQ6Yixwcmlvcml0eUlkOmQsbWVzc2FnZUNvbnRleHQ6ZX07dGhpcy5tZXNzYWdlcy5wdXNoKGcpO2Zvcih2YXIgaD0wO2g8dGhpcy5ILmxlbmd0aDtoKyspdHJ5e3RoaXMuSFtoXShnKX1jYXRjaChsKXt9fTsKbEQucHJvdG90eXBlLmxpc3Rlbj1mdW5jdGlvbihhKXt0aGlzLkgucHVzaChhKX07bEQucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe2Zvcih2YXIgYT17fSxiPTA7Yjx0aGlzLm1lc3NhZ2VzLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMubWVzc2FnZXNbYl0sZD1hW2Mubm90QmVmb3JlRXZlbnRJZF07ZHx8KGQ9W10sYVtjLm5vdEJlZm9yZUV2ZW50SWRdPWQpO2QucHVzaChjKX1yZXR1cm4gYX07bEQucHJvdG90eXBlLnBydW5lPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPVtdLGQ9MDtkPHRoaXMubWVzc2FnZXMubGVuZ3RoO2QrKyl7dmFyIGU9dGhpcy5tZXNzYWdlc1tkXTtlLm5vdEJlZm9yZUV2ZW50SWQ9PT1hP2IucHVzaChlKTpjLnB1c2goZSl9dGhpcy5tZXNzYWdlcz1jO3JldHVybiBifTsKZnVuY3Rpb24gbUQoYSxiLGMpe2MuZXZlbnRNZXRhZGF0YT1jLmV2ZW50TWV0YWRhdGF8fHt9O2MuZXZlbnRNZXRhZGF0YVtILkouTmJdPU0oNTUwKT92aygpOkUoNik7bkQoKS5lbnF1ZXVlKGEsYixjKX1mdW5jdGlvbiBuRCgpe3JldHVybiBraigibWIiLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsRH0pfTt2YXIgcEQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1vRDtiPVN0cmluZyhiKS5zcGxpdCgiLCIpO2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1jLk5bYltkXV18fFtdO2MuTltiW2RdXT1lO2UuaW5kZXhPZihhKTwwJiZlLnB1c2goYSl9fSxxRD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1vRCxkPVtdLGU9W10sZj17fSxnPTA7ZzxhLmxlbmd0aDtmPXtsazp2b2lkIDAsUWo6dm9pZCAwLFJqOnZvaWQgMH0sZysrKXt2YXIgaD1hW2ddO2lmKGguaW5kZXhPZigiLSIpPj0wKXtpZihmLmxrPWJDKGgsYiksZi5sayl7dmFyIGw9dGsoKTtDYihsLGZ1bmN0aW9uKHgpe3JldHVybiBmdW5jdGlvbih5KXtyZXR1cm4geC5say5kZXN0aW5hdGlvbklkPT09eX19KGYpKT9kLnB1c2goaCk6ZS5wdXNoKGgpfX1lbHNle2lmKE0oNTUwKSl7dmFyIG49Yy5LW2hdfHxbXTtmLlJqPXt9O24uZm9yRWFjaChmdW5jdGlvbih4KXtyZXR1cm4gZnVuY3Rpb24oeSl7eC5Salt5XT0hMH19KGYpKTtmb3IodmFyIHA9CnRrKCkscT0wO3E8cC5sZW5ndGg7cSsrKWYuUmpbcFtxXV0mJmQucHVzaChwW3FdKX1lbHNle3ZhciByPWMuSFtoXXx8W107Zi5Raj17fTtyLmZvckVhY2goZnVuY3Rpb24oeCl7cmV0dXJuIGZ1bmN0aW9uKHkpe3guUWpbeV09ITB9fShmKSk7Zm9yKHZhciB0PXdrKCksdT0wO3U8dC5sZW5ndGg7dSsrKWlmKGYuUWpbdFt1XV0pe2Q9ZC5jb25jYXQodGsoKSk7YnJlYWt9fXZhciB2PWMuTltoXXx8W107di5sZW5ndGgmJihkPWQuY29uY2F0KHYpKX19cmV0dXJue2VrOmQsUHM6ZX19LHJEPWZ1bmN0aW9uKGEpe0diKG9ELkgsZnVuY3Rpb24oYixjKXt2YXIgZD1jLmluZGV4T2YoYSk7ZD49MCYmYy5zcGxpY2UoZCwxKX0pfSxzRD1mdW5jdGlvbihhKXtHYihvRC5LLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9Yy5pbmRleE9mKGEpO2Q+PTAmJmMuc3BsaWNlKGQsMSl9KX0sdEQ9ZnVuY3Rpb24oYSl7R2Iob0QuTixmdW5jdGlvbihiLGMpe3ZhciBkPWMuaW5kZXhPZihhKTtkPj0wJiZjLnNwbGljZShkLAoxKX0pfSxvRD1uZXcgZnVuY3Rpb24oKXt0aGlzLkg9e307dGhpcy5OPXt9O3RoaXMuSz17fX07ZnVuY3Rpb24gdUQoYSxiLGMpe3ZhciBkPUVkKGEsbnVsbCk7ZC5ldmVudElkPXZvaWQgMDtkLmluaGVyaXRQYXJlbnRDb25maWc9dm9pZCAwO09iamVjdC5rZXlzKGIpLnNvbWUoZnVuY3Rpb24oZil7cmV0dXJuIGJbZl0hPT12b2lkIDB9KSYmUCgxMzYpO3ZhciBlPUVkKGIsbnVsbCk7RWQoYyxlKTttRChyQyh3aygpWzBdLGUpLGEuZXZlbnRJZCxkKX0KZnVuY3Rpb24gdkQoYSxiLGMsZCl7dmFyIGU9e30sZj0oZVtGLkQuVWJdPUYuRC53YSxlWyJndG0uY29uZmlnQ29udGFpbmVySWQiXT1hLmlkLGVbImd0bS5jb25maWdQYXJhbWV0ZXJzIl09YixlWyJndG0udW5pcXVlRXZlbnRJZCJdPWQuZXZlbnRJZCxlKTtjLnByaW9yaXR5UXVldWUmJihmWyJndG0ucHJpb3JpdHlRdWV1ZSJdPWMucHJpb3JpdHlRdWV1ZSk7Yy5ldmVudE1ldGFkYXRhJiYoZlsiZ3RtLmV2ZW50TWV0YWRhdGEiXT1jLmV2ZW50TWV0YWRhdGEpO2EuSmMoKSYmKGZbImd0bS5jb25maWdDb250YWluZXJJZCJdPXdrKClbMF0sZlsiZ3RtLm9yaWdpbmFsQ29uZmlnVGFyZ2V0SWQiXT1hLmlkKTtyZXR1cm4gZn1mdW5jdGlvbiB3RChhLGIsYyl7aWYoSWYoMTEpJiYhYyYmIWFbRi5ELlZkXSl7dmFyIGQ9YWwoMTAsZnVuY3Rpb24oKXtyZXR1cm4hMX0pO1prKDEwLCEwKTtYQihkLGEsYik7aWYoZClyZXR1cm4hMH1yZXR1cm4hMX07ZnVuY3Rpb24geEQoYSxiKXt2YXIgYz17fSxkPShjLmV2ZW50PWEsYyk7YiYmKGQuZXZlbnRNb2RlbD1FZChiLG51bGwpLGJbRi5ELlBmXSYmKGQuZXZlbnRDYWxsYmFjaz1iW0YuRC5QZl0pLGJbRi5ELnBoXSYmKGQuZXZlbnRUaW1lb3V0PWJbRi5ELnBoXSkpO3JldHVybiBkfQpmdW5jdGlvbiB5RChhLGIpe3ZhciBjPWEmJmFbRi5ELlhiXTtjPT09dm9pZCAwJiYoYz11QShGLkQuWGIsMiksYz09PXZvaWQgMCYmKGM9ImRlZmF1bHQiKSk7aWYoemIoYyl8fEFycmF5LmlzQXJyYXkoYykpe3ZhciBkO2Q9Yi5pc0d0bUV2ZW50P3piKGMpP1tjXTpjOmMudG9TdHJpbmcoKS5yZXBsYWNlKC9ccysvZywiIikuc3BsaXQoIiwiKTt2YXIgZT1xRChkLGIuaXNHdG1FdmVudCksZj1lLmVrLGc9ZS5QcztpZihnLmxlbmd0aClmb3IodmFyIGg9aUQoYSksbD0wO2w8Zy5sZW5ndGg7bCsrKXt2YXIgbj1iQyhnW2xdLGIuaXNHdG1FdmVudCk7aWYobil7dmFyIHA9bi5kZXN0aW5hdGlvbklkLHE9dm9pZCAwOygocT1uayhuLmRlc3RpbmF0aW9uSWQpKT09bnVsbD92b2lkIDA6cS5zdGF0ZSk9PT0wfHxuQShwLGgse3NvdXJjZTozLGZyb21Db250YWluZXJFeGVjdXRpb246Yi5mcm9tQ29udGFpbmVyRXhlY3V0aW9ufSl9fXZhciByPWYuY29uY2F0KGcpO3JldHVybntlazpjQyhmLGIuaXNHdG1FdmVudCksCm1yOmNDKHIsYi5pc0d0bUV2ZW50KX19fTt2YXIgekQ9e30sQUQ9KHpELmNvbmZpZz1mdW5jdGlvbihhLGIpe3ZhciBjPWhEKGEsYiksZDthOntpZighKGEubGVuZ3RoPDIpJiZ6YihhWzFdKSl7dmFyIGU9e307aWYoYS5sZW5ndGg+Mil7aWYoYVsyXSE9PXZvaWQgMCYmIUNkKGFbMl0pfHxhLmxlbmd0aD4zKXtkPXZvaWQgMDticmVhayBhfWU9YVsyXX12YXIgZj1iQyhhWzFdLGIuaXNHdG1FdmVudCk7aWYoZil7ZD17dGFyZ2V0OmYscGFyYW1zOmV9O2JyZWFrIGF9fWQ9dm9pZCAwfXZhciBnPWQ7aWYoZyl7dmFyIGg9Zy50YXJnZXQsbD1nLnBhcmFtcyxuO2E6e2lmKCFJZig3KSl7dmFyIHA9eWsoemsoKSk7aWYoTWsocCkpe3ZhciBxPXAucGFyZW50LHI9cS5pc0Rlc3RpbmF0aW9uO249e1ZzOnlrKHEpLE1zOnJ9O2JyZWFrIGF9fW49dm9pZCAwfXZhciB0PW4sdT10PT1udWxsP3ZvaWQgMDp0LlZzLHY9dD09bnVsbD92b2lkIDA6dC5NcztkQihjLmV2ZW50SWQsImd0YWcuY29uZmlnIik7dmFyIHgseT1oLmRlc3RpbmF0aW9uSWQ7CmlmKGguSmMoKT90aygpLmluZGV4T2YoeSkhPT0tMTp3aygpLmluZGV4T2YoeSkhPT0tMSlhOntpZih1JiYoUCgxMjgpLHYmJlAoMTMwKSxiLmluaGVyaXRQYXJlbnRDb25maWcpKXt2YXIgejt2YXIgQz0kaygxMik7aWYoQyl1RChiLEMsbCksej0hMTtlbHNle3ZhciBEPSRrKDExKTshbFtGLkQuVmRdJiYoTSg1NTApfHxJZigxMSkpJiZEfHxaaygxMSxFZChsLG51bGwpKTt6PSEwfXomJnUuY29udGFpbmVycyYmdS5jb250YWluZXJzLmpvaW4oIiwiKTt4PXZvaWQgMDticmVhayBhfXZhciBJPSFJZig0NSksRz0hU2IoaC5pZCwiR1RNLSIpO0kmJkcmJihPYmplY3Qua2V5cyhsKS5sZW5ndGg9PT0wP0d1KFQuVy5Tayk6R3UoVC5XLlRrKSxFbCgpJiZHdShULlcuUmspLCRrKDMxKSYmR3UoVC5XLlVrKSk7dmFyIE49WUI7Zm4uSyYmKE4uSD09PTEmJihRbS5ILm1jYz0hMSksTi5IPTIpO2lmKE0oNTUwKXx8IXdEKGwsYixoLkpjKCkpKXtrRC5IfHxQKDQzKTtpZighTSg1NTApKXtpZighYi5ub1RhcmdldEdyb3VwKXt2YXIgUz0KaC5pZDtpZihoLkpjKCkpdEQoUykscEQoUyxsW0YuRC5PZF18fCJkZWZhdWx0Iik7ZWxzZXtyRChTKTt2YXIgVz1sW0YuRC5PZF18fCJkZWZhdWx0IixlYT1vRDtXPVcudG9TdHJpbmcoKS5zcGxpdCgiLCIpO2Zvcih2YXIgamE9MDtqYTxXLmxlbmd0aDtqYSsrKXt2YXIgZmE9ZWEuSFtXW2phXV18fFtdO2VhLkhbV1tqYV1dPWZhO2ZhLmluZGV4T2YoUyk8MCYmZmEucHVzaChTKX19fWRlbGV0ZSBsW0YuRC5PZF19dmFyIHNhPWIuZXZlbnRNZXRhZGF0YXx8e307c2EuaGFzT3duUHJvcGVydHkoSC5KLmFlKXx8KHNhW0guSi5hZV09IWIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbik7Yi5ldmVudE1ldGFkYXRhPXNhO2RlbGV0ZSBsW0YuRC5QZl07aWYoTSg1NTApKXt4PXZEKGgsbCxiLGMpO2JyZWFrIGF9dmFyIGRhPSEhbFtGLkQuVmRdO2RlbGV0ZSBsW0YuRC5WZF07dmFyIG1hPXRrKCksUGE9Y0QsRmE9YUQ7aC5KYygpJiYobWE9W2guaWRdLFBhPWRELEZhPWJEKTtmb3IodmFyIHFhPTA7cWE8Cm1hLmxlbmd0aDtxYSsrKXtkYXx8UGEobWFbcWFdKTt2YXIgaWI9Z0QobWFbcWFdKTtGYShtYVtxYV0sRWQobCxudWxsKSxFZChiLG51bGwpKTtpYiYmZGF8fFpDKEYuRC53YSxFZChsLG51bGwpLG1hW3FhXSxFZChiLG51bGwpKX19eD12b2lkIDB9ZWxzZSBhOntpZighYi5pbmhlcml0UGFyZW50Q29uZmlnJiYhbFtGLkQuWmNdKXt2YXIgWGI9aUQobCksTGM9aC5kZXN0aW5hdGlvbklkO2lmKGguSmMoKSluQShMYyxYYix7c291cmNlOjIsZnJvbUNvbnRhaW5lckV4ZWN1dGlvbjpiLmZyb21Db250YWluZXJFeGVjdXRpb259KTtlbHNlIGlmKHUhPT12b2lkIDAmJnUuY29udGFpbmVycy5pbmRleE9mKExjKSE9PS0xKXt2YXIgUWQ9JGsoMTEpLFljPSRrKDEyKTtRZD91RChiLGwsUWQpOlljfHxaaygxMixFZChsLG51bGwpKX1lbHNlIGlmKGhBKExjLFhiLCEwLHtzb3VyY2U6Mixmcm9tQ29udGFpbmVyRXhlY3V0aW9uOmIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbn0pLE0oNTUwKSl7eD12RChoLApsLGIsYyk7YnJlYWsgYX19eD12b2lkIDB9cmV0dXJuIHh9fSx6RC5jb25zZW50PWZ1bmN0aW9uKGEsYil7aWYoYS5sZW5ndGg9PT0zKXtQKDM5KTt2YXIgYz1oRChhLGIpLGQ9YVsxXSxlPXt9LGY9T28oYVsyXSksZztmb3IoZyBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoZykpe3ZhciBoPWZbZ107ZVtnXT1nPT09Ri5ELllnP0FycmF5LmlzQXJyYXkoaCk/TmFOOk51bWJlcihoKTpnPT09Ri5ELm5jPyhBcnJheS5pc0FycmF5KGgpP2g6W2hdKS5tYXAoUG8pOlFvKGgpfWIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbnx8KGVbRi5ELm1hXSYmUCgxMzkpLGVbRi5ELlhhXSYmUCgxNDApKTtkPT09ImRlZmF1bHQiP1RvKGUpOmQ9PT0idXBkYXRlIj9WbyhlLGMpOmQ9PT0iZGVjbGFyZSImJmIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbiYmU28oZSl9fSx6RC5jb250YWluZXJfY29uZmlnPWZ1bmN0aW9uKGEsYil7aWYoakQoYikmJmEubGVuZ3RoPT09MyYmemIoYVsxXSkmJkNkKGFbMl0pKXt2YXIgYz0KYVsyXSxkPWJDKGFbMV0sITApO2QmJmFEKGQuZGVzdGluYXRpb25JZCxjLEVkKGIsbnVsbCkpfX0sekQuZGVzdGluYXRpb25fY29uZmlnPWZ1bmN0aW9uKGEsYil7aWYoakQoYikmJmEubGVuZ3RoPT09MyYmemIoYVsxXSkmJkNkKGFbMl0pKXt2YXIgYz1hWzJdLGQ9YkMoYVsxXSwhMCk7aWYoZCl7aWYoTSg1NTApKXtpZighYi5ub1RhcmdldEdyb3VwKXt2YXIgZT1kLmlkO2lmKGQuSmMoKSl0RChlKSxwRChlLGNbRi5ELk9kXXx8ImRlZmF1bHQiKTtlbHNle3NEKGUpO3ZhciBmPWNbRi5ELk9kXXx8ImRlZmF1bHQiLGc9b0Q7Zj1TdHJpbmcoZikuc3BsaXQoIiwiKTtmb3IodmFyIGg9MDtoPGYubGVuZ3RoO2grKyl7dmFyIGw9Zy5LW2ZbaF1dfHxbXTtnLktbZltoXV09bDtsLmluZGV4T2YoZSk8MCYmbC5wdXNoKGUpfX19ZGVsZXRlIGNbRi5ELk9kXX1iRChkLmlkLGMsRWQoYixudWxsKSl9fX0sekQuZXZlbnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hWzFdO2lmKCEoYS5sZW5ndGg8MikmJgp6YihjKSl7dmFyIGQ9dm9pZCAwO2lmKGEubGVuZ3RoPjIpe2lmKCFDZChhWzJdKSYmYVsyXSE9PXZvaWQgMHx8YS5sZW5ndGg+MylyZXR1cm47ZD1hWzJdfXZhciBlPXhEKGMsZCksZj1oRChhLGIpLGc9Zi5ldmVudElkLGg9Zi5wcmlvcml0eUlkO2VbImd0bS51bmlxdWVFdmVudElkIl09ZztoJiYoZVsiZ3RtLnByaW9yaXR5SWQiXT1oKTtiLnByaW9yaXR5UXVldWUmJihlWyJndG0ucHJpb3JpdHlRdWV1ZSJdPWIucHJpb3JpdHlRdWV1ZSk7aWYoYz09PSJvcHRpbWl6ZS5jYWxsYmFjayIpcmV0dXJuIGUuZXZlbnRNb2RlbD1lLmV2ZW50TW9kZWx8fHt9LGU7dmFyIGw9eUQoZCxiKTtpZihsKXtmb3IodmFyIG49bC5layxwPWwubXIscT1wLm1hcChmdW5jdGlvbihOKXtyZXR1cm4gTi5pZH0pLHI9cC5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIE4uZGVzdGluYXRpb25JZH0pLHQ9bi5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIE4uaWR9KSx1PW0odGsoKSksdj11Lm5leHQoKTshdi5kb25lO3Y9CnUubmV4dCgpKXt2YXIgeD12LnZhbHVlO3IuaW5kZXhPZih4KTwwJiZ0LnB1c2goeCl9ZEIoZyxjKTtmb3IodmFyIHk9bSh0KSx6PXkubmV4dCgpOyF6LmRvbmU7ej15Lm5leHQoKSl7dmFyIEM9ei52YWx1ZSxEPUVkKGIsbnVsbCksST1FZChkLG51bGwpO2RlbGV0ZSBJW0YuRC5QZl07dmFyIEc9RC5ldmVudE1ldGFkYXRhfHx7fTtHLmhhc093blByb3BlcnR5KEguSi5hZSl8fChHW0guSi5hZV09IUQuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbik7R1tILkoubWpdPXEuc2xpY2UoKTtHW0guSi5zZ109ci5zbGljZSgpO0QuZXZlbnRNZXRhZGF0YT1HO1pDKGMsSSxDLEQpfWUuZXZlbnRNb2RlbD1lLmV2ZW50TW9kZWx8fHt9O3EubGVuZ3RoPjA/ZS5ldmVudE1vZGVsW0YuRC5YYl09cS5qb2luKCIsIik6ZGVsZXRlIGUuZXZlbnRNb2RlbFtGLkQuWGJdO2tELkh8fFAoNDMpO2Iubm9HdG1FdmVudD09PXZvaWQgMCYmYi5ldmVudE1ldGFkYXRhJiZiLmV2ZW50TWV0YWRhdGFbSC5KLkJuXSYmKGIubm9HdG1FdmVudD0KITApO2UuZXZlbnRNb2RlbFtGLkQuWWNdJiYoYi5ub0d0bUV2ZW50PSEwKTtyZXR1cm4gYi5ub0d0bUV2ZW50P3ZvaWQgMDplfX19LHpELmdldD1mdW5jdGlvbihhLGIpe1AoNTMpO2lmKGEubGVuZ3RoPT09NCYmemIoYVsxXSkmJnpiKGFbMl0pJiZ5YihhWzNdKSl7dmFyIGM9YkMoYVsxXSxiLmlzR3RtRXZlbnQpLGQ9U3RyaW5nKGFbMl0pLGU9YVszXTtpZihjKXtrRC5IfHxQKDQzKTt2YXIgZj1pRCgpO2lmKENiKHRrKCksZnVuY3Rpb24oaCl7cmV0dXJuIGMuZGVzdGluYXRpb25JZD09PWh9KSl7aEQoYSxiKTt2YXIgZz17fTtFZCgoZ1tGLkQuVGZdPWQsZ1tGLkQuU2ZdPWUsZyksbnVsbCk7JEMoZCxmdW5jdGlvbihoKXtiZChmdW5jdGlvbigpe2UoaCl9KX0sYy5pZCxiKX1lbHNlIG5BKGMuZGVzdGluYXRpb25JZCxmLHtzb3VyY2U6NCxmcm9tQ29udGFpbmVyRXhlY3V0aW9uOmIuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbn0pfX19LHpELmpzPWZ1bmN0aW9uKGEsYil7dmFyIGM7aWYoYS5sZW5ndGg9PT0KMiYmYVsxXS5nZXRUaW1lKXtrRC5IPSEwO3ZhciBkPWhEKGEsYiksZT1kLmV2ZW50SWQsZj1kLnByaW9yaXR5SWQsZz17fTtjPShnLmV2ZW50PSJndG0uanMiLGdbImd0bS5zdGFydCJdPWFbMV0uZ2V0VGltZSgpLGdbImd0bS51bmlxdWVFdmVudElkIl09ZSxnWyJndG0ucHJpb3JpdHlJZCJdPWYsZyl9ZWxzZSBjPXZvaWQgMDtyZXR1cm4gY30sekQucG9saWN5PWZ1bmN0aW9uKGEpe2lmKGEubGVuZ3RoPT09MyYmemIoYVsxXSkmJnliKGFbMl0pKXtpZihoeShhWzFdLGFbMl0pLFAoNzQpLGFbMV09PT0iYWxsIil7UCg3NSk7dmFyIGI9ITE7dHJ5e2I9YVsyXShFKDUpLCJ1bmtub3duIix7fSl9Y2F0Y2goYyl7fWJ8fFAoNzYpfX1lbHNlIFAoNzMpfSx6RC5yZXNldF90YXJnZXRfY29uZmlnPWZ1bmN0aW9uKGEsYil7aWYoakQoYikmJmEubGVuZ3RoPT09MiYmemIoYVsxXSkpe3ZhciBjPWJDKGFbMV0sITApO2MmJmREKGMuaWQpfX0sekQuc2V0PWZ1bmN0aW9uKGEsYil7dmFyIGM9dm9pZCAwOwphLmxlbmd0aD09PTImJkNkKGFbMV0pP2M9RWQoYVsxXSxudWxsKTphLmxlbmd0aD09PTMmJnpiKGFbMV0pJiYoYz17fSxDZChhWzJdKXx8QXJyYXkuaXNBcnJheShhWzJdKT9jW2FbMV1dPUVkKGFbMl0sbnVsbCk6Y1thWzFdXT1hWzJdKTtpZihjKXtaaygzMSwhMCk7dmFyIGQ9aEQoYSxiKSxlPWQuZXZlbnRJZCxmPWQucHJpb3JpdHlJZDtFZChjLG51bGwpO0UoNSk7dmFyIGc9RWQoYyxudWxsKTtZQygpLkgucHVzaCgic2V0IixbZ10sdm9pZCAwLGIpO2NbImd0bS51bmlxdWVFdmVudElkIl09ZTtmJiYoY1siZ3RtLnByaW9yaXR5SWQiXT1mKTtkZWxldGUgYy5ldmVudDtiLm92ZXJ3cml0ZU1vZGVsRmllbGRzPSEwO3JldHVybiBjfX0sekQpLEJEPXt9LENEPShCRC5wb2xpY3k9ITAsQkQpO3ZhciBFRD1mdW5jdGlvbihhKXtpZihERChhKSlyZXR1cm4gYTt0aGlzLnZhbHVlPWF9O0VELnByb3RvdHlwZS5nZXRVbnRydXN0ZWRNZXNzYWdlVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX07dmFyIEREPWZ1bmN0aW9uKGEpe3JldHVybiFhfHxBZChhKSE9PSJvYmplY3QifHxDZChhKT8hMToiZ2V0VW50cnVzdGVkTWVzc2FnZVZhbHVlImluIGF9O0VELnByb3RvdHlwZS5nZXRVbnRydXN0ZWRNZXNzYWdlVmFsdWU9RUQucHJvdG90eXBlLmdldFVudHJ1c3RlZE1lc3NhZ2VWYWx1ZTt2YXIgRkQ9e0JiOiIxIixlZToiMiIsWGQ6IjMiLGNlOiI0Iix4ZjoiNSIscWc6IjYiLEtoOiI3Iix0ajoiOCIsbGk6IjkiLGpqOiIxMCJ9O3ZhciBkRT1mdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5sb2FkZWQ9ITE7dGhpcy5IPVtdO2lmKEIucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpdGhpcy5vbkxvYWQoKTtlbHNlICRjKEEsImxvYWQiLGZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgYS5vbkxvYWQoKX0pfTtkRS5wcm90b3R5cGUub25Mb2FkPWZ1bmN0aW9uKCl7aWYoIXRoaXMubG9hZGVkKXt0aGlzLmxvYWRlZD0hMDtmb3IodmFyIGE9MDthPHRoaXMuSC5sZW5ndGg7YSsrKWJkKHRoaXMuSFthXSl9fTt2YXIgZkU9ZnVuY3Rpb24oYSl7dmFyIGI9ZUU7Yi5sb2FkZWQ/YmQoYSk6Yi5ILnB1c2goYSl9LGVFPW5ldyBkRTt2YXIgZ0U9ZnVuY3Rpb24oKXt0aGlzLlo9MDt0aGlzLks9e307dGhpcy5IPVtdO3RoaXMuTj1bXTt0aGlzLmZhPXRoaXMuUj10aGlzLmphPSExfSxpRT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9aEU7YS5ldmVudENhbGxiYWNrPWI7YyYmKGEuZXZlbnRUaW1lb3V0PWMpO3JldHVybiBkLnB1c2goYSl9LGpFPWZ1bmN0aW9uKGEsYil7aWYoIUFiKGIpfHxiPDApYj0wO3ZhciBjPXFqKCksZD0wLGU9ITEsZj12b2lkIDA7Zj1BLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtlfHwoZT0hMCxhKCkpO2Y9dm9pZCAwfSxiKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZz1jP2Muc3Vic2NyaWJlcnM6MTsrK2Q9PT1nJiYoZiYmKEEuY2xlYXJUaW1lb3V0KGYpLGY9dm9pZCAwKSxlfHwoYSgpLGU9ITApKX19LGxFPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEuTi5sZW5ndGgpYj1hLk4uc2hpZnQoKTtlbHNlIGlmKGEuSC5sZW5ndGgpYj1hLkguc2hpZnQoKTtlbHNlIHJldHVybjt2YXIgYzt2YXIgZD1iO2lmKGEuamF8fAoha0UoZC5tZXNzYWdlKSljPWQ7ZWxzZXthLmphPSEwO3ZhciBlPWQubWVzc2FnZVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXSxmLGc7dHlwZW9mIGU9PT0ibnVtYmVyIj8oZj1lLTIsZz1lLTEpOihmPXJqKCksZz1yaigpLGQubWVzc2FnZVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXT1yaigpKTt2YXIgaD17fSxsPXttZXNzYWdlOihoLmV2ZW50PSJndG0uaW5pdF9jb25zZW50IixoWyJndG0udW5pcXVlRXZlbnRJZCJdPWYsaCksbWVzc2FnZUNvbnRleHQ6e2V2ZW50SWQ6Zn19LG49e30scD17bWVzc2FnZToobi5ldmVudD0iZ3RtLmluaXQiLG5bImd0bS51bmlxdWVFdmVudElkIl09ZyxuKSxtZXNzYWdlQ29udGV4dDp7ZXZlbnRJZDpnfX07YS5ILnVuc2hpZnQocCxkKTtjPWx9cmV0dXJuIGN9LG9FPWZ1bmN0aW9uKGEpe2EuZmF8fFAoMTk2KTtmb3IodmFyIGI9ITEsYzshYS5SJiYoYz1sRShhKSk7KXthLlI9ITA7dmFyIGQ9ckE7ZGVsZXRlIGQuSC5ldmVudE1vZGVsO29BKGQpO3ZhciBlPWMsZj0KZS5tZXNzYWdlLGc9ZS5tZXNzYWdlQ29udGV4dDtpZihmPT1udWxsKWEuUj0hMTtlbHNle2cuZnJvbUNvbnRhaW5lckV4ZWN1dGlvbiYmc0EoKTt0cnl7aWYoeWIoZikpdHJ5e2YuY2FsbCh0QSl9Y2F0Y2goUyl7fWVsc2UgaWYoQXJyYXkuaXNBcnJheShmKSl7aWYoemIoZlswXSkpe3ZhciBoPWZbMF0uc3BsaXQoIi4iKSxsPWgucG9wKCksbj1mLnNsaWNlKDEpLHA9dUEoaC5qb2luKCIuIiksMik7aWYocCE9bnVsbCl0cnl7cFtsXS5hcHBseShwLG4pfWNhdGNoKFMpe319fWVsc2V7dmFyIHE9dm9pZCAwO2lmKEhiKGYpKWE6e2lmKGYubGVuZ3RoJiZ6YihmWzBdKSl7dmFyIHI9QURbZlswXV07aWYociYmKCFnLmZyb21Db250YWluZXJFeGVjdXRpb258fCFDRFtmWzBdXSkpe3E9cihmLGcpO2JyZWFrIGF9fXE9dm9pZCAwfWVsc2UgcT1mO2lmKHEpe3ZhciB0O2Zvcih2YXIgdT1xLHY9dS5fY2xlYXJ8fGcub3ZlcndyaXRlTW9kZWxGaWVsZHMseD1tKE9iamVjdC5rZXlzKHUpKSx5PXgubmV4dCgpOyF5LmRvbmU7eT0KeC5uZXh0KCkpe3ZhciB6PXkudmFsdWU7eiE9PSJfY2xlYXIiJiYodiYmckEuc2V0KHosdm9pZCAwKSxyQS5zZXQoeix1W3pdKSl9TSg1OTIpJiZTRCh1KTskaygyNSl8fFprKDI1LHVbImd0bS5zdGFydCJdKTt2YXIgQz11WyJndG0udW5pcXVlRXZlbnRJZCJdO3UuZXZlbnQ/KHR5cGVvZiBDIT09Im51bWJlciImJihDPXJqKCksdVsiZ3RtLnVuaXF1ZUV2ZW50SWQiXT1DLHJBLnNldCgiZ3RtLnVuaXF1ZUV2ZW50SWQiLEMpKSx0PXpCKHUpKTp0PSExO2I9dHx8Yn19fWZpbmFsbHl7Zy5mcm9tQ29udGFpbmVyRXhlY3V0aW9uJiZvQShyQSwhMCk7dmFyIEQ9ZlsiZ3RtLnVuaXF1ZUV2ZW50SWQiXTtpZih0eXBlb2YgRD09PSJudW1iZXIiKXtmb3IodmFyIEk9YSxHPUkuS1tTdHJpbmcoRCldfHxbXSxOPTA7TjxHLmxlbmd0aDtOKyspSS5OLnB1c2gobUUoR1tOXSkpO0cubGVuZ3RoJiZJLk4uc29ydChuRSk7ZGVsZXRlIEkuS1tTdHJpbmcoRCldO0Q+YS5aJiYoYS5aPUQpfWEuUj0hMX19fXJldHVybiFifSwKcEU9ZnVuY3Rpb24oKXt2YXIgYT1oRTthLmZhJiZQKDE5NSk7YS5mYT0hMDtpZihmbi5IKXt2YXIgYj0hSWYoNTEpLGM9cnooKTtweihjLHtzdGFnZTpJeS5YLlpnfSk7aWYoYil7dmFyIGQ9cXooYyx7c3RhZ2U6SXkuWC5Za30sSXkuWC5uaSk7ZCE9PXZvaWQgMCYmKGMuSC5ZPWQpfXZhciBlPWEuSC5sZW5ndGg7cnooKS5ILkM9ZX1vRShhKTtpZihmbi5IKXt2YXIgZj1yeigpLGc9cXooZix7c3RhZ2U6SXkuWC5Wa30sSXkuWC5aZyk7ZyE9PXZvaWQgMCYmKGYuSC5CPWcpfXRyeXt2YXIgaD1BW0UoMTkpXSxsPUUoNSksbj1oLmhpZGU7aWYobiYmbltsXSE9PXZvaWQgMCYmbi5lbmQpe25bbF09ITE7dmFyIHA9ITAscTtmb3IocSBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkocSkmJm5bcV09PT0hMCl7cD0hMTticmVha31wJiYobi5lbmQoKSxuLmVuZD1udWxsKX19Y2F0Y2gocil7RSg1KX19LHFFPWZ1bmN0aW9uKGEsYil7aWYoYS5aPGIubm90QmVmb3JlRXZlbnRJZCl7dmFyIGM9U3RyaW5nKGIubm90QmVmb3JlRXZlbnRJZCk7CmEuS1tjXT1hLktbY118fFtdO2EuS1tjXS5wdXNoKGIpfWVsc2V7YS5OLnB1c2gobUUoYikpO2EuTi5zb3J0KG5FKTt2YXIgZD1mdW5jdGlvbigpe2EuUnx8b0UoYSl9O00oNTgwKT9kZChkKTpiZChkKX19OwpnRS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoaCl7dmFyIGw9e307aWYoREQoaCkpe3ZhciBuPWg7aD1ERChuKT9uLmdldFVudHJ1c3RlZE1lc3NhZ2VWYWx1ZSgpOnZvaWQgMDtsLmZyb21Db250YWluZXJFeGVjdXRpb249ITB9cmV0dXJue21lc3NhZ2U6aCxtZXNzYWdlQ29udGV4dDpsfX12YXIgYj10aGlzLGM9TWMoRSgxOSksW10pLGQ9cGooKTtkLnBydW5lZD09PSEwJiZQKDgzKTt0aGlzLks9bkQoKS5nZXQoKTtuRCgpLmxpc3RlbihmdW5jdGlvbihoKXtxRShiLGgpfSk7ZC5zdWJzY3JpYmVycz0oZC5zdWJzY3JpYmVyc3x8MCkrMTt2YXIgZT1jLnB1c2gsZj10aGlzO2MucHVzaD1mdW5jdGlvbigpe3ZhciBoO2xqKCk7aWYoamouSC5TQU5EQk9YRURfSlNfU0VNQVBIT1JFPjApe2g9W107Zm9yKHZhciBsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKyloW2xdPW5ldyBFRChhcmd1bWVudHNbbF0pfWVsc2UgaD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTsKdmFyIG49aC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGEodCl9KTtmLkgucHVzaC5hcHBseShmLkgsbik7dmFyIHA9ZS5hcHBseShjLGgpLHE9TWF0aC5tYXgoMTAwLE5mKDEsMzAwKSk7aWYodGhpcy5sZW5ndGg+cSlmb3IoUCg0KSxkLnBydW5lZD0hMDt0aGlzLmxlbmd0aD5xOyl0aGlzLnNoaWZ0KCk7dmFyIHI9dHlwZW9mIHAhPT0iYm9vbGVhbiJ8fHA7cmV0dXJuIG9FKGYpJiZyfTt2YXIgZz1jLnNsaWNlKDApLm1hcChmdW5jdGlvbihoKXtyZXR1cm4gYShoKX0pO3RoaXMuSC5wdXNoLmFwcGx5KHRoaXMuSCxnKTtJZig1MSl8fChmbi5IJiZ1eigpLGJkKHJFKSk7VkIoZnVuY3Rpb24oKXtpZighZC5ndG1Eb20pe2QuZ3RtRG9tPSEwO3ZhciBoPXt9O2MucHVzaCgoaC5ldmVudD0iZ3RtLmRvbSIsaCkpfX0pO2ZFKGZ1bmN0aW9uKCl7aWYoIWQuZ3RtTG9hZCl7ZC5ndG1Mb2FkPSEwO3ZhciBoPXt9O2MucHVzaCgoaC5ldmVudD0iZ3RtLmxvYWQiLGgpKX19KX07CmdFLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGEpe3JldHVybiBBW0UoMTkpXS5wdXNoKGEpfTt2YXIgaEU9bmV3IGdFO2Z1bmN0aW9uIG5FKGEsYil7dmFyIGM9YS5tZXNzYWdlQ29udGV4dCxkPWIubWVzc2FnZUNvbnRleHQ7aWYoYy5ldmVudElkIT09ZC5ldmVudElkKXJldHVybiBjLmV2ZW50SWQtZC5ldmVudElkO2lmKCFNKDU5NSkpcmV0dXJuIGMucHJpb3JpdHlJZC1kLnByaW9yaXR5SWQ7dmFyIGUsZixnO2E6e2Zvcih2YXIgaD0oZT1jLnByaW9yaXR5UXVldWUpIT1udWxsP2U6W2MucHJpb3JpdHlJZF0sbD0oZj1kLnByaW9yaXR5UXVldWUpIT1udWxsP2Y6W2QucHJpb3JpdHlJZF0sbj1NYXRoLm1pbihoLmxlbmd0aCxsLmxlbmd0aCkscD0wO3A8bjtwKyspaWYoaFtwXSE9PWxbcF0pe2c9aFtwXS1sW3BdO2JyZWFrIGF9Zz1oLmxlbmd0aC1sLmxlbmd0aH1yZXR1cm4gZ30KZnVuY3Rpb24ga0UoYSl7aWYoYT09bnVsbHx8dHlwZW9mIGEhPT0ib2JqZWN0IilyZXR1cm4hMTtpZihhLmV2ZW50KXJldHVybiEwO2lmKEhiKGEpKXt2YXIgYj1hWzBdO2lmKGI9PT0iY29uZmlnInx8Yj09PSJldmVudCJ8fGI9PT0ianMifHxiPT09ImdldCIpcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gbUUoYSl7cmV0dXJue21lc3NhZ2U6YS5tZXNzYWdlLG1lc3NhZ2VDb250ZXh0OmEubWVzc2FnZUNvbnRleHR9fWZ1bmN0aW9uIHNFKGEsYixjKXtyZXR1cm4gaUUoYSxiLGMpfWZ1bmN0aW9uIHRFKGEsYil7cmV0dXJuIGpFKGEsYil9ZnVuY3Rpb24gckUoKXtwRSgpfWZ1bmN0aW9uIHVFKGEpe3JldHVybiBoRS5wdXNoKGEpfTt2YXIgdkU9ZnVuY3Rpb24oKXt9O3ZFLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dmFyIGEsYj1SaihBLmxvY2F0aW9uLmhyZWYpOyhhPWIuaG9zdG5hbWUrYi5wYXRobmFtZSkmJlVtKCJkbCIsZW5jb2RlVVJJQ29tcG9uZW50KGEpKTt2YXIgYzt2YXIgZD1FKDUpO2lmKGQpe3ZhciBlPUlmKDcpPzE6MCxmPUZrKCksZz1mJiZmLmZyb21Db250YWluZXJFeGVjdXRpb24/MTowLGg9ZiYmZi5zb3VyY2V8fDAsbD1FKDYpO2M9ZCsiOyIrbCsiOyIrZysiOyIraCsiOyIrZX1lbHNlIGM9dm9pZCAwO3ZhciBuPWM7biYmVW0oInRkcCIsbik7dmFyIHA9T3AoITApO3AhPT12b2lkIDAmJlVtKCJmcm0iLFN0cmluZyhwKSl9O3ZhciB3RT1uZXcgdkU7dmFyIHhFPWZ1bmN0aW9uKCl7dGhpcy5IPVhtKCk7dGhpcy5LPXZvaWQgMH0seUU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWm0oYSxmdW5jdGlvbihjKXtyZXR1cm4gYy5qYj4wP2I/Yy5qYisiXyIrV20oYyk6U3RyaW5nKGMuamIpOnZvaWQgMH0pfTsKeEUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2lmKHBsKCl8fGZuLkspVW0oImNzcCIsZnVuY3Rpb24oKXt2YXIgYj15RShhLkgsITApOyRtKGEuSCk7cmV0dXJuIGJ9LCExKSxVbSgibWRlIixmdW5jdGlvbigpe3ZhciBiPWNuLkgsYz15RShiLCExKTskbShiKTtyZXR1cm4gY30sITEpLEEuYWRkRXZlbnRMaXN0ZW5lcigic2VjdXJpdHlwb2xpY3l2aW9sYXRpb24iLGZ1bmN0aW9uKGIpe2lmKGIuZGlzcG9zaXRpb249PT0iZW5mb3JjZSIpe1AoMTc5KTt2YXIgYz1ubihiLmVmZmVjdGl2ZURpcmVjdGl2ZSk7aWYoYyl7dmFyIGQ7YTp7dmFyIGU9Yi5ibG9ja2VkVVJJLGY9a247aWYoZm4uSyYmZSl7dmFyIGc9am4oYyxlKTtpZihnKXt2YXIgaDtkPShoPWxuKGYsYykpPT1udWxsP3ZvaWQgMDpoW2ddO2JyZWFrIGF9fWQ9dm9pZCAwfXZhciBsPWQ7aWYobCl7dmFyIG47YTp7dHJ5e3ZhciBwPW5ldyBVUkwoYi5ibG9ja2VkVVJJKSxxPXAucGF0aG5hbWUuaW5kZXhPZigiOyIpOwpuPXE+PTA/cC5vcmlnaW4rcC5wYXRobmFtZS5zdWJzdHJpbmcoMCxxKTpwLm9yaWdpbitwLnBhdGhuYW1lO2JyZWFrIGF9Y2F0Y2goRCl7fW49dm9pZCAwfXZhciByPW47aWYocil7Zm9yKHZhciB0PW0obCksdT10Lm5leHQoKTshdS5kb25lO3U9dC5uZXh0KCkpe3ZhciB2PXUudmFsdWU7aWYoIXYuRW8pe3YuRW89ITA7dmFyIHg9e2V2ZW50SWQ6di5ldmVudElkLHByaW9yaXR5SWQ6di5wcmlvcml0eUlkfTtpZihwbCgpKXt2YXIgeT14LHo9e3R5cGU6MSxibG9ja2VkVXJsOnIsZW5kcG9pbnQ6di5lbmRwb2ludCx2aW9sYXRpb246Yi5lZmZlY3RpdmVEaXJlY3RpdmV9O2lmKHBsKCkpe3ZhciBDPUxsKCJUQUdfRElBR05PU1RJQ1MiLHtldmVudElkOnk9PW51bGw/dm9pZCAwOnkuZXZlbnRJZCxwcmlvcml0eUlkOnk9PW51bGw/dm9pZCAwOnkucHJpb3JpdHlJZH0pO0MudGFnRGlhZ25vc3RpY3M9ejtvbChDKX19ekUoYSx2LmRlc3RpbmF0aW9uSWQsdi5lbmRwb2ludCxjKX19bW4oYywKYi5ibG9ja2VkVVJJKX19fX19KX07dmFyIHpFPWZ1bmN0aW9uKGEsYixjLGQpe2FuKGEuSCxiLGMsMSxkKTtWbSgiY3NwIiwhMCk7Vm0oIm1kZSIsITApO2MhPT02MSYmYyE9PTU2JiZhLks9PT12b2lkIDAmJihhLks9QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5ILmpiPjAmJnRvKCExKTthLks9dm9pZCAwfSw1MDApKX0sQUU9bmV3IHhFO3ZhciBCRT1mdW5jdGlvbigpe3RoaXMuc2VxdWVuY2VOdW1iZXI9MH07QkUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO0NFKHRoaXMpO0lmKDY1KSYmVW0oIm10YmwiLCIxIik7VW0oInYiLCIzIik7VW0oInQiLCJ0Iik7VW0oInBpZCIsZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKG5tKGptLmJhLmJoKSl9KTtVbSgiZ3RtIixmdW5jdGlvbigpe3JldHVybiBkdSgpfSk7VW0oInNlcSIsZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKCsrYS5zZXF1ZW5jZU51bWJlcil9KTtVbSgiZXhwIixmdW5jdGlvbigpe3JldHVybiBDcCgpfSl9O3ZhciBDRT1mdW5jdGlvbihhKXtpZihubShqbS5iYS5iaCk9PT12b2lkIDApe3ZhciBiPWZ1bmN0aW9uKCl7bW0oam0uYmEuYmgsRGIoKSk7YS5zZXF1ZW5jZU51bWJlcj0wfTtiKCk7Y2QoYiw4NjRFNSl9ZWxzZSBwbShqbS5iYS5iaCxmdW5jdGlvbigpe2Euc2VxdWVuY2VOdW1iZXI9MH0pO2Euc2VxdWVuY2VOdW1iZXI9MH0sREU9bmV3IEJFO2Z1bmN0aW9uIEVFKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBBW2FdfX0KdmFyIEZFPXt9LEdFPShGRVsxNF09ZnVuY3Rpb24oKXt2YXIgYTtyZXR1cm4oYT1BLmNyeXB0byk9PW51bGw/dm9pZCAwOmEuZ2V0UmFuZG9tVmFsdWVzfSxGRVsxNV09ZnVuY3Rpb24oKXt2YXIgYSxiO3JldHVybihhPUEuY3J5cHRvKT09bnVsbD92b2lkIDA6KGI9YS5zdWJ0bGUpPT1udWxsP3ZvaWQgMDpiLmRpZ2VzdH0sRkVbMV09RUUoImZldGNoIiksRkVbNl09RUUoIk1hcCIpLEZFWzJdPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgucmFuZG9tfSxGRVs4XT1mdW5jdGlvbigpe3JldHVybiBuYShPYmplY3QsImFzc2lnbiIpfSxGRVs5XT1mdW5jdGlvbigpe3JldHVybiBPYmplY3QuZW50cmllc30sRkVbMTBdPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllc30sRkVbNV09RUUoIlByb21pc2UiKSxGRVsxM109RUUoIlJlZ0V4cCIpLEZFWzNdPWZ1bmN0aW9uKCl7cmV0dXJuIEhjLnNlbmRCZWFjb259LEZFWzddPUVFKCJTZXQiKSxGRVsxMl09ZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aH0sCkZFWzExXT1mdW5jdGlvbigpe3JldHVybiBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGh9LEZFWzRdPUVFKCJYTUxIdHRwUmVxdWVzdCIpLEZFKSxIRT17fSxJRT0oSEVbMTVdPSEwLEhFKTt2YXIgTkU9L14oaHR0cHM/Oik/XC9cLy87CmZ1bmN0aW9uIGhGKCl7fTtmdW5jdGlvbiBpRigpe0lmKDYyKSYmKGh5KCJkZXRlY3RfbGlua19jbGlja19ldmVudHMiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4oKGQ9Yy5vcHRpb25zKT09bnVsbD92b2lkIDA6ZC53YWl0Rm9yVGFncykhPT0hMH0pLGh5KCJkZXRlY3RfZm9ybV9zdWJtaXRfZXZlbnRzIixmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuKChkPWMub3B0aW9ucyk9PW51bGw/dm9pZCAwOmQud2FpdEZvclRhZ3MpIT09ITB9KSxoeSgiZGV0ZWN0X3lvdXR1YmVfYWN0aXZpdHlfZXZlbnRzIixmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuKChkPWMub3B0aW9ucyk9PW51bGw/dm9pZCAwOmQuZml4TWlzc2luZ0FwaSkhPT0hMH0pKX07dmFyIGpGPWZ1bmN0aW9uKCl7dGhpcy5IPXRoaXMuZ3BwU3RyaW5nPXZvaWQgMH07akYucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5IPXRoaXMuZ3BwU3RyaW5nPXZvaWQgMH07dmFyIGtGPW5ldyBqRjtbMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyXS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStifSk7WzIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDJdLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2J9KTtbMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMl0ucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYn0pO1syLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDJdLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2J9KTtbMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyXS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStifSk7WzIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMl0ucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYn0pO2x0KHtHdTowLEZ1OjEsQ3U6Mix4dTozLER1OjQseXU6NSxFdTo2LEF1OjcsQnU6OCx3dTo5LHp1OjEwLEh1OjExfSkubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBOdW1iZXIoYSl9KTtsdCh7SnU6MCxLdToxLEl1OjJ9KS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIE51bWJlcihhKX0pO3ZhciBsRj1mdW5jdGlvbihhLGIsYyxkKXtydC5jYWxsKHRoaXMpO3RoaXMuZmU9Yjt0aGlzLmtkPWM7dGhpcy5hYz1kO3RoaXMuTGE9bmV3IE1hcDt0aGlzLmhlPTA7dGhpcy5qYT1uZXcgTWFwO3RoaXMueWE9bmV3IE1hcDt0aGlzLlo9dm9pZCAwO3RoaXMuSz1hfTt3YShsRixydCk7bEYucHJvdG90eXBlLk49ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5IO3RoaXMuTGEuY2xlYXIoKTt0aGlzLmphLmNsZWFyKCk7dGhpcy55YS5jbGVhcigpO3RoaXMuWiYmKG50KHRoaXMuSywibWVzc2FnZSIsdGhpcy5aKSxkZWxldGUgdGhpcy5aKTtkZWxldGUgdGhpcy5LO2RlbGV0ZSB0aGlzLmFjO3J0LnByb3RvdHlwZS5OLmNhbGwodGhpcyl9Owp2YXIgbUY9ZnVuY3Rpb24oYSl7aWYoYS5IKXJldHVybiBhLkg7YS5rZCYmYS5rZChhLkspP2EuSD1hLks6YS5IPU5wKGEuSyxhLmZlKTt2YXIgYjtyZXR1cm4oYj1hLkgpIT1udWxsP2I6bnVsbH0sb0Y9ZnVuY3Rpb24oYSxiLGMpe2lmKG1GKGEpKWlmKGEuSD09PWEuSyl7dmFyIGQ9YS5MYS5nZXQoYik7ZCYmZChhLkgsYyl9ZWxzZXt2YXIgZT1hLmphLmdldChiKTtpZihlJiZlLmRrKXtuRihhKTt2YXIgZj0rK2EuaGU7YS55YS5zZXQoZix7cGU6ZS5wZSxJcjplLm5vKGMpLHBlcnNpc3RlbnQ6Yj09PSJhZGRFdmVudExpc3RlbmVyIn0pO2EuSC5wb3N0TWVzc2FnZShlLmRrKGMsZiksIioiKX19fSxuRj1mdW5jdGlvbihhKXthLlp8fChhLlo9ZnVuY3Rpb24oYil7aWYoYi5zb3VyY2U9PT1hLkgpdHJ5e3ZhciBjO2M9YS5hYz9hLmFjKGIpOnZvaWQgMDtpZihjKXt2YXIgZD1jLllzLGU9YS55YS5nZXQoZCk7aWYoZSl7ZS5wZXJzaXN0ZW50fHxhLnlhLmRlbGV0ZShkKTt2YXIgZjsoZj0KZS5wZSk9PW51bGx8fGYuY2FsbChlLGUuSXIsYy5wYXlsb2FkKX19fWNhdGNoKGcpe319LG10KGEuSywibWVzc2FnZSIsYS5aKSl9O3ZhciBwRj1mdW5jdGlvbihhLGIpe3ZhciBjPWIubGlzdGVuZXIsZD0oMCxhLl9fZ3BwKSgiYWRkRXZlbnRMaXN0ZW5lciIsYyk7ZCYmYyhkLCEwKX0scUY9ZnVuY3Rpb24oYSxiKXsoMCxhLl9fZ3BwKSgicmVtb3ZlRXZlbnRMaXN0ZW5lciIsYi5saXN0ZW5lcixiLmxpc3RlbmVySWQpfSxyRj17bm86ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGlzdGVuZXJ9LGRrOmZ1bmN0aW9uKGEsYil7dmFyIGM9e307cmV0dXJuIGMuX19ncHBDYWxsPXtjYWxsSWQ6Yixjb21tYW5kOiJhZGRFdmVudExpc3RlbmVyIix2ZXJzaW9uOiIxLjEifSxjfSxwZTpmdW5jdGlvbihhLGIpe3ZhciBjPWIuX19ncHBSZXR1cm47YShjLnJldHVyblZhbHVlLGMuc3VjY2Vzcyl9fSxzRj17bm86ZnVuY3Rpb24oYSl7cmV0dXJuIGEubGlzdGVuZXJ9LGRrOmZ1bmN0aW9uKGEsYil7dmFyIGM9e307cmV0dXJuIGMuX19ncHBDYWxsPXtjYWxsSWQ6Yixjb21tYW5kOiJyZW1vdmVFdmVudExpc3RlbmVyIix2ZXJzaW9uOiIxLjEiLApwYXJhbWV0ZXI6YS5saXN0ZW5lcklkfSxjfSxwZTpmdW5jdGlvbihhLGIpe3ZhciBjPWIuX19ncHBSZXR1cm4sZD1jLnJldHVyblZhbHVlLmRhdGE7YT09bnVsbHx8YShkLGMuc3VjY2Vzcyl9fTtmdW5jdGlvbiB0RihhKXt2YXIgYj17fTt2ZihhLmRhdGEpP2I9SlNPTi5wYXJzZShhLmRhdGEpOmI9YS5kYXRhO3JldHVybntwYXlsb2FkOmIsWXM6Yi5fX2dwcFJldHVybi5jYWxsSWR9fQp2YXIgdUY9ZnVuY3Rpb24oYSxiKXt2YXIgYztjPShiPT09dm9pZCAwP3t9OmIpLnRpbWVvdXRNcztydC5jYWxsKHRoaXMpO3RoaXMuY2FsbGVyPW5ldyBsRihhLCJfX2dwcExvY2F0b3IiLGZ1bmN0aW9uKGQpe3JldHVybiB0eXBlb2YgZC5fX2dwcD09PSJmdW5jdGlvbiJ9LHRGKTt0aGlzLmNhbGxlci5MYS5zZXQoImFkZEV2ZW50TGlzdGVuZXIiLHBGKTt0aGlzLmNhbGxlci5qYS5zZXQoImFkZEV2ZW50TGlzdGVuZXIiLHJGKTt0aGlzLmNhbGxlci5MYS5zZXQoInJlbW92ZUV2ZW50TGlzdGVuZXIiLHFGKTt0aGlzLmNhbGxlci5qYS5zZXQoInJlbW92ZUV2ZW50TGlzdGVuZXIiLHNGKTt0aGlzLnRpbWVvdXRNcz1jIT1udWxsP2M6NTAwfTt3YSh1RixydCk7dUYucHJvdG90eXBlLk49ZnVuY3Rpb24oKXt0aGlzLmNhbGxlci5kaXNwb3NlKCk7cnQucHJvdG90eXBlLk4uY2FsbCh0aGlzKX07CnVGLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz1IcChmdW5jdGlvbigpe2EodkYsITApfSksZD10aGlzLnRpbWVvdXRNcz09PS0xP3ZvaWQgMDpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YygpfSx0aGlzLnRpbWVvdXRNcyk7b0YodGhpcy5jYWxsZXIsImFkZEV2ZW50TGlzdGVuZXIiLHtsaXN0ZW5lcjpmdW5jdGlvbihlLGYpe2NsZWFyVGltZW91dChkKTt0cnl7dmFyIGc7dmFyIGg7KChoPWUucGluZ0RhdGEpPT1udWxsP3ZvaWQgMDpoLmdwcFZlcnNpb24pPT09dm9pZCAwfHxlLnBpbmdEYXRhLmdwcFZlcnNpb249PT0iMSJ8fGUucGluZ0RhdGEuZ3BwVmVyc2lvbj09PSIxLjAiPyhiLnJlbW92ZUV2ZW50TGlzdGVuZXIoZS5saXN0ZW5lcklkKSxnPXtldmVudE5hbWU6InNpZ25hbFN0YXR1cyIsZGF0YToicmVhZHkiLHBpbmdEYXRhOntpbnRlcm5hbEVycm9yU3RhdGU6MSxncHBTdHJpbmc6IkdQUF9FUlJPUl9TVFJJTkdfSVNfREVQUkVDQVRFRF9TUEVDIiwKYXBwbGljYWJsZVNlY3Rpb25zOlstMV19fSk6QXJyYXkuaXNBcnJheShlLnBpbmdEYXRhLmFwcGxpY2FibGVTZWN0aW9ucyk/Zz1lOihiLnJlbW92ZUV2ZW50TGlzdGVuZXIoZS5saXN0ZW5lcklkKSxnPXtldmVudE5hbWU6InNpZ25hbFN0YXR1cyIsZGF0YToicmVhZHkiLHBpbmdEYXRhOntpbnRlcm5hbEVycm9yU3RhdGU6MixncHBTdHJpbmc6IkdQUF9FUlJPUl9TVFJJTkdfRVhQRUNURURfQVBQTElDQVRJT05fU0VDVElPTl9BUlJBWSIsYXBwbGljYWJsZVNlY3Rpb25zOlstMV19fSk7YShnLGYpfWNhdGNoKGwpe2lmKGU9PW51bGw/MDplLmxpc3RlbmVySWQpdHJ5e2IucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLmxpc3RlbmVySWQpfWNhdGNoKG4pe2Eod0YsITApO3JldHVybn1hKHhGLCEwKX19fSl9Owp1Ri5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhKXtvRih0aGlzLmNhbGxlciwicmVtb3ZlRXZlbnRMaXN0ZW5lciIse2xpc3RlbmVyOmZ1bmN0aW9uKCl7fSxsaXN0ZW5lcklkOmF9KX07CnZhciB4Rj17ZXZlbnROYW1lOiJzaWduYWxTdGF0dXMiLGRhdGE6InJlYWR5IixwaW5nRGF0YTp7aW50ZXJuYWxFcnJvclN0YXRlOjIsZ3BwU3RyaW5nOiJHUFBfRVJST1JfU1RSSU5HX1VOQVZBSUxBQkxFIixhcHBsaWNhYmxlU2VjdGlvbnM6Wy0xXX0sbGlzdGVuZXJJZDotMX0sdkY9e2V2ZW50TmFtZToic2lnbmFsU3RhdHVzIixkYXRhOiJyZWFkeSIscGluZ0RhdGE6e2dwcFN0cmluZzoiR1BQX0VSUk9SX1NUUklOR19MSVNURU5FUl9SRUdJU1RSQVRJT05fVElNRU9VVCIsaW50ZXJuYWxFcnJvclN0YXRlOjIsYXBwbGljYWJsZVNlY3Rpb25zOlstMV19LGxpc3RlbmVySWQ6LTF9LHdGPXtldmVudE5hbWU6InNpZ25hbFN0YXR1cyIsZGF0YToicmVhZHkiLHBpbmdEYXRhOntncHBTdHJpbmc6IkdQUF9FUlJPUl9TVFJJTkdfUkVNT1ZFX0VWRU5UX0xJU1RFTkVSX0VSUk9SIixpbnRlcm5hbEVycm9yU3RhdGU6MixhcHBsaWNhYmxlU2VjdGlvbnM6Wy0xXX0sbGlzdGVuZXJJZDotMX07ZnVuY3Rpb24geUYoYSl7dmFyIGI7aWYoIShiPWEucGluZ0RhdGEuc2lnbmFsU3RhdHVzPT09InJlYWR5Iikpe3ZhciBjPWEucGluZ0RhdGEuYXBwbGljYWJsZVNlY3Rpb25zO2I9IWN8fGMubGVuZ3RoPT09MSYmY1swXT09PS0xfWlmKGIpe2tGLmdwcFN0cmluZz1hLnBpbmdEYXRhLmdwcFN0cmluZzt2YXIgZD1hLnBpbmdEYXRhLmFwcGxpY2FibGVTZWN0aW9ucy5qb2luKCIsIik7a0YuSD1kfX1mdW5jdGlvbiB6Rigpe3RyeXt2YXIgYT1uZXcgdUYoQSx7dGltZW91dE1zOi0xfSk7bUYoYS5jYWxsZXIpJiZhLmFkZEV2ZW50TGlzdGVuZXIoeUYpfWNhdGNoKGIpe319O2Z1bmN0aW9uIEFGKCl7dmFyIGE9W1siY3YiLEUoMSldLFsicnYiLEUoMTQpXSxbInRjIixjQS50YWdzLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4gZH0pLmxlbmd0aF1dLGI9SmYoMTUpO2ImJmEucHVzaChbIngiLGJdKTt2YXIgYz1DcCgpO2MmJmEucHVzaChbInRhZ19leHAiLGNdKTtyZXR1cm4gYX07dmFyIEJGPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLkg9e307dGhpcy5LPXt9O2Z6KGZ1bmN0aW9uKGIpe3ZhciBjPWIuZXZlbnRJZCxkPWIudGYsZT1bXSxmPWEuSFtjXXx8W107Zi5sZW5ndGgmJmUucHVzaChbImhmIixmLmpvaW4oIi4iKV0pO3ZhciBnPWEuS1tjXXx8W107Zy5sZW5ndGgmJmUucHVzaChbImh0IixnLmpvaW4oIi4iKV0pO2QmJihkZWxldGUgYS5IW2NdLGRlbGV0ZSBhLktbY10pO3JldHVybiBlfSl9LENGPWZ1bmN0aW9uKCl7dmFyIGE9MDtyZXR1cm4gZnVuY3Rpb24oYil7c3dpdGNoKGIpe2Nhc2UgMTphfD0xO2JyZWFrO2Nhc2UgMjphfD0yO2JyZWFrO2Nhc2UgMzphfD00fXJldHVybiBhfX0sREY7dmFyIEVGPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLkg9IiI7Zm4uTiYmTSg1MTYpJiZmeihmdW5jdGlvbigpe3ZhciBiPVtdO2EuSCYmYi5wdXNoKFsicHNkIixhLkhdKTtyZXR1cm4gYn0pfSxGRjtmdW5jdGlvbiBHRigpe3JldHVybiExfQpmdW5jdGlvbiBIRigpe3ZhciBhPXt9O3JldHVybiBmdW5jdGlvbihiLGMsZCl7fX07ZnVuY3Rpb24gSUYoKXt2YXIgYT1KRjtyZXR1cm4gZnVuY3Rpb24oYixjLGQpe3ZhciBlPWQmJmQuZXZlbnQ7S0YoYyk7dmFyIGY9QmgoYik/dm9pZCAwOjEsZz1uZXcga2I7R2IoYyxmdW5jdGlvbihyLHQpe3ZhciB1PVVkKHQsdm9pZCAwLGYpO3U9PT12b2lkIDAmJnQhPT12b2lkIDAmJlAoNDQpO2cuc2V0KHIsdSl9KTthLlFiKFFmKCkpO3ZhciBoPXtSbjpoZyhiKSxldmVudElkOmU9PW51bGw/dm9pZCAwOmUuaWQscHJpb3JpdHlJZDplIT09dm9pZCAwP2UucHJpb3JpdHlJZDp2b2lkIDAscHJpb3JpdHlRdWV1ZTplIT09dm9pZCAwP2UucHJpb3JpdHlRdWV1ZTp2b2lkIDAsd2c6ZSE9PXZvaWQgMD9mdW5jdGlvbihyKXtlLmxkLndnKHIpfTp2b2lkIDAsUGI6ZnVuY3Rpb24oKXtyZXR1cm4gYn0sbG9nOmZ1bmN0aW9uKCl7fSxOcjp7aW5kZXg6ZD09bnVsbD92b2lkIDA6ZC5pbmRleCx0eXBlOmQ9PW51bGw/dm9pZCAwOmQudHlwZSxuYW1lOmQ9PW51bGw/dm9pZCAwOmQubmFtZX0sCml0OiEhS0EoYiwzKSxvcmlnaW5hbEV2ZW50RGF0YTplPT1udWxsP3ZvaWQgMDplLm9yaWdpbmFsRXZlbnREYXRhfTtlJiZlLmNhY2hlZE1vZGVsVmFsdWVzJiYoaC5jYWNoZWRNb2RlbFZhbHVlcz17Z3RtOmUuY2FjaGVkTW9kZWxWYWx1ZXMuZ3RtLGVjb21tZXJjZTplLmNhY2hlZE1vZGVsVmFsdWVzLmVjb21tZXJjZX0pO2lmKEdGKCkpe3ZhciBsPUhGKCksbixwO2guQWI9e3drOltdLHlnOnt9LGpjOmZ1bmN0aW9uKHIsdCx1KXt0PT09MSYmKG49cik7dD09PTcmJihwPXUpO2wocix0LHUpfSxlaTpWaCgpfTtoLmxvZz1mdW5jdGlvbihyKXt2YXIgdD1PYS5hcHBseSgxLGFyZ3VtZW50cyk7biYmbChuLDQse2xldmVsOnIsc291cmNlOnAsbWVzc2FnZTp0fSl9fQp2YXIgcT1yZihhLGgsW2IsZ10pO2EuUWIoKTtxIGluc3RhbmNlb2YgVGEmJihxLnR5cGU9PT0icmV0dXJuIj9xPXEuZGF0YTpxPXZvaWQgMCk7cmV0dXJuIFRkKHEsdm9pZCAwLGYpfX1mdW5jdGlvbiBLRihhKXt2YXIgYj1hLmd0bU9uU3VjY2VzcyxjPWEuZ3RtT25GYWlsdXJlO3liKGIpJiYoYS5ndG1PblN1Y2Nlc3M9ZnVuY3Rpb24oKXtiZChiKX0pO3liKGMpJiYoYS5ndG1PbkZhaWx1cmU9ZnVuY3Rpb24oKXtiZChjKX0pfTtmdW5jdGlvbiBORigpe3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMjApfTt2YXIgT0Y9W0YuRC56aV0ubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLnNsaWNlKDIpfSk7ZnVuY3Rpb24gUUYoYSl7fVFGLlA9ImludGVybmFsLmFkZEFkc0NsaWNrSWRzIjtmdW5jdGlvbiBSRihhLGIpe3ZhciBjPXRoaXM7fVJGLnB1YmxpY05hbWU9ImFkZENvbnNlbnRMaXN0ZW5lciI7dmFyIFNGPSExO2Z1bmN0aW9uIFRGKGEpe2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKWlmKFNGKXRyeXthW2JdKCl9Y2F0Y2goYyl7UCg3Nyl9ZWxzZSBhW2JdKCl9ZnVuY3Rpb24gVUYoYSxiLGMpe3ZhciBkPXRoaXMsZTtyZXR1cm4gZX1VRi5QPSJpbnRlcm5hbC5hZGREYXRhTGF5ZXJFdmVudExpc3RlbmVyIjtmdW5jdGlvbiBWRihhLGIsYyl7fVZGLnB1YmxpY05hbWU9ImFkZERvY3VtZW50RXZlbnRMaXN0ZW5lciI7ZnVuY3Rpb24gV0YoYSxiLGMsZCl7fVdGLnB1YmxpY05hbWU9ImFkZEVsZW1lbnRFdmVudExpc3RlbmVyIjtmdW5jdGlvbiBYRihhKXtyZXR1cm4gYS5ULnhiKCl9O2Z1bmN0aW9uIFlGKGEpe31ZRi5wdWJsaWNOYW1lPSJhZGRFdmVudENhbGxiYWNrIjsKdmFyIFpGPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09PSJzdHJpbmciP2E6U3RyaW5nKHJqKCkpfSxiRz1mdW5jdGlvbihhLGIpeyRGKGEsImluaXQiLCExKXx8KGFHKGEsImluaXQiLCEwKSxiKCkpfSwkRj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Y0coYSk7cmV0dXJuIE9iKGQsYixjKX0sZEc9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Y0coYSksZj1PYihlLGIsZCksZz1jKGYpO3JldHVybiBlW2JdPWd9LGFHPWZ1bmN0aW9uKGEsYixjKXtjRyhhKVtiXT1jfSxjRz1mdW5jdGlvbihhKXt2YXIgYj1raigiYXV0b0V2ZW50c1NldHRpbmdzIixmdW5jdGlvbigpe3JldHVybnt9fSk7Yi5oYXNPd25Qcm9wZXJ0eShhKXx8KGJbYV09e30pO3JldHVybiBiW2FdfSxlRz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9e2V2ZW50OmIsImd0bS5lbGVtZW50IjphLCJndG0uZWxlbWVudENsYXNzZXMiOm9kKGEsImNsYXNzTmFtZSIpLCJndG0uZWxlbWVudElkIjphLmZvcnx8ZWQoYSwiaWQiKXx8CiIiLCJndG0uZWxlbWVudFRhcmdldCI6YS5mb3JtVGFyZ2V0fHxvZChhLCJ0YXJnZXQiKXx8IiJ9O2MmJihkWyJndG0udHJpZ2dlcnMiXT1jLmpvaW4oIiwiKSk7ZFsiZ3RtLmVsZW1lbnRVcmwiXT0oYS5hdHRyaWJ1dGVzJiZhLmF0dHJpYnV0ZXMuZm9ybWFjdGlvbj9hLmZvcm1BY3Rpb246IiIpfHxhLmFjdGlvbnx8b2QoYSwiaHJlZiIpfHxhLnNyY3x8YS5jb2RlfHxhLmNvZGViYXNlfHwiIjtyZXR1cm4gZH07CmZ1bmN0aW9uIGlHKGEpe2lmKGEuZm9ybSl7dmFyIGI7cmV0dXJuKChiPWEuZm9ybSk9PW51bGw/MDpiLnRhZ05hbWUpP2EuZm9ybTpCLmdldEVsZW1lbnRCeUlkKGEuZm9ybSl9cmV0dXJuIGhkKGEsWyJmb3JtIl0sMTAwKX07CmZ1bmN0aW9uIG1HKGEpe31tRy5QPSJpbnRlcm5hbC5hZGRGb3JtQWJhbmRvbm1lbnRMaXN0ZW5lciI7ZnVuY3Rpb24gbkcoYSxiLGMsZCl7fQpuRy5QPSJpbnRlcm5hbC5hZGRGb3JtRGF0YSI7CmZ1bmN0aW9uIHNHKGEpe31zRy5QPSJpbnRlcm5hbC5hZGRHYVNlbmRMaXN0ZW5lciI7ZnVuY3Rpb24gdEcoYSl7aWYoIWEpcmV0dXJue307dmFyIGI9YS5OcjtyZXR1cm4gSkEoYi50eXBlLGIuaW5kZXgsYi5uYW1lKX1mdW5jdGlvbiB1RyhhKXtpZighYSlyZXR1cm57fTt2YXIgYj17b3JpZ2luYXRpbmdFbnRpdHk6dEcoYSl9O2EucHJpb3JpdHlRdWV1ZSYmKGIucHJpb3JpdHlRdWV1ZT1hLnByaW9yaXR5UXVldWUpO3JldHVybiBifTsKdmFyIHdHPWZ1bmN0aW9uKGEsYixjKXt2RygpLnVwZGF0ZVpvbmUoYSxiLGMpfSx5Rz1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPXt9LGc9dkcoKTtjPWMmJlJiKGMseEcpO2Zvcih2YXIgaD1nLmNyZWF0ZVpvbmUoYSxjKSxsPTA7bDxiLmxlbmd0aDtsKyspe3ZhciBuPVN0cmluZyhiW2xdKTtpZihnLnJlZ2lzdGVyQ2hpbGQobixFKDUpLGgpKXt2YXIgcD1uLHE9YSxyPWYsdD1kLHU9ZTtpZihTYihwLCJHVE0tIikpaEEocCx2b2lkIDAsITEse3NvdXJjZToxLGZyb21Db250YWluZXJFeGVjdXRpb246ITB9KTtlbHNle3ZhciB2PXFDKCJqcyIsTWIoKSk7aEEocCx2b2lkIDAsITAse3NvdXJjZToxLGZyb21Db250YWluZXJFeGVjdXRpb246ITB9KTt2YXIgeD17b3JpZ2luYXRpbmdFbnRpdHk6dCxpbmhlcml0UGFyZW50Q29uZmlnOnV9O21EKHYscSx4KTttRChyQyhwLHIpLHEseCl9fX1yZXR1cm4gaH0sdkc9ZnVuY3Rpb24oKXtyZXR1cm4ga2ooInpvbmVzIixmdW5jdGlvbigpe3JldHVybiBuZXcgekd9KX0sCkFHPXt6b25lOjEsY246MSxjc3M6MSxldzoxLGVxOjEsZ2U6MSxndDoxLGxjOjEsbGU6MSxsdDoxLHJlOjEsc3c6MSx1bToxfSx4Rz17Y2w6WyJlY2wiXSxlY2w6WyJjbCJdLGVobDpbImhsIl0sZ2Fhd2M6WyJnb29ndGFnIl0saGw6WyJlaGwiXX0sekc9ZnVuY3Rpb24oKXt0aGlzLkg9e307dGhpcy5LPXt9O3RoaXMuTj0wfTtrPXpHLnByb3RvdHlwZTtrLmlzQWN0aXZlPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9MDtkPGEubGVuZ3RoJiYhKGM9dGhpcy5IW2FbZF1dKTtkKyspO2lmKCFjKXJldHVybiEwO2lmKCF0aGlzLmlzQWN0aXZlKFtjLmtrXSxiKSlyZXR1cm4hMTtmb3IodmFyIGU9MDtlPGMuV2cubGVuZ3RoO2UrKylpZih0aGlzLktbYy5XZ1tlXV0uY2YoYikpcmV0dXJuITA7cmV0dXJuITF9O2suZ2V0SXNBbGxvd2VkRm49ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5pc0FjdGl2ZShhLGIpKXJldHVybiBmdW5jdGlvbigpe3JldHVybiExfTtmb3IodmFyIGMsZD0wO2Q8YS5sZW5ndGgmJgohKGM9dGhpcy5IW2FbZF1dKTtkKyspO2lmKCFjKXJldHVybiBmdW5jdGlvbigpe3JldHVybiEwfTtmb3IodmFyIGU9W10sZj0wO2Y8Yy5XZy5sZW5ndGg7ZisrKXt2YXIgZz10aGlzLktbYy5XZ1tmXV07Zy5jZihiKSYmZS5wdXNoKGcpfWlmKCFlLmxlbmd0aClyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hMX07dmFyIGg9dGhpcy5nZXRJc0FsbG93ZWRGbihbYy5ra10sYik7cmV0dXJuIGZ1bmN0aW9uKGwsbil7bj1ufHxbXTtpZighaChsLG4pKXJldHVybiExO2Zvcih2YXIgcD0wO3A8ZS5sZW5ndGg7KytwKWlmKGVbcF0uTihsLG4pKXJldHVybiEwO3JldHVybiExfX07ay51bnJlZ2lzdGVyQ2hpbGQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspZGVsZXRlIHRoaXMuSFthW2JdXX07ay5jcmVhdGVab25lPWZ1bmN0aW9uKGEsYil7dmFyIGM9U3RyaW5nKCsrdGhpcy5OKTt0aGlzLktbY109bmV3IEJHKGEsYik7cmV0dXJuIGN9O2sudXBkYXRlWm9uZT1mdW5jdGlvbihhLApiLGMpe3ZhciBkPXRoaXMuS1thXTtkJiZkLlIoYixjKX07ay5yZWdpc3RlckNoaWxkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLkhbYV0sZTtpZihlPSFkKWxqKCksZT1qai5IW2FdO2lmKGV8fCFkJiZFayhhKXx8ZCYmZC5rayE9PWIpcmV0dXJuITE7aWYoZClyZXR1cm4gZC5XZy5wdXNoKGMpLCExO3RoaXMuSFthXT17a2s6YixXZzpbY119O3JldHVybiEwfTt2YXIgQkc9ZnVuY3Rpb24oYSxiKXt0aGlzLks9bnVsbDt0aGlzLkg9W3tldmVudElkOmEsY2Y6ITB9XTtpZihiKXt0aGlzLks9e307Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspdGhpcy5LW2JbY11dPSEwfX07QkcucHJvdG90eXBlLlI9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLkhbdGhpcy5ILmxlbmd0aC0xXTthPD1jLmV2ZW50SWR8fGMuY2YhPT1iJiZ0aGlzLkgucHVzaCh7ZXZlbnRJZDphLGNmOmJ9KX07QkcucHJvdG90eXBlLmNmPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj10aGlzLkgubGVuZ3RoLTE7Yj49MDtiLS0paWYodGhpcy5IW2JdLmV2ZW50SWQ8PQphKXJldHVybiB0aGlzLkhbYl0uY2Y7cmV0dXJuITF9O0JHLnByb3RvdHlwZS5OPWZ1bmN0aW9uKGEsYil7Yj1ifHxbXTtpZighdGhpcy5LfHxBR1thXXx8dGhpcy5LW2FdKXJldHVybiEwO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7KytjKWlmKHRoaXMuS1tiW2NdXSlyZXR1cm4hMDtyZXR1cm4hMX07ZnVuY3Rpb24gQ0coYSl7dmFyIGI9bWooInpvbmVzIik7cmV0dXJuIGI/Yi5nZXRJc0FsbG93ZWRGbih3aygpLGEpOmZ1bmN0aW9uKCl7cmV0dXJuITB9fWZ1bmN0aW9uIERHKCl7dmFyIGE9bWooInpvbmVzIik7YSYmYS51bnJlZ2lzdGVyQ2hpbGQod2soKSl9CmZ1bmN0aW9uIEVHKCl7a0IodmsoKSxmdW5jdGlvbihhKXt2YXIgYj1hLm9yaWdpbmFsRXZlbnREYXRhWyJndG0udW5pcXVlRXZlbnRJZCJdLGM9bWooInpvbmVzIik7cmV0dXJuIGM/Yy5pc0FjdGl2ZSh3aygpLGIpOiEwfSk7aEIodmsoKSxmdW5jdGlvbihhKXt2YXIgYixjO2I9YS5lbnRpdHlJZDtjPWEuc2VjdXJpdHlHcm91cHM7cmV0dXJuIENHKE51bWJlcihhLm9yaWdpbmFsRXZlbnREYXRhWyJndG0udW5pcXVlRXZlbnRJZCJdKSkoYixjKX0pfTt2YXIgRkc9ZnVuY3Rpb24oYSxiKXt0aGlzLnRhZ0lkPWE7dGhpcy5jYW5vbmljYWxJZD1ifTsKZnVuY3Rpb24gR0coYSxiKXt2YXIgYz10aGlzO2lmKCFsaChhKXx8IWVoKGIpJiYhZ2goYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsIk9iamVjdHx1bmRlZmluZWQiXSxhcmd1bWVudHMpO3ZhciBkPVRkKGIsdGhpcy5ULDEpfHx7fSxlPWQuZmlyc3RQYXJ0eVVybCxmPWQub25Mb2FkLGc9ZC5sb2FkQnlEZXN0aW5hdGlvbj09PSEwLGg9ZC5pc0d0bUV2ZW50PT09ITA7VEYoW2Z1bmN0aW9uKCl7TChjLCJsb2FkX2dvb2dsZV90YWdzIixhLGUpfV0pO2lmKGcpe2lmKEdrKGEpKXJldHVybiBhfWVsc2UgaWYoRWsoYSkpcmV0dXJuIGE7dmFyIGw9NixuPVhGKHRoaXMpO2gmJihsPTcpO24uUGIoKT09PSJfX3pvbmUiJiYobD0xKTt2YXIgcD17c291cmNlOmwsZnJvbUNvbnRhaW5lckV4ZWN1dGlvbjohMH0scT1mdW5jdGlvbihyKXtoQihyLGZ1bmN0aW9uKHQpe2Zvcih2YXIgdT0KaUIoKS5nZXRFeHRlcm5hbFJlc3RyaWN0aW9ucygwLHZrKCkpLHY9bSh1KSx4PXYubmV4dCgpOyF4LmRvbmU7eD12Lm5leHQoKSl7dmFyIHk9eC52YWx1ZTtpZigheSh0KSlyZXR1cm4hMX1yZXR1cm4hMH0sITApO2tCKHIsZnVuY3Rpb24odCl7Zm9yKHZhciB1PWlCKCkuZ2V0RXh0ZXJuYWxSZXN0cmljdGlvbnMoMSx2aygpKSx2PW0odSkseD12Lm5leHQoKTsheC5kb25lO3g9di5uZXh0KCkpe3ZhciB5PXgudmFsdWU7aWYoIXkodCkpcmV0dXJuITF9cmV0dXJuITB9LCEwKTtmJiZmKG5ldyBGRyhhLHIpKX07Zz9uQShhLGUscCxxKTpoQShhLGUsIVNiKGEsIkdUTS0iKSxwLHEpO2YmJm4uUGIoKT09PSJfX3pvbmUiJiZ5RyhOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixbYV0sbnVsbCx0RyhYRih0aGlzKSkpO3JldHVybiBhfUdHLlA9ImludGVybmFsLmxvYWRHb29nbGVUYWciO2Z1bmN0aW9uIEhHKGEpe3JldHVybiBuZXcgS2QoIiIsZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5ldmFsdWF0ZShiKTtpZihjIGluc3RhbmNlb2YgS2QpcmV0dXJuIG5ldyBLZCgiIixmdW5jdGlvbigpe3ZhciBkPU9hLmFwcGx5KDAsYXJndW1lbnRzKSxlPXRoaXMsZj1FZChYRih0aGlzKSxudWxsKTtmLmV2ZW50SWQ9YS5ldmVudElkO2YucHJpb3JpdHlJZD1hLnByaW9yaXR5SWQ7Zi5vcmlnaW5hbEV2ZW50RGF0YT1hLm9yaWdpbmFsRXZlbnREYXRhO3ZhciBnPWQubWFwKGZ1bmN0aW9uKGwpe3JldHVybiBlLmV2YWx1YXRlKGwpfSksaD10aGlzLlQud2IoKTtoLnVlKGYpO3JldHVybiBjLk5jLmFwcGx5KGMsW2hdLmNvbmNhdCh3KGcpKSl9KX0pfTtmdW5jdGlvbiBJRyhhLGIsYyl7dmFyIGQ9dGhpczt9SUcuUD0iaW50ZXJuYWwuYWRkR29vZ2xlVGFnUmVzdHJpY3Rpb24iOwpmdW5jdGlvbiBQRyhhLGIpe31QRy5QPSJpbnRlcm5hbC5hZGRIaXN0b3J5Q2hhbmdlTGlzdGVuZXIiO2Z1bmN0aW9uIFFHKGEsYixjKXt9UUcucHVibGljTmFtZT0iYWRkV2luZG93RXZlbnRMaXN0ZW5lciI7ZnVuY3Rpb24gUkcoYSxiKXtyZXR1cm4hMH1SRy5wdWJsaWNOYW1lPSJhbGlhc0luV2luZG93IjtmdW5jdGlvbiBTRyhhLGIsYyl7fVNHLlA9ImludGVybmFsLmFwcGVuZFJlbW90ZUNvbmZpZ1BhcmFtZXRlciI7ZnVuY3Rpb24gVEcoYSl7dmFyIGI7cmV0dXJuIGJ9ClRHLnB1YmxpY05hbWU9ImNhbGxJbldpbmRvdyI7ZnVuY3Rpb24gVUcoYSl7fVVHLnB1YmxpY05hbWU9ImNhbGxMYXRlciI7ZnVuY3Rpb24gVkcoYSl7fVZHLlA9ImNhbGxPbkRvbVJlYWR5IjtmdW5jdGlvbiBXRyhhKXt9V0cuUD0iY2FsbE9uV2luZG93TG9hZCI7ZnVuY3Rpb24gWkcoYSxiKXtyZXR1cm4gY31aRy5QPSJpbnRlcm5hbC5jbGFpbURlc3RpbmF0aW9uIjtmdW5jdGlvbiAkRyhhLGIpe3ZhciBjO3JldHVybiBjfSRHLlA9ImludGVybmFsLmNvbXB1dGVHdG1QYXJhbWV0ZXIiO2Z1bmN0aW9uIGFIKGEsYil7dmFyIGM9dGhpczt9YUguUD0iaW50ZXJuYWwuY29uc2VudFNjaGVkdWxlRmlyc3RUcnkiO2Z1bmN0aW9uIGJIKGEsYil7dmFyIGM9dGhpczt9YkguUD0iaW50ZXJuYWwuY29uc2VudFNjaGVkdWxlUmV0cnkiO2Z1bmN0aW9uIGNIKGEpe3ZhciBiO3JldHVybiBifWNILlA9ImludGVybmFsLmNvcHlGcm9tQ3Jvc3NDb250YWluZXJEYXRhIjtmdW5jdGlvbiBkSChhLGIpe3ZhciBjO2lmKCFsaChhKXx8IXFoKGIpJiZiIT09bnVsbCYmIWdoKGIpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJudW1iZXJ8dW5kZWZpbmVkIl0sYXJndW1lbnRzKTtMKHRoaXMsInJlYWRfZGF0YV9sYXllciIsYSk7dmFyIGQ7KGJ8fDIpIT09Mj9kPXVBKGEsMSk6ZD1xQShyQSxhLFtBLEJdKTtjPWQ7dmFyIGU9VWQoYyx0aGlzLlQsQmgoWEYodGhpcykuUGIoKSk/MjoxKTtlPT09dm9pZCAwJiZjIT09dm9pZCAwJiZQKDQ1KTtyZXR1cm4gZX1kSC5wdWJsaWNOYW1lPSJjb3B5RnJvbURhdGFMYXllciI7CmZ1bmN0aW9uIGVIKGEpe3ZhciBiPXZvaWQgMDtMKHRoaXMsInJlYWRfZGF0YV9sYXllciIsYSk7YT1TdHJpbmcoYSk7dmFyIGM7YTp7Zm9yKHZhciBkPVhGKHRoaXMpLmNhY2hlZE1vZGVsVmFsdWVzLGU9bShhLnNwbGl0KCIuIikpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXtpZihkPT1udWxsKXtjPXZvaWQgMDticmVhayBhfWQ9ZFtmLnZhbHVlXX1jPWR9Yj1VZChjLHRoaXMuVCwxKTtyZXR1cm4gYn1lSC5QPSJpbnRlcm5hbC5jb3B5RnJvbURhdGFMYXllckNhY2hlIjtmdW5jdGlvbiBmSChhKXt2YXIgYjtyZXR1cm4gYn1mSC5wdWJsaWNOYW1lPSJjb3B5RnJvbVdpbmRvdyI7ZnVuY3Rpb24gZ0goYSl7dmFyIGI9dm9pZCAwO3JldHVybiBVZChiLHRoaXMuVCwxKX1nSC5QPSJpbnRlcm5hbC5jb3B5S2V5RnJvbVdpbmRvdyI7dmFyIGhIPWZ1bmN0aW9uKGEpe3JldHVybiBhPT09Y28uaWEuY2ImJmZvLkhbYV09PT1iby5NYS5VZSYmIVhvKEYuRC5rYSl9O3ZhciBpSD1mdW5jdGlvbigpe3JldHVybiIwIn0sakg9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGEhPT0ic3RyaW5nIilyZXR1cm4iIjt2YXIgYj1bImdjbGlkIiwiZGNsaWQiLCJ3YnJhaWQiLCJfZ2wiXTtNKDEwMikmJmIucHVzaCgiZ2JyYWlkIik7cmV0dXJuIFNqKGEsYiwiMCIpfTt2YXIga0g9e30sbEg9e30sbUg9e30sbkg9e30sb0g9e30scEg9e30scUg9e30sckg9e30sc0g9e30sdEg9e30sdUg9e30sdkg9e30sd0g9e30seEg9e30seUg9e30sekg9e30sQUg9e30sQkg9e30sQ0g9e30sREg9e30sRUg9e30sRkg9e30sR0g9e30sSEg9e30sSUg9e30sSkg9e30sS0g9KEpIW0YuRC5mYl09KGtIWzJdPVtoSF0sa0gpLEpIW0YuRC5aZl09KGxIWzJdPVtoSF0sbEgpLEpIW0YuRC5KaV09KG1IWzJdPVtoSF0sbUgpLEpIW0YuRC5nbV09KG5IWzJdPVtoSF0sbkgpLEpIW0YuRC5obV09KG9IWzJdPVtoSF0sb0gpLEpIW0YuRC5pbV09KHBIWzJdPVtoSF0scEgpLEpIW0YuRC5qbV09KHFIWzJdPVtoSF0scUgpLEpIW0YuRC5rbV09KHJIWzJdPVtoSF0sckgpLEpIW0YuRC5CY109KHNIWzJdPVtoSF0sc0gpLEpIW0YuRC5jZ109KHRIWzJdPVtoSF0sdEgpLEpIW0YuRC5kZ109KHVIWzJdPVtoSF0sdUgpLEpIW0YuRC5lZ109KHZIWzJdPVtoSF0sdkgpLEpIW0YuRC5mZ109KHdIWzJdPQpbaEhdLHdIKSxKSFtGLkQuZ2ddPSh4SFsyXT1baEhdLHhIKSxKSFtGLkQuaGddPSh5SFsyXT1baEhdLHlIKSxKSFtGLkQuaWddPSh6SFsyXT1baEhdLHpIKSxKSFtGLkQuamddPShBSFsyXT1baEhdLEFIKSxKSFtGLkQubGJdPShCSFsxXT1baEhdLEJIKSxKSFtGLkQuRGRdPShDSFsxXT1baEhdLENIKSxKSFtGLkQuS2RdPShESFsxXT1baEhdLERIKSxKSFtGLkQuRWVdPShFSFsxXT1baEhdLEVIKSxKSFtGLkQuQmZdPShGSFsxXT1bZnVuY3Rpb24oYSl7cmV0dXJuIE0oMTAyKSYmaEgoYSl9XSxGSCksSkhbRi5ELlVjXT0oR0hbMV09W2hIXSxHSCksSkhbRi5ELnphXT0oSEhbMV09W2hIXSxISCksSkhbRi5ELlVhXT0oSUhbMV09W2hIXSxJSCksSkgpLExIPXt9LE1IPShMSFtGLkQubGJdPWlILExIW0YuRC5EZF09aUgsTEhbRi5ELktkXT1pSCxMSFtGLkQuRWVdPWlILExIW0YuRC5CZl09aUgsTEhbRi5ELlVjXT1mdW5jdGlvbihhKXtpZighQ2QoYSkpcmV0dXJue307dmFyIGI9RWQoYSwKbnVsbCk7ZGVsZXRlIGIubWF0Y2hfaWQ7cmV0dXJuIGJ9LExIW0YuRC56YV09akgsTEhbRi5ELlVhXT1qSCxMSCksTkg9e30sT0g9e30sUEg9KE9IW0guSi5ZYV09KE5IWzJdPVtoSF0sTkgpLE9IKSxRSD17fTt2YXIgUkg9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5IPWE7dGhpcy5OPWI7dGhpcy5SPWM7dGhpcy5aPWR9O1JILnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbihhKXthPWE9PT12b2lkIDA/Y28uaWEuZ2Q6YTtpZighdGhpcy5OLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIGIoYSl9KSlyZXR1cm4gdGhpcy5SLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIGIoYSl9KT90aGlzLloodGhpcy5IKTp0aGlzLkh9O1JILnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7cmV0dXJuIEFkKHRoaXMuSCk9PT0iYXJyYXkifHxDZCh0aGlzLkgpP0VkKHRoaXMuSCxudWxsKTp0aGlzLkh9Owp2YXIgU0g9ZnVuY3Rpb24oKXt9LFRIPWZ1bmN0aW9uKGEsYil7dGhpcy5jb25kaXRpb25zPWE7dGhpcy5IPWJ9LFVIPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPSgoZD1hLmNvbmRpdGlvbnNbYl0pPT1udWxsP3ZvaWQgMDpkWzJdKXx8W10sZixnPSgoZj1hLmNvbmRpdGlvbnNbYl0pPT1udWxsP3ZvaWQgMDpmWzFdKXx8W107cmV0dXJuIG5ldyBSSChjLGUsZyxhLkhbYl18fFNIKX0sVkgsV0g7dmFyIFlIPWZ1bmN0aW9uKGEpe2EuSz0hMDthLkg9ITE7aWYoSWYoNTIpKXtpZihNKDUxNikmJlhIKCkpe3ZhciBiO2Euc2V0dGluZ3M9KGI9ZGF0YS5wcm9kdWN0U2V0dGluZ3MpIT1udWxsP2I6e307YS5IPSEwfWVsc2V7dmFyIGM7YS5zZXR0aW5ncz0oYz1wcm9kdWN0U2V0dGluZ3MpIT1udWxsP2M6e319cHJvZHVjdFNldHRpbmdzPXZvaWQgMDtkYXRhLnByb2R1Y3RTZXR0aW5ncz12b2lkIDA7dmFyIGQ7KGQ9RkYpIT1udWxsJiZmbi5OJiZNKDUxNikmJihkLkg9YS5IPyIxIjoiMCIpfX0sJEg9ZnVuY3Rpb24oYSl7dmFyIGI9Wkg7Yi5LfHxZSChiKTtyZXR1cm4gYi5zZXR0aW5nc1thXX0sWkg9bmV3IGZ1bmN0aW9uKCl7dGhpcy5zZXR0aW5ncz17fTt0aGlzLks9dGhpcy5IPSExfTsKZnVuY3Rpb24gWEgoKXtpZighZGF0YS5wcm9kdWN0U2V0dGluZ3MmJiFwcm9kdWN0U2V0dGluZ3MpcmV0dXJuITA7aWYoIWRhdGEucHJvZHVjdFNldHRpbmdzfHwhcHJvZHVjdFNldHRpbmdzfHxPYmplY3Qua2V5cyhkYXRhLnByb2R1Y3RTZXR0aW5ncykubGVuZ3RoIT09T2JqZWN0LmtleXMocHJvZHVjdFNldHRpbmdzKS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBhIGluIHByb2R1Y3RTZXR0aW5ncylpZighZGF0YS5wcm9kdWN0U2V0dGluZ3MuaGFzT3duUHJvcGVydHkoYSl8fGRhdGEucHJvZHVjdFNldHRpbmdzW2FdLnByZUF1dG9QaWkhPT1wcm9kdWN0U2V0dGluZ3NbYV0ucHJlQXV0b1BpaSlyZXR1cm4hMTtyZXR1cm4hMH07dmFyIGFJPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmV2ZW50TmFtZT1iO3RoaXMuTT1jO3RoaXMuSD17fTt0aGlzLmlzQWJvcnRlZD0hMTt0aGlzLnRhcmdldD1hO3RoaXMubWV0YWRhdGE9e307Zm9yKHZhciBkPWMuZXZlbnRNZXRhZGF0YXx8e30sZT1tKE9iamVjdC5rZXlzKGQpKSxmPWUubmV4dCgpOyFmLmRvbmU7Zj1lLm5leHQoKSl7dmFyIGc9Zi52YWx1ZTtWKHRoaXMsZyxkW2ddKX19LFI9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO3JldHVybihjPWEuSFtiXSk9PW51bGw/dm9pZCAwOihkPWMuZ2V0VmFsdWUpPT1udWxsP3ZvaWQgMDpkLmNhbGwoYyxRKGEsSC5KLnRnKSl9LGV1PWZ1bmN0aW9uKGEpe3JldHVybiBPYmplY3Qua2V5cyhhLkgpfSxVPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLkgsZTtjPT09dm9pZCAwP2U9dm9pZCAwOihWSCE9bnVsbHx8KFZIPW5ldyBUSChLSCxNSCkpLGU9VUgoVkgsYixjKSk7ZFtiXT1lfTsKYUkucHJvdG90eXBlLm1lcmdlSGl0RGF0YUZvcktleT1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZTtjPShkPXRoaXMuSFthXSk9PW51bGw/dm9pZCAwOihlPWQuSyk9PW51bGw/dm9pZCAwOmUuY2FsbChkKTtpZighYylyZXR1cm4gVSh0aGlzLGEsYiksITA7aWYoIUNkKGMpKXJldHVybiExO1UodGhpcyxhLG5hKE9iamVjdCwiYXNzaWduIikuY2FsbChPYmplY3QsYyxiKSk7cmV0dXJuITB9O3ZhciBiST1mdW5jdGlvbihhLGIpe2I9Yj09PXZvaWQgMD97fTpiO2Zvcih2YXIgYz1tKE9iamVjdC5rZXlzKGEuSCkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlLGY9dm9pZCAwLGc9dm9pZCAwLGg9dm9pZCAwO2JbZV09KGY9YS5IW2VdKT09bnVsbD92b2lkIDA6KGg9KGc9ZikuSyk9PW51bGw/dm9pZCAwOmguY2FsbChnKX1yZXR1cm4gYn07CmFJLnByb3RvdHlwZS5jb3B5VG9IaXREYXRhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1PKHRoaXMuTSxhKTtkPT09dm9pZCAwJiYoZD1iKTtpZih6YihkKSYmYyE9PXZvaWQgMCl0cnl7ZD1jKGQpfWNhdGNoKGUpe31kIT09dm9pZCAwJiZVKHRoaXMsYSxkKX07CnZhciBRPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5tZXRhZGF0YVtiXTtpZihiPT09SC5KLnRnKXt2YXIgZDtyZXR1cm4gYz09bnVsbD92b2lkIDA6KGQ9Yy5LKT09bnVsbD92b2lkIDA6ZC5jYWxsKGMpfXZhciBlO3JldHVybiBjPT1udWxsP3ZvaWQgMDooZT1jLmdldFZhbHVlKT09bnVsbD92b2lkIDA6ZS5jYWxsKGMsUShhLEguSi50ZykpfSxWPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLm1ldGFkYXRhLGU7Yz09PXZvaWQgMD9lPWM6KFdIIT1udWxsfHwoV0g9bmV3IFRIKFBILFFIKSksZT1VSChXSCxiLGMpKTtkW2JdPWV9LGNJPWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwP3t9OmI7Zm9yKHZhciBjPW0oT2JqZWN0LmtleXMoYS5tZXRhZGF0YSkpLGQ9Yy5uZXh0KCk7IWQuZG9uZTtkPWMubmV4dCgpKXt2YXIgZT1kLnZhbHVlLGY9dm9pZCAwLGc9dm9pZCAwLGg9dm9pZCAwO2JbZV09KGY9YS5tZXRhZGF0YVtlXSk9PW51bGw/dm9pZCAwOihoPShnPWYpLkspPT1udWxsP3ZvaWQgMDoKaC5jYWxsKGcpfXJldHVybiBifSxkST1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9JEgoYS50YXJnZXQuZGVzdGluYXRpb25JZCk7cmV0dXJuIGQmJmRbYl0hPT12b2lkIDA/ZFtiXTpjfSxadT1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1uZXcgYUkoKGI9PW51bGw/dm9pZCAwOmIudGFyZ2V0KXx8YS50YXJnZXQsKGI9PW51bGw/dm9pZCAwOmIuZXZlbnROYW1lKXx8YS5ldmVudE5hbWUsKGI9PW51bGw/dm9pZCAwOmIuTSl8fGEuTSksZD1iSShhKSxlPW0oT2JqZWN0LmtleXMoZCkpLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKXt2YXIgZz1mLnZhbHVlO1UoYyxnLGRbZ10pfWZvcih2YXIgaD1jSShhKSxsPW0oT2JqZWN0LmtleXMoaCkpLG49bC5uZXh0KCk7IW4uZG9uZTtuPWwubmV4dCgpKXt2YXIgcD1uLnZhbHVlO1YoYyxwLGhbcF0pfWMuaXNBYm9ydGVkPWEuaXNBYm9ydGVkO3JldHVybiBjfSxlST1mdW5jdGlvbihhKXt2YXIgYj1hLk0sYz1iLmV2ZW50SWQsZD1iLnByaW9yaXR5SWQ7CnJldHVybiBkP2MrIl8iK2Q6U3RyaW5nKGMpfTthSS5wcm90b3R5cGUuYWNjZXB0PWZ1bmN0aW9uKCl7dmFyIGE9b20oam0uYmEuU2kse30pLGI9ZUkodGhpcyksYz10aGlzLnRhcmdldC5kZXN0aW5hdGlvbklkO2FbYl18fChhW2JdPXt9KTthW2JdW2NdPXZrKCk7dmFyIGQ9am0uYmEuU2k7aWYoa20oZCkpe3ZhciBlOyhlPWxtKGQpKT09bnVsbHx8ZS5ub3RpZnkoKX19O2FJLnByb3RvdHlwZS5jYW5CZUFjY2VwdGVkPWZ1bmN0aW9uKGEpe3ZhciBiPW5tKGptLmJhLlNpKTtpZighYilyZXR1cm4hMDt2YXIgYz1iW2VJKHRoaXMpXTtpZighYylyZXR1cm4hMDt2YXIgZD1jW2EhPW51bGw/YTp0aGlzLnRhcmdldC5kZXN0aW5hdGlvbklkXTtyZXR1cm4gZD09PXZvaWQgMHx8ZD09PXZrKCl9O2Z1bmN0aW9uIGZJKGEpe3JldHVybntnZXREZXN0aW5hdGlvbklkOmZ1bmN0aW9uKCl7cmV0dXJuIGEudGFyZ2V0LmRlc3RpbmF0aW9uSWR9LGdldEV2ZW50TmFtZTpmdW5jdGlvbigpe3JldHVybiBhLmV2ZW50TmFtZX0sc2V0RXZlbnROYW1lOmZ1bmN0aW9uKGIpe2EuZXZlbnROYW1lPWJ9LGdldEhpdERhdGE6ZnVuY3Rpb24oYil7cmV0dXJuIFIoYSxiKX0sc2V0SGl0RGF0YTpmdW5jdGlvbihiLGMpe1UoYSxiLGMpfSxzZXRIaXREYXRhSWZOb3REZWZpbmVkOmZ1bmN0aW9uKGIsYyl7UihhLGIpPT09dm9pZCAwJiZVKGEsYixjKX0sY29weVRvSGl0RGF0YTpmdW5jdGlvbihiLGMpe2EuY29weVRvSGl0RGF0YShiLGMpfSxnZXRNZXRhZGF0YTpmdW5jdGlvbihiKXtyZXR1cm4gUShhLGIpfSxzZXRNZXRhZGF0YTpmdW5jdGlvbihiLGMpe1YoYSxiLGMpfSxpc0Fib3J0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5pc0Fib3J0ZWR9LGFib3J0OmZ1bmN0aW9uKCl7YS5pc0Fib3J0ZWQ9ITB9LApnZXRGcm9tRXZlbnRDb250ZXh0OmZ1bmN0aW9uKGIpe3JldHVybiBPKGEuTSxiKX0scmI6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sZ2V0SGl0S2V5czpmdW5jdGlvbigpe3JldHVybiBldShhKX0sZ2V0TWVyZ2VkVmFsdWVzOmZ1bmN0aW9uKGIpe3JldHVybiBhLk0uZ2V0TWVyZ2VkVmFsdWVzKGIsMyl9LG1lcmdlSGl0RGF0YUZvcktleTpmdW5jdGlvbihiLGMpe3JldHVybiBDZChjKT9hLm1lcmdlSGl0RGF0YUZvcktleShiLGMpOiExfSxhY2NlcHQ6ZnVuY3Rpb24oKXthLmFjY2VwdCgpfSxjYW5CZUFjY2VwdGVkOmZ1bmN0aW9uKGIpe3JldHVybiBhLmNhbkJlQWNjZXB0ZWQoYil9fX07ZnVuY3Rpb24gZ0koYSxiKXt2YXIgYztyZXR1cm4gY31nSS5QPSJpbnRlcm5hbC5jb3B5UHJlSGl0IjtmdW5jdGlvbiBoSShhLGIpe3ZhciBjPW51bGw7aWYoIWxoKGEpfHwhbGgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyIsInN0cmluZyJdLGFyZ3VtZW50cyk7TCh0aGlzLCJhY2Nlc3NfZ2xvYmFscyIsInJlYWR3cml0ZSIsYSk7TCh0aGlzLCJhY2Nlc3NfZ2xvYmFscyIsInJlYWR3cml0ZSIsYik7dmFyIGQ9W0EsQl0sZT1hLnNwbGl0KCIuIiksZj1VYihBLGUsZCksZz1lW2UubGVuZ3RoLTFdO2lmKGY9PT12b2lkIDApdGhyb3cgRXJyb3IoIlBhdGggIithKyIgZG9lcyBub3QgZXhpc3QuIik7dmFyIGg9ZltnXTtpZihoKXJldHVybiB5YihoKT9VZChoLHRoaXMuVCwyKTpudWxsO3ZhciBsO2g9ZnVuY3Rpb24oKXtpZigheWIobC5wdXNoKSl0aHJvdyBFcnJvcigiT2JqZWN0IGF0ICIrYisiIGluIHdpbmRvdyBpcyBub3QgYW4gYXJyYXkuIik7bC5wdXNoLmNhbGwobCwKYXJndW1lbnRzKX07ZltnXT1oO3ZhciBuPWIuc3BsaXQoIi4iKSxwPVViKEEsbixkKSxxPW5bbi5sZW5ndGgtMV07aWYocD09PXZvaWQgMCl0aHJvdyBFcnJvcigiUGF0aCAiK24rIiBkb2VzIG5vdCBleGlzdC4iKTtsPXBbcV07bD09PXZvaWQgMCYmKGw9W10scFtxXT1sKTtjPWZ1bmN0aW9uKCl7aC5hcHBseShoLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKSl9O3JldHVybiBVZChjLHRoaXMuVCwyKX1oSS5wdWJsaWNOYW1lPSJjcmVhdGVBcmd1bWVudHNRdWV1ZSI7ZnVuY3Rpb24gaUkoYSl7cmV0dXJuIFVkKGZ1bmN0aW9uKGMpe3ZhciBkPVNBKCk7aWYodHlwZW9mIGM9PT0iZnVuY3Rpb24iKWQoZnVuY3Rpb24oKXtjKGZ1bmN0aW9uKGYsZyxoKXt2YXIgbD0KU0EoKSxuPWwmJmwuZ2V0QnlOYW1lJiZsLmdldEJ5TmFtZShmKTtyZXR1cm4obmV3IEEuZ2FwbHVnaW5zLkxpbmtlcihuKSkuZGVjb3JhdGUoZyxoKX0pfSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGMpKXt2YXIgZT1TdHJpbmcoY1swXSkuc3BsaXQoIi4iKTtiW2UubGVuZ3RoPT09MT9lWzBdOmVbMV1dJiZkLmFwcGx5KG51bGwsYyl9ZWxzZSBpZihjPT09ImlzTG9hZGVkIilyZXR1cm4hIWQubG9hZGVkfSx0aGlzLlQsMSl9aUkuUD0iaW50ZXJuYWwuY3JlYXRlR2FDb21tYW5kUXVldWUiO2Z1bmN0aW9uIGpJKGEpe3JldHVybiBVZChmdW5jdGlvbigpe2lmKCF5YihlLnB1c2gpKXRocm93IEVycm9yKCJPYmplY3QgYXQgIithKyIgaW4gd2luZG93IGlzIG5vdCBhbiBhcnJheS4iKTtlLnB1c2guYXBwbHkoZSxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCkpfSx0aGlzLlQsCkJoKFhGKHRoaXMpLlBiKCkpPzI6MSl9akkucHVibGljTmFtZT0iY3JlYXRlUXVldWUiO2Z1bmN0aW9uIGtJKGEsYil7dmFyIGM9bnVsbDtpZighbGgoYSl8fCFtaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwic3RyaW5nfHVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7dHJ5e3ZhciBkPShifHwiIikuc3BsaXQoIiIpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4iaWciLmluZGV4T2YoZSk+PTB9KS5qb2luKCIiKTtjPW5ldyBQZChuZXcgUmVnRXhwKGEsZCkpfWNhdGNoKGUpe31yZXR1cm4gY31rSS5QPSJpbnRlcm5hbC5jcmVhdGVSZWdleCI7ZnVuY3Rpb24gbEkoYSl7fWxJLlA9ImludGVybmFsLmRlY2xhcmVDb25zZW50U3RhdGUiO2Z1bmN0aW9uIG1JKGEpe3ZhciBiPSIiO3JldHVybiBifW1JLlA9ImludGVybmFsLmRlY29kZVVybEh0bWxFbnRpdGllcyI7ZnVuY3Rpb24gbkkoYSxiLGMpe3ZhciBkO3JldHVybiBkfW5JLlA9ImludGVybmFsLmRlY29yYXRlVXJsV2l0aEdhQ29va2llcyI7ZnVuY3Rpb24gb0koKXt9b0kuUD0iaW50ZXJuYWwuZGVmZXJDdXN0b21FdmVudHMiO2Z1bmN0aW9uIHBJKGEsYil7dHJ5e3JldHVybiBhLmNsb3Nlc3QoYil9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTtmdW5jdGlvbiBxSSgpe3ZhciBhPUEuc2NyZWVuO3JldHVybnt3aWR0aDphP2Eud2lkdGg6MCxoZWlnaHQ6YT9hLmhlaWdodDowfX0KZnVuY3Rpb24gckkoYSl7aWYoQi5oaWRkZW4pcmV0dXJuITA7dmFyIGI9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihiLnRvcD09PWIuYm90dG9tfHxiLmxlZnQ9PT1iLnJpZ2h0fHwhQS5nZXRDb21wdXRlZFN0eWxlKXJldHVybiEwO3ZhciBjPUEuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpO2lmKGMudmlzaWJpbGl0eT09PSJoaWRkZW4iKXJldHVybiEwO2Zvcih2YXIgZD1hLGU9YztkOyl7aWYoZS5kaXNwbGF5PT09Im5vbmUiKXJldHVybiEwO3ZhciBmPWUub3BhY2l0eSxnPWUuZmlsdGVyO2lmKGcpe3ZhciBoPWcuaW5kZXhPZigib3BhY2l0eSgiKTtoPj0wJiYoZz1nLnN1YnN0cmluZyhoKzgsZy5pbmRleE9mKCIpIixoKSksZy5jaGFyQXQoZy5sZW5ndGgtMSk9PT0iJSImJihnPWcuc3Vic3RyaW5nKDAsZy5sZW5ndGgtMSkpLGY9U3RyaW5nKE1hdGgubWluKE51bWJlcihnKSxOdW1iZXIoZikpKSl9aWYoZiE9PXZvaWQgMCYmTnVtYmVyKGYpPD0wKXJldHVybiEwOyhkPWQucGFyZW50RWxlbWVudCkmJgooZT1BLmdldENvbXB1dGVkU3R5bGUoZCxudWxsKSl9cmV0dXJuITF9ZnVuY3Rpb24gZkooYSl7dmFyIGI7cmV0dXJuIGJ9ZkouUD0iaW50ZXJuYWwuZGV0ZWN0VXNlclByb3ZpZGVkRGF0YSI7CmZ1bmN0aW9uIG1KKGEsYil7cmV0dXJuIGZ9bUouUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25DbGljayI7CmZ1bmN0aW9uIHRKKGEsYil7cmV0dXJuIHB9dEouUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25FbGVtZW50VmlzaWJpbGl0eSI7ZnVuY3Rpb24gdUooKXt9dUouUD0iaW50ZXJuYWwuZW5hYmxlQXV0b0V2ZW50T25FcnJvciI7CmZ1bmN0aW9uIEFKKGEsYil7dmFyIGM9dGhpcztyZXR1cm4gZH1BSi5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkZvcm1JbnRlcmFjdGlvbiI7CmZ1bmN0aW9uIEZKKGEsYil7dmFyIGM9dGhpcztyZXR1cm4gZn1GSi5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkZvcm1TdWJtaXQiOwpmdW5jdGlvbiBLSigpe3ZhciBhPXRoaXM7fUtKLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uR2FTZW5kIjsKZnVuY3Rpb24gUkooYSxiKXt2YXIgYz10aGlzO3JldHVybiBmfVJKLlA9ImludGVybmFsLmVuYWJsZUF1dG9FdmVudE9uSGlzdG9yeUNoYW5nZSI7dmFyIFNKPVsiaHR0cDovLyIsImh0dHBzOi8vIiwiamF2YXNjcmlwdDoiLCJmaWxlOi8vIl07CnZhciBUSj1mdW5jdGlvbihhLGIpe2lmKGEud2hpY2g9PT0yfHxhLmN0cmxLZXl8fGEuc2hpZnRLZXl8fGEuYWx0S2V5fHxhLm1ldGFLZXkpcmV0dXJuITE7dmFyIGM9b2QoYiwiaHJlZiIpO2lmKGMuaW5kZXhPZigiOiIpIT09LTEmJiFTSi5zb21lKGZ1bmN0aW9uKGgpe3JldHVybiBTYihjLGgpfSkpcmV0dXJuITE7dmFyIGQ9Yy5pbmRleE9mKCIjIiksZT1vZChiLCJ0YXJnZXQiKTtpZihlJiZlIT09Il9zZWxmIiYmZSE9PSJfcGFyZW50IiYmZSE9PSJfdG9wInx8ZD09PTApcmV0dXJuITE7aWYoZD4wKXt2YXIgZj1PaihSaihjKSksZz1PaihSaihBLmxvY2F0aW9uLmhyZWYpKTtyZXR1cm4gZiE9PWd9cmV0dXJuITB9LFVKPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPUxqKFJqKChiLmF0dHJpYnV0ZXMmJmIuYXR0cmlidXRlcy5mb3JtYWN0aW9uP2IuZm9ybUFjdGlvbjoiIil8fGIuYWN0aW9ufHxvZChiLCJocmVmIil8fGIuc3JjfHxiLmNvZGV8fGIuY29kZWJhc2V8fCIiKSwiaG9zdCIpLApkPTA7ZDxhLmxlbmd0aDtkKyspdHJ5e2lmKChuZXcgUmVnRXhwKGFbZF0pKS50ZXN0KGMpKXJldHVybiExfWNhdGNoKGUpe31yZXR1cm4hMH0sVko9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMpe3ZhciBkPWMudGFyZ2V0O2lmKGQmJmMud2hpY2ghPT0zJiYhKGMuSHx8Yy50aW1lU3RhbXAmJmMudGltZVN0YW1wPT09Yikpe2I9Yy50aW1lU3RhbXA7ZD1oZChkLFsiYSIsImFyZWEiXSwxMDApO2lmKCFkKXJldHVybiBjLnJldHVyblZhbHVlO3ZhciBlPWMuZGVmYXVsdFByZXZlbnRlZHx8Yy5yZXR1cm5WYWx1ZT09PSExLGY9JEYoImxjbCIsZT8ibnYubXd0IjoibXd0IiwwKSxnO2c9ZT8kRigibGNsIiwibnYuaWRzIixbXSk6JEYoImxjbCIsImlkcyIsW10pO2Zvcih2YXIgaD1bXSxsPTA7bDxnLmxlbmd0aDtsKyspe3ZhciBuPWdbbF0scD0kRigibGNsIiwiYWZmLm1hcCIse30pW25dO3AmJiFVSihwLGQpfHxoLnB1c2gobil9aWYoaC5sZW5ndGgpe3ZhciBxPVRKKGMsZCkscj1lRyhkLCJndG0ubGlua0NsaWNrIiwKaCk7clsiZ3RtLmVsZW1lbnRUZXh0Il09ZmQoZCk7clsiZ3RtLndpbGxPcGVuSW5OZXdXaW5kb3ciXT0hcTtpZihxJiYhZSYmZiYmZC5ocmVmKXt2YXIgdD0hIUNiKFN0cmluZyhvZChkLCJyZWwiKXx8IiIpLnNwbGl0KCIgIiksZnVuY3Rpb24oeSl7cmV0dXJuIHkudG9Mb3dlckNhc2UoKT09PSJub3JlZmVycmVyIn0pLHU9QVsob2QoZCwidGFyZ2V0Iil8fCJfc2VsZiIpLnN1YnN0cmluZygxKV0sdj0hMCx4PXRFKGZ1bmN0aW9uKCl7dmFyIHk7aWYoeT12JiZ1KXt2YXIgejthOmlmKHQpe3ZhciBDO3RyeXtDPW5ldyBNb3VzZUV2ZW50KGMudHlwZSx7YnViYmxlczohMH0pfWNhdGNoKEQpe2lmKCFCLmNyZWF0ZUV2ZW50KXt6PSExO2JyZWFrIGF9Qz1CLmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO0MuaW5pdEV2ZW50KGMudHlwZSwhMCwhMCl9Qy5IPSEwO2MudGFyZ2V0LmRpc3BhdGNoRXZlbnQoQyk7ej0hMH1lbHNlIHo9ITE7eT0hen15JiYodS5sb2NhdGlvbi5ocmVmPW9kKGQsCiJocmVmIikpfSxmKTtpZihpRShyLHgsZikpdj0hMTtlbHNlIHJldHVybiBjLnByZXZlbnREZWZhdWx0JiZjLnByZXZlbnREZWZhdWx0KCksYy5yZXR1cm5WYWx1ZT0hMX1lbHNlIHNFKHIsZnVuY3Rpb24oKXt9LGZ8fDJFMyk7cmV0dXJuITB9fX12YXIgYj0wOyRjKEIsImNsaWNrIixhLCExKTskYyhCLCJhdXhjbGljayIsYSwhMSl9OwpmdW5jdGlvbiBXSihhLGIpe3ZhciBjPXRoaXM7aWYoIWZoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJPYmplY3R8dW5kZWZpbmVkIiwiYW55Il0sYXJndW1lbnRzKTt2YXIgZD1UZChhKTtURihbZnVuY3Rpb24oKXtMKGMsImRldGVjdF9saW5rX2NsaWNrX2V2ZW50cyIsZCl9XSk7dmFyIGU9ZCYmISFkLndhaXRGb3JUYWdzLGY9ZCYmISFkLmNoZWNrVmFsaWRhdGlvbixnPWQ/ZC5hZmZpbGlhdGVEb21haW5zOnZvaWQgMCxoPVpGKGIpO2lmKGUpe3ZhciBsPU51bWJlcihkLndhaXRGb3JUYWdzVGltZW91dCk7bD4wJiZpc0Zpbml0ZShsKXx8KGw9MkUzKTt2YXIgbj1mdW5jdGlvbihxKXtyZXR1cm4gTWF0aC5tYXgobCxxKX07ZEcoImxjbCIsIm13dCIsbiwwKTtmfHxkRygibGNsIiwibnYubXd0IixuLDApfXZhciBwPWZ1bmN0aW9uKHEpe3EucHVzaChoKTsKcmV0dXJuIHF9O2RHKCJsY2wiLCJpZHMiLHAsW10pO2Z8fGRHKCJsY2wiLCJudi5pZHMiLHAsW10pO2cmJmRHKCJsY2wiLCJhZmYubWFwIixmdW5jdGlvbihxKXtxW2hdPWc7cmV0dXJuIHF9LHt9KTskRigibGNsIiwiaW5pdCIsITEpfHwoVkooKSxhRygibGNsIiwiaW5pdCIsITApKTtyZXR1cm4gaH1XSi5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbkxpbmtDbGljayI7CmZ1bmN0aW9uIGdLKGEsYil7dmFyIGM9dGhpcztyZXR1cm4gZ31nSy5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPblNjcm9sbCI7ZnVuY3Rpb24gaEsoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYS5saW1pdCYmYS5naz49YS5saW1pdClhLmFpJiZBLmNsZWFySW50ZXJ2YWwoYS5haSk7ZWxzZXthLmdrKys7dmFyIGI9TmIoKTt1RSh7ZXZlbnQ6YS5ldmVudE5hbWUsImd0bS50aW1lcklkIjphLmFpLCJndG0udGltZXJFdmVudE51bWJlciI6YS5naywiZ3RtLnRpbWVySW50ZXJ2YWwiOmEuaW50ZXJ2YWwsImd0bS50aW1lckxpbWl0IjphLmxpbWl0LCJndG0udGltZXJTdGFydFRpbWUiOmEuTW8sImd0bS50aW1lckN1cnJlbnRUaW1lIjpiLCJndG0udGltZXJFbGFwc2VkVGltZSI6Yi1hLk1vLCJndG0udHJpZ2dlcnMiOmEuTHR9KX19fQpmdW5jdGlvbiBpSyhhLGIpewpyZXR1cm4gZn1pSy5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPblRpbWVyIjt2YXIgQWM9QWEoWyJkYXRhLWd0bS15dC1pbnNwZWN0ZWQtIl0pLGtLPVsid3d3LnlvdXR1YmUuY29tIiwid3d3LnlvdXR1YmUtbm9jb29raWUuY29tIl0sbEs7CmZ1bmN0aW9uIHZLKGEsYil7dmFyIGM9dGhpcztyZXR1cm4gZX12Sy5QPSJpbnRlcm5hbC5lbmFibGVBdXRvRXZlbnRPbllvdVR1YmVBY3Rpdml0eSI7ZnVuY3Rpb24gd0soYSxiKXtpZighbGgoYSl8fCFmaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIiwiT2JqZWN0fHVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7dmFyIGM9Yj9UZChiKTp7fTtjLnJlZ2V4Q2FjaGU9YWwoMyxmdW5jdGlvbigpe3JldHVybiBuZXcgTWFwfSk7cmV0dXJuIEdoKGEsYyl9d0suUD0iaW50ZXJuYWwuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiI7ZnVuY3Rpb24geEsoYSl7dmFyIGI9ITE7cmV0dXJuIGJ9eEsuUD0iaW50ZXJuYWwuZXZhbHVhdGVNYXRjaGluZ1J1bGVzIjt2YXIgeUs9bmV3IE1hcChbWyJhdyIsNF1dKTtmdW5jdGlvbiB6SyhhKXt2YXIgYj12clthXSxjPXlLLmdldChhKTtyZXR1cm4gYz8od3EoYixjKXx8W10pLnNvbWUoZnVuY3Rpb24oZCl7cmV0dXJuIGQubT09PSIwInx8ZC5tPT09dm9pZCAwfSk6ITF9CmZ1bmN0aW9uIEFLKGEsYil7aWYoTSg0OTUpKXtmb3IodmFyIGM9bmV3IE1hcCxkPW0oeUspLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXt2YXIgZj1tKGUudmFsdWUpLGc9Zi5uZXh0KCkudmFsdWUsaD1mLm5leHQoKS52YWx1ZSxsPWcsbj1hW2xdLHA9QXJyYXkuaXNBcnJheShuKT9uWzBdOm47aWYocCE9PXZvaWQgMCl7dmFyIHE9e30scj0ocS5rPXAscS5pPVN0cmluZyhNYXRoLmZsb29yKERhdGUubm93KCkvMUUzKSkscS5iPVtdLHEubT0iMSIscSksdD1hcShyLGgpO3QmJih6SyhsKXx8Yy5zZXQobCx0KSl9fWlmKGMuc2l6ZSl7dmFyIHUsdj1bXSx4PWIucGF0aHx8Ii8iO3YucHVzaChlbmNvZGVVUklDb21wb25lbnQoInAiKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHgpKTtiLkFyJiZ2LnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KCJjZSIpKyI9IitlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGIuQXIpKSk7dmFyIHk9Yi5kb21haW4mJmIuZG9tYWluIT09ImF1dG8iPwpiLmRvbWFpbjoiYXV0bzoiK0EubG9jYXRpb24uaG9zdG5hbWU7di5wdXNoKGVuY29kZVVSSUNvbXBvbmVudCgiZCIpKyI9IitlbmNvZGVVUklDb21wb25lbnQoeSkpO2Zvcih2YXIgej1tKGMpLEM9ei5uZXh0KCk7IUMuZG9uZTtDPXoubmV4dCgpKXt2YXIgRD1tKEMudmFsdWUpLEk9RC5uZXh0KCkudmFsdWUsRz1ELm5leHQoKS52YWx1ZTt2LnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KEkpKyI9IitlbmNvZGVVUklDb21wb25lbnQoRykpfXU9Il8vc2V0X2Nvb2tpZT8iK3Yuam9pbigiJiIpO3ZhciBOLFM9RSg1OCk7Tj1FZih1LFMpO3ZhciBXPVhqKCkrIi8iK047bWQoVyl9fX07ZnVuY3Rpb24gQksoYSl7cmV0dXJuIkNXVldlYlZpZXdNZXNzYWdlImluIGF9ZnVuY3Rpb24gQ0soYSl7dmFyIGI9QSxjPWIud2Via2l0O2RlbGV0ZSBiLndlYmtpdDthKGIud2Via2l0KTtiLndlYmtpdD1jfWZ1bmN0aW9uIERLKGEsYil7dmFyIGM9e2FjdGlvbjoiZ2NsX3NldHVwIn07aWYoQksoYS5tZXNzYWdlSGFuZGxlcnMpKXJldHVybiBhLm1lc3NhZ2VIYW5kbGVycy5DV1ZXZWJWaWV3TWVzc2FnZS5wb3N0TWVzc2FnZSh7Y29tbWFuZDpiLHBheWxvYWQ6Y30pLCEwO3ZhciBkPWEubWVzc2FnZUhhbmRsZXJzW2JdO3JldHVybiBkPyhkLnBvc3RNZXNzYWdlKGMpLCEwKTohMX07dmFyIEVLPXt9LEZLPShFSy5hd2I9e25vdEZvdW5kOjE3OH0sRUsueXRiPXtub3RGb3VuZDoxOTR9LEVLKTtmdW5jdGlvbiBHSyhhKXt2YXIgYixjPShiPUZLW2FdKT09bnVsbD92b2lkIDA6Yi5ub3RGb3VuZDtjJiZQKGMpfQpmdW5jdGlvbiBISyhhKXtpZighbm0oam0uYmEuam4pJiYid2Via2l0ImluIEEmJkEud2Via2l0Lm1lc3NhZ2VIYW5kbGVycyl7dmFyIGI9ZnVuY3Rpb24oKXt0cnl7Q0soZnVuY3Rpb24oYyl7aWYoYyl7dmFyIGQ7ZD1CSyhjLm1lc3NhZ2VIYW5kbGVycyl8fCJhd2IiaW4gYy5tZXNzYWdlSGFuZGxlcnM/e2NvbW1hbmQ6ImF3YiIsc291cmNlOjV9OihCSyhjLm1lc3NhZ2VIYW5kbGVycyl8fCJ5dGIiaW4gYy5tZXNzYWdlSGFuZGxlcnMpJiZNKDQ5OSk/e2NvbW1hbmQ6Inl0YiIsc291cmNlOjh9OnZvaWQgMDtkJiYobW0oam0uYmEuam4sZnVuY3Rpb24oZSl7dmFyIGY9ZC5zb3VyY2U7ZS5nY2xpZCYmbHMoImdjbF9hdyIsZS5nY2xpZCxmLGEpO2Uud2JyYWlkJiZscygiZ2NsX2diIixlLndicmFpZCxmLGEpfSksREsoYyxkLmNvbW1hbmQpfHxHSyhkLmNvbW1hbmQpKX19KX1jYXRjaChjKXtQKDE5Myl9fTtIbChmdW5jdGlvbigpe0JyKGZwKT9iKCk6SWwoYixmcCl9LGZwKX19O3ZhciBJSz1bImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20iLCJodHRwczovL3d3dy55b3V0dWJlLmNvbSIsImh0dHBzOi8vbS55b3V0dWJlLmNvbSJdO2Z1bmN0aW9uIEpLKGEpe3JldHVybiBhLmRhdGEuYWN0aW9uIT09ImdjbF90cmFuc2ZlciI/KFAoMTczKSwhMCk6YS5kYXRhLmdhZFNvdXJjZT9hLmRhdGEuZ2NsaWQ/ITE6KFAoMTgxKSwhMCk6KFAoMTgwKSwhMCl9CmZ1bmN0aW9uIEtLKGEsYil7aWYoIWF8fE0oYSkpe2lmKG5tKGptLmJhLlZlKSlyZXR1cm4gUCgxNzYpLGptLmJhLlZlO2lmKG5tKGptLmJhLm1uKSlyZXR1cm4gUCgxNzApLGptLmJhLlZlO3ZhciBjPUZwKCk7aWYoIWMpUCgxNzEpO2Vsc2UgaWYoYy5vcGVuZXIpe3ZhciBkPWZ1bmN0aW9uKGcpe2lmKCFJSy5pbmNsdWRlcyhnLm9yaWdpbikpUCgxNzIpO2Vsc2UgaWYoIUpLKGcpKXt2YXIgaD17Z2FkU291cmNlOmcuZGF0YS5nYWRTb3VyY2V9O2guZ2NsaWQ9Zy5kYXRhLmdjbGlkO21tKGptLmJhLlZlLGgpO2ImJmcuZGF0YS5nY2xpZCYmbHMoImdjbF9hdyIsU3RyaW5nKGcuZGF0YS5nY2xpZCksNixiKTt2YXIgbDsobD1nLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbik9PW51bGx8fGwuY2FsbChnKTtudChjLCJtZXNzYWdlIixkKX19O2lmKG10KGMsIm1lc3NhZ2UiLGQpKXttbShqbS5iYS5tbiwhMCk7Zm9yKHZhciBlPW0oSUspLGY9ZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKWMub3BlbmVyLnBvc3RNZXNzYWdlKHthY3Rpb246ImdjbF9zZXR1cCJ9LApmLnZhbHVlKTtQKDE3NCk7cmV0dXJuIGptLmJhLlZlfVAoMTc1KX19fTtmdW5jdGlvbiBWSygpe3JldHVybiBNdCg3KSYmTXQoOSkmJk10KDEwKX07CnZhciBhTD1mdW5jdGlvbihhLGIpe2EmJigkSygic2lkIixhLnRhcmdldElkLGIpLCRLKCJjYyIsYS5jbGllbnRDb3VudCxiKSwkSygidGwiLGEudG90YWxMaWZlTXMsYiksJEsoImhjIixhLmhlYXJ0YmVhdENvdW50LGIpLCRLKCJjbCIsYS5jbGllbnRMaWZlTXMsYikpfSwkSz1mdW5jdGlvbihhLGIsYyl7YiE9bnVsbCYmYy5wdXNoKGErIj0iK2IpfSxiTD1mdW5jdGlvbigpe3ZhciBhPUIucmVmZXJyZXI7aWYoYSl7dmFyIGI7cmV0dXJuIExqKFJqKGEpLCJob3N0Iik9PT0oKGI9QS5sb2NhdGlvbik9PW51bGw/dm9pZCAwOmIuaG9zdCk/MToyfXJldHVybiAwfSxkTD1mdW5jdGlvbigpe3RoaXMuamE9Y0w7dGhpcy5OPTA7dGhpcy55YT1OZig1Nyw1KTt0aGlzLlI9TmYoNTgsNTApO3RoaXMuZmE9RGIoKTt0aGlzLkxhPSJodHRwczovLyIrRSgyMSkrIi9hPyJ9O2RMLnByb3RvdHlwZS5LPWZ1bmN0aW9uKGEsYixjLGQpewp2YXIgZT1iTCgpLGYsZz1bXTtmPUE9PT1BLnRvcCYmZSE9PTAmJmI/KGI9PW51bGw/dm9pZCAwOmIuY2xpZW50Q291bnQpPjE/ZT09PTI/MToyOmU9PT0yPzA6Mzo0O2EmJiRLKCJzaSIsYS5KZyxnKTskSygibSIsMCxnKTskSygiaXNzIixmLGcpOyRLKCJpZiIsYyxnKTthTChiLGcpO2QmJiRLKCJmbSIsZW5jb2RlVVJJQ29tcG9uZW50KGQuc3Vic3RyaW5nKDAsdGhpcy5SKSksZyk7dGhpcy5aKGcpO307ZEwucHJvdG90eXBlLkg9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1bXTskSygibSIsMSxmKTskSygicyIsYSxmKTskSygicG8iLGJMKCksZik7YiYmKCRLKCJzdCIsYi5zdGF0ZSxmKSwkSygic2kiLGIuSmcsZiksJEsoInNtIixiLlVnLGYpKTthTChjLGYpOyRLKCJjIixkLGYpO2UmJiRLKCJmbSIsZW5jb2RlVVJJQ29tcG9uZW50KGUuc3Vic3RyaW5nKDAsCnRoaXMuUikpLGYpO3RoaXMuWihmKTt9O2RMLnByb3RvdHlwZS5aPWZ1bmN0aW9uKGEpe2E9YT09PXZvaWQgMD9bXTphOyFmbi5OfHx0aGlzLk4+PXRoaXMueWF8fCgkSygicGlkIix0aGlzLmZhLGEpLCRLKCJiYyIsKyt0aGlzLk4sYSksYS51bnNoaWZ0KCJjdGlkPSIrRSg1KSsiJnQ9cyIpLHRoaXMuamEoIiIrdGhpcy5MYSthLmpvaW4oIiYiKSkpfTtmdW5jdGlvbiBlTChhKXtyZXR1cm4gYS5wZXJmb3JtYW5jZSYmYS5wZXJmb3JtYW5jZS5ub3coKXx8RGF0ZS5ub3coKX0KdmFyIGZMPWZ1bmN0aW9uKGEsYil7dmFyIGM9QSxkPU5mKDUzLDUwMCksZT1OZig1NCw1RTMpLGY9TmYoOCwyMCksZz1OZig1NSw1RTMpLGg7dmFyIGw9ZnVuY3Rpb24obixwLHEpe3E9cT09PXZvaWQgMD97cW86ZnVuY3Rpb24oKXt9LHNvOmZ1bmN0aW9uKCl7fSxwbzpmdW5jdGlvbigpe30sb25GYWlsdXJlOmZ1bmN0aW9uKCl7fX06cTt0aGlzLklqPW47dGhpcy5IPXA7dGhpcy5OPXE7dGhpcy5mYT10aGlzLmphPXRoaXMuaGVhcnRiZWF0Q291bnQ9dGhpcy5Eaj0wO3RoaXMuZmU9ITE7dGhpcy5LPXt9O3RoaXMuaWQ9U3RyaW5nKE1hdGguZmxvb3IoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIqTWF0aC5yYW5kb20oKSkpO3RoaXMuc3RhdGU9MDt0aGlzLkpnPWVMKHRoaXMuSCk7dGhpcy5VZz1lTCh0aGlzLkgpO3RoaXMuWj0xMH07bC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3RoaXMuUigxKTsKdGhpcy5MYSgpfTtsLnByb3RvdHlwZS5nZXRTdGF0ZT1mdW5jdGlvbigpe3JldHVybntzdGF0ZTp0aGlzLnN0YXRlLEpnOk1hdGgucm91bmQoZUwodGhpcy5IKS10aGlzLkpnKSxVZzpNYXRoLnJvdW5kKGVMKHRoaXMuSCktdGhpcy5VZyl9fTtsLnByb3RvdHlwZS5SPWZ1bmN0aW9uKG4pe3RoaXMuc3RhdGUhPT1uJiYodGhpcy5zdGF0ZT1uLHRoaXMuVWc9ZUwodGhpcy5IKSl9O2wucHJvdG90eXBlLnZnPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzLkRqKyspfTtsLnByb3RvdHlwZS5MYT1mdW5jdGlvbigpe3ZhciBuPXRoaXM7dGhpcy5oZWFydGJlYXRDb3VudCsrO3RoaXMueWEoe3R5cGU6MCxjbGllbnRJZDp0aGlzLmlkLHJlcXVlc3RJZDp0aGlzLnZnKCksbWF4RGVsYXk6dGhpcy5oZSgpfSxmdW5jdGlvbihwKXtpZihwLnR5cGU9PT0wKXt2YXIgcTtpZigoKHE9cC5mYWlsdXJlKT09bnVsbD92b2lkIDA6cS5mYWlsdXJlVHlwZSkhPW51bGwpaWYocC5zdGF0cyYmKG4uc3RhdHM9CnAuc3RhdHMpLG4uZmErKyxwLmlzRGVhZHx8bi5mYT5mKXt2YXIgcj1wLmlzRGVhZCYmcC5mYWlsdXJlLmZhaWx1cmVUeXBlO24uWj1yfHwxMDtuLlIoNCk7bi5BaigpO3ZhciB0LHU7KHU9KHQ9bi5OKS5wbyk9PW51bGx8fHUuY2FsbCh0LHtmYWlsdXJlVHlwZTpyfHwxMCxkYXRhOnAuZmFpbHVyZS5kYXRhfSl9ZWxzZSBuLlIoMyksbi5QaCgpO2Vsc2V7aWYobi5oZWFydGJlYXRDb3VudD5wLnN0YXRzLmhlYXJ0YmVhdENvdW50K2Ype24uaGVhcnRiZWF0Q291bnQ9cC5zdGF0cy5oZWFydGJlYXRDb3VudDt2YXIgdix4Oyh4PSh2PW4uTikub25GYWlsdXJlKT09bnVsbHx8eC5jYWxsKHYse2ZhaWx1cmVUeXBlOjEzfSl9bi5zdGF0cz1wLnN0YXRzO3ZhciB5PW4uc3RhdGU7bi5SKDIpO2lmKHkhPT0yKWlmKG4uZmUpe3ZhciB6LEM7KEM9KHo9bi5OKS5zbyk9PW51bGx8fEMuY2FsbCh6KX1lbHNle24uZmU9ITA7dmFyIEQsSTsoST0oRD1uLk4pLnFvKT09bnVsbHx8SS5jYWxsKEQpfW4uZmE9CjA7bi5OaigpO24uUGgoKX19fSl9O2wucHJvdG90eXBlLmhlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGU9PT0yP2U6ZH07bC5wcm90b3R5cGUuUGg9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3RoaXMuSC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bi5MYSgpfSxNYXRoLm1heCgwLHRoaXMuaGUoKS0oZUwodGhpcy5IKS10aGlzLmphKSkpfTtsLnByb3RvdHlwZS5rcj1mdW5jdGlvbihuLHAscSl7dmFyIHI9dGhpczt0aGlzLnlhKHt0eXBlOjEsY2xpZW50SWQ6dGhpcy5pZCxyZXF1ZXN0SWQ6dGhpcy52ZygpLGNvbW1hbmQ6bn0sZnVuY3Rpb24odCl7aWYodC50eXBlPT09MSlpZih0LnJlc3VsdClwKHQucmVzdWx0KTtlbHNle3ZhciB1LHYseCx5PXtmYWlsdXJlVHlwZTooeD0odT10LmZhaWx1cmUpPT1udWxsP3ZvaWQgMDp1LmZhaWx1cmVUeXBlKSE9bnVsbD94OjEyLGRhdGE6KHY9dC5mYWlsdXJlKT09bnVsbD92b2lkIDA6di5kYXRhfSx6LEM7KEM9KHo9ci5OKS5vbkZhaWx1cmUpPT0KbnVsbHx8Qy5jYWxsKHoseSk7cSh5KX19KX07bC5wcm90b3R5cGUueWE9ZnVuY3Rpb24obixwKXt2YXIgcT10aGlzO2lmKHRoaXMuc3RhdGU9PT00KW4uZmFpbHVyZT17ZmFpbHVyZVR5cGU6dGhpcy5afSxwKG4pO2Vsc2V7dmFyIHI9dGhpcy5zdGF0ZSE9PTImJm4udHlwZSE9PTAsdD1uLnJlcXVlc3RJZCx1LHY9dGhpcy5ILnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgeT1xLktbdF07eSYmKGltKDYpLHEua2QoeSw3KSl9LCh1PW4ubWF4RGVsYXkpIT1udWxsP3U6ZykseD17cmVxdWVzdDpuLEhvOnAsem86cixOczp2fTt0aGlzLktbdF09eDtyfHx0aGlzLnNlbmRSZXF1ZXN0KHgpfX07bC5wcm90b3R5cGUuc2VuZFJlcXVlc3Q9ZnVuY3Rpb24obil7dGhpcy5qYT1lTCh0aGlzLkgpO24uem89ITE7dGhpcy5JaihuLnJlcXVlc3QpfTtsLnByb3RvdHlwZS5Oaj1mdW5jdGlvbigpe2Zvcih2YXIgbj1tKE9iamVjdC5rZXlzKHRoaXMuSykpLHA9bi5uZXh0KCk7IXAuZG9uZTtwPW4ubmV4dCgpKXt2YXIgcT0KdGhpcy5LW3AudmFsdWVdO3Euem8mJnRoaXMuc2VuZFJlcXVlc3QocSl9fTtsLnByb3RvdHlwZS5Baj1mdW5jdGlvbigpe2Zvcih2YXIgbj1tKE9iamVjdC5rZXlzKHRoaXMuSykpLHA9bi5uZXh0KCk7IXAuZG9uZTtwPW4ubmV4dCgpKXRoaXMua2QodGhpcy5LW3AudmFsdWVdLHRoaXMuWil9O2wucHJvdG90eXBlLmtkPWZ1bmN0aW9uKG4scCl7dGhpcy5hYyhuKTt2YXIgcT1uLnJlcXVlc3Q7cS5mYWlsdXJlPXtmYWlsdXJlVHlwZTpwfTtuLkhvKHEpfTtsLnByb3RvdHlwZS5hYz1mdW5jdGlvbihuKXtkZWxldGUgdGhpcy5LW24ucmVxdWVzdC5yZXF1ZXN0SWRdO3RoaXMuSC5jbGVhclRpbWVvdXQobi5Ocyl9O2wucHJvdG90eXBlLmtzPWZ1bmN0aW9uKG4pe3RoaXMuamE9ZUwodGhpcy5IKTt2YXIgcD10aGlzLktbbi5yZXF1ZXN0SWRdO2lmKHApdGhpcy5hYyhwKSxwLkhvKG4pO2Vsc2V7dmFyIHEscjsocj0ocT10aGlzLk4pLm9uRmFpbHVyZSk9PW51bGx8fHIuY2FsbChxLHtmYWlsdXJlVHlwZToxNH0pfX07Cmg9bmV3IGwoYSxjLGIpO3JldHVybiBofTsKdmFyIGdMPWZ1bmN0aW9uKCl7cmV0dXJuIGFsKDE4LGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBkTH0pfSxjTD1mdW5jdGlvbihhKXtpbyhsbyhjby5pYS5aYiksZnVuY3Rpb24oKXtaYyhhKX0pfSxoTD1mdW5jdGlvbihhKXt2YXIgYj1hLnN1YnN0cmluZygwLGEuaW5kZXhPZigiL18vc2VydmljZV93b3JrZXIiKSk7cmV0dXJuIiYxcD0xIisoYj8iJnBhdGg9IitlbmNvZGVVUklDb21wb25lbnQoYik6IiIpfSxpTD1mdW5jdGlvbihhKXt2YXIgYj1BLmxvY2F0aW9uLm9yaWdpbjtpZighYilyZXR1cm4gbnVsbDsoTSg0MzIpP1dqKCk6V2ooKSYmIWEpJiYoYT0iIitiK1hqKCkrIi9fL3NlcnZpY2Vfd29ya2VyIik7dmFyIGM9YSxkLGU9TGYoMTEpO2U9TGYoMTApO2Q9ZTtjPyhjLmNoYXJBdChjLmxlbmd0aC0xKSE9PSIvIiYmCihjKz0iLyIpLGE9YytkKTphPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9zdGF0aWMvc2VydmljZV93b3JrZXIvIitkKyIvIjt2YXIgZjt0cnl7Zj1uZXcgVVJMKGEpfWNhdGNoKGcpe3JldHVybiBudWxsfXJldHVybiBmLnByb3RvY29sIT09Imh0dHBzOiI/bnVsbDpmfSxqTD1mdW5jdGlvbihhKXt2YXIgYj1ubShqbS5iYS5PaCk7cmV0dXJuIGImJmJbYV19LGtMPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7dGhpcy5LPWdMKCk7dGhpcy5aPXRoaXMuUj0hMTt0aGlzLmZhPW51bGw7dGhpcy5pbml0VGltZT1NYXRoLnJvdW5kKE5iKCkpO3RoaXMuSD0xNTt0aGlzLk49dGhpcy5GcihhKTtBLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLmluaXRpYWxpemUoKX0sMUUzKTtiZChmdW5jdGlvbigpe2IuenMoYSl9KX07az1rTC5wcm90b3R5cGU7ay5kZWxlZ2F0ZT1mdW5jdGlvbihhLGIsYyl7dGhpcy5nZXRTdGF0ZSgpIT09Mj8odGhpcy5LLkgodGhpcy5ILHtzdGF0ZTp0aGlzLmdldFN0YXRlKCksCkpnOnRoaXMuaW5pdFRpbWUsVWc6TWF0aC5yb3VuZChOYigpKS10aGlzLmluaXRUaW1lfSx2b2lkIDAsYS5jb21tYW5kVHlwZSksYyh7ZmFpbHVyZVR5cGU6dGhpcy5IfSkpOnRoaXMuTi5rcihhLGIsYyl9O2suZ2V0U3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5OLmdldFN0YXRlKCkuc3RhdGV9O2suenM9ZnVuY3Rpb24oYSl7dmFyIGI9QS5sb2NhdGlvbi5vcmlnaW4sYz10aGlzLGQ9WGMoKTt0cnl7dmFyIGU9ZC5jb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIiksZj1hLnBhdGhuYW1lLGc9ZltmLmxlbmd0aC0xXT09PSIvIj9hLnRvU3RyaW5nKCk6YS50b1N0cmluZygpKyIvIixoPWEub3JpZ2luIT09Imh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tIj9oTChmKToiIixsO00oMTMzKSYmKGw9e3NhbmRib3g6ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXNjcmlwdHMifSk7WGMoZysic3dfaWZyYW1lLmh0bWw/b3JpZ2luPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpKwpoLHZvaWQgMCxsLHZvaWQgMCxlKTt2YXIgbj1mdW5jdGlvbigpe2QuY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7ZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpe2MuZmE9ZS5jb250ZW50V2luZG93O2QuY29udGVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbihwKXtwLm9yaWdpbj09PWEub3JpZ2luJiZjLk4ua3MocC5kYXRhKX0pO2MuaW5pdGlhbGl6ZSgpfSl9O2QuY29udGVudERvY3VtZW50LnJlYWR5U3RhdGU9PT0iY29tcGxldGUiP24oKTpkLmNvbnRlbnRXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZnVuY3Rpb24oKXtuKCl9KX1jYXRjaChwKXtkLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoZCksdGhpcy5IPTExLHRoaXMuSy5LKHZvaWQgMCx2b2lkIDAsdGhpcy5ILHAudG9TdHJpbmcoKSl9fTtrLkZyPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz1mTChmdW5jdGlvbihkKXt2YXIgZTsoZT1iLmZhKT09Cm51bGx8fGUucG9zdE1lc3NhZ2UoZCxhLm9yaWdpbil9LHtxbzpmdW5jdGlvbigpe2IuUj0hMDtiLksuSyhjLmdldFN0YXRlKCksYy5zdGF0cyl9LHNvOmZ1bmN0aW9uKCl7fSxwbzpmdW5jdGlvbihkKXtiLlI/KGIuSD0oZD09bnVsbD92b2lkIDA6ZC5mYWlsdXJlVHlwZSl8fDEwLGIuSy5IKGIuSCxjLmdldFN0YXRlKCksYy5zdGF0cyx2b2lkIDAsZD09bnVsbD92b2lkIDA6ZC5kYXRhKSk6KGIuSD0oZD09bnVsbD92b2lkIDA6ZC5mYWlsdXJlVHlwZSl8fDQsYi5LLksoYy5nZXRTdGF0ZSgpLGMuc3RhdHMsYi5ILGQ9PW51bGw/dm9pZCAwOmQuZGF0YSkpfSxvbkZhaWx1cmU6ZnVuY3Rpb24oZCl7Yi5IPWQuZmFpbHVyZVR5cGU7Yi5LLkgoYi5ILGMuZ2V0U3RhdGUoKSxjLnN0YXRzLGQuY29tbWFuZCxkLmRhdGEpfX0pO3JldHVybiBjfTtrLmluaXRpYWxpemU9ZnVuY3Rpb24oKXt0aGlzLlp8fHRoaXMuTi5pbml0KCk7dGhpcy5aPSEwfTsKdmFyIGxMPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlO2lmKChlPWpMKGEpKT09bnVsbHx8IWUuZGVsZWdhdGUpe3ZhciBmPUljKCk/MTY6NjtnTCgpLkgoZix2b2lkIDAsdm9pZCAwLGIuY29tbWFuZFR5cGUpO2Qoe2ZhaWx1cmVUeXBlOmZ9KTtyZXR1cm59akwoYSkuZGVsZWdhdGUoYixjLGQpO307CmZ1bmN0aW9uIG1MKGEsYixjLGQpe3ZhciBlPWlMKGEpO2lmKGU9PT1udWxsKXtkKCJfaXNfc3c9ZiIrKEljKCk/MTY6NikrInRlIik7cmV0dXJufXZhciBmPWI/MTowLGc9TWF0aC5yb3VuZChOYigpKSxoLGw9KGg9akwoZS5vcmlnaW4pKT09bnVsbD92b2lkIDA6aC5pbml0VGltZSxuPWw/Zy1sOnZvaWQgMCxwO00oNDMyKT9wPVdqKCk/dm9pZCAwOkEubG9jYXRpb24uaHJlZjpwPUEubG9jYXRpb24uaHJlZjtsTChlLm9yaWdpbix7Y29tbWFuZFR5cGU6MCxwYXJhbXM6e3VybDphLG1ldGhvZDpmLHRlbXBsYXRlczpjLGJvZHk6Ynx8IiIscHJvY2Vzc1Jlc3BvbnNlOiEwLHNpbmNlSW5pdDpuLGF0dHJpYnV0aW9uUmVwb3J0aW5nOiEwLHJlZmVyZXI6cCxzdHJpY3Q6TSg1ODQpfX0sZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKHEpe3ZhciByPSJfaXNfc3c9ZiIrcS5mYWlsdXJlVHlwZSx0LHU9KHQ9akwoZS5vcmlnaW4pKT09Cm51bGw/dm9pZCAwOnQuZ2V0U3RhdGUoKTt1IT09dm9pZCAwJiYocis9InMiK3UpO2Qobj9yKygidCIrbik6cisidGUiKX0pO307ZnVuY3Rpb24gbkwoYSl7aWYoSWYoNDcpJiZkSShhLCJjY2RfYWRkXzFwX2RhdGEiLCExKSYmV2ooKSl7dmFyIGI9YS5NO2lmKEljKCkmJmJnKCJpbnRlcm5hbF9zd19hbGxvd2VkIiwiIikpe3ZhciBjPWVrKGIpLGQ9V2ooKT9YaigpOnZvaWQgMCxlO2U9ZD97cGF0aDpkLGVvOiJmdWxsIn06Yz97cGF0aDpjLGVvOiJsaXRlIn06dm9pZCAwO2lmKGUpe3ZhciBmPWUuZW8sZz1uZXcgVVJMKGUucGF0aCxBLmxvY2F0aW9uLm9yaWdpbik7aWYoZy5vcmlnaW49PT1BLmxvY2F0aW9uLm9yaWdpbiYmcHkoZik9PT12b2lkIDApe3ZhciBoPW9tKGptLmJhLk9oLHt9KTtoW2ZdfHwoaFtmXT1uZXcgbnkoZykpfX19fX07ZnVuY3Rpb24gc0woKXt2YXIgYTthPWE9PT12b2lkIDA/ZG9jdW1lbnQ6YTt2YXIgYjtyZXR1cm4hKChiPWEuZmVhdHVyZVBvbGljeSk9PW51bGx8fCFiLmFsbG93ZWRGZWF0dXJlcygpLmluY2x1ZGVzKCJhdHRyaWJ1dGlvbi1yZXBvcnRpbmciKSl9O2Z1bmN0aW9uIHdMKGEsYixjLGQpe2Q9ZD09PXZvaWQgMD8hMTpkO3ZhciBlPUZwKCksZj1EcChlKTtpZihmLnVybClpZihkKXt2YXIgZz1jKGYudXJsKTtiIT09ZyYmVShhLEYuRC5QZSxnKX1lbHNle3ZhciBoPWYudXJsO2IhPT1oJiZVKGEsRi5ELlBlLGMoaCkpfX07ZnVuY3Rpb24gQUwoYSl7VihhLEguSi5KYSwhMCk7VihhLEguSi5FYixOYigpKTtWKGEsSC5KLnluLGEuTS5ldmVudE1ldGFkYXRhW0guSi5KYV0pfTt2YXIgVEw9bmV3IGZ1bmN0aW9uKCl7dGhpcy5IPXt9fTtmdW5jdGlvbiBXTChhKXt2YXIgYj1LQighMSk7aWYoYiE9bnVsbCYmYi5zdGF0dXMpe3ZhciBjPXtndGI6Yi5zdGF0dXN9O2IuZGVsYXkmJihjLmd0YmQ9Yi5kZWxheSk7YS5tZXJnZUhpdERhdGFGb3JLZXkoRi5ELlRhLGMpfX07dmFyIFlMPXtSYTp7Q2s6MSx6bjoyLEhuOjMsSW46NCxKbjo1LHduOjZ9fTtZTC5SYVtZTC5SYS5Da109IkFET0JFX0NPTU1FUkNFIjtZTC5SYVtZTC5SYS56bl09IlNRVUFSRVNQQUNFIjtZTC5SYVtZTC5SYS5Ibl09IldPT19DT01NRVJDRSI7WUwuUmFbWUwuUmEuSW5dPSJXT09fQ09NTUVSQ0VfTEVHQUNZIjtZTC5SYVtZTC5SYS5Kbl09IldPUkRfUFJFU1MiO1lMLlJhW1lMLlJhLnduXT0iU0hPUElGWSI7ZnVuY3Rpb24gWkwoYSl7dmFyIGI9QTtyZXR1cm4gS2ooYi5lc2NhcGUoYi5hdG9iKGEpKSl9CmZ1bmN0aW9uICRMKCl7dHJ5e2lmKCFNKDQ5OCkmJiFNKDQyNSkpcmV0dXJuW107dmFyIGE9bm0oam0uYmEubG4pO2lmKEFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIGE7dmFyIGI9W10sYzthOnt0cnl7Yz0hIUIucXVlcnlTZWxlY3Rvcignc2NyaXB0W2RhdGEtcmVxdWlyZW1vZHVsZV49Im1hZ2UvIl0nKTticmVhayBhfWNhdGNoKHkpe31jPSExfWMmJmIucHVzaChZTC5SYS5Dayk7dmFyIGQ7YTp7dHJ5e3ZhciBlPVpMKCJZWE56WlhSekxuTnhkV0Z5WlhOd1lXTmxMbU52YlM4PSIpO2Q9ZT8hIUIucXVlcnlTZWxlY3Rvcignc2NyaXB0W3NyY149Ii8vJytlKyciXScpOiExO2JyZWFrIGF9Y2F0Y2goeSl7fWQ9ITF9ZCYmYi5wdXNoKFlMLlJhLnpuKTt2YXIgZjthOntpZihNKDQyNSkpdHJ5e3ZhciBnPVpMKCJjMmh2Y0dsbWVTNWpiMjA9IiksaD1aTCgiYzJodmNHbG1lV05rYmk1amIyMD0iKTtmPWcmJmg/ISFCLnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtzcmMqPSJjZG4uJytnKyciXSxtZXRhW3Byb3BlcnR5PSJvZzppbWFnZSJdW2NvbnRlbnQqPSJjZG4uJysKKGcrJyJdLGxpbmtbcmVsPSJwcmVjb25uZWN0Il1baHJlZio9ImNkbi4nKSsoZysnIl0sbGlua1tyZWw9InByZWNvbm5lY3QiXVtocmVmKj0iZm9udHMuJykrKGgrJyJdLGxpbmtbcmVsPSJwcmVjb25uZWN0Il1baHJlZio9Iml0ZXJhYmxlLXNob3BpZnkiXSxsaW5rW3JlbD0icHJlY29ubmVjdCJdW2hyZWYqPSJ2LicpKyhnKyciXScpKTohMTticmVhayBhfWNhdGNoKHkpe31mPSExfWYmJmIucHVzaChZTC5SYS53bik7dmFyIGw7YTp7dHJ5e2w9ISFCLnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtzcmMqPSJ3b29jb21tZXJjZSJdLGxpbmtbaHJlZio9Indvb2NvbW1lcmNlIl0sW2NsYXNzfD0id29vY29tbWVyY2UiXScpO2JyZWFrIGF9Y2F0Y2goeSl7fWw9ITF9bCYmYi5wdXNoKFlMLlJhLkluKTt2YXIgbjthOnt0cnl7dmFyIHAscT0oKHA9Qi5sb2NhdGlvbik9PW51bGw/dm9pZCAwOnAuaG9zdG5hbWUpfHwiIixyLHQ9KChyPUIubG9jYXRpb24pPT1udWxsP3ZvaWQgMDpyLm9yaWdpbil8fAoiIix1PVpMKCJMbmR2Y21Sd2NtVnpjeTVqYjIwPSIpLHY9WkwoIkx5OXpMbmN1YjNKbiIpO249dSYmdj9UYihxLHUpfHwhIUIucXVlcnlTZWxlY3RvcignW3NyY149IicrdCsnL3dwLWNvbnRlbnQiXSxtZXRhW25hbWU9ImdlbmVyYXRvciJdW2NvbnRlbnRePSJXb3JkUHJlc3MgIl0sbGlua1tyZWw9ImRucy1wcmVmZXRjaCJdW2hyZWY9IicrKHYrJyJdJykpOiExO2JyZWFrIGF9Y2F0Y2goeSl7fW49ITF9biYmYi5wdXNoKFlMLlJhLkpuKTt2YXIgeDthOnt0cnl7eD0hIUIucXVlcnlTZWxlY3RvcignW2NsYXNzKj0id29vY29tbWVyY2UiXSxtZXRhW25hbWU9ImdlbmVyYXRvciJdW2NvbnRlbnRePSJXb29Db21tZXJjZSAiXScpO2JyZWFrIGF9Y2F0Y2goeSl7fXg9ITF9eCYmYi5wdXNoKFlMLlJhLkhuKTtVQigpJiZtbShqbS5iYS5sbixiKTtyZXR1cm4gYn1jYXRjaCh5KXt9cmV0dXJuW119O2Z1bmN0aW9uIHdNKGEpe2lmKE0oNDI1KSYmUShhLEguSi5GYykpe3ZhciBiPU5mKDY3LDE1MDApLGM9YS5tZXJnZUhpdERhdGFGb3JLZXksZD1GLkQuVGEsZT17fTtjLmNhbGwoYSxkLGUpfX07dmFyIHhNPSJwbGF0Zm9ybSBwbGF0Zm9ybVZlcnNpb24gYXJjaGl0ZWN0dXJlIG1vZGVsIHVhRnVsbFZlcnNpb24gYml0bmVzcyBmdWxsVmVyc2lvbkxpc3Qgd293NjQiLnNwbGl0KCIgIik7ZnVuY3Rpb24geU0oYSl7dmFyIGI7cmV0dXJuKGI9YS5nb29nbGVfdGFnX2RhdGEpIT1udWxsP2I6YS5nb29nbGVfdGFnX2RhdGE9e319ZnVuY3Rpb24gek0oYSl7dmFyIGIsYztyZXR1cm4oYz0oYj1hLmdvb2dsZV90YWdfZGF0YSk9PW51bGw/dm9pZCAwOmIudWFjaF9wcm9taXNlKSE9bnVsbD9jOm51bGx9ZnVuY3Rpb24gQU0oYSl7dmFyIGIsYztyZXR1cm4gdHlwZW9mKChiPWEubmF2aWdhdG9yKT09bnVsbD92b2lkIDA6KGM9Yi51c2VyQWdlbnREYXRhKT09bnVsbD92b2lkIDA6Yy5nZXRIaWdoRW50cm9weVZhbHVlcyk9PT0iZnVuY3Rpb24ifQpmdW5jdGlvbiBCTShhKXtpZighQU0oYSkpcmV0dXJuIG51bGw7dmFyIGI9eU0oYSk7aWYoYi51YWNoX3Byb21pc2UpcmV0dXJuIGIudWFjaF9wcm9taXNlO3ZhciBjPWEubmF2aWdhdG9yLnVzZXJBZ2VudERhdGEuZ2V0SGlnaEVudHJvcHlWYWx1ZXMoeE0pLnRoZW4oZnVuY3Rpb24oZCl7Yi51YWNoIT1udWxsfHwoYi51YWNoPWQpO3JldHVybiBkfSk7cmV0dXJuIGIudWFjaF9wcm9taXNlPWN9Owp2YXIgQ009ZnVuY3Rpb24oKXt0aGlzLndpbmRvdz1BO3RoaXMuTj1OYn07Q00ucHJvdG90eXBlLlI9ZnVuY3Rpb24oKXtpZihBTSh0aGlzLndpbmRvdykmJih0aGlzLlo9dGhpcy5OKCksIXpNKHRoaXMud2luZG93KSkpe3ZhciBhPUJNKHRoaXMud2luZG93KTthJiZhLnRoZW4oZnVuY3Rpb24oKXtQKDk1KX0pLmNhdGNoKGZ1bmN0aW9uKCl7UCg5Nil9KX19O0NNLnByb3RvdHlwZS5IPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy53aW5kb3cuZ29vZ2xlX3RhZ19kYXRhLGI7aWYoYSE9bnVsbCYmYS51YWNoKXt2YXIgYz1hLnVhY2gsZD1uYShPYmplY3QsImFzc2lnbiIpLmNhbGwoT2JqZWN0LHt9LGMpO2MuZnVsbFZlcnNpb25MaXN0JiYoZC5mdWxsVmVyc2lvbkxpc3Q9Yy5mdWxsVmVyc2lvbkxpc3Quc2xpY2UoMCkpO2I9ZH1lbHNlIGI9bnVsbDtyZXR1cm4gYn07Q00ucHJvdG90eXBlLmZhPWZ1bmN0aW9uKGEpe3ZhciBiPTAsYz10aGlzLGQ9ZnVuY3Rpb24oaCxsKXt0cnl7YShoLGwpfWNhdGNoKG4pe319LAplPXRoaXMuSCgpO2lmKGUpZChlKTtlbHNle3ZhciBmPXpNKHRoaXMud2luZG93KTtpZihmKXtiPU1hdGgubWluKE1hdGgubWF4KGlzRmluaXRlKGIpP2I6MCwwKSwxRTMpO3ZhciBnPXRoaXMud2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtkLktnfHwoZC5LZz0hMCxQKDEwNiksZChudWxsLEVycm9yKCJUaW1lb3V0IikpKX0sYik7Zi50aGVuKGZ1bmN0aW9uKGgpe2QuS2d8fChkLktnPSEwLFAoMTA0KSxjLndpbmRvdy5jbGVhclRpbWVvdXQoZyksZChoKSl9KS5jYXRjaChmdW5jdGlvbihoKXtkLktnfHwoZC5LZz0hMCxQKDEwNSksYy53aW5kb3cuY2xlYXJUaW1lb3V0KGcpLGQobnVsbCxoKSl9KX1lbHNlIGQobnVsbCl9fTtDTS5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlohPT12b2lkIDB9O3ZhciBETT1mdW5jdGlvbigpe3ZhciBhO2E9YT09PXZvaWQgMD9BOmE7cmV0dXJuIEFNKGEpfSxFTT1mdW5jdGlvbihhKXt2YXIgYj17fTtiW0YuRC5jZ109YS5hcmNoaXRlY3R1cmU7CmJbRi5ELmRnXT1hLmJpdG5lc3M7YS5mdWxsVmVyc2lvbkxpc3QmJihiW0YuRC5lZ109YS5mdWxsVmVyc2lvbkxpc3QubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoYy5icmFuZHx8IiIpKyI7IitlbmNvZGVVUklDb21wb25lbnQoYy52ZXJzaW9ufHwiIil9KS5qb2luKCJ8IikpO2JbRi5ELmZnXT1hLm1vYmlsZT8iMSI6IjAiO2JbRi5ELmdnXT1hLm1vZGVsO2JbRi5ELmhnXT1hLnBsYXRmb3JtO2JbRi5ELmlnXT1hLnBsYXRmb3JtVmVyc2lvbjtiW0YuRC5qZ109YS53b3c2ND8iMSI6IjAiO3JldHVybiBifSxGTT1uZXcgQ007ZnVuY3Rpb24gSE0oYSxiKXtiPWI9PT12b2lkIDA/ITE6Yjt2YXIgYz1RKGEsSC5KLnNnKSxkPWRJKGEsImN1c3RvbV9ldmVudF9hY2NlcHRfcnVsZXMiLCExKSYmIWI7aWYoYyl7dmFyIGU9Yy5pbmRleE9mKGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQpPj0wLGY9ITA7UShhLEguSi5DYykmJihmPVEoYSxILkouTmIpPT09dmsoKSk7ZSYmZj9WKGEsSC5KLmtpLCEwKTooVihhLEguSi5raSwhMSksZHx8KGEuaXNBYm9ydGVkPSEwKSk7aWYoYS5jYW5CZUFjY2VwdGVkKCkpe3ZhciBnPXVrKCkuaW5kZXhPZihhLnRhcmdldC5kZXN0aW5hdGlvbklkKT49MCxoPSExO2lmKCFnKXt2YXIgbCxuPShsPW5rKGEudGFyZ2V0LmRlc3RpbmF0aW9uSWQpKT09bnVsbD92b2lkIDA6bC5jYW5vbmljYWxDb250YWluZXJJZDtuJiYoaD12aygpPT09bil9Z3x8aD9RKGEsSC5KLmtpKSYmYS5hY2NlcHQoKTphLmlzQWJvcnRlZD0hMH1lbHNlIGEuaXNBYm9ydGVkPSEwfX07ZnVuY3Rpb24gUU0oKXtyZXR1cm4ga2ooImRlZHVwZV9nY2xpZCIsZnVuY3Rpb24oKXtyZXR1cm4gQXYoKX0pfTt2YXIgUk09L14od3d3XC4pP2dvb2dsZShcLmNvbT8pPyhcLlthLXpdezJ9dD8pPyQvLFNNPS9ed3d3Lmdvb2dsZWFkc2VydmljZXMuY29tJC87ZnVuY3Rpb24gVE0oYSl7YXx8KGE9VU0oKSk7cmV0dXJuIGEuTnQ/ITE6YS5uc3x8YS5xc3x8YS52c3x8YS5yc3x8YS5EZ3x8YS5UaHx8YS5Ucnx8YS5WaD09PSJhdy5kcyJ8fE0oMjM1KSYmYS5WaD09PSJhdy5kdiJ8fGEuWXI/ITA6ITF9CmZ1bmN0aW9uIFVNKCl7dmFyIGE9e30sYj1VcSghMCk7YS5OdD0hIWIuX3VwO3ZhciBjPWVzKCksZD1hdCgpO2EubnM9Yy5hdyE9PXZvaWQgMDthLnFzPWMuZGMhPT12b2lkIDA7YS52cz1jLndicmFpZCE9PXZvaWQgMDthLnJzPWMuZ2JyYWlkIT09dm9pZCAwO2EuVmg9dHlwZW9mIGMuZ2Nsc3JjPT09InN0cmluZyI/Yy5nY2xzcmM6dm9pZCAwO2EuRGc9ZC5EZzthLlRoPWQuVGg7dmFyIGU9Qi5yZWZlcnJlcj9MaihSaihCLnJlZmVycmVyKSwiaG9zdCIpOiIiO2EuWXI9Uk0udGVzdChlKTthLlRyPVNNLnRlc3QoZSk7cmV0dXJuIGF9O2Z1bmN0aW9uIFZNKCl7dmFyIGE9QS5fX3VzcGFwaTtpZih5YihhKSl7dmFyIGI9IiI7dHJ5e2EoImdldFVTUERhdGEiLDEsZnVuY3Rpb24oYyxkKXtpZihkJiZjKXt2YXIgZT1jLnVzcFN0cmluZztlJiZSZWdFeHAoIl5bXFxkYS16QS1aLV17MSwyMH0kIikudGVzdChlKSYmKGI9ZSl9fSl9Y2F0Y2goYyl7fXJldHVybiBifX07ZnVuY3Rpb24gWk0oYSl7aWYoZm4uSylpZih3by5IPSEwLGEuZXZlbnROYW1lPT09Ri5ELndhKXpvKGEuTSxhLnRhcmdldC5pZCk7ZWxzZXtRKGEsSC5KLlBjKXx8KHdvLktbYS50YXJnZXQuaWRdPSEwKTt2YXIgYj1RKGEsSC5KLk5iKTtaQihiKX19O2Z1bmN0aW9uIGJOKGEsYil7cmV0dXJuIGtyKCJnc2lkX2RjIix7dmFsdWU6e2pvaW5JZDphLGxhc3RKb2luZWRUaW1lTXM6Yn0sZXhwaXJlczpiKzNFNX0pPT09MD8hMDohMX07dmFyIGVOPXt6cTp7VXQ6ImNkIixmcDoiY2UiLFZ0OiJjZiIsV3Q6ImNwZiIsWHQ6ImN1In19O2Z1bmN0aW9uIGdOKGEsYil7Yj1iPT09dm9pZCAwPyEwOmI7dmFyIGM9d2IocmIuR1RBR19FVkVOVF9GRUFUVVJFX0NIQU5ORUx8fFtdKTtjJiYoVShhLEYuRC5WZixjKSxiJiZ1YigpKX07ZnVuY3Rpb24gRk8oYSxiLGMsZCl7fUZPLlA9ImludGVybmFsLmV4ZWN1dGVFdmVudFByb2Nlc3NvciI7ZnVuY3Rpb24gR08oYSl7dmFyIGI7cmV0dXJuIFVkKGIsdGhpcy5ULDEpfUdPLlA9ImludGVybmFsLmV4ZWN1dGVKYXZhc2NyaXB0U3RyaW5nIjtmdW5jdGlvbiBITyhhKXt2YXIgYjtyZXR1cm4gYn07ZnVuY3Rpb24gSU8oYSl7dmFyIGI9IiI7cmV0dXJuIGJ9SU8uUD0iaW50ZXJuYWwuZ2VuZXJhdGVDbGllbnRJZCI7ZnVuY3Rpb24gSk8oYSl7dmFyIGI9e307cmV0dXJuIFVkKGIpfUpPLlA9ImludGVybmFsLmdldEFkc0Nvb2tpZVdyaXRpbmdPcHRpb25zIjtmdW5jdGlvbiBLTyhhLGIpe3ZhciBjPSExO3JldHVybiBjfUtPLlA9ImludGVybmFsLmdldEFsbG93QWRQZXJzb25hbGl6YXRpb24iO2Z1bmN0aW9uIExPKCl7dmFyIGE7cmV0dXJuIGF9TE8uUD0iaW50ZXJuYWwuZ2V0QW5kUmVzZXRFdmVudFVzYWdlIjtmdW5jdGlvbiBNTyhhLGIpe2I9Yj09PXZvaWQgMD8hMDpiO3ZhciBjO3JldHVybiBjfU1PLlA9ImludGVybmFsLmdldEF1aWQiO2Z1bmN0aW9uIE5PKCl7dmFyIGE9W107cmV0dXJuIFVkKGEpfU5PLlA9ImludGVybmFsLmdldENvbnRhaW5lcklkcyI7ZnVuY3Rpb24gT08oKXt2YXIgYT1uZXcga2I7cmV0dXJuIGF9T08ucHVibGljTmFtZT0iZ2V0Q29udGFpbmVyVmVyc2lvbiI7ZnVuY3Rpb24gUE8oYSxiKXtiPWI9PT12b2lkIDA/ITA6Yjt2YXIgYztyZXR1cm4gY31QTy5wdWJsaWNOYW1lPSJnZXRDb29raWVWYWx1ZXMiO2Z1bmN0aW9uIFFPKCl7dmFyIGE9IiI7cmV0dXJuIGF9UU8uUD0iaW50ZXJuYWwuZ2V0Q29yZVBsYXRmb3JtU2VydmljZXNQYXJhbSI7ZnVuY3Rpb24gUk8oKXtyZXR1cm4geW0oKX1STy5QPSJpbnRlcm5hbC5nZXRDb3VudHJ5Q29kZSI7ZnVuY3Rpb24gU08oKXt2YXIgYT1bXTthPXRrKCk7cmV0dXJuIFVkKGEpfVNPLlA9ImludGVybmFsLmdldERlc3RpbmF0aW9uSWRzIjtmdW5jdGlvbiBUTyhhKXt2YXIgYj1uZXcga2I7cmV0dXJuIGJ9VE8uUD0iaW50ZXJuYWwuZ2V0RGV2ZWxvcGVySWRzIjtmdW5jdGlvbiBVTyhhKXt2YXIgYjtyZXR1cm4gYn1VTy5QPSJpbnRlcm5hbC5nZXRFY3NpZENvb2tpZVZhbHVlIjtmdW5jdGlvbiBWTyhhLGIpe3ZhciBjPW51bGw7aWYoIWtoKGEpfHwhbGgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9wYXF1ZVZhbHVlIiwic3RyaW5nIl0sYXJndW1lbnRzKTt2YXIgZD1hLmdldFZhbHVlKCk7aWYoIShkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKXRocm93IEVycm9yKCJnZXRFbGVtZW50QXR0cmlidXRlIHJlcXVpcmVzIGFuIEhUTUwgRWxlbWVudC4iKTtMKHRoaXMsImdldF9lbGVtZW50X2F0dHJpYnV0ZXMiLGQsYik7Yz1lZChkLGIpO3JldHVybiBjfVZPLlA9ImludGVybmFsLmdldEVsZW1lbnRBdHRyaWJ1dGUiO2Z1bmN0aW9uIFdPKGEpe3ZhciBiPW51bGw7cmV0dXJuIGJ9V08uUD0iaW50ZXJuYWwuZ2V0RWxlbWVudEJ5SWQiO2Z1bmN0aW9uIFhPKGEpe3ZhciBiPSIiO2lmKCFraChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT3BhcXVlVmFsdWUiXSxhcmd1bWVudHMpO3ZhciBjPWEuZ2V0VmFsdWUoKTtpZighKGMgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpdGhyb3cgRXJyb3IoImdldEVsZW1lbnRJbm5lclRleHQgcmVxdWlyZXMgYW4gSFRNTCBFbGVtZW50LiIpO0wodGhpcywicmVhZF9kb21fZWxlbWVudF90ZXh0IixjKTtiPWZkKGMpO3JldHVybiBifVhPLlA9ImludGVybmFsLmdldEVsZW1lbnRJbm5lclRleHQiO2Z1bmN0aW9uIFlPKGEpe3ZhciBiPW51bGw7cmV0dXJuIGJ9WU8uUD0iaW50ZXJuYWwuZ2V0RWxlbWVudFBhcmVudCI7ZnVuY3Rpb24gWk8oYSl7dmFyIGI9bnVsbDtyZXR1cm4gYn1aTy5QPSJpbnRlcm5hbC5nZXRFbGVtZW50UHJldmlvdXNTaWJsaW5nIjtmdW5jdGlvbiAkTyhhLGIpe3ZhciBjPW51bGw7aWYoIWtoKGEpfHwhbGgoYikpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9wYXF1ZVZhbHVlIiwic3RyaW5nIl0sYXJndW1lbnRzKTt2YXIgZD1hLmdldFZhbHVlKCk7aWYoIShkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKXRocm93IEVycm9yKCJnZXRFbGVtZW50UHJvcGVydHkgcmVxdWlyZXMgYW4gSFRNTCBlbGVtZW50LiIpO0wodGhpcywiYWNjZXNzX2RvbV9lbGVtZW50X3Byb3BlcnRpZXMiLGQsInJlYWQiLGIpO2M9ZFtiXTtyZXR1cm4gVWQoYyl9JE8uUD0iaW50ZXJuYWwuZ2V0RWxlbWVudFByb3BlcnR5IjtmdW5jdGlvbiBhUChhKXt2YXIgYjtpZigha2goYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbIk9wYXF1ZVZhbHVlIl0sYXJndW1lbnRzKTt2YXIgYz1hLmdldFZhbHVlKCk7aWYoIShjIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKXRocm93IEVycm9yKCJnZXRFbGVtZW50VmFsdWUgcmVxdWlyZXMgYW4gSFRNTCBFbGVtZW50LiIpO0wodGhpcywiYWNjZXNzX2VsZW1lbnRfdmFsdWVzIixjLCJyZWFkIik7Yj1jIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudD9jLnZhbHVlOmVkKGMsInZhbHVlIil8fCIiO3JldHVybiBifWFQLlA9ImludGVybmFsLmdldEVsZW1lbnRWYWx1ZSI7ZnVuY3Rpb24gYlAoYSl7dmFyIGI9MDtyZXR1cm4gYn1iUC5QPSJpbnRlcm5hbC5nZXRFbGVtZW50VmlzaWJpbGl0eVJhdGlvIjtmdW5jdGlvbiBjUChhKXt2YXIgYj1udWxsO3JldHVybiBifWNQLlA9ImludGVybmFsLmdldEVsZW1lbnRzQnlDc3NTZWxlY3RvciI7CmZ1bmN0aW9uIGRQKGEpe3ZhciBiO2lmKCFsaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nIl0sYXJndW1lbnRzKTtMKHRoaXMsInJlYWRfZXZlbnRfZGF0YSIsYSk7dmFyIGM7YTp7dmFyIGQ9YSxlPVhGKHRoaXMpLm9yaWdpbmFsRXZlbnREYXRhO2lmKGUpe2Zvcih2YXIgZj1lLGc9e30saD17fSxsPXt9LG49W10scD1kLnNwbGl0KCJcXFxcIikscT0wO3E8cC5sZW5ndGg7cSsrKXtmb3IodmFyIHI9cFtxXS5zcGxpdCgiXFwuIiksdD0wO3Q8ci5sZW5ndGg7dCsrKXtmb3IodmFyIHU9clt0XS5zcGxpdCgiLiIpLHY9MDt2PHUubGVuZ3RoO3YrKyluLnB1c2godVt2XSksdiE9PXUubGVuZ3RoLTEmJm4ucHVzaChsKTt0IT09ci5sZW5ndGgtMSYmbi5wdXNoKGgpfXEhPT1wLmxlbmd0aC0xJiZuLnB1c2goZyl9Zm9yKHZhciB4PVtdLHk9IiIsej1tKG4pLEM9ei5uZXh0KCk7IUMuZG9uZTtDPQp6Lm5leHQoKSl7dmFyIEQ9Qy52YWx1ZTtEPT09bD8oeC5wdXNoKHkpLHk9IiIpOnk9RD09PWc/eSsiXFwiOkQ9PT1oP3krIi4iOnkrRH15JiZ4LnB1c2goeSk7Zm9yKHZhciBJPW0oeCksRz1JLm5leHQoKTshRy5kb25lO0c9SS5uZXh0KCkpe2lmKGY9PW51bGwpe2M9dm9pZCAwO2JyZWFrIGF9Zj1mW0cudmFsdWVdfWM9Zn1lbHNlIGM9dm9pZCAwfWI9VWQoYyx0aGlzLlQsMSk7cmV0dXJuIGJ9ZFAuUD0iaW50ZXJuYWwuZ2V0RXZlbnREYXRhIjtmdW5jdGlvbiBlUChhKXt2YXIgYj1udWxsO3JldHVybiBifWVQLlA9ImludGVybmFsLmdldEZpcnN0RWxlbWVudEJ5Q3NzU2VsZWN0b3IiO2Z1bmN0aW9uIGZQKCl7dmFyIGE7cmV0dXJuIGF9ZlAuUD0iaW50ZXJuYWwuZ2V0R3NhRXhwZXJpbWVudElkIjtmdW5jdGlvbiBnUCgpe3JldHVybiBuZXcgUGQoUGspfWdQLlA9ImludGVybmFsLmdldEh0bWxJZCI7ZnVuY3Rpb24gaFAoKXt2YXIgYTtyZXR1cm4gYX1oUC5QPSJpbnRlcm5hbC5nZXRJZnJhbWluZ1N0YXRlIjtmdW5jdGlvbiBpUChhLGIpe3ZhciBjPXt9O3JldHVybiBVZChjKX1pUC5QPSJpbnRlcm5hbC5nZXRMaW5rZXJWYWx1ZUZyb21Mb2NhdGlvbiI7ZnVuY3Rpb24galAoKXt2YXIgYT1uZXcga2I7cmV0dXJuIGF9alAuUD0iaW50ZXJuYWwuZ2V0UHJpdmFjeVN0cmluZ3MiO2Z1bmN0aW9uIGtQKGEsYil7dmFyIGM7cmV0dXJuIGN9a1AuUD0iaW50ZXJuYWwuZ2V0UHJvZHVjdFNldHRpbmdzUGFyYW1ldGVyIjtmdW5jdGlvbiBsUChhLGIpe3ZhciBjO3JldHVybiBjfWxQLnB1YmxpY05hbWU9ImdldFF1ZXJ5UGFyYW1ldGVycyI7ZnVuY3Rpb24gbVAoYSxiKXt2YXIgYztyZXR1cm4gY31tUC5wdWJsaWNOYW1lPSJnZXRSZWZlcnJlclF1ZXJ5UGFyYW1ldGVycyI7ZnVuY3Rpb24gblAoYSl7dmFyIGI9IiI7cmV0dXJuIGJ9blAucHVibGljTmFtZT0iZ2V0UmVmZXJyZXJVcmwiO2Z1bmN0aW9uIG9QKCl7cmV0dXJuIHptKCl9b1AuUD0iaW50ZXJuYWwuZ2V0UmVnaW9uQ29kZSI7ZnVuY3Rpb24gcFAoYSxiKXt2YXIgYztyZXR1cm4gY31wUC5QPSJpbnRlcm5hbC5nZXRSZW1vdGVDb25maWdQYXJhbWV0ZXIiO2Z1bmN0aW9uIHFQKGEsYil7dmFyIGM9bnVsbDsKcmV0dXJuIGN9cVAuUD0iaW50ZXJuYWwuZ2V0U2NvcGVkRWxlbWVudHNCeUNzc1NlbGVjdG9yIjtmdW5jdGlvbiByUCgpe3ZhciBhPW5ldyBrYjthLnNldCgid2lkdGgiLDApO2Euc2V0KCJoZWlnaHQiLDApO3JldHVybiBhfXJQLlA9ImludGVybmFsLmdldFNjcmVlbkRpbWVuc2lvbnMiO2Z1bmN0aW9uIHNQKCl7dmFyIGE9IiI7cmV0dXJuIGF9c1AuUD0iaW50ZXJuYWwuZ2V0VG9wU2FtZURvbWFpblVybCI7ZnVuY3Rpb24gdFAoKXt2YXIgYT0iIjtyZXR1cm4gYX10UC5QPSJpbnRlcm5hbC5nZXRUb3BXaW5kb3dVcmwiO2Z1bmN0aW9uIHVQKGEpe3ZhciBiPSIiO2lmKCFtaChhKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsic3RyaW5nfHVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7TCh0aGlzLCJnZXRfdXJsIixhKTtiPUxqKFJqKEEubG9jYXRpb24uaHJlZiksYSk7cmV0dXJuIGJ9dVAucHVibGljTmFtZT0iZ2V0VXJsIjtmdW5jdGlvbiB2UCgpe0wodGhpcywiZ2V0X3VzZXJfYWdlbnQiKTtyZXR1cm4gSGMudXNlckFnZW50fXZQLnB1YmxpY05hbWU9ImdldFVzZXJBZ2VudCI7dlAuUD0iaW50ZXJuYWwuZ2V0VXNlckFnZW50IjtmdW5jdGlvbiB3UCgpe3ZhciBhO3JldHVybiBhP1VkKEVNKGEpKTphfXdQLlA9ImludGVybmFsLmdldFVzZXJBZ2VudENsaWVudEhpbnRzIjtmdW5jdGlvbiB6UCgpe3ZhciBhPUE7cmV0dXJuIGEuZ2FHbG9iYWw9YS5nYUdsb2JhbHx8e319ZnVuY3Rpb24gQVAoYSxiKXt2YXIgYz16UCgpO2lmKGMudmlkPT09dm9pZCAwfHxiJiYhYy5mcm9tX2Nvb2tpZSljLnZpZD1hLGMuZnJvbV9jb29raWU9Yn07ZnVuY3Rpb24gYlEoYSl7KGJrKFpLKGEpKXx8V2ooKSkmJlUoYSxGLkQub20sem0oKXx8eW0oKSk7IWJrKFpLKGEpKSYmV2ooKSYmVShhLEYuRC5ZaSwiOjoiKX1mdW5jdGlvbiBjUShhKXtXaigpJiYoYmsoWksoYSkpfHxEbSgpfHxVKGEsRi5ELlNsLCEwKSl9O2Z1bmN0aW9uIGhRKGEsYixjLGQpe3ZhciBlO2lmKChuZCgpfHxrZCgpKSYmWGooKSYmWGooKSE9PSIvIil7dmFyIGY9UmooYSk7ZT1JZig1MCkmJmQmJlRiKGYucGF0aG5hbWUsIi9nL2NvbGxlY3QiKT8yOihkfHwhV2ooKXx8RG0oKT8wOlRiKGYucGF0aG5hbWUsIi9nYS9nL2MiKXx8VGIoZi5wYXRobmFtZSwiL2FnL2cvYyIpKT8xOjB9ZWxzZSBlPTA7c3dpdGNoKGUpe2Nhc2UgMjp2YXIgZztpZihNKDU0Nikpe3ZhciBoPVRiKGEsIi9nL2NvbGxlY3QiKT9hLnN1YnN0cmluZygwLGEubGVuZ3RoLTEwKTphLGw9aVEoKSxuPWgrbCxwPWpRKCIvZy9jb2xsZWN0IixiLGMpO2c9e0ljOm4sa2Y6IiIsYm9keTpwfX1lbHNlIGc9e0ljOmEsa2Y6Yixib2R5OmN9O3JldHVybiBnO2Nhc2UgMTp2YXIgcTtpZihNKDU0Nykpe3ZhciByPWlRKCksdD1hLmluZGV4T2YociksdT1hLnN1YnN0cmluZygwLHQpK3Isdj1qUShhLnN1YnN0cmluZyh0K3IubGVuZ3RoLTEpLGIsYyk7cT17SWM6dSxrZjoiIiwKYm9keTp2fX1lbHNlIHE9e0ljOmEsa2Y6Yixib2R5OmN9O3JldHVybiBxO2RlZmF1bHQ6cmV0dXJue0ljOmEsa2Y6Yixib2R5OmN9fX1mdW5jdGlvbiBpUSgpe3ZhciBhPVhqKCk7aWYoIWEpcmV0dXJuIiI7U2IoYSwiLyIpfHwoYT0iLyIrYSk7VGIoYSwiLyIpfHwoYSs9Ii8iKTtyZXR1cm4gYX1mdW5jdGlvbiBqUShhLGIsYyl7dmFyIGQ9W2FdO2ImJmQucHVzaCgiPyIsYik7YyYmZC5wdXNoKCJcclxuIixjKTtyZXR1cm4gZC5qb2luKCIiKX07ZnVuY3Rpb24gc1IoYSl7YS5jb3B5VG9IaXREYXRhKEYuRC5mYik7dmFyIGI9TyhhLk0sRi5ELldkKTtiJiYoS0MoYixmdW5jdGlvbigpe30pLFUoYSxGLkQuV2QsYikpfTtmdW5jdGlvbiB2UihhKXt2YXIgYj1mdW5jdGlvbihjKXtyZXR1cm4hIWMmJmMuY29udmVyc2lvbn07VihhLEguSi5tZyxiKFhLKGEpKSk7UShhLEguSi5uZykmJlYoYSxILkouWW0sYihYSyhhLCJmaXJzdF92aXNpdCIpKSk7UShhLEguSi5UZSkmJlYoYSxILkouYm4sYihYSyhhLCJzZXNzaW9uX3N0YXJ0IikpKX07dmFyIEFSPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj17fSxjPVN0cmluZyh6Ui5jb29raWUpLnNwbGl0KCI7IiksZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdLnNwbGl0KCI9IiksZj1lWzBdLnRyaW0oKTtpZihmJiZhKGYpKXt2YXIgZz1lLnNsaWNlKDEpLmpvaW4oIj0iKS50cmltKCk7ZyYmKGc9ZGVjb2RlVVJJQ29tcG9uZW50KGcpKTt2YXIgaD12b2lkIDAsbD12b2lkIDA7KChoPWIpW2w9Zl18fChoW2xdPVtdKSkucHVzaChnKX19cmV0dXJuIGJ9O3ZhciBCUj13aW5kb3cselI9ZG9jdW1lbnQsQ1I9ZnVuY3Rpb24oYSl7dmFyIGI9QlIuX2dhVXNlclByZWZzO2lmKGImJmIuaW9vJiZiLmlvbygpfHx6Ui5kb2N1bWVudEVsZW1lbnQuaGFzQXR0cmlidXRlKCJkYXRhLWdvb2dsZS1hbmFseXRpY3Mtb3B0LW91dCIpfHxhJiZCUlsiZ2EtZGlzYWJsZS0iK2FdPT09ITApcmV0dXJuITA7dHJ5e3ZhciBjPUJSLmV4dGVybmFsO2lmKGMmJmMuX2dhVXNlclByZWZzJiZjLl9nYVVzZXJQcmVmcz09Im9vIilyZXR1cm4hMH1jYXRjaChmKXt9Zm9yKHZhciBkPUFSKGZ1bmN0aW9uKGYpe3JldHVybiBmPT09IkFNUF9UT0tFTiJ9KS5BTVBfVE9LRU58fFtdLGU9MDtlPGQubGVuZ3RoO2UrKylpZihkW2VdPT0iJE9QVF9PVVQiKXJldHVybiEwO3JldHVybiB6Ui5nZXRFbGVtZW50QnlJZCgiX19nYU9wdE91dEV4dGVuc2lvbiIpPyEwOiExfTt2YXIgTVI9ImdjbGlkIGRjbGlkIGdjbHNyYyB3YnJhaWQgZ2JyYWlkIGdhZF9zb3VyY2UgZ2FkX2NhbXBhaWduaWQgdXRtX3NvdXJjZSB1dG1fbWVkaXVtIHV0bV9jYW1wYWlnbiB1dG1fdGVybSB1dG1fY29udGVudCB1dG1faWQiLnNwbGl0KCIgIik7ZnVuY3Rpb24gTlIoKXt2YXIgYT1CLmxvY2F0aW9uLGIsYz1hPT1udWxsP3ZvaWQgMDooYj1hLnNlYXJjaCk9PW51bGw/dm9pZCAwOmIucmVwbGFjZSgiPyIsIiIpLGQ7aWYoYyl7Zm9yKHZhciBlPVtdLGY9SmooYywhMCksZz1tKE1SKSxoPWcubmV4dCgpOyFoLmRvbmU7aD1nLm5leHQoKSl7dmFyIGw9aC52YWx1ZSxuPWZbbF07aWYobilmb3IodmFyIHA9MDtwPG4ubGVuZ3RoO3ArKyl7dmFyIHE9bltwXTtxIT09dm9pZCAwJiZlLnB1c2goe25hbWU6bCx2YWx1ZTpxfSl9fWQ9ZX1lbHNlIGQ9W107cmV0dXJuIGR9O3ZhciBQUj1bRi5ELnJhLEYuRC5rYV0sUVI9W0YuRC5yYSxGLkQua2EsRi5ELm1hXTsKZnVuY3Rpb24gUlIoYSl7dmFyIGIsYz1NKDUwNikmJiFkSShhLCJjY2RfZ2FfYWRzX2lkc19vcHRfb3V0IiwhMSksZD0hIWRJKGEsImdvb2dsZV9uZyIsITEpLGU9WG8oYz9kP1FSOmZwOlBSKSxmO2Y9ZEkoYSxGLkQuVWYsTyhhLk0sRi5ELlVmKSl8fCEhZEkoYSwiZ29vZ2xlX25nIiwhMSk7Yj17aGY6YyxFczpkLEdvOmUsZmY6ZixMZzohIWRJKGEsImdhNF9hZHNfbGlua2VkIiwhMSksYmk6QW0oKSxHajohVksoKSxGczpiayhaSyhhKSksRHM6ISFRKGEsSC5KLmJlKSxHczohIVEoYSxILkouVGUpLHVzOiEhTyhhLk0sRi5ELk5sKSxLczohIVEoYSxILkouZWopLHhnOk8oYS5NLEYuRC5TYyksbnI6TyhhLk0sRi5ELlNjLHZvaWQgMCw0KSxIczohIVEoYSxILkouRmMpfTtWKGEsSC5KLmNqLGIuZmYpO1YoYSxILkouYmosU1IoYikpO2IuaGYmJiFiLmZmJiZiLkxnJiZTUihiKSYmVShhLCJfJmlidCIsIjEiKTtTUihiKSYmYi5HbyYmKGIuaGY/Yi54ZyE9PSExfHxiLkxnOjEpJiZWKGEsCkguSi5ybiwhMCk7Yi5FcyYmIWIuYmkmJlUoYSxGLkQuTGUsMSk7KGIuaGY/Yi54ZzpiLm5yKT09PSExJiZVKGEsIl8mbmdzIiwiMSIpO1YoYSxILkouaGQsVFIoYikmJihiLkdzfHxiLnVzKSk7VihhLEguSi5yZyxUUihiKSYmYi5LcyYmIWIuYmkpfWZ1bmN0aW9uIFNSKGEpe3JldHVybiBhLmhmPyhhLkxnfHxhLmZmKSYmIWEuYmkmJiFhLkdqOmEuZmYmJmEueGchPT0hMSYmIWEuR2omJiFhLmJpfWZ1bmN0aW9uIFRSKGEpe2lmKGEuSHMpcmV0dXJuITE7aWYoYS5oZil7aWYoIWEuZmYmJiFhLkxnKXJldHVybiExfWVsc2UgaWYoIWEuZmYpcmV0dXJuITE7cmV0dXJuIGEuRnN8fGEuRHN8fGEuR2p8fChhLmhmP2EueGc9PT0hMSYmIWEuTGc6YS54Zz09PSExKXx8IWEuR28/ITE6ITB9O2Z1bmN0aW9uIGhTKGEpe31mdW5jdGlvbiBpUyhhKXt2YXIgYj1mdW5jdGlvbigpe307cmV0dXJuIGJ9CmZ1bmN0aW9uIGpTKGEsYil7fXZhciBrUz1KLlUucWwsbFM9Si5VLnJsO2Z1bmN0aW9uIG1TKGEsYil7dmFyIGM9dGsoKTtjJiZjLmluZGV4T2YoYik+LTEmJihhW0guSi5DY109ITApfXZhciBuUz1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspYS5oYXNPd25Qcm9wZXJ0eShiW2RdKSYmKGFbU3RyaW5nKGJbZF0pXT1jKGFbU3RyaW5nKGJbZF0pXSkpfTtmdW5jdGlvbiBvUyhhLGIsYyl7dmFyIGQ9dGhpcztpZighbGgoYSl8fCFmaChiKXx8IWZoKGMpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJzdHJpbmciLCJPYmplY3R8dW5kZWZpbmVkIiwiT2JqZWN0fHVuZGVmaW5lZCJdLGFyZ3VtZW50cyk7dmFyIGU9Yj9UZChiLHRoaXMuVCwxKTp7fTtURihbZnVuY3Rpb24oKXtyZXR1cm4gTChkLCJjb25maWd1cmVfZ29vZ2xlX3RhZ3MiLGEsZSl9XSk7dmFyIGY9Yz9UZChjKTp7fSxnPVhGKHRoaXMpO2Yub3JpZ2luYXRpbmdFbnRpdHk9dEcoZyk7Zy5wcmlvcml0eVF1ZXVlJiYoZi5wcmlvcml0eVF1ZXVlPWcucHJpb3JpdHlRdWV1ZSk7bUQockMoYSxlKSxnLmV2ZW50SWQsZik7fW9TLlA9ImludGVybmFsLmd0YWdDb25maWciO2Z1bmN0aW9uIHBTKGEsYixjLGQpe3ZhciBlPXRoaXM7fXBTLlA9ImludGVybmFsLmd0YWdEZXN0aW5hdGlvbkNvbmZpZyI7CmZ1bmN0aW9uIHJTKGEsYil7fQpyUy5wdWJsaWNOYW1lPSJndGFnU2V0IjtmdW5jdGlvbiBzUygpe3ZhciBhPXt9O3JldHVybiBhfTtmdW5jdGlvbiB0UyhhKXt9dFMuUD0iaW50ZXJuYWwuaW5pdGlhbGl6ZVNlcnZpY2VXb3JrZXIiO2Z1bmN0aW9uIHVTKGEsYil7fXVTLnB1YmxpY05hbWU9ImluamVjdEhpZGRlbklmcmFtZSI7ZnVuY3Rpb24gdlMoYSxiLGMsZCxlKXt9dlMuUD0iaW50ZXJuYWwuaW5qZWN0SHRtbCI7dmFyIEFTPXtkbDoxLGlkOjF9OwpmdW5jdGlvbiBCUyhhLGIsYyxkKXt9QlMucHVibGljTmFtZT0iaW5qZWN0U2NyaXB0IjtmdW5jdGlvbiBDUygpe3ZhciBhPXZtLGI9ITE7cmV0dXJuIGJ9Q1MuUD0iaW50ZXJuYWwuaXNBdXRvUGlpRWxpZ2libGUiO2Z1bmN0aW9uIERTKGEpe3ZhciBiPSEwO3JldHVybiBifURTLnB1YmxpY05hbWU9ImlzQ29uc2VudEdyYW50ZWQiO2Z1bmN0aW9uIEVTKGEpe3ZhciBiPSExO3JldHVybiBifUVTLlA9ImludGVybmFsLmlzRGVidWdNb2RlIjtmdW5jdGlvbiBGUyhhKXt2YXIgYj0hMTtyZXR1cm4gYn1GUy5QPSJpbnRlcm5hbC5pc0Rlc3RpbmF0aW9uSW5pdGlhbGl6ZWQiO2Z1bmN0aW9uIEdTKCl7cmV0dXJuIEJtKCl9R1MuUD0iaW50ZXJuYWwuaXNEbWFSZWdpb24iO2Z1bmN0aW9uIEhTKCl7cmV0dXJuIFVCKCl9SFMuUD0iaW50ZXJuYWwuaXNEb21SZWFkeSI7ZnVuY3Rpb24gSVMoYSl7dmFyIGI9ITE7cmV0dXJuIGJ9SVMuUD0iaW50ZXJuYWwuaXNFbnRpdHlJbmZyYXN0cnVjdHVyZSI7ZnVuY3Rpb24gSlMoYSl7dmFyIGI9ITE7aWYoIXFoKGEpKXRocm93IEsodGhpcy5nZXROYW1lKCksWyJudW1iZXIiXSxbYV0pO2I9TShhKTtyZXR1cm4gYn1KUy5QPSJpbnRlcm5hbC5pc0ZlYXR1cmVFbmFibGVkIjtmdW5jdGlvbiBLUygpe3ZhciBhPSExO3JldHVybiBhfUtTLlA9ImludGVybmFsLmlzRnBmZSI7ZnVuY3Rpb24gTFMoKXt2YXIgYT0hMTtyZXR1cm4gYX1MUy5QPSJpbnRlcm5hbC5pc0djcEJyb3dzZXIiO2Z1bmN0aW9uIE1TKCl7dmFyIGE9ITE7cmV0dXJuIGF9TVMuUD0iaW50ZXJuYWwuaXNMYW5kaW5nUGFnZSI7ZnVuY3Rpb24gTlMoKXt2YXIgYT0hMTtyZXR1cm4gYX1OUy5QPSJpbnRlcm5hbC5pc09ndCI7ZnVuY3Rpb24gT1MoKXt2YXIgYTtyZXR1cm4gYX1PUy5QPSJpbnRlcm5hbC5pc1NhZmFyaVBjbUVsaWdpYmxlQnJvd3NlciI7ZnVuY3Rpb24gUFMoKXt2YXIgYT1RaChmdW5jdGlvbihiKXtYRih0aGlzKS5sb2coImVycm9yIixiKX0pO2EucHVibGljTmFtZT0iSlNPTiI7cmV0dXJuIGF9O2Z1bmN0aW9uIFFTKGEpe3ZhciBiPXZvaWQgMDtpZighbGgoYSkpdGhyb3cgSyh0aGlzLmdldE5hbWUoKSxbInN0cmluZyJdLGFyZ3VtZW50cyk7Yj1SaihhKTtyZXR1cm4gVWQoYil9UVMuUD0iaW50ZXJuYWwubGVnYWN5UGFyc2VVcmwiO2Z1bmN0aW9uIFJTKCl7cmV0dXJuITF9CnZhciBTUz17Z2V0SXRlbTpmdW5jdGlvbihhKXt2YXIgYj1udWxsO3JldHVybiBifSxzZXRJdGVtOmZ1bmN0aW9uKGEsYil7cmV0dXJuITF9LHJlbW92ZUl0ZW06ZnVuY3Rpb24oYSl7fX07ZnVuY3Rpb24gVFMoKXt0cnl7TCh0aGlzLCJsb2dnaW5nIil9Y2F0Y2goZCl7cmV0dXJufWlmKCFjb25zb2xlKXJldHVybjtmb3IodmFyIGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApLGI9MDtiPGEubGVuZ3RoO2IrKylhW2JdPVRkKGFbYl0sdGhpcy5UKTt2YXIgYz1YRih0aGlzKTtjb25zb2xlLmxvZy5hcHBseShjb25zb2xlLGEpO3RHKGMpO31UUy5wdWJsaWNOYW1lPSJsb2dUb0NvbnNvbGUiO2Z1bmN0aW9uIFVTKGEsYil7fVVTLlA9ImludGVybmFsLm1lcmdlUmVtb3RlQ29uZmlnIjtmdW5jdGlvbiBWUyhhLGIsYyl7Yz1jPT09dm9pZCAwPyEwOmM7dmFyIGQ9W107cmV0dXJuIFVkKGQpfVZTLlA9ImludGVybmFsLnBhcnNlQ29va2llVmFsdWVzRnJvbVN0cmluZyI7ZnVuY3Rpb24gV1MoYSl7dmFyIGI9dm9pZCAwOwpyZXR1cm4gYn1XUy5wdWJsaWNOYW1lPSJwYXJzZVVybCI7ZnVuY3Rpb24gWFMoYSl7fVhTLlA9ImludGVybmFsLnByb2Nlc3NBc05ld0V2ZW50IjtmdW5jdGlvbiBZUyhhLGIsYyl7dmFyIGQ7cmV0dXJuIGR9WVMuUD0iaW50ZXJuYWwucHVzaFRvRGF0YUxheWVyIjtmdW5jdGlvbiBaUyhhKXt2YXIgYj1PYS5hcHBseSgxLGFyZ3VtZW50cyksYz0hMTtyZXR1cm4gY31aUy5wdWJsaWNOYW1lPSJxdWVyeVBlcm1pc3Npb24iO2Z1bmN0aW9uICRTKGEpe3ZhciBiPXRoaXM7fSRTLlA9ImludGVybmFsLnF1ZXVlQWRzVHJhbnNtaXNzaW9uIjtmdW5jdGlvbiBhVChhKXt2YXIgYj12b2lkIDA7cmV0dXJuIGJ9YVQucHVibGljTmFtZT0icmVhZEFuYWx5dGljc1N0b3JhZ2UiO2Z1bmN0aW9uIGJUKCl7dmFyIGE9IiI7cmV0dXJuIGF9YlQucHVibGljTmFtZT0icmVhZENoYXJhY3RlclNldCI7ZnVuY3Rpb24gY1QoKXtyZXR1cm4gRSgxOSl9Y1QuUD0iaW50ZXJuYWwucmVhZERhdGFMYXllck5hbWUiO2Z1bmN0aW9uIGRUKCl7dmFyIGE9IiI7cmV0dXJuIGF9ZFQucHVibGljTmFtZT0icmVhZFRpdGxlIjtmdW5jdGlvbiBlVChhLGIpe3ZhciBjPXRoaXM7fWVULlA9ImludGVybmFsLnJlZ2lzdGVyQ2NkQ2FsbGJhY2siO2Z1bmN0aW9uIGZUKGEsYil7cmV0dXJuITB9ZlQuUD0iaW50ZXJuYWwucmVnaXN0ZXJEZXN0aW5hdGlvbiI7dmFyIGdUPVsiZXZlbnQiXTtmdW5jdGlvbiBoVChhLGIsYyl7fWhULlA9ImludGVybmFsLnJlZ2lzdGVyR3RhZ0NvbW1hbmRMaXN0ZW5lciI7ZnVuY3Rpb24gaVQoYSxiKXt2YXIgYz0hMTtyZXR1cm4gY31pVC5QPSJpbnRlcm5hbC5yZW1vdmVEYXRhTGF5ZXJFdmVudExpc3RlbmVyIjtmdW5jdGlvbiBqVChhLGIpe30KalQuUD0iaW50ZXJuYWwucmVtb3ZlRm9ybURhdGEiO2Z1bmN0aW9uIGtUKCl7fWtULnB1YmxpY05hbWU9InJlc2V0RGF0YUxheWVyIjtmdW5jdGlvbiBsVChhLGIsYyl7dmFyIGQ9dm9pZCAwO3JldHVybiBkfWxULlA9ImludGVybmFsLnNjcnViVXJsUGFyYW1zIjtmdW5jdGlvbiBtVChhKXt9bVQuUD0iaW50ZXJuYWwuc2VuZEFkc0hpdCI7ZnVuY3Rpb24gblQoYSxiLGMsZCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyfHwhZmgoZCl8fCFmaChjKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiYW55IiwiYW55IiwiT2JqZWN0fHVuZGVmaW5lZCIsIk9iamVjdHx1bmRlZmluZWQiXSxhcmd1bWVudHMpO3ZhciBlPWM/VGQoYyx0aGlzLlQsMSk6e30sZj1UZChhKSxnPUFycmF5LmlzQXJyYXkoZik/ZjpbZl07Yj1TdHJpbmcoYik7dmFyIGg9ZD9UZChkKTp7fSxsPVhGKHRoaXMpO2gub3JpZ2luYXRpbmdFbnRpdHk9dEcobCk7bC5wcmlvcml0eVF1ZXVlJiYoaC5wcmlvcml0eVF1ZXVlPWwucHJpb3JpdHlRdWV1ZSk7Zm9yKHZhciBuPTA7bjxnLmxlbmd0aDtuKyspe3ZhciBwPWdbbl07aWYodHlwZW9mIHA9PT0ic3RyaW5nIil7dmFyIHE9e307RWQoZSxxKTt2YXIgcj17fTtFZChoLHIpO3ZhciB0PXNDKHAsYixxKTttRCh0LApoLmV2ZW50SWR8fGwuZXZlbnRJZCxyKX19fW5ULlA9ImludGVybmFsLnNlbmRHdGFnRXZlbnQiO2Z1bmN0aW9uIG9UKGEsYixjKXt9b1QucHVibGljTmFtZT0ic2VuZFBpeGVsIjtmdW5jdGlvbiBwVChhLGIpe31wVC5QPSJpbnRlcm5hbC5zZXRBbmNob3JIcmVmIjtmdW5jdGlvbiBxVChhKXt9cVQuUD0iaW50ZXJuYWwuc2V0Q29udGFpbmVyQ29uc2VudERlZmF1bHRzIjtmdW5jdGlvbiByVChhLGIsYyxkKXt2YXIgZT10aGlzO2Q9ZD09PXZvaWQgMD8hMDpkO3ZhciBmPSExOwpyZXR1cm4gZn1yVC5wdWJsaWNOYW1lPSJzZXRDb29raWUiO2Z1bmN0aW9uIHNUKGEpe31zVC5QPSJpbnRlcm5hbC5zZXRDb3JlUGxhdGZvcm1TZXJ2aWNlcyI7ZnVuY3Rpb24gdFQoYSxiKXt9dFQuUD0iaW50ZXJuYWwuc2V0RGF0YUxheWVyVmFsdWUiO2Z1bmN0aW9uIHVUKGEpe311VC5wdWJsaWNOYW1lPSJzZXREZWZhdWx0Q29uc2VudFN0YXRlIjtmdW5jdGlvbiB2VChhLGIpe312VC5QPSJpbnRlcm5hbC5zZXREZWxlZ2F0ZWRDb25zZW50VHlwZSI7ZnVuY3Rpb24gd1QoYSxiKXt9d1QuUD0iaW50ZXJuYWwuc2V0Rm9ybUFjdGlvbiI7ZnVuY3Rpb24geFQoYSxiLGMpe2M9Yz09PXZvaWQgMD8hMTpjO314VC5QPSJpbnRlcm5hbC5zZXRJbkNyb3NzQ29udGFpbmVyRGF0YSI7ZnVuY3Rpb24geVQoYSxiLGMpe3JldHVybiExfXlULnB1YmxpY05hbWU9InNldEluV2luZG93IjtmdW5jdGlvbiB6VChhLGIsYyl7fXpULlA9ImludGVybmFsLnNldFByb2R1Y3RTZXR0aW5nc1BhcmFtZXRlciI7ZnVuY3Rpb24gQVQoYSxiLGMpe31BVC5QPSJpbnRlcm5hbC5zZXRSZW1vdGVDb25maWdQYXJhbWV0ZXIiO2Z1bmN0aW9uIEJUKGEsYil7fQpCVC5QPSJpbnRlcm5hbC5zZXRUcmFuc21pc3Npb25Nb2RlIjtmdW5jdGlvbiBDVChhLGIsYyxkKXt2YXIgZT10aGlzO31DVC5wdWJsaWNOYW1lPSJzaGEyNTYiO2Z1bmN0aW9uIERUKGEsYixjKXt9CkRULlA9ImludGVybmFsLnNvcnRSZW1vdGVDb25maWdQYXJhbWV0ZXJzIjtmdW5jdGlvbiBFVChhKXt9RVQuUD0iaW50ZXJuYWwuc3RvcmVBZHNCcmFpZExhYmVscyI7ZnVuY3Rpb24gRlQoYSxiKXt2YXIgYz12b2lkIDA7cmV0dXJuIGN9RlQuUD0iaW50ZXJuYWwuc3Vic2NyaWJlVG9Dcm9zc0NvbnRhaW5lckRhdGEiO2Z1bmN0aW9uIEdUKGEpe31HVC5QPSJpbnRlcm5hbC50YXNrU2VuZEFkc0hpdHMiO3ZhciBIVD17Z2V0SXRlbTpmdW5jdGlvbihhKXt2YXIgYj1udWxsO0wodGhpcywiYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UiKTt2YXIgYz1YRih0aGlzKS5QYigpLGQ9YWwoNyxmdW5jdGlvbigpe3JldHVybnt9fSk7ZFtjXSYmKGI9ZFtjXS5oYXNPd25Qcm9wZXJ0eSgiZ3RtLiIrYSk/ZFtjXVsiZ3RtLiIrYV06bnVsbCk7cmV0dXJuIGJ9LHNldEl0ZW06ZnVuY3Rpb24oYSxiKXtMKHRoaXMsImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIik7dmFyIGM9WEYodGhpcykuUGIoKSxkPWFsKDcsZnVuY3Rpb24oKXtyZXR1cm57fX0pO2RbY109ZFtjXXx8e307ZFtjXVsiZ3RtLiIrYV09Yjt9LApyZW1vdmVJdGVtOmZ1bmN0aW9uKGEpe0wodGhpcywiYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UiKTt2YXIgYj1YRih0aGlzKS5QYigpLGM9YWwoNyxmdW5jdGlvbigpe3JldHVybnt9fSk7aWYoIWNbYl18fCFjW2JdLmhhc093blByb3BlcnR5KCJndG0uIithKSlyZXR1cm47ZGVsZXRlIGNbYl1bImd0bS4iK2FdO30sY2xlYXI6ZnVuY3Rpb24oKXtMKHRoaXMsImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIik7dmFyIGE9WEYodGhpcykuUGIoKTtkZWxldGUgYWwoNyxmdW5jdGlvbigpe3JldHVybnt9fSlbYV07fSwKcHVibGljTmFtZToidGVtcGxhdGVTdG9yYWdlIn07ZnVuY3Rpb24gSVQoYSxiKXt2YXIgYz0hMTtpZigha2goYSl8fCFsaChiKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT3BhcXVlVmFsdWUiLCJzdHJpbmciXSxhcmd1bWVudHMpO3ZhciBkPWEuZ2V0VmFsdWUoKTtpZighKGQgaW5zdGFuY2VvZiBSZWdFeHApKXJldHVybiExO2M9ZC50ZXN0KGIpO3JldHVybiBjfUlULlA9ImludGVybmFsLnRlc3RSZWdleCI7ZnVuY3Rpb24gSlQoYSl7dmFyIGI7cmV0dXJuIGJ9O2Z1bmN0aW9uIEtUKGEsYil7fUtULlA9ImludGVybmFsLnRyYWNrVXNhZ2UiO2Z1bmN0aW9uIExUKGEsYil7dmFyIGM7cmV0dXJuIGN9TFQuUD0iaW50ZXJuYWwudW5zdWJzY3JpYmVGcm9tQ3Jvc3NDb250YWluZXJEYXRhIjtmdW5jdGlvbiBNVChhKXt9TVQucHVibGljTmFtZT0idXBkYXRlQ29uc2VudFN0YXRlIjtmdW5jdGlvbiBOVChhKXt2YXIgYj0hMTtyZXR1cm4gYn1OVC5QPSJpbnRlcm5hbC51c2VyRGF0YU5lZWRzRW5jcnlwdGlvbiI7dmFyIE9UPWZ1bmN0aW9uKCl7dGhpcy5IPW5ldyBhaX0sUVQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGI7dmFyIGM9UFQuSDtpZihjLmNvbnRhaW5zKGEpKWI9Yy5nZXQoYSx0aGlzKTtlbHNle3ZhciBkO2lmKGQ9Yy5ILmhhc093blByb3BlcnR5KGEpKXt2YXIgZT10aGlzLlQueGIoKTtpZihlKXt2YXIgZj0hMSxnPWUuUGIoKTtpZihnKXtCaChnKXx8KGY9ITApO31kPWZ9ZWxzZSBkPSEwfWlmKGQpe3ZhciBoPWMuSC5oYXNPd25Qcm9wZXJ0eShhKT9jLkhbYV06dm9pZCAwO2I9aH1lbHNlIHRocm93IEVycm9yKGErIiBpcyBub3QgYSB2YWxpZCBBUEkgbmFtZS4iKTt9cmV0dXJuIGJ9fSxQVDtmdW5jdGlvbiBSVChhLGIsYyl7UFR8fChQVD1uZXcgT1QpO1BULkguYWRkKGEsYixjKX1mdW5jdGlvbiBTVChhLGIpe1BUfHwoUFQ9bmV3IE9UKTt2YXIgYz1QVC5IO2lmKGMuSC5oYXNPd25Qcm9wZXJ0eShhKSl0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhZGQgYSBwcml2YXRlIGZ1bmN0aW9uIHdoaWNoIGFscmVhZHkgZXhpc3RzOiAiK2ErIi4iKTtpZihjLmNvbnRhaW5zKGEpKXRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGFkZCBhIHByaXZhdGUgZnVuY3Rpb24gd2l0aCBhbiBleGlzdGluZyBBUEkgbmFtZTogIithKyIuIik7Yy5IW2FdPXliKGIpP3RoKGEsYik6dWgoYSxiKX07ZnVuY3Rpb24gVFQoYSxiKXtmdW5jdGlvbiBjKGQpe2lmKCFlaChkKSl0aHJvdyBLKHRoaXMuZ2V0TmFtZSgpLFsiT2JqZWN0Il0sYXJndW1lbnRzKTt2YXIgZT1UZChkLHRoaXMuVCwxKS5yYigpO2EoZSl9Yy5QPSJpbnRlcm5hbC4iK2I7cmV0dXJuIGN9O2Z1bmN0aW9uIFVUKCl7dmFyIGE9ZnVuY3Rpb24oYyl7cmV0dXJuIHZvaWQgU1QoYy5QLGMpfSxiPWZ1bmN0aW9uKGMpe3JldHVybiB2b2lkIFJUKGMucHVibGljTmFtZSxjKX07YihSRik7YihZRik7YihSRyk7YihURyk7YihVRyk7YihkSCk7YihmSCk7YihoSSk7YihQUygpKTtiKGpJKTtiKE9PKTtiKFBPKTtiKGxQKTtiKG1QKTtiKG5QKTtiKHVQKTtiKHZQKTtiKHJTKTtiKHVTKTtiKEJTKTtiKERTKTtiKFRTKTtiKFdTKTtiKFpTKTtiKGFUKTtiKGJUKTtiKGRUKTtiKG9UKTtiKHJUKTtiKHVUKTtiKHlUKTtiKENUKTtiKEhUKTtiKE1UKTtSVCgiTWF0aCIsemgoKSk7UlQoIk9iamVjdCIsWmgpO1JUKCJUZXN0SGVscGVyIixjaSgpKTtSVCgiYXNzZXJ0QXBpIix3aCk7UlQoImFzc2VydFRoYXQiLHhoKTtSVCgiZGVjb2RlVXJpIixDaCk7UlQoImRlY29kZVVyaUNvbXBvbmVudCIsRGgpO1JUKCJlbmNvZGVVcmkiLEVoKTtSVCgiZW5jb2RlVXJpQ29tcG9uZW50IixGaCk7UlQoImZhaWwiLApMaCk7UlQoImdlbmVyYXRlUmFuZG9tIixOaCk7UlQoImdldFRpbWVzdGFtcCIsT2gpO1JUKCJnZXRUaW1lc3RhbXBNaWxsaXMiLE9oKTtSVCgiZ2V0VHlwZSIsUGgpO1JUKCJtYWtlSW50ZWdlciIsUmgpO1JUKCJtYWtlTnVtYmVyIixTaCk7UlQoIm1ha2VTdHJpbmciLFRoKTtSVCgibWFrZVRhYmxlTWFwIixVaCk7UlQoIm1vY2siLFhoKTtSVCgibW9ja09iamVjdCIsWWgpO1JUKCJmcm9tQmFzZTY0IixITywhKCJhdG9iImluIEEpKTtSVCgibG9jYWxTdG9yYWdlIixTUywhUlMoKSk7UlQoInRvQmFzZTY0IixKVCwhKCJidG9hImluIEEpKTthKFFGKTthKFVGKTthKG5HKTthKHNHKTthKElHKTthKFBHKTthKFNHKTthKFZHKTthKFdHKTthKFpHKTthKCRHKTthKGFIKTthKGJIKTthKGNIKTthKGVIKTthKGdIKTthKGdJKTthKGlJKTthKGtJKTthKGxJKTthKG1JKTthKG5JKTthKG9JKTthKGZKKTthKG1KKTthKHRKKTthKHVKKTthKEFKKTthKEZKKTthKEtKKTthKFJKKTthKFdKKTthKGdLKTsKYShpSyk7YSh2Syk7YSh3Syk7YSh4Syk7YShGTyk7YShHTyk7YShJTyk7YShKTyk7YShLTyk7YShMTyk7YShNTyk7YShOTyk7YShRTyk7YShSTyk7YShTTyk7YShUTyk7YShVTyk7YShWTyk7YShXTyk7YShYTyk7YShZTyk7YShaTyk7YSgkTyk7YShhUCk7YShiUCk7YShjUCk7YShkUCk7YShlUCk7YShmUCk7YShnUCk7YShoUCk7YShpUCk7YShqUCk7YShrUCk7YShvUCk7YShwUCk7YShxUCk7YShyUCk7YShzUCk7YSh0UCk7YSh3UCk7YShvUyk7YShwUyk7YSh0Uyk7YSh2Uyk7YShDUyk7YShFUyk7YShGUyk7YShHUyk7YShIUyk7YShJUyk7YShKUyk7YShLUyk7YShMUyk7YShNUyk7YShOUyk7YShPUyk7YShRUyk7YShHRyk7YShVUyk7YShWUyk7YShYUyk7YShZUyk7YSgkUyk7YShjVCk7YShlVCk7YShmVCk7YShoVCk7YShpVCk7YShqVCk7YShsVCk7YShtVCk7YShuVCk7YShwVCk7YShxVCk7YShzVCk7YSh0VCk7YSh2VCk7YSh3VCk7YSh4VCk7YSh6VCk7YShBVCk7YShCVCk7YShEVCk7CmEoRVQpO2EoRlQpO2EoR1QpO2EoSVQpO2EoS1QpO2EoTFQpO2EoTlQpO1NUKCJpbnRlcm5hbC5JZnJhbWluZ1N0YXRlU2NoZW1hIixzUygpKTtTVCgiaW50ZXJuYWwucXVpY2tIYXNoIixNaCk7UFR8fChQVD1uZXcgT1QpO3JldHVybiBRVCgpfTt2YXIgSkY7ZnVuY3Rpb24gVlQoKXtKRi5zZChmdW5jdGlvbihhLGIsYyl7bGooKTt2YXIgZD1qajtkLkguU0FOREJPWEVEX0pTX1NFTUFQSE9SRT1kLkguU0FOREJPWEVEX0pTX1NFTUFQSE9SRXx8MDtkLkguU0FOREJPWEVEX0pTX1NFTUFQSE9SRSsrO3RyeXtyZXR1cm4gYS5hcHBseShiLGMpfWZpbmFsbHl7bGooKSxqai5ILlNBTkRCT1hFRF9KU19TRU1BUEhPUkUtLX19KX1mdW5jdGlvbiBXVChhKXtpZihhJiZhLmxlbmd0aClmb3IodmFyIGI9YWwoMjcsZnVuY3Rpb24oKXtyZXR1cm57fX0pLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXS5yZXBsYWNlKC9eXyovLCIiKTtiW2RdPVsic2FuZGJveGVkU2NyaXB0cyJdfX0KZnVuY3Rpb24gWFQoYSl7aWYoYSl7dmFyIGI9YWwoMjcsZnVuY3Rpb24oKXtyZXR1cm57fX0pO0diKGEsZnVuY3Rpb24oYyxkKXtmb3IodmFyIGU9MDtlPGQubGVuZ3RoO2UrKyl7dmFyIGY9ZFtlXS5yZXBsYWNlKC9eXyovLCIiKTtiW2ZdPWJbZl18fFtdO2JbZl0ucHVzaChjKX19KX19O2Z1bmN0aW9uIFpUKGEpe21EKHBDKCJkZXZlbG9wZXJfaWQuIithLCEwKSwwLHt9KX07ZnVuY3Rpb24gJFQoYSxiKXtyZXR1cm4gRWQoYSxifHxudWxsKX1mdW5jdGlvbiBZKGEpe3JldHVybiB3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KGEpfWZ1bmN0aW9uIGFVKGEpe1pjKGEsdm9pZCAwLHZvaWQgMCl9ZnVuY3Rpb24gYlUoYSl7dmFyIGI9WyJ2ZWludGVyYWN0aXZlLmNvbSIsInZlLWludGVyYWN0aXZlLmNuIl07aWYoIWEpcmV0dXJuITE7dmFyIGM9TGooUmooYSksImhvc3QiKTtpZighYylyZXR1cm4hMTtmb3IodmFyIGQ9MDtiJiZkPGIubGVuZ3RoO2QrKyl7dmFyIGU9YltkXSYmYltkXS50b0xvd2VyQ2FzZSgpO2lmKGUpe3ZhciBmPWMubGVuZ3RoLWUubGVuZ3RoO2Y+MCYmZS5jaGFyQXQoMCkhPT0iLiImJihmLS0sZT0iLiIrZSk7aWYoZj49MCYmYy5pbmRleE9mKGUsZik9PT1mKXJldHVybiEwfX1yZXR1cm4hMX0KZnVuY3Rpb24gY1UoYSxiLGMpe2Zvcih2YXIgZD17fSxlPSExLGY9MDthJiZmPGEubGVuZ3RoO2YrKylhW2ZdJiZhW2ZdLmhhc093blByb3BlcnR5KGIpJiZhW2ZdLmhhc093blByb3BlcnR5KGMpJiYoZFthW2ZdW2JdXT1hW2ZdW2NdLGU9ITApO3JldHVybiBlP2Q6bnVsbH1mdW5jdGlvbiBkVShhLGIpe3ZhciBjPXt9O2lmKGEpZm9yKHZhciBkIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShkKSYmKGNbZF09YVtkXSk7aWYoYil7dmFyIGU9Y1UoYiwicGFyYW1ldGVyIiwicGFyYW1ldGVyVmFsdWUiKTtlJiYoYz0kVChlLGMpKX1yZXR1cm4gY31mdW5jdGlvbiBlVShhLGIsYyl7cmV0dXJuIGE9PT12b2lkIDB8fGE9PT1jP2I6YX1mdW5jdGlvbiBmVShhLGIsYyl7cmV0dXJuIFVjKGEsYixjLHZvaWQgMCl9ZnVuY3Rpb24gZ1UoYSxiKXtBW2FdPWJ9ZnVuY3Rpb24gaFUoYSxiLGMpe3ZhciBkPUE7YiYmKGRbYV09PT12b2lkIDB8fGMmJiFkW2FdKSYmKGRbYV09Yik7cmV0dXJuIGRbYV19dmFyIGlVPXt9LGpVPVguVjt2YXIgWj17c2VjdXJpdHlHcm91cHM6e319OwoKWi5zZWN1cml0eUdyb3Vwcy5hY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZT1bImdvb2dsZSJdLFouX19hY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZT1mdW5jdGlvbigpe3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oKXt9LGFhOmZ1bmN0aW9uKCl7cmV0dXJue319fX0sWi5fX2FjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlLk89ImFjY2Vzc190ZW1wbGF0ZV9zdG9yYWdlIixaLl9fYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UuaXNWZW5kb3JUZW1wbGF0ZT0hMCxaLl9fYWNjZXNzX3RlbXBsYXRlX3N0b3JhZ2UucHJpb3JpdHlPdmVycmlkZT0wLFouX19hY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZS5pc0luZnJhc3RydWN0dXJlPSExLFouX19hY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZVsiNSJdPSExLFouX19hY2Nlc3NfdGVtcGxhdGVfc3RvcmFnZVsiNiJdPSExOwpaLnNlY3VyaXR5R3JvdXBzLmFjY2Vzc19lbGVtZW50X3ZhbHVlcz1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMsZCxlKXtyZXR1cm57ZWxlbWVudDpjLG9wZXJhdGlvbjpkLG5ld1ZhbHVlOmV9fShmdW5jdGlvbihiKXtaLl9fYWNjZXNzX2VsZW1lbnRfdmFsdWVzPWI7Wi5fX2FjY2Vzc19lbGVtZW50X3ZhbHVlcy5PPSJhY2Nlc3NfZWxlbWVudF92YWx1ZXMiO1ouX19hY2Nlc3NfZWxlbWVudF92YWx1ZXMuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fYWNjZXNzX2VsZW1lbnRfdmFsdWVzLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fYWNjZXNzX2VsZW1lbnRfdmFsdWVzLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2FjY2Vzc19lbGVtZW50X3ZhbHVlc1siNSJdPSExO1ouX19hY2Nlc3NfZWxlbWVudF92YWx1ZXNbIjYiXT0hMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPWIudnRwX2FsbG93UmVhZCxkPWIudnRwX2FsbG93V3JpdGUsZT1iLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3I7CnJldHVybnthc3NlcnQ6ZnVuY3Rpb24oZixnLGgsbCl7aWYoIShnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKXRocm93IGUoZix7fSwiRWxlbWVudCBtdXN0IGJlIGEgSFRNTEVsZW1lbnQuIik7aWYoaCE9PSJyZWFkIiYmaCE9PSJ3cml0ZSIpdGhyb3cgZShmLHt9LCJVbmtub3duIG9wZXJhdGlvbjogIitoKyIuIik7aWYoaD09InJlYWQiJiYhYyl0aHJvdyBlKGYse30sIkF0dGVtcHRpbmcgdG8gcGVyZm9ybSBkaXNhbGxvd2VkIG9wZXJhdGlvbjogcmVhZC4iKTtpZihoPT0id3JpdGUiKXtpZighZCl0aHJvdyBlKGYse30sIkF0dGVtcHRpbmcgdG8gcGVyZm9ybSBkaXNhbGxvd2VkIG9wZXJhdGlvbjogd3JpdGUuIik7aWYoIXpiKGwpKXRocm93IGUoZix7fSwiQXR0ZW1wdGluZyB0byB3cml0ZSB2YWx1ZSB3aXRob3V0IHZhbGlkIG5ldyB2YWx1ZS4iKTt9fSxhYTphfX0pfSgpOwoKWi5zZWN1cml0eUdyb3Vwcy5hY2Nlc3NfZ2xvYmFscz1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMsZCl7dmFyIGU9e2tleTpkLHJlYWQ6ITEsd3JpdGU6ITEsZXhlY3V0ZTohMX07c3dpdGNoKGMpe2Nhc2UgInJlYWQiOmUucmVhZD0hMDticmVhaztjYXNlICJ3cml0ZSI6ZS53cml0ZT0hMDticmVhaztjYXNlICJyZWFkd3JpdGUiOmUucmVhZD1lLndyaXRlPSEwO2JyZWFrO2Nhc2UgImV4ZWN1dGUiOmUuZXhlY3V0ZT0hMDticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJJbnZhbGlkICIrYisiIHJlcXVlc3QgIitjKTt9cmV0dXJuIGV9KGZ1bmN0aW9uKGIpe1ouX19hY2Nlc3NfZ2xvYmFscz1iO1ouX19hY2Nlc3NfZ2xvYmFscy5PPSJhY2Nlc3NfZ2xvYmFscyI7Wi5fX2FjY2Vzc19nbG9iYWxzLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2FjY2Vzc19nbG9iYWxzLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fYWNjZXNzX2dsb2JhbHMuaXNJbmZyYXN0cnVjdHVyZT0hMTsKWi5fX2FjY2Vzc19nbG9iYWxzWyI1Il09ITE7Wi5fX2FjY2Vzc19nbG9iYWxzWyI2Il09ITF9KShmdW5jdGlvbihiKXtmb3IodmFyIGM9Yi52dHBfa2V5c3x8W10sZD1iLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3IsZT1bXSxmPVtdLGc9W10saD0wO2g8Yy5sZW5ndGg7aCsrKXt2YXIgbD1jW2hdLG49bC5rZXk7bC5yZWFkJiZlLnB1c2gobik7bC53cml0ZSYmZi5wdXNoKG4pO2wuZXhlY3V0ZSYmZy5wdXNoKG4pfXJldHVybnthc3NlcnQ6ZnVuY3Rpb24ocCxxLHIpe2lmKCF6YihyKSl0aHJvdyBkKHAse30sIktleSBtdXN0IGJlIGEgc3RyaW5nLiIpO2lmKHE9PT0icmVhZCIpe2lmKGUuaW5kZXhPZihyKT4tMSlyZXR1cm59ZWxzZSBpZihxPT09IndyaXRlIil7aWYoZi5pbmRleE9mKHIpPi0xKXJldHVybn1lbHNlIGlmKHE9PT0icmVhZHdyaXRlIil7aWYoZi5pbmRleE9mKHIpPi0xJiZlLmluZGV4T2Yocik+LTEpcmV0dXJufWVsc2UgaWYocT09PSJleGVjdXRlIil7aWYoZy5pbmRleE9mKHIpPgotMSlyZXR1cm59ZWxzZSB0aHJvdyBkKHAse30sIk9wZXJhdGlvbiBtdXN0IGJlIGVpdGhlciAncmVhZCcsICd3cml0ZScsIG9yICdleGVjdXRlJywgd2FzICIrcSk7dGhyb3cgZChwLHt9LCJQcm9oaWJpdGVkICIrcSsiIG9uIGdsb2JhbCB2YXJpYWJsZTogIityKyIuIik7fSxhYTphfX0pfSgpOwpaLnNlY3VyaXR5R3JvdXBzLmFjY2Vzc19kb21fZWxlbWVudF9wcm9wZXJ0aWVzPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyxkLGUpe3ZhciBmPXtwcm9wZXJ0eTplLHJlYWQ6ITEsd3JpdGU6ITF9O3N3aXRjaChkKXtjYXNlICJyZWFkIjpmLnJlYWQ9ITA7YnJlYWs7Y2FzZSAid3JpdGUiOmYud3JpdGU9ITA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiSW52YWxpZCAiK2IrIiBvcGVyYXRpb24gIitkKTt9cmV0dXJuIGZ9KGZ1bmN0aW9uKGIpe1ouX19hY2Nlc3NfZG9tX2VsZW1lbnRfcHJvcGVydGllcz1iO1ouX19hY2Nlc3NfZG9tX2VsZW1lbnRfcHJvcGVydGllcy5PPSJhY2Nlc3NfZG9tX2VsZW1lbnRfcHJvcGVydGllcyI7Wi5fX2FjY2Vzc19kb21fZWxlbWVudF9wcm9wZXJ0aWVzLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2FjY2Vzc19kb21fZWxlbWVudF9wcm9wZXJ0aWVzLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fYWNjZXNzX2RvbV9lbGVtZW50X3Byb3BlcnRpZXMuaXNJbmZyYXN0cnVjdHVyZT0KITE7Wi5fX2FjY2Vzc19kb21fZWxlbWVudF9wcm9wZXJ0aWVzWyI1Il09ITE7Wi5fX2FjY2Vzc19kb21fZWxlbWVudF9wcm9wZXJ0aWVzWyI2Il09ITF9KShmdW5jdGlvbihiKXtmb3IodmFyIGM9Yi52dHBfcHJvcGVydGllc3x8W10sZD1iLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3IsZT1bXSxmPVtdLGc9MDtnPGMubGVuZ3RoO2crKyl7dmFyIGg9Y1tnXSxsPWgucHJvcGVydHk7aC5yZWFkJiZlLnB1c2gobCk7aC53cml0ZSYmZi5wdXNoKGwpfXJldHVybnthc3NlcnQ6ZnVuY3Rpb24obixwLHEscil7aWYoIXpiKHIpKXRocm93IGQobix7fSwiUHJvcGVydHkgbXVzdCBiZSBhIHN0cmluZy4iKTtpZihxPT09InJlYWQiKXtpZihlLmluZGV4T2Yocik+LTEpcmV0dXJufWVsc2UgaWYocT09PSJ3cml0ZSIpe2lmKGYuaW5kZXhPZihyKT4tMSlyZXR1cm59ZWxzZSB0aHJvdyBkKG4se30sJ09wZXJhdGlvbiBtdXN0IGJlIGVpdGhlciAicmVhZCIgb3IgIndyaXRlIicpO3Rocm93IGQobix7fSwKJyInK3ErJyIgb3BlcmF0aW9uIGlzIG5vdCBhbGxvd2VkLicpO30sYWE6YX19KX0oKTsKClouc2VjdXJpdHlHcm91cHMucmVhZF9kb21fZWxlbWVudF90ZXh0PVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJue2VsZW1lbnQ6Y319KGZ1bmN0aW9uKGIpe1ouX19yZWFkX2RvbV9lbGVtZW50X3RleHQ9YjtaLl9fcmVhZF9kb21fZWxlbWVudF90ZXh0Lk89InJlYWRfZG9tX2VsZW1lbnRfdGV4dCI7Wi5fX3JlYWRfZG9tX2VsZW1lbnRfdGV4dC5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19yZWFkX2RvbV9lbGVtZW50X3RleHQucHJpb3JpdHlPdmVycmlkZT0wO1ouX19yZWFkX2RvbV9lbGVtZW50X3RleHQuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fcmVhZF9kb21fZWxlbWVudF90ZXh0WyI1Il09ITE7Wi5fX3JlYWRfZG9tX2VsZW1lbnRfdGV4dFsiNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfY3JlYXRlUGVybWlzc2lvbkVycm9yO3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oZCxlKXtpZighKGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpdGhyb3cgYyhkLAp7fSwiV3JvbmcgZWxlbWVudCB0eXBlLiBNdXN0IGJlIEhUTUxFbGVtZW50LiIpO30sYWE6YX19KX0oKTsKClouc2VjdXJpdHlHcm91cHMucmVhZF9ldmVudF9kYXRhPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJue2tleTpjfX0oZnVuY3Rpb24oYil7Wi5fX3JlYWRfZXZlbnRfZGF0YT1iO1ouX19yZWFkX2V2ZW50X2RhdGEuTz0icmVhZF9ldmVudF9kYXRhIjtaLl9fcmVhZF9ldmVudF9kYXRhLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX3JlYWRfZXZlbnRfZGF0YS5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX3JlYWRfZXZlbnRfZGF0YS5pc0luZnJhc3RydWN0dXJlPSExO1ouX19yZWFkX2V2ZW50X2RhdGFbIjUiXT0hMTtaLl9fcmVhZF9ldmVudF9kYXRhWyI2Il09ITF9KShmdW5jdGlvbihiKXt2YXIgYz1iLnZ0cF9ldmVudERhdGFBY2Nlc3MsZD1iLnZ0cF9rZXlQYXR0ZXJuc3x8W10sZT1iLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3I7cmV0dXJue2Fzc2VydDpmdW5jdGlvbihmLGcpe2lmKGchPW51bGwmJiF6YihnKSl0aHJvdyBlKGYse2tleTpnfSwiS2V5IG11c3QgYmUgYSBzdHJpbmcuIik7CmlmKGMhPT0iYW55Iil7dHJ5e2lmKGM9PT0ic3BlY2lmaWMiJiZnIT1udWxsJiZFZyhnLGQpKXJldHVybn1jYXRjaChoKXt0aHJvdyBlKGYse2tleTpnfSwiSW52YWxpZCBrZXkgZmlsdGVyLiIpO310aHJvdyBlKGYse2tleTpnfSwiUHJvaGliaXRlZCByZWFkIGZyb20gZXZlbnQgZGF0YS4iKTt9fSxhYTphfX0pfSgpOwoKWi5zZWN1cml0eUdyb3Vwcy5yZWFkX2RhdGFfbGF5ZXI9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm57a2V5OmN9fShmdW5jdGlvbihiKXtaLl9fcmVhZF9kYXRhX2xheWVyPWI7Wi5fX3JlYWRfZGF0YV9sYXllci5PPSJyZWFkX2RhdGFfbGF5ZXIiO1ouX19yZWFkX2RhdGFfbGF5ZXIuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fcmVhZF9kYXRhX2xheWVyLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fcmVhZF9kYXRhX2xheWVyLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX3JlYWRfZGF0YV9sYXllclsiNSJdPSExO1ouX19yZWFkX2RhdGFfbGF5ZXJbIjYiXT0hMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPWIudnRwX2FsbG93ZWRLZXlzfHwic3BlY2lmaWMiLGQ9Yi52dHBfa2V5UGF0dGVybnN8fFtdLGU9Yi52dHBfY3JlYXRlUGVybWlzc2lvbkVycm9yO3JldHVybnthc3NlcnQ6ZnVuY3Rpb24oZixnKXtpZighemIoZykpdGhyb3cgZShmLHt9LCJLZXlzIG11c3QgYmUgc3RyaW5ncy4iKTsKaWYoYyE9PSJhbnkiKXt0cnl7aWYoRWcoZyxkKSlyZXR1cm59Y2F0Y2goaCl7dGhyb3cgZShmLHt9LCJJbnZhbGlkIGtleSBmaWx0ZXIuIik7fXRocm93IGUoZix7fSwiUHJvaGliaXRlZCByZWFkIGZyb20gZGF0YSBsYXllciB2YXJpYWJsZTogIitnKyIuIik7fX0sYWE6YX19KX0oKTsKCgoKCgoKCgpaLnNlY3VyaXR5R3JvdXBzLmdldF9lbGVtZW50X2F0dHJpYnV0ZXM9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjLGQpe3JldHVybntlbGVtZW50OmMsYXR0cmlidXRlOmR9fShmdW5jdGlvbihiKXtaLl9fZ2V0X2VsZW1lbnRfYXR0cmlidXRlcz1iO1ouX19nZXRfZWxlbWVudF9hdHRyaWJ1dGVzLk89ImdldF9lbGVtZW50X2F0dHJpYnV0ZXMiO1ouX19nZXRfZWxlbWVudF9hdHRyaWJ1dGVzLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2dldF9lbGVtZW50X2F0dHJpYnV0ZXMucHJpb3JpdHlPdmVycmlkZT0wO1ouX19nZXRfZWxlbWVudF9hdHRyaWJ1dGVzLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2dldF9lbGVtZW50X2F0dHJpYnV0ZXNbIjUiXT0hMTtaLl9fZ2V0X2VsZW1lbnRfYXR0cmlidXRlc1siNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfYWxsb3dlZEF0dHJpYnV0ZXN8fCJzcGVjaWZpYyIsZD1iLnZ0cF9hdHRyaWJ1dGVzfHxbXSxlPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjsKcmV0dXJue2Fzc2VydDpmdW5jdGlvbihmLGcsaCl7aWYoIXpiKGgpKXRocm93IGUoZix7fSwiQXR0cmlidXRlIG11c3QgYmUgYSBzdHJpbmcuIik7aWYoIShnIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKXRocm93IGUoZix7fSwiV3JvbmcgZWxlbWVudCB0eXBlLiBNdXN0IGJlIEhUTUxFbGVtZW50LiIpO2lmKGg9PT0idmFsdWUifHxjIT09ImFueSImJihjIT09InNwZWNpZmljInx8ZC5pbmRleE9mKGgpPT09LTEpKXRocm93IGUoZix7fSwnUmVhZGluZyBhdHRyaWJ1dGUgIicraCsnIiBpcyBub3QgYWxsb3dlZC4nKTt9LGFhOmF9fSl9KCk7Clouc2VjdXJpdHlHcm91cHMuZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzPVsiZ29vZ2xlIl0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJue29wdGlvbnM6Y319KGZ1bmN0aW9uKGIpe1ouX19kZXRlY3RfbGlua19jbGlja19ldmVudHM9YjtaLl9fZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzLk89ImRldGVjdF9saW5rX2NsaWNrX2V2ZW50cyI7Wi5fX2RldGVjdF9saW5rX2NsaWNrX2V2ZW50cy5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19kZXRlY3RfbGlua19jbGlja19ldmVudHMucHJpb3JpdHlPdmVycmlkZT0wO1ouX19kZXRlY3RfbGlua19jbGlja19ldmVudHMuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fZGV0ZWN0X2xpbmtfY2xpY2tfZXZlbnRzWyI1Il09ITE7Wi5fX2RldGVjdF9saW5rX2NsaWNrX2V2ZW50c1siNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfYWxsb3dXYWl0Rm9yVGFncyxkPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGUsCmYpe2lmKCFjJiZmJiZmLndhaXRGb3JUYWdzKXRocm93IGQoZSx7fSwiUHJvaGliaXRlZCBvcHRpb24gd2FpdEZvclRhZ3MuIik7fSxhYTphfX0pfSgpOwpaLnNlY3VyaXR5R3JvdXBzLmxvYWRfZ29vZ2xlX3RhZ3M9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjLGQpe3JldHVybnt0YWdJZDpjLGZpcnN0UGFydHlVcmw6ZH19KGZ1bmN0aW9uKGIpe1ouX19sb2FkX2dvb2dsZV90YWdzPWI7Wi5fX2xvYWRfZ29vZ2xlX3RhZ3MuTz0ibG9hZF9nb29nbGVfdGFncyI7Wi5fX2xvYWRfZ29vZ2xlX3RhZ3MuaXNWZW5kb3JUZW1wbGF0ZT0hMDtaLl9fbG9hZF9nb29nbGVfdGFncy5wcmlvcml0eU92ZXJyaWRlPTA7Wi5fX2xvYWRfZ29vZ2xlX3RhZ3MuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fbG9hZF9nb29nbGVfdGFnc1siNSJdPSExO1ouX19sb2FkX2dvb2dsZV90YWdzWyI2Il09ITF9KShmdW5jdGlvbihiKXt2YXIgYz1iLnZ0cF9hbGxvd2VkVGFnSWRzfHwic3BlY2lmaWMiLGQ9Yi52dHBfYWxsb3dGaXJzdFBhcnR5VXJsc3x8ITEsZT1iLnZ0cF9hbGxvd2VkRmlyc3RQYXJ0eVVybHN8fCJzcGVjaWZpYyIsZj1iLnZ0cF91cmxzfHwKW10sZz1iLnZ0cF90YWdJZHN8fFtdLGg9Yi52dHBfY3JlYXRlUGVybWlzc2lvbkVycm9yO3JldHVybnthc3NlcnQ6ZnVuY3Rpb24obCxuLHApeyhmdW5jdGlvbihxKXtpZighemIocSkpdGhyb3cgaChsLHt9LCJUYWcgSUQgbXVzdCBiZSBhIHN0cmluZy4iKTtpZihjIT09ImFueSImJihjIT09InNwZWNpZmljInx8Zy5pbmRleE9mKHEpPT09LTEpKXRocm93IGgobCx7fSwiUHJvaGliaXRlZCBUYWcgSUQ6ICIrcSsiLiIpO30pKG4pOyhmdW5jdGlvbihxKXtpZihxIT09dm9pZCAwKXtpZighemIocSkpdGhyb3cgaChsLHt9LCJGaXJzdCBwYXJ0eSBVUkwgbXVzdCBiZSBhIHN0cmluZy4iKTtpZihkKXtpZihlPT09ImFueSIpcmV0dXJuO2lmKGU9PT0ic3BlY2lmaWMiKXRyeXtpZihXZyhSaihxKSxmKSlyZXR1cm59Y2F0Y2gocil7dGhyb3cgaChsLHt9LCJJbnZhbGlkIGZpcnN0IHBhcnR5IFVSTCBmaWx0ZXIuIik7fX10aHJvdyBoKGwse30sIlByb2hpYml0ZWQgZmlyc3QgcGFydHkgVVJMOiAiKwpxKTt9fSkocCl9LGFhOmF9fSl9KCk7Clouc2VjdXJpdHlHcm91cHMuZ2V0X3VybD1bImdvb2dsZSJdLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMsZCl7cmV0dXJue2NvbXBvbmVudDpjLHF1ZXJ5S2V5OmR9fShmdW5jdGlvbihiKXtaLl9fZ2V0X3VybD1iO1ouX19nZXRfdXJsLk89ImdldF91cmwiO1ouX19nZXRfdXJsLmlzVmVuZG9yVGVtcGxhdGU9ITA7Wi5fX2dldF91cmwucHJpb3JpdHlPdmVycmlkZT0wO1ouX19nZXRfdXJsLmlzSW5mcmFzdHJ1Y3R1cmU9ITE7Wi5fX2dldF91cmxbIjUiXT0hMTtaLl9fZ2V0X3VybFsiNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfdXJsUGFydHM9PT0iYW55Ij9udWxsOltdO2MmJihiLnZ0cF9wcm90b2NvbCYmYy5wdXNoKCJwcm90b2NvbCIpLGIudnRwX2hvc3QmJmMucHVzaCgiaG9zdCIpLGIudnRwX3BvcnQmJmMucHVzaCgicG9ydCIpLGIudnRwX3BhdGgmJmMucHVzaCgicGF0aCIpLGIudnRwX2V4dGVuc2lvbiYmYy5wdXNoKCJleHRlbnNpb24iKSxiLnZ0cF9xdWVyeSYmCmMucHVzaCgicXVlcnkiKSxiLnZ0cF9mcmFnbWVudCYmYy5wdXNoKCJmcmFnbWVudCIpKTt2YXIgZD1jJiZiLnZ0cF9xdWVyaWVzQWxsb3dlZCE9PSJhbnkiP2IudnRwX3F1ZXJ5S2V5c3x8W106bnVsbCxlPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGYsZyxoKXtpZihnKXtpZighemIoZykpdGhyb3cgZShmLHt9LCJVUkwgY29tcG9uZW50IG11c3QgYmUgYSBzdHJpbmcuIik7aWYoYyYmYy5pbmRleE9mKGcpPDApdGhyb3cgZShmLHt9LCJQcm9oaWJpdGVkIFVSTCBjb21wb25lbnQ6ICIrZyk7aWYoZz09PSJxdWVyeSImJmQpe2lmKCFoKXRocm93IGUoZix7fSwiUHJvaGliaXRlZCBmcm9tIGdldHRpbmcgZW50aXJlIFVSTCBxdWVyeSB3aGVuIHF1ZXJ5IGtleXMgYXJlIHNwZWNpZmllZC4iKTtpZighemIoaCkpdGhyb3cgZShmLHt9LCJRdWVyeSBrZXkgbXVzdCBiZSBhIHN0cmluZy4iKTtpZihkLmluZGV4T2YoaCk8MCl0aHJvdyBlKGYse30sCiJQcm9oaWJpdGVkIHF1ZXJ5IGtleTogIitoKTt9fWVsc2UgaWYoYyl0aHJvdyBlKGYse30sIlByb2hpYml0ZWQgZnJvbSBnZXR0aW5nIGVudGlyZSBVUkwgd2hlbiBjb21wb25lbnRzIGFyZSBzcGVjaWZpZWQuIik7fSxhYTphfX0pfSgpOwoKCgpaLnNlY3VyaXR5R3JvdXBzLmxvZ2dpbmc9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtyZXR1cm57fX0oZnVuY3Rpb24oYil7Wi5fX2xvZ2dpbmc9YjtaLl9fbG9nZ2luZy5PPSJsb2dnaW5nIjtaLl9fbG9nZ2luZy5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19sb2dnaW5nLnByaW9yaXR5T3ZlcnJpZGU9MDtaLl9fbG9nZ2luZy5pc0luZnJhc3RydWN0dXJlPSExO1ouX19sb2dnaW5nWyI1Il09ITE7Wi5fX2xvZ2dpbmdbIjYiXT0hMX0pKGZ1bmN0aW9uKGIpe3ZhciBjPWIudnRwX2Vudmlyb25tZW50c3x8ImRlYnVnIixkPWIudnRwX2NyZWF0ZVBlcm1pc3Npb25FcnJvcjtyZXR1cm57YXNzZXJ0OmZ1bmN0aW9uKGUpe3ZhciBmO2lmKGY9YyE9PSJhbGwiJiYhMCl7dmFyIGc9ITE7Zj0hZ31pZihmKXRocm93IGQoZSx7fSwiTG9nZ2luZyBpcyBub3QgZW5hYmxlZCBpbiBhbGwgZW52aXJvbm1lbnRzIik7Cn0sYWE6YX19KX0oKTsKWi5zZWN1cml0eUdyb3Vwcy5jb25maWd1cmVfZ29vZ2xlX3RhZ3M9WyJnb29nbGUiXSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjLGQpe3JldHVybnt0YWdJZDpjLGNvbmZpZ3VyYXRpb246ZH19KGZ1bmN0aW9uKGIpe1ouX19jb25maWd1cmVfZ29vZ2xlX3RhZ3M9YjtaLl9fY29uZmlndXJlX2dvb2dsZV90YWdzLk89ImNvbmZpZ3VyZV9nb29nbGVfdGFncyI7Wi5fX2NvbmZpZ3VyZV9nb29nbGVfdGFncy5pc1ZlbmRvclRlbXBsYXRlPSEwO1ouX19jb25maWd1cmVfZ29vZ2xlX3RhZ3MucHJpb3JpdHlPdmVycmlkZT0wO1ouX19jb25maWd1cmVfZ29vZ2xlX3RhZ3MuaXNJbmZyYXN0cnVjdHVyZT0hMTtaLl9fY29uZmlndXJlX2dvb2dsZV90YWdzWyI1Il09ITE7Wi5fX2NvbmZpZ3VyZV9nb29nbGVfdGFnc1siNiJdPSExfSkoZnVuY3Rpb24oYil7dmFyIGM9Yi52dHBfYWxsb3dlZFRhZ0lkc3x8InNwZWNpZmljIixkPWIudnRwX3RhZ0lkc3x8W10sZT1iLnZ0cF9jcmVhdGVQZXJtaXNzaW9uRXJyb3I7CnJldHVybnthc3NlcnQ6ZnVuY3Rpb24oZixnKXtpZighemIoZykpdGhyb3cgZShmLHt9LCJUYWcgSUQgbXVzdCBiZSBhIHN0cmluZy4iKTtpZihjIT09ImFueSImJihjIT09InNwZWNpZmljInx8ZC5pbmRleE9mKGcpPT09LTEpKXRocm93IGUoZix7fSwiUHJvaGliaXRlZCBjb25maWd1cmF0aW9uIGZvciBUYWcgSUQ6ICIrZysiLiIpO30sYWE6YX19KX0oKTsKCgoKZnVuY3Rpb24ga1UoKXt2YXIgYT17fSxiPXtkYXRhTGF5ZXI6dEEsY2FsbGJhY2s6ZnVuY3Rpb24oYyl7YS5oYXNPd25Qcm9wZXJ0eShjKSYmeWIoYVtjXSkmJmFbY10oKTtkZWxldGUgYVtjXX0sYm9vdHN0cmFwOjB9O3JldHVybiBifQpmdW5jdGlvbiBsVSgpe3ZhciBhPWtVKCk7b2ooYSk7Q2soKTtqQSgpO3ZhciBiPWFsKDI3LGZ1bmN0aW9uKCl7cmV0dXJue319KTtRYihiLFouc2VjdXJpdHlHcm91cHMpO3ZhciBjPXlrKHprKCkpLGQsZT1jPT1udWxsP3ZvaWQgMDooZD1jLmNvbnRleHQpPT1udWxsP3ZvaWQgMDpkLnNvdXJjZTtLbChlLGM9PW51bGw/dm9pZCAwOmMucGFyZW50KTtlIT09MiYmZSE9PTQmJmUhPT0zfHxQKDE0Mik7cmV0dXJuIGF9ZnVuY3Rpb24gbVUoKXt2YXIgYT1FKDYwKTtpZihhKWZvcih2YXIgYj1hLnNwbGl0KCIuIiksYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1iW2NdLGU9VEw7ZCYmKGUuSFtkXT0hMCl9fQpmdW5jdGlvbiBuVSgpe3pwKCk7bGooKTtmb3IodmFyIGE9ZGF0YS5yZXNvdXJjZXx8e30sYj1jQSxjPWEubWFjcm9zfHxbXSxkPTA7ZDxjLmxlbmd0aDtkKyspYi5tYWNyb3MucHVzaChuZXcgVXooY1tkXSxkLGIudGFncyxiLm1hY3JvcykpO2Zvcih2YXIgZT1hLnRhZ3N8fFtdLGY9MDtmPGUubGVuZ3RoO2YrKyliLnRhZ3MucHVzaChuZXcgWXooZVtmXSxmLGIudGFncyxiLm1hY3JvcykpO2Zvcih2YXIgZz1hLnByZWRpY2F0ZXN8fFtdLGg9MDtoPGcubGVuZ3RoO2grKyliLnByZWRpY2F0ZXMucHVzaChuZXcgVnooZ1toXSxiLnRhZ3MsYi5tYWNyb3MpKTtmb3IodmFyIGw9YS5ydWxlc3x8W10sbj0wO248bC5sZW5ndGg7bisrKWIucnVsZXMucHVzaChuZXcgV3oobFtuXSxuKSk7UXo9Wjt2YXIgcD1kYXRhLnBlcm1pc3Npb25zfHx7fSxxPVo7ZGc9bmV3IGdnKEUoNSkscCxxKTt2YXIgcj1kYXRhLnNhbmRib3hlZF9zY3JpcHRzLHQ9ZGF0YS5zZWN1cml0eV9ncm91cHMsdT1kYXRhLnJ1bnRpbWV8fApbXSx2PWRhdGEucnVudGltZV9saW5lcztKRj1uZXcgcGY7VlQoKTtQej1JRigpO3ZhciB4PUpGLHk9VVQoKSx6PW5ldyBMZCgicmVxdWlyZSIseSk7ei5aYSgpO3guSC5ILnNldCgicmVxdWlyZSIseik7ZGIuc2V0KCJyZXF1aXJlIix6KTtmb3IodmFyIEM9MDtDPHUubGVuZ3RoO0MrKyl7dmFyIEQ9dVtDXTtpZighQXJyYXkuaXNBcnJheShEKXx8RC5sZW5ndGg8Myl7aWYoRC5sZW5ndGg9PT0wKWNvbnRpbnVlO2JyZWFrfXYmJnZbQ10mJnZbQ10ubGVuZ3RoJiZQZihELHZbQ10pO3RyeXtKRi5leGVjdXRlKEQpfWNhdGNoKG9VKXt9fVdUKHIpO1hUKHQpO3ZhciBJPWxVKCk7aUYoKTt2bS5iaW5kKCk7aWYoIURqKWZvcih2YXIgRz1CbSgpP2VwKExmKDUpKTplcChMZig0KSksTj1tKFJvKSxTPU4ubmV4dCgpOyFTLmRvbmU7Uz1OLm5leHQoKSl7dmFyIFc9Uy52YWx1ZSxlYT1XLGphPUdbV10/ImdyYW50ZWQiOiJkZW5pZWQiO3RsKCkuaW1wbGljaXQoZWEsamEpfWhFLmJpbmQoKTtUQigpOwpPQigpO2ZuLk4mJihneigpLGZ6KEFGKSxnQSgpLGNCPW5ldyBiQixmeihpeiksT0MoKSxERnx8KERGPW5ldyBCRiksZkJ8fChmQj1uZXcgZUIpLEZGPW5ldyBFRik7aWYoZm4uSyl7REUuYmluZCgpO21DLmJpbmQoKTt3RS5iaW5kKCk7dmFyIGZhPUFrKCk7aWYoZmEpe3ZhciBzYTthOnt2YXIgZGEsbWE9KGRhPWZhLnNjcmlwdEVsZW1lbnQpPT1udWxsP3ZvaWQgMDpkYS5zcmM7aWYobWEpe3ZhciBQYTt0cnl7dmFyIEZhO1BhPShGYT1yZCgpKT09bnVsbD92b2lkIDA6RmEuZ2V0RW50cmllc0J5VHlwZSgicmVzb3VyY2UiKX1jYXRjaChvVSl7fWlmKFBhKXtmb3IodmFyIHFhPS0xLGliPW0oUGEpLFhiPWliLm5leHQoKTshWGIuZG9uZTtYYj1pYi5uZXh0KCkpe3ZhciBMYz1YYi52YWx1ZTtpZihMYy5pbml0aWF0b3JUeXBlPT09CiJzY3JpcHQiJiYocWErPTEsTGMubmFtZS5yZXBsYWNlKE5FLCIiKT09PW1hLnJlcGxhY2UoTkUsIiIpKSl7c2E9cWE7YnJlYWsgYX19UCgxNDYpfWVsc2UgUCgxNDUpfXNhPXZvaWQgMH12YXIgUWQ9c2E7UWQhPT12b2lkIDAmJihmYS5jYW5vbmljYWxDb250YWluZXJJZCYmVW0oInJ0ZyIsU3RyaW5nKGZhLmNhbm9uaWNhbENvbnRhaW5lcklkKSksVW0oInNsbyIsU3RyaW5nKFFkKSksVW0oImhsbyIsZmEuaHRtbExvYWRPcmRlcnx8Ii0xIiksVW0oImxzdCIsU3RyaW5nKGZhLmxvYWRTY3JpcHRUeXBlfHwiMCIpKSl9ZWxzZSBQKDE0NCk7dmFyIFljO3ZhciBEZD14aygpO2lmKERkKWlmKERkLmNhbm9uaWNhbENvbnRhaW5lcklkKVljPURkLmNhbm9uaWNhbENvbnRhaW5lcklkO2Vsc2V7dmFyIGpmLHZoPURkLnNjcmlwdENvbnRhaW5lcklkfHwoKGpmPURkLmRlc3RpbmF0aW9ucyk9PW51bGw/dm9pZCAwOmpmWzBdKTtZYz12aD8iXyIrdmg6dm9pZCAwfWVsc2UgWWM9dm9pZCAwO3ZhciBKRT0KWWM7SkUmJlVtKCJwY2lkIixKRSk7VW0oImJ0IixTdHJpbmcoSWYoNDcpPzI6SWYoNTApPzE6MCkpO1VtKCJjdCIsU3RyaW5nKElmKDQ3KT8wOklmKDUwKT8xOjMpKTtBRS5iaW5kKCk7Zm9yKHZhciBXcj1bXSxYcj1bXSxLRT1tKE9iamVjdC5rZXlzKEdFKSksWXI9S0UubmV4dCgpOyFZci5kb25lO1lyPUtFLm5leHQoKSl7dmFyIHJtPVlyLnZhbHVlO2lmKHdpbmRvdy5pc1NlY3VyZUNvbnRleHR8fCFJRVtybV0pe3ZhciBMRT1HRVtybV0oKTtpZih5YihMRSkpe3ZhciBNRT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChMRSk7VGIoTUUsInsgW25hdGl2ZSBjb2RlXSB9Iil8fFRiKE1FLCJ7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpfHxYci5wdXNoKHJtKX1lbHNlIFdyLnB1c2gocm0pfX1Xci5sZW5ndGg+MCYmVW0oImpzbSIsV3Iuam9pbigifiIpKTtYci5sZW5ndGg+MCYmVW0oImpzcCIsWHIuam9pbigifiIpKTtFeXx8KEV5PW5ldyBEeSl9aEYoKTtpbSgxKTtFRygpO3JldHVybiBJfQpmdW5jdGlvbiB1bSgpe3RyeXtpZighaGsoKSYmKElmKDQ3KXx8IU5rKCkpKXtJZig2NCkmJndqLkguSy5hZGQoMTE4NTE3OTE3KTt6aigpO2ZuLkgmJnN6KCk7V2ZbNV09ITA7dmFyIGE9a2ooImRlYnVnR3JvdXBJZCIsZnVuY3Rpb24oKXtyZXR1cm4gU3RyaW5nKE1hdGguZmxvb3IoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIqTWF0aC5yYW5kb20oKSkpfSk7U2woYSk7a3QoKTt6RigpO0Z0KCk7UEIoKTtpZihEaygpKXtFKDUpO0RHKCk7aUIoKS5yZW1vdmVFeHRlcm5hbFJlc3RyaWN0aW9ucyh2aygpKTt9ZWxzZXtGTS5SKCk7blUoKS5ib290c3RyYXA9TmIoKTtJZig1MSkmJnBFKCk7CmZuLkgmJnR6KCk7dHlwZW9mIEEubmFtZT09PSJzdHJpbmciJiZTYihBLm5hbWUsIndlYi1waXhlbC1zYW5kYm94LUNVU1RPTSIpJiZzZCgpP1pUKCJkTURnMFl6Iik6QS5TaG9waWZ5JiYoWlQoImROMlprTWoiKSxzZCgpJiZaVCgiZE5UVTBZeiIpKTttVSgpfX19Y2F0Y2goYil7aW0oNSksaHooKX19CihmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7bj1CLmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRhdGEtdGFnLWFzc2lzdGFudC1wcmVzZW50Iik7Z2wobikmJihsPWgueG0pfWZ1bmN0aW9uIGMoKXtsJiZLYz9nKGwpOmEoKX1pZighQVtFKDM3KV0pe3ZhciBkPSExO2lmKEIucmVmZXJyZXIpe3ZhciBlPVJqKEIucmVmZXJyZXIpO2Q9TmooZSwiaG9zdCIpPT09RSgzOCl9aWYoIWQpe3ZhciBmPWNxKEUoMzkpKTtkPSEoIWYubGVuZ3RofHwhZlswXS5sZW5ndGgpfWQmJihBW0UoMzcpXT0hMCxVYyhFKDQwKSkpfXZhciBnPWZ1bmN0aW9uKHUpe3ZhciB2PSJHVE0iLHg9IkdUTSI7SWYoNDUpJiYodj0iT0dUIix4PSJHVEFHIik7dmFyIHk9RSgyMyksej1BW3ldO3p8fCh6PVtdLEFbeV09eixVYygiaHR0cHM6Ly8iK0UoMykrIi9kZWJ1Zy9ib290c3RyYXA/aWQ9IitFKDUpKyImc3JjPSIreCsiJmNvbmQ9IitTdHJpbmcodSkrIiZndG09IitkdSgpKSk7dmFyIEM9e21lc3NhZ2VUeXBlOiJDT05UQUlORVJfU1RBUlRJTkciLApkYXRhOntzY3JpcHRTb3VyY2U6S2MsY29udGFpbmVyUHJvZHVjdDp2LGRlYnVnOiExLGlkOkUoNSksdGFyZ2V0UmVmOntjdGlkOkUoNSksaXNEZXN0aW5hdGlvbjpzaygpLGNhbm9uaWNhbElkOkUoNil9LGFsaWFzZXM6d2soKSxkZXN0aW5hdGlvbnM6dGsoKX19LEQ9Qy5kYXRhO0QucmVzdW1lPWZ1bmN0aW9uKCl7YSgpfTtELnJlc3VtZVdpdGhNZW1vcz1mdW5jdGlvbigpe3NsKDEpO2EoKX07SWYoMikmJihDLmRhdGEuaW5pdGlhbFB1Ymxpc2g9ITApO3oucHVzaChDKX0saD17R3E6MSxQbToyLG9uOjMsamw6NCx4bTo1fTtoW2guR3FdPSJHVE1fREVCVUdfTEVHQUNZX1BBUkFNIjtoW2guUG1dPSJHVE1fREVCVUdfUEFSQU0iO2hbaC5vbl09IlJFRkVSUkVSIjtoW2guamxdPSJDT09LSUUiO2hbaC54bV09IkVYVEVOU0lPTl9QQVJBTSI7dmFyIGw9dm9pZCAwLG49dm9pZCAwLHA9TGooQS5sb2NhdGlvbiwicXVlcnkiLCExLHZvaWQgMCwiZ3RtX2RlYnVnIik7Z2wocCkmJihsPWguUG0pOwppZighbCYmQi5yZWZlcnJlcil7dmFyIHE9UmooQi5yZWZlcnJlcik7TmoocSwiaG9zdCIpPT09RSgyNCkmJihsPWgub24pfWlmKCFsKXt2YXIgcj1jcSgiX19UQUdfQVNTSVNUQU5UIik7ci5sZW5ndGgmJnJbMF0ubGVuZ3RoJiYobD1oLmpsKX1sfHxiKCk7aWYoIWwmJmZsKG4pKXt2YXIgdD0hMTskYyhCLCJUQURlYnVnU2lnbmFsIixmdW5jdGlvbigpe3R8fCh0PSEwLGIoKSxjKCkpfSwhMSk7QS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dHx8KHQ9ITAsYigpLGMoKSl9LDIwMCl9ZWxzZSBjKCl9KShmdW5jdGlvbigpeyFJZig0Nyl8fHRtKClbIjAiXT91bSgpOnhtKCl9KTsKCn0pKCkKCg=="}},"time_used":123,"timings":{"blocked":0,"dns":2,"connect":15,"send":0,"wait":36,"receive":38,"ssl":31},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/daysone/v19/mem9YaCnxnKRiYZOCIYScrg.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:52.069Z","timestamp":1785161272069,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/daysone/v19/mem9YaCnxnKRiYZOCIYScrg.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://elxr24.shop\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 15284\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Sun, 26 Jul 2026 13:48:36 GMT\r\nexpires: Mon, 26 Jul 2027 13:48:36 GMT\r\ncache-control: public, max-age=31536000\r\nage: 87556\r\nlast-modified: Wed, 23 Apr 2025 16:03:29 GMT\r\ncontent-type: font/woff2\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":15284,"size_decoded":16096,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 15284, version 1.0","md5":"6c6981a19c064956927212ba1ed01e48","sha1":"244b7c93a17bc1f9449da2fd69044b9eb0ff63a0","sha256":"185dc6bea2e5918892d7f057dc2caa49bbb6e05706176c2b8f387f13f8e2a890","sha512":"b48c98a4ed40ff7f0b329d321e1ae5fdf3b506a010949c0cbaddd324431cc2060a634d33f1eac5e4ae2bfd25daca0a418376cd4ff0637e63465195c18e0f026e","ssdeep":"384:y5lFatDi+7/AsNgk6JUM55BfbFi8MWXx8QyXIQVCq:4AF/3NgvbtbFMCxRmlQq","tlshash":"7a62b002009bef28de31d6fb4c4ffa621f9a9024d678a474a67f547b731956d2d0d098","first_seen":"2025-05-07T12:53:56.883456Z","last_seen":"2026-08-06T12:46:37.636005Z","times_seen":186,"resource_available":false,"data":"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"}},"time_used":76,"timings":{"blocked":-1,"dns":0,"connect":31,"send":0,"wait":40,"receive":5,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WlhyyTn89ddpQ.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://elxr24.shop/","date":"2026-07-27T14:07:52.074Z","timestamp":1785161272074,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/montserrat/v31/JTUSjIg1_i6t8kCHKm459WlhyyTn89ddpQ.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://elxr24.shop\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 37756\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Fri, 24 Jul 2026 18:07:05 GMT\r\nexpires: Sat, 24 Jul 2027 18:07:05 GMT\r\ncache-control: public, max-age=31536000\r\nage: 244847\r\nlast-modified: Thu, 04 Sep 2025 17:09:21 GMT\r\ncontent-type: font/woff2\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":37756,"size_decoded":38569,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 37756, version 1.0","md5":"8a6a885dd57e60ddd85f3190737fa209","sha1":"dbca56b7fe8ee5e4bfb648d639fc6a3bfc5c6e85","sha256":"b9b102f608e8252e3c1e7287309832b16af7dcc6e788651fa503a3faacd7fb2f","sha512":"2bd785869777dc57dbb5934d4c6915b66f89746dd79897820eb4bbd0d262b2612bafdfb07c1e092658ad819f582a97e6a196531f74187d8a0b0bbd07fcbba56a","ssdeep":"768:sqRKhgpCf9U72WeD4A/5IqtBr0ikGvEaQh38/LBu3Emdc043RpgZKMqjkEfO1m:jKgp+9U7Ve8A/7Ai9Et3EBKEUE3RqMMu","tlshash":"3e030130df5884edcc0ba371fdeea81fc7a332a594c0b3368297af1b80111499d99e49","first_seen":"2025-09-05T00:25:10.258656Z","last_seen":"2026-08-15T13:47:04.178726Z","times_seen":549656,"resource_available":false,"data":"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"}},"time_used":79,"timings":{"blocked":24,"dns":0,"connect":0,"send":0,"wait":25,"receive":30,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}}]}
